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

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

_ RotationMaker ¤òºî¤Ã¤¿

ºÇ¶á¤Ï iCal ¤Å¤¤¤Æ¤¤¤Þ¤¹¡£

/lang/ruby/misc/rotation-maker – CodeRepos::Share – Trac

¤³¤ì¤Ï²¿¤«¡©

README ¤è¤êÈ´¿è

  • Î㤨¤ÐËè½µ·îÍˤ˲¿¤«¤ä¤ê¤Þ¤¹
  • ¥á¥ó¥Ð¡¼¤¬ 5¿Í¤¤¤ÆÃ´Åö¤Ï 2¿Í¤º¤Ä¤È¤·¤Þ¤¹
  • ¤¤¤Ä郎ôÅö¤¹¤ë¤Î¤«À衹¤ÎͽÄê¤ò»»½Ð¤·¤¿¤¤
  • ¥Ï¥Ã¥Ô¡¼¥Þ¥ó¥Ç¡¼¤¬¤¢¤ë¤Î¤Ç¡¢¤½¤Î¾ì¹ç¤Ï²ÐÍˤ˥¹¥é¥¤¥É

¤ß¤¿¤¤¤Ê¤È¤­¤ËÊØÍø¤«¤â¤·¤ì¤Ê¤¤¥Ä¡¼¥ë¤Ç¤¹¡£

»È¤¤Êý

¥ª¥×¥·¥ç¥ó¤òÍ¿¤¨¤º¤Ëµ¯Æ°¤¹¤ë¤È¤Ê¤ó¤È¤Ê¤¯Ê¬¤«¤ê¤Þ¤¹¡£¤¿¤Ö¤ó¡£

$ ruby rotation-maker.rb
Usage: rotation-maker [options]
    -x, --exclude DATE
        --exclude-from-ical ICS
        --exclude-from-file FILE
        --exmethod [METHOD]
    -s, --dtstart DATE
    -e, --dtend DATE
    -i, --interval INTERVAL
    -d, --date EVENT DATE
        --date-from-ical ICS
        --date-from-file FILE
    -m, --member MEMBER
        --member-from-file FILE
    -a, --atonce NUMBER
    -y, --yaml FILE

ºÇÄã¸ÂɬÍפʤâ¤Î¤Ï

  • date
  • member

¤Ç¤¹¡£-d ¤ä -m ¤òÊ£¿ô½ñ¤¤¤Æ¤â¤¤¤¤¤Ç¤¹¤¬¡¢¤½¤ì¤¾¤ì1¹Ô1¥¢¥¤¥Æ¥à·Á¼°¤Î¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤ß¹þ¤Þ¤»¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

¤Þ¤¿¡¢date ¤Ç¤Ï¤Ê¤¯ -s START, -e END, -i INTERVAL ¤Ç¤¯¤êÊÖ¤·¤ÎͽÄê¤òµ­½Ò¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£INTERVAL ¤Ï´ðËÜŪ¤ËÀ°¿ô¤Ç¤¹¤¬¡¢activesupport ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¢¤ì¤Ð week, month, year ¤â»ØÄê¤Ç¤­¤Þ¤¹¡£

exclude ¤Ç½ü³°¤¹¤ëÆüÉÕ¤ò»ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï½ü³°Æü¤ËͽÄ꤬Åö¤¿¤Ã¤¿¤é¤½¤ÎÆü¤Ï¥¹¥­¥Ã¥×¤·¤Þ¤¹¡£exmethod ¥ª¥×¥·¥ç¥ó¤Ë backload ¤òÍ¿¤¨¤Æ¤¤¤¿¤é¼¡¤ÎÆü¤Ë¤º¤é¤·¤Þ¤¹¡£¼¡¤ÎÆü¤â½ü³°Æü¤À¤Ã¤¿¤é½ü³°Æü¤Ç¤Ê¤¯¤Ê¤ë¤Þ¤Ç¥¹¥é¥¤¥É¤·¤Þ¤¹¡£*1

¤¢¡¢º£µ¤¤Å¤¤¤¿¤±¤É slide ¥ª¥×¥·¥ç¥ó¤Ï YAML ¤«¤é¤·¤«Í¿¤¨¤é¤ì¤Ê¤¤¤¸¤ã¤Ê¤¤¤«¡£¸å¤Çľ¤·¤Þ¤¹¡£

YAML ¤ÇÀßÄê¤ò½ñ¤¯¾ì¹ç¤Ï¤³¤ó¤Ê´¶¤¸¤Ç½ñ¤­¤Þ¤¹¡£

dtstart: '2008-12-01'
dtend: '2009-03-31'
interval: week
atonce: 2
exmethod: backload
members:
  - abc
  - def
  - ghi
  - jkl
  - mno
  - pqr
  - stu
excludes:
  # PATH or URI
  ical: http://www.google.com/calendar/ical/japanese%40holiday.calendar.google.com/public/basic.ics

½ÐÎÏÉôʬ¤Ï¼«Ê¬¤Ç½ñ¤¤¤Æ¤¯¤À¤µ¤¤^^;

Î㤨¤Ð¤³¤ó¤Ê´¶¤¸¤Î¤â¤Î¤òÍѰդ¹¤ë¤È iCal ·Á¼°¤ÇͽÄê¤òÅǤ­½Ð¤»¤Þ¤¹¡£

#! /usr/bin/env ruby
# -*- coding: utf-8 -*-

require File.dirname( __FILE__ ) + '/rotation-maker'
require 'erb'
require 'nkf'

def main
  rot = RotationMaker.new.run
  puts NKF::nkf( '-w -Lw', ERB.new( template, nil, '-' ).result( binding ) )
end

def serialized_time( time )
  return time.gsub( /-/, '' )
end

def template
  return <<EOD
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
X-LIC-LOCATION:Asia/Tokyo
BEGIN:STANDARD
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
<%- rot.each do |r| -%>
BEGIN:VEVENT
SUMMARY:¼ÒÆâÊÙ¶¯²ñ
DESCRIPTION:ȯɽ <%= r['member'].join( ', ' ) %>
DTSTART;TZID=Asia/Tokyo:<%= serialized_time( r['date'] ) %>T180000
DTEND;TZID=Asia/Tokyo:<%= serialized_time( r['date'] ) %>T190000
END:VEVENT
<%- end -%>
END:VCALENDAR
EOD
end

main

·ë²Ì¤Ï¤³¤ó¤Ê´¶¤¸¡£

¥Ï¥Ã¥Ô¡¼¥Þ¥ó¥Ç¡¼¤ò½ü¤±¤Æ¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤Ç¤­¤¿ÍÍ»Ò

¤¢¡£¤¢¤ì¡© Google Calendar ¤Ë¤¢¤ë Japanese Holidays ¤ÎÀ®¿Í¤ÎÆü¤Î¾ðÊó¤¬

DTSTART;VALUE=DATE:20090112
DTEND;VALUE=DATE:20090113
DTSTAMP:20081203T115909Z

¤Ë¤Ê¤Ã¤Æ¤Þ¤¹¤Í¡£¸«¤¿ÌÜ¤Ï 12Æü¤À¤±¤Ë¸«¤¨¤ë¤ó¤À¤±¤É¡£¤¨¡¼¤Þ¤¡¡¢¤³¤ì¤Ï¥Ç¡¼¥¿¤ÎÌäÂê¤È¤¤¤¦¤³¤È¤Ç¡£

ÌäÂê¤È¤¤¤¦¤«

iCal ¤Î Rrule *2¤Ã¤Æ¡¢¤¯¤êÊÖ¤·¤Î½ªÎ»¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Ìµ¸Â¤Ë³¤¤¤Æ¤·¤Þ¤¤¤Þ¤¹¤è¤Í¡© ¤³¤ì¤ò¤É¤¦°·¤Ã¤¿¤é¤¤¤¤¤Î¤«¤¬Á´Á³Ê¬¤«¤Ã¤Æ¤¤¤Þ¤»¤ó¡£º£²ó¡¢½ü³°Æü¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿¤¿¤á¡¢½ü³°Æü¤ò Array ¤Ë¤·¤Æ Array#include? ¤Ç¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢Array ¤Ç̵¸Â¤Ê¤ó¤Æ°·¤¨¤Ê¤¤¤Ç¤¹¤è¤Í¡£

¼ÂºÝ¤Ë¤Ï Vpim::Icalendar ¤¬¥¤¥Ù¥ó¥È¤ÎÆü»þ¾ðÊó¤ò DateTime ¤Ç¤Ï¤Ê¤¯ Time ¤Ç°·¤Ã¤Æ¤¤¤ë¤¿¤á¡¢2037ǯÌäÂê¤Ë°ú¤Ã¤«¤«¤Ã¤ÆÍ­¸Â¤ÎÇÛÎó¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢ËÜÅö¤Ë̵¸Â¤Î¤â¤Î¤ò°·¤¤¤¿¤¤¾ì¹ç¤ÏÁ´Éô¤ò·×»»¤Ç°·¤¦ Array °Ê³°¤Î²¿¤«¤¬É¬Íפˤʤë¤ó¤¸¤ã¤Ê¤¤¤«¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£¤È¤Ë¤«¤¯Æ°¤¯¤â¤Î¤òºî¤ê¤¿¤«¤Ã¤¿¤Î¤Ç¤½¤ÎÊÕÆÍ¤Ã¹þ¤ó¤ÇÄ´¤Ù¤Æ¤Þ¤»¤ó¤¬¡£

¤Þ¤¿¤³¤Î¤¿¤á Time ¤Î ArgumentError ¤ò rescue ¤·¤Æ¤½¤Î¤Þ¤ÞÃΤé¤ó´é¤¹¤ë¤È¤¤¤¦Ë½µó¤Ë½Ð¤Æ¤¤¤Þ¤¹¡£¤³¤ó¤Ê¤ó¤¸¤ã¤¤¤«¤ó¤è¤Ê¤¡¡£limit ¤òÀߤ±¤ë¤è¤¦¤Ë¤·¤¿Êý¤¬¤¤¤¤¤Î¤«¡¢Icalendar ¤ËÌᤷ¤¿Êý¤¬¤¤¤¤¤Î¤«¡£Icalendar ¤Ï DateTime ¤Ç°·¤Ã¤Æ¤¤¤ë¤Î¤Ç¾¯¤Ê¤¯¤È¤â 2037ǯÌäÂê¤Ë¤Ï°ú¤Ã¤«¤«¤é¤Ê¤½¤¦¤Ê¤Î¤Ç¤¹¤¬¡£Icalendar ¤Ë¤³¤Î include?( date ) ¤ß¤¿¤¤¤ÊÊØÍø¥á¥½¥Ã¥É¤¬¤¢¤ì¤Ð Array ¤ËŸ³«¤¹¤ë¤³¤È¤Ê¤¯½èÍý¤ò³¤±¤é¤ì¤ë¤Î¤«¤Ê¡£¤¿¤À¡¢¼ÂºÝ¤Ë¤Ï¤É¤³¤«¤Ç¶èÀÚ¤é¤Ê¤¤¤È½èÍý¤¬½ª¤ï¤é¤Ê¤¤¤Î¤Ç¤É¤Ã¤Á¤ß¤Á limit ¤ÏÍפë¤Î¤«¡£

Icalendar ¤Ï Icalendar ¤Ç to_ical ¤¬¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÎó¤ò¤Ö¤Ã¤¿ÀÚ¤ëÌäÂ꤬¤¢¤ë¤·¤Ê¤¡¡£¤Õ¡¼¤àǺ¤Þ¤·¤¤¡£

²¿¤«¤´Â¸ÃΤÎÊý¤Ï¥Ä¥Ã¥³¥ß¤¯¤À¤µ¤¤¡£

TODO ¤È¤«

  • slide ¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¤âÍ¿¤¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë
  • slide ¥ª¥×¥·¥ç¥ó¤ÇͽÄê¤ÎÁ°Åݤ·¤â¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë
  • ÅÚÆü¤ò½ü³°¤¹¤ë¤Î¤Ï¤â¤Ã¤È´Êñ¤Ë¤Ç¤­¤Æ¤â¤¤¤¤¤è¤¦¤Êµ¤¤¬¤¹¤ë

¤²¡£

*atonce ¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éÍ¿¤¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡ä¡ã

»²¹Í

2008-12-04 Äɵ­

Á°¤Î¥¨¥ó¥È¥ê¤Î¥Ä¡¼¥ë¤â°ì½ï¤Ë checkout ¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£¼ê·Ú¤Ë cat ¤Ç¤­¤ë¤Ê¤é·î¿å¶â¥«¥ì¥ó¥À¡¼¤È¤«¤Ç¤â³ä¤È¤¹¤°ºî¤ì¤ë¤Î¤Ç¡¢¤³¤Ã¤Á¤Ç´èÄ¥¤ê¤¹¤®¤ëɬÍפʤ¤¤«¤Ê¤¡¤È¤¤¤¦µ¤¤¬¤·¤Æ¤­¤Þ¤·¤¿¡£

Tags: Ruby iCal

*1 Ç¯Ëöǯ»Ïʬ¡¢´Ý¤´¤È¥¹¥é¥¤¥É¤µ¤»¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

*2 Î㤨¤ÐËè½µ·îÍˤȤ¤¤Ã¤¿·Á¤ÇÀßÄꤵ¤ì¤¿¥¤¥Ù¥ó¥È


2008-12-04 [ĹǯÆüµ­]

_ AutoPagerize ¤ò¥¤¥ó¥È¥é¥¢¥×¥ê¤Ç

AutoPagerize ¤ò¾ïÍѤ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤«¤é½é¤á¤Æ CodeRepos ¤Î Trac ¤ò¸«¤Ë¹Ô¤Ã¤Æµ¤¤Å¤¤¤¿¡£

²¿¤â¤»¤º¤Ë changeset ¤òÁ̤ì¤ë¡ª

AutoPagerize ¤Î¥á¥ê¥Ã¥È¤ÏÍý²ò¤·¤Æ¤¤¤¿¤Ä¤â¤ê¤À¤Ã¤¿¤±¤É¡¢º£²ó¤¬¤¤¤Á¤Ð¤ó´¶Æ°¤·¤¿¡£¤Ê¤ó¤Ç¤«¤Ê¤È»×¤Ã¤¿¤ó¤À¤±¤É¡¢ÉáÃÊ AutoPagerize ¤ÎÂоݤˤʤë¥Ú¡¼¥¸¤Ï

  • ¥Ë¥å¡¼¥¹¥µ¥¤¥È¤Îʬ³äµ­»ö¡ÊºÇ¶á¤³¤ì¿¤¹¤®¡Ë
  • ¸¡º÷·ë²Ì°ìÍ÷

¤¯¤é¤¤¤Ç¡¢¼Â¤Ï¤³¤ÎÆó¤Ä¤Ï AutoPagerize ¤¬¤Ê¤¯¤Æ¤â¤¢¤ëÄøÅÙ¤ÎʬÎ̤ξðÊó¤ò°ìÌܤdzÎǧ¤Ç¤­¤ë¡£

¤·¤«¤· changeset ¤Î¾ì¹ç¤Ï¶Ëü¤ÊÏᢤۤȤó¤É¾ðÊóÎ̤Τʤ¤ changeset ¤¬ÅÓÃæ¤Çº®¤¶¤Ã¤Æ¤¤¤¿¤ê¤¹¤ë*1¤Î¤Ç¡¢°ì¤Ä¤º¤Ä¤á¤¯¤é¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¾õÂÖ¤¬·ë¹½¥¹¥È¥ì¥¹¤À¤Ã¤¿¤è¤¦¤À¡£¼«³Ð¤Ï¤Ê¤«¤Ã¤¿¤±¤É¡¢AutoPagerize ¤¬Íø¤¤¤¿¤È¤­¤Î¶Ã¤­¤Î¤Ç¤«¤µ¤¬¤½¤ì¤ò¼¨¤·¤Æ¤¤¤ë¡£¤Ê¤ë¤Û¤É¡¢¤³¤ì¤¬¡Ö¥¼¥í¥¯¥ê¥Ã¥¯¤Ë¤¹¤ë³×Ì¿¡×¤Ê¤ï¤±¤À¡£

