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

GMT+4
[00:04:02] ermine вышел(а) из комнаты
[00:05:11] <f[x]> похоже скоро в билд-сервисе будет плюс два виндовых слейва
[00:37:10] <gds> f[x]: чо за жестяк ты читаешь про "коммунальную работу"?
[00:39:52] <f[x]> всё тот же эпичный тред, это конкретно из сообщения xleroy
[00:53:13] f[x] вышел(а) из комнаты
[01:10:21] f[x] вошёл(а) в комнату
[01:28:53] Kakadu вышел(а) из комнаты
[01:37:02] <gds> когда я лероя читал, вспомнился анекдот про "а потом пришёл лесник и надавал всем п-ы" :)
[02:16:26] Serge Zirukin вошёл(а) в комнату
[02:31:19] Serge Zirukin вышел(а) из комнаты
[02:31:57] ftrvxmtrx вошёл(а) в комнату
[02:32:11] <f[x]> ага
[03:19:22] f[x] вышел(а) из комнаты
[05:19:58] ftrvxmtrx вышел(а) из комнаты
[05:22:08] ftrvxmtrx вошёл(а) в комнату
[07:18:40] Typhon вошёл(а) в комнату
[08:06:28] Andrey Popp вошёл(а) в комнату
[09:25:36] Kakadu вошёл(а) в комнату
[09:34:04] Andrey Popp вышел(а) из комнаты
[09:45:50] Kakadu вышел(а) из комнаты
[10:01:50] ftrvxmtrx вышел(а) из комнаты
[10:03:50] ftrvxmtrx вошёл(а) в комнату
[11:08:59] Andrey Popp вошёл(а) в комнату
[11:56:41] ftrvxmtrx вошёл(а) в комнату
[12:01:26] ermine вошёл(а) в комнату
[12:38:48] <f[x]> > I'm closing this PR because CamlIDL has been dormant since 2004. It now lives (or at least sleeps) on http://forge.ocamlcore.org/projects/camlidl/ [^] . Anyone who still cares about CamlIDL after all these years is welcome to join the project on forge.ocamlcore.org and breathe some life in it.
[13:09:13] <f[x]> запилил страничку Wanted на вики
[13:12:14] klapaucius вошёл(а) в комнату
[13:43:04] <f[x]> ух ты, теперь и у camlp4 есть быстрый (похоже) мейнтейнер
[13:58:44] <f[x]> > http://caml.inria.fr/mantis/view.php?id=4688#c6368
мдя
[14:02:30] <Andrey Popp> а Printf.printf через camlp4 работает?
[14:03:07] <Andrey Popp> # Printf.printf "%s";;
- : string -> unit = <fun>
[14:04:50] <gds> нет.
[14:05:49] <Andrey Popp> хе, как он выводит тип тогда
[14:06:36] <gds> с помощью кода внутри компилятора.
[14:07:30] <Andrey Popp> а, в рантайме парсит…
[14:07:47] <Typhon> хм, кого?
[14:07:57] <Andrey Popp> "%s"
[14:08:00] <f[x]> тип выводит в компайл-тайме
[14:08:03] <f[x]> очевидно же
[14:08:27] <Typhon> типизированный printf — этому же даже забиватор @ жж радовался когда-то %)
[14:08:32] <f[x]> но и парсит в рантайме (неочевидно)
[14:10:54] <Typhon> f[x]: а кого и зачем парсит, если типа известен?
[14:11:03] Kakadu вошёл(а) в комнату
[14:11:06] <Typhon> а, типа, куда что поставить?
[14:11:07] <gds> как я помню, когда смотрел это, в compile-time типизирует и что-то ещё делает, создавая массив значений, по которому бежит в рантайме.
[14:11:20] <f[x]> форматную строку парсит
[14:11:28] <f[x]> а может и массив как gds говорит
[14:11:36] <f[x]> но факт в том что там куча лишней работы
[14:11:51] <f[x]> cpu is cheap фигли
[14:12:39] Andrey Popp вышел(а) из комнаты
[14:12:43] Andrey Popp вошёл(а) в комнату
[14:12:48] <Typhon> а, припоминаю некую крейзи-идею про принтф
[14:13:07] Andrey Popp вошёл(а) в комнату
[14:13:07] <Typhon> http://caml.inria.fr/pub/ml-archives/caml-list/2002/04/1d6d46bf8aa8f5fa8ac3bdac54bf96d1.en.html
[14:13:08] Andrey Popp вышел(а) из комнаты
[14:13:22] <Typhon> ссылка из соотв топика в камловике
[14:14:13] komar вошёл(а) в комнату
[14:16:38] <gds> ан нет, реально, разбирает форматную строку в рантайме.  значит я раньше криво смотрел.
[14:17:15] <Andrey Popp> угу, только как он тип тогда выводит при компиляции и зачем...
[14:19:38] <f[x]> неправильный вопрос
[14:19:44] <f[x]> как выводит - понятно
[14:23:21] <gds> да и "зачем" тоже понятно.
[14:23:49] <f[x]> gds: ?
[14:23:58] <f[x]> а, у меня другой "зачем"
[14:24:34] <gds> мне понятно, зачем выводятся типы в printf-аргументах -- чтобы и инферрилось, и типизировалось.
[14:24:54] <f[x]> зачем строку парсить в рантайме
[14:25:00] <f[x]> это правильный вопрос
[14:30:08] <gds> чтобы делать какую-то ещё работу над форматной строкой в рантайме.  вроде склейки разные есть.
[14:31:57] <f[x]> склейка тоже компайл тайм же
[14:32:13] <f[x]> но теперь понятно что куски которые кроме форматов нужно находить
[14:32:29] <f[x]> могли бы их тоже как код генерить
[14:33:45] <Andrey Popp> f[x]: это constant-folding в compile time, а там можно не только константы склеивать
[14:34:21] <f[x]> результрующий тип всё равно известен в compile time
[14:34:29] <Andrey Popp> да нет же
[14:34:37] <f[x]> ну покажи пример
[14:35:58] <f[x]> ещё придумываются всякие варианты с ksprintf
[14:38:21] <Andrey Popp> так, ок, я не прав
[14:42:00] letrec вышел(а) из комнаты
[15:23:41] <Kakadu> Миша готовит картошку, предварительно почистив и порезав на кусочки, а Сережа режет картошку, после чего моет каждый кусочек по отдельности и счищает с них кожуру.
[15:23:44] <Kakadu> Вопрос: кто из ребят пишет на лиспе?
[15:26:40] <gds> Kakadu: неопределяемо.
[15:33:39] <komar> Kakadu: никогда не понимал, какая тут связь с лиспом.
[15:35:18] <gds> та же фигня.
[15:36:48] <gds> у меня другая задачка, выросшая из реально увиденного на практике (лет 10 назад).  человек режет картошку мелкими кубиками и выкидывает все кубики с кожурой.  угадайте его любимый метод численного интегрирования.
[15:37:16] komar lol'd.
[15:40:30] <Typhon> gds: можно ещё сразу вырезать кубик/параллелепипед из картофелины и его уже порезать
[15:40:44] <Typhon> очень просто! :-)
[15:44:10] <gds> просто, да.  но метод не сходится в предельном случае, так как некуда увеличивать точность.
[15:46:04] <Kakadu> gds: левые или правые прямоугольники?
[15:47:08] <gds> не чисто левые-правые (вроде, нижние получаются), но да, прямоугольники.
[16:12:51] Kakadu вышел(а) из комнаты
[16:15:04] Andrey Popp вышел(а) из комнаты
[16:58:42] Kakadu вошёл(а) в комнату
[16:59:47] <Kakadu> в #dotnet хотят портировать сульци
[17:04:39] Andrey Popp вошёл(а) в комнату
[17:11:38] <gds> bobry, Kakadu, Typhon, давайте разгребать https://github.com/camlunity/barbra/blob/master/TODO.txt
[17:17:31] <gds> к остальным, кстати, тоже относится, если будет желание.  но к перечисленным -- относится особо.
[17:33:57] <Kakadu> про пункт 1. У меня инсталлится. Если положить текущую папку конфиг, то и запускается норм
[17:34:18] <gds> куда инсталлится -- системно?
[17:34:32] <Kakadu> да, в /usr/local/bin
[17:34:41] <gds> доступно по имени brb?
[17:34:44] <Kakadu> lf
[17:34:45] <Kakadu> да
[17:35:17] <gds> ну вот, этого хватает.  то есть, хоть где-то оно работает, в остальном допилим.  убираю пункт.
[17:36:15] <Kakadu> пункты 2и3: предлагаю отложить до следующей версии конфига. Там прикрутим депенденсы и хуки для каждой стадии билда
[17:36:34] <gds> но нет ли смысла make all делать всегда, вместо просто make?
[17:37:17] <Kakadu> если предположить, что нет Интересных Погромитов у которых в мэйкфайле нет цели all ----- я за
[17:37:45] <gds> ау, народ, бывает ли так, что есть только make, но нет make all?
[17:38:26] <Kakadu> gds: бывает
[17:38:38] <Kakadu> просто make вызывает первое правило сверху
[17:38:51] <Kakadu> если .PHONY не учитывать
[17:40:57] <gds> пока нет более интересного конфига, надо рассчитывать на большинство пакетов.
[17:41:57] <gds> вот и интересно, как у большинства.
[17:47:32] <gds> в принципе, костыли можно и сейчас сделать, типа "dep-opt pkg make-targets all allopt", "dep-opt pkg configure --with-someshit".
[17:50:16] <Kakadu> у оазиса all есть. На том предлагаю и порешитьэ
[17:50:37] <gds> то есть, эталонный билд -- make all && make install?
[17:51:42] <gds> кстати вот, WithM-подход, где единицей оперирования было type withres 'a 'r = { cons : 'a -> M.m 'r ; fin : 'r -> M.m unit } (то есть, остальное было комбинаторами над withres), оказался не очень удобным.  запилил ещё type wrfun 'a 'r 'z = 'a -> ('r -> M.m 'z) -> M.m 'z, всякие alt и sequence миленько реализовались.
[17:52:45] <gds> короче, пока тут думаете, запилил уже.
[17:53:22] <Kakadu> make all && make install
[17:55:18] <gds> далее, опции окружения для configure, хотя бы для оазиса, вроде бы надо ставить.  prefix, например, чтобы он знал, куда класть бинарники.
кто хочет сделать тестовый проект, инсталлящий бинарники, и потестить его сборку барброй?
[18:03:32] <gds> > dep self local-dir .
D: Running command's argv: ["cp" ; "-R" ; "." ; "/home/gds/dev/barbra.hg/_dep/tmp/self"]
cp: невозможно скопировать каталог «.» в самого себя, «/home/gds/dev/barbra.hg/_dep/tmp/self»
слааамалась японская пила!
[18:04:29] <Kakadu> напиши не точку а полный путь
[18:04:43] <gds> да, и что будет? :]
[18:06:22] <Kakadu> думаю будет ОК
[18:07:23] <gds> неправильно думаешь, но я проверил (вдруг ошибался).
cp: невозможно скопировать каталог «/home/gds/dev/barbra.hg» в самого себя, «/home/gds/dev/barbra.hg/_dep/tmp/self»
[18:08:18] <Kakadu> ааааа
[18:08:32] <gds> более того, разница между полным путём и точкой означала бы багу барбры.  ты же не думаешь, что у нас там есть баги?  :]]
[18:09:09] <Kakadu> не, нет багов. Компилится же!
[18:09:10] <Kakadu> )
[18:09:22] <Kakadu> я тут сворганил тестовый проект, сейчас натралю барбру
[18:11:07] <gds> о, давай.
[18:11:14] <Kakadu> не работает
[18:11:19] <Kakadu> sudo хочет
[18:13:51] <gds> вот!  покажи полный лог, интересно.
[18:15:26] <Kakadu> ты бы это видел
[18:16:23] <Kakadu> http://paste.in.ua/3509/raw/
[18:17:26] <Kakadu> такое ощущение что оно само себя компилять начало
[18:20:18] <Kakadu> кхм, удалил _dep и пропало
[18:20:30] <Kakadu> но всёравно permission denied
[18:20:56] <Kakadu> http://paste.in.ua/3510/raw/
[18:21:00] <Kakadu> gds: ^^
[18:21:29] <gds> Kakadu: пробую фиксить, ща выдам.
[18:25:38] <f[x]> гугл принёс - http://www2.lib.uchicago.edu/keith/kw.cma
[18:26:02] <gds> Kakadu: пофиксил, попробуй.
[18:27:13] <gds> f[x]: и чего он не публиковал это?
[18:27:39] <Kakadu> и снова он пытается поставить сам себя
[18:28:02] <Kakadu> gds: не, не пофиксилось
[18:28:12] <Kakadu> вроде та же фигня
[18:28:28] <gds> > I: Running command 'cp '/home/kakadu/prog/test_oasis/_build/bin/asdf3.byte' '/usr/local/bin/asdf3''
это разве "сам себя"?
[18:30:51] <f[x]> gds: мопед не мой
[18:31:14] <f[x]> похоже это какая-то сборная солянка
[18:31:32] <f[x]> т.е. личный набор утилит
[18:38:11] <gds> а если в ./configure подавать всегда --prefix=.../_dep, будет плохо?
[18:40:59] <f[x]> I CANNT BELIEVE IT - http://yquem.inria.fr/~protzenk/caml-faq/doku.php?id=How%20to%20contribute
[18:41:23] <Kakadu> gds: http://paste.in.ua/3511/#l-159
[18:41:32] <Kakadu> gds: обрати внимание: я два раза билд запускал
[18:42:33] <Typhon> f[x]: это новое, по мотивам дискуссии? или ЭтоТоЧтоТщательноСкрывалиРанее?
[18:43:45] <f[x]> новое похоже, draft
[18:44:13] <f[x]> этот товарищ сам по себе новый (ну либо его тщательно скрывали)
[18:46:09] <gds> f[x]: ШОК
[18:49:30] <gds> Kakadu: понял багу, ща поправлю.
[18:50:27] <f[x]> gds: я знаю почему, там концентрацию французов просто разбавили и они неуспевают следить за порядком(тм)
[19:04:59] <gds> Kakadu: посмотри сейчас, всё ли нормально.
[19:08:58] <Kakadu> уже лучше
[19:09:49] <gds> насколько?
[19:10:00] <Kakadu> не падает но у меня есть два вопроса
[19:10:38] <Kakadu> 1. по-видимому make all привело к тому что configure вызывается 2 раза:
http://paste.in.ua/3512/#l-70
http://paste.in.ua/3512/#l-8
[19:11:39] <Kakadu> 2. Оно реально идет собирать само себя!
http://paste.in.ua/3512/#l-152
[19:12:50] <gds> 1 -- да.  хз почему оазис после configure не сохраняет / не использует инфу, которая нужна для make all.  но это не важно.  как я помню, правильнее make all, его и оставим.
[19:13:13] <gds> 2 -- brb --help, там изменения, которые приятно удивят.
[19:18:13] <Kakadu> зашибись
[19:19:51] <gds> ну, лично мне нравится.
[19:23:34] <Kakadu> да не, зашибись это не ругательство
[19:26:10] <Kakadu> так что, один пункт только пофиксить?
[19:26:43] <gds> теперь -- да.  я бы не очень хотел показывать буржуям 1.0, но, если кто захочет, пишите доки.
[19:27:09] <Kakadu> т.е. мы уже имеем 1.0?
[19:27:29] <gds> вроде бы да, если ни у кого нет других идей.
[19:27:39] <Kakadu> bobry: танцуй!
[19:28:02] <gds> ну чо, нехай гитоводы делают бранч 1.0 (или как там это принято), так как, есть вероятность, что с hg-git это придётся дольше делать (и не факт, что корректно).  а дальше -- по правилам.  если бага 1.0 -- фиксим в 1.0, мержим.  если бага в 1.1 или какая фича из 1.1 -- пишем в 1.1.  вроде так делают?
[19:28:24] <f[x]> кстати, оно поддерживает такой юзкейс - несколько установленных камлей на машине, я переключаюсь между ними сам, дайю _dep файл с кучей либ - все либы собираются и ставятся дефолтным камлофиндом?
[19:28:25] <gds> (ну, то есть, не в 1.1, а в master)
[19:28:31] <f[x]> т.е. как средство для равёртывания окружения?
[19:28:54] <gds> f[x]: сейчас такого нет.
[19:29:03] <f[x]> gds: чего именно не хватает?
[19:29:04] <Kakadu> gds: надо ещё почитать про таги в гите. Может это то что ты хочешь сделать бранчами
[19:29:24] <gds> Kakadu: вроде честные бранчи нужны, но почитать доки никогда не лишне.
[19:29:29] <f[x]> на релизы ставьте таги, а бранчи - по необходимости
[19:29:31] <gds> f[x]: мозгов :]
[19:29:40] <gds> f[x]: а как фиксить баги в 1.0?
[19:29:59] <f[x]> gds: ыы, а на каком шаге из того что я описал затык?
[19:30:21] <f[x]> gds: ну когда приходит бага на 1.0 тогда бранчишься от тэга и там фиксишь
[19:30:21] <gds> f[x]: сейчас продумаю, доложу.
[19:30:39] <gds> f[x]: не проще сразу бранч?
[19:30:56] <f[x]> нет, он будет пустой никому не нужный висеть. зачем?
[19:31:00] <f[x]> тэг нужен обязательно
[19:31:46] <gds> ладно, говорю же, что гитоводы это делать должны, у них с этим должно быть лучше.
[19:33:16] <gds> f[x]: у меня про "развернуть окружение" в целом чуть другие идеи были, посмотри в гуглодоке, "планы на 1.1", последний пункт (либо поиском по строке "вроде бы всё готово для venv").
[19:34:59] <f[x]> ок, про окружение можно не говорить даже, для brb это выглядит как дефолтный камль
[19:35:05] <f[x]> и дефолтный камлофинд
[19:35:26] <f[x]> venv мне пока не нужен
[19:35:32] f[x] наглый пользователь
[19:36:44] <gds> f[x]: проблемка с тем, что будем делать в случае, если не сбилдится что.  культурно удолять не умеем.
[19:37:01] <f[x]> ругнётесь
[19:37:05] <gds> кроме того, не умеем смотреть, стоит ли уже пакет.
[19:37:06] <f[x]> зачем что-то удалять?
[19:37:32] <Kakadu> >  кроме того, не умеем смотреть, стоит ли уже пакет.
в модуле ocamlfind есть всё для этого
[19:37:34] <f[x]> это надо будет пофиксить, но не шибко критично
[19:38:08] <f[x]> кстати хорошо бы иметь ключик типа force чтобы продолжать билдить зависимости даже если что-то обломилось
[19:38:19] <f[x]> и в 2.0 надо будет уметь паралельно сборки запускать!
[19:38:38] <f[x]> фичреквестить - не кодить :)d
[19:39:05] <Kakadu> >  и в 2.0 надо будет уметь паралельно сборки запускать!
надо вначале прикрутить депенденсы в конфиге, имхо
[19:39:16] <f[x]> ы?
[19:39:22] <f[x]> а разве сейчас они не из конфига?
[19:39:28] <Kakadu> нет
[19:39:38] <Kakadu> сейчас депенденсов нет
[19:39:52] <gds> сейчас они из конфига, хехе, только они имеют вид "чтобы билдить строку N, надо сбилдить строки 1..N-1".
[19:40:49] <f[x]> а
[19:40:52] <f[x]> а, понял
[19:41:02] <f[x]> для паралельной сборки нужно более подробно
[19:41:18] <f[x]> тогда я бы не заморачивался прописыаванием этого в конфиге
[19:41:45] <f[x]> а включать паралельную сборку только если зависимости можно заdiscover'ить (т.е. если все зависимости - oasis'овские)
[19:41:47] <gds> f[x]: может это добро в следующие версии захреначить лучше?  с тебя -- тщательное описание пожеланий.  видимо, это будет ключ командной строки типа --dest-(env|prefix) <префикс, куда ставить>.  но учитывая это, учитывая необходимость поиска уже стоящих пакетов, учитывая "только локально собирать", становится как-то непросто.
[19:42:12] <f[x]> пжди, не нужен никакой dest-env
[19:42:21] <f[x]> ставится же камлофиндом?
[19:42:24] <gds> ну, --dest-env=default например.
[19:42:34] <f[x]> а, только опцию по-короче тогда
[19:42:35] <gds> чтобы разделять случаи "ставим в _dep" vs "ставим дефолтово".
[19:42:38] <f[x]> :)
[19:42:51] <f[x]> угу, это то что изначально было как варианты dest_dir, ок
[19:43:05] <f[x]> можно и в следующей, я-то просто прицеливаюсь
[19:43:39] <f[x]> а всю эту логику когда ругаться на уже установленный, а когда считать что это ок ещё не прописывали чётко?
[19:43:42] <gds> а не хочешь вместо дефолтового использовать venv'ы, которые уже сейчас почти легко можно накодить?  с полной пересборкой всего venv'а.
[19:44:11] <f[x]> не, сейчас это лишняя сущность, хочу ставить в дефолтную локацию чтобы потом всё по дефолту работало
[19:44:24] <gds> логику не прописывали, сейчас всё ставится локально -- всё, что указано в конфиге.  даже если оно системно есть.
[19:44:37] <f[x]> угу, ну правильно, версия 1
[19:44:43] <f[x]> всё чётко
[19:45:18] <f[x]> значит я жду либо следующей версии либо стимула присунуть патч смотря что наступит раньше
[19:45:26] <gds> это да.  но, так как версии по конфигу делаем, 1.1 будет с косметическими изменениями, например, remote http://somehost/file.tar.gz вместо прежнего remote-tar-gz.
[19:46:16] <Kakadu> предлагаю вынести на обсуждение новый вариантт конфига: http://paste.in.ua/3436/
[19:46:41] <gds> f[x]: вот чо прошу, погляди в спеку, в пожелания к 1.1.  вдруг там что найдёшь ещё, или как-нибудь "малой кровью" опишешь твоё --dest=default (с комментариями о том, как оно должно работать).
[19:46:48] <Kakadu> хотя меня там ждет фадиез (((
[19:46:53] <f[x]> нафига депендсы прописывать?
[19:47:06] <gds> f[x]: не все пакеты умные, вот нафига.
[19:47:20] <gds> Kakadu: пока конфиги ждут вполне, пока на 1.x есть что делать.
[19:47:24] <f[x]> ну а зачем для сборки знать депендсы?
[19:47:30] <f[x]> собирай по порядку и всё
[19:47:38] <Kakadu> f[x]: чтобы знать в каком порядке собирать
[19:47:52] <f[x]> порядок по строчкам в файле
[19:47:58] <Kakadu> f[x]: не тру
[19:48:01] <f[x]> тру
[19:48:07] <f[x]> лишняя сложность
[19:48:12] <Kakadu> французы тебя засмеют и закидаю лягушками
[19:48:15] <gds> если кому-то кажется, что нужно новый конфиг, несмотря на громадное количество работы в 1.1 -- хз, я не присоединюсь.
[19:48:48] <f[x]> gds: ок..
[19:49:13] <Kakadu> gds: ok
[19:54:51] <Kakadu> gds: насчет угадывания типа архива по ссылке
полагаю что ссылки бывают и хорошие (где надо сделать String.endswith) и плохие, где тип архива в ссылке не укзан. Поэтому предлагаю в remote дописать "угадывание", а текущие параметры оставить как есть, чтобы юзер мог на всякий случай захардкорить тип архива.
[20:00:54] <gds> Kakadu: так вот именно так и хочу!
[20:02:37] <gds> f[x]: понял, как легко удовлетворить твою хотелку.  1. просто делать ocamlfind remove перед make install независимо от того, куда ставим, 2. в случаях --dest=default просто не переписывать OCAMLFIND_DESTDIR.  подумай, покатит ли?
[20:02:39] gds afk
[20:03:21] <f[x]> 2 - да, вообще ничего не переписывать, самый тупой дефолтный вариант
[20:03:24] <f[x]> ocamlfind remove - нет
[20:03:44] <f[x]> не надо ничего ремувать из моей системы без спроса
[20:06:24] <komar> Поцоны, а у меня тут даркс на сервере тормозил.
[20:06:30] <komar> Так сильно тормозил, что я чуть на гит не перешел.
[20:06:43] <komar> Историю одного файлика за полторы минуты доставал.
[20:06:59] <komar> А потом я посмотрел в iotop и увидел, что монгадб жует диск как одуревшая.
[20:07:14] <komar> Кто-нибудь может объяснить суть этой базы данных?
[20:07:55] <komar> Монга не моя, чужая, я SQL люблю.
[20:09:31] <f[x]> komar: darcs всё равно тормозит, не увиливай
[20:09:37] <komar> Угу.
[20:09:51] <komar> Теперь он достает историю за две секунды.
[20:09:56] <komar> Все равно стыд, но приемлемо.
[20:10:00] <f[x]> ну а базы данных все диск жрут, если их попросить
[20:14:24] ad1862 вошёл(а) в комнату
[20:18:07] shaggie вошёл(а) в комнату
[20:21:21] <Kakadu> # function
  | _ when true
  | _ -> true;;
Error: Syntax error
[20:21:33] <Kakadu> я почему-то думал что можно так писать
[20:26:29] <f[x]> не, камлевый мантис за последнюю неделю меня радует (без сарказма)
[20:26:39] <f[x]> откопали мою багу двухлетней давности
[20:34:00] Andrey Popp вышел(а) из комнаты
[20:37:55] Typhon вышел(а) из комнаты
[20:46:07] ftrvxmtrx вышел(а) из комнаты
[21:05:31] ad1862 вышел(а) из комнаты
[21:17:29] <gds> f[x]: а если не сбилдится шось, что будешь делать, как выкручиваться?  хотя, по идее, надо make uninstall + make install делать в общем случае.
[21:17:42] <gds> (конечно, uninstall только после успешной компиляции)
[21:18:26] <gds> komar: переходить на гит?  это такие шуточки или что?
[21:18:50] <komar> Ну если совсем не работает ничерта, то что еще поделать?
[21:18:58] <komar> Не заставлять же юзера полторы минуты ждать http-ответ.
[21:19:06] <gds> что поделать -- hg!111
[21:19:18] <komar> зойчем оно
[21:19:25] <komar> там петон
[21:19:54] <komar> Я в принципе допускаю возможность рабочей софтины на питоне, но все же стараюсь держаться от него подальше, как от обезьяны с гранатой.
[21:20:45] <gds> да знаешь, сишечька тоже не апофимоз гарантий корректности, если чо.
[21:21:08] <komar> Угу.
[21:21:17] <komar> Но по статистике сишечка приносит мне меньше разрушений.
[21:23:23] <gds> по-моему, говно говна не слаще.  никто же не требует обмазываться питоном для использования меркуриала.  (меня -- точно никто не требовал до сих пор.)
[21:24:31] <komar> Не-не-не, ну его нафиг.
[21:31:38] f[x] вошёл(а) в комнату
[21:33:44] <f[x]> > а если не сбилдится шось, что будешь делать, как выкручиваться?
смотреть руками, дописывать хуки для make и configure чтобы на остальных нодах сбилдилось сразу. make uninstall можно делать только для project local, либо venv, в остальном случае  - по явной просьбе юзера
[21:34:38] <gds> f[x]: вот есть 10 либ.  на 6-ой поломалось.  первые 5 либ как удолять будешь?
[21:34:51] <f[x]> зачем удалять?
[21:34:59] <f[x]> у меня цель - поставить все десять
[21:35:14] <f[x]> на 6-ой поломалось - дальше продолжает билдить что может
[21:35:21] <gds> при следующем запуске будет ставить остальные и отваливаться (видимо) на первом же дубликате.
[21:35:28] <f[x]> остальное я руками соберу и запущу ещё раз сборку
[21:35:50] <f[x]> это управляется опцией conflict resolution
[21:35:50] <gds> руками будешь tar.gz выкачивать, репки клонировать?  нуну
[21:36:09] <f[x]> неа, можно же попросить всё выкачать и не собирать?
[21:37:00] <f[x]> т.е. on conflict = reinstall | skip | error
[21:37:14] <f[x]> и наверное второй конфликт - по версии
[21:37:43] <f[x]> т.е. одна опция - что делать если пакет подходящий по версии стоит, вторая что делать если стоит неподходящий
[21:37:44] <gds> может и можно будет "распаковать всё".  но даже если так -- остальное собирать руками это как-то криво.
[21:37:53] <f[x]> gds: это нормально
[21:38:00] <f[x]> это лучше чем "собирать всё руками"
[21:38:12] <f[x]> для первых версий - норм
[21:38:18] <f[x]> и потом - почему оно может не собраться?
[21:38:37] Andrey Popp вошёл(а) в комнату
[21:38:42] <f[x]> все эти причины будем по мере надобности вкручивать в конфиг - указание аргументов make и configure
[21:38:44] <gds> а хз почему.  по идее, надо сначала в --dest=local пробовать, а потом уже в --dest=default, думается.
[21:39:06] <f[x]> ну юзер может это сам руками сделать - так ведь?
[21:39:55] <gds> может.  а вообще, может и "ocamlfind remove всё что поставилось".
[21:41:44] <gds> однако сейчас конфиг не очень годится для опций make / configure.
[21:41:58] <f[x]> ну мы про концепции
[21:42:02] <f[x]> конфиг дело наживное
[21:42:34] <f[x]> и кстати хочется чтобы все опции можно было указывать как в ком-строке, так и в файле, так и на уровне каждого dep'а (гд это имеет смысл)
[21:42:44] <f[x]> в указанном порядке приоритета
[21:43:15] <f[x]> плюс наверное юзерский глобальный конфиг
[21:44:49] <gds> я вижу целую пропасть между текущим состоянием дел и этими идеями.  в спеку надо будет вписать всё это.  плюс к тому, какие опции нужны и всё такое.  но это не сразу.
[21:46:41] <f[x]> норм
[21:48:01] <gds> что ещё не нравится (собственно, в планах на 1.1 есть даже) -- то, что неизвестно, как определять, какие ocamlfind-пакеты ставит данная зависимость.
[21:48:59] <f[x]> я думал это то что указывается после dep??
[21:49:28] <f[x]> а, может же быть больше одного пакета..
[21:49:29] <gds> ну вот, укажу я dep ocamlnet.
[21:49:34] <gds> именно.
[21:49:50] <f[x]> ну в большинстве случаев всё таки один пакет
[21:49:57] <f[x]> сейчас все юзают подпакеты
[21:50:07] <f[x]> правда есть такая вещь как бандлы
[21:50:11] <f[x]> например ocsigen
[21:50:39] <f[x]> перечислять все пакеты как-то тупо
[21:50:48] <gds> не очень-то и тупо.  по идее, будет нужна опция типа "provides packages: ..."
[21:50:56] <f[x]> ну из ocamlnet'а тебе например нужно два пакета
[21:51:18] <f[x]> а зачем знать кто чт provides?
[21:51:36] <f[x]> достаточно указать что я хочу то-то и то-то и так случилсоь что эти то-то приходят из одного архива
[21:51:59] <f[x]> и brb раскидывает мозгом и не качает два раза один и тот же архив
[21:53:53] <gds> там это нужно для "персистентности", например, чтобы не инсталлить то, что уже проинсталлено.
[21:54:44] <gds> ага, и с тем же ocamlnet -- в пролёте, вроде.
[21:54:57] <f[x]> пчу7
[21:55:06] <gds> там много пакетов.
[21:55:16] <f[x]> пишу dep netstring,netencoding http://ocamlnet.tar.gz
[21:55:25] <f[x]> оно качает один раз - инсталлит
[21:55:38] <f[x]> проверяет что пакеты netstring netencoding появились
[21:55:45] <f[x]> то что я повились ещё какие-то пофиг
[21:55:55] <gds> а с версиями как быть?
[21:56:01] <f[x]> кстати вот способ определять - берёшьт дифф между двумя ocamlfind list :)
[21:56:15] <gds> для параллельной сборки вообще замечательно пройдёт :)
[21:56:25] <f[x]> ну для паралельной осторожно надо и всех делов
[21:56:36] <f[x]> install - критическая секция
[21:56:59] <f[x]> с версиями - ты имеешь ввиду когда зависимости тянут ocamlnet тоже?
[21:57:43] <gds> не, пока просто случай "инсталлить ли данный пакет или использовать уже стоящее".
[21:57:46] dzhon вошёл(а) в комнату
[21:59:07] <f[x]> ну мне вообще reinstall не шибко нравится
[21:59:49] <gds> не, я про случай "нужно ли вообще install".
[22:00:27] <f[x]> а, так смотришь - netstring стоит - да/нет, netencoding - да/нет - точно так же всё
[22:00:49] <f[x]> т.е. тот факт что все эти пакеты приходят из одного архива  - на что влияет?
[22:01:07] <gds> да вроде ни на что особо.
[22:01:27] <f[x]> ну и вдобавок достаточно редкий случай кроме ocamlnet вроде
[22:02:40] <gds> в общем, кучу всего обговорили, но конкретной картины так и нет.  может допишешь в спеку чоткие пожелания к 1.1?  чтобы подумать-обсудить их хотя бы, и чтобы была хоть какая документация.  а потом, в код, это уже второй вопрос.
[22:08:41] <f[x]> killing me softly, la la la
[22:11:41] <gds> не, это как раз для того, чтобы можно было инкрементально налепить всё требуемое.  а это -- можно, уверен.
[22:12:18] <bobry> товарищи, всем сори -- rl засасывает, на учебе сезон дедлайнов :)
[22:12:26] <bobry> барбру таки зарелизили? (если я правильно понял)
[22:14:40] <gds> ещё нет, тарбола же нет, тэга нет.
[22:14:56] <bobry> так вперед!
[22:15:13] <gds> нэ можу.
[22:15:48] <bobry> busy?
[22:15:49] <gds> bobry: когда будет время, дочитай чатлоги, обсудим.
[22:15:56] <bobry> оке-оке
[22:16:14] <gds> не, интересно и твоё мнение тоже, да и не хочу лезть в продвинутые фишки своим hg-git'ом.
[22:16:48] <Kakadu> тег есть. тарболл есть
[22:17:03] <bobry> можно праздновать стало быть :)
[22:19:08] <Kakadu> gds: заводить на гитхаюе issue глупо, лучше в чатик?
[22:19:25] <bobry> Kakadu: заводи! не надо в чатик
[22:19:27] <gds> Kakadu: смотря какой issue.  Если он к тегу 1.0 -- бранч заводи1111
[22:19:35] <bobry> а то потом вылавливать обсуждения из чатика ..
[22:19:52] <gds> Kakadu: если баг -- в TODO.txt лучше, он с репкой един.
[22:20:07] <bobry> в issues!1
[22:20:13] <gds> bobry: чому??////
[22:24:46] <Kakadu> сделал как бобрый сказал
[22:24:56] <Kakadu> сегодня такой день --- надо радовать боброго
[22:25:01] <bobry> лол
[22:25:12] <bobry> gds: потому что неудобно копаться в логах и вылавливать кто-что сказал по тому или иному поводу
[22:25:26] <Kakadu> чтобы совсем весело надо на него повесить её
[22:25:30] <bobry> issues позволяют упорядочить баги / мысли / комментарии
[22:25:34] <gds> bobry: почему не TODO.txt?
[22:25:49] <bobry> потому что там нельзя обсуждать
[22:25:56] <bobry> обсуждать "через коммиты" как то странно :)
[22:26:14] <gds> можно обсуждать.  да нормально, не стыдно.  стыдно -- когда в репке не видно.
[22:26:56] <bobry> ну не знаю, по мне так с issues на порядок цивильней
[22:26:57] <Kakadu> bobry: всё, на тебя повесил
[22:27:10] <bobry> а если писать на заморском, то и в #ocaml упомянуть можно
[22:27:54] <gds> уточню: сначала писать на всяких мунспиках, а только потом упоминать на всяких #ocaml.
[22:28:27] <gds> если кто захочет нормальный readme сделать -- вперёдю
[22:28:31] <gds> .
[22:28:37] <bobry> надо-надо, да
[22:30:41] <gds> Kakadu: порицаю when!
[22:30:47] <Kakadu> всётаки название хорошее. Барбрариска
[22:31:11] <Kakadu> gds: а ты бы как написал?
[22:33:33] <gds> ну блин.  Есть тип данных.  Его надо полностью разобрать, только тогда можно нормально отреагировать на все случаи и не морочиться их порядком и прочими делами.  И в этом же разборе принять все требуемые меры.
Тут -- кривая диагностика в случаях "remote" и не when .. ends.  Проблема -- не нужно использовать when, за редкими исключениями.  "remote" -> if ends ... then .tar.gz else if ends ... then .tar.bz2 else failwith "жопа".
[22:35:20] <Kakadu> у меня нет такого опыта чтобы понять что гварды не тру
[22:36:10] <gds> в случае просто "remote" -- явно, что с этим случаем надо разобраться тут же, при матче, локально, и отреагировать на него.  не в жопе глобального матча, а тут.  хороший принцип есть про то, что близкий по причинам/последствиям код должен находиться в исходнике как можно ближе.
[22:38:46] <Kakadu> ща передаляю
[22:38:56] <bobry> и код ревью делать на gh удобно
[22:38:57] <bobry> если чо
[22:46:20] <Kakadu> gds: https://github.com/camlunity/barbra/commit/efb62eaab9514ad0e9ab803f5ae491b3e61f9a17
[22:47:01] <gds> Kakadu: кошерно.
[22:47:23] <gds> заметь, вся логика угадывания в одном конкретном месте, ну и диагностика внятная.
[22:48:20] <gds> когда пишешь софт всяким разным людям (не только себе), диагностика возможных ситуаций чуть ли не на первом месте.  мы же тоже не только для себя это пишем.
[22:48:33] ermine вышел(а) из комнаты
[22:49:18] <Kakadu> угу
[22:51:49] <gds> кстати, ещё плюс: для local тоже подобное неплохо бы запилить.  ну и нормально, копипаста сработает, плюс-минус какие-то мелкие моменты.
[22:52:13] <gds> точнее, не копипаста, а перенос в отдельную функцию.  но тоже хорошо будет.
[23:02:34] Typhon вошёл(а) в комнату
[23:23:29] <Kakadu> я также добавил отгадывание типа архива у бандла
[23:42:16] <gds> Kakadu: заценил, нравится.  А вот от local/remote уйти будет сложнее, там надо будет уметь серьёзно парсить пути.  Поэтому оставим так пока.
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!