Article: Ruby verion 1.8.7 có gì mới? 493

ngocdaothanh.myopenid.com 149
Updated over 2 years ago

Ruby logo

Ngày 1 tháng 6 vừa qua Ruby ra phiên bản mới 1.8.7, gần như đồng thời với Rails 2.1. Đây là sự kiện đang được quan tâm và có lẽ sẽ được đề cập và bàn luận trong hội nghị Ruby Nhật Bản 2008 sắp tới. API có thêm nhiều tính năng tiện dụng. Commit history cho thấy ngoài Matsumoto, còn rất nhiều người tham gia viết Ruby, đa số là người Nhật.

Bài viết này dành để giới thiệu một số nét mới, hay trong Ruby 1.8.7 thông qua những ví dụ cụ thể.

Article: Duck typing 795

ngocdaothanh.myopenid.com 149
Updated over 2 years ago

Có một khẩu hiệu mà bất kỳ một lập trình viên tập việc nào cũng có đọc qua ít nhất một lần “Code to interfaces, not code to concrete implementations”, nghĩa là “Lập trình gọi đến giao diện, chứ không gọi đến các lớp cài đặt cụ thể”. Mục đích của việc làm này là để tách riêng chức năng (functionality) khỏi các cài đặt cụ thể (implementation). Điều này có nghĩa là các thành phần (component) và các lớp (layer) của một hệ thống phần mềm chỉ giao tiếp với nhau thông qua một hệ thống chức năng/dịch vụ được định nghĩa trước, còn việc cài đặt các chức năng/dịch vụ đó như thế nào thì phụ thuộc vào các lớp cài đặt cụ thể (concrete implementation). Tuy nhiên, các lớp cài đặt cụ thể này không được bộc lộ (expose) ra khỏi component và layer, nên khi cách cài đặt hoặc thuật toán cho chức năng thay đổi, các component và layer khác hoàn toàn không bị ảnh hưởng, hoặc ảnh hưởng rất ít. Điều này làm tăng tính sử dụng lại, dễ bảo trì và dễ phát triển của component và của cả hệ thống.

Trên đây là trích đoạn Những bài học từ một dự án phần mềm. Với tinh thần đó, chủ đề này xin bàn về duck typing (tạm dịch là “phương pháp xác định kiểu kiểu con vịt”) và ứng dụng của nó khi thiết kế phần mềm. Để hiểu, người đọc cần có kiến thức căn bản về lập trình hướng đối tượng.

phananhvu.myopenid.com 125
over 3 years ago

Nếu như trong java thì House và Car phải implements/extends interface/class paint_object.

Xin anh Ngọc viết tiếp phần ứng dụng Cool

Article: ondemandcaptcha 726

ngocdaothanh.myopenid.com 149
Updated over 2 years ago

Spam là thuật ngữ thường để chỉ việc dùng chương trình máy tính để tự động gửi hàng loạt message đến địa chỉ nào đó đã biết trước. Có nhiều loại spam, spam mail , spam diễn đàn, spam wiki, spam blog... Vừa rồi diễn đàn Java Việt Nam bị spam suốt mấy ngày, mặc dù tính năng chống spam có nhưng không được bật!

Để chống spam, vấn đề cốt lõi là phân biệt message gửi đến là do người hay máy gửi. Đó chính là ý tưởng của CAPTCHA.

Bài viết này xin giới thiệu cách sử dụng plugin ondemandcaptcha có mã nguồn mở dùng cho framework Rails để chống spam. Nó được dùng cho trang web này, muốn thử xin thử viết bài mới rồi click "Xong".

ngocdaothanh.myopenid.com 149
Updated over 2 years ago

