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

GMT+4
[00:14:31] Typhon вошёл(а) в комнату
[00:21:36] Typhon вышел(а) из комнаты
[00:22:59] Typhon вошёл(а) в комнату
[00:26:13] ygrek вышел(а) из комнаты
[00:37:31] Bad_ptr вошёл(а) в комнату
[00:54:52] bobry вышел(а) из комнаты
[00:58:31] ftrvxmtrx вошёл(а) в комнату
[01:01:07] Kakadu вышел(а) из комнаты
[01:13:37] Typhon вышел(а) из комнаты: Replaced by new connection
[01:13:39] Typhon вошёл(а) в комнату
[01:30:29] gds вышел(а) из комнаты
[01:39:04] komar вышел(а) из комнаты: Replaced by new connection
[01:39:04] komar вошёл(а) в комнату
[01:57:47] bobry вошёл(а) в комнату
[02:02:30] Typhon вышел(а) из комнаты: Replaced by new connection
[02:02:32] Typhon вошёл(а) в комнату
[03:01:47] ftrvxmtrx вышел(а) из комнаты
[03:04:59] Typhon вышел(а) из комнаты
[03:05:27] Typhon вошёл(а) в комнату
[03:15:23] bobry вышел(а) из комнаты
[04:57:51] Typhon вышел(а) из комнаты
[05:39:31] ftrvxmtrx вошёл(а) в комнату
[06:52:29] ermine вошёл(а) в комнату
[08:34:58] ermine вышел(а) из комнаты
[08:42:12] ermine вошёл(а) в комнату
[09:37:20] Typhon вошёл(а) в комнату
[10:09:45] zinid вошёл(а) в комнату
[10:09:50] <Typhon> https://github.com/besport/ocsigen-gears
[10:14:02] <Typhon> https://github.com/mjambon/ocaml-wishlist — """OCaml features we want really bad"""
[10:16:42] <Typhon> gds, когда amall делал, на cohttp смотрел/сравнивал? ( https://github.com/besport/ocaml-cohttp или другие форки)
[10:30:01] <f[x]> wishlist - так!
[10:32:43] ftrvxmtrx вышел(а) из комнаты
[10:34:37] ftrvxmtrx вошёл(а) в комнату
[10:57:44] iNode вошёл(а) в комнату
[11:06:05] ftrvxmtrx вышел(а) из комнаты
[11:07:44] ftrvxmtrx вошёл(а) в комнату
[11:29:35] gds вошёл(а) в комнату
[11:38:38] <gds> Typhon: не, я не видел cohttp вообще.  Одной из задач у меня было проверить, годны ли итераты для серьёзных применений, поэтому смотреть было мало смысла.  А дизайн непродуманный у меня из-за того, что конечных целей не знал, и было ещё куча задач одновременно, поэтому дописывал по мере необходимости конкретных фич.
[11:50:53] bobry- вошёл(а) в комнату
[12:05:08] <gds> про первый пункт вишлиста -- усложнение внутренней логики получается.  А именно, предлагают двигать информацию о типах не только снизу вверх, но и сверху вниз.  То есть, в зависимости от приписки типа сверху, в функции, поменяется то, к каким записям будет обращение в теле.
[12:09:30] <Typhon> gds: понятно. его что-то много кто форкает, допиливает местами, думал, может смотрел на него внимательнее и нашёл недостатки какие-то
[12:10:10] <gds> я пытался найти в нём ввод-вывод, нашёл Lwt_io.read_line >>= ..., и как бы понятно.
[12:14:50] <gds> а так, если я буду знать, что хттп-заголовок влезает в 10кб, то я смогу сделать фишку: читать в буфер 10кб, а перед тем кодом, который "умно" разбирает (ну, там, метод читает, заголовки, всё это через итератовский бинд), смогу запускать другую, упрощённую процедуру разбора, да хотя бы даже на ocamllex написанную, и поиметь нехилую оптимизацию.  В том-то и прикол итератов, что их можно сводить до манипуляции с буферами-строками напрямую, причём сводить по частям, именно там, где тормозит (ну и оставлять возможность "отката" на старый алгоритм, как в случае с хттп, когда заголовок не влезает в 10кб).
[12:23:15] <gds> например, можно родить такой комбинатор, который будет запускать первый итерат на входящем чанке, и, если после обработки чанка он не вернул ни результата, ни ошибки, то считать, что так дело не пойдёт, самоуничтожаться и передавать этот чанк второму итерату на обработку.
[13:23:00] bobry вошёл(а) в комнату
[14:58:26] letrec вошёл(а) в комнату
[15:26:53] <Typhon> а в каком случае не вернётся ни результата ни ошибки?
[15:26:59] <Typhon> а, если последовательность большая
[15:27:12] <gds> если MOAR!111111
[15:27:15] <Typhon> типа вышеописанного спецслучая, ок ясно
[15:27:23] <Typhon> а как примерно это выглядеть будет?
[15:40:32] <gds> Typhon: парсинг хттп-заголовка если был в итерате it_http_header, то его переименовываем в it_http_header_fair, лепим простой итерат it_http_header_fast, который из Subarray.t достанет собственно подстроку (хотя тут я погорячился, да...  Subarray.t это же подмассив, ибо общий случай.  но можно сделать и частный случай, если это будет оправдано, с реальной строкой, но сейчас проще тупо скопировать в строку, можно даже сишечькой), и в it_http_header_fast будет обработана строка, хотя бы даже лексером.  Я уже не помню, как жить с лексером в этом отношении -- вроде он EOF должен кинуть, или это прописывать надо...  Или просто значение возвращать, `Complete of headers | `Incomplete.  В общем, как-то заставить лексер сигнализировать, что пустой строки после заголовка не нашёл.  И итерат it_http_header_fast, увидя такое, кидает ошибку через I.throw_err, какое-нибудь End_of_file (так проще, чем переходить в ожидание данных, хотя в целом пофиг), и будет возвращено IE_cont _ (Some End_of_file).  В случае результата -- I.return res, и в терминах итератов будет возвращено IE_done, которое будет обработано комбинатором.
Сам комбинатор будет выглядеть так:
берёт чанк, скармливает его первому итерату, смотрит на результат.  Если результат IE_done r -- возвратить r, если IE_cont _k (Some _err) -- скормить тот же чанк второму итерату.
и конечный итерат, которому оставим старое имя it_http_header, будет результатом вызова этого комбинатора над it_http_header_fast в роли первого и it_http_header_fair в роли второго, опционально с эта-экспансией.
Если ответил не на тот вопрос -- конкретизируй, отвечу.  Если интересен код комбинатора -- сообщи, напишу, самому интересно, только от парвела отвлекаться _прямо сейчас_ не хочу (но до вечера захочу, уж точно).  Я его пытаюсь на бумажку изложить -- процессы ОС таки нужны, чорт побери.
[15:42:53] <gds> кстати, в этом it_http_header_fast вполне приемлема лентяйка -- не обязательно разбирать заголовки, если их разбор как-то типизируется.  можно завернуть разбор в ленивые вычисления -- это будет быстрее, чем разбирать заголовки и увидеть `Incomplete в конце.
[15:43:45] letrec вышел(а) из комнаты
[15:49:44] letrec вошёл(а) в комнату
[15:59:22] <gds> во дают!  http://research.microsoft.com/apps/pubs/default.aspx?id=150759
[16:13:33] <ermine> вы сегодня открыли какой-нить новый учебник?
[16:17:00] <letrec> а где сам пейпер то?
[16:18:05] <letrec> https://research.microsoft.com/en-us/um/people/nick/icfp11-krishnaswami-benton.pdf
[16:21:26] Kakadu вошёл(а) в комнату
[16:30:38] shaggie вошёл(а) в комнату
[16:38:41] <gds> в очередной раз увеличил высоту окна чятика -- 16 мемберов.
[16:41:56] <Kakadu> а для меня недавно камлистов стало на 1 меньше.
[16:42:07] <Kakadu> я понял, что f[x] = ygrek
[16:42:28] bobry- не знал :)
[16:42:56] <Kakadu> итак, вопрос на засыпку
[16:43:10] <Kakadu> кто такой f^{-1}[ygrek] ?
[16:45:54] <f[x]> функция-то многозначная!
[16:47:10] <Kakadu> дополнение к вопросу: можно найти хотя бы один прообраз, не все.
[16:51:52] <gds> Kakadu: да тут многие не знали.  Я тоже порядка года имел лишь смутные догадки, где "за" было то, что, наверное, грамотный человек как-то использовал бы два _таких_ ника for the great lulz.  И я не хотел форсировать узнавание, хотя надо было всего лишь в jid посмотреть (хотел оттянуть, скажем так, конец этой загадки).  Так мне интереснее было.
Но теперь -- наука.  Теперь надо по чатлогам скоррелировать сообщения, чтобы выяснить, какие речевые обороты характерны для ygrek, а какие для f[x], чтобы выяснить, что заставляет человека раздваивать свою личность.  Это точно не может быть просто наличие двух компьютеров/аккаунтов!
[16:52:54] f[x] ща всех забанит и чатлоги потрёт
[16:53:13] shaggie вышел(а) из комнаты
[16:53:52] <Kakadu> помню меня кто-то тут троллил что я с дсвух компов захожу под разными никами...
[16:53:55] <Kakadu> ну да ладно
[16:54:14] <f[x]> это может быть обусловлено наличием тупых джаббер клиентов которые отказываются входить в комнату если там есть уже такой ник :)
[16:54:51] <Kakadu> понадеюсь, что  f[x] не обиделся, а ygrek'a небоюсь пока ---- вдруг он логи пока его не было поленится читать
[16:55:17] gds рад всему :)
[17:36:24] <ermine> а это точно одно и то лицо?
[17:38:40] <f[x]> лицо разное - я гарантирую это
[18:09:00] Bad_ptr вышел(а) из комнаты: Replaced by new connection
[18:46:40] Kakadu вышел(а) из комнаты
[19:25:25] shaggie вошёл(а) в комнату
[19:32:08] zinid вышел(а) из комнаты
[19:38:46] Kakadu вошёл(а) в комнату
[19:42:51] f[x] вышел(а) из комнаты
[19:47:47] f[x] вошёл(а) в комнату
[19:48:43] klapaucius вышел(а) из комнаты
[20:20:50] bobry- вышел(а) из комнаты
[20:26:26] Typhon вышел(а) из комнаты
[20:41:37] letrec вышел(а) из комнаты
[20:44:13] shaggie вышел(а) из комнаты
[22:12:53] ermine вышел(а) из комнаты
[22:30:48] ygrek вошёл(а) в комнату
[22:31:01] ygrek вышел(а) из комнаты
[22:31:35] ygrek вошёл(а) в комнату
[23:06:21] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!