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

GMT+4
[00:00:21] Typhon вошёл(а) в комнату
[00:35:11] <Typhon> в винде zmq-шный getsockopt(ZMQ.FD) возвращает тип SOCKET. нассколько я понимаю, это тоже инт. правильно ли это? и верно ли то, что приведя этот инт в камле к file_descr, всё заработает?
[00:35:58] <gds> в винде SOCKET != file_descr, вроде.  Сейчас посмотрю точно.
[00:36:58] <Typhon> а где бы ещё посмотреть пути конвертации этого SOCKET в file_descr? (пока лезу в сорцы камла на тему похожего).
[00:37:12] <gds> нашёл.
[00:37:32] <gds> otherlibs/win32unix/unixsupport.h (а то и .c)
[00:37:55] <gds> почему полез -- потому что ломал их.  вот этими вот руками.
[00:38:00] gds показывает руки
[00:39:13] <Typhon> :-) спасибки, сейчас окунусь.
[00:40:38] <Typhon> а то ребятки с ocaml-zmq / caravan что-то непонятное сделали, caravan не собрался внезапно, ocaml-zmq веточка caravan-merge -- это набросок. ocaml-zmq один собрался, но там нету get_fd (который НУЖЕН). я быстренько наваял патч, works for me, но про венду даже и не подумал (грешен!).
[00:41:24] <gds> а зачем get_fd?
[00:42:18] <Typhon> в лвт засунуть ^_^
[00:43:35] <Typhon> хотя, может и не нужно, может и неправильно всё туда совать, а надо как-то совсем по-другому делать :-(
[00:44:22] <gds> в лвт -- чотко, дерзко.  А вот как лвт+венда -- не знаю точно, хватит ли там file_descr.  Через win_alloc_socket оно можно, факт.
[00:45:11] <gds> вообще не знаю, как точно лвт работает с такими штуками.  Будь нужда -- копался бы в его внутренностях.
[00:46:21] <Typhon> вообще, мне пока нужно, чтобы это эгоистично у меня на юниксах заработало :-[ так что даже не знаю пока, стоит ли погружаться
[00:50:47] <ermine> утопляйся, утопляйся
[00:51:01] <gds> но на юниксах делаешь Obj.magic/сишечьку и всё работает?  Если да, то зафиксируй этот момент, как-нибудь разберёмся.  Либо win_alloc_socket, либо как-нибудь эдак.  По идее, всё получится.  Но геморройность зависит от того, как в лвт сделают вендовую поддержку.
[00:51:54] <Typhon> мне б юникс_файл_декср получить, а дальше у лвт есть of_unix_file_descr -- получаем lwt_unix.file_descr
[00:52:40] <gds> откуда точно нужно получить -- из SOCKET?  Это же, в классических раскладах, виндовый тип.
[00:52:49] <Typhon> https://github.com/pdhborges/ocaml-zmq/pull/1  -- вот я тут уже пул реквест заслал.
[00:53:22] <Typhon> ну под юниксами -- из инта, а подвендами -- как говорит автор -- из SOCKET. (я zmq не ставил, и в кодэ пока не смотрел, чтобы проверить).
[00:56:26] Kakadu вышел(а) из комнаты
[00:56:27] <gds> а автор не дезинформирует?  А то знаем мы таких.  Если поддержка венды интересна, лучше посмотреть в кодэ.  Конечно, сегфолт быстро покажет, кто где приводил типы, но всё же.
[01:01:41] <Typhon> http://paste.in.ua/2216/  + http://paste.in.ua/2217/ --- таки получается, не дезинформирует
[01:18:02] <gds> Typhon: не факт, в идеале надо посмотреть, что в эти переменные пихают в нормальном режиме работы.  Однако я в последнее время стал ограниченным, и распространяю эту ограниченность.  В общем, идея такая: если пока нет цели завести это дело падвендой, проще забить.
[01:27:08] ermine вышел(а) из комнаты
[01:29:45] ygrek вышел(а) из комнаты
[01:36:28] <Typhon> http://paste.in.ua/2218/ -- ну я нафигачил вот так, оно должно работать, обновил пул реквест, почитаем, для меня под юниксами оно работает уже, так что пока ок.
[01:42:47] <gds> Typhon: в теории -- может течь, так как исходный Val_int не выделяет память, и лично мне неизвестно, с какой целью и как часто его вызывают, поэтому может оказаться так, что win_alloc_socket будет выделять память каждый раз, когда нужно просто взять file_descr.  Сраная сишечька.
[01:49:18] <Typhon> по идее, оно один раз вызывается. выделять память под Unix.file_descr? ну так, наверное, это ок, иначе что же, помнить мне, делали ли для этого zmq_socket get_fd и возвращать старый Unix.file_descr? нам же по-любому возвращается гадость какая-то (SOCKET), а нам нужен file_descr, так что его куда-то конвертить и выделить под это память нужно. там уж, наверное, мусорский пусть разбирается, подчищать или нет, пользуются ли этим фд или не. или есть правильные пути здесь какие-то?
[01:58:54] <gds> так оно по-любому выделяет память.  Если функция зовётся редко или вообще постоянное число раз, то всё хорошо.  Будь нужда, я бы изучил это дело.  Вдруг окажется, что действительно, раз-два и всё.
Мусорский -- идея.  Может и weak-структуры помогут, но сходу не могу сообразить.
Обламывает то, что в винде это выделенный блок, известный мусорщику, а в юниксах это целое число.
[01:59:34] gds вышел(а) из комнаты
[02:47:23] Typhon вышел(а) из комнаты
[03:52:21] komar вышел(а) из комнаты: Replaced by new connection
[03:52:21] komar вошёл(а) в комнату
[07:56:05] iNode вошёл(а) в комнату
[08:17:34] ermine вошёл(а) в комнату
[10:36:32] ftrvxmtrx вышел(а) из комнаты
[10:47:28] arn вошёл(а) в комнату
[10:55:02] ygrek вошёл(а) в комнату
[10:55:17] ygrek вышел(а) из комнаты
[10:55:32] ygrek вошёл(а) в комнату
[11:04:53] ygrek вышел(а) из комнаты
[11:04:55] ygrek вошёл(а) в комнату
[11:35:17] Typhon вошёл(а) в комнату
[11:36:38] ftrvxmtrx вошёл(а) в комнату
[11:54:24] gds вошёл(а) в комнату
[11:54:35] <Typhon> кстати, https://github.com/graydon/rust/ <- на камле, годный язык, судя по всему (будет).
[11:56:37] <Typhon> https://github.com/graydon/rust/wiki/Language-FAQ
[11:58:30] <gds> вроде интересно, поглядим.
[12:00:15] <Typhon> http://blog.mozilla.com/graydon/  — вот вроде блог, а вот твитор http://twitter.com/#!/rustlang с новостями. да, по описанию и целям — очень ок!
[12:50:40] <gds> кстати вот, собираюсь сделать в парвеле очень простой протокол общения между процессами (в том числе по сети), и пользовательскую сериализацию.  То есть, клиентов можно будет писать на любых языках.
[12:51:32] <Typhon> в смысле ещё одну сериализацию? :-) или сущ-ий протокол, типа thift, protobuf, etc.?
[12:53:54] <gds> протокол сам по себе будет текстовый (для текстовых данных, конечно) и тупой -- вроде описывал, "длина + разделитель", ну может с модификациями.  А сама сериализация -- хоть через json гонять, например.  Да, получается так, что не выйдет "из сокета прямо в структуру данных языка", только через строку, но вроде это не проблема.
Или где-то кизяк в дизайне]?
[12:58:57] <gds> то есть, сообщение = ограниченная длиной и на всякий случай разделителем строка, содержащая информацию о том, какого типа сообщение (строка с описанием), чем оно сериализовано, и непосредственно само сообщение.  (например, "тип \n метод_сериализации \n сообщение")
[13:00:50] <gds> либо через этот "тупой протокол" буду посылать строки, соответственно, "начало-пакета", "тип", "метод_сериализации", "сообщение", "конец-пакета".  В чём плюс -- не надо будет String.blit из одной строки в другую, что актуально для сообщения, которое может быть не маленьким.
[13:02:29] <gds> thrift смотрел, не понравилось чем-то, но субъективно.  protobuf можно было бы, но получается завязка на конкретный непростой протокол, тогда как у меня протокол исключительно прост ("длина \n сообщение \n \n").
[13:19:59] <gds> начал прикидывать план общения хозяина с рабами: http://paste.in.ua/2220/ , но многое не ясно.  Особенно про поименованные процессы.  Один в один с эрланга сдирать не выйдет, так как там есть фишечка "запустить произвольный код на нужном хосте", а у меня такой фишечки нет, так как в общем случае процессы могут отличаться, и функцию не передашь.
[13:30:02] <ermine> когда новый оазис появится?
[14:15:46] <gds> думаю, наверное, как-то так сделать: рабские логические процессы в пределах процесса ОС будут регистрировать себя под какими-то именами, а при необходимости послать сообщение сначала как бы отрезолвим процесс -- из host id + process_name получим host id + local pid = global pid, и далее будем слать сообщения на нужный процесс.  Это вызовет необходимость хранить соответствия "process name -> local pid", что не проблема.  С другой стороны, не нравится вот что: представим, я запустил несколько процессов ОС и хочу слать им сообщения примерно равномерно загружая -- это значит, что мне надо будет сначала добыть список хостов, затем у каждого хоста спросить "а нет ли у вас процесса с именем 'суперобработчик'?", затем запомнить их пиды, и отсылать сообщения на них.  Ок ли это?..
[15:07:01] <gds> в общем, вывод-минимум: на каждом узле (в данном случае -- на каждом ОС-процессе) нужно запускать "службу имён", умеющую резолвить "имя => локальный пид", и передавать пид этой службы отдельно, при установке соединения между узлами.
[15:11:54] <Typhon> gds: а ты про gproc читал? ерланговская шняжка, которая с именами помогает, zert про неё больше может, думаю, рассказать (и писал даже вроде). но, насколько я знаю, это уже верхний уровень, а внизу как раз host_id+local_pid ерланговские (там же как-то похожим образом пид получают )
[15:12:33] <gds> о.  про gproc читал, но сейчас освежу/перечитаю.
[15:13:40] <gds> во, "Non-unique properties" мне нужны таки.  Типа, "мы рабы, делающие 'суперобработку' -- бери наш список и шли кому хочешь".
[15:19:23] <gds> перечитал краткое описалово.  в новом gproc -- много всего накидано, общая идея не очень понятна.  то, что для использования это было бы удобно -- вероятно, не спорю.
[15:21:30] <gds> не, ну вкратце понятно -- тут мы регистрируем, тут мы получаем пид по ключу.
[15:33:08] <gds> в эрланге так: можем запустить процесс на удалённом хосте, передав ему как аргумент свой пид, а он, зная пид родителя, сможет с родителем общаться (передать ему свой пид, например).  У меня же расклад другой, как описывал -- ровно так породить не могу, и процессы должны как бы регистрироваться, и только после регистрации (и после прописки, дада) можно с ними как-то говорить.  То есть, то, что в эрланге считается навороченной функциональностью (имена-пиды), мне нужно сделать базовой.
[15:53:17] ygrek вышел(а) из комнаты
[16:39:02] ygrek вошёл(а) в комнату
[16:39:16] ygrek вышел(а) из комнаты
[16:39:40] ygrek вошёл(а) в комнату
[16:51:23] Kakadu вошёл(а) в комнату
[17:26:22] iNode вышел(а) из комнаты
[17:55:04] Kakadu вышел(а) из комнаты
[18:05:07] <ermine> блин, пчу я еще не избавилась от ocamlnet, с новым уже ничего не собирается
[18:05:15] <ermine> причем апи тут ни при чем
[18:05:57] <ermine> просто герд - казёл
[18:07:26] <gds> все мужики казлы, факт.  Однако интересно, в чём конкретно у тебя проблема.  Маловероятно, что помогу, но "ты хочешь об этом поговорить?".
[18:08:21] <ermine> undefined pthread_create
[18:08:36] <ermine> причем замечаешь это когда собираешь другой пакет
[18:09:08] <ermine> а вот пчу моя сульца после обновления окамлнета тоже перестала собираться - еще не поняла, куда-то задвинули ulex
[18:09:39] <ermine> теперь вот ищу куда бы воткнуть -cclib -pthread
[18:12:25] <gds> ну молодец гердушка, делает свой рантайм.  Как lwt, как jocaml.  Дайте я его пацалую.
[18:14:25] <ermine> не, lwt гораздо лутше! с егойным автором можно побеседовать мило, а герд послал на бабло
[18:14:48] <ermine> так что lwt у меня обычно надежно собирается
[18:16:02] <ermine> кста, если в ocamlnet второй раз запустить make (даже после make clean), то нифига не собирается
[18:16:14] <ermine> ну погоди, казол
[18:16:40] <gds> может опубликовать ответ гердушки в рассылке?
[18:16:54] <Typhon> "случайно" ^_^
[18:17:21] <gds> дело в том, что его там б-готворят практически, как я понял.  Но это совершенно неправильно!
[18:19:33] <ermine> странно боготворят, сплошные глюки
[18:20:27] <ermine> что в финдлибе, что в окамлнете
[18:21:57] Kakadu вошёл(а) в комнату
[18:21:57] ermine нашла потеницональную причину проблемы
[18:22:01] <gds> ну вот.  Он явно просил коммерческую поддержку?  Может процитировать его письмецо, где он просит, и ответить в рассылку что-то типа "я думала, что ocamlnet бесплатный, поэтому посмотрела на него, но у меня нет денег, я бедный программист" и всё такое.  Надавить на жалость, так сказать.
[18:22:43] <gds> с другой стороны, всегда можно форкнуться, поддерживать патчи, ну ребейсить по нужде.  с этими вашими гитхабами это стало проще пареной репы.
[18:24:02] <ermine> мораль: если уж опеределил переменную в мекфайле - ЗАЮЗАЙ ее!!!
[18:24:02] <gds> кстати, дамы и господа, в camlunity видел какие-то форкнутые проекты -- это с изменениями от участников camlunity они, как я понял?
[18:24:23] <ermine> вот теперь вопрос, как заюзать
[18:25:29] <ermine> gds: а мой камлоимадж не подойдет?
[18:25:35] <Typhon> gds: ага, хз, стоит так делать или нет? кое-что там уже смерджили в апстрим, ocaml-react чувак посмотрел, сказал, что да, будет юзать
[18:26:16] <gds> ermine: куда именно "не подойдёт"?  я там просто видел форки, на camlimages не смотрел.
[18:26:46] <gds> Typhon: мне кажется что стоит, но интересно было, прав ли я в том, что так _уже_ делается.  Как по мне, так это весьма хорошее дело.
[18:27:45] ermine будет импортить в свой форк свои биндинги
[18:28:05] <Typhon> о, если общественность одобряет — будет меньше вопросов — а то у меня рука всегда дрожит, когда форк жму и мне оно предлагает "куда форкнуть" — вот вчера окамл-змку к себе форкнул. если никто не против и за, то буду форкать в камлунити :-)
[18:29:28] <gds> Typhon: я -- ещё не общественность :)  Но мне кажется, что идея хорошая вот почему: видя знакомых людей в коммитах, сразу возникает идейка, где их можно найти и допросить -- чо/как/почему.
[18:29:53] <Typhon> (ну +1, по крайней мере :-) )
[18:30:18] <ermine> fort && edit && publish
[18:32:24] <gds> был бы я чуть поумнее пару лет назад, оверблд начал бы именно как набор форкнутых публичных репок.  А дальше -- хоть через hg subrepositories, хоть через гитовские средства, но была бы и локальная копия репок в "дистрибутиве", и лёгкость исправлений.
[18:32:51] <gds> и лёгкость протаскивания патчей в апстрим, что очень важно.
[18:33:00] <ermine> кажись, удалось кошерно собрать ocamlnet, но, пожалуй, это дерьмецо я форкать не буду
[18:33:15] arn вышел(а) из комнаты
[18:34:05] <Typhon> мне его даже собирать страшно, не то что форкать — больно оно большое :-(
[18:35:02] <ermine> о, там еще и инсталлер кривобокий
[18:35:56] <ermine> Typhon: он уже в портах фрибсд зачем-то есть, собственно, из-за порта и трахаюсь с ocamlnet 3.2.1 - такой свеженький и кривенький
[18:39:03] <ermine> а нет, вторая бага вылезла потому что я забыла сказать make opt
[18:39:25] ermine чуток подмазала карму герду
[18:40:36] <ermine> уф
[18:41:00] <ermine> мораль: make > log 2>&1 и искать ошибки
[18:42:22] <gds> я бы по-другому сделал:
( rm -rf work ; cp -R orig work && cd work && make ...) > log 2>&1
[18:48:04] ftrvxmtrx вышел(а) из комнаты
[18:53:02] Kakadu вышел(а) из комнаты
[19:31:08] Typhon вышел(а) из комнаты
[19:33:28] <ermine> так, теперь всё хорошо и можно опять собирать чертов оксигень
[19:36:46] ftrvxmtrx вошёл(а) в комнату
[20:03:27] ygrek вышел(а) из комнаты
[20:03:40] ygrek вошёл(а) в комнату
[20:14:54] <ermine> кажись, аффтар lwt таки отбился от рук без контроля его действий в течении двух месяцев
[21:01:57] ftrvxmtrx вышел(а) из комнаты
[21:04:45] Kakadu вошёл(а) в комнату
[21:13:22] Typhon вошёл(а) в комнату
[21:41:15] ftrvxmtrx вошёл(а) в комнату
[21:51:18] <ermine> есть такой у меня простой вопрос: мне надо скомпилить бинарник вместе с данными, которые надо прочитать из файла перед компиляцией, как это белые негры делают?
[21:51:24] <ermine> gds: ?
[21:52:40] <Typhon> ermine, c _oasis ? в extunix похожая штука делается, если я тебя правильно понял
[21:53:15] ygrek вышел(а) из комнаты
[21:53:29] avysk вошёл(а) в комнату
[21:53:33] avysk вышел(а) из комнаты
[21:55:18] <ermine> Typhon: а без оазиса потом оно будет работать?
[21:55:38] <ermine> Typhon: и кого оно там считывает?
[21:56:42] <Typhon> ну как обычно, если setup-dev сделаешь, то не будет без, если setup -- то будет. там есть поля типа "команда перед" -- в екстюниксе там препроцессится всякое, по аналогии можно и компелировать, думаю. а вот где-то, кажется, и бинарник, натурально, собирали
[21:56:47] <Typhon> (поищу сейчас)
[21:57:50] <ermine> Typhon: а вот говоря неабстрактно - мне надо в генерилку капчи вкомпилить фонт :)
[21:58:50] <Typhon> а в смысле, вкомпилить? путь к нему? или прямо содержимое побайтово в виде строки положить? и то, и другое -- это ж почти препроцессинг
[22:00:10] <ermine> нет, вкомпилить содержимое файла шрифта
[22:00:32] <ermine> let font = "тут потроха шрифта"
[22:03:50] <ermine> Typhon: ты наверное имел в виду подстановки в оазисе FIlesAB?
[22:04:17] <Typhon> PostConfCommand: ocaml src/discover.ml -ocamlc $ocamlc -ext_obj $ext_obj
[22:04:49] ermine собрала оазис на сайтовом сервере, теперь дождаться поправки от аффтара в lwt
[22:05:16] <Typhon> ну то есть пишешь скрипт на окамле, который принимает имя целевого файла и содержимое шрифта и записывает это содержимое в целевом файле на месте %FONTCONTENT% /
[22:05:19] <ermine> ну можно постконфиг как-то заюзать
[22:05:25] <Typhon> можно и седом, но не портабельно же!
[22:05:41] <Typhon> (может есть лучше способы, я бы тоже послушал)
[22:05:48] <ermine> бэ
[22:06:15] <ermine> да вот главный белый негр gds молчит
[22:07:01] <ermine> о, аффтар ответил на жалобу
[22:07:06] <ermine> это вам не герд
[23:05:38] <Kakadu> эти буржуи знают слово "захардкодить"?
[23:05:56] <Typhon> hardcoded так и есть
[23:07:48] <Kakadu> ясно
[23:16:45] <ermine> мнэ, неужели tyxml так требует ocamlduce?
[23:17:24] <Typhon> а тебе этот tyxml очень нужен?
[23:17:53] <ermine> он указал в депендсах к ocsigenserver.dev
[23:18:15] <Typhon> :-( блин
[23:18:15] <ermine> указан
[23:18:24] <Typhon> я думал они разнесли по пакетам для того чтобы всё не собирать
[23:19:03] <ermine> ну там елиома нету
[23:19:56] ermine пытается вспомнить, существует ли ocamlduce для 3.12
[23:24:33] <ermine> кажись, не всё так хреново
[23:25:22] ermine тщательно выводит OCAMLDUCE=NO и пытается компилить
[23:26:01] <ermine> скомпилилось!
[23:36:39] <Kakadu> начиная с некоторого времени ocalosure стало так долго компиляться.(
[23:37:43] <ermine> а его почти и не расширяют давно
[23:37:51] <ermine> Kakadu: а что ты из клозура юзаешь?
[23:41:09] <ermine> а вот зачем оксигену rlwrap?
[23:41:25] <Kakadu> ermine: просто зависимости
[23:41:44] <Kakadu> со мной поделились рабочим Makefileом для elioma
[23:42:16] <Typhon> ermine, вот это странно, у них же свой lwt топлевел есть и кажется с ридлайном
[23:42:18] <ermine> я под фрю собираю
[23:42:56] <Typhon> ну ридлайн туда есть и рлврап тоже, но не ясно, зачем он оксигену
[23:43:16] ermine понавставит депендсов по максимуму, чтобы посмотреть что будет
[23:53:53] <ermine> в принципе собирается
[23:54:01] <ermine> завтра продолжу
[23:55:13] <Typhon> http://paste.in.ua/2227/  http://paste.in.ua/2228/  http://paste.in.ua/2229/  -- примитивная поддеражка zmq в лвт -- вроде даже работает как надо , позже будут точнее данные
[23:57:48] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!