¥È¥Ã¥× ºÇ¿· Äɵ­

2008-02-01 [ĹǯÆüµ­]

_ ²Ãǽ¥¬¥Ë

ÀÐÀ»º¤Î¥º¥ï¥¤¥¬¥Ë¤Î̾¾Î¤¬²Ãǽ¡Ê¤«¤Î¤¦¡Ë¥¬¥Ë¤Ë·è¤Þ¤Ã¤Æ¤¤¤¿¤½¤¦¤Ç¤¹¡£¡ÊÃΤé¤Ê¤«¤Ã¤¿¡£¡Ë¤½¤¦¤¤¤¨¤ÐÀÐÀ»º¤Î¥º¥ï¥¤¥¬¥Ë¤Ë¤Ï±ÛÁ°¥¬¥Ë¤È¤«¾¾ÍÕ¥¬¥Ë¤ß¤¿¤¤¤Ê̾Á°¤Ê¤«¤Ã¤¿¤Í¡£

¤Á¤Ê¤ß¤Ë¥«¥Ë¤ÏÌÌÅݤʤΤǤ¢¤Þ¤ê¹¥¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Ç¤â¤¢¤¨¤Æ¿©¤Ù¤ë¤Ê¤é¥º¥ï¥¤¤À¤Ê¤È»×¤¤¤Þ¤¹¡£ÆüËܳ¤Â¦¤Ë½»¤ó¤Ç¤¤¤ÆÅߤ㤤ÎÌ£³Ð¤ò°¦¤Ç¤Ê¤¤¼ê¤Ï¤Ê¤¤¡£

Tags: Æü¡¹

2008-02-07 [ĹǯÆüµ­]

_ ¸À¸ì¤Î³Ø½¬¤È¤«ÍøÍѤȤ«¡§wtnabe¤Î¾ì¹ç

¢¨ º£²ó¤ÏŰÄìŪ¤Ë¼«Ê¬¸ì¤ê¤Ç¹Ô¤¯¤¼¡£¶½Ì£¤Ê¤«¤Ã¤¿¤é̵»ë¤·¤Æ¤ª¤¯¤ó¤Ê¡£¸À¸ì¤ÎÁ±¤·°­¤·¤ò¸ì¤ëµ¤¤Ï¤Ê¤¤¤¼¡£¼«Ê¬¤Î´¶¤¸¤¿¤Þ¤Þ¤ò½ñ¤¯¤¼¡£

½é¤á¤ËÃǤäƤª¤¯¤È¼«Ê¬¤Ï Matz ¤Î¤è¤¦¤Ê¸À¸ì¥ò¥¿¤Ç¤â¤Ê¤¤¤·¡¢´ðËÜŪ¤Ë¤Ï C ·Ï¤Î¸À¸ì¤·¤«ÃΤé¤Ê¤¤¡£´Ø¿ô·¿¸À¸ì¤¬Î®¹Ô¤Ã¤¿¤Î¤ÏÃΤäƤ¤¤ë¤±¤É¼«Ê¬¤Ç¤Ï¥â¥Î¤Ë¤Ç¤­¤Æ¤¤¤Ê¤¤¡£Emacs ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç Lisp ¤Ë¿¨¤ì¤ëµ¡²ñ¤Ï¤¢¤ë¤¬¤³¤ì¤Ï¤Û¤ÜÆþ¤ê¸ý¤ÇºÃÀÞ¤·¤Æ¤¤¤ë¡£¡Ê°ì±þ Gauche ¤È¤«»î¤·¤Æ¤ß¤Æ¤Ï¤¤¤ë¤ó¤À¤±¤É¡Ë

¤È¤¤¤¦¤ï¤±¤Ç¼«Ê¬¤Ï¤­¤Ã¤ÈÀ¤¤ÎÃæ¤Î¸À¸ì¤ò¸ì¤ë¿Í¤ÎÃæ¤Ç¤ÏÁǿͤä½é¿´¼Ô¤Ë¶á¤¤Êý¤À¤í¤¦¤È»×¤¦¡£¤½¤¦¤¤¤¦¼«Ê¬¤¬¾¯¤Ê¤¤·Ð¸³¤ò»¯¤¹¤Î¤Ï¤«¤Ê¤ê¶²¤í¤·¤¤¤³¤È¤Ç¤Ï¤¢¤ë¤Î¤À¤¬¡¢PHP ¤ò»È¤¦¿Í´Ö¤ÎÃæ¤Ë¤Ï¤³¤¦¤¤¤¦Åۤ⤤¤ë¡¢¤È¤¤¤¦°ìÎã¤È¤·¤ÆÆÉ¤ó¤Ç¤â¤é¤¨¤ë¤È´ò¤·¤¤¡£¤Á¤Ê¤ß¤Ë¥ª¥Á¤Ï¤Ê¤¤¤Î¤Ç´üÂÔ¤·¤Ê¤¤¤è¤¦¤Ë¡£

¸½ºß¤Î¾õ¶·

2008ǯ2·î¸½ºß¡¢¼«Ê¬¤¬¤è¤¯»È¤Ã¤Æ¤¤¤ëÆ»¶ñ¤Ï¤À¤¤¤¿¤¤°Ê²¼¤Î4¤Ä¤Ç¤¢¤ë¡£

  • awk
  • Perl
  • Ruby
  • PHP

¢¨ awk ¤Ï¸À¸ì¤¸¤ã¤Ê¤¤¤È¤¤¤¦°Õ¸«¤â¤¢¤ë¤È»×¤¦¤±¤É¡¢º£¤Ï¤½¤ì¤ÏÃÖ¤¤¤È¤¤¤Æ¤Û¤·¤¤¡£

C¤òÁ¦¤á¤Ê¤¤Íýͳ

¾å¤Ëµó¤²¤¿¤â¤Î¤è¤ê°ÊÁ°¤Ë¤ä¤Ã¤¿¤Î¤Ï

  • BASIC
  • FORTRAN
  • CASL
  • C

¤Ç¤¢¤ë¡£¤³¤Î¤¦¤ÁºÇ¤âÍ·¤ó¤À¤Î¤Ï BASIC, ¤Î¤Á¤ËºÇ¤â±Æ¶Á¤òÍ¿¤¨¤¿¤Î¤Ï´Ö°ã¤¤¤Ê¤¯ C ¤Ç¤¢¤ë¡£¤Ê¤¼¤Ê¤é awk, Perl, Ruby, PHP ¤Ï´ðËÜŪ¤Ë C ¤ÎÃμ±¤Î±äĹ¾å¤Ë³Ø¤Ù¤ë¤«¤é¡£¤·¤«¤·¼«Ê¬¤Ï C ¤ò¶¯¤¯Á¦¤á¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤·¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¼«Ê¬¤¬ C ¤ò¼ÂºÝ¤ËɬÍפȤ¹¤ë¤³¤È¤¬¤Ê¤¤¤«¤é¡£OS ¤ò½ñ¤¯¤³¤È¤â¥Ï¡¼¥É¥¦¥§¥¢¤òÁàºî¤¹¤ë¤³¤È¤â¼«Ê¬¤Ç¤Ï¤ä¤é¤Ê¤¤¤·¡¢¼«Ê¬¤Ç²¿¤«¤ò C ¤Ç½ñ¤¯¤È¤¤¤¦¤³¤È¤Ï¤Û¤È¤ó¤É¤Ê¤¤¡£C ¤ÎÃμ±¤Ïº£¤Î¼«Ê¬¤Ë¤È¤Ã¤ÆÈó¾ï¤ËÍ­±×¤À¤¬¡¢³Ø½¬¥³¥¹¥È¤â¤½¤ì¤Ê¤ê¤ËÂ礭¤«¤Ã¤¿¤·¡¢¤½¤Î·ë²Ì¡Ö¤Ç¤­¤ë¤³¤È¡×¤Ë¤¢¤ó¤Þ¤ê¶½Ì£¤¬Í¯¤«¤Ê¤«¤Ã¤¿¤È¤¤¤¦¤Î¤¬Â礭¤¤¡£¡Ê¤â¤·¤«¤¹¤ë¤È¼«Ê¬¤Ï´ðËÜŪ¤Ë·×»»µ¡¤½¤Î¤â¤Î¤Ë¤¢¤Þ¤ê¶½Ì£¤¬¤Ê¤¤¤Î¤«¤â¤·¤ì¤Ê¤¤¡£¡Ë

º£»È¤Ã¤Æ¤¤¤ë¸À¸ì¤ÎÃæ¤Ç¡¢¼ÂºÝ¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤ÆºÇ¤â´¶Æ°¤ò³Ð¤¨¤¿¤Î¤Ï awk¡¢¼¡¤¤¤Ç Ruby ¤Ç¤¢¤ë¡£¤À¤«¤é¼«Ê¬¤Ï¤³¤ÎÆó¤Ä¤Î³Ø½¬¤òÁ¦¤á¤ë·¹¸þ¤Ë¤¢¤ë¡£¤¿¤À¤·¤³¤ì¤òÆþ¤ê¸ý¤Ë¤¹¤ë¤Î¤¬Å¬ÀÚ¤«¤É¤¦¤«¤Ï¼«Ê¬¤Ë¤ÏȽÃǤ¬¤Ä¤«¤Ê¤¤¤Ç¤¤¤ë¡£È½ÃǤϤǤ­¤Ê¤¤¤¬º¬µò¤ò¼¨¤¹¤³¤È¤Ï¤Ç¤­¤ë¡£º£²ó¤Ï¤½¤ì¤ò½ñ¤³¤¦¤È»×¤¦¡£

awk ¤òÁ¦¤á¤ëÍýͳ

