13. me: как ты переведешь CPAN на
русский?)
Павел: буквально?
централизованное хранилище
перл-модулей или глобальное
хранилище перл-модулей
всё нах**
я спать
17 мая 2009 г.
14. CPAN – архив Perl
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
15. CPAN – большой архив
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
16. CPAN – очень большой
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
24. CPAN:
•модули
• авторы
• документация
• исходный код, порты и скрипты
17 мая 2009 г.
25. CPAN:
•модули
• авторы
• документация
• исходный код, порты и скрипты
17 мая 2009 г.
26. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
27. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
28. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
29. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
30. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
32. Net::LastFM
Net::LastFM::Submission
17 мая 2009 г.
33. Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
34. Почему важно для
меня?
• В 2006 разработал HTTP::Request::Interface
• Абстрактный класс для разбора запроca и
обертки для CGI, ModPerl, FCGI, POE и др.
• Я не опубликовал на CPAN и забросил его
• Теперь использую HTTP::Body и
Mojo::Parameters
17 мая 2009 г.
35. Почему важно для
меня?
• В 2008 я все-таки получил PAUSE ID
• В 2009 я стал CPAN-автором
• Загрузил несколько модулей
• Постоянно обновляю их
• Не пользуюсь: use lib ‘/path/to/my/lib’;
• perl -MCPAN -eshell
17 мая 2009 г.
39. Почему я сразу не
смог стать автором
CPAN?
17 мая 2009 г.
40. Какой модуль
загрузить первым? :)
17 мая 2009 г.
41. Net::LastFM::Submission
• Last.fm Submission API
• На CPAN были похожие реализации
• не устраивали меня
• реализовывали старый протокол
• код – не очень :)
• автор модуля не ответил мне
17 мая 2009 г.
43. Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, мой модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
44. Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, мой модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
45. Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
46. Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
47. Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну, *.tar.gz я сделаю сам :)
17 мая 2009 г.
52. Зэ Perl Авторы
Загрузка Сервер
Тут все понятно :)
17 мая 2009 г.
53. PAUSE
Сервер для загрузки модулей на CPAN
17 мая 2009 г.
54. Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
55. Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
56. Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Primary email и @cpan.org
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
58. Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
63. Поиск русских
CPAN-авторов
• Нашел всех, у кого имя написано
кириллицей: qr/[а-я]+/
• Составил список русских имен и фамилий
• Распарсил список «Who is Who»
• Исключил украинцев, белорусов и болгар
• И разослал «спам» на открытые email :)
17 мая 2009 г.
67. Acme::CPANAuthors::
Russian/Ukrainian/Norwegian
http://github.com/sharifulin/acme-cpanauthors-russian
http://github.com/sharifulin/acme-cpanauthors-ukrainian
http://github.com/sharifulin/acme-cpanauthors-norwegian
17 мая 2009 г.
84. Test::More
Test::Exception
очень просто и этого достаточно
17 мая 2009 г.
85. find ./examples -type f
examples/enc.pl
examples/poe.pl
examples/poe_client.pl
examples/test.pl
17 мая 2009 г.
86. script/ bin/ ...
POD-документация из скриптов
отображается на CPAN
17 мая 2009 г.
87. Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
88. Changes
Revision history for Net-LastFM-Submission
0.64 2009-05-02 19:50
Edit POD and add POD to examples/*
0.63 2009-05-02 16:30
Support an existing PoCo::Client::HTTP into
PoCo::Net::LastFM::Submission (version 0.23). RT
#45436 (thanks Martijn van Beers)
Add examples/poe_client.pl
Test suite (t/01-new.t and t/02-api.t)
Fix small bugs in Net::LastFM::Submission and edit
POD
17 мая 2009 г.
89. Module::Changes::
ADAMK
для разбора Changes Adam Kennedy
17 мая 2009 г.
90. Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
91. MANIFEST
Build.PL
Changes
MANIFEST
README
lib/Net/LastFM/Submission.pm
lib/POE/Component/Net/LastFM/Submission.pm
.lastfmrc
t/00-load.t
t/01-new.t
t/02-api.t
t/pod-coverage.t
t/pod.t
examples/test.pl
17 мая 2009 г.
92. Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
93. README
NAME
Net::LastFM::Submission - Perl interface to the Last.fm
Submissions Protocol
SYNOPSIS
use Net::LastFM::Submission;
my $submit = Net::LastFM::Submission->new(
'user' => 'net_lastfm',
'password' => '12',
);
...
17 мая 2009 г.
94. Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
95. ExtUtils::MakeMaker
Module::Build
Module::Install
Dist::Zilla
17 мая 2009 г.
96. Module::Build
use Module::Build;
my $builder = Module::Build->new(
module_name => 'Net::LastFM::Submission',
dist_abstract => 'Perl interface to the Last.fm ...',
license => 'perl',
dist_author => 'Anatoly Sharifulin <email>',
dist_version_from => 'lib/Net/LastFM/Submission.pm',
build_requires => {
'Test::More' => 0,
'Test::Exception' => 0,
...
},
17 мая 2009 г.
98. Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
99. Module::Starter
Для создания дистрибутива с нуля
module-starter --module FirstModule --email <email>
--author Anatoly Sharifulin --builder Module::Builder
17 мая 2009 г.
100. Cборка
дистрибутива
perl Build.PL
./Build
./Build dist
./Build disttest
./Build fakeinstall
./Build realclean
17 мая 2009 г.