From: mitty Date: Wed, 6 Jul 2011 14:06:34 +0000 (+0000) Subject: * memo of "Shibuya Perl Mongers Technical Talk #16" X-Git-Url: http://lab.mitty.jp/git/?a=commitdiff_plain;h=f38dca0097f90060326765fb4509b3691a0d307f;p=lab.git * memo of "Shibuya Perl Mongers Technical Talk #16" * http://shibuya.pm.org/blosxom/techtalks/201107.html * video recording at http://www.ustream.tv/channel/shibuya-perl-mongers-mixi git-svn-id: https://lab.mitty.jp/svn/lab/trunk@123 7d2118f6-f56c-43e7-95a2-4bb3031d96e7 --- diff --git a/Commentary/shibuya.pm/20110706#16.log b/Commentary/shibuya.pm/20110706#16.log new file mode 100644 index 0000000..d9a95a9 --- /dev/null +++ b/Commentary/shibuya.pm/20110706#16.log @@ -0,0 +1,220 @@ +dan kogai + ‘OÀ‚È‚Ì‚©c + ‚¹‚¢‚«‚Ђ傤‚°‚ñ‚Á‚Ä‚¦‚ë‚¢‚́H + ‚»‚ê‚Á‚Ä‚¦‚ç‚¢I + ‚·‚ׂĂ̖‚—‚ðAÁ‚µ‹Ž‚肽‚¢ + $universe = s/–‚—//g; + ‚Ü‚Ç‚©ƒlƒ^–³‘o + ³‹K•\Œ»‚ÌŽg‚¢‚·‚¬‚ɑ΂·‚钍ˆÓŠ«‹N + ƒXƒ}[ƒgƒ}ƒbƒ`‚Í5.10‚©‚çŽg‚¦‚é ~~ + ‚µ‚©‚µA‚Ü‚¾’x‚¢ + ƒ[ƒ‹ƒAƒhƒŒƒX‚̐³‹K•\Œ» + ŒŸØ‚È‚ñ‚āA‚ ‚é‚킯‚È‚¢ + ƒAƒ“ƒOƒ‹ƒuƒ‰ƒPƒbƒg‚͐³‹K•\Œ»‚ł̓}ƒbƒ`o—ˆ‚È‚¢ + perldoc -q mail + IPv4‚ւ̃}ƒbƒ` + ‚æ‚­‚ ‚éŠÔˆá‚¢ + \d{4}.\d{4}.\d{4}.\d{4} + ‚¿‚á‚ñ‚Ə‘‚±‚¤‚Æ‚·‚é‚Æ + use Regexp::Common ‚ðŽg‚¨‚¤I + my $re_ipv4 = $RE{net}{IPv4} + alteration + (a|b|c|d)‚Í[abcd]‚Ì4”{ˆÈã‚̃RƒXƒg + O(mn)‚̃I[ƒ_[ + l‚ÌŽè‚ōœK‰»‚·‚é‚Ì‚Í–³— + Regexp::Assemble‚ōœK‰»‚µ‚悤 + ŽÀ‚ÍPerl 5.10ˆÈ~‚ÍTRIE Optimization‚µ‚Ä‚­‚ê‚é + ‚µ‚©‚µARegexp::Assemble‚Å–³‚¢‚Əo—ˆ‚È‚¢‚±‚Æ‚à‚ ‚é + ƒL[ƒ[ƒh‚ðƒŠƒ“ƒN‚É‚·‚éA‚Ȃǂ̐”‚̃I[ƒ_[‚ª‚æ‚è‘å‚«‚­‚È‚Á‚½‚Æ‚«‚ÍText::Darts‚ÆText::Tx‚ðI + s///sexsexsex... + IH + ˆÓ–¡‚Ì‚ ‚镶Žš‚ðŽw’肵‚½‚Æ‚«‚́A‰½ŒÂ‚ ‚Á‚Ä‚àˆê‚ÂŽw’肵‚½‚±‚Æ‚Æ“¯‚¶ + e‚¾‚¯‚͏d‚Ë‚é‚ƁAeval‚µ‚½Œ‹‰Ê‚ðÄ“xeval‚·‚邱‚Æ‚É‚È‚é + ³‹K•\Œ»‚Ì‚È‚¢Perl‚̓Rƒu‚Ì‚È‚¢ƒ‰ƒNƒ_ + Œ»Ý‚Ì‚¢‚ë‚¢‚ë‚ÈŒ¾Œê‚ł̐³‹K•\Œ»‚Ì•\Œ»‚́A‚Ù‚ÚPerl‚É’Ê‚¶‚Ä‚¢‚é + Java‚̐³‹K•\Œ»‚Í‚¿‚å‚Á‚Æ—áŠO(‚¿‚å‚Á‚ÆŽã‚¢) + Lion‚ÌPerl + 5.12.3 + +–Ø‘º_ˆê + ³‹K•\Œ» - ‚à‚¤ˆê‚‚̃oƒxƒ‹‚Ì“ƒ - + ‚Æ‚¢‚¤˜b‚Í‚â‚è‚Ü‚¹‚ñ + ‚¸‚²[ + u³‹K•\Œ»ƒƒ‚v‚̐l + ŽÀ‚Í‚ ‚éˆÓ–¡u•—ðŽjv + ƒ}ƒCƒi[‚ȉ‰ŽZŽq + [[:<:]] ‚Æ [[:>:]] + Tcl‚ÅŽg‚¦‚鐳‹K•\Œ» + [= =] + [. .] + ‚Ç‚¿‚ç‚àPOSIX‚É’è‹`‚³‚ê‚Ä‚¢‚郁ƒ^•¶Žš + [=e=] -> •’Ê‚Ìe‚¾‚¯‚¶‚á‚È‚­‚āAƒAƒNƒZƒ“ƒg‹L†‚ª•t‚¢‚½e‚É‚àƒ}ƒbƒ` + ƒEƒ€ƒ‰ƒEƒg‚Ȃǂ𒀈ꏑ‚©‚¸‚Ɉê‰ñ‚ōς܂¹‚ç‚ê‚é + [. .] -> ƒXƒyƒCƒ“Œê‚ł́A‘‚­‚Æ‚«‚Í“ñ•¶Žš‚¾‚¯‚LjꕶŽš‚ÆŒ©‚È‚·•¨‚ª‚ ‚é‚̂ŁA‚»‚ê‚ðˆµ‚¤ + \ + Emacs‚̐³‹K•\Œ» -> ƒoƒbƒNƒXƒ‰ƒbƒVƒ…‚ªŽR‚̂悤‚ɏo‚Ä‚­‚é + Perl‚ł̓oƒbƒNƒXƒ‰ƒbƒVƒ…{‹L†‚Æ‚¢‚¤ƒƒ^•¶Žš‚Í3‚­‚ç‚¢‚©‚çŽg‚í‚È‚­‚È‚Á‚½ + ƒ‰ƒŠ[‚ÉŠ´ŽÓ + (Œ¶‚́H)Jperl 5.6 + uJava‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·Iv(Î + “ú–{Œê‘Ήž‚³‚ꂽPerl + ver4‚Ü‚Å‚Í‚©‚Ȃ肵‚Á‚©‚胁ƒ“ƒeƒiƒ“ƒX‚³‚ê‚Ä‚¢‚½ + 5‚É‚È‚Á‚Ä‚©‚烁ƒ“ƒeƒi‚ª•Ï‚í‚Á‚½ + 5.0005 -> 5.6 ‚ÅJPerl‚ªo‚È‚­‚È‚Á‚½ + ³‹K•\Œ»‚É–ß‚è“Ç‚Ý‚ª“ü‚Á‚½ + ’–Ú‚µ‚Ä‚¢‚é‚Æ‚±‚ë‚©‚çŒÅ’è’·‚¾‚¯‘O‚ÉŒü‚©‚Á‚Ä“Ç‚Þ + “ú–{Œê‚ł́AEUC-JP‚Å‚àShift-JIS‚Å‚àAuˆê•¶Žšv‚ª‰½ƒoƒCƒg‚È‚Ì‚©Œˆ’èo—ˆ‚È‚¢ -> ŒÅ’è’·‚ª•ÛØo—ˆ‚È‚¢ + uPerl 5‚ªo‚È‚©‚Á‚½‚獡‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Á‚Ä‚Ç‚¤‚È‚Á‚Ä‚ñ‚½‚ñ‚¾‚낤v by dan + ³‹K•\Œ»‚Ì•ª—Þ + POSIX + BASIC + grep, ed“™‚ÅŽg‚¤ + Extended + egrep, awk‚ÅŽg‚¤ + PerlŠg’£ + ˆêŒû‚ŁuPerlŠg’£v‚Æ‚Í‚¢‚¤‚à‚̂́c + Java‚â.NET‚¾‚ƁA–ß‚è“Ç‚Ý‚ª‰Â•Ï’·‚ð‹–‚·‚̂ŁAƒ‰ƒCƒuƒ‰ƒŠ‚É‚æ‚Á‚Ä‹““®‚ªˆá‚Á‚Ä‚­‚é + –{‚ð‘‚­‚Æ‚«‚É”Y‚ñ‚¾‚±‚Æ + ’Žß‚ª“‚¢‚±‚Æ‚É‚È‚é + uƒsƒŠƒIƒh‚͈ꕶŽš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B‚½‚¾‚µc‰]Xv + •¶ŽšƒNƒ‰ƒX‚Ælocale‚Ì”Y‚Ü‚µ‚¢˜b + gawk‚ª‚‚¢Å‹ßXV‚³‚ꂽ + [abcd]‚Æ[a-d]‚̈Ⴂ‚Ælocale‚Í‘Š«‚ªˆ«‚¢ + •’ʂɍl‚¦‚ê‚ÎASCIIƒR[ƒh‡‚¾‚ªALinux‚È‚Ç‚Å‚ÍUTF-8‚È‚Ç‚É‚·‚é‚Æa->A->b->B->z->Z‚É‚È‚é + ƒJƒ^ƒJƒi‚ƂЂ炪‚È‚Å”÷–­‚É‚¸‚ꂽ‚è + ‚à‚¤–Ê“|‚­‚³‚¢‚̂ŁA•¶ŽšƒNƒ‰ƒX‚ÅŽw’肳‚ꂽ‚Æ‚«‚ÍASCII‚Æ“¯‚¶‹““®‚É‚·‚éA‚ÆŒˆ‚ß‚½‚炵‚¢ + + +@__gfx__ + Hello, re::engine! + Xslate‚ð‘‚¢‚Ä‚é + HTML::FillInForm::Lite HTML::FillInForm‚ªƒRƒ“ƒpƒCƒ‹‚ª•K—v‚¾‚Á‚½‚̂ŁA³‹K•\Œ»‚ÅŽÀ‘•‚µ‚½ + Text::Xslate - tokenazer + re::engine‚Ƃ́H + Perl‚̐³‹K•\Œ»‰‰ŽZ‚ðƒI[ƒo[ƒ[ƒho—ˆ‚é‚悤‚É‚µ‚½•¨ + ƒvƒ‰ƒKƒuƒ‹‚É‚µ‚½‚æ[‚Æ‚Ì‹LŽ–‚ª2006‚²‚ë + PerlƒRƒA‚Ɛ³‹K•\Œ»ƒGƒ“ƒWƒ“‚ð“Æ—§‚³‚¹‚½ + Perl6‚Ö‚Ì•zÎ‚¾‚Á‚½‚ÆŽv‚í‚ê‚é + ‘f””»’è‚Ìexample + ƒƒŠƒbƒg + ƒR[ƒh‚ðC³‚µ‚È‚­‚Ä‚àƒGƒ“ƒWƒ“‚ð·‚µ‘Ö‚¦‚ç‚ê‚é‚Ì‚ªƒƒŠƒbƒg + CƒŒƒxƒ‹‚ÌAPI‚Ȃ̂ō‚‘¬ + m//‚¾‚¯‚Å‚È‚­s//‚âsplit//‚È‚Ç‚à + How it works + ŠÖ”ƒ|ƒCƒ“ƒ^‚ðŠi”[‚µ‚½regexp_engine‚ðvirtual table‚É‚µ‚Ċ֐”‚ðƒfƒBƒXƒpƒbƒ` + Virtual Table in regexp.h + re::engine::PCRE + re::engine::Oniguruma + ƒoƒbƒNƒgƒ‰ƒbƒN‚É‹­‚¢ -> ³‹K•\Œ»‚ÌŒÀŠE‚ð“Ë”j‚·‚é + re::engine::RE2 + Google» + •¡ŽG‚Ȑ³‹K•\Œ»‚¾‚ÆPerl‘g‚ݍž‚Ý‚æ‚葁‚¢ + re::engine::boost + boost::regex::boost + ’x‚·‚¬‚Ęb‚É‚È‚ç‚È‚¢(100”{‚­‚ç‚¢) + ‘¼‚̐³‹K•\Œ»ƒGƒ“ƒWƒ“‚ðŠÈ’P‚ÉŽŽ‚¹‚é‚Ì‚ª¦‚¢ + ¢ŠEÅ‘¬grep‚̐³‹K•\Œ»ƒGƒ“ƒWƒ“‚̃oƒCƒ“ƒfƒBƒ“ƒO‚àcomming soon + +@sinya8282 + ³‹K•\Œ»‚ÌŒÀŠE + nkf‚͖̉ìæ¶‚ÌŒ¤‹†Žº‚É‚¢‚Ü‚µ‚½ + I ƒ‰ƒu ³‹K•\Œ» + Ž„‚͐³‹K•\Œ»‚ªD‚«‚¾ + ³‘¥•\Œ»‚ɂ‚¢‚Ä + Šî–{: ˜AÚA‘I‘ðA‚Ö‚¢‚Ù‚¤ + “œˆß\•¶ .^$[]{}()?+ + Šî–{3‰‰ŽZ‚Å•\Œ»o—ˆ‚È‚¢‰‰ŽZ‚àReal Workd‚Å‚ÍŽg‚í‚ê‚Ä‚¢‚é + (?{ code }) + Šî–{‚ÍŽO‚‚¾‚¯ + ŽO‚‚̉‰ŽZŽq‚µ‚©‚È‚¢‚Ì‚È‚ç’Pƒ‚Å”ñ—́H + ‚Æ‚ ‚é”Û’è‚̐³‹K•\Œ»(ƒŒƒWƒFƒbƒNƒX) + /a*/‚Ƀ}ƒbƒ`‚µ‚È‚¢³‹K•\Œ»‚Í/.*[^a].*/ + ‚±‚Ì’ö“x‚͐lŠÔ‚Å‚àì‚ê‚é + /abc/‚̔ےè‚́H/abc|efg/‚̔ےè‚́H/.*abc.*/‚́H + ³‹K•\Œ»‚ð‘‚­lŠÔ‘¤‚ÉŒÀŠE‚ªc + ‰½ŒÌ”Û’è‚̐³‹K•\Œ»‚ð‘‚­‚Ì‚ª“‚¢‚Ì‚© + ³‹K•\Œ»‚©‚çDFA‚©‚çì‚邱‚Æ‚Æ‚Ù‚Ú“¯‹` + ³‹K•\Œ»‚̔ےè <=> DFA‚̎󗝏ó‘Ô‚Æ”ñŽó—ó‘Ô‚ð“ü‚ê‘Ö‚¦‚ê‚΂¢‚¢ + ŽÀ‚ÍDFA‚©‚ç‚à“™‰¿‚Ȑ³‹K•\Œ»‚ðì‚邱‚Æ‚ªo—ˆ‚é + ³‹K•\Œ» -> NFA -> DFA -> ”Û’è‚ÌDFA -> GNFA -> ”Û’è‚̐³‹K•\Œ» + Åˆ«ŒvŽZ—Ê‚ªexp()‚É + ŽÀ‚Í”CˆÓ‚̐³‹K•\Œ»‚̔ےè•\Œ»‚𐶐¬‚·‚éƒc[ƒ‹‚ª‚È‚¢ + ŽÀ‘•‚µ‚½I + /abc/ -> /((a?|ab)|((([[^a]|a[^b])|ab[^c])|abc.).*)/ + ƒLƒƒƒvƒ`ƒƒ[‚µ‚Ä‚¢‚é‚Ì‚Å‚¾‚ß by dan + ‚±‚̐¢‚ɂ͐³‹K•\Œ»‚Å•\Œ»o—ˆ‚È‚¢•¨‚ª‚ ‚é + •¶–¬Ž©—R•¶–@ + Ä‹A“I\‘¢ + ³‹K•\Œ»‚ÍŠ‡ŒÊ‚̑Ήž‚ªŽæ‚ê‚È‚¢ + Žl‘¥‰‰ŽZ‚È‚Ç + PCRE‚É‚Í(?R)‚ōċA‚ªŽg‚¦‚é‚̂ʼn½‚Æ‚©‚È‚é + ‚½‚¾‚µAIrregular Expression + u‚Æ‚ ‚éÄ‹A‚̐³‹K•\Œ»v + Ä‹A‚̐[‚³‚ðŒÀ’è‚·‚ê‚ΗLŒÀ + •¶Žš—ñ‚Ì’·‚³‚ªN‚È‚çA‚½‚©‚¾‚©N‰ï‚̍ċA + ãŒÀ‚ðN‚É‚µ‚½ -> ‘O‚Ì’·‚³*2+35 ‚Ì‘Q‰»Ž® ‚‚܂è 35*((2^n+1)-1) + 140•¶ŽšˆÈ“à‚ÌŠ®‘S‚ÈŽl‘¥‰‰ŽZ + (140-1)/2 = 69‰ï‚̍ċA‚ªãŒÀ + (35*(2^70)-1) -> 40ƒ[ƒ^ƒoƒCƒg + Q. ”Û’è‚̐³‹K•\Œ»‚ðì‚éƒc[ƒ‹‚́H + A. ì‚Á‚½‚Ì‚Å‚±‚ÌŒã‚Ì”­•\‚Å‚¨Šy‚µ‚݂ɁI + Q. pure‚Ȑ³‹K•\Œ»‚É‚±‚¾‚í‚邱‚Æ‚Ì—˜“_ + A. DFA‚É•ÏŠ·o—ˆ‚é -> DFA‚̍œK‰» / •À—ñƒ}ƒbƒ`ƒ“ƒO‚ªo—ˆ‚½‚è‚·‚é + +LT + –l‚̍l‚¦‚½¢ŠEÅ‹­‚̐³‹K•\Œ»ƒGƒ“ƒWƒ“ @shinya8282 + ¢‚Ì’†‚É‚Í‚¢‚ë‚¢‚ë‚Ȑ³‹K•\Œ»ƒGƒ“ƒWƒ“‚ª‚ ‚é + PCRE + RE2 + ‹SŽÔ + ‚¸‚Δ²‚¯‚½“Á’¥‚ðŽ‚½‚¹‚½‚¢ + ‘¬“xI + Regen -> Regular Expression Generator + ³‹K•\Œ»‚©‚çFX"¶¬" + x86ƒlƒCƒeƒBƒuƒR[ƒh + etc... + ŒÀŠE‚܂ō‚‘¬‰»‚µ‚½‚¢ + DFAƒx[ƒX‚̃}ƒbƒ`ƒ“ƒO + “®“I‚ȃR[ƒh¶¬ by Xbyak + •À—ñDFAƒ}ƒbƒ`ƒ“ƒO + ‹@ŠBŒêƒŒƒxƒ‹‚ł̍œK‰»(‚È‚¤) + ‚Ü‚¾’P‘Ì‚Å‚àƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚µ‚Ä‚àŽg‚¦‚郌ƒxƒ‹‚É‚Í‚È‚Á‚Ä‚¢‚È‚¢ + Ä‹A‚Ɣےè‚̐¶¬Œn‚Æ‚µ‚Ä‚ÍŽg‚¦‚é + Plagger‚ÅŠo‚¦‚½Perl‚̐³‹K•\Œ» yusukabe + UNIX pipe programming for web <- Plagger + Filter::EntryFullText + ƒtƒB[ƒh‚ðo—Í‚µ‚Ä‚¢‚È‚¢ƒy[ƒW‚̍XVî•ñ‚ðˆµ‚¤ + 30ŒÂ‚̃GƒYAMLI + ƒGƒƒTƒCƒg‚ðw“Ç -> Plagger -> etc... + ƒŠƒrƒh[‹ì“®‚ª‚æ‚¢‚æI + Regexp::Assemble‚Æ‚©‚»‚̕ӂ̘b Yappo + ³‹K•\Œ»‚ð‹ìŽg‚µ‚ďZŠ‚𒊏o + —X•Ö‹Ç‚̃f[ƒ^‚ð—p‚¢‚½ + “s“¹•{Œ§‚Í‚Ü‚¾‚¢‚¢‚¯‚ǁAŽs’¬‘º‚͐³‹K•\Œ»‚ðˆ³k‚µ‚È‚¢‚Æ‚Æ‚Ä‚à‚¶‚á‚È‚¢ + Trie‚Ì•û‚ªAssemble‚æ‚è4”{‚­‚ç‚¢‘¬‚¢ + # ‚±‚±‚ÅŽžŠÔØ‚ê + Ä‹A“I³‹K•\Œ» JSON Validator TAKESAKO + JavaScript Object Notation + XSS“™‚ª•|‚¢‚Ì‚ÅValidate‚ª•K—v + –l‚ÆŒ_–ñ‚µ‚āAi‚’‚™ sugyan + Quine ruBy + Perl”ōì‚è‚Ü‚µ‚½I + JavaScript”Å‚à + Quine -> Ž©g‚ÌŠ®‘S‚ȃR[ƒh‚ðo—Í‚·‚éƒvƒƒOƒ‰ƒ€ + eval‚ðŽg‚¤ + F‚ð•Ï‚¦‚é -> ANSI escape sequence + ƒZƒŠƒt‚Íuuencode‚Å‚²‚Ü‚©‚· + use utf8;‚Ə‘‚«‚½‚­‚È‚¢‚Ì‚Å•Ï‚È‚±‚Æ‚ð‚·‚é + ®Œ` + –³‘Ê‚É•ÏŠ·A‹ó”’‚ð“ü‚ê‚éA()‚ð“ü‚ê‚é + ³‹K•\Œ»‚à‚¿‚å‚Á‚Æ‚¾‚¯Žg‚Á‚½‚æ + FX‚È‚à‚̂𐳋K‚É•\Œ»‚µ‚Ă݂悤 + u/RegEx/v‚Æ‚¢‚¤ƒTƒCƒg + u“d˜b”ԍ†v‚Ì—á->Žc”O‚È•¨‚ª‘½‚¢ + Number::Phone::JP‚ðŽg‚¨‚¤ + —X•Ö”ԍ†‚à³‹K•\Œ»‚ɏo—ˆ‚é‚̂ł́H + 000-0000 `999-9999‚Ì‚¤‚¿98.6%‚ÍŽÀÛ‚É‚ÍŽg‚í‚ê‚Ä‚¢‚È‚¢ + Number::Zipcode::JP + ’N“¾H‰´“¾I + DB‚ňø‚¢‚ăpƒ^[ƒ“ƒ}ƒbƒ`‚æ‚èŽáŠ±‘¬‚¢‚æII + \ No newline at end of file