Przykładowa aplikacja Clojure średniej wielkości?

96

Czy istnieje przykładowa aplikacja Clojure średniej wielkości, której można by użyć jako przykładu „najlepszych praktyk” i dobry sposób na sprawdzenie, jak taka aplikacja wyglądałaby pod względem kodu i organizacji kodu? Aplikacja internetowa byłaby dla mnie szczególnie interesująca, ale najważniejsze jest to, że program robi coś powszechnie użytecznego (na przykład blog, śledzenie błędów, CMS), a nie coś matematycznego, czego nigdy nie musiałem implementować w rzeczywistości świat (rozwiązywanie problemu N-królowych, symulacja życia, generowanie ciągów Fibonacciego i takie zwykłe języki programowania funkcji).

Dzięki!

foxdonut
źródło
Miałem zamiar zadać dokładnie to samo pytanie. Zastanawiam się, jak praktyczne jest to w „prawdziwym świecie”
ScArcher2,
5
Ludzie są zbyt uduszeni tym „prawdziwym światem”
Rayne,
Zrobiłem z nim IRC Bota, jest to idealny język do tego (wydajność nie jest problemem, wtyczki wymieniane na gorąco, wyjście jest banalnie powiązane z wejściem - funkcją). W większości innych zastosowań nie jest to zbyt dobre. Zbyt duże marnowanie procesora, a zwłaszcza zbyt duże zużycie pamięci, utrata pamięci, chybienia w pamięci podręcznej.
RokL

Odpowiedzi:

42

Polecam krowiego bloga Briana Carpera. Według autora został on napisany z myślą o Twoim celu.

prochowiec
źródło
Od 2018 r. Krowy blog nie kompiluje się zgodnie z instrukcjami. lein depskończy się niepowodzeniem z komunikatem: `` Pobieranie gaka / gaka / 0.1.0 / gaka-0.1.0.pom z clojars Próbowałem użyć niezabezpieczonego repozytorium HTTP bez TLS. To prawie na pewno błąd; jednak w rzadkich przypadkach, gdy jest to zamierzone, zapoznaj się lein help faqze szczegółami. Próbowano użyć niezabezpieczonego repozytorium HTTP bez TLS. To prawie na pewno błąd; Jednak w rzadkich przypadkach, gdy jest to zamierzone, zapoznaj się lein help faqze szczegółami. ``
Teodor
19

Jeśli przeglądasz kod źródłowy clojure-contrib , możesz zobaczyć, jak biblioteki są zaimplementowane w clojure.

Możesz również pobraćClojureScript ” w tym samym drzewie źródłowym.

Umożliwia automatyczne tłumaczenie kodu napisanego w bardzo małym podzbiorze Clojure na JavaScript.

Translator ClojureScript to pełna aplikacja Clojure.

Poleciłbym również sprawdzić próbki Port of Practical Common Lisp Stewarta Hallowaya w Clojure, jeśli jeszcze tego nie zrobiłeś.

Brian Gianforcaro
źródło
Monolityczna biblioteka Clojure Contrib została wycofana na rzecz zestawu nowych modularnych bibliotek Contrib, które można znaleźć tutaj: dev.clojure.org/display/doc/Clojure+Contrib (zauważ, że Clojure przeniósł się z repozytorium richhickey na Github do oficjalne repozytorium clojure)
Sean Corfield
15

Spójrz na Compojure . Jest to framework sieciowy napisany w Clojure, więc umożliwia pisanie i uruchamianie (na wbudowanym Jetty) przydatnych aplikacji internetowych w Clojure, a także służy jako dobry przykład sporego fragmentu kodu Clojure w świecie rzeczywistym.

Jest w trakcie aktywnego rozwoju i ma pomocną grupę dyskusyjną Google .

Christian Berg
źródło
1
Ponieważ większość kodu zniknęła z Compojure Ring, być może jest to miejsce, do którego należy teraz zajrzeć.
Mac
Wiele kodu HTML Compojure jest teraz częścią Hiccup, jak sądzę ( github.com/weavejester/hiccup )
mikera
10

