среда, 22 декабря 2010 г.
Ура, товарищи. Вышел Mojolicious 1.0
Хотя в твиттере Себастьяна видим:
"#mojolicious 1.0 is scheduled for december 26! #perl"
среда, 1 декабря 2010 г.
Чем плох eval?!
Нас интересует блочный eval.
Часто встречается такой вот код:
eval { # some code die "error"; # some code }; if ($@) { print "Error [$@] occured!"; }
Это вполне стандартный код, но есть ряд недостатков связанных и с использованием глобальной переменной $@.
sub do_die { die "Error"; } eval { local $@; do_die(); }; if ($@) { print "Error [$@] Occured!"; }
package Object; sub new { my $class = shift; my $self = {}; bless $self, $class; } sub DESTROY { eval { # some clean code } } package main; eval { my $obj = Object->new(); die "Error"; }; if ($@) { print "Error [$@] Occured!"; }Деструктор с eval-ом может быть в ком-то модуле с CPANа и Вы просто не будете знать про это.
Вот пример кода с Try::Tiny. Красиво и надежно :).
# handle errors with a catch handler try { die "foo"; } catch { warn "caught error: $_"; # not $@ }; # just silence errors try { die "foo"; };
среда, 24 ноября 2010 г.
Пример приложения на Mojolicious ( не Lite )
четверг, 21 октября 2010 г.
Тестирование в Perl: Завершение теста при первой ошибке
Вкратце объясню зачем оно нужно.
В обычном режиме прогоняется все тесты, а затем выводится отчет. И потом приходится искать в логах нужное место для выяснения причин ошибок.
Если вы добавите в начало теста вызов Test::Most::bail_on_fail, то при первой же неудаче тест остановится. Теперь нас интересуют лишь последние сообщения в лог файле ;)
пятница, 24 сентября 2010 г.
Современный Perl и современный Perl-программист.
За последние 10 лет произошло колоссальное развитие Perl . Это развитие похоже на то, как развивается Java. Сам язык программирование Java - практически не меняется, но развивается инфраструктура. Сегодня знание Java - это знание фреймворков, а не знание синтаксиса языка.
Аналогичная ситуация происходит с Perl. Я не спорю, что 5.6 и 5.12 существенно отличаются, но эти отличия скорее эволюционные, которые не меняют подхода к написанию программ. Инфраструктурное развитие языка - это и есть основная составляющая того колоссального развития Perl. Инфраструктура - это фреймворки, а фреймворки - это каркас архитектуры приложения, который задает подход. Таким образом развитие фреймворков меняет подходы к написанию приложений.
Знание CPAN - это сегодняшнее требование к профессиональному Perl-программисту. Знание CPAN - это не умения устанавливать модули, это умение применить подходящий инструмент для решения задачи.
Вот небольшой список инструментов современного Perl-программиста:
- Moose || Mouse
- Catalyst || Mojolicious || Dancer || Jifty || CGI::Application
- DBIx::Class || Rose::DB::Object || ORLite
- AnyEvent || POE || IO::Lambda
- HTML::Template || Template::Toolkit || HTML::CTPP2
- DateTime && Devel::NYTProf && TryCatch
Желательно, как минимум, знать про существование таких вещей. А про возможности модулей, которые идут в поставке с Perl вы просто обязаны знать!
Вы должны знать про новые стандартные модули/прагмы (очень приятные и душевные модули ;)) :
- Params::Check
- Term::UI
- Object::Accessor
- Time::Piece
- Time::Seconds
- File::Fetch
- parent
- autodie
Если в это списке есть незнакомые названия, то Вы просто обязаны ввести perldoc Имя::Модуля.
PS: Хотите быть конкурентным на рынке программирования, тогда не отставайте от современного Perl ;).
четверг, 16 сентября 2010 г.
История одного коммита
Код изогнулся, как большой кусок оргстекла, поблескивая константами и переменными... он выдержал, он всегда выдерживал. Хотя такое случалось все чаще и чаще, но никто не обращал на это должного внимания, многим даже нравилось данное зрелище : "Так чудесно переливается в свете мониторов", - думали они. Все было точь-в-точь, как всегда и в этот раз, но что-то пошло не так... Монолитная твердая гладь заволновалась и по ней вдруг побежали волны. Казалось, еще чуть-чуть и все пойдет трещинами, расколется, разлетится на мелкие крупицы, закричат вдруг процедуры и функции и будут хвататься за острый край мироздания, моля о помощи своих друзей, напарников, но те, непонимая чего от них хотят, просто будут пялится и "укать" как слабоумные. Это был очередной Васин комит....
Через момент уже все вернулось на круги своя, только местами код, который должен быть прозрачным, как родниковая вода, помутнел, и если вглядеться, то можно было разобрать нечеткие очертания какого-то существа с большим количеством ног... или не ног. Но, как обычно, никто не обратил на это внимания ... Затем уже все привыкли и к мутностям кода. "Главное, что работает", - звучала всеми любимая фраза то здесь, то там...
среда, 8 сентября 2010 г.
GPL говорит, что я обязан открывать исходники моего сайта?
Вроде как все логично и понятно. Например, если мы скачали исходник Apache и модифицировали его код, то мы можем без проблем продавать модифицированную версию с тем условием, что мы должны предоставить исходники нашей версии сохранив на код лицензию GPL.
Теперь относительно веб-приложений. Допустим мы создали написали фейсбук и использовали для этого модуль CGI.pm. Спрашивается должны ли мыть предоставить исходники пользователям нашим сервиса.
Вроде бы как и не должны поскольку мы не распространяем приложение, но ...
