Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 23 мая 2012< ^ >
f[x] установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом
Конфигурация комнаты
Участники комнаты

GMT+4
[00:04:39] Sun][ вышел(а) из комнаты
[00:10:00] f[x] вышел(а) из комнаты: Computer went to sleep
[00:11:58] Typhon вошёл(а) в комнату
[00:41:40] ermine вышел(а) из комнаты
[01:05:01] Kakadu вышел(а) из комнаты
[01:56:13] tilarids вышел(а) из комнаты: Machine going to sleep
[08:43:41] dki001 вошёл(а) в комнату
[09:18:06] dki001 вышел(а) из комнаты: offline
[09:35:25] dzhon вошёл(а) в комнату
[09:42:17] bobry вошёл(а) в комнату
[09:55:28] bobry вышел(а) из комнаты
[09:55:32] bobry вошёл(а) в комнату
[10:02:30] ftrvxmtrx вышел(а) из комнаты
[10:16:30] ermine вошёл(а) в комнату
[10:22:12] bobry вышел(а) из комнаты
[10:56:01] dzhon вышел(а) из комнаты: Replaced by new connection
[10:56:01] dzhon вошёл(а) в комнату
[11:01:09] tilarids вошёл(а) в комнату
[11:06:27] ftrvxmtrx вошёл(а) в комнату
[11:41:19] Typhon вышел(а) из комнаты
[11:52:09] dzhon вышел(а) из комнаты
[12:17:06] Sun][ вошёл(а) в комнату
[12:35:11] Typhon вошёл(а) в комнату
[12:49:43] Kakadu вошёл(а) в комнату
[12:49:55] Kakadu вошёл(а) в комнату
[12:54:16] tilarids вышел(а) из комнаты: Machine going to sleep
[13:17:19] dzhon вошёл(а) в комнату
[13:24:43] tilarids вошёл(а) в комнату
[13:29:20] Sun][ вышел(а) из комнаты
[13:34:20] Sun][ вошёл(а) в комнату
[13:54:44] komar вышел(а) из комнаты
[13:57:53] komar вошёл(а) в комнату
[14:21:10] akovbovich вошёл(а) в комнату
[14:23:05] <f[x]> gds: в objsize нужно встроить защиту от переполнения стека
[14:23:43] <f[x]> но я не знаю как это более менее портабельно сделать
[14:26:48] <gds> f[x]: из тупых идей -- разве что выделять пачку массивов указателей, которые использовать вместо стека.  Это портабельно, а замедление будет несущественным.
[14:28:34] <gds> точнее, не указателей, а структур, которые будут хранить всё, что нужно хранить и восстанавливать при рекурсивном вызове.
[14:28:58] <f[x]> точно несущественно?
[14:29:51] <gds> ну, стек всяко быстрее, но по O()-оценке будет так же.  Ну, в два раза тормознее будет, ну и чо.
[14:34:53] <f[x]> не кузяво
[14:38:15] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:38:15] Kakadu вошёл(а) в комнату
[14:42:22] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:42:23] Kakadu вошёл(а) в комнату
[14:44:09] dzhon вышел(а) из комнаты: Replaced by new connection
[14:44:10] dzhon вошёл(а) в комнату
[14:46:52] <gds> давай тогда "хоть где-нибудь работающую защиту", чисто для твоих применений, а остальным будет как было.
кстати, нет ли каких-нибудь сишных либ для подобной защиты?  Тебе это виднее, ты в этом больше копаешься.
[15:22:44] <f[x]> ну вот в камло недавно запилили проверку - что стека достаточно при вызове сишной функции
[15:25:34] komar вышел(а) из комнаты
[15:25:40] komar вошёл(а) в комнату
[15:29:40] <f[x]> т.е. тут поинт только в том чтобы найти границы стека и текущую позицию в стеке
[15:30:16] <f[x]> и сколько занимает фрейм c_objsize
[15:30:30] <f[x]> попробую сделать
[15:34:52] dzhon вышел(а) из комнаты
[15:39:02] <gds> во, а может эту окамловскую функциональность и использовать?
[15:50:23] <gds> меня чуток попустило и я переделал "универсальный тип", теперь thread-safe.  из используемой "новой" функциональности только "(type a)".  http://paste.in.ua/4275/
[15:53:53] <f[x]> там ассемблер
[15:55:38] <gds> наружу сишное не дают?  пичалька, значит.
[15:58:04] akovbovich вышел(а) из комнаты
[16:10:29] <f[x]> нет конечно
[16:14:19] <f[x]> в некоторых компилерах (не gcc) есть stackavail..
[16:17:17] <f[x]> ещё есть какой-то libsigsegv который вроде может
[16:27:23] <f[x]> видимо нормального способа нету
[16:27:37] <f[x]> а тормозить каждый вызов для того чтобы отловить редкие случаи - не круто
[16:27:51] <f[x]> но непредсказуемо крэшиться - вообще не круто..
[16:28:35] komar вышел(а) из комнаты
[16:28:35] komar вошёл(а) в комнату
[16:30:41] <gds> лучше меньшее не круто, чем большее.
или две ветки сделать, одна быстрая до определённой глубины, другая для большей глубины.  но дублирование кода.
[16:32:47] <f[x]> т.е. экспортировать два варианта - objsize и objsize_reliable :)
[16:34:15] <gds> не обязательно, можно в c_objsize переключаться в зависимости от depth.  прямо в коде зафигачить "если depth = max_depth то используем хип, иначе стек".  но геморно это.
[16:34:22] <f[x]> причём что забано на винде есть цивильный способ это делать - через api
[16:34:49] <f[x]> вариант
[16:35:11] <f[x]> тупой вариант - сделать выход по max_depth
[16:35:18] <f[x]> и max_depth отдать пользователю
[16:35:39] <f[x]> устанавливать
[16:36:53] <gds> тупой, но простой до ужоса.  давай его, наверное.  Но желательно в .mli задокументировать, и по умолчанию оставить таки "без границ".
[16:38:30] <f[x]> естественно
[16:38:45] <f[x]> надо ещё возвращать что результат неполный
[16:38:58] <f[x]> исключением?
[16:39:10] <f[x]> или флажок лучше в структуре
[16:39:22] <gds> или, может, сделать две функции -- objsize и objsize_depthlimited, и там уже будет понятно: что вызвал, то и имеешь.
[16:39:26] <f[x]> да
[16:39:29] <f[x]> годно
[16:41:39] <f[x]> пилить патч?
[16:42:59] <gds> пилить релиз!  :)
[16:59:19] akovbovich вошёл(а) в комнату
[17:17:24] komar вышел(а) из комнаты
[17:17:44] komar вошёл(а) в комнату
[17:47:52] <f[x]> а ведь нет смысла ограничивать рекурсию которая через goto
[17:48:01] <f[x]> чтобы списки длинные мерять
[17:49:32] <gds> это да, списки через goto.
[18:04:29] <Kakadu> итак, придется за помощью в F# идти к камлистам
[18:04:46] <Kakadu> http://paste.in.ua/4278/
[18:05:29] <Kakadu> запилил парсер на своих комбинаторах и на фпарсеке. Дурацкий вопрос. Почему мои комбинаторы работают, а в фпарсеке переполнение стека?
[18:07:34] ftrvxmtrx вышел(а) из комнаты
[18:19:24] <gds> эх, как же легко писать на окамле после coq (в том числе, на окамле со всякими извратами с типами).  Какое-то более глубокое понимание систем типов прокачалось, что ли.  В общем, ради одного этого таки стоит потратить время на coq.
[18:57:25] tilarids вышел(а) из комнаты
[19:13:15] Typhon вышел(а) из комнаты
[19:13:57] tilarids вошёл(а) в комнату
[19:17:44] <f[x]> gds: обновил патчи
[19:21:18] <Kakadu> Ура, я понял что мне написать в тексте
[19:34:25] Sun][ вышел(а) из комнаты
[19:34:42] <gds> f[x]: "One can detect this situation by comparing returned {!depth} with the limit." -- кроме случаев, когда глубина реально равна depth.  Может стоит выставлять max_depth в limit_depth+1, если дошло до предела?
Остальное в последнем патче очень понравилось.  Давай, как потестится у тебя этот limit_depth, релизну уже наконец?
[19:35:01] <gds> s/если дошло до предела/если дошло до предела и хочет идти дальше/
[19:35:21] <f[x]> gds: ну вот мне лень было проверять "хочет идти дальше"
[19:35:30] <gds> тогда забей однозначно.
[19:35:32] <f[x]> мне не существенно
[19:35:35] <f[x]> ок
[19:35:59] <f[x]> ещё будет один патч с обновлением оазиса
[19:38:51] <gds> ну, как оформишь патч и как оно потестится, свистни, релизну.  Только просьба: тщательно опиши свои достижения в readme (или что там).  Чтобы люди знали, что именно ты это сделал.  Тебе же профит, а я хочу, чтобы ты при желании мог показать objsize и сказать "вот, смотрите, это я сделал".
[19:41:02] <f[x]> ты просто хочешь чтобы я потом багши сам фиксил!
[19:43:00] <gds> учитывая, что от моего кода там почти ничего не осталось, уже пофиг, где там чей код.
[19:43:59] <f[x]> осталось, вот сейчас нашёл что оказывается оно настолько хитрое что делает rec_goto только на is_block поля, а не на всё подряд
[19:44:24] <f[x]> поэтому мой первый тест с Cons of badlist and int спектакулярно не работал
[19:46:35] <gds> хехе, почувствуй валшэбную силу goto!  :]
[19:46:53] <gds> а хотя не, там сила if'а.
[19:47:07] <f[x]> ага
[19:47:33] <gds> ну а чо, нормальная оптимизация же, чтобы стек не жрать зазря.
[19:47:46] <f[x]> ну да, но всё таки неожиданно было
[19:48:00] <Kakadu> " С другой стороны, априори можно сказать, что такие динамические вызовы нехороши с точки зрения производительности парсера."
Годится фраза, или переделывать?
[19:51:01] <gds> Kakadu: а кто такие априори?
[19:51:36] <Kakadu> a priori по-латыни "до эксперимента"
[20:36:16] Kakadu вышел(а) из комнаты
[20:37:23] Kakadu вышел(а) из комнаты
[20:38:03] akovbovich вышел(а) из комнаты
[21:01:15] ftrvxmtrx вошёл(а) в комнату
[21:13:57] bobry вошёл(а) в комнату
[21:27:55] komar вышел(а) из комнаты: Replaced by new connection
[21:27:57] komar вошёл(а) в комнату
[21:31:56] Kakadu вошёл(а) в комнату
[21:55:03] akovbovich вошёл(а) в комнату
[22:18:43] tilarids вышел(а) из комнаты: Computer went to sleep
[22:37:48] akovbovich вышел(а) из комнаты
[22:38:10] tilarids вошёл(а) в комнату
[22:39:34] komar вышел(а) из комнаты
[22:40:14] komar вошёл(а) в комнату
[23:03:05] komar вышел(а) из комнаты
[23:03:11] komar вошёл(а) в комнату
[23:24:56] <ermine> gds: как думаешь, можно ли и нужно ли объединить системы типов разных маркапов (bbcode, creola, markdown), чтобы типа был единообразный вывод или пропалывать каждый формат в своей песочнице?
[23:25:33] <ermine> gds: я тут вношу семантику в bbcode в комбайне, чтобы уже пристегнуть к сайту, у него типы конечно отличаются от маркдаунистых
[23:26:06] <ermine> а если еще текстилу еще добавить
[23:26:25] <gds> ermine: в основном фичи одинаковые, поэтому смотри, что тебе нужно.  если всасывать и анализировать -- стоит объединить.  если генерить эти разметки тоже -- тут сложнее, у меня не готово решение сходу (однако можно напрячь полуморфные типы при желании, они справятся).
[23:26:32] <gds> я ща отхожу от компа, отвечу потомю
[23:26:36] <gds> ПОТОМЮ!111
[23:28:23] <bobry> :)
[23:28:50] <ermine> ну если объединять, то вопрос что делать с теми фичами, которых у соседнего формата нет
[23:29:13] <ermine> в основном чтобы генерить хтмыль
[23:30:51] <ermine> bobry: как поживает барбар?
[23:33:19] <ermine> ну тогда буду делать объединенный тип, как-то оно проще будет с унификацией генерируемого хтмля
[23:33:38] <ermine> а вот зачем генерить разметку - этого и в страшном сне представить себе не могу
[23:37:18] <ermine> о, блюсторм применил мой говнопатчик в макаку
[23:37:22] <komar> ermine: нет.
[23:37:27] <ermine> не пора ли делать следующий?
[23:38:00] <ermine> komar: что нет?
[23:38:07] <komar> Yt vj;yj/
[23:38:12] <komar> *Не можно.
[23:38:48] <ermine> komar: а почему?
[23:40:30] <komar> Просто так.
[23:41:25] <ermine> komar: ты просто вредный?
[23:42:10] <komar> Я совет дал.
[23:42:43] <komar> Обязательно найдется между ними такая особенность, из-за которой имеет смысл делать отдельные AST.
[23:42:51] <komar> Ну а если нет, то нет, конечно.
[23:43:39] <komar> Либо, третий вариант — делать супер-AST, множество фитч которых включает множества каждого языка разметки по отдельности.
[23:44:10] <ermine> супер-аст уже есть, это хтмл
[23:44:33] <ermine> он же и таргет
[23:45:03] <ermine> а вот если добавить разметку TeX, то пока не знаю во что оно там выливается...
[23:45:24] <komar> Вот на случай «не знаю» я тебе советую делать отдельно.
[23:45:59] <komar> Писать лишнее лениво, переделывать существующее — еще ленивее.
[23:46:07] <komar> Выбираем первое.
[23:47:39] <ermine> да переделывать всяко придется
[23:48:33] <komar> Не переделывать, а допиливать свой кусок.
[23:49:37] <ermine> какой такой кусок?
[23:49:46] <komar> Для поддержки теха.
[23:49:51] <bobry> ermine: все еще никак, но семестр уже почти закончился :) так что возможно она скоро оживет
[23:51:09] <ermine> bobry: ну давай, ждем-с, хотя у нас и разногласия в части употребления барбары
[23:52:35] <ermine> а tex кстати надо через hevea гнать :)
[23:52:46] <ermine> можно посмотреть в код hevea
[23:53:44] <komar> КОСТЫЛN
[23:53:48] ermine распаковала хевею и с ужасом считает файлы
[23:54:06] <komar> Нахрен тебе вообще парсер было делать, если уже есть?
[23:54:56] <ermine> у меня нет парсера texa (пока?)
[23:55:18] <komar> А, ты tex хочешь парсить, а не _в_ tex?
[23:55:33] ermine tex толком даже не знает
[23:56:01] <ermine> а какие еще разметки популярны?
[23:58:08] <komar> TEXTILE
[23:58:42] <bobry> asciidoc
[23:58:53] <ermine> ну текстиль - типа ббкода
[23:59:18] <komar> лолшто
[23:59:21] <ermine> во, ascidoc - это свежая мысль
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!