This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-09-18
Channels
- # admin-announcements (13)
- # announcements (1)
- # aws (17)
- # beginners (1)
- # boot (113)
- # cider (71)
- # cljs-dev (7)
- # clojure (93)
- # clojure-android (2)
- # clojure-berlin (1)
- # clojure-dev (22)
- # clojure-italy (3)
- # clojure-japan (1)
- # clojure-poland (41)
- # clojure-russia (96)
- # clojurescript (140)
- # cursive (11)
- # datomic (27)
- # devcards (1)
- # devops (1)
- # events (4)
- # funcool (3)
- # hoplon (133)
- # immutant (7)
- # ldnclj (22)
- # leiningen (5)
- # off-topic (6)
- # om (22)
- # onyx (12)
- # re-frame (8)
- # reagent (12)
@nicola: я вот кстати на эти все либы смотрю и думаю, что nesting всë-таки тяжело иногда читать
@asolovyov: Зато нестинг можно легко разбить на части - сделать что-то вроде модулей со своим роутингом и потом композировать
можно написать сплющиватель роутов на чтение - что бы он дерево в виде списка представил
@asolovyov: А отладочной вьюшки со всеми URL'ами недостаточно?
@nicola: не, ну я больше про мой экспириенс как разработчика, а не про представление в памяти - это как раз меня мало беспокоит
@dottedmag: ну а смысл? Если их удобно редактировать, то и вьюха не нужна
@asolovyov: Редактировать и глазами просматривать - это разные деятельности, всё-таки.
c route-map ты не include делаешь а вкладываешь один роутинг в другой - наследуя по пути мета-данные
@dottedmag: хочу, чтоб редактировать было удобно
Не хочется делать пачку (defn is-dir [x] (.isDirectory x))
(defn is-file [x] (.isFile x))
...
А вот ещё. Мне нужно отпроцессить 100500 файлов. Из них 2-3 тысячи нужно прочитать, а остальные только stat-ать. Какие прочитать - определяется в процессе работы: есть пачка правил "если файл такой, то скипнуть, если такой, то туда, если такой, то сюда, а если вот такой, то надо бы почитать содержимое".
Читать во время обработки правил, которым нужно содержимое - тоже медленно, их может быть десяток на такие файлы.
Делать Var, в которой держать содержимое текущего файла, если оно прочитано? Криво как-то.
Так что вопрос - как организовать local shared mutable state, либо как организовать ленивость.
я думаю, что в стейте нужно хранить отработанные файлы (??). я бы взял список всех файлов (типа того http://stackoverflow.com/questions/2056221/recursively-list-files-in-java) и в core.async pipeline зафигачил.
Для небольшого подмножества нужно прочитать ещё и содержимое, и несколько раз его обработать.
@dottedmag: обязательно в браузере это делать?
@a.espolov: Эээ. Кто сказал про браузер?
Заманиваю @yogthos к нам в hangout в понедельник - http://webmeetups.net/meetups/78
Пишем сейчас прототип платформы для медицинских устройств: придумалась полностью message-driven архитектура: между всеми участниками есть одна большая очередь (ориентировочно kafka), все HTTP запросы, сокеты устройств, web-socket, email, sms и т.п. превращаются в сообщения в очереди - ответы и нотификации это тоже специальные очереди, преобразующиеся в соответсвующие протоколы. А дальше полная свобода - например цикл request-response моделируется двумя очередями - входной и выходной и обработчики, которых может быть сколько угодно, занимаются перекладыванием данных из одной очереди в другую. На фронте есть входящий и исходящий поток - причем обработчик входящих сообщений полностью отвязан от запросов - те потенциально умный сервер может прислать ответ и без запроса - или вообще управлять состоянием фронтового клиента.
Похоже на "The Technology Altar" отсюда: http://www.infoq.com/articles/SOA-anti-patterns
чего-то похожего на лонг-поллинг тоже. и вряд ли появится, ибо кафка все же немного не для этого
а какой лэтенси и нагрузка достижимы с kafkoй на poll? x*10 ms ? я пока только с записью поигрался - там реально быстро.
смотря какой ты клиент используешь. стандартный хай левел консьюмер — полное говно ). но в целом код выглядит примерно так: 1. достать 100кб сообщений. 2. если есть сообщения обработать, если нет то подождать 100мс. 3. повторить 1. т.е. если есть поток сообщений постоянный оверхеда по летенси особо не добавится.
ну и у меня есть православный кафка-клиент с собственной кластеризацией, правильным апи на кор асинке и правильной работой с оффсетами. конечно, с полным отсутствием документации )
@nicola: покажи ) вот настройки реквеста https://github.com/kafka-dev/kafka/blob/master/core/src/main/scala/kafka/api/FetchRequest.scala
в общем вот тут пишут что таки оно умеет как лонг поллинг работать https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-FetchRequest, но в интерфейсе клиента я этого не вижу, надо смотреть реализацию
я кстати фиг знает как такой интерфейс на латенси отразится. но вроде все, что латенси ориентировано все таки не полинг использует, а пушает в сокет пока получается (а то и вовсе через удп работает). aeron например https://github.com/real-logic/Aeron