Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 27 марта 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+3
[00:00:52] arhibot вышел(а) из комнаты
[00:24:43] f[x] вошёл(а) в комнату
[00:46:24] ygrek вошёл(а) в комнату
[00:52:46] Kakadu вышел(а) из комнаты
[01:01:37] ygrek вышел(а) из комнаты
[01:03:52] Typhon вошёл(а) в комнату
[01:25:48] <Typhon> а зачем эти 99 задач нужны? если нужны обучающие задачи, rosettacode.org , по-моему, лучше даже.
[01:37:34] <gds> факт.  Мужеложство, скотоложество и проложество -- не нужны.
А недавно "practical ocaml" по диагонали посмотрел, так для практических обучающих задач -- это самое то.
[03:02:53] zert вышел(а) из комнаты
[03:18:23] komar вышел(а) из комнаты
[03:21:45] iNode вышел(а) из комнаты
[04:30:30] Typhon вышел(а) из комнаты
[10:57:04] ygrek вошёл(а) в комнату
[11:21:27] Kakadu вошёл(а) в комнату
[11:37:46] komar вошёл(а) в комнату
[12:32:51] ermine вошёл(а) в комнату
[12:55:17] <gds> вот интересно про параллельный велосипед.  "Процессы" могут кидать исключения, в теории.  А исключения не маршаллятся по сети нормально.  То есть, если будут запрашивающий и отвечающий "процесс" на разных хостах, при каком-то несловленном исключении отвечающего процесса -- хрен знает, что делать.  Молча убивать "процесс", а в запрашивающем процессе кидать какое-нибудь Eserverexception?  Либо рассчитывать на будущие возможности перезапуска (supervisors) и повторять запрос к новому запущенному "процессу"?  (который, кстати, может быть таким же неудачным.)
Конечно, самым суровым решением будет забить на это всё, и при нужде возвращать ошибку возвращать `Ok of 'a | `Error of string (строка, полученная Printexc.to_string) -- и маршаллиться будет нормально, и не требуется извращаться.
[13:05:32] arhibot вошёл(а) в комнату
[13:20:50] <ermine> долог путь на Голгофу
[13:21:06] <ermine> блин, elinks на google.ru падает в кору
[13:24:01] ingham.ka вошёл(а) в комнату
[13:24:43] arhibot вышел(а) из комнаты
[13:24:46] arhibot вошёл(а) в комнату
[13:26:14] arhibot вышел(а) из комнаты
[13:42:52] arhibot вошёл(а) в комнату
[13:51:16] Typhon вошёл(а) в комнату
[13:56:28] <Typhon> gds, я думаю, что нужно ловить все исключения в процессе, и отправлять может тип error какой-то, или полуморфный вариант, ага. + к этому, то что на принимающей стороне это тоже будет мессага и обрабатываться будет как есть, а не какой-то странный ексепшн, который нужно отдельно ловить. с перезапуском тут видится тоже проще, если кидаются сообщения, потому что супервизоры могут как раз прозрачно ловить ошибочные такие сообщения и повторять запрос.
[14:22:27] ygrek вышел(а) из комнаты: Replaced by new connection
[14:22:36] ygrek вошёл(а) в комнату
[14:27:16] <gds> Typhon: ага.  Как понимаю, то, что получает вызывающая сторона, точно всегда должно состоять из хотя бы `Ok of 'a | `Error of string.
А насчёт того, какие значения принимает обрабатывающий процесс на вход -- какие идеи?  Пока -- строго тот тип, который объявлен (например, процесс имеет тип process int, значит обрабатывает именно int, необёрнутый).  Понадобятся ли какие-нибудь обязательные команды процессу?  Сходу -- команда "убей себя".  То есть, надо ли делать для процесса с типом process 'i так, чтобы он на вход получал `Msg of 'i | `Cmd of [`Shutdown | ...]?
[14:27:43] <ermine> ну вы тут пишите тааакие простыни...
[14:29:58] <Typhon> gds, надо подумать, будут ли доступны эти команды пользователю (тому, кто пишет тельце процесса). если да, то нужно делать `Msg of 'i и т.д.. а если это системное, то необёрнутые показывать. с одной стороны, обработчики комманд должны быть системные (или как минимум должны иметься дефолтные их значения). но на шатдаун повесить какое-то действие пригодится может тоже.
[14:34:14] ygrek вышел(а) из комнаты
[14:34:33] ygrek вошёл(а) в комнату
[14:38:05] <gds> Typhon: во, как раз про действия типа "закрыть файл" или "освободить внешний ресурс" думал, когда думал, вытаскивать ли это наружу.  Получается, надо.
То есть, можно внутри сделать `Msg of 'i, но для процессов, которым это не надо, сделать "комбинатор", который будет разворачивать `Msg of 'i до 'i, и так и давать процессу.
А ещё меня эрланговский gen_server волнует, где зачем-то вывели отдельно три ручки: handle_{call,cast,info}.
[14:44:46] <ermine> gds: а потом на твоем творении можно будет соорудить камлевую ноду ырланка?
[14:45:54] <Typhon> на творении gds'а ерланк будет не нужен и умрёт!!!!
[14:46:13] ygrek вышел(а) из комнаты
[14:46:38] <Typhon> gds, разницу что-то между этими ручками не вкуриваю :-(
[14:46:44] <ermine> Typhon: не, мне нужна нода из оксигена к ырланку
[14:47:45] <Typhon> ermine, это надо к валкину, он же эксперт по сочленению ^_^ или ocaml-zmq + erlzmq (но ocaml-zmq, пока, блокирующий будет).
[14:48:49] <ermine> Typhon: валкина-тролля - лесом
[14:51:06] <Typhon> gds, а, с _info вроде понял, cast/call отличаются, потому что с той стороны позвать можно по-разному. в парвеле, я так понимаю, это будут кейсы одного паттерн матчинга, правильно? как раз будет `Cmd of [`Timeout | `Shutdown | `UnknownType ] ]
неизвестные типы надо, по идее, ловить, если между процессами идёт обмен -- мало ли кто гадость пошлёт какую.
[14:52:02] arhibot вышел(а) из комнаты: Replaced by new connection
[14:52:03] arhibot вошёл(а) в комнату
[14:52:48] <ermine> неизвестные типы надо кодировать jsonом
[14:53:03] <Typhon> bson'ом!11!!
[14:53:21] <ermine> аштойта?
[14:53:32] <ermine> видела такую репу у тебя, но не поняла чо это такое
[14:53:46] <Typhon> binary json
[14:53:54] <Typhon> http://bsonspec.org/
[14:54:23] <ermine> а
[14:54:31] <ermine> да хоть asn.1
[14:54:56] <Typhon> asn.1 нету для окамеля компилятора же.
[14:55:30] <ermine> я где-то добыла пдф о том, как писать его парсер на камле
[14:55:42] <ermine> он валялся вроде где-то на inria.fr
[14:55:48] <ermine> точнее для caml light
[14:56:12] <Typhon> парсер на камле zert, вроде бы, написал.
[14:56:46] <ermine> не доделал же
[14:57:38] <ermine> боюсь, что и такая же судьба настигнет творения gds'a
[15:10:47] ygrek вошёл(а) в комнату
[15:11:57] <gds> ermine: "соорудить камлевую ноду ырланка" -- такой цели нет, и, учитывая, что такую цель уже достигали, если правильно помню, то у меня такой цели и не будет.
[15:12:32] <Typhon> """ лучше бы я не тратил время на попытки осознать хаскель, а потратил бы его на окамль""" -- осознают люди!
[15:12:59] zert вошёл(а) в комнату
[15:19:55] <gds> Typhon: про кейсы матчинга -- видимо как-то так; будут какие-то общие команды, прописанные в типах.  Вот не знаю, делать ли симметричным обмен сообщениями.  Если да, то и запрос, и ответ будут всегда `Msg of сообщение | `Cmd of [ "серверные" сообщения типа `Timeout | "клиентские" сообщения типа `Shutdown ].  Вроде не так уж плохо.
Про неизвестные типы -- думаю как-то "отрефакторить" сериализацию.  Потому что и на гердовское творение надо посмотреть, где он использует общую память, и в пределах процесса вообще можно просто значения передавать, и нужно иметь возможность сделать выбор между "быстро и опасно" (Marshall) и "медленно и безопасно" (json или s-выражения, например)
[15:22:35] <gds> ermine: "боюсь, что и такая же судьба настигнет творения gds'a" -- если бы делал "от балды", так и было бы.  Мало, что ли, хороших проектов я загубил :)  Но у меня есть штука, за которую платят деньги, и в этой штуке кое-что грамотно реализовать именно через передачу сообщений.  Собственно, сейчас идёт процесс взаимного натягивания одного на другое, и вот меняются концепции, апи, всё это уточняется, и всё такое.  До состояния "главная программа работает" уж точно разовью парвел.
[15:23:19] <gds> Typhon: "осознают люди!" -- это из твитора, небось, судя по отсутствующей гугловыдаче?
[15:23:32] <Typhon> не, из чятика одного :-)
[15:24:09] <Typhon> (на c.j.r, но без логов :-( )
[15:24:27] <gds> ясно, тоже хорошо.
[15:27:09] <zert> вот нащот парсера на окамле. я думаю, а не выложить ли то, что есть, в паблик? но меня удерживают от этого несколько моментов:
1. там всё сделано через жопу, некрасиво и неудобно
2. сдаётся мне, что это всё надо просто выкинуть и начать с чистого листа
[15:27:38] <Typhon> zert, выложи.
[15:27:46] <Typhon> хотя бы, в качестве истории.
[15:27:49] <zert> гг
[15:28:03] <zert> надо специальный аккаунт на гитхабе создать, чтобы не дискредитировало
[15:28:17] <zert> или даже на битбукете, чтобы уж точно не подумали, что это я делал
[15:28:26] <Typhon> зачем? наоборот, просто коммент "а вот тут я показываю своим падаванам, как делать не надо"
[15:28:52] <zert> там настолько много сделано, что больше похоже на фейл, чем на пример того, как делать не надо
[15:29:18] <zert> и компилится это всё через дупу, ибо по-нормальному не придумал
[15:29:35] <zert> в следующий раз буду начинать делать это на х-е
[15:30:02] <Typhon> чтобы совсем фейлово было? ^_^
[15:30:43] <zert> там со сборкой попроще
[15:30:56] <Typhon> или там atto-parsec какой-нибудь всё за тебя делает? :-)
[15:44:28] <zert> https://github.com/Zert/oasn1c
[16:39:18] <ermine> а где там буква z?
[16:40:02] ygrek кстати выложил патчи к ragel, если кто захочет пощупать
[16:42:34] <zert> ermine: шо?
[16:43:44] <ermine> zert: тьфу, она большая :))
[16:44:04] <zert> шо?
[16:44:43] <ermine> ну искала в нике маленькую z, а она оказалась большой
[16:45:07] <ermine> а чо - гитхаб учитывает регистр?
[16:46:22] <zert> вроде нет. если вводить с маленькой буквы, то попадёшь туда же
[16:47:06] <ermine> а еще там мейкфейлы...
[16:47:42] <ermine> zert: переходи на оазис уже
[16:48:24] <zert> я про оазис узнал где-то через год после того, как забросил
[16:49:57] <ermine> надо будет завтра запустить емакс и чонить поделать
[16:51:13] <Typhon> btw, нормальный react, хотя бы с метой (я не говорю уж об оасисе), есть где-то? на днях ставил, на нашёл с метой нормальной, а ведь вроде было (или я сам правил). только во всяких рпмках
[16:51:35] arhibot вышел(а) из комнаты
[16:51:37] arhibot вошёл(а) в комнату
[16:53:38] <ermine> в мете достаточно подправить три строчки: каталог, имя файла для натива и для байткода
[16:53:47] <ermine> остальное оставить как есть
[16:54:40] <ygrek> камль как он есть, скачал либу поправил пяток строчек там и сям и с б-жей помощью собрал
[16:56:23] <ermine> факт
[16:56:44] <ermine> главное, чтобы уже был скилл на божью помощь
[16:57:21] <Typhon> да мне просто казалось, что уже где-то патченное лежит.
[16:57:48] <ermine> Typhon: а! ты там тоже ставишь оксиген со всеми депендсами ручками?
[16:58:05] ygrek вышел(а) из комнаты
[16:58:06] <Typhon> не-не, упаси б-же
[16:58:12] <Typhon> снова пройти это я не готов
[16:58:14] ygrek вошёл(а) в комнату
[16:58:24] <Typhon> для оксигена бутстрап же был, недавно, или что-то типа того
[16:58:58] <ermine> Typhon: а на какой операционке?
[17:00:04] <Typhon> бутстрап? или оксиген? в прошлый раз оксиген на freebsd6 собирал, сейчас если буду, то буду на 8 или убунте. реакт на макоси собирал, когда хотел мету найти
[17:00:53] <Typhon> https://github.com/williamleferrand/amanar -- кстати.
[17:01:30] <ermine> Typhon: просто подумалось, что можно отдать тебе мои бинарники для восьмой фри
[17:02:16] <Typhon> о, ну пока 8фри нету, чуть пожже будет 64битная. если у тебя такая же, можно взять, пожалуй :)
[17:03:02] <ermine> учти, что у меня двенадцатое камло
[17:03:44] <ermine> я вот тут тоже подумала покидать свои бинарники на сервер, чтобы тоже не возиться со сборкой
[17:04:17] <zert> а что можно делать в camluniti?
[17:04:59] <ermine> сцайт песать же
[17:05:33] <zert> с меня сайтописака знатный, ага
[17:06:02] <ygrek> код писать, код
[17:06:23] <ermine> у меня вот есть недокапча, ее математически надо бы дожевать
[17:07:17] <ermine> еще есть полиглот, система для переводов
[17:07:39] <ermine> надо в гитхаб засунуть
[17:07:59] <ermine> в надежде на кривые патчи
[17:09:57] <ygrek> ermine: ты бы sulci зарелизила нормально
[17:12:18] <ermine> ygrek: я там до операции начала переходить на полиглота, а так - у сульци никогда релизов не было
[17:28:20] ygrek вышел(а) из комнаты: Replaced by new connection
[17:28:21] ygrek вошёл(а) в комнату
[17:44:33] <ermine> ой, а в даркс оазиса изменения появились
[17:46:00] <ermine> fix type да correct typo
[17:46:29] <ermine> s/type/typo/
[17:50:00] <Typhon> в ирц обещали odb зарелизить, каж-ся
[18:34:41] ermine обновила у себя оксиген
[18:36:24] iNode вошёл(а) в комнату
[18:37:25] <komar> ermine: http://dump.bitcheese.net/images/agajyti/IMAG0545.jpeg
[18:40:52] <ermine> та ну
[18:47:38] <ermine> komar: а ты техктиле подточил?
[18:48:08] <komar> Не-а.
[18:49:15] <ermine> вижу
[18:50:32] <Typhon> что-то я туплю, или оасис:
  XMETAType: syntax      
  XMETARequires: camlp4  
