35
1

The Legendary Book

Embed Size (px)

DESCRIPTION

The Legendary Book for IT

Citation preview

Page 1: The Legendary Book

1

Page 2: The Legendary Book

2

Lời nói đầu Thân chào các bạn (SV Khóa 6), hoặc các em (SV Khóa 7,8) trở đi.

Những bạn nào chưa biết thầy Khánh KT là ai, chắc sẽ không đọc quyển sách

này. Những bạn nào đã biết thầy KhánhKT là ai rồi thì mình sẽ không giới thiệu

lại nữa.

Những môn thầy Khánh dạy trong Đại học FPT là: C, C++, Alice, I2SE,

OS, Advanced Java, EIT, XML. Ở hai môn C và C++ nhân duyên của mình

với thầy còn chưa nặng nên đã không thể gặp thầy, mình xin mạn phép bỏ qua

hai môn này. Còn hai môn in đậm là hai môn có số người học lại cao nhất nhì

trong trường, cũng là hai môn tạo nên “danh tiếng lẫy lừng” của thầy Khánh.

Trước khi tiếp tục, các bạn vui lòng dừng 30s, tưởng niệm những oan hồn đã hy

sinh anh dũng (Biết đâu trong tương lai bạn sẽ là một trong số đó).

Tại sao hai môn trên lại có số người rơi rụng nhiều như vậy? Do thầy khó

hay môn học khó? Nói đơn giản, trong hai môn này, chúng ta được học quá

nhiều cái mới, việc tiếp thu và áp dụng khá khó khăn. Yêu cầu của thầy Khánh

không quá khó, nhưng lại khá cao so với mặt bằng chung, dẫn đến số người rơi

rụng nhiều như lá mùa thu.

Về quyển sách này Quyển sách này được viết dựa theo kinh nghiệm cá nhân của một sinh

viên đã từng sống sót qua những môn thầy Khánh dạy. Vì là kinh nghiệm cá

nhân nên sẽ có những đoạn suy nghĩ mang tính chủ quan, không thể áp dụng

cho tất cả mọi người.

Quyển sách này được viết nhằm mục đích

Tăng thêm chút tự tin cho những bạn đã-đang-sẽ học những môn

thầy Khánh dạy.

Hướng dẫn cách học ít mà đạt kết quả cao.

Giải đáp những câu hỏi, thắc mắc mà nhiều khi các bạn không

biết hỏi ai?

Page 3: The Legendary Book

3

Hy vọng bí kíp này sẽ biến mỗi giờ học của thầy Khánh thành một giờ

giảng bài vui vẻ, hào hứng, không phải là những buổi học trong không khí âm u,

toàn nghe “ăn sẹo” hoặc “absent” nữa.

Khái niệm “sẹo” và “absent” sẽ được giải thích sau.

Page 4: The Legendary Book

4

NỘI DUNG CHAPTER 1 – KHỞI ĐỘNG NHẸ NHÀNG CÙNG I2SE VÀ OS ......................... 5

Trong Chapter này ..................................................................................................... 5

Thông tin môn học ..................................................................................................... 6

Hung thần rình rập trong tiết học ................................................................................ 6

Assignment! Đừng để bị trừ điểm vô duyên .................................................................. 8

Tổng kết.................................................................................................................... 9

CHAPTER 2 – ADVANCED JAVA, VÌ SAO NGƯỜI TA CHẾT? ........................ 10

Trong chapter này .................................................................................................... 10

Đồn đại và sự thật xung quanh môn Advanced Java .................................................... 11

Môn này nên học thế nào đây? .................................................................................. 12

Sáng Quiz, chiều Lab, tối Practical – Làm sao 10 hết? ................................................ 13

CHAPTER 3 – HUYỀN THOẠI XML, LỐI THOÁT NÀO CHO EM? .................... 17

Trong chapter này .................................................................................................... 17

Sự thật đau lòng: Lớp còn 2/3 sau 2 tuần học ............................................................ 18

XML có cái gì để học ................................................................................................ 18

Quiz và Final. Ráng trên 5’, mình sẽ pass .................................................................. 20

Project – 40% số điểm và cách kiếm điểm ................................................................ 21

Project – Cách trả lời câu hỏi, tránh chọc giận thầy ................................................... 27

Vấn đề khác ............................................................................................................ 29

CHAPTER 4 – HUYỀN THOẠI VÀ THỰC TẾ: “NGƯỜI ẤY” CÓ THỰC SỰ HẮC ÁM NHƯ GIANG HỒ ĐỒN ĐẠI.................................................................. 30

FINAL CHAPTER – BÍ KÍP ........................................................................ 33

Tài liệu: Nguồn tổng hợp slide cũ của các môn học ..................................................... 33

Cuốn sách này ra đời như thế nào ............................................................................. 33

Trân trọng cảm ơn ................................................................................................... 34

Page 5: The Legendary Book

5

Tóm tắt nội dung môn học

Những cái chết được báo trước.

Làm assignment đúng cách để tránh thương tích không đáng có

CHAPTER 1 – KHỞI ĐỘNG NHẸ NHÀNG

CÙNG I2SE VÀ OS

Trong Chapter này

Page 6: The Legendary Book

6

Thông tin môn học Hai môn học này được dạy chung trong 1 kì, lại nằm sát nhau nên mình

gộp chung làm một.

