Lập trình

Thực hành lập trình

Thêm đối số vào message bundle trong OpenSocial

1. Bài toán

- Khi làm việc với message bundle trong OpenSocial để dùng nhiều ngôn ngữ trong ứng dụng tùy thuộc vào ngôn ngữ người dùng (localization) đôi khi bạn cần phải thêm đối số động vào chuỗi hiển thị. Ví dụ có chuỗi chào như này: Hello {user} trong đó user sẽ được thay bằng username tương ứng của người dùng. Nhưng với OpenSocial api hiện tại thì không làm thế nào để thêm đối số vào được mà chỉ có thể lấy được message tương ứng theo key cung cấp.

- Do vậy đây là cách làm của tớ: viết một thêm 1 class eXo.social.Locale.getMsg(key) và class này cung cấp api cũng tương tự như với class Prefs để lấy lang, country, msg (class Prefs còn cung cấp nhiều api khác nữa): prefs.getMsg(key). Class eXo.social.Locale cung cấp thêm phương thứceXo.social.Locale.getMsg(key, [val1, val2,...]); để thêm đối số vào message bundle.

Gán nhiều hàm xử lý sự kiện vào một phần tử trong JavaScript

Chiều nay đang lơ tơ mơ vì vừa ngủ trưa xong (bình thường không ngủ trưa thì thôi chứ cứ ngủ trưa xong là lơ tơ mơ, chỉ muốn ngủ hết chiều cho sướng :d) thì có bạn hỏi trên group phpvietnam như thế này:

"Em có một input có thuộc tính onclick="doSomeFunction();" bây giờ muốn thêm
một hàm nữa ví dụ như onclick="doSomeFunction(); doSomeFunction2();". Công
việc này có làm bằng Javascript được không ah? Em cám ơn mọi người."

Nguồn: http://groups.google.com/group/phpvietnam/browse_thread/thread/c7a8688875a320c3

Trả lời bạn ý xong là hết cả buồn ngủ :P, tiện thể tối về viết lại kinh nghiệm cho cái blog đỡ tủi thân :P. Khi xử lý sự kiện trong JavaScript có 4 mô hình đăng kí sự kiện được phát triển qua thời gian. Tớ cũng nói thêm về cách sử dụng và xử lý ngữ cảnh (context) với từ khóa this trong các hàm xử lý. Trong hàm xử lý phải làm sao đạt được 2 mục đích: truyền tham số vào hàm xử lý phải là event object và từ khóa this trong hàm xử lý sự kiện đó phải là phần tử đã được đăng kí sự kiện.

Thiết kế bộ đếm trang (site-counter) đơn giản

Lại thêm một thứ đơn giản nữa :). Bộ đếm trang trước đây và cả bây giờ vẫn rất phổ biến. Có một số nhà cung cấp miễn phí bộ đếm cho bạn, chỉ việc đăng kí một tài khoản + nhúng đoạn code site-counter vào trang của bạn là xong :). Có bạn lại không thích như thế, muốn tự mình viết một cái site-counter riêng :). Bài viết này sẽ hướng dẫn + chia sẻ 1 bộ đếm trang đơn giản bằng PHP + MySQL. Vì bảng dữ liệu khá nhỏ nên có thể sử dụng SQLite làm cơ sở dữ liệu, nhưng hiện giờ cái site-counter này của tớ chỉ đang hỗ trợ MySQL.

Tạo giao diện tab đơn giản với css và jquery

Đang phải làm việc với layout + giao diện, được dịp xem lại một số web interface. Gói interface này là những interface được sử dụng nhiều như Tab Interface, Header Interface... Tiện đây, tớ giới thiệu làm một cái Tab Interface, có thể sử dụng lại được. Tab Interface này sử dụng HTML + CSS + JQuery. Xem demo tại đây: http://labs.hoatle.net/resource/design/tab-interface/

Đoạn code HTML cho cái Tab Interface:


<div id="tab-wrapper">
	<ul id="tab-menu">

Thiết kế một trang kiểm tra thuật ngữ đơn giản

Đây là 1 trang thuần Client: HTML + JavaScript + XML.
XML là file dữ liệu. Xương sống của chương trình đơn giản này chính là JavaScript.

Học dịch trong trường thế nên cuối kì tớ hay có kiểu kiểm tra thuật ngữ => Điều tất yếu là phải học các term. Đến hẹn lại lên, cứ cuối mỗi kỳ thường có mấy đứa học thi + tớ viết cái này để test thử + học nhanh hơn.

Một năm trước code thuần JavaScript, nghĩa là viết theo kiểu procedure, không OOP. Tớ vừa chỉnh lại 1 vài thứ, sau 1 năm xem lại vẫn hiểu code của chính minh :)).

Cách lấy link nhạc trên nhacso.net

Video Demo :). [Cập nhật sau]

Có rất nhiều trang nhạc tương tự không cho download và đó lại càng là mục tiêu để mọi người tìm cách down nhạc ở những trang này. Các file media ở NhacSo cũng không chất lượng. Ở đây tớ lấy môt trang điển hình, còn nhiều trang khác cũng hầu như có kỹ thuật tương tự, chủ yếu là phải biết phân tích cách ẩn đường dẫn tới file media hoặc xml. Hầu như bây giờ các trang dùng xml hoặc json để lấy dữ liệu qua XHR (XML Http Request hay còn gọi là Ajax).

Các bước tiến hành:

Bài tập tách chuỗi PHP

Bài toán: Cho một chuỗi như sau: http://210.245.126.171/Music/NhacTre/TinhYeu_LyMaiTrang/wma32/06_BienTham_TinhYeu_LyMaiTrang.wma (Đây là một link bài hát trên NhacSo.net. Nhìn vào tên file ta có thể biết nhiều thông tin về bài hát này. Có thể thấy đây là bài số 06 mang tên Biển Thắm trong album Tình Yêu của ca sĩ Lý Mai Trang. Bạn hãy trích thành một mảng $info như sau:


$info = array (
  'no' => '06',
  'name' => 'Bien Tham',
  'album' => 'Tinh Yeu',
Nội dung tin RSS