Article:
FSM với Akka
73
ngocdaothanh.myopenid.com 149Updated 16 days ago |
FSM (Finite State Machine) là design pattern được dùng nhiều khi viết game. Cốt lõi của FSM là:
State(S) x Event(E) -> Actions(A), State(S')
Có nghĩa khi ta đang ở trạng thái S mà có sự kiện E xảy ra, thì ta sẽ thực hiện hành động A rồi chuyển sang trạng thái S'.
Thư viện Akka của Scala từ sau phiên bản 0.10 (ra ngày 22/8/2010) sẽ có thêm tính năng FSM. Bài viết này giới thiệu cách sử dụng tính năng này. Để hiểu bạn cần có chút kinh nghiệm Scala và SBT.
![]()
Article:
Làm quen với Clojure
1247
ngocdaothanh.myopenid.com 149Updated 2 months ago |
Java Virtual Machine (JVM) là nền tảng hấp dẫn vì có nhiều thư viện nhất trong các loại nền tảng và tốc độ nhanh. Ngôn ngữ chỉ là tập hợp các qui luật logic, bất kì ngôn ngữ nào cũng chỉ cần dịch sang byte code theo đúng chuẩn JVM là chạy được trên nó, nên ngoài Java trên JVM hiện có cả trăm ngôn ngữ.
Xu hướng hiện nay là đa lõi, hiện có 2 ngôn ngữ nổi bật trên JVM hỗ trợ đa lõi là Scala và Clojure. Bài Khủng hoảng đa lõi: Scala vs. Erlang đã đề cập Scala, bài này giới thiệu Clojure bằng cách so sánh với Scala và Erlang, sau đó hướng dẫn cách thiết lập môi trường học.
Article:
Thay defstruct và defmulti/defmethod bằng defrecord và defprotocol
140
ngocdaothanh.myopenid.com 149Updated 2 months ago |
Clojure là ngôn ngữ thuần functional có hỗ trợ OOP. Về mặt khoa học máy tính, có nhiều cách để thực hiện đa hình. Ở phiên bản trước 1.2, đa hình trong Clojure được thực hiện thông qua giải pháp polymorphic dispatch thông qua defmulti/defmethod rất tổng quát. Từ phiên bản 1.2, Clojure thêm defprotocol giúp đơn giản hóa trường hợp đa hình theo kiểu type-based dispatch truyền thống (kiểu của các ngôn ngữ như C++ và Java). Hơn nữa để tăng tốc độ chạy, Clojure 1.2 khuyên nên dùng defrecord thay cho defstruct trong mọi trường hợp.
Dưới đây là đoạn mã ví dụ theo tinh thần của bài tập 4OOP. Theo phong cách của Clojure, số lượng kiểu được giữ ở mức tối thiểu (phong cách Clojure là thà thiết kế 100 hàm để thao tác trên 1 kiểu dữ liệu còn hơn 10 hàm trên 10 kiểu dữ liệu), nên ta chỉ tạo 2 kiểu là Cat và Dog, không tạo kiểu Zoo.
Article:
Cài JDK của Sun lên CentOS 5
232
ngocdaothanh.myopenid.com 149Updated 2 months ago |
Article:
Thiết lập môi trường phát triển Scala trên Ubuntu 10.4
376
cmpitg.myopenid.com 1Updated 3 months ago |
Article:
4OOP bằng Scala
1137
trangia61.myopenid.com 3Updated 5 months ago |
Ở cấp độ máy ảo, nằm giữa chương trình được dịch sang bytecode và hệ điều hành, có 2 loại đa nhiệm: local concurrency là đa nhiệm trên một máy và distributed concurrency (parallel) là đa nhiệm trên nhiều máy. Loại đầu nổi nhất là JVM, loại sau nổi nhất là Erlang. 2 tiêu chí quan trọng khi đánh giá công cụ giúp lập trình đa nhiệm là độ dễ sử dụng và tốc độ (càng tận dụng được CPU đa lõi tốc độ càng nhanh).
2 ngôn ngữ nổi bật nhất trên JVM để lập trình concurrency là Clojure và Scala. Clojure cú pháp cực đơn giản vì phái sinh từ Lisp, Scala cú pháp phức tạp hơn nhiều vì phái sinh từ cả Java, Ruby, và Erlang. Tuy Scala phức tạp hơn nhưng vì đa số lập trình viên đều bắt đầu sự nghiệp bằng ngôn ngữ họ C nào đó như Pascal, C, C++, C#, Java, PHP nên đối với đa số nó lại dễ học hơn. Hơn nữa sử dụng thư viện Java trong chương trình Scala tự nhiên hơn hẳn so với sử dụng trong chương trình Clojure, nhất là khi Clojure chưa hỗ trợ annotation, nên Scala có động lực học mạnh mẽ hơn Clojure.
Về mặt ngôn ngữ, Scala = Ruby + Java + Erlang. Về mặt tính năng, Scala = OOP + functional + event-driven. Theo truyền thống khi học ngôn ngữ hướng đối tượng, thử giải bài tập 4OOP bằng Scala xem sao. Theo truyền thống khi học ngôn ngữ hướng đối tượng, thử giải bài tập 4OOP bằng Scala xem sao.
![]()
ngocdaothanh.myopenid.com 149Updated 9 months ago |
Article:
Ba cách chạy chương trình Scala
233
trangia61.myopenid.com 3Updated 5 months ago |
Có 3 cách chạy để ra kết quả của 1 chương trình Scala. Đó là:
- Chạy trong chế độ interactive
- Chạy trực tiếp bằng lệnh scala (chế độ thông dịch)
- Compile thành file .class rồi chạy như cách chạy của Java
Article:
Thứ tự biểu thức logic
1586
phananhvu.myopenid.com 125Updated 7 months ago |
Sẽ là không tốt khi ta coi thường ai đó hay một cái gì đó. Đặc biệt, sẽ rất tệ khi developer coi thường thứ tự các biểu thức logic. Nếu anh nghĩ rằng ((a>b) && (a<c)) với ((a<c) && (a>b)) chả khác gì nhau thì ...
WATCH OUT!

Pòm. Ôi cái chân của ... anh.
alide.myopenid.com 327 months ago |
Article:
Đa nhiệm hợp tác vs Đa nhiệm ưu tiên
868
ngocdaothanh.myopenid.com 149Updated 11 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:
Mẹo vặt Red5
1437
ngocdaothanh.myopenid.com 149Updated 12 months ago |
Sau khi tìm hiểu RTMP và cài Red5, với kiến thức Java cơ bản sẵn có chắc bạn đã sẵn sàng dùng Red5 để viết trang web chia sẻ phim, multiplayer game, hay bét ra cũng là chương trình webcam chống trộm phải không?
Bài này trình bày một số mẹo vặt khi dùng Red5, có lẽ sẽ không còn cần thiết khi Red5 1.0 ra đời.
149




2 months ago