Môn I2SE dạy các kiến thức cơ bản về thiết kế, tiến trình xây dựng phần

mềm, các tài liệu cần thiết. Môn này khá quan trọng, mặc dù nó nặng về lý

thuyết, nhưng những kiến thức được học (Vẽ SRS, SDS, sử dụng SVN…) sẽ

bám đuôi bạn từ lúc học, đến khi thực tập, cho tới lúc làm đồ án ra trường.

Ngoài ra, môn I2SE do thầy Khánh KT dạy còn được bonus thêm 1 số

phần khác như:

Sử dụng StarUML để vẽ diagram.

Cấu hình SVN bằng TortoiseSNV.

Làm web services, viết Unit Testing trên NetBeans.

Môn OS dạy kiến thức cơ bản về Hệ Điều Hành, các thiết bị như RAM, ổ

cứng.

Hung thần rình rập trong tiết học

Page 7: The Legendary Book

7

Theo chương trình học, chúng ta có 15 slot I2SE và 15 slot OS, đồng

nghĩa với việc bạn được nghỉ tối đa 3 buổi.

Tuy nhiên, khi học lớp I2SE hoặc OS do thầy Khánh dạy, chúng ta có thể

chết “bất đắc kỳ tử” vì nhiều lý do như sau:

Ngủ trong khi thầy giảng bài, hoặc chỉ là một cái gật nhẹ với ánh mắt mơ

màng, lập tức bị nhắc nhở. Nhắc nhở lần hai thì bằng một lần absent

(Mình biết mấy môn lý thuyết khá buồn ngủ, các bạn nhớ ngủ đủ giấc ở

nhà trước, đừng để lên trường).

Không thuộc bài cũ. Mình nói thật đấy ! Thầy Khánh không dò bài từng

người, tuy nhiên đầu mỗi tiết có màn nhắc lại nội dung đã học. Nếu bị hỏi

mà trả lời không được, bạn sẽ dính 01 sẹo hoặc 01 buổi absent.

Không chuẩn bị bài trước. Thầy Khánh dặn sinh viên về nhà đọc trước

sách. Nếu các bạn không đọc trước, khi bị hỏi bài trên lớp mà không trả

lời được (do lật sách không đúng phần để trả lời, chứ thầy không hề bắt

phải thuộc bài trước), bạn sẽ tiếp tục dính 01 sẹo hoặc 01 buổi absent.

Page 8: The Legendary Book

8

Assignment! Đừng để bị trừ điểm vô duyên

Môn I2SE có 2 bài Assignment: 1 bài viết SRS, 1 bài viết SDS. Thầy Khánh

cũng không quá khó khi cho điểm phần này. Các bạn chỉ cần nhớ: Vẽ đầy đủ

diagram, mô tả chi tiết chính xác. (Có thể liên lạc email của mình để có các bài

Assignment điểm cao tham khảo. Tuy nhiên đừng chơi trò copy-paste vì mỗi

lớp mới thầy Khánh lại đổi đề 1 lần.)

Môn OS có 4 bài Assignment, 1 bài Presentation. Assignment OS khá dễ, chỉ

cần làm theo hướng dẫn trên lớp, mỗi bài cần khoảng 30p.

Page 9: The Legendary Book

9

Tổng kết

Như đã nói trong phần “Hung thần rình rập”, để không học lại

môn này, các bạn cần tuân thủ những điều sau đây:

Về nhà nhớ xem lại slide, đọc trước bài mới. (Mỗi ngày thầy sẽ cho slide

bài ngày đó, không cho trước. Nếu các bạn lười đọc sách có thể liên hệ

mình để xin slide cũ). Chỉ đơn giản vậy nhưng nó sẽ giúp bạn sống sót dễ

dàng hơn.

Năng nổ và hổ báo trong giờ học. Thông thường những thằng năng nổ sẽ

ít bị gọi tên hơn. Nếu bạn giơ tay trả, dù có sai cũng không bị ăn sẹo.

Thầy thường có thiện cảm và hay cộng điểm với những bạn năng nổ.

Nếu bạn sắp die, hãy cố gắng gỡ gạc vào những hôm cuối. Thầy Khánh

sẽ cho những bạn sắp die “gỡ sẹo” bằng cách trả lời câu hỏi (Thầy Khánh

rất thương sinh viên mà, biết “quay đầu là bờ” thì thầy cũng không nỡ

chém chết đâu).

Final I2SE và OS khá dễ, do bạn đã được “tu luyện” qua bao nhiêu lần

chém giết của thầy, ôn sơ rồi tự tin đi thi mà điểm vẫn cao.

Page 10: The Legendary Book

10

Bí mật đằng sau những lời đồn

Các nội dung bài học cần chú ý

Cóp nhặt điểm một cách triệt để, tích tiểu thành đại, phòng hậu họa.

CHAPTER 2 – ADVANCED JAVA, VÌ SAO

NGƯỜI TA CHẾT?

Trong chapter này

Page 11: The Legendary Book

11

Đồn đại và sự thật xung quanh môn Advanced Java

Tới học kì 4, trước khi đi thực tập, bạn sẽ được học môn Advanced Java. Xung

quanh môn này có lắm giai thoại. Mình xin kể 1 số dưới đây.

Đồn đại Sự thật

Nghe nói môn này có số

người học lại nhiều nhất

