Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 19 мая 2011< ^ >
gds установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Портер прошлое -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:46] <ermine> а сафари?
[00:01:14] <Typhon> сафари -- это такая тулза на макоси, чтобы хром поставить можно было?
[00:01:31] <Kakadu> сарказм?
[00:02:08] ermine пользуется сафари на макбуке и больше никаким броузером
[00:02:40] <Typhon> Kakadu, нет, все, кого я знаю только для этого его используют :-)
[00:02:43] <Typhon> использовали, вернее
[00:03:02] <ermine> Kakadu: тифон - не истинный маковод, а только иногда примазывается к маководам
[00:03:15] <ermine> Typhon: кстати, а зачем у тебя макбук?
[00:03:34] <Typhon> ermine, у меня нет макбука. у меня имак 27'' ^_^
[00:03:38] <Typhon> на работе выдали
[00:03:45] <Kakadu> охренеть
[00:03:46] <ermine> там и камло в макпортах такое убогенькое, хуже даже чем во фре
[00:03:53] <Kakadu> 27 дюймов
[00:04:06] <Typhon> ermine, макпорты не модные нынче, надо homebrew использовать.
[00:04:14] <Typhon> в нём, кажется, 3.12 уже
[00:04:16] <Kakadu> а там камло собирается норм?
[00:04:32] <Typhon> да и из портов я тоже ставить пробовал, вроде 3.12 ставить хотело.
[00:04:35] <Typhon> Kakadu, да, вполне.
[00:05:41] <ermine> Typhon: ну в макпортах 3.12 давно и вообще сразу
[00:06:08] <Typhon> а в каком смысле "убогонькое"?
[00:06:33] <ermine> у меня из макпортов стоят куча языков, начиная от хаскиля, включая камло и лисп и заканчивая тривиальным питоном
[00:07:03] <ermine> Typhon: ну мало там либл на камле
[00:11:21] <Typhon> в brew ты можешь патчи слать на гитхубе им с рецептами для либ ^_^
[00:12:57] ermine не очень-то умеет пользоваться гитхубом
[00:17:44] <Kakadu> а что такое brew?
[00:20:30] <ermine> мда, в гугле оказывается много писанины про итераты, и когда это они успели понаписать даже step by step?
[00:22:39] <Typhon> Kakadu, http://mxcl.github.com/homebrew/
[00:22:44] <Typhon> ermine, урлы!
[00:23:14] <ermine> Typhon: гугль, одно слово в запросе
[00:23:40] <Typhon> о, в стэп-бай-стэп я уже был даже
[00:24:52] <ermine> Typhon: теперь добавляем второе слово "ocaml" и тупим над первой ссылкой
[00:25:31] <Typhon> первая ссылка у меня "Caml programming guidelines" внезапно
[00:25:51] <Typhon> а дальше -- труды gds'а в разных видах
[00:28:07] <ermine> вообще хрень в гугле
[00:51:26] ermine вышел(а) из комнаты
[01:23:42] Kakadu вышел(а) из комнаты
[01:37:58] Typhon вышел(а) из комнаты: Replaced by new connection
[01:39:26] Typhon вошёл(а) в комнату
[02:03:20] Typhon вышел(а) из комнаты
[02:34:53] zert вышел(а) из комнаты
[03:02:25] Digimmortal вошёл(а) в комнату
[04:34:59] Digimmortal вышел(а) из комнаты
[08:06:31] ermine вошёл(а) в комнату
[09:00:27] gds вошёл(а) в комнату
[09:09:53] <gds> ох, если бы мне "iteratees step by step" попалось раньше, сколько мозга можно было не выедать себе..
[10:38:35] <gds> на повестке дня -- вопрос: xml-конфиг eliom'а -- боль или радость?
[10:52:22] <komar> Терпимо.
[10:52:24] <komar> Нет, правда.
[10:52:55] <komar> Я его даже седом редактирую налету, который у ермайн не запустится.
[10:53:40] <komar> А так позор, конечно.
[10:53:46] <komar> XML там нафиг не сдался.
[10:54:03] ftrvxmtrx вышел(а) из комнаты
[10:55:25] <gds> ну а вообще, внешний конфиг для таких вещей -- нормально?  я вот что-то не уверен.
[10:57:41] <komar> Это нормально, если мы используем вебсервер как nginx. Или как апач.
[10:58:33] <komar> А если используем в качестве webrick'а, как в рельсах, то это мешает.
[10:59:34] <komar> Собственно, работать бек-сервером оксиген совершенно не умеет. Если поставить ему nginx в качестве прокси, то он плевать хотел на заголовки и считает, что сайт сидит на 1000+ порту и имеет домен localhost, а все пользователи приходят оттуда же.
[10:59:44] <komar> Собственно, надо багрепорт запилить.
[11:00:48] <gds> а "в качестве webrick" -- это какие применения?  не пользовался, а гуглота какая-то невнятная.
[11:01:32] <komar> Ну это такой сервер, который никто в здравом уме в интернет смотреть не ставит, но зато его часто прячут за nginx'ом.
[11:02:33] <komar> А еще большой недостаток конфигов в XML'е в том, что люди матерятся и уходят на хаппстак.
[11:03:05] <komar> Уже сколько народу потеряли. Остаются только самые закаленные говноеды^W
[11:05:54] <gds> ага, всё понял.  Думаю, доставать ли ложку.
[11:08:40] <komar> Если есть энтузиазм, то доставай, компанию составишь.
[11:08:49] <komar> Если нету и «работать надо», то не советую.
[11:09:54] <gds> дело в том, что моё "работать надо" включает в себя либо ложку, либо высер подобного же продукта.
[11:10:15] <komar> Подобного же? То есть писать надо на окамле?
[11:15:34] <gds> ну да, публиковал типа-вакансию же.  (правда вот, там не ясно с финансированием пока что -- в теории нужны люди, а на практике -- либо в ближайшее время, либо в районе августа.)  Но ermine я рассматриваю в первую очередь.  И я не представляю, сколько человек нужно.  Меня попросили найти -- я нашёл.
[11:16:36] <komar> А, ну если обязательно окамл, то бери оксиген, чо.
[11:16:44] <komar> Он мелкими багами противен, а не в целом.
[11:16:58] <komar> И мелкими особенностями типа конфигов в XML'е.
[11:18:57] <gds> насяльникам ocsigen не нравится.  Убеждать будет сложно.  И, вероятно, себе дороже.  А итераты -- нравятся.  Поэтому хрень поверх итератов вплоть до "имеем разобранный урл и можем распарсить тело запроса, и можем выдать ответ" я уже асилил.  Теперь -- то, что называют "роутинг запросов".  Смотрю, как у людей сделано.  (у нелюдей тоже подсматриваю, symphony например.)
[11:20:54] <komar> Всем насяльникам ocsigen не нравится.
[11:23:29] <gds> обычно им же не нравится и функциональщина в целом.  Тут же наоборот.  Странный случай, сам понимаю.
[11:24:08] <komar> Да нет, ocsigen не нравится даже тем насяльникам, которые функциональщину любят.
[11:24:27] <gds> о как.
[11:26:11] zert вошёл(а) в комнату
[11:26:12] <komar> Хотя вот хрен их знает. Если в х-ле _любой_ веб-фреймворк отжирает сотни памяти при загрузке файла через post, то это терпимо. А вот конфиг на XML'е, который один раз в жизни видишь — это все, пользоваться невозможно.
[11:27:31] <ermine> gds: по-моему у eliom нет xml-конфига
[11:27:54] <gds> дык известный расклад.  Собственно, лично я не к xml'ю придираюсь.  Мне был интересен подход в целом -- зачем и почему нужен внешний конфиг.
[11:28:19] <komar> gds: внешний конфиг — для апачей, у которых сотни сайтов под крылом.
[11:28:51] <komar> ermine: э-э, а как его запустить. не имея xml-конфига?
[11:28:52] <gds> ermine: http://ocsigen.org/eliom/manual/basics -- /etc/ocsigen/ocsigen.conf -- может не строго xml, но что-то похожее.  <?xml нет конечно.
[11:29:36] <komar> gds: http://ocsigen.org/ocsigenserver/manual/config
[11:29:38] <gds> komar: ага, про внешний конфиг понял.
[11:30:35] <gds> прочитал и понял второй раз, тоже интересно.
[11:32:01] <ermine> gds: где там? я вижу лишь конфиг оксигена с включениями конфига елиома
[11:32:31] <ermine> gds: и ты сам можешь из конфига оксигена выуживать свою помойку
[11:33:37] <ermine> вроде у елиокма из включений в конфиг - только <eliom module=...>
[11:34:13] ermine типа пробегала тут мимо, и побежала дальше
[11:38:00] ftrvxmtrx вошёл(а) в комнату
[11:42:14] <gds> ermine: да, верно подметила.  я конструкцию "<eliom module="/path_to/tutoeliom.cmo" />" имел ввиду.
[12:04:58] Typhon вошёл(а) в комнату
[12:10:47] <ermine> gds: там можно вместо модуля findlib-package указать
[12:14:43] <Typhon> gds: с роутингом главное не выпендриваться сильно, по минимуму: /path/to/:var/:var  — безо всяких регекспов и прочая. можно с простой типизацией строка/число (больше вряд ли понадобится). хотя надо освежить, как в оксигене/элиоме это сделано  
[12:20:07] Kakadu вошёл(а) в комнату
[12:40:21] <gds> использовать, что ли, форматные строки scanf для реализации "/path/to/:var/:var"? :)
[13:25:58] <gds> о, сильван на моё предложение потестить доки на оазис в качестве "dumb user" говорит "а давай, вот урло на quickstart".  Мне разрешили!  Буду тестить.
[13:37:43] gds вышел(а) из комнаты
[13:48:23] Kakadu вышел(а) из комнаты: Replaced by new connection
[13:48:23] Kakadu вошёл(а) в комнату
[14:22:34] <Typhon> надо бы в РеалВорлд (тм) на вику добавить жоеля реймонта, он же на камле много чего писал коммерческого
[14:26:45] gds вошёл(а) в комнату
[14:35:58] komar вышел(а) из комнаты: Logged out
[14:36:02] komar вошёл(а) в комнату
[14:44:51] <gds> Typhon: обдумывал /path/to/:var/:var, но кое-что не подходит напрямую: у меня уже возникает нужда в каких-то, что ли, mount points.  Например, мне сейчас надо обслуживать http://host:port/service/{xxx,yyy,zzz}, но завтра это будет висеть на http://otherhost:port/srv/{xxx,yyy,zzz}.
Видимо, нужно так: бить урл на компоненты сразу, работать с list string (вплоть до того, что хост-порт туда тоже запихнуть, ну или более человеческую структуру данных осилить), и матчить как-то так: указывать ["service"; "xxx"] для обработки /service/xxx/$1 (где $1 передавать как аргумент) (и, видимо, специальный случай -- автоматически доводить "/service/xxx" до "/service/xxx/" и матчить, делая $1 = ""; либо сделать как в елиоме, ["service"; "xxx"; ""] для "/service/xxx/" явным образом).
[15:03:58] <Typhon> не пойму, как это решит "сейчас надо … а завтра это будет". и не пойму, как просто стороковый префикс помешает этому. но список строк тоже вроде ок. основную идею про "не выпендриваться" сохраняет — простые строки, минимум вариантов подстановки параметров, никаких чортовых регекспов :-)
[15:14:11] <gds> кстати да, непонятно, как решит, из написанного.  Можно усложнить схему так, чтобы сервис указывал "обрабатываю компонент пути xxx относительно точки монтирования m", а точка монтирования была бы сама по себе привязана либо к серверу (раздающему запросы) непосредственно, либо к другой точке монтирования.  И вот, когда сервис указывает "буду обрабатывать http://host:port/service/xxx", то обработчик m знает, куда слать запросы на m/xxx при получении запроса (так как он ответственный за http://host:port/service/*).  Но не сложно ли, думаю.
Ещё вот думаю, что схема очень напоминает то, что уже есть в парвеле -- некий "switch", где рабочие регистрируются у диспетчера, указывают свой ключ (в случае урлов это будет список компонентов путей, которые обрабатывает), и указывают конкретный код, который будет обрабатывать данный запрос.
В самом простейшем случае это позволит создать слушающий сокет и напрямую регистрироваться "от корня": ["service"; "xxx"] для обработки /service/xxx/*.
Но этот подход сложнее.
[15:17:36] <Typhon> а, понял, кажется, что-то типа  http://flask.pocoo.org/docs/api/#module-objects ? — есть "модуль" с префиском, есть принадлежащие модулю сервисы, там указываешь только тот кусок, что стоит после сервиса. или нужно ещё уметь в сам сервис передавать модульный префикс? я бы посмотрел в смысле роутинга на рельсы, werkzeug и flask.
[15:26:50] <gds> да, типа как то, что ты процитировал, получается.
а ключевые слова -- это отдельное ня.  Сейчас обчитаюсь до усрачки.
[15:35:43] <gds> кстати вот, я бы совместил веб-сервер и массадж писсин, если бы не было нужно давать большие ответы (ну и вообще, лишнее копирование не в тему никак).  Совместил бы тупо: есть уже у меня "синхронные сервера", получающие запрос одного типа и возвращающие ответ другого типа -- можно было бы ими всё элементарно решить.  Причём было бы клёво.
А так -- даже не знаю, что делать.  Рядом с запросом посылать файловый дескриптор через libancillary (и портировать её падвенду заодно), чтобы ответчик какал напрямую?  Либо сделать message passing, но ограничить всё одним процессом ОС, а параллельность лепить либо не в этой части задачи, либо способом "открыть сокет, форкнуться N раз, слушать всей компанией"?
[15:51:02] <gds> то есть, я не хочу реализовывать решения, которые потом хрен переделаешь, а тормоза от кривой архитектуры останутся навеки.
[16:45:47] <ermine> идеал - сразу на бочку и навеки
[16:50:30] <gds> идеал -- не обязательно.  желательно -- чтобы можно было потом оптимизировать без массивного переписывания кода или переделывания архитектуры.
[16:51:15] <ermine> а такое бывает?
[16:51:39] <ermine> если вспомнить все модные нонче библиотеки/проекты (на камле), то везде архитектура менялась
[16:55:32] <ermine> gds: как тут говорят? пиши и компиляй?
[16:56:36] <gds> в теории -- такое бывает.  Архитектура -- меняется, но это не повод сразу тормозное решение выкатывать, не подумав толком.
Пишу, компиляю :)
[17:22:09] ermine щас немного пойдет наобум и напролом, не зная, какого цвета должен быть свет в конце туннеля
[18:58:51] <f[x]> http://www.equilibrium-economicum.net/twokindsoffreedom.htm
[19:05:39] Kakadu вышел(а) из комнаты
[19:44:59] ftrvxmtrx вышел(а) из комнаты
[20:12:37] Typhon вышел(а) из комнаты
[20:13:38] Kakadu вошёл(а) в комнату
[20:23:54] komar вышел(а) из комнаты
[20:31:34] avysk вошёл(а) в комнату
[20:40:09] <Kakadu> > Люди, у каждого из вас в кармане устройство, вычислительная мощность которого на порядок больше, чем у компьютера, отправившего людей на Луну. А вы используете его, чтобы кидаться птицами в свиней...
[20:46:01] <gds> а ещё мы не подтираемся камнем, поэтому давайте превозносить туалетную бумагу!
[21:06:29] ftrvxmtrx вошёл(а) в комнату
[21:32:49] Kakadu вышел(а) из комнаты
[21:32:52] Kakadu вошёл(а) в комнату
[21:33:10] ygrek вошёл(а) в комнату
[21:33:16] Kakadu вышел(а) из комнаты
[21:33:20] Kakadu вошёл(а) в комнату
[21:45:49] ygrek вышел(а) из комнаты: Replaced by new connection
[21:45:51] ygrek вошёл(а) в комнату
[22:28:38] avysk вышел(а) из комнаты
[22:38:42] gds вышел(а) из комнаты
[22:51:26] Typhon вошёл(а) в комнату
[23:04:51] komar вошёл(а) в комнату
[23:32:03] Typhon вышел(а) из комнаты
[23:45:02] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!