CSRF và CAPTCHA là 2 thứ độc lập, ví dụ nếu bạn đang đọc dòng này, thì có nghĩa bạn đã bị logout khỏi Gmail vì bị CSRF. Bạn thấy đấy, chẳng liên quan gì đến CATPCHA{#emotions_dlg.tongue_out} Hơn thế, dùng CAPTCHA thì hệ quả là không cần chống CSRF nữa, chứ không phải ngược lại{#emotions_dlg.wink}

Article: Here document trong Ruby 661

akia.myopenid.com 6
Updated over 2 years ago

Trong Ruby, có kiểu định nghĩa chuỗi nhiều dòng rất hay, thường được gọi là “here document”.

akia.myopenid.com 6
over 2 years ago
planet = ‘Earth’
string = <<end_of_string>
Hello, #{planet}
END_OF_STRING

Chỗ này có gì nhầm lẫn không ạ. Tag mở end_of_string> và tag đóng END_OF_STRING không trùng nhau, chắc sẽ có error.

Ngoài ra em ý kiến nên bổ sung thêm phần:

Indenting Documents:

Finally, if you need to indent the ending tag, then add a hyphen to the start tag. Without the hyphen you will get an error message stating the ending tag cannot be found before the end of the program (EOF).

string = <<-END_OF_STRING
Notice the hyphen after the
<< characters above
END_OF_STRING

http://ruby.about.com/od/learnruby/p/here_document.htm

Article: Bắt đầu học Ruby và Rails như thế nào 2753

alide.myopenid.com 32
Updated over 2 years ago

Trang này dành cho các bạn mới làm quen với ngôn ngữ Ruby và framework Rails. Ở đây các bạn sẽ tìm thấy thông tin tham khảo để bắt đầu học Ruby và Rails, động lực chính làm cho Ruby trở nên nổi tiếng.

id.cntt.tv/[Anonymous] 9
over 3 years ago
Nếu nói IDE thì có lẽ là RadRails (bây h là 1 phần của Aptana) vì:
  • cross-platforms (Linux, OSX, Windows) chạy được hết
  • dựa trên Eclipse quen thuộc (nhất là với dân cày cuốc Java)
  • nhiều người chỉ muốn dùng 1 IDE quen thuộc để gõ các loại code thì Eclipse là lựa chọn hàng đầu.

Còn để code Rails thì các cao thủ trong (xem rails screencasts) chỉ cần 1 text editor và 1 console window là đủ.

Forum: Hỏi về Radio trong RoR 478

ndgiang84.myopenid.com 1
over 2 years ago

mình nghĩ nếu có nhiều giá trị của Admin rules thì tạo 1 table "admins" (id, name) đi.

Forum: Muốn tham gia làm project RoR 384

ngocdaothanh.myopenid.com 149
over 2 years ago

Cột bên phải có phần mục lục, trong đó có link "Rủ nhau làm project". Nếu bạn có ý tưởng làm project gì đó muốn rủ thêm người thì có thể trình bày trong đó.

Tôi là trưởng nhóm của project mã nguồn mở OpenKH (phần mềm CMS dùng để tạo trang web này). Bạn nào thích tham gia thì gửi mail cho tôi: ngocdaothanh@gmail.com.

Article: Sử dụng OpenID trong chương trình Rails 849

alide.myopenid.com 32
Updated over 2 years ago
OpenID là phần mềm mã nguồn mở của Brad Fitzpatrick, tác giả LiveJournal, là một hệ thống đăng nhập một lần không có tính tập trung. Đối với những trang web có sử dụng OpenID thì người sử dụng không cần phải nhớ các thông tin về username và password cho riêng trang đó nữa. Thay vào đó họ chỉ cần đăng ký trước tài khoản OpenID tại một trong những nhà cung cấp OpenID, hay thường gọi là i-broker. Do OpenID không mang tính tập trung nên bất kỳ trang web nào cũng có thể sử dụng được OpenID như là một cách đăng nhập cho người dùng.

OpenID hiện đang được ứng dụng rộng rãi trong các trang web lớn như AOL... Thêm vào đó, việc tích hợp hỗ trợ OpenID có mức ưu tiên cao trong bản Firefox 3. Microsoft cũng đang tiến hành phát triển OpenID 2.0 cho bản Windows Vista.

ngocdaothanh.myopenid.com 149
over 2 years ago

Trong thư viện Ruby OpenID phiên bản mới nhất (2.0.3), phần ví dụ về consumer (rails_openid_login_generator) không khớp với phần thư viện. Cần tham khảo phần ví dụ về server (rails_openid).

Bạn nào gặp vấn đề khi nâng cấp trên như nhóm viết OpenKH (là phần mêm dùng để tạo trang web này), có thể tham khảo giải pháp của chúng tôi.

Article: Hiển thị thông báo lỗi validation theo đúng ý mình 647

ngocdaothanh.myopenid.com 149
Updated over 2 years ago

Trong Rails, để hiển thị lỗi validation, chỉ cần dùng error_messages_for một phát là xong. Tuy thế không người dùng sành điệu nào lại muốn nhìn thấy các thông báo lỗi validation được hiển thị xấu xí và khó hiểu như ở dưới. Do đó lập trình viên chắc chắn không thể dùng nguyên xi error_messages_for mà phải override lại chút đỉnh.

Article: Huyền thoại Ruby on Rails đã sụp đổ nhờ PHP 1061

ngocdaothanh.myopenid.com 149
Updated over 2 years ago
 

Cách đây 3 năm Ruby on Rails bắt đầu tấn công vào cộng đồng Java những lời lẽ khoa nhờ trương về sức mạnh của nó. Dereck của CDbaby đã bị xao động và quyết định viết lại website của ông ta dựa trên Rails sau khi tuyển mộ một trong các nhân vật chủ chốt của cộng đồng Rails. Hai năm sau đó Dereck đã thấm đòn: Ruby và Rails không phải là viên đạn bạc cho các ứng dụng web.

lihavim.myopenid.com
Updated over 2 years ago

(Không biết các bạn trẻ ngày nay có biết truyện ngụ ngôn "Đẽo cày giữa đường" hay không nữa? Xem ra thế hệ @ ngày nay còn thua xa các cụ nông dân kể truyện ngụ ngôn, hút thuốc lào, uống chè xanh và đi cày bằng trâu ngày xưa).

Nếu từ "xem ra" chỉ là câu phỏng đoán vu vơ thì chả nói làm gì. Nhưng nếu đó là một câu nhận xét thì đó là một câu nhận xét đầy cảm tính, thiếu cơ sở.

Xem ra thua? Thua ở cái gì?
Nếu ý chú gì đây là thua về mặt "biết truyện ngụ ngôn, uống chè xanh và đi cày bằng trâu": Không hẳn. Chú lấy cơ sở đâu để nói lên điều đó? Xét về hoàn cảnh của chú: là một cái chức to to gì đó về lập trình hay thiết kế gì đó (cứ gọi tạm là "chuyên gia máy tính", (có thể) thành thạo và hiểu biết nhiều về mấy cái vấn đề lập trình. Và (có lẽ) đã đọc nhiều nơi, xem nhiều chỗ về nhiều vấn đề của "thế hệ @" cho nên đâm ra có chút thành kiến (hay chỉ là nói cho đau để cho nhớ {#emotions_dlg.sealed}) nên phán xét một câu như thế.

Chú là chuyên gia máy tính, do đó mấy phán xét của chú không có độ tin cậy cao. Hơn nữa, những phán xét đó chỉ dựa vào cảm tính, không có gì dẫn chứng cụ thể, lại được khái quát hoá quá "to" nên độ tin cậy càng giảm.
Những gì đúng với đa số không phải đúng với tất cả. Một số những người thuộc "thế hệ @" chú xem, gặp, biết được có nhiều cái xấu, nhiều cái "ngu" không có nghĩa là toàn bộ "thế hệ @" cũng như thế {#emotions_dlg.tongue_out}.
...
Hề hề {#emotions_dlg.sealed}.

Kết: Mặc dù chả biết gì về Ruby hay PHP cả, nhưng đọc bài chú cũng biết thêm được một số cái.
Tuy nhiên, thái độ có thành kiến hoặc chỉ là hơi bức xúc nên nói cho đau cho nhớ của chú có vẻ nó hơi "to" {#emotions_dlg.sealed}, thế nên đâm ra... {#emotions_dlg.tongue_out}.

Nhiều mặt cười quá, thế hệ @ thì phải {#emotions_dlg.cool}.