Ứng dụng mẫu Clojure cỡ trung bình?


96

Có một ứng dụng mẫu Clojure cỡ trung bình có thể được sử dụng làm ví dụ "các phương pháp hay nhất" và một cách hay để xem một ứng dụng như vậy sẽ trông như thế nào về mã và tổ chức mã? Một ứng dụng web sẽ đặc biệt thú vị đối với tôi, nhưng quan trọng nhất là chương trình đó làm một cái gì đó thường hữu ích (ví dụ: blog, theo dõi lỗi, CMS), chứ không phải một cái gì đó toán học mà tôi chưa bao giờ phải triển khai trong thực tế thế giới (giải quyết vấn đề N-queens, mô phỏng Life, tạo chuỗi Fibonacci và giá vé thông thường của các ngôn ngữ lập trình hàm).

Cảm ơn!


Tôi sẽ hỏi chính xác câu hỏi này. Nó làm cho tôi tự hỏi như thế nào thực tế nó đang ở trong "thế giới thực"
ScArcher2

5
Mọi người quá ngạt thở với "Thế giới thực" này
Rayne

Tôi đã tạo một IRC Bot với nó, đó là ngôn ngữ hoàn hảo cho nó (hiệu suất không phải là vấn đề, các plug-in hoán đổi nóng, đầu ra liên quan nhỏ đến đầu vào - chức năng). Đối với hầu hết các mục đích sử dụng khác, nó không tốt lắm. Quá nhiều CPU gây lãng phí và đặc biệt là sử dụng quá nhiều bộ nhớ, xáo trộn bộ nhớ, bộ nhớ cache bị hỏng.
RokL 29/12/11

Câu trả lời:


42

Tôi giới thiệu blog bò của Brian Carper. Theo tác giả nó được viết với mục đích của bạn trong tâm trí.


Kể từ năm 2018, cow-blog không biên dịch theo hướng dẫn. lein depskhông thành công với thông báo này: `` Truy xuất gaka / gaka / 0.1.0 / gaka-0.1.0.pom từ áo choàng Cố gắng sử dụng kho lưu trữ HTTP không an toàn mà không có TLS. Đây gần như chắc chắn là một sai lầm; tuy nhiên trong một số trường hợp có chủ ý, vui lòng xem lein help faqđể biết chi tiết. Hãy thử sử dụng kho lưu trữ HTTP không an toàn mà không có TLS. Đây gần như chắc chắn là một sai lầm; tuy nhiên, trong một số trường hợp hiếm hoi, vui lòng xem lein help faqđể biết chi tiết. ``
Teodor

19

Nếu bạn duyệt mã nguồn clojure-Contrib, bạn có thể thấy cách các thư viện được triển khai trong clojure.

Bạn cũng có thể kiểm tra " ClojureScript " trong cùng một cây nguồn.

Cho phép mã được viết trong một tập hợp con rất nhỏ của Clojure được tự động dịch sang JavaScript.

Trình dịch ClojureScript là một ứng dụng Clojure đầy đủ.

Tôi cũng khuyên bạn nên kiểm tra các mẫu danh sách chung thực tế của cảng Stewart Halloway cho Clojure nếu bạn chưa có.


Thư viện đóng góp bằng Clojure nguyên khối đã không được dùng nữa để thay thế cho một bộ thư viện đóng góp mô-đun mới có thể tìm thấy tại đây: dev.clojure.org/display/doc/Clojure+Contrib (lưu ý rằng Clojure đã chuyển từ kho richhickey trên Github sang kho lưu trữ clojure chính thức)
Sean Corfield

15

Hãy xem Compojure . Đó là một khuôn khổ web được viết bằng Clojure, vì vậy nó cho phép bạn viết và chạy (trên một Jetty được nhúng) các ứng dụng web hữu ích trong Clojure và cũng là một ví dụ điển hình về một lượng lớn mã Clojure trong thế giới thực.

Nó đang được phát triển tích cực và có một Nhóm Google hữu ích .


1
Vì hầu hết mã hiện đã biến mất khỏi Compojure Ring có thể là nơi để xem ngay bây giờ.
mac

