社å ã§CPAN Authorã«ãªããããã«ã½ã³ãéå¬ãã¾ããï¼ï¼
ã¨ããããCPANAuthorã«ãªãããã¦ãã£ããå¾æã¯ãã¦ãªãã / âkazuph/Acme-Tategaki · GitHubâ http://t.co/o3gdjA3Zhn
— kazuph (@kazuph) 2013, 6æ 16
â»è¿½è¨(2013/06/17)â¦äººçåã®知人でない人からpull reqæ¥ã¾ããã¨ã¦ãå¬ããã§ãã
Perlçã§ã¯Minillaã¨ããCPANã¢ã¸ã¥ã¼ã«éçºãã¼ã«ãæµè¡ã£ã¦ããã®ããããã¡ããã©3å¹´ç®ã®åæã¨ãããããã¢ã¸ã¥ã¼ã«ã¨ãå ¬éããªãã¨ã¨ã³ã¸ãã¢ã¨ãã¦æ»ã¬ãã£ã¦è¨ã£ã¦ææ°æåãæ¥é½ããã«ã½ã³ãéããã¨ã«ãã¾ããã
éã¾ã£ãã¡ã³ãã¼ã¯
- çéPerlããã«ã¼ã§åæãid:ntakanashi
- ãã®å®åã¯é¨é·æ ¼ãid:hidehigo
- ç¥çæ°äººãid:saisa6153
- 大éªããçªå¦é£æ¥ããããã¬ã¤PerlMongerãid:papix
- PHPãªãä»»ãããid:takyam1213
- ããã¦ç¤¾å Vimããããã®id:kazuph1986
ã§ãã
æ¥æã§ãããããæ°æºã ãªããããä»åéã¾ã£ã6人ãç©èªã£ã¦ããã¨æãã¾ãã
ã¤ãã£ããã¤
åæã¯å®éã«ä»äºã§ã使ããå®ç¨çãªã¢ã¸ã¥ã¼ã«ãåã ããæ¸ãã¦ããããããå ¬éã§ããå½¢ã§ä¸ããã®ãä»æ¥ã®ç®çã§ããã
èªåã¯å®ç¨é¢¨ã謳ã£ã¦ãã¾ãã¨ãè¿·æãããããã¨ã«ãªãããªï¼ï¼ã£ã¦æã£ã¦ãä»åã¯Acmeã¢ã¸ã¥ã¼ã«ãæ¸ãã¾ããã
ç´è¿ã§ã¡ããã©IRCbotã社å ã§æµè¡ã£ã¦ããããã®æãã¿ã§ä½¿ã£ãflippyã¨ããgemãããã®ã§ããããã®Perlçãã¤ããã®ãç®çã¨ãã¾ããã
ã§ãã¿ããªã®ã¤ãã£ããã¤
- Amon2-Auth-Site-Google-0.02 - Google auth integration for Amon2 - metacpan.org
- Acme-OnePiece-0.02 - substitute strings in a file into 'one piece'-ed. - metacpan.org
- Acme-EvaTitlenize-0.01 - Generate strings like title of Evangelion - metacpan.org
- Acme-SuddenlyDeath-0.06 - ASCII Art of sudden death (çªç¶ã®æ») generator - metacpan.org
â»id:papixã®å ´åã¯æ¹è¯ã§ãããä»ã«ãããããã¤ãã£ã¦ãã®ã§ç¶ãã¯Webã§ã
èªåãã¤ãã£ããã¤
縦æ¸ãç°¡åã«çæã§ããåã§ãããã³ãã³ãã ãã§ãªããuseãã¦ã¹ã¯ãªããä¸ã«ä½¿ããã¨ãã§ãã¾ãã
ã¯ããã¨ãããã¨ã§ä¸ã¤ãé¤ãã¦å
¨é¨Acmeã§ãã
ã¤ã£ãã¿ã©ããæºè¼ã®ãã¤ãããã®ã§ããã²çªã£è¾¼ãã§ããã ããããã®ã§ãã
ã¾ãid:takyam1213ããã¯Perlerãããªãã®ã§CPANã¯ã¤ãã£ã¦ãªãã§ããPHPã®ã¢ã¸ã¥ã¼ã«ã2ã¤ä¸ãã¦ãã¾ããï¼
Composerã¨ããPHPã®ã¢ã¸ã¥ã¼ã«ç®¡çãã¼ã«ï¼ã使ãã¨æ¥½ã ã£ã¦è©±ãæ¸ãã¦ããã®ã§èå³ã®ããæ¹ã¯è¦ã¦ã¿ãã¨ããã¨æãã¾ãã
CPAN Authorになろう会の横でComposer Authorになる話 - new takyam();
ãªãªã¼ã¹ã¾ã§ã®è¦æ¸
åèã«ãããµã¤ã
Minillaã®æ¬å®¶ããã®ããã°ã§æ¦è¦ãæ´ã¿ã
Minilla を用いた Perl モジュールの作り方 - tokuhirom's blog.
ã¯ã¾ã£ãè¨ãè¦ã¦äºåã«äºç¿ããã
CinnamonをMinilla管理にした - $shibayu36->blog;
Mnillaã®108ã®å¥¥ç¾©ã身ã«ä»ãã
にひりずむ::しんぷる - Minila 化でハマったときに解決する 108 つの方法
ãã¨ã¯README.mdãé©å®åç
§ããã¨ããæãã ã¨æãã¾ãã
tokuhirom/Minilla · GitHub
äºåã«PAUSEã®ç»é²
The [Perl programming] Authors Upload Serverã§é称PAUSEãããã§ãã
PAUSE: request_id
CPANã®ãµã¤ãã«èªåã®ã¢ã¸ã¥ã¼ã«ãä¸ããã®ã«å¿
è¦ãªã®ã§äºåã«ç»é²ãã¦ã¾ããã
A short description of why you would like a PAUSE ID:ã®æ¬ã§ç»é²ããçç±ãèãããã®ã§ãããè±æ2è¡ãããã§ããã¾ããã
ãâ¯â¯ãã¤ãã£ã¦Perlã®ã³ãã¥ããã£ã«è²¢ç®ãããã§ããã£ã¦æé¢ã«ããã¨æãã¾ãã
æåã§ç¢ºèªãã¦ãã¨æãã®ã§ãããããçéã®è¿ä¿¡é度ã§ããã
ç°¡åã«ã³ãã³ããã¤ããã
Minillaã ããç°¡åã ã£ãã®ãããã§ããç°¡åã«ãªãªã¸ãã«ã³ãã³ããä½æã§ãã¾ãã
$ minil new Hoge $ cd Hoge $ mkdir bin $ echo '#!/usr/bin/perl' > bin/hoge-cmd $ echo 'print "This is hoge command!"' >> bin/hoge-cmd $ chmod 755 bin/hoge-cmd $ cpanm . $ hoge-cmd This is hoge command!
ããã ãã§ã³ãã³ãä½æï¼ç¢ºèªãã§ãã¾ããè¶ ç°¡åã§ããï¼
if ( __FILE__ eq $0 ) {}
__FILE__ã«ãã¡ã¤ã«ã®ãã¹ã$0ã«ãã®Packageã使ç¨ãã¦ããã¡ã¤ã«åãå ¥ãã®ãå©ç¨ãã¦ä»¥ä¸ã®ããã«æ¸ãã¦ã¿ã¾ããã
if ( __FILE__ eq $0 ) { $text = tategaki("ãåã¯ããã§ã«ãæ»ãã§ããã"); warn $text, "\n"; }
ããããã¨å¤é¨ããã¢ã¸ã¥ã¼ã«ã¨ãã¦ä½¿ç¨ãã¦ããã¨ãã¯ãã®ifã®ä¸èº«ãå®è¡ãããããã®ã¢ã¸ã¥ã¼ã«ããã®ã¾ã¾å®è¡ããã¨ãã®ã¿ifã®ä¸èº«ãå®è¡ããã¾ãã
ã試ãã§æ¸ãã¦ããã¨ãã«ã¯éå®ããã¨æãã¾ãã(ãã¹ããæ¸ããï¼)ã
phã³ãã³ããã¤ããã¨ç°¡åã«githubã®ãªãã¸ããªãä½æã§ãã
ããç¨åº¦ä½æãããã¨ã¨ããããgithubã«pushãããã¨æã£ãã¨ãã«ä¾¿å©ã§ãã
$ cd Hoge
$ cpanm App::ph
$ ph import
githubã«ããããããã¸ã§ã¯ãã®ãã£ã¬ã¯ããªä¸ã§ãããå
¥åããã¨ããããªã«ãHogeã£ã¦ãªãã¸ããªåã§ããï¼ãã£ã¦èãã¦ããã¦ãè¯ããã°githubã®id/passãå
¥åããã°ãªã¢ã¼ããªãã¸ããªãä½æããã¾ãã
è¶
楽ã§ããï¼
ã¨ããããæ¯ãå¸ãããã«minil test
$ minil test
ãå®è¡ããã¨githubç¨ã®README.mdãæ´æ°ãã¦ãããããcpanfileãè¦ã¦META.jsonãæ´æ°ãã¦ãããããä»ã«ããã¡ããtestãå«ãã¦è²ã ãã£ã¦ããã¾ããtestã ããããªãã®ããã¤ã³ãã§ããã
ã¨ããããminil test ãã¦git pushããæãã§ãã£ã¦ã¾ããã
ãã¨FAKE_RELEASE=1ã¤ãã¦minil releaseã§githubã«ãããã¾ããããã¼ã¸ã§ã³ãé²ãã£ã¦papixããèããã®ã§ããã¾ããã§ããã
ãªãªã¼ã¹æã®.pauseãã¡ã¤ã«ã®æ¸ãæ¹
cat $HOME/.pause
user KAZUPH
password *********
ãããªæãã®ãã¡ã¤ã«ãä½æããå¿ è¦ãããã¾ããæåpasswordãpassã¨æã£ã¦ããããã¨ã©ã¼ã§å¤±æãã¦ãã¾ãã¾ããã
Exporterãé©åã«æ¸ã
åã®èªèãåã£ã¦ãããããã§ãããããæ¸ãã¦ãã°useããã¨ãã«ã¢ã¸ã¥ã¼ã«åãã¤ããªãã¦ãã¡ã½ãããå¼ã¶ãã¨ãã§ãã¾ãã
èªåã®å ´åã ã¨
use parent 'Exporter'; our @EXPORT = qw( tategaki ); sub tategaki { ... }
ãããªæãã«æ¸ãã¦ãããã¨ã§
use Acme::Tategaki; print tategaki("ã»ã");
ã¿ããã«ä½¿ããããã«ãªãã¾ãã
print Acme::Tategaki::tategaki("ã»ã");
ã®ããã«æ¸ãå¿ è¦ããªããªãã®ãããã§ããã
æ»ãå¤ã«ãã£ã¦è¿å´ããå¤ãå¤æ´ãã
ããæ¸ãã¾ã§æã¦ããªãå¿å´ãã¦ãã®ã§ãããPerlã¯wantarrayã使ããã¨ã§ã¡ã½ããèªä½ãé åãè¿å´ãããã¨ãæå¾ ããã¦ãããããã§ãªããå¤æã§ãã¾ãã
return wantarray ? @text : join "\n", @text;
æåã¯ãã£ã¨é åããã®ã¾ã¾è¿ããã¨æã£ã¦ããã®ã§ãããã¡ãã£ã¨ä¸è¦ªåããªã¨æã£ãã®ã§ä¸¡æ¹å¯¾å¿ããããã«ãã¾ããã
ã§ããããã«ãã£ã¦printæã«scalarãæå®ããªããã°ãªããªããªã£ã¦ãã¾ã£ãã®ãçã«çã§ããã
print scalar tategaki("ã»ãããµã"); # ãµãã» # ããã
åèã«ããã¢ã¸ã¥ã¼ã«ããã£ããã礼ãè¨ã
å
ã
flippyã¨ããgemããã¯ã£ã¦åèã«ãã¦éçºãè¡ã£ã¦ããã®ã§ãªãªã¼ã¹æã«ã礼ãããã¾ããã
@kazuph ãããããããã¨ããããã¾ããPerlçã§ããï¼å
æ ã§ãã
— kyoendo (@merborne) 2013, 6æ 16
ãã®ã«ãã£ã¦ã¯ããã£ã¨äºåã«æ¿è«¾ãå¾ã¦ããæ¹ãããããããã¾ããããããã¯TPOãè¦ã¦å¤æããã°ããã¨æãã¾ãã
ã ããããããªæãã§ããããã
ã¾ã¨ã
å¢ãã£ã¦éè¦ã§ããï¼ï¼
ããããããã«ã½ã³ã¯å®æçã«ã©ãã©ãéå¬ããªãã¨ãããªãã¨æãã¾ããï¼ï¼
ä»å¾ã¯ã¡ããã¨å®ç¨çãªã¢ã¸ã¥ã¼ã«ãæ¸ãã¦ããããã¨æãã¾ããå®ã«æ¥½ããä¸æ¥ã§ãã(ï½ï½¥Ï・´)ã
声ãããã¦ãããåæã¨åå ãã¦ãããã¡ã³ãã¼ãããã¦minillaãã¤ãã£ã¦ãããtokuhiromããã«æè¬ã§ãã