Спасибо за статью, приятно видеть все возрастающий интерес к Clojure. Я так понимаю, у вас была задача попробовать побольше всего разного что напридумывали в Clojure?
Вместо defapi сделали бы middleware и обернули свои API routes в него.
Вместо js-obj в новых clojurescript версиях удобно писать #js [1 2 3] или #js {:a 1 :b 2} чтобы получить нативные js-объекты.
Зачем нужен dsl для css не очень понятно — у вас css динамический разве?
Размер скомпилированного js-файла тоже хотелось бы увидеть в gzipped варианте и с advanced compilation. А то у меня например весь datascript в 39 кб умещается, а тут аж 290
Статья очень крутая! Такого количества оптимизаций и такого сложного продукта ждешь скорее от какого-нибудь софтверного гиганта, чем от разработчика, ковыряющего это в свободное время. Во всем ангуляре поди оптимизаций меньше :) Легко представить аналогичного уровня статью, например, «как мы делали чтобы Яндекс.Музыка не тормозила в браузере». Хотя по ощущениям она и попроще, и по-тормознее будет.
Типа пассажир забыл куда он летит? Я так понимаю цель этого информирования скорее успокоительная — да, слава богу, сел на свой рейс. Вряд ли кто-то подглядывает в талон чтобы вспомнить в какой он сейчас город улетает.
Информация выстроена по принципу истории: события развиваются сверху вниз, слева время действия, справа — место.
Помимо прочего, вертикальная организация талона позволяет удобно вкладывать его в паспорт и подглядывать, какой там гейт и во сколько посадка, не доставая его и не переворачивая набок.
Имя пассажира на самом верху на случай, когда летишь с супругой или группой и все талоны таскает кто-то один.
Зачем рисовать схему салона я не очень понял, вроде бы найти место в самолете не очень трудно? Нумерация по порядку и очень логичная?
Вот график распределения кол-ва коммитов по часам. Видно, что вы значительно более упоротые. Я ближе к концу строчил почти исключительно только графику.
Eventual им не надо, им strong надо, иначе придется состояния мира мержить. Вообще для таких штук надо что-то универсальное уже запилить, у меня в работе тоже постоянно возникает желание раздать всем нодам общее видение какой-то части мира. Надо учесть что браузер тоже может быть нодой.
[~/Dropbox/ws/kick] lein ancient
[clj-oauth «1.4.1»] is available but we use «1.4.0»
[http-kit «2.1.11»] is available but we use «2.1.10»
[org.clojure/data.json «0.2.3»] is available but we use «0.2.2»
[org.clojure/clojurescript «0.0-1909»] is available but we use «0.0-1889»
[prismatic/dommy «0.1.2»] is available but we use «0.1.1»
Нет, и это философская позиция. EDN — формат представления данных, а не объектов и их связей. Backreference бы усложнили понимание, реализацию и сделали бы парсер stateful.
Да, сейчас как раз думаю, как с этим быть. Пока отмечаю звездочками, может, заведу папку специальную. Непонятно. Но у меня точно писем, требующих отложенной реакции, гораздо меньше, чем поток, который по папкам разносится.
Как замечать — ну в метках же показывается, где сколько непрочитанных. Допустим, когда я захожу в ящик, сразу вижу, что пришел новый коммент и два письма по работе, например.
Вместо defapi сделали бы middleware и обернули свои API routes в него.
Вместо js-obj в новых clojurescript версиях удобно писать #js [1 2 3] или #js {:a 1 :b 2} чтобы получить нативные js-объекты.
Зачем нужен dsl для css не очень понятно — у вас css динамический разве?
Размер скомпилированного js-файла тоже хотелось бы увидеть в gzipped варианте и с advanced compilation. А то у меня например весь datascript в 39 кб умещается, а тут аж 290
Можно и радикально решить проблему с отрыванием половин :)
Покрупнее тут: habrastorage.org/storage3/0fc/3db/dfd/0fc3dbdfdb8b10991ca71c3239b4157e.jpg
Информация выстроена по принципу истории: события развиваются сверху вниз, слева время действия, справа — место.
Помимо прочего, вертикальная организация талона позволяет удобно вкладывать его в паспорт и подглядывать, какой там гейт и во сколько посадка, не доставая его и не переворачивая набок.
Имя пассажира на самом верху на случай, когда летишь с супругой или группой и все талоны таскает кто-то один.
Зачем рисовать схему салона я не очень понял, вроде бы найти место в самолете не очень трудно? Нумерация по порядку и очень логичная?
[clj-oauth «1.4.1»] is available but we use «1.4.0»
[http-kit «2.1.11»] is available but we use «2.1.10»
[org.clojure/data.json «0.2.3»] is available but we use «0.2.2»
[org.clojure/clojurescript «0.0-1909»] is available but we use «0.0-1889»
[prismatic/dommy «0.1.2»] is available but we use «0.1.1»
[org.clojure/clojure «1.5.1»]
[clj-oauth «1.4.0»]
[http-kit «2.1.10»]
[ring/ring-core «1.2.0»]
[compojure «1.1.5»]
[org.clojure/data.json «0.2.2»]
[org.clojure/clojurescript «0.0-1889»]
[prismatic/dommy «0.1.1» :exclusions [crate prismatic/cljs-test]]
и даже вебсокетов нет :(
Мы не парились с автоматизацией вообще ничего — никаких хуков, деплой скриптов или еще чего. nohup lein trampoline run работает прекрасно.
Как замечать — ну в метках же показывается, где сколько непрочитанных. Допустим, когда я захожу в ящик, сразу вижу, что пришел новый коммент и два письма по работе, например.