Rất nhiều mã tạo HTML Compojure bây giờ là một phần của Hiccup Tôi tin ( github.com/weavejester/hiccup )
mikera

10

Hãy xem bản demo kiến ​​được viết bởi tác giả của Clojure, Rich Hickey:

http://clojure.googlegroups.com/web/ants.clj

Dưới đây là một số hướng dẫn thú vị để thiết lập nó cùng với môi trường phát triển emacs:

http://riddell.us/clojure

Ngoài ra, hãy xem bản trình bày của Rich đi kèm với mã này:

http://blip.tv/file/812787


1
Tôi tiếp tục bị chuyển hướng khi tôi cố gắng xem nguồn. Thật kỳ lạ là tôi dường như không thể tìm thấy nó thông qua Google.
AnnanFay

Có vẻ như liên kết blip.tv hiện có tại youtube.com/watch?v=dGVqrGmwOAw và tôi nghĩ rằng phần mô tả của mã bắt đầu sau khoảng 1 giờ 24 phút trong bản trình bày.
Roger Allen

7

Bản thân Clojure là một ví dụ điển hình về các phương pháp hay nhất của Clojure. Hãy đọc phần cuối của Core.clj, những điều tốt.



5

Tôi nghĩ rằng Compojure có lẽ là cách tốt nhất để làm ví dụ. Tôi nghi ngờ đó là một ví dụ "kích thước trung bình", nhưng có lẽ có những phần phụ của nó nhỏ sẽ hoạt động. Ít nhất, đó sẽ là cách tiếp cận của tôi. nụ cười

Ngoài ra, hãy kiểm tra

http://github.com/technomancy/mire/tree/master

là một nguyên mẫu khách hàng bùn nhỏ được xây dựng trong vải áo choàng, ưu điểm là nó hoàn toàn khép kín và có lẽ khá đơn giản, bao gồm các khái niệm liên quan. Tài liệu, ơ, không sao cả, nhưng các khái niệm trong mã liên kết rất chặt chẽ với các yếu tố hành động của MUD dễ chạy.


5

Chúng tôi đã hai năm kể từ câu hỏi này và mặc dù vẫn còn sớm trong chu kỳ cho một ngôn ngữ, nhưng Clojure chắc chắn đang được sử dụng cho các công việc sản xuất nghiêm túc. Tại World Singles, chúng tôi có hàng nghìn dòng Clojure đang được sản xuất để xử lý tất cả các loại nhiệm vụ mục đích chung trong nền tảng web của chúng tôi - Tôi đã viết blog về điều này trong loạt bài về Real World Clojure của mình .

Đối với một số dự án mã nguồn mở lớn hợp lý - không chính xác là ứng dụng, mà là cơ sở hạ tầng cấu hình cao - bạn có thể xem Storm từ TwitterCascalog từ BackType (hiện là một phần của Twitter). 4clojure.com đã được đề cập đến như một ứng dụng web mã nguồn mở, điều đó cũng đáng để xem, nhưng hãy lưu ý repo github mới cho 4clojure .


3

Một dấu hiệu tích cực: có một bài báo trên InfoQ về "một trong những báo cáo được xuất bản đầu tiên về việc Clojure được sử dụng trong việc triển khai sản xuất quy mô lớn." Nó có vẻ không được mở, nhưng ít nhất nó là một dấu hiệu cho thấy Clojure đang được sử dụng trong một ứng dụng quan trọng trong thế giới sản xuất thực. Một bước tiến lớn cho cộng đồng Clojure.




1

Tôi chỉ có thể khuyên bạn nên xem Pedestal , một khung công tác web rất hứa hẹn, cả phía máy chủ và phía máy khách (nơi nó tạo điều kiện thuận lợi cho ClojureScript). Nội dung gui hơi khó nắm bắt, nhưng khá nhiều cách nên làm để duy trì sự lành mạnh trong một ứng dụng lớn.


1

edge là một ứng dụng có kích thước vừa phải, giới thiệu cấu trúc một ứng dụng với Clojure, ClojureScript, Component, Yada, Aero và Boot.


0

Clojure vẫn còn quá trẻ và là một mục tiêu di động để có các ứng dụng cỡ vừa với mã nguồn có sẵn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.