trong số toàn bộ các môn

Thật ra số người học lại chỉ nhiều ở lớp AJ do

thầy Khánh dạy thôi, chứ ở lớp AJ do thầy khác

dạy thì tỉ lệ đậu khá cao, nếu môn này bạn không

học thầy Khánh thì có thể thở phào nhẹ nhỏm 1 tí.

Sinh viên học lại nhiều vì

môn này quá khó?

Thật ra thì môn này hơi khó so với các môn lập

trình như C#, Core Java,… vì số lượng kiến thức

nhiều. Tuy nhiên đến khi học XML mình mới

thấy môn này chưa thấm vào đâu.

Vô số tử sĩ vì môn này mà

không được đi thực tập?

Đây là chuyện có thật. Có những lớp chỉ đậu 1/3.

Những người còn lại vì chưa trả nợ môn này nên

phải ở lại trường 4 tháng, không được đi thực tập.

Thầy Khánh rất vui khi

“chém SV” bằng môn

này?

Hỏi thầy thì biết. Vừa qua mình thấy thầy khá

buồn khi để “lọt lưới” khá nhiều SV trong lớp. Vì

AJ là môn nền tảng cho XML, nên khi bạn lơ mơ

môn này thì môn XML coi như cầm chắc cái vé

học lại, vì ở môn XML bạn không có cách nào để

thoát khỏi lưỡi hái của thầy Khánh.

Page 12: The Legendary Book

12

Môn này nên học thế nào đây?

Như đã nói trên, số lượng kiến thức được học ở môn này là khá lớn. Mình

chỉ xin giới thiệu 1 số kiến thức quan trọng, cần nắm vững. Nắm vững những

điều này bạn có thể đạt được trên 80% số điểm bài lab và Practical:

Bài 1: Servlet. Đây là bài quan trọng nhất. Một phần nữa là Session của

bài 3.

Bài 5,7: Cách dùng JSP và taglib (Thông dụng là EL). Đây là thứ sẽ theo

bạn trong mọi bài lab, quiz, cả đến môn XML sau này.

Bài 8,10: Hướng dẫn cơ chế, nguyên lý EJB.

Mô hình MVC, được thầy giảng xuyên suốt quá trình và thật sự rất quan

trọng. Thậm chí mình đã từng chứng kiến một số tiền bối bị hội đồng tốt

nghiệp yêu cầu vẽ lại mô hình MVC lên bảng trong kỳ bảo vệ. Để nắm

được mô hình này bạn bắt buộc phải hiểu rõ sự tương tác và cơ chế hoạt

động của 3 thành phần Controller, View và Model.

Các bạn cố gắng luyện tập, làm thêm demo các bài trên là được. Những

bài còn lại chỉ cần làm Lab để hiểu sơ cơ chế là được rồi.

Page 13: The Legendary Book

13

…)

Sáng Quiz, chiều Lab, tối Practical – Làm sao 10 hết?

Tổng môn học có 12 bài quiz, 12 bài Lab, 2 bài Assignment – Một con số

khá đồ sộ. Dưới đây là lời khuyên cho từng phần:

Quiz (10%): Mỗi ngày bạn có 01 bài quiz trước khi học bài mới. BẮT

BUỘC SỬ DỤNG FIREFOX khi quiz, không mở bất kì cửa sổ này khác.

Trong cái CD của sách AJ có một số câu quiz mẫu kèm giải thích. Các

bạn đọc kĩ slide và làm trong đó thì quiz trên lớp sẽ được khoảng 6 đến 8,

ráng lên.

Lab (15%): Cuối mỗi bài đều có 1 bài Lab. Rất dễ kiếm điểm 10 Lab từ

thầy Khánh. Có 2 điều cần lưu ý: Nhớ script DB ra nộp kèm bài lab.

Trước khi nộp, mở thư mục project/nbproject/private. Nếu không có file

private.xml thì bạn tạo project mới, cóp file từ project cũ qua. Thiếu

Page 14: The Legendary Book

14

scriptDB hoặc file private.xml nghĩa là 0 điểm, từ chối mọi sự năn nỉ hay

khiếu nại.

Assignment (15%): Mỗi bài Assignment, bạn có khoảng 4-5 ngày để

làm. Ráng tự làm vì bài Practical cũng như bài Assignment thu nhỏ. Khi

làm Assignment đầy đủ, gặp lỗi tương tự lúc làm Practical sẽ dễ sửa hơn.

Nội dung 1 bài Assignment gồm: Đăng nhập, Thêm hoặc sửa thông tin

3,4 bảng. Bài Assisgnment 2 chỉ cần nâng cấp từ bài Assignment 1. Đúng

yêu cầu là 10 điểm. Thầy thường không trừ điểm lặt vặt phần này.

Practical (30%): Đây là phần khó nhằn nhất, cũng là nỗi sợ của

nhiều người, dưới đây là 1 số kinh nghiệm làm bài:

Không yêu cầu về công nghệ một cách cụ thể, đồng nghĩa với việc bạn sẽ

được dùng EJB, không cần phải viết kết nối, câu lệnh query bằng tay, tiết

kiệm thời gian.

Nhớ đặt tên database cho đúng, sai tên DB = 0 điểm (Hồi trước đc 50%,

giờ hết rồi). Nếu sai tên cột, chương trình chạy sai, mất điểm ráng chịu.

