1
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?
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.
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
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
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
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.
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.
…
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.
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
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.
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.
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
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.
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.
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
…
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
.
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
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.
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.
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.
35