metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-19 09:05 pm

Clojure

Я, внезапно, последние несколько дней работаю от 14 до 24 часов в сутки.
Наклепал к опердени серверную мидлварь на Clojure - аналитические отчеты строить, ибо недоделанные языки задрали выше всяких сил, а во всех остальных, кроме кложури, это все выглядит хуже чем на SQL.

Тащемта jetty+ring+cheshire+jdbc - в итоге адская RESTful хрень, по типу той, что была на специальной олимпиаде, только с гуишным клиентом. Умеет отдавать, сохранять и рассчитывать документы, по типу кросс-таблиц-шахматок.

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

[identity profile] victor bolshakov (from livejournal.com) 2012-02-19 06:17 pm (UTC)(link)
А чего Java а не CLR?

[identity profile] metaclass.livejournal.com 2012-02-19 06:27 pm (UTC)(link)
Оно изначально жабовское, соответственно, 100% что интероп-либы все будут строго под жабу. И все ответы на вопросы в гугле будут про жабу.

[identity profile] blackyblack.livejournal.com 2012-02-19 06:35 pm (UTC)(link)
Сервер отчётов - хорошее решение. Работать 24 часа в сутки - ай-яй-яй.

[identity profile] jdevelop.livejournal.com 2012-02-19 06:41 pm (UTC)(link)
думаю, на Java/Spring/iBatis/Apache Cxf не пришлось бы херачить по 100500 часов в сутки

а последняя искаропки практически кроме реста выдала бы много другого интересного

и я еще про Apache Camel не начал рассказывать даже

[identity profile] metaclass.livejournal.com 2012-02-19 07:02 pm (UTC)(link)
Я думаю, если ТЗ выдают за неделю до дедлайна, при этом параллельно навешивая 100500 других задач, то ничто не поможет.
Clojure хотя бы не бесит в 5 утра ночи :)

[identity profile] theiced.livejournal.com 2012-02-19 07:40 pm (UTC)(link)
да, не пришлось. на сраной говножабе бы три месяца писались хымыыльные конфиги и ставились миллионы жарок.

[identity profile] metaclass.livejournal.com 2012-02-19 07:46 pm (UTC)(link)
Ты тащемта будешь смеятся, но я именно этим на кложуре и занимался :)

[identity profile] theiced.livejournal.com 2012-02-19 07:53 pm (UTC)(link)
ты просто не писал на жабе. там ад.

[identity profile] jdevelop.livejournal.com 2012-02-19 08:25 pm (UTC)(link)
я это понимаю, но у меня вопрос - хочешьли ты там потом поддерживать ЭТО своими силами? или контора будет искать кложеристов?

[identity profile] jdevelop.livejournal.com 2012-02-19 08:26 pm (UTC)(link)
ада хватает во всех частях света, на жабе уже давно не надо писать тонны говнохымылы

если конечно не идет речь о кровавом энтерпрайзе и прочем банковском софте

[identity profile] gds.livejournal.com 2012-02-19 08:35 pm (UTC)(link)
> Наклепал [...] аналитические отчеты строить

разумно. как я и говорил где-то раньше.

[identity profile] theiced.livejournal.com 2012-02-19 08:48 pm (UTC)(link)
ой ортуро тоже орал что не надо и он не пишет. внезапно в его говноопердени нашли 5 хымыылек.,

[identity profile] metaclass.livejournal.com 2012-02-19 08:49 pm (UTC)(link)
Я уже поддерживаю это, лет 5 :)
А на кложурь переписал, потому что на нем все это более гуманно выглядит.

[identity profile] jdevelop.livejournal.com 2012-02-19 08:49 pm (UTC)(link)
да мне ваш ортуро не указ, ебитесь с ним в ачько самостоятельно

[identity profile] theiced.livejournal.com 2012-02-19 08:52 pm (UTC)(link)
и я уверен что ты по ночам обмазываешься несвежим говном пишешь хымыыль.

[identity profile] jdevelop.livejournal.com 2012-02-19 08:56 pm (UTC)(link)
а еще жгу тряпки и смеюсь

(Anonymous) 2012-02-20 06:12 am (UTC)(link)
эээ.
эээээ. а можно спросить, почему надо перезагружать сервер, чтобы обновить код на кложур? а можно сам код перезагрузить? (чё-то я торможу)

[identity profile] metaclass.livejournal.com 2012-02-20 07:34 am (UTC)(link)
Потому что я пока не знаю, как реализовать перегрузку кода.

(Anonymous) 2012-02-20 07:59 am (UTC)(link)
:((

а в чём тогда основное его преимущество, этого кложура? я думал что это такое удовольствие для перезагрузки кода и например какое-нибудь таскание его на другие машины там или чё-то такое. но я в этом всём совершенно не шарю :(

[identity profile] metaclass.livejournal.com 2012-02-20 08:43 am (UTC)(link)
Все фичи Lisp (метапрограммирование, удобный синтаксис для развесистых данных) + библиотеки от Java.

[identity profile] zmila.livejournal.com 2012-02-20 10:20 am (UTC)(link)
или я не то прочитал, но вот так делалось на jetty + ring

(def my-wrapped-handler
(-> #'my-namespace/my-routes
(compojure.handler/site)
...
(ring.middleware.reload/wrap-reload '(my-namespace.my-file-to-reload)) ))

и запускалось из repl

(defn my-start-server []
(ring.adapter.jetty/run-jetty
#'my-namespace/my-wrapped-handler
{:port 8085 :join? false}))

затем просто пере-выполнял изменённую функцию или def
и рефреш страницы в браузере