Applicazione di esempio Clojure di medie dimensioni?


96

Esiste un'applicazione di esempio Clojure di medie dimensioni che potrebbe essere utilizzata come esempio di "best practice" e un buon modo per vedere come sarebbe una tale applicazione in termini di codice e organizzazione del codice? Un'applicazione web sarebbe particolarmente interessante per me, ma la cosa più importante è che il programma faccia qualcosa di comunemente utile (blog, bug tracking, CMS, per esempio), e non qualcosa di matematico che non ho mai dovuto implementare nel reale world (risolvendo il problema delle N-regine, simulando la vita, generare sequenze di Fibonacci e il solito comportamento dei linguaggi di programmazione di funzioni).

Grazie!


Stavo per fare la stessa identica domanda. Mi chiedo quanto sia pratico nel "mondo reale"
ScArcher2

5
Le persone sono troppo asfissiate in questo "mondo reale"
Rayne

Ho creato un IRC Bot con esso, è un linguaggio perfetto per esso (le prestazioni non sono un problema, plug-in hot-swap, l'output è banalmente correlato alla funzione di input). Per la maggior parte degli altri usi non è molto buono. Troppo spreco di CPU e soprattutto troppo utilizzo della memoria, alterazione della memoria, cache mancante.
RokL

Risposte:


42

Raccomando cow-blog di Brian Carper. Secondo l'autore è stato scritto con il tuo scopo in mente.


A partire dal 2018, cow-blog non si compila seguendo le istruzioni. lein depsnon riesce con questo messaggio: `` Recupero di gaka / gaka / 0.1.0 / gaka-0.1.0.pom da clojars Si è tentato di utilizzare un repository HTTP non sicuro senza TLS. Questo è quasi certamente un errore; tuttavia, in rari casi in cui è intenzionale, vedere lein help faqper i dettagli. Si è tentato di utilizzare un repository HTTP non sicuro senza TLS. Questo è quasi certamente un errore; tuttavia in rari casi in cui è intenzionale, vedere lein help faqper i dettagli. `` ``
Teodor

19

Se sfogli il codice sorgente di clojure-contrib puoi vedere come le librerie sono implementate in clojure.

Puoi anche controllare " ClojureScript " nello stesso albero dei sorgenti.

Consente di tradurre automaticamente in JavaScript il codice scritto in un sottoinsieme molto piccolo di Clojure.

Il traduttore ClojureScript è un'app Clojure completa.

Consiglierei anche di dare un'occhiata ai campioni del Port of Practical Common Lisp di Stewart Halloway a Clojure se non l'hai già fatto.


La libreria monolitica Clojure Contrib è stata deprecata a favore di una serie di nuove librerie contrib modulari che possono essere trovate qui: dev.clojure.org/display/doc/Clojure+Contrib (si noti che Clojure è passato dal repository richhickey su Github a the official clojure repository)
Sean Corfield

15

Dai un'occhiata a Compojure . È un framework web scritto in Clojure, quindi ti consente di scrivere ed eseguire (su un Jetty incorporato) utili app web in Clojure e serve anche come un buon esempio di una parte considerevole di codice Clojure del mondo reale.

È in fase di sviluppo attivo e dispone di un utile gruppo Google .


1
Poiché la maggior parte del codice è ora sparito da Compojure Ring potrebbe essere il posto dove cercare ora.
mac

Gran parte del codice di generazione HTML di Compojure fa ora parte di Hiccup I believe ( github.com/weavejester/hiccup )
mikera

10

Guarda la demo delle formiche scritta dall'autore di Clojure, Rich Hickey:

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

Ecco alcune belle istruzioni per configurarlo insieme a un ambiente di sviluppo emacs:

http://riddell.us/clojure

Controlla anche la presentazione di Rich che accompagna questo codice:

http://blip.tv/file/812787


1
Continuo a essere reindirizzato quando provo a visualizzare la fonte. Stranamente anche io non riesco a trovarlo tramite Google.
AnnanFay

Sembra che il collegamento blip.tv sia ora su youtube.com/watch?v=dGVqrGmwOAw e penso che la descrizione del codice inizi a circa 1 ora e 24 minuti dalla presentazione.
Roger Allen

7

Clojure stesso è un buon esempio delle migliori pratiche di Clojure. Leggi verso la fine di Core.clj, roba buona.



5

Penso che Compojure sia probabilmente il modo migliore per fare un esempio. Dubito che sia un esempio "di medie dimensioni", ma probabilmente ci sono sottosezioni piccole che potrebbero funzionare. Almeno, questo sarà il mio approccio. sorrisi

Inoltre, controlla

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

che è un piccolo prototipo di client mud costruito in clojure, il vantaggio è che è totalmente autonomo e probabilmente piuttosto semplice, compresi i concetti coinvolti. Documentazione, eh, va bene, ma i concetti nel codice si legano molto strettamente agli elementi di azione del MUD che funziona facilmente.


5

Siamo a due anni da questa domanda e, sebbene sia ancora all'inizio del ciclo di un linguaggio, Clojure viene sicuramente utilizzato per un lavoro di produzione serio. A World Singles, abbiamo diverse migliaia di linee di Clojure in produzione che gestiscono tutti i tipi di attività generiche nella nostra piattaforma web - ne ho parlato nel blog nella mia serie Real World Clojure .

Per alcuni progetti open source ragionevolmente grandi - non esattamente applicazioni, ma infrastrutture di alto profilo - potresti guardare Storm di Twitter e Cascalog di BackType (ora parte di Twitter). 4clojure.com è stata menzionata come un'applicazione web open source, vale anche la pena dare un'occhiata, ma nota il nuovo repository github per 4clojure .


3

Un segnale positivo: c'è un articolo su InfoQ su "uno dei primi rapporti pubblicati di Clojure utilizzato in una distribuzione di produzione su larga scala". Non sembra essere aperto, ma almeno è un segno che Clojure viene utilizzato in un'applicazione mission critical nel mondo della produzione reale. Un grande passo per la comunità Clojure.




1

Posso solo consigliarti di dare un'occhiata a Pedestal , un framework web molto promettente, sia lato server che lato client (dove facilita ClojureScript). La roba della gui è un po 'difficile da afferrare, ma abbastanza come dovrebbe essere fatta per rimanere sana di mente in un'app di grandi dimensioni.


1

edge è un'applicazione di dimensioni moderate che mostra la strutturazione di un'applicazione con Clojure, ClojureScript, Component, Yada, Aero e Boot.


0

Clojure è ancora troppo giovane e un target in movimento per avere applicazioni di medie dimensioni con codice sorgente disponibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.