Login, nếu để form là GET, lộ mật khẩu, trừ điểm.

Khi try/catch, nếu để ghi lỗi ra server, trừ điểm. Phải bắt lỗi và chuyển

qua một trang error, in lỗi ra trang error bằng cách nào thì tùy các bạn.

Học vững taglib, EL. Đừng dùng scripting element vì nó rối, dễ lẫn lộn.

Scope bài Practical nhỏ, chỉ cần 1,2 Servlet, đừng dùng nhiều.

Nội dung bài practical chỉ cần login, phân quyền. Show all, insert/

update/ delete. Nếu bạn gặp phần có dính dáng đến ngày tháng -> Xin

chúc mừng, số bạn quá đen. Nhớ là tháng trong DB nhỏ hơn trong java

nên cho người dùng nhập tháng nhớ trừ đi 1.

Page 16: The Legendary Book

16

Tổng kết Với những lời khuyên trên, hy vọng các bạn sẽ có đủ kiến thức để vượt

qua môn AJ dễ dàng. Tiếp theo, mình khuyên các bạn nên đọc trước 1 số sách

cơ bản về HTML, CSS, JS. Nếu bạn muốn đi theo con đường lập trình web thì

những kiến thức trên là cần thiết (Không cần nói xa xôi, tới môn XML và

Capstone Project bạn sẽ phải dùng rồi đấy).

Học xong Advanced Java mình cũng chỉ biết dùng table, textbox à, nhờ

đọc mấy cuốn dưới đây mới đủ kiến thức để học và làm project môn XML. Các

bạn đọc theo thứ tự nhé:

1. Head First HTML and CSS, 2nd Edition. (Cơ bản về HTML, CSS)

2. CSS: The missing manual. (CSS cơ bản và nâng cao)

3. Javascript: The missing manual (Javascript cơ bản và nâng cao)

Ba cuốn sách này khá dễ hiểu, trình bày đơn giản rõ ràng. Đọc và làm

theo mất khoảng 2-3 tuần. Sau khi đọc xong, bạn đã đủ công lực để tìm hiểu và

nghiên cứu jQuery, Bootstraps. Chúc các bạn may mắn.

Page 17: The Legendary Book

17

Lời nguyền về sỉ số sinh viên

Why XML? Why?

Tính điểm để pass? Tính đi, sẽ phải tính đến từng 0.1

Project – nơi nguy hiểm nhất và duy nhất để gửi gắm mạng sống

CHAPTER 3 – HUYỀN THOẠI XML,

LỐI THOÁT NÀO CHO EM?

Trong chapter này

Page 18: The Legendary Book

18

Sự thật đau lòng: Lớp còn 2/3 sau 2 tuần học Chào mừng các bạn đã đến với phần 3 của cuốn sách này. Mình có 1 tin

tốt, 1 tin xấu và 1 tin cực xấu cho các bạn.

Tin tốt: Môn XML nằm trong chuyên ngành IS (thông), nếu bạn học ES

(nhúng) hoặc JS (Nhật) thì sẽ không phải học môn này.

Tin xấu: Môn XML chỉ có duy nhất thầy Khánh dạy, do đó thầy được

xem là “thần giữ cửa” tại môn này.

Tin cực xấu: Lý do thầy Khánh được xem là “thần giữ cửa” vì số lượng

người rớt và học lại môn này là kha khá cao. Rất nhiều anh đã và đang

làm Capstone project (thậm chí đã tốt nghiệp) phải vác cặp lên trường

học lại môn này.

Hù vậy thôi, dù sao môn XML cũng không tới nỗi quá đáng sợ như

“giang hồ đồn đại”. Hy vọng với kinh nghiệm trong cuốn sách này, bạn sẽ dễ

dàng vượt qua “môn-học-có-nhiều-người-die-nhất” này.

XML có cái gì để học Trong môn XML, chúng ta học về cái gì. Dĩ nhiên là học về XML. Các

bạn sẽ nghĩ rằng: Không dùng XML vẫn dựng được 1 ứng dụng, vậy tại sao

phải học và làm XML làm gì cho khó vậy.

Thực ra, trong môn học XML, điều quan trọng nhất chúng ta được học là

tạo RIA (Rich Internet Application) và giao tiếp độc lập platform:

Sử dụng XML, ta có thể cho phép user tìm kiếm, phân trang, … xử lý

ngay tại client mà không cần chuyển về server. Hoặc ta có thể dùng

XML làm database tạm, đọc ghi nội dung xuống file XML mà không kết

nối tới DB. Việc này làm tăng performance phía người dùng, đồng thời

cũng giảm tải server.

Sử dụng XML, ta có thể giao tiếp giữa các ngôn ngữ. Ví dụ ta viết web

service bằng Java, khi trả kết quả dưới dạng XML, ta có thể dùng C#,

PHP,… để xử lý kết quả trên, không cần phụ thuộc vào ngôn ngữ gốc.

Page 19: The Legendary Book

19

Ở môn này, vì có nhiều bạn đang thực tập nên việc học được thả lỏng khá

nhiều. Chỉ có 2 bài quiz, không có lab về nhà. Thầy Khánh chỉ để demo trong

slide chứ không bắt làm ngay tại lớp… Việc điểm danh cũng được thả lỏng. Áp

lực học ở môn này nhẹ hơn so với Advance Java, nhất là 2 tuần đầu, khi bạn