¤È¤¤¤¦¤³¤È¤ÇÁᮥ¤¥ó¥È¥é¤Î Trac ¤Ç¤â AutoPagerize ¤¬Íø¤¯¤è¤¦¤Ë¤·¤¿¤¤¤Ê¤È»×¤Ã¤¿¤ó¤À¤±¤É¡¢¤³¤³¤ÇÆó¤ÄÌäÂ꤬¡£

  • ¥¤¥ó¥È¥é¥¢¥×¥ê¤Î SITEINFO ¤ò Wedata ¤Ë¾å¤²¤ë¤ï¤±¤Ë¤Ï¤¤¤«¤Ê¤¤
  • ¤«¤È¤¤¤Ã¤Æ localhost ¤Î AutoPagerize ¤ò½ñ¤­´¹¤¨¤ëÊýË¡¤Ç¤Ï²¸·Ã¤Ëͤ«¤ì¤ë¤Î¤Ï¼«Ê¬°ì¿Í¡£´î¤Ó¤òʬ¤«¤Á¹ç¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£

¤½¤³¤Çº£²ó¤Ï¥¤¥ó¥È¥éÆâ¤Ë HTTP ¤Ç JSON ¤òÄ󶡤·¤Æ¤¯¤ì¤ë¾ì½ê¤òÍѰդ¹¤ë¤³¤È¤Ë¤·¤¿¡£¤³¤ì¤Ê¤éºÇ½é¤Î°ì²ó¤Ï AutoPagerize ¤Î½ñ¤­´¹¤¨¤¬É¬ÍפÀ¤±¤É¡¢°Ê¹ß¤Ï SITEINFO ¤òÄɲ䷤Ƥ¤¤¯¤È¤É¤ó¤É¤óÂбþ¥¢¥×¥ê¤òÁý¤ä¤¹¤³¤È¤¬¤Ç¤­¤ë¡£

¥¤¥ó¥È¥é¤Î HTTP ¤Ç JSON ¤ò serve

¤¦¤Á¤Î¾ì¹ç¡¢Subversion ¤ò WebDAV ¤Ç±¿ÍѤ·¤Æ¤¤¤ë¤Î¤Ç¡¢Web ¥µ¡¼¥Ð¼þ¤ê¤ÇÆÃ¤Ë¤ä¤ë¤³¤È¤Ï¤Ê¤¤¡£¶ñÂÎŪ¤ÊÊýË¡¤Ï

JSON ¤ò Subversion ¥ê¥Ý¥¸¥È¥ê¤ËÆÍ¤Ã¹þ¤ó¤Ç¤½¤Î URL ¤ò AutoPagerize ¤Ë¶µ¤¨¤Æ¤ä¤ë¤À¤±

¥³¡¼¥É¾å¤Ç¤Ï

var SITEINFO_IMPORT_URLS = [
   'http://wedata.net/databases/AutoPagerize/items.json',
]

¤Ë¥¤¥ó¥È¥é¤Î JSON ¤Î URL ¤ò½ñ¤­Â­¤·¤Æ¤ä¤ì¤Ð¥ª¡¼¥±¡¼¡£

JSON ¥Õ¥¡¥¤¥ë¤òºî¤ë

SITEINFO ¤òºî¤ë¤Ë¤Ï¤Þ¤ººÇ½é

var SITEINFO = [
  {
     url: ,
     nextLink,
     pageElement,
     exampleUrl
  }
]

¤ò½ñ¤­´¹¤¨¤Æ¤¤¤¯¡£¤³¤Î²áÄø¤Ï Wedata ¤Ë¾å¤²¤ë¾ì¹ç¤È°ì½ï¡£

Wedata ¤Ë¾å¤²¤ë¾ì¹ç¤Ï¤³¤Î¤Þ¤Þ¤Ç¤­¤¢¤¬¤Ã¤¿¤â¤Î¤ò¥³¥Ô¥Ú¤¹¤ë¤À¤±¤Ç¤è¤¤¡£AutoPagerize ¤Ç¤Ï JSON ¤ò¼õ¤±¼è¤Ã¤Æ¥Ñ¡¼¥¹¤¹¤ë¤¬¡¢Àè¤Û¤É¥³¥Ô¥Ú¤·¤¿¥Ç¡¼¥¿¤ò Wedata ¦¤Ç JSON ¤Ë¤·¤ÆÄ󶡤·¤Æ¤¯¤ì¤ë¤Î¤Ç Wedata ¤Ë¾å¤²¤ë¾ì¹ç¤Ïñ¤Ê¤ë¥³¥Ô¥Ú¤Ç¤è¤¤¤Î¤À¡£

¤·¤«¤·¥¤¥ó¥È¥é JSON ¤Î¾ì¹ç¤Ï

¼«Ê¬¤Ç Wedata ·Á¼°¤Ë¹ç¤ï¤»¤Æ JSON ¤Ë¥¨¥ó¥³¡¼¥É¤·¤Æ¤ä¤ëɬÍפ¬¤¢¤ë

¤³¤³¤À¤±¤¬°ã¤¦¡£

¤Þ¤º Wedata ¤«¤é¤É¤¦¤¤¤¦¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥Ç¡¼¥¿¤¬Íè¤Æ¤¤¤ë¤Î¤«³Îǧ¡£¤³¤Î´Ö ºî¤Ã¤¿¤â¤Î¤Ç¸«¤Æ¤ß¤ë¤È¤³¤ó¤Ê´¶¤¸¡£

{
  "name": "i\u30bf\u30a6\u30f3\u30da\u30fc\u30b8 (Lite)",
  "updated_at": "2008-11-29T21:33:09+09:00",
  "database_resource_url": "http:\/\/wedata.net\/databases\/AutoPagerize",
  "created_by": "wtnabe",
  "resource_url": "http:\/\/wedata.net\/items\/25850",
  "data": {
    "pageElement": "\/\/table[descendant::hr][position() > 1]",
    "url": "^http:\/\/(?:www\\.)?itp\\.ne\\.jp\/servlet\/jp\\.ne\\.itp ...",
    "nextLink": "\/\/a[text() = \"\u6b21\u3000\u30da\u30fc\u30b8\"]",
    "exampleUrl": "http:\/\/itp.ne.jp\/servlet\/jp.ne.itp.sear.SKWSVmai ..."
  },
  "created_at": "2008-11-28T11:18:17+09:00"
}

¤È¤¤¤¦¤³¤È¤Ï

{
  "data": {
    "pageElement": "",
    "url": "",
    "nextLink": "",
    "exampleUrl": ""
  }
}

¤¬¤¢¤ì¤Ð¤¤¤¤¤ó¤À¤Ê¡£Á´ÂΤȤ·¤Æ¤Ï

[
  {
    "data": {
      "pageElement": "",
      "url": "",
      "nextLink": "",
      "exampleUrl": ""
    }
  },
  {
    "data": {
      "pageElement": "",
      "url": "",
      "nextLink": "",
      "exampleUrl": ""
    }
  },
  ...
]

¤³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ë¡£

JSON ¤Ï°Õ³°¤Ê¤Û¤É¤­¤Ã¤Á¤ê¤·¤Æ¤¤¤Æ¡¢key ¤âʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¤È¤«Ê¸»úÎó¤Ï " ¤Ç°Ï¤àɬÍפ¬¤¢¤Ã¤¿¤ê¤¹¤ë¤ó¤À¤±¤É¡¢¤½¤¦¤¤¤¦¤Î¤Ï¤¤¤Á¤¤¤Á¼«Ê¬¤Çµ¤¤Ë¤¹¤ë¤Î¤Ï¤Ð¤«¤é¤·¤¤¤Î¤Ç¡¢´°À®¤·¤¿¤éŬÅö¤Ê¥Ä¡¼¥ë¤ò»È¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤¹¤ë¤È¤è¤¤¡£

¼«Ê¬¤Î¾ì¹ç¤Ï AutoPagerize Æâ¤ËľÀܽñ¤¤¤¿ SITEINFO ¤òÊÌ¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Æ¡¢Ruby ¤Ê¤ê PHP ¤Ê¤ê¤Ç¥¨¥ó¥³¡¼¥É¤·¤Æ¡¢¤½¤ì¤òÀè¤Û¤É¤Î JSON ¥Õ¥¡¥¤¥ë¤ÎÊý¤Ë¥³¥Ô¥Ú¤·¤Æ¤¤¤ë¡£

¥¤¥ó¥È¥é AutoPagerize¡¢¤³¤ì¤ÏÊØÍø¡£

¤Á¤Ê¤ß¤Ë Trac ¤Î SITEINFO ¤Ï 0.10 ·Ï¤È 0.11 ·Ï¤Ç°Û¤Ê¤ë¡£CodeRepos ¤Ï¤³¤ÎÃʳ¬¤Ç 0.11 ·Ï¤Ç¥¤¥ó¥È¥é¤Î¤â¤Î¤Ï 0.10 ·Ï¤À¤Ã¤¿¤Î¤Ç´Ý¤´¤È¥³¥Ô¥Ú¤·¤¿¤À¤±¤Ç¤Ïư¤«¤Ê¤«¤Ã¤¿¡£

Tags: Firefox

*1 typo ¤òľ¤·¤¿¤È¤«


2008-12-05 [ĹǯÆüµ­]

_ php-shell ¤¬ÊØÍø¤¹¤®¤Æ¥ä¥Ð¤¤·ï

PHP ¤Ë¤Ï php -a ¤È¤¤¤¦¥¤¥ó¥¿¥é¥¯¥Æ¥£¥Ö¥â¡¼¥É¤¬°ì±þ¤¢¤ë¤ó¤À¤±¤É¡¢¤³¤ì¤¬¥Ó¥Ã¥¯¥ê¤¹¤ë¤¯¤é¤¤»È¤¨¤Ê¤¤¡£¤¤¤Á¤Ð¤ó¥Ó¥Ã¥¯¥ê¤Ê¤Î¤Ï

readline ¥â¥¸¥å¡¼¥ë¤òÆÉ¤ß¹þ¤ó¤Ç¤¤¤Ê¤¤¤È <?php ?> ¤ò¾Êά¤Ç¤­¤Ê¤¤

¤Ã¤Æ¤³¤È¡£²¿¤½¤ì¡© PHP ¤ò½ñ¤¯¤è¤Ã¤ÆºÇ½é¤ËÌÀ¼¨¤·¤Æ¤ë¤Î¤Ë <?php ¤ò¾Êά¤Ç¤­¤Ê¤¤¤È¤Ï¡£

¤³¤ì¤Ë¥Ó¥Ã¥¯¥ê¤·¤Æ¥¤¥ó¥¿¥é¥¯¥Æ¥£¥Ö¥·¥§¥ë¤òõ¤·¤Æ¤ß¤¿¤é¡¢¤¤¤¯¤Ä¤«¸«¤Ä¤«¤Ã¤¿¡£Ãæ¤Ç¤â¤³¤ì¤Ï¤¹¤´¤¤¡£

~jk php shell

  • PHP 5 °Ê¹ß
  • pear ¥³¥Þ¥ó¥É¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¡¢irb ¤Î¤è¤¦¤Ë¼Â¹Ô¥Õ¥¡¥¤¥ë¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë
  • ¥Ó¥ë¥É»þ¤Î --with-readline ¤Ç¤Ï¤Ê¤¯¡¢readline.so ¤òÄɲ乤ë·Á¤ÇÍøÍѤǤ­¤ë
  • ¤Ä¤Þ¤êÊä´°¤¬¸ú¤¯
  • ´Ø¿ô¤Î»È¤¤Êý¤ò¤½¤Î¾ì¤ÇÄ´¤Ù¤é¤ì¤ë

¤É¤¦¤Ç¤¹¡£¤Ê¤«¤Ê¤«¤¹¤´¤¤¤Ã¤·¤ç¡£

Î㤨¤Ð¤³¤ó¤ÊÉ÷¤Ë»È¤¨¤ë¡£

$ php-shell.sh
PHP-Shell - Version 0.3.1, with readline() support
(c) 2006, Jan Kneschke <jan@kneschke.de>

>> use '?' to open the inline help

