пятница, 23 июля 2010 г.

Changelists в Subversion

Начиная с версии 1.5 в Subversion появилась поддержка функции Changelists. Данная функция позволяет группировать файлы в рабочей копии путём присвоения им произвольных текстовых ярлычков. Полученные таким образом "групповые имена" можно передавать командам commit, diff, update и другим вместо непосредственного списка файлов.

Changelists особенно удобны если требуется, к примеру, за-commit-ить два набора файлов, но непременно по-отдельности. Предположим, новые функции в одном, а исправления ошибок в другом. Разумеется, можно держать и в голове, какие файлы каким commit-ом должны пойти, но лучше приберечь энергию для более важных дел и поручить скучную рутину Changelists:
svn changelist new-features foo.pl bar/baz.pl
Path 'foo.pl' is now a member of changelist 'new-features'.
Path 'bar/baz.pl' is now a member of changelist 'new-features'.

svn changelist bug-fixes quux.pl
Path 'quux.pl' is now a member of changelist 'bug-fixes'.

svn status
--- Changelist 'new-features':
M bar/baz.pl
M foo.pl

--- Changelist 'bug-fixes':
M quux.pl

svn commit -m "New cool functions" --changelist new-features
Sending bar/baz.pl
Sending foo.pl
Transmitting file data ..
Committed revision 3.

svn commit -m "Bug fixes" --changelist bug-fixes
Sending quux.pl
Transmitting file data .
Committed revision 4.
При этом надо помнить, что Changelists в Subversion имеют несколько особенностей:
  • нельзя навесить два ярлыка на один и тот же файл
  • нельзя навесить ярлык на директорию
  • Changelists - это свойство локальной копии, а не репозитория
Подробности можно получить на соответствующей странице руководства Subversion: http://svnbook.red-bean.com/en/1.5/svn.advanced.changelists.html

вторник, 20 июля 2010 г.

perlcritic-checker v1.2.1 released

What's new
  • Make tests more friendly for CPAN Testers
  • Corrections in POD
How to get

среда, 14 июля 2010 г.

Higher-Order Perl: Transforming Programs with Programs

Higher-Order Perl: Transforming Programs with Programs // 2005
Mark Jason Dominus

Пожалуй каждому программисту знаком принцип DRY - Don't Repeat Yourself. Систематическое нарушение этого правила ведёт к тому, что с ростом проекта поддерживать и развивать его становится всё сложнее и сложнее. Очевидное решение - выискивать повторяющиеся или похожие фрагменты кода и устранять их вводя дополнительные уровни абстракции.

Казалось бы всё просто, однако проблема состоит в том, что даже формально неповторяющийся код вполне может быть избыточным и от этого "топорным". Освоение же этой книги, пусть даже и частичное, позволит чётко определять высокоуровневые повторения в логике программы. Параллельно с тренировкой данного навыка автор демонстрирует невероятной красоты приёмы для устранения высокоуровневой избыточности. Поражает так же и то, насколько органично и изящно эти приёмы переплетаются с особенностями языка Perl.

Как и большинство хороших книг по программированию (а может быть и не только по программированию) эта книга "многослойная". Довольно трудно осмыслить и опробовать весь материал всего за одно прочтение. Однако освоение даже самого верхнего "слоя" позволит думать на Perl уровнем выше.

Оценка по шкале ИМХО: 5