Mittelgroße Clojure-Beispielanwendung?


96

Gibt es eine mittelgroße Clojure-Beispielanwendung, die als Beispiel für "Best Practices" verwendet werden kann, und eine gute Möglichkeit, um zu sehen, wie eine solche Anwendung in Bezug auf Code und Codeorganisation aussehen würde? Eine Webanwendung wäre für mich besonders interessant, aber das Wichtigste ist, dass das Programm etwas allgemein Nützliches tut (Blog, Bug-Tracking, CMS zum Beispiel) und nicht etwas Mathematisches, das ich nie in der Realität implementieren musste Welt (Lösung des N-Königinnen-Problems, Simulation des Lebens, Generierung von Fibonacci-Sequenzen und der üblichen Tarife von Funktionsprogrammiersprachen).

Vielen Dank!


Ich würde genau dieselbe Frage stellen. Ich frage mich, wie praktisch es in der "realen Welt" ist
ScArcher2

5
Die Menschen sind in dieser "realen Welt" zu erstickt
Rayne

Ich habe einen IRC-Bot damit erstellt, es ist die perfekte Sprache dafür (Leistung ist kein Problem, Hot-Swap-Plug-Ins, Ausgabe hängt trivial mit Eingabe - Funktion zusammen). Für die meisten anderen Anwendungen ist es nicht sehr gut. Zu viel CPU-Verschwendung und vor allem zu viel Speicherbedarf, Speicherabwanderung, Cache-Fehler.
RokL

Antworten:


42

Ich empfehle einen Kuh-Blog von Brian Carper. Laut dem Autor wurde es für Ihren Zweck geschrieben.


Ab 2018 wird Cow-Blog nicht mehr gemäß den Anweisungen kompiliert. lein depsschlägt mit dieser Meldung fehl: `` `Abrufen von gaka / gaka / 0.1.0 / gaka-0.1.0.pom aus Clojars Es wurde versucht, ein unsicheres HTTP-Repository ohne TLS zu verwenden. Dies ist mit ziemlicher Sicherheit ein Fehler. In seltenen Fällen, in denen dies beabsichtigt ist, finden Sie weitere lein help faqInformationen. Es wurde versucht, ein unsicheres HTTP-Repository ohne TLS zu verwenden. Dies ist mit ziemlicher Sicherheit ein Fehler. In seltenen Fällen, in denen dies beabsichtigt ist, finden Sie lein help faqEinzelheiten. `` `
Teodor

19

Wenn Sie den Clojure-Contrib- Quellcode durchsuchen , können Sie sehen, wie Bibliotheken in Clojure implementiert sind.

Sie können auch " ClojureScript " unter demselben Quellbaum auschecken .

Ermöglicht die automatische Übersetzung von in eine sehr kleine Teilmenge von Clojure geschriebenem Code in JavaScript.

Der ClojureScript-Übersetzer ist eine vollständige Clojure-App.

Ich würde Clojure auch empfehlen , Clojure die Port of Practical Common Lisp-Proben von Stewart Halloway anzusehen, wenn Sie dies noch nicht getan haben.


Die monolithische Clojure Contrib-Bibliothek wurde zugunsten einer Reihe neuer modularer Contrib-Bibliotheken verworfen , die hier zu finden sind: dev.clojure.org/display/doc/Clojure+Contrib (beachten Sie, dass Clojure aus dem Richhickey-Repository auf Github nach Github verschoben wurde das offizielle Clojure-Repository)
Sean Corfield

15

Schauen Sie sich Compojure an . Es ist ein in Clojure geschriebenes Webframework, mit dem Sie nützliche Webanwendungen in Clojure schreiben und ausführen können (auf einem eingebetteten Steg). Es ist auch ein gutes Beispiel für einen beträchtlichen Teil des realen Clojure-Codes.

Es befindet sich in der aktiven Entwicklung und hat eine hilfreiche Google-Gruppe .


1
Da der größte Teil des Codes jetzt von Compojure Ring entfernt ist, sollten Sie jetzt nachsehen.
Mac