awk ¤Ï Unix ¤Î `Tools' ¤È¤¤¤¦³µÇ°¡¢¥Ñ¥¤¥×¤Îµ¡Ç½¤È¼Â¤Ë¤è¤¯¥Þ¥Ã¥Á¤·¡¢¾®²ó¤ê¤Î¸ú¤¯Èó¾ï¤Ë¤è¤¯¤Ç¤­¤¿Èþ¤·¤¤Æ»¶ñ¤Ç¤¢¤ë¡£¤â¤· Perl, Ruby ¤Ê¤É¥Õ¥ë¥»¥Ã¥È¤Î¸À¸ì¤ò³Ø½¬¤¹¤ë¤Î¤ÏÌÌÅݤÀ¤¬¡¢¤½¤ì¤Ê¤ê¤ÎÎ̤Υǡ¼¥¿¤ò Excel ¤Î¼êºî¶È¤ä VBA ¤ä VBS ¤è¤ê¤â¤â¤¦¾¯¤·¥¨¥ì¥¬¥ó¥È¤Ë¡¢¤¢¤ë¤¤¤Ï¡Ö·Ú¤¯¡×½èÍý¤·¤¿¤¤¤È»×¤¦¤Ê¤é awk ¤Ï¥ª¥¹¥¹¥á¡£¹Ôñ°Ì¤Ë¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤à¡¢¹Ô¤ò¥«¥é¥à¤Ëʬ³ä¤·¤Æ³ÊǼ¤¹¤ë¤È¤¤¤¦½èÍý¤ò¼«Æ°¤Ç¹Ô¤Ã¤Æ¤¯¤ì¤ë¤Î¤Ç¡¢¼«Ê¬¤ÎÌÜŪ¤Î¥Ç¡¼¥¿¤Î½èÍý¤À¤±¤Ë½¸Ã椹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

Î㤨¤Ð¥Ç¥Õ¥©¥ë¥È¤Ç¥Û¥ï¥¤¥È¥¹¥Ú¡¼¥¹¶èÀÚ¤ê¤Î¥Ç¡¼¥¿

abc def ghijkl

¤ò

$1 = "abc"
$2 = "def"
$3 = "ghijkl"

¤È¼«Æ°Åª¤ËËè¹Ô³ÊǼ¤·¤Æ¤¯¤ì¤ë¡£$1, $2, ... ¤¬µ¤»ý¤Á°­¤¤¤È¤¤¤¦°Õ¸«¤Ï¤¢¤ë¤È»×¤¦¤¬¡¢¤³¤ì¤ÏÎò»ËŪ¤Ê·Ð°Þ¤Ã¤Æ¤ä¤Ä¤ÇǼÆÀ¤·¤Æ¤Û¤·¤¤¡£µ¤¤ËÆþ¤é¤Ê¤±¤ì¤Ð¼«Ê¬¤Ç̾Á°¤òÉÕ¤±¤¿ÊÑ¿ô¤ËÆþ¤ìľ¤·¤Æ½èÍý¤¹¤ì¤Ð¤¤¤¤¤À¤±¤ÎÏäÀ¡£

awk ¤ÏÈþ¤·¤¤¡£awk ¤Ë¹¥°ÕŪ¤Ê¿Í¤Ï¶²¤é¤¯¤Û¤Ü¤ß¤ó¤ÊƱ°Õ¤·¤Æ¤¯¤ì¤ë¤Ï¤º¤À¡£awk ¤ÎÈþ¤·¤µ¤Ï·é¤µ¤Ç¤â¤¢¤ë¡£¡Ö¸½¼ÂŪ¤Ê¿Í´Ö¤Ï¡×¶²¤é¤¯ awk ¤Ç¤¹¤Ù¤Æ¤òÊÒÉÕ¤±¤ë¤³¤È¤Ï¤·¤Ê¤¤¡£¤·¤«¤··é¤µ¤Ï³Ø¤Ó¤ä¤¹¤µ¤Ç¤â¤¢¤ë¡£

Perl ¤Ç¶ìÏ«¤·¤¿ÏÃ

awk ¤Î¤¢¤È¤Ë Perl ¤ò³Ø¤ó¤À¤¬¡¢¤ä¤Ï¤êºÇ½é¤Î°õ¾Ý¤Ï¡Ö¤­¤¿¤Í¡¼¸À¸ì¤À¡×¤È¤¤¤¦¤â¤Î¤À¤Ã¤¿¡£¤³¤Î°õ¾Ý¤Ïº£¤Ç¤â¤¢¤Þ¤êÊѤï¤é¤Ê¤¤¡£¤º¤¤¤Ö¤óµ¤¤Ë¤Ê¤é¤Ê¤¯¤Ê¤Ã¤¿¤±¤É¡£

¤¤¤Á¤Ð¤ó¤Ï¤¸¤á¤Ï¡¢Perl ¤Î½¬ÆÀ¤Ï¤¢¤Þ¤ê¶ìÏ«¤·¤Ê¤«¤Ã¤¿¡£BASIC ¤Î¤è¤¦¤Ê´¶³Ð¤Ç»È¤¨¤¿¤«¤é¡£¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Ï»È¤¤ÊüÂê¤À¤·¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤È¤¤¤¦¹Í¤¨Êý¤â BASIC, FORTRAN ¤ÈÂ纹¤¬¤Ê¤«¤Ã¤¿¡£C ¤Î¤è¤¦¤Ê¹½Ê¸¤Ç¤Ï¤¢¤ë¤ó¤À¤±¤É C ¤È°ã¤Ã¤Æ´Ø¿ô¤òÁȤ߾夲¤ë´¶¤¸¤Î¸À¸ì¤¸¤ã¤Ê¤¤¤ó¤À¤Ê¡¼¤È¤¤¤¦°õ¾Ý¤À¤Ã¤¿¡£º£¤Ë¤·¤Æ»×¤¦¤È¤³¤ì¤¬¶ìÏ«¤Î»Ï¤Þ¤ê¤À¤Ã¤¿¤ó¤À¤±¤É¡£

¤´Â¿Ê¬¤Ë±Ì¤ì¤º¡¢¤À¤ó¤À¤ó¤ÈÀΤμ«Ê¬¤¬½ñ¤¤¤¿¥³¡¼¥É¤¬ÆÉ¤á¤Ê¤¯¤Ê¤Ã¤Æ¤­¤¿¡£¤È¤¤¤¦¤«ÌýÃǤ¹¤ë¤ÈºòÆü¤Î¥³¡¼¥É¤Ç¤â°ÕÌ£¤¬Ê¬¤«¤é¤Ê¤¤¡£

package ¤Ã¤Æ¤Î¤¬¤¢¤ë¤é¤·¤¤¤Ê¤¡¤È»×¤¤¤Ä¤Ä¡¢º£¤«¤é¿ôǯÁ°¤Ë Perl ¤ò¤ä¤êľ¤¹¤Þ¤Ç¤Ï¤ªÀ¤¼­¤Ë¤â¤¤¤¤¥³¡¼¥É¤Ï½ñ¤±¤Ê¤«¤Ã¤¿¤·¡¢º£¤â½ñ¤±¤ë¼«¿®¤Ï¤Ê¤¤¡£¡Êº£¤Î¾õÂ֤ϵîǯ¤ÎÆüµ­¤Î¤Þ¤È¤á¤Ë¤½¤Î°ìü¤¬¸«¤Æ¼è¤ì¤ë¤È»×¤¦¡£¡Ë

¤È¤Ë¤«¤¯¡¢¼«Ê¬¤Ç½ñ¤¤¤È¤¤¤Æ°ÕÌ£¤¬Ê¬¤«¤é¤Ê¤¤¥³¡¼¥É¤¬Áý¤¨¤Æ¡¢¤¤¤ä¤Êµ¤Ê¬¤òÌ£¤ï¤¦¤³¤È¤¬Áý¤¨¤Æ¤­¤¿¤È¤¤¤¦°õ¾Ý¡£Perl ¤½¤Î¤â¤Î¤ÎÌäÂê¤Ç¤Ï¤Ê¤¤¤³¤È¤Ïº£¤Ê¤éʬ¤«¤ë¤ó¤À¤±¤É¡¢¤Á¤ç¤¦¤É Perl ¤ò¤¤¤¸¤Ã¤Æ¤¤¤¿º¢¤¬¤½¤ì¤È½Å¤Ê¤Ã¤¿¤Î¤Ç¤È¤Ë¤«¤¯¤¤¤¤°õ¾Ý¤¬¤Ê¤¤¡£¤¿¤À¤· sh, grep, awk ¤Î¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤È¤·¤ÆÌÜŪ¤òãÀ®¤¹¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤ª¤¤¤Æ¤Ï¤ä¤Ï¤ê¤«¤Ê¤ê¶¯ÎϤǡ¢¶¯Âç¤À¤·¡¢º£¸å¤â Perl ¤Î¤Ê¤¤À¤³¦¤È¤¤¤¦¤Î¤Ï¤Þ¤ºÁÛÁü¤Ç¤­¤Ê¤¤¡£

¤¿¤À PHP ¤ÈƱ¤¸¤Ç¡¢¥æ¡¼¥¶¡¼¤¬¤ï¤¶¤ï¤¶¥¢¥¯¥·¥ç¥ó¤òµ¯¤³¤·¤Æ¼é¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤ªÌ󫤬¿¤¹¤®¤ë¡£¤³¤¦¤¤¤¦¸À¸ì¤ÏÆþÌç¤Ë¤Ï¸þ¤«¤Ê¤¤¤È»×¤¦¡£µ¤¤Ë¤·¤Ê¤±¤ì¤Ðµ¤¤Ë¤·¤Ê¤¤¤Ç¤âư¤«¤»¤ë¤¬¡¢ºÇ½é¤Ë°­¤¤ºîË¡¤ò¿È¤Ë¤Ä¤±¤¿¤¢¤È¤ËÎɤ¤ºîË¡¤ËÀÚ¤êÂØ¤¨¤ë¤Î¤Ï°Õ³°¤ÈÂçÊѤǤ¢¤ë¡£ÆÃ¤Ëư¤¯¥³¡¼¥É¤¬½ÐÍè¾å¤¬¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤«¤éÀÚ¤êÂØ¤¨¤ë¤Î¤Ï¼ì¤Î³°¥·¥ó¥É¥¤¡£

¥¼¥í¤«¤é¼«Ê¬¤Ç³Ø¤Ö¤Î¤Ç¤Ï¤Ê¤¯¡¢¥«¥Ã¥Á¥ê¤·¤¿¥³¡¼¥É»ñ»º¤Èµ¬Ìó¤Î¤¢¤ë²ñ¼Ò¤ËÆþ¤Ã¤Æ³Ø¤Ö¤Î¤Ê¤é¤¤¤¤¤È»×¤¦¡£

Ruby ºÃÀÞÂθ³¤È Ruby ¤òÁ¦¤á¤ëÍýͳ

Ruby ¤Ï°ìÅÙºÃÀÞ¤·¤Æ¤¤¤ë¡£¤½¤ÎÍýͳ¤Ï¤¤¤¯¤Ä¤«¤¢¤Ã¤Æ¡¢

  • Ruby ¤Ë¶½Ì£¤ò»ý¤Ã¤¿»þ´üÊդ꤫¤é¼«Ê¬¤Î¶½Ì£¤¬¥Æ¥­¥¹¥È½èÍý¤ä¥×¥í¥°¥é¥ß¥ó¥°¤«¤é¤¤¤Ã¤¿¤óÎ¥¤ì¤Æ¤·¤Þ¤Ã¤¿
  • ½é¤á¤Æ½ñÀÒ¤òÇã¤ï¤º¤Ë½¬ÆÀ¤·¤è¤¦¤È»î¤ß¤¿
  • ¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤ò°Õ¼±¤·¤¹¤®¤¿
  • ¥É¥­¥å¥á¥ó¥È¤ÎÁÛÄꤹ¤ë¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Î½¬ÆÀ¥ì¥Ù¥ë¤¬¼«Ê¬¤è¤ê¹â¤«¤Ã¤¿

¤³¤Î Ruby ¤Î³Ø½¬¤è¤ê¤âÁ°¤À¤Ã¤¿¤«¸å¤À¤Ã¤¿¤«¡¢¤Á¤ç¤Ã¤Èµ­²±¤¬¤¢¤¤¤Þ¤¤¤Ê¤ó¤À¤±¤É¡¢³µÇ°Åª¤Ê¥ì¥Ù¥ë¤Ç¤Ï¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤ÏÊÙ¶¯¤·¤Æ¤¤¤¿¡£¤·¤«¤·¤Þ¤Ã¤¿¤¯¥³¡¼¥É¤ò½ñ¤«¤º¤Ë¤Ï¤ä¤Ï¤êÍý²ò¤Ç¤­¤Ê¤¤¤â¤Î¤Ç¡¢¤Õ¡¼¤ó¤È»×¤Ã¤¿¤À¤±¤À¤Ã¤¿¡£¤Ç¡¢¤³¤ÎÃ챤À¤±¤Î¾õÂÖ¤ò Ruby ¤Ç¼ÂÂΤÎȼ¤¦¤â¤Î¤È¤·¤¿¤«¤Ã¤¿¤Î¤À¤¬¡¢¤Ï¤Ã¤­¤ê¸À¤Ã¤Æ¤Þ¤Ã¤¿¤¯»õ¤¬Î©¤¿¤Ê¤«¤Ã¤¿¡£

C++ ¤ä Java ¤Ê¤É¾¤Î¡¢¶µ²Ê½ñ¤ÎË­É٤ʸÀ¸ì¤Ç¾¯¤·¤Ç¤â¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤òÌ£¤ï¤Ã¤Æ¤¤¤¿¤Ê¤éÏäϰã¤Ã¤¿¤Î¤À¤í¤¦¤±¤É¡¢Ruby ¤Ï¤½¤³¤Ë¤¢¤Þ¤ê¤Ë¼«Á³¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤¬Â¸ºß¤¹¤ë¤Î¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ°ÊÁ°¤Î¥Î¥¦¥Ï¥¦¤ò¤¹¤Ç¤Ë»ý¤Ã¤Æ¤¤¤ë¾õÂ֤ǡ֤衼¤·¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤òÊÙ¶¯¤¹¤ë¤¾¡×¤È°Õµ¤¹þ¤ó¤Ç¤·¤Þ¤¦¤È¤Þ¤Ã¤¿¤¯¶õ²ó¤ê¤·¤Æ¤·¤Þ¤¦¤Î¤À¡£¤È¤¤¤¦¤«¼«Ê¬¤Ï¶õ²ó¤ê¤·¤Æ¤·¤Þ¤Ã¤¿¡£

¤¿¤Ö¤ó¸ÀÍդΰÕÌ£¤Ê¤ó¤«¤è¤¯Ê¬¤«¤é¤Ê¤¯¤Æ¤âư¤«¤·¤ÆÇ¼ÆÀ¤¹¤ë¤È¤¤¤¦¥×¥í¥»¥¹¤ò¤¯¤êÊÖ¤»¤Ð¤½¤ì¤Ç¤âÂç¾æÉפʤó¤À¤È»×¤¦¡£ÊѤʿ§¤¬¤Ä¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤½¤ó¤Ê¤â¤ó¤Ê¤ó¤À¤È°û¤ß¹þ¤à¤³¤È¤Ï²Äǽ¤À¤·¡¢º£¤Ï½ñÀÒ¤ò»Ï¤áÍÍ¡¹¤Ê¾ðÊó¤â½¼¼Â¤·¤Æ¤¤¤ë¡£

¤½¤Î¸å¡¢¤¤¤Ã¤¿¤ó Ruby ¤òÎ¥¤ì¡¢PHP ¤ò¤ä¤Ã¤Æ¡¢¤½¤Î¸å¤â¤¦°ìÅÙ Perl ¤ò·Ð¤¿¤¢¤È¤Ë Ruby ¤Ë¿¨¤ì¤¿¤Î¤À¤¬¡¢º£Å٤϶䯤ۤɥ¹¥à¡¼¥º¤Ë½¬ÆÀ¤Ç¤­¤¿¡£

¤³¤Î¤È¤­¡¢¤¤¤Á¤Ð¤ó¼«Ê¬¤ÎÃæ¤Ç°ú¤Ã³Ý¤«¤Ã¤Æ¤¤¤¿¤Î¤Ï PHP ¤Î class ¹½Ê¸¤È¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ç¤¢¤ë¡£¤É¤¦¤âǼÆÀ¤¤¤«¤Ê¤¤¡£¤³¤ì¤¬ËÜÅö¤Ë¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤«¡© ¤³¤ÎÄøÅ٤Τâ¤Î¤¬¥Ñ¥é¥À¥¤¥à¥·¥Õ¥È¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ê¤Î¤«¡© Á´Á³ÊØÍø¤¸¤ã¤Ê¤¤¤¸¤ã¤ó¤È´¶¤¸¡¢¤Þ¤¿µóư¤¬¼«Ê¬¤ÎǼÆÀ¤Ç¤­¤ë¤â¤Î¤Ç¤Ê¤«¤Ã¤¿¤¿¤á¡¢Perl ¤Ç package ¤ò»È¤Ã¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤Ã¤Æ¤ß¤¿¡£PHP ¤ÇǼÆÀ¤Î¤¤¤«¤Ê¤«¤Ã¤¿¤â¤Î¤¬ Perl ¤Ç½ñ¤­Ä¾¤·¤¿¤é¤·¤Ã¤¯¤êÍ褿¡£¶²¤é¤¯¤³¤Î»þÅÀ¤Ç¤Ï¤Þ¤À PHP ¤è¤ê Perl ¤ÎÊý¤¬¼«Ê¬¤ÎÃæ¤ÇÆÀ°Õ¤Ê¸À¸ì¤À¤Ã¤¿¤ó¤À¤í¤¦¤·¡¢Perl ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤ÏºÇ½é¤«¤éÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ëµ¡Ç½¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½À®¤¹¤ëÍ×ÁǤò¥Ð¥é¥Ð¥é¤Ë¤·¤ÆÄ¾¤Ë¼ê¤Ë¼è¤Ã¤Æ¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤³¤ì¤¬ËÜÅö¤Ë¤è¤«¤Ã¤¿¡£¡Ö¤¢¤¡¡¢¤³¤¦¤¤¤¦É÷¤Ë¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤ò¼Â¸½¤¹¤ë¤ó¤À¤Ê¡×¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤Ã¤¿µ¤¤¬¤·¤¿¡£Æ±»þ¤Ë Perl ¤Î½ñ¤­¤Ë¤¯¤µ¤È¥â¥À¥ó¤Êµ¡Ç½¤Î¤¢¤ê¤¬¤¿¤µ¤â¼Â´¶¤Ç¤­¤¿¡£¡Ê¤³¤Î¤È¤­¤Ï¥¤¥Þ¥É¥­¤Î Class:: ·Ï¤Î¥â¥¸¥å¡¼¥ë¤Ê¤É¤Ï°ìÀڻȤ鷺¤ËÁ´Éô¥¼¥í¤«¤é½ñ¤¤¤ÆÆ°¤«¤·¤Æ¤ß¤¿¤Î¤Ç¤½¤ì¤Ê¤ê¤Ë¶ìÏ«¤·¤¿¤¬¡¢¤³¤Î·Ð¸³¤ÏËÜÅö¤ËÂ礭¤«¤Ã¤¿¡£¡Ë

¤½¤·¤ÆºÆ¤Ó Ruby ¤Ç¤¢¤ë¡£Perl ¤Ç¤¢¤ó¤Ê¤Ë¶ìÏ«¤·¤¿Éôʬ¤¬¤Û¤È¤ó¤ÉºÇ½é¤«¤é²ò¾Ã¤µ¤ì¤Æ¤¤¤ë¡£²¿¤â¤«¤â¥ª¥Ö¥¸¥§¥¯¥È¤À¡ª ¤½¤¦¤«¡¢Array ¤¬¥ª¥Ö¥¸¥§¥¯¥È¤À¤È¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë array ¤Î¥Ç¡¼¥¿¤òÆþ¤ì¤ëɬÍפ¬¤Ê¤¤¤«¤é°ú¿ô¤¬¸º¤ë¤Í¡ª ¤³¤ì¤Ç°ú¿ô¤Î½çÈ֤Ȥ«¤¯¤À¤é¤Ê¤¤¤³¤È¤òµ¤¤Ë¤·¤Ê¤¯¤Æ¤¤¤¤¤Í¡ª PHP ¤Î array_* ´Ø¿ô¤¬Â¿¤¤¤Î¤ò¤¹¤´¤¤¤È¤«»×¤Ã¤Æ¤¤¤¿¤±¤É¥Ð¥«¥Ð¥«¤·¤¯¤Ê¤ë¤Í¡ª $this-> ¤È¤« $self-> ¤È¤«Íפé¤Ê¤¤¤«¤é¥³¡¼¥É¤¬¸«¤ä¤¹¤¤¤Í¡ª < ¤À¤±¤Ç·Ñ¾µ¤Ç¤­¤Æ¤á¤Ã¤Á¤ã³Ú¤À¤Í¡ª ! ¤È¤« ? ¤¬¥á¥½¥Ã¥É̾¤Ë»È¤¨¤ë¤È°ÕÌ£¤¬¤Ï¤Ã¤­¤ê¤·¤Æ¤¤¤¤¤Í¡ª ưŪ¤Ë class ¤ÎÃæ¿È¤¬½ñ¤­´¹¤¨¤é¤ì¤ë¤È¼«Ê¬¤Î¤»¤¤¤¸¤ã¤Ê¤¤¥¨¥é¡¼¤ò¤Ê¤¯¤»¤ë¤«¤é¤¤¤¤¤Í¡ª Ʊ¤¸¥á¥½¥Ã¥É̾¤Ê¤éÊ̤ʥ¯¥é¥¹¤Ç¤â¤¤¤¤´¶¤¸¤Ë»÷¤¿Æ°ºî¤ò¤¹¤ë ( duck typing ? ) ¤Î¤Ç¡¢¤¤¤Á¤¤¤Á¥Þ¥Ë¥å¥¢¥ë°ú¤«¤Ê¤¯¤Æ¤â¤À¤ó¤À¤ó Ruby ¤Îưºî¤¬Í½ÁۤǤ­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤­¤Æ¤¤¤¤¤Í¡ª ¤Æ¤æ¡¼¤«¤ä¤Ã¤Ñ¤ê¥ª¥ì¤ÏÊÑ¿ô¤Ë $ ¤¬ÉÕ¤¯¤Î¤Ï¤­¤é¤¤¤Ê¤ó¤À¡ª

ËÜÅö¤Ë¤³¤ó¤Ê´¶¤¸¤Ç´¶Æ°¤ÎϢ³¤À¤Ã¤¿¡£¤É¤¦¤·¤Æ¤³¤ó¤Ê¤Ë¤¹¤ó¤Ê¤ê¤È¼«Ê¬¤ÎÃæ¤ËÆþ¤Ã¤Æ¤¯¤ë¤Î¤«ÉԻ׵Ĥʤ¯¤é¤¤¡£Perl ¤Î½ñ¤­¤Ë¤¯¤µÆÉ¤ß¤Ë¤¯¤µ¤â PHP ¤ÎÉÔ¼«Í³¤µ¤â¤Ê¤¤À¤³¦¡£1.8 ¤Ë¤Ê¤Ã¤Æ¥é¥¤¥Ö¥é¥ê¤âÁý¤¨¡¢ËÜÅö¤Ë³Ú¤ÇÊØÍø¤Ç¡¢½ñ¤¯¤³¤È¤¬¤È¤Æ¤â³Ú¤·¤¤¸À¸ì¡£¤½¤ì¤¬ÀµÄ¾¤Ê´¶ÁÛ¤À¡£¤½¤·¤ÆÁ¦¤á¤ëÍýͳ¤Ï¤³¤ì¤À¤±¤Ç¤Ï¤Ê¤¤¡£

²¿¤è¤ê¡¢Ruby ¤Îů³Ø¤Ï Perl ¤È°ã¤Ã¤ÆÍ¥¤·¤¯¥æ¡¼¥¶¡¼¤ò¹´Â«¤·¤Æ¤¯¤ì¤ë¡£¡Ö¤³¤ì¤Ï¤³¤¦¤¹¤ë¤Î¤¬¤¤¤¤¤ó¤À¤è¡×¤È¤¤¤¦»È¤¤Êý¤ò¥æ¡¼¥¶¡¼¤ËÄ󼨤·¤Æ¤¯¤ë¸À¸ì¤Ê¤Î¤Ç¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¤¤¤ë¤À¤±¤Ç¤½¤ì¤Ê¤ê¤ËÎɤ¤ºîË¡¤¬¿È¤Ë¤Ä¤¯¡£¤³¤ì¤Ï Perl ¤ä PHP ¤Ë¤Ï¤Ê¤¤¥á¥ê¥Ã¥È¤Ç¤¢¤ë¡£Àè¤Û¤É Perl ¤Ï¥¼¥í¤«¤é¼«Ê¬¤Ç³Ø¤Ö¾ì¹ç¤Ë¤Ï¥ª¥¹¥¹¥á¤·¤Ê¤¤¤È½ñ¤¤¤¿¤¬¡¢Æ±¤¸¥Ý¥¤¥ó¥È¤Ç Ruby ¤Ï½é³Ø¼Ô¤Ë¥ª¥¹¥¹¥á¤Ç¤­¤ë¤È»×¤¦¡£¡Ê¤â¤Á¤í¤óÁȤ߹þ¤ß¤Î class ¤òÇ˲õ¤Ç¤­¤ë¤Ê¤ó¤Æ¤Î¤Ï°­¤¤ºîË¡¤ò¿È¤Ë¤Ä¤±¤ä¤¹¤¤¤È¤â¸À¤¨¤ë¤ó¤À¤±¤É¡£¡Ë

Î㤨¤Ð¡¢¾¯¤Ê¤¯¤È¤â¼«Ê¬¤Ï Ruby ¤ò¿¨¤Ã¤Æ¤ß¤ë¤Þ¤Ç¤Ï Perl, PHP 3/4 ¤Î¤è¤¦¤Ë¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ËľÀܳ°¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤Ë¤½¤ì¤Û¤ÉÂ礭¤Êµ¿Ìä¤òÊú¤¤¤Æ¤¤¤Ê¤«¤Ã¤¿¡£¥¢¥¯¥»¥¹¤·¤Ê¤¤Êý¤¬¤è¤¤¤È¤¤¤¦Ãμ±¤Ï»ý¤Ã¤Æ¤¤¤¿¤¬¡¢¼ÂºÝ¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤ËÂФ·¤Æµ¿Ìä¤òÊú¤¤¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢ÅöÁ³¤Î¤è¤¦¤Ë¡Ö¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤òÁ°Äó¤È¤·¤¿¥³¡¼¥É¡×¤ò½ñ¤¤¤Æ¤·¤Þ¤Ã¤Æ¤¤¤¿¡£¤³¤ì¤¬¤·¤«¤· Ruby ¤Ç¤Ï¤Ç¤­¤Ê¤¤¡£attr_* ¤Ç¥¢¥¯¥»¥Ã¥µ¤òÄêµÁ¤·¤Æ¤ä¤ë¤È¤Û¤È¤ó¤É»ÈÍÑ´¶¤ÏÊѤï¤é¤Ê¤¤¤ó¤À¤±¤É¡¢¡Ö¤³¤Î°ì¼ê´Ö¤¬¤Ê¤ó¤«¥¤¥ä¡×¤Ç¡¢¤À¤ó¤À¤ó¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¤³¤È¤òÁ°Äó¤È¤·¤Æ½ñ¤¯¥¯¥»¤¬¤Ä¤¤¤Æ¤¯¤ë¡£

¤¹¤ë¤Èº£ÅÙ¤ÏľÀÜ¥¢¥¯¥»¥¹¤·¤Ê¤¤¤³¤È¤Î¥á¥ê¥Ã¥È¤Ëµ¤¤Å¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¯¤ë¡£Î㤨¤Ð PHP ¤Ç¤Ï 0 ¤¬µ¶¤Ç¡¢0 ¤òÊÖ¤·¤Æ¤¯¤ë´Ø¿ô¤È false ¤òÊÖ¤·¤Æ¤¯¤ë´Ø¿ô¤¬º®¤¶¤Ã¤Æ¤¤¤ë¤Î¤Ç

foo() !== false

¤Ã¤Æ½ñ¤«¤Ê¤¤¤È¥ä¥Ð¤¤¤è¡¢¤ß¤¿¤¤¤Ê¥Ð¥Ã¥É¥Î¥¦¥Ï¥¦¤¬¤¢¤ë¤ï¤±¤À¤±¤É¡¢Ruby ¤Î¾ì¹ç¤Ï

foo?()

¤Î¤è¤¦¤Ë ? ¤Ç½ª¤ï¤ë¥á¥½¥Ã¥É¤Ï boolean ¤òÊÖ¤¹Ìó«¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¥æ¡¼¥¶¡¼¤â¤³¤ì¤Ë½¾¤¦¤³¤È¤ò¿ä¾©¤µ¤ì¤Æ¤¤¤ë¡£¤¢¤¡¤½¤¦¤«¡¢PHP ¤Ç¤â¼«Ê¬¤Ç¤½¤¦¤¤¤¦´Ø¿ô¤òºî¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë¤¹¤ì¤Ð¤¤¤¤¤ó¤À¤Èµ¤¤Å¤¯¡£¤À¤«¤é¼«Ê¬¤Î¥³¡¼¥É¤Ï

if ( $val !== false ) {
}

¤È¤«

if ( hoge() !== false ) {
}

¤È¤«¤Ç¤­¤ë¤À¤±½ñ¤«¤Ê¤¯¤Æ¤è¤¤¤è¤¦¤Ë¡¢

if ( $obj->is_fuga() ) {
}
if ( $this->moge_exists() ) {
}

¤Ê¤É¤Ç½ñ¤±¤ë¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤Æ¤¤¤ë¡£

¤â¤Ã¤È¤â¡¢¡Ö¤¤¤¤¥³¡¼¥É¤È¤Ï¡×Ū¤ÊÆÉ¤ßʪ¤òÆÉ¤à¤Î¤ÏÀΤ«¤é¹¥¤­¤À¤Ã¤¿¤Î¤Ç¡¢¤º¤¤¤Ö¤óÁ°¤«¤é¡Ö¤¹¤ó¤Ê¤êÆÉ¤á¤ë¥³¡¼¥É¤ò½ñ¤¯¤Ù¤­¡×¤È¤¤¤¦¤Î¤ÏÃμ±¤È¤·¤Æ»ý¤Ã¤Æ¤¤¤¿¤ó¤À¤±¤É¡¢¤½¤ì¤¬¿È¤Ë¤Ê¤Ã¤¿¤Î¤Ï¡¢¼«Ê¬¤ÎÃæ¤Ç¤Ï Ruby ¤Î¤ª¤«¤²¤Ç¤¢¤ë¡£

ÌÓ·ù¤¤¤·¤Æ¤¤¤¿ JavaScript ¤ÎÌÌÇò¤µ

µó¤²¤Æ¤Ê¤«¤Ã¤¿¤±¤É JavaScript ¤âº£¤Ï¤«¤Ê¤ê¹¥¤­¤Ê¸À¸ì¤Î°ì¤Ä¤Ç¤¢¤ë¡£ÀΤϤ¦¤¶¤¤¤À¤±¤ÎÁõ¾þ¤Ë»È¤ï¤ì¤Æ¤¤¤ë¡¢¥Ö¥é¥¦¥¶¤´¤È¤Îº¹°Û¤¬¤Ç¤«¤¯¤Æ°·¤¤¤Ë¤¯¤¤¤À¤±¤Î¸À¸ì¤â¤É¤­¤È»×¤Ã¤Æ¤¤¤¿¤±¤É¡£

»Äǰ¤Ê¤¬¤é¤¤¤í¤¤¤íÀ©Ì󤬤¢¤Ã¤¿¤ê¡¢¥Ö¥é¥¦¥¶´Ö¤Îµóư¤ÎÍɤì¤È¤«µ¤¤Ë¤·¤Ê¤­¤ã¤¤¤±¤Ê¤¤ÅÀ¤¬Â¿¤¤¤·¡¢¤³¤ì¤¬¤¢¤ì¤Ð¥Ð¥ê¥Ð¥ê»Å»ö¤¬¿Ê¤à¡ªÅª¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¤È»×¤¦¤±¤É¡¢WSH + JScript ¤È¤« Widget ¤È¤« JavaScript ¤¬»È¤¨¤ë¤ÈÊØÍø¤Ê¥·¡¼¥ó¤ÏÁý¤¨¤Æ¤¤¤ë¤·¡¢¡ÖÌܤ˸«¤¨¤ë¾ì½ê¡×¤Ç»È¤¦¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¢JavaScript ¤ò¤¤¤¸¤Ã¤Æ¤¤¤ë¤È¤­¤Ã¤Æ¤Î¤Ï¤À¤¤¤¿¤¤³Ú¤·¤¤¡£À¤¤ÎÃæ¤Î¥Ö¥é¥¦¥¶¤¬¤¹¤Ù¤Æ Firefox ¤À¤Ã¤¿¤é¤É¤ó¤Ê¤Ë³Ú¤·¤¤¤À¤í¤¦¤È»×¤¦¡£

¤Þ¤¡¶òÃԤϤȤ⤫¤¯¡¢JavaScript ¤ÎÌÌÇò¤µ¤Ï¼«Ê¬¤ÎÃæ¤Ç¤Ï Ruby ¤ÎÌÌÇò¤µ¤È¤Û¤È¤ó¤ÉƱ¤¸¤Ç¤¢¤ë¡£°ìÅÙ¤¸¤Ã¤¯¤ê EcmaScript ¤È¤·¤Æ¼è¤êÁȤó¤À¤³¤È¤¬¤¢¤ë¤ó¤À¤±¤É¡¢¤³¤Î¤È¤­¥á¥½¥Ã¥É¤ÈÊÑ¿ô¤Î¶èÊ̤¬¤Ê¤¤¤³¤È¤Ë¿¾¯ÌÌ¿©¤é¤Ã¤¿ÄøÅ٤ǤۤȤó¤É¤Ï Ruby ¤ÎÃ챤ò±çÍѤ·¤Æ¤¹¤ó¤Ê¤êÍý²ò¤Ç¤­¤¿¡£¥¹¥³¡¼¥×¤Ï³Î¤«¤Ë¤Á¤ç¤Ã¤ÈÆñ¤·¤¤¤±¤É¡¢¤½¤³¤Þ¤Ç¶Å¤Ã¤¿¤â¤Î¤ò¥¼¥í¤«¤é¼«Ê¬¤Ç½ñ¤¯¤³¤È¤â¤Ê¤¤¤Î¤Ç¡¢¤½¤ÎÊդϵ¤¤Ë¤·¤Ê¤¤¤ÇºÑ¤ó¤Ç¤¤¤ë¡£

¤Á¤Ê¤ß¤Ë¹¥¤­¤Ê JavaScript ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ï prototype.js ¤Ç¡¢¤³¤ì¤Ï¤¿¤Ö¤ó Ruby ¤¬¹¥¤­¤Ê¤³¤È¤È´Ø·¸¤¬¤¢¤ë¤È»×¤¦¡£Perl ¹¥¤­¤Ê¿Í¤ä Python ¹¥¤­¤Ê¿Í¤Ï¤­¤Ã¤È°ã¤¦¤â¤Î¤¬¹¥¤­¡£

PHP¤Ï¤¡¡¼¡Ä¤É¤¦¤À¤í¤¦¡©

²Ä¤âÉԲĤ⤢¤ë¤±¤É¡¢ÉԲĤÎÊý¤¬º£¤ÏÌܤˤĤ­¤ä¤¹¤¤¤Ç¤¹¡£

PHP ¤ò¿¨¤Ã¤¿¤È¤­¤Ë¤Ï Perl ¤¬½ñ¤±¤Æ¤¤¤¿¤· CGI ¤âʬ¤«¤Ã¤Æ¤Ï¤¤¤¿¤Î¤Ç½¬ÆÀ¼«ÂΤϤ¨¤é¤¯´Êñ¤À¤Ã¤¿¤È»×¤¦¡£º£¤¸¤ãÅö¤¿¤êÁ°¤¹¤®¤ë¤Î¤«¤¢¤ó¤Þ¤êɾ²Á¤µ¤ì¤Ê¤¤¤±¤É CGI ¤Ç¤â fastcgi ¤Ç¤â mod_php ¤Ç¤âƱ¤¸¥³¡¼¥É¤¬Æ°¤¯¤Î¤Ï¤¹¤´¤¤¤È»×¤Ã¤¿¡£¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÊÑ´¹¤È¤«¤âÊØÍø¤À¤·¡¢Á´ÂÎŪ¤Ë°·¤¤¤ä¤¹¤¯¤Æ¤¤¤¤¤Ê¤ÈºÇ½é¤Î¤¦¤Á¤Ï»×¤Ã¤Æ¤¤¤¿¡£

¤·¤«¤·ÅٽŤʤë¥Þ¥¤¥Ê¡¼¥¢¥Ã¥×¥Ç¡¼¥È¤È¤¤¤¦Ì¾¤Î»ÅÍÍÊѹ¹¤ÎÍò¤ËľÌ̤·¤Æ¤¹¤Ã¤«¤ê°õ¾Ý¤¬°­¤¯¤Ê¤Ã¤¿¡£¤½¤Î¤¯¤» htmlspecialchars() ¤È¤«°ú¿ô¤ÎÄɲäǤªÃã¤òÂù¤¹¤ó¤¸¤ã¤Ê¤¯¤Æ»ÅÍͤòÊѤ¨¤ë¤Ù¤­¤¸¤ã¤Í¡¼¤Î¡¢¤È¤¤¤¦¤È¤³¤í¤Ë¤ÏÊѹ¹¤ÏÆþ¤é¤º¤Ë¡¢PHP ¥æ¡¼¥¶¡¼¤Ç¤¢¤ë²æ¡¹¤Î¥³¡¼¥É¤Î½¤Àµ¤ò;µ·¤Ê¤¯¤µ¤ì¤ë¤È¤«¤¤¤¦¤³¤È¤¬µ¯¤­¤ë¡£´Ø¿ô¤Î¿ô¤¬Â¿¤¤¤Î¤Ï¤¤¤¤¤¬´°Á´¤Ë¥Õ¥é¥Ã¥È¤Ê¤Î¤Ç¤ä¤¿¤é´Ø¿ô̾¤¬Ä¹¤¯¡¢¤·¤«¤âÁ´ÂÎŪ¤ËÅý°ì´¶¤¬¤Ê¤¤¡£°ú¿ô¤Î½çÈ֤ϥХé¥Ð¥é¡£»÷¤¿¤è¤¦¤Ê̾Á°¤Î»÷¤¿¤è¤¦¤Êµ¡Ç½¤ÎÊ̤ʴؿô¤Ç°ú¿ô¤Î½çÈÖ¤¬¤Ò¤Ã¤¯¤êÊ֤äƤ¤¤ë¤È¤«¡¢¤¢¤êÆÀ¤Ê¤¤¥È¥é¥Ã¥×¤¬¤½¤³¤éÃæ¤Ë¤¢¤ë¡£

µ¡Ç½Åª¤Ë¤Ï PHP ¤Ïµ¤¤¬Íø¤¤¤Æ¤¤¤ë¤ó¤À¤È»×¤¦¡£¤Ç¤â¥Ç¥¶¥¤¥ó¤¬¤Ê¤Ã¤Á¤ã¤¤¤Ê¤¤¡£¤¢¤ë¤À¤±¡£¥¢¥¸¥¢¥ó¥Æ¥¤¥¹¥È¤ÊÉô²°¤ËË̲¤¥¤¥ó¥Æ¥ê¥¢¤ò¾þ¤Ã¤Æ¤¤¤ë¤è¤¦¤Ê¥Ð¥é¥ó¥¹¤Î°­¤µ¤ò´¶¤¸¤ë¡£ÌÜŪ¤ÏãÀ®¤Ç¤­¤ë¤¬Èþ¤·¤¯¤Ê¤¤¡£¤½¤¦¤¤¤¦°õ¾Ý¡£¤½¤ì¤¬µ¤¤Ë¤Ê¤é¤Ê¤¤¿Í¤Ë¤Ï¸þ¤¤¤Æ¤¤¤ë¤¬¼«Ê¬¤ÏÀµÄ¾¤ä¤á¤é¤ì¤ë¤â¤ó¤Ê¤é¤ä¤á¤¿¤¤¡£º£¤µ¤é¤ä¤á¤ë¤Ë¤Ï¥Î¥¦¥Ï¥¦¤¬Î¯¤Þ¤ê¤¹¤®¤Æ¤·¤Þ¤Ã¤¿¤±¤ì¤É¡£

¤¢¤È°Õ³°¤Ëº¤¤ë¤Î¤Ï Unix CLI ʸ²½¤ÈÁêÀ­¤¬¤è¤¯¤Ê¤¤ÅÀ¡£¤³¤¦¸À¤¦¤È CLI ¥Ð¥¤¥Ê¥ê¤Ï 4.3 ¤«¤éÆÈΩ¤·¤Æ¤ÆÉáÄ̤˻Ȥ¨¤ë¤è¡ª¤Ã¤Æ¥à¥­¤Ë¤Ê¤ë¿Í¤¬¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤·¡¢¼ÂºÝ¤Ë CLI ¤Ç³èÍѤ·¤Æ¤¤¤ë¿Í¤¬¤¤¤ë¤Î¤ÏÃΤäƤ¤¤ë¡£¤Ç¤â¤Ï¤Ã¤­¤ê¸À¤Ã¤Æ¤³¤Î CLI ¥Ð¥¤¥Ê¥ê¤Î¥ª¥×¥·¥ç¥ó¤Î¼è¤êÊý¤È¤«ÆÈÆÃ¤¹¤®¤ë¡£¤¸¤ã¤¢ Windows Âбþ¤¬¤¤¤¤¤«¤È¤¤¤¦¤È¤½¤¦¤Ç¤â¤Ê¤¯¤Æ¡¢ËÜ²È¤Ë Windows ÍѥХ¤¥Ê¥ê¤¬¤¢¤ë¤Ã¤Æ¤À¤±¤Ç Windows ÈǤǤϼÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤´Ø¿ô¤¬°Õ³°¤Ë¤¢¤Ã¤¿¤ê¡¢±³¼ÂÁõ¤Î´Ø¿ô¤¬¤¢¤Ã¤¿¤ê¤·¤Æ±ú¤Þ¤µ¤ì¤Þ¤·¤¿¡£ºÇ¿·¤Î 5.x ·Ï¤Ç¤Î¾õ¶·¤Ï¤è¤¯Ê¬¤«¤Ã¤Æ¤Þ¤»¤ó¤¬¡£¡ÊWindows ¤Çư¤«¤µ¤Ê¤¯¤Ê¤Ã¤¿¤Î¤Ç¡£¡Ë

°ì¸À¤Ç¸À¤¦¤È PHP ¤Ï Perl ¤ä Ruby ¤È¤Ï°Û¤Ê¤ë°ÕÌ£¤ÇÀáÁब¤Ê¤¤¡£¤½¤·¤Æ¿ô¿¤¯¤ÎÊØÍø¤Êµ¡Ç½¤òÄ󶡤·¤Æ¤¯¤ì¤¿¤¬¡¢¤½¤Îʬ¿¤¯¤Î¼«Æ°²½¡¢ÊØÍøµ¡Ç½¤¬ Web ¥¢¥×¥ê¤Ç­¤ò°ú¤ÃÄ¥¤ë¤³¤È¤â¶µ¤¨¤Æ¤¯¤ì¤¿¡£¤½¤¦¤¤¤¦°ÕÌ£¤Ç¤ÏÈó¾ï¤ËÊÙ¶¯¤Ë¤Ê¤Ã¤¿¤È¤â¸À¤¨¤ë¡£

¤¿¤À¡¢Æ±¤¸·Ð¸³¤ò¡Ö¤³¤ì¤«¤é¤Î¿Í¡×¤Ë¤µ¤»¤¿¤¤¤È¤Ï»×¤¨¤Ê¤¤¡£³Î¤«¤Ë¥Ö¥é¥¦¥¶¤Ë²¿¤«¤òɽ¼¨¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¤Ïû¤¤¤è¡£Ã¯¤«¤¬´Ä¶­¤ò¤ªÁ·Î©¤Æ¤·Â³¤±¤Æ¤¯¤ì¤ë¤Ê¤é·ë¹½²÷Ŭ¤À¡£¤Ç¤â»È¤¤Â³¤±¤µ¤»¤¿¤¯¤Ê¤¤¤Î¤è¡£Ê¬¤«¤ë¡©¤³¤Îµ¤»ý¤Á¡£

¤Þ¤È¤á

¼«Ê¬¤Î¾ì¹ç¤Ï Ruby ¤Ë¤¿¤É¤ê¤Ä¤¤¤Æ¡ÖÃ챤¬¿È¤Ë¤Ê¤ë¡×·Ð¸³¤¬¤È¤Æ¤â¿¤«¤Ã¤¿¤¿¤á¤«¡¢Ruby ¤Îɾ²Á¤Ï¤±¤Ã¤³¤¦¹â¤¤¡£¤½¤·¤Æ´õÂå¤Î¸À¸ì¥ò¥¿¤Îºî¤Ã¤¿¸À¸ì¤À¤±¤¢¤Ã¤Æ¤¤¤í¤ó¤Ê¸À¸ì¤«¤é¤ª¤¤¤·¤¤¤È¤³¤É¤ê¤·¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤Å¤­»Ï¤á¤Æ¡¢¡Ö¤¢¤¡¤Ê¤ë¤Û¤É¤³¤Î¸À¸ì¤Ë¥Õ¥¡¥ó¤¬¤¤¤ë¤Î¤Ï¤³¤¦¤¤¤¦Íýͳ¤«¡×¤Ê¤ó¤Æ¤³¤È¤¬Ê¬¤«¤Ã¤Æ¤¯¤ë¡£¤½¤¦¤¤¤¦Â賤â¤Ê¤«¤Ê¤«ÌÌÇò¤¤¡£

¤â¤Ã¤È¤â¡¢PHP ¤ä Perl ¤ËÂФ¹¤ë¥Í¥¬¥Æ¥£¥Ö¤Ê°Õ¸«¤Î·ë¹½¤Ê³ä¹ç¤Ï¡¢¿¨¤é¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤²ÔÆ¯Ãæ¤Î Perl ¥³¡¼¥É¡¢PHP ¥³¡¼¥É¤¬¥¤¥±¤Æ¤Ê¤¤¤³¤È¤Ëµ¯°ø¤·¤Æ¤¤¤ë¤È¤â»×¤¦¡£¼«Ê¬¤ÎÃæ¤Ç Ruby ¤Îɾ²Á¤¬¹â¤¤¤³¤È¤Ë¤ª¤¤¤Æ¡¢¡ÖRuby ¤Ç½ñ¤¤¤Æ¤·¤Þ¤Ã¤¿¥¯¥½¤Ê°ä»º¤¬¤¢¤ó¤Þ¤ê¤Ê¤¤¡×¤Ã¤Æ¤¤¤¦¤Î¤ÏÂ礭¤¤¤È»×¤¦¡£¤³¤ì¤¬Î㤨¤Ð»Å»ö¤Ç Ruby ¤ò¤¤¤­¤Ê¤ê»È¤ï¤µ¤ì¤Æ¡¢¤è¤¯Ê¬¤«¤é¤Ê¤¤¤±¤Éư¤¯¥³¡¼¥É¤ò¤½¤ì¤Ê¤ê¤Î¿ô½ñ¤¤¤Æ¤«¤é¿¶¤êÊ֤俤顢Ruby ¤è¤ê¤â Java ¤ÎÊý¤¬¤è¤«¤Ã¤¿¤È¤«¸À¤Ã¤Æ¤ë¤ó¤À¤È»×¤¦¡£

¤Þ¤¿ÀµÄ¾¤Ë¸À¤¦¤È¼«Ê¬¤Ï¥¯¥í¡¼¥¸¥ã¤È¤«¥Õ¥¡¡¼¥¹¥È¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤È¤«¤½¤¦¤¤¤¦¥«¥¿¥«¥Ê¤¬¹¥¤­¤Ç¤Ï¤Ê¤¤¤·¡¢¤Ö¤Ã¤Á¤ã¤±¤è¤¯Ê¬¤«¤é¤Ê¤¤¡£JavaScript ¤Î function ¤¬¥Õ¥¡¡¼¥¹¥È¥¯¥é¥¹¤«¤É¤¦¤«¤Ê¤ó¤ÆÃΤé¤Ê¤¤¡£¤¿¤À¤â¤Î¤¹¤´¤¯ÊØÍø¤Ê¤â¤Î¤À¤Ã¤Æ¤³¤È¤ÏÃΤäƤơ¢ÊØÍø¤Ê¤â¤Î¤¬¹¥¤­¤À¤Ã¤Æ¤À¤±¡£

¤À¤«¤é¸À¸ì¤Î³Ø½¬¤Ë¤ª¤¤¤Æ¤³¤ÎÍ×ÁǤȤ³¤ÎÍ×ÁǤ¬¤³¤¦¤¤¤¦É÷¤ËÆþ¤Ã¤Æ¤¤¤Æ¡¢¡Ä¡Ä¤È¤«¤½¤¦¤¤¤¦¤³¤È¤Ï¸ì¤ì¤Ê¤¤¤·¡¢¸ì¤ëµ¤¤Ï¤Ê¤¤¡£¤³¤¦¤¤¤¦·Ð¸³¤ò¤·¤¿¥ï¥¿¥·¤¬¤³¤¦¤¤¤¦É÷¤Ë³Æ¸À¸ì¤òª¤¨¤Æ¤¤¤Þ¤¹¡¢¤È¤¤¤¦¤³¤È¤·¤«½ñ¤±¤Ê¤¤¡£

¤À¤«¤é·ëÏÀ¤È¤«¥ª¥Á¤È¤«¤Ï¤Ê¤¤¤Ç¤¹¡£»²¹Í¤Ë¤Ê¤ë¤«¤É¤¦¤«¤âʬ¤«¤ê¤Þ¤»¤ó¡£¤±¤É¡¢²¿¤«¤Î­¤·¤Ë¤Ç¤â¤Ê¤ë¤È¤¤¤¤¤Ê¡¼¤È»×¤Ã¤Æ¤Þ¤¹¡£


2008-02-09 [ĹǯÆüµ­]

_ Opensource FastLadder ÀßÃÖ¼ºÇÔ

¢¨ Ï¢µÙ½ª¤ï¤ê¤Ë½ñ¤¤¤Æ¤Þ¤¹¤¬¡¢¥Í¥¿¤ÏµÙ¤ß½éÆü¤ÎÆâÍÆ¤Ç¤¹¡£

Ï¢µÙ¤Î²ÝÂêÂè°ìÃÆ¤È¤·¤ÆÁª¤ó¤À FastLadder ÀßÃÖ¡¢¸«»ö¤Ë¶ÌºÕ¤·¤Þ¤·¤¿¡£

´Ä¶­¡¢

  • OS ¤Ï FreeBSD
  • Ruby ¤Ï ports ¤ÇÆþ¤ì¤¿ 1.8.6
  • ports ¤Î Rails ¤Ë 2.0 ¤ÏÍè¤Æ¤Ê¤«¤Ã¤¿¤Î¤Ç gem ¤«¤éºÇ¿·¤Î Rails ¤ò¥¤¥ó¥¹¥È¡¼¥ë

¤È¤¤¤¦¾õÂ֤ǡ¢¥Ï¥Þ¤Ã¤¿¤Î¤Ï FreeImage.

Í׵ᤵ¤ì¤Æ¤¤¤ë¤Î¤¬ 3.10 ¤Ç ports ¤ÇÆþ¤ì¤Æ¤¢¤ë¤Î¤¬ 3.9.3 ¤À¤«¤é¤«¡¢¤É¤¦´èÄ¥¤Ã¤Æ¤â¤Á¤ã¤ó¤ÈÆÉ¤ß¹þ¤ó¤Ç¤¯¤ì¤Ê¤¤¡£ºÇ½é¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¾ì½ê¤¬°­¤«¤Ã¤¿¤Î¤«¤Ê¤È»×¤Ã¤Æ¤¢¤Ã¤Á¤³¤Ã¤Á¤Ë link ÃÖ¤¤¤Æ¤ß¤¿¤±¤É¥À¥á¤Ç¡¢¤Ê¤ó¤¸¤ã¤³¤ì¤È»×¤Ã¤Æ ktrace ¤·¤¿¤éºÇ¸å¤ÎºÇ¸å¡¢libfreeimage.so.3 ¤¬¼«Ê¬¼«¿È¤ò»Ø¤¹ link ¤Ë¤Ê¤Ã¤Æ¤Æ file open ¤òÄü¤á¤Æ¤¤¤¿¤ó¤À¤±¤É¡¢¤³¤ì¤òľ¤·¤Æ¤â¥À¥á¡£

°ú¤­Â³¤­ ktrace ¤·¤Æ¸«¤Æ¤ß¤ë¤È¡¢libfreeimage.so.3 -> libfreeimage.a ¤ò open ¤·¤Æ¤ë¤Ã¤Ý¤¤¤ó¤À¤±¤É¸«»ö¤Ë¥¹¥ë¡¼¤·¤Æ¤¤¤ë¡£0.0.1 ¤Î¤È¤­¤Ï invalid file format ¤Ã¤Æ¥á¥Ã¥»¡¼¥¸¤¬½Ð¤Æ¤¤¤¿¤è¤¦¤Êµ¤¤¬¤¹¤ë¤±¤É 0.0.2 ¤Ë¤·¤¿¤é¤½¤Î¥á¥Ã¥»¡¼¥¸¤Ï½Ð¤Ê¤¯¤Ê¤Ã¤¿¤Î¤Ç¡¢¤â¤·¤«¤·¤¿¤éµ¤¤Î¤»¤¤¤«¤â¡£¤È¤Ë¤«¤¯¡¢libfreeimage ¤òÆÉ¤ó¤Ç¤¯¤ì¤Ê¤¤¡£Ruby ¤Î dlopen ¤ÎÌäÂê¤Ê¤Î¤«¤È¤«¤¢¤ì¤³¤ì»×¤Ã¤¿¤±¤É¤³¤ÎÊդλö¾ð¤Ë¤Þ¤Ã¤¿¤¯Á¤¤¤Î¤Ç¿¼Äɤ¤¤ò¤ä¤á¤ë¡£

¤¢¤ÈÌîÎÉ¤Ç FreeImage 3.10 ¤òÆþ¤ì¤ë¼ê¤â¤¢¤Ã¤¿¤ó¤À¤±¤É¡¢ÌÌÅݤ¯¤µ¤¯¤Ê¤Ã¤Æ¤ä¤á¤Æ¤·¤Þ¤Ã¤¿¡£¤³¤ì¤¬ÆÉ¤ß¹þ¤á¤Ê¤¤¤È crawler ¤â¤Þ¤È¤â¤Ëư¤«¤Ê¤¤¤· mongrel ¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤â 500 ¤·¤«Ê֤äƤ³¤Ê¤¤¡£¤Ä¤Þ¤ê¡¢¤Þ¤Ã¤¿¤¯»È¤¨¤Æ¤¤¤Ê¤¤¡£Linux, Windows, MacOSX ¤Ç¤Ï¤½¤ì¤¾¤ìư¤«¤·¤Æ¤¤¤ë¿Í¤¬¤¤¤ëµ¤ÇۤʤΤǼ¡¤Ï Linux ¤Ç¤ä¤Ã¤Æ¤ß¤ë¤«¡£

FreeBSD ¤Ç¤Ï¾ðÊó¤¬Áý¤¨¤Æ¤­¤¿¤é¤â¤¦°ì²ó¤ä¤Ã¤Æ¤ß¤è¤¦¤«¤Ê¡£¤É¤Ê¤¿¤« FreeBSD ¤Çư¤¤¤¿¤Ã¤Æ¿Í¤¤¤Þ¤»¤ó¤«¡©


2008-02-11 [ĹǯÆüµ­]

_ ¸À¸ì¤Î³Ø¤ÓÊý³Êó

¼«Ê¬¤ÎÁ°²ó¤Î¥¨¥ó¥È¥ê¤Ï¸«»ö¤Ë¼ã¤¤¿Í¤Ë¤â¤½¤¦¤Ç¤Ê¤¤¿Í¤Ë¤â¥¹¥ë¡¼¤µ¤ì¡¢Ã¯¤âÇÉÀ¸¥¨¥ó¥È¥ê¤ò½ñ¤¤¤Æ¤¯¤ì¤º¤Ë±ú¤ó¤Ç¤¤¤¿¤±¤É¡¢Á´Á³Ê̸ý¤Ç¾ðÊ󤬽ФƤ­¤¿¤«¤é¤¤¤¤¤ä¡£¤Ð¡¼¤«¡£

¼«Ê¬¤Ï¤³¤ÎÆó¿Í¤Î­²¼¤Ë¤âµÚ¤Ð¤Ê¤¤¤±¤ì¤É¤â¡¢¸¶ÅµÇɤÈÂçÎ̤Ρʥ³¡¼¥É¤ò´Þ¤á¤¿¡Ë¾ðÊóÇɤÎξÊý¤Î¸À¤¤Ê¬¤Ï¤Ê¤ó¤È¤Ê¤¯Ê¬¤«¤ë¡£

Á°²ó¤Ê¤¼¼«Ê¬¤¬¤¢¤¨¤Æ¤É¤ì¤¯¤é¤¤¸À¸ì¤Î³Ø½¬¤Ë¶ìÏ«¤·¤¿¤«¡¢¤¢¤ë¤¤¤ÏµÕ¤Ë¤³¤ÎÄøÅ٤ʤ餽¤³¤éÊդΥܥ󥯥é¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤«¤ò½ñ¤¤¤¿¤«¤È¤¤¤¦¤È¡¢Ã±¤Ë¼«Ê¬¸ì¤ê¤ò¤·¤Æ¤ß¤¿¤«¤Ã¤¿¤È¤¤¤¦¤À¤±¤¸¤ã¤Ê¤¯¤Æ¡¢¤½¤Î°ì¤Ä¤Ï 2ch ¤È¤«¤Ç¸«¤«¤±¤ë

¡Ö¸À¸ì¤Ê¤ó¤Æ¤É¤ì¤Ç¤â»È¤¨¤Æ¤³¤½¥×¥í¤À¤·¡¢¤É¤ì¤Ç¤â°ì½ï¡×¤È¤¤¤¦°Õ¸«¤Ë¤¤¤Ä¤âµ¿Ìä¤ò´¶¤¸¤Æ¤¤¤¿

¤«¤é¡£¤Ê¤¼¤Ê¤é

À¤¤ÎÃæ¤Ë¤Ï BASIC ¤Î¤è¤¦¤Ê Perl ¥³¡¼¥É¤ä Java ¥³¡¼¥É¤¬¼Âºß¤·¡¢Æ°¤¤¤Æ¤¤¤ë

¤«¤é¤À¡£¤³¤Î°­Ì´¤Î¤è¤¦¤Ê¥¯¥½¥³¡¼¥É¤¬¤É¤¦¤â¡Ö¤É¤ì¤Ç¤â°ì½ï¡×¤È¸À¤Ã¤Æ¤Ï¤Ð¤«¤é¤Ê¤¤¿Í¤Î½ê¶È¤Î¤è¤¦¤Ë¸«¤¨¤Æ¤Ê¤é¤Ê¤¤¤Î¤è¤Í¡£¤³¤³¤Ï¤Þ¤Ã¤¿¤¯º¬µò¥ì¥¹¡£Íýͳ¤Ïʹ¤«¤Ê¤¤¤Ç¡£¤¢¤¨¤Æ¸À¤¦¤Ê¤é¡¢

ͭ̾¤Ê¥Ï¥Ã¥«¡¼¤Ï¤¿¤¤¤Æ¤¤ÆÀ°Õ¤Ê¸À¸ì¤ò»ý¤Ã¤Æ¤¤¤Æ¡¢¡Ö¤É¤ì¤Ç¤â°ì½ï¡×¤È¸À¤¨¤ë¾õÂ֤ǤϤʤ¤¤è¤¦¤Ë¸«¤¨¤ë¤«¤é¡£

¤«¤Ê¡£Ï䬤½¤ì¤Þ¤·¤¿¤«¡©

¤Þ¤¡¥¯¥½¥³¡¼¥É¤ÎÏäϤȤ⤫¤¯¡¢ÌäÂê¤Ï¡Ö¤é¤·¤µ¡×¤ÎÊý¡£¤é¤·¤µ¤Ë¤Ä¤¤¤Æº£²ó

  • ¤è¤ê¿¤¯¤Î¥³¡¼¥É¤Ë¿¨¤ì¤ë
  • ¸¶Åµ¤òÆÉ¤à

¤ÎÆó¤Ä¤ÎÊýË¡¤¬µó¤Ã¤Æ¤­¤Æ¤ë¤ï¤±¤À¤±¤É¡¢ÊýË¡¤Ï¤È¤â¤«¤¯

³ä¤È¤Ê¤ó¤Ç¤â½¬ÆÀ¤Ç¤­¤ë¤è¤È¸À¤Ã¤Æ¤Ï¤Ð¤«¤é¤Ê¤¤¿Í¤¬¡Ö¤½¤Î¸À¸ì¤é¤·¤µ¡×¤äÀß·×»×ÁÛ¤ò»ý¤Á½Ð¤·¤Æ¤¯¤ì¤Æ¤¤¤ë

¤È¤³¤í¤¬¥Ý¥¤¥ó¥È¡£¤Ä¤Þ¤ê

¡Ö¤É¤ì¤Ç¤â°ì½ï¡×¤Ê¤ó¤«¤¸¤ã¤Í¤§¡ª

¤Ã¤Æ¤³¤È¡£¤Á¤ã¤ó¤È¤³¤³¤ò°Õ¼±¤·¤Æ¡¢¤½¤Î¤é¤·¤µ¡¢Àß·×»×ÁÛ¤òµÛ¼ý¤¹¤ë¤¿¤á¤Ë¼«Ê¬¤ËŬ¤·¤¿ÊýË¡¤Ï¥³¥ì¡¢¤È¸À¤Ã¤Æ¤¯¤ì¤Æ¤¤¤ë¡£¤³¤³½ÅÍס£

¤½¤¦¤Ê¤Î¤Ç¤¹¤è¡£¤Ö¤Ã¤Á¤ã¤±¡Öʸˡ¤ò¤ä¤Ã¤Æ²¿¤«Æ°¤¯¤â¤Î¤ò½ñ¤¯¤À¤±¡×¤À¤Ã¤¿¤é¤Ê¤ó¤È¤«¤Ê¤ë¤ó¤Ç¤¹¤è¡£¥ª¥ì¤¬½ñ¤¤¤Æ¤âÀâÆÀÎϤʤ¤¤±¤É¤µ¡ª ÌäÂê¤Ï¤½¤ÎÀè¡£Ruby ¤Ë¡ÖºÃÀÞ¤·¤¿¡×¤È¤­¤À¤Ã¤Æ Ruby ¤é¤·¤¯¤Ê¤¤¥³¡¼¥É¤Ê¤é¤½¤ê¤ã½ñ¤±¤Æ¤Þ¤·¤¿¤è¡£¤Ç¤â¤½¤ì¤¸¤ãÌÌÇò¤¯¤Ê¤¤¤·½ñ¤­¤Ë¤¯¤¤¤À¤±¤Ê¤ï¤±¡£Ruby ¤é¤·¤¯½ñ¤±¤Æ¤³¤½¤Î Ruby ¤Ç¤·¤ç¤¦¤è¡£¤½¤ì¤ò´Þ¤á¤Æ¤â¤Î¤¹¤´¤¤¥¹¥Ô¡¼¥É¤Ç½¬ÆÀ¤Ç¤­¤ë¿Í¤¬¡Ö¤É¤ì¤Ç¤â°ì½ï¡×¤Ã¤Æ¸À¤¦¤ó¤Ê¤éǼÆÀ¤¹¤ë¤±¤É¡¢ËÜÅö¤Ë¤½¤ó¤Ê¿Í¤¤¤ë¤Î¡©¤È¤¤¤¦µ¿Ì䤬¤É¤¦¤·¤Æ¤â»Ä¤ë¤ï¤±¤Ç¤¹¡£

º£²ó¡¢¤½¤Îµ¿Ìä¤Ï¤Þ¤¹¤Þ¤¹¶¯¤¯¤Ê¤Ã¤¿¤È¤¤¤¦¤«¡¢¡Ö¤É¤ì¤Ç¤â°ì½ï¡×¤È¤¤¤¦°Õ¸«¤ÏÈýÂäÇʹ¤³¤¦¤È¤¤¤¦»×¤¤¤ò¿·¤¿¤Ë¤·¤¿¼¡Âè¤Ç¤´¤¶¤¤¤Þ¤¹¡£

¾¿Í¤Î·Ð¸³¤òÆÉ¤á¤ë¤Î¤Ï¤È¤Æ¤âÌÌÇò¤¤¡£¤À¤«¤é¤ß¤ó¤Ê¼«Ê¬¸ì¤ê¤·¤Æ¤¯¤ì¡£¼«Ê¬¸ì¤ê¤Îʸ̮¤Î¤È¤­¤Ë¤Í¡£

ËÜÆü¤Î¥Ä¥Ã¥³¥ß(Á´2·ï) [¥Ä¥Ã¥³¥ß¤òÆþ¤ì¤ë]

_ takano32 [¤É¤ó¤Ê¸À¸ì¤¬»È¤¨¤Þ¤¹¤«¡©¤ß¤¿¤¤¤Ê¼ÁÌä¤Ë¤Ï¼ê³¤­·¿¤È´Ø¿ô·¿¤Ï»È¤¨¤Þ¤¹¡£¤¢¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤âÍý²ò¤·¤Æ¤Þ¤¹¡£¤ß¤¿¤¤¤ÊÅú..]

_ wtnabe [ÂçÏȤǤ¹¤Í¡£´Ø¿ô·¿»È¤¨¤Þ¤¹¤Ã¤Æ¸À¤¤¤¿¤¤¤Ê¤¡¡£¼«Ê¬¤Ç¤Ê¤ó¤È¤«¤·¤Ê¤¤¤È¼«Ê¬¤¬Éå¤ê»Ï¤á¤Æ¤¤¤¯¤Î¤ò´¶¤¸¤Þ¤¹¡£]


2008-02-16 [ĹǯÆüµ­]

_ IE7¥­¥¿

Ê̤˳ڤ·¤ß¤Ë¤·¤Æ¤¤¤¿¤ï¤±¤Ç¤â¤Ê¤¤¤ó¤À¤±¤É¡¢¤Ê¤Ë¤ä¤é¤¦¤Á¤Î Vista ¤Ë¤Ï¼«Æ°¤ÇÆþ¤Ã¤Æ¤¤¤¿¤é¤·¤¤*1¡£¤Ç¡¢µ¤¤¬¤Ä¤¤¤¿¤ó¤À¤±¤É¡¢º£¤Þ¤Ç¤³¤ÎÆüµ­¤Î h3 ¤ÎÉôʬ¤È¤«ÌµÂ¤ºî¤Ë border °ú¤¤¤¿Éôʬ¤Ç border ¤¬¾Ã¤¨¤Á¤ã¤¦¤Ã¤Æ¤³¤È¤¬¼Â¤Ï¤è¤¯¤¢¤Ã¤¿¤ó¤À¤±¤É¡¢¤½¤ì¤¬Ä¾¤Ã¤Æ¤ë¤ß¤¿¤¤¡£Íפ¹¤ë¤Ë CSS Âбþ¤¬¤è¤¯¤Ê¤Ã¤¿¤ß¤¿¤¤¤À¤È¡£

²æËý¤·¤Æ IE Âбþ¤ò̵»ë¤·¤Æ¤­¤¿¹ÃÈ夬¤¢¤Ã¤¿¤È¤¤¤¦¤³¤È¤À¤Í(°ã

¤½¤ì¤Ë¤·¤Æ¤â¥á¥Ë¥å¡¼¥Ð¡¼¤¬¥Ç¥Õ¥©¥ë¥È¤Çɽ¼¨¤µ¤ì¤Ê¤¤¤È¤«¥á¥Ë¥å¡¼¥Ð¡¼¤Î°ÌÃÖ¤¬¥¢¥É¥ì¥¹¥Ð¡¼¤Î²¼¤ËÍè¤Á¤ã¤¦¤È¤«¡¢¤Ê¤ó¤«¼«¤é Windows ¥¢¥×¥ê¤Î¤ªÌó«¤È¤â¸À¤¨¤ëÉôʬ¤ò¤Ö¤Á²õ¤·¤Æ¤ë¤±¤É¤¤¤¤¤Î¤«¤Ê¡¢¤³¤ì¡£Windows Live Toolbar ¤Ï¼ÙËâ¤À¤«¤é¾Ã¤·¤Æ¤ª¤¤¤¿¤±¤É¡¢¤³¤Î¡¢¡¢¡¢¥¿¥Ö¤Î±¦¤ÎÊý¤Ë¤¢¤ë¤³¤ì¤Ï¾Ã¤¹¤«¾ì½êư¤«¤¹¤«¤Ç¤­¤Ê¤¤¤ó¤À¤í¤¦¤«¡© ¥¿¥ÖÁý¤¨¤Æ¤¤¤Ã¤¿¤éÀäÂмÙËâ¤Ë¤Ê¤ë¤ó¤À¤±¤É¡£¡Ê¡Ö¥Ä¡¼¥ë¥Ð¡¼¤ò¸ÇÄꤹ¤ë¡×¤Î¥Á¥§¥Ã¥¯¤ò³°¤¹¤È¡Ö´ó¤»¤ë¡×¤³¤È¤Ï¤Ç¤­¤ë¤±¤É¡¢¼ÙËâ¤Ê¤â¤ó¤Ï¼ÙËâ¤À¡£¡Ë

¤È¤¤¤¦¤«¥¿¥Ö³«¤¯¤ÎÃÙ¤¤¤Ê¤¡¡£¥¯¥¤¥Ã¥¯¥¿¥Ö¤Îµ¡Ç½¤ÏÊØÍø¤À¤È»×¤¦¤±¤É¡£¤¢¡¢¥¢¥¯¥Æ¥£¥Ö¤Ç¤Ê¤¤¥¿¥Ö¤Ï¥ï¥ó¥¯¥ê¥Ã¥¯¤ÇÊĤ¸¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤ó¤À¤Í¡£¿ÆÀڤʤΤ«¤Ê¤¡¡¢¤³¤ì¡£

¤â¤¦¤Ò¤È¤Ä¤É¤¦¤Ç¤â¤¤¤¤¤³¤È¤À¤±¤É¡¢¥¢¥¤¥³¥ó¤¬º£¤È¤Ê¤Ã¤Æ¤Ï¼ä¤·¤¤¤Í¡¢IE ¤Ã¤Æ¡£ºÇ½é¥°¥é¥Ç¡¼¥·¥ç¥ó¤¬¤Ä¤¤¤¿¤È¤­¤Ï¡Ö¤ª¤©¡ª¡×¤È¤«»×¤Ã¤¿¤±¤É¡¢¤³¤Î¤´»þÀª¤Ë e ¤Î¼þ¤ê¤Î¥é¥¤¥ó¤Î¿§¤¬ÊѤï¤Ã¤¿¤À¤±¤Ã¤Æ¤Î¤Ï¤Á¤ç¤Ã¤È¤É¡¼¤À¡£

¤¤¤¤¤³¤È¤â½ñ¤¤¤Æ¤ª¤³¤¦¡£CSS Âбþ¤Ï¸«¤¿ÌܤËʬ¤«¤é¤Ê¤¤ºÙ¤«¤¤ÏäʤΤÇÉáÄ̤Υ桼¥¶¡¼¤Ï´ò¤·¤¯¤Ê¤¤¡£¥æ¡¼¥¶¡¼¤¬´ò¤·¤¤¤Î¤Ï¤ä¤Ã¤Ñ¤³¤Î¥º¡¼¥à¤«¤Ê¡£¥¿¥Ö¤Ï»È¤¤´·¤ì¤Ê¤¤¤¦¤Á¤Ï¥¦¥£¥ó¥É¥¦¥Ç¥¶¥¤¥ó¤¬ÊѤÀ¤Ê¤Ã¤Æ´¶¤¸¤ëÄøÅÙ¤À¤È»×¤¦¤±¤É Opera É÷¤Î²èÁü¤Î³ÈÂç½Ì¾®¤Þ¤Ç¹Ô¤ï¤ì¤ë¥º¡¼¥à¤ÏÊØÍø¡£

¥Õ¥£¡¼¥É¤Îµ¡Ç½¤Ï¤â¤Ã¤È¾¡¼ê¤ËÁ°Ì̤˽ФƤ³¤Ê¤¤¤È¤¢¤ó¤Þ¤ê»È¤ï¤ì¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤Ê¤¡¡£¤¢¡¢¥Õ¥£¡¼¥Éɽ¼¨¤Ï¥¿¥Ö³«¤¤¤Æ¤«¤é¤ä¤Ã¤Æ¤è¡ª ÊÔ½¸Ãæ¤Î¥¿¥Ö¤Î¾å¤Ë¤½¤Î¤Þ¤Þɽ¼¨¤·¤Á¤ã¤¦¤È¥Ó¥Ó¤ë¤«¤é¤ä¤á¤Æ¡£

¤È¤¤¤¦¤ï¤±¤Ç¤³¤ÎÆüµ­¤Ï IE 7 ¤Ç½ñ¤¤¤Æ¤ß¤¿¡£¤½¤ó¤À¤±¡£

Tags: CSS MS IE Web

*1 ¤è¤¯ÃΤé¤Ê¤¤¡£¤Ò¤É¤¤¡£


2008-02-20 [ĹǯÆüµ­]

_ svn¥ê¥Ý¥¸¥È¥êÆâ¤Î¥ä¥Ð¤²¤Ê¥Õ¥¡¥¤¥ë¤ò¤¢¤Ö¤ê½Ð¤¹ÊýË¡

  • ¤¢¤ëÄøÅٰʾå¸Å¤¯¤Æ
  • ¤¢¤ëÄøÅٰʾåÊüÃÖ¤µ¤ì¤Æ¤¤¤ë

¥Õ¥¡¥¤¥ë¤ò¤¢¤Ö¤ê½Ð¤·¤Æ¤ß¤¿¡£

°Ê²¼¤Î2¤Ä¤Î¥¹¥¯¥ê¥×¥È¤òÁȤ߹ç¤ï¤»¤Æ¡¢

sh anasvn.sh | ruby warning.rb

¤ß¤¿¤¤¤Ë¤·¤Æ»È¤¦¡£¡Ê¥¹¥¯¥ê¥×¥È¤Î̾Á°¤ÏŬÅö¡£¡ËïçÃͤȤ«¥Õ¥¡¥¤¥ë¤ÎÀö¤¤½Ð¤·¥ë¡¼¥ë¤Ï¼«Ê¬¤Ç¾¡¼ê¤Ë½ñ¤­´¹¤¨¤Æ¤¯¤À¤µ¤¤¡£

ÆÉ¤á¤Ðʬ¤«¤ë¤±¤ÉɬÍפʤΤÏ

  • svn
  • find
  • awk
  • ruby

¤Ç¤¹¡£CVS ? svk ? git ? RCS ? ¸½Êª¹ç¤ï¤»¤ÇŬÅö¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

³Îǧ¤Ï gawk 3.1.4, Ruby 1.8.4, svn 1.4.4 ¤Ç¹Ô¤¤¤Þ¤·¤¿¡£

anasvn.sh

Âоݥե¡¥¤¥ë·²¤òÀö¤¤½Ð¤¹¤¿¤á¤Î find ¤Î¥ë¡¼¥ë¤òŬÅö¤Ë½ñ¤­´¹¤¨¤ë¡£Îã¤Ç¤Ï

  • ¼Â¹Ô¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ç
  • ³ÈÄ¥»Ò .php ¤Î¥Õ¥¡¥¤¥ë

¤ò¥À¡¼¤Ã¤ÈÀö¤¤½Ð¤·¤Æ¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£¤Ç¡¢½ÐÎϤÏ

filename TAB ºÇ½é¤ÎcommitÆü»þ TAB Êѹ¹¤Î¤¢¤Ã¤¿²ó¿ô

¤È¤¤¤¦·Á¼°¤Ç¤¹¡£

#! /bin/sh

LANG=C

for i in `find . -name '*.php'`;
do
    svn log -q $i | awk -v filename=$i '
BEGIN {
    sum = 0;
    FS  = "|";
    OFS = "\t";
}

/^r[0-9]+ / {
    sum++;
    time = $3;
}

END {
    # time means first commit datetime
    print filename, time, sum;
}
'
done

warning.rb

TOO_OLD, TOO_FEW ¤òŬÅö¤Ë½ñ¤­´¹¤¨¤ë¡£

½ÐÎϤϾå¤Î¤â¤Î¤ò¤½¤Î¤Þ¤Þ¥¹¥ë¡¼¤Ç½Ð¤·¤Þ¤¹¡£

#! /usr/bin/env ruby

require 'time'

FS = "\t"
TOO_OLD = Time.parse( '2006-01-01' )
TOO_FEW = 5

while ( line = gets )
  arr = line.chop.split( FS )
  filename = arr[0]
  date     = Time.parse( arr[1] )
  times    = arr[2].to_i

  if ( date < TOO_OLD and times <= TOO_FEW )
    puts line
  end
end

ºÇ½ªÅª¤Ë¤Ï¤¢¤ëÄøÅÙ¡Öºî¤Ã¤¿¡×¤Î¤¬¸Å¤¯¤Æ¤¢¤ó¤Þ¤ê¿Í¤Î¼ê¤Ë¿¨¤ì¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò TSV ¤Î·Á¼°¤ÇÈ´¤­½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤³¤ì¤Ç½ÐÎϤµ¤ì¤ë¥Õ¥¡¥¤¥ë¤Ï¥«¥¿¤¤¥é¥¤¥Ö¥é¥ê¤«¡¢¤µ¤â¤Ê¤¯¤Ð¸«¼Î¤Æ¤é¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

cron ¤Ç²ó¤¹¤è¤¦¤Ë¤¹¤ë¤È¡Ö¤³¤Î»Ò¤Ï²Ä°¦¤½¤¦¤Ç¤¹¡¢Áê¼ê¤·¤Æ¤¢¤²¤Æ¤¯¤À¤µ¤¤¡×¥¢¥Ô¡¼¥ë¤Ë¤Ê¤Ã¤Æ¤è¤¤¤«¤â¤·¤ì¤Ê¤¤¡£¤É¤¦¤À¤í¡£


2008-02-21 [ĹǯÆüµ­]

_ CSV¤ò¸ÇÄêĹ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥Æ¥­¥¹¥È¤ËÊÑ´¹¤·¤ÆÉáÄ̤Υ¨¥Ç¥£¥¿¤Ç³«¤¯

ʸ»ú¥³¡¼¥É¤È¤«¹Í¤¨¤Æ¤Þ¤»¤ó¡£ºÇ½é gawk ¤Ç½ñ¤¤¤Æ¤¿¤±¤É match() ¤Ç¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤òÇÛÎó¤Ç¼õ¤±¼è¤ì¤ëgawk³ÈÄ¥¤Ë¤Ä¤¤¤Æ

3.1.5 ¤Ï¥Ð¥°»ý¤Á¤À¤è

¤È¤¤¤¦µ­½Ò¤ò¸«¤Ä¤±¤Æ¤·¤Þ¤Ã¤Æ±ú¤ó¤Ç¤Þ¤·¤¿¡£¤È¤¤¤¦¤«¼ê¸µ¤Î 3.1.4 ¤Ç»î¤·¤ÆÆ°¤¤¤¿¤ó¤À¤«Æ°¤«¤Ê¤¤¤ó¤À¤«¤è¤¯Ê¬¤«¤é¤Ê¤¯¤ÆÊü¤êÅꤲ¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£awk ¥¹¥¯¥ê¥×¥È¤ÇºÇ¿·ÈǤòÍ׵᤹¤ë¤Ê¤ó¤ÆÍ¥¤·¤µ¤¬Â­¤ê¤Ê¤¤¡£

Therefore use:

echo test4325363test | gawk 'match($0, "([^0-9]*)([0-9]+)(.*)", a) { print a[2] }'

to extract the number.

Please, note that gawk 3.1.5 has some bugs in the match function. These should be corrected in gawk 3.1.6 (see ftp://ftp.gnu.org).

How to gram awk's regexp submatches? - Object Mix

¤È¤¤¤¦¤ï¤±¤Ç Ruby ¤Ë°ÈÂØ¤¨¡£

¤Ê¤ó¤«½ô¡¹ CSV ¤Ë·è¤áÂǤÁ¤Ç TSV ¤È¤«Âбþ¤Ç¤­¤Þ¤»¤ó¤±¤É´ªÊÛ¤·¤Æ¤Á¤ç¡£optparse ¤Ç delimiter ¼õ¤±¼è¤Ã¤ÆÆ°Åª¤ËÀµµ¬É½¸½ºî¤ì¤Ð¥¤¥±¤Þ¤¹¤è¡¢¤È¤À¤±½ñ¤¤¤Æ¤ªÃã¤òÂù¤·¤Æ¤ª¤¯¡£

ÅÓÃæ¡¢Èϰϼ°¤«¤é¥ë¡¼¥×¤ò²ó¤¹½èÍý¤Ï¸«´·¤ì¤Ê¤¤¤Èµ¤»ý¤Á°­¤¤¤±¤É¡¢¤Ê¤¼¤« Ruby ¤ò½ñ¤¤¤Æ¤¤¤ë¤È i += 1 ¤È¤«¥«¥¦¥ó¥¿¤ò¼«Ê¬¤Ç¤¤¤¸¤ëÊý¤¬µ¤»ý¤Á°­¤¤¤È´¶¤¸¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤Ç¤¹¡£for ( ; ; ) ʸ¤¬¤Ê¤¤¤Î¤Ç while ¤ÎÃæ¤Ç¼«Ê¬¤Ç¥«¥¦¥ó¥¿¤¤¤¸¤ë¤³¤È¤Ë¤Ê¤ë¤ó¤À¤±¤É¡¢¤½¤¦¤¹¤ë¤È¥¤¥ó¥¯¥ê¥á¥ó¥È¤Î¥¿¥¤¥ß¥ó¥°¤Ë¤è¤Ã¤ÆÃͤ¬ÊѤï¤Ã¤Á¤ã¤¦¤È¤«¤½¤¦¤¤¤¦Íî¤È¤··ê¤òºî¤ë¤³¤È¤Ë¤Ê¤ë¤ó¤Ç¤ä¤ê¤¿¤¯¤Ê¤¯¤Ê¤ë¤Î¤Ç¤¹¡£do end ¤È { } ¤¬º®¤¶¤Ã¤Æ¤¤¤ë¤Î¤Ï¤´¤á¤ó¤Ê¤µ¤¤¤È¤¤¤¦¤³¤È¤Ç¡£

#! /usr/bin/env ruby

class Csv2Fixed
  def initialize
    @num_fields = 0
    @num_lines  = 0
    @len_cols   = []
    @buf        = []
  end

  def run
    while ( line = gets )
      arr = split_csv( line.chomp )
      if ( arr.size > @num_fields )
        @num_fields = arr.size
      end
      store_line( arr )
      @num_lines += 1
    end

    output()
  end

  def store_line( arr )
    @buf[@num_lines] = []

    (0 ... arr.size).each do |i|
      str = arr[i]
      if ( @len_cols[i].nil? or str.size > @len_cols[i] )
        @len_cols[i] = str.size
      end
      @buf[@num_lines].push( str )
    end
  end

  def output
    (0 ... @num_lines).each do |i|
      arr = @buf[i]
      (0 ... arr.size).each do |j|
        printf( "%-*s ", @len_cols[j], @buf[i][j] )
      end
      printf( "\n" )
    end
  end

  def split_csv( str )
    str = str + ","
    arr = []

    str.scan( /(\"(?:[^\"]|\"\")*\"|[^,]*),/ ).each { |e|
      arr.push( e.to_s.sub( /^"/, '' ).sub( /"$/, '' ).sub( /""/, '"' ) )
    }

    return arr
  end
end # of class Csv2Fixed

if ( __FILE__ == $0 )
  app = Csv2Fixed.new()
  app.run()
end
Tags: Ruby

2008-02-27 [ĹǯÆüµ­]

_ À¸Â¸Êó¹ð

º£Ç¯¤ËÆþ¤Ã¤ÆÆüµ­¤Î¹¹¿·ÉÑÅÙ¤¬¥¬¥¿Íî¤Á¤·¤Æ¤Þ¤¹¤¬¡¢Ê̤˥С¼¥ó¥¢¥¦¥È¤·¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤·¡¢Twitter ¤ÎÊý¤ËºÙ¤«¤¤»×¤¤¤Ä¤­¤äʸ¶ç¤òÅǤ­½Ð¤»¤ÆËþ­¤·¤Æ¤¤¤ë¤Î¤â¤¢¤ë¤±¤É¤½¤ì¤À¤±¤Ç¤â¤Ê¤¤¤Ç¤¹¡£

¤¤¤Á¤Ð¤ó¤ÎÍýͳ¤Ï¤¢¤ëÄøÅٰʾå¤ÎŤµ¤ÎÆüËܸì¤ò½ñ¤¯µ¤ÎϤ¹¤é»Ä¤é¤Ê¤¤¤Û¤É¥ä¥é¥ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£

Fastladder ¤Ï¤¤¤Ä¤â pin α¤á¤¬ 100 ¤ò±Û¤¨¤Æ¤«¤éËÜʸ¤òÆÉ¤ß»Ï¤á¤ë»ÏËö¤À¤·¡¢¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ÎÊý¤â¥¿¥°¤¹¤é¤Ä¤±¤Æ¤Ê¤¤¤â¤Î¤¬Â¿¤¯¤Ê¤Ã¤Æ¤­¤Æ¤¤¤è¤¤¤èÌõ¤¬Ê¬¤«¤é¤Ê¤¯¤Ê¤ê¤½¤¦¡£*1¤Þ¤¡ËÜʸ¤òÆÉ¤ó¤Ç¤Ê¤¤¤À¤±¤Ç¥Õ¥£¡¼¥É¤ËÌܤòÄ̤¹»þ´Ö¤Ï¤Þ¤À³ÎÊݤǤ­¤Æ¤ëʬ¥Þ¥·¤Ê¤Î¤«¤â¤·¤ì¤Ê¤¤¤±¤É¡£Ç¯Ëö¤«¤é Amazon ¤ÇÍê¤ó¤À¤±¤ÉÇÛÁ÷ͽÄ꤬Ω¤¿¤º¡¢¥ê¥¢¥ëŹÊÞ¤òõ¤·²ó¤Ã¤Æ¤Þ¤Ç¥²¥Ã¥È¤·¤¿Ëܤ¬²¿ºý¤â¤¢¤ë¤Î¤ËÁ´Á³ÆÉ¤á¤Æ¤Þ¤»¤óT_T

¤Þ¤À¤·¤Ð¤é¤¯¤Ï¤³¤ó¤Ê´¶¤¸¤«¤Ê¤¡¡£¤Þ¡¢¿ÈÂΤ⿴¤âɤó¤Ç¤Ê¤¤¤Î¤¬¹¬¤¤¡£Ã±¤ËÂÎÎϤ¬¤Ê¤¯¤ÆÌµÍý¤¬¸ú¤«¤Ê¤¤¤À¤±¤È¤â¸À¤¦¡£À¤¤ÎÃæ¤Ë¤ã¤³¤ì¤Ë²Ã¤¨¤ÆËèÆüÄ̶ÐÃϹö¤ËÂѤ¨¤Æ¤¤¤ë¿Í¤¬¥´¥Þ¥ó¤Èµï¤ë¤ï¤±¤À¤«¤é¶²¤ìÆþ¤ë¤è¤Í¡¢¤Þ¤Ã¤¿¤¯¡£

Tags: Æü¡¹

*1 ºÇ¶á¤ä¤Ã¤Èµ¤¤Å¤¤¤¿¤±¤É¡¢¼«Ê¬¤Î¾ì¹ç¤ÏÄ´¤Ù¤â¤Î°Ê³°¤Ç¤ÏÆÉ¤à»þ´Ö¤¬¤Ê¤¤Êý¤¬¥Ö¥Ã¥¯¥Þ¡¼¥¯¤Ï¿¤¯¤Ê¤ë·¹¸þ¤¬¤¢¤ë¤é¤·¤¤¡£


2008-02-29 [ĹǯÆüµ­]

_ Rswatch ¤Ê¤ó¤Æ¤â¤Î¤ò½ñ¤¤¤Æ¤ß¤Þ¤·¤¿

¢¨ ¼ÂºÝ¤Ë¤Ï3/1¤Ê¤Î¤Ë¤¢¤¨¤Æ4ǯ¤Ë°ìÅÙ¤ÎÆù¤ÎÆü¤Ë¤Ö¤Ä¤±¤Æ½ñ¤¯¥á¥½¥Ã¥É :)

Swatch ¤¢¤ë¤¸¤ã¤Ê¤¤¤Ç¤¹¤«¡£·»¤µ¤ó¡¢»þ·×¤¸¤ã¤Ê¤¤¤Ã¤¹¤è¡£¤½¤ó¤Ê¥Ù¥¿¤Ê¥Ü¥±¤ÏÍפé¤Ê¤¤¤Ã¤¹¤è¡£¥í¥°´Æ»ë¥Ä¡¼¥ë¤Ã¤¹¤è¡£

SWATCH: The Simple WATCHer of Logfiles

¤Ç¤Þ¤¡¤³¤ì¤Ï³§¤µ¤ó¤´Â¸ÃΤÎÄ̤ê Perl ¤Ç½ñ¤«¤ì¤Æ¤ë¤ï¤±¤Ã¤¹¤è¡£

ÀΤ«¤é¤¢¤ë¥Ä¡¼¥ë¤ÇÈó¾ï¤Ëͭ̾¤Ê¤ï¤±¤Ç¤¹¤±¤É¡¢Îã¤Ë¤è¤Ã¤Æ Perl ¤Ê¤Î¤Ç(?)°Í¸¥â¥¸¥å¡¼¥ë¤¬¤¤¤¯¤Ä¤«¤¢¤Ã¤Æ¡¢¤Þ¤¡ CPAN ¤ÇÆþ¤ì¤ì¤Ð¤¤¤¤¤Î¤Ïʬ¤«¤Ã¤Æ¤ë¤±¤É¡¢CPAN ¥â¥¸¥å¡¼¥ë¤Ã¤Æ¥·¥¹¥Æ¥à´ÉÍýŪ¤Ë¤ÏͼÙË⤯¤µ¤¯¤Í¡©¤È¤¤¤Ä¤â»×¤Ã¤Æ¤ë¼«Ê¬¤È¤·¤Æ¤Ï OS Á´ÂΤΥѥ屡¼¥¸´ÉÍý¥·¥¹¥Æ¥à¤ËÆþ¤Ã¤Æ¤Ê¤¤¤â¤Î¤ÏÆþ¤ì¤¿¤¯¤Ê¤¤¤ï¤±¤Ã¤¹¤è¡£¤Ç¤â´Æ»ë¤Ï¤·¤¿¤¤¤ó¤¹¡£¤º¤ë¤º¤ëÀè±ä¤Ð¤·¤Ë¤·¤Æ¤­¤¿¤ó¤¹¤±¤É¡¢·è¿´¤·¤Æ

Ruby ¤Ç»÷¤¿¤è¤¦¤Ê¤â¤Î½ñ¤±¤Ð¤¤¤¤¤¸¤ã¤ó

¤È¤¤¤¦¤³¤È¤Ç½ñ¤­¤Þ¤·¤¿¡£

http://svn.coderepos.org/share/lang/ruby/misc/rswatch.rb

¤ä¤Ã¤Èư¤¯¤â¤Î¤ò CodeRepos ¤Ë¤¦p¤Ç¤­¤¿¤è¡ª ¼ÖÎØ¤ÎºÆÈ¯ÌÀ¾åÅù¡ª

¤Ç¡¢¥É¥­¥å¥á¥ó¥È¤â¥µ¥ó¥×¥ë¤â²¿¤â¤Ê¤¤¤ó¤Ç¤³¤³¤Ë²¼½ñ¤­¤ò½ñ¤¤¤Æ¤ª¤­¤Þ¤¹¡£

ɬÍפʤâ¤Î

  • Ruby ¤È Ruby ¤ÎÃμ±
  • File::Tail ¥â¥¸¥å¡¼¥ë http://file-tail.rubyforge.org/
    • ·ë¶É°Í¸¥â¥¸¥å¡¼¥ë¤Ï¤¢¤ë¤ï¤±¤Ç¤¹¤±¤É¡¢pure Ruby °ì¸Ä¤Ê¤Î¤Ç¤´´ªÊÛ¤ò¡£
  • ´Æ»ë¤·¤¿¤¤¥í¥°¤Ë´Ø¤¹¤ëÀßÄê¤ò Ruby ¤« YAML ¤Ç½ñ¤¯
  • ´Æ»ë¤ËÍøÍѤ¹¤ë¥ë¡¼¥ë¤È¥¢¥é¡¼¥ÈÂÐ¾Ý¤Î¥í¥°¤ò¸«¤Ä¤±¤¿¤È¤­¤Î¥¢¥¯¥·¥ç¥ó¤ò Ruby ¤Ç½ñ¤¯

°Õ³°¤Ë¥Ï¡¼¥É¥ë¤¬¹â¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£¤³¤ì¤Ï¤Ò¤È¤¨¤Ë

Ãæ¿È¤¬¤Þ¤À²¿¤â¤Ê¤¤

¤«¤é¤Ç¤¹¡£

µ¯Æ°ÊýË¡

Usage:
  rswatch.rb [options]

Options:
  --dry-run      -n  parse config, but no action
  --lib-file     -l  LIBFILE
  --config-file  -f  CONFIGFILE
  --config-yaml  -y  YAMLFILE
  --daemon       -d  daemon mode
  --debug        -D
  --help         -h
  --version      -v

ÀßÄê¤ò -f ¤Ç Ruby ¤Îʸˡ¤Î¥Õ¥¡¥¤¥ë¤«¡¢-y ¤Ç YAML ¤Î¥Õ¥¡¥¤¥ë¤ÇÍ¿¤¨¤Þ¤¹¡£-l ¤ÇÍ¿¤¨¤ë¥é¥¤¥Ö¥é¥ê¤¬¥­¥â¤Ê¤ó¤Ç¤¹¤¬¤³¤ì¤Ï¸å¤Ç¿¨¤ì¤Þ¤¹¡£

ưºî¤¹¤ë Ruby ¤Î¥Ð¡¼¥¸¥ç¥ó¤È File::Tail ¤ÎÃÖ¤­Êý

Ruby 1.6.8 ¤È 1.8.6 ¤Çưºî³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ò½ñ¤¤¤¿¤¤¤Á¤Ð¤ó¤ÎÍýͳ¤Ï Swatch ¤Ï¥Ñ¥Ã¥±¡¼¥¸¤ËÆþ¤Ã¤Æ¤Ê¤¤¤±¤É Ruby 1.6 ¤Ê¤éÆþ¤Ã¤Æ¤ë¤è¡¢¤È¤¤¤¦´Ä¶­¤Ç¤É¤¦¤Ë¤«´Æ»ë¤·¤¿¤«¤Ã¤¿¤«¤é¤Ê¤Î¤Ç¡¢1.6 ¤Çư¤«¤Ê¤¤½ñ¤­Êý¤ÏÉÔµö²Ä¡¢¤È¤¤¤¦ÛȤò¼«Ê¬¤Ë²Ý¤·¤Æ¤¤¤Þ¤¹¡£¤½¤¦¤Ç¤¹¡¢¤¢¤¨¤Æ¤Î GetoptLong ¤Ç¤¹¡£

File::Tail ¤Ï gem ¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Þ¤¹¤¬¡¢¥¢¡¼¥«¥¤¥Ö¤ò¼è¤Ã¤Æ¤­¤Æ $LOAD_PATH ¤ÎÃæ¤Ç file/tail ¤Î³¬Áؤˤʤë¾ì½ê¤ËÃÖ¤¤¤Æ¤ª¤±¤Ð¡¢gem ¤Î¤Ê¤¤´Ä¶­¤Ç¤âÂç¾æÉפǤ¹¡£°ì±þ rswatch.rb ¤½¤Î¤â¤Î¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤â¥Ñ¥¹¤òÄ̤¹¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤Î¤Ç¡¢

rswatch.rb
file/
     tail.rb

¤È¤¤¤¦·Á¤ÇÃÖ¤¤¤Æ¤¯¤ì¤ì¤Ðư¤­¤Þ¤¹¡£

ÀßÄê¤Î½ñ¤­Êý

¤³¤¦¤¤¤¦¹½Â¤¤Î Hash ¤òÍ¿¤¨¤Þ¤¹¡£

# -*- ruby -*-

{
  # recipe name
  'simpleecho' => {
#    'disabled'   => true,
    'watchfiles' => [ '/var/log/apache22/httpd-access.log',
                      '/var/log/apache22/httpd-error.log',
                      '/var/log/messages',
                    ],
    'rules'      => 'nonzero?',
    'backline'   => 1,
    'action'     => 'echo',
    'max_repeat' => 3,
#    'ignore_first' => false,
  },
  RECIPENAME => {
  }
}

´Æ»ëÂоݷ²¤Î¤Ò¤È¤«¤¿¤Þ¤ê¤ò¥ì¥·¥Ô¤È¸Æ¤Ó¤Þ¤¹¡£¥ì¥·¥Ô¤Ë¤Ï²¿¤ò¤·¤¿¤¤¤Î¤«Ê¬¤«¤ê¤ä¤¹¤¤¡¢Å¬Åö¤Ê̾Á°¤ò¤Ä¤±¤Æ¤ä¤Ã¤Æ¤¯¤À¤µ¤¤¡£Ãæ¿È¤Ï

disabled ¤³¤Î¥ì¥·¥Ô¤ò̵¸ú¤È¤¹¤ë¤«¤É¤¦¤«
watchfiles ´Æ»ëÂоݥե¡¥¤¥ë·²
rules ´Æ»ë¥ë¡¼¥ë¤ò1¤Ä°Ê¾å¡£Ê£¿ô¤¢¤ë¾ì¹ç¤ÏAND¤Ç¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£
backline °ìÅ٤˻²¾È¤Ç¤­¤ë¥í¥°¤Î¹Ô¿ô¡£¥Ç¥Õ¥©¥ë¥È¤Ï 1
action ¥ë¡¼¥ë¤¬À®¤êΩ¤Ã¤¿¾ì¹ç¤Ë¼Â¹Ô¤¹¤ë¥á¥½¥Ã¥É
max_repeat ¾å¤Î action ¤ò²¿²ó¤Þ¤Ç¼Â¹Ô¤¹¤ë¤«¡£¥Ç¥Õ¥©¥ë¥È¤Ï̵À©¸Â¡£
ignore_firstµ¯Æ°¸åºÇ½é¤Ë¥ë¡¼¥ë¤Ë¥Þ¥Ã¥Á¤¹¤ë¥í¥°¤ò¸«¤Ä¤±¤Æ¤â¤½¤ì¤ò̵»ë¤¹¤ë¤«¤É¤¦¤«

¥é¥¤¥Ö¥é¥ê¤òÍѰդ·¤Æ¤¯¤À¤µ¤¤

º£¤Î¤È¤³¤í rule ¤â action ¤â¤ª¾þ¤ê¤Î¤â¤Î¤·¤«¤¢¤ê¤Þ¤»¤ó¡£¿½¤·Ìõ¤¢¤ê¤Þ¤»¤ó¤¬

# -*- ruby -*-

module Rswatch
  class Rule < RuleBase
    #
    # [Param] Array backlog
    #
    def example( backlog )
    end
  end

  class Action < ActionBase
    #
    # [Param] String logname
    # [Param] Array  backlog
    #
    def example( logname, backlog )
    end
  end
end

¤³¤ó¤Ê Ruby ¤Î¥Õ¥¡¥¤¥ë¤òÍѰդ·¤Æ¡¢¤³¤ÎÃæ¤Ç¼«Í³¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£

rules, action ¤Ë»ØÄê¤Ç¤­¤ëʸ»úÎó¤Ï¤³¤³¤ÇÄêµÁ¤µ¤ì¤¿¥á¥½¥Ã¥É̾¤Ë¤Ê¤ê¤Þ¤¹¡£

¤Ç¡¢µ¯Æ°»þ¤Î -l ¥ª¥×¥·¥ç¥ó¤Ç¤³¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ¤ä¤ê¤Þ¤¹¡£backlog ¤Ï backline ¤Ç»ØÄꤷ¤¿¹Ô¿ôʬ¤Î¥í¥°¤ÎÃæ¿È¤¬ Array ¤ÇÅϤäƤ­¤Þ¤¹¡£//m =~ backlog.join ¤Ç°ìÅáξÃǤˤ¹¤ë¤â¤è¤·¡¢¹¥¤­¤ËÎÁÍý¤·¤Æ¤¯¤À¤µ¤¤¡£

»Äǰ¤Ê¤¬¤é¥í¥°¥Õ¥¡¥¤¥ë¤Î²òÀϤ˻Ȥ¨¤ëÆ»¶ñ¤Ï Ruby ɸ½à¤Î¤â¤Î¤·¤«¤¢¤ê¤Þ¤»¤ó¡£Apache ¤Î¥í¥°¤ò¥µ¥¯¤Ã¤È²òÀϤ·¤¿¤¤¤È¤« syslog ¤ò¼êÁ᤯²òÀϤ·¤¿¤¤¤È¤«¤½¤¦¤¤¤¦¤³¤È¤ò¤·¤¿¤¤¿Í¤Ï¼«Ê¬¤Ç¤Ê¤ó¤È¤«¤·¤Æ¤¯¤À¤µ¤¤¡£

Ǻ¤ó¤Ç¤¤¤ë¤È¤³¤í

ignore_first ¤ÎÃÍ

ignore_first ¤ÎÃͤÏÊѤ«¤â¤Ç¤¹¡£Î㤨¤Ð¥È¥é¥Ö¥ëÉüµì¸å¤ËºÆµ¯Æ°¤·¤¿¤È¤«¤¤¤¦¾ì¹ç¡¢ºÇ¸å¤Î¥í¥°¤¬¥ë¡¼¥ë¤Ë¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤¹¤ë¤ÈÉüµì¸å¤¹¤°·Ù¹ð¤¬È¯À¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£º£¤Î¤È¤³¤í¥Ç¥Õ¥©¥ë¥È¤Ç¤³¤ÎÃͤò true ¤Ë¤·¤Æ¤¢¤ë¤Î¤Ç²óÈò¤Ç¤­¤Þ¤¹¤¬¡¢¤³¤ì¤Ï false ¤Ë¤·¤Æ¤ª¤¤¤Æ´Æ»ëÂÐ¾Ý¤Î¥í¥°¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¥æ¡¼¥¶¡¼¤Ë¥¹¥¤¥Ã¥Á¤·¤Æ¤â¤é¤Ã¤¿Êý¤¬¤¤¤¤¤è¤¦¤Êµ¤¤â¤·¤Æ¤¤¤Þ¤¹¡£

¥Æ¥¹¥ÈÃʳ¬¤Ç¤Ï¥í¥°¤Î¤Û¤È¤ó¤É¤¬¥ë¡¼¥ë¤Ë¥Þ¥Ã¥Á¤·¤Á¤ã¤¦¾õÂ֤ˤʤäƤ¤¤¿¤Î¤Ç true ¤Ë¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢º£¹Í¤¨¤ë¤È false ¤¬Àµ¤·¤¤µ¤¤â¤·¤Þ¤¹¡£¤´°Õ¸«¤¢¤ëÊý¥Ä¥Ã¥³¥ß¤¯¤À¤µ¤¤¡£

action ¤ÎÍ¿¤¨Êý

action ¤ÎÍ¿¤¨Êý¤ÏÆó¤Ä¤ÎÅÀ¤ÇǺ¤ó¤Ç¤¤¤Þ¤¹¡£

  1. Ê£¿ô¤Î action ¤òÍ¿¤¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤Ù¤­¤«¡©
  2. ¤¤¤Ã¤½ Ruby ¤Î¥Ö¥í¥Ã¥¯¤òÍ¿¤¨¤é¤ì¤ë¤è¤¦¤Ë¤·¤è¤¦¤«¡©

ÆÃ¤ËÆóÈÖÌܤÎÅÀ¤ÇǺ¤ó¤Ç¤¤¤Þ¤¹¡£¤È¸À¤¦¤Î¤â¡¢¸Ä¿ÍŪ¤Ë swatch ¤Ç¤Ï awk É÷¤Î½ñ¼°¤ÎÃæ¤Ç·è¤Þ¤Ã¤¿½èÍý¤·¤«½ñ¤±¤Ê¤¤¤Î¤¬ÉÔÊØ¤À¤Ê¤È´¶¤¸¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£exec ¤ä pipe ¤ò»È¤Ã¤Æ³°Éô¤Î¥×¥í¥°¥é¥à¤Ï¸Æ¤Ù¤Þ¤¹¤¬¡¢¤ä¤Ï¤êÉÔ¼«Í³¤Ê´¶¤¸¤ÏÈݤá¤Þ¤»¤ó¡£¤À¤Ã¤¿¤é Ruby ¤Ç¤½¤Î¤Þ¤Þ½ñ¤±¤¿Êý¤¬¤¤¤ó¤¸¤ã¤Í¡© ÀßÄê¥Õ¥¡¥¤¥ë¤Ç action ¤Ë Ruby ¤Î¥Ö¥í¥Ã¥¯¤ò¤½¤Î¤Þ¤Þ½ñ¤±¤ì¤Ð¤¤¤¤¤¸¤ã¤ó¤È¤â»×¤¦¤Î¤Ç¤¹¤¬¡¢¤½¤¦¤Ê¤ë¤ÈµÕ¤Ë¤è¤¯¤¢¤ë½èÍý¤ò̾Á°¤À¤±¤Ç¸Æ¤Ó½Ð¤¹¤È¤¤¤¦ÊýË¡¤ÈƱµï¤µ¤»¤Ë¤¯¤¯¤Ê¤ê¤Þ¤¹¤·¡¢YAML ¤ÇÀßÄê¤ò½ñ¤¯¤Î¤¬Æñ¤·¤¯¤Ê¤ê¤Þ¤¹¡£*1

¤¢¡¢String ¤À¤Ã¤¿¤é Ruby ¥³¡¼¥É¡¢Symbol ¤À¤Ã¤¿¤é action̾¡¢¤È¤¤¤¦Ê¬¤±Êý¤Ï¤¢¤ê¤«¤â¡£³Î¤« Ruby ¤Î Syck ¤Ï Symbol ¤â²ò¼á¤Ç¤­¤¿¤Ï¤º¡£

Rubyist Magazine - ¥×¥í¥°¥é¥Þ¡¼¤Î¤¿¤á¤Î YAML ÆþÌç (ÃæµéÊÔ)

  • ¥Ç¡¼¥¿·¿¤Ë¤Ä¤¤¤Æ
    • ¿¿µ¶ÃͤȲò¼á¤µ¤ì¤ë¥Ç¡¼¥¿¤Ï¡¢"true/false", "yes/no" ¤Î¤Û¤«¤Ë¡¢"on/off" ¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿Âçʸ»ú¤Ç¤â CamelCase¡ÊÀèÆ¬¤À¤±¤¬Âçʸ»ú¡Ë¤Ç¤âǧ¼±¤µ¤ì¤Þ¤¹
    • YAML¤Î»ÅÍͤˤϤʤ¤¤Ç¤¹¤¬¡¢Syck ¤Ç¤Ï ":foo" ¤Î¤è¤¦¤Ê¡Ö¥³¥í¥ó¡Üñ¸ì¡×¤ÎÁȤ߹ç¤ï¤»¤Ï Ruby ¤Î Symbol ¤È²ò¼á¤µ¤ì¤Þ¤¹¡£

¤ä¤Ã¤Ñ¤½¤¦¤À¡£

Symbol ¤Ã¤ÆÊØÍø¤Ê¤ó¤À¤Ê¤¡¡£ÌäÂê¤Ï¥Ö¥í¥Ã¥¯¤òÅϤµ¤ì¤¿ËÜÂΦ¤Ç¤½¤ì¤ò¤É¤¦¼è¤ê°·¤Ã¤¿¤é¤¤¤¤¤Î¤«¤Þ¤À²¿¤â¹Í¤¨¤Æ¤¤¤Ê¤¤¤È¤³¤í¤«¡£

ÌÜɸ

¤æ¤¯¤æ¤¯¤Ï¤½¤¦¤Ç¤¹¤Í¡¢¥é¥¤¥Ö¥é¥ê¤òÌÜŪÊ̤˥Á¥ç¥¤¥¹¤·¤Æ¥µ¥¯¥Ã¤È´Æ»ë¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿¤¤¤Ç¤¹¤è¤Í¡£¤½¤Î¤¿¤á¤ËËÜÂΤ«¤é rule ¤â action ¤âÀÚ¤êÎ¥¤·¤¿¤ó¤À¤«¤é¡£¤Û¤ó¤È¤Ë¤è¤¯»È¤¦´ðËܤΤâ¤Î¤À¤± Base ¤ÎÊý¤Ë¼è¤ê¹þ¤ó¤Ç¹Ô¤¯Êý¸þ¤Ë¤·¤¿¤¤¤Ç¤¹¡£

¤¢¤È¤¢¤ì¤Ç¤¹¤Í¡£¥Æ¥¹¥È¥­¥Ã¥ÈÍߤ·¤¤¤Ç¤¹¤è¤Í¡£¼«Ê¬¤Î½ñ¤¤¤¿ rule ¤ä action ¤¬Àµ¤·¤¯µ¡Ç½¤¹¤ë¤«¤É¤¦¤«´Êñ¤Ë¥Æ¥¹¥È¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿¤¤¡£¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤«¤Ê¡£Å¬Åö¤Ê¥í¥°¤òÅǤ¯¥³¡¼¥É¤ò½ñ¤±¤Ð¤¤¤¤¤Î¤«¡£¤à¡¼¤ó¡£

¼Õ¼­¤È¶òÃÔ

º£²ó½é¤á¤Æ Thread ¤È fork ¤ò»È¤¤¤Þ¤·¤¿¡£º£¤Þ¤Ç¥Ç¡¼¥¿¤Î²Ã¹©¤·¤«¤·¤Æ¤Ê¤«¤Ã¤¿¤ó¤À¤Ê¡¼¤ÈÄË´¶¡£°Ê²¼¤Î¾ðÊ󤬻²¹Í¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

ºÇ½é¡Ö¥¹¥ì¥Ã¥É¤Ï¥á¥â¥ê¤ò¶¦Í­¤¹¤ë¡×¤È¤¤¤¦¸ÀÍդΰÕÌ£¤¬Ê¬¤«¤é¤ºÇº¤ß¤Þ¤·¤¿¡£¥×¥í¥»¥¹¤Î¾ì¹ç¤Ï´°Á´¤ËʬΥ¤·¤Æ¤·¤Þ¤¦¤¬¥¹¥ì¥Ã¥É¤Î¾ì¹ç¤ÏƱ¤¸¥×¥í¥»¥¹Æâ¤Ê¤Î¤Ç flock ¤ß¤¿¤¤¤Ë¹Ôµ·¤è¤¯°·¤¨¤ÐÊÌ¡¹¤Î¥¹¥ì¥Ã¥É¤ÇƱ¤¸ÊÑ¿ô¤ò¡Ö°·¤¦¤³¤È¤â¤Ç¤­¤ë¤è¡×¤È¤¤¤¦°ÕÌ£¤À¤Èµ¤¤Å¤¯¤Þ¤Ç»þ´Ö¤¬³Ý¤«¤ê¤Þ¤·¤¿¡£º£²ó¤Ï¶¦Í­¤·¤¿¤¤¤â¤Î¤Ï²¿¤â¤Ê¤¤¤Î¤Ç¡Öµ¤¤Ë¤¹¤ë¤³¤È¤Ê¤«¤Ã¤¿¤Î¤«¡ª¡×¤Èµ¤¤Å¤¤¤Æ¥¬¥Ã¥¯¥ê¡£¤·¤«¤·¤½¤Î¤¢¤È¥á¥¤¥ó¥¹¥ì¥Ã¥É¤¸¤ã¤Ê¤¤¤È¤³¤í¤Î¥¨¥é¡¼¤¬¤¹¤°¤Ë¸«¤Ä¤«¤é¤Ê¤¤¤È¤¤¤¦»öÂ֤˵¤¤Å¤¯¤Þ¤Ç̯¤Ê¥Ï¥Þ¤êÊý¤ò¤¹¤ë¤³¤È¤Ë¡£

fork ¤È Process.setsid ¤Î´Êñ¤Ê¥µ¥ó¥×¥ë¤¬¸«¤Ä¤«¤é¤º¡¢¸«Åö°ã¤¤¤Ê¥³¡¼¥É¤ò½ñ¤¤¤ÆÇº¤à¤³¤È¤·¤Ð¤·¡£¤½¤ì¤¾¤ì¤Î¸ºß¤ÏÃΤäƤ¤¤Æ¤â¤É¤³¤Ë²¿¤ò½ñ¤±¤Ð¤¤¤¤¤Î¤«¤¬Ã»¤¯Åª³Î¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥µ¥ó¥×¥ë¤Î¤Ê¤µ¤ËÊ¢¤¬Î©¤Ä¤ÈƱ»þ¤Ë¡¢¼«Ê¬¤¬ Unix ¤Î¥×¥í¥»¥¹¤Î³µÇ°¤¬¤è¤¯Ê¬¤«¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤¬¥Ð¥ì¥Ð¥ì¤Ë¡£tty ¤Î detach ¤Ã¤Æ¤½¤¦¤¤¤¦°ÕÌ£¤«¡¼¤È½é¤á¤ÆÃΤä¿¡£*2

ºÇ½ªÅª¤Ë¤Ï¥¹¥ì¥Ã¥É¤â fork ¤âÌÀ¤ë¤¤¤È¤³¤í¤Ç¥¯¥Ã¥¯¥Ö¥Ã¥¯¤òÆÉ¤ó¤À¤é¤À¤¤¤ÖÍý²ò¤¬¿Ê¤ß¤Þ¤·¤¿¡£Åŵ¤¤ò¾Ã¤·¤Æ¥Í¥Ã¥È¤À¤±¤ËÍê¤Ã¤Æ¤¤¤¿¤é¥Ï¥Þ¤Ã¤¿¡£

*1 YAML ¤Ë¤³¤À¤ï¤ë°ÕÌ£¤Ï¤Ê¤¤¤È¤¤¤¦¹Í¤¨Êý¤â¤¢¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢Ruby ¥³¡¼¥É¤ò½ñ¤¯¤Î¤¬ÌÜŪ¤Ç¤Ï¤Ê¤¯´Æ»ë¤¬ÌÜŪ¤Ç¤¢¤ë¤È¤¤¤¦¾ì¹ç¤Ï¡¢¤ä¤Ï¤êÀßÄê¥Õ¥¡¥¤¥ë¤¬À¸¤Î Ruby ¥³¡¼¥É¤Ç¤¢¤ë¤È¤¤¤¦¤À¤±¤Ç½½Ê¬·É±ó¤µ¤ì¤ë¤È»×¤¦¤Î¤Ç¡¢¤Ç¤­¤ì¤ÐÀ¸¤Î Ruby ¥³¡¼¥É¤Ç¤·¤«ÀßÄ꤬½ñ¤±¤Ê¤¤¤È¤¤¤¦»öÂÖ¤ÏÈò¤±¤¿¤¤¤Ç¤¹¡£¤È¤¤¤¦¤«À¸¤Î Ruby ¥³¡¼¥É¤ÇÀßÄê¤ò½ñ¤±¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤Î¤Ï 1.6 ¤Ç¤âư¤¯¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£

*2 º£²ó stdin, stdout, stderr ¤Ï¤¢¤¨¤Æ¤Ä¤Ö¤·¤Æ¤¢¤ê¤Þ¤»¤ó¡£