chưa đủ kiến thức để làm project. Ở môn này, thầy Khánh làm vậy vì tin tưởng

tinh thần tự giác và thái độ học tập của sinh viên.

Một số nội dung quan trọng cần chú ý trong môn XML:

Bài 5: Sử dụng Document Builder. Duyệt cây DOM: thêm, bớt, xóa, sửa.

Bài 6: Sử dụng JAXB để tạo class. Marshall và unmarshall.

Bài 7,8: Sử dụng bộ parser SAX, StAX. Tổng hợp về server.

Bài 10: Kết hợp server – client – additional.

Những nội dung này gắn bó xuyến suốt với nhau trong quá trình học, do

đó các bạn nên cố gắng đi học đầy đủ. Áp dụng thuần thục, sáng tạo kiến thức

trong bài 10 sẽ mang lại cho nhóm bạn nhiều điểm cộng trong project.

Page 20: The Legendary Book

20

Quiz và Final. Ráng trên 5’, mình sẽ pass

Thành phần điểm của môn XML: Quiz 2 bài 20%, Project 40%, Final

40%. Vì Project có lắm chuyện để bàn nên mình tách ra, phần này nói về quiz

và final.

Page 21: The Legendary Book

21

Đề Final không khó, nếu học bình thường các bạn sẽ đạt được từ 6-7.5.

Do đó project cần đạt được từ 4-5 điểm. Đây là một mức điểm không khó lắm.

Nếu các bạn bỏ project và bỏ quiz, sẽ gặp phải tình cảnh trớ trêu như trong hình

ban đầu (Giai thoại thi 12 điểm mới đậu là có thật, bạn có thể hỏi thầy Khánh để

xác nhận).

Project – 40% số điểm và cách kiếm điểm Bạn chắc sẽ thắc mắc: Nếu môn XML dễ vậy thì sao lắm người học lại

thế. Nguyên nhân là do project, chiếm 40% số điểm. Mức điểm thường gặp của

các nhóm là 2, 3, 4 điểm thi final phải trên 7. Nhiệm vụ này khá là bất khả

thi so với 1 số bạn retake.

Page 22: The Legendary Book

22

Dưới đây là barem điểm project (1 số hạng mục có thể sẽ đổi trong tương

lai. Bạn sẽ xem đi xem lại barem này kĩ lắm đấy):

Mình sẽ hướng dẫn các bước đào bới từng điểm một trong barem điểm

này. Tinh hoa của toàn bộ cuốn sách này là nằm ở phần này, các bạn chú ý từng

câu từng chữ để tránh mất mạng vì cày sâu cuốc bẫm, thức đêm thức ngày mà

vẫn chết vì thiếu hiểu biết.

Chọn nhóm, chọn đề tài

Hai tuần đầu môn XML là khoảng thời gian rảnh rỗi nhất. Bạn nên

tranh thủ lập nhóm, dựng SVN (Sử dụng TortoiseSVN + Google Code), chọn đề

tài vào lúc này. Giữa hoặc cuối tuần thứ 3 bắt tay và làm là vừa.

1. Bước đầu tiên, cũng là bước quan trọng nhất, chính là chọn member cho

nhóm.

Lời khuyên của thầy: Chọn nhóm để cùng làm và hỗ trợ nhau trong

1 thời gian ngắn chứ không phải vì bạn bè, không chọn và hi sinh

vì bạn. Có 1 số nhóm rớt toàn bộ do quá dở về công nghệ, nhóm

không có nhân tố để giải quyết vấn đề hay control công nghệ.

Lời khuyên của cá nhân mình: Nếu bạn chưa quen mặt các thành

viên lớp, hãy từ từ lựa chọn. Nhiều nhóm chọn xong đến giữa

chừng thành viên nghỉ gần hết, nhóm chỉ còn 1,2 người gồng toàn

bộ project. Để an toàn, hãy chọn những người mà bạn biết khả

năng, đừng chọn đại.

Page 23: The Legendary Book

23

2. Bước thứ 2: Sau khi tụ tập đủ member, các bạn hãy chọn 1 chủ đề cho

project của mình. Đây là sai lầm thường thấy của các nhóm.

Xin chia buồn các bạn có ý nghĩ trên. Thầy Khánh từng chấm cho

hàng chục nhóm làm “web bán hàng”, thầy cũng rành rẽ 1001 những

bug mà các nhóm này hay mắc phải. Với kinh nghiệm “web bán hàng”

của mình, thầy có thể dẫn dụ bạn vào một loạt tình huống mà chẳng bao

giờ bạn ngờ tới, nhưng trong thực tế nó vẫn xảy ra. Do đó nếu làm, nhóm

bạn sẽ bị trừ tả tơi 3 điểm trong phần “Business content”. Thêm vào đó,

việc nhóm nào cũng làm bán hàng dễ làm thầy buồn ngủ, bực mình

Nhóm bị chém nặng tay hơn.

3. Nếu nhóm nào vẫn “cố đấm ăn xôi” muốn “bán hàng” đến cùng, mình xin

liệt kê 1 số lỗi thầy hay bắt, các bạn cẩn thận những lỗi sau:

Sau khi khách mua hàng, có order. Nếu đổi giá của mặt hàng thì giá trong

