Article: FSM với Akka 73

ngocdaothanh.myopenid.com 149
Updated 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 149
Updated 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 149
Updated 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 149
Updated 2 months ago

Có vài loại JDK: Sun JDK, IBM JDK, OpenJDK v.v. Sun JDK thường được chuộng hơn cả vì cho cảm giác an tâm, vì thi thoảng chương trình viết xong chạy ngon lành trên Sun JDK nhưng lại văng lỗi khi chạy trên OpenJDK chẳng hạn.

Bài viết này tóm tắt cách cài Sun JDK lên CentOS 5 bản 64 bit.

vuhung.myopenid.com
2 months ago

Cài  Sun JDK bây giờ quá dễ vì Sun mở mã JDK và license thoáng hơn với người packaging.

Article: Thiết lập môi trường phát triển Scala trên Ubuntu 10.4 376

cmpitg.myopenid.com 1
Updated 3 months ago

Trước khi bắt tay vào học Scala thì tất nhiên viêc đầu tiên phải làm là thiết lập môi trường trên máy của mình. Bài này giới thiệu cách làm trên Ubuntu 10.4.

Article: 4OOP bằng Scala 1137

trangia61.myopenid.com 3
Updated 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 149
Updated 9 months ago

Hiện cái gì cũng lên web, nên nói chung ngôn ngữ nào muốn nổi thì điều kiện sống còn là phải có web framework tốt. Cái này nói lên nhiều điều: ngôn ngữ uyển chuyển dễ xài, nhiều thư viện, tốc độ v.v.

Lift hiện có khoảng 30 commiter. Bạn watch repository sẽ thấy ngày nào cũng có cả chục commit, tốc độ phát triển rất nhanh. Rails có DHH thì Lift có DPP, join mailing list sẽ thấy nhạc trưởng DPP chỉ huy mấy năm nay rất khéo. Tóm lại ngay hiện tại Lift đã rất thành công, không thua kém Rails, thậm chí có mặt vượt trội. Sau Scala 2.8 (hỗ trợ annotation lồng vào nhau, cải tiến actor v.v.) Lift sẽ còn tiến xa.

Erlang chính ra dễ tiếp thu nhất vì cú pháp thoáng dễ đọc lại siêu đơn giản, học vài tiếng là hết. Bạn học xong cú pháp Scala sẽ thấy búng ngón tay là học xong cú pháp Erlang. Cứng và khuân mẫu đáng ra phải dành cho Scala vì nó là static typed, static có thể không cứng và khuôn mẫu quá, nhưng không thể uyển chuyển hơn dynamic.

Article: Ba cách chạy chương trình Scala 233

trangia61.myopenid.com 3
Updated 5 months ago

Có 3 cách chạy để ra kết quả của 1 chương trình Scala. Đó là:

  1. Chạy trong chế độ interactive
  2. Chạy trực tiếp bằng lệnh scala (chế độ thông dịch)
  3. 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 125
Updated 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 32
7 months ago

Vấn đề này gọi là Short-circuit evaluation.

Article: Đa nhiệm hợp tác vs Đa nhiệm ưu tiên 868

ngocdaothanh.myopenid.com 149
Updated 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 149
Updated 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?{#emotions_dlg.wink}

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.

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content