Article: Làm quen với Clojure 1138

ngocdaothanh.myopenid.com 148
Updated 24 days 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 73

ngocdaothanh.myopenid.com 148
Updated about 1 month 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.

Forum: Xử Lý Ảnh 94

ngocdaothanh.myopenid.com 148
about 1 month ago

Tôi không có. Tuy nhiên có thể gợi ý cách làm chung như sau:

  • Có thể qui bài toán tìm kiếm ảnh về bài toán so sánh 2 tấm ảnh dựa trên so sánh 2 giá trị đặc trưng cho từng tấm ảnh.
  • Nếu khoảng cách giữa 2 giá trị nhỏ hơn ngưỡng nào đó thì coi như 2 tấm ảnh giống nhau, trên ngưỡng đó thì coi như chúng khác nhau.
  • Ở đây, giá trị đặc trưng là đặc trưng màu. Bạn thử search với keyword này xem: image color feature.
  • Thường giá trị đặc trưng không đơn giản là giá trị vô hướng như số 7 số 8, mà là giá trị nhiều chiều (vector), có thể lên đến cả trăm chiều. Ví dụ nếu lấy histogram làm giá trị đặc trưng thì thường vector có 256 chiều.
  • Có nhiều cách tính khoảng cách giữa 2 vector, do đó căn bản của bài toán so sánh là chọn cách tính sao cho khéo. Ví dụ có thể tính theo khoảng cách Euclid, khoảng cách Mahattan, hoặc bạn tự chế ra cách tính.

Article: Cài và xài RVM 122

ngocdaothanh.myopenid.com 148
Updated about 1 month ago

Khi xài Ruby, thường ta có nhu cầu cài nhiều bản Ruby (1.8.7, 1.9.2 v.v.) và gem. RVM (Ruby Version Manager) là chương trình cho hệ điều hành *nix giúp dễ dàng cài đặt và quản lí Ruby và gem trên cùng một máy, switch qua switch lại giữa các bản Ruby và các bộ gem rất nhanh chóng tiện lợi. Xài RVM thì không cần package Ruby do distro cung cấp sẵn.

Bài viết này hướng dẫn cách cài và xài RVM trên *nix. Để hiểu bạn cần chút kinh nghiệm Ruby và *nix.

Forum: Phân vùng ảnh(Segmentation) 1471

nguyenviet88.myopenid.com 1
about 1 month ago

Các bác có chương trình làm rồi thì có thể upload lên cho mọi người tham khảo học hỏi được không ạ. Chứ lý thuyết này lắm cái đàn em đi sau không hiểu. thanks các bác nhiều

Article: Cài JDK của Sun lên CentOS 5 128

ngocdaothanh.myopenid.com 148
Updated about 1 month 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
about 1 month 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: Lựa chọn ngôn ngữ 696

nguoitapdich.myopenid.com 35
Updated about 1 month ago

Dưới đây là trích đoạn bài viết Choosing languages của Steve Yegge, cựu nhân viên của Amazon và đương kim nhân viên của Google. Mặc dù bài này viết năm 2005, đã lâu, nhưng chứa một số ý tưởng có lẽ vẫn còn đúng tại thời điểm hiện tại.

Article: 9 khác biệt của Lisp 405

nguoitapdich.myopenid.com 35
Updated about 1 month ago

Theo thời gian, các ngôn ngữ đã từng bước tiến hoá về Lisp. 1-5 bây giờ đã phổ biến. 6 đã bắt đầu xuất hiện trong các ngôn ngữ được sử dụng nhiều nhất. Python có ý tưởng của 7, mặc dù nó chưa chính thức có cú pháp riêng cho ý tưởng này. 8 (là cái cho phép viết macro trong Lisp, đi đôi với 9) vẫn chỉ có trong Lisp, có lẽ vì (a) cần sử dụng dấu ngoặc ( ), hoặc cái gì đó tương tự, và (b) nếu ngôn ngữ của bạn làm được, thì bạn không thể tuyên bố bạn mới phát minh ra được ngôn ngữ mới, mà ngôn ngữ của bạn chỉ là một biến thể của Lisp {#emotions_dlg.wink}

Article: Mã nguồn mở hoạt động như thế nào? 413

nguoitapdich.myopenid.com 35
Updated about 1 month ago

Cách mã nguồn mở hoạt động vẫn là bí ẩn đối với nhiều người. Hi vọng bài viết nhằm gây quỹ cho Clojure dưới đây sẽ giúp giải tỏa thắc mắc cốt lõi của nhiều người về mã nguồn mở: mô hình kinh doanh. Hoặc dễ hiểu hơn: tiền đâu?

It is important when using open source software that you consider who is paying for it, because someone is. There is no such thing as free software.

Một điều quan trọng khi sử dụng phần mềm mã nguồn mở là bạn để ý xem ai đang trả tiền cho nó, bởi vì, nguời nào đó đang trả tiền. Chả có cái gì là phần mềm miễn phí cả.

Article: You Might Be A Blub Neck (Bạn Có thể là Lập trình viên Không hiểu biết Công nghệ) 394

nguoitapdich.myopenid.com 35
Updated about 1 month ago
In Beating the Averages, Paul Graham formulated the Blub paradox. In short a programmer who only knows a language called Blub looks down on all languages that don't support features that Blub has. At the same time, he1 is incapable of understanding why he would want to use some weird language that has features that Blub doesn't have. The Blub programmer is so used to thinking in Blub that he can't get his head around anything non-Blub.The question is, how do you know if you or somebody else is a Blub programmer? Of course it goes without saying that anybody who reads this blog is kind, highly intelligent, open minded, and motivated to learn.

Trong Đánh bại những Công ty Làng nhàng, Paul Graham đã trình bày về mâu thuẫn Blub. Nói ngắn gọn là, một lập trình viên chỉ biết duy nhất một ngôn ngữ gọi là Blub coi thuờng tất cả các ngôn ngữ không hỗ trợ các tính năng mà Blub có. Cùng lúc đó, anh ta [1] không có khả năng hiểu tại sao anh ta lại cần sử dụng các ngôn ngữ quái đản có các tính năng mà Blub không có. Lập trình viên Blub quá quen suy nghĩ theo Blub đến nỗi anh ta không thể nghĩ đến cái gì khác ngoài Blub. Câu hỏi là, làm sao bạn biết đuợc nếu bạn hay một nguời nào đó là một lập trình viên Blub? Dĩ nhiên ở đây cho rằng ai đọc blog này đều là nguời tử tế, trí tuệ cao, đầu óc cởi mở, và năng động học hỏi.

The comedian Jeff Foxworthy had about five minutes of fame with a schtick of starting each joke with "you might be a redneck if..." Five minutes is a lot more fame than the average blog entry gets, so I thought I'd steal his formula for success.

Diễn viên hài Jeff Foxworthy có năm phút nổi tiếng với một chuỗi hài huớc là bắt đầu mỗi chuyện cuời bằng "bạn có thể là một gã da trắng nghèo nếu..." Năm phút đó nổi tiếng hơn nhiều so với một bài blog làng nhàng, vì vậy tôi nghĩ tôi sẽ lấy trộm công thức thành công của ông ấy.

Here, with a slight modification of the formula, I present

Đây, sau khi sửa đổi chút ít công thức, tôi xin giới thiệu cùng quí vị

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