15 tháng 10 2006

Cãi nhau có tốt hay không?

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.

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 để quản lí tất cả các sinh viên. Vì số sinh viên có thể là đủ kiểu, có thể lúc này nhiều, lúc này ít,... nên sử dụng ArrayList trong trường hợp này là thích hợp hơn dùng Student[]. Cho tới lúc này, vẫn chưa có gì khó khăn cả B-). Tuy nhiên, việc hay làm nhất của loại chương trình như thế này là giải quyết những yêu cầu kiểu như tìm tất cả những sinh viên có tên là Bình trong toàn bộ sinh viên chẳng hạn. OK, việc này cũng chẳng có gì khó khăn, bạn chỉ cần viết thêm một phương thức, từa tựa thế này là xong:

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ỉ?

    08 tháng 10 2006

    Đêm trung thu

    Ảnh cả 4 người Bánh và lồng đèn 06102006(014) 06102006(026)

    Đê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ỉ?

    06 tháng 10 2006

    My Java programe: Word Reminder

    Thử chương trình này giùm tôi: Word Reminder

    WordReminder screenshot

    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.

    Waitting for Xangsane...

    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ạ.

    Viva Arsenal! Viva Adebayor!

    Arenal logo
    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

    Thêm Emoticons vào Blogger

    BEblogPost
    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.


     

    Copyright 2006| Blogger Templates by GeckoandFly modified and converted to Blogger Beta by Blogcrowds.
    No part of the content or the blog may be reproduced without prior written permission.