Sprawdź demo mrówek, które zostało napisane przez autora Clojure, Richa Hickeya:

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

Oto kilka przydatnych instrukcji dotyczących konfiguracji wraz ze środowiskiem programistycznym emacsa:

http://riddell.us/clojure

Sprawdź także prezentację Richa, która jest zgodna z tym kodem:

http://blip.tv/file/812787

pjb3
źródło
1
Ciągle jestem przekierowywany, gdy próbuję wyświetlić źródło. Co dziwne, ja też nie mogę go znaleźć przez Google.
AnnanFay,
Wygląda na to, że link blip.tv znajduje się teraz na youtube.com/watch?v=dGVqrGmwOAw i myślę, że opis kodu zaczyna się około 1 godziny 24 minut po prezentacji.
Roger Allen
7

Sam Clojure jest dobrym przykładem najlepszych praktyk Clojure. Przeczytaj u dołu Core.clj, dobre rzeczy.

Rayne
źródło
6

http://4clojure.com

4Clojure to witryna typu open source, w której można rozwiązywać interaktywne problemy Clojure z wypełnianiem pustych miejsc.

dbyrne
źródło
5

Myślę, że Compojure jest prawdopodobnie najlepszym przykładem. Wątpię, czy jest to przykład „średniej wielkości”, ale prawdopodobnie są jego podrozdziały, które są małe, które by się sprawdziły. Przynajmniej takie będzie moje podejście. uśmiecha się

Sprawdź też

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

który jest małym prototypem klienta błota zbudowanym w clojure, którego zaletą jest to, że jest całkowicie niezależny i prawdopodobnie całkiem prosty, włączając w to koncepcje. Dokumentacja jest w porządku, ale koncepcje w kodzie są bardzo ściśle powiązane z elementami akcji MUD, które działają łatwo.

Kzqai
źródło
5

Od tego pytania minęły dwa lata i chociaż jest to wciąż wczesny etap w przypadku języka, Clojure jest zdecydowanie używany do poważnych prac produkcyjnych. W World Singles mamy kilka tysięcy linii Clojure w produkcji, które obsługują różnego rodzaju zadania ogólnego przeznaczenia na naszej platformie internetowej - pisałem o tym w mojej serii Real World Clojure .

W przypadku niektórych dość dużych projektów open source - nie do końca aplikacji, ale infrastruktury o wysokim profilu - możesz spojrzeć na Storm z Twittera i Cascalog z BackType (obecnie część Twittera). Witryna 4clojure.com została wymieniona jako aplikacja internetowa typu open source, którą również warto zobaczyć, ale zwróć uwagę na nowe repozytorium github dla 4clojure .

Sean Corfield
źródło
3

Pozytywny znak: w InfoQ pojawił się artykuł o „jednym z pierwszych opublikowanych raportów o użyciu Clojure we wdrożeniu produkcyjnym na dużą skalę”. Wydaje się, że nie jest otwarty, ale przynajmniej jest to znak, że Clojure jest używany w krytycznej aplikacji w prawdziwym świecie produkcyjnym. Duży krok dla społeczności Clojure.

Jim Anderson
źródło
1

Mogę tylko polecić Ci wypróbowanie Pedestal , bardzo obiecującego frameworka internetowego, zarówno po stronie serwera, jak i po stronie klienta (gdzie ułatwia ClojureScript). Rzeczy z gui są trochę trudne do zrozumienia, ale tak samo należy to zrobić, aby zachować rozsądek w dużej aplikacji.

claj
źródło
1

edge to aplikacja o średniej wielkości, prezentująca strukturę aplikacji za pomocą Clojure, ClojureScript, Component, Yada, Aero i Boot.

Daniel Compton
źródło
0

Clojure jest wciąż zbyt młody i ruchomym celem, aby mieć aplikacje średniej wielkości z dostępnym kodem źródłowym.

Marko
źródło