IRC логи на русском языке

Логи канала #ru.pm (PerlOrg) за 2012-01-26

00.05 sugar: ribasushi: привет, искал меня? =)
00.06 ribasushi: …?
00.06 purl: Unimplemented.
00.06 ribasushi: вроде нет…
00.07 sugar: ок, просто давеча по логам пробегался, кто-то писал
00.07 sugar: seen sugar
00.07 purl: sugar was last seen on #ru.pm 0 seconds ago, saying: seen sugar
00.07 ribasushi: ааааааааа
00.07 ribasushi: вспомнил :)
00.08 ribasushi: помниш писал про «чай долго (не) остывает» ? :)
00.08 sugar: а да, помню =)
00.08 ribasushi: «Putin doesn’t give up unlike Obama» vs «Putin doesn’t give up like Obama»
00.08 ribasushi: ;P
00.09 sugar: а как точно переводится? (по смыслу)
00.09 ribasushi: не сдается как
00.10 sugar: прикольно
00.10 sugar: стоишь ты на остановке и думаешь: «автобус долго (не) едет»
01.27 und3f: yko, я хочу тебя поздравить :)
01.28 und3f: Мы достигли уровня Moscow.pm, теперь у нас тоже появляется перепалка в рассылке :)
01.28 und3f: yko++
01.28 und3f: mvuets++
01.29 *** mvuets just unlocked the ‘offtopic flame’ badge
01.34 *** und3f достал попкорн
01.35 und3f: ну и кто-же первым напишет «Там был не Perl, а PERL», чтобы php клуб понял насколько Perl программисты горды своим именем)
01.37 mvuets: und3f++ # lol
01.39 vti: думаю снобизм надо истре(мат)ть
01.39 vti: ударение на последнем слоге
01.40 mvuets: Думаю надо истребить падежи, что бы пресечь подобные проблемы на корню.
01.41 vti: логика ошибочная :)
01.41 mvuets: В контр-пример твоей (-;
01.42 vti: да, и где? люди приглашают на мероприятие, а ты в позу становишься
01.42 vti: впрочем не ты один гг
01.42 vti: вот если бы пошел докладчиком, и вот тогда можно было претензии выдвигать
01.43 vti: а так пердеть в лужу
01.46 mvuets: Ты неверное понял происходящее.
01.46 und3f: mvuets, как мастер Йода говоришь ты)
01.46 vti: как написано, так и понял
01.47 mvuets: und3f, программист на форте старый есть он просто.
01.47 mvuets: vti, ты никогда меня не любил, чего удивляться (-:
01.47 und3f: mvuets, эту фразу надо запомнить)
01.48 vti: эээ, как это связано?
01.48 und3f: про форт фразу, запомнить надо)
01.48 mvuets: und3f, это с бора.
01.48 und3f: vti, Страх доступ открывает к Темной стороне. Страх рождает гнев, гнев рождает ненависть, ненависть — залог страданий.
01.48 mvuets: und3f, http://bash.org.ru/quote/5592
01.48 und3f: вот как это связано
01.49 und3f: mvuets++ # Yoda
01.50 mvuets: vti, не бери в голову. Ты хороший.
02.20 und3f: </sarcasm>
02.20 und3f: вот, забыл закрыть ))
10.44 *** alpha6 написал в рассылке про моджо что это не проблема моджо, яувствует что темная сторона все ближе
10.44 alpha6: *чувствует
11.02 yko: yko– # второй раз ловлю себя на том, что ответ нужно было слать в приват
11.03 yko: а все mvuets виноват
11.06 yko: vti++ # снобизм надо истре(мат)ть
11.07 ribasushi: а где все можно с попкорном почитать?
11.18 sromanov: ribasushi: http://mail.pm.org/pipermail/kiev-pm/2012-January/000962.html
11.21 Lechartonn: Добрый день
11.31 yko: Lechartonn, привет
11.37 bzero: Ха, да вы там совсем. :)
11.37 bzero: Утра доброго.
11.45 alpha6: превед
11.49 yko: koorchik++ # Relaxer refactoring
12.02 ribasushi: hahahahahahaha
12.02 purl: LOLCON 7 reached.
12.03 ribasushi: жжете господа!
13.46 yko: Lechartonn++ # клевый фон в твитере
14.06 vti: yko: а ты встречу объявил?
14.07 Lechartonn: yko: спасибо :)
14.11 Lechartonn: у меня вопрос: use strict не работает со строчками my $dbh=DBI->connect(«DBI:mysql:host=$host_db;database=$name_db»,»$login_db»,»$pass_db», {PrintWarn=>$PrintWarn, PrintError=>$PrintError, RaiseError=>$RaiseError}) || die &Error_DB;
14.11 Lechartonn: переменные в другом файле объявлены, почему так?
14.11 yko: vti: http://mail.pm.org/pipermail/kiev-pm/2012-January/000938.html http://www.facebook.com/groups/kiev-pm/
14.11 yko: и сейчас еще раз напомню в рассылку
14.12 vti: ага
14.12 bor: Lechartonn: что значит «в другом файле» ?
14.12 alpha6: Lechartonn, дык ты сама и ответила – потому что в другом файле.
14.13 alpha6: тебе их надо экспортировать оттуда
14.13 yko: а, да еще на http://linkd.in/xIRamO
14.13 Lechartonn: т.е. в другом скрипте, а файл подгружается в начале скрипта require ‘db_con.cgi’;
14.14 alpha6: оформи это в виде пакета и получай от него готовый хэндлер базы
14.14 bor: да и имеет значение как обьявлены (my/our)
14.15 Lechartonn: our
14.15 bor: импортируй
14.16 Lechartonn: пробовала не подгружать переменные, а явно задать все, все равно не работает с use strict
14.16 bor: но лучше пиши все таки конфиги в тексте
14.16 bor: ini/yaml/etc
14.16 sromanov: Lechartonn: ошибка-то какая?
14.18 yko: sromanov, скорее всего Variable «$host_db» is not imported Global symbol «$host_db» requires explicit package name
14.19 sromanov: yko: =)
14.19 Lechartonn: Premature end of script headers
14.19 purl: Premature end of script headers is when you fail to correctly assign ‘Content-type’ information or in the FAQ (http://www.apache.org/docs/misc/FAQ.html#premature-script-headers) go read, understand and code or the vaguest error message in the books
14.20 alpha6: Lechartonn, это апач такое выдает? А сам перл чего?
14.20 yko: Lechartonn, т.е. ты в логах апача даже не видишь ошибок которые пишут твои скрипты?
14.20 alpha6: perl -cw имя скрипта
14.22 yko: Lechartonn, у тебя этот require ‘db_con.cgi’ подгружается в скольких файлах?
14.22 Lechartonn: я с работы могу только лиги апача посмотреть ><
14.22 Lechartonn: да во всех почти
14.23 yko: и в каждом файле ты соединяешься с базой таким вот образом, правильно?
14.23 vti: машина времени существует
14.23 vti: однозначно
14.23 yko: vti, ну legacy code же
14.23 alpha6: vti, мы в плошлом, да? :)
14.23 alpha6: *прошлом
14.24 vti: alpha6: как минимум это окно
14.24 Lechartonn: да, везде одинаково подгружается
14.24 yko: Lechartonn, смотри, если у тебя .cgi файлов которые это используют не сто и все переменные которые нужны для организации соединения с бд лежат в db_con.cgi
14.24 yko: то я тебе предлагаю сделать следующее…
14.28 yko: https://gist.github.com/82d32db511d66cde7e15
14.29 yko: Lechartonn, оформи db_con.cgi вот так ^^^
14.29 yko: переименуй его в DBConn.pm
14.29 yko: и в cgi соединяйся с базой следующим образом: use DBConn; my $dbh = DBConn->connect;
14.30 Lechartonn: спасибо большое
14.31 yko: хотя. db_con.cgi наверное не стоит переименовывать
14.31 yko: имя лучше так и оставь, иначе твой «конфиг» будет доступен для чтения снаружи :\
14.32 yko: очень маленький шаг к модульности, избавишься от длинной строчки соединения с бд во всех cgi скриптах и весь конфиг соединения будет в одном месте
14.34 Lechartonn: поняла, спасибо
14.58 vti: вопрос по архитектуре: есть шаблонизатор, у него два метода: render и render_file, render_file читает файл и использует render, как мне изменить такое поведение, чтобы можно было динамически (либо наследованием, либо декорированием) в render_file добавить кеширование, потому что т
15.01 yko: vti: такое впечатление, что сообщение оборвано
15.01 yko: кеширование, потому что т….
15.02 vti: олько там есть уникальный ключ – имя файла. добавить кеширование прямо в модуль не предлагать ЖВ
15.04 yko: sub { return from_cache($file) if cached($file); $rendered = $self->SUPER::render_file(@_); cache($file => $rendered); return $rendered }
15.04 und3f: vti, а что ты кэшировать будешь? результат в зависимости от совпадения имени файла и всех параметров?
15.04 yko: чем такой вариант плох?
15.04 yko: как реализация кэширования
15.05 und3f: обычно ведь в шаблонизаторах кэшируют не результат работы (т.к. он зависит от переменных которые редко будут совпадать), а скомпилированную версию шаблона
15.06 vti: да, забыл сказать, что кешировать надо не результат, а парсинг
15.06 yko: угу, тогда да
15.06 und3f: vti, а по твоему описанию выходит что у модуля нет метода который возвращает отпарсенный шалон
15.06 vti: можно подменять сам объект парсера, но он не знает читает ли он из файла или строки
15.06 yko: ну тогда тебе в любом случае нужен еще один промежуточный метод (возможно protected)
15.07 vti: und3f: можно подменить объект парсера
15.08 und3f: вообще я-бы в класс шаблонизатора добавил-бы метод render_parsed, который-бы состоял из части кода render() метода
15.08 und3f: render_parsed(parsed_template, @args)
15.10 und3f: тогда можно легко сделать wrapper который будет обеспечивать кэширование
15.10 yko: vti: у тебя вероятно должны быть три метода: parse, render, render_file
15.11 und3f: yko, у него парсер отдельным классом, он же сказал
15.11 yko: черт. сори
15.11 vti: т.е. предлагаете выделить логику в template методы и исопльзовать их отдельно в render и render_file?
15.12 vti: но тогда возникает дублирование
15.12 yko: у тебя по идее sub render_file { slurp_file(); parse(); return render() }
15.13 vti: а в render тогда что?
15.13 und3f: vti, самом wrapper’e будет дублирование, да
15.13 und3f: небольшое
15.14 yko: ты либо дублируешь, либо добавляешь хуки (лол), либо добавляешь грязный хак с local $CACHE_THIS_TO = …; SUPER::render_file
15.14 vti: oO
15.14 yko: render рендерит предварительно разобраный (и, возможно) кэшированный шаблон
15.14 yko: ты ведь именно этого хочешь?
15.14 und3f: vti, а в render должно быть PARSER->parse($content), $self->render_parsed($parser, @args)
15.15 vti: und3f: а render_file тоже?
15.16 yko: черт.
15.16 yko: ну вообщем-то да…
15.17 vti: на данный момент https://gist.github.com/cad9a36755f0dcbf59bc
15.17 und3f: vti, render_file в оригинальном пакете скачивает содержимое и передает управление в render. wrapper будет выглядеть как my $content = slurp_file; my $parser = $cached->{$filename}; $parser = PARSER->parse($content) unless $parser; $self->render_parsed($parser @args)
15.17 yko: какая-то фиговая абстракция получается
15.18 yko: vti: так а кешируешь ты тогда что? в render() должен быть какой-то промежуточный результат, когда шаблон уже разобран, но значения еще не подставлены
15.18 und3f: а, ну еще добавить отпарсенный метод в кэш, да
15.19 vti: yko: результат выполнения parse
15.20 vti: und3f: одно плохо, что метод будет публичным
15.21 yko: vti: ну в той реализации которую ты показал результат render() == результат parse()
15.21 und3f: vti, render_parsed? Можно сделать защищенным и делать через наследование, а не wrapper. wrapper тут в принципе и не нужен
15.21 vti: yko: https://gist.github.com/cad9a36755f0dcbf59bc
15.21 yko: угу. вот это уже оно
15.23 vti: в идеале хотелось бы как-то заменить объект парсера на парсер с кешированием, но туда никак не передать уникальный ключ
15.23 und3f: vti, а почему в parsere не сделать parse_file?
15.25 vti: und3f: тогда будет дублирование во внешнем render и render_file, они будут одинаковые кроме вызовы правильного метода у парсера
15.25 yko: но во всем остальном будет прозрачнее, разве нет?
15.26 und3f: vti, у них будет дублирование в одну строку
15.26 vti: und3f: кроме вызова парсера там еще может быть много разных вызовов и до, и после
15.26 vti: плодить template методы тоже не хочется
15.26 vti: типа _preprocess, _postprocess
15.27 und3f: vti, ну а вообще я думаю что Parser все-таки не должен уметь кэшировать себя. Этим должны заниматься те, кто используют его
15.27 vti: сам парсер нет, но его декоратор может
15.28 und3f: ща, я накатаю код на github
15.28 yko: vti: https://gist.github.com/75fa9cd7e3fca5f36a34
15.29 yko: то о чем я говорил
15.30 yko: «грязный наследник»
15.31 und3f: vti, https://gist.github.com/ab952145f9a509990d90
15.34 vti: und3f: https://gist.github.com/48cb41802dd5dcc6aa10
15.34 vti: посмотри на дублирование render
15.35 und3f: vti, это методы должны быть в render_parsed
15.37 vti: und3f: в данном случае да, неудачный пример, но в общем случае там может быть и препроцессор и постпроцессор
15.39 und3f: vti, смотри, если есть что-то что может влияеть на парсинг, то надо вызов парсера вынести в отдельный метод sub _parse {prerocess_args; my $parser = Parser->new(…); postprocess_parser($parser)
15.42 sromanov: установка модулей со CPAN расценивается, как превращение администратора в разработчика. :D
15.42 sromanov: crux++
15.44 vti: und3f: проблема в том, что теперь render_file полностью реализовывает логику render + там еще надо будет slurp вызывать и если в базовом классе логике изменится, то и этот нужно будет менять
15.46 und3f: vti, как минимум тут не так уж и много строк чтобы менять. А логику реализовывает, это да
15.47 und3f: но он реализовывает логику метода их 2х строк….
15.48 yko: vti, мы ведь тут сейчас о dancer-template-caml говорим?
15.48 vti: yko: не
15.49 vti: там у них вроде только файлы можно рендерить
15.51 yko: я тогда задумываюсь, такие ли большие минусы в сохранении состояния между render_file и _parse для кэширования
15.57 yko: vti, поделись к чему ты придешь с этим всем
15.57 yko: интересно
15.58 yko: хаха, к заметке хроматика на hackerne.ws больше коментариев, чем к оригинальному блогпосту
15.59 alpha6: какой однако интересный эффект если в ссылке на элемент хэша пропустить >
17.54 Lechartonn: всем хорошего вечера)

← перейти на главную страницу

Для связи с администратором сайта пишите на admin (at) irclog.ru
© 2010 irclog.ru, этот контент принадлежит всем!
тИЦ и PR сайта