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

GMT+4
[00:03:20] <ygrek> dc++ протокол это какой-то феерический ахтунг, p2p over irc йо
[00:25:13] gds вышел(а) из комнаты
[00:58:40] ygrek вышел(а) из комнаты
[01:01:04] ermine вышел(а) из комнаты
[01:14:27] Kakadu вышел(а) из комнаты
[02:27:07] digital_curse вышел(а) из комнаты
[02:27:17] Typhon вышел(а) из комнаты
[07:27:33] ermine вошёл(а) в комнату
[07:29:46] digital_curse вошёл(а) в комнату
[07:36:46] iNode вышел(а) из комнаты
[08:49:37] iNode вошёл(а) в комнату
[09:02:14] gds вошёл(а) в комнату
[09:43:19] ygrek вошёл(а) в комнату
[10:02:54] serp256 вошёл(а) в комнату
[10:21:53] <gds> jocaml/win поднялся, но не весь: тестовые примеры в топлевеле работают, а рейтрейсер чото тупит.
[10:22:31] <gds> как вообще это отлаживать -- классически, или может есть что-то jocaml-специфичное?
[10:51:41] Typhon вошёл(а) в комнату
[11:26:03] <f[x]> а рейтрейсер там разве не форкается?
[11:40:28] valexey_ вошёл(а) в комнату
[11:50:40] <gds> в одном из вариантов запуска форкается, но я взял другой вариант запуска (отдельно сервер и клиент).
[11:51:22] <gds> утыкал я исходники с http://jocaml.inria.fr/pub/joex/ray/ "отладочной печалью", но не понимаю ничего: сервер поднимается, слушает порт, клиент поднимается, пытается присоединиться, присоединяется успешно (судя по нетстату).  Затык на Join.Site.there.  Ковыряю дальше.
[11:53:39] <gds> ага, билд созрел, больше конкретики -- виснет на Join_prim.call_service.
в общем, слегка уныленькое такое занятьице.
[11:58:36] valexey_ вышел(а) из комнаты
[12:00:28] valexey_ вошёл(а) в комнату
[12:15:57] komar вошёл(а) в комнату
[12:17:25] komar вышел(а) из комнаты
[12:17:28] komar вошёл(а) в комнату
[12:17:48] komar вышел(а) из комнаты
[13:24:01] <sceptic> А как быстро сравнить две utf строки?
[13:24:06] <sceptic> utf8
[13:32:03] <gds> если с точностью до code point -- обычным сравнением.  Если с учётом нормальных форм -- в camomile есть модуль UNF.
[13:33:17] <serp256> BatUTF8.compare
[14:23:11] ʇsʎɯ вошёл(а) в комнату
[14:26:37] komar вошёл(а) в комнату
[14:37:12] gds вышел(а) из комнаты: Replaced by new connection
[14:37:13] gds вошёл(а) в комнату
[14:48:34] <gds> хаскеллисты, поюзав поплотнее, докладывают (цензура моя):
"
Похоже, большинство прикладных библиотек в хаскеле у[..]щны до невозможности.
Базовые вещи сделаны если не отлично, то очень хорошо, можно спокойно ставить 4+.
Но библиотеки...
Вот, sqlite'ом пользовался.
Одна библиотека, которая HDBC, когда я кладу что-то в базу, кодирует в UTF8, когда достаю, нет.
Ладно.
Вторая, которая direct-sqlite, кодирует в обоих случаях.
В итоге, строчку в utf8 она ещё раз кодирует, и потом прочитать можно только этой же программой!
То есть, когда я руками читаю базу, н[..]я не видно, только крякозюбры...
direct-через[..]пу-sqlite, б[..].
Ну, библиотеку я исправлять не стал, может быть, чуть потом.
Просто у себя вставил дополнительное (де)кодирование...
Ну это же п[..]ц!?
Хотя, под линуксом ещё не всё так страшно.
Как правило, можно быстро поправить.
Но под виндовсом куча других неприятных глюков, которые никак не исправить!!
"
[14:51:33] sceptic вышел(а) из комнаты
[14:56:06] <ʇsʎɯ> а ты что, верил, что всё круто, как dons говорит?
[14:56:21] <ʇsʎɯ> да там с обычными строками е..лово дикое
[14:56:32] <ʇsʎɯ> что уже про более сложные вещи говорить
[14:59:37] <valexey_> зато язык приятный
[15:01:10] <ʇsʎɯ> d rfrjv cvsckt&
[15:01:18] <ʇsʎɯ> в каком смысле?
[15:01:48] <valexey_> во всех. приятный синтаксис, правильный области видимости и т.п.
[15:02:18] <ʇsʎɯ> я понимаю приятный как "позволяющий решать поставленную задачу естетсыенным образом"
[15:03:24] <valexey_> а я "естетсыенным образом" не понимаю :-)
[15:03:43] <ʇsʎɯ> естественным образом
[15:04:22] <Typhon> без ебли
[15:04:27] <Typhon> простите мой французский
[15:04:52] <valexey_> ну, это сильно зависит не столько от языка, сколько от окружения.
[15:05:17] <valexey_> ну, например на окамле без этой самой ебли задачу написания чего-то там под мобилку не решить :-)
[15:05:45] <valexey_> http://blog.stanis.ru/img/14068.jpg
[15:06:11] <ʇsʎɯ> ну так ocaml не подходит для написания под мобилки поэтому
[15:06:19] <ʇsʎɯ> для разных вещей - разные инструменты
[15:06:36] <valexey_> и это при том, что это не есть недостаток языка :-)
[15:06:43] <valexey_> т.е. окамл подходит.
[15:06:50] <valexey_> не подходит инструментарий вокруг него.
[15:07:03] <ʇsʎɯ> не подходит потому, что GC
[15:07:16] <ʇsʎɯ> на мобиле не столько памяти, чтобы полагаться на GC
[15:07:23] <valexey_> см. андроид :-)
[15:07:26] <valexey_> см. j2me
[15:07:31] <valexey_> так что GC это не проблема
[15:07:39] <ʇsʎɯ> ну...
[15:07:52] <ʇsʎɯ> это ещё не означает, что GC - не проблема
[15:08:07] <valexey_> это значит что с GC можно жить, и жить достаточно хорошо.
[15:08:31] <valexey_> для j2me размер типичный размер хипа от 500 Кб где-то.
[15:09:03] <valexey_> так что с языком всё хорошо. вот инструментария удобного да, нет. и не предвидится.
[15:10:58] <ʇsʎɯ> а чего конкретно не хватает?
[15:12:56] <valexey_> для начала компилятора под оные платформы.
[15:12:58] <valexey_> :-)
[15:13:00] <valexey_> вменяемого.
[15:13:26] <valexey_> + биндинги к либам тамошним.
[15:15:52] <valexey_> ну и документации ко всему этому.
[15:16:09] <valexey_> иначе естественно не получится решить задачу. :-)
[15:25:54] <ʇsʎɯ> Хо-хо ;)
[16:44:41] <gds> странно с jocaml'ом.  Клиент пытается записать в общей сумме 161 байт в канал (который является tcp/ip-соединением с локальной машиной), под конец делает Pervasives.flush, буфер с канала скидывается в сокет ("write(4, .., ..)", где 4 -- файловый дескриптор), и сишный вызов write на этом зависает.  Проблема в том, что удалённая сторона не хочет читать данные из сокета, или есть другие объяснения?
[16:49:13] <ʇsʎɯ> другие
[16:49:39] <ʇsʎɯ> это не связано с тем, что делает "та сторона"
[16:50:09] <ʇsʎɯ> более того, даже если write не может сложить данные в sockbuf, он вернёт 0
[16:50:15] <ʇsʎɯ> что означает, что отправлено было 0 байт
[16:50:27] <ʇsʎɯ> это под UNIXом у тебя?
[16:51:25] <ʇsʎɯ> gds: алё
[16:52:59] valexey_ чо-то как-то слабо верит что файловый дескриптор будет равен 4рем.
[16:54:17] <Typhon> ʇsʎɯ -- отвечу за -- под вендой, gds под венду портирует jocaml
[16:55:02] <Typhon> ʇsʎɯ -- и может пропустил, такая штука есть: http://gds.livejournal.com/49664.html
[16:55:03] <ʇsʎɯ> там write не работает для сокетов
[16:55:06] <ʇsʎɯ> надо делать send
[16:55:27] <ʇsʎɯ> Typhon: я не читаю блоги, но спасибо
[16:55:45] <ʇsʎɯ> почему это fd не может быть равен четырём?
[16:55:54] <Typhon> ʇsʎɯ это просто единственное, пока, место, где про оверблд написано :)
[16:55:59] <ʇsʎɯ> 0,1,2 заняты, 3 - куда-то, 4 - наш
[16:56:01] <valexey_> может быть. но обычно вроде другие значения
[16:56:24] <ʇsʎɯ> "обычно" и "виндовз"
[16:56:27] <ʇsʎɯ> ололо
[16:58:55] gds отходил.  ща.
[17:03:50] <f[x]> почему это write не работает для сокетов?
[17:05:36] <f[x]> gds: а там не может быть случаем того же самого косяка с int_of_file_descr?
[17:09:33] <gds> как понял, mingw предоставляет int _open_osfhandle(HANDLE, mode), и имхо именно таким образом получилось так, что сокет имеет юниксоподобный файловый дескриптор.
далее, меня заставили вспомнить, что write таки может блокироваться.  Но на 161 байте данных -- странно.
насчёт int_of_file_descr -- не понимаю, как может быть такое, разве что неправильный хендл дали в _open_osfhandle, вот почему я так считаю:
  fprintf(stderr, "do_write(%i, %p, %i)\n", fd, p, n); fflush(stderr);
  caml_enter_blocking_section();
  fprintf(stderr, "do_write entered section\n"); fflush(stderr);
  retcode = write(fd, p, n);
  fprintf(stderr, "  do_write retcode=%i\n", retcode); fflush(stderr);
  caml_leave_blocking_section();