order vẫn không đổi, nếu đổi theo là sai logic. Khi học POA các bạn cũng

đã biết lý thuyết của việc này.

Bắt khách hàng đăng nhập mới được mua hàng là thiếu usability.

Trường hợp hàng hóa có số lượng, nhớ check cẩn thận số lượng khách

hàng mua. Nếu 2 khách hàng cùng mua, thanh toán cùng lúc làm hết hàng,

xử lý như thế nào.

Thầy rất khoái nhập giá cao, số lượng nhiều, khoảng vài chục kí tự để

làm nát DB chơi.

Page 24: The Legendary Book

24

Đơn hàng, sau khi chuyển trạng thái sang “Đã giao”, nếu vẫn có thể

chuyển ngược lại thành “Chưa giao” Sai logic.

…….

4. Nếu nhóm bạn quyết định không “bán hàng”, xin chúc mừng. Các bạn sẽ

ít bị xoắn business hơn, điểm dễ hơn “1 chút”, đồng thời thầy cũng dễ

chịu hơn. Nhưng nếu các bạn làm về web quản lý này nọ thì tình hình

cũng không khá hơn e-commerce là mấy. Tốt nhất nên sáng tạo hết sức,

nghĩ ra chương trình mới (có thể rất đơn giản nhưng có business lạ) để

hạn chế việc đi sâu vào chi tiết khi bị hỏi.

5. Thời gian là 5 tuần, nhưng thời gian thật sự các bạn có thể làm là khoảng

2 tuần, vì cuối tuần thứ 3 chúng ta mới học được đủ công nghệ để mường

tượng ra cấu trúc project. Các bạn nên làm project vừa phải, đừng ham

ôm cái lớn. Một số ý tưởng: Web hẹn hò online, Up album ảnh online,

web tìm việc làm, web đọc truyện tranh, ….. (Bạn làm trúng cái nào mà

thầy Khánh rành business thì khả năng tử vong là cực lớn).

Implement

1. 3 điểm Project Content: Thời gian implement khoảng 2 tuần như đã nói.

Nếu các bạn chọn đề tài khá và làm tốt, điểm sẽ từ 1.5 2.5. Nếu các

bạn ứng dụng các framework như Hibernate hoặc Struts thì vẫn được

chấp nhận nhưng sẽ không được cộng thêm điểm. Dưới đây là cách để

kiếm 7 điểm còn lại.

2. Các bạn phải chia project theo chiều dọc, ai cũng làm đủ 5 công nghệ,

nếu không đủ thì hãy làm thêm trang admin để có thể vớt vát những phần

như in PDF. Điểm công nghệ chấm theo từng thành viên, không chấm

theo nhóm.

3. Điểm siêu dễ kiếm: Sử dụng XML, JSP&XML. JAXB, XSL.

Bạn sẽ được 1 điểm JAXB, 0,5 điểm XML khi bạn load dữ liệu từ

database lên object, sao đó marshall ra file XML. Thực hiện điều này chỉ

cần 1 hàm DAO + vài dòng code JAXB.

Page 25: The Legendary Book

25

Tiếp theo, trên trang JSP, nếu bạn dùng taglib xml, apply stylesheet cho

file xml, bạn sẽ đạt được 0.5 điểm JSP&XML, cùng với 0.5 điểm XSL

4. Điểm dễ kiếm: Parser API, XSL-FO

Để kiếm điểm parserAPI, ta cần dùng 1 trong 3 bộ parser: DOM,

StAX, SAX. SAX khá phức tạp nên mình không khuyến khích dùng. Ví

dụ khi cần đọc thông tin, thay vì đọc từ database, ta dùng StAX để đọc

từ file XML. Hoặc ta dùng DOM để thêm bớt xóa xửa trong file XML để

được 1 điểm phần này. Thậm chí dùng 1 trong 3 bộ parser này để tìm

kiếm, check trùng thì các bạn vẫn có thể nhận điểm nếu giải thích tốt.

Page 26: The Legendary Book

26

XSL-FO tức là apply stylesheet để tạo ra file PDF. Phần này cũng

rất dễ, có điều nhớ tạo file PDF có ý nghĩa, kẻo được 0.5 PDF mà mất 1

điểm “Project Content”. Phần PDF này đôi khi bạn chỉ cần xuất file ra

màn hình của trình duyệt thôi là có điểm rồi, không cần phải giải thích cơ

chế, vì phần này thầy cho dùng template của thầy cung cấp, nên thầy

“biếu” bạn 0.5 luôn.

5. Tới đây bạn đã được khoảng 3.5 – 4 điểm công nghệ, cộng với 1.5 điểm

“Project content” là đủ. Một số điểm còn lại khá khó kiếm, mình viết luôn

cho đủ bộ.

2 điểm Addtion Technology: Điểm cho phần này chủ yếu là javascript, hạn

chế postback. Các bạn sử dụng ajax để đăng ký, đăng nhập, check lỗi. Dùng js

để sort, search, duyệt cây DOM trên client. Dùng localStorage của HTML 5 để

lưu giỏ hàng. Những cái như validate dữ liệu nhập trên form, do quá dễ nên sẽ

không được tính.

Page 27: The Legendary Book

27

Project – Cách trả lời câu hỏi, tránh chọc giận thầy Nếu nhóm bạn đã làm xong project, xin chúc mừng. Các bạn đã vượt qua