Ich glaube, ein Großteil des HTML-generierenden Codes von Compojure ist jetzt Teil von Hiccup ( github.com/weavejester/hiccup )
mikera

10

Schauen Sie sich die Ameisendemo an, die vom Autor von Clojure, Rich Hickey, geschrieben wurde:

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

Hier sind einige nette Anweisungen, wie Sie es zusammen mit einer Emacs-Entwicklungsumgebung einrichten können:

http://riddell.us/clojure

Schauen Sie sich auch Richs Präsentation an, die zu diesem Code gehört:

http://blip.tv/file/812787


1
Ich werde immer wieder umgeleitet, wenn ich versuche, die Quelle anzuzeigen. Seltsamerweise kann ich es auch nicht über Google finden.
AnnanFay

Der Link blip.tv befindet sich anscheinend jetzt auf youtube.com/watch?v=dGVqrGmwOAw und ich denke, die Beschreibung des Codes beginnt ungefähr 1 Stunde und 24 Minuten nach der Präsentation.
Roger Allen

7

Clojure selbst ist ein gutes Beispiel für bewährte Methoden von Clojure. Lesen Sie unten in Core.clj, gute Sachen.



5

Ich denke, dass Compojure wahrscheinlich der beste Weg ist, um ein Beispiel zu finden. Ich bezweifle, dass es sich um ein "mittelgroßes" Beispiel handelt, aber es gibt wahrscheinlich kleine Unterabschnitte, die funktionieren würden. Zumindest wird das mein Ansatz sein. lächelt

Schauen Sie sich auch an

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

Dies ist ein kleiner Schlamm-Client-Prototyp, der in Clojure gebaut wurde. Der Vorteil ist, dass er völlig eigenständig und wahrscheinlich ziemlich einfach ist, einschließlich der beteiligten Konzepte. Dokumentation, wie, es ist in Ordnung, aber die Konzepte im Code hängen sehr eng mit den Aktionselementen des MUD zusammen, die leicht laufen.


5

Wir sind zwei Jahre von dieser Frage entfernt, und während dies für eine Sprache noch am Anfang des Zyklus steht, wird Clojure definitiv für ernsthafte Produktionsarbeiten verwendet. Bei World Singles sind mehrere tausend Clojure-Linien in Produktion, die alle Arten von Allzweckaufgaben auf unserer Webplattform erledigen. Ich habe darüber in meiner Real World Clojure-Serie gebloggt .

Für einige relativ große Open Source-Projekte - nicht gerade Anwendungen, sondern hochkarätige Infrastruktur - können Sie sich Storm von Twitter und Cascalog von BackType (jetzt Teil von Twitter) ansehen . 4clojure.com wurde als Open-Source-Webanwendung erwähnt, das ist auch einen Blick wert, aber beachten Sie das neue Github-Repo für 4clojure .


3

Ein positives Zeichen: Auf InfoQ gibt es einen Artikel über "einen der ersten veröffentlichten Berichte über die Verwendung von Clojure in einer groß angelegten Produktionsbereitstellung". Es scheint nicht offen zu sein, aber es ist zumindest ein Zeichen dafür, dass Clojure in einer geschäftskritischen Anwendung in der realen Produktionswelt verwendet wird. Ein großer Schritt für die Clojure-Community.




1

Ich kann Ihnen nur empfehlen, sich Pedestal anzusehen , ein vielversprechendes Webframework, sowohl auf der Server- als auch auf der Clientseite (wo es ClojureScript erleichtert). Das GUI-Zeug ist ein bisschen schwer zu verstehen, aber genau so sollte es gemacht werden, um in einer großen App gesund zu bleiben.


1

edge ist eine mittelgroße Anwendung, die die Strukturierung einer Anwendung mit Clojure, ClojureScript, Component, Yada, Aero und Boot zeigt.


0

Clojure ist noch zu jung und ein bewegliches Ziel, um noch mittelgroße Anwendungen mit verfügbarem Quellcode zu haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.