Article:
Mẹo vặt Erlang
961
alide.myopenid.com 32Updated 7 months ago |
Article:
Khủng hoảng đa lõi: Scala vs. Erlang
1947
nguoitapdich.myopenid.com 35Updated 9 months ago |
Gần đây có cuộc tranh luận nóng bỏng về Scala vs. Erlang qua các trang blog. Tương lai sẽ là đa lõi, nhưng câu hỏi là khủng hoảng đa lõi sẽ được giải quyết thế nào. Scala và Erlang là hai ngôn ngữ có khả năng trở thành lời giải nhất, nhưng chúng hơi khác nhau. Ưu và khuyết của chúng là gì?
![]()
Article:
Đa nhiệm hợp tác vs Đa nhiệm ưu tiên
815
ngocdaothanh.myopenid.com 148Updated 10 months ago |
Xu hướng lập trình hiện nay là viết chương trình đa nhiệm (multitasking) để tận dụng tối đa CPU đa lõi. Có 2 cấp độ đa nhiệm: cấp độ hệ điều hành và cấp độ chương trình. Có 2 kiểu đa nhiệm: đa nhiệm hợp tác (cooperative) và đa nhiệm ưu tiên (preemptive). Mục đích bài viết này là giải thích 4 (2x2) khái niệm trên.
Article:
Dùng Emacs để viết chương trình Erlang
1130
ngocdaothanh.myopenid.com 148Updated 10 months ago |
Article:
Đút XML cho Sphinx từ Erlang
546
ngocdaothanh.myopenid.com 148Updated 11 months ago |
Sphinx là search engine tốc độ cao có tiếng hiện nay. Một số trang web lớn của Việt Nam như RồngBay.com đã sử dụng thành công Sphinx. Trước đây Sphinx chỉ hỗ trợ SQL DB như MySQL và PostgreSQL, từ phiên bản 0.9.9-rc2 trở đi Sphinx hỗ trợ thêm XML, giúp Sphinx mở rộng thị trường ra rất nhiều. Tiếp theo bài viết về làm từ điển và search CJK, bài viết này trình bày cách đút XML từ chương trình Erlang cho Sphinx (ví dụ dữ liệu lấy từ Mnesia), thông qua đó trình bày cách tạo XML từ Erlang. Để hiểu, cần biết sơ sơ Erlang và đọc qua ít nhất một lần tài liệu của Sphinx.

Article:
Cách Dùng Tính Năng Backup và Replication của Mnesia
665
ngocdaothanh.myopenid.com 148Updated 11 months ago |
Backup dĩ nhiên là tính năng mọi cơ sở dữ liệu đều phải có. Để cải thiện độ tin cậy hoặc tăng tốc độ truy cập của cơ sở dữ liệu người ta thường cần dùng tính năng replication, ví dụ PostgreSQL hơn MySQL nhiều mặt, nhưng chỉ vì PostgreSQL chưa có sẵn tính năng replication mà nhiều người phải bấm bụng dùng MySQL.
Erlang có sẵn Mnesia là cơ sở dữ liệu phân tán, hỗ trợ sẵn multi-master thông qua chiêu thức Xác nhận hai pha. Bài viết này giới thiệu cách dùng tính năng này, để hiểu bạn cần đọc qua ít nhất một quyển sách Erlang.
Article:
Lập Trình Web Với Erlang
1463
ngocdaothanh.myopenid.com 148Updated 11 months ago |
Những ngôn ngữ đã phổ biến như Python, Ruby, PHP, và Java đều có nhiều web framework mạnh. Elang ra đời đã khoảng 20 năm, mặc dù hỗ trợ lập trình mạng tốt hơn hẳn Java nhưng khoản web còn đang chập chững. Hãy thử viết chương trình Hello World để xem xét một số thư viện và framework xem sao.
Có 3 thư viện đáng kể: Inets, Yaws, và MochiWeb. Những thư viện khác ví dụ như Iserve và Misultin tuy nhanh hơn nhưng đều bé tẹo nên thiếu nhiều tính năng, chỉ thích hợp cho nhiệm vụ đặc biệt nào đó mà thôi. Dựa trên 1 trong 3 thư viện đã vững chắc này, có thể xây dựng ngay chương trình web, hoặc xây dựng framework rồi mới xây dựng chương trình web dựa trên framework. Sau khi xem xét 3 thư viện trên ta xem xét tiếp các framework: Erlang Web, ErlyWeb, Nitrogen, BeepBeep, Ale.
saigon.myopenid.com 8about 1 year ago |
Article:
Selenium với Erlang, hay câu chuyện về XML và XSLT
907
ngocdaothanh.myopenid.com 148Updated 12 months ago |
Cucumber, RSpec, và Selenium là 3 thư viện test de facto đối với Ruby hiện nay. Chúng bổ sung cho nhau, nên khi viết chương trình web bằng Ruby, người ta thường dùng cả 3. Hầu hết ngôn ngữ đều có thư viện tương tự cả 3. Bài viết Cucumber với Erlang đã trình bày cách viết thư viện có tính năng tương tự như Cucumber và RSpec cho Erlang. Mặc dù trên GitHub có project erl_selenium, nhưng Selenium chưa chính thức hỗ trợ sẵn Erlang. Bài viết này giới thiệu cách dùng xmerl để biến đổi XML theo phong cách XSLT thông qua ví dụ về tự viết Erlang client driver cho Selium RC.
Article:
Siêu Lập Trình với AST trong Erlang
661
ngocdaothanh.myopenid.com 148Updated about 1 year ago |
Siêu lập trình (metaprogramming) là thuật ngữ để chỉ việc viết code này để sinh ra code nọ. Theo bài về Leex và Yecc, ngôn ngữ cấp cao thường theo qui trình: (1) mã nguồn, cấu trúc dữ liệu văn bản --> (2) tokens, cấu trúc dữ liệu mảng --> (3) cấu trúc dữ liệu cây thô, có thể chưa đúng cú pháp theo qui định của ngôn ngữ --> (4) AST, cấu trúc dữ liệu cây tuân theo đúng cú pháp của ngôn ngữ --> (5) CST, cấu trúc dữ liệu cây cuối cùng, có thể chạy trên máy ảo (ví dụ tập tin bytecode .class) hoặc máy thật (ví dụ tập tin .exe). Khi viết chương trình gì đó, thường ta viết code có dạng (1), rồi dùng chương trình biên dịch để tự động biến đổi thành dạng (5), chẳng cần quan tâm đến sự tồn tại của các dạng trung gian. Bài viết này giới thiệu chiêu thức viết code này ở dạng (1) để sinh ra code nọ ở dạng (4) trong Erlang. Dĩ nhiên ý tưởng hoàn toàn áp dụng được cho các ngôn ngữ cấp cao khác như Java và Ruby.
Article:
Sống Phân Tán, Chết Cũng Phân Tán
526
ngocdaothanh.myopenid.com 148Updated about 1 year ago |
Khi xây dựng hệ thống server phân tán chạy song song trên nhiều node, ta thường gặp bài toán có pattern sau:
- Có 3 node, mỗi node chạy một process của cùng loại server module.
- 3 process bắt buộc phải làm việc hợp tác với nhau thì hệ thống 3 node mới chạy đúng. Ta muốn nếu process nào đó chết thì 2 thằng còn lại phải tạm thời ngưng hoạt động, chờ khi thằng kia sống lại thì cả 3 mới hoạt động trở lại.
Giả sử hệ thống viết bằng Erlang, chúng ta hãy đề ra design để giải pattern trên.
32








about 1 year ago