oasis setup-dev
W: Field XMETAType is set but matching plugin is not enabled.
в плагинах МЕТА, ДевТулс и СТД
[18:54:28] <ygrek> XMETAType: syntax
а это что за такое вообще?
[18:55:55] <Typhon> это мне не нужно, кстати, это для синтаксического расширения -- добавки в мету, если я правильно понял.
[18:56:24] <Typhon> мне нужно для билда синтакс использовать.
[18:56:49] <Typhon> про ворнинг этот, кстати, лёгалл добавил issue к оасису.
[18:59:29] <ermine> Typhon: посмотри у меня на гитхабе в logger
[18:59:42] <Typhon> я там и смотрю, ага :D
[19:00:25] <Typhon> но там у тебя для синтаксического расширения, а мне это пока не нужно, мне нужно сказать, что надо -pp camlp4 поюзать.
[19:00:33] <ermine> а плугин у тебя включен?
[19:00:42] <ygrek> просто в _tags добавь camlp4
[19:00:59] <Typhon> вот про это решение знаю, но это не тру, не?
[19:01:10] <Typhon> оасис не умеет за меня это сделать?
[19:01:26] <ermine> ну у меня pa_logger внутри пакета и не используется
[19:01:47] <ermine> те xmeta* чтобы просто написать чота в мету
[19:02:03] <Typhon> да, это я уже понял :-)
[19:02:14] <ygrek> по-моему вполне тру :)
[19:03:27] <Typhon> ну там же пишут белым по-чёрному, "ду не едит" файл, подкрепляя мои сомнения!
[19:03:33] <ermine> а если свое pa_ используется внутри проекта, то смотреть надо как в lwt сделано и списывать оттуда
[19:03:52] <Typhon> ermine, не, у меня не своё, у меня просто стрим парсеры.
[19:03:59] <Typhon> но на лвт сейчас гляну
[19:04:01] <ygrek> там маркеры есть
[19:04:05] <ygrek> в extunix смотри
[19:04:43] <Typhon> флаги которые?
[19:05:05] <ermine> Typhon: для стрим парсера надо только camlp4o_syntax в _tags
[19:05:11] <ygrek> угу
[19:06:24] <Typhon> это я понимаю, но не хочу :-) мне кажется, что это не прямо.
[19:06:49] <Typhon> хочу, чтобы оасис пихнул это туда за меня
[19:07:05] <ermine> оазис не генерит вставки _syntax в _tags
[19:07:08] <ygrek> ну тогда жди 0.3.0
[19:11:34] <Typhon> ага, про маркеры понял, это уже прямее, воспользовался. а в 0.3.0. это планируется, получается, или надо каким-либо образом поконтрибьютить?
[19:16:00] <ygrek> планируется вроде, но поконтрибутить то можно
[19:16:13] <ygrek> оно давно уже планируется, но прогресса пока не густо
[19:19:13] <Typhon> "When using -syntax, the META variable 'preprocessor' must be set" хм, не вижу, чтобы в extunix, например, что-то помимо добавления syntax в _tags делалось.
[19:21:34] <ygrek> pkg_camlp4, syntax_camlp4o
[19:23:03] <Typhon> да, поправил ща. но , оно итак было выше.
[19:23:14] <Typhon> <src/*.ml{,i}>: pkg_camlp4
[19:23:21] <Typhon> в том, что сгенерировал оазис.
[19:24:57] <ygrek> хм
[19:25:15] <ygrek> где код?
[19:25:53] <Typhon> paste.in.ua/2000
[19:26:50] <Typhon> http://paste.in.ua/2002 -- _tags
[19:27:41] <Typhon> ах ты ж, camlp4.lib vs. camlp4
[19:28:37] <ygrek> не должно влиять, оно ж зависит
[19:30:17] <Typhon> но если в BuildDepends camlp4 вместо camlp4.lib указать, а в _tags оставить только syntax_camlp4o -- то всё хорошо. камлобилд как-то неправильно зависимости разруливает?
[19:46:12] <ygrek> камлобилд тут не при чём
[19:46:20] <ygrek> ocamlfind ocamlc -verbose -package camlp4.lib -syntax camlp4o q.ml
[19:47:45] <ygrek> наверное переменная preprocessor из META не вытягивается по зависимостям
[19:48:07] <ygrek> если это и баг, то в findlib
[19:48:11] <ygrek> а может это фича
[19:51:56] <ygrek> ну да, в extunix camlp4.extend - он явно preprocessor указывает
[19:52:02] <ygrek> так что так задумано видимо
[20:50:05] <Typhon> https://github.com/purcell/darcs-to-git  -- это штука работает.
[20:57:09] <komar> Гадость.
[21:01:15] <Typhon> наоборот.
[21:06:22] <ermine> я использовала какой-то там конвертер, мне результат потом оплевали
[21:16:29] arhibot вышел(а) из комнаты
[21:20:46] Typhon вышел(а) из комнаты
[21:21:18] Typhon вошёл(а) в комнату
[21:22:37] rren вышел(а) из комнаты
[21:25:23] komar вышел(а) из комнаты: Replaced by new connection
[21:25:24] komar вошёл(а) в комнату
[21:26:53] ingham.ka вышел(а) из комнаты
[22:10:40] Typhon вышел(а) из комнаты
[22:51:07] <ermine> zert: какой там нонче последний спек по asn.1? x.68x/69x?
[22:52:01] <zert> их там куча целая
[22:52:33] <zert> 68{1,2,3}, 69{1,2,3}
[22:53:15] <ermine> zert: ну я в смысле что в 21 веке новых спеков не вышло?
[22:53:29] <zert> ггг
[22:53:31] <ermine> а, подверсии
[22:54:10] <ermine> как все сложно
[22:57:29] <zert> вот тут меня ещё Лев поучает: http://habrahabr.ru/blogs/erlang/64111/
[22:57:49] <ermine> а еще этот разброд межу iso и itu-t
[22:59:31] <zert> КМПКВ, всех объединим, дабы не было разбродов и шатаний
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!