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

GMT+4
[00:08:42] <gds> конечно, они пытались завести ocamlbuild так, чтобы он хоть как-нибудь взлетел. но отсутствие параметризованных тэгов -- это почти непростительно для языка с индуктивными типами данных.
use_unix, use_ocamlnet. тьфу. сделали бы сразу use(unix) с резолвеньем на уровне myocamlbuild -- было бы толково.
[01:05:03] 604 вошёл(а) в комнату
[01:44:05] 604 вышел(а) из комнаты
[07:32:14] john вышел(а) из комнаты
[07:37:41] john вошёл(а) в комнату
[09:20:51] sevenov вошёл(а) в комнату
[09:56:59] ygrek вошёл(а) в комнату
[11:03:34] <f[x]> ermine: судя по типу T точно так же как S и прочие - т.е. flag ["ocaml";"compile"] (T"use_unix"); ?
[11:09:42] <f[x]> gds: они -- это Николя? Судя по всему он один камлобилдом плотно занимается.
[11:15:03] gds вышел(а) из комнаты
[11:15:13] gds вошёл(а) в комнату
[11:21:56] f[x] вышел(а) из комнаты
[11:21:56] ygrek вышел(а) из комнаты
[12:08:10] ygrek вошёл(а) в комнату
[12:35:35] <gds> ygrek: предполагаю, что общие концепции камлобилда обсуждались с некоторыми участниками caml team. могли бы надоумить.
[12:36:17] <ermine> ygrek: это было бы круто, но T не берут строки, надо посмотреть что камлобилд делает с файлом _tags
[13:21:10] john вышел(а) из комнаты
[13:35:23] ygrek вышел(а) из комнаты
[14:01:43] <gds> мда, взялся мелочёвку делать "по культуре". заодно камлобилд поковырять слегка, по пути. долбаюсь с гугелем в поисках того, как прикрутить deriving.
[14:03:52] 604 вошёл(а) в комнату
[14:06:16] ermine решила, что путь, куда следует инсталлить либлу, надо брать из env
[14:27:13] john вошёл(а) в комнату
[14:48:11] <gds> сранно.
camlp4r -I +deriving/syntax show_class.cmo
пишет
Camlp4: Uncaught exception: DynLoader.Error ("show_class.cmo", "file not found in path")
тогда как
ocamlc -I +deriving/syntax show_class.cmo -o kva
пишет
Error: Error while linking /my-path/lib/deriving/syntax/show_class.cmo:
Reference to undefined global `Utils'
, то есть, файл видит.
по-разному расценивают "-I +дира", что ли.
[14:49:00] <gds> конечно, и -I +../deriving/syntax, и -I +../../deriving/syntax тоже проверил, без результата.
[14:55:02] <ermine> а что за +../path? по идее это выше чем ocamlc -where будет
[14:56:12] <gds> было предположение, что для camlp4 началом считается `ocaml -where`/camlp4, и я проверил это предположение. не обращай внимания.
[14:59:45] <ermine> а куда файл utils входит?
[14:59:56] <ermine> видимо не припакован в .cmo
[15:00:09] <ermine> или нету utils.cmi
[15:00:27] <gds> да пофиг -- важно то, что .cmo нашёлся и его попробовали слинковать.
[15:00:55] <gds> тогда как camlp4 этого файла не видит, при идентичном указании директории.
[15:07:20] Typhon вошёл(а) в комнату
[15:11:04] <gds> да, вполне логично: camlp4/Camlp4/Struct/DynLoader.ml не содержит обработку имён директорий вида "+директория".
если бы я не раскопал это, то писал бы как баг. если уже раскопал -- как фича-реквест, что ли?..
[15:16:36] f[x] вошёл(а) в комнату
[15:17:00] <f[x]> http://caml.inria.fr/pub/ml-archives/caml-list/2001/02/5770514eec29b794c2d560fc3282bc14.en.html
[15:18:02] <f[x]> ermine: Tags.of_list
[15:20:26] <f[x]> gds: а почему -pp deriving напрямую не хочешь использовать?
[15:21:11] <gds> а оно с camlp4r нормально работает? имхо не должно.
[15:21:50] <gds> но насчёт -I +дира -- ведь баг таки?
[15:31:46] <gds> в общем, это таки баг :) http://caml.inria.fr/mantis/view.php?id=4855
[15:34:07] <f[x]> ну как любой camlp4 парсер у него есть опции ком строки :
-parser <name> Load the parser Camlp4Parsers/<name>.cm(o|a|xs)
[15:35:26] <gds> т.е. "deriving -parser парсер_ревайзед_синтаксиса.cmo"?
[15:38:06] <f[x]> думаю да
[15:38:21] <f[x]> как он называется - pa_r?
[15:39:06] <gds> идею понял, проверю, как дойдут руки.
но опять же -- а путь до "deriving" кто прописывать будет?
[15:40:05] <f[x]> симлинк в ~/bin :)
[15:41:59] <gds> нестандартно.
[15:45:57] <f[x]> ставить в ocamlc -where
[15:46:41] <f[x]> это проблема юзера чтобы бинарник звался по короткому имени
[15:46:58] <f[x]> искал ocaml sql -- нашёл CAML is an XML based query language that is similar to, and serves many of the same purposes as SQL and DDL. :)
[15:47:33] <gds> а из плагина можно вычислить ocamlc -where как-то удобненько?
[15:48:06] <f[x]> ты же знаешь ответ - Sys.command :)
[16:02:52] <gds> так вдруг оно есть уже среди значений, доступных плагину.
однако понял.
[16:17:19] <ermine> чьего плагина?
[16:17:26] <ermine> если камлобилда, то он уже вычислил
[16:23:39] <gds> он молодец. Но как его значение получить?
[16:28:54] <gds> о! Assigned To => ertai.
причём, если верить их времени, всё произошло в одну минуту: дата "2009-09-02 13:31" везде.
[16:29:31] sevenov вышел(а) из комнаты
[16:31:20] <f[x]> по имени проекта наверное
[16:31:28] <gds> тоже подумал :)
[16:39:58] <ermine> gds: !bindir, !libdir
[17:03:35] DimitryKakadu вошёл(а) в комнату
[17:38:02] <DimitryKakadu> День добрый. В окамле есть какие-нить библы, чтобы рисовать 3D графики функций (в математическом смысле)? У меня просто в университете надвигается практика по вычислительным методам, где надо будет учитывать погрешности хранения чисел с плавающей точкой с компе и т.п. Слышал, что окамл есть самое оно. Альтернативный варант (Maple) юзать как-то не хочется
[17:40:17] f[x] курсовую по чм рисовал в lablgl
[17:40:33] <f[x]> есть ещё биндинги к plplot - но я их не пробовал
[17:42:03] <DimitryKakadu> спасибо, пойду разбираться
[18:28:43] <gds> f[x]: а прачо курсовая была? интересно направление мысли.
[18:35:56] <f[x]> решение дифуров итеративными методами
[18:36:08] <f[x]> кто-нибудь исопльзовал netdns с ocamlnet?
[18:40:29] <ermine> а он много резолвить позволяет?
[18:40:42] <f[x]> асинхронный стаб резолвер
[18:40:46] <ermine> чонить кроме записей A
[18:41:04] <f[x]> я уже думал сам писать (благо парсинг dns пакетов есть), а он есть оказывается
[18:41:35] <ermine> у меня свой биндинг к res_query
[18:41:48] <gds> ermine: дошли руки проверить. Не работают:
!libdir
   !Ocamlbuild_where.libdir
   !Myocamlbuild_config.libdir
   !Ocamlbuild_Myocamlbuild_config.libdir
[18:42:10] <f[x]> сейчас только A, но там легко добавить
[18:42:25] <f[x]> что такое res_query?
[18:43:16] <ermine> f[x]: это неинтересно, я сделала биндинг из-за записей TXT и SRV
[18:43:36] <ermine> -lresolv
[18:43:42] <ermine> ну посмотри ман
[18:44:03] <f[x]> синхронный?
[18:44:10] <f[x]> нет у меня такого мана
[18:46:36] <ermine> man resolv тоже нет?
[18:46:45] <f[x]> неа
[18:46:51] <ermine> синхронный, то бишь залипающий
[18:46:56] <f[x]> судя по гуглу это синхронный
[18:46:58] <f[x]> угу
[18:47:04] <f[x]> неинтересно
[18:47:29] <ermine> ну у меня не было задачи делать асихронный
[18:47:40] <ermine> но вообще было бы интересно асихронный, да
[18:47:43] <ermine> не умею
[18:47:51] <ermine> и вдобавок не кроссплатформерно
[18:48:10] <ermine> gds: не работает - в смысле пустой?
[18:48:38] <ermine> f[x]: а netdns с помощью чего асихронизируется?
[18:50:14] <ermine> "мое" еще можно засунуть в тред и юзать вместе с чемнить типа equeue
[18:50:20] <f[x]> делает запросы асинхронно :)
[18:50:42] <f[x]> в тред.. а в 1000 тредов? ;)
[18:51:01] <ermine> а зачем это тебе?
[18:51:44] <f[x]> качать много надо
[18:51:51] <f[x]> сейчас затык в dns'е
[18:52:21] <gds> ermine: не работает -- в смысле "unbound value".
[18:52:34] <gds> может какие-нибудь модули открываешь хитрые>
[18:52:36] <gds> ?
[18:53:23] <ermine> open Ocamlbuild_pack.Ocamlbuild_where
мож этот
[18:53:45] <ermine> я использую !bindir
[18:53:56] <ermine> чтобы вызывать ocamlfind по полному пути
[18:54:37] <ermine> f[x]: а качать тоже асихронно?
[18:54:47] <ermine> f[x]: с помозью netclient?
[18:55:03] <f[x]> угу
[18:55:39] <f[x]> в том и вопрос - совместить эффективно netdns и http_client
[18:56:45] <ermine> f[x]: а чем системный резолвер не канает?
[18:57:11] <gds> ermine: оппа! !Ocamlbuild_pack.Ocamlbuild_where.libdir -- ок!
[18:57:22] <ermine> f[x]: апи нетклиента позволяет юзать внешний лукап, но вопрос в том, зачем
[18:59:15] ermine лично для себя знает, почему ненада юзать системный лукап, когда надо часто задавать задач для обращений к сайтам, но желает услышать мнение f[x]
[19:09:37] john вышел(а) из комнаты: Replaced by new connection
[19:09:38] john вошёл(а) в комнату
[19:09:53] <f[x]> какой системный?
[19:10:02] <f[x]> Unix.gethostbyname - синхронный
[19:10:20] <ermine> я вот теперь хочу втыкать git describe для генерации version.ml. Теологический вопрос: сделует ли создавать version.ml при каждом запуске камлобилда или можно задать какой-нить депендс?
[19:10:42] <ermine> f[x]: да, но нетклиенту это вроде не мешает
[19:12:31] <f[x]> смотря что понимать под "не мешает"
[19:13:52] <f[x]> несколько асинхронных запросов ждут все dns resolve'ы - это неприемлимо
[19:14:20] <ermine> ты небось сам нетклиент все равно засунешь в отдельный тред, чтобы что-то делать помимо запросов к сайтам, а тот тред может брать задачи из queue
[19:14:59] <f[x]> лукапы блокируют тред
[19:15:00] <ermine> если нетклиенту дать equeue, он будет асихронно опрашивать сайты
[19:15:24] <f[x]> git describe сам себе депендс
[19:16:31] <ermine> у меня была другая причина ненавидеть системный лукап: на некоторых линуксах bind глючен, а в старых версиях окамлнета (не знаю как в последней) netclient валился по экспшну невозможности резолвить
[19:17:04] <ermine> он резолвит урл дважды: при добавлении задачи в очередь и при самом запросе
[19:17:48] <ermine> f[x]: а как описать этот депендс в ~dep rule?
[19:19:14] <f[x]> ermine: угу, я на это уже наткнулся
[19:19:33] <f[x]> ermine: не надо ничего описывать - просто делай git describe при каждом вызове
[19:20:00] <f[x]> там вообще есть классная фраза в доке --
Under certain conditions (serious network errors) run does not catch the exception; it simply cleans its own state up (aborting the errorneous network connection). In this case, simply invoke run again to continue.
[19:26:40] <ermine> ужос
[19:27:00] <f[x]> а патч на fcgi уже неделю назад отправил - ни ответа, ни привета
[19:27:47] <ermine> ну я переписывалась с Гердом несколько лет назад - тоже слала всякие патчи
[19:28:08] <ermine> поэтому у меня к нему антипатия и старательное сокращение использование его софта :)
[19:28:23] <f[x]> ermine: во во
[19:28:37] <ermine> только вот без netclient'a тяжко, альтернатив нет
[19:28:43] <ermine> еще нужен парсер html
[19:29:00] <f[x]> ocurl есть, multi обвязку можно сделать
[19:29:36] <ermine> я юзала ocurl до нетклиента
[19:29:42] <ermine> прога падала в кору
[19:29:59] <ermine> или залипала насмерть непонятно на чем
[19:30:33] <f[x]> curl можно с ares'ом собрать
[19:30:53] <ermine> у меня собсно от окамлнета востребованными остаются только нетклиент и нетхтмл
[19:30:56] <f[x]> а коры -- пилить надо
[19:31:45] <ermine> ну это было оченно давно, в 2004 году
[19:34:08] <ermine> хм, rule для создания version.ml не подойдеть
[19:34:41] <ermine> оно хочет в депендсах видеть version.ml.src
[19:35:03] <ermine> я просто в нем седом меняю VERSION на то что выдало git describe
[19:35:39] <f[x]> просто создавай version.ml перед dispatch'еи
[19:36:00] <ermine> придется
[19:36:11] <ermine> хотя душа моя морщится
[19:36:16] <f[x]> чего??
[19:36:49] <ermine> ну дергать git describe и рисовать файл при каждом запуске камлобилда - как-то не слишком эстетично
[19:37:18] <f[x]> а то что камлобилд при каждом запуске все файлы перечитывает - это ничего?
[19:37:20] <ermine> ведь git describe может и не поменялся вовсе
[19:37:27] <gds> можно и не рисовать файл, но при таком раскладе дёргать надо будет.
[19:37:59] <f[x]> ну можно читать файл, сравнивать и писать только если отличается
[19:38:03] <f[x]> особого смысла не вижу
[19:38:39] <ermine> эх
[19:38:46] <gds> смысл есть -- mtime
[19:39:08] <ermine> кого?
[19:39:18] <gds> version.ml
[19:39:29] <ermine> а камлобилд кстати и не перекомпиливает свой плугин каждый раз
[19:39:42] <ermine> у камлобилда довольно хорошая система депендсов
[19:40:14] <ermine> gds: скажем так, version.ml имеет в депендсах git describe
[19:40:50] <ermine> ладно, не буду пока усложнять, сделаю как f[x] завещал
[19:41:37] <ermine> кстати, f[x] - это нефункциональная функция
[19:42:20] <f[x]> что-то этот netdns сыпет эксепшнами как пулемёт
[19:42:45] <ermine> на тему?
[19:43:01] <ermine> при парсинге?
[19:43:45] <gds> # let f = ignore;;
val f : 'a -> unit = <fun>
# let x = ();;
val x : unit = ()
# f[x];;
- : unit = ()
всё работает!111
[19:45:10] <f[x]> не пойму
[19:45:20] <f[x]> там написано что альфа
[19:47:06] <ermine> ну покажи какоенить исключение
[19:47:20] <ermine> а альфа оно пару лет или больше как
[19:48:26] f[x] вышел(а) из комнаты
[19:48:48] <ermine> сам исключился
[19:50:28] <gds> сама просила -- покажи да покажи. вот и показал...
[19:51:59] <ermine> gds: а у тебя тоже нет мана resolv или res_query?
[19:53:55] <ermine> странно, на линуксе нет манов, а в /lib/libresolv лежит
[19:55:19] <ermine> вечером попробую на линуксе скомпилить свой биндинг
[19:55:33] <ermine> хотя хз как сделать асихронным
[19:55:38] <ermine> но чонить придумаю
[19:55:43] <ermine> или вы придумаете
[19:55:58] <gds> в убунте вообще маны по требованию только ставятся. man resolv нет, может не поставил нужные.
[19:56:50] <ermine> а res_query?
[19:57:29] <ermine> у меня мана resolv тоже нет
[19:57:59] <gds> о, такое есть.
[20:13:21] Typhon вышел(а) из комнаты
[21:34:29] ermine скоммуниздила из дистрибутивного камлобилда принцип работы с mllib-файлами и теперь инсталлит библиотеку одной строчкой кода
[21:35:03] <ermine> конфиг камлобилда камля достоин тщательного изучения
[21:36:00] <ermine> осталось научить инсталляшку видеть когда байткод или нативкод включен или не включен
[22:11:02] DimitryKakadu вышел(а) из комнаты
[22:14:24] sceptic вышел(а) из комнаты
[22:17:00] sceptic вошёл(а) в комнату
[22:17:55] sceptic вышел(а) из комнаты
[22:17:59] sceptic вошёл(а) в комнату
[22:19:54] <gds> и только сейчас индеец Зоркий Глаз понял, что Ocamlbuild_pack.Ocamlbuild_where.libdir -- это libdir для ocamlbuild, а не для окамла самого по себе.
[22:25:18] <ermine> хм
[22:25:57] <ermine> мне даже стало неудобно, что я подсунула тебе libdir
[22:35:29] <gds> фигня-вопрос. как получать libdir -- вот что интересно, пока лягушатники родят патч. $OCAMLLIB -- понятно. если нет -- надо вызвать ocamlc. если он в пути, то всё понятно. если нет -- !Options.ocamlc без указания извне обычно равно "<virtual OCAMLC>", что запускать неохота.
есть ли универсальный способ, думаю вот.
[22:42:30] <gds> кое-что интересное происходит в модуле $ocamlsources/ocamlbuild/discard_print.ml[i]
[22:46:28] <ermine> посмотреть как этот камлобилд рожает libdir
[22:47:02] <ermine> кста, а зачем тебе libdir?
[22:51:45] ermine загнала свой mlresolv на линуксную машину и скомпилила - скомпилилось, странно
[22:52:44] <ermine> mltls также скомпилился, странно
[22:53:52] <ermine> mlzlib аналогично, можно уже завтра настраивать гит гденить и потихоньку публиковать
[22:54:20] <ermine> чудеса, да и только
[22:58:49] <gds> libdir -- чтобы подцепить deriving, который не обязан лежать в путях, но лежит в +deriving/.../ , но camlp4 не понимает +директорий, да и для вызова самого препроцессора deriving'а нужно знать путь к нему.
[23:00:50] <ermine> а как же у меня sqlgg с ним скомпилился?
[23:02:17] <ermine> а, я деривинг положила в site-lib окамлфинда, поэтому сам окамлфинд его находит
[23:02:42] <ermine> и никаких забот
[23:13:43] ygrek вошёл(а) в комнату
[23:26:04] <ygrek> кстати ertai вполне откликается в #ocaml и принимает патчи :)
[23:28:31] <gds> но, думаю, бестактно было бы просить его принять заявку на создание и включение патча.
[23:31:55] <ygrek> на создание - да, это немножко не вежливо :)
[23:33:37] <ermine> ygrek: патчи к чему?
[23:33:54] <ygrek> gds: патчи к чему?
[23:34:18] <ygrek> (к камлобилду)
[23:34:57] <ermine> а кто такой ertal?
[23:35:04] <gds> ermine: к камлобилду!
[23:35:07] <gds> ygrek: к камлобилду!
[23:35:10] <gds> телепузики, обнимемся!
[23:35:14] <gds> телепузики, обнимемся!
[23:35:34] <ygrek> ermine: по подтверждённым данным патчи к камлобилду
[23:35:37] <ermine> а что за патчи?
[23:35:48] <gds> ermine: (шопотом) к камлобилду!
[23:36:10] <ermine> gds: ну это я уже поняла
[23:36:36] <ermine> если принимает - хорошо бы понять тогда мою багу с камлобилдом
[23:37:47] <gds> в том-то и дело, что понять он не поможет, а применить и закоммитить патч -- вполне.
[23:39:10] <gds> а хотя, может быть и поможет. на irc надо иттить, инглишем писать.
[23:39:48] <ermine> ну инглиш ладно
[23:39:55] <ermine> ирц тоже наверное ладно
[23:40:23] <ermine> а когда следующий релиз камла с камлобилдом?
[23:40:32] <ermine> или может попробовать собрать из cvs?
[23:40:58] <ygrek> в changelog'e раздел под .12 заведён
[23:42:05] <ermine> да ты шаман какой-то
[23:51:08] <ermine> а где changelog? в cvs он древний
[23:51:51] <ygrek> бранч?
[23:52:13] <ermine> ахез
[23:52:27] <ermine> ладно, фиг с ним
[23:52:28] <ygrek> http://camlcvs.inria.fr/cgi-bin/cvsweb/ocaml/Changes
[23:54:44] <ermine> блин, сахарный песок
[23:55:03] <ygrek> клааасик
[23:55:16] <ermine> ага
[23:56:10] <ermine> а про cmxs там по-прежнему нифига
[23:57:06] <gds> changelog одобряю.
[23:57:09] <gds> но мало.
[23:58:33] sevenov вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!