воскресенье, мая 18, 2008

Сходил на YAPC::Russia 2008

Сходил на May Perl, впечатления смешанные.

Для начала впечатления от докладов, которые я посетил.

1 день:
IO::Lambda - в принципе для меня это было что-то что я не трогал руками, но имею в планах попробовать - было интересно. Конечно то что модулю всего полгода несколько не радует, но с другой стороны свежие модули оперативней патчат по моим наблюдением, так что посмотрим.

Профилирование perl-кода - в принципе несмотря на то что большая часть информации для меня не была новой, но например kcachegrind надо будет попробовать (cправедливости ради отмечу что слышал и раньше про неё, но по-моему не использовал).

May POE - ну доклад в принципе грамотный, но мне не особо интересный, так как новой информации там для меня было (да и в целом доклад в основном обзорный был).

Потом я пошёл на мастеркласс POE - но там были проблемы с инетом, поэтому всё пошло как-то сумбурно. В целом наверное зря я на него пошёл - мастеркласс мне был не нужен, я собственно хотел задать один вопрос (задал только во второй день поймав Серёжкина с утра, но об этом ниже). Вобщем поскучал я тут, в отличие от тех кого поражала/развлекала скорость эффективного кнопкодавления в *nix консоли и emacs'е - я 90% времени живу в никсах, поэтому меня это не развлекло. Вобщем со стороны конечно виднее - но можно было и без инета придумать чего-нибудь (как вариант запустить apache/nginx и его дрючить POE или носить с собой usb-bluetooth и мобилу на случай отсутствия инета(хотя такой тонкий канал поможет не всегда)).

"Аргументы в пользу XSLT" - на мой взгляд инородный доклад. Лично мне абсолютно неинтересен был - аргументы и за и против XSLT давно известны всем интересующимся, а про какое-то приложение к perl'у не было вообще ничего сказано.

Построение совместимых Perl/mod_perl систем с веб-интерфейсом - чего-то я вообще не помню этого доклада. Либо его отменили, либо не зацепило совсем(судя по названию это очень может быть).


Perl и Web 2.0 - несмотря на то что ничего особо нового для меня не было сказано, было весело и запомнилось. Не зря докладчику дали приз. :)

2-й день:
Блицы вобщем понравились все. Единственное что про обфускатор Stunnix мне было неинтересно(всё очевидно и уж больно самопиарно, хотя может кому полезно будет), ну а "CGI.pm - зло?!" не очень вписывается в формат блиц-доклада на мой взгляд, т.к. вопросы из зала наверняка бы были. :) Ну и у Серёжкина блиц получился не до конца


Perl+виртуализация - меня не зацепило, но возможно я просто не проникся до конца.

UTF Perl Practice - в принципе полезный доклад для тех кто не хочет сам пройтись по граблям. Жаль что его не было лет 5 назад когда я на эти грабли наступал изо всех сил. :)


CMS для крупного портала на примере TRAVEL.RU - ну реально работающие решения всегда интересны. Докладчик грамотно отбивался от каверзных и не очень вопросов - видно что не в первый раз. :)

ООП. Parrot. - Ну тут для меня тема была относительно новая, да и у Серёжкина на этот раз были заранее приготовленные слайды так что доклад был интересен и безэксесен :).

YAPC::Russia::Golf - вобщем задачи были не из разряда моих любимых, да и в субботу у меня было много дел после которых в воскресенье болела голова, поэтому я забил на них. :) Но решение-победитель про делимость на 11 удивило, так как в перерыве начали прикидывать как можно сделать, но ничего похожего даже близко не придумывалось.

Теперь не про доклады, а про разное:

Во время обеда оказался за одним столом с другими перловиками и выяснил что POE полетел не так как надо не только у меня. Т.е. не у меня одного он тёк по копейке в минуту, и не меня одного его скорость не впечатлила. Вобщем после этого я передумал по этому поводу пытать Серёжкина - может действительно для его задач и скорость достаточная, и утечки не критичны (там вобщем действительно текло помаленьку, ну и как кто-то сказал ничто не мешает убить и перезапустить скажем раз в сутки).

Но на второй день случайно поймав Серёжкина, всё же спросил его про POE. Он сказал что у него оно работает и не течёт, но версия 1.0002. Я же пробовал давно и наверняка более младшую версию. Вобщем придётся видимо опять уколоться и пожрать кактус.


