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

GMT+3
[00:12:17] arhibot вошёл(а) в комнату
[00:35:28] arhibot вышел(а) из комнаты
[00:36:23] gds вышел(а) из комнаты
[00:53:05] ermine вышел(а) из комнаты
[01:12:39] <ygrek> http://nponeccop.livejournal.com/201937.html
[01:21:44] ygrek вышел(а) из комнаты
[03:23:40] Typhon вышел(а) из комнаты
[08:39:02] gds вошёл(а) в комнату
[08:45:49] ermine вошёл(а) в комнату
[09:14:54] <ermine> клевая ссылочка http://enfranchisedmind.com/blog/posts/a-monad-tutorial-for-ocaml/
[09:16:30] <gds> подтверждаю.
[09:34:11] <ermine> тут ктонить рубит в похапэ?
[09:34:42] <ermine> а то непонятно как в ocsigen выглядит аналог $_SESSION, и как оно в похапэ работает без кук?
[09:54:51] Kakadu вошёл(а) в комнату
[09:58:54] SerP вошёл(а) в комнату
[10:15:37] arhibot вошёл(а) в комнату
[10:25:39] ygrek вошёл(а) в комнату
[10:25:52] ygrek вышел(а) из комнаты
[10:26:04] ygrek вошёл(а) в комнату
[10:34:27] ygrek вышел(а) из комнаты
[10:34:55] ygrek вошёл(а) в комнату
[10:35:35] ygrek вышел(а) из комнаты
[11:15:35] <f[x]> а оно в похапэ через куки и работает, либо через явный session=.... в урле
[11:17:34] <ermine> я куку не вижу
[11:17:49] <ermine> а $_SESSION - это какая-то магическая хрень
[11:21:16] <f[x]> ну если не через куки то через /dev/magic :)
[11:22:49] <ermine> вот именно
[11:23:03] <ermine> пытаюсь реверс-инженерить /dev/magic
[11:26:43] <ermine> ой, tcpflow рулит
[11:26:56] <ermine> оно таки ставит куку, когда шлет саму картинку
[11:37:55] <ermine> а есть тут психи, которые принципально отключают куки в своих броузерах?
[11:45:38] <f[x]> я отключаю third party cookies и делаю rewrite для expire-time на прокси и/или "удалять новые куки при выходе из браузера"
[11:46:36] <Kakadu> value unif lst =
  let module M = struct include (Map.Make String) end in
  5;
[11:46:46] <Kakadu> так правда нельзя писать в 3.11.2?
[11:51:19] <f[x]> почему?
[11:51:22] <f[x]> # let f x =
  let module M = struct include Map.Make(String) end in
  x;;
