Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 8 августа 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:09:25] ygrek вышел(а) из комнаты
[02:50:22] Typhon вышел(а) из комнаты
[03:38:30] zinid вошёл(а) в комнату
[04:34:44] ftrvxmtrx вошёл(а) в комнату
[04:38:04] ftrvxmtrx вышел(а) из комнаты
[04:38:12] ftrvxmtrx вошёл(а) в комнату
[08:43:59] <gds> больше смайликов, весёлых и разных!  "композиция слева направо" (в отличие от "%", который справа налево, в моих Ops постоянно фигурирует):
# value w = string_of_int %> fun s -> Printf.printf "v=%s\n%!" s;
value w : int -> unit = <fun>
чем прикольно -- что в случаях, когда есть значение, начинающееся с "fun ... -> ...", можно предобработать аргумент (или аргументы.. надо сделать %%> и %%%>), не меняя само тело "fun ...", а просто приписав текст: "preprocess %> fun ...".
[10:01:45] Typhon вошёл(а) в комнату
[10:29:06] f[x] вошёл(а) в комнату
[10:33:06] ermine вошёл(а) в комнату
[11:53:59] <f[x]> хип - 1.5G, RSS - 7G, wtf?
[11:54:29] <gds> фрагментация либо тонны сошек?
[11:57:26] <f[x]> не сошки
[11:58:01] <f[x]> 0000000002090000       0 7511092 7511092 rw---    [ anon ]
00007f3418ad5000       0   65540   65540 rw---    [ anon ]
00007f34208db000       0   16588   16588 rw---    [ anon ]
[11:58:34] <f[x]> т.е. замаплен один большой кусок, почему рантайм не скомпактит всё в начало этого куска и не отдаст хвост системе?
[11:58:58] <f[x]> одна причина - часть этого куска используется под malloc'и, а их двигать нельзя
[11:59:49] <f[x]> max heap size - 10G - т.е. сколько-то оно таки отдало
[12:00:40] <f[x]> похоже надо рассылку теребить, но это ж надо ещё репро нормальный получить
[12:04:27] bobry вошёл(а) в комнату
[12:53:57] bobry- вошёл(а) в комнату
[13:23:14] shaggie вошёл(а) в комнату
[13:35:42] mrm вошёл(а) в комнату
[14:00:42] <mrm> gds: DLL, собранная с новым overbld, на некоторых компах валится на caml_startup с "access violation 00000000". Если собираю старым, не валится. Откатился на старый
[14:01:13] <mrm> Диагностировать проблему пока возможности нет. Креши происходят за много километров от меня и наблюдаются рядовыми пользователями
[14:03:09] <mrm> На конкретных компах проблема воспроизводится _всегда_. WinXP/Win7, 32/64bit
[14:07:17] <f[x]> watson какой-нибудь крэшдамп делает?
[14:07:30] <f[x]> хотя без pdb толку от него
[14:07:40] <f[x]> а pdb для mingw не бывает :)
[14:11:27] <mrm> eurekalog должен был отправлять детальные отчёты, но что-то в нём сломалось и он не шлёт
[14:32:36] <gds> mrm: а хрен знает -- без конкретики ничего не скажу.
[14:33:41] <mrm> Если бы я рядом был, посмотрел бы, какие библиотеки процессом загружаются
[14:34:46] <mrm> это мне должен был сообщить eurekalog :-)
[14:42:50] bobry- вышел(а) из комнаты
[14:44:27] bobry- вошёл(а) в комнату
[15:01:46] ftrvxmtrx вышел(а) из комнаты
[15:01:55] ftrvxmtrx вошёл(а) в комнату
[15:22:08] <bobry-> товарищи, я тут ковыряю библиотеку для работы с эрланговскими термами и не могу решиться чего на входе просить Buffer, Stream или channel
[15:22:14] <bobry-> подскажите, как принято?
[15:30:03] bobry- вышел(а) из комнаты
[15:30:08] bobry- вошёл(а) в комнату
[15:30:25] <Typhon> parse_string, parse_channel в публичном, по-моему ок
[15:52:19] <bobry-> кстати, а чего это #t для polymorphic variants сделали depricated?
[16:05:34] <f[x]> я для чего этот #t?
[16:05:45] <f[x]> type z = [ t | `C ];; работает
[16:06:30] <bobry-> ну это же shortcut для `A | `B | `C, при t = [ `A | `B | `C ]
[16:06:34] <bobry-> хотя не знаю, может и не всегда он нужен
[16:06:43] <bobry-> например чтобы в *.mli не перечислять все варианты
[16:07:01] <f[x]> просто t работает
[16:07:32] <bobry-> хотя да, чего это я
[16:13:28] <f[x]> bobry-: ты кстати в курсе что такие библиотечки уже вроде бы есть?
[16:17:12] <bobry-> f[x]: ага, есть заброшенный ocaml-bert и ocaml-erlang-port от пацанов из ульяновска
[16:17:27] bobry- хочет camlp4 версию
[16:17:45] <f[x]> ок!
[16:17:56] <f[x]> type-conv?
[16:18:14] <bobry-> я его еще не трогал
[16:18:23] <f[x]> либо deriving
[16:18:45] <f[x]> просто инфраструктура готовая чтобы самому не разбирать камлевые типы
[16:19:14] <bobry-> в смысле произвольные типы?
[16:19:35] <f[x]> ну, как ты camlp4 хочешь использовать
[16:19:39] <ermine> camlp4 sux, из-за него ocamlscript не компилится
[16:19:46] <bobry-> пока только parser
[16:19:50] <f[x]> а
[16:20:21] <f[x]> я представлял аналогично как sexp, json-static, etc сделано
[16:20:57] <f[x]> т.е. пишешь type x = { name : string; age : int; } with (sexp, erl) и получаешь заодно функции сериализации в sexp и эрланговые термы
[16:21:07] <bobry-> это звучит очень вкусно
[16:21:11] <bobry-> но я пока так не умею :)
[16:21:17] <f[x]> ну :)
[16:26:25] <bobry-> хм, а Sscanf не умеет "%.4f"?
[16:26:32] <bobry-> Scanf.sscanf тобишь
[16:27:47] <f[x]> думаю нет, но это какое-то странное требования
[16:28:16] <f[x]> плюс если ты используешь Scanf в парсере - это гарантированный затык
[16:29:15] komar вошёл(а) в комнату
[16:35:16] <bobry-> f[x]: почему?
[16:35:24] <bobry-> я же sscanf делаю, из строки
[16:35:54] <f[x]> померяй :)
[16:36:00] <bobry-> скорость в смысле?
[16:36:28] <f[x]> пять минут назад закоммитил :
ARGH!! DO NOT use Scanf in tight loops!
[16:36:35] <bobry-> :)
[16:42:30] <ermine> открытие дня?
[16:47:34] <f[x]> как минимум полугодовой давности :)
http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/04/09.html#20:48:46.26803
http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/06/06.html#17:07:26.985107
[16:49:42] <Typhon> f[x]: он постоянно "разбирает" строку формата штоле?
[16:50:08] <f[x]> не знаю
[16:50:16] <f[x]> наверное, раз printf да
[16:50:34] <ermine> ну строку формата и принтф постоянно разбирает же
[16:50:51] <f[x]> вот чтобы не быть голословным - http://paste.in.ua/2869/
scanf : allocated      2.1GB, heap         0B, collection 0 271 8702, elapsed 0.9068 secs, 1102740.11/sec : ok
  sub : allocated     30.5MB, heap         0B, collection 0 0 122, elapsed 0.0943 secs, 10604557.56/sec : ok
[16:51:03] <f[x]> и это простейший случай
[16:51:11] <Typhon> не просто тормозит, а безбожно тормозит!
[16:52:01] <ermine> надо юзать unparsing, котоырй и печатает и парсит
[16:52:40] <ermine> про это св. Олег тоже писал
[16:52:55] <Typhon> f[x]: Action — это что-то твоё или общедоступное?
[16:53:00] <f[x]> ermine: и тоже тормозит :)
[16:53:14] <f[x]> моё
[16:53:30] <ermine> f[x]: а чему там тормозить?
[16:54:08] <f[x]> куча индирект вызовов, и наверняка аллокаций много
[16:54:36] <f[x]> Typhon: ну там всё ж просто - меряется хип и время
[16:54:53] <Typhon> "цена абстракции" (только предполагаю, про анпарсинг не читал)
[16:55:20] <Typhon> f[x]: а выкладывать не думал? хочется порой такого простого print_bench :-)
[16:55:38] <f[x]> надо юзать генераторы парсеров
[16:56:49] <f[x]> Typhon: ну выложу, но тут же мороки скачивать больше чем самому один раз написать :)
[16:57:07] <ermine> не инлайнится, да, хреновый камль
[16:57:14] <f[x]> правда выложить надо, потому что я иногда в багрепортах скорость меряю, и код приходится выдирать, а там зависимости всякие
[16:57:34] <f[x]> интересно как можно синлайнить кложурку которая в рантайме строится
[16:57:39] <f[x]> это jit нужен
[16:57:40] <ermine> надо генерить парсер, где нет передач функций по аргументу
[17:03:09] <bobry-> товарищи, а почему вот так нельзя let f = parser [< '(char_of_int 97) >] -> ...;;
[17:03:31] <bobry-> причем Stream таким образом можно сделать, т.е. [< '(char_of_int 97) >] ошибки не вызовет
[17:04:35] <Typhon> '\097'
[17:04:40] <Typhon> зачем функи какие-то?
[17:04:56] <bobry-> 097, хммм, то то я думаю он на \97 ругается
[17:04:58] <bobry-> мерси :)
[17:05:28] <f[x]> бинарный парсер на стримах? ммм
[17:05:51] <bobry-> хочу как у Typhona в кобзоне :)
[17:08:49] <ermine> пример надо брать с bin-prot
[17:09:27] <ermine> прыщ знает толк в этом деле
[17:11:16] <bobry-> там все на сях <_<
[17:18:34] <komar> А чо это вы тут делаете?
[17:28:15] <ermine> топчем верблюда
[17:28:17] <ermine> а ты?
[17:37:51] <komar> А я ничего, я только вернулся.
[17:39:22] <ermine> с пляжа горной речки?
[17:55:51] <komar> С подсолнухового поля.
[18:14:36] digimmortal вошёл(а) в комнату
[18:59:02] ftrvxmtrx вышел(а) из комнаты
[19:55:15] Typhon вышел(а) из комнаты
[19:56:53] <bobry-> товарищи, а можно как нить кошерно из строки char list получить?
[19:56:56] <bobry-> чета я не могу нагуглить
[19:57:26] <f[x]> String.explode
[19:58:01] <bobry-> название классное
[19:58:43] <bobry-> спасибо
[20:00:48] zinid вышел(а) из комнаты
[20:00:50] <f[x]> Typhon: http://ygrek.org.ua/p/code/measure.ml.html
[20:02:00] <bobry-> оно еще и не в stdlib, nice
[20:02:48] <f[x]> голую stdlib юзают только мазохисты
[20:03:28] f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
[20:07:39] <komar> Безобразие.
[20:07:42] <komar> Верните каноничный топик.
[20:08:59] <f[x]> это каноничъный
[20:11:10] <ermine> он перестал быть каноническим после того как переименовали труп
[20:13:12] <komar> Его уже сто лет как переименовали, это слоупоки какие-то в рассылке кипиш подняли.
[20:13:43] <ermine> а okasaki ктонить осилил прочитать?
[20:14:18] bobry- в процессе
[20:14:21] <mrm> Осилил, интересная книжка
[20:14:22] <gds> komar: значит реплика ermine не актуальна, и текущий топик ок.
[20:14:29] <bobry-> ermine: learnyouahaskell уже все?
[20:14:54] <komar> gds: «мерртв и тормозит» — это нехорошо.
[20:14:54] <gds> ermine: прочитать -- асилил, остальное -- чисто как справочник и всего считанные разы.
[20:15:09] <f[x]> komar: так правда же
[20:15:26] <ermine> gds: у тебя есть пюре структуры?
[20:15:46] bobry- поймал кошерный коммит http://paste.in.ua/2874/
[20:16:46] <gds> komar: вместо "мёртв" не напишешь же "редкие энтузиазизсты насилуют труп", а вместо "тормозит" не напишешь "с помощью адской магеи нельзя заставить анбоксить те структуры данных, которые были вычислены путём применения аннотаций строгости к члену тайпкласса".
[20:16:52] <gds> ermine: list 'a!1111
[20:17:20] <komar> gds: wtf am i reading
[20:17:42] <ermine> gds: не, я про классическую книжку окасаки
[20:18:44] <gds> ermine: какие-то были.  давно.  они же не нужны в целом.  как разминка для ума -- прикольно, чо.  а так -- надо думать, смотреть.
[20:19:47] <ermine> ладно
[20:19:55] <ermine> пойду кататься и проветривать ум
[20:20:39] <ermine> вчера проколола новую дырку в рёмне, чтобы поодержать сползающие штаны
[20:21:53] <ermine> вот тут чего-то многа у этого ипонца
http://www.eecs.usma.edu/webs/people/okasaki/pubs.html                        
[20:22:10] <ermine> но той книжки там вроде нет нахаляву
[20:22:44] <f[x]> она есть официально на шару в виде диплом
[20:23:23] <ermine> на украинском?
[20:24:47] <f[x]> на SML
[20:25:58] <ermine> не
[20:26:12] <ermine> sml вообще перпендикулярный ml
[20:36:12] mrm вышел(а) из комнаты
[20:39:59] digimmortal вышел(а) из комнаты
[20:59:14] bobry- вышел(а) из комнаты
[21:39:31] shaggie вышел(а) из комнаты
[22:08:59] <bobry> что то type-conv не отличается хорошей документацией
[22:09:04] <bobry> даже туториала нету
[22:34:27] <gds> наверное, надо подать пример того, как стоит писать документацию.  Заодно и код.  И туториалы.  И сайты проектов оформлять.  И релизы делать.  С тарбольчиками сжатенькими.  И как в dvcs коммиты писать и ветки лепить.  И как отвечать за это, не получая ни единого сраного доллара.  bobry, мне нужен пример.  А ещё лучше -- несколько (часть либ для примера могу подарить -- с перерисовкой авторства и прочего, чтобы и часть "славы" тоже подарить).  Потому что половину этого я делать не умею.
[22:35:53] <bobry> gds: вот ты выкладываешь либу в oss -- если ты не пишешь для нее документацию то ее существование примерно равно ее отсутствию, чтобы начать пользоваться твоей библиотекой надо как минимум прочесать исходники (что будет делать далеко не каждый)
[22:36:01] <bobry> зачем тогда вообще делиться, если то чем ты делишься *сложно* использовать
[22:36:07] <bobry> это какой то энтерпрайз вей
[22:37:00] <bobry> я вот ковыряю по работе сырцы xen-api, один коммент на 1000 строк кода там за счастье, разбирайся что куда оно посылает и пишет
[22:41:08] <gds> проблема в том, что даже с документацией, туториалами и прочим -- всё равно, 1. надо изучать концепции (отваливается куча людей), 2. надо изучать документацию, 3. надо смотреть в туториал, 4. если авторам не платят денег, то даже при наличии документации обычно получается так, что требуется лезть в исходники, рано или поздно.  Такая история.
[22:42:53] <bobry> я не против похода в исходники, но по моему мнению автор должен приложить определенные усилия чтобы сделать свою поделку полезной для сообщества
[22:43:08] <bobry> дать ссылку на концепции например, или описать их в design doc'e
[22:43:50] <gds> на это всё тоже нужно иметь ресурсы.  Мы же сейчас говорим про красноглазый опенсорс.
[22:45:37] shaggie вошёл(а) в комнату
[23:34:52] abiogenesis вошёл(а) в комнату
[23:37:47] abiogenesis вышел(а) из комнаты
[23:49:50] shaggie вышел(а) из комнаты
[23:57:42] komar вышел(а) из комнаты: Replaced by new connection
[23:57:42] komar вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!