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

GMT+4
[00:22:31] Kakadu вышел(а) из комнаты
[00:55:54] Typhon вышел(а) из комнаты
[00:56:42] ermine вышел(а) из комнаты
[01:18:57] zert вышел(а) из комнаты
[03:04:18] gds вышел(а) из комнаты
[03:39:05] komar вышел(а) из комнаты: Replaced by new connection
[03:39:05] komar вошёл(а) в комнату
[03:46:39] komar вышел(а) из комнаты: Replaced by new connection
[03:46:40] komar вошёл(а) в комнату
[07:42:14] iNode вышел(а) из комнаты
[08:07:11] Typhon вошёл(а) в комнату
[08:12:58] Typhon вышел(а) из комнаты
[08:50:56] iNode вошёл(а) в комнату
[09:34:48] ygrek вошёл(а) в комнату
[09:47:08] Typhon вошёл(а) в комнату
[10:26:30] zert вошёл(а) в комнату
[11:11:04] komar вышел(а) из комнаты: Replaced by new connection
[11:11:04] komar вошёл(а) в комнату
[11:11:26] ftrvxmtrx вышел(а) из комнаты
[11:24:44] Kakadu вошёл(а) в комнату
[11:32:52] ermine вошёл(а) в комнату
[12:17:45] ftrvxmtrx вошёл(а) в комнату
[12:24:14] Typhon вышел(а) из комнаты
[12:24:51] komar вышел(а) из комнаты
[12:26:13] Typhon вошёл(а) в комнату
[12:28:02] Kakadu вышел(а) из комнаты
[12:32:37] gds вошёл(а) в комнату
[12:34:26] komar вошёл(а) в комнату
[12:35:59] Kakadu вошёл(а) в комнату
[13:06:59] f[x] нужен поисковик по открытым вкладкам в браузере
[13:07:39] <zert> conkeror юзай
[13:10:49] <f[x]> дай угадаю, он просто не сможет открыть столько вкладок что в них можно будет запутаться?
[13:10:56] <f[x]> дзенское решение, да
[13:12:40] <Typhon> f[x]: я стал пользовать instapaper.com вместо того, чтобы стотыщ вкладок открывать — read later нажимаю и всё — поиска там, правда, нет :-(
[13:12:55] <f[x]> > web browser based on Mozilla XULRunner, written mainly in JavaScript
всем фэйлам фэйл
[13:14:06] <f[x]> Typhon: сливать свои вкладочки на веб-сервис?? не не
[13:14:23] <f[x]> но вообще идея хорошая
[13:14:24] <Typhon> f[x]: напиши свой тогда
[13:14:36] <f[x]> нужен автоматический букмаркер всего
[13:14:37] <zert> f[x]: наоборот
[13:14:47] <zert> там не вкладки, а буферы, как в емаксе
[13:14:53] <zert> и по ним очень удобно прыгать
[13:15:07] <Typhon> там делов то — на js "букмарклет" сделать с посылкой урла на адрес, а там тупо http сервак и хоть в файл, хоть в гит складывать
[13:15:07] <zert> f[x]: почему фейл-то?
[13:15:27] <f[x]> Typhon: ага
[13:15:36] <Kakadu> даешь браузер на камле. тайловоый. minno чтобы возродился
[13:15:45] <Kakadu> с блекджеком и монадами
[13:15:49] <f[x]> только надо что-нибудь и для pdf'ок ибо evince загибается
[13:16:07] <f[x]> чтобы оно их качало и в кэш куда-то складывало
[13:16:17] <f[x]> а то браузер temp files периодически сносит-то
[13:17:13] <zert> Kakadu: те же чуваки, которые conkeror делают, начали давным-давно делать биндинги к qt для гамбит-схемы, чтобы писать на ней и Webkit браузер
[13:17:36] <Kakadu> zert: и как?
[13:17:42] <zert> да никак
[13:17:54] <zert> года два прошло, ничего не сделали
[13:17:55] <zert> minno
[13:17:55] <Kakadu> ну вот
[13:20:31] <f[x]> zert: потому-что тормоза
[13:20:50] <f[x]> и дикое потребление памяти
[13:21:12] <f[x]> у меня сейчас бразуер занимает 1.8G RSS
[13:21:57] <zert> какой?
[13:22:11] <f[x]> вкладок сейчас быстро прикинул - 400
[13:22:14] <Kakadu> думаю хром
[13:22:16] <zert> как в хроме посчитать, сколько он суммарно занимает?
[13:22:19] <f[x]> opera
[13:22:29] <zert> f[x]: у меня в conkeror было по 250 штук
[13:22:54] <Typhon> f[x]: !!! как там по ним переключаешься то? или несколько окон?
[13:22:59] <f[x]> и на самом деле менять то я ничего не хочу
[13:23:10] <Typhon> у меня до 100 если доходит, уже теряюсь
[13:23:18] <f[x]> четыре окна плюс группировки недавно появились - хоть как-то спасает
[13:23:34] <zert> Typhon: в conkeror как в емаксе
[13:23:43] <zert> но я перешёл на хром
[13:23:54] <zert> и столько вкладок теперь не открываю :)
[13:24:07] <f[x]> > в conkeror как в емаксе
а, ну вот, финальный гвоздь
[13:24:15] <f[x]> emacs на js мне точно не нужен :)
[13:24:37] <Typhon> zert: about:memory можно потыкать %)
[13:25:02] <Typhon> там summary есть
[13:26:03] <zert> 1.8
[13:26:07] <zert> дохрена
[13:26:23] <f[x]> 1.8 rss на меньше с
[13:26:26] <f[x]> тьфу
[13:26:32] <f[x]> это rss или vsz?
[13:26:42] <zert> это в about:memory
[13:26:45] <zert> хз, что там
[13:26:45] <gds> кстати, тем, кто firefox пользует, можно посоветовать tab kit.  вкладки можно забабахать слева, а не сверху, и они представляют собой лес.  например, тонны документации по lwt, json-*, postgresql, erlang у меня по умолчанию свёрнуты в 4 вкладки, а плюсик тыц -- и оно пыщь!
[13:48:28] Kakadu вышел(а) из комнаты
[14:08:49] <gds> про недавний жыжеопрос -- оформил таки "длина \n сообщение \n \n", а интерфейс такой: http://paste.in.ua/2192/
[14:13:04] ygrek вышел(а) из комнаты
[14:34:49] Kakadu вошёл(а) в комнату
[15:05:25] <gds> насчёт дизайна парвела вопрос.  Как считаете, если есть параллельно-выполняющиеся копии одного и того же процесса/сервера (в общем, кода, обрабатывающего сообщения), нужно ли давать этому коду возможность как-то проинициализироваться специальным образом?  Например, вместо функции с сигнатурой " 'in_msg -> IO.m 'out_msg ", непосредственно обрабатывающей сообщения, передавать функцию с сигнатурой " unit -> 'in_msg -> IO.m 'out_msg ", и постановить, что сначала, для каждого нового lwt-потока, будет применён аргумент с типом unit, а потом уже то, что получится в результате применения, будет обрабатывать сообщения?
[15:07:39] <Typhon> полезно это, к тому же первое из второго можно сделать легко (функция обёртка, которая "ничего не делает" )
[15:08:34] <gds> можно было бы положиться на lwt thread storage, но не хочу.
сдругой стороны, надо как-то обеспечить, что при применении аргумента с типом unit можно совершать сайд-эффекты, но не могу понять, получится ли это исходя из типа.  Было бы unit -> IO.m ('in_msg -> IO.m 'out_msg) -- точно получилось бы.
[15:09:31] <gds> Typhon: ага, про обёртку логично.  Ну и в теории признаёшь, что это бывает полезным, что тоже вносит определённость в вопрос.
[15:22:19] <gds> можно представить процесс как
{ init : context -> IO.m 'env
; proc_msg : 'env -> 'in_msg -> IO.m 'out_msg
}
, но как-то тяжеловесно и криво.
[15:26:24] <Typhon> а у тебя процессы служебные сообщения получают? есть вариант добавить к списку системных "Init" типа, который будет "получен" "сразу" — но это как то ээээ, не очевидно :-( в первом варианте с unit -> 'in_msg -> IO.m 'out_msg ", — если никаких сайд эффектов нельзя, то полезность уменьшается, мне кажется (я думал о "подготовке" хоста к работе процесса, инициализации ресурсов, создании файлов и т.д.). Вариант с рекордом тяжеловат, да, но кривости пока не вижу особой. Ещё мысль, что если логике приложения нужна инициализация, разработчик сможет это реализовать сам, с помощью определённого сообщения, правильно же? тогда может таким путём и пойти? Тут тогда лезут какие-то колбэки, типа сразу после создания процессов запустить колбэк, который отправит сообщения нужные. но тоже не идеал :-(
[15:28:29] <gds> про Init думал тоже, более того, думал каждому процессу его слать.  Но кривовато тем, что хочется иметь окружение, то есть, выродить функцию, непосредственно отвечающую на сообщения, из другой функции, которая через let-in откроет-наладит внешние ресурсы.
[15:29:02] <gds> вот, про unit -> 'in_msg -> IO.m 'out_msg -- обсудили кое-где, и по ходу да, сайд-эффектов нельзя, то есть, однозначно в топку.
[15:29:16] <gds> да, про ресурсы, сеть, файлы тоже думал, нужно.
[15:30:23] <gds> можно сделать тупо: context -> IO.m ('in_msg -> IO.m 'out_msg), и функцию вида
without_init msgproc = fun (_ : context) -> IO.return msgproc
[15:35:16] <gds> но у меня есть детский страх перед функциями, где IO внутри IO, как в последнем предложении.  Не знаю, откуда он взялся.  По идее ведь будет работать так.
[16:08:50] <f[x]> https://github.com/cheecheeo/JSON-shootout/blob/master/ocaml_json.ml
[16:09:31] <f[x]> это код бенчмарка, да
[16:09:55] <Typhon> ррррр
[16:10:14] <f[x]> хорошо хоть он не меряет свой код :)
[16:10:37] <Typhon> http://zedshaw.com/essays/programmer_stats.html
[16:12:18] <Typhon> а где феерические результаты можно посмотреть?
[16:12:26] <f[x]> а там где-то рядом
[16:12:32] <Typhon> типа " хаскель в стотысяч раз быстрее окамла парсит жсон"
[16:12:34] <f[x]> но я вообще про стиль кода
[16:12:51] <f[x]> не, наоборот :)
[17:07:40] iNode вышел(а) из комнаты
[17:41:24] komar вышел(а) из комнаты: Replaced by new connection
[17:41:24] komar вошёл(а) в комнату
[17:44:26] <gds> думаю, что надо парвел двигать к энтерпрайзу.  Поэтому надо назвать тип
type factory 'in_msg 'out_msg = context -> IO.m ('in_msg -> IO.m 'out_msg)
и где-нибудь сделать
type factory_builder .. = args.. -> factory ..;
ну это чтобы тру было.
хотя, с другой стороны, без camel case оно всё равно как-то не тру выглядит.  Думаете, стоит попробовать?
[17:44:59] Kakadu вышел(а) из комнаты
[17:46:35] <Typhon> можно поюзать first-class модули и функторы всякие для этого попробовать. там и кэмел кейс, и выглядит внушительно
[17:49:29] <gds> первое пока не могу, ниасилил везде перейти на 3.12.  Функторы -- да, идея.  Куда бы их засунуть?...
[18:35:59] ygrek вошёл(а) в комнату
[18:36:14] ygrek вышел(а) из комнаты
[18:36:45] ygrek вошёл(а) в комнату
[18:49:11] <gds> у меня появилось в будущем (весьма неблизком) применение для такой штуки: есть файл, в котором раскидана окамловская структура данных, по которой можно ходить с помощью определённых функций, менять, дописывать, мусорособирать по-тупому.  персистентность, что ли.  что-то типа ancient, только в файле.  либо, то же самое, что маршаленная огромная структура данных, только без маршаллинга туда-сюда.  кеш -- либо дать ОС делать свою работу, либо сделать очень тупой кеш (основанный на хинтах типа "пока эта функция выполняется, лучше это значение подержать в памяти чуток").  сборку мусора уже продумал, если чо.  не продумал, разве что, flash-friendly writes, чтобы если оно на флешке, то флешка не угибалась раньше времени.
То есть, если туда положить какое-нибудь type tree 'i 'a = [ Node of 'a | Tree of 'i and 'i and list (tree 'i 'a) ] (где в конструкторе Tree будут минимальное значение ключа в поддереве, максимальное, и собственно поддерево), то получим что-то типа имплементации btree поверх файлов.  (тип взят от балды.)
Если кому-нибудь такое/подобное тоже надо будет -- давайте думать вместе.  Скооперируемся, набодяжим опенсорсное.  Мне не к спеху, поэтому спрашиваю.  А вот в бложики такое предложение лично мне постить пока не очень хочется (хотя, может, запощу потом).
[19:01:35] Kakadu вошёл(а) в комнату
[19:38:27] Typhon вышел(а) из комнаты
[19:38:35] zert вышел(а) из комнаты
[19:45:52] ftrvxmtrx вышел(а) из комнаты
[19:57:11] gds вышел(а) из комнаты
[20:00:09] ygrek вышел(а) из комнаты
[20:07:56] zert вошёл(а) в комнату
[20:30:52] zert вышел(а) из комнаты
[20:33:34] zert вошёл(а) в комнату
[20:51:15] Typhon вошёл(а) в комнату
[20:51:31] gds вошёл(а) в комнату
[20:52:54] <Typhon> хм, свёртка времени была?
[20:53:04] <Typhon> у меня из чатика пропали последние несколько сообщений, и в логах нет
[20:53:17] <Typhon> gds, https://github.com/camlunity/kamlo_wiki/blob/master/FrontPage.md — написал небольшой хелп
[20:53:38] <Typhon> (мне же не показалось всё это, про размещение идейки в камлунити? )
[20:55:12] <gds> свёртка -- да.  поглядим, может выдаст.  вообще странновато.
[20:55:32] <gds> либо не свёртка, а какой-то бранч, в котором мы поговорили про гитхаб :)
[20:56:41] <Kakadu> а куда делиь статьи про биндинги?
[20:56:45] <Kakadu> делись*
[21:00:45] <Typhon> Kakadu: это чота урлы
[21:02:41] f[x] нарисовал багу в ocamlpro :)
[21:02:43] <Typhon> они относительные, если смотреть с глагне — где ридми, то всё ок, а если в конкретную страницу зайти, то всё плохо :-(
[21:03:10] <Typhon> f[x]: надо тебе орден какой-то выдать, как багорепортеру :D а что за бага? как ощущения от окамлпро, попробовал?
[21:03:12] <gds> отослал про оазис в мейллист, предлагаю свою помощь.  какая-то жесть получилась.
[21:03:59] <f[x]> не пробовал ещё
[21:05:06] <gds> Typhon: хелп понятный, мне понравилось, сейчас буду выполнять.
[21:06:26] <Typhon> f[x]: баг, видимо, о том, что не собирается? :-)
[21:07:20] <f[x]> yup
[21:10:18] <f[x]> и может оригинальную вики прикрыть на редактирование, дабы не мержить потом :)
[21:10:32] <gds> да, надо, ща займусь.
[21:10:54] <Typhon> там только спам, последнее время :-)
[21:11:30] <Typhon> gds: а про оазис в ГлавныйЛист или ещё куда-то?
[21:11:48] <gds> да, про оазис -- Данику <caml-list...>
[21:11:55] <gds> в To: это было.
[21:12:12] <gds> может из-за posting policy что-то и не дойдёт, поглядим.
[21:14:07] <Typhon> не, всё ок, пришло
[21:19:31] <gds> прикрыл изменения в вике.  если вдруг что не так -- сообщите.
[21:21:03] <gds> в статье CrazyIdeas.md внизу стоит "*****" и затем "2011-03-26 13:08".  Это можно удалять?
[21:24:06] <Typhon> думаю, можно, это от моинмоин осталось
[21:24:26] <Kakadu> муанмуан может?
[21:24:35] <Typhon> угу
[21:24:44] <Kakadu> звучит лучше муанмуан
[21:24:46] <Kakadu> )
[21:24:48] <Typhon> но мы ж говорим лвт, а не лоут %)
[21:24:54] <Typhon> или как там решили говорить
[21:25:13] <zert> Typhon: шевчюка смотришь?
[21:25:39] <zert> поставь p2p клиента
[21:25:58] <Typhon> zert: запустил :-)
[21:26:18] <zert> работает?
[21:26:31] <Typhon> угу, но оно лагало недавно ещё
[21:26:51] <zert> сейчас починили
[21:26:57] zert делал бэкенд
[21:27:10] <zert> инфраструктуру
[21:38:06] Typhon вышел(а) из комнаты
[21:51:25] bobry вошёл(а) в комнату
[22:02:58] <gds> https://github.com/camlunity/kamlo_wiki/blob/master/CrazyIdeas.md в конец присунул.
[22:18:45] ftrvxmtrx вошёл(а) в комнату
[22:44:43] Typhon вошёл(а) в комнату
[23:03:05] <Typhon> f[x], в дебиане oasis с зависимостями уже есть?
[23:38:32] Typhon вышел(а) из комнаты
[23:59:38] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!