Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 11 апреля 2011< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Вики -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on | Здесь бывает ermine!!111
Конфигурация комнаты
Участники комнаты

GMT+4
[00:04:08] zert вышел(а) из комнаты
[00:54:54] ermine вышел(а) из комнаты
[00:56:44] ygrek вышел(а) из комнаты
[06:57:54] iNode вышел(а) из комнаты
[08:06:39] iNode вошёл(а) в комнату
[08:30:23] komar вышел(а) из комнаты: Replaced by new connection
[08:30:23] komar вошёл(а) в комнату
[09:02:52] gds вошёл(а) в комнату
[09:44:04] gds вышел(а) из комнаты
[11:25:13] gds вошёл(а) в комнату
[11:25:18] Typhon вошёл(а) в комнату
[11:25:40] f[x] вошёл(а) в комнату
[11:30:50] ermine вошёл(а) в комнату
[11:33:55] ftrvxmtrx вошёл(а) в комнату
[11:34:47] ftrvxmtrx вышел(а) из комнаты
[11:35:04] ftrvxmtrx вошёл(а) в комнату
[12:26:54] komar вошёл(а) в комнату
[12:54:48] <gds> а кое-кто -- спамер!
[13:03:50] <f[x]> хто?
[13:05:36] <gds> "Сегодня, 11 апреля 2011 г., с 18:00 до 19:00 по Московскому времени на серверах jabber.ru и xmpp.ru будет произведена замена оборудования, в связи с чем серверы будут недоступны."
хто-хто, ermine конечно.
[13:07:09] f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Вики -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
[13:22:06] zert вошёл(а) в комнату
[13:49:19] <ermine> новое железо
[13:49:46] <ermine> мы на старом конфигурации (2-ядерные) прожили 6 лет
[13:49:52] <ermine> теперь будут 8-ядерные
[13:57:47] <f[x]> станут ли мессаги ходить в чертыре раза быстрее? :)
[13:58:06] <zert> нет, их станет в 4 раза больше
[13:58:09] <zert> и чаще
[15:57:57] ftrvxmtrx вышел(а) из комнаты
[16:05:04] ftrvxmtrx вошёл(а) в комнату
[16:30:41] ftrvxmtrx вышел(а) из комнаты
[16:31:16] ftrvxmtrx вошёл(а) в комнату
[17:29:14] zert вышел(а) из комнаты
[17:37:46] zert вошёл(а) в комнату
[17:52:06] arhibot вошёл(а) в комнату
[17:52:31] <arhibot> zert: я буду упоминать тебя в 4 раза чаще
[17:53:16] <zert> не надо
[18:00:53] ermine вышел(а) из комнаты
[18:01:55] <f[x]> админы бегут с корабля
[18:53:02] Комната запущена
[18:53:02] ermine вошёл(а) в комнату
[18:54:14] Typhon вошёл(а) в комнату
[19:04:33] ftrvxmtrx вошёл(а) в комнату
[19:05:25] ftrvxmtrx вышел(а) из комнаты: offline
[19:11:24] myxomop87 вошёл(а) в комнату
[19:11:48] ftrvxmtrx вошёл(а) в комнату
[19:25:15] ftrvxmtrx вышел(а) из комнаты
[19:25:47] ftrvxmtrx вошёл(а) в комнату
[19:28:05] gds вошёл(а) в комнату
[19:42:11] zert вошёл(а) в комнату
[19:51:48] ftrvxmtrx вышел(а) из комнаты
[19:52:14] ftrvxmtrx вошёл(а) в комнату
[19:52:24] ftrvxmtrx вышел(а) из комнаты
[19:52:38] ftrvxmtrx вошёл(а) в комнату
[19:53:50] myxomop87 вышел(а) из комнаты
[19:57:02] ftrvxmtrx вышел(а) из комнаты
[19:57:51] ftrvxmtrx вошёл(а) в комнату
[20:30:14] komar вошёл(а) в комнату
[20:32:40] ftrvxmtrx вышел(а) из комнаты
[20:33:27] ftrvxmtrx вошёл(а) в комнату
[20:34:07] ftrvxmtrx вышел(а) из комнаты
[20:34:26] ftrvxmtrx вошёл(а) в комнату
[20:38:24] ftrvxmtrx вышел(а) из комнаты
[20:39:06] ftrvxmtrx вошёл(а) в комнату
[20:48:17] ftrvxmtrx вышел(а) из комнаты
[20:50:36] Typhon вышел(а) из комнаты
[21:08:01] ygrek вошёл(а) в комнату
[21:10:20] <gds> оказывается, если в главном пакете в META написать
requires=""
, а в подпакете
requires+="liba1 liba2"
, то при линковке -package главный.подпакет оно не учитывает (или как минимум криво располагает в командной строке) зависимости liba1 и liba2.
Зачем же тогда "+=", казалось бы.
[22:01:56] Typhon вошёл(а) в комнату
[22:23:55] arhibot вошёл(а) в комнату
[22:43:37] arhibot вышел(а) из комнаты
[23:00:16] ftrvxmtrx вошёл(а) в комнату
[23:07:15] arhibot вошёл(а) в комнату
[23:32:23] <Typhon> есть код, в лвт или каком-то другом асинхронном фреймворке, не важно, важно, что есть некие "легковесные потоки" и io. код примерно такой:
accept serv clb
where clb cl = read cl >>= task1 >>= task2 >>= task3 >>= ... >>= taskN >>= (fun res -> write cl res)
таски -- разные, в том числе и тяжёлые, типа передача задания рабочим и ожидание ответа, беготня в базу, опрос сторонних сервисов и т.д.. за это время клиент запросто может отвалиться и нежелательно тратить силы на выполнение запроса, которые никто не прочитает. как правильно обрабатывать такое? в каждом таске спрашивать что-то у клиента и соот-но протокол так разрабывать с этаким heartbeat'ом ? или как? и кто этим должен заниматься, приложение или либка/фреймворк?
[23:32:48] ftrvxmtrx вышел(а) из комнаты
[23:35:03] arhibot вышел(а) из комнаты
[23:35:05] <gds> в идеале надо как-то уметь сказать, что вот данный конкретный поток актуален ровно настолько, насколько жив клиентский сокет.
[23:35:27] <gds> то есть, как минимум эту информацию должно сказать приложение.
[23:36:34] <zert> вот ежели выдернуть шнурок с интернетом, то тцп этого и не узнает, будет висеть долгие времена
[23:36:50] <Typhon> zert, этот кейс понятен, пока не читнём/попишем, ничо не узнаем
[23:37:02] <Typhon> но вариант с хартбитом это предусматривает
[23:37:08] <zert> ага, только так
[23:37:16] <ygrek> poll(0) чтобы обычные случаи ловить
[23:37:26] <ygrek> т.е. когда клиент явно отваливается
[23:37:40] <Typhon> вот явные пока интересуют, допустим.
[23:38:05] <Typhon> ygrek, поймали, а дальше как прибивать функции? :-)
[23:38:28] <ygrek> а в остальном - считать, всё равно если запрос тяжёлый и ресурс важный то у тебя между клиентом ещё кэш стоит который результат сохранит для последующих запросов :)
[23:38:29] <Typhon> epoll/kqueue по идее, тоже должны помочь отловить отваливание? а select?
[23:38:53] <ygrek> идентично - таймаут в ноль
[23:39:05] <ygrek> ещё so_error проверять
[23:39:23] <ygrek> а если ресурс не важный то пофиг :)
[23:39:39] <ygrek> ну как прибивать, exn, и всё раскручивается
[23:40:00] <ygrek> ну или аналог - error continuation
[23:40:42] <gds> Lwt_unix.check_descriptor / register_action есть, может их помучить как-то.
[23:40:42] <Typhon> а, ну то есть где-то в (>>=) проверочка есть, которая exn кидает, не заставлять же пользователя писать в каждом таске проверки?
[23:41:14] ftrvxmtrx вошёл(а) в комнату
[23:41:14] <gds> если совсем плохо будет, можно переопределить >>=
[23:41:21] <Typhon> gds, вот ща разложил исходники lwt, буду смотреть. ещё бы проверить, а он уже не отлупляет сам то
[23:42:43] <gds> если не читать / не писать, откуда он узнает, что эти таски важны только для живого сокета?  искуственного интеллекта скорее всего нет в lwt.
[23:44:54] zert вышел(а) из комнаты
[23:50:18] ygrek вышел(а) из комнаты
[23:50:55] <gds> попробовал переопределить >>= так, чтобы было удобно, да всё кривизна получается, если чисто делать.  Если же хотя бы с мутабельными, то может и выйдет что, но надо думать, а сейчас моск закончился.  Потом ещё подумаю, но не обещаю хорошего решения.
[23:51:03] gds вышел(а) из комнаты
[23:58:29] <Typhon> для gds, кстати, в парвеле, если нету ещё, то наверное, нужны линки. типа уметь привязывать одни ниточки к другим, с тем, чтобы если родитель помрёт, детки подыхали тоже. так можно и вот эту задачу решить -- есть ниточка с хартбитом, а остальные таски, либо цепочка с тасками, на него завязаны, и помрут, если он умрёт (в парвел вроде супервизоры планировались, с их помощью аналогично можно сделать, афаик) -- подсказали в соседней конфе.
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!