Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 8 января 2012< ^ >
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:02:29] Kakadu вошёл(а) в комнату
[00:02:53] <Kakadu> блин, какой неприятный вечер
[00:03:06] <bobry> товарищи, а как сказать ocamllex'у что мои токены case insensitive?
[00:03:09] <bobry> Kakadu: what up?
[00:03:33] <Kakadu> опять получал леща на тему "нахрена ты ввязался изучать то (ocaml), что никому нафиг не нужно"
[00:03:49] <bobry> от кого? О_О
[00:03:59] <Kakadu> от мамтери
[00:04:02] <Kakadu> матери*
[00:04:16] <bobry> ого у тебя мама, на чем пишет? :D
[00:04:23] <ygrek> чемодан, вокзал, камчатка!
[00:04:38] <Kakadu> у меня мама научиласьискать вакансии в яндексе
[00:06:17] <ygrek> ясно дело что на камле ты сходу работу вряд-ли найдёшь. идёшь на с++, через год подрывной деятельности по впиливанию последних достижений буста в код контора добровольно переходит на камль. профит.
[00:09:28] <Kakadu> ygrek: ты серьёзно или сарказм?
[00:13:49] <Kakadu> и ещё она называет линукс люниксом и говорит что он никому не нужен
[00:13:59] <ygrek> серьёз в том что программист на камле мало кому нужен - факт. Поэтому альтернативный вариант - рабоешь, зарабатываешь опыт и авторитет, тебе доверяют - сам принимаешь решение на чём писать и как решать проблемы
[00:14:57] <ygrek> вообще "программист на xxx" это какая-то странная цель. годная цель - "хороший программист".
[00:15:35] <bobry> true
[00:15:47] <Kakadu> ygrek: опыт программирования на джаве помогает писать модули ядра линукс?
[00:16:09] <bobry> Kakadu: я думаю как раз када ты универ закончишь у нас в конторе во всю будет камло :)
[00:16:20] <bobry> после шишек с х-лем
[00:16:55] <Kakadu> bobry: ну ты оптимист)
[00:17:01] <bobry> я реалист :)
[00:17:20] <bobry> пасаны, как дебажить результат ocamllex / ocamlyacc?
[00:17:24] <bobry> поделитесь опытом?
[00:17:39] <ygrek> bobry: юзай menhir
[00:17:54] <bobry> ygrek: низя, это для барбары
[00:18:13] <Kakadu> комбинаторы!
[00:18:18] <ygrek> он совместим - разрабатывать можно на menhir'е, а компилять yacc'ом
[00:18:31] <bobry> щас попробую, там вроде репл ис коробки, да?
[00:18:34] <ygrek> ну и отладку принтфом никто не отменял
[00:18:48] <ygrek> там какой-то пошаговый отладчик есть вроде
[00:22:50] ermine вышел(а) из комнаты
[00:23:30] <ygrek> ETA на 3.13
DD> My personal estimate is: between April and August
[00:24:29] <bobry> неслабый такой интервал
[00:24:42] <bobry> my personal estimate is: between Jan and Dec
[00:43:39] qrntz вошёл(а) в комнату
[00:46:57] <bobry> еще вопрос про ocamlyacc, если я пишу %token <string> VALUE, то мне все равно надо в лексер правило для этого токена добавлять?
[00:47:04] <bobry> или он по типу сгенерит?
[00:50:23] <bobry> все чертовы калькуляторы генерят
[00:50:23] <qrntz> надо добавлять
[00:51:26] <bobry> qrntz: merci
[00:51:38] <bobry> был какой то сайтик с примерами парсеров и лексеров помнится
[00:52:24] <qrntz> bobry: nicht zu danken
[00:52:29] <qrntz> мне этот нравится http://www.matt-mcdonnell.com/code/code_ocaml/lexing/lexing.html
[00:54:31] <qrntz> дизайн там, правда, весьма вырвиглазный
[01:15:55] <bobry> вуху, мой парсер для нового конфига уже почти работает :)
[01:28:58] dzhon вышел(а) из комнаты
[01:36:01] Typhon вышел(а) из комнаты: Replaced by new connection
[01:36:04] Typhon вошёл(а) в комнату
[01:44:13] <bobry> товарищи, как думаете, стоит ли выносить поддерживаемые типы источников в парсер?
[01:44:31] <ygrek> не
[01:44:41] <ygrek> это ж не ключевые слова
[01:46:43] <bobry> окей, тогда другой вопрос -- что если я при парсинге сразу буду "угадывать" тип архива?
[01:46:55] <bobry> т.е. весь этот кусок переедет в парсер https://github.com/camlunity/barbra/blob/master/src/config.ml#L20
[01:47:05] <bobry> вроде бы немного смысла делать это после
[01:47:27] <Typhon> кмк, парсинг конфига отдельно, обработка конфига -- отдельно :-)
[01:47:38] <bobry> Typhon: ну это же фактически парсинг
[01:47:47] <bobry> для "remote-tar-gz" мне нужено вернуть соотв. тип
[01:47:57] <bobry> это просто разбор зависимостей
[01:55:40] <ygrek> bobry - по хорошему у тебя должно быть два ast'а
[01:55:49] <ygrek> нетипизированный и типизированный
[01:55:57] <ygrek> но в этом случае это overkill
[01:56:30] <ygrek> я в таких случаях делаю часть обработки в парсере и не парюсь
[01:57:46] <bobry> ygrek: merci, а у тебя есть oss примеры с двумя аст?
[01:58:00] <bobry> видимо без s -- open source :)
[02:02:37] <ygrek> bobry: ocaml :)
[02:04:12] <bobry> многовато буит
[02:05:37] <ygrek> ну видимо в маленьких случаях этого никто не делает :)
[02:06:06] <ygrek> можно всякие minml'и посмотреть (и plzoo) - там должно быть по науке сделано
[02:06:35] Kakadu вышел(а) из комнаты
[02:07:09] shaggie вышел(а) из комнаты
[02:17:35] <bobry> ygrek: а можно как нить ocamlyacc сказать что у меня все ключевые слова регистронезависимы?
[02:21:00] <ygrek> в лексере их кастуй в нужный регистр
[02:21:24] <bobry> так я в лексере матчу сразу напр. "Dep"
[02:22:03] <bobry> вощем та можно и кастовать
[02:26:06] <ygrek> http://repo.or.cz/w/sqlgg.git/blob/HEAD:/src/sql_lexer.mll#l150
[02:30:09] <bobry> я их в hashtbl засунул, как официальный туториал советует
[02:39:01] ygrek вышел(а) из комнаты
[02:48:16] qrntz вышел(а) из комнаты
[03:09:53] Typhon вышел(а) из комнаты
[03:17:33] <bobry> вощем новый конфиг есть, make targets и configure flags запилены, если кому не лень -- посмотрите код как будет время?
[03:20:27] <bobry> и еще, issues про bundles и venvs ждут четкой спецификации
[03:23:12] <bobry> кстати как патчи накладывать будем? просто patch -p1 <fname>?
[03:27:12] <bobry> в общем еще раз всех призываю отметиться в issues, допишите, откомментируйте https://github.com/camlunity/barbra/issues
[03:27:24] <bobry> очень хочется выпустить 2.0 / 1.1 до конца праздников
[04:03:16] letrec вошёл(а) в комнату
[05:00:00] letrec вышел(а) из комнаты
[06:07:48] letrec вошёл(а) в комнату
[09:11:45] letrec вышел(а) из комнаты
[10:27:36] ermine вошёл(а) в комнату
[10:52:38] Kakadu вошёл(а) в комнату
[11:55:33] iNode вышел(а) из комнаты
[12:28:49] gds вошёл(а) в комнату
[12:54:26] shaggie вошёл(а) в комнату
[12:57:01] <bobry> как же меня удручают манатки в install
[12:57:06] <bobry> плохо с ними в камле
[12:57:17] <gds> чем плохо?
[12:57:33] <bobry> то что в х-ле можно было бы сделать через do и when в камле выглядит как г-но
[12:57:52] <bobry> https://github.com/camlunity/barbra/blob/master/src/install.ml#L165
[12:58:15] <gds> тьфуты, гламур, "как говно".
[12:58:30] dzhon вошёл(а) в комнату
[12:58:34] <bobry> :)
[12:59:39] <bobry> кстати я правильно понимаю что для патчей придется вызывать sh?
[12:59:49] <bobry> sh 'patch -p1 < foo.patch'
[12:59:56] <bobry> sh -c точнее
[13:13:34] <gds> да, как-то так.
[13:20:27] <gds> но я бы всё-таки вручную скормил бы патч на stdin процессу patch -p1
[13:20:48] <gds> чтобы с путями и эскейпингом на было проблем.
[13:21:08] <gds> если уже накодил, поставь там "FIX(gds): open_process_*"
[13:25:39] <bobry> не, еще не кодил
[13:25:50] <bobry> там же надо какой нить sequence небось?
[13:25:58] <bobry> шобы пачку патчей скормить
[13:27:26] <gds> ага, это накодю без проблем тоже.
[13:28:47] <bobry> ок, если есть время -- давай
[13:32:11] <gds> но сегодня времени на барбру не густо, поэтому определись, что от меня будет приоритетнее.
[13:40:08] <bobry> я бы хотел обговорить бандлы
[13:40:12] <bobry> но видимо ближе к вечеру
[13:40:18] <bobry> напиши как будет минутка
[14:18:28] Typhon вошёл(а) в комнату
[14:42:17] <bobry> gds: а зачем у нас filename_new? что там нового по сравнению с stdlib?
[14:44:35] <bobry> gds: и еще, ты не против если я вместо спецификации в README начну туториал писать?
[14:57:15] <bobry> gds: и еще еще %) из каких соображений мы решили не использовать Arg? можно взять его и навелосипедить свой модуль для subcommands поверх (как и сделано напр. в oasis'e)
[15:01:22] <bobry> extlib is dead? http://darcs.ocamlcore.org/cgi-bin/darcsweb.cgi?r=oasis;a=commit;h=20120107172706-6f87a-49646a2e7ec1586eeacf73f797d6aaac2acae5bf.gz
[15:01:25] <bobry> wtf?
[15:02:13] <bobry> oasis теперь зависит от батареек, вот это да!
[15:07:37] <ermine> хорошо, что не js core
[15:13:02] <Kakadu> ermine: )
[15:23:00] shaggie вышел(а) из комнаты
[15:28:30] <gds> bobry: filename_new -- по сравнению с какими-то версиями камла там что-то новое было.  но новое в плане какой-то функции, поэтому, если вместо текущего кода сделать include Filename и всё будет компилироваться, значит можно так и оставить.  но надо бы, в идеале, потестить на <3.12.
[15:28:58] <gds> bobry: где-то нужна спека/концепции, где-то нужен туториал.  старый текст не удаляй, максимум перемести куда-то.
[15:29:38] <gds> bobry: про Arg -- у меня что-то не получилось с ним, вроде.  Но что плохого в ручном разборе командной строки?
[15:33:47] <ermine> если вручную, то через Sys.argv, и наверняка максимум 4 аргумента без пропусков и без слов с дефисом спереди
[15:34:39] ermine как-то хотела быть героем и сваяла свой вариант getop, потом его выкинула в пользу arg, а теперь наверное надо везде на cmdline валить
[15:36:39] <bobry> ermine: cmdliner умеет хелп только через ман ..
[15:37:08] <bobry> gds: наваять свои сабкомандс и зарелизить в виде либы, ну или можно код у оазиса скрасть :)
[15:37:11] <bobry> пригодится же
[15:37:25] <gds> а что это такое?
[15:38:01] <bobry> http://darcs.ocamlcore.org/cgi-bin/darcsweb.cgi?r=oasis;a=headblob;f=/src/cli/SubCommand.ml
[15:39:45] <gds> чем это принципиально лучше, чем
match list_of_argv with
[ [ "subcmd1" :: tl ] -> proc_subcmd1 tl
| ..
?
[15:40:22] <bobry> позволяет генерить хелп для команд
[15:40:29] <bobry> а не писать его блобом в коде
[15:40:31] <bobry> например
[15:40:41] <ermine> мда, клоны везде страшные, и все с выводом опций в прогу через ref, которые потом все равно руками проверяются
[15:41:11] <ermine> как в сконфе
[15:41:24] <ermine> ой нет, сконф лучше
[15:41:48] <ermine> действительно, надо все строчки аргументов склеить в одну и парсить обычным парсером
[15:41:49] <gds> преимущество несущественное, а гемор от "инверсии управления" влияет на гибкость отрицательно.  как хочешь, в общем.
[15:41:58] <gds> ermine: нет.
[15:42:22] <ermine> gds: у тебя на все мое только "нет" мужское
[15:42:32] <bobry> никакой инверсии и не будет, вместо match ... with будет какой нить Hashtbl.find ... cmd
[15:43:26] <gds> bobry: как хочешь.
[15:43:27] <ermine> фи
[15:43:56] <gds> ermine: поясню.  этим подходом ты прощёлкиваешь нормальную обработку аргументов с пробелами, например.
[15:44:28] <bobry> gds: мне такой диалог не нра :) даешь еще критики
[15:46:30] <bobry> ermine: а шо не так с core?
[15:47:41] <gds> сейчас есть что делать другое.  в общем, если есть куча проблем поддерживать нормальный хелп (дофига команд добавляешь/удаляешь, в том числе динамически), то делай subcommands или что-то подобное (вплоть до патча cmdliner).  но мне вообще, в целом, сложные решения кажутся хуже простых.  я очень люблю простоту в последнее время, и считаю, что если можно решить проблему простым образом, её нужно решить простым образом.  сэкономишь на дальнейшей поддержке, на ловле багов.
[15:54:54] <gds> замечу, что единственное "сложное" решение, которое я применил в барбре -- Res манатка.  Но, как по мне, всегда проще, когда исключения представлены значениями, там чуть побольше контроля над тем, что они не выскочат где ни попадя.  Но и то, для такого мелкого проекта можно было бы и нормальные исключения использовать, тут пофиг.  В остальном же -- простота и тупизна это круто.
[15:57:08] <bobry> ммм.. у меня в пользу subcommands три аргумента а) отказ от тупых и уродливых блобов текста коде б) полезная библиотека которую можно потом поюзать в других проектах в) не значительное усложнение по сравнению с match with
[15:57:46] <bobry> но я согласен что это не приоритетная задача, по сравнению например с бандлами
[15:58:22] <gds> если хочешь, накодь subcommands, но так, чтобы обработка командной строки нисколько не потеряла в гибкости.  если сделаешь именно так -- будет хорошо.
[15:58:36] <bobry> скорее даже бандлы самые приоритетные, ибо из них следует bootstrapping
[16:05:28] Typhon вышел(а) из комнаты
[16:06:05] Typhon вошёл(а) в комнату
[16:09:33] <gds> bootstrapping нужен только в случае использования внешних либ самой барброй.
[16:11:08] <bobry> а мы уже их используем
[16:11:15] <bobry> хотелось бы извести ext/
[17:02:23] <gds> во блин, ещё "архитектурой" заниматься подкинули мне, кроме парвела.  А ещё проект биобин есть.  Где же время найти на всё.
[17:04:06] letrec вошёл(а) в комнату
[18:09:30] f[x] вошёл(а) в комнату
[18:14:58] Typhon вышел(а) из комнаты
[18:18:55] Typhon вошёл(а) в комнату
[18:49:26] letrec вышел(а) из комнаты
[19:07:44] letrec вошёл(а) в комнату
[19:08:15] <bobry> gds: шо за биобин?
[19:22:29] ermine протоптала ножками 16 км и поняла, как делать левую факторизацию в парсере
[19:24:09] <gds> bobry: это такой проектик, для которого я в 2004..5г чуть не разработал lwt :]  Вкратце -- тупая штука, которая позволит повтыкать в эволюцию простых двумерных существ с дискретным пространством и временем, но с более-менее нормальным днк (хотя и тоже тупым).  Мир простой для упрощения вычислений.  Хочется поглядеть на тупых одноклеточных, на то, какие у них будут поведение, будет ли (и какой, если да) переход к многоклеточным, возникнет ли половое размножение (кое-что захардкодить придётся, но по мелочи), будет ли специализация тканей, каким будет пищеварение, перемещение, поедание коллег.  Может потом закодить нервную систему простую.
[19:33:37] <bobry> gds: звучит очень-очень интересно, а есть где посмотреть?
[19:37:49] <bobry> gds: не очень понятно по каким критериям ты собираешься оценивать "развитие" этих одноклеточных
[19:38:19] <bobry> смоделировать процессы, происходящие даже в прокариотической клетке это офигеть какая задача, половым размножением напр. там даже не пахнет
[19:38:23] <bobry> или я что-то не так понял?
[19:42:21] <gds> посмотреть -- как бы мало есть.  1. были прикидки, тонны кода, но с более сложными концепциями, с произвольными гормонами, кусками днк и некоторыми функциями для их "сродства", с хранением генофонда в mysql (омг!111 но это было сделано 7 лет назад), теперь я это официально похоронил.  2. есть проект биобин2, где, по прикидкам, достаточно гормонов в виде числа с небольшим количеством битов (16 ок), хардкодед гормонов для действий клетки (перемещение, размножение, пищеварение, проницаемость стенок), гексагональная сетка, работа по градиентам, концентрации только в узлах плоскости, все действия осуществляются выделением гормонов в нужных направлениях (в том числе в клетку).
ты не так понял то, я моделировал.  на самом деле, я делал совершенно произвольный, но очень простой мир, в том числе, очень простой по вычислениям.  моделирование процессов не ставилось задачей.  я не настолько дурак, чтобы не прикинуть производительность :)  про реальные клетки -- знаю, там печаль для моделирования.
развитие одноклеточных оценивать буду 1. в гуе, 2. по размеру популяции, 3. по эволюционной ветке (сколько, от кого, как).
[19:44:24] <gds> * "ты не так понял то, что я именно моделировал"
[19:50:17] <bobry> что-то я еще больше запутался от твоего описания %)
[19:50:52] <bobry> можно где нибудь про это все почитать? или негде?
[19:51:39] <gds> то есть, цель -- посмотреть на эволюцию, имеющую "на руках" клетки, систему выделения веществ, систему реакции на вещества, программу в виде аналога днк (вкратце -- набор из условий "если концентрация гормона A выше, чем гормона B, то выделить гормон C в направлении D относительно градиента гормона E").  ну и заранее определённые действия на случаи разных концентраций -- перемещение, смерть, пищеварение, деление.
Но, если моделировать полностью, то уткнёмся в производительность.  А так -- вполне шустро будет.
Почитать есть где, но только спека.  Ссылку на гуглодок отправлю приватно, прошу не распространять, там известнокакой стыд.
[19:52:35] <bobry> хм, но как вы это мутируете?
[19:53:01] <bobry> в смысле есть какой то гормон А, который кодируется каким то геном в днке вашей клетки
[19:53:06] <bobry> что дальше?
[19:54:08] <gds> ща расскажу.
[19:57:36] <ermine> уу, какие камлевые задачки
[19:57:48] <bobry> да-да, very exciting
[19:58:38] <gds> мутация -- да, какую-то вероятность надо таки забить.  как при митозе, так и при мейозе.  для уменьшения вероятности что-то наломать при мутации, днк разбита на список "хромосом", которые будут скрещиваться попарно.
[19:59:16] ermine слышала, что мутация  -это ошибки в фолдинге белка
[19:59:26] <gds> про "гормон A кодируется геном в днк" -- пришлось это упростить.  в биобин1 это было, тут этого пока не будет.  но это можно будет расширить/налепить в будущем.
[19:59:34] <bobry> ermine: ошибка в фолдинге это следствие
[20:00:46] <ermine> следствие мутации?
[20:00:54] <ermine> как-то с трудом верится
[20:01:32] <ermine> мутация все ж происходит на n-м этапе фолдинга
[20:01:34] <gds> в общем, есть какой-то "начальный фон", в том числе, при делении, определяется (может концентрацией какого-то гормона -- всё ими определяется!), какая часть гормонов идёт в дочернюю клетку.  далее днк начинает работать, на основании концентраций выделяя новые гормоны в узлы пространства (в центр шестиугольной клетки, в её углы).  и вот такая вот "state machine" как-то работает.  убрано многое из реального мира, но оставлено, как предполагаю, важное.
[20:02:38] <bobry> ermine: мутация происходит в DNA, из которой получается дефектная mRNA, которая кодирует белок со структурой отличающейся от оригинала. изменение хим. структуры приводит к измененной конформации
[20:02:42] <gds> ermine: мутация -- нарушение днк.  рибосома, идущая по днк, собирает белок из аминокислот.  и вот, если в днк нарушение, белок свернётся не так (с какой-то вероятностью).
[20:03:11] <bobry> gds лушче написал ага :)
[20:03:13] <gds> тьфуты, в мелочи ошибся.
[20:04:00] <ermine> ну возможно
[20:04:02] <gds> но dataflow в обоих описаниях правильный.
[20:04:09] <ermine> никогда не читала про всю эту хрень
[20:04:16] <bobry> :)
[20:19:05] ermine разглядывает spirit из boost - ужос, как они это сделали на с++, peg, комбинаторы, тоже тот же чудный синтаксис типа p1 >> p2
[20:23:33] <ermine> Kakadu: как там твой парсинг? что читаешь?
[20:24:32] <Kakadu> ermine: херней страдаю
[20:25:18] <ermine> Kakadu: лучше бы херней в виде lablqt страдал
[20:25:39] <Kakadu> лучше бы вообще не страдал херней.
[20:26:27] <ermine> Kakadu: а кто тут не страдает херней?
[20:26:43] <Kakadu> все
[20:28:27] ermine в данный момент пьет бейлиз и пытается найти в гугле способы аттача семантики к грамматике, а то известро только два - аттрибутивная грамматика и.. как его, транздукционная грамматика
[20:28:49] <ermine> ножки чота болять
[20:29:02] <bobry> в общем кто хочет поговорить про бандлы?
[20:30:17] <ermine> незабор бандлов?
[20:30:34] <bobry> шо шо?
[20:30:54] <ermine> тыл такой термин во времена фидо
[20:31:16] <ermine> когда ты не выкачивал свою почту с ноды
[20:31:17] bobry еще по двору мяч гонял в эти времена ..
[20:34:16] <bobry> сделать бы нам в барбару бутстраппинг и переехать на батарейки
[20:34:18] <bobry> во будет красота
[20:34:25] <bobry> если оазису можно, то почему нам низя ..
[20:37:05] <ermine> батареизация общества
[20:42:33] <gds> да, было бы неплохо бандлы оформить.  но это думать надо ведь, однако!
[20:43:12] <bobry> бандл это один бинарник?
[20:43:16] <bobry> или просто какой то скрипт?
[20:43:24] <bobry> на камле -- шелле?
[20:44:38] <gds> бандл -- архив с простым способом скомпилять/установить его так, чтобы на выходе получалась полнофункциональная софтина, но 1. без требования внешних библиотек, 2. без засирания окружения (в общем смысле слова).
[20:45:51] <gds> нельзя сделать бандл бинарником, так как платформы бывают разными.  скриптом можно сделать, но это, простиг-сспади, какой-то "shar" получится.
[20:46:37] <bobry> hrm, архив?
[20:47:17] <bobry> я что-то совсем на нащупываю идеи, видимо надо поварить еще
[20:48:27] <gds> бандл -- ситуация для пользователей.  им даёшь .tar.gz / .zip, говоришь "распакуй и запусти такое-то, и радуйся результату".  то есть, ситуация, типичная для заказного софта, для раздачи мелких вещей пользователям, для разворачивания простого "окружения" (хотя спорно) и просто софтины в пределах $HOME.
[20:49:09] <bobry> фактически это то что делает oasis, какой то кусок кода, который все выкачает и соберет
[20:49:15] <gds> в барбре бандл не обязан быть архивом, содержимое бандла можно хранить в репке, но фокусы с компиляцией зависимостей (в том числе батареек, если уж на то пошло) надо выполнять ровно такие же, как если бы барбру распаковали из архива.
[20:49:49] <bobry> может нам тоже просто генерить по brb.conf "сборщик"?
[20:49:51] <gds> вроде раньше оазис такого не умел.  кроме того, в "локально для проекта" ставить либы не умеет.
[20:50:35] <bobry> не, я про сам принцип
[20:50:36] <gds> генерить сборщик -- можно, но только для простых случаев.  например, в предположении, что всё уже выкачано, патчи уже применены.
[20:51:13] <bobry> не-не, мы можем пройтись по brb.conf и вытащить из барбары куски которые нужны для его обработки, "установщик патчей", "выкачивалка из vcs", etc
[20:51:16] <bobry> или слишком?
[20:52:18] <gds> у пользователя бандла не обязано быть curl, wget, hg, git, patch.  кроме того, квотинг аргументов не очень радует, если целью будет сгенерить/запускать шелл-скрипт.
[20:52:44] <bobry> хочешь сказать что бандл должен содержать все исходники?
[20:52:53] <gds> да, в этом его суть.
[20:53:07] <bobry> хммм...
[20:53:29] <bobry> я представлял себе это немного по другому
[20:54:13] <gds> ну представь случай: попросили тебя за деньгу написать что-то на окамле, и оценивать будут по безгеморности инсталляции в том числе.  как лучше сделать?  1. предполагаем, исходный архив поставить можно.  2. предполагаем, камло и findlib поставить смогут, без этого сложно.  дальше что?
[20:54:26] <gds> тьфуты
[20:54:36] <gds> п.1. предполагаем, исходный архив _распаковать_ можно
[20:54:50] <bobry> т. е. "сделать бандл" это а) выкачать все исходники б) добавить "что-то", собирающее исходники и сам проект в) запаковать это чудо в архив?
[20:55:40] <gds> как я вижу -- да.  пункт в) надо сделать опциональным, чтобы для самой барбры это не требовалось, достаточно было бы поместить в репку исходники батареек и прочего, но в случаях "передать бандл" этот пункт был бы.
[20:56:14] <bobry> мм, для самой барбары я бы и пункт а) сделал динамическим :)
[20:56:31] <bobry> почему бандл это не "minimal brb" + brb.conf?
[20:56:45] <bobry> запускаешь "minimal brb" оно читает conf и делает "build-deps" "build"?
[20:57:10] <gds> для барбры -- может так и будет.  для других проектов -- не знаю, надо как-то учитывать шаг "сбилдить собственно проект".
[20:57:31] <bobry> brb make-bundle "<main target>"?
[20:57:40] <gds> может, хз.
[20:58:25] <gds> кроме "пользователям за деньгу" есть случай "распространить по хостам организации", где, в случае непонятной конфигурации хостов, проще требовать только ocaml+findlib (ну и сишные либы), а камлолибы уже распространять либо в бандлах, либо в ссылках из brb.conf.  но ссылки тоже не всегда хорошо, так как есть внутренние хосты, где интернетов нет.
[20:58:54] <bobry> делаешь все депсы локальными и все
[20:59:19] <gds> да, так и будет.  доводим в go () до локальных и по аргументу смотрим, что дальше -- собирать или оставлять как есть.
[20:59:31] <bobry> ну или такой вариант, мы вытягиваем все депсы в _bundle и переписываем brb.conf так, чтобы он учитывал их новое местоположение?
[20:59:45] <bobry> мы про одно и то же :)
[21:01:03] <gds> переписывание brb.conf -- вариант.  но тогда надо где-то создавать копию исходников, чтобы её потом запаковать.  но для самой барбры не ок, так как зависимости на девелоперских машинах нужно иметь свежие, а в бандле нужно иметь зафиксированные, выкачанные исходники.
[21:01:32] <bobry> грр
[21:03:27] <gds> или в репке хранить барбру в виде "выкачает всё из инета", но вдобавок класть barbra-bundled.tar.gz.
[21:03:45] <gds> класть не в репку, а в секцию тарболов.
[21:04:55] <bobry> ну, для самой барбары один тарбол наверное не нужен
[21:34:49] letrec вышел(а) из комнаты
[21:35:17] <gds> а вот и нужен.  у меня был случай, когда на хосте не стояло ничего наподобие батареек (и даже в системных пакетах, если и было, то старое), и у меня была бы дикая пичалька, если бы барбра не завелась, чтобы скомпилить мой проект, использующий brb.conf, приведённый в readme как пример.
[22:16:06] ermine вышел(а) из комнаты
[22:57:58] shaggie вошёл(а) в комнату
[23:19:53] <bobry> товарищи, а как выбирать между Hashtbl и Map? я правильно понимаю что у Map внутри дерево?
[23:20:02] <bobry> тобишь O(log h)?
[23:20:07] <bobry> для всех операций
[23:20:07] <Kakadu> дерево
[23:20:44] bobry крадет subcommands из oasis'a .. придется видимо на этот кусок кода LGPL прилепить
[23:24:33] <Typhon> переименуй переменные
[23:24:47] <Typhon> и лицензируй под isc
[23:25:53] <bobry> Typhon: да переменные и так все другие
[23:25:56] <bobry> идея та же
[23:28:01] <gds> "Присвоить и скрыть – это кража, подсмотреть и улучшить – это прогресс"
[23:29:00] <bobry> блин, оазис так "клево написан"
[23:29:08] <bobry> open MainGettext
open OASISTypes
open OASISUtils
open OASISPlugin
open OASISBuiltinPlugins
open BaseMessage
open SubCommand
open Format
open FormatExt
open Setup
open SetupDev
open SetupClean
open Quickstart
open Manual
open Check
open Query
open Version
open PluginDB
open PluginInstall
open PluginVCS
open PluginBundle
open Plugins
open Help
[23:29:14] shaggie вышел(а) из комнаты
[23:29:28] <bobry> и потом ниже "... in main ()"
[23:29:36] <bobry> вот и ищи откуда там эта функция
[23:36:56] <gds> да ну, гламурно же, как в х-е!  зачем эти модули нужны вообще.  одно сплошное пространство имён -- это круто1111
[23:47:19] <bobry> даааа
[23:52:17] ftrvxmtrx вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!