23/12
Sáng lò mò dậy sớm để lên trường họp lớp, cả năm mới gặp ông thầy chủ nhiệm được có một lần, không thể bỏ lỡ được :D . Ngồi gần 2 tiếng thì phải mà cũng chẳng được gì nhiều, loanh quanh cũng chỉ có mỗi việc được và mất khi vào Kĩ sư tài năng là thu hút được sự chú ý của mọi người nhất. Mình thì đã có chủ định sẵn, nếu mà được thì cứ vào, nhiều tiền thế tội gì lại không vào ;) . Lúc về thì dạt vào văn phòng đoàn, định bụng là cùng chúng nó chuẩn bị để tối nay đi "giáng sinh ấm". Nhưng rồi ngồi một lát thì lại đi về, không thấy vui vẻ như năm ngoái vì toàn bạn Linh Trung mình chẳng quen nên cũng chán, mệt, về nhà cho nó khỏe người. Thế mà lại hay, về nhà thì nhận được món quà giáng sinh sớm nhất từ Phượng, cũng vui.
Chiều nằm ngủ được một tí thì đi cùng Đạt lên thăm Lam đang bị sốt, thấy Lam mệt nhưng cứ nghĩ chắc là cũng không sao, ốm 1-2 ngày thì lại khỏe ngay thôi. Ba đứa ngồi nói chuyện một lúc thì mình phải về để còn đi "giáng sinh ấm" kẻo không kịp. Thế là về nhà chở Phượng rồi chạy lên Bách Khoa tập hợp cùng mấy đứa rồi kéo nhau sang mái ấm. Mái ấm Bình Minh, một năm rồi mới quay trở lại. Một ngôi nhà hai tầng không lớn lắm nhưng chứa đựng một tình thương to lớn, một người mẹ vĩ đại và gần 20 đứa con dũng cảm vượt lên số phận. Năm nay số người đi cùng tổ chức đông hơn nhiều so với năm ngoái, quà cũng nhiều hơn vì có nhiều người ủng hộ hơn năm ngoái, nhưng mình vẫn có cảm giác khang khác. Không thấy ấm áp và vui vẻ như năm ngoái, có cảm giác năm nay không chuẩn bị kĩ lưỡng bằng (chắc là vì sắp thi rồi nên mới thế), lúc ngồi chơi với các em cũng thấy không được như năm ngoái. Lần trước thì các anh chị ngồi xen kẻ với các em, một người thì quan tâm tới một hai em, có kịch bản ông già Noel xuất hiện hoành tráng, có cả Tuyết (bằng xốp :D ). Năm nay chắc do đông quá nên các anh chị có vẻ dồn về cả một góc, các em thì cũng vậy, không hòa nhập như trước, tuyết cũng không được phép rơi nữa :( .
Năm nay sau khi tổ chức cho các em ở mái ấm chơi xong không có kế hoạch đi phát quà cho người vô gia cư như năm ngoái nên về cũng khá sớm. Mình thì cũng chưa muốn về nhà, thế là cùng với Phượng đưa Nhung về nhà đã. Amen, đường đông kinh khủng, cả cái Sài Gòn này đổ ra đường hết hay sao ấy. Toàn là xe với xe, người với người. Đúng là ai mà đi xe máy được ở Sài Gòn này thì có thể đi được ở bất cứ đâu thật. Về tới nhà mình thì đã 11h hơn. Đi ngủ để sáng hôm sau còn qua chỗ mẹ.
24/12
Sáng thứ hai liên tiếp dậy sớm, một chuyện lạ đối với mình :D . Cả buổi sáng qua nhà dì chơi với mẹ + chuẩn bị cho sinh nhật anh Sơn vào buổi trưa. Chà, lâu rồi mới được ăn đã thế, lâu lắm rồi mới được ăn bánh sinh nhật ngon thế ;) . Ăn xong thì chở mẹ qua khách sạn để xe còn đưa ra sân bay, kết thúc một tuần vào đây công tác + đi chơi + vào thăm con của mẹ. Tết về gặp lại mẹ vậy.
Tối, Nhung qua, lại được nhận thêm một món quà giáng sinh nữa, bội thu, bội thu :D . Nhưng mà nó lại bảo đây là quà giáng sinh + năm mới + sinh nhật (còn 8 tháng nữa mới tới lận mà :(( ) + ... luôn. Chúa ơi, vậy thì chết con à. Hôm nay có cả Nhung, Trung, Thanh, Phượng, Phi Hùng + 6 đứa trong nhà mình nữa là cũng được hơn một phần ba của lớp 12 Toán rồi. Cả lũ đang định đi chơi thì chị của Lam gọi điện tới báo Lam phải nhập viện rồi. Thế là đành hộc tốc chạy vào với Đạt, không đi chơi với mấy đứa nữa vậy. Tội thân Lam, ngày hôm sau thi thì hôm nay lại phải nhập viện, lại đúng ngày Noel nữa mới tội. Ở trong bệnh viện tới gần 11h thì 2 đứa về, hẹn chị sáng mai lại vào vậy.
Về tới nhà thì mấy đứa kia đang chuẩn bị nhậu, Nhung thì đã về trước, Phượng cũng chuẩn bị về, chỉ còn lại mấy thằng ngồi ăn thịt chó đón Noel. Mình thì đã chán ngán nhậu lắm rồi, quyết tâm không uống nữa nhưng mà cũng ngồi chơi với chúng nó vậy. Lần này nhậu cũng vui, ngồi ôn lại kỉ niệm xưa, ôn lại những chiến tích hào hùng thời trai trẻ :D . 1h sáng, đi ngủ để sáng mai còn vào viện.
25/12
Sáng 5h dậy là chạy vào viện luôn, trưa với chiều có về nhà một lúc còn lại cả ngày hôm nay chủ yếu là ở trong bệnh viện với Đạt, Lam và chị Phương của Lam. Cũng chẳng làm gì, chỉ là thỉnh thoảng chạy đi mua mấy thứ linh tinh với ngồi nói chuyện cho 2 chị em đỡ buồn. Thế mà mình cũng thấy mệt. Giờ thì đi ngủ. Mai còn vào tiếp, Đạt buổi sáng, mình buổi chiều để chị còn về nghỉ với lo việc.
Tạm biệt giáng sinh, đón chào năm mới.
Chọc chọc, ngoáy ngoáy, hì hục cả buổi tối thì ra được cái này: (click vào đây nếu muốn xem lớn hơn)
Chúc mọi người giáng sinh vui vẻ, hạnh phúc.
Bó tay, hôm nào nó không mất, lại nhè hôm nay mà mất điện, :(( . Tuần trước thì nó đã mất điện đúng vào cái ngày mà mình cần phải viết cái báo cáo + ghi đĩa cho cái Bài tập lớn môn Kĩ thuật lập trình rồi, kết quả là mình đã phải chuyển sang tuần này nộp. Nhưng mà hôm đó thì cũng còn may là nhờ mất điện mà cả lũ mới quyết định đi hát Karaoke một bữa cho nó bõ ghét, sướng cả mồm, mỏi cả tay :D (vì vỗ tay với lắc lư cỗ vũ cho mấy đứa khác hát). Hôm sau có điện thì đã quyết định là phải đánh cái báo cáo cho nó xong rồi ghi ra đĩa bỏ đó luôn, hôm nay chỉ cầm lên nộp. Không hiểu nghĩ sao lại đánh xong báo cáo rồi thôi, chưa ghi đĩa. Tự bảo là không lẽ tới hôm đó nó lại mất điện tiếp, cứ từ từ đã. Thế mà nó mất thật. Đen thế. Sáng nay về nhà để chuẩn bị thì mới biết cái tin trời đánh đó, nghe thằng Huy nói mà không tin vào tai mình nữa, trùng hợp đến thế thì thôi. Vậy là tạm biệt hai điểm thưởng, tạm biệt luôn cái trò Caro mất cả đêm ngồi viết, tạm biệt luôn ông thầy mà cả kì mình mới gặp có hai lần. Đành cố gắng mà thi cho tốt vậy.
Nhưng hôm nay cũng không hẳn là một ngày xui. Cuối cùng thì cũng đã quyết định được cái việc về Tết, đúng là mua vé máy bay thì nó khác hẳn vé tàu, đắt thì có đắt thật nhưng mà mất có 5 phút là xong, lại cứ được dạ dạ vâng vâng ngọt xớt. Đúng là tiền nào của ấy thật. Tối đến thì lại được anh Hải hỏi xem thử có đi làm thêm cho công ty của bạn thân ảnh không. Nghe bảo là có 2 lựa chọn, một là làm chính thức, giờ hành chánh đàng hoàng, lương 2 triệu tháng nhưng mà yêu cầu rất cao. Cái này thì mình có mơ cũng chẳng dám, em la noob, sao dám làm như pro thế được, chẳng hiểu anh nghĩ sao mà lại hỏi mình cái này. Thứ hai là làm để lấy kinh nghiệm là chính, tiền chẳng bao nhiêu, dưới một triệu (bữa trước còn thấy đi làm phục vụ lương tháng 6-7 trăm là tốt rồi, giờ nghe anh bảo 1 triệu mà còn là thấp :D , cái nghề của mình có vẻ giàu thật), chỉ làm những thứ nhỏ nhặt, có gì thì anh kia chỉ bảo thêm cho. Cái này thì nghe có vẻ thoải mái hơn nhưng mà mình cũng thấy phân vân, chả biết mình có làm được gì với mớ kiến thức lõm bõm giờ không, rồi lại thành trò cười thì chết. Nhưng mà nếu không chụp lấy thì lại như cái vụ mất điện kia thì khổ, có cơ hội mà không chụp lấy thì không khéo sau này chết còn tiếc. Nhưng mà còn việc học ở trường thì sao, kì sau bắt đầu dính sâu vào chuyên ngành rồi, không thể chỉ học để mà thi đậu chư lúc này nữa. Nhưng mà làm cái đó thì cũng phục vụ cho việc học là chính mà, nó sẽ rất có ích cho mình sau này nữa. Nhưng mà mình thì đã làm được cái gì đâu, năm 2 rồi nhưng vẫn chỉ là noob, là amateur, là nghịch nghịch cho vui thôi, làm cái quái gì được...
Dù sao việc trước mắt bây giờ là học để mà thi cái đã, tuần sau là thi rồi. Lý thuyết thông tin vẫn có một mớ chưa biết gì, Lý 3 mới chỉ tàm tạm, còn lại chẳng biết gì. Nhưng dù sao mình cũng quen với việc đua nước rút này rồi, học để mà thi, thi để mà đậu, đậu để mà quên, quên để mà khỏi phải học...
Nhãn: general
Lật ngửa, lật nghiêng, nằm đủ kiểu
Quay theo tám hướng hỏi gối kia
Một câu hỏi lớn không lời đáp
Cho đến bây giờ miệng vẫn ngáp.
Không biết đã là lần thứ bao nhiêu mình nghĩ học nữa rồi, nhiều quá rồi, chẳng thể đếm được nữa. Không cần đến một thống kê phức tạp mình cũng biết là số ngày nghỉ học của mình trong học kì này còn lớn hơn số ngày mà mình nghỉ trong 12 năm học phổ thông cộng lại, chắc chắn như vậy. Lý do ư, có thể đúng là do mình nhác, cái bản chất nó vốn là như vậy nhưng tới lúc này nó mới có cơ hội bộc lộ ra sau bao nhiêu năm dồn nén chăng? Cũng có thể là thế, nếu là thế thì đành chịu, mình là kẻ cực đoan bảo thủ và khó thay đổi nên sẽ không thay đổi. Hay là do mình không hoà nhập được với bạn bè mới? Cái này thì không chắc chắn lắm, mình vẫn có nhiều bạn mới, mình biết khá nhiều người trong lớp và cũng có nhiều người biết mình. Ở lớp thì mình vẫn có thể nói chuyện với rất nhiều người, nhưng, thực sự mà nói thì hầu hết chỉ mang tính xã giao, vui vẻ đó nhưng chỉ là trong chốc lát. Thực sự, mình chưa bao giờ có được cảm giác vui vẻ như khi đến lớp những năm cấp 3, chưa thấy có ai để nói chuyện một cách thoải mái và vui vẻ như đã (và đang) có. Dù sao đi nữa, bỏ qua nguyên nhân này, đi học là để học, không phải là vì vui. Hay nguyên nhân là do mình thấy thất vọng về việc học Đại học? Cái này cũng có thể. Sau những ngày tháng:
Sống trong Toán chết vùi trong Lýthì có lẽ mình đã chán ngán cái sự học này lắm rồi, cũng còn may là mình chưa "Gục lên sách, quên đời mười bảy". Cái khẩu hiệu quen thuộc những năm 12 là "Học để mà đậu Đại học", vậy mà, Đại học cũng chỉ là sự tiếp diễn của cái năm 12 đó thôi. Mình lại phải nghe và gằng mà thuộc như vẹt những thứ mà mình chả hiểu gì về nó hay chả muốn biết về nó làm gì. Lại phải nhét vào đầu một đống công thức để rồi khi đi thi thì lại lôi nó ra mà trả cho thầy cô. Học chỉ để thoã mãn cái thú tính của một vài người nào đó (ở đây xin chú thích là thú tính có nghĩa là thú vui tính toán, cấm suy nghĩ lung tung :D ). Vậy thì mình đi học làm quái gì nhỉ, ở nhà hoặc đi chơi không tốt hơn nhiều à. Lúc nào sắp thi thì lại ôm đống sách vở mà tu luyện, mà cày bừa rồi đi thi là đủ, năm ngoái cũng thế, năm nay vẫn vậy, cũng tốt chán (nếu chỉ xét trên điểm số, còn về kiến thức thì mình không thể biết). Tới đây thì suy nghĩ của mình đã có vẻ hơi cực đoan rồi, thầy cô thì phải hơn quyển sách nhiều chứ. Tất nhiên, nhưng mà có lẽ khi thầy chẳng thể nhớ nổi cái đứa đang đứng trước mặt mình là đứa nào, chẳng hề muốn biết cái lũ đang ngồi kia muốn biết gì, thì có lẽ những gì thầy cô truyền cho mình cũng không nhiều hơn quyển sách kia là bao. Dù vậy, có lẽ đây chỉ là vấn đề của những môn đại cương thôi, hi vọng lúc học chuyên ngành thì sẽ khác.
Những trái tim thấy Hóa kinh hoàng
Đêm mơ Văn lệ nhỏ hai hàng
Ngày Sử-Địa chập chờn ám ảnh
Anh Văn:Thức triền miên đêm lạnh
Ngập đầu Sinh nhụt chí anh hùng
Thêm Công Dân điệp điệp trùng trùng
Gục lên sách, quên đời mười bảy.
Nói chung là có nhiều nguyên nhân khiến mình nghỉ học, có thể đúng, có thể sai, có thể hợp lí, có thể vô lí nhưng sự thật vẫn là mình đã và đang nghỉ.
Bây giờ là 3:25 sáng, cái giờ mà bình thường thì mình đã và đang yên giấc nồng chứ không phải là đang ngồi đây và viết những dòng này. Nhưng mà hôm nay thì lại khác, khác về nhiều thứ so với mọi ngày, và chính vì thế mà giờ này mĩnh vẫn ngồi đây.
Sài Gòn hôm nay trời trở gió, mưa tầm tã, xối xả làm dịu đi hẳn cái ngột ngạt oi bức những ngày qua. Trời man mát, gió hây hây, mưa rả rích, thật là một điều kiện lí tưởng để ngủ, ngủ và ngủ. Buổi sáng thằng Vĩnh nó lấy xe đi đâu mất, định đi chơi nhưng đành ở nhà, may mà có Lam tới và nấu ăn (bữa ăn kết thúc thời kì ăn chơi sa đọa và bước vào thời kì học hành căng thẳng :D , theo lời Lam), cũng tốt chán. Phải nói là lâu lắm rồi mới ăn được một bữa ngon như vậy, và kéo theo là một kết quả tất yếu, cái bụng căng ra thì con mắt sẽ cụp lại, mình lăn quay ra ngủ. Ngủ hăng say, ngủ mê mệt, ngủ với tất cả tâm hồn tình cảm, mình ngủ như chưa bao giờ được ngủ, ngủ như là lần cuối cùng được ngủ :) . Khi mà niềm đam mê ngủ đang phai nhạt dần dần thì Vĩnh về, xoay qua nhìn đồng hồ thì đã 4:30, suy nghĩ đắn đo một lúc thì mình quyết định dậy. Đi qua nhà Nhung chơi vậy, thế là đi thôi. Qua tới nhà Nhung thì lại bắt đầu nói, nói và nói. Chủ đề hôm nay chủ yếu xoay quanh việc mua vé tàu Tết, có mỗi thế mà cũng phải đắn đo về ngày nào, vào lại ngày nào rồi có mua vé khứ hồi hay không rồi lại vé cho bé em,... Xoay tới xoay lui thì cả 3 đứa đều đói, thế là lại qoay ra rán bánh ăn. Ôi, cuộc đời mà cứ thoải mái thế mãi thì tốt biết mấy, ăn - ngủ - chơi - nói- ăn... :D
Kết cuộc của cái sự bàn luận lúc chiều là giờ này mình phải ngồi đây, dài cổ ra như cái đoàn tàu chỉ để đặt mua mấy cái vé tàu. Ban ngày vào thì thấy quá tải, tới giờ này thì chỉ thấy mỗi cái dòng "Đang tìm tàu, xin chờ..." là nhiều nhất, cái trang http://vetau.com.vn quả là bó tay. Kiên nhẫn, vẫn biết là làm việc gì cũng cần phải kiên nhẫn nhưng mà cứ như thế này thì đến Tết sang năm mình mới mua được vé quá. Mấy ông đường sắt này có họ hàng gì với mấy ông giáo dục không mà khoái cải cách đến thế, mỗi năm lại bày ra một trò mới. Năm ngoái thì phải xếp hàng lấy ticket xong mới được quyền xếp hàng tiếp mua vé, năm nay thì lại chỉ bán vé qua mạng "quá tải + xin chờ". Đúng là ngày một đổi mới, ngày một hiện đại, ngày một tốn công tốn tiền. Cả một ngày mà chỉ bán được có hơn trăm vé vậy mà lúc nào cũng quá tải (Tuổi trẻ). Bó tay. Còn chậm hơn cả cho mình ra đứng bán ngoài ga không chừng.
Nhưng mà rồi, có muốn chê, muốn chửi thì cũng đành nhịn vậy, không lẽ lại hét lên với cái monitor, hét mấy ổng nhà ga thì có mà ăn Tết ở đây à. Vậy thì vẫn phải người ta bảo sao thì mình làm vậy thôi, người ta bảo chờ thì mình phải chờ thôi. Đành tiếp tục cố gắng thôi.
Ôi, giá mà mấy ngày tới trời lạnh nhỉ, chán nóng lắm rồi. Giờ này ở nhà thì đã lạnh rồi, đã lâu lắm rồi không được mặc áo ấm:
Đã 4 giờ sáng, vẫn chưa thấy tăm hới cái vé tàu đâu cả, ngủ vậy.
Nhãn: general
I'm not all you wished of me
But a mother's love for her son
Unspoken, help me be
Tối nay không hiểu sao mẹ lại gọi vào khá muộn, mẹ bảo là cả nhà đã đi ngủ cả rồi, mẹ gọi hỏi xem mình đã ngủ chưa. Mẹ vẫn thế, vẫn luôn bảo mình đi ngủ sớm đi để giữ gìn sức khoẻ trong khi mẹ dù sức khoẻ đã kém trước nhiều vẫn luôn đi ngủ muộn. Nghe giọng mẹ có vẻ là lạ, mình hỏi thì mẹ chỉ cười bảo không sao. Ừ, mình cũng mong là thế, mãi như thế.
Làm một thằng con trai cũng khổ. Đôi khi mình rất muốn hỏi thăm, quan tâm tới mẹ, tới ba, tới anh; muốn nói chuyện gì gì đó, nói những suy nghĩ cảm xúc của mình về mọi thứ hay đơn giản hơn chỉ là nói rằng mình yêu qúi họ nhưng sao vẫn thấy khó khăn, ngượng ngập kì lạ. Là một đứa con gái, những việc như thế chắc sẽ đơn giản hơn nhiều. Mọi người cũng thế, hay đó là do tính của mình nó là thế nhỉ, mình cũng chịu.
Nhãn: general
New look, new feel. Enjoy it.
Tối nay, sau nguyên một buổi chiều và gần nữa buổi tối long nhong ở trường ĐH Khoa học tự nhiên để chơi + phụ giúp + phá cái gian hàng ăn uống của Lam, mình lại có hứng vào đây tán phét. Lúc đầu cũng dự định nên tóm tắt sơ sơ mấy cái hoạt động "bán mặt cho đường, bán lưng cho trời" mấy ngày qua, nhưng mà ngẫm lại thì thấy cái công cuộc tìm nhà này chưa chắc đã là 100% nên cứ tạm thời bỏ qua đã vậy. Loanh quanh một hồi thì đọc được một số bài viết hay hay về Việt Nam của chúng ta, từ việc tự làm xấu mặt mình trước thế giới của mấy vị tổ chức APEC, hay là quay lại đánh nhau cho bỏ ghét của mấy đại gia. Mà mình cũng phải công nhận là càng ngày thì việc đọc mấy cái blogs này càng thú vị hơn đọc báo nhiều, đọc báo thì làm quái gì có chuyện người đọc cãi nhau thẳng với tác giả như thế được :D (comments xấp xỉ hoặc lớn hơn post).
"Anh không đồng ý với chú, chú viết thế là không có đúng, là sai hoàn toàn. Dù đây là nhà của chú thật nhưng mà chú phải viết thế nào cho anh nhìn vào nó không chướng mắt, không ngứa ngáy cái lỗ tai chứ viết vậy là không được chút nào."
"Bác ồn ào quá, nhà người ta thì người ta thích làm gì thì làm, nghĩ gì, thấy gì thì viết nấy thôi chứ làm quái có ý gì khác chứ. Bác không thích thì đi về nhà của bác mà chửi, làm um lên ở đây làm gì, làm cho comment của em nó nằm tụt xuống dưới thì còn ai đọc được nữa chứ. Chủ nhà cứ viết tiếp đi, đừng có để ý đến mấy thằng spam kia, bài viết hay lắm, nói chung là thế (cụ thể thì em vẫn chưa đọc hết bài nhưng mà ngứa mắt cái comment kia quá nên mới bụp một cú cho bõ ghét đã rồi đọc tiếp bài của bác vậy)."
"Hôm nay trời nắng, ngày mai trời có thể mưa..."
"Cảm ơn. Vâng, xin cảm ơn, cảm ơn vì mọi người đã quan tâm tới bài viết của tôi." @tác giả
vv...
Người viết chắc là đã bỏ ra khá nhiều công sức, người đọc cũng nhiều, comments cũng lắm, xét cho cùng thì đó là một bài viết rất là thành công.
Đọc tới đọc lui một hồi thì mình bắt đầu ngán mấy cái chuyện vừa không bình thường vừa quá đỗi bình thường này, bắt đầu quay lại với blogger thì một đồng chí Yahoo send cho một cái link IQ Test, thử một phát thì thấy mình được 130 điểm, trên cả mức high, quá tốt :D . 5 phút sau, Huy thông báo, đã có điểm Toán rời rạc, vậy là nhảy sang xem ngay, 8 điểm, không đến nỗi tồi với một môn mà theo lời thầy Mẫn thì tỉ lệ rớt là 3/4. Sẵn đà tự tin vào bản thân dâng trào (cái bệnh khó chữa nhất ở mình :( ), nhảy sang làm luôn phát Java blackbelt thì pass được cái Java SE Basic, correct 15/20, vượt yêu cầu của nó là 70%, cũng tạm được.
Hôm nay là một ngày may mắn cho mấy cái test.
Trước hết, mình phải khẳng định rằng mình là một người bảo thủ và là một kẻ cực đoan, và vì thế, một hệ quả tất yếu là mình thích cãi nhau. Một khi mình đã nghĩ điều gì là đúng thì, một cách chắc chắn, mình sẽ làm mọi cách để chứng minh điều ngược lại là hoàn toàn sai lầm, mà đã làm thì phải làm đến cùng mới chịu được, phải giúp người khác thay đổi cái ý kiến "sai lầm" đó mới thôi (trừ phi ý kiến của người ta làm mình thay đổi suy nghĩ trước :) ). Mà, theo mình nghĩ thì có như vậy mới thực sự là "tranh luận" (một từ đồng nghĩa với cãi nhau), mới thực sự có ích chứ không như cái kiểu "mọi người cùng thắng", "tôi đúng mà anh cũng chẳng sai" mà mình vẫn thường gặp. Một ý kiến chê bai, phản bác ta chỉ có thể có được khi người khác đã lắng nghe và suy nghĩ một cách cẩn thận về ý kiến của ta, còn một ý kiến đồng tình, tán dương, hùa theo thì rất có thể được viết khi mà tác giả chỉ cần nhìn sơ qua ý kiến của ta. Tất nhiên là, cũng có những vấn đề mà ta không thực sự khẳng định được tính đúng sai của nó, kiểu như là các vấn đề thuộc về tôn giáo hay sở thích cá nhân chẳng hạn, những cái đó thì "đúng sai tùy thời, đẹp xấu tùy người", chịu! Dù vậy, theo mình, tranh luận (hay cãi nhau, gì cũng được), luôn có những lợi ích nhất định của nó, chúng ta cứ nên thực hiện việc đó càng nhiều càng tốt :D .
Ấy vậy mà trong có thời gian gần đây, mình có 2 cơ hội để tranh luận nhưng cuối cùng thì lại phải im lặng, chẳng thể nói được gì :(( !
Việc thứ nhất, Rock và hàng xóm. Bạn có thích rock không? Mình thì có, mình thích Rock, thích Thrash, và tất nhiên, thích Metallica. Nhưng hàng xóm của mình thì không. Ừ, chuyện đó cũng có thể hiểu được, hoàn toàn dễ hiểu là khác, một ông già khoảng 70 mà thích Metallica thì chắc chỉ có bố của Kirk Hammett hay James Hetfield mà thôi :D . Mà, theo như mình theo dõi và suy đoán (khoảng 99%) thì hàng xóm của mình không có họ hàng gì với Kirk Hammett lẫn James Hetfield cả :D , suy ra, ông ta ghét nghe Thrash, ghét Metallica. Nếu mọi chuyện chỉ dừng ở đó thì tốt biết bao, thế thì cuộc sống vẫn êm ả trôi đi rồi. Khổ một nỗi, mình, với tình yêu vĩ đại dành cho Thrash, vẫn đều đặn rót vào tai hàng xóm những giai điệu "êm ả" của "Hangar 18", " Battery", "Master of Puppets",... vẫn đều đặn "ngẫu hứng" cất cao giọng hát của mình để hòa vào tiếng trống kinh điển của "One", hòa vào những đoạn lead réo rắt của "Fade to Black" hay tiếng guitar sâu lắng đầy cảm xúc của "Nothing Else Matter". Ngày qua ngày, tuần qua tuần, và có vẻ như cuối cùng thì cũng có một chút rock đã nhiễm được vào ông hàng xóm. Khi mà tôi, một lần như mọi lần, đang thả hồn theo tiếng trống thì, không một sự cảnh báo, không một MC giới thiệu, ông ấy xuất hiện trước cổng, cất cao tiếng hét: "Chúng mày làm gì mà gào toáng lên thế!!!!". Và kéo theo sau đó là cả một quá trình thuyết giảng kéo dài nhiều ngày, kéo dài hơn bất cứ một đoạn solo guitar nào mà mình từng nghe :D . Ôi thôi, vậy là xong, mặc dù rất muốn phản đối cái ý kiến của ông về việc coi Metallica như những thằng điên thích làm loạn, coi Thrash như một đống âm thanh hỗn độn choi tai, có thể gây ra mất trật tự, "ảnh hưởng an ninh khu phố",... thì mình cũng phải im lặng, cúi đầu và lắng nghe những lới răn dạy, không tranh cãi, không phản hồi :(( !
Rồi, tới chuyện thứ 2. Mọi việc bắt đầu từ một trong những post hiếm hoi của mình trên diễn đàn Bkit05, một ý kiến xoay quanh việc có cần phải học lập trình cấu trúc trước khi học lập trình hướng đối tượng hay không. Mình không thích lập trình cấu trúc, mình thích OOP, và vì mình là một kẻ cực đoan như đã nói ở trên, mình cho lập trình cấu trúc xứng đáng được bỏ qua. Thực sự thì trước khi post nó thì mình cũng đã dự đoán được rằng chắc chắn sẽ có những ý kiến phản đối, sẽ nhiều nữa là đằng khác. Dù vậy, mình vẫn viết, vì, như đã nói ở trên, mình thích cãi nhau :D , mình thích người khác lắng nghe và suy nghĩ về những gì mình nói hơn là nhìn lướt qua và bỏ đi (là một trong những dấu hiệu cho thấy có vẻ như mình là một thằng ngốc ;) ). Đúng như mình mong đợi, đã có những ý kiến phản hồi, và tất cả đều là phản đối, cũng không có gì bất ngờ cho lắm. Tuy nhiên, tạm thời vẫn chưa có ý kiến nào thực sự có tác động, dù là nhỏ đến "tình yêu" của mình dành cho OOP, vẫn chưa có một ý kiến nào thực sự làm mình thõa mãn. Và, đúng vào lúc mình đang hi vọng cuộc tranh luận sẽ được kéo dài, sẽ có những ý kiến mang tính lật đổ xuất hiện, sẽ có những post giúp mình có được sự đánh giá, so sánh nhất định về lập trình cấu trúc và lập trình hướng đối tượng thì... Người ta đã không muốn "cãi nhau", không muốn tiếp tục thì mình biết phải làm gì? Nói cho một mình mình nghe ư, nói để rồi được bảo là cái thằng lắm mồm nhiều chuyện cứ muốn gây rối ư? Không. Vậy là thôi, kết thúc, topic closed, game over.
Đôi khi, tìm ra người để cãi nhau cũng không phải là chuyện dễ dàng.
Nhãn: general
Mảng là một thành phần không thể thiếu trong bất kì ngôn ngữ lập trình nào, Java cũng vậy. Việc tạo và sử dụng một mảng trong Java là vô cùng đơn giản nhưng trong một vài trường hợp, lại chứa đựng những hạn chế. Ví dụ như, bạn cần chứa một danh sách các từ do người dùng thêm vào, hay một danh sách các nhân viên trong công ty nào đó, hay đại loại như vậy. Trong những trường hợp này, bạn không thể biết chính xác mảng sẽ chứa bao nhiêu phần tử, vì thế, không thể sử dụng mảng. Thay vào đó, hãy sử dụng lớp ArrayList, một lớp có công dụng hoàn toàn tương tự như một array nhưng có khả năng tự mở rộng kích thước của nó.
Cách sử dụng lớp ArrayList thì đơn giản mà sách viết về nó thì vô kể nên mình sẽ không nói lại nữa mà sẽ đi vào mục đích chính của bài này, đó là mở rộng nó. Giả sử rằng, bạn cần viết một chương trình quản lí sinh viên chẳng hạn. Một cách bình thường, bạn sẽ phải viết một lớp kiểu như Student với các thuộc tính như tên, tuổi, giới tính... rồi sau đó quản lí chúng trong chương trình với một mảng kiểu Student[] hay một đối tượng ArrayList
Thế nếu bây giờ bạn tìm tất cả những sinh viên có tên là An thì làm thế nào? Ồ, chỉ cần sửa lại phương thức trên một chút là xong:
Vẫn chưa có gì khó khăn nhỉ :D ? Thế nếu bây giờ bạn không muốn tìm theo tên mà là tìm tất cả những sinh viên 20 tuổi thì sao nhỉ? Code tiếp chứ sao, viết thêm một phương thức nữa vậy:
Xong rồi hả, vậy bây giờ bạn lại muốn tìm tất cả sinh viên nam thì sao nhỉ? Rồi tất cả sinh viên nam tên Bình tuổi dưới 20, một sinh viên nữ 21 tuổi đầu tiên bắt gặp trong danh sách, hay tất cả sinh viên không phải tên Bình,... thì sao nhỉ? Có lẽ tới lúc này thì cách giải quyết trên đây đã trở thành vô tác dụng và nên lên đường vào sọt rác thì hơn. Phải có cách giải quyết tốt hơn cho những vấn đề kiểu như trên. Tiếc thay, Java không hỗ trợ cho chúng ta trong những vấn đề như thế này (hay là có mà mình không biết nhỉ), đành phải tự tìm giải pháp vậy.
Thử nhìn lại 3 phương thức đã viết trên đây, bạn có thấy chúng giống nhau? Vâng, chúng hoàn toàn tương tự nhau, chỉ có duy nhất một yếu tố khác biệt, đó là câu lệnh if(...){}
, là điều kiện để xác định xem một phần tử có thõa mãn yêu cầu hay không. Nhận xét này đưa đến một cách giải quyết khác, với một ý tưởng bắt nguồn từ Prototype.js framework.
Trước tiên, ta hãy tạo một Interface có tên là Condition như sau:
Sau đó tạo một lớp chứa mới kế thừa lớp ArrayList và thêm vào các phương thức của chúng ta:
Giải thích một chút về ý nghĩa của các phương thức:
find(Condition cond)
: tìm phần tử đầu tiên thỏa mãn điều kiện cond và trả về nó, nếu không có phần tử nào trong ArrayList thõa thì trả về null.findAll(Condition cond)
: trả về một đối tượng thuộc lớp MyArrayList chứa tất cả các phần tử trong ArrayList thõa mãn điều kiện cond.reject(Condition<E> cond)
:trả về một đối tượng thuộc lớp MyArrayList chứa tất cả các phần tử trong ArrayList không thõa mãn điều kiện cond.partition(Condition<E> cond)
:trả về một mảng 2 phần tử là đối tượng thuộc lớp MyArrayList, MyArrayList thứ nhất chứa tất cả các phần tử trong ArrayList thõa mãn điều kiện cond, MyArrayList thứ 2 chứa các phần tử còn lại.
Ví dụ sử dụng lớp MyArrayList:
Tới lúc này thì mọi việc có lẽ đã thật sự trở nên dễ dàng hơn rồi nhỉ?
Nhãn: java
Đêm trung thu bạn làm gì? Còn tôi, có lồng đèn, có bánh trung thu, có những người bạn, kể ra thì cũng khá là đầy đủ không khí rồi nhỉ, tiếc là không thấy múa lân nên cứ thấy thiếu thiếu. Thật sự thấy lạ lùng, hình như trung thu ở thành phố này không có múa lân thì phải, hay là người ta múa ở chỗ nào mà mình không biết nhỉ? Mình đi ra đường cũng thấy không khí bình thường, bên chỗ quận 5 thì có nhộn nhịp hơn một tí nhờ mấy tiệm bán lồng đèn, trời thì toàn là mây, chẳng thấy trăng sao gì. Nhà bên cạnh có một thằng nhóc, không biết mẹ nó đi đâu, mình chỉ thấy nó ngồi lặng lẽ với đống đồ chơi của mình trong khi ba nó xem TV, không lồng đèn, không trung thu. Những đứa trẻ nghèo khổ, cô nhi hay gần như vậy sống trong các mái ấm thì được nhiều người quan tâm, không tổ chức cái này thì cái nọ. Kể ra cũng hợp lí vì chúng đã phải chịu quá nhiều thiệt thòi rồi, phải giúp đỡ, đền bù cho chúng chứ. Những đứa trẻ giàu có, khá giả thì sẽ được bố mẹ chúng đưa đi chơi, đến những nơi đông vui nhộn nhịp và tất nhiên là tốn tiền. Cũng không sao, điều đó là hoàn toàn hợp lí, bố mẹ chúng nó có điều kiện thì chúng nó hạnh phúc là đúng thôi. Chỉ không biết những đứa trẻ bình thường thì sao nhỉ? Bố mẹ chúng nó sau một ngày làm việc mệt mỏi cực nhọc khó lòng có thể đưa chúng đi chơi đâu xa, chúng có muốn tự đi thì cũng là mission imposible. Kết cục là ở nhà vậy, bố mẹ mua bánh trung thu cho mà ăn rồi ngồi xem các bạn chơi trên TV vậy.
Nghĩ vậy mới thấy hồi trước mình sướng, nhỏ thì bố mẹ với anh dẫn đi chơi, lớn hơn một chút thì tự đi, lúc đầu thì tự tổ chức múa lân xin tiền mấy nhà trong xóm, sau thì theo đoàn đi múa khắp thị xã. Trung thu luôn là vậy, hò hét, chạy nhảy và cười. Có vậy mới biết mỗi nơi mỗi khác, ở thành phố chưa chắc đã sướng (mặc dù có thể là nếu có tiền thì ở đâu cũng sướng :D ). Dù vậy, đó chỉ là hồi trước.
Trung thu năm ngoái, không bánh trung thu, tới phút chót mới đi mua vội mua vàng một cái lồng đèn nhưng lại rất vui vẻ, thoải mái. Năm nay, đứa thì bận học, đứa bảo nhà xa với lại đang mệt, trung thu chỉ có mấy mống. Đành chịu vậy, cũng phải thông cảm cho bọn nó thôi.
Hôm nay lang thang trên net đọc được một câu: "Có vẻ, người lớn đang trẻ lại, còn con nít dường như già hẳn đi?" (trích từ blog Cái tôi). Không biết mình đang trẻ lại hay già đi nhỉ?
Nhãn: general
Thử chương trình này giùm tôi: Word Reminder
Cách đây hơn 1 tuần thì mình bắt đầu chuyển sang học từ mới Anh văn bằng cách sử dụng phần mềm, theo như cách mà thằng Huy vẫn học. Tuy nhiên, cái chương trình mà mình sử dụng có nhiều điểm thật sự bất tiện như: không thể nhập tiếng Việt có dấu, không thể nhập từ có khoảng trống, không có phân loại từ theo chủ đề,... Một chương trình khác cũng đã được thử, và nó vẫn tiếp tục không làm mình thõa mãn, nó hoàn toàn không thể hiển thị được tiếng Việt (chắc là nó nghĩ phần mềm học tiếng Anh thì chỉ cần tiếng Anh là đủ quá :-/ ). Vì thế mình đi đến quyết định: tự viết lấy một chương trình để học từ mới vậy B-) .
Quyết định xong, mục tiêu đã có nhưng thực hiện nó thì thật không dễ dàng gì. Vấn đề đầu tiên là ngôn ngữ nào sẽ được dùng, Java, Flash hay là xây dựng theo kiểu ứng dụng web (web app) bằng javascript+xml. Ý tưởng web app là tốt nhất, hoàn toàn phù hợp theo phong trào web2.0 hiện nay nhưng cũng là khó thực hiện nhất, để làm ra được 1 chương trình như mình mong muốn thì cần phải biết ít nhất một ngôn ngữ lập trình cho server (PHP, ASP, JSP, hoặc Ruby On Rails, ...) chứ không thể chỉ dựa vào javascript được => bỏ qua, sau này có khả năng sẽ quay lại. Việc sử dụng Flash cũng sẽ gặp phải những khó khăn tương tự, lưu trữ dữ liệu, đa người dùng, ... :-w nên cũng là "nhiệm vụ bất khả thi". Vậy là chỉ còn Java ~o) .
Quyết định ngôn ngữ xong thì bắt tay vào làm, lao vào hì hục thiết kế dao diện người dùng mới thấy chẳng biết làm gì với nó cả :-s , mình chưa hề có kinh nghiệm gì với kiểu chương trình như thế này. Ok, như vậy là đành phải dành cả buổi chỉ để suy nghĩ về cái chương trình của mình sẽ làm cái gì và làm như thế nào đã rồi hãy quan tâm nó nhìn nó sẽ như thế nào. Sau nửa ngày trằn trọc, băn khoăn suy nghĩ ... i-) thì cuối cùng mình cũng đã có những ý tưởng nhất định, có thể hình dung ra cái chương trình của mình sẽ ra sao. Vậy là bắt đầu viết. Code, code, code, ..., code + code = 2 code code (cốt cộng cốt bằng 2 cốt cốt) and code @-) . Tuy nhiên, mọi chuyện chẳng dễ dàng vậy, có cả loạt thứ mình chưa đụng đến bao giờ như JList, JTabbedPane, ... và một mớ hầm bà lằng khác. Dù vậy, đã có Core Java ở bên cạnh, mình chẳng ngán cái gì cả :D . Vâyh là vẫn tiếp tục cái điệp khúc code, code and code...
Và cho tới lúc này thì, một chương trình như mong đợi đã hoàn thành, chỉ còn chờ đưa vào sử dụng thôi (kết cục là vì viết cái chương trình giúp cho việc học Anh văn này mà cả tuần nay mình chẳng học chút Anh văn nào cả :D ). Nhưng nghĩ tới nghĩ lui thì trình độ của mình vốn chẳng bao nhiêu, viết một chương trình xong rồi cứ nghĩ nó tốt lắm rồi, hoàn hảo lắm rồi trong khi thực tế thì nó quá tệ, kém hơn chương trình khác xa quả thực là một mối nguy to lớn. Vậy là phải đưa nó lên đây, hi vọng có ai đó hảo tâm thì xem qua rồi nhận xét giúp mình vậy. kính mong mọi người giúp đỡ ^:)^ .
Chú ý:
Các bạn download file ở trên về, giải nén rồi chạy file WordReminder.jar để vào chương trình.
Phải có JRE 5.0 để chạy được Java.
Nhãn: java
11:36PM, chỉ còn khoảng vài giờ nữa là cơn bão mạnh nhất trong 10 năm qua sẽ đổ bộ vào dãi đất miền Trung quê hương của mình. Báo đài, tivi, internet liên tục cập nhật thông tin từng giờ từng phút về cơn bão càng làm tăng mức độ khủng khiếp của cơn bão: một cuộc sơ tán khổng lồ, sóng biển cao trên 10m, ...vân vân và vân vân. Không phải lo lắng lắm về ngôi nhà thân yêu của mình, nó nằm xa biển và cũng khá chắc chắn, ông ngoại ở Huế thì cũng đã an toàn rồi, người thân vậy là ổn B-) . Bạn bè thì chúng nó vẫn còn vui vẻ chán, Lâm với Tiến còn định vào hầm Hải Vân tránh bão nữa chứ =)) , chúng nó toàn sức khỏe như voi cả, chắc là cũng ổn nốt. Có lẽ vài bữa đi quyên góp anh em trong này mấy gói mì tôm gửi ra cho chúng nó vậy, không nó lại bảo mình vô tâm, chẳng thương bạn bè thì chết.
Mà kể ra cũng quái quỷ, chết tiệt thật, quê mình và cả miền Trung vốn đã nghèo rồi, nghèo cực kì vậy mà quanh năm suốt tháng hết hạn hán, lũ lụt lại tới bão tố. Vừa xong Chanchu thì lại đến Xangsane, không biết còn cái quỉ gì tiếp nữa không. Người nghèo ngày càng nghèo, người giàu vẫn cứ giàu nhờ người nghèo, một sự thật chán chường và khốn nạn nhưng vẫn kéo dài từ xưa đến nay. Bao nhiêu con người làm lụng vất vả cực nhọc, một nắng hai sương, gom góp cả đời rồi tất cả tiêu tan sau một đêm, chỉ vì một cơn bão ở đâu lù lù xông tới. Tôi không tin vào số phận, tôi không tin vào ông trời, nhưng, những chuyện như thế vẫn cứ xảy ra, xảy ra và vẫn xảy ra. Đó là số phận của họ ư, là ông trời muốn trừng phạt họ ư? Vì cái gì nhỉ?... Dù sao cũng chỉ là những suy nghĩ vẩn vơ của một cái thằng SV chưa biết sợ, chưa hiểu được cuộc sống mà thôi. Có lẽ một ngày nào đó nó cũng sẽ biết phải chấp nhận mọi việc thôi. Tôi có thể làm được gì chứ, làm gì cho người khác khi mà bản thân còn chưa tự lo nổi nhỉ? Ngồi đây, chờ đợi và lắng nghe tin tức ư? Có tác dụng gì không nhỉ?
Tin giờ chót từ thông tấn xã SMS, xin được ghi nguyên văn: "con bao so 6 da bat dau.gio thoi cap 13 giat tren cap 13. hien gio bon tau dang het suc de chong choi. dien nuoc da mat. cam on long tot cua bon bay nhung chac da muon roi.day la tn cuoi cung cua tau.vinh biet."
Và sau đó 5 phút: "...bao cho bay tin mung mai nha tau da bay.bay o trong no co nhat duoc thi gui ra cho tau. a kem theo chu kinh vieng nua." =)) =)) =))
Vậy chúng tôi trân trọng thông báo có ai nhặt được cái mái nhà nào xâu xấu, bẩn bẩn, hôi hôi, bay lạc từ Đà Nẵng vào SG thì liên hệ với tôi gấp nha, còn gửi về kịp viếng bọn nó. Vô cùng cám ơn và xin hậu tạ.
Nhãn: general
Cái gì phải đến cuối cùng đã đến, sau ba trận khởi đầu tồi tệ với hai hòa một thua chi ghi được một bàn thắng, chiến thắng đã tới. Khắc khoải chờ mong và ám ảnh về 4 năm không hề thắng trên "Nhà hát của những giấc mơ" và rồi thất vọng ngập tràn khi mà GSilva bỏ lỡ quả penalty một cách xui xẻo. Khi mà Arsenal đang có một khởi đầu tồi tệ nhất còn MU lại đang toàn thắng, "Pháo thủ" đã chứng minh được một điều rằng không gì là không thể. Một đường chuyền tuyệt vời của Cesc Fabregas, một pha kết thúc nhuần nhuyễn của Adebayor (tiếc thay, lại rất hiếm gặp :(( ), MU đã là kẻ chiến bại. Yeah \:D/ . Mọi chuyện giờ mới bắt đầu, chặng đường còn rất dài và giờ mới là lúc Arsenal tiến lên. Arsenal muôn năm! Pháo thủ muôn năm! Henry muôn năm! Hleb muôn năm! Fabregas muôn năm! Ljungberg muôn năm!... #:-s
Nguồn: Blue Eagle blog (hi vọng là bả cho phép mình chụp ảnh cái blog này)
Cảm nhận đầu tiên, cái ảnh con BE xấu kinh dị :D . Cảm nhận tiếp theo, trong khi Joe viết blog tiếng Việt thì Hồng viết blog bằng English :-o , thế giới đang ngày càng xích lại gần nhau hơn... Cảm nhận thứ n, emoticons, và đó mới chính là chủ đề của bài viết này.
Nếu bạn đã chat bằng Yahoo! Messenger thì chắc chắn là bạn đã biết emoticons là cái gì. Trường hợp còn lại, nếu bạn không biết Yahoo! Messenger là cái quái quỷ gì thì, xin lỗi, cho mình hỏi thăm sao Hỏa dạo này thế nào rồi vậy =:) =)) ? Nói ngắn gọn thì emoticons là những mặt cười dùng để biểu lộ cảm xúc người viết, còn muốn tìm hiểu thêm thì bạn có thể vào đây. Không biết theo ý mọi người thì thế nào, riêng mình thấy emoticons là cách tốt nhất và đơn giản nhất để thể hiện cảm xúc của mình, so clear, so cute :D . Tuy nhiên, trong khi blog tại 360.yahoo.com/ mặc nhiên hỗ trợ emoticons và WordPress cũng vậy thì Blogger lại hoàn toàn không hỗ trợ emoticons. WordPress có thể là một lựa chọn tốt cho việc blogging nhưng vào lúc này thì điều kiện (host + hỗ trợ PHP+MySQL) không cho phép mình lựa chọn nó. 360.yahoo.com thì lại không đủ linh hoạt như mình muốn, nó không cho phép mình chèn script, thay đổi bố cục, vv.... Chỉ còn cách là phải tự thêm emoticons vào Blogger vậy thôi, đó là lý do ra đời của script này: emoticons.js
Kết quả của script này được thể hiện ngay trong bài viết này, như các bạn có thể thấy ở trên. Các emoticon text như : D , : ) , : (( (mình phải thêm vào dấu cách để nó không bị chuyển thành image),... sẽ được script trên tự động chuyển thành :D , :) , :(( lúc trang được load xong. Chú ý là script này có sử dụng Prototype.js framework, vì thế, để thêm script emoticons.js này vào blog của bạn ở Blogger, bạn cần thêm đoạn code sau vào trong thẻ <head> của Template:
Toàn bộ các emoticons mà script này hỗ trợ là tương tự như Yahoo! Messenger, ngoại trừ các emoticons có sử dụng dấu < và > (vì lí do xung đột với các thẻ xHTML). Danh sách cụ thể các emoticons: O:-) X-( ;;) :D =(( B-) :(( :x ;)) :)) =; :-* :( :) ;) :-P :-/ :-o :-s #:-s :| /:) =)) :-b i-) 8-| l-) :-$ [-( :o) 8-} (:| =P~ :-? #-o :-ss @-) :^o :-w :@) 3:-O :(|) @};- %%- (~~) ~o) *-:) 8-X =:) :-l $-) :-" b-( [-x \:d/ ^:)^ :-j (*)
Vậy là xong, bây giờ bạn đã có thể thoải mái sử dụng emoticons trong blog của mình rồi. Happy blogging.
Nhãn: blogger, javascript
Học kì 3 này mình bắt đầu học môn Toán Tin học (hay còn gọi là Toán rời rạc, Discrete Math), và theo mình thì nó là một môn khá thú vị, thú vị không phải vì bản thân nó mà vì người dạy nó, thầy Nguyễn Văn Minh Mẫn. Thầy là người đầu tiên ở cái trường BK này gây ra cho mình cảm giác hào hứng với môn học được dạy, hoàn toàn khác hẳn với những môn khác (đặc biệt là môn Kỹ Thuật Lập Trình, quá thất vọng vì người ta có thể dạy nó dở như vậy :( ). Ba tiết Toán Tin ngày hôm qua, mình được học về các phép chứng minh, trong đó có phương pháp chứng minh tiên đề.
Nói ngắn gọn thì quá trình chứng minh trong phương pháp tiên đề là quá trình đi từ một cái đúng, bằng phương pháp suy luận đúng đi đến cái cần chứng minh. Ví dụ: để chứng minh A đúng, ta đi từ một điều đã biết là đúng B, bằng phương pháp suy luận đúng để đi đến A (nghĩa là làm sao để B => A là đúng), từ đó kết luận A cũng đúng luôn. Tuy nhiên, làm sao chúng ta có thể khẳng định B đúng? Phải chứng minh, tất nhiên. Chúng ta lại bắt đầu đi từ một cái C đã biết là đúng để chứng minh B đúng tương tự như trên (chỉ ra C => B là đúng). Rồi, vậy làm sao biết C có thật sự đúng hay không? Tất nhiên rồi, phải chứng minh. Lại bắt đầu từ một cái đúng đã biết D nào đó. Cứ tiếp tục như vậy i-) . Theo bạn, quá trình này còn tiếp tục tới bao giờ, vô hạn ư, không thể được bởi vì bảng chữ cái cũng có giới hạn thôi :D . Cái quá trình trên chắc chắn phải có giới hạn, có điểm dừng, có nghĩa là có một mệnh đề Z nào đó mà chân trị đúng của nó là hiển nhiên, là không cần chứng minh (hay không thể chứng minh?). Mệnh đề Z được gọi là tiên đề, là cái để chứng minh những mệnh đề còn lại, Z => X => ... => C => B => A => ...
Theo bạn, có bao nhiêu đường thẳng qua 2 điểm bất kỳ không trùng nhau? Một, tất nhiên rồi. Bạn có thể trả lời như vậy một cách tức thì, không một chút đắn đo. Vâng, bạn hoàn toàn đúng, điều đó là một trong 5 tiên đề của Euclide, là cơ sở của hình học mà chúng ta học từ năm lớp 1 đến nay, hình học Euclide (nếu thích, bạn có thể xem thêm về hình học Euclide ở Bài giảng về xây dựng hình học sơ cấp bằng phương pháp tiên đề). Hoàn toàn dễ thấy, hoàn toàn hiển nhiên, không cần phải chứng minh làm gì cái điều đơn giản đó, có một và chỉ một đường thẳng qua 2 điểm. Có thật như vậy không :-w . <strong>Tiên đề là không thể chứng minh</strong>, bởi vậy, không phải là tuyệt đối đúng, chúng ta chỉ mặc nhiên coi nó đúng thôi. Trong khoảng 1800 năm, người ta chắc chắn về việc có một và chỉ một đường thẳng qua 2 điểm cho tới khi Bernhard Riemann bảo rằng có nhiều hơn một đường như vậy và từ đó xây dựng nên một hình học mới hoàn toàn đúng theo các tiên đề của ông. Và bởi vì không thể chứng minh được điều đó nên khi Lobachevsky lại nói rằng qua 2 điểm chẳng có đường thẳng nào cả thì ông cũng không hề sai :-b , và thế là một hình học mới nữa ra đời. Cả hai hệ thống hình học mới đều hoàn toàn đúng và đã đưa lại những ứng dụng thực tiễn vô cùng quan trọng, có đóng góp không nhỏ vào kho tàng tri thức của nhân loại. Như vậy là trong suốt 1800 năm, chúng ta đã tự giới hạn sự hiểu biết của mình chỉ vì nghĩ rằng một điều gì đó là chân lý, là không thể thay đổi mặc dù không thể chứng minh điều đó. Việc này cũng tương tự như khả năng của chúng ta là vô hạn, chỉ có chúng ta tự giới hạn mình thôi.
Hôm nay, lúc đọc bài viết về Multiple Inheritance in Java, mình lại càng nhận thức rõ những điều trên. Bất kì ai đã học Java đều có thể khẳng định rằng đa thừa kế là không thể trong Java, chắc chắn là như vậy. Thêm một điều nữa, đối với mình, từ trước giớ thừa kế có nghĩa là phải đi từ trừu tượng đến cụ thể, class cha phải là tổng quát hơn class con, class con phải chuyên biệt, cụ thể và mở rộng các chức năng của class cha (và mình thấy bất kì cuốn sách dạy lập trình hướng đối tượng nào cũng làm vậy trong các ví dụ về thừa kế). Nhưng giờ đây, những suy nghĩ, những điều hiển nhiên trên đều bị dẹp bỏ sau khi mình đọc bài viết trên :(( .Không biết là sau việc này thì liệu có cái gì mới ra đời không nửa :D .
Object Oriented Programing (OOP) với Javascript và Prototype.js framework
0 bình luận Được gửi bởi lebinh lúc 3:18 CHLập trình hướng đối tượng trong javascript với Prototype.js framework
Javascript là một ngôn ngữ hướng đối tượng nhưng không thật hoàn chỉnh, nó không có các từ khóa như class hay private,..., không có overloading, thừa kế,... Javascript (mà đúng ra là ECMAScript) vẫn đang trong quá trình phát triển, phiên bản mới nhất của nó là Javascript 1.7, những điểm yếu đó có thể sẽ được khắc phục ở những phiên bản sau này. Nhưng mà, tại sao bạn lại phải chờ khi mà chỉ cần Prototype.js framework, bạn vẫn có thể dùng OOP với javascript một cách thoải mái như dưới đây.
Bạn có thể tải về Prototype version 1.5.0_rc1 ở đây: download Prototype
Tạo một lớp (class) mới
Đối tượng Class là một đối tượng được định nghĩa mới trong Prototype.js, nó chỉ có một phương thức
create();
và phương thức này được dùng để tạo ra một class mới (mà thật ra là một function nhưng mang ý nghĩa hoàn toàn như một class) là Point. Sau đó, bạn thêm vào các thuộc tính và phương thức cho class bằng cách thêm chúng vào đối tượng prototype của đối tượng Point (chú ý Point thật ra là một function nên cũng là một đối tượng). Đồng thời cũng lưu ý rằng phương thức initialize()
là bắt buộc phải có và nó đóng vai trò là phương thức khởi tạo (constructor) của class mới tạo.Ví dụ trên tạo ra một class mới có tên là Point, nó có constructor nhận 2 giá trị là x, y; có một phương thức là getPos() trả về một chuỗi biểu thị tọa độ của điểm; và có 2 thuộc tính __x__, __y__ chứa tọa độ x, y của điểm cần biểu diễn (hai dấu gạch dưới là cách viết được quy ước để các lập trình viên khác biết 2 biến đó là private).
Cách sử dụng class này là hoàn toàn bình thường
Thừa kế (Inheritance)
extend(des,src)
cũng là một phương thức mới được thêm vào đối tượng Object trong Prototype.js, nó chỉ đơn thuần nhận 2 đối tượng des (destination), src (source) và sao chép tất cả các phương thức + thuộc tính từ src vào des. Trong trường hợp này, phương thức này được sử dụng để tạo ra sự thừa kế giữa class ColorPoint với class Point như trên. Để thuận tiện và tạo sự tương đồng với các ngôn ngữ khác, bạn nên theo đúng như thứ tự trên, tạo class, xác định sự thừa kế và cuối cùng là thêm vào các thuộc tính và phương thức cần thiết khác. Chú ý là lúc này bạn không được dùng ColorPoint.prototype = {...};
như trên mà phải dùng Object.extend(ColorPoint.prototype,{...});
. Tuy nhiên ở đây vẫn còn một số vấn đề mà mình vẫn chưa giải quyết được: phải viết lại toàn bộ constructor, không dùng được super
; aColorPoint instanceof Point
sẽ trả về false. À, còn một điều mà bạn có thể đã nhận ra là, với cách thừa kế như trên, Javascript có hỗ trợ đa thừa kế chứ không như Java (không cho phép đa thừa kế); một class con trong javascript có thể thừa kế nhiều class cha tùy thích.Ví dụ trên tạo ra một class mới là ColorPoint thừa kế class Point, có constructor nhận các giá trị là tọa độ x, y và màu; có thêm một phương thức so với class Point là
getColor()
và thuộc tính private __color__
Sử dụng class ColorPoint:
Phương thức và thuộc tính tĩnh (Static method and property)
Phương thức tĩnh là phương thức được gọi trực tiếp thông qua tên lớp, trong Javascript, việc tạo một phương thức tĩnh là vô cùng đơn giản:Nếu bạn muốn tạo một lớp chỉ chứa toàn các phương thức hay thuộc tính tĩnh tương tự như lớp java.lang.Math trong Java thì lại càng đơn giản hơn, không cần phải dùng phương thức
Class.create();
nữa. Mọi việc chỉ đơn giản là tạo ra một đối tượng và gán đủ thứ lên nó:Nếu bạn không muốn tạo một class mới, hãy thêm các phương thức của bạn vào class Math sẵn có, chỉ cần dùng phương thức
Object.extend();
đã nói ở trên:
StringBuilder class
Bạn đã học Java? Bạn đã biết lý do tại sao cần phải có class StringBuilder (trước đây là StringBuffer)? Cũng như trong Java, đối tượng thuộc lớp String trong Javascript là bất biến, một khi đã được tạo ra thì ta không thể thay đổi giá trị của nó nữa. Câu lệnh
var aStr = "abc"+aVar+"edf";
với aVar = 123
khi thực thi sẽ tạo ra một đối tượng String chứa chuỗi "abc123" trước khi tạo ra một đối tượng khác (chiếm một vùng bộ nhớ khác) chứa chuỗi "abc123edf" rồi mới gán đối tượng sau vào biến aStr. Nếu chương trình của chúng ta có nhiều lệnh kiểu như vậy thì sẽ gây ra sự hao phí tài nguyên không cần thiết, ảnh hưởng hiệu quả chương trình. Biện pháp khắc phục cũng tương tự như trong Java, hãy sử dụng mảng. Mảng là một đối tượng đặc biệt, kích thước của nó thay đổi được, và sẽ được tự động cấp thêm bộ nhớ khi cần thiết. Class StringBuilder trong Java chứa chuỗi nhận được trong 1 mảng các ký tự (char), ta có thể thêm một số, một chuỗi,... vào đối tượng thuộc class StringBuilder bằng cách dùng phương thức append()
; để sử dụng chuỗi ta dùng phương thức toString()
. Class StringBuilder cũng chúng ta cũng tương tự như vậy, chứa dữ liệu trong một mảng và có 2 phương thức chính là append()
và toString()
.November rain - Guns 'n Roses
Bài hát dành tặng cho một người bạn
When I look into your eyes
I can see a love restrained
But darlin' when I hold you
Don't you know I feel the same
'Cause nothin' lasts forever
And we both know hearts can change
And it's hard to hold a candle
In the cold November rain
We've been through this such a long long time
Just tryin' to kill the pain
But lovers always come and lovers always go
An no one's really sure who's lettin' go today
Walking away
If we could take the time
to lay it on the line
I could rest my head
Just knowin' that you were mine
All mine
So if you want to love me
then darlin' don't refrain
Or I'll just end up walkin'
In the cold November rain
Do you need some time...on your own
Do you need some time...all alone
Everybody needs some time...
on their own
Don't you know you need some time...all alone
I know it's hard to keep an open heart
When even friends seem out to harm you
But if you could heal a broken heart
Wouldn't time be out to charm you
Sometimes I need some time...on my
own
Sometimes I need some time...all alone
Everybody needs some time...
on their own
Don't you know you need some time...all alone
And when your fears subside
And shadows still remain
I know that you can love me
When there's no one left to blame
So never mind the darkness
We still can find a way
'Cause nothin' lasts forever
Even cold November rain
Don't ya think that you need somebody
Don't ya think that you need someone
Everybody needs somebody
You're not the only one
You're not the only one
Đừng tuyệt vọng hỡi bạn của tôi, đừng phó mặc cuộc đời mình cho số phận. "'Cause nothin' lasts forever. Even cold November rain". Bởi vì không có gì tồn tại mãi mãi, kể cả cơn mưa tháng 11 lạnh giá. Ngay cả trong thời điểm khó khăn đen tối nhất của cuộc đời đi chăng nữa thì Đạt ơi, đừng bỏ cuộc. Mày không thể gục ngã vì chuyện đó được. Khó khăn thật đấy, rắc rối và thật nan giải nhưng mọi chuyện đều có cách giải quyết của nó, tất cả tùy thuộc ở mày. Ngày mai trời sẽ lại sáng, chỉ cần mày dũng cảm đương đầu với chính nó, hãy đừng lẩn trốn và cố quên đi hiện thực như vậy nữa. Cố lên đi Đạt.
Ngày Quốc khánh, buồn thay lại là một ngày rảnh rỗi, buồn chán sau một loạt những ngày tương đối vất vả, lắm việc để làm. Tối nay mới online lần đầu tiên từ lúc vào lại SG, mục đích chính cũng chỉ là để xem giá mấy cái điện thoại cho anh thôi, loanh quanh một hồi lại vào đây. Mấy ngày vừa rồi đúng là lắm chuyện, Nhung cũng xui thật, vừa mất tiền, vừa hư xe nhà mới chưa ở được, phải chạy lung tung 2 ngày rồi cái TV nó vất vả cầm vào cũng bị hư luôn. Đành an ủi nó là xui luôn một lần rồi sau ni may mắn, nó xui thì em nó sẽ may mắn, bù trừ mà. Mình cũng chẳng hơn gì, cả một đống hóa đơn, điện thoại cố định thì bị cắt, internet cũng bị cắt vì chưa nộp tiền, chuyện nhà cửa của cậu cũng rắc rối. Chán. Chắc phải như bức ảnh này quá.
"Will code HTML for food", có ai cần không vậy?? Khồng biết bao giờ mới có thể kiếm được nhiều thật là nhiều tiền từ cái nghề CNTT mình đang học nhỉ, hehe? Trước giờ hình như mình cũng chỉ 2 lần được trả công cho cái việc này, một của Huy và một của Echip, ít thật.
Đã gần như là một thông lệ, hôm nay mình và Dương lại lên nhà Vĩnh Hà, nhanh quá, cũng đã gần 3 năm rồi. Bao giờ cũng vậy, hôm trước là sinh nhật mình thì hôm sau là Vĩnh Hà, cả 2 đứa sinh cùng một nơi và chỉ cách nhau mấy tiếng chứ mấy, vậy mà giờ thì... Đối với mình, Hà có lẽ là người bạn đầu tiên thời thơ ấu và cũng là người bạn đầu tiên ra đi...
"Chúc mừng sinh nhật, Vĩnh Hà"
Vậy là Thảo đã đi học lại rồi, cái trường Dược quái quỷ đó làm gì mà bắt học sinh đi học sớm thế không biết. Mình mới về nhà chưa được một tháng chứ mấy, vậy mà giờ thì đã phải đi tiễn Thảo rồi, bực quá. Thảo là một đứa có khá nhiều điểm giống mình, có lẽ là vì vậy mà 2 đứa nói chuyện rất hợp chăng, nhưng giờ thì phải hơn 5 tháng nữa mình mới có thể gặp lại nó, lâu quá. Tối hôm trước khi Thảo đi, tự nhiên mấy đứa nổi hứng lên thăm trường cũ cho vui. Nhanh quá, mới đó mà đã một năm, trường vẫn như xưa, vẫn đẹp, không có gì thay đổi. Người thì lại khác, đã có rất nhiều chuyện xảy ra, mình và mọi người đều đã có những thay đổi. Dù sao, quan trọng nhất là mình vẫn còn những người bạn bên cạnh.
Một số bức ảnh chụp được hôm đó:Hôm nay online thì đọc được bài viết này, Làm lập trình viên hay không làm lập trình viên. Nếu bạn đang học về IT hay mong muốn trở thành lập trình viên, có thể bạn sẽ thích đọc bài viết đó, việc đó sẽ rất có ích. Nói chung thì bài viết cũng khá thú vị đối với một đứa đang mơ mộng trở thành một developer như mình, và có lẽ là cũng rất thụ vị với nhiều người khác nữa (bằng chứng là thời điểm này đã có tới hơn 70 comments trên blog). Sau khi đọc xong bài viết, tự nhiên muốn thử làm một bài kiểm tra xem nghề lập trình viên có hợp với bản thân mình không.
Đây là lần đầu tiên mình nhìn lại con đường đã chọn, chỉ mới bước đi được một quãng quá ngắn nên không thể nói đựoc mình đã đúng hay sai, không thể biết liệu con đường trước mặt sẽ dẫn tới một đại lộ thênh thang rộng mở hay chỉ là một con đường cụt tối tăm. Cách đây hơn một năm, khi câu hỏi trường nào, khoa gì được đưa ra, mình đã không một chút ngần ngại lựa chọn, một và chỉ một hồ sơ. Khoa CNTT, ĐHBK HCM, đó là nơi mình sẽ học, chắc chắn là như vậy. Không cần quan tâm điểm chuẩn năm ngoái thế nào, tỉ lệ chọi cao không hay thậm chí xa xôi hơn là liệu sinh viên khoa đó ra có kiếm được việc làm hay không. Chỉ biết, mình không thể rớt được, mình phải học ở đó. Tuy nhiên, thực sự thì mình quyết tâm như vậy vì cái gì, mình cũng chẳng rõ nữa, trước đó mình chẳng hề biết chút gì về ngôi trường này, về khoa CNTT này cả, chưa từng hình dung việc học ở đây sẽ ra sao và mình có thích hợp với nó không. Suy nghĩ lúc đó thật đơn giản biết bao, muốn lập trình thì phải học CNTT, muốn học CNTT thì phải học ở Bách Khoa và nếu học ở TP HCM thì mình sẽ có nhiều cơ hội hơn là Hà Nội, có khả năng tiếp xúc với công việc sớm hơn, nhiều hơn. Giờ đây, sau khi đọc bài viết trên, câu hỏi đặt ra là: Cái nghề lập trình viên nghe có vẻ lắm gian nan này có hợp với mình không? Chỉ có một cách duy nhất để trả lời câu hỏi này là xem xét tại sao, những yếu tố nào khiến mình lại muốn làm lập trình viên và liệu thực tế có đúng như vậy hay không.
Tại sao tôi muốn làm lập trình viên?
Câu hỏi cơ bản nhất nhưng không dễ trả lời chút nào với mình. Lập trình viên có thu nhập cao chăng? Đây là thứ mình hay nghe nhất từ mọi người, rằng nghề này đang là nghề "hot" trong xã hội, rằng học ra trường là có việc làm ngay, lương tháng 5-6 triệu là quá bình thường. Chao ôi, quá đã :D! Dẫu cho là cứ như trong bài viết của anh Nam, "lương khởi điểm thì cao nhưng tăng không nhanh, có tăng thì cũng tăng không nhiều" thì cái mức lương khởi điểm đó khi đem so sánh với lương của ba mình, một cán bộ đã làm việc cần mẫn hơn 30 năm, vẫn lớn hơn gấp 3 lần. Và không biết sẽ là lớn hơn bao nhiêu lần khi đem so với rất, rất nhiều người khác trên đất nước Việt Nam nghèo đói này. Tuy nhiên, đó không phải là lý do. Hầu hết viễn cảnh về cái nghề mình đang theo đuổi là mình được nghe từ sau khi bước vào giảng đường, từ chính những người cũng đang học cùng với mình. Nó chẳng hề có ý nghĩa gì với mình khi đặt bút viết vào hồ sơ thi ĐH mà chẳng hề biết rằng mình đã lựa chọn một nghề rất "giàu". Mà có lẽ, nếu muốn có nhiều tiền, muốn làm giàu thì mình đã thi vào một trường khác rồi, Kinh tế hay Ngân hàng chẳng hạn, hay thê thảm hơn (hay tốt hơn chăng) là tìm mọi cách kiếm một cô nào giàu có về làm vợ :D. Tiền rất quan trọng nhưng chẳng phải là tất cả, nhiều tiền không phải có thể làm được mọi việc (nhưng nếu là rất rất nhiều tiền thì mình không chắc lắm,hehe).Thử đặt ra lý do thứ hai, lập trình viên là một nghề nhẹ nhàng mà vẫn kiếm được tiền ư? Làm việc trong những công ty to đẹp, hằng ngày chỉ việc ngồi trong một căn phòng mát lạnh, trước một cái máy vi tính hiện đại, làm những công việc đơn giản mà cấp trên giao phó hay thậm chí là tự do viết một phần mềm theo ý tưởng của bản thân. Thật là một cảnh tượng đáng mơ ước, tiếc thay sự thật lại đầy trái ngược (sự thật ở đây chỉ là cái mà mình cảm nhận về hoàn cảnh làm việc của tác giả trong bài viết trên, vì mình chưa từng vào nơi làm việc của một công ty phần mềm nào cả nên đành dựa vào miêu tả của người khác). "Không khí âm u, hoàn toàn không có ánh sáng tự nhiên, ..." mình thực sự ngạc nhiên và khó hiểu khi đọc tới phần này, người ta bịt hết cửa sổ để làm gì nhỉ, ngăn ngừa đối thủ cạnh tranh đọc trộm code bằng ống nhòm ư? Ngoại trừ chi tiết này và việc "...người ta chỉ quan tâm đến công việc có được hoàn thành hay không, chứ không cần chú ý đến chất lượng..." (thật ư??), những điều còn lại cũng không khác quá nhiều so với tưởng tượng trước đây của mình về môi trường làm việc. Lập trình chẳng bao giờ là một công việc dễ dàng cả, đã từng có những ngày mình khom lưng code với một cái máy vi tính phải đặt giữa nền nhà vì không có bàn, code dưới cái nóng giữa trưa hầm hập của Sài gòn khi mà chỉ có một cái quạt nhỏ trợ giúp, đã từng có những đêm thức tới 2-3h sáng chỉ để căng mắt tìm và fix một cái bug chết tiệt nào đó. Thưởng ư, đâu có ai thưởng cho tôi khi mà đã bỏ ra mất mấy ngày chỉ để viết lại cái trò Minesweeper của bác Bill bằng Java, hay là khi tôi cũng mất chừng đó thời gian để viết một trang HTML nhỏ xíu để thử xem Ajax là cái gì. Có chăng chỉ là đôi chút cảm giác tự hào hay thích thú với những tác phẩm nhỏ nhoi của mình, là cảm giác vui vui khi thấy có người hăng hái chơi cái mini game "Đập chuột" bằng Flash của mình hay một người nào đó còn vô tư sửa nó lại thành của họ :D. Một công việc nhẹ nhàng là cái mà mình đã không hề mong chờ ở nghề lập trình viên.
Tới đây thì câu trả lời đã dần dần hiện rõ đối với mình, mình muốn làm lập trình viên chỉ vì mình thích được lập trình và mình muốn được lập trình. "Làm phần mềm thật là vui", đúng là như vậy. Chưa bao giờ mình cảm thấy vui vì làm xong một bài toán, bài văn, hay bất cứ môn nào khác, tất cả chỉ đơn giản là mình cần phải làm điều đó, và mình làm, thế thôi. Được xem là một học sinh giỏi toán, tham dự hết kì thi này tới kì thi khác rồi vào học lớp chuyên toán của trường chuyên tỉnh, thế nhưng, mình chưa bao giờ yêu thích môn toán cả, chưa bao giờ vui vẻ vì được học toán và làm toán cả. Có chăng thì cũng chỉ là đôi ba lần vui vẻ vì được thõa mãn cái sự hiếu thắng của bản thân khi thấy mình làm được một bài toán trước người khác mà thôi (có lẽ vì thế mà càng ngày mình càng kém toán chăng?). Mà thực ra mình vào lớp toán cũng chỉ vì sự hiếu thắng mà thôi, chỉ vì không muốn vào lớp tin khi được biết thực sự là những người không đậu vào toán thì sẽ được vào lớp tin (một sự vô lý đáng ghét, ngu ngốc). Ngoài lề một chút: tuy là vậy nhưng mình không hề hối hận vì đã học lớp toán mà ngược lại, vô cùng hạnh phúc với quyết định của mình. Quay lại vấn đề, lập trình thì lại khác rất nhiều. Kể từ lần đầu tiên khi chỉ đơn giản viết lại nguyên xi một đoạn chương trình Pascal (có tác dụng biến máy vi tính thành đàn pinano, nhấn vào một trong mấy phím nào đó thì nó phát ra âm thanh) thấy trong sách GK của anh vào máy cho tới bây giờ thì cái cảm giác khi nhìn chương trình của mình viết hoạt động vẫn không hề thay đổi. Đó là một chút gì đó hồi hộp háo hức khi nhấn Enter và rồi sau đó là thở phào nhẹ nhõm, là lâng lâng tự hào khi nhìn lại tác phẩm do mình làm ra, là cảm thấy mình thật giỏi khi bắt cái máy ngu ngốc này làm việc đúng như ý muốn, là vừa mừng rỡ vừa buồn cười khi phát hiện ra cái lỗi mà mình mất công tìm kiếm nãy giờ hóa ra lại vô cùng đơn giản,... Một thằng bạn đã từng cười bảo mình rằng mày viết ra mấy thứ vớ vẩn đó thì được cái gì, chẳng ai biết tới chúng mà cũng chẳng ai cần chúng, viết xong thì nó vẫn nằm trong máy mày cho tới ngày bị xóa đi mà thôi. Ừ, cũng có thể như vậy thật đấy, nhưng mà đó chẳng hề là điều mà tôi quan tâm, tôi lập trình chỉ đơn giản vì sở thích, vì đam mê mà thôi. Những chương trình cỏn con tôi viết ra hôm nay có thể sẽ chỉ có tác dụng đối với tôi, hay thậm chí là chẳng có tác dụng gì nhưng vẫn là một tác phẩm của tôi, vẫn là kết quả của niềm vui lập trình. Để rồi, biết đâu một ngày nào đó khi tôi đã thành một developer thực sự, những đoạn code ngây ngô đó sẽ được hiện diện trong một dự án tính bằng "đô" nào đó thì sao. Không ai cấm ta mơ cả và sẽ chẳng có gì tuyệt hơn được làm điều mà mình yêu thích.
Tới lúc này thì yếu tố thực tế nghề lập trình viên như thế nào đã trở nên chẳng mấy quan trọng nữa rồi. Có một câu nói của thầy chủ nhiệm cấp 3 mà mình thấy rất đúng trong hoàn cảnh này:"Đề thi của mình thì luôn luôn khó hơn đề của người khác". Nghề nào mà chẳng có những khó khăn của mình mà chỉ người trong cuộc mới thấy nhưng đồng thời nghề nào mà không có cái hay riêng, không có nghề nào là đơn giản cả (vì nếu có thì chắc chẳng còn ai làm nghề khác cả). Hãy tin tưởng vào con đường mình đã chọn vậy.
Những suy nghĩ vẩn vơ đã không còn sắp xếp và diễn đạt được nữa rồi và bài viết có lẽ cũng nên đi đến hồi kết.
Dù sao đi nữa thì Trái đất vẫn quay và mình thì vẫn lập trình.
Một vài điều thú vị về các giá trị NaN (Not a Number), null và undefined trong javascript:
Không thể dùng (aVariable == NaN) để kiểm tra aVariable có phải là NaN hay không, thay vào đó hãy dùng isNaN(aVariable);
Vừa mới làm một việc ngốc nghếch. Sau khi hoàn thành cái javascript/css tool SideNotes, đầy tự tin vào "hiểu biết" của mình về js/css nên có một thằng ngốc lại tiếp tục lao đầu tìm kiếm ý tưởng cho project khác. Sau một hồi suy nghĩ lung tung, một ý tưởng "độc đáo" nảy ra: "viết một class javascript tool cho phép điều khiển sự kiện DoubleClick". Nguồn gốc của cái ý tưởng này là một đoạn ActionScript mà mình làm hồi trước có cùng tác dụng nhưng là trong Flash. Kết quả là sau một lúc thử tới thử lui, đoạn script sau ra đời:
Để test nó, mình bắt đầu nghĩ tới việc tạo một cửa sổ window trong trang web bằng javascript+css, lại mất thêm một hồi thử tới thử lui, viết viết xóa xóa. Thế rồi, trong lúc loay hoay với việc xử lí DOM bằng js, không biết phải làm thế nào để xóa một element, đành phải đem cái javascript tutor mới download về nhưng để đấy chưa thèm đọc ra xem (trước giờ mình học javascript chủ yếu bằng cách đọc source code của người khác, chưa đọc quyển sách nào vì cũng chỉ mới học cho biết). Trời xui đất khiến thế nào, đùng một cái phát hiện nãy giờ mình làm một việc vô ích. DoubleClick được hỗ trợ sẵn, thay vì dùng onclick thì chỉ cần dùng ondblclick cho sự kiện double click là xong. Không cần một dòng code nào cả, không cần một ý tưởng tuyệt vời nào cả.
Ôi ngốc!
P3 933MHz, 128Mb Ram, không internet, bạn có thể làm gì với cái máy vi tính đó? Khốn khổ thay, nó lại chính là cái máy của mình ở nhà. Không còn ADSL, nếu muốn chạy Java 1.5 thì cần phải có một cốc cafe để mà nhâm nhi lúc ngồi chờ, Flash và Dreamweaver 8 là cả một gánh nặng, gần như mình không còn việc gì khác để làm với cái máy này ngoài nghe nhạc. May thay, vẫn còn Firefox và một công cụ tuyệt vời của M$ là Notepad :D, chừng đó cũng là tạm đủ cho javascript và css, cho cái SideNotes này ra đời.
Click here to view demo.
Click here to download code.
Để sử dụng nó, bạn chỉ cần thêm đoạn mã sau vào trong phần đầu trang web của bạn:
Chú ý là SideNotes có sử dụng Prototype javascript framework và Script.aculo.us javascript (cả 2 đã có sẵn khi bạn download code ở trên). Sau đó, nếu cần thêm ghi chú cho một đoạn text nào đó, bạn chỉ cần bao đoạn text đó trong cặp thẻ <span class="noteLink" id="note1"></span> với id có thể thay đổi tùy bạn nhưng class bắt buộc phải là noteLink, phần ghi chú bạn hãy đặt vào trong cặp thẻ <div class="sidenote" id="_note1"></div> với id chính là _(dấu gạch dưới) cộng với id của cặp thẻ span trên. Vậy là xong, phần việc còn lại là của SideNotes javascript.
Mặc định thì các ghi chú (sidenote) của bạn sẽ không hiện ra lúc trang web được load mà chỉ hiện ra lúc người đọc click vào phần liên kết tới sidenote (phần chữ nằm trong cặp thẻ span - từ giờ gọi là noteLink). Bạn có thể hiển thị toàn bộ các sidenote lúc trang web được load bằng cách thêm lệnh SideNotes.showAllSidenotes() vào sự kiện onload của trang web
Bạn cũng có thể định sẵn vị trí để các sidenote hiển thị, ví dụ bạn muốn các sidenote chỉ hiển thị tại vị trí nào đó, chỉ cần thêm cặp thẻ <div id="notesContainer"></div> tại vị trí mong muốn, sửa id của các cặp thẻ span chứa noteLink thành "note1_notesContainer". Xem ví dụ Sidenote Demo2.
Nếu bạn không xác định vị trí hiển thị cho các sidenote thi mặc định nó sẽ hiển thị như trong demo1, cùng cấp, nằm trước element chứa noteLink và sẽ có 2 kiểu hiển thị, trái phải lần lượt. Bạn có thể thay đổi file css để sửa kiểu hiển thị của sidenote theo ý thích, thêm số style định sẵn, vv... Cấu trúc của sidenote lúc hiển thị sẽ như sau:
Một cách hiển thị khác của các sidenote, chỉ cần thay đổi css.
Thay đổi hoàn toàn theme cũ, vốn là để mặc định của blog nhưng nhìn có vẻ hơi nhạt và tăm tối, lại hạn chế không gian của bài viết. Theme hiện tại mình thấy nhiều màu sắc hơn, đẹp hơn nhưng vẫn rõ ràng và cũng thoải mái hơn cho việc trình bày. Hi vọng mọi người cũng thấy nó đẹp.
Theme này có thể tải về từ đây. Vẫn chưa đủ trình độ + thời gian để thiết kế một giao diện riêng cho bản thân, đành lấy của người khác rồi thay đổi cho phù hợp vậy.
Mọi class trong Java đều kế thừa class Object, vì thế nó kế thừa luôn method equals của class Object. Khốn khổ thay, method equals mặc định của class Object chỉ đơn giản là toán tử ==, nó chỉ đơn thuần so sánh liệu 2 object đó có cùng tham chiếu tới một đối tượng không mà thôi chứ không phái là so sánh giá trị của 2 object đó.
Ví dụ bây giờ mình có một class mô tả một điểm trong mặt phẳng như sau
Đoạn code sau sẽ luôn trả về false
Bởi vì p1 và p2 tham chiếu tới 2 đối tượng khác nhau trong bộ nhớ nên kết quả của p1.equals(p2) luôn luôn là false cho dù ta thấy chúng có cùng miêu tả điểm (1,1). Đó không phải là điều mà chúng ta mong muốn, phương thức equals phải trả về true trong trường hợp này. Muốn thế, ta phải override phương thức equals, bắt nó tuân theo ý muốn của ta. Bạn có thể thấy là viết phương thức equals thực hiện đúng yêu cầu này thật đơn giản, hai điểm giống nhau khi có cùng tọa độ x và tọa độ y.
Tuy nhiên, cuộc đời không phải lúc nào cũng đơn giản như vậy :D. Thử tưởng tượng một ngày xấu trời nào đó p2 không phái là tham chiếu tới đối tượng thuộc lớp Point hay p2 là null thì sẽ ra sao nhỉ? Tất nhiên rồi, error chứ sao, Java sẽ ném cho bạn một đống exception ngay. Java Language Specification đòi hỏi phương thức equals mà bạn viết phải thõa mãn những yêu cầu sau:
- Nếu p không phải là tham chiếu null thì
p.equals(p)
phải trả về true. - Có tính đối xứng: với p1, p2 bất kỳ không phải null,
p1.equals(p2)
trả về true khi và chỉ khip2.equals(p1)
trả về true. - Có tính bắc cầu: với p1, p2, p3 bất kỳ không phải null,nếu
p1.equals(p2)
vàp2.equals(p3)
đều trả về true thìp1.equals(p3)
bắt buộc cũng phải trả về true. - Cố định, không thay đổi: nếu đối tượng mà p1, p2 tham chiếu tới không bị thay đổi thì việc gọi lặp lại lệnh
p1.equals(p2)
trả về cùng một giá trị. - Với p bất kỳ khác null,
p.equals(null)
phải trả về false
Lúc này thì phương thức equals có lẽ sẽ được bạn sửa lại thành:
Chú ý là ở đây bạn không cần phải check xem other có phải là null không bởi vì nếu other là null thì biểu thức
other instanceof Point
sẽ trả về false luôn cho bạn rồi. Phương thức equals trong class Integer của Java và nhiều class khác cũng được viết tương tự vậy:
Nhưng, một lần nữa, cuộc đời là không đơn giản chút nào và Java cũng vậy :D
Giả sử bây giờ bạn có một lớp mới là ColorPoint kế thừa lớp Point và bạn cũng tạo cho nó một constructor và một phương thức equals
Bây giờ bạn nghĩ đoạn code sau sẽ cho ra kết quả như thế nào
Theo yêu cầu về tính đối xứng,
p.equals(cp)
và cp.equals(p)
phải trả về cùng một giá trị. Tuy nhiên, ở đây, p.equals(cp)
sẽ trả về true còn cp.equals(p)
sẽ trả về false. Nguyên nhân là nằm ở toán tử instanceof, ColorPoint là class con của class Point nên cp instanceof Point
là true còn p instanceof ColorPoint
là false. Phương thức equals của chúng ta đã không đạt yêu cầu đề ra. Tới đây, bạn có thể thắc mắc là vậy phương thức equals trong class Integer của Java cũng không đạt hay sao, chả lẽ Sun kém vậy hay sao :D? Không phải như vậy. Có một sự khác nhau rất lớn giữa class Point của chúng ta và class Integer, class Integer là final, không thể tạo một class khác extends class Integer được nên lỗi trên sẽ không bao giờ xảy ra và phương thức equals luôn luôn hoạt động tốt.
Cách tốt nhất cho phương thức equals của chúng ta là sử dụng phương thức getClass() thay cho sử dụng instanceof trong việc kiểm tra xem có đúng đối tượng thuộc đúng loại class mà ta định ép kiểu để so sánh hay không.
Và cho class ColorPoint là
Lúc này thì cả
p.equals(cp)
và cp.equals(p)
đều trả về false, một điểm có màu thì khác một điểm không có màu chứ nhỉ?
Vậy là một kì thi ĐH nữa lại bắt đầu. Mới 1 năm trước đây, cũng vào hôm nay, mình cũng chỉ là một trong hơn nửa triệu sĩ tử lao đầu vào cái cuộc thi được xem là quyết định cả cuộc đời này. Năm nay, mình chỉ là một kẻ ngoài cuộc, có thể tự do xem WorldCup mới thấy mình may mắn hơn bao người.
Sáng nay chở Trung đi thi mới thấy, cái kì thi quái quỷ nay làm khổ không biết bao nhiêu người chứ không chỉ mình. Học sinh đi thi mệt, giáo viên coi thi, chấm điểm mệt, phụ huynh cũng mệt,... chắc chỉ có mấy người làm dich vụ, cho thuê trọ là cám ơn nó thôi.
Cái áp lực phải vào ĐH quả là vô cùng lớn, người người muốn vào ĐH, nhà nhà muốn con mình vào ĐH. Việc vào ĐH được rất nhiều người xem như là yếu tố quyết định cuộc đời thành công hay thất bại (môphật, có cả mẹ của mình trong số đó), vì thế dễ hiểu là mọi người sẵn sàng dồn tất cả sức lực của mình để cho con vào ĐH. Các bậc phụ huynh sẵn sàng từ bỏ công việc, đi theo chăm sóc con cái, tất cả chỉ để con mình có thể vào ĐH. Rồi còn học thêm học bớt, luyện thi này nọ, vô số trung tâm luyện thi mọc lên như nấm sau mưa thì không biết có bao nhiêu chỉ là kẻ lừa đảo? Bao nhiêu tiền đã đổ ra cho giấc mộng ĐH?
Nhưng nói là vậy thôi chứ theo ý mình thì dù tốn kém cho XH rất nhiều nhưng không thể bỏ kì thi này được, chừng nào mà kì thi tốt nghiệp THPT vẫn chỉ là một bài tập viết mà thôi. Chỉ có thi ĐH thì mới phản ánh đúng được trình độ của học sinh mà thôi. Là một kẻ trong cuộc, mình có thể hiểu được cái gì gọi là thi tốt nghiệp. Một bài thi đôi khi không phải làm bởi một người mà là bởi cả phòng, phòng nào có học sinh giỏi thì y như rằng cả phòng sẽ làm bài tốt, giám thị nhiều khi chỉ là những con bù nhìn biết đi, để mặc, làm ngơ thậm chí là tiếp tay. "Căn bệnh thành tích" được xem là một nguyên nhân chính của điều đó, tuy nhiên theo mình thì chính "căn bệnh không dám nói" mới là nguyên nhân của sự việc. Việc đó đâu có hại gì cho mình đâu, đó là việc của họ, chuyện đó luc nào mà chả vậy, nói làm gì cho nó thêm phiền phức vào mình,... chính cái tư tưởng đó đã làm nên một nền GD ngày càng "cải lùi" của chúng ta. Chúng ta không dám nói, không muốn nói tới những chuyện đang xảy ra xung quanh ta chỉ trừ phi nó ảnh hưởng tới lợi ích của chúng ta, chúng ta đang quá ích kỷ và hèn nhát. Và cả một thế hệ người Việt trẻ mắc căn bệnh này (trong đó có cả tôi) đã làm cho Việt Nam vẫn chỉ là một đất nước "có nhiều tiềm năng" nhưng chẳng ai biết, chẳng phát huy được cái gì. Than ôi, liệu mình có nhận ra điều đó quá muộn không và liệu mình có thể thay đổi bản thân hay không?
12 năm ngồi trên ghế nhà trường, cái nền GD nhồi nhét này đã để lại cho mình được những gì? Trưa nay cầm cái đề Toán trên tay mà thấy ngạc nhiên sao năm ngoái mình lại có thể làm nó vèo vèo được nhỉ, không biết tối nay đọc cái đề Lý liệu mình có thể hiểu được bao nhiêu đây? Bao nhiêu thế hệ, bao nhiêu người như mình? Học chỉ để mà thi, học cốt chỉ để có kết quả tốt, thi xong là hết, quên sạch, không vấn vương chút gì. Có ai nhớ chút gì về những điều mình đã học năm lớp 10, 11 và trước đó không vậy? GDCD, Lịch sử, Địa lí, Văn học,... có ai nhớ mình đã học cái gì không vậy hả những người bạn của tôi?
Chỉ ngồi chờ thôi mà mình cũng đã mệt mỏi lắm rồi, không biết Trung ra sao nhỉ? Còn khoảng một tiếng nữa là xong môn Lý, vậy là xong 2 môn. Làm bài tốt nha Trung, những người bạn khác của tôi cũng vậy nhé.
Hôm qua có lẽ là lần cuối cùng trước khi về nhà mình về "thăm" Thủ Đức, sang năm chắc là cũng chẳng mấy khi về đó nữa rồi. Sang năm là mọi người chuyển lên hết rồi, cả Đạt, Hoàng Phương, Lam, Hằng, Vũ; mình có muốn về Thủ Đức cũng chẳng biết chơi với ai. Hôm qua về chỉ còn Lam, Hằng là ở dưới đó, mấy đứa kia đều về quê cả rồi, mình cũng sắp về nhà rồi. Ngồi tán phét cả buổi sáng với hai đứa nó xong rồi làm một giấc tới chiều luôn :D. Không hiểu sao mỗi khi về Thủ Đức lại thấy mình thoải mái lạ kì, luôn vui vẻ, cười nói được mới hay chứ. Buồn cười nhất là khi nghe Lam nói: "Mỗi lần hai đứa đói thì lại lại là lúc vui nhất, cả nhà luôn đầy tiếng cười, không có vật chất thì phải lấy tinh thần bù đắp chứ" :D. Uh, có lẽ là như vậy thật.
Thủ Đức, mà đúng ra chỉ là khu vực xung quanh trường Tự Nhiên, quanh nhà Hằng, nhà Hoàng Phương mà thôi đã gắn liền với bao kỉ niệm. Từ cái lúc ngơ ngác mới vào mà việc đi xe bus về đây là cách duy nhất cho tới bây giờ việc tự mình đi xe về là chuyện nhỏ. Từ cái đêm 6 đứa (mình, Đạt, Tín, Phương, Huy, Vĩnh) không ngủ lang thang trên đường, vừa đi vừa hát cho tới những đêm cả mấy thằng nằm chen chúc trên sàn phòng Hoàng Phương mà huyên thuyên đủ thứ chuyện. Từ khi Lam còn là một người xa lạ cho tới lúc này, khi mà Lam đã trở thành "một phần tất yếu" của Đạt. Từ cái ngày đầu tiên làm sinh viên, chạy lung tung làm thủ tục nhập học cho tới ngày hôm qua, cả 3 đứa chạy loanh quanh dưới mưa để chuyển đồ cho Lam. Năm tới, Lam chuyển lên thành phố học, Hằng cũng chuyển lên ở với Nhung luôn. Vậy là chẳng còn ai ở đây. Mình cũng không còn lý do gì để về đây cả.
Tạm biệt Thủ Đức...
Làm trong lúc chờ trận Hà Lan - Bồ Đào Nha:
source here
Một hiệu ứng khác làm tương đối lâu rồi (dựa trên 1 post trên VNFX):
source here
Cuối cùng thì mình cũng đã làm được.
Cách đây khoảng một tháng, khi đọc bài này của Tiên (nguoitapviet.info) mình đã rất ấn tượng với cái audio player trong bài, rất nhỏ gọn, đơn giản nhưng đẹp. Sau một hồi tìm hiểu thì biết được nó là một plugin của WordPress và chỉ của WordPress mà thôi (bạn có thể download plugin này tại đây). Mình thì lại không có cái host nào để cài WP cả mà vẫn muốn có một cái audio player bằng Flash trên blog của mình. Vậy là phải mất thêm một thời gian tìm hiểu và "phá phách" nữa, để rồi cuối cùng thì hôm nay mình cũng đã hoàn tất được nó.
Cách sử dụng vô cùng đơn giản, trước hết bạn chỉ cần save file này player.swf lại. Tiếp theo bạn chỉ cần thêm đoạn mã Javascript này vào trong phần đầu trang web của bạn (phần nằm giữa cặp thẻ Head ý)
Chú ý là mình có sử dụng Javascript framework Prototype nên trước hết bạn phải download file prototype.js về cái đã. Sau đó bạn thay đổi đường dẫn đến file prototype.js và player.swf trong đoạn mã trên cho phù hợp với đường dẫn trên host của bạn. Vậy là kết thúc công đoạn cài đặt, từ lúc này, mỗi khi bạn muốn thêm bài hát vào blog của mình chẳng hạn, chỉ cần đơn giản thêm dòng sau:
<div class="audio" song="Ten bai hat">Duong_dan_file_mp3</div>
Phiên bản đầu tiên của mình nên chức năng còn sơ sài nhưng mình nghĩ như vậy cũng đã là tương đối đầy đủ. "Kính mong" mọi người, không kể khen hay chê, người tốt (là người khen) hay người xấu (là người chê) góp ý giùm cái.
So after all these one night stands
You've ended up with heart in hand
A child alone
On your own
Retreating
Regretful for the things you're not
And all dreams you haven't got
Without a home
A heart of stone
Lies bleeding
And for all the roads you followed
And for all you did not find
And for all the things you had to leave behind
I am the way
I am the light
I am the dark inside the night
I hear your hopes
I feel your dreams
And in the dark
I hear your screams
Don't turn away
Just take my hand
And when you make your final stand
I'll be right there
I'll never leave
All I ask of you
Believe
Your childhood eyes were so intense
While bartering your innocence
For bits of string
Grown-up wings
You needed
But when you had to add them up
You found that they were not enough
To get you in
Pay for sins repeated
And for all the years you borrowed
And for all the tears you cried
And for all the fears you had to keep inside
I am the way
I am the light
I am the dark inside the night
I hear your hopes
I feel your dreams
And in the dark
I hear your screams
Don't turn away
Just take my hand
And when you make your final stand
I'll be right there
I'll never leave
And all I ask of you is
Believe