val f : 'a -> 'a = <fun>
[11:51:55] <Kakadu> revised?
[11:54:22] <Kakadu> правильно
struct include Map.Make String; end
[11:55:42] <ermine> да String обычно в скобки заключают
[11:56:08] <Kakadu> даже со скобками ; надо
[11:56:36] <Kakadu> и похоже в модуле после каждой новой фанки тоже ;
[11:56:59] <ermine> а, ревизед
[11:57:17] <ermine> мозги набекрень на другую сторону
[11:58:23] <ermine> f[x]: а с твоей схемой обращения с куками капчи работают, те, которые на куках?
[12:06:19] arhibot вышел(а) из комнаты: Replaced by new connection
[12:06:20] arhibot вошёл(а) в комнату
[12:06:41] <f[x]> угу
[12:06:59] <f[x]> они просто не переживают рестарт браузера
[12:12:53] <f[x]> String.iteri в stdlib, что же это делается, а?
[12:14:38] <gds> небось скоро string_fold_{left,right} сделают, которые у меня кочуют копипастой везде.
[12:25:43] Typhon вошёл(а) в комнату
[12:36:05] myxomop87 вошёл(а) в комнату
[12:41:49] gds вышел(а) из комнаты: Replaced by new connection
[12:41:50] gds вошёл(а) в комнату
[12:42:43] <ermine> пора бы уже заиметь chars_of_string
[12:44:25] <ermine> [12:14]<alexott> хммм, исходники F# зарелизили вместе с core libraries
[12:45:30] <Typhon> apache license, ага
[12:45:42] <gds> chars_of_string -- только для мелких строк годно.
[12:46:48] <gds> а учитывая, что списки не ленивые, все манипуляции, не пересоздающие хвост, составлены только из откусывания и приклеивания головы.
[12:48:10] <ermine> gds: ну для парсеров-то чо делать?
[12:48:22] <ermine> gds: особенно с бэктрейсом
[12:49:40] <gds> ocamlyacc/menhir, всякие context-free, Stream, iteratees (для простых штук), combinator parsers (в том числе такие, где результат = список альтернатив).
[12:51:17] <ermine> а комбинаторные парсеры как раз обычно со списками работают, и они кажись наиболее удобные парсеры, если еще и монадичные :)
[12:51:43] <f[x]> эт что, ms настолько в f# не верит?
[12:52:49] <Kakadu> f[x]: А что эта фраза означает? про "зарелизили"?
[12:53:12] <Kakadu> core libraries это наверное на Janestreet core?
[12:53:18] <Kakadu> не*
[12:57:24] <gds> ermine: можно сделать любой нужный тип входа в комбинаторном парсере.  Я бы делал что-то наподобие http://bitbucket.org/gds/ocaml-iteratees/src/tip/subarray.ml для юникода и вообще полиморфного "входа", и пару (string * offset) для парсинга байтов.  То есть, списки -- не обязательно.
[13:00:53] <ermine> gds: мне просто казалось, что списки не требуют расхода памяти на бэктрейсы - список-то не модифицируется, а в бэктрейсах указатели на разные там части списка
[13:01:09] <f[x]> Kakadu: ну открыли код, а что?
[13:01:20] <ermine> (подумав и решила заглянуть в ссылку)
[13:02:11] <Kakadu> f[x]: а почему тогда не верят?
[13:02:37] <ermine> gds: какнить изучу матерьяльчик, пасиб
[13:02:38] Kakadu уже забыл кто тут должен писать *не сарказм*
[13:02:40] <gds> ermine: ну так фиксированная строка+смещение тоже не требуют расхода памяти -- вернулся к старому указателю и давай наяривать заново.
[13:03:17] <ermine> gds: для строки придецца хранить гркуду i
[13:03:32] <gds> ermine: по ссылке -- просто концепция "подмассив" (массив + смещение + длина) плюс пару функций, которые мне для iteratees были нужны.  Ничего толкового там нет.
[13:04:41] <ermine> gds: а чем оно круче 'a list?
[13:04:50] <gds> ermine: можно всё завернуть в абстрактный type mystring = { str : string; ofs : int; next_str : mutable option mystring }, вывести операции "refill" (менять next_str, дописывать новые данные), next_char (увеличивать ofs по нужде), ну и всё такое.
[13:06:05] <gds> круче -- тем, что O(1) доступ к элементам, однажды выделенный кусок не выделяется заново, а используется старый (причём это реально есть в коде, в iteratees.ml / "enum_fd" или типа того).
[13:06:23] <ermine> gds: добавь еще одну функцию - flush, чтобы явно показать, что старая часть строки для бэктрейсов не пригодится уже :)
[13:06:40] <gds> ну, это ты добавь, я же тебе mystring советую :)  Мне пока оно не надо.
[13:07:23] <gds> то есть, iteratees, хоть и очень высокоуровневая штука, но позволяет свести к минимуму разъедание по памяти, например.  Для того и придумывали её.
[13:07:30] <ermine> зато для списков чота не видно, что flush нужен
[13:08:01] arhibot вышел(а) из комнаты
[13:08:07] <ermine> мож плохо мыслю, голова забита ocsigenом, пока выходные
[13:08:46] <ermine> gds: а твою ссылку я закопаю пока в букмарку
[13:11:28] <gds> ermine: да вообще, момент некритичный: кто как хочет, так и реализует комбинаторные парсеры.  И вдобавок запиши там http://thedeemon.livejournal.com/17274.html
[13:12:26] <f[x]> Kakadu: ну а когда ms код открывает? у C# код открыт?
[13:13:40] <ermine> gds: да, и это почитаем как-нить при бессонице ;)
[13:14:18] <Kakadu> тут антимат?
[13:14:39] <ermine> хотя там чота знакомое просматривается
[13:14:47] <ermine> из стати с фпрога
[13:15:55] <Kakadu> f[x]:  корчое эти пидарасы сейчас усиленно лижут жопу FSF
[13:17:02] <Kakadu> я надеюсь, что в рамках CLR нельзя реализовать функторы и дальше фэдиез будет развиваться в сторону добавления новых классов
[13:24:27] <f[x]> откуда такое сильное чувство?
[13:25:24] <Kakadu> сейчас я попробую пошутить
[13:26:05] <Kakadu> "Я придерживаюсь классических взглядов и меня коробят слова : феминистки, колубые и microsoft"
[13:26:08] <Kakadu> шутка кончилась
[13:26:24] Kakadu улыбается
[13:30:48] <ermine> gds: одно можно сказать - все это не очень-то декларативно :)
[13:34:27] <gds> ermine: что именно "всё"?  комбинаторные парсеры?  сделай декларативными, они такими и будут.
[13:35:35] <ermine> gds: машинно-зависимая (с оглядкой на расход памяти) имплементация
[13:37:25] <gds> недопонял, как это машинно-зависимая?  и речь про комбинаторные парсеры thedeemon'а или про что?
[13:38:42] <ermine> императивность vs. декларативность!
[13:39:01] ermine то ли иронизирует, то ли издевается
[13:39:33] <ermine> gds: в твоей первой ссылке же упор был на императивность?
[13:40:19] <gds> в первой ссылке -- оно напрочь императивно, как и должно быть, но используется в весьма декларативных по сути iteratees.
[13:41:08] <f[x]> всё так, если программа потребляет мало памяти то она слишком императивна, это надо исправить
[13:44:32] <gds> блин, да не знаю я, куда там отжор памяти вставить, хоть ногами меня бейте...
[13:45:43] <Typhon> для этого extension на хаскеле нужен
[13:45:54] <Typhon> для него отжор в комплекте
[13:49:09] <gds> ох, как сложно это.  Однако записал в todo, что надо это дело портировать тоже.
[13:57:21] <ermine> в овербилд?
[14:07:38] <ermine> а какой наиболее дешевый способ получения рандомного значения? хэш-строка от gettimeofday() наверняка не очень дешев из-за сискола
[14:09:46] <gds> боюсь предложить..  модуль Random?
[14:10:12] <ermine> мне надо подлинее
[14:10:24] <ermine> хотя бы 10 символов
[14:10:35] <gds> Random.bool () и побитово рожай символы :)
[14:10:49] <f[x]> Random.int 256 и по-char'ово
[14:10:55] <gds> да.
[14:11:19] <ermine> а, точно
[14:54:57] Typhon вышел(а) из комнаты: Replaced by new connection
[14:55:00] Typhon вошёл(а) в комнату
[15:01:17] ʇsʎɯ вошёл(а) в комнату
[15:01:27] <ʇsʎɯ> ну, вы уже в курсе, да?
[15:01:31] <ʇsʎɯ> поздравляю, чё
[15:01:55] <gds> чё?
[15:02:23] <Kakadu> он про фэшарп наверное
[15:03:05] <Typhon> или про черномырдина ^_^
[15:03:35] <ʇsʎɯ> про f#
[15:03:40] <ʇsʎɯ> а кто такой черномырдин?
[15:06:02] <f[x]> чм тоже зарелизили что-ли?
[15:07:01] <gds> погуглил.  однако, final release.
[15:08:29] <f[x]> хм
[15:11:08] <ermine> хех
[15:11:50] ermine протерла дырку в своем моску, но сумела хакнуть оазисовый билдер в lwt, чтобы собрать его с libev
[15:12:23] <ermine> надо будет перенять использование oasis
[15:55:28] ermine в который раз убеждается, что make - это зло
[15:59:36] <Typhon> а вы когда в си пишете, вы * ставите вплотную к типу, вплотную к имени переменной или отдельно ото всего?
[16:02:14] <gds> я объявляю указатели по одному, поэтому могу себе позволить ставить * рядом с типом.
[16:02:41] <Typhon> мне такое тоже больше нравится, но чот часто вижу рядом с именем.
[16:03:19] <gds> потому что "int* p, q" == "int* p; int q", тем и предохраняются.
[16:12:41] <gds> кстати, в моём говноязыке будет " var := $var + 123 ", где $ -- префиксное разыменование (ref 'a -> 'a), а ":=" -- инфиксное присвоение (ref 'a -> 'a -> unit).  То есть, мне не нравятся ни указатели, ни const-модификаторы.
[16:49:51] <ermine> хныг, в новом ocsigen куда-то в угол замяли параметр многих калбэков sp
[17:01:08] ʇsʎɯ вышел(а) из комнаты
[17:13:49] ʇsʎɯ вошёл(а) в комнату
[17:21:33] ermine закусила губу и вкопипастила кусок кода из camlimages в свой исходник, чтобы слегка его помодифицировать
[17:22:05] <ermine> когда же эти из inria.fr научатся программировать
[17:22:27] <f[x]> кстати по слухам у camlimages мейнтейнера нету
[17:22:36] <f[x]> так что того, захватывай и рули как надо :)
[17:23:32] <ermine> я лучше уступлю тебе
[17:23:40] <f[x]> у меня и так хватает :)
[17:24:22] <ermine> ну, станет одним больше, подумаешь!
[17:24:42] <ermine> зато опыт же есть
[17:24:52] <ermine> ты-то используешь camlimages?
[17:25:11] <f[x]> вот например ocurl, месяц назад пачку фиксов отправил, в том числе и для ликов, и никакой реакции
[17:25:40] <f[x]> сейчас нет, но окгда надо было картинки редактировать - пользовал
[17:28:30] <ermine> а чем там редактировать, если оно только get/set цвета умеет?
[17:28:59] <ermine> вообще от такой базовщины полная тоска
[17:29:40] zert вошёл(а) в комнату
[17:30:59] <f[x]> ну текст умеет же
[17:31:56] ermine увидела external и засомневалась, что так дешево "скопипастить к себе небольшой код" получится
[17:32:48] <f[x]> патчь @ компиляй
[17:32:49] <ermine> f[x]: да, вот текст оно клево рисует и трансформирует с поворотами и позволяет изголяться над вырисовкой букв
[17:34:01] <ermine> но не мешало бы как-нить понять как получить размеры нового получившегося искореженного текста
[17:34:20] <ermine> но это уже высокая математика, а в ней я слаба духом и телом
[17:35:27] <ermine> вот промежуточный результат капчи: yo.jabber.ru/~ermine/out.png
[17:36:11] <gds> ermine: имхо капча катит.
[17:36:22] <Typhon> 25464 или 25644 ?
[17:36:34] Typhon не прошел бы :(
[17:37:56] <ermine> та там проблемы со смещением, хочется типа вплотную друг к другу, но не получается складно вычислить куда цифра отклоняется, когда поворачивается влево
[17:41:30] <f[x]> при рисовании же дёргается функция с координатами - по ним bounding box легко вычисляется
[17:41:33] <f[x]> или ты о чём?
[17:42:26] <ermine> границы каждой буквы можно вычислить до поворотов
[17:43:02] <f[x]> сфрмулируй что ты хочешь :)
[17:43:06] <ermine> а после поворотов берется в руки бубен, потому что я не умею умножать матрицу на что-то еще
[17:43:23] <ermine> ну проще куданить выложить код
[17:43:42] <f[x]> аргх, при рисовании повёрнутого изображения дёргается функа, с координатами
[17:44:22] <ermine> f[x]: ты знаешь про face#size?
[17:45:13] <ermine> хочу face#size_of_rotated_text
[17:47:37] <f[x]> так если сделать set_transform разве #size не вернёт то что надо?
[17:48:14] <ermine> хм
[17:50:46] <ermine> ща попробую догнать что за аргументы ему надо и опробовать
[17:56:52] <ermine> хм, скомпилилось, ща позырим
[18:05:06] <ermine> хныг
[18:05:20] <ermine> кажись, set_transform не влияет на size
[18:07:43] <ermine> а не
[18:07:58] <ermine> какая-то еще мутабельная засада в этом есть
[18:24:06] <ermine> не выгорела идея, оно видимо из голого битмапа берет
[18:34:23] <ermine> надо скопипастить другой код и попробовать помодифицировать его, чтобы таки вычислял
[19:44:09] ermine считает арифметику на пальцах
[20:08:41] <ermine> Typhon: сделай рефреш на капче и посмотри
[20:09:30] <Typhon> 5705 первая пятерка уехала слегка за границу, но вроде ок все
[20:09:58] <ermine> ну это плюс ведь, что уехала
[20:10:28] <ermine> только вот все равно работать - картинка вся не влезла в картинку
[20:10:49] <ermine> там было 6 цифр
[20:12:47] <ermine> а еще таки можно выкинуть библиотечную функцию draw_rotated_text и свою клепать
[20:15:54] SerP вышел(а) из комнаты
[21:17:22] ʇsʎɯ вышел(а) из комнаты
[21:35:18] arhibot вошёл(а) в комнату
[22:33:32] Kakadu вышел(а) из комнаты
[23:01:47] myxomop87 вышел(а) из комнаты
[23:20:16] arhibot вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!