第6åYokohama.pm & Perl Casualè¦ã¦ãã
Gearman Workerãä»ã¾ã§ãã¸ã£ã¼ãã³ãã¨èªãã§ããåã«ã¨ã£ã¦ã¯ã¨ã¦ã価å¤ããã«ã³ãã¡ã¬ã³ã¹ã§ããã
ï¼ãã®ã¢ãã³ãã£ã¦èªãã®ãããã¤ãã«é¢ä¿ãããã®ãã¨æã£ã¦ãããã¤ã¥ã調ã¹ç´ãããã¸ã£ã¼ãã³ã¯Germanã ã£ãããï¼
Perl Casualã¯ã«ã¸ã¥ã¢ã«ã§æ¥½ããã§ããã
åååã
åã®ææã¯å¿ããã¦ãã£ããç¥ããªãã£ãããä»æ¥ã¯æ¥½ãã¿ã«ãã¦ã¾ããã
ç¥ã£ã¦ãå
容ã§ããã®äººã®çãè¦ããã®ã§ã©ã¤ãã³ã¼ãã£ã³ã°ã¨ãããã¨æ¥½ããã§ãã
ãã¨ãYAPC::Asiaã®ã¢ãã¦ã³ã¹ããã£ã¦ãã1å¹´çµã¤ã®ãã¨ã¡ãã£ã¨é©ããã
å»å¹´ã®ç ä¿®ã¯è¶
é¢ç½ãã£ãã®ã§ã¾ãè¡ããããããªãåå ããããªã¨ã
- YAPC::Asia2009の特別研修「Moose入門、モダーンなオブジェクト指向システム」が超良かった! - こんにちは!こんにちは!monmonといいます!
- YAPC::Asia2009の特別研修「Perl, Unicode, and AJAX」は自由な感じの研修でした - こんにちは!こんにちは!monmonといいます!
ããã¨ãiPhoneã®è©±ãããå°ãèãããã£ããã©ããããã°ä»æ¥ã¯Perlã®ã«ã³ãã¡ã¬ã³ã¹ã§ããã
ä»åã®åç»ã¯ããä¸ãã£ã¦ããã®ã§åç»è¦ãã¨ããã§ãã
Ustream.tv: ユーザー yokohama-pm: 第6回 yokohama.pm & Perl Casual, Recorded on 10/07/23. 会議
以ä¸ã¡ã¢ã
ãªã½ã¼ã¹ç£è¦ãã¼ã«ã»ãã¬ã¼ã ã¯ã¼ã¯CloudForecastã®ç´¹ä» - id:kazeburo
CloudForecast
- ãªã½ã¼ã¹ç£è¦
- mixiã®ç£è¦ã·ã¹ãã ãå
- perl,rrdtoolã使ããsysadminã®äººã ã£ãã使ãããã by id:tokuhirom
ç£è¦ã®åºæ¬
- 以ä¸2ã¤ã®ç£è¦ããã
- æ»æ´»ç£è¦
- ãªã½ã¼ã¹ç£è¦
æ»æ´»ç£è¦ã¨ã¯
- 種é¡
- pingå¿ç
- HTTP,SSHãªã©ã®ãã¼ãç£è¦
- ãã¼ãã¢ãã¬ã¼ã¸,Disk使ç¨é
- ç¬éãç£è¦
- ç°å¸¸ãããã°ã¢ã©ã¼ã
- ç£è¦ããããã®ã½ããã¦ã§ã¢
- Nagiosãªã©
ãªã½ã¼ã¹ç£è¦ã¨ã¯
- 種é¡
- ãã©ãã£ãã¯ã°ã©ã
- CPUãã¡ã¢ãªä½¿ç¨é
- ç¶æ ãè¨é²ãç¶ãã
- è¦ããåã»ã°ã©ãå
- ç£è¦ããããã®ã½ããã¦ã§ã¢
- Cacti,munin,Ganglia
- CloudForecast
CloudForecast
- åæ£å¦çãé«éåä½
- 大è¦æ¨¡ç°å¢ã§ãååã«ä½¿ãã
- livedoorã§ã¯ããã§700å°ç£è¦ãã¦ãããå ¨é¨åãã®ã«15-20ç§ããã
- 大è¦æ¨¡ç°å¢ã§ãååã«ä½¿ãã
- YAML
- 大è¦æ¨¡ç°å¢ã ããã¨ãã£ã¦ããããããããè¨å®ããã¨ãªãã¨å¤§å¤ã ãã©ãYAMLã§ãã£ã¨ã§ãã
- ã°ã©ã表示ç¨ã®Webãµã¼ãå èµ
- ãã¡ããPerl
CPAN以å¤ã®ä¾åã¢ã¸ã¥ã¼ã«
ã·ã¹ãã æ§é
ã¤ã³ã¹ãã¼ã«
- CPAN以å¤ã®ã¢ã¸ã¥ã¼ã«ãã©ãå
¥ããã
- apt-getãyumã§ã¤ã³ã¹ãã¼ã«ããã®ã楽
- æ¬ä½
- gitããæã£ã¦ãã
- ä¾åã¢ã¸ã¥ã¼ã«ã«ã¤ãã¦ã¯cpanmã§extlibã«å ¥ããã°OK
cpanm -l extlib --installdeps .
è¨å®
- YAML
- è¨å®ãã¡ã¤ã«(cloudforecast.yaml)ã¨ãµã¼ãä¸è¦§ãã¡ã¤ã«(server_list.yaml)ããã
- 両æ¹ã¨ãsample.yamlãããã®ã§ããããcpãã¦ä½¿ã
- ç£è¦é
ç®ãã¡ã¤ã«ï¼basic.yamlï¼
- ä½ãç£è¦ãããï¼ãªã½ã¼ã¹å®ç¾©ï¼
- server_list.yamlããå¼ã³åºããããã¡ã¤ã«
- æ£è¦è¡¨ç¾ã使ãã°æè»æ§ä¸ãããã©ãã·ã³ãã«ã«ã³ãã³ã§æå®ããããã«ãã
ãªã½ã¼ã¹å®ç¾©
- Basicï¼CPU,LAV,MEMï¼ãTrafficãApacheãªã©ãªã©è²ã
- perldocã§è¦ããããã«ããäºå®
ç£è¦é ç®ã®ã«ã¹ã¿ãã¤ãº
- ããã°ã«æ¸ãã¦ããã¾ã
èµ·å
- å·¡åãã¼ã¢ã³ã®cloudforecast_radarã¨ãWebãµã¼ãã®cloudforecast_webããã
- daemontoolsã§èµ·åããã¨ä¾¿å©ã ã¨æã
ãªã½ã¼ã¹å®ç¾©ã»ãã©ã°ã¤ã³ã®ä½ãæ¹
- ããã°ã«ä¾ãæ¸ãã¦ãã
- å¿
è¦ãªãã®
- ãã¼ã¿å®ç¾©
- ã©ããªãã¼ã¿ãä¿åããã
- ã°ã©ãæå®
- ã©ãããã°ã©ããæç»ããã
- ãã¼ã¿åå¾é¢æ°
- ã©ããã£ã¦ãã¼ã¿ãåå¾ããã
- ãã¼ã¿å®ç¾©
- ä½ã£ãèªä½ãã©ã°ã¤ã³ãã©ãã«æ ¼ç´ããã°è¯ãã
- site-libé ä¸ã«å ¥ããã°pathãéã£ã¦ãã®ã§åã
ä¾ã®èª¬æ
- æ¦è¦
- 以ä¸ã«åºã¦ããgearman-startter.plã§BusyWorkersã¨IdleWorkersãåå¾ããã°ã©ãåãã
- ç£è¦ç®ç
- ãªã½ã¼ã¹ã®ææ¡
- ããã»ã¹æ°ã®æé©å
ä¾ã®èª¬æ:ãã©ã°ã¤ã³ï¼ã¢ã¸ã¥ã¼ã«ï¼ã®ä½æ
- use CloudForecast::Data -base;ããã¨å¿ è¦ãªé¢æ°ãimportã§ãã
- ãã¼ã¿å®ç¾©
- rrdã«keyã¨ãã¼ã¿ã¿ã¤ããæå®ãã
- ãã¼ã¿ã¿ã¤ãï¼ä»¥ä¸ã®2ã¤ã ãè¦ãã¦ããã°ããï¼
- COUNTER
- ã«ã¦ã³ã¿ã¼ã®ããã«å¢ãç¶ãã¦ããå¤
- ã°ã©ãã§ã¯å·®åãåã£ã¦è¡¨ç¤º
- ä¾ï¼Traffic
- GAUGE
- ãã®ç¬éã®å¤
- ã°ã©ãã§ã¯ãã®ã¾ã¾ã®å¤ã表示
- ä¾ï¼LAV
- COUNTER
- ã°ã©ãå®ç¾©
- ã°ã©ãã®ååã¨RRDãçµã³ã¤ãã
- ãã¼ã¿åå¾é¢æ°
- Busyã¨Idleã®è¡¨ç¤ºè¡ãåå¾ããé¢æ°ãperlã§æ¸ã
TODO/Plan
- Webã¤ã³ã¿ãã§ã¼ã¹ã®æ¹è¯
- RRDã¨SQLiteã®çµã¿åããã¦ãã¥ã¼ãã³ã°ç¨ã®æ å ±ãåºããªããï¼
- ããã¥ã¡ã³ãã¨ãã¹ã
ã¾ã¨ã
- CloudForecastã¯Perlã¦ã¼ã¶ã«ä½¿ãããããªã½ã¼ã¹ç£è¦
- å人ãã大è¦æ¨¡ã¾ã§å¯¾å¿
- ã¢ã¯ãã£ãã«éçºä¸
Webã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã®ããã®iPhoneã¢ããªéçºå ¥é - id:typester
- é¢ç½æ³äººã«ã¤ãã¯ã§åãã¦ã
iPhoneã¢ããª
- im.kayac.com
- ããããã¶
- Domino's App
- 100人ã®ã¡ã¤ã
- å®å¿ã¬ã¼ãã¼
- è¿æ¥å ¬é
ãªãWebéçºè ã®ããã®iPhoneã¢ããªéçºï¼
- WebAPIã¨iPhoneã¢ããªã®è¦ªåæ§ã®é«ã
- Objective-Cã£ã¦LLã£ã½ãï¼Perlã£ã½ãï¼
- iPhoneæã¡æ©ãã¦ã¦ãããã§èªåã®ä½ã£ãç©ãåãã¦ãã¨ãã®ããï¼
WebAPIãå¿ é ã®æ¡ä»¶
- ãªã¢ã¼ãããã·ã¥
- ã¢ããªå 課é
å¿ è¦ãªæè¡
- HTTPéä¿¡
- JSON or XMLãã¼ã¹
- or æ£è¦è¡¨ç¾
HTTPéä¿¡
- NSURLRequest
- æ¨æºAPI
- é¢åãæ«æãã
- ASIHTTPRequest
- NSURLRequestãã©ãããããã®
- libcurl
- Objective-Cã¯cã使ããã®ã§
JSONãã¼ã¹
- JSON Framework
- stringã«JSONValueã¨ããã¡ã½ãããçãã
- æ»ãå¤ã¯é åã ã£ããããã·ã¥ã ã£ãã
- stringã«JSONValueã¨ããã¡ã½ãããçãã
#impot "JSON.h"
NSObject* obj = [json JSONValue];
- ãããã©ãã
- nullã®åå¨ã§ããã
- NSArrayã«nilï¼Objective-cã®nullã®ãã¨ï¼ã¯å
¥ããããªã
- é åã®çµç«¯ã表ãã®ã§éä¸ã«å ¥ããããªã
- ãªã®ã§ãNSNullã¨ããã¯ã©ã¹ãè¦èã®ä½ã§å
¥ã£ã¦ãã
- ãã ãããã¤ã¯è©ä¾¡ããã¨çãªã®ã§ä»¥ä¸ã®ããã«ç¢ºèªãã
// fooã¨ããkeyã§ãªããã¤ãããNSNullã§ã¯ãªã if (![[obj objectForKey:@"foo"] isKindOfClass:[NSNull class]]) { }
XMLãã¼ã¹
- JSON使ãããªããããã使ããªãæ¹ããããã©ãã©ããã¦ã使ããããªãã
- NSXMLParser
- socksã®APIã§ãããã使ãã¥ãã
- libxml
- NSXMLParser
ãæ軽Example
- 以ä¸2ã¤ãçµã¿åãããã¨æå¼·ã«æ¥½
- libcurl+JSONã楽
- Blocksæ§æ+GCD(Grand Central Dispatch)ã®åå¨
- ç¡åé¢æ°ã¿ãããªãã®
- ãããªæãã§æ¸ãã
// typesterã®ã¤ã¶ãããåå¾ããAPIãå©ãã¦ãçµæãonCompleteã®ã³ã¼ã«ããã¯ã«é£ããã [API tweetsFor:@"typester" onComplete:^(API* res) { NSLog(@"api response: %@", res.content); }]
-
- APIã¯èªåã§ä½ã£ãclass
// ç°¡ç¥åãã¦ã¶ãã¯ãª +(void)tweetsFor:(NSString*)screen_name onComplete:(void (^)(API*))callback { // ã¡ã¤ã³ã¹ã¬ãã dispatch_queue_t mq = dispatch_get_main_queue(); // ããã©ã«ãã®ãã©ã¤ãªãªãã£ã®ã¹ã¬ãã dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(q, ^{ // curlã§HTTPãªã¯ã¨ã¹ã CURL* curl = curl_easy_init(); // çµãã£ããã³ã¼ã«ãã㯠dispatch_async(mq, ^{ callback(api); }); }); }
- dispatch_async使ã£ã¦ã¹ã¬ããä½ã
- GCDã®ã¡ã½ãã
- 第ä¸å¼æ°ã®ãã¥ã¼ã«ç¬¬äºå¼æ°ã§æ¸¡ãããããã¯ãå®è¡ããã
- GCDã®ã¡ã½ãã
- ãã®æ¸ãæ¹ãå¯è½ã«ãªãåã¯èªåã§libcurlç¨ã®ã¹ã¬ãããæ¸ããªãã¨ã¡ã¤ã³ã¹ã¬ãããæ¢ã¾ã£ã¦ãã¾ã£ã¦å¤§å¤ã ã£ã
Blocksæ§æ
- ããã°åç §
GCD
- å¦çãå¥ã¹ã¬ããã«æ¸¡ãã¦å®è¡ã ã¨ããå
¨é¨ã®å¦çãçµãã£ã¦ããã¨ãè²ã
ã§ãã¦é¢ç½ã
- Perlã§ããAnyEventã¨ãCoroã«ä¼¼ã¦ã
dispatch_async(queue, ^{ // ããã«å¦ç });
- ãªãã¡ã¬ã³ã¹è¦ã¦ã
ãªã¢ã¼ãããã·ã¥ãPerlããããããã«ã¯
Any::Mooseã§ã¯ããããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°(10min) - id:gfx
- ç波大å¦ã§å¦ç
- Mouseã®ã¡ã³ãã
Mooseã«ã¤ãã¦
Mooseã¨ããã¯ã©ã¹ãã«ãã¼
- ã³ã³ã¹ãã©ã¯ã¿ãã¢ã¯ã»ãµãä½ã£ã¦ããã
- æ¡å¼µããããã¤ãã·ã£ã©ã¤ã¶ï¼BUILDï¼ã¨ãã¹ãã©ã¯ã¿ï¼DEMOLISHï¼ãç¨æ
- ãã¼ã«ï¼ã¾ãã¯ãã¬ã¼ãï¼ã«ãã£ã¦å®å ¨ã«å¤éç¶æ¿ãã§ãã
use Any::Moose;
ã¢ããªãã¥ã¼ã
- æ§è³ªï¼åï¼
- ããã便å©ãªã®ã§ä¸æ¦moose使ãåºãããæ»ããªããªã
- é 延è©ä¾¡
Moose FAQ
- Mooseã¯ä½¿ãã¹ãï¼
- é常ã«ä¾¿å©ãªã®ã§è©¦ãã¹ã
- Mooseã£ã¦éãï¼
- Mouse軽ãã
- ä¾åã¢ã¸ã¥ã¼ã«ã¯ï¼
- Mouseã¯ä¾åãã¦ãªãã
- å®å®ãã¦ããï¼
- ã¯ã©ã¹ãã«ãã¼ã¨ãã¦ä½¿ãåã«ã¯å®å®ãã¦ãã
- Mooseã¨Mouseã®äºææ§ã¯ï¼
- éã£ã¦ããå®è£ ããã®ã§æãã¦ãã ãã
PerlCasual åå¿è åãåå¼·ä¼ï¼Web APIã®åºç¤ - yusukebe(id:kamawada)
åæç¥è
- Webãæ¯ããæè¡ãããã¾ã¨ã¾ã£ã¦ãã®ã§è²·ã£ã¦ãã ãã
- HTTP,URI,GET/POST,JSON
3ã¤ã®æµã
- ãªã¯ã¨ã¹ããGETãJSONãªã©ã®ã¬ã¹ãã³ã¹ããã¼ã¹
Twitter Search API
- ãã°ã¤ã³å¿ è¦ãªãTwitterã®ã¤ã¶ããæ¤ç´¢åå¾API
- http://dev.twitter.com/doc/get/search
- ããã¥ã¡ã³ããèªããã¨ã¯éè¦
APIã使ãä¸ã§ã®ãã§ãã¯ãã¤ã³ã
Webãã©ã¦ã¶ã使ã£ãæ¤è¨¼
ãªã¯ã¨ã¹ãURIã®æ§ç¯
- æ¥æ¬èªãªã©ASCIIæå以å¤ã¯ä½¿ããªã
- URIã¨ã¹ã±ã¼ãããªãã¨ãã¡
- URIã¢ã¸ã¥ã¼ã«ä½¿ãã°åæã«ãã£ã¦ããããï¼ä»¥ä¸ã®ãããªæãã«ããã°ããï¼
my $query = 'ãã¯ãã'; my $uri = URI->new('http://search.twittter.com/search.json'); $uri->query_form( q => $query, )
WebAPIã«ã¢ã¯ã»ã¹ãã
- LWP::UserAgentã使ç¨ããã°è¯ã
- HTTP::Requestã§ãªã¯ã¨ã¹ãä½ã£ã¦ãã¡ã½ããæå®ãã¦æãã¦ãHTTP::Responseã§åãåã
çµæããã¼ã¹
- cpanm JSONã§ã¤ã³ã¹ãã¼ã«
- JSON::XSãJSON::PPãå ¥ãã¯ã
- JSONã«ãããæ¥æ¬èª
- \uXXXXã¨ããUnicodeãã¼ã¹ã®asciiæåã¸ã®ã¨ã¹ã±ã¼ã
- ãã¯ãã
- \u304a\u306f\u3088\u3046
JSONã¢ã¸ã¥ã¼ã«
- decode_jsonã§ãã¼ã¹ãã¦ããã¦ãEncodeã¢ã¸ã¥ã¼ã«ã§ä½¿ãããæåã³ã¼ãã«encodeãã¦åºå
WebService::Simple
- ãã使ãã¨ãã£ã¨ç°¡åã«ä½ãããï¼
ã¾ã¨ã
- Web API = ã巨人ã®è©ã«ç«ã¤ããã¨ãã§ãããããããªã
- ã¢ã¤ã¶ãã¯ãã¥ã¼ãã³ãè¨ã£ããã£ãããè¨è
- Web+DB PRESS Vol.58ã«è¨äºè¼ã
- ãyusukebeããã®è¨äºé¢ç½ãã£ãããã£ã¦æ稿ããã¨æ ªãä¸ããã®ã§ãããããé¡ããã¾ã
PerlCasual åå¿è åãåå¼·ä¼ï¼zenra_botã®ã©ã¤ãã³ã¼ãã£ã³ã° - id:sugyan
- use strict;æ¸ããªãã¨livedoorã«å ¥ããªã
- cpanmãã¤ã³ã¹ãã¼ã«
- Net::Twitterãã¤ã³ã¹ãã¼ã«
- 使ãæ¹ã¯perldocè¦ã¾ããã
- perldoc Net::Twitter
- printãããã°ã§ä½ãå§ã
- ARRAYãè¿ã£ã¦ãã¦ã
- å¾ç½®forã§$_ãã¦ç¢ºèª
- HASHãè¿ã£ã¦ãã¦ã¾ãã
- YAMLã§Dumpããã®ã好ããªã®ã§use YAML;ã§ã
- Dumpçµæè¦ãã¨textã§çºè¨ãåããã¿ãã
- èªè¨¼ãã¦ã¿ã¾ããã
- configæ å ±ãã¹ãæ¸ãããããªãã®ã§ãConfig::Pitãuseãã¾ããã
- cpanm Config::Pitã§ã¤ã³ã¹ãã¼ã«
- pit_get()使ã£ã¦å¥ã®å ´æã«å ¥ããæ å ±ã$configã«å ¥ãã¦èªè¨¼ã«ä½¿ãã
ããããå ¨è£¸
- Yahoo!ã«æ¥æ¬èªè§£æã®APIãããã®ã§ä½¿ã
- WebService::Simpleã使ã£ã¦ã¿ã
- Yahoo!ã®ãã¼ã¸ã«ä½¿ãæ¹ãããã®ã§ãã®éãã«WebService::Simpleã«å
¥ãã
- parse_referenceã§ã¬ã¹ãã³ã¹ããã¼ã¹
- sub zenrizeãä½æãã¦ä½ã£ãã«ã¼ãã³ãè©°ãè¾¼ã
ã¾ã¨ã
- ãããªæãã§ç°¡åã«å ¨è£¸botä½ããã
HTML5æ代çä½ç½®æ å ± - id:yappo
- ã©ã¤ããã¢ã§ãã±ã¿ããããªãªã¼ã¹ãããã®ã§ä½ç½®æ å ±ã®è©±
ä½ç½®æ å ±ã®åå¾
- Geolocation APIã§åå¾
- ã¢ãã³ãªãã©ã¦ã¶ã®JavaScriptã§å®è¡ã§ãã
- IE6ã¯æ»ããããã°ãã
- ã¢ãã³ãªãã©ã¦ã¶ã®JavaScriptã§å®è¡ã§ãã
ããï¼å®éã«åå¾ãã¦ã¿ãã¨ã©ã¤ããã¢ã®å°å³æ å ±ãéã
ä½ãéãã
- ã©ã¤ããã¢ã¯æ§æ¥æ¬æ¸¬å°ç³»
- Geolocation APIã¯WGS84ãæ¡ç¨
- åãå¤ã§ã400mãããå·®ãåºã
Perlã§æ¸¬å°ç³»ã®å¤æ
- Geo::Coordinates::Converter
- ãã©ã¼ãããå¤æ
- ãã©ã¬ãã«ãªãã§ã測å°ç³»ããã©ã¼ãããã追å å¯è½
ä½ç½®æ å ±ãã©ã使ãï¼
- ã©ã®å¸çºæã«å«ã¾ãã¦ãããï¼ãªã©
- ãã®è¾ºã¯ã«ã¸ã¥ã¢ã«ãããªãã®ã§è©³ããã¯Web+DB PRESS Vol.57ã¸ã
- iAreaãããã³ã°ããããªãã«ä½¿ãã
- CPANããã
ä½æãã緯度çµåº¦ã¯ï¼ãã®éã¯ï¼
- id:miyagawaããã®Geo::Coder::Google
- googleMapsã®APIã§ä½ç½®æ å ±ããä½æå¼ããã¨ãå¯è½
ã¾ã¨ã
- Perlã§æ軽ã«ä½ç½®æ å ±ãæ±ãæºåã¯ãã
ã©ã¤ããã³ã°ãã¼ã¯
ã¿ããªå¤§å¥½ã Encode - id:xaicron
- DeNAã§åãã¦ã
æåã«
- decodeãã¦ããã£ã¦encode
æ¤ç´¢ããã¨ããè¦ããã¤
use Encode;
- ãã¤ãæååãPerlã®å é¨æåå(flagged utf8)ã«å¤æ/ã¾ãã¯ãã®é
- octet baseãããªãcharacter baseã®ã³ã¼ãã£ã³ã°ãã§ãã
- Core Module
- ã¡ã³ãããid:dankogai
- ã§ããã°5.8.8以ä¸ã使ã£ã¦æ¬²ãã
æ
- å¤é¨ããæ¥ããã®ã¯å
¨ã¦decodeãã
- å¼æ°ãSTDINãDBãHTTP
- å¤é¨ã«åºåãããã®ã¯å
¨ã¦encodeãã
- STDOUT/STDERRããã¡ã¤ã«æ¸ãè¾¼ã¿ãDBã¸ã®æ¸ãè¾¼ã¿ãHTMLã¸ã®ã¬ã³ããªã³ã°
decode/encode
- decode
- ãä»»æã®ããã¤ãæååãå é¨æååã¸å¤æ
- encode
- decodeã®é
å é¨æååã ã¨ã©ããªãï¼
- ä¸æåãããã°ã©ã çã«ä¸æåã¨ãã¦æ±ããã
- lengthã§æåæ°ãè¿ã£ã¦ãã
- æ£è¦è¡¨ç¾ã¨ãsubstrã¨ãsplitã§ã¦ãã¼
use strict fast - id:piarra
- Hikaku.comã®CTO
- MD5ãæç®ã§ã§ãã人ã§æå
- ã¨è¨ãåãã¤ã人ã§æå
- use strict;
- éããªãï¼
- strict::fastã¤ãã£ã
package strict::fast; sub import { $^H |= 0x000602; } 1;
-
- 6%éããªã£ãï¼
- ã§ããå®ç¨çã«ã¯use common::sense;使ã£ãæ¹ãããã§ã
use utf8; use strict; # no 'refs' use warnings;
- æ¬å½ã®æ¬é¡ã
- use strict;ãéãããâéãæã¦ã°ãã
- ç¥ãã¨ust
- use strict;ãéãããâéãæã¦ã°ãã
- ustrict.tvãä½ã£ãï¼
- http://ustrict.tv/
- ã¿ã¤ãã³ã°ãã¦twitterã«æ稿ã§ãã
- http://ustrict.tv/