>> get_<TAB>
get_browser(                 get_headers(
get_cfg_var(                 get_html_translation_table(
get_class(                   get_include_path(
get_class_methods(           get_included_files(
get_class_vars(              get_loaded_extensions(
get_current_user(            get_magic_quotes_gpc(
get_declared_classes(        get_magic_quotes_runtime(
get_declared_interfaces(     get_meta_tags(
get_defined_constants(       get_object_vars(
get_defined_functions(       get_parent_class(
get_defined_vars(            get_required_files(
get_extension_funcs(         get_resource_type(
>> ? get_class()
'/**
* Retrieves the class name
*
* @params [object object]
* @return string
*/
'

¤É¤¦¤Ç¤¹¤«¡£

¢¨ ¤¿¤À¡¢PHP ¤Ç¤Ï readline ¥â¥¸¥å¡¼¥ë¼«ÂΤ¬¥Ý¥Ô¥å¥é¡¼¤Ç¤Ê¤¤¤Î¤«¡¢¼ê¸µ¤Î´Ä¶­¤Ç¤Ï¥·¥¹¥Æ¥àɸ½à¤Î¥Ñ¥Ã¥±¡¼¥¸¤À¤±¤Ç readline ¤¬Í­¸ú¤Ê PHP ¤ò¹½ÃۤǤ­¤¿¤Î¤Ï CentOS ¤À¤±¤À¤Ã¤¿¡£Debian ¤â MacPorts, Fink ¤â¥À¥á¤À¤Ã¤¿¡£FreeBSD ¤Ç¤Ï¤¿¤Ö¤ó¥¤¥±¤ë¤±¤É»î¤·¤Æ¤Ê¤¤¡£

¤ª¤Þ¤±1¡Ê2·î4Æü¤Ëµ¤¤Å¤¤¤¿¡Ë

>> ?
'Inline Help:
  >> quit
    leaves the shell
  >> ?
    show this help
  >> ? license
    show license of the shell
  >> :set <var>
    set a shell variable
  >> ? <var>
    show the DocComment a Class, Method or Function
    e.g.: ? fopen(), ? PHP_Shell, ? $__shell
  >> p <var>
    print the variable verbosly
  >> r <filename>
    load a php-script and execute each line
'

¤Ê¤ó¤È¡¢p ¤âÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£irb »È¤¤¤Ê¤é¤³¤ì¤ò»È¤ï¤º¤Ë²¿¤ò»È¤¦¤Î¤À¤È¤¤¤¦ÏäǤ¹¤è¡ª ¤Þ¤¡Ãæ¿È¤Ï¤¿¤À¤Î var_export() ¤Ê¤ó¤À¤±¤É¡£

¤ª¤Þ¤±2¡ÊƱ¤¸¤¯2·î4Æü¤Ëµ¤¤Å¤¤¤¿¡Ë

¤³¤¦¤¤¤¦»È¤¤Êý¤¬¤Ê¤«¤Ê¤«ÊØÍø¤«¤â¡£

php -c INIFILE -q /PATH/TO/php-shell-cmd.php

¥Ç¥Õ¥©¥ë¥È¤Î php-shell.sh ¤òµ¯Æ°¤¹¤ë¤À¤±¤À¤È¡¢Î㤨¤Ð°Æ·ïÆÈ¼«¤ÎÀßÄê¤Ê¤É¤òÈ¿±Ç¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£¤½¤³¤Ç¤³¤ÎÊýË¡¡£¤³¤ì¤Ê¤é¥é¥¤¥Ö¥é¥ê¤ÎÆÉ¤ß¹þ¤ß¤â¥¹¥à¡¼¥º¤Ë¹Ô¤¨¤ë¡£php-shell ¤ÏÁȤ߹þ¤ß¤Î´Ø¿ô¤À¤±¤Ç¤Ï¤Ê¤¯¤Æ PHP ¤Ç½ñ¤«¤ì¤¿¥é¥¤¥Ö¥é¥ê¤Ë¤Ä¤¤¤Æ¤â ? ¤Ç phpdoc ¥³¥á¥ó¥È¤òɽ¼¨¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ç¡¢¿¿ÌÌÌܤ˽ñ¤«¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤¤¤ë¤È¤â¤Î¤¹¤´¤¯ÊØÍø¤Ë»È¤¨¤ë¡£

¥ª¥ì¡© ¥ª¥ì¤Ï¤â¤Á¤í¤óÂç¿¿ÌÌÌܤ˺î¤Ã¤Æ¤¤¤ë¤«¤éÄ¶ÊØÍø¤Ë»È¤Ã¤Æ¤¤¤ë¤è¡ª

Tags: PHP

2008-12-06 [ĹǯÆüµ­]

_ CGI ¤ò rackup ¤·¤Æ¤ß¤¿

Ruby ¤Ï¼«Ê¬¤ÎÂç¹¥¤­¤Ê¸À¸ì¤À¤¬¡¢¼Â¤ÏŤ¯±¿ÍѤ¹¤ë Web ¥¢¥×¥ê¤ò Ruby ¤Ç½ñ¤¤¤¿¤³¤È¤Ï¤Ê¤¤¡£cgi.rb ¤ÎɾȽ¤Ï¤º¤¤¤Ö¤óÁ°¤«¤é˧¤·¤¯¤Ê¤¤¤·¡¢·èÄêÂǤȤʤë¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ÎÉԺߤ¬Ä¹¤¯Â³¤¤¤¿¤³¤È¡¢¤¹¤Ç¤Ë PHP ¤ò»È¤Ã¤Æ¤¤¤¿¤³¤È¤¬Â礭¤ÊÍýͳ¤À¤Ã¤¿¡£

Rails ¤¬Åо줷¤¿¡£ÊÙ¶¯¤·¤¿¡£¡Ö¤¦¡¼¤ó¡¢¤Ê¤ó¤« DBMS ¤È¤«Íפé¤Ê¤¤¤ó¤À¤±¤É¡¢¤É¤¦¤·¤¿¤é¤¤¤¤¤Î¤è¡©¡×¤È»×¤Ã¤Æ¤¤¤ë¤¦¤Á¤ËÀ¤´Ö¤Ç¤Ï¤¹¤Ã¤«¤êÄêÃå¡¢Âå¤ï¤ê¤Ë¼«Ê¬¤ÎÃæ¤Ç¤Ï¶½Ì£¤ÏÇö¤ì¤Æ¤¤¤Ã¤¿¡£¤½¤¦¤³¤¦¤·¤Æ¤¤¤ë¤¦¤Á¤Ë Rails ¤ÎÌäÂêÅÀ¤â¤Á¤ç¤³¤Á¤ç¤³»ØÅ¦¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢prototype.js ¤È¤È¤â¤ËÀè¶î¼Ô¤æ¤¨¤Î¶ìÆñ¤òÌ£¤ï¤Ã¤Æ¤¤¤ë¤Ê¤¡¤È´¶¤¸¤Æ¤¤¤ëº£Æü¤³¤Îº¢¡£

Merb ¤À¤Ê¤ó¤À¤È¸À¤ï¤ì¤Æ¤¤¤¿Ãæ¡¢Rack ¤¬Åо줷¤¿¡£¤³¤ì¤À¡ª¤È»×¤Ã¤¿¡£¤³¤¦¤¤¤¦¥·¥ó¥×¥ë¤Ê¤ä¤Ä¤¬Íߤ·¤«¤Ã¤¿¤ó¤À¤è¡ª¡¡¤·¤«¤·¤½¤ì¤«¤éÆÃ¤Ë²¿¤ÎÍýͳ¤â¤Ê¤¤¤Þ¤Þ°ìǯȾ¤Î·îÆü¤¬Î®¤ì¤¿¡£¤Ê¤ó¤«¤³¤ó¤Ê¤ó¤Ð¤Ã¤«¤À¤Ê¡£RSS ¤ÎÅоì¤Ë¤è¤ê¾ðÊó¤Î¼ý½¸¤Ï®¤¯¤Ê¤Ã¤¿¤±¤É¡¢Ãμ±¤Ë¤¹¤ë¤¿¤á¤Î»þ´Ö¡¢¼ê¤òư¤«¤·¤Æ¡Ö¤Ä¤«¤à¡×¤Þ¤Ç¤Î»þ´Ö¤Ï¡¢¼«Ê¬¤È¤¤¤¦¿Í´Ö¤ÎÀ­Ç½¤¬ÊѤï¤é¤Ê¤¤*1¤Î¤Ç¤Á¤Ã¤È¤âû¤¯¤Ê¤é¤Ê¤¤¡£

¤½¤ó¤Ê¥ª¥ì¸ì¤ê¤Ï¤É¤¦¤Ç¤â¤è¤¯¡¢º£²ó¤Ï¤è¤¦¤ä¤¯¼«Ê¬¤Ç Rack ¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤¿¤è¤È¤¤¤¦¤ªÏᣤ·¤«¤â¡¢¤¢¤ó¤Þ¤ê¸«¤Ê¤¤¡¢WEBrick ¤È CGI ¤ÎÆóËÜΩ¤Æ¡£»î¤·¤¿¤Î¤Ï gem ¤ÇÆþ¤ì¤¿ rack 0.4.0

Rack ¤Î»È¤¤Êý¤ÏÆóÃʳ¬¤¢¤ë

Ķ´Êñ¤Ê¥Á¥å¡¼¥È¥ê¥¢¥ë¤òÆÉ¤ó¤Ç¤â¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¸«¤Æ¤â¤³¤Î°ã¤¤¤òÌÀ³Î¤Ë°Õ¼±¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Æ¶ìÏ«¤·¤¿¡£Rack ¤Îµ¡Ç½¤Ë¤Ï°Ê²¼¤ÎÆóÃʳ¬¤¬¤¢¤ë¡£

  1. Handler ¤Ë¤è¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥µ¡¼¥Ð¤Î°ã¤¤¤òÃê¾Ý²½¤¹¤ë
  2. rackup ¤Ë¤è¤Ã¤ÆÊØÍø¤Ê¥ß¥É¥ë¥¦¥§¥¢¤ò»È¤¦

¤³¤Î°ã¤¤¤Ï

  • ruby ¤«¤éľÀÜ Rack::Handler::FOO.run( App.new )
  • rackup ¤«¤é run( App.new )

¤Î°ã¤¤¤«¤é¤¯¤ë¡£Íפ¹¤ë¤Ë

¥ß¥É¥ë¥¦¥§¥¢¤ò use ¤·¤¿¤±¤ì¤Ð rackup ¤·¤í

¤Ã¤Æ¤³¤È¡£

µÕ¤Ë¸À¤¦¤È rackup ¤·¤Ê¤¯¤Æ¤â Request, Response ¤ÎÃê¾Ý²½¤Ï¹Ô¤¨¤ë¤Î¤Ç´ðËÜŪ¤Ê¤³¤È¤Ï¤Ç¤­¤ë¡£

¤Ç¤Ï¤½¤ì¤¾¤ì¤ÎÊýË¡¤ò¤â¤¦¾¯¤·¾Ü¤·¤¯¸«¤Æ¤ß¤ë¡£

¢¨ ¥Ö¥³¥á¤¤¤¿¤À¤­¤Þ¤·¤¿¡£¥ß¥É¥ë¥¦¥§¥¢¤ÎÃæ¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÆÍ¤Ã¹þ¤ó¤Ç¡¢¥ß¥É¥ë¥¦¥§¥¢¤ò Handler ¤ËÅϤ¹¤È¤¤¤¦ÊýË¡¤â¤¢¤ë¤è¤¦¤Ç¤¹¡£¤Ê¤ó¤«¤Á¤ç¤Ã¤ÈÉԻ׵Ĥʴ¶¤¸¤â¤·¤Þ¤¹¤¬¡¢¤½¤â¤½¤âÆâÉô¤Ç¤Ï¥ß¥É¥ë¥¦¥§¥¢¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºÆµ¢Åª¤Ë wrap ¤¹¤ë¹½Â¤¤Î¤è¤¦¤Ç¤¹¡£

lib/rack/lobster.rb at master from chneukirchen's rack ¡½ GitHub

ruby ¤«¤éľÀÜ Handler ¤ò¸Æ¤ÖÊýË¡

WEBrick ¤ÎÎã

komagata ¤µ¤ó¤Îµ­»ö¤«¤éÇÒ¼Ú¡£

¥¦¥Î¥¦¥é¥Ü Unoh Labs: Rack¤ÇWeb¥¢¥×¥ê¤ÎWeb¥µ¡¼¥Ð¡¼°Í¸¤ò̵¤¯¤¹

#!/usr/bin/env ruby
require 'rubygems'
require 'rack'

class HelloRack
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]]
  end
end

Rack::Handler::WEBrick.run HelloRack.new, :Port => 3000

¤³¤Î hello-rack.rb ¤ò

ruby hello-rack.rb

¤Çµ¯¤³¤·¡¢¤³¤ì¤Ë¥Ö¥é¥¦¥¶¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤È

Hello, Rack

¤Èɽ¼¨¤µ¤ì¤ë¡£¤¦¤à¡£

CGI ¤ÎÎã

Ʊ¤¸¤³¤È¤Ï CGI ¤Ç¤âÅöÁ³¤Ç¤­¤ë¡£

#!/usr/bin/env ruby
require 'rubygems'
require 'rack'

class HelloRack
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]]
  end
end

Rack::Handler::CGI.run HelloRack.new

¤³¤ó¤Ê´¶¤¸¤Ç Handler ¤ò CGI ¤Ë¤·¤Æ¤ä¤ì¤Ð ok. ¤³¤ì¤ò

  • Web ¥µ¡¼¥ÐÇÛ²¼¤Î CGI ¤Î¼Â¹Ô²Äǽ¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤¤Æ
  • ¼Â¹Ô¸¢¸Â¤òÉÕ¤±¤Æ

¥Ö¥é¥¦¥¶¤«¤é¥¢¥¯¥»¥¹¤·¤Æ¤ä¤ë¤È¤µ¤Ã¤­¤ÈƱ¤¸¤è¤¦¤Ë

Hello, Rack

¤Èɽ¼¨¤µ¤ì¤ë¡£¤á¤Ç¤¿¤·¤á¤Ç¤¿¤·¡£

¤³¤ì¤Ç cgi.rb ¤ò»È¤ï¤Ê¤¯¤Æ¤â Ruby ¤Ç CGI ¤ò½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤è¡ª

¡ÊCGIAlt ¤¬¤¢¤ë¤È¤«¸À¤ï¤Ê¤¤¤Ç¤Í¡£¡Ë

µ¤¤ò¤Ä¤±¤Ê¤­¤ã¤¤¤±¤Ê¤¤¤³¤È

°Ê²¼¤Ï¼«Ê¬¤Î¤¿¤á¤Î¥á¥â

  • CGI ¤Î¾ì¹ç¤Ï Web ¥µ¡¼¥Ð¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¾¡¼ê¤Ëµ¯¤³¤·¤Æ¤¯¤ì¤ë¤±¤É¡¢¼Â¹Ô¸¢¸Â¤ÎÉÕÍ¿¤¬É¬Í×
  • WEBrick¡Ê¤Ê¤É¡Ë¤Î¾ì¹ç¤Ï¼«Ê¬¤Ç¥¢¥×¥ê¤òµ¯¤³¤·¤Æ¤ä¤é¤Ê¤¤¤È¤¤¤±¤Ê¤¤

¼«Ê¬¤Î¾ì¹ç¤ÏÀ¸ CGI ¤ò¿¨¤ëµ¡²ñ¤¬¸º¤Ã¤Æ¤¤¤ë¤Î¤Ç¼Â¹Ô¸¢¸Â¤ÎÉÕÍ¿¤ò¤·¤ç¤Ã¤Á¤å¤¦Ëº¤ì¤ë¡£

¤Ç¤â Rack ¤ÎËÜÅö¤Î°ÒÎϤòÌ£¤ï¤¦¤Ê¤é rackup

rackup ¤Ï

rackup -s webrick [config file]

¤Ê¤É¤È¤·¤Æ server(handler) ¤ò»ØÄꤷ¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥µ¡¼¥Ð¤òµ¯Æ°¤¹¤ë¡£rackup ¤¬¹Ô¤ï¤ì¤ë¤È¡¢Ãæ¤Ç

Rack::Builder

¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥µ¡¼¥Ð¤Î´Ä¶­¤òºî¤Ã¤Æ¤¯¤ì¡¢¼«Ê¬¤Î½ñ¤¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤³¤ÎÃæ¤Ç¼Â¹Ô¤µ¤ì¤ë¡£

¤³¤³¤Ç½é¤á¤Æ use ¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£

¤â¤¦¤Á¤ç¤Ã¤ÈºÙ¤«¤¯¸«¤Æ¤ß¤è¤¦¡£

use ¤Ï Rack::Builder ¤Î instance_method

Rack ¤Ç¥ß¥É¥ë¥¦¥§¥¢¤òÄɲ乤ë use ¤Ï Rack::Builder ¤Î instance_method ¤È¤Ê¤Ã¤Æ¤¤¤ë¡£

irb(main):001:0> require 'rack'
=> true
irb(main):002:0> Rack::Builder.methods.grep( /use/ )
=> []
irb(main):003:0> Rack::Builder.instance_methods.grep( /use/ )
=> ["use"]

¤Ä¤Þ¤ê

require 'rack'

¤·¤¿¤À¤±¤Ç¤Ï use ¤Ï»È¤¨¤Ê¤¤¡£

rackup ¤Îή¤ì

rackup ¤òÆÉ¤ó¤Ç¤ß¤ë¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï rackup ¤ÎÃæ¤Ç°Ê²¼¤Î¤è¤¦¤Ë¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¡£¡Ê¾ÜºÙ¤ÏüÀޤäƤ¢¤ë¡Ë

Rack::Builder.new {
  run inner_app
}

¤Ä¤Þ¤ê¤½¤¦¤¤¤¦¤³¤È¡£Rack ¤ÎÊØÍøµ¡Ç½¤ò»È¤¤¤¿¤±¤ì¤Ð rackup ¤¹¤Ù¤·¡£

¤Ç¤Ï¼ÂºÝ¤Ë rackup ¤·¤Æ¤ß¤ë¡£

WEBrick ¤ÎÎã
ľÀܵ¯Æ°¤Ç use ¤Î»È¤¨¤Ê¤¤ÍÍ»Ò

¤µ¤­¤Û¤É¤Î hello-rack.rb ¤Ë use ¤ò²Ã¤¨¤ë¡£

#!/usr/bin/env ruby
require 'rubygems'
require 'rack'

use Rack::ShowExceptions

class HelloRack
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]]
  end
end

Rack::Handler.WEBrick.run HelloRack.new, :Port => 3000

¤¹¤ë¤È¡¢ÅöÁ³¤Ê¤¬¤é

$ ruby hello-rack.rb
hello-rack.rb:6: undefined method `use' for main:Object (NoMethodError)

Åܤé¤ì¤ë¡£use ¤Ê¤ó¤Æ»È¤¨¤Ê¤¤¡£

rackup ¤·¤Æ¤ß¤ë
#! /usr/bin/env ruby
require 'rubygems'
require 'rack'

use Rack::ShowExceptions

class HelloRack
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]]
    cho_www
  end
end

run HelloRack.new

¤³¤³¤ÇÃíÌܤ·¤Æ¤Û¤·¤¤¤Î¤Ï¡¢

  • cho_www ¤È¤¤¤¦ syntax error ¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÃæ¤Ë»Å¹þ¤ó¤Ç¤¢¤ë¤È¤³¤í
  • run ¤Î¸Æ¤ÓÊý¤òÊѤ¨¤¿¤È¤³¤í

¤É¤¦¤â

rackup ¤¹¤ë¤È¤­¤Ï Handler ¤Ï³°¤«¤é¡Êrackup ¤Î -s ¥ª¥×¥·¥ç¥ó¤Ç¡Ë»ØÄꤷ¤Æ¤¢¤²¤¿Êý¤¬¤Ê¤ó¤«¤¦¤Þ¤¯¤¤¤¯´¶¤¸¡£

¤³¤ì¤ò hello-rack.ru ¤Î̾Á°¤ÇÊݸ¤·¡¢

rackup -s webrick -p 3000 hello-rack.ru

WEBrick ¤ò rackup ¤·¤Æ¥Ö¥é¥¦¥¶¾å¤Ç Trace Back

¤Ç¼Â¹Ô¡£

¤´Í÷¤Î¤è¤¦¤Ë¥Ö¥é¥¦¥¶¾å¤Ë Exception ¤òɽ¼¨¤Ç¤­¤ë¡£²èÁü¤Ç¤ÏüÀޤäƤ¢¤ë¤¬ TraceBack ¤âɽ¼¨¤Ç¤­¤ë¡£ÅöÁ³¤Î¤³¤È¤Ê¤¬¤é cho_www ¤òºï½ü¤¹¤ì¤ÐÉáÄÌ¤ËÆ°¤¯¡£

CGI ¤ÎÎã

ľÀܵ¯¤³¤·¤Æ use ¤·¤Æ¥À¥á¤Ê¤Î¤Ï¤µ¤Ã¤­ WEBrick ¤Ç¸«¤¿¤Î¤Ç¾Êά¡£

rackup ¤¹¤ë

ru ¥Õ¥¡¥¤¥ë¤Ï¤µ¤Ã¤­ÍѰդ·¤¿ hello-rack.ru ¤ò¤½¤Î¤Þ¤ÞÍøÍÑ¡£CGI ¤ÎÊý¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£

#! /bin/sh

/opt/local/bin/rackup hello-rack.ru

CGI ¤Ç¤â use Rack::ShowExceptions ¤¬»È¤¨¤¿¡ª

¥Ñ¥¹¤¬ /opt/local/bin ¤Ê¤Î¤Ï MacPorts ¤ÇÆþ¤ì¤¿ Ruby ¤Ç gem ¤ò»È¤Ã¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤«¤é¡£rackup ¤Î¥Ñ¥¹¤ÏŬµ¹Ä´À°¤¹¤ë¤³¤È¡£

¤³¤ì¤ò hello-rack.cgi ¤Î̾Á°¤ÇÊݸ¡¢¤´¤Ë¤ç¤´¤Ë¤ç¤·¤Æ¥Ö¥é¥¦¥¶¤«¤é¥¢¥¯¥»¥¹¤·¤Æ¤ß¤ë¡£²èÁü¤ÎÃæ¤Î URL ¤Î°ã¤¤¤ËÃíÌÜ¡£³Î¤«¤Ë CGI ¤Çư¤¤¤Æ¤¤¤ë¡£

¤¿¤À¤·¡¢ÅöÁ³¤Î¤³¤È¤Ê¤¬¤é CGI ¤Ç rackup ¤¹¤ë¤Î¤ÏÉé²ÙŪ¤Ë¤ÏÉÔÍø¡£

½¾Íè¤Îή¤ì
  1. shebang ¤«¤é Ruby ¤òµ¯Æ°
  2. ¼«Ê¬¼«¿È¤òÆÉ¤ß¹þ¤Þ¤»¤ë
rackup »þ¤Îή¤ì
  1. shebang ¤Ç sh ¤ä¾¤Î¥¤¥ó¥¿¥×¥ê¥¿¤«¤é
  2. rackup ¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤·
  3. ¤½¤³¤«¤é ruby ¤¬¸Æ¤Ð¤ì
  4. ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥í¡¼¥É¤µ¤ì¤ë

¤È¤¤¤¦Ä¹¤¤Æ»¤Î¤ê¤òÍפ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£¤Ç¤â¥á¥ê¥Ã¥È¤Ç¤«¤¤¤·¡£

¤ï¤¶¤ï¤¶ÊÌ¥×¥í¥»¥¹¤Î rackup ¤«¤éµ¯Æ°¤·¤Ê¤¯¤Æ¤â¤¤¤ó¤¸¤ã¤Í¡©¤È»×¤¤¤¿¤¤¤Î¤Ïʬ¤«¤ë¡£¼«Ê¬¤â»×¤Ã¤¿¡£¤Ç¤â·ë¶É rackup ¤ÈƱ¤¸¤È¤Þ¤Ç¤Ï¤¤¤«¤Ê¤¤¤Þ¤Ç¤â»÷¤¿¤è¤¦¤Êή¤ì¤Ç Rack::Builder ¤ò¸Æ¤ó¤Ç¤¢¤²¤Ê¤­¤ã¤¤¤±¤Ê¤¤¤Î¤Ç¡¢Rack ¤ËÍê¤ë¤¦¤Þ¤ß¤¬Çö¤ì¤Á¤ã¤¦¤è¤Í¡©¤È»×¤¦¤Î¤Ç¤½¤¦¤¤¤¦¤³¤È¤Ï¤·¤Ê¤¤¤³¤È¤Ë¤·¤¿¡£

¤Þ¤È¤á

²¿¤Ï¤È¤â¤¢¤ì¡¢Rack ¤Î´ðËÜŪ¤Ê»È¤¤Êý¤Ïʬ¤«¤Ã¤¿¡£map ¤È¤«¤Ïʬ¤«¤Ã¤Æ¤Ê¤¤¤±¤É¡¢¤³¤ì¤Ç

  1. WEBrick ¤Ç³«È¯
  2. ¤È¤ê¤¢¤¨¤º CGI ¤Ç deploy
  3. Éé²ÙŪ¤Ë¤Þ¤º¤¤¤Î¤Ç FastCGI ¤Ë¤·¤Þ¤·¤ç¤¦¤«

¤È¤¤¤Ã¤¿½ÀÆð¤Ê±¿ÍѤ¬²Äǽ¤Ë¤Ê¤Ã¤¿¡£

¤è¤·¤è¤·¡£

»²¹Í

Tags: Rack Ruby Web

*1 ¤È¤¤¤¦¤«²ÃÎð¤È¤È¤â¤ËÍî¤Á¤ë°ìÊý¤À¤¼¡ª ¥ª¥ì¤Ï10Âå¤Î¼ã¼Ô¤¸¤ã¤Í¤§¡ª


2008-12-10 [ĹǯÆüµ­]

_ RedHat ·Ï Linux ÍÑ¿·¤·¤á¤Î PHP + MySQL ¤Î¤¢¤ë¥ê¥Ý¥¸¥È¥ê

RepoView: Les RPM de Remi

»È¤Ã¤¿¤³¤È¤Ï¤Ê¤¤¤±¤É¡¢¿·¤·¤¤ PHP ¤ò»È¤¤¤¿¤¤¤±¤ÉÌîÎÉ¥Ó¥ë¥É¤â¼«ÎϥХåڡ¼¥¸¥ó¥°¤â¤¤¤ä¡¢¤Ã¤Æ¤¤¤¦¾ì¹ç¤Ë¤â¤·¤«¤·¤Æ»È¤¨¤ë¤Î¤«¤Ê¡©

¤Ç¤â¼«Ê¬¤Ç»È¤¤¤¿¤¤¥â¥¸¥å¡¼¥ë¤¬¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ê¤Ã¤Æ¤Ê¤«¤Ã¤¿¤é¤ä¤Ã¤Ñ¼«Ê¬¤Ç¤ä¤é¤Ê¤¤¤È¥À¥á¤Êµ¤¤¬¤¹¤ë¤Ê¡£

Tags: PHP

2008-12-12 [ĹǯÆüµ­]

_ SimmpleTest ¤Î¥µ¥¤¥È¤¬°ú¤Ã±Û¤·¤Æ¤¿

¤·¤«¤â¸Å¤¤Êý¤ÏÊüÃÖ¤À¤Ã¤¿¤ó¤ÇÊѲ½¤Ëµ¤¤Å¤«¤Ê¤«¤Ã¤¿¡£¤ª¤¤¤ª¤¤¡£

SimpleTest - Unit Testing for PHP

1.0.1 ¤¬½Ð¤Þ¤·¤¿¡£PHP 4.2 ¤«¤é 5.3 ¤Þ¤Ç¥«¥Ð¡¼¤¹¤ë¥Æ¥¹¥È¥Ä¡¼¥ë¤Ç¤¹¤è¡¢¤È¤Ç¤«¤Ç¤«½ñ¤«¤ì¤Æ¤¤¤ë¤ó¤À¤±¤É¡¢º¸¤ÎÊý¤Ë¤³¤Ã¤½¤ê¤³¤Î¥ê¥ê¡¼¥¹¤¬ PHP 4 ¸ß´¹¤ÇºÇ¸å¤À¤è¤È½ñ¤«¤ì¤Æ¤¤¤ë¡£¤Ä¤Þ¤ê¡¢

PHP 4 ¤«¤é 5 ¤Î°Ü¹Ô¤Ë³è¤«¤»¤ë¤Î¤Ï SimpleTest 1.0.1 ¤Þ¤Ç¤À¤è

¤È¤¤¤¦¤³¤È¡£

¢¨ ¥µ¥ó¥×¥ë¤ò¸«¤ë¤È SimpleTest ¤ÎÊý¤Ë¤â BDD ¤Î±Æ¶Á¤¬½Ð¤Æ¤¤¤ëµ¤¤¬¤¹¤ë¡£¤¿¤À PHP ¤ÊÀ¤³¦¤Î¥Æ¥¹¥È¥Ä¡¼¥ë¤Ç¤Ï¿·¤·¤¯½Ð¤Æ¤­¤¿ PHPSpec ¤Ê¤ó¤«¤âƱ¤¸¤Ê¤ó¤À¤±¤É´Ø¿ô̾¤ò Behavior ¤Ë¤¹¤ë¥¢¥×¥í¡¼¥Á¤¬Â¿¤¤¡£¤Ç¤â¤³¤ìÀäÂÐ¥À¥á¤À¤È»×¤¦¤ó¤À¤è¤Ê¡£´Ø¿ô̾¤Ë»È¤¨¤ëʸ»ú¤Ë¤ÏÀ©¸Â¤¬Â¿¤¹¤®¤ë¡£¤¿¤À¤Ç¤µ¤¨ Ruby ¤È°ã¤Ã¤Æ ? ¤È¤«»È¤¨¤Ê¤¤¤ó¤À¤«¤é¡£¤ªÁ°¤é RSpec ¤Î¾å¤ÃÌ̤À¤±¿¿»÷¤·¤Æ´î¤ó¤Ç¤ë¤ó¤¸¤ã¤Í¤¨¡£

¼êÁ°Ì£Á¹¤ÊÏäÀ¤±¤É¡¢¼«Ê¬¤¬Í¤«¤Ã¤Æ¤¤¤ë´Ä¶­¤Ç PHP 4 ¤Î¤â¤Î¤Ï¤â¤¦¤Ê¤¤¡£¤³¤ì¤Ï 1ǯÁ°»¶¡¹¶ìÏ«¤·¤¿À®²Ì¤À¡£¤½¤ÎºÝ¡¢

  • SimpleTest ¤Ë¤è¤ë¥æ¥Ë¥Ã¥È¥Æ¥¹¥È
  • ¤ª¼êÀ½¤Î¥Á¥§¥Ã¥«¡ÊÍפÏÊÒ¤Ãü¤«¤é¥¹¥¯¥ê¥×¥È¤òµ¯¤³¤·¤Þ¤¯¤Ã¤ÆÃ×̿Ū¤Ê¥¨¥é¡¼¤òÅǤ­½Ð¤µ¤»¤ë¤â¤Î¡Ë

¤¬Âç³èÌö¤·¤Æ¤¯¤ì¤¿¡£

¼Â¤Ï SimpleTest ¤ÎÁ°¤Ë PHPUnit ¤ò¤Á¤ç¤Ã¤È¤À¤±»È¤Ã¤Æ¤¤¤¿¤³¤È¤â¤¢¤Ã¤¿¤ó¤À¤±¤É¡¢¤½¤Î¸å¤¹¤° SimpleTest ¤Ë¾è¤ê´¹¤¨¤¿¡£Íýͳ¤Ï

  1. PHPUnit ¤Ï PHP 4, 5 ¤ÎξÂбþ¤Ç¤Ï¤Ê¤«¤Ã¤¿
  2. SimpleTest ¤ÎÊý¤¬¥Æ¥¹¥È·ë²Ì¤Îɽ¼¨¤¬É¸½à¤ÇÇɼê¤á¤Ç¡¢¤Á¤ç¤Ã¤È³Ú¤·¤½¤¦¤À¤Ã¤¿¤Î¤ÇƳÆþ¤Î¿´ÍýŪ¥Ï¡¼¥É¥ë¤ò²¼¤²¤Æ¤¯¤ì¤¿

¤ÎÆó¤Ä¤¬Â礭¤«¤Ã¤¿¡£¼«Ê¬°ì¿Í¤À¤Ã¤¿¤é 1 ¤À¤±¤Ç½½Ê¬¤Ë°Ü¹ÔÍýͳ¤Ë¤Ê¤ë¤ó¤À¤±¤É¡¢Â¾¤Î¿Í¤Ë¤â»È¤Ã¤Æ¤â¤é¤ª¤¦¤È»×¤¦¤È 2 ¤ÎÍýͳ¤âƱ¤¸¤¯¤é¤¤¤ËÂ礭¤Ê¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¯¤ë¡£

¥¤¥ó¥¹¥È¡¼¥ë¤Ïº£¤Þ¤Ç¤º¤Ã¤È pearified.com ¤Î 1.0 ¤ò»È¤Ã¤Æ¤¤¤¿¤ó¤À¤±¤É¡¢¤Ê¤ó¤« pearified ¤â¤³¤Î¤Þ¤ÞÊüÃ֥ץ쥤¤ÊÆ÷¤¤¤¬¤×¤ó¤×¤ó¤¹¤ë¤Î¤Ç¡¢¼«Á°¤Ç pear ¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤·¤è¤¦¤«¤Ê¤È»×¤¤»Ï¤á¤Æ¤¤¤ë¡£¤Þ¤¡¡¢³«È¯´Ä¶­¤À¤±¤Ê¤é¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤¹¤ëɬÍפâ¤Ê¤¤¤Ã¤Á¤ã¤Ê¤¤¤·¡¢ºÇ¶áή¹Ô¤ê¤Î¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ï pear »È¤ï¤Ê¤¤¤Î¤â¿¤¤¤ó¤À¤±¤É¤Í¡£¤Ç¤â pear ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤·¤Ê¤¤¤ó¤Ê¤é¤»¤á¤Æ¥ê¥Ý¥¸¥È¥ê¤Ç¤Á¤ã¤ó¤È¥¿¥°¤ÏÂǤäȤ¤¤Æ¤Û¤·¤¤¤ï¡£svn co ¤Ï¼Â¼Á trunk ¤Î¤ß¤È¤«¤¤¤ä¤¹¤®¤ë¡£

Tags: PHP

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

_ Routing ¤Î¤ªÊÙ¶¯

Rack ¤Ë¶½Ì£¤ò»ý¤Ã¤¿¤Ä¤¤¤Ç¤Ë°ÊÁ°¤«¤é¥Á¥§¥Ã¥¯¤À¤±¤·¤Æ¤ª¤¤¤¿

Horde/Routes: Elegant URL Handling

¤òºÇ¶áÆÉ¤ó¤Ç¤¤¤¿¡£¤³¤ÎÏäò twitter ¤È #openpear ¤È #coderepos ¤Ë¿¶¤Ã¤¿¤éÈ¿±þ¤¬¤¢¤Ã¤¿¤Î¤Ï coderepos ¤À¤±¤À¤Ã¤¿¡£¤½¤³¤Ç

¤òÃΤä¿¡£ÏäϤ½¤Î¤Þ¤Þ RouterCon ÊýÌ̤عԤäƴ°Á´¤Ë¥Í¥¿¤È¤·¤Æ¾º²Ú¤¹¤ë¤³¤È¤¬¤Ç¤­¤¿¡£¹ç¾§¡£

¤Þ¡¢¤½¤ì¤Ï¤È¤â¤«¤¯¡¢

  • PHP ¤ÎÀ¤³¦¤Ï¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ë¿¾¯ÉÔËþ¤¬¤¢¤Ã¤Æ¤â²æËý¤·¤Æ»È¤¦¤·¡¢Router ¤Ë¶½Ì£¤¢¤ë¿Í¤Ï¤¢¤ó¤Þ¤ê¤¤¤Ê¤¤¤ó¤¸¤ã¡©
  • ¤Ê¤ó¤À¤«¤ó¤À¤Ç¤ß¤ó¤Ê routes.py ¤ò»²¹Í¤Ë¤·¤Æ¤¤¤ë

¤È¤¤¤¦Ïäϻ²¹Í¤Ë¤Ê¤Ã¤¿¤·¡¢¤Ê¤«¤Ê¤«¶½Ì£¿¼¤«¤Ã¤¿¡£¤¤¤Á¤Ð¤ó¶¦´¶¤ò³Ð¤¨¤¿¤Î¤Ï

11:08:15 <tokuhirom__> ¤¦¤ï¡¼
11:08:31 <tokuhirom__> ¤»¤Ã¤«¤¯¤Î routes.py ¤Î¥«¥Ã¥³¥¤¥¤DSL¤¬
11:08:35 <tokuhirom__> array() ¤Ë¤è¤Ã¤ÆÂæÌµ¤·¤À¡¼

¤¤¤ä¤Þ¤Ã¤¿¤¯ :-) ¥Û¥ó¥È PHP ¤Ï¥­¥Ä¤¤¤Ã¤¹¡£array() ¤Î¥Ò¥É¤µ¤ÏÈȺáµé¤Ç¤¹¡£ÊØÍø¤Ê¤Î¤Ïʬ¤«¤Ã¤¿¤«¤é¡¢¤â¤¦°ì¤ÄƧ¤ß¹þ¤ó¤Ç array ¤Ëʬ²ò¤·¤Æ¤¯¤ì¤ë¥ì¥¤¥ä¡¼¤ò¶´¤Þ¤Ê¤¤¤È DSL ¤È¤·¤Æ¤Ïµ¡Ç½¤·¤Ê¤¤¤è¤Ê¡£¤Þ¤¡¸½¼ÂŪ¤Ë¤Ï»þ´Ö¤È¤«¥â¥í¥â¥í¤Î·ó¤Í¹ç¤¤¤Ç array() ¤à¤­½Ð¤·¤Ã¤Æ¼«Ê¬¤Ç¤â¤è¤¯¤ä¤ë¤ó¤À¤±¤É¤µ¡£

¤¢¤È¤³¤ÎÊÕ

11:40:35 <kazuho> ¥ë¡¼¥¿¡¼¤ÎÄêµÁ¤Ã¤Æ¤Ê¤ó¤¹¤«¡©
11:41:14 <tokuhirom__> ¤Ê¤ó¤À¤í¤¦
11:41:27 <kazuho> HTTP::Router ¤¢¤¿¤êÆÉ¤á¤Ð¤ï¤«¤ê¤Þ¤¹¡©
11:41:39 <tokuhirom__> Web Application ¤Ë¤ª¤¤¤Æ¡¢¥³¥ó¥È¥í¡¼¥é¡¼ and/or
¥¢¥¯¥·¥ç¥ó¤È URL ¤È¤Î¥Þ¥Ã¥Ô¥ó¥°¤òÄêµÁ¤¹¤ë¤â¤Î
11:41:41 <tokuhirom__> ¤«¤Ê¡£
11:41:48 <kazuho> ÁÐÊý¸þ¡©
11:42:00 <tokuhirom__> URL => Controller/Action
11:42:05 <tokuhirom__> ¤Ç¤¹¤Í¡£
11:42:12 <tokuhirom__> µÕÊý¸þ¤Ï optional ¤ÊÍ×ÁǤǤϤʤ¤¤«¤È¡£
11:42:38 <kazuho> ¤¢¤¶¡¼¤¹¡£¤¸¤ã¤¢¡¢¤½¤ì¤âÏÀÅÀ¤Ç¤¹¤«¤Í¡£¤¢¤Þ¤ê¼ûÍפʤ¤¤Î¤«¤Ê¡¼

¼ÂºÝ View ¤ò½ñ¤¯¤È¤­¤Ë¤Ï狼¤¬µÕÊý¸þ¤ÎÉôʬ¤òôÅö¤·¤Ê¤¤¤È°Õ¿Þ¤·¤¿ Routing ¤Ë¥Þ¥Ã¥Á¤·¤Ê¤¤ URL ¤ò´Êñ¤ËÀ¸À®¤Ç¤­¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤·¤Æ´ÉÍý¤·¤­¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£Rails Ū¤Ë¤Ï Helper ¤¬¤³¤ÎÉôʬ¤òôÅö¤¹¤ë¤³¤È¤Ë¤·¤Æ¤¢¤ë¤Î¤«¤Ê¡© ¾¯¤Ê¤¯¤È¤â Rails ·Ï¤Î CakePHP ¤Ç¤Ï View ¤Î Helper ¤ÇÂбþ¤¹¤ëÊý¿Ë¤Ë¤Ê¤Ã¤Æ¤ë¤ß¤¿¤¤¡£¥Õ¥ë¥¹¥¿¥Ã¥¯¤Î¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ç¤Ï¤Þ¤¡¤É¤³¤Ç½èÍý¤·¤Æ¤âÌäÂê¤Ê¤¤¤ä¤Í¡£

ÏäÏÌá¤Ã¤Æ Horde/Routes ¤È¤â¤¦°ì¤Ä»÷¤¿¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ë Net_URL_Mapper ¤Ç¤Ï¡¢Horde/Routes ¤À¤±¤¬µÕÊý¸þ¤Î URL ¤ÎÁȤßΩ¤Æµ¡Ç½¤â»ý¤Ã¤Æ¤ª¤ê¡¢Ã±ÂΤΠrouting ¥é¥¤¥Ö¥é¥ê¤È¤·¤Æ°·¤¤¤ä¤¹¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤È»×¤¦¡£Â®ÅÙº¹¤È¤«¤Ï·×¤Ã¤Æ¤Ê¤¤¤Î¤Ç¤³¤ì¤À¤±¤Ç°ì³µ¤Ë Horde/Routes ¤ÎÊý¤¬Í¥½¨¤È¤Ï¸À¤¤ÀÚ¤ì¤Ê¤¤¤±¤É¡¢Ã±ÂΤΠrouter, mapper ¤Ï¸Ä¿ÍŪ¤Ë¤ÏµÕÊý¸þ¤ÎÊÑ´¹¤â»ý¤Ã¤Æ¤¤¤Æ¤¯¤ì¤ëÊý¤¬°Â¿´´¶¤¬¤¢¤ë¡£

¾¤Ë Zend Framework ¤â¸«¤Æ¤ß¤¿¤±¤É¡¢¤³¤Î routing ¤Ï Rails É÷¤Î¤è¤¦¤ÇÈù̯¤Ë°ã¤¦¡£¤Þ¤¿ Zend Framework ¤ÏÁ·ë¹ç¤ò°Õ¼±¤·¤Æ¤ª¤ê¡¢Router ¤È Dispatcher ¤òÊÌ¡¹¤ËÍøÍѤǤ­¤½¤¦¤Ë¸«¤¨¤ë¤ó¤À¤±¤É¡¢¼ÂºÝ½èÍý¤òÄɤ¤¤«¤±¤Æ¹Ô¤¯¤È PHP 5 ¤«¤éÆþ¤Ã¤¿¥¿¥¤¥×¥Ò¥ó¥Æ¥£¥ó¥°¤¬¼ÙË⤷¤Æ¤ª¤ê¡¢duck type Ū¤ËÊ̤ʥ饤¥Ö¥é¥ê¤òÆÍ¤Ã¹þ¤à¤Î¤Ï¤Á¤ç¤Ã¤ÈÆñ¤·¤½¤¦¤Ê´¶¤¸¡£ÊѤʤȤ³¤í¤Ç Java Ū¤Ê¹Í¤¨Êý¤Ë¿¶¤Ã¤Á¤ã¤¦¤Î¤Ï¤Á¤ç¤Ã¤È´ªÊÛ¤·¤Æ¤Û¤·¤¤¡£PHP ¤Ã¤Æ³«È¯¼Ô¤ÎÌܻؤ¹Êý¸þ¤È¥æ¡¼¥¶¡¼¤ÎÌܻؤ¹Êý¸þ¤¬¹ç¤Ã¤Æ¤Ê¤¤¤ó¤¸¤ã¤Ê¤¤¤«¡£

Tags: Web

2008-12-18 [ĹǯÆüµ­]

_ Capistrano ¤Ï»×¤Ã¤¿¤è¤ê¥·¥ó¥×¥ë¤Ç»×¤Ã¤¿¤è¤ê¤¹¤´¤¤

¥·¥¹¥Æ¥à´ÉÍý¼Ô¤Î¤ß¤Ê¤µ¤ó¡¢¤³¤ó¤Ë¤Á¤Ï¡£º£Æü¤Ï Rails ¥¢¥×¥ê¤Î deploy ¥Ä¡¼¥ë¤È¤·¤ÆÍ­Ì¾¤Ê¡Ê¤é¤·¤¤¡ËCapistrano ¤Ë¤Ä¤¤¤Æ¤Ç¤¹¡£¾Ò²ð¡© ¤¤¤¨¤¤¤¨¡£¾Ò²ð¤Ï¤¹¤Ç¤Ëͭ̾¤Ê¿Í¤¿¤Á¤Ë¤è¤Ã¤Æ¤Ê¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥ï¥¿¥·¤¬¤·¤¿¤¤¤Î¤Ï¸¡Æ¤¡£¤³¤¤¤Ä¤Ï¤É¤³¤Ë¤É¤Î¤è¤¦¤Ë»È¤¨¤½¤¦¤«¡£

Capistrano: Home

¥·¥¹¥Æ¥à´ÉÍý¤ÎÏäʤΤˤʤó¤Ç Puppet ¤¸¤ã¤Ê¤¤¤Î¡©¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤ì¤Ï¡¢°ÊÁ° Puppet ¤Î OSX Âбþ¤¬¤¢¤Þ¤ê¤è¤¯¤Ê¤«¤Ã¤¿¤³¤È¤È¡¢¤Þ¤¿¼«Ê¬¤Î´Ä¶­¤¬ PPC Mac ¤À¤Ã¤¿¤¿¤á¡¢²¾ÁÛ¥Þ¥·¥ó¤ò»È¤Ã¤ÆÂ¾¤Î OS ¤òư¤«¤¹¤Î¤â¸½¼ÂŪ¤Ç¤Ê¤¯¡¢ÌÌÅݤˤʤäƤ·¤Þ¤Ã¤Æ¤¤¤¿¤«¤é¤Ç¤¹¡£

¤Ç¡¢½ä¤ê½ä¤Ã¤Æ Capistrano ¤Ã¤Æ¼Â¤Ï deploy °Ê³°¤Ë¤â·ë¹½»È¤¨¤½¤¦¤¸¤ã¤Ê¤¤¡©¤È»×¤¨¤Þ¤·¤¿¤è¤È¤¤¤¦¤ªÏá£ÁÛÄꤷ¤Æ¤¤¤ë¥Ð¡¼¥¸¥ç¥ó¤Ï Capistrano 2.5.3 ¤Ç¤¹¡£

¤Ê¤ª¡¢Îã¤Ë¤è¤Ã¤Æ±³½ñ¤¤¤Æ¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¼±¼Ô¤Î¥Ä¥Ã¥³¥ß¤ªÂÔ¤Á¤·¤Æ¤ª¤ê¤Þ¤¹¡£

Capistrano ¤Îưºî¤ËɬÍ×¤Ê¤Î¤Ï Ruby ¤È ssh ¤À¤±

  • Puppet ¤Ï daemon ¤ò¤¤¤¯¤Ä¤«ÍѰդ·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
    • https ¤ò»È¤Ã¤Æ¤¯¤ì¤ë¤Î¤Ç fw friendly ¤Ç¤¹¤¬¡¢¤½¤ì¤Ë¤·¤¿¤Ã¤Æ¤¤¤í¤¤¤í½àÈ÷¤¬É¬ÍפǤ¹¡£
  • Capistrano ¤Î½àÈ÷¤ÇÂç»ö¤Ê¤Î¤Ï°Ê²¼¤Î2ÅÀ¤À¤±¡£
    • Capistrano*1 ¤ò¥»¥Ã¥È¥¢¥Ã¥×¤¹¤ë1Âæ¤Î¥Þ¥·¥ó
    • ´ÉÍý¤µ¤ì¤ëÊý¤Î¥Þ¥·¥ó¤Ë¤Ï sshd ¤Èºî¶ÈÍѤΠssh ¥¢¥«¥¦¥ó¥È

¤·¤«¤â Puppet ¤È°ã¤¤ C/S Êý¼°¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢Capistrano ¤Î¥»¥Ã¥È¥¢¥Ã¥×¤¬É¬Íפʥޥ·¥ó¤Ï1Âæ¤À¤±¤Ç¤¹¡£

¤Ê¤ó¤«¡¢¤Á¤ç¤Ã¤È¤ª¼ê·Ú¤Ê´¶¤¸¤¬¤·¤Þ¤»¤ó¤«¡£

Capistrano ¼«ÂÎ¤Ï Windows ¤Ç¤âư¤¯

°Í¸¤·¤Æ¤¤¤ë gem ¥Ñ¥Ã¥±¡¼¥¸¤Ï°Ê²¼¤ÎÄ̤ꡣ

$ gem dependency capistrano
Gem capistrano-2.5.3
  net-ssh (>= 2.0.0, runtime)
  net-sftp (>= 2.0.0, runtime)
  net-scp (>= 1.0.0, runtime)
  net-ssh-gateway (>= 1.0.0, runtime)
  highline (>= 0, runtime)
  echoe (>= 0, runtime)

¤¢¤È echoe ¤¬¤³¤ó¤Ê´¶¤¸¡£*2

$ gem dependency echoe
Gem echoe-3.0.2
  rake (>= 0, runtime)
  rubyforge (>= 1.0.0, runtime)
  highline (>= 0, runtime)

ext ¤Ê¥é¥¤¥Ö¥é¥ê¤Ï¤Ê¤¤¤Î¤Ç Capistrano ¼«ÂÎ¤Ï Windows ¤Ç¤âư¤«¤»¤Þ¤¹¡£*3¼«Ê¬¤Ç¼ÂºÝ¤Ë³Îǧ¤Ï¤·¤Æ¤Ê¤¤¤Ç¤¹¤±¤É¡¢Æ°¤«¤·¤Æ¤¤¤ëÎã¤Ïõ¤»¤Ð¤¹¤°¸«¤Ä¤«¤ê¤Þ¤¹¡£

¤¿¤À´ÉÍýÂÐ¾Ý¤Ï ssh ¤Ç¤Ê¤ó¤Ç¤â¤Ç¤­¤ë Un*x ·Ï¥·¥¹¥Æ¥à¤¸¤ã¤Ê¤¤¤È Capistrano ¤ÎÍøÍѤ˻ÝÌ£¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£

Íפ¹¤ë¤Ë¤Ç¤­¤ë¤³¤È¤Ï ssh HOST COMMAND

ssh ¤Ï interactive ¤Ê login shell ¤òÄ󶡤¹¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢

ssh HOST COMMAND

¤Î·Á¤Ç

HOST ¤ËÀܳ¤·¤Æ COMMAND ¤Ë½ñ¤«¤ì¤¿½èÍý¤ò¼Â¹Ô¤·¤Æ½ªÎ»¤¹¤ë

¤È¤¤¤¦»È¤¤Êý¤â¤Ç¤­¤Þ¤¹¡£Â绨ÇĤ˸À¤¦¤È Capistrano ¤Ï¤³¤Îµ¡Ç½¤ò¤è¤êÊØÍø¤Ë»È¤¦¤¿¤á¤Ë

  • ÀܳÀè¤Î´ÉÍý¤ÈÀܳ¤Î¼«Æ°²½
  • ÀܳÀè¤Èºî¶ÈÆâÍÆ¤Î¥»¥Ã¥È¤ò¥¿¥¹¥¯¤Ç´ÉÍý
  • ¥¿¥¹¥¯¤Î¼Â¹Ô

¤òÄ󶡤·¤Æ¤¯¤ì¤ë¤â¤Î¤Ç¤¹¡£¤½¤·¤Æ

¤½¤Î¤¿¤á¤Ë Rake ¤Ë¤è¤¯»÷¤¿ DSL ¤ò»È¤¦

¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

deploy ¥Ä¡¼¥ë¤È¤·¤Æ¾Ò²ð¤µ¤ì¤ë¤³¤È¤Î¿¤¤ Capistrano ¤Ç¤¹¤¬¡¢¤½¤ì¤Ï deploy ÍѤΥ¿¥¹¥¯¤¬¤¢¤é¤«¤¸¤áÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¡¢ÊÑ¿ô¤ò¥»¥Ã¥È¤¹¤ë¤À¤±¤ÇÊØÍø¤Ë»È¤¨¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤«¤é¤Ç¤¢¤Ã¤Æ¡¢

¥¿¥¹¥¯¤òÍѰդ¹¤ì¤Ð ssh ¤Ç¤Ç¤­¤ë»Å»ö¤Ï¤Ê¤ó¤Ç¤â¤Ç¤­¤Þ¤¹¤·¡¢remote ¤Î»Å»ö¤À¤±¤Ç¤Ê¤¯ local ¤Î»Å»ö¤â¤Ç¤­¤Þ¤¹¡£

¤¿¤Ö¤ó¡£

¤¿¤À¤·¡¢Puppet ¤È°ã¤¤¡¢ÀܳÀè¤Î¥µ¡¼¥Ð OS ¤ÎÃê¾Ý²½¤Ê¤É¤Ï¹Ô¤Ã¤Æ¤¯¤ì¤Ê¤¤¤¿¤á¡¢´ðËÜŪ¤Ë¤½¤ÎÉôʬ¤ÏÀ¸¤ÇÁê¼ê¤·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£µÕ¤Ë Puppet ¤Î¤è¤¦¤ËÆÈ¼«Ê¸Ë¡¤Î½¬ÆÀ¤òÍ׵ᤷ¤Þ¤»¤ó¡£

¤È¤¤¤¦¤³¤È¤Ï½¾Íè¤ÎÊýË¡¤«¤é¤Î°Ü¹Ô¥³¥¹¥È¤¬¾®¤µ¤¤

¤Þ¤È¤â¤Ê´ÉÍý¼Ô¤Ê¤é¡¢¥µ¡¼¥Ð¾å¤Î¤¿¤¤¤Æ¤¤¤Îºî¶È¤Ï sh ¤ä Perl¡¢Ruby ¤Ê¤É¤Î¥¹¥¯¥ê¥×¥È¤Ç¤¢¤ëÄøÅÙ¼«Æ°²½¤µ¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£¤³¤ì¤¬ cron ¥¸¥ç¥Ö¤È¤·¤Æ´ÉÍý¤Ç¤­¤ë¤Ê¤é¼êºî¶È¤Ï¤º¤¤¤Ö¤ó¸º¤Ã¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£¤¿¤À¡¢

´°Á´¤ËÄê´ü¼Â¹Ô¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤ºî¶È

¤âÃæ¤Ë¤Ï¤¢¤ë¤Ç¤·¤ç¤¦¡£¤½¤Î¾ì¹ç¡¢¤·¤Ö¤·¤Ö¸Ä¡¹¤Î¥µ¡¼¥Ð¤Ë¥í¥°¥¤¥ó¤·¤Æ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤»¤ó¤«¡© ÃѤº¤«¤·¤Ê¤¬¤é¼«Ê¬¤Ï¤½¤¦¤Ç¤¹¡£¤·¤«¤· Capistrano ¤òƳÆþ¤¹¤ì¤Ð

ºÇ¸å¤Î¡Ö¥í¥°¥¤¥ó -> ¼Â¹Ô¡×¤ÎÉôʬ¤ò¼«Æ°²½¡¢´ÉÍý¤Ç¤­¤Þ¤¹¡£

¤½¤¦¤Ç¤¹¡£¸Ä¡¹¤Î¥µ¡¼¥Ð¤Î´ÉÍýÊýË¡¤òÂçÉý¤ËÊѤ¨¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¡Ö¥í¥°¥¤¥ó -> ¼Â¹Ô¡×¤È¤¤¤¦¡¢ºÇ¸å¤Ë»Ä¤Ã¤¿¼êºî¶ÈÉôʬ¤ò Capistrano ¤Î¥¿¥¹¥¯¤È¤·¤Æ´ÉÍý¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤À¤±¤Ê¤Î¤Ç¤¹¡£¤·¤«¤â¥µ¡¼¥Ð¦¤Ï´ðËÜŪ¤Ë¤¤¤¸¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£

¤³¤ì¤¬Ê£¿ô¤Î¥µ¡¼¥Ð¾å¤Îºî¶È¤Ê¤éÌܤ˸«¤¨¤Æ³Ú¤Ë¤Ê¤ê¤Þ¤¹¤·¡¢¥µ¡¼¥Ð¤Î¿ô¤¬¤½¤ì¤Û¤É¿¤¯¤Ê¤¯¤Æ¤â

°ìÄê¤Î¥ï¡¼¥¯¥Õ¥í¡¼¤òÊݾڤ·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¤Ä¤Þ¤ê

´ÉÍýºî¶È¤Î¶¦Í­¡¢°ú¤­·Ñ¤®¤ò³Ú¤Ë¤·¤Æ¤¯¤ì¤Þ¤¹¡£

¤â¤Á¤í¤óÆÈ¼«¥¿¥¹¥¯¤Î´ÉÍý¤Î¤¿¤á¤Ë¤Ï Ruby ¤È Rake ¤Ø¤ÎÍý²ò¤òÍ׵᤹¤ë¤Î¤Ç¡¢³Ú¤Ë¤Ê¤ë°ìÊý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤·¤«¤â Rake ¤â Capistrano ¤â¤½¤ó¤Ê¤Ë¥É¥­¥å¥á¥ó¥È¤¬½¼¼Â¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¥¹¥¯¥ê¥×¥È¤ò½ñ¤¤¤Æ¼«Æ°²½¤·¤Æ¡¢¼êºî¶È¤Ë¤è¤ë¥ß¥¹¤ò¸º¤é¤»¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤Ï¤º¤Ê¤Î¤Ë¡¢¤Ê¤ó¤È¤Ê¤¯Â°¿ÍŪ¤Êºî¶È¤¬»Ä¤Ã¤Á¤ã¤¦Éôʬ¤¬¤¢¤Ã¤Æ¡¢¤Ê¤ó¤«µ¤»ý¤Á°­¤¤¤Ê¤¡¤È´¶¤¸¤Æ¤¤¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï Capistrano ¤ÎƳÆþ¤Ï½½Ê¬¤Ë¸¡Æ¤¤Î²ÁÃͤ¬¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

Ķ´Êñ¤ÊÎã

¤¨¡¼¤È³µÇ°¤ÎÏ䫤饤¥ó¥¹¥È¡¼¥ë¤ÎÊýË¡¤ò¤¹¤ÃÈô¤Ð¤·¤Æ¤¤¤­¤Ê¤ê¼ÂÎã¤ËÆþ¤ê¤Þ¤¹¡£*4

¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ê²¼¤Î¤è¤¦¤ÊÆâÍÆ¤Ç Capfile ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤òºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¥í¥°¥¤¥óÀè¤Î¥µ¡¼¥Ð¤Î¥æ¡¼¥¶¡¼Ì¾¡¢¥Ñ¥¹¥ï¡¼¥É¤Ï°ìÃפ·¤Æ¤¤¤ë¤â¤Î¤È¤·¤Þ¤¹¡£

role :server, 'server1, 'server2'

set :user, 'user'
set :password, 'password'

desc "reporting disk usage with 'df -h'"
task :check_disk, :roles => :server do
  run 'df -h'
end

¤Ç

cap check_disk

¤È¼Â¹Ô¤¹¤ë¤È

 * executing `check_disk'
 * executing "df -h"
   servers: ["server1", "server2"]
   [server1] executing command
   [server2] executing command
** [out :: server1] Filesystem            Size  Used Avail Use% Mounted on
** [out :: server1] /dev/xvda1             32G   24G  7.2G  77% /
** [out :: server1] tmpfs                 201M     0  201M   0% /dev/shm
** [out :: server2] Filesystem            Size  Used Avail Use% Mounted on
** [out :: server2] /dev/mapper/XXX        17G   14G  2.1G  88% /
** [out :: server2] /dev/xvda1             99M   27M   67M  29% /boot
** [out :: server2] tmpfs                 181M     0  181M   0% /dev/shm
   command finished

¤ß¤¿¤¤¤Ê·ë²Ì¤¬ÆÀ¤é¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢server1, server2 ¤Ë¥í¥°¥¤¥ó¤·¤Æ¼ÂºÝ¤Ë df -h ¤·¤¿·ë²Ì¤ò¤½¤Î¤Þ¤Þ¡¢Capistrano ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Þ¥·¥ó¾å¤Ç³Îǧ¤Ç¤­¤¿¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¤É¤¦¤Ç¤¹¡¢¤Ê¤«¤Ê¤«ÌÌÇò¤¯¤Ê¤¤¤Ç¤¹¤«¡£

¾ðÊó¼ý½¸¤¬³Ú¤Ë¤Ê¤ë¤Ï¤º

¤³¤ì¤Ï¤Á¤ç¤Ã¤È¤¤¤­¤¹¤®¤Æ¤ë¤«¤Ê¡©¤È»×¤ï¤Ê¤¯¤â¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢cron ¥¸¥ç¥Ö¤Î¼Â¹Ô¤ò Capistrano ¥Þ¥·¥ó¤Ë½¸Ã椵¤»¤ë¤³¤È¤â²Äǽ¤Ç¤¹¤Í¡£¤³¤¦¤¹¤ë¤È

  • ¸Ä¡¹¤Î¥µ¡¼¥Ð¤Ç crond ¤¬ÉÔÍ×
  • cron ¥¸¥ç¥Ö¤Î¥ì¥Ý¡¼¥È¥á¡¼¥ë¤ò Capistrano ¥Þ¥·¥ó¾å¤Ë½¸Ìó²Äǽ
  • cron ¥¸¥ç¥Ö¤ÎÍͻҤò°ì¥«½ê¤Ç³Îǧ¤Ç¤­¤ë¤Î¤Ç¡¢¥¹¥±¥¸¥å¡¼¥ë¤ò¹Í¤¨¤ä¤¹¤¯¤Ê¤ë

¤È¤¤¤¦¥á¥ê¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£¤â¤Á¤í¤ó¥Ç¥á¥ê¥Ã¥È¤äÉ԰ºàÎÁ¤â¤¢¤Ã¤Æ¡¢

  • ssh login ¤Î¥³¥¹¥È
  • Ť¤»þ´Ö³Ý¤«¤ë»Å»ö¤ò¤µ¤»¤¿¤È¤­¤Î ssh connection ¤Ï¤É¤¦¤Ê¤ë¡©

¤Ê¤ó¤«¤¬µ¤¤Ë¤Ê¤ë¤È¤³¤í¤Ç¤¹¡£¤Þ¤À¸«Íî¤È¤·¤Æ¤ë¤³¤È¤â¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

cron ¤Î¥ì¥Ý¡¼¥È¤Î¼õ¤±¼è¤ê¤¬ÌÌÅݤ¯¤µ¤¤

¤¿¤À¡¢cron ¤Ï¥ì¥Ý¡¼¥È¤Î¥á¡¼¥ë¤Î¼õ¤±¼è¤ê¤¬ÌÌÅݤÀ¤Ê¤È°ÊÁ°¤«¤é´¶¤¸¤Æ¤¤¤¿¤Î¤Ç¡¢¤³¤ÎÌäÂê¤ò²ò·è¤·¤ä¤¹¤¯¤Ê¤ë¤È¤·¤¿¤é¤È¤Æ¤â´ò¤·¤¤¤Ç¤¹¡£¤È¤¤¤¦¤Î¤â¡¢cron ¤Î¥ì¥Ý¡¼¥È¤Ï´ðËÜŪ¤Ë¥í¡¼¥«¥ë¤Î¥¢¥«¥¦¥ó¥È¤Ë¥á¡¼¥ë¤µ¤ì¤ë¤Î¤Ç¤¹¤¬¡¢

¤É¤¦¤ä¤Ã¤ÆÆÉ¤à¤Î¡©

¤È¤¤¤¦ÌäÂ꤬¤Ä¤­¤Þ¤È¤¤¤Þ¤¹¡£º£»×¤¤¤Ä¤¯¤Î¤Ï

  1. ¸Ä¡¹¤Î¥µ¡¼¥Ð¤Ë¥í¥°¥¤¥ó¤·¤ÆÆÉ¤à
  2. ¸Ä¡¹¤Î¥µ¡¼¥Ð¤Ë POP ¥µ¡¼¥ÐΩ¤Æ¤ë
  3. forward ¤¹¤ë
  4. mail -> html -> feed ÊÑ´¹¤·¤Æ feed reader ¤ÇÆÉ¤à

¤¯¤é¤¤¤Ç¤¹¤«¤Í¡£¿ô¤¬Áý¤¨¤Æ¤¯¤ì¤ÐÅöÁ³ 1, 2 ¤Ï¥Ê¥·¤À¤È»×¤¦¤ó¤Ç¤¹¤¬¡¢

forward ¤¹¤ë¾ì¹ç¡¢forward Àè¤Î¥µ¡¼¥Ð¤Ë¤Ï SMTP ¥µ¡¼¥Ð¤È SMTP ¤ÎÄ̤ë·ê¤¬É¬Í×

¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤¬¤Þ¤¿Çº¤Þ¤·¤¤¡£¥á¡¼¥ë¥µ¡¼¥Ð¤¬ LAN Æâ¤Ë¤¢¤ë¤Ê¤é LAN Æâ¤Î¥ì¥Ý¡¼¥È¤Ïʸ¶ç¤Ê¤· LAN Æâ¤Î¥á¡¼¥ë¥µ¡¼¥Ð¤Ç½èÍý¤¹¤ì¤Ð¤¤¤¤¤Ç¤¹¡£¤Ç¤â¥¤¥ó¥¿¡¼¥Í¥Ã¥È¸þ¤±¤Ë¸ø³«¤·¤Æ¤¤¤ë¥µ¡¼¥Ð¤Î¥á¡¼¥ë¤Ï¤É¤¦¤·¤Þ¤·¤ç¤¦¡© LAN Æâ¤Î¥µ¡¼¥Ð¸þ¤±¤Ë forward ¡© fw ¤ÇÊĤ¸¤Æ¤Þ¤»¤ó¤«¡© ¤¸¤ã¤¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¾å¤Î SMTP ¥µ¡¼¥Ð¤ËžÁ÷¡© OBP25 ¤È¤«¤Ë°ú¤Ã¤«¤«¤ê¤Þ¤»¤ó¤«¡© ¤½¤ì¤Ë¥¤¥ó¥¿¡¼¥Í¥Ã¥È¾å¤ËÃÖ¤¤¤¿ SMTP ¥µ¡¼¥Ð¤Ï¤¢¤Ã¤È¤¤¤¦´Ö¤Ë spam ¤ä¥¨¥é¡¼¥á¡¼¥ë¤ÎÍò¤Ë°û¤ß¹þ¤Þ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤¹¤ë¤Èº£ÅÙ¤Ï spam filter ¤À anti virus ¤À¡Ä¡£¤Õ¡¼¡£°ã¤¦¤ó¤À¤è¡¢¥ª¥ì¤Ï¤½¤ó¤Ê¤³¤È¤·¤¿¤¤¤ó¤¸¤ã¤Ê¤¤¤Î¡£Íפ¹¤ë¤Ë

forward ¤â°Õ³°¤ËÌÌÅݤʤΤǤ¹¡£

¤â¤¦°ì¤Ä¡¢¥á¡¼¥ë¤Ã¤¿¤Ã¤Æ¤³¤ó¤Ê¤ÎÊÖ¿®¤ÎɬÍפâ¤Ê¤¤¤·¡¢¤ß¤ó¤Ê feed reader ¤ÇÆÉ¤ß¤¿¤¤¤Ê¤¡¤È°ÊÁ°¤«¤é»×¤Ã¤Æ¤¤¤Þ¤·¤¿¡£¼ÂºÝ¡¢mail -> html -> feed ÊÑ´¹¤ò¤·¤Æ¤¤¤ë¿Í¤Ï¸«¤«¤±¤Þ¤¹¡£HTML ¤Ë¤·¤Æ URI ¤¬ÉÕ¤±¤ÐÆâÍÆ¤Î¶¦Í­¤â³Ú¤Ç¤¹¡£*5¤·¤«¤·¤É¤¦¤·¤Æ¤âžÁ÷¤ÎÉôʬ¤¬¥Í¥Ã¥¯¤Ë¤Ê¤ê¤Þ¤¹¡£³Æ¥µ¡¼¥Ð¤Ç feed ÅǤ¤¤Æ¤½¤ìpla ¤Ç¼ý½¸¤·¤Æ¤â¤¤¤¤¤Ç¤¹¤±¤É¡¢¤Ê¤ó¤«¤½¤ì¤â¤É¤¦¤Ê¤ó¤À¤È¡£

¤Ç¤â Capistrano ¤«¤é¥¿¥¹¥¯¤ò¼Â¹Ô¤¹¤ì¤Ð¡¢¼«Æ°Åª¤Ë¡¢¾¯¤Ê¤¯¤È¤â stdout ¤ä stderr ¤ÎÆâÍÆ¤Ï¼èÆÀ¤Ç¤­¤Þ¤¹¡£·ë²Ì¤ò¥Õ¥¡¥¤¥ë¤ËÍî¤È¤¹¥¿¥¤¥×¤Ç¤â¥Õ¥¡¥¤¥ë¤ÎžÁ÷¤¬²Äǽ*6¤Ê¤Î¤Ç¤½¤ì¤ò¼èÆÀ¤·¤Æ¤¯¤ì¤Ð¥ª¥Ã¥±¡¼¤Ç¤¹¡£

¤Æ¤³¤È¤Ï¡¢¥ì¥Ý¡¼¥È¤Î¼ý½¸¤ÎÉôʬ¤Ï¼«Æ°Åª¤Ë¥¯¥ê¥¢¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤ª¤¦¡¢¤Ê¤ó¤«¤³¤ìÌÌÇò¤½¤¦¤¸¤ã¤ó¡£

¤Ç¤­¤½¤¦¤Ê¤³¤È¤Î°ìÍ÷

¥¯¥é¥¹¤Î°ìÍ÷¤«¤é°ìÉô¤òÈ´¿è¡£

Capistrano::Configuration
Capistrano::Configuration::Actions
Capistrano::Configuration::Actions::FileTransfer
Capistrano::Configuration::Actions::Inspect
Capistrano::Configuration::Actions::Invocation
Capistrano::Configuration::Actions::Invocation::ClassMethods
Capistrano::Configuration::Callbacks
Capistrano::Configuration::Connections
Capistrano::Configuration::Execution
Capistrano::Configuration::Loading
Capistrano::Configuration::Loading::ClassMethods
Capistrano::Configuration::Namespaces
Capistrano::Configuration::Namespaces::Namespace
Capistrano::Configuration::Roles
Capistrano::Configuration::Servers
Capistrano::Configuration::Variables
Capistrano::Deploy
Capistrano::Deploy::Dependencies
Capistrano::Deploy::LocalDependency
Capistrano::Deploy::RemoteDependency
Capistrano::Deploy::SCM
Capistrano::Deploy::SCM::Accurev
Capistrano::Deploy::SCM::Accurev::InternalRevision
Capistrano::Deploy::SCM::Base
Capistrano::Deploy::SCM::Base::LocalProxy
Capistrano::Deploy::SCM::Bzr
Capistrano::Deploy::SCM::Cvs
Capistrano::Deploy::SCM::Darcs
Capistrano::Deploy::SCM::Git
Capistrano::Deploy::SCM::Mercurial
Capistrano::Deploy::SCM::None
Capistrano::Deploy::SCM::Perforce
Capistrano::Deploy::SCM::Subversion
Capistrano::Deploy::Strategy
Capistrano::Deploy::Strategy::Base
Capistrano::Deploy::Strategy::Checkout
Capistrano::Deploy::Strategy::Copy
Capistrano::Deploy::Strategy::Export
Capistrano::Deploy::Strategy::Remote
Capistrano::Deploy::Strategy::RemoteCache

¤¤¤ä¡¼¤³¤¦¤·¤Æ¸«¤ë¤È Deploy ¤Î½¼¼Â¤Ã¤×¤ê¤¬¤ä¤Ï¤ê¤¹¤´¤¤¤Ç¤¹¤Í¡£Mercurial ¤ä Bzr ¤Ê¤ó¤ÆÊ¸»ú¤â¸«¤¨¤ë¤Î¤Ç¡¢¤³¤ì¤é¤ò»È¤Ã¤¿ deploy ¤â¤Ç¤­¤ë¤ó¤Ç¤·¤ç¤¦¡£

»È¤¨¤½¤¦¤Ê¥ê¥½¡¼¥¹

Capistrano ¼«ÂΤ¬ github ¤Ç¥Û¥¹¥Æ¥£¥ó¥°¤µ¤ì¤Æ¤¤¤ë¤¿¤á¤«¡¢github ¤Ç¸¡º÷¤¹¤ë¤È¤¤¤Á¤Ð¤ó¤¿¤¯¤µ¤ó°ú¤Ã¤«¤«¤ë¤è¤¦¤Ç¤¹¡£

¤¢¤È¤Ï¥·¥¹¥Æ¥à´ÉÍý·Ï¤Î¥ì¥·¥Ô¤¬ºÜ¤Ã¤Æ¤½¤¦¤Ê¤È¤³¤í¤È¤«¡£¤Þ¤À¤¢¤ó¤Þ¤Á¤ã¤ó¤È¸«¤Æ¤Ê¤¤¤Ç¤¹¤±¤É¡£

ºÇ¸å¤Ë¡£

¤ß¤ó¤Ê¡¢¼ÂºÝ¤Ë»î¤·¤Æ¥ª¥é¤Ë¤ä¤êÊý¤ò¶µ¤¨¤Æ¤¯¤ì¡ª

*1 ÅöÁ³¡¢Ruby ¤âɬÍ×

*2 ¤³¤ì recursive ¤Ë¼è¤ì¤Ê¤¤¤Î¤«¤Ê¡© ¤â¤·¤«¤·¤Æ»È¤Ã¤Æ¤ë gem ¤¬¸Å¤¤¡©

*3 ¸ø³«¸°Ç§¾Ú¤òÍøÍѤ¹¤ë¤¿¤á¤Î¸°ºîÀ®¤Ë¤Ï Putty ¤Ê¤É¤Î ssh ¥¯¥é¥¤¥¢¥ó¥È¤¬¤¿¤Ö¤óɬÍפǤ¹¡£

*4 ¼ÂºÝ¡¢rubygems ¤µ¤¨Æ°¤¤¤Æ¤¤¤ì¤Ð¥¤¥ó¥¹¥È¡¼¥ë¤Ï¤½¤ì¤¯¤é¤¤´Êñ¤Ç¤¹¡£

*5 Î㤨¤Ð´ÉÍýÍѤΥ᡼¥ë¤òÊ£¿ô¿Í¤Ç¼õ¿®¤·¤Æ¤¤¤Æ¡¢²¿¤«µ¤¤Ë¤Ê¤ë¥¢¥é¡¼¥È¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£¤³¤Î¾ðÊó¤ò¶¦Í­¤·¤¿¤¤¤ï¤±¤Ç¤¹¤¬¡¢¥á¡¼¥ë¤ò°ì°Õ¤ËÆÃÄꤹ¤ë¤Î¤Ï Message-ID ¤Ç¤¹¡£¤·¤«¤· Message-ID ¤Î³Îǧ¤ä¸¡º÷¤ÎÍÆ°×¤Ê¥á¡¼¥é¡¼¤Ï²Éʹ¤Ë¤·¤ÆÃΤê¤Þ¤»¤ó¡£

*6 ¤ä¤êÊý¤Ï¤Þ¤Àʬ¤«¤Ã¤Æ¤Þ¤»¤ó¡ª

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

_ Johann [ÂçÊÑʬ¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£]


2008-12-24 [ĹǯÆüµ­]

_ OOo 3 ¤¬Í׵᤹¤ë¥Ð¡¼¥¸¥ç¥ó

  • MacOSX 10.4 °Ê¹ß
    • 2.x ¤Î»þÂå¤Ï NeoOffice ¤ò»È¤¦É¬Íפ¢¤ê
  • Windows 2000 °Ê¹ß
    • 2.x ¤Î»þÂå¤Ï 98 °Ê¹ß¤Ç¤âư¤¯

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

_ colordiff ¤Ç¿§¤È¤ê¤É¤ê¤ÊÀ¤³¦¤Ø

¼Â¤Ïº£¤Þ¤Ç diff ¤Ï¤¹¤Ù¤Æ¥â¥Î¥¯¥í¤Ç¸«¤Æ¤¤¤¿¡£Emacs ¤Î vc-diff °Ê³°¤Ç¤Ï¡£¤É¤¦¤Ë¤«¤Ê¤é¤ó¤«¤Ê¤¡¤È»×¤Ã¤Æ¤Ï¤¤¤¿¤¬¤³¤ó¤Ê¤â¤ó¤«¤Ê¤È¤â»×¤Ã¤ÆÄ¹¤¤¤³¤È²á¤´¤·¤Æ¤¤¤¿¡£

¤·¤«¤·

coderepos ¤Î commit ¿ô¥Ê¥ó¥Ð¡¼£±¤Î¿Í¤¬ github ¤òÎý½¬¤·¤¿¥á¥â - TokuLog ²þ¤áBÆüµ­

¤òÆÉ¤ó¤Ç git ¤Ç¤ÏÀßÄ꼡Âè¤Ç color ½ÐÎϤǤ­¤ë¤³¤È¤¬Ê¬¤«¤Ã¤¿¡£¤À¤Ã¤¿¤é¾¤Î¥Ä¡¼¥ë¤Ç¤â¤½¤¦¤¤¤¦ÊýË¡¤Ïɬ¤º¤¢¤ë¤Ï¤º¤À¤È»×¤Ã¤Æ¥°¥°¤Ã¤¿¤é¤¤¤­¤Ê¤ê

ColorDiff

¤¬½Ð¤Æ¤­¤¿¡£¤½¤³¤éÃæ¤Ç¥Ñ¥Ã¥±¡¼¥¸¤È¤·¤ÆÍøÍѤǤ­¤ë¤ß¤¿¤¤¤Ê¤Î¤Ç»È¤¤»Ï¤á¤ë¤Î¤Ï½½Ê¬´Êñ¡£Ãæ¿È¤Ï Perl ¥¹¥¯¥ê¥×¥È¤Ç¡¢diff ¤Î½ÐÎϤò²òÀϤ·¤Æ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ç¿§¤Å¤±¤·¤Æ¤¯¤ì¤ë¡£

»È¤¤Êý¤Ï

diff [options] FILE1 FILE2 | colordiff

¤ß¤¿¤¤¤Ê¤Î¤Ç¤â¤¤¤¤¤·¡¢

colordiff [options] FILE1 FILE2

¤Ç¤â¤¤¤¤¡£´ðËÜŪ¤Ë diff ¤ÎÂå¤ï¤ê¤È¤·¤Æ»È¤¨¤ë¤è¤¦¤ËÇÛ褵¤ì¤Æ¤¤¤ë¤è¤¦¤À¡£¼ê¤Ã¼è¤êÁ᤯¤Ï

svn diff | colordiff

¤ß¤¿¤¤¤Ë¤·¤Æ¤â»È¤¨¤ë¡£Ä´»Ò¤Ë¾è¤Ã¤Æ

.subversion/config

¤Ç

 diff-cmd = colordiff

¤Ë¤·¤Æ¤ß¤¿¤±¤É¡¢¤³¤ì¤Ï¼ºÇÔ¡£¤È¤¤¤¦¤Î¤â Emacs ¤Î vc-diff ¤¬¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò¤½¤Î¤Þ¤ÞÅǤ­½Ð¤·¤Æ°ÕÌ£ÉÔÌÀ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤«¤é¡£¤È¤¤¤¦¤³¤È¤Ï

svn diff | colordiff
hg diff | colordiff
git diff

¤Ç color ½ÐÎϤǤ­¤ë¤Ã¤Æ´¶¤¸¤«¡£

¤Þ¤¿¡¢ÉáÃÊ¥Ú¡¼¥¸¥ã¤È¤·¤Æ less ¤ò»È¤Ã¤Æ¤¤¤ë¤ó¤À¤±¤É¡¢less ¤Ïɸ½à¤Ç¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤è¤ë¿§¤Å¤±¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤¡£man ¤òÆÉ¤à¤È

-R or --RAW-CONTROL-CHARS
       Like -r, but only ANSI "color" escape sequences  are  output  in
       "raw" form.  Unlike -r, the screen appearance is maintained cor-
       rectly  in  most  cases.   ANSI  "color"  escape  sequences  are
       sequences of the form:

¤È¤¤¤¦¤³¤È¤Ï¡¢-r ¤« -R ¤Ç¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò¤½¤Î¤Þ¤Þ terminal ¤Ë²ò¼á¤µ¤»¤é¤ì¤½¤¦¡£

ºÇ½ªÅª¤Ë¤Ï .zshrc ¤Ç

export LESS=R
alias diff='colordiff -u'

¤·¤È¤¤¤¿¡£´Êñ¤Ê¿§¤Å¤±¤À¤±¤É¡¢Ê¬¤«¤ê¤ä¤¹¤µ¤¬Ãʰ㤤¤À¡£¤³¤ê¤ãÊØÍø¡£

¤¢¤ÈľÀÜ´Ø·¸¤Ê¤¤¤±¤É

alias ls='ls --color=auto'

¤ò

alias ls='ls --color'

¤Ë¤·¤¿¡£¡ÊBSD ¤Ç¤Ï export CLICOLOR_FORCE=1 ¡Ë¤³¤ì¤Ç ls ¤Î½ÐÎϤò less ¤ËÅϤ·¤Æ¤â¿§ÉÕ¤­¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

_ ¤°¤ê¤â¤ó¥¢¥Ã¥×¥Ç¡¼¥È»þ¤Ï load ½ç¤ËÃí°Õ

¤Þ¤¡ÊÌ¤Ë LDRize ¤Ë¸Â¤Ã¤¿¤³¤È¤¸¤ã¤Ê¤¤¤ó¤À¤í¤¦¤±¤É¡£JavaScript ¤Ë¤Ï require ¤Î»ÅÁȤߤ¬¤Ê¤¤¤³¤È¤¬¸¶°ø¡¢¤È¤¤¤¦¤³¤È¤Ê¤Î¤«¤Ê¡©

¤È¤Ë¤«¤¯

  1. minibuffer
  2. AutoPagerize
  3. LDRize

¤Î½çÈÖ¤ò¼é¤ë¤³¤È¡£¤É¤ì¤«¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤È¿·¤·¤¯¤Ê¤Ã¤¿¤â¤Î¤¬ºÇ¸å¤ËÆÉ¤ß¹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¤½¤ÎÅÔÅÙ½¤Àµ¤¬É¬Íס£

¤Á¤ç¤Ã¤È¥á¥ó¥É¥¤¤±¤É¤·¤ç¤¦¤¬¤Ê¤¤¤Î¤«¤Ê¡£

Tags: Firefox

2008-12-28 [ĹǯÆüµ­]

_ Webby ¤ÇÀÅŪ¥µ¥¤¥ÈºîÀ®

Rake ¤ÎÎý½¬²ÝÂê¤È¤·¤Æ°ÊÁ°Ä´¤Ù¤Æ¤ª¤¤¤¿

Welcome! - Rote

¤ò»î¤½¤¦¤«¤È»×¤Ã¤Æ¤¤¤¿¤ó¤À¤±¤É¡¢¤Á¤ç¤Ã¤ÈÄ´¤Ù¤¿¤é

Webby :: Webby

¤ò¸«¤Ä¤±¤¿¡£¤³¤Ã¤Á¤ÎÊý¤¬¤¤¤¤¤«¤â¤·¤ó¤Ê¤¤¡£

rote ¤Ï

  • Textile ¤Ê¤É¤Ç½ñ¤«¤ì¤¿¥³¥ó¥Æ¥ó¥Ä¥Õ¥¡¥¤¥ë
  • ¥á¥¿¥Ç¡¼¥¿¤òµ­½Ò¤¹¤ë rb ¥Õ¥¡¥¤¥ë

¤¬Ê¬Î¥¤·¤Æ¤¤¤¿¤ó¤À¤±¤É¡¢webby ¤Ç¤Ï¤³¤ì¤¬°ì¤Ä¤Î¥Õ¥¡¥¤¥ë¤Ë¤Þ¤È¤Þ¤Ã¤Æ¤¤¤ë¡£¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¤³¤ó¤Ê´¶¤¸¡£

---
RFC822 É÷¤Î¥á¥¿¥Ç¡¼¥¿
---
Textile ¤Ê¤É¤Ç½ñ¤«¤ì¤¿¥³¥ó¥Æ¥ó¥Ä

¥³¥ó¥Æ¥ó¥Ä¤Î½èÍý¤Ï filter ¤Ç»ØÄꤹ¤ë¡£filter ¤Ë¤Ï Textile ¤Ê¤É¤Î½ñ¼°¤Î¾¤Ë erb ¤â»ØÄê¤Ç¤­¤ë¤Î¤Ç¡¢¥³¥ó¥Æ¥ó¥Ä¤ÎÃæ¤Ë Ruby ¤Ç°·¤¨¤ëÊÑ¿ô¤ä½èÍý¤ò¼«Í³¤ËËä¤á¹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£¤³¤ì¤ÏÊØÍø¤À¡£

»È¤¤Êý

Rails ¤Î¤è¤¦¤Ë webby-gen ¥³¥Þ¥ó¥É¤Ç¥µ¥¤¥È¤Î¤Ò¤Ê·Á¤òºî¤ë¡£¤³¤Î¤È¤­»ØÄê¤Ç¤­¤ë¤Î¤Ï 0.9.3 ¤Ç

  • blog
  • presenation
  • tumblog
  • website

¤Î4¼ïÎà¡£¤½¤ì¤¾¤ìŬ¤·¤¿ task ¤¬ÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤ë¡£

blog

»î¤·¤Ë blog ¤òºî¤ë¤È task ¤Ë

blog:post

¤¬¤Ç¤­¤Æ¡¢¤³¤ì¤ò¸Æ¤Ö¤È¸Æ¤ó¤ÀÅöÆü¤Îǯ·î¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò

YYYY/MM

¤Ç·¡¤ë¡£blog:post »þ¤Ë path ¤ÎÆþÎϤòµá¤á¤é¤ì¤ë¤¬¡¢¤³¤ì¤òÆþ¤ì¤Æ

YYYY/MM/path

¤Ê¥¨¥ó¥È¥ê¤Ë¤Ê¤ë¡£Type Pad É÷¤È¤¤¤¦¤«³¤³°¤Î blog ¥Ä¡¼¥ë¤ÇºÇ¤â¥Ý¥Ô¥å¥é¡¼¤Ê URL ¤«¤Ê¡£

website

¤³¤ì¤¬ website ¤Ë¤Ê¤ë¤È

create:page

¤Ë¤Ê¤ë¡£

deploy

Capistrano ¤Ç¤Ï¤Ê¤¤¤±¤ì¤É rsync ¤Ê¤É¤ò»È¤Ã¤¿ deploy ¤â¹Ô¤¨¤ë¡£¤¿¤À¤· ftp ¤Ç¤Ï¹Ô¤¨¤Ê¤¤¡£¤¦¡¼¤ó¡¢¤â¤Ã¤¿¤¤¤Ê¤¤¡£ftp ¤ËÂбþ¤¹¤ì¤Ð»È¤¨¤ë¥·¡¼¥ó¤Ï¤¿¤¯¤µ¤ó¤¢¤ê¤½¤¦¤Ê¤Î¤Ë¡£¤Þ¡¢output ¤·¤¿¤â¤Î¤ò sitecopy ¤Ê¤É¤Ç mirroring ¤¹¤ì¤Ð¤¤¤¤¤Ã¤Á¤ã¤¤¤¤¤ó¤À¤±¤É¡£

autobuild

ÌÌÇò¤¤µ¡Ç½¤È¤·¤ÆºÇ¸å¤Ë autobuild ¤ò¾Ò²ð¤·¤Æ¤ª¤¯¡£¤³¤Î¥¿¥¹¥¯¤ò¼Â¹Ô¤¹¤ë¤È¥Õ¥¡¥¤¥ë¤Î¹¹¿·¤ò´Æ»ë¤·¤Æ¼«Æ°Åª¤Ë HTML ¤Î½ÐÎϤò¹Ô¤Ã¤Æ¤¯¤ì¡¢¤Ê¤ª¤«¤Ä WEBrick ¤Ç serve ¤·¤Æ¤¯¤ì¤ë¡£

ÀµÄ¾¡¢¤³¤Î¥Ä¡¼¥ë¤Ë¶½Ì£¤ò»ý¤Ä¿Í¤Ï¼«Ê¬¤Ç Web ¥µ¡¼¥Ð¤¯¤é¤¤Î©¤Æ¤é¤ì¤ëµ¤¤â¤¹¤ë¤¬¡¢¤½¤¦¤Ç¤Ê¤¤¿Í¤Ç¤â¤³¤Î autobuild ¤òÍøÍѤ¹¤ì¤Ð¥µ¥¤¥È¤Î¸¡¾Ú¤ò¹Ô¤¤¤ä¤¹¤¤¡£

Tags: Ruby Web Rake

2008-12-30 [ĹǯÆüµ­]

_ ri ¤Ã¤Æ¥á¥½¥Ã¥É¤â°ú¤±¤¿¤Î¤«

$ ri String
---------------------------------------------------------- Class: String
     A +String+ object holds and manipulates an arbitrary sequence of
     bytes, typically representing characters. String objects may be
     created using +String::new+ or as literals.

 ...

¤·¤«¸«¤¿¤³¤È¤Ê¤«¤Ã¤¿¤±¤É¡¢

$ ri String.sub
------------------------------------------------------------- String#sub
     str.sub(pattern, replacement)         => new_str
     str.sub(pattern) {|match| block }     => new_str
------------------------------------------------------------------------

...

¤³¤ó¤Ê´¶¤¸¡£

ºÇ¶á¤Ï irb ¤Ç¥á¥½¥Ã¥É¸¡º÷¤¹¤ë¤³¤È¤¬Â¿¤«¤Ã¤¿¤ó¤À¤±¤É¡¢¤³¤ì¤À¤±¤Ç¤Ï°ú¿ô¤Ë¤Ä¤¤¤Æ¤Ï²¿¤âʬ¤«¤é¤Ê¤¤¡£ri ¤Ç°ú¤¯¤È¤Á¤ã¤ó¤È¤½¤ÎÊÕ¤ÎÀâÌÀ¤âʬ¤«¤ë¤Î¤ÇÊØÍø¡£

¤Ê¤ë¤Û¤É¡£

¤¢¤È¤Ï¤â¤¦¾¯¤·Á᤯ɽ¼¨¤·¤Æ¤¯¤ì¤ë¤È´ò¤·¤¤¤ó¤À¤±¤É¡¢¤½¤ì¤ÏìÔÂô¤À¤í¤¦¤«¡£

Tags: Ruby

_ ´Ä¶­¤ÎȽÊ̤äƿ¿ÌÌÌܤˤä¤ë¤ÈÌÌÅݤ¯¤µ¤¤

ǯ¤ÎÀ¥¤ÎÂçÁݽü¤È¤¤¤¦¤³¤È¤Ç¡Ê½ñ¤¤¤¿¤Î¤Ï°ã¤¦¤±¤É¼ÂºÝ¤Ë¼Â¹Ô¤·¤Æ¤¤¤¿¤Î¤ÏǯËö¤À¤Ã¤¿¤Î¤Ç¤¹¡Ë¡¢.emacs, .zshrc ¤Ê¤É¤òÀ°Íý¤·¤Æ¤¤¤ë¡£

  1. .emacs, .zshrc ¤Ç´Ä¶­¤òȽÊ̤·¡¢FreeBSD, Linux, MacOSX ¤Ç°ì¤Ä¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤òÍøÍѤ¹¤ë
  2. ¤³¤Î°ì¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤¹¤ë

¤È¤¤¤¦¤³¤È¤ò»î¤ß¤Æ¤¤¤ë¡£

¤Þ¤¿¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤ò¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤¹¤ë¤È¸À¤Ã¤Æ¤â¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤ò´Ý¤´¤È¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤¹¤ë¤ï¤±¤Ë¤Ï¤¤¤«¤Ê¤¤¡Ê¸½¼ÂŪ¤¸¤ã¤Ê¤¤¡Ë¤Î¤Ç¡¢dot-files/ ¥Ç¥£¥ì¥¯¥È¥ê¤ò·¡¤Ã¤Æ¤³¤³¤Ë¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤òÃÖ¤­¡¢rake ¤ò»È¤Ã¤Æ¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ë¥ê¥ó¥¯¤òÄ¥¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤¿¡£

Í×¤Ï rake task ºî¤ê¤ÎÎý½¬¤Ç¤¢¤ë¡£¼Â¤Ï¤¢¤ó¤À¤± Capistrano ¤ò»ý¤Á¾å¤²¤Æ¤ª¤¤¤Æ¸½Ãʳ¬¤Ç Rakefile ¤ò¤Û¤È¤ó¤É½ñ¤±¤Ê¤¤¤Î¤Ç¤¢¤Ã¤¿¡£

Tags: Emacs Zsh

2008-12-31 [ĹǯÆüµ­]

_ 2008ǯ¿¶¤êÊÖ¤ê

¤ò¡¢¾®Àµ·î¤Ë½ñ¤¯¥é¥¤¥Õ¥Ï¥Ã¥¯¡£

2008ǯ¤ÎƬ¤Ï¤½¤ÎÁ°¤Îǯ¤«¤é¤Î PHP 4 -> 5, PostgreSQL 7 -> 8 ¤Î°Ü¹Ô¡¢¥µ¡¼¥Ð¥ê¥×¥ì¥¤¥¹ºî¶È¤Ë³Ý¤«¤ê¤Ã¤­¤ê¤Ç¤½¤ì°Ê³°¤è¤¯Ê¬¤«¤é¤Ê¤¯¤Ê¤Ã¤Æ¤¿¡£

¤½¤ÎÀ®²Ì¤¬¤³¤ÎÊդꡣ

¥í¥¯¤Ê´Æ»ë¤¬¤Ç¤­¤Æ¤¤¤Ê¤«¤Ã¤¿¸Å¤¤¥·¥¹¥Æ¥à¤ò¤É¤¦¤Ë¤«°Ü¹Ô¤µ¤»¤ë¤¿¤á¤Ë¤¢¤ì¤³¤ì¹©Éפ·¤Æ¤¿»þ´ü¡£º£¤âËÜÅö¤Î°ÕÌ£¤Ç¸½ÂåŪ¤Ê´ÉÍý¤Ï¤Ç¤­¤Æ¤¤¤Ê¤¤¤ó¤À¤í¤¦¤±¤É¡¢°ÊÁ°¤è¤ê¤Ï¤À¤¤¤Ö¥Þ¥·¤Ê¤Î¤â´Ö°ã¤¤¤Ê¤¤¡£º£¸å¤ÏºÇ¶á¥Ï¥Þ¤Ã¤Æ¤ë Rake ( Capistrano ) ¤Ç¤è¤ê³Î¼Â¤Êºî¶È¤Ë¾º²Ú¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤¯Í½Äê¡£

¼¡¡¢´Æ»ë·Ò¤¬¤ê¤È¤¤¤¦¤«¤â¤Ã¤È feed ¤òÊØÍø¤Ë¡¢¤È¤¤¤¦¤³¤È¤Ç Yapra ¤ò»È¤¤»Ï¤á¤¿¡£Àª¤¤Í¾¤Ã¤Æ Yahoo! Pipes ¤â»Ï¤á¤Æ¤ß¤¿¡£¤Þ¤¿ Yapra ·Ò¤¬¤ê¤Ç¡¢Ä¹¤¤¤Ä¤­¤¢¤¤¤Î Ruby ¤ò¤è¤¦¤ä¤¯ Web ÊýÌ̤˳èÍѤ·»Ï¤á¤¿¡£

feed ¤òÍøÍѤ¹¤ë¤À¤±¤Ç¤Ê¤¯¡¢¥ê¥½¡¼¥¹¤«¤é API ¤òÍѰդ·¤¿¤ê feed ¤òÅǤ¤¤¿¤ê¤â¤·¤Æ¤¿¡£ÍפϺ£¤Ë¤Ê¤Ã¤Æ HTTP Header ¤òÊÙ¶¯¤·Ä¾¤·¤¿¤È¤¤¤¦¤³¤È¤Ç¤¹¤Ê¡£

¤Þ¤¿ rest-client ¤ä Yapra ¤Î±Æ¶Á¤â¤¢¤Ã¤Æ git ¤È github ¤ò»Ï¤á¤¿¡£

¤Ç¤âÀµÄ¾¡¢git ¤Î¥á¥â¤¬Â¿¤¤¤Î¤Ï git ¤¬¤è¤¯Ê¬¤«¤é¤Ê¤¤¾Úµò¡£¼ÂºÝ¡¢git ¤ò»Ï¤á¤ëÁ°¤«¤é Mercurial ¤ò»È¤Ã¤Æ¤¤¤ë¤¬¡¢Mercurial ¤Î¥á¥â¤Ï¼Â¤Ï°ìÀڤʤ¤¡£¤³¤ì¤Ï¾¯¤Ê¤¯¤È¤â Subversion ¤«¤é¤Î°Ü¹Ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤¢¤¯¤Þ¤Ç¸Ä¿ÍŪ¤Ê´¶ÁÛ¤À¤±¤É°µÅÝŪ¤Ë Mercurial ¤ÎÊý¤¬³Ú¤À¤«¤é¡£

¾¡¢

Êդ꤬ºÙ¤«¤¯Ç®¤«¤Ã¤¿¤È¤³¤í¡£¤Þ¤¿ Rack ¤ä Routing¡¢jQuery ¤Ê¤É¤â´Þ¤á¤Æ

2008ǯ¤ÏÁ´ÂÎŪ¤Ë Web ¤È Ruby ¤Ç½¼¼Â¤·¤Æ¤¿Ç¯¤À¤Ã¤¿¡Ê¤Ê¤Î¤Ë Rails ¤Ï¥Î¡¼¥¿¥Ã¥Á¡Ë

¤È¸À¤Ã¤Æ¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¤«¤È»×¤¦¡£¤¢¤È¤Þ¤¡ Mac ¤â OSX 10.5 ¤Ë°Ü¹Ô¤·¤Æ¡¢°ÊÁ°¤è¤ê¤¤¤í¤ó¤Ê¤³¤È¤¬²÷Ŭ¤Ë¤Ê¤Ã¤¿¤«¤Ê¡£

2009ǯ¤â´ðËÜŪ¤Ë¤Ï¤³¤ÎÏ©Àþ¤Ç´èÄ¥¤ë´¶¤¸¤Ç¹Í¤¨¤Æ¤¤¤ë¡£¤È¤ê¤¢¤¨¤º¤Ï Rake ¤È´Æ»ëǽÎϤζ¯²½¤«¤Ê¡£¤³¤ì¤Þ¤Ç¤Ï¤¢¤Þ¤ê¥Í¥Ã¥È¥¦¥©¥Ã¥Á¥ã¡¼¤Î¥¹¥­¥ë¤Ë¶½Ì£¤Ê¤«¤Ã¤¿¤ó¤À¤±¤É¡¢¤½¤Ã¤ÁÊýÌ̤ò¶¯¤¯¤·¤Æ¤¤¤­¤¿¤¤¤«¤Ê¤È»×¤Ã¤Æ¤¤¤ë¡£

¤¢¤È¤Ï»æ¤ò´Þ¤á¤Æ»¨Â¿¤Ê¾ðÊó¤Î°·¤¤¤ò¤â¤¦¾¯¤·¤¦¤Þ¤¯²ó¤·¤Æ¤¤¤­¤¿¤¤¡£¤¢¤ó¤Þ¤êͭ̾¤¹¤®¤Æ¸À¤¦¤Î¤â¤Ï¤Ð¤«¤é¤ì¤ë¤±¤É GTD ¤È¤«¥é¥¤¥Õ¥Ï¥Ã¥¯¤È¤«¤â¤â¤¦¾¯¤·°Õ¼±¤·¤¿Êý¤¬¤¤¤¤¤Î¤«¤â¡£

¿ÈÂΤâÏ«¤ê¤Ä¤ÄÃ䨤ʤª¤µ¤Ë¤ã¤¤¤«¤ó¤«¤Ê¡¼¤Ê¤ó¤Æ¤³¤È¤âµ¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤â¤¦¤¤¤¤¤ª¤Ã¤µ¤ó¤À¤·¤Ê¡£ºÇ½é¤«¤é̵Íý¤ÎÍø¤¯¿ÈÂΤǤϤʤ¤¤¬¡¢ÌµÍý¤»¤º¡¢¤¤¤¤Íî¤È¤·¤É¤³¤í¤ò¸«¤Ä¤±¤ëÌܤâÍܤäƤ¤¤«¤Ê¤­¤ã¤Ê¡£¥¬¥à¥·¥ã¥é¤Ê¤À¤±¤Ç¤Ï¤â¤¦¥À¥á¤Ê¤ó¤À¡£¤½¤³¤Ï¤â¤¦Äü¤á¤Ä¤¤¤¿¤è¡¢¤µ¤¹¤¬¤Ë¡£

Tags: Æü¡¹