Про организацию:
Футболки выдали, кофебрейки были с едой и питьём - вроде всем хватило. Вобщем в этой части всё нормально.

Из минусов - накладки в докладах одного из организаторов (это я про Серёжкина), это как-то не очень радовало. Хотя я иногда малотерпим к чужой неорганизованности, поэтому может излишне предвзят. Ну и кроме того к чему-то придраться надо, а тут вроде как и по делу... :)

Добавление:
Забыл про два доклада вошедшие вне программы:
ПеАр LinuxFormat - на удивление прошёл на удивление легко.
ORM - местами было интересно, хотя я пока для своих задач не вижу смысла в нём особого.

Добавление 2:
Забыл написать что в целом неплохо, но могло быть лучше. :)

Update 3: решил дать ссылку на страницу где есть ссылки на презентации а не втыкать их сюда по одной :) : http://event.perlrussia.ru/yr2008/talks

В рассылке jerom выложил новое мегарешение гольфа про деление на 11 (автор некто mtve):
#!perl -lp
$_=s/..?\b/"@:[0..$&]"/e?redo:/^( {11})*$/?yes:'no'
Вобщем я поражён, пока больше и сказать нечего. :)

Update 4: видео с конференции здесь: http://event.perlrussia.ru/yr2008/media/video.html

среда, мая 07, 2008

vim как удобный diff (часть 2)

В предыдущем посте vim как удобный diff я уже описал как использовать vim в качестве diff. Но погуглив нашёл что оказывается есть дополнительная настройка которая делает использование vim для этой задачи ещё удобнее. Настройка называется diffopt и по умолчанию установлена в filler:
:set diffopt=filler
Это заставляет оба столбца скролится синхронно. Но кроме этого можно задать игнорирование начальных и конечных пробелов, и кол-во пробелов подряд:
:set diffopt+=iwhite
Ну и конечно можно задать игнорирование регистра при сравнении:
:set diffopt+=icase
Также можно задать кол-во строк между "схлопнутыми одинаковыми фрагментами" и отличающимися фрагментами (коряво описал - но прямее не получается чего-то), по умолчанию выставлено в 6:
:set diffopt+=context:2
Пример того что получается при выставленном icase и context:2 приведён ниже(я добавил в f1 и f2 дополнительных 8 строк чтобы fold'инг был виден):

вторник, мая 06, 2008

vim как удобный diff

Довольно обычная задача - сравнить два файла построчно. Можно конечно использовать diff (под виндой есть наверное что-то похожее, ну аналог точно есть - сам когда-то давно использовал), но вывод diff не очень красив, а для усталого ума ещё и не достаточно очевиден...

Пусть у нас есть два файла f1 и f2.
Файл f1 состоит из 5 следующих строк:
row1
row2
row3
row4
row5

Файл f2 получен из f1 закоментированием одной строки и добавлением двух новых:
row1
row2
#row3
newRow1
row4
newRow2
row5

Выполнение diff нам даёт следующий результат:
[***]# diff f1 f2
3c3,4
< row3
---
> #row3
> newRow1
4a6
> newRow2

В принципе понятно но не сказать что прямо сразу. Можно сделать чуть получше:
[***]# diff -u f1 f2
--- f1 2008-05-06 03:24:16.000000000 +0400
+++ f2 2008-05-06 03:24:41.000000000 +0400
@@ -1,5 +1,7 @@
row1
row2
-row3
+#row3
+newRow1
row4
+newRow2
row5
Но на больших файлах не очень это удобно смотреть будет, ну и если я сравниваю с целью поправить что-то то хотелось бы прямо на месте это сделать. И это можно сделать командой `vim -d f1 f2` что синонимично `vimdiff f1 f2`. После запуска этой команды получим следующую картину:


На мой взгляд весьма наглядно и удобно. Ну по крайней мере для тех кто умеет пользоваться vim. Тем кто не умеет - советую научится, так как vim обычно есть везде на *nix, там где нету - можно быстро поставить (даже под винды).

P.S. Если вдруг когда-нибудь сюда набегут emacs'овцы - на emacs'е я сидел, правда довольно давно. Со временем стал считать что он избыточен для одних задач и недостаточен/неудобен для других (это вовсе не значит что vim для этих задач достаточен), так же избегаю лишних наворотов в vim'е. Но своё мнение другим не навязываю. :)