Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 12 апреля 2011< ^ >
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
Конфигурация комнаты
Участники комнаты

GMT+4
[00:01:40] ermine вышел(а) из комнаты
[00:01:47] ermine вошёл(а) в комнату
[00:21:00] ermine вышел(а) из комнаты
[01:57:51] komar вышел(а) из комнаты
[02:29:53] komar вошёл(а) в комнату
[03:24:43] komar вышел(а) из комнаты
[03:34:23] komar вошёл(а) в комнату
[04:17:37] Typhon вышел(а) из комнаты
[08:54:02] gds вошёл(а) в комнату
[10:09:23] Sergey Plaksin вошёл(а) в комнату
[10:18:08] <gds> Typhon: про линки -- идея хорошая.  В идеале бы не просто линк (1), а указание на то, что "вот группа процессов, и если умирает один, то прибивать всех сразу".  Но не знаю, как это будет выглядеть, если обрабатываем запрос клиента.  Получается, для обработки запроса клиента без хартбита будет выделен отдельный "сервер" (в терминах https://bitbucket.org/gds/parvel/src/1bc1c224051c/parvel.mli line 90), который будет вычислять конечный ответ (но не слать его клиенту пока!), и затем, для наладки хартбита, надо будет 1. создать процесс (в терминах парвела), делающий хартбит и выходящий с ошибкой при отвале клиента, и принимающий команду `Shutdown, заставляющую его молча выйти, 2. создать супервизора над исходным сервером и процессом-с-хартбитом с указаниями "вот это -- главный счетовод, его результат будет результатом всей работы", "группа состоит из этого сервера и этого процесса-с-хартбитом", и "ошибётся один из группы -- убить всех", 3. при окончании обработки запроса главный счетовод возвращает результат и выходит, супервизор шлёт `Shutdown всем процессам, ждёт их завершения и возвращает результат.  По итогу получается так, что: 1. во вложенном блоке -- в периоде жизни супервизора -- общается с клиентом только процесс-с-хартбитом, 2. после завершения реальных вычислений мы завершаем хартбит и возвращаем результат.
(1) -- потому что это потребует менять тип "команды процессов" -- добавить `Дитё_сдохло, а через супервизоров можно закодировать это поведение без изменения типа, и более высокоуровнево.  (хотя и некритично это изменение.)  С другой стороны, линки -- это более низкоуровнево и более универсально, но сложнее вписать их в "сервера", чтобы разумным образом можно было бы обрабатывать асинхронные события типа "дитя подохло".
[10:21:21] <gds> а ещё из текущих нерешённых проблем парвела -- то, что "сервер" у меня в любой конкретный момент либо ждёт запроса, либо работает над ним (и в конце возвращает ответ), и надо как-то придумать так, чтобы при поступлении кучи запросов можно было бы нарожать кучу серверов (так как абстракция "сервер" для того и нужна лично мне).  Но "куча" бывает разной -- бывает так, что нужно ограничить "не более N серверов одновременно" (и "не более M простаивающих"), бывает, надо иметь общее состояние у каждого сервера, а бывает раздельное.  Кроме того, иногда критично то, что сервер должен быть строго один и не более.  Подумалось, что общее состояние можно вводить как какую-нибудь ref что-то, видимую всем серверам, а по умолчанию делать раздельное состояние, и делать комбинатор, который берёт на вход параметры (N, M, условия убиения), берёт (unit -> server 'i 'o) для рождения новых серверов, и запускает их в новых потоках при необходимости (либо шлёт запросы простаивающим серверам, соответственно).
[10:21:38] Typhon вошёл(а) в комнату
[10:46:16] ermine вошёл(а) в комнату
[10:59:12] ftrvxmtrx вышел(а) из комнаты
[11:04:50] Kakadu вошёл(а) в комнату
[11:21:52] iNode вошёл(а) в комнату
[11:31:31] iNode вышел(а) из комнаты
[11:32:55] zert вошёл(а) в комнату
[11:42:25] iNode вошёл(а) в комнату
[11:43:30] <zert> gds: ты уже дописал свой ерланг?
[11:43:31] komar вышел(а) из комнаты
[11:48:59] ftrvxmtrx вошёл(а) в комнату
[11:49:01] <gds> zert: как раз в процессе, но, так как времени/мозга нет, и пишу только то, что нужно здесь и сейчас.  Вот, кстати, выше изложил текущие волнующие меня вопросы ( http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/04/12.html#10:18:08.746441 ).  Если есть какие-нибудь идеи, буду рад помощи (в том числе взгляду на проблему со стороны программиста, знающего/умеющего эрланг, в том числе критика).
[11:51:39] <zert> ну вроде всё разумно выглядит
[12:00:41] Kakadu вышел(а) из комнаты
[12:00:52] Kakadu вошёл(а) в комнату
[12:05:58] <gds> zert: это меня радует.  Значит, если других предложений не будет, буду потихоньку ползти в том направлении.
[12:06:30] <Kakadu> gds: а помнишь ты компилятор хотел писать?
[12:14:05] <gds> Kakadu: в последний раз -- типа транслятора, скорее.  Однако потом появились более важные задачи, чем нормально работать с js.
[12:14:19] <gds> да и js_of_ocaml (или как там его) вроде нормальный уже.
[12:14:39] <gds> для низкоуровневого ещё понадобится, но не сейчас и не в ближайшее время уж точно.
[12:15:16] <Kakadu> ясно
[12:37:07] f[x] вошёл(а) в комнату
[12:59:10] komar вошёл(а) в комнату
[13:36:41] Cаt(FР-Run)77 вошёл(а) в комнату
[13:36:41] <Cаt(FР-Run)77> Как-то раз, четыре хуя
Танцeвали краковяк.
Один хуй, другому хую
Хуем по-хую, хуяк!
папизделали ботинки на резиноаом ходу ходит папа по избе бьет мамашу по пизде
[13:37:16] <Kakadu> gds: молот в студию
[13:39:03] Cаt(FР-Run)77 запретили входить в комнату
[14:41:30] gds вышел(а) из комнаты
[15:12:57] Sergey Plaksin вышел(а) из комнаты
[15:33:44] gds вошёл(а) в комнату
[16:06:12] iNode вышел(а) из комнаты
[16:27:03] ermine смотрит на конфликт parse_implem из camlp4 с stream parser и думает, что stream parser надо срочно менять на комбинаторные парсеры
[16:31:05] <ermine> синтаксис стрим парсеров реально опасен для разработки программ
[16:34:09] iNode вошёл(а) в комнату
[18:41:41] <Typhon> ermine: чем опасен?
[19:00:08] <ermine> Typhon: тем, что конфликтует со стандартным синтаксисом камля
[19:00:35] <ermine> let abc = marser | ... - это уже не камло
[19:00:49] <ermine> а мусор какой-то
[19:01:40] <ermine> Typhon: а метода parse_implem из класса Камло в Camlp4 умеет пропускать сначала через сторонний препроцессор или как-то еще прогонять через препроцессор?
[19:02:34] <ermine> понимаете, все утро неспеша и бодро цамлила сульцю, приучая его к новой системе переводов, и вдруг - бац, стрим парсеры!
[19:03:19] Kakadu вышел(а) из комнаты
[19:39:06] iNode вышел(а) из комнаты
[19:48:40] Typhon вышел(а) из комнаты
[20:23:57] ftrvxmtrx вышел(а) из комнаты
[20:36:08] iNode вошёл(а) в комнату
[20:55:40] Typhon вошёл(а) в комнату
[20:59:55] ygrek вошёл(а) в комнату
[21:55:39] ermine вышел(а) из комнаты
[22:05:53] <ygrek> и тут из-за угла - бац - стрим-парсеры
[22:09:55] ftrvxmtrx вошёл(а) в комнату
[22:11:18] avysk вошёл(а) в комнату
[22:11:22] avysk вышел(а) из комнаты
[22:49:27] ygrek вышел(а) из комнаты
[22:58:06] Typhon вышел(а) из комнаты: Replaced by new connection
[22:58:09] Typhon вошёл(а) в комнату
[23:16:36] Typhon вышел(а) из комнаты: Replaced by new connection
[23:16:39] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!