metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2013-03-09 11:59 pm
Entry tags:

scala spray slick restful ад заборы коровники коворкинги хипстеры

В целях недопущения упрощения жизни, а так же чтобы псить, при необходимости, со знанием дела, осиливаю скалу.
Причем начал практически с конца - клепаю RESTful сервис на основе spray с всякими json-маршалингами внутри через имплициты и прочую адову содомию.
При достаточном количестве type-level магии оно выглядит, конечно, так же просто, как какое-нибудь руби, или как лиспы без скобок и с инфиксной записью, но внутренняя сложность, по-моему, зашкаливает. "Импортируй себе немножечко имплиситов и получи на халяву сериализаторы в json для всего", "Оберни маршруты в директивы логгера" и прочее такое.

Сборку завел, сначала через sbt (простой способ), потом импортировал в IDEA (условно простой) и потом стырил у [livejournal.com profile] jdevelop конфигурацию для мавена (нормальный способ). Воедино надо это как-то свести, чтобы не редактировать при добавлении новых зависимостей все вручную. Плюс еще импорт sbt в IDEA выглядит как ад и смерть.

Завести то я это чюдо заведу, но вот что с ним дальше делать, не совсем понятно. На данный момент картина выглядит так: Clojure проще, но скобки и стектрейсы компилятора отпугнут новых пользователей, Scala дико сложнее, но поначалу она выглядит как "почти жаба", обработка ошибок более читабельна и есть шансы, что в эту западню попадутся и желающие новеньких языков и любители сойти с ума на почве вычислений на типах.

[identity profile] xeno-by.livejournal.com 2013-03-10 08:42 am (UTC)(link)
Блин насчет джейсона быстрее бы народ сообразил про имплисит макросы для этого дела, как сделали в плее. Натурально, один макрос и не надо больше никакой магии, даже импортов никаких не надо, даже явно писать ничего не надо - просто все начнет автоматически работать.

Впрочем, в 2.10.0 полной красоты не получится - для каждого класса надо все еще писать руками вызов генерирующего макроса (например, val fooSerializer = genSerializer[Foo]). Я сам дурак конечно, что оставил SI-5923 в 2.10.0, но я ж тогда ничего не понимал в тайпчекере. О, а ведь этот фикс можно легко бэкпортить из 2.11.0-SNAPSHOT в 2.10.2! Следите за новостями.

[identity profile] metaclass.livejournal.com 2013-03-10 10:15 am (UTC)(link)
В jerkson 2.8 или 2.9 скала в требованиях :)