CPAN: модули, авторы и документация - Presentation Transcript
CPAN:
модули, авторы и
документация
YAPC::Russia 2009
17 мая 2009 г.
Что такое CPAN?
17 мая 2009 г.
Comprehensive Perl
17 мая 2009 г.
Archive Network
17 мая 2009 г.
Comprehensive Perl
Archive Network
По-русски?
17 мая 2009 г.
«Всеобъемлющая сеть
архивов Perl»
Википедия
http://ru.wikipedia.org/wiki/CPAN
17 мая 2009 г.
«Сеть Всемирного
Архива Perl-кода»
Куроводство / Наблы
http://dklab.ru/chicken/nablas/36.html
17 мая 2009 г.
«Всесторонняя Сеть
Архива Perl»
PROMT Translator
http://www.translate.ru
17 мая 2009 г.
Comprehensive Perl
Archive Network
Google Translate
http://google.com/translate
17 мая 2009 г.
«Обширный Perl
архив»
Xpoint.ru
http://xpoint.ru/know-how/Perl/CPAN
17 мая 2009 г.
«Гигантское Хранилище
Ресурсов Perl»
perl в России
http://www.perl.org.ru/cpan/
17 мая 2009 г.
« Perl »
По-китайски
17 мая 2009 г.
me: как ты переведешь CPAN на
русский?)
Павел: буквально?
централизованное хранилище
перл-модулей или глобальное
хранилище перл-модулей
всё нах**
я спать
17 мая 2009 г.
CPAN – архив Perl
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
CPAN – большой архив
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
CPAN – очень большой
Центральное хранилище всего, что касается Perl
17 мая 2009 г.
15750
модулей
17 мая 2009 г.
7369
авторов
17 мая 2009 г.
5533
МБ
17 мая 2009 г.
206
зеркал
17 мая 2009 г.
429,6
в неделю
17 мая 2009 г.
59,4
в день
17 мая 2009 г.
Количество дистрибутивов в год
17 мая 2009 г.
CPAN:
•модули
• авторы
• документация
• исходный код, порты и скрипты
17 мая 2009 г.
CPAN:
•модули
• авторы
• документация
• исходный код, порты и скрипты
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Last.fm API. Где Perl?
17 мая 2009 г.
Net::LastFM
Net::LastFM::Submission
17 мая 2009 г.
Модули
• каждый пользуется модулями
• писать модули нужно
• зачем публиковать модули?
• поделиться
• сделать мир лучше :)
• получить удовольствие
17 мая 2009 г.
Почему важно для
меня?
• В 2006 разработал HTTP::Request::Interface
• Абстрактный класс для разбора запроca и
обертки для CGI, ModPerl, FCGI, POE и др.
• Я не опубликовал на CPAN и забросил его
• Теперь использую HTTP::Body и
Mojo::Parameters
17 мая 2009 г.
Почему важно для
меня?
• В 2008 я все-таки получил PAUSE ID
• В 2009 я стал CPAN-автором
• Загрузил несколько модулей
• Постоянно обновляю их
• Не пользуюсь: use lib ‘/path/to/my/lib’;
• perl -MCPAN -eshell
17 мая 2009 г.
http://search.cpan.org/~sharifuln/
17 мая 2009 г.
Что мешает
опубликовать модуль
на CPAN?
17 мая 2009 г.
или
17 мая 2009 г.
Почему я сразу не
смог стать автором
CPAN?
17 мая 2009 г.
Какой модуль
загрузить первым? :)
17 мая 2009 г.
Net::LastFM::Submission
• Last.fm Submission API
• На CPAN были похожие реализации
• не устраивали меня
• реализовывали старый протокол
• код – не очень :)
• автор модуля не ответил мне
17 мая 2009 г.
Есть модуль, рабочий,
но...
17 мая 2009 г.
Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, мой модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, мой модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну .tar.gz я сделаю сам :)
17 мая 2009 г.
Есть модуль, рабочий,
но...
• Как зарегистрироваться на CPAN?
• Я слышал про PAUSE, что это такое?
• Блин, модуль нужно документировать...
• Блин, еще и тесты писать...
• Ну, *.tar.gz я сделаю сам :)
17 мая 2009 г.
Что такое PAUSE?
17 мая 2009 г.
The Perl Authors
17 мая 2009 г.
Upload Server
17 мая 2009 г.
The Perl Authors
Upload Server
По-русски?
17 мая 2009 г.
Зэ Perl Авторы
Загрузка Сервер
Тут все понятно :)
17 мая 2009 г.
PAUSE
Сервер для загрузки модулей на CPAN
17 мая 2009 г.
Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
Получение 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 г.
Gravatar.com
@cpan.org
Аватар
17 мая 2009 г.
Получение PAUSE ID
• Фамилия и Имя
• Используйте кириллицу
• I trust the Text::Unidecode
• Email
• Китайский спам :)
• I trust the Gmail spam filter
• PAUSE ID
• [A-Z]{3,9} ?
17 мая 2009 г.
SHARIFULN
Почему 9, а не 10?
17 мая 2009 г.
SHARIFULIN
Почему 9, а не 10?
17 мая 2009 г.
Who is Who (long)
17 мая 2009 г.
Я решил найти
русских CPAN-авторов
17 мая 2009 г.
Поиск русских
CPAN-авторов
• Нашел всех, у кого имя написано
кириллицей: qr/[а-я]+/
• Составил список русских имен и фамилий
• Распарсил список «Who is Who»
• Исключил украинцев, белорусов и болгар
• И разослал «спам» на открытые email :)
17 мая 2009 г.
113
русских CPAN-авторов
17 мая 2009 г.
73
неактивных PAUSE ID
17 мая 2009 г.
CPAN faces русских авторов
17 мая 2009 г.
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 г.
Есть PAUSE ID, модуль
и желание :)
17 мая 2009 г.
Подготовка
дистрибутива для
публикации
17 мая 2009 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
find ./lib -type f
lib/Net/LastFM/Submission.pm
lib/POE/Component/Net/LastFM/Submission.pm
17 мая 2009 г.
Каждый модуль
должен иметь версию
our $VERSION = '0.64';
17 мая 2009 г.
Важно!
Начинать следует c 0.01
Версия 0.1 == 0.10
Devel-версия 0.64_1
17 мая 2009 г.
Документация в
формате POD
*.pm и *.pod
17 мая 2009 г.
Документация писать
нужно!
чтобы CPAN не превратился
«в репозиторий плохо документированного говна»
17 мая 2009 г.
Основной язык
документации –
English
17 мая 2009 г.
Jcode::CP932 – WTF?
17 мая 2009 г.
Jcode::CP932 – что за нах? :)
17 мая 2009 г.
Например,
документация на
русском:
RU/Name-Module.pod
17 мая 2009 г.
find ./t -type f
t/00-load.t
t/01-new.t
t/02-api.t
t/pod-coverage.t
t/pod.t
17 мая 2009 г.
Тесты писать тоже
нужно!
17 мая 2009 г.
Test::More
Test::Exception
очень просто и этого достаточно
17 мая 2009 г.
find ./examples -type f
examples/enc.pl
examples/poe.pl
examples/poe_client.pl
examples/test.pl
17 мая 2009 г.
script/ bin/ ...
POD-документация из скриптов
отображается на CPAN
17 мая 2009 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
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 г.
Module::Changes::
ADAMK
для разбора Changes Adam Kennedy
17 мая 2009 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
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 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
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 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
ExtUtils::MakeMaker
Module::Build
Module::Install
Dist::Zilla
17 мая 2009 г.
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 г.
Что такое дистрибутив?
• Архив Имя-Модуля-Версия.tar.gz
• lib/ t/ examples/ ...
• Changes
• MANIFEST
• README
• Makefile.PL Build.PL
• META.yml ...
17 мая 2009 г.
Module::Starter
Для создания дистрибутива с нуля
module-starter --module FirstModule --email <email>
--author Anatoly Sharifulin --builder Module::Builder
17 мая 2009 г.
Cборка
дистрибутива
perl Build.PL
./Build
./Build dist
./Build disttest
./Build fakeinstall
./Build realclean
17 мая 2009 г.
Дистрибутив готов
17 мая 2009 г.
Контроль версий?
Github.com
git
17 мая 2009 г.
http://github.com/sharifulin/net-
lastfm-submission
17 мая 2009 г.
Загрузка дистрибутива
на PAUSE
17 мая 2009 г.
Интерфейс загрузки
17 мая 2009 г.
Интерфейс загрузки
17 мая 2009 г.
CPAN::Inject
CPAN::Uploader
Автоматизация процесса загрузки дистрибутивов
17 мая 2009 г.
Счастье!
17 мая 2009 г.
Счастье!?
17 мая 2009 г.
Ошибки в POD :)
17 мая 2009 г.
CPAN Testers отчет
http://matrix.cpantesters.org/?dist=Net-LastFM-Submission+0.2
17 мая 2009 г.
CPAN Testers Matrix
17 мая 2009 г.
CPAN Testers Matrix
17 мая 2009 г.
CPAN Testing Service
http://cpants.perl.org/dist/overview/Net-LastFM-Submission
17 мая 2009 г.
CPAN TS для дистрибутива
17 мая 2009 г.
CPAN TS по автору
17 мая 2009 г.
CPAN TS по автору
17 мая 2009 г.
Первый Bug Report
https://rt.cpan.org/Public/Bug/Display.html?id=45436
17 мая 2009 г.
RT #45436
17 мая 2009 г.
Неожиданность:
хабраэффект
http://habrahabr.ru/blogs/perl/51736/
17 мая 2009 г.
Хабраэффект
17 мая 2009 г.
Какие еще есть
сервисы CPAN?
17 мая 2009 г.
http://kobesearch.cpan.org/
17 мая 2009 г.
http://search.cpan.org/uploads.rdf
17 мая 2009 г.
http://hexten.net/cpan-faces/
17 мая 2009 г.
http://annocpan.org/
17 мая 2009 г.
http://cpanratings.perl.org/
17 мая 2009 г.
http://www.cpanforum.com/
17 мая 2009 г.
http://deps.cpantesters.org/
17 мая 2009 г.
http://ali.as/top100/
17 мая 2009 г.
http://backpan.cpan.org/
17 мая 2009 г.
Я решил сделать
свой :)
Acme::CPANAuthors::*
CPAN Recent Uploads RSS
17 мая 2009 г.
http://cpan.perlrussia.org/
17 мая 2009 г.
http://cpan.perlrussia.org/
Russian/rss.xml
17 мая 2009 г.
http://cpan.perlrussia.org/
Russian/SHARIFULN/
17 мая 2009 г.
P. S.
Русская документация
POD2::RU
http://translated.by/sharifulin/inprocess/
17 мая 2009 г.
use Perl
or die
17 мая 2009 г.
use CPAN
or die
17 мая 2009 г.
JFDI
17 мая 2009 г.
Спасибо за внимание!
Анатолий Шарифулин
RostovOnDon.pm
17 мая 2009 г.
0 comments
Post a comment