Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 3 марта 2010< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | voice по запросу | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+3
[00:09:41] ermine вышел(а) из комнаты
[00:20:24] ygrek вышел(а) из комнаты
[01:10:15] gds вышел(а) из комнаты: Replaced by new connection
[01:10:17] gds вошёл(а) в комнату
[03:23:06] Typhon вышел(а) из комнаты
[04:18:15] daapp вошёл(а) в комнату
[08:04:05] gds вышел(а) из комнаты
[08:25:08] iNode вошёл(а) в комнату
[09:00:32] gds вошёл(а) в комнату
[09:37:05] gds вышел(а) из комнаты: Replaced by new connection
[09:37:07] gds вошёл(а) в комнату
[09:37:32] sceptic вышел(а) из комнаты
[09:45:54] Kakadu вошёл(а) в комнату
[09:46:38] Typhon вошёл(а) в комнату
[09:58:53] Sergey Plaksin вошёл(а) в комнату
[10:00:50] Sergey Plaksin вышел(а) из комнаты
[10:11:38] ygrek вошёл(а) в комнату
[10:11:52] ygrek вышел(а) из комнаты
[10:27:31] Kakadu вышел(а) из комнаты
[10:50:12] f[x] вошёл(а) в комнату
[11:03:03] <Typhon> делают ли так в приличных домах, при написании демонов, которые постоянно висеть должы (упрощенно, без логгирования и более тонкой обработки исключений):
let rec worker () = try start_server ... with _ -> worker () ?
[11:03:49] <gds> лично я так не советую, ибо не tail-recursive.
[11:05:14] <gds> кроме того, не всегда это разумно: иногда полезно выдержать паузу и/или ограничить количество попыток перезапуска (возможно, не в этом случае).
[11:06:56] <f[x]> почему не tail-rec?
[11:07:03] <f[x]> я предпочитаю внешними тулзами следить
[11:07:21] <Typhon> пока я просто обозначил перезапуск автоматический на верхнем уровне в случае ошибки. так да, можно добавить доп. логику. но мне кажется такой подход еще и грязноватым: без разбора все (или почти все) ошибки наверх выпускаются
[11:07:39] <Typhon> f[x]: смотреть ps и если нет -- перезапускать?
[11:07:58] <f[x]> потому что камловское исключение поймать-то несложно (лучше в обработке каждого запроса), а вот если демон крэшится то обычно из-за кривых биндингов - а это segfault
[11:08:35] <f[x]> Typhon: monit, upstart, etc
[11:08:58] <Typhon> резонно про сегфолт. обрабатывать на своих местах мне кажется более правильным тоже
[11:09:41] <f[x]> или просто #! /bin/bash while [ 1 ] ; do ./server; mail "admin! ahtung!"; done
[11:11:24] <gds> f[x]: думал, что изнутри with-блока идёт обязательно честный вызов.  сейчас проверил, таки tail-rec.
[11:13:01] <f[x]> угу, в with блоке фрейм исключений уже снят
[11:13:36] <f[x]> хотя в камле там не фреймы, а отдельная цепочка exn-хэндлеров вроде, но суть одна
[11:14:10] <f[x]> http://farm3.static.flickr.com/2751/4401036529_d9c91aa6f1_o.png
[11:15:29] Typhon купил себе Маклейна :)
[11:17:52] <gds> маклейн ок!
[11:19:09] <gds> и картинка тоже ок, кстати.  Ибо зачем ещё теория категорий нужна :)
[11:20:27] <Typhon> в haskell weekly news цитата понравилась -- roconnor:"sounds like you need a zygohistomorphic prepromorphism" )
[11:31:01] <gds> а ещё нагуглилось кросс-мемное: "I'm willing to admit it's a zygohistomorphic prepromorphism, because it most certainly is not lupus"
[12:42:54] ermine вошёл(а) в комнату
[13:39:22] <ermine> gds: ты вот любитель меркуриала? скажи как обновить репу меркуриала?
[13:40:03] <gds> hg pull для затягивания changeset'ов, hg up для обновления рабочей копии
[13:40:17] <ermine> ага, пасиб
[13:42:58] <ermine> gds: а ты шаришь в работе классов в камле?
[13:43:43] <gds> плюс-минус да.
[13:44:10] <gds> сразу скажу, что сегфолт от классов не встретишь, если остальное работает нормально.
[13:45:35] <ermine> gds: если созадть два класса, второй наследовать от первого, а потом использовать функции, которые хотят объекты типа первого класса, но в качестве аргументов совать в них объекты второго класса и нигде не использовать явно методы второго класса, то gc будет вести себя забавно?
[13:46:01] <ermine> gds: примерно так выглядела моя вчерашняя трабла с lablgtk
[13:47:09] <gds> по идее, будет нормально вести себя.  не вижу ничего противоестественного в такой конструкции.
[13:48:04] <ermine> а вот данные из второго класса "утекали"
[13:52:12] <gds> если первый класс будет сохранять ссылки на объекты второго класса, то все данные, используемые в объектах второго класса, тоже будут висеть в памяти.  я даже не знаю, поможет ли тут coercion до первого класса.  не факт.
[13:52:13] <f[x]> что значит утекали? ты можешь нарисовать пример такого поведения без lablgtk? в чистом камле никаких таких фокусов быть не может
[13:53:25] <ermine> утекали - исчезали
[13:54:31] <ermine> не знаю, получится ли
[13:55:00] <ermine> попробую написать, но не сейчас
[14:01:27] daapp вышел(а) из комнаты
[17:01:43] gds вышел(а) из комнаты
[17:39:52] iNode вышел(а) из комнаты
[19:29:05] zert вошёл(а) в комнату
[19:44:20] <zert> здрасте
[19:51:29] Typhon вышел(а) из комнаты
[20:02:34] <zert> а в камле есть какой-нить FFI для C++?
[20:16:09] sceptic вошёл(а) в комнату
[20:20:15] <f[x]> у c++ нет стандартного abi
[20:22:53] <f[x]> можно заточится под конкретную версию конкретного компилятора и сделать обёртку для ocaml-dlopen (olegfink?)
[20:23:57] <f[x]> а чтобы стандартный ffi - вряд ли, надо сначала c++ функции низводить до си
[20:29:36] f[x] вышел(а) из комнаты
[20:40:24] sceptic вышел(а) из комнаты
[20:55:43] digital_curse вошёл(а) в комнату
[21:02:46] gds вошёл(а) в комнату
[21:11:11] Typhon вошёл(а) в комнату
[21:40:21] Kakadu вошёл(а) в комнату
[21:55:46] sceptic вошёл(а) в комнату
[22:04:39] Kakadu вышел(а) из комнаты
[22:05:42] rqqbqm3ljuy9 вошёл(а) в комнату
[22:05:42] rqqbqm3ljuy9 вышел(а) из комнаты
[22:12:08] <olegfink> а ffi для c++ вообще бывает?
[22:12:16] <olegfink> т.е. вроде как abi-то относительно стандартного нету
[22:21:46] jj26l5ugp1zmf90 вошёл(а) в комнату
[22:21:51] jj26l5ugp1zmf90 вышел(а) из комнаты
[22:26:34] lex679 вошёл(а) в комнату
[22:26:35] lex679 вышел(а) из комнаты
[22:56:10] sceptic вышел(а) из комнаты
[23:24:45] ermine вышел(а) из комнаты
[23:46:21] gds вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!