и вывод:
do_write(4, 003ED168, 77)
do_write entered section
[тутачьке висим, при прерывании имеем вдобавок "do_write retcode=-1"]
[17:11:18] <gds> очень вероятны косяки с тредами, блокировками и с неправильным системно-зависимым кодом, но не знаю, как ловить, кроме как подобным образом, натыкаясь на явные баги.
[17:11:37] <f[x]> osfhandle это из crt
[17:12:20] <valexey_> мдя.. и это называется "решить задачу естественным образом" :-)
[17:13:07] <gds> valexey_: а причом тут окамл вообще?
[17:13:20] <ʇsʎɯ> valexey_: а при чём тут "естественное решение"?
[17:14:31] <valexey_> ну, ведь это всё творится тут, в уютном чятике про окамл, где собрались приверженцы именно что естественных решений.
[17:15:04] <Typhon> valexey_: ты через день троллишь, то в х-ль, то здесь? ;)
[17:15:20] <valexey_> с утра монетку кидаю
[17:17:48] <f[x]> зааттачься дебуггером и посмотри что скажет
[17:19:53] iNode вышел(а) из комнаты
[17:25:15] <gds> f[x]: брать gdb/mingw?  Идея, попробую.  С другой стороны, что я там увижу, если write не возвращается.  Увижу, что он висит?  И так вижу...  Думаю на сервер поглядеть, чем он занят, когда его хотят.
[17:29:01] <f[x]> windbg
[17:30:28] <gds> понял, беру.
[17:30:31] gds вышел(а) из комнаты
[17:32:15] <f[x]> тут как бы дело не в сервере т.к. write просто складывает в буфер, которым заведует локальный tcp стек
[17:34:28] <f[x]> т.е. даже если скажем сервер закрыл принимающий сокет то твой write (первый) этого просто вообще не заметит
[17:35:01] <f[x]> может фаерволл? они на винде иногда чудят по страшному
[17:35:19] <valexey_> это да-а...
[17:35:28] <valexey_> помнится все исходящие пакеты терялись. или наоборот.
[17:35:34] <valexey_> в зависимости от настроения фырвола
[17:38:50] <ʇsʎɯ> я бы посмотрел как проинициализированы сокеты на винде, и как это делает ocaml, который работает
[18:07:58] iNode вошёл(а) в комнату
[18:18:01] gds вошёл(а) в комнату
[18:37:59] <gds> > тут как бы дело не в сервере т.к. write просто складывает в буфер, которым заведует локальный tcp стек
но стек догадывается, приняла та сторона данные или нет -- например, если сервер не будет читать данные из сокета, рано или поздно tcp/ip-стек удалённой машины будет отвечать "местов нет", а если забит и локальный буфер, то write будет блокироваться.
[18:38:38] <f[x]> угу
[19:07:16] serp256 вышел(а) из комнаты
[19:07:16] Mon вышел(а) из комнаты
[19:07:24] Mon вошёл(а) в комнату
[19:33:34] Конфа чума не заходите сюда --- вошёл(а) в комнату
[19:34:05] Конфа чума не заходите сюда --- вышел(а) из комнаты: QIP Infium: Спокойное общение
[19:35:59] ʇsʎɯ вышел(а) из комнаты
[20:13:57] Typhon вышел(а) из комнаты
[21:00:47] valexey_ вышел(а) из комнаты
[21:57:08] Kakadu вошёл(а) в комнату
[22:08:48] Typhon вошёл(а) в комнату
[22:53:29] Kakadu вышел(а) из комнаты
[23:24:21] serp256 вошёл(а) в комнату
[23:32:44] serp256 вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!