Пример приложения Clojure среднего размера?

96

Есть ли пример приложения Clojure среднего размера, которое можно было бы использовать в качестве примера «передового опыта» и хорошего способа увидеть, как такое приложение будет выглядеть с точки зрения кода и организации кода? Для меня было бы особенно интересно веб-приложение, но самое главное, чтобы программа делала что-то обычно полезное (например, блог, отслеживание ошибок, CMS), а не что-то математическое, что мне никогда не приходилось реализовывать в реальной жизни. мир (решение проблемы N-ферзей, моделирование жизни, генерация последовательностей Фибоначчи и тому подобное, обычное дело языков программирования функций).

Спасибо!

фоксдонат
источник
Я собирался задать тот же самый вопрос. Это заставляет меня задаться вопросом, насколько это практично в «реальном мире»
ScArcher2
5
Люди слишком задыхаются в этом «Реальном мире»
Рейн
Я сделал IRC Bot с его помощью, это идеальный язык для него (производительность не проблема, плагины с горячей заменой, вывод тривиально связан с функцией ввода). Для большинства других целей это не очень хорошо. Слишком большая трата ресурсов ЦП и особенно слишком много памяти, перемешивание памяти, пропуски кеша.
RokL

Ответы:

42

Я рекомендую cow-blog Брайана Карпера. По словам автора, это было написано с вашей целью.

Mac
источник
По состоянию на 2018 год cow-blog не компилируется в соответствии с инструкциями. lein depsсбой с этим сообщением: `` Получение gaka / gaka / 0.1.0 / gaka-0.1.0.pom из clojars Пытался использовать небезопасный репозиторий HTTP без TLS. Это почти наверняка ошибка; однако в редких случаях, когда это сделано намеренно, см. lein help faqподробности. Пытался использовать небезопасный HTTP-репозиторий без TLS. Это почти наверняка ошибка; однако в редких случаях, когда это сделано намеренно, см. lein help faqподробности. ''
Теодор
19

Если вы просмотрите исходный код clojure-contrib, вы увидите, как библиотеки реализованы в clojure.

Вы также можете проверить " ClojureScript " в том же дереве исходных текстов.

Позволяет автоматически транслировать код, написанный на очень небольшом подмножестве Clojure, в JavaScript.

Переводчик ClojureScript - это полноценное приложение Clojure.

Я также порекомендовал бы проверить образцы порта практического Common Lisp Стюарта Хэллоуэя на Clojure, если вы еще этого не сделали.

Брайан Джанфоркаро
источник
Монолитная библиотека Clojure Contrib устарела в пользу набора новых модульных библиотек contrib, которые можно найти здесь: dev.clojure.org/display/doc/Clojure+Contrib (обратите внимание, что Clojure переместился из репозитория richhickey на Github в официальный репозиторий clojure)
Шон Корфилд,
15

Взгляните на Compojure . Это веб-фреймворк, написанный на Clojure, поэтому он позволяет вам писать и запускать (на встроенной Jetty) полезные веб-приложения на Clojure, а также служит хорошим примером значительного фрагмента реального кода Clojure.

Он находится в стадии активной разработки и имеет полезную группу Google .

Кристиан Берг
источник
1
Поскольку большая часть кода исчезла из Compojure Ring, возможно, стоит поискать его сейчас.
mac,
Я считаю, что большая часть кода создания HTML Compojure является частью
Hiccup
10

Посмотрите демонстрацию муравьев, написанную автором Clojure, Ричем Хики:

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

Вот несколько хороших инструкций по его настройке вместе со средой разработки emacs:

http://riddell.us/clojure

Также посмотрите презентацию Рича, которая сопровождается этим кодом:

http://blip.tv/file/812787

pjb3
источник
1
Меня постоянно перенаправляют, когда я пытаюсь просмотреть источник. Как ни странно, я тоже не могу найти его через Google.
AnnanFay
Похоже, ссылка на blip.tv теперь находится на youtube.com/watch?v=dGVqrGmwOAw, и я думаю, что описание кода начинается примерно через 1 час 24 минуты презентации.
Роджер Аллен
7

Сам Clojure является хорошим примером лучших практик Clojure. Читайте в конце Core.clj, хороший материал.

Rayne
источник
5

Я думаю, что Compojure, вероятно, лучший способ взять пример. Я сомневаюсь, что это пример «среднего размера», но, вероятно, есть небольшие части, которые подойдут. По крайней мере, это будет мой подход. улыбается

Также проверьте

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

который представляет собой небольшой прототип клиента грязи, созданный в clojure, преимущество в том, что он полностью автономен и, вероятно, довольно прост, включая задействованные концепции. Документация, да, это нормально, но концепции в коде очень тесно связаны с элементами действий MUD, который запускается легко.

Kzqai
источник
5

Мы прошли два года от этого вопроса, и, хотя это еще только начало цикла разработки языка, Clojure определенно используется для серьезной производственной работы. В World Singles у нас есть несколько тысяч строк Clojure в производстве, которые обрабатывают всевозможные задачи общего назначения на нашей веб-платформе - я писал об этом в своей серии статей о Clojure Real World .

Для некоторых достаточно крупных проектов с открытым исходным кодом - не совсем приложений, а крупной инфраструктуры - вы можете посмотреть на Storm из Twitter и Cascalog из BackType (теперь часть Twitter). 4clojure.com упоминается как веб-приложение с открытым исходным кодом, на которое тоже стоит обратить внимание, но обратите внимание на новый репозиторий github для 4clojure .

Шон Корфилд
источник
3

Положительный знак: в InfoQ есть статья об «одном из первых опубликованных отчетов о том, что Clojure используется в крупномасштабном производственном развертывании». Он не выглядит открытым, но, по крайней мере, это признак того, что Clojure используется в критически важном приложении в реальном производственном мире. Большой шаг для сообщества Clojure.

Джим Андерсон
источник
1

Вы можете посмотреть здесь: http://bitbucket.org/kumarshantanu/blogjure/overview/

Это крошечное приложение для блога, написанное с использованием Hibernate, Compojure и StringTemplate, которое действительно работает!

Шантану Кумар
источник
Также я работаю над этим - code.google.com/p/bitumenframework Он ориентирован на Java и Clojure.
Шантану Кумар
1

Я могу только порекомендовать вам попробовать Pedestal , очень многообещающий веб-фреймворк, как на стороне сервера, так и на стороне клиента (где он облегчает ClojureScript). Материал графического интерфейса немного сложен для понимания, но в значительной степени это должно быть сделано, чтобы оставаться в здравом уме в большом приложении.

Claj
источник
1

edge - это приложение среднего размера, демонстрирующее структурирование приложения с помощью Clojure, ClojureScript, Component, Yada, Aero и Boot.

Дэниел Комптон
источник
0

Clojure еще слишком молод и является движущейся мишенью для приложений среднего размера с доступным исходным кодом.

Марко
источник