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

GMT+4
[00:28:25] sevenov вышел(а) из комнаты
[00:28:39] sevenov вошёл(а) в комнату
[00:51:47] Mon вышел(а) из комнаты
[01:17:00] Genix вошёл(а) в комнату
[02:10:54] Genix вышел(а) из комнаты
[06:19:04] john вышел(а) из комнаты: Replaced by new connection
[06:19:05] john вошёл(а) в комнату
[06:52:59] john вышел(а) из комнаты: Replaced by new connection
[06:53:00] john вошёл(а) в комнату
[14:48:30] john вышел(а) из комнаты
[15:00:07] ygrek вошёл(а) в комнату
[15:28:11] john вошёл(а) в комнату
[16:37:38] ygrek нашёл описание private row types для нубов
[17:01:28] <ermine> ссылку
[17:02:44] <gds> небось, пдфка гаррига?
[17:03:26] <ygrek> угу
[17:03:37] <ygrek> http://www.math.nagoya-u.ac.jp/~garrigue/papers/private-show.pdf
[17:04:02] <ermine> ыыы
[17:04:52] <ermine> она ж еще и маленькая, нафига его пдф закатали
[17:04:53] <ygrek> с примером как запихивать полиморфные значения в функторы с неполиморфным типом
[17:05:24] <ygrek> module OMap(X : sig type t = private <compare : t -> int; ..> end)
= Map.Make(struct type t = X.t let compare (x:t) y = x#compare y end)
[17:05:37] ermine насторожилась
[17:05:47] <gds> ой не, я про эту пдфку имел ввиду: http://www.math.nagoya-u.ac.jp/%7Egarrigue/papers/privaterows.pdf
[17:06:24] <gds> ermine: вариант с объектами я тебе предлагал не раз, кстати :)
[17:08:44] <ygrek> перепутал ссылку
[17:08:52] <ermine> будет время, надо будет изучить..
[17:08:52] <ygrek> именно эта
[17:09:01] ermine обе скачала на всякий случай
[17:09:30] abiogenesis вошёл(а) в комнату
[17:09:31] <gds> а вот первая пдф -- новость для меня. буду читать слайдэ
[17:09:56] <ygrek> что-то я не могу найти ссылку на этот privaterows на странице papers/
[17:10:31] <gds> я искал по: "abstracting" "unnamed"
[17:11:34] <ygrek> это похоже разные версии одного и того же
[17:13:30] <gds> шоке шоке
одно -- белая бумага, другое -- презентация со слайдами.
[17:17:53] <ygrek> нет, я про privaterows.pdf и proivaterows-aplas2006.pdf
[17:18:16] <ygrek> не помню где я нашёл линку на первую, но на странице есть ссылка только на вторую
[18:46:01] abiogenesis вышел(а) из комнаты
[18:46:47] abiogenesis вошёл(а) в комнату
[19:12:59] ygrek вышел(а) из комнаты
[19:13:14] abiogenesis вышел(а) из комнаты
[19:13:34] ygrek вошёл(а) в комнату
[19:29:08] <ermine> ygrek: ты в lablgtk сам суешь виджеты в окошки или рисуешь xml для glade?
[19:29:46] ermine размышляет, какой путь выбирать
[20:53:53] <ermine> второй концептуальный вопрос - как в lablgtk принято работать с сокетом/сетью незалипаюче
[20:58:58] <ermine> а mldonkey уже сдохло? там как раз был gtk2+сеть
[20:59:50] <ermine> вроде живой даже
[21:02:22] <ermine> хм
[21:52:35] <ygrek> сам расставляю - у меня примитивный интерфейс
[21:52:58] <ygrek> можно loop крутить в отдельном потоке
[21:52:58] ygrek вышел(а) из комнаты
[21:55:52] ygrek вошёл(а) в комнату
[21:56:40] ygrek вышел(а) из комнаты: Replaced by new connection
[21:56:41] ygrek вошёл(а) в комнату
[22:00:49] <ermine> а без тредов можно? :)
[22:02:13] <ermine> используя гребаную евент-дривен модель
[22:03:11] <ermine> надо позырить как в equeue из ocamlnet сделано
[22:03:55] <ygrek> ну тогда наверное надо чтобы сокет евенты сыпались в gtk loop.
[22:04:01] <ygrek> не знаю
[22:04:30] <ygrek> или получить event handle от внутренностей gtk если там есть такой
[22:05:12] <ermine> что-то в этом роде
[22:12:35] <ermine> в uq_gtk.ml какая-то хрень
[22:27:14] <ermine> но оно не требует тредов вроде, надо изучить GMain.Io
[22:28:31] <gds> мне вот другое интересно -- если правильно помню, lablgtk весьма творчески обращается с GC, а именно, вырубает compaction. Не зло ли это?
[22:29:50] <ermine> ненаю
[22:29:57] <ermine> других гуев все равно нет
[22:30:03] <ermine> разве что убогий labltk
[22:30:16] <ygrek> можно ещё win32 напрямую рисовать
[22:30:31] <ermine> можно было бы посмотреть на lablqt, если бы он был
[22:30:47] <gds> labltk не такой уж убогий.
ещё можно на opengl рисовать гуй, как некто уже делал.
[22:31:02] <ermine> ну с таким успехом можно и иксы напрямую рисовать
[22:31:42] <ermine> на lablgl можно рисовать, да
[22:33:01] <ermine> я когда-то напрямую иксы рисовала
[22:33:11] <ermine> была молода и глупа
[22:36:51] <gds> на иксах рисовать можно, но это не кроссплатформенно. А на opengl -- таки да.
[22:37:45] <ermine> и чо, ты шмог родить библиотеку виджетов на gl?
[22:38:11] <gds> я и не пытался. надо оно мне.
[22:38:58] <ermine> ну как-то же надо двигать окошки
[22:39:09] <ygrek> кстати, зачем в lablgtk может понадобится disable'ить compact?
[22:39:19] <ygrek> чтобы регать камловские функции как callback'и?
[22:39:39] <gds> вроде callbacks.
или функции, или другие данные (строки, например).
[22:39:39] <ygrek> но вель есть register_global_root или оно не для этого?
[22:41:06] <gds> global root -- указание для окамла, что в данном value ptr и во всех ссылках хранятся значения, которые не надо собирать. При нужде GC может спокойно апдейтить *ptr.
[22:42:10] <ygrek> ага
[22:42:38] <ygrek> т.е. тогда на сишной стороне можно было бы делать thunk'и с caml'овскими root'ами - так?
[22:46:07] <ermine> а еще смешно, когда калбэки испускают экспшны
[22:46:20] <gds> хм. если взять, что gtk для callback'а хочет только указатель на код, то не стыкуется. Если же там указатель на код + пользовательский указатель, то код может быть чем-то вроде caml_apply, а пользовательский указатель -- указателем на closure. Однако, если они сделали именно так, что не ясно, значем, если они с помощью register_global_root могли не извращаться так.
Видимо, дело не в callback'ах, или им не понравилось регистрить кучу global root'ов.
[22:49:03] ermine забила на сульцю и зарылась в гугль
[22:49:05] <ygrek> если gtk хочет только поинтер - то на сишной стороне аллокатится thunk в который пишется код с вызовом caml value.
[22:50:11] <gds> интересно, а есть кроссплатформенные способы создать thunk с нативным кодом (допустим, сишным)?
[22:50:51] <ermine> хм, в примерах в lablgtk2 не видно использования GMain.Io
[22:51:10] <ygrek> не понял вопроса
[22:51:27] <ygrek> надо выделить память и дать ей право на выполнение
[22:51:52] <ygrek> тут ни один этап не кроссплатформенный :)
[22:51:58] <ygrek> не говоря уже собственно о коде
[22:54:12] <gds> так вот и не понятно -- если gtk хочет только поинтер, навряд ли всё так просто получилось бы.
значит хочет не только поинтер на код, а ещё и пользовательский поинтер. Тогда пасьянс сходится. Но не сходится другое -- почему бы им не сделать пользовательский указатель чем-то вроде
struct userdefined { value callback; };
udf = malloc(..); udf.callback = the_callback; register_global_root(&udf.callback);
вот в этом затык в логических рассуждениях.
[22:55:53] <ygrek> да
[22:56:02] <ygrek> и я о том же
[22:56:12] <ygrek> надо во внутренности смотреть
[22:58:00] <ermine> похоже GMain.Io.add_watch - это то, что мне надо - видимо будет пускать калбэк когда в сокет евент прискакал
[22:58:38] <ermine> и наверное тредов ненада
[23:00:48] <ermine> хотя не всё понятно
[23:01:46] <gds> а лично мне неизменность адресов окамловских значений пригодилось бы для асинхронного ввода-вывода, чтобы избежать лишнего копирования. Но тогда я не знал об этом трюке.
[23:07:13] <ermine> а как же дефрагментация памяти?
[23:10:33] <ermine> ygrek: к вопросу про камлобилд: ты свои библиотеки куданить инсталлишь, чтобы твои программы могли с ними линковаться?
[23:11:17] <ermine> ygrek: я тут таки пытаюсь сделать myocamlbuild.ml в каждом каталоге, а не один глобальный
[23:11:59] <ermine> так сказать подготовка к публикации исходников (мнимая подготовка?)
[23:12:55] <ygrek> у меня нет своих библиотек :)
[23:13:20] <ermine> даже sqlgg?
[23:13:24] <ygrek> ну одна почти есть - прописываю в myocamlbuild.config руками
[23:13:41] <ygrek> потом планирую через ocamlfind интсаллить
[23:13:46] <ygrek> sqlgg ж не либа
[23:14:06] <ermine> что ты прописываешь руками - путь к исходникам или к собранной?
[23:14:12] <ygrek> к собранной
[23:14:14] <ygrek> к cma
[23:14:23] <ermine> ыыы
[23:15:28] <ermine> ым
[23:15:53] <ermine> а камлобилд ж еще и инсталл не умеет
[23:18:36] sceptic вышел(а) из комнаты
[23:19:28] <gds> вообще, со своими либами какая-то жопная ситуация получается. не ясно, как решить.
абсолютные пути -- гемор.
относительные -- как? ./prog/ -- прога, ./my-lib/ -- либа? собирать очевидно удобно из ./prog/ , тогда как контролировать свежесть надо для директории вида ../my-lib/, что криво, ибо родительская директория.
симлинки ./prog/my-lib/ -> ../my-lib/ не особо расставишь, ибо венда случается иногда.
[23:20:35] <ygrek> я за вариант держать свои либы на правах всех остальных
[23:20:58] sceptic вошёл(а) в комнату
[23:22:24] <ermine> gds: вон в сульце, которую ты собирал, есть генератор локальной пути, записывался в Makefile.global :)
[23:22:54] <gds> это хорошо. и даже, с помощью конфигов ocamlfind это можно нарулить нормально, но бывает так, что нужно менять либу, при этом делая итерации вида modify, build, uninstall, install, чтобы изменения были видны. Это слегка напрягает.
[23:24:09] <ermine> вот глобальный мойкамлобилд + глобальный _tags позволяют подсовывать нужную либлу
[23:24:22] <ermine> в _tags прописываешь какой местный каталог инклюдить
[23:25:02] <ermine> и наверняка можно дописать в камлобилд чонить аналгичное
[23:25:19] <ermine> это относится к случаю, если один мойкамлобилд
[23:26:29] ermine читает пример использования gtk на питоне, который неблокирующе тащит хтмл через Io.add_watch
[23:26:48] <ermine> щас попробуем чонить...
[23:51:24] ermine поплясала с бубнами вокруг камлобилда и инклюдов на внешние каталоги. Без симлинков оно не хотит.
[23:51:58] <ermine> плохой, негодный бубен
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!