cửa ải đầu tiên. Nhưng đừng vội mừng, vì cái thật sự cần phải vượt qua đó

chính là phần thuyết trình. Bạn có thể rất giỏi, làm rất nhiều, nhưng vẫn thấp

điểm nếu sơ sẩy trong hôm thuyết trình. Dưới đây là những điều cần và phải

lưu ý:

- 1 buổi thuyết trình bao gồm 3 bước.

Bước 1: Nhóm đi lên, bật slide, giới thiệu sơ về project(5-10 phút).

Slide này các bạn chỉ cần để work flow của chương trình và phân

chia việc, khoảng 2 3 slides là đủ rồi.

Bước 2, nhóm chạy demo, chạy thử theo ý thầy + trả lời câu hỏi về

những phần chung như business hoặc ý tưởng (15-20 phút).

Bước 3: Từng người solo với thầy, trả lời câu hỏi thầy đề ra (> 1

tiếng).

- Mỗi thành viên sẽ giải thích quy trình, công nghệ sử dụng, cơ chế của

phần mình đã làm. Phần nào mình làm thì mình nhận, rồi thầy hỏi,

không bao giờ thầy hỏi lan qua phần của người khác nên các bạn cứ yên

tâm. Màn hỏi đáp solo này diễn ra như trong hình bên dưới.

Page 28: The Legendary Book

28

- Dưới đây là một số câu hỏi mà thầy Khánh thường hỏi khi thuyết trình,

cùng với một số câu trả lời đơn giản, đúng và hợp yêu cầu của thầy.

Câu hỏi Câu trả lời Sai lầm mắc phải

Khi ta bấm vào nút

này,chuyện gì xảy

ra?

Dữ liệu được lấy từ đâu, truyền về server

hay xử lý tại client. Truyền theo đường nào.

Thông tin lấy ở DB hay file XML…

Gọi hàm abc, lưu dữ

liệu vào 1 biến

abc,… Bạn sẽ được

nhắc nhở nhẹ nhàng

“Đừng đọc thuộc

lòng code với tui”

Thông tin được

truyền về server trực

tiếp hay gián tiếp?

Trực tiếp: Truyền bằng form, hidden field

trong form, bằng URL Rewriting

Gián tiếp: Truyền bằng javascript,

XMLHTTPRequest…

Lẫn lộn 1 trong 2 cái

trên sẽ bị mất điểm

XML được apply

stylesheet ở đâu,

client hay server, như

thế nào?

Ở client: Sử dụng XSLTProcesor.

Ở server:

Trong servlet hoặc trên trang JSP.

Trên trang JSP, ta apply-stylesheet

bằng JSTL XML taglib

Trên servlet, ta apply stylesheet

bằng TrAX (Transformer API)

Nhiều bạn nhầm lẫn

trong trang JSP tức là

ở client. Thực tế file

JSP (Java Server

Pages) vốn là servlet

được build trên

server.

Page 29: The Legendary Book

29

Cây DOM được xử lý

ở đâu?

Tương tự câu trên: Ở client, trên trang JSP

hoặc trên servlet

Sử dụng bộ parser

nào để xử lý file

XML

Có 3 bộ parser: DOM, StAX, SAX. Trong

StAX lại có 2 loại là Cursor API và Iterator

API.

Vấn đề khác Trong quá trình làm project, nếu có thắc mắc về cấu trúc project, file

XML dùng để làm gì, đồng bộ XML và DB như thế nào… bạn có thể hỏi

thầy Khánh. Nhìn thầy vậy thôi chứ hỏi gì thầy cũng trả lời hết, mình

chưa bị chửi lần nào.

Tất cả những điều bạn nói trong buổi thuyết trình sẽ được ghi nhận làm

bằng chứng. Những nhóm thuyết trình nhiều hơn 1 buổi, cuối buổi phải

copy toàn bộ project vào USB cho thầy Khánh, hôm sau bung ra lại tiếp

tục thuyết trình.

Nếu sử dụng thư viện hoặc framework ngoài, nhớ hỏi xin ý kiến của thầy

trước. Bạn sẽ bị 0 điểm phần mình làm nếu dùng thư viện hỗ trợ xử lý

(JSON, jQuery). Phần giao diện không có điểm nên có dùng bootstrap

cũng không lo bị trừ. Mọi thư viện bị cấm sử dụng, vì thầy Khánh muốn

sinh viên code tay để hiểu bản chất vấn đề,

Mặc dù theo lịch là mỗi ngày một nhóm, các bạn nhớ có mặt đầy đủ trước

khi thuyết trình. Nhóm trước lên nếu còn nhiều thời gian sẽ tới nhóm sau,

do đó nếu tới lúc thuyết trình mà không có mặt, cả nhóm sẽ bị 0 điểm.

Trường hợp bạn muốn cải thiện điểm quiz, có thể tìm hiểu 1 số công nghệ

mới, 1 số kinh nghiệm trong quá trình làm, sau đó post trên 4rum XML.

Mỗi bài viết chất lượng sẽ được cộng từ 1 tới 2đ quiz.

Page 30: The Legendary Book

30

Tôn Tử Binh Pháp có câu: “Biết người biết ta. Trăm trận trăm thắng”.

Chương này được viết riêng về những “huyền thoại” và “sự thật” về thầy

Khánh, giúp các bạn có thể biết thêm về thầy, góp phần tăng khả năng

“sống sót” trong những môn thầy dạy

CHAPTER 4 – HUYỀN THOẠI VÀ

THỰC TẾ: “NGƯỜI ẤY” CÓ THỰC SỰ

HẮC ÁM NHƯ GIANG HỒ ĐỒN ĐẠI

.

Page 31: The Legendary Book

31

Đồn đại:

Thầy Khánh “chém người” một cách vô cùng tàn ác. Có nhiều lớp bị thầy chém

phải học lại toàn bộ.

Sự thật:

Thầy khá enjoy việc chém người. Cách đây 2 năm, laptop thầy có dán hình

nguyên cây kiếm. Sau này nghe đồn (lại nghe đồn) lo do kiếm nhuốm quá nhiều

máu nên thầy dán lại hình đầu sư tử (sói?) vào laptop. Ở các môn OS, I2SE, có

những hôm thầy chém cả lớp, nhưng chỉ là absent, luôn luôn còn sót lại vài

mống sống sót. Tin đồn cả lớp học lại môn thầy Khánh là tin đồn nhảm không

hơn không kém.

Đồn đại:

Thầy Khánh rất thích cho sinh viên điểm kém

Sự thật:

Thầy thường cười rất tươi khi cho sinh viên điếm thấp, thầy cười càng tươi hơn

khi nhắc về những thằng thầy “chém chết”. Tuy nhiên, thầy luôn cố gắng chừa

vài con đường sống cho sinh viên, ví dụ như môn XML: thầy sẽ cố gắng hỏi cặn

kẽ, đầy đủ để gỡ thêm điểm công nghệ cho sinh viên, cho phép nộp SRS để cải

thiện điểm…

Đồn đại:

Thầy Khánh rất đáng sợ, nghiêm khắc. Vì chém nhiều nên thầy bị sinh viên ghét

Thật sự:

Thầy Khánh rất vui tính, bắt đầu buổi học nào thầy cũng cười (Giữa buổi mà

thầy hết cười là có chuyện xảy ra).

Thầy thật sự rất quan tâm tới sinh viên. Trong các môn mình học, chỉ mình thầy

lên forum chào mừng lớp mới, chúc sinh viên thi may mắn. Thầy cũng hay đi đá

banh với sinh viên trong lớp (Thầy nói: công tư phân minh, học là học, đá banh

Page 32: The Legendary Book

32

là đá banh. Do đó trên lớp có bị thầy trù dập gì bạn có thể xả vào thầy thoải mái

trên sân bóng mà không lo gì hết).

Kết luận:

Thầy cũng không muốn “xuống tay” với các bạn đâu, chỉ cần học hành chăm

chỉ là được. Với thầy, mỗi sinh viên đạt điểm cao là một niềm tự hào, mỗi sinh

viên pass 2 môn AJ và XML sẽ được thầy trao “huân chương chiến binh” để

chúc mừng.

Ngoài ra, trong buổi lễ tốt nghiệp có rất nhiều sinh viên chụp chung với thầy

Khánh và thầy Phương nhé. Không biết là do 2 thầy ăn ảnh hay do ân oán tình

thù gì trong quá trình học nữa.

Page 33: The Legendary Book

33

FINAL CHAPTER – BÍ KÍP

Tài liệu: Nguồn tổng hợp slide cũ của các môn học Đây là link slide của 4 môn học: I2SE, OS, AJ, XML. 2 môn AJ và XML

slides được đổi mới và cải tiến theo từng block, do đó các bạn nhớ xin thầy slide

mới cuối mỗi buổi.

https://dl.dropboxusercontent.com/u/46157401/Archive/Slides.rar

Share những thứ khác là vi phạm với nội quy nhà trường, do đó mình

không đăng ở đây. Bạn nào có ý kiến đóng góp hay khiếu nại vui lòng liên hệ

địa chỉ mail của mình: [email protected]

Cuốn sách này ra đời như thế nào Cha đẻ của cuốn sách này là cuốn sách “Survival in FPT University”.

Cuốn này chỉ vừa ra được cái bìa thì phá sản vì 2 phần đầu vi phạm nội quy

trường học.

Page 34: The Legendary Book

34

Qua môn XML, nhờ sự động viên, khuyến khích của thầy Khánh, mình

đã ráng lấy hết can đảm để viết cuốn bí kíp này. Thời mình học những môn này,

có những thắc mắc không biết hỏi ai. Cuốn bí kíp này ra đời để giải đáp những

thắc mắc như thế.

Sau quá trình tu luyện, bí kíp đã được qua vòng kiểm duyệt của “sư phụ”

Khánh. Mình sẽ cố gắng xuất bản nó ra, còn nó có bán chạy được hay không tùy

thuộc vào các bạn. “Muôn sự do trời” vậy.

Tạm biệt. Xin cảm ơn nếu các bạn chịu bỏ tiền mua quyển sách này, còn

nếu photo hoặc mượn bạn thì thôi vậy.

Trân trọng cảm ơn Thầy Kiều Trọng Khánh: Người đã dạy mình 4 môn học trên, cũng là

nguồn cảm hứng để mình viết cuốn sách này.

Vô số hương hồn liệt sĩ dưới đao thầy Khánh, đã ủng hộ mình hoàn thành

cuốn sách này.

Page 35: The Legendary Book

35