As Sloth As Possible

鐃緒申能鐃淑限わ申淵泪鐃緒申鐃塾でわ申鐃所た鐃緒申

鐃緒申鐃緒申鐃緒申Ruby

鐃緒申分長鐃緒申鐃緒申鐃夙ブワ申鐃緒申鐃緒申鐃瞬わ申鐃銃わ申鐃殉っわ申鐃塾わ申鐃緒申鐃宿ネワ申鐃緒申鐃春わ申鐃緒申鐃塾で久¥申鐃塾居申鐃緒申鐃緒申

Unicorn鐃緒申Passenger鐃緒申鐃緒申戮鐃緒申辰鐃緒申鐃

鐃淑わ申Twitter鐃叔「ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃夙わ申鐃緒申Passenger鐃緒申鐃Unicorn鐃塾わ申速鐃緒申鐃塾に¥申鐃緒申鐃緒申鐃緒申鐃緒申多鐃緒申鐃淑ってわ申鐃緒申鐃初そ鐃塾逆になっわ申鐃竣っわ申鐃獣わ申澆鐃緒申鐃緒申鐃緒申里如鐃緒申鐃緒申鐃獣縁申鐃Unicorn鐃緒申worker鐃緒申足鐃緒申覆鐃緒申鵑犬鐃淑わ申鐃塾¥申鐃緒申鐃瞬わ申鐃緒申鐃塾わ申鐃緒申鐃宿¥申鐃宿わ申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃夙わ申鐃緒申鐃獣を少わ申鐃殉とわ申襦

鐃殉わ申鐃緒申Unicorn鐃緒申worker鐃緒申1鐃竣ワ申鐃緒申鐃緒申鐃祝つわ申1鐃駿わ申1鐃所ク鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃純え鐃出¥申鐃緒申鐃緒申鐃順雑鐃縦な計誌申鐃緒申鐃緒申鐃宿¥申平鐃緒申50ms鐃緒申鐃初い鐃叔レス鐃楯ンスわ申鐃瞬わ申鐃緒申鐃竣ワ申鐃緒申箸鐃緒申鐃出¥申1worker鐃緒申20req/sec鐃緒申鐃初い鐃緒申鐃瞬わ申鐃暑か鐃淑と醐申鐃術わ申辰董鐃緒申圈鐃緒申鐃緒申鐃緒申鐃100req/sec鐃緒申鐃初い鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃所そ鐃緒申鐃緒申鐃獣わ申鐃緒申worker鐃緒申5鐃縦わ申鐃初い立鐃銃とわ申鐃緒申鐃淑¥申足鐃緒申覆鐃緒申辰鐃緒申鐃盾う鐃緒申鐃緒申辰箸鐃緒申福鐃緒申澆鐃緒申鐃緒申帽佑鐃緒申襦o申尊櫃匹鵑らい鐃塾ワ申鐃緒申鐃緒申鐃緒申鐃淑のわ申鐃緒申聞鐃緒申鐃銃なわ申鐃塾わ申鐃塾わ申覆鐃緒申鐃緒申鼻鐃Nginx鐃緒申10worker鐃緒申鐃緒申里鐃Unicorn鐃緒申2worker鐃緒申鐃獣て醐申鐃獣てわ申鐃緒申鐃初、鐃緒申鐃縮逆わ申鐃緒申覆鐃緒申鐃緒申箸弔辰鐃緒申鐃緒申鐃緒申Nginx鐃熟逆わ申1worker鐃緒申複鐃緒申鐃所ク鐃緒申鐃緒申鐃夙誌申鐃緒申鐃緒申平鐃緒申蕕鐃初い同鐃緒申鐃祝ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申討鐃緒申僂鐃緒申鐃緒申鐃初し鐃緒申鐃祝のわ申CPU鐃塾ワ申鐃緒申鐃緒申鐃緒申同鐃緒申鐃緒申鐃緒申鐃緒申辰鐃渋随申鐃緒申鐃緒申蕕わ申任茲鐃銃¥申Unicorn鐃緒申worker鐃緒申鐃緒申鐃薯ガンガワ申立鐃緒申鐃遵げ鐃緒申戮鐃緒申鐃

Passenger鐃盾そ鐃曙自鐃塾わ申同鐃緒申鐃淑わ申鐃緒申鐃緒申鼻鐃Passenger鐃塾常申鐃緒申鐃駿上が鐃獣てわ申鐃緒申鐃緒申鐃緒申鐃緒申匹鐃緒申鐃緒申鐃所し鐃緒申鐃緒申造泙妊廛鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申笋件申討鐃緒申鐃緒申里如鐃緒申屮鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申討盒鐃緒申鐃竣のではなわ申鐃銃「ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃初い鐃縦の間にわ申鐃緒申峺討鐃緒申鐃旬の人随申鐃緒申鐃緒申辰討鐃緒申廚箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申鐃淑わ申鐃緒申鐃夙思わ申鐃緒申鐃遵記鐃緒申転鐃緒申鐃緒申鐃緒申鐃緒申里蓮鐃Unicorn鐃緒申worker鐃緒申鐃緒申鐃淑わ申鐃竣「リク鐃緒申鐃緒申鐃夙随申鐃緒申鐃緒申鐃緒申鐃銃わ申1鐃緒申1鐃縦の緒申鐃緒申鐃緒申鐃瞬わ申鐃順し鐃緒申鐃術わ申鐃淑わ申鐃竣「ワ申鐃緒申鐃CPU鐃祝わ申余裕鐃緒申鐃緒申鐃緒申廚辰鴇鐃緒申里箸鐃緒申鐃緒申隼廚鐃緒申里如鐃渋進Unicorn鐃緒申worker鐃緒申鐃緒申適鐃准な随申鐃緒申調鐃緒申鐃緒申鐃緒申于鐃処す鐃暑。

worker鐃塾随申鐃緒申鐃巡し鐃緒申鐃緒申鐃緒申蠖鐃緒申鐃藷じゃ、鐃獣て醐申鐃緒申鐃獣なら、Unicorn鐃緒申worker鐃竣ワ申鐃緒申鐃緒申鐃緒申立鐃緒申鐃遵げ鐃緒申鐃緒申鐃祝ワ申鐃竣ワ申鐃preload鐃緒申鐃緒申鐃緒申箸澆鐃緒申鐃緒申襦o申鐃緒申廛鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿鐃竣なライ鐃瞬ワ申鐃緒申鐃緒申鐃緒申鐃宿み刻申鐃緒申任鐃緒申鐃出¥申worker鐃竣ワ申鐃緒申鐃緒申鐃塾居申動鐃緒申単鐃淑わ申fork鐃淑ので¥申CopyOnWrite鐃叔親プワ申鐃緒申鐃緒申鐃夙ワ申鐃緒申鐃粛鐃緒申鐃銃醐申率的鐃祝使ってわ申鐃曙そ鐃緒申鐃淑居申鐃循はわ申鐃暑。鐃緒申鐃緒申任眇鐃緒申鐃獣わ申鐃純食鐃緒申鐃緒申鐃宿も、worker鐃緒申鐃緒申立鐃緒申鐃遵げ鐃緒申鐃緒申鐃緒申鐃渋鐃緒申覆鐃緒申覆鐃淑わ申Passenger鐃叔わ申同鐃緒申鐃獣¥申平鐃緒申鐃緒申砲鐃緒申鐃緒申鵑靴討鐃緒申鐃暑け鐃宿も、裏鐃緒申鐃瞬わ申鐃出急件申淵鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝際わ申鐃銃は刻申鐃銃てプワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申襯鰹申鐃緒申箸鐃緒申鐃駿上が鐃暑こ鐃夙もあ鐃暑し鐃緒申単鐃塾わ申鐃緒申咾鐃緒申鐃緒申Unicorn鐃塾わ申鐃殉わ申鐃緒申鐃縮に駈申鐃緒申鐃緒申鐃緒申鐃縮ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃重鐃緒申鐃緒申鐃緒申分鐃緒申鐃獣てわ申覆鐃Unicorn鐃叔¥申鐃緒申多鐃祝なわ申鐃淑らお鐃緒申擇鐃Passenger鐃叔¥申鐃淳わ申鐃緒申鐃淑使わ申分鐃緒申鐃緒申

Rainbows!鐃獣て駕申

鐃緒申鐃緒申鐃殉でわ申鐃獣はわ申鐃緒申鐃殉で¥申1鐃緒申1鐃縦のリク鐃緒申鐃緒申鐃夙わ申鐃順し鐃銃重わ申鐃淑わ申鐃緒申鐃宿逸申鐃駿わ申鐃緒申鐃緒申鐃塾リク鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃駿わ申鐃淑っわ申鐃緒申鐃淳わ申鐃緒申鐃淑常申隋o申磴鐃出わ申鐃獣わ申鐃夙逸申辰董鐃淑随申僂埜鐃緒申鐃緒申100ms鐃緒申鐃初い鐃淑わ申鐃緒申鐃緒申鼻鐃20鐃緒申鐃1鐃藷くらい鐃塾鰹申鐃緒申1500ms鐃緒申鐃初い鐃緒申鐃緒申鐃緒申螢鐃緒申鐃緒申鐃夙わ申鐃緒申鐃暑こ鐃夙わ申鐃緒申鐃暑、鐃夙わ申鐃暑。鐃緒申鐃曙が鐃緒申鐃殉わ申鐃緒申5鐃緒申同鐃緒申鐃祝リク鐃緒申鐃緒申鐃夙わ申鐃銃わ申鐃殉っわ申鐃初、5worker鐃緒申鐃緒申鐃曙ぞ鐃緒申1.5鐃獣わ申鐃縦刻申束鐃緒申鐃緒申討鐃緒申隆岼鐃緒申撻譽刻申櫂鵐垢鐃緒申屬鐃緒申覆鐃緒申覆襦o申鐃緒申鐃緒申任魯侫鐃緒申鐃緒申襯居申鐃緒申个縫妊鐃緒申鐃緒申侫鐃緒申鐃緒申鐃書いてわ申箸鐃緒申鐃DB鐃祝重わ申鐃緒申鐃緒申鐃緒申鐃所げ鐃銃わ申箸鐃緒申鐃API叩鐃緒申鐃銃鰹申鐃緒申鐃緒申鐃緒申如鐃緒申鐃緒申鐃獣わ申鐃緒申討鐃夙わ申鐃叔¥申鐃渋際にはワ申鐃竣リ自鐃塾わ申鐃峻ってわ申鐃緒申鐃緒申鐃CPU鐃緒申鐃緒申鐃盾ス鐃獣ワ申鐃緒申鐃緒申鐃緒申鐃淳わ申鐃緒申鐃淑常申鐃瞬でわ申鐃獣ても。鐃緒申鐃緒申奮鐃緒申離螢鐃緒申鐃緒申鐃夙わ申30ms鐃緒申鐃初い鐃緒申即鐃緒申鐃叔わ申鐃緒申里鐃緒申箸鐃緒申討癲

Rainbows!鐃塾常申鐃緒申Unicorn鐃緒申戞鐃緒申鐃緒申砲鐃緒申討鐃緒申襪縁申鐃宿も、EventMachine鐃夙わ申Revacator鐃淳わ申鐃緒申鐃淑ワ申鐃駿ワ申閥鐃銃逸申薀わ申屮鐃緒申鐃夙っわ申1worker鐃緒申鐃緒申鐃緒申縫螢鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申任鐃緒申鐃処う鐃祝わ申鐃銃わ申鐃暑。鐃緒申鐃獣わ申鐃淳わ申鐃緒申鐃緒申長鐃緒申鐃緒申鐃峻わ申鐃祝なわ申螢鐃緒申鐃緒申鐃夙わ申鐃緒申討討癲鐃峻ってわ申屬鐃渋常申凌鐃緒申鐃ms鐃緒申鐃駿わ申鐃瞬わ申鐃緒申螢鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃獣て緒申鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃暑。1鐃竣ワ申鐃緒申鐃緒申1鐃所ク鐃緒申鐃緒申鐃夙わ申鐃夙わ申鐃緒申鐃緒申鐃塾わ申鐃叔わ申Unicorn鐃緒申鐃緒申worker鐃緒申鐃緒申鐃初せ鐃銃ワ申鐃緒申僖鐃緒申箸砲覆襪鐃盾し鐃緒申覆鐃緒申鐃緒申鐃緒申鐃緒申謄鐃緒申戰鐃夙ルー鐃竣わ申鐃緒申妊鐃緒申廛蠅動鐃緒申鐃塾わ申AsyncSinatra鐃淳わ申鐃緒申鐃淑フレー鐃緒申錙種申鐃緒申鐃夙ってワ申鐃竣ワ申鐃緒申鐃緒申鐃銃縁申鐃緒申鐃緒申鐃緒申鐃書ける。鐃淑ので重わ申鐃所ク鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申呂鐃緒申辰鐃緒申鐃夙わ申鐃夙わ申鐃緒申鐃緒申鐃獣わ申鐃獣になる。

鐃淑わ申鐃緒申匹鐃緒申鐃緒申箸鼎鐃緒申瓩醐申鐃緒申Unicorn鐃緒申鐃緒申覆鐃緒申劼鐃緒申鐃藷、ってなるか鐃夙思わ申鐃出わ申鐃緒申鐃叔わ申覆鐃緒申鐃Unicorn鐃緒申鐃緒申鐃盾そ鐃緒申prefork鐃緒申1鐃竣ワ申鐃緒申鐃緒申1鐃所ク鐃緒申鐃緒申鐃夙でみわ申鐃緒申鐃淑¥申鐃述どわ申鐃緒申鐃緒申擇辰鐃緒申鐃緒申鐃緒申茲鐃祝わ申辰討漏鐃夙醐申典的鐃淑誌申鐃夙みになってわ申里蓮鐃緒申鐃峻わ申鐃銃わ申鐃緒申鐃緒申鐃駿ワ申閥鐃銃逸申鐃緒申鐃Thin鐃淳わ申鐃緒申鐃淑ワ申鐃竣リケ鐃緒申鐃緒申鐃緒申鵐機鐃緒申个鐃緒申个鐃緒申討痢屮鐃緒申鐃竣ワ申鐃緒申鐃緒申鐃緒申鐃緒申里鐃緒申鐃緒申鐃緒申擇鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃緒申鐃緒申妊僖侫鐃緒申鐃緒申泪鵐垢鐃出るじ鐃緒申鐃竣みわ申鐃緒申鐃淑ワ申鐃緒申鐃緒申董鐃緒申鐃重鐃淑とわ申鐃緒申鐃緒申鐃獣わ申鐃所す鐃緒申里如鐃緒申錣駈申錣曲o申鐃緒申鐃緒申鐃緒申瓩件申討鐃Rainbows!鐃熟わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣トとのトレー鐃宿ワ申鐃春になる。鐃夙わ申鐃緒申鐃淑わ申鐃緒申鐃緒申敵鐃淑器申鐃緒申鐃祝はなるけ鐃宿¥申worker鐃緒申鐃巡せ鐃出駕申茲刻申鐃緒申鐃緒申戮鐃緒申辰覆鐃緒申任鐃Unicorn鐃叔わ申鐃順し鐃銃削申鐃緒申覆鐃緒申鐃

鐃宿居申

鐃緒申Unicorn鐃緒申鐃緒申鐃淑ワ申鐃緒申鐃緒申丱廛鐃緒申鐃緒申鐃緒申鐃緒申笋件申鐃緒申蠍削申蕕件申鐃緒申鐃叔わ申鐃暑か鐃初、netstat鐃夙わ申鐃緒申鐃銃詰まってわ申鐃緒申鐃緒申鐃獣わ申鐃初自動鐃緒申鐃緒申鐃緒申鐃緒申茲鐃祝わ申鐃銃るー鐃緒申鐃緒申多鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃宿」ってわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣わ申鐃緒申TTIN鐃叔プワ申鐃緒申鐃緒申鐃緒申鐃巡す鐃緒申TTOU鐃叔プワ申鐃緒申鐃緒申鐃緒申鐃初す鐃夙わ申鐃叔わ申鐃緒申里如鐃緒申鐃銃逸申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申澆鐃緒申鐃緒申鐃出なわ申適鐃緒申鐃祝監視ス鐃緒申鐃緒申廛判颪い鐃重鐃緒申鐃緒申鐃緒申鐃淑ワ申鐃緒申鐃緒申茲鐃祝わ申鐃夙わ申鐃出わ申鐃緒申鐃緒申鐃盾。鐃殉わ申鐃緒申鐃緒申鐃緒申辰討發わ申鐃緒申鐃緒申鐃

鐃緒申鐃淑わ申鐃緒申鐃緒申鐃夙醐申鐃獣てわ申2鐃緒申鐃瞬わ申鐃初い鐃緒申鐃緒申鐃獣なわ申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申ZeroMQ鐃緒申Mongrel2鐃緒申鐃駿駈申鐃緒申鐃緒申辰鐃緒申鐃Mongrel鐃夙醐申鐃緒申鐃出¥申鐃緒申鐃緒申Rails鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申1.2鐃緒申鐃初い鐃緒申鐃獣わ申鐃夙思わ申鐃祝で仕誌申鐃緒申鐃銃わ申鐃緒申鐃祝ワ申鐃竣リケ鐃緒申鐃緒申鐃緒申鵐機鐃緒申个箸鐃緒申道箸辰討鐃緒申鐃緒申鼻鐃緒申廼鐃緒申鐃緒申Thin鐃夙わ申Passenger鐃夙わ申Unicorn鐃夙わ申鐃塾人居申鐃祝駕申鐃緒申鐃緒申討弔鐃緒申鐃淑刻申鐃緒申覆鐃緒申覆辰鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申覆鐃緒申Perl鐃塾駕申劼鐃緒申拔鐃緒申鐃緒申Mongrel鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申隼廚辰討鐃緒申鐃緒申鐃緒申鐃宿¥申Mongrel2鐃熟わ申呂鐃Rails鐃塾ワ申鐃竣リケ鐃緒申鐃緒申鐃緒申鵐機鐃緒申个鐃緒申鐃淑わ申鐃銃¥申鐃縮随申鐃緒申ZeroMQ鐃淑わ申鐃塾わ申箸辰鐃緒申鐃緒申鐃重鐃緒申Web鐃緒申鐃緒申鐃出になってわ申鐃初し鐃緒申鐃緒申

鐃緒申分鐃庶心的鐃淑プワ申鐃緒申鐃緒申鐃緒申鐃夙ではわ申鐃緒申鐃塾の¥申鐃緒申鐃緒申ZeroMQ鐃緒申Mongrel2鐃緒申屬箸蠅鐃緒申鐃緒申鐃出わ申鐃竣って器申鐃緒申鐃初し鐃緒申鐃緒申鐃緒申年鐃緒申鐃春わ申鐃初い鐃緒申鐃緒申鐃暑原鐃緒申鐃粛わ申鐃淑む気鐃緒申鐃緒申鐃緒申佑鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃藷じわ申覆鐃緒申鐃緒申覆箸鐃緒申鐃緒申辰鐃緒申辰鐃緒申鐃緒申廛鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申濃箸鐃緒申茲鐃淑ワ申戰鐃祝なわ申砲呂發鐃緒申鐃出らく鐃緒申鐃緒申鐃所そ鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃淑わ申童鐃緒申鐃塾種申鐃緒申鐃緒申鐃宿わ申鐃春わ申鐃銃なわ申鐃処う鐃淑ので¥申遊鐃緒申任鐃緒申鐃緒申覆藝o申里鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃Mongrel2鐃緒申鐃緒申流鐃峻わ申鐃緒申鐃夙わ申鐃祝¥申faultier鐃緒申鐃緒申鐃緒申鐃緒申鐃旬わ申颪い討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申廚辰討鐃緒申蠅わ申鐃緒申鐃暑こ鐃夙わ申夢鐃緒申鐃銃随申鐃緒申鐃緒申鐃祝ょご鐃祝ょし鐃銃みわ申鐃処。

鐃緒申鐃緒申

鐃緒申鐃熟ともあ鐃緒申ZeroMQ鐃緒申Mongrel2鐃薯インスト¥申鐃暑す鐃暑。鐃夙は醐申鐃獣ても、Getting Started鐃緒申鐃縮わ申縫鐃緒申鵐好函鐃緒申襪刻申鐃緒申鐃緒申鐃緒申鐃緒申暴颪い討鐃緒申鐃緒申曚麓禊鰹申弌鐃緒申鐃緒申鐃藷が古わ申鐃塾で¥申鐃緒申鐃曙ぞ鐃緒申虜膿鐃緒申任鐃緒申辰討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申隼廚鐃緒申鐃緒申鐃緒申覆澆鐃ZeroMQ鐃緒申homebrew鐃祝わ申Formula鐃緒申鐃緒申鐃獣わ申鐃緒申pyzmq鐃緒申無鐃緒申鐃獣わ申鐃塾で種申分鐃叔削申鐃淑どわ申鐃緒申鐃緒申

鐃緒申鐃緒申鐃Ruby鐃叔試す鐃塾で¥申Ruby鐃緒申ZeroMQ鐃出ワ申鐃緒申妊鐃緒申鵐阿鐃緒申鐃緒申鐃銃わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申未鐃gem install zmq鐃緒申鐃緒申鐃緒申呂鐃緒申鐃Rack鐃塾ハワ申疋鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申ffi-rzmq鐃緒申箸辰討鐃緒申鐃緒申鐃緒申鼻鐃緒申覆鵑手元鐃塾環駈申鐃叔常申蠅鐃緒申鐃藷スト¥申鐃緒申任鐃緒申覆鐃緒申辰鐃緒申里任鐃緒申辰鐃緒申六遒件申討覆鐃緒申鐃緒申泙鐃緒申鐃緒申鐃緒申襪鰹申箸砲呂匹辰鐃緒申鐃緒申匹鐃緒申箸鐃緒申鐃緒申鐃殉わ申愀鐃緒申覆鐃緒申里鐃zmq鐃緒申鐃緒申鐃叔わ申鐃緒申鐃緒申鐃緒申

鐃緒申鐃緒申鐃殉ででわ申鐃緒申鐃初今鐃駿わ申Mongrel2鐃緒申鐃緒申鐃緒申鐃緒申儖佞鐃緒申襦o申覆鐃緒申C鐃叔書かわ申討鐃熟わ申鐃緒申Mongrel2鐃緒申鐃巡た鐃緒申鐃Python鐃塾ライ鐃瞬ワ申鐃緒申鐃緒申鐃殉わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙思っわ申鐃緒申鐃緒申鐃緒申鼻鐃Mongrel2鐃緒申鐃緒申鐃祝わ申m2sh鐃夙わ申鐃緒申Python鐃叔書かれた鐃緒申鐃緒申鐃緒申廛箸鐃夙わ申鐃緒申鐃緒申蕕件申鐃緒申鐃緒申鐃緒申鐃塾誌申鐃緒申鐃緒申鐃緒申鐃薯くて¥申鐃殉わ申鐃緒申Python鐃叔書かれた鐃緒申鐃緒申侫鐃緒申鐃緒申鐃緒申鐃術意わ申鐃銃¥申鐃緒申鐃緒申鐃m2sh鐃緒申sqlite鐃塾フワ申鐃緒申鐃緒申暴颪出わ申鐃緒申鐃緒申鐃緒申鐃夙っわ申Mongrel鐃緒申鐃緒申動鐃緒申鐃暑、鐃夙わ申鐃緒申鐃処う鐃祝なってる。鐃緒申鐃緒申鐃緒申多分m2sh鐃緒申鐃緒申鐃塾わ申里鐃Perl鐃淑わ申Ruby鐃淑わ申鐃緒申儖佞鐃緒申討鐃緒申泙鐃緒申弌鐃緒申未鐃Python鐃緒申必鐃竣なわ申鐃熟わ申鐃緒申鐃殉わ申鐃緒申鐃緒申鐃楯なのわ申鐃緒申佑鐃緒申鐃m2sh鐃緒申箸鐃緒申鐃緒申鐃緒申鐃春ワ申鐃緒申鐃緒申呂鐃緒申鐃淑器申鐃緒申鐃祝わ申鐃緒申鐃緒申

# m2test.py
from mongrel2.config import *

main = Server(
    uuid ="2f62bd5-9e59-49cd-993c-3b6013c28f05",
    chroot="./",
    access_log="/logs/access.log",
    error_log="/logs/error.log",
    pid_file="/run/mongrel2.pid",
    default_host="localhost",
    name="main",
    port=6767,
    hosts=[
        Host(
            name="localhost",
            routes={
                r'/m2test': Handler(
                    send_spec="tcp://127.0.0.1:9997",
                    send_ident="70D107AB-19F5-44AE-A2D0-2326A167D8D7",
                    recv_spec="tcp://127.0.0.1:9996",
                    recv_ident=""
                )
            }
        )
    ]
)
settings = {"zeromq.threads": 1}
commit([main], settings=settings)

Mongrel2鐃緒申examples鐃緒申鐃緒申鐃獣てわ申鐃塾を参考にわ申鐃緒申鐃緒申鐃淑わ申箸覆鐃緒申錣鐃緒申隼廚鐃緒申鐃緒申鼻鐃hosts鐃緒申鐃緒申鐃Handler鐃獣てわ申弔鐃緒申鐃緒申鐃緒申鐃緒申鐃熟ワ申疋鐃緒申鐃縮随申鐃緒申鐃緒申戮鐃緒申鐃緒申鐃祝なる。鐃緒申鐃曙が鐃緒申鐃処た鐃初、

$ mkdir run log tmp
$ m2sh init -db m2test.db
$ m2sh load -db m2test.db -config m2test.py
$ m2sh start -db m2test.db -host localhost

鐃夙わ申鐃緒申鐃緒申函鐃Mongrel2鐃緒申立鐃緒申鐃遵が鐃暑。http://localhost:6767/m2test鐃叔ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃塾鐃塾ハワ申疋鐃祝緒申鐃緒申鐃緒申鐃熟わ申呂鐃緒申鐃緒申鐃緒申鼻鐃緒申泙鐃緒申鐃獣てなわ申鐃塾でわ申鐃塾誌申鐃緒申鐃叔はレス鐃楯ンスわ申鐃瞬ってわ申鐃緒申鐃緒申鐃巡々鐃峻わ申鐃緒申鐃緒申襦

鐃竣ワ申鐃夙ワ申鐃緒申鐃縦器申戮鐃

Mongrel2鐃緒申鐃緒申鐃緒申鐃祝ワ申鐃竣リケ鐃緒申鐃緒申鐃緒申鵐機鐃緒申个鐃緒申鐃縦わけ鐃叔はなわ申鐃緒申鐃緒申鐃緒申的鐃祝わ申襪鰹申箸鐃ZeroMQ鐃緒申箸辰鐃緒申命鐃緒申鬚垢鐃緒申鐃緒申鐃緒申鐃緒申暴颪い鐃緒申鐃緒申鐃緒申鐃夙¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃9997鐃楯¥申鐃夙わ申9996鐃楯¥申鐃夙わ申ZeroMQ鐃塾ワ申鐃緒申鐃獣トわ申鐃術意わ申鐃緒申董鐃緒申魯鐃宿ワ申鐃9997鐃楯¥申鐃夙わ申鐃緒申螢鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申箸蝓鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申9996鐃楯¥申鐃夙にレス鐃楯ンスわ申鐃緒申鐃獣てわ申鐃処う鐃祝わ申鐃暑。鐃緒申鐃淑みにわ申鐃塾ワ申鐃緒申鐃獣トわ申鐃縮わ申Unix鐃緒申鐃緒申鐃獣トのわ申鐃夙ではなわ申鐃緒申鐃春ワ申鐃緒申鐃緒申鐃緒申由鐃緒申鐃緒申鐃緒申廛鐃緒申鐃緒申鐃緒申鐃緒申命鐃緒申鐃緒申鐃緒申鐃粛ットワー鐃緒申鐃循わ申鐃緒申鐃縮随申鐃緒申鐃緒申鐃所色鐃緒申鐃叔わ申鐃緒申蕕件申鐃緒申鐃緒申椶鐃緒申鐃緒申鐃ZeroMQ鐃緒申調鐃駿てみわ申箸鐃緒申鐃緒申隼廚鐃緒申鐃

鐃所ク鐃緒申鐃緒申鐃夙のワ申奪鐃緒申鐃緒申鐃緒申蓮鐃緒申屮鐃緒申鐃緒申鐃緒申ID 鐃緒申鐃粛ワ申鐃緒申鐃緒申鐃緒申ID 鐃術ワ申 鐃舜ッワ申鐃緒申長鐃緒申:鐃舜ッワ申,鐃旬デワ申鐃緒申長鐃緒申:鐃旬デワ申鐃竣の件申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申襦o申尊櫃砲呂鐃緒申鐃淑器申鐃緒申鐃緒申

70D107AB-19F5-44AE-A2D0-2326A167D8D7 2 /m2test 542:{"PATH":"/m2test","METHOD":"GET","VERSION":"HTTP/1.1","URI":"/m2test","PATTERN":"/m2test","Accept":"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5","Accept-Charset":"Shift_JIS,utf-8;q=0.7,*;q=0.3","Accept-Encoding":"gzip,deflate,sdch","Accept-Language":"ja,en-US;q=0.8,en;q=0.6","Cache-Control":"max-age=0","Connection":"keep-alive","Host":"localhost:6767","User-Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.62 Safari/534.3"},0:,

鐃緒申如鐃緒申譽刻申櫂鵐垢蓮屮鐃緒申鐃緒申鐃緒申ID 鐃緒申鐃粛ワ申鐃緒申鐃緒申鐃ID鐃緒申長鐃緒申:鐃緒申鐃粛ワ申鐃緒申鐃緒申鐃緒申ID HTTP/1.1 鐃緒申鐃銃¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 鐃緒申鐃銃¥申鐃緒申鐃緒申鐃緒申奪鐃緒申鐃緒申鐃 鐃舜ッワ申 鐃旬デワ申鐃竣とわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃純え鐃緒申ok鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃塾レス鐃楯ンスならこ鐃緒申粉鐃緒申鐃緒申鐃

70D107AB-19F5-44AE-A2D0-2326A167D8D7 1:3, HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 2

ok

鐃縦まわ申魯鐃宿ラが鐃緒申鐃薯すわ申个鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申函鐃9997鐃楯¥申鐃夙わ申鐃緒申鐃処た鐃緒申侶鐃緒申鐃緒申離鐃獣ワ申鐃緒申鐃緒申鐃緒申僉鐃緒申鐃緒申鐃緒申謄螢鐃緒申鐃緒申鐃夙わ申判鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申未魏爾侶鐃緒申鐃緒申鵬湛鐃緒申鐃緒申鐃9996鐃楯¥申鐃夙わ申鐃緒申鐃獣てわ申襦鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙でわ申鐃緒申

鐃淳ニマワ申淵魯鐃宿ワ申鐃緒申鐃

鐃緒申鐃緒申鐃銃わ申鐃緒申鐃初が調鐃緒申鐃術みのハワ申疋鐃祝なわ申泙鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申法鐃

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

require 'zmq'

sid   = "70D107AB-19F5-44AE-A2D0-2326A167D8D7"
con   = ZMQ::Context.new
rsock = con.socket(ZMQ::UPSTREAM)
ssock = con.socket(ZMQ::PUB)

rsock.connect('tcp://127.0.0.1:9997')
ssock.connect('tcp://127.0.0.1:9996')
ssock.setsockopt(ZMQ::IDENTITY, sid)

loop do
  str = rsock.recv
  sender, conn_id, path, str = str.split(' ', 4)
  ssock.send "#{sender} #{conn_id.size}:#{conn_id}, HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 2\r\n\r\nok", 0
end

鐃緒申鐃緒申鐃縦わ申Mongrel2鐃緒申動鐃緒申鐃緒申鐃夙わ申鐃銃¥申http://localhost:6767/m2test鐃祝ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申函鐃ok鐃夙わ申鐃獣わ申鐃淑わ申鐃瞬誌申鐃緒申鐃瞬ってわ申鐃暑、鐃夙わ申鐃緒申鐃緒申鐃緒申鐃塾ハワ申疋蕁o申嶌鐃緒申鐃熟居申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃竣とわ申鐃瞬結婚鐃緒申鐃処う鐃竣とわ申鐃緒申鐃緒申鐃所ク鐃緒申鐃緒申鐃夙わ申鐃所げ鐃銃わ申鐃ok鐃竣っわ申鐃瞬わ申鐃銃わ申鐃緒申泙鐃緒申鐃緒申泙鐃緒申鐃緒申未鐃処う鐃竣でわ申鐃ok鐃竣っわ申鐃瞬ってわ申鐃殉わ申鐃緒申鐃宿¥申

鐃緒申離鐃緒申鐃緒申匹鐃緒申鐃receive鐃緒申鐃緒申鐃緒申奪鐃緒申鐃緒申鐃緒申離鐃緒申鐃緒申ID鐃夙ワ申鐃粛ワ申鐃緒申鐃緒申鐃ID鐃緒申鐃緒申鐃緒申鐃銃なわ申鐃緒申鐃宿¥申鐃舜ッワ申鐃夙ボデワ申鐃緒申僉鐃緒申鐃緒申鐃緒申鐃緒申Rack鐃緒申鐃竣ワ申鐃緒申呂鐃ENV鐃緒申鐃暑こ鐃夙わ申鐃叔わ申鐃暑し鐃緒申Rack鐃緒申鐃竣リが鐃瞬わ申鐃曙ス鐃楯ンスの誌申鐃粛は件申泙辰討鐃塾でわ申鐃緒申鐃Mongrel鐃術のレス鐃楯ンスワ申奪鐃緒申鐃緒申鐃緒申鐃緒申儡鐃緒申鐃緒申討鐃緒申里鐃緒申単鐃祝でわ申鐃緒申錣縁申如鐃緒申鐃緒申鐃緒申泙任鐃緒申鐃緒申Mongrel2鐃緒申連鐃夙でわ申鐃緒申Rack鐃熟ワ申疋蕕鐃緒申鐃暑、鐃夙わ申鐃緒申鐃緒け鐃緒申鐃緒申鐃夙は¥申鐃緒申鐃塾ハワ申疋藜鐃夙でリク鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申覆鐃緒申討癲鐃緒申鐃緒申奪匹鐃緒申鐃春削申辰討鐃緒申鐃緒申鐃緒申Rack鐃緒申鐃竣ワ申僚鐃緒申鐃緒申鬚気鐃緒申董鐃緒申魯鐃宿ラ自鐃夙はプワ申鐃緒申鐃緒申鐃緒申鐃縮随申鐃叔リク鐃緒申鐃緒申鐃緒申/鐃曙ス鐃楯ンスわ申鐃緒申鐃緒申鐃祝なってわ申鐃夙わ申鐃緒申鐃緒申弌鐃緒申錙種申鐃緒申鬚んがわ申鐃緒申鐃巡せ鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝わ申任鐃緒申襦

鐃緒申鐃夙¥申Mongrel2鐃夙ハワ申疋鐃瞬わ申ZeroMQ鐃緒申鐃縮随申鐃緒申鐃銃わ申鐃緒申鐃緒申覆里如鐃緒申鐃緒申澆鐃緒申鐃緒申鐃緒申鐃緒申討襪鐃緒申鐃叔るか鐃緒申鐃緒申鐃縦わ申鐃緒申里鐃緒申鐃縦わ申覆鐃緒申里鐃緒申鐃緒申覆匹砲弔鐃緒申堂鐃緒申盍駈申里鐃緒申覆鐃緒申鐃緒申里如鐃緒申泙鐃緒申鐃駿わ申鐃遵が鐃獣わ申鐃緒申廛鐃緒申鐃緒申鐃緒申筌居申鐃緒申个鐃緒申鐃緒申笋件申洞杁鐃緒申鐃緒申鐃緒申鐃緒申討鐃Mongrel側鐃緒申鐃緒申鐃緒申鐃緒申儿鐃緒申鐃緒申鐃宿鐃竣なわ申鐃獣わ申鐃緒申箸鐃緒申鐃緒申妊廛鐃緒申鐃緒申鐃緒申砲呂發鐃緒申張魯鐃宿ワ申廛鐃緒申鐃緒申鐃緒申鐃塾鐃緒申鐃遵げ鐃銃居申動鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鼎鐃緒申廛鐃緒申鐃緒申鐃緒申鮖Δ鐃緒申箸鐃緒申鐃緒申討鐃緒申丱鐃緒申鐃緒申鵐織鐃緒申鐃縮居申鐃緒申妊妊廛鐃緒申鐃緒申任鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鵑犬鐃淑わ申鐃塾わ申鐃淑¥申多分鐃緒申

鐃緒申鐃緒申鐃緒申鐃淑みに削申鐃緒申鐃獣わ申鐃緒申里鐃Gist鐃緒申鐃瞬わ申鐃夙わ申鐃緒申鐃緒申

鐃緒申RubyKaigi鐃緒申鐃緒申鐃緒申辰鐃緒申蘓随申鐃緒申椶砲鐃緒申鐃緒申鐃竣とわ申鐃緒申鐃獣てわ申鐃緒申鐃緒申鐃祝¥申鐃醇々鐃緒申鐃緒申無鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃銃わ申鐃緒申鐃緒申鐃術わ申分鐃緒申鐃緒申笋刻申鐃緒申鐃緒申鐃緒申鐃瞬削申鐃緒申鐃出てわ申鐃殉っわ申鐃遵、鐃銃わ申鐃緒申泙脳鐃獣てわ申鐃銃わ申鐃殉っわ申鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃淳ングわ申逃鐃緒申鐃緒申faultier鐃叔わ申鐃緒申鐃緒申个鐃熟¥申

鐃緒申鐃緒申鐃緒申鐃塾わ申鐃出刻申鐃緒申鐃銃みわ申

鐃緒申鐃宿んげわ申鐃出わ申鐃淑わ申討鐃盾い鐃銃もい鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃夙でてわ申AA鐃熟上記鐃塾居申鐃緒申同鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸錣誌申討鐃緒申辰鐃緒申鐃緒申鐃春もい鐃緒申鐃淑¥申鐃夙思っわ申鐃緒申鐃緒申鐃緒申鐃宿緒申鐃緒申鐃緒申討澆鐃緒申鐃緒申腓鐃潤ぎ鐃銃種申分鐃塾ワ申鐃緒申鐃淳ナワ申鐃宿緒申鐃緒申任鐃緒申覆鐃緒申辰鐃緒申里任鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申匹呂鐃緒申鐃淑器申鐃緒申鐃緒申

# tewi.rb
eval$s=%w't=true;e="eval($s=join("<<34<<34<<",qw{$t=1;$s=~/"<<92<<"[[0-9,]+"<<92<
<"]/;$n=eval($&);$e=          "<<39<<"eval$s=%w"<<39<<    ".chr(39)."<<39<<($s+(
($s.length>1756)?"   ":"#"<<$    s.gsub(/[^0-9a-zA-   Z]/,      "")[0,(1755-$s.l
ength)]));e[-312,  311]=""<<39<<   ";$e.=          ("<<39<<"#"<   <39<<".substr(
join("<<39<<39<<  ",split(/[^0-9a-z              A-Z]/,$s)),0,(200  9-length($s)
))).chr(39)."<<  39<<".join"<<39<<";@o   =       map{$t=!$t;split(//  ,((!$t)?su
bstr($e,0,$_,"< <39<<39<<"):chr(32)x$_)         )}@$n;for(1..34){spli  ce(@o,$_*
81,0,chr(10))}  ;print(join("<<39<<39<<         ",@o).chr(10      )    )}))";o=[
101,10,24,4,40 ,3,8,4,18,3,4,6,33,2,13           ,3,6,10,1            2,3,30,2,1
7,14,17,2,27,  2,21,3,1,7,19    ,2                     ,              25,1,23,9,
21,2,23,2,23,  9,12,6,1,                           4                   ,23,1,23,
11,9,12,23,2, 13,4,2,2                   1                             ,1,14,23,
2,9,27,1,19   ,22,1,8         ,                  1    9   ,             1,29,20,
3,7,9,1,      18,1,4      ,         1        ,          3           ,    1,13,16
,6,6,6,      1,9,1,8                          ,1           ,    1    0,    1,11,
1,4,14,      6,7,26,                   2,1     1,1,4   ,1              ,4,   2,4
,12,6,7     ,19,3,5,             5,  3,2,14,3  ,3,1   0,5               ,8,13  ,
2,2,8,    2,4,3,3,15,          5,2    ,7    ,  4,11 ,10,3,              4,2,4,1,
2,4,    1,6,14,12,4,1      3  ,   6,1,     2,1,3,4,5,18,3,1,3   ,   1   ,3,12,3,
12,1   3,5,1,2,4,15             ,1,1, 11    ,10,3,14,12,6,1 ,           2,5,13,2
,1   ,1,1,6,12,2,16            ,11,7, 8,     13,2,1,7,13,1  , 1      8,10,8,6,14
,  1,2,10,10,1,20,1           2,5,3,1        2,1,6,13,7,2,  1       9,13,26,14,7
, 2,16,16,11,1,13,14          ,8,2,14,      16,13,7,5,15,1 0,          3,8,10,1,
8 ,25,10,1,4,13,27,23,            12,4,   2,12,5,1,1,1 ,8,1,1             3,17,1
0  ,1,3,5,1,12,14,4,8,             4,10,2,13,25,2,3,9,4,2,1,3              ,15,1
3,  33,4,5,1,4,3,20,                8,182].map{ |i|t=!t;((!t)              ?e.sl
ice  !(0,i):32.chr*                i)}.join;1.up       to(35               ){|i|
o[(i*   81)-1,0]          =        10.chr};puts(o)#ttrueeeva          l    sjoin
3434qwt1                           s920992nevale39evalsw39            chr3  939s
slength1     7 5        6             sgsub09azAZ01755s          l   ength e3123
1139e39              39su        bstr          jo             #t1s09nevaleevalsw
chr39tt  rue         eeva  l   sjoin3434qwt1s9             20992nevale39evalsw39
chr3939sslen    gth17 56sg   sub09azAZ01755slengt        he31231139e3939substrjo
in3939split09azAZs02009lengthschr3939join39omapttsplittsubstre03939chr32xnfor134
spliceo810chr10printjoin3939ochr10o10110244403841834633213361012330217141'.join

Gist鐃祝わ申鐃瞬わ申鐃銃わ申鐃緒申泙鐃緒申鐃緒申呂鐃緒申鐃

Quine鐃緒申鐃緒申覆鐃緒申鐃

鐃緒申離鐃緒申鐃緒申匹鬟灰團擇鐃緒申鐃Ruby鐃祝実行わ申鐃緒申鐃緒申伐鐃緒申鐃初コ鐃緒申鐃宿わ申鐃叔わ申鐃塾で¥申鐃緒申鐃緒申鬚気鐃緒申Ruby鐃緒申流鐃緒申鐃緒申鐃緒申納孫圓鐃緒申鐃緒申討鐃緒申函弔覆鐃夙わ申鐃緒申鐃緒申鐃夙でわ申鐃順う鐃緒申鐃緒申鐃初ー鐃緒申鐃叔わ申鐃叔はわ申鐃緒申泙鐃緒申鵑¥申Quine鐃祝なってねわ申鐃緒申鐃緒申諭鐃緒申鐃緒申鐃緒申鐃緒申離鐃緒申鐃叔緒申鐃緒申鐃

# tewi.pl鐃緒申tewi.rb鐃塾緒申鐃熟件申漫鐃
eval($s=join("",qw{$t=1;$s=~/\[[0-9,]+\]/;$n=eval($&);$e='eval$s=%w'.chr(39).'t=
true;e="eval($s=join(          "<<34<<34<<",qw{$t=1;$s=    ~/"<<92<<"[[0-9,]+"<<
92<<"]/;$n=eval($&)   ;$e="<<3    9<<"eval$s=%w"<<39   <<".      chr(39)."<<39<<
($s+(($s.length>17  56)?"":"#"<<$   s.gsub          (/[^0-9a-zA-   Z]/,"")[0,(17
55-$s.length)]));  e[-312,311]=""<<3              9<<";$e.=("<<39<<  "#"<<39<<".
substr(join("<<3  9<<39<<",split(/[^0-9   a       -zA-Z]/,$s)),0,(200  9-length(
$s)))).chr(39)." <<39<<".join"<<39<<";@o         =map{$t=!$t;split(//,  ((!$t)?s
ubstr($e,0,$_,"  <<39<<39<<"):chr(32)x$_         ))}@$n;for(1      .    .34){spl
ice(@o,$_*81,0, chr(10))};print(join("<           <39<<39<<            ",@o).chr
(10))}))";o=[1  01,10,24,4,40    ,3                     ,              8,4,18,3,
4,6,33,2,13,3,  6,10,12,3                           ,                   30,2,17,
14,17,2,27,2,2 1,3,1,7,                   1                             9,2,25,1
,23,9,21,2,2   3,2,23,         9                  ,    1   2             ,6,1,4,
23,1,23,1      1,9,12      ,         2        3          ,           2    ,13,4,
2,21,1,1      4,23,2,                          9,           2    7    ,1    ,19,
22,1,8,1      9,1,29,                   20,     3,7,9   ,1              ,18   ,1
,4,1,3,1     ,13,16,6             ,6  ,6,1,9,1  ,8,1   ,10               ,1,11  
,1,4,14    ,6,7,26,2,1          1,1    ,4    ,  1,4, 2,4,12              ,6,7,19
,3,5,    5,3,2,14,3,3,      1  0   ,5,8     ,13,2,2,8,2,4,3,3,   1   5   ,5,2,7,
4,11,   10,3,4,2,4,1             ,2,4, 1,    6,14,12,4,13,6, 1           ,2,1,3,
4,5   ,18,3,1,3,1,3,            12,3,1 2,     13,5,1,2,4,15  , 1      ,1,11,10,3
,1  4,12,6,1,2,5,13,           2,1,1,1        ,6,12,2,16,11  ,       7,8,13,2,1,
7, 13,1,18,10,8,6,14,          1,2,10,1      0,1,20,12,5,3, 12          ,1,6,13,
7, 2,19,13,26,14,7,2,16            ,16,1   1,1,13,14,8, 2,14,1             6,13,
7,  5,15,10,3,8,10,1,8,             25,10,1,4,13,27,23,12,4,2,              12,5
,1,  1,1,8,1,13,17,10                ,1,3,5,1,12 ,14,4,8,4,10,              2,13
,25,  2,3,9,4,2,1,3,                15,13,33,4,5,       1,4,3               ,20,
8,182]   .map{|i|          t        =!t;((!t)?e.slice!(0,i):3          2    .chr
*i)}.join                           ;1.upto(35){|i|o[(i*81)            -1,0  ]=1
0.chr};pu     t s        (             o)#ttrueeevalsjoi          n   3434q wt1s
920992ne              vale        39ev          al             sw39chr3939ssleng
th1756sg  sub         09az  A   Z01755slengthe3             1231139e3939substrjo
';$e.=('#'.su    bstr( join   ('',split(/[^0-9a-zA        -Z]/,$s)),0,(2009-leng
th($s)))).chr(39).'.join';@o=map{$t=!$t;split(//,((!$t)?substr($e,0,$_,''):chr(3
2)x$_))}@$n;for(1..34){splice(@o,$_*81,0,chr(10))};print(join('',@o).chr(10))}))

鐃緒申鐃緒申鐃熟わ申鐃緒申鐃宿わ申鐃緒申鐃銃わ申蕕鐃緒申鐃淑鐃緒申鐃緒申隼廚鐃緒申鐃緒申鼻鐃緒申造呂鐃緒申離鐃緒申鐃緒申匹麓鐃淑鐃緒申鐃夙わ申鐃緒申呂鐃緒申討覆鐃緒申鐃緒申鐃緒申鐃緒申鐃熟わ申鐃銃るか鐃夙醐申鐃緒申鐃夙¥申Perl鐃塾ワ申鐃緒申鐃宿わ申鐃緒申呂鐃緒申討鐃緒申襦o申鐃叔¥申鐃緒申鐃緒申Perl鐃塾ワ申鐃緒申鐃宿は駕申鐃薯するか鐃夙わ申鐃緒申鐃夙¥申鐃叔緒申鐃Ruby鐃塾ワ申鐃緒申鐃宿わ申鐃緒申呂鐃緒申襦o申弔泙蝓鐃叔緒申離鐃緒申鐃緒申匹蓮屐悗鐃緒申鐃Ruby鐃塾ワ申鐃緒申鐃宿わ申鐃緒申呂鐃緒申鐃Perl鐃塾ワ申鐃緒申鐃宿』わ申鐃緒申呂鐃緒申鐃Ruby鐃塾ワ申鐃緒申鐃宿」で¥申鐃緒申離鐃緒申鐃緒申匹蓮屐悗鐃緒申鐃Perl鐃塾ワ申鐃緒申鐃宿わ申鐃緒申呂鐃緒申鐃Ruby鐃塾ワ申鐃緒申鐃宿』わ申鐃緒申呂鐃緒申鐃Perl鐃竣のワ申鐃緒申鐃宿になってわ申鐃銃¥申鐃緒申鐃淳わ申鐃緒申鐃緒申鐃淳わ申鐃塾種申分鐃緒申鐃夙わ申鐃緒申鐃祝緒申鐃熟わ申鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申嵜佑楼鐃粛でわ申鐃緒申鐃緒申鐃銃行わ申鐃淑わ申鐃緒申鐃緒申廚箸鐃緒申鐃緒申鐃獣ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申疋鐃緒申鐃緒申匹覆錣縁申任鐃緒申鐃緒申泙鐃緒申鐃緒申任鐃緒申鐃Ruby鐃緒申Perl鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申里如鐃緒申鐃緒申里泙淇鐃緒申鐃緒申鐃緒申討鐃縦まわ申覆鐃緒申辰鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申鐃緒申鐃淑器申鐃緒申鐃緒申遊鐃緒申任澆鐃夙わ申鐃緒申鐃処!

$ cat tewi.rb | ruby | perl | ruby | perl | ruby

鐃緒申鐃薯しわ申鐃塾¥申

鐃渋のとわ申鐃緒申鐃縮になわ申箸鐃緒申鐃緒申鐃緒申箸呂覆鐃緒申董鐃緒申鐃獣てるこ鐃夙は器申鐃緒申的鐃祝はわ申鐃宿わ申Quine鐃夙逸申錙o申鐃緒申鐃緒申謄鐃緒申鐃join鐃緒申eval鐃緒申箸辰鐃Quine鐃緒申Perl鐃叔わ申Ruby鐃叔わ申鐃緒申鐃緒申同鐃緒申鐃緒申鐃塾ででわ申鐃緒申里如鐃緒申鐃淑鐃緒申鐃夙わ申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申離鐃緒申鐃緒申匹鐃緒申任鐃緒申茲鐃祝書き器申鐃緒申鐃緒申抜鐃獣縁申帽圓辰鐃緒申鐃緒申茲随申鐃叔わ申鐃緒申茲鐃祝なる。

# 任鐃春に加刻申鐃叔わ申鐃緒申Ruby鐃緒申鐃緒申鐃宿わ申鐃緒申呂鐃緒申襦
# 任鐃春に加刻申鐃叔わ申鐃緒申Perl鐃緒申鐃緒申鐃宿わ申鐃緒申呂鐃緒申襦
# 任鐃春に加刻申鐃叔わ申鐃緒申Ruby鐃緒申鐃緒申鐃宿わ申鐃緒申
eval$s=%w'puts("eval(join("<<39<<39<<",qw{print("<
<39<<"eval$s=%w"<<
39<<".chr(39)."<<39<
<$s<<39<<".chr(39)."<<39<<".join"<<39<
<")}))")'.join

鐃緒申鐃夙は¥申鐃緒申鐃緒申鐃淑鐃塾ワ申鐃緒申鐃宿わ申鐃緒申弔鐃AA鐃緒申鐃緒申鐃緒申鐃緒申襪鰹申箸砲覆襪件申鐃Perl鐃緒申Ruby鐃緒申鐃夙ワ申謄鐃暑が鐃緒申鐃獣わ申鐃緒申覆里妊如鐃緒申鐃緒申鐃緒申篭鐃粛鐃緒申鐃緒申鐃緒申鐃塾わ申鐃緒申鐃塾デ¥申鐃緒申鐃緒申颪わ申鐃緒申鐃緒申鐃夙なわ申鐃塾鐃出に醐申鐃緒申AA鐃叔¥申鐃緒申鐃緒申鐃緒申文鐃緒申鐃緒申鐃緒申鐃緒申鐃渋わ申鐃緒申鐃縦わ申鐃緒申鐃初、反転鐃緒申鐃緒申鐃緒申抜鐃緒申鐃緒申AA鐃祝わ申鐃緒申鐃緒申鐃緒申鐃淑みに¥申鐃銃わ申鐃緒申鐃緒申呂鐃緒申匹鵑欧里箸鐃AA鐃叔¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃熟器申鐃緒申鐃銃わ申文鐃緒申鐃緒申鐃緒申離鐃緒申鐃緒申奪鐃緒申鐃Perl鐃叔種申鐃緒申鐃緒申鐃緒申里鐃緒申鐃緒申櫃鐃緒申辰鐃緒申鐃緒申鐃緒申法鐃

鐃緒申鐃夙はまわ申鐃緒申鐃緒申鐃熟誌申鐃祝随申鐃緒申鐃緒申適鐃緒申鐃淑ワ申鐃淳わ申鐃春わ申鐃緒申文鐃緒申鐃緒申調鐃緒申鐃緒申鐃銃わ申鐃緒申鐃緒申鐃宿¥申文鐃緒申鐃緒申鐃銃ワ申鐃緒申鐃緒申鐃緒申劼鐃緒申鐃獣縁申鐃緒申鐃緒申鐃緒申里鐃緒申鐃緒申歃鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃駿¥申chr(39)鐃緒申鐃術わ申鐃殉わ申鐃所。鐃緒申鐃夙ドットわ申Ruby鐃塾ドットなのわ申Perl鐃塾ドットなのわ申鐃宿わ申鐃緒か鐃緒申覆鐃緒申覆辰鐃緒申蠅件申泙鐃緒申鐃

鐃殉とわ申

鐃緒申鐃緒申如峅鐃緒申楼鐃緒申硫鐃緒申鐃緒申辰討鐃緒申鐃緒申廚隼廚辰鐃緒申鐃渋進鐃初け鐃淑わ申鐃緒申隼廚鐃緒申泙鐃緒申鐃緒申鐃緒申戰戞鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申磴鐃夙醐申魯妊丱奪鐃緒申鐃淑醐申鐃緒申鐃緒申鐃縦器申鐃緒申鐃緒申鐃緒申櫃覆鐃緒申鐃緒申如鐃緒申鐃夙器申単鐃祝でわ申鐃殉わ申鐃緒申鐃緒申鐃緒申鐃淑¥申哲鐃緒申的鐃淑居申分鐃祝なわ申泙鐃緒申鐃

鐃殉わ申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃淑わ申颪べわ申鐃緒申鐃夙は逸申鐃春わ申鐃緒申鐃緒申鐃緒申鐃宿も、眠鐃緒申鐃銃まとわ申討鐃緒申鐃瞬わ申無鐃緒申鐃獣わ申鐃塾で¥申鐃緒申鐃緒申鐃緒申鐃緒申颪い討鐃緒申鐃緒申泙鐃緒申諭鐃

eval(%w(eval(a="eval(%w(b=[35,35,35,
32,34,69   ,11   5,1   11,116,101,1,
14,105,9   9,  32,79   ,98,102,117,
115,99,9      7,116,   101,100,32,82
,117,98,   121,32,80   ,1        14,11
1,103,11   4,97,109,      109,1   05,
110,103,   34,32,105     ,115,3   2,103,
11   4,1   01,97,116   ,  33];p   uts
(b   .pa   ck('C*'))   ).        join)
;printf(\"eval(a=%p)\n\",a)")).join)

鐃緒申鐃藷、わ申鐃緒申鐃緒申諭鐃緒申鐃緒申鐃夙消種申覆里呂茵種申鐃淑鐃緒申鐃獣てわ申鐃緒申鐃緒申鐃緒申鐃旬醐申能个鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申鐃2鐃緒申鐃旬以降わ申鐃緒申鐃緒申鐃緒申鐃曙た鐃緒申鐃緒申鐃宿出わ申鐃駿わ申鐃淑わ申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申函鐃RubyKaigi鐃緒申鐃緒申鐃緒申辰鐃緒申蘓随申鐃緒申椶砲鐃緒申鐃緒申鐃夙は思わ申鐃緒申鐃緒申鐃緒申弖鐃緒申鐃緒申鐃緒申鐃緒申辰撞鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申福鐃

鐃緒申鐃緒申鐃緒申鐃緒申Ruby鐃緒申弔發鐃緒申箸鐃緒申鐃緒申里法鐃緒申鐃緒申鐃緒申鐃緒申鐃叔駈申Ruby鐃緒申鐃緒申鐃書いてなわ申faultier鐃叔わ申鐃緒申鐃緒申个鐃緒。鐃緒申鐃純あ鐃緒申魯咼鐃緒申鐃粛て久¥申鐃緒申Ramaze鐃緒申鐃緒申鐃粛件申鐃叔みるか鐃緒申鐃縦わ申鐃叔にわ申鐃緒申鐃獣醐申NoSQL鐃瞬¥申鐃緒申砲鐃緒申辰討澆襪鐃緒申鐃淳わ申鐃緒申鐃淑器申鐃緒申鐃緒申Ramaze+MongoDB+Candy鐃緒申遊鐃緒申任澆襪鰹申箸砲鐃緒申鐃緒申鐃緒申鐃緒申覆澆房鐃緒申鐃叔は削申Cassandra鐃緒申鐃瞬¥申鐃緒申覆里鐃緒申鐃緒申匹癲Cassandra鐃熟わ申鐃緒申辰鐃粛件申咾濃箸辰討澆鐃祝はワ申鐃緒申鐃出¥申鐃緒申鐃准ッワ申鐃緒申鐃緒申福鐃緒申箸鐃緒申廚鐃緒申弔朕鐃緒申鐃緒申鐃緒申討鐃緒申蕁Heroku鐃緒申MongoDB鐃緒申鐃夙わ申鐃緒申蕕件申鐃緒申里任鐃緒申鐃緒申鐃緒申鐃獣てわ申MongoDB鐃緒申鐃緒申鐃所。

鐃夙りあ鐃緒申鐃緒申鐃緒申鐃緒申討澆鐃

apt鐃緒申探鐃緒申鐃緒申鐃緒申mongodb鐃塾パッワ申鐃緒申鐃緒申鐃盾あ鐃緒申鐃緒申鐃緒申鐃宿¥申2010年5鐃緒申30鐃緒申鐃緒申鐃緒申鐃叔わ申1.2.2鐃夙若干鐃出¥申鐃緒申鐃緒申鵑古わ申鐃緒申鐃緒申鐃塾後オ鐃瞬ワ申鐃緒申鐃緒申鐃夙マッパ¥申鐃薯色¥申鐃庶し鐃銃みわ申鐃夙わ申鐃緒申1.4鐃熟わ申鐃緒申覆鐃緒申鐃銃逸申鐃緒申覆鐃緒申辰鐃緒申蠅件申鐃緒申里如鐃鐃旬家のワ申鐃緒申鐃緒申鐃緒申鐃緒申膿鐃緒申離弌鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申討鐃緒申襦o申鐃緒申鐃術ワ申鐃緒申僂澆離僖奪鐃緒申鐃緒申鐃緒申覆里鐃重醐申鐃緒申鐃緒申鐃重鐃緒申鐃淑とわ申鐃緒申鐃瞬わ申鐃夙わ申鐃緒申鐃緒申鐃緒申OK鐃緒申鐃所元鐃塾環駈申鐃緒申Ubuntu 10.04鐃緒申64bit鐃淑のわ申Linux 64bit鐃獣てわ申弔鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申OSX 32/64 bit鐃夙わ申Windows 32/64 bit鐃夙わ申鐃盾あ鐃獣わ申鐃緒申

$ mongo
MongoDB shell version: 1.4.3
url: test
connecting to: test
type "help" for help
>

鐃春む。鐃述っわ申鐃述っわ申鐃緒申鐃緒申鐃塾わ申鐃緒申鐃緒申鐃遵ー鐃夙リア鐃緒申鐃夙わ申鐃祝わ申鐃緒申鐃緒申鐃縮わ申鐃緒申腓鰹申鐃緒申腓鰹申鐃緒申鐃緒申辰討澆鐃緒申鐃緒申匹鐃緒申鐃緒申隼箸鐃緒申鐃処う鐃緒申鐃緒申

Ruby鐃緒申鐃緒申箸鐃

Ruby鐃緒申driver鐃緒申gem鐃緒申鐃初イ鐃藷スト¥申鐃緒申任鐃緒申鐃塾わ申鐃緒申鐃縮わ申gem install mongo鐃夙わ申鐃緒申襦o申鐃渋醐申皀醐申紂種申鐃緒申bson鐃銃のわ申鐃緒申鐃暑け鐃宿なんじわ申鐃緒申鐃緒申隼廚辰鐃緒申鐃緒申鐃緒申鐃宿¥申Ruby鐃塾ワ申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申MongoDB鐃緒申BSON鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙にワ申鐃所ア鐃初イ鐃緒申鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃緒申鐃縮のパッワ申鐃緒申鐃緒申鐃祝わ申鐃銃わ申鐃緒申蕕件申鐃緒申鐃緒申鐃叔¥申bson鐃緒申C鐃緒申張鐃緒申鐃緒申鐃獣て¥申鐃緒申鐃獣わ申鐃緒申鐃緒申鐃緒申討覆鐃緒申箸鐃緒申鐃淑ワ申奪鐃緒申鐃緒申鐃緒申鐃緒申个襦

rb(main):001:0> require 'mongo'

**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.
  You can install the extension as follows:
  gem install bson_ext

  If you continue to receive this message after installing, make sure that the
  bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version.

=> true

鐃殉わ申鐃緒申鐃緒申鐃緒申鐃緒申粒鐃夙鐃縦駈申鐃緒申鐃緒申鐃縮にどっわ申鐃叔もい鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申个鐃緒申屬鐃緒申箸鐃緒申呂匹鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃bson_ext鐃緒申鐃緒申鐃緒申討鐃緒申鐃緒申鐃

# coding: utf-8
require 'mongo'

con   = Mongo::Connection.new # 鐃緒申鐃盾オ鐃竣ワ申鐃緒申鐃緒申鐃所し鐃淑わ申鐃緒申 localhost鐃緒申28017鐃楯¥申鐃夙に繋わ申
db    = con.db('candy')
udons = db.collection('Udon')
udons.insert({
  'name'  => '鐃瞬っわ申鐃緒申',
  'type'  => '鐃巡た鐃緒申鐃緒申鐃宿わ申',
  'price' => 350
})
udons.insert({
  'name'  => '鐃緒申鐃緒申',
  'type'  => '鐃緒申鐃緒申鐃緒申鐃緒申鐃宿わ申',
  'price' => 300
})
udons.insert({
  'name'  => '鐃緒申鐃緒申',
  'type'  => '鐃緒申鐃殉わ申鐃緒申鐃緒申鐃宿わ申',
  'price' => 400
})

p db.collection_names  #=> [ 'system.indexes', 'Udon' ]
p udons.count          #=> 3
p udons.find_one       #=> {"_id"=>{"$oid"=>"4c0273712e119e3fd7000001"}, "name"=>"鐃瞬っわ申鐃緒申", "type"=>"鐃巡た鐃緒申鐃緒申鐃宿わ申", "price"=>350}
p udons.find('price' => {'$gte' => 350}).count #=> 2

鐃緒申鐃緒申粉鐃緒申鐃緒申任鐃緒申鐃緒申辰隼箸鐃緒申鐃緒申鐃緒申曄鐃緒申鐃緒申鐃緒申箸鐃MapReduce鐃夙わ申鐃庶し鐃銃みよう鐃緒申鐃夙思っわ申鐃緒申鐃宿まわ申鐃緒申鐃緒申呂鐃緒申鐃緒申鐃緒申鐃緒申鐃

鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙マッパ¥申

鐃瞬っわ申鐃純けmongo-ruby-driver鐃緒申鐃緒申鐃叔も十分鐃緒申鐃緒申鐃叔わ申鐃暑し鐃緒申O/R鐃殉ッパ¥申鐃縦わ申鐃緒申鐃緒申鐃緒申Relation鐃緒申鐃緒申覆鐃緒申鐃緒申蕁O/D鐃殉ッパ¥申鐃緒申鐃緒申鐃緒申無鐃緒申鐃銃もい鐃緒申鐃緒申鐃淑と思っわ申鐃緒申鐃宿も、Ramaze鐃夙わ申鐃叔使わ申鐃緒申鐃夙わ申佑鐃緒申鐃緒申鐃緒申辰僂蠅鐃獣わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑刻申鐃竣わ申鐃銃わ申鐃出器申存鐃塾ヘワ申僉鐃緒申箸鐃緒申箸鐃緒申鐃緒申鐃緒申覆里如法鐃緒申鐃叔わ申鐃緒申鐃緒申辰噺鐃緒申討澆鐃緒申蕁鐃暑構鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申匹鐃緒申AR鐃獣ぽわ申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃淑わ申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣と駕申鐃淑のでわ申辰鐃緒申鐃緒申鐃緒申里鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃MongoMapper鐃緒申Mongoid鐃緒申ActiveSupport鐃夙わ申validation鐃術のライ鐃瞬ワ申鐃夙わ申鐃緒申鐃緒申鐃緒申磴鐃緒申Rails鐃叔使わ申鐃緒申覆蕕わ申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃夙わ申鐃緒申鐃緒申Rails鐃緒申AR鐃緒申鐃緒申鐃緒申忙箸鐃緒申里鐃緒申鐃緒申蠅件申討鐃獣ぽわ申鐃銃¥申ActiveModel鐃獣てのわ申鐃緒申鐃緒申鐃緒申鐃粛¥申鐃叔駈申Rails鐃緒申鐃緒申鐃緒申鐃銃なわ申鐃塾わ申鐃塾わ申覆鐃緒申鐃緒申鐃緒申鐃緒申Rails鐃緒申Model鐃緒申櫺鐃緒申鐃塾鐃緒申覆鵑な)¥申悩鐃殉わ申鐃緒申鐃緒申鐃縦¥申鐃緒申ActiveSupport鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申澆鐃緒申鐃緒申覆鐃緒申帖鐃

鐃縦随申的鐃祝は逸申鐃緒申鐃塾最醐申砲鐃緒申辰鐃Candy鐃緒申鐃宿わ申鐃緒申鐃祝醐申鐃緒申鐃緒申鐃緒申鐃淑にわ申鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃ActiveRecord鐃緒申DataMapper鐃塾ミラー鐃緒申鐃緒申覆鐃緒申廚辰鐃README鐃緒申頭鐃緒申鐃緒申鐃緒申鐃緒申鐃銃るし鐃緒申mongo-ruby-driver鐃淑鰹申鐃祝は逸申存鐃緒申鐃銃なわ申鐃塾わ申鐃緒申敵鐃緒申鐃夙わ申鐃緒申鐃緒申Candy::Piece鐃緒申include鐃緒申鐃緒申鐃緒申鐃緒申肇鐃緒申鐃竣ル。

# coding: utf-8
require 'candy'

class Udon
  include Candy::Piece
end

kamaage = Udon.new
kamaage.name = '鐃緒申鐃殉わ申鐃緒申'
kamaage.type = '鐃緒申鐃殉わ申鐃緒申鐃緒申鐃宿わ申'
kamaage.price = 350

鐃緒申鐃淑みに¥申鐃緒申鐃緒申鐃緒申蠅件申覆鐃緒申鐃出わ申鐃緒申鐃localhost鐃緒申28017鐃楯¥申鐃夙に繋わ申鐃叔¥申candy鐃夙わ申鐃緒申鐃叔¥申鐃緒申鐃駿¥申鐃緒申鐃緒申Udon鐃緒申鐃曙ク鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃暑。鐃縦まりこ鐃塾ワ申鐃緒申鐃宿わ申鐃夙¥申鐃緒申鐃緒申鐃緒申離鐃緒申鐃緒申匹鐃銃縁申鐃緒申如鐃緒申鐃緒申戞鐃緒申鐃緒申鐃銃縁申鐃緒申鐃緒申譽鐃緒申鐃緒申鵑わ申鐃獣てわ申鐃暑こ鐃夙になる。鐃緒申鐃緒申鐃Candy鐃緒申鐃初ス鐃緒申Udon鐃緒申鐃初ス鐃塾ワ申鐃初ス鐃潤ソ鐃獣ドで誌申鐃緒申/鐃術刻申鐃叔わ申鐃暑。Candy鐃緒申鐃初ス鐃緒申鐃緒申鐃所す鐃緒申鐃緒申鐃緒申討離妊侫鐃緒申鐃緒申鐃緒申鐃緒申砲覆襪件申鐃緒申鐃緒申薀刻申瓮緒申奪匹鐃緒申鐃緒申蠅刻申鐃夙わ申鐃塾ワ申鐃初ス鐃塾デフワ申鐃緒申鐃緒申鐃緒申鐃祝なる。Ramaze鐃緒申鐃獣わ申鐃初、model/init.rb鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申颪い箸鐃緒申鐃

# coding: utf-8

require 'candy'

Candy.host = "mongdb.example.com"
Candy.port = "24423"
Candy.db   = "udonapp"

require __DIR__('udon')

Udon.collection = 'menrui' # 鐃緒申鐃初ス名鐃緒申鐃緒申覆鐃緒申鐃緒申譽鐃緒申鐃緒申鐃縮常申砲鐃緒申鐃緒申鐃緒申鐃緒申

鐃緒申鐃緒申save鐃潤ソ鐃獣ドはなわ申鐃緒申鐃淑んかわ申鐃緒申鐃楯リシ鐃緒申鐃初し鐃緒申鐃銃¥申鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申鐃緒申遒件申鐃緒申鐃渋鐃緒申反鐃叔わ申鐃緒申襦method_missing鐃叔フッワ申鐃緒申鐃銃随申鐃緒申鐃緒申鐃緒申鬚わ申鐃銃わ申里如鐃緒申發validation鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃熟¥申鐃純え鐃緒申price鐃緒申鐃緒申鐃緒申鐃叔なわ申鐃緒申个覆鐃淑わ申鐃銃¥申1000鐃緒申超鐃緒申鐃緒申茲鐃淑わ申鐃盾い鐃緒申鐃宿わ申鐃緒申鐃獣わ申鐃純い鐃緒申鐃淑わ申鐃楯リシ鐃緒申鐃祝わ申鐃緒申箸鐃緒申鐃緒申蕁鐃緒申鐃緒申粉鐃緒申鐃緒申離瓮緒申奪匹鐃緒申鐃緒申笋件申討鐃暑。super鐃緒申鐃塾¥申

class Udon
  include Candy::Piece

  def price=(val)
    raise '鐃緒申鐃淑は随申鐃緒申鐃緒申鐃獣つってわ申鐃緒申鐃' unless val.kind_of?(Integer)
    raise '鐃緒申鐃緒申鐃緒申鐃処ア鐃循わ申' unless val < 1000
    super
  end
end

鐃緒申鐃淑みにバワ申如鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申蕁種申魯鐃宿ワ申鵐阿箸鐃named scope鐃夙わ申鐃塾器申単鐃淑種申鐃緒申鐃緒申鐃Candy鐃塾ドワ申鐃緒申鐃緒申箸忘椶辰討鐃塾で醐申鐃銃みわ申箸鐃緒申鐃緒申隼廚鐃緒申鐃緒申泙鐃緒申禊鰹申鐃緒申櫃任呂鐃緒申襪縁申鼻鐃緒申鐃縦常申鐃緒申鐃淑のでわ申鐃緒申鐃緒申福鐃緒申隼廚辰鐃緒申鐃緒申鐃緒申个蕕鐃緒申鐃緒申鐃粛件申鐃叔みよう鐃緒申

鐃縦とわ申鐃緒申鐃緒申鐃緒申鐃緒申泙能颪い鐃緒申鐃緒申鐃緒申鐃縮薪鐃淑わ申鐃夙に居申鐃春わ申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃Candy鐃緒申1.9鐃熟わ申鐃緒申覆鐃緒申鐃緒申鐃緒申椶蕕件申鐃緒申鐃緒申鐃緒申鐃緒申Heroku鐃獣わ申Ruby 1.9鐃熟わ申鐃獣わ申鐃縦¥申多分鐃純う鐃緒申諭帖鐃緒申鐃緒申鐃緒申鵝△泙鐃緒申鐃緒申鐃緒申腓鐃宿借わ申討襯居申鐃緒申个鐃緒申咼鐃宿わ申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃夙りあ鐃緒申鐃緒申鐃緒申鐃塾ワ申鐃緒申鐃出わ申動鐃緒申鐃緒申鐃緒申个鐃緒申鐃緒申鐃緒申帖鐃

鐃緒申鐃緒申砲鐃緒申蓮鐃緒申屬鐃緒申鐃熟逸申鐃緒申誰鐃緒申鐃淑わ申鐃緒申廚任鐃緒申鐃緒申鐃緒申澆鐃faultier鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申茵鐃緒申鐃緒申鐃熟みわ申鐃緒申膵ワ申鐃MacRuby鐃緒申匹鐃緒申鐃緒申無鐃縮醐申鐃緒申鐃叔わ申鐃暑か鐃緒申佑鐃緒申討鐃緒申鐃塾わ申鐃夙わ申鐃緒申鐃峻わ申鐃緒申鐃塾で¥申鐃緒申鐃緒申顛鐃緒申鐃薯教わ申鐃銃わ申鐃緒申鐃緒申茵

MacRuby鐃緒申DT鐃緒申動鐃緒申鐃緒申鐃緒申鐃緒申

鐃殉わ申鐃緒申頭鐃書いわ申鐃縮わ申覆鐃緒申鐃緒申鐃宿¥申鐃緒申Objective-C鐃緒申鐃緒申MacRuby鐃緒申鐃緒申鐃術わ申鐃緒申 - Watson鐃塾ワ申鐃鐃竣わ申鐃宿わ申任覆鐃緒申僂覆鐃緒申箸任鐃緒申覆鐃緒申鐃緒申福鐃緒申塙佑鐃緒申討董鐃緒申鐃緒申鐃緒申鐃緒申箍駈申辰討亳鐃緒申鐃緒申椶鐃緒申鐃緒申鬚ぐ奮鐃緒申鐃緒申鐃緒申鐃緒申箸鐃銃誌申里覆鐃緒申鐃塾わ申鐃緒申鐃緒申鐃獣てわ申鐃緒申鐃緒申鵝△隼廚鐃緒申个鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申蠅鐃緒申鐃緒申鐃淑っわ申鐃夙わ申鐃緒申鐃獣¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙わ申道鐃緒申無鐃緒申鐃緒申里辰討里蓮鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申泙任鐃淑わ申鐃緒申鐃緒申鐃緒申鐃塾わ申鐃夙でわ申鐃粛¥申

esoteric鐃熟刻申鐃緒申鐃夙わ申鐃銃は¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿わ申僉鐃緒申鐃緒申鐃緒申鐃Sexp鐃祝わ申鐃緒申Parser鐃夙¥申鐃緒申鐃緒申鐃Ruby2Ruby鐃緒申箸辰鐃Ruby鐃塾ワ申鐃緒申鐃宿にトワ申鵐好譟種申箸鐃緒申討鐃緒申鐃渋行わ申鐃緒申Runner鐃叔でわ申鐃銃わ申鐃緒申里如鐃MacRuby Framework鐃緒申箸辰鐃esoteric鐃緒申ObjC鐃緒申鐃緒申討喀个鐃緒申弌鐃緒申鐃緒申廛螢縁申鐃緒申鐃緒申鐃緒申鐃DT鐃緒申討辰討辰董鐃緒申妊廛薀逸申鐃緒申鐃緒申颪韻鐃緒申鐃夙みわ申鐃緒申鐃重鐃銃易わ申導鐃緒申鐃叔わ申鐃暑か鐃夙思わ申鐃殉わ申鐃緒申導鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申誰鐃緒申鐃夙わ申鐃塾わ申鐃緒か鐃緒申泙鐃緒申鵑¥申鐃緒申鐃淑わ申鐃夙も俺鐃緒申鐃緒申鐃出に使わ申覆鐃緒申鐃

鐃殉わ申鐃熟常申鐃緒申調鐃駿のワ申鐃緒申僖鐃緒申襯鐃初ー

鐃夙りあ鐃緒申鐃緒申MacRuby鐃緒申Download鐃緒申鐃銃わ申鐃暑。鐃叔随申鐃叔わ申0.5鐃緒申Snow Leopard鐃祝わ申鐃緒申鐃緒申鐃藷スト¥申鐃緒申任鐃緒申覆鐃緒申鐃緒申匹鐃緒申覆鐃緒申鐃緒申鐃緒申蝓種申鵐ぅ鵐好函鐃緒申襪件申鐃緒申个辰鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申諭鐃緒申半鐃緒申鐃緒申悗辰討澆鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃獣鐃祝常申鐃獣わ申鐃塾わ申鐃熟よく鐃緒か鐃緒申覆鐃緒申鐃緒申鐃緒申覆澆縫鐃緒申鐃緒申鐃緒申鐃緒申鐃塾ビワ申匹鐃緒申鐃緒申鐃緒申澆討襪縁申鐃緒申鐃緒申里鐃緒申鐃緒申鐃塾で削申鐃緒申鐃縮居申鐃祝バワ申鐃淑ワ申鬟ぅ鵐好函鐃緒申襦macgem鐃緒申0.4鐃塾とわ申鐃熟まとわ申忙箸鐃緒申鐃緒申鐃藷じわ申覆鐃緒申辰鐃緒申里任鐃緒申鐃獣わ申鐃峻安わ申鐃獣わ申鐃緒申鐃宿¥申Ruby2Ruby鐃緒申鐃獣わ申鐃緒申鐃緒申覆鐃緒申鐃緒申辰鐃緒申融辧鐃緒申覆法鐃緒申鐃緒申鐃緒申鐃緒申鐃夙器申鐃緒申鐃緒申襪鐃初い鐃緒申鐃緒申辰鐃緒申鐃緒申辰鐃緒申鐃獣てわ申鐃緒申鐃塾¥申鐃夙ニワ申縫笋件申覆鐃緒申藜¥申離鐃緒申泪鐃宿わ申孫圈鐃

$ pwd
/Users/taro/Projects/esoteric
$ echo $RUBYLIB
lib:
$ macruby -v 
MacRuby version 0.5 (ruby 1.9.0) [universal-darwin10.0, x86_64]
$ macruby bin/dt -v
/Users/taro/Projects/esoteric/lib/esoteric/dt/parser.rb:13: end pattern with unmatched parenthesis: /((?:\xE3\x81\xA9|\xE7\xAB\xA5\xE8\xB2\x9E\xE3\x81\xA1\xE3/
/Users/taro/Projects/esoteric/lib/esoteric/dt/parser.rb:74: end pattern with unmatched parenthesis: /(\xE3\x81\xA9|\xE7\xAB\xA5\xE8\xB2\x9E\xE3\x81\xA1/
dt.rb:3:in `<main>': compile error (SyntaxError)
    from dt:4:in `<main>'

鐃緒申鐃緒申鐃縮¥申鐃緒申鐃緒申譴随申箸鐃緒申鐃緒申鮓てみわ申鐃初、parser.rb鐃緒申13鐃緒申鐃旬にわ申/((?:鐃緒申|童鐃緒申鐃緒申磴鐃緒申叩鐃)+)鐃緒申/鐃夙わ申鐃緒申鐃緒申鐃緒申表鐃緒申鐃緒申鐃書いてわ申鐃獣わ申鐃緒申念鐃塾わ申鐃緒申遒件申討澆鐃緒申鐃緒申鼻鐃Ruby 1.9.1鐃叔はわ申鐃緒申鐃緒申動鐃緒申鐃銃る。鐃宿わ申鐃盾、()鐃緒申鐃緒申鐃ASCII鐃淑鰹申鐃緒申文鐃緒申鐃緒申鐃殉まわ申討鐃緒申MacRuby鐃緒申鐃緒申鐃緒申蝶鐃縮を見つわ申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申表鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙醐申鐃獣てわ申鐃緒申鐃粛子¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿わ申utf-8鐃叔書いてわ申鐃獣て¥申magic comment鐃祝わ申utf-8鐃獣て誌申鐃所し鐃銃て¥申文鐃緒申鐃緒申鐃銃ワ申鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申里法鐃緒申鐃緒申鐃宿緒申鐃緒申鐃緒申鐃緒申鐃緒申棔鐃緒申鐃緒申鐃緒申覆鐃緒申里妊戰鐃緒申鐃緒申鐃緒申楔鐃書いてわ申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申Unicode鐃緒申謄鐃緒申砲鐃緒申討澆鐃緒申鐃"鐃緒申"鐃緒申鐃獣わ申鐃緒申"\u3069"鐃夙わ申鐃緒申鐃夙りあ鐃緒申鐃緒申鐃緒申鐃緒申妊鐃緒申鐃術ワ申鐃緒申任鐃緒申覆鐃緒申箸鐃緒申鐃緒申鐃緒申蕁種申禄个覆鐃緒申覆辰鐃緒申鐃CRuby鐃緒申鐃緒申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃逸申鐃緒申鐃緒申覆鐃緒申鐃処、鐃緒申鐃出でわ申鐃緒申鵑犬鐃淑わ申鐃緒申鐃緒申鐃縦ワ申妊譴鐃緒申鐃淑どと思わ申鐃縦わ申hi.dt鐃緒申孫圓鐃緒申鐃緒申討澆襦

$ macruby bin/dt -v
esoteric 0.0.2, DT 0.0.2
$ macruby bin/dt examples/hi.dt
parser.rb:160:in `numeric:': ArgumentError (ArgumentError)
from parser.rb:80:in `process'
from parser.rb:58:in `block'
from parser.rb:51:in `parse'
from parser.rb:11:in `parse:'
from runner.rb:25:in `run:'

鐃縮わ申鐃緒申鐃殉わ申鐃縦ワ申張鵑靴討笋鐃暑。鐃緒申鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃殉っわ申鐃緒申鐃宿¥申鐃宿わ申鐃緒申泙鐃MacRuby鐃緒申鐃叔わ申鐃薯けわ申鐃緒申討覆鐃緒申澆鐃緒申鐃緒申鐃緒申鐃緒申覆澆法鐃CRuby鐃緒申鐃緒申鐃叔わ申鐃夙わ申鐃緒申粉鐃緒申鐃緒申砲覆襦

$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-darwin10.0.0]
$ ruby bin/dt -v
esoteric 0.0.2, DT 0.0.2
$ ruby bin/dt examples/hi.dt
$stack = []
$heap = {  }
$stack.push(72)
$stdout.print($stack.pop.chr)
$stack.push(105)
$stdout.print($stack.pop.chr)
$stack.push(33)
$stdout.print($stack.pop.chr)
$stack.push(10)
$stdout.print($stack.pop.chr)
exit(0)
Hi!

鐃緒申鐃緒申鐃藷、わ申鐃緒申鐃緒申動鐃緒申鐃銃わ申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃塾箇緒申鐃縦器申戮鐃緒申蕁鐃緒申鐃緒申encoding鐃緒申UTF-8鐃緒申String鐃緒申鐃緒申討覆鐃緒申磴わ申鐃緒申覆鐃緒申箸鐃緒申鐃緒申如鐃MacRuby鐃塾常申鐃緒申US-ASCII鐃緒申String鐃緒申鐃緒申討鐃緒申泙辰討鐃緒申襦o申鐃緒申襪э申鐃緒申鐃緒申鐃淑醐申鐃緒申鵑どっわ申鐃緒申鐃緒申討襪鐃緒申辿鐃獣て行わ申鐃緒申ARGF.read鐃緒申鐃銃わ申箸鐃緒申覆鐃緒申鐃緒申鐃宿¥申MacRuby鐃叔は器申鐃祝わ申鐃塾誌申鐃緒申鐃緒申US-ASCII鐃夙わ申鐃緒申鐃宿み刻申鐃緒申任鐃緒申泙辰討鐃緒申襦CRuby鐃叔わ申辰鐃緒申鐃緒申鐃緒申鐃緒申動鐃緒申鐃塾わ申鐃緒申鐃初、$stdin.external_encoding鐃熟わ申鐃緒申鐃緒申UTF-8鐃祝なわ申呂鐃緒申覆鐃緒申鐃緒申鐃宿¥申鐃緒申鐃盾そ鐃盾そ鐃緒申鐃緒申nil鐃緒申鐃緒申鐃緒申opne鐃夙わ申set_encoding鐃夙わ申鐃叔誌申鐃所し鐃銃わ申鐃術駕申鐃淑わ申鐃緒申force_encoding鐃夙わ申鐃緒申鐃銃わ申鐃所く鐃緒申鐃緒申鐃淑わ申鐃緒申鐃夙¥申鐃緒申鐃塾わ申鐃緒申鐃緒申任鐃獣と随申鐃緒申鐃淑わ申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃夙に居申鐃春わ申鐃緒申

MacRuby鐃緒申String鐃緒申鐃緒申鐃峻わ申鐃緒申鐃緒申動鐃薯してなわ申鐃緒申

鐃緒申鐃殉わ申鐃緒申鐃宿わ申鐃緒か鐃緒申覆鐃緒申里如鐃緒申遒件申砲鐃緒申鐃淑わ申鐃夙をしてみわ申鐃緒申

$ cat test_string.rb
# coding: utf-8
a = "鐃緒申"
b = "\u3069"
puts "\"鐃緒申\".encoding        #=> #{a.encoding}"
puts "\"\\u3069\".encoding    #=> #{b.encoding}"
puts "\"鐃緒申\" == \"\\u3069\"     #=> #{a == b}"
puts "\"\\u3069\" == \"\\u0069\" #=> #{b == "\u0069"}"
puts "\"鐃緒申\" =~ /\\u3069/     #=> #{a =~ /\u3069/}"
puts "\"i\" =~ /\\u3069/      #=> #{"i" =~ /\u3069/}"
puts "\"i\" =~ /\\u0069/      #=> #{"i" =~ /\u0069/}"
$ ruby testb_string.rb
"鐃緒申".encoding        #=> UTF-8
"\u3069".encoding    #=> UTF-8
"鐃緒申" == "\u3069"     #=> true
"\u3069" == "\u0069" #=> false
"鐃緒申" =~ /\u3069/     #=> 0
"i" =~ /\u3069/      #=> 
"i" =~ /\u0069/      #=> 0
$ macruby test_string.rb
"鐃緒申".encoding        #=> UTF-16
"\u3069".encoding    #=> US-ASCII
"鐃緒申" == "\u3069"     #=> false
"\u3069" == "\u0069" #=> true
"鐃緒申" =~ /\u3069/     #=> 
"i" =~ /\u3069/      #=> 
"i" =~ /\u0069/      #=> 0

鐃緒申鐃緒申鐃緒申鐃縦どわ申鐃緒申鐃緒申鐃緒申鐃夙なの…なわ申任鐃緒申鐃淑に違う鐃塾…¥申鐃緒申鐃緒申鐃夙わか鐃獣てなわ申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃淑器申鐃緒申鐃淑のわ申鐃緒申鐃初。

  • MacRuby鐃熟ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿わ申UTF-8鐃叔書かわ申討鐃緒申鐃緒申里鐃緒申鐃緒申蠅件申董鐃緒申鐃緒申鐃緒申UTF-16鐃緒申鐃術器申鐃緒申鐃銃わ申鐃暑?鐃緒申鐃夙¥申magic comment鐃薯見てなわ申鐃処う鐃叔¥申鐃庶し鐃緒申euc-jp鐃叔書いてみわ申鐃緒申丱鐃緒申鐃緒申鐃薯そのまわ申UTF-16鐃緒申文鐃緒申鐃緒申鐃緒申伐鐃潤し鐃緒申String鐃緒申鐃初ス鐃祝わ申鐃銃わ申鐃銃¥申鐃緒申鐃緒申鐃暑。
  • IO鐃緒申鐃緒申鐃緒申匹濆鐃緒申澆鐃ASCII鐃夙わ申鐃銃逸申鐃獣てわ申鐃暑。ARGF鐃叔わ申open鐃叔わ申同鐃緒申鐃緒申鐃獣わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃縦駈申鐃術随申鐃緒申鐃緒申鐃緒申鐃宿わ申encoding鐃緒申magic comment鐃緒申鐃宿まわ申鐃春ワ申鐃緒申鐃緒申鐃encoding鐃祝関わ申蕕再縁申鐃緒申鐃
  • String#encode鐃緒申String#force_encoding鐃緒申鐃緒申鐃盾し鐃淑わ申鐃緒申self鐃緒申鐃瞬わ申鐃銃わ申茲鐃祝醐申鐃緒申鐃暑。NSString鐃塾メソ鐃獣ドわ申箸辰鐃緒申儡鐃緒申鐃緒申討鐃緒申鐃緒申僂鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
  • Unicode鐃緒申謄鐃緒申鐃緒申瓩刻申鐃夙わ申鐃祝¥申\uXXXX鐃塾醐申鐃緒申鐃遵し鐃緒申鐃緒申鐃銃なわ申鐃獣ぽわ申鐃緒申"\u3069" == "\u0069"鐃緒申true鐃獣て駕申鐃塾常申鐃縮わ申鐃夙思っわ申鐃緒申
  • Unicode鐃緒申謄鐃緒申琉鐃緒申鐃緒申鐃緒申鐃淑醐申鐃緒申鐃緒申謄鐃緒申鐃緒申鐃淑のわ申鐃緒申鐃緒申表鐃緒申鐃緒申謄鐃緒申鐃緒申鐃淑のわ申鐃叔逸申辰討鐃緒申襦"i" == "\u3069"鐃緒申true鐃緒申鐃緒申鐃緒申"i" =~ /\u3069/鐃緒申false鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃出¥申"(鐃緒申)"鐃緒申鐃緒申鐃緒申鐃緒申鐃術¥申鐃緒申鐃叔わ申鐃緒申里鐃/(鐃緒申)/鐃緒申SyntaxError鐃祝なわ申箸鐃緒申鐃緒申鮓わ申函鐃Unicode鐃緒申謄鐃緒申妨造蕕削申鐃緒申發緒申發緒申鐃緒申離僉鐃緒申鐃緒申離鐃緒申鐃緒申奪鐃緒申鐃緒申鐃縮鐃緒申鐃緒申鐃曙さ鐃緒申討覆鐃緒申鐃緒申鐃緒申鐃

鐃緒申鐃銃どわ申鐃緒申鐃緒申鐃緒申鵑な…¥申鐃緒申鐃旬醐申鐃緒申鐃緒申鐃宿緒申鐃緒申妊泪奪鐃緒申鐃緒申鐃緒申討鐃夙わ申鐃緒申鐃緒申鐃殉わ申鐃緒申鐃淑わ申鐃淑みわ申Brainf*ck鐃熟器申鐃緒申鐃祝¥申Whitespace鐃緒申鐃峻器申鐃緒申鐃叔はわ申鐃暑け鐃宿逸申鐃銃逸申鐃緒申鐃緒申里如鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申匹鐃緒申鐃緒申呂鐃NON-ASCII鐃緒申文鐃緒申鐃藷が含まわ申討覆鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申蕕件申鐃緒申砲覆蕁鐃緒申鐃緒申鐃祝バワ申鐃緒申鐃緒申鐃緒申隼廚辰動鐃緒申辰討鐃緒申箸鐃緒申鐃緒申鐃緒申鐃宿緒申鐃緒申鐃緒申鐃淑わ申鐃緒申==鐃緒申鐃緒申鐃夙わ申覆鐃緒申箸鐃緒申覆鐃緒申鐃緒申鐃緒申丱鐃緒申鐃獣縁申未鐃緒申鐃俊)¥申ObjC鐃叔まわ申鐃緒申鐃熟わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申辰鐃緒申鐃緒申MacRuby鐃緒申鐃熟わ申鐃夙わ申鐃緒申鐃緒申鐃緒申転鐃楯¥申鐃祝¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝わ申鐃緒申鐃銃逸申鐃緒申覆鐃緒申任鐃淑わ申鐃緒申鐃盾し鐃緒申覆鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申鐃緒申鐃淑醐申鐃緒申鐃緒申鐃緒申鐃淳わ申鐃緒申鐃緒申ObjC鐃叔わ申鐃緒申泙鐃書きわ申鐃緒申鐃淑わ申鐃夙わ申鐃緒申鐃緒申Ruby鐃叔わ申鐃緒申辰判颪韻襪鐃緒申鐃宿わ申鐃緒申任鐃緒申辰董鐃緒申鐃緒申鐃淑鰹申鐃塾とわ申鐃緒申鐃熟わ申鐃盾そ鐃緒申ObjC鐃叔書いわ申鐃獣わ申鐃順し鐃緒申鐃書しわ申鐃淑わ申鐃緒申performSelector鐃夙わ申鐃緒申鵐織鐃緒申鐃API鐃夙わ申鐃夙わ申鐃殉わ申鐃緒申个鐃緒申鐃緒申鐃緒申鐃処!鐃夙わ申鐃緒申鐃緒け鐃叔わ申鐃緒申辰隼鐃叔逸申粉鐃緒申鐃緒申鐃

余鐃緒申

esoteric鐃緒申鐃緒申属鐃緒申esoc鐃緒申鐃殉ワ申匹鐃夙わ申鐃緒申DT鐃緒申Brainf*ck鐃塾ワ申鐃緒申鐃宿わ申Ruby鐃塾ワ申鐃緒申鐃宿わ申鐃術器申鐃叔わ申鐃緒申里如鐃緒申鐃緒申茲随申鐃緒申鐃緒申匹鐃macrubyc鐃祝わ申鐃緒申鐃銃わ申鐃出最緒申的鐃緒申MacOSX鐃緒申動鐃庶す鐃緒申丱鐃緒申淵蠅鐃叔わ申鐃殉わ申鐃緒申DT鐃塾ワ申鐃緒申鐃宿わ申鐃淑わ申塙鐃渋鐃緒申動鐃庶す鐃緒申優鐃緒申謄鐃緒申屬離丱鐃緒申淵鐃祝¥申鐃縦と思っわ申鐃緒申鐃宿結構鐃駿わ申鐃獣わ申鐃緒申鐃淑んかわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿み刻申鐃緒申里離鐃緒申鐃緒申弌鐃緒申悒奪匹鐃緒申麓鐃緒申砲覆鐃淑わ申鐃緒申鐃緒申鐃緒申鐃叔も、鐃緒申鐃縮わ申Ruby鐃緒申箸鐃緒申鐃stack level too deep鐃緒申動鐃緒申鐃淑わ申鐃処う鐃淑随申鐃緒申鐃銃居申鐃塾ワ申鐃緒申鐃宿でわ申動鐃緒申鐃緒申鐃所す鐃暑。鐃銃わ申鐃緒申鐃緒申examples/fact.*鐃緒申macrubyc鐃叔ワ申鐃緒申僖鐃緒申襪件申覆鐃緒申鐃銃逸申鐃緒申覆鐃緒申鐃叔わ申鐃緒申鐃宿¥申鐃緒申鐃叔わ申鐃緒申淵鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申鐃緒申鐃

鐃叔駈申屮鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申討覆鐃緒申福鐃緒申隼廚辰討佞蛤能鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃3鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申佞砲覆辰討鐃緒申鐃緒申鐃緒申匹鐃緒申覆鐃緒申鐃緒申屮鐃緒申鐃緒申颪い討覆鐃緒申箸鐃緒申鐃緒申鐃緒申箸魯屮鐃緒申鐃緒申暴颪韻鐃処う鐃緒申鐃熟種申鐃淑わ申鐃夙をしてなわ申鐃夙わ申鐃緒申鐃緒申鐃夙で¥申3鐃緒申鐃緒申岼鐃緒申鐃緒申鐃駿まわ申鐃熟種申鐃叔わ申鐃獣わ申鐃祝もか鐃緒申鐃緒申蕕削申麓鐃緒申覆鐃緒申箸鬚靴討覆鐃緒申箸鐃緒申鐃緒申里呂箸討鐃緒申匹鐃緒申覆鐃緒申鐃緒申鐃緒申鐃熟ワ申鐃緒申鐃叔ワ申謄鐃緒申謄鐃緒申隆鐃緒申鐃緒申任鐃緒申襦

鐃夙わ申鐃緒申鐃緒申鐃夙で久¥申鐃緒申鐃熟種申鐃淑わ申鐃夙をしなわ申鐃夙と思わ申立鐃獣わ申鐃緒け鐃叔わ申鐃緒申鐃緒申鐃淑わ申鐃銃¥申鐃緒申鐃緒申鐃緒申鐃緒申単鐃緒申鐃夙鐃緒申鐃緒申鐃緒申聴鐃緒申瓩鐃緒申里如鐃夙鐃緒申鐃緒申鐃縮常申鐃緒申鐃緒申鐃淳まみわ申鐃緒申鐃銃わ申蕕鐃緒申皀醐申紂種申鐃緒申鐃獣てみわ申鐃緒申鐃緒申鐃重鐃祝わ申鐃緒申鐃緒申鐃熟種申鐃祝なっわ申鐃緒申

faultier's kamimamize at master - GitHub

鐃緒申鐃緒申鐃緒申鐃緒申砲鐃緒申道箸鐃緒申泙鐃緒申鐃

$ cat kamimamizer.rb
#!/usr/bin/env ruby
# coding: utf-8
require 'kamimamize'

mayoi = Kamimamize::Coverter.new({
    :pattern => { :priority => 10 },
    :repeat  => { :priority => 5, :through => 0.4 },
    :swap    => { :through => 0.05, :appid => 'APPID' },
    :default => { :class => 'Kamimamize::Plugin::Random' }
})

puts mayoi.kamimamize('鐃緒申鐃宿¥申鐃緒申', '鐃緒申鐃緒申蕕')
puts mayoi.kamimamize('鐃緒申鐃緒申', '鐃熟ねわ申鐃緒申')

$ ./kamimamizer.rb
鐃緒申鐃宿¥申鐃緒申鐃緒申鐃准わ申鐃緒申
鐃緒申鐃庶さ鐃藷 (ほねわ申鐃緒さ鐃緒申鐃

名鐃緒申鐃夙わ申鐃緒申鐃宿みわ申鐃緒申鐃緒申鐃夙ワ申鐃淳ママワ申鐃緒申鐃緒申鐃曙た名鐃緒申鐃緒申鐃出てわ申鐃殉わ申鐃緒申鐃緒申鐃淳ママワ申鐃緒申鐃緒申鐃淑わ申討鐃緒申鐃初し鐃緒申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申

鐃緒申鐃緒申鐃緒申鐃獣とわ申鐃緒申鐃緒申鐃盾す鐃緒申函鐃緒申鐃緒申鐃緒申縫廛薀逸申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Kamimamize::Converter鐃緒申new鐃緒申鐃緒申函鐃kamimamize鐃緒申鐃緒申箸鐃緒申砲鐃緒申離廛薀逸申鐃緒申鐃塾どれか鐃緒申箸辰鐃縮常申鐃緒申鐃緒申儡鐃緒申鐃緒申泙鐃緒申鐃priority鐃緒申鐃盾い鐃循わ申鐃緒申鐃祝緒申鐃緒申鐃緒申鐃緒申董鐃緒申鐃淑鐃緒申鐃緒申鐃緒申鐃叔わ申鐃淑わ申名鐃緒申鐃塾とわ申鐃熟種申鐃塾プラグ鐃緒申鐃緒申鐃叔わ申鐃緒申泙鐃緒申鐃through鐃緒申鐃緒申鐃所さ鐃緒申討鐃緒申鐃緒申鐃塾わ申鐃曙ぐ鐃初い鐃塾鰹申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申任皀刻申襦種申鐃緒申銅鐃緒申鐃緒申呂鐃緒申泙鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃repeat鐃竣ラグ鐃緒申鐃緒申鐃4鐃巡く鐃初い鐃塾鰹申率鐃叔緒申鐃緒申鐃叔わ申鐃緒申箸鐃緒申任皀刻申襦種申鐃緒申泙鐃緒申鐃緒申鐃緒申鐃緒申離廛薀逸申鐃緒申鵑ワ申鐃暑ー鐃緒申鐃緒申蛤埜鐃緒申default鐃塾プラグ鐃緒申鐃藷が緒申鐃緒申鐃殉わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃所さ鐃緒申討覆鐃緒申鐃random鐃竣ラグ鐃緒申鐃緒申default鐃叔¥申鐃緒申鐃緒申鐃緒申鐃夙鐃緒申鐃緒申砲劼匹鐃緒申鐃緒申箸鐃緒申鐃緒申鐃殉わ申鐃緒申

鐃竣ラグ鐃緒申鐃緒申呂箸蠅鐃緒申鐃緒申4鐃縦削申辰討鐃緒申辰董鐃

  • Hash鐃緒申YAML鐃春ワ申鐃緒申鐃緒申離僖鐃緒申鐃縮常申鐃緒申箸鐃緒申鐃緒申鐃出縁申鐃緒申鐃緒申鐃術器申鐃緒申未離螢刻申箸鐃緒申呂鐃緒申函鐃緒申弍鐃緒申鐃緒申鐃縮常申鐃緒申鐃緒申茲随申箸鐃緒申儡鐃緒申鐃縮リス鐃夙わ申鐃醇か鐃緒申鐃緒申鐃緒申鐃緒申鐃瞬わ申pattern鐃竣ラグ鐃緒申鐃藷。駕申鐃緒申螢刻申箸鐃緒申呂鐃緒申覆鐃緒申函鐃夙鐃緒申鐃緒申廚砲鐃緒申鐃夙随申鐃緒申鐃緒申襦
  • 同鐃緒申文鐃緒申鐃緒申続鐃緒申名鐃緒申鐃緒申鐃盾し鐃緒申鐃熟「¥申鐃竣わ申鐃殉まわ申鐃縮常申鐃緒申里箸鐃緒申砲鐃緒申凌鐃緒申鐃緒申鐃緒申笋件申鐃緒申蠍削申蕕件申鐃緒申蠅件申導鐃緒申鐃repeat鐃竣ラグ鐃緒申鐃緒申
  • 名鐃緒申鐃緒申鐃宿みわ申鐃曙音鐃緒申匆鐃緒申鐃重鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申swap鐃竣ラグ鐃緒申鐃緒申Yahoo!鐃塾テワ申鐃緒申鐃夙駕申鐃緒申API鐃緒申箸鐃緒申里妊鐃緒申廛螢縁申鐃緒申鐃緒申鐃緒申ID鐃緒申必鐃竣¥申鐃緒申鐃淑みに¥申名鐃緒申鐃塾誌申鐃縮を見てわ申鐃緒申錣縁申任呂覆鐃緒申匹澆鐃重鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申覆里如鐃緒申鐃緒申鐃淑に常申蠅わ申鐃緒申箸聾鐃緒申鐃淑わ申鐃緒申
  • 鐃緒申鐃緒申鐃所ス鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申random鐃竣ラグ鐃緒申鐃緒申鐃緒申鐃緒申鐃所ス鐃夙は緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃暑け鐃宿¥申鐃緒申鐃淑わ申鐃緒申八鐃緒申鐃緒申砲劼匹鐃緒申鐃緒申箸鐃緒申鐃緒申鐃暑。Converter鐃緒申new鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申鐃重鐃緒申default鐃緒申鐃緒申鐃所し鐃淑わ申鐃緒申隋鐃緒申鐃塾プラグ鐃緒申鐃緒申through=0鐃叔逸申鐃瞬醐申鐃緒申鐃緒申鐃緒申蠅居申鐃緒申覆弔泙鐃緒申鐃緒申鐃叔わ申default鐃緒申鐃緒申鐃緒申楼鐃縮o申覆鐃緒申法鐃

鐃緒申鐃緒申鐃暑。鐃緒申鐃緒申鐃緒申鐃夙逸申鐃宿¥申鐃緒申鐃緒申鐃准わ申鐃緒申鐃repeat鐃竣ラグ鐃緒申鐃緒申如鐃緒申鐃緒申遒居申鐃緒申swap鐃竣ラグ鐃緒申鐃緒申鐃緒申儡鐃緒申鐃縮¥申鐃緒申鐃緒申鐃緒申適鐃緒申鐃淑のわ申多分鐃緒申鐃緒申覆鐃緒申鐃緒申鬚し鐃縮は出なわ申鐃夙思わ申鐃緒申鐃宿¥申鐃純え鐃緒申鐃緒申譴鐃緒申鐃夙わ申鐃緒申鐃緒申鐃夙逸申味鐃緒申鐃緒申鐃緒申鐃緒申鐃銃鰹申鐃緒申鐃緒申里鐃緒申匹鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃塾わ申鐃出てわ申鐃緒申箸鐃緒申鐃緒申鐃緒申鼻鐃緒申擇鐃緒申鐃薯カミママワ申鐃緒申鐃緒申鐃緒申鐃緒申擇鐃緒申辰鐃緒申鐃緒申磴鐃夙わ申鐃祝¥申鐃縦随申的鐃祝は縁申鐃庶が鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申儡鐃緒申鐃緒申譴随申里鐃緒申鐃緒申鬚っわ申鐃塾わ申鐃緒申足鐃叔わ申鐃緒申鐃述らが鐃淑の駕申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申里辰瞳觜緒申鐃緒申櫃覆里茵o申箸鐃緒申鐃緒申鐃夙鐃緒申鐃緒申凌鐃緒申鐃緒申辰鐃緒申鐃緒申鵐垢望鐃緒申討覽わ申鐃緒申鐃緒申覆鐃緒申鐃

鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申箸鐃緒申鐃縮常申鐃緒申鐃緒申鐃塾醐申鐃獣わ申分鐃緒申鐃緒申鐃緒申椶砲鐃緒申箸鐃緒申鐃spec鐃緒申鐃初い鐃書くとわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申多分飽鐃緒申鐃銃わ申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃循わ申鐃緒申鐃殉わ申鐃緒申鐃緒申分鐃叔醐申鐃緒申鐃淑¥申鐃淑わ申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申潺泪泪鐃緒申鐃緒申鐃緒申襪随申鐃緒申鐃緒申鐃緒申Y!鐃緒申API鐃緒申箸鐃緒申箸鐃緒申鐃縮居申霧鐃緒申鐃緒申鬚靴鐃緒申鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申蠅刻申襦Y!鐃緒申API鐃緒申鐃薯かっわ申鐃緒申鐃緒申鐃緒申之鐃緒申鐃緒申撚鐃緒申呂箸鐃緒申鐃緒申鐃粛件申鐃叔わ申鐃緒申鐃宿わ申鐃緒申鐃淑わ申鐃獣わ申鐃緒申鐃緒申鐃縮居申霧鐃緒申鐃緒申鐃緒申討澆鐃緒申鐃緒申覆鐃緒申鐃

ねんどろいどぷち 化物語セット 其ノ貮 (ノンスケールABS&amp;PVC塗装済み可動フィギュア)
鐃粛わ申匹鐃緒申鐃緒申匹廚鐃 鐃緒申物鐃曙セ鐃獣ワ申 其鐃緒申鐃緒申 (鐃塾ンスワ申鐃緒申鐃緒申ABS&amp;PVC鐃緒申鐃緒申鐃術み駕申動鐃春ワ申鐃緒申鐃遵ア)
鐃緒申鐃緒申鐃緒申鐃淳を見わ申
ねんどろいどぷち 化物語セット 其ノ壹 (ノンスケールABS&amp;PVC塗装済み可動フィギュア)
鐃粛わ申匹鐃緒申鐃緒申匹廚鐃 鐃緒申物鐃曙セ鐃獣ワ申 其鐃緒申鐃緒申 (鐃塾ンスワ申鐃緒申鐃緒申ABS&amp;PVC鐃緒申鐃緒申鐃術み駕申動鐃春ワ申鐃緒申鐃遵ア)
鐃緒申鐃緒申鐃緒申鐃淳を見わ申

余鐃緒申

鐃緒申里佑鐃竣わ申鐃塾駕申物鐃曙セ鐃獣ト¥申鐃緒申鐃緒申鐃書いてわ申鐃緒申鐃緒申任鐃Amazon鐃叔は種申鐃春緒申了鐃緒申鐃緒申鐃緒申辰討鐃緒申任鐃緒申鐃緒申鐃緒申鐃緒申鐃薯今刻申鐃緒申鐃春わ申鐃銃わ申里鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申蕁twitter鐃緒申

鐃緒申八鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申討鐃緒申鐃緒申箸鐃緒申鐃緒申鐃重展鐃緒申鐃緒申鐃緒申@mayoi_hachikuji鐃祝わ申足鐃緒申鐃緒申鐃緒申匿鐃緒申譴緒申鐃緒申砲覆鐃緒申隼廚鐃緒申覆鐃緒申鐃宿わ申鐃祝わ申鐃暑か鐃塾わ申覆鐃緒申里鐃緒申鐃緒申未某鐃緒申泙鐃緒申鐃緒申鐃緒申鐃緒申蠅鐃夙わ申八鐃緒申鐃緒申鐃緒申膵ワ申鐃緒申鐃夙鐃緒申鐃緒申鐃

鐃宿わ申鐃緒申鐃Unicorn鐃夙わ申鐃緒申鐃塾わ申鐃宿わ申鐃初し鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申聞鐃緒申鐃縦わ申鐃緒申鐃塾で¥申鐃宿わ申覆鐃藷じわ申鐃緒申隼遒件申討澆襪鰹申箸砲鐃緒申鐃緒申鐃

Route 477 - 鐃順規鐃緒申Rails鐃緒申鐃緒申鐃夙のわ申鐃緒申凌鐃緒申鐃緒申鐃HTTP鐃緒申鐃緒申鐃出¥申Unicorn

Unicorn鐃銃のは駕申鐃峻なのわ申鐃夙醐申鐃緒申鐃夙¥申Rack鐃准わ申Rails鐃緒申鐃出縁申鐃緒申鐃緒申Ruby鐃緒申Web鐃緒申鐃竣ワ申鐃術わ申HTTP鐃緒申鐃緒申鐃出¥申鐃旬わ申鐃緒申鐃熟常申竜鐃緒申鐃緒申鐃緒申匹鐃叔駕申鐃緒申鐃緒申鐃緒申github鐃叔わ申箸辰討襪緒申鐃緒申鐃緒申鐃緒申鐃緒申函鐃縮常申鐃緒申鐃緒申聞鐃緒申匹鐃緒申覆鐃緒申鐃殉わ申愀鐃緒申覆鐃緒申法鐃

鐃殉わ申鐃緒申unicorn鐃緒申鐃緒申鐃緒申

鐃夙醐申鐃獣ても、gem install unicorn鐃緒申鐃緒申config.ru鐃緒申鐃緒申鐃緒申妊鐃緒申譽鐃夙ワ申鐃unicorn鐃緒申鐃殉ワ申匹鐃獣¥申鐃緒申弌鐃thin鐃夙わ申鐃緒申同鐃緒申鐃処う鐃祝ワ申鐃緒申鐃出わ申鐃緒申動鐃緒申鐃暑。rackup鐃淳器申鐃塾ワ申鐃竣ワ申鐃緒申鐃緒申鐃春わ申鐃銃わ申里鐃緒申辰鐃叔削申爐鰹申箸鐃淑わ申鐃夙思わ申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃縮わ申Apache鐃夙わ申鐃叔プワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃所し鐃銃わ申鐃淑わ申覆鐃淑りす鐃緒申个鐃緒申鐃緒申箸鐃緒申襦

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申腓件申鐃緒申鐃緒申鬚なわ申鐃塾で¥申鐃殉角わ申鐃緒申鐃緒申鐃塾居申鐃緒申鐃祝書いてわ申鐃緒申茲鐃祝¥申nginx鐃叔ワ申鐃緒申鐃獣トでってわ申鐃緒申鐃緒申鐃緒申鬚靴討澆襦o申鐃緒申Unicorn鐃緒申鐃緒申鐃緒申鐃緒申鐃所。鐃緒申鐃淑みにワ申鐃緒申廛鐃祝使っわ申鐃塾わ申鐃緒申砲鐃獣わ申鐃緒申鐃緒申鐃404鐃塾わ申帖鐃緒申鐃緒申鐃緒申澆鐃Apache2+Passenger鐃緒申動鐃緒申鐃銃わ申鐃緒申鐃緒申

# unicron.conf
worker_processes  4
working_directory '/var/www/rackapp'
listen '/tmp/rackapp.sock', :backlog => 1
listen 4423, :tcp_nopush => true
timeout 10
pid '/tmp/rackapp.pid'
preload_app  true
stderr_path '/var/log/rackapp.log'

before_fork do |server, worker|
  old_pid = "#{server.config[:pid]}.oldbin"
  if old_pid != server.pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end

  sleep 1
end

after_fork do |server, worker|
  addr = "127.0.0.1:#{4423 + worker.nr}"
  server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => 1)
end

鐃緒申箸呂曚箸鐃緒申Unicorn鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃初コ鐃峻ペ¥申鐃緒申鐃淑みに¥申nginx鐃緒申箴鐃緒申鐃銃わ申鐃緒申鐃緒申鐃緒申辰鐃nginx鐃緒申鐃緒申鐃緒申忙鐃緒申鐃緒申鐃DSL鐃祝なってるけ鐃宿¥申鐃緒申鐃瞬は醐申鐃銃わ申鐃縮わ申Ruby鐃緒申鐃緒申鐃塾居申鐃祝なわ申鐃銃暗鐃緒申鐃緒申鐃緒申鬚瓦砲腓器申砲鐃淳わ申鐃緒申鐃淑わ申鐃夙わ申任鐃緒申襦o申鐃緒申鐃緒申鐃Thin鐃淳わ申鐃緒申鐃祝よし鐃淑にわ申辰討呂鐃緒申鐃淑わ申鐃緒申鐃宿¥申鐃緒申鐃緒申鐃春わ申鐃緒申鐃緒申鐃Logger鐃緒申鐃熟わ申鐃淑わ申Rack鐃塾ミドルウ鐃緒申鐃緒申鐃緒申箸辰討覆鐃夙わ申鐃緒申鐃緒申覆蠅刻申鐃緒申OK鐃緒申

鐃緒申任鐃緒申鐃緒申適鐃緒申鐃淑フワ申鐃緒申鐃緒申名鐃緒申鐃緒申存鐃緒申鐃緒申鐃初、鐃緒申鐃塾よう鐃緒申unicorn鐃緒申鐃殉ワ申匹鐃獣¥申鐃緒申鐃

$ unicorn -D -c /var/www/rackapp/unicorn.conf /var/www/rackapp/config.ru

-D鐃緒申鐃竣ワ申鐃緒申鐃叔デ¥申鐃緒申鐃銃逸申鐃-c鐃緒申鐃竣ワ申鐃緒申鐃緒申鐃緒申鐃緒申侫鐃緒申鐃緒申鐃塾誌申鐃所、鐃叔醐申琉鐃緒申鐃緒申鐃rackup鐃春ワ申鐃緒申鐃緒申離侫鐃術ワ申鐃緒申鐃緒申鐃淑みにわ申鐃緒申鐃/var/www/rackapp鐃緒申鐃緒申覆鐃緒申箸鐃緒申鐃鐃叔実行わ申鐃銃みわ申鐃緒申鐃緒申鐃緒申鼻鐃緒申能鐃熟¥申working_directory鐃夙わ申鐃緒申鐃所し鐃銃るか鐃初、鐃緒申鐃緒申鐃祝わ申鐃緒申config.ru鐃薯勝種申鐃緒申匹鐃叔わ申鐃曙た鐃所し鐃淑わ申鐃緒申鐃淑」とわ申鐃竣ってわ申鐃緒申鐃緒申鐃緒申匹鐃獣ぱわ申鐃緒申鐃叔¥申鐃緒申鐃塾醐申鐃緒申鐃出パワ申鐃叔誌申鐃所し鐃銃みわ申鐃緒申require鐃叔ワ申鐃緒申鐃銃「わ申鐃緒申淵侫鐃緒申鐃緒申鐃粛¥申鐃処、鐃緒申鐃緒申鐃熟随申鐃銃醐申鐃緒申鐃竣わ申鐃旬わ申个鐃緒申鐃緒申里如鐃緒申鐃緒申丱僖鐃緒申砲鐃緒申鐃緒申鐃峻わ申鐃緒申鐃緒申

鐃緒申鐃塾誌申鐃緒申鐃緒申http://localhost:4423/鐃緒申鐃緒申鐃緒申鐃夙醐申鐃緒申鐃暑こ鐃夙と¥申unicorn.sock鐃緒申鐃緒申鐃緒申討襪鰹申箸鐃緒申認鐃緒申鐃処し鐃緒申鐃緒申nginx鐃緒申

nginx鐃塾プワ申鐃緒申鐃緒申鐃緒申鐃緒申

鐃緒申鐃緒申粉鐃緒申鐃緒申鐃

鐃緒申 nginx.unicorn.conf
upstream rackapp {
    server unix:/tmp/rackapp.sock;
}

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass  http://rackapp;
    }
}

鐃緒申鐃緒申鐃緒申鐃緒申椶鐃nginx.conf鐃緒申http鐃塾ブワ申鐃獣ワ申鐃塾どわ申鐃緒申鐃緒申include鐃緒申鐃銃わ申襦o申鐃緒申鐃緒申鐃獣とわ申鐃夙わ申鐃緒申奮鐃緒申砲鐃緒申鐃緒申未鐃nginx鐃塾細わ申鐃緒申鐃緒申鐃緒申呂鐃緒申討襪縁申鼻鐃緒申鐃緒申鐃緒申任肋鐃塾鐃緒申鐃銃まわ申鐃緒申

鐃緒申鐃淑みに¥申鐃緒申鐃緒申鐃獣トでわ申鐃処う鐃緒申鐃緒申鐃所し鐃銃るか鐃初こ鐃緒申鐃淑ってるけ鐃宿¥申TCP鐃緒申鐃宿わ申鐃緒申鐃proxy_pass鐃塾とわ申鐃緒申鐃緒申http://localhost:4423鐃夙わ申鐃祝わ申鐃銃わ申辰討鐃緒申鐃緒申未鐃銃逸申鐃緒申鐃

鐃夙りあ鐃緒申鐃緒申鐃緒申鐃緒申粘鐃緒申鐃緒申鐃緒申鐃緒申箸鐃nginx鐃緒申動鐃緒申鐃銃わ申鐃出¥申鐃緒申鐃緒申鐃夙醐申鐃緒申鐃暑。鐃緒申敵鐃緒申

鐃緒申鐃藷タ¥申鐃春ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃曙さ鐃緒申討鐃獣わ申鐃緒申敵鐃緒申鐃

鐃緒申鐃巡ぁ鐃緒申鐃緒申辰鐃Rack鐃叔ワ申鐃藷タ¥申鐃春ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃曙さ鐃緒申討鐃獣て¥申鐃宿わ申鐃叔わ申鐃緒申諭鐃緒申鐃緒申廛鐃渋鐃緒申鐃緒申泙鐃熟鐃緒申覆鐃緒申討發居申鐃緒申辰醗楾圓任鐃緒申鐃緒け鐃叔わ申鐃緒申鐃緒申鐃獣てわ申鐃緒申鐃獣をこなわ申鐃緒申鐃書いわ申鐃祝¥申鐃緒申鐃夙¥申鐃縦わ申鐃叔わ申同鐃緒申鐃緒申鐃緒申鐃出わ申動鐃緒申鐃銃わ申HTTP::Engine鐃塾ワ申鐃竣ワ申癲apache+modperl鐃緒申鐃緒申nginx+fcgi鐃祝移行わ申鐃銃みわ申鐃緒申鐃宿¥申鐃緒申鐃獣わ申鐃緒申鐃緒申腓鰹申辰鐃緒申鐃緒申鐃緒申僂鐃緒申鐃緒申鐃緒申蕕わ申妊鐃緒申廛鐃渋鐃緒申鐃緒申鐃緒申弄鐃獣てなわ申鐃緒申鐃宿わ申鐃淑¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃随申鐃緒申鐃緒申鐃縦駈申鐃緒申鐃出てわ申鐃緒申鐃所し鐃緒申鐃夙わ申鐃祝はわ申辰僂鐃Rack鐃緒申覆鐃緒申蕕鐃緒申鐃緒申鐃緒申発鐃緒申鐃緒申鐃暑。鐃殉角なので種申鐃緒申Plack鐃緒申H::E鐃塾とわ申鐃緒申同鐃緒申鐃緒申鐃夙わ申鐃獣てみよう鐃夙醐申討鐃醇。

鐃緒申如鐃緒申鐃緒申Unicorn鐃緒申鐃宿わ申鐃塾¥申鐃緒申鐃緒申鐃塾¥申

鐃緒申鐃緒申鐃縦ベワ申鐃緒申鐃獣てなわ申鐃塾でなわ申箸癲o申鐃獣てわ申鐃緒申鐃緒申鐃緒申404鐃竣わ申鐃純あ鐃緒申泙蟷駕申佑砲覆鐃淑わ申鐃緒申鐃緒申鐃淑¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃竣ワ申鐃緒申鐃緒申鐃宿わ申鐃緒申鐃緒申辰討鐃緒申鐃fork鐃緒申鐃緒申箸鐃nginx側鐃祝居申鐃春わ申鐃緒申鐃淑わ申鐃術に再居申動鐃叔わ申鐃緒申箸鐃緒申鐃緒申鐃緒申佞鐃緒申鐃緒申任盻淑魅鐃緒申的鐃叔はわ申鐃暑。鐃緒申鐃夙¥申鐃銃居申動鐃緒申鐃潤か鐃獣わ申鐃緒申流鐃出¥申

表鐃緒申鐃縮り。MacRuby鐃緒申MacFUSE鐃叔フワ申鐃緒申鐃暑シ鐃緒申鐃銃ワ申鐃緒申辰討澆茲鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申覆鵑わ申鐃殉わ申鐃緒申鐃緒申蠅鐃峻わ申鐃淑わ申鐃緒申

鐃殉わ申HotCocoa鐃緒申鐃緒申鐃緒申鐃夙居申能鐃緒申鐃銃なわ申鐃緒申hotcocoa鐃緒申鐃殉ワ申匹妊鐃緒申廛鐃塾随申鐃緒申鐃緒申鐃獣てわ申鐃緒申董鐃macrake鐃緒申鐃緒申丱咼鐃宿わ申鐃緒申鐃獣わ申.app鐃塾件申鐃祝パッワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申任鐃緒申鐃緒申鐃緒申廛鐃緒申動鐃緒申鐃銃も起動鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃暑。鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申泙鐃祝わ申分鐃緒申鐃緒申覆鐃緒申鐃緒申鐃塾で¥申鐃緒申鐃竣ワ申侶鐃緒申砲鐃緒申覆鐃緒申妊鐃緒申鐃緒申鐃竣トのまま居申動鐃緒申鐃銃みる。

$ hotcocoa sample
$ cd sample
$ macruby -d lib/application.rb
core:in `dump': nil is not a symbol (TypeError)
	from /Library/Frameworks/MacRuby.framework/Versions/0.5/usr/lib/ruby/1.9.0/hotcocoa/mappings/menu.rb:12:in `submenu:'
	from core:in `menu:'
	from /Users/taro/Projects/sample/lib/menu.rb:3:in `application_menu'
	from /Library/Frameworks/MacRuby.framework/Versions/0.5/usr/lib/ruby/1.9.0/hotcocoa/mappings/application.rb:17:in `load_application_menu'
	from /Library/Frameworks/MacRuby.framework/Versions/0.5/usr/lib/ruby/1.9.0/hotcocoa/mappings/application.rb:8:in `handle_block:'
	from core:in `application:'
	from lib/application.rb:in `start'
	from lib/application.rb:1:in `
'

鐃緒申鐃hotcocoa鐃塾ワ申鐃緒申鐃緒申鐃緒申鐃宿わ申任辰鐃緒申鐃緒申鐃緒申鐃宿¥申鐃宿わ申鐃緒申鐃緒申縫紂種申弌鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申討鐃夙わ申鐃緒申鐃叔ワ申鐃緒申鐃銃わ申辰櫃鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣てわ申鐃lib/manu.rb鐃祝書いてわ申鐃緒申HotCocoa#application_menu鐃緒申鐃緒申箸鐃楯わ申鐃夙ワ申鐃緒申鐃夙ワ申鐃緒申鐃夙わ申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃銃逸申鐃緒申鐃緒申鐃

鐃殉わ申鐃緒申鐃緒申鐃緒申箸鐃緒申討鐃塾わ申FUSE鐃塾フワ申鐃緒申鐃暑シ鐃緒申鐃銃ワ申鐃殉ワ申鐃緒申箸鐃緒申襯鐃竣ワ申覆里如鐃緒申未縫鐃祝ュー鐃緒申鐃竣わ申覆鐃緒申鐃View鐃緒申个鐃緒申覆鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申隼廚辰董鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申匹鐃緒申鐃緒申鐃獣に醐申鐃緒申鐃宿わず鐃緒申鐃塾ままにわ申鐃銃¥申鐃緒申鐃緒申離鐃緒申鐃緒申匹鬟▲廛螢縁申鐃緒申鐃緒申鐃緒申箸鐃緒申撞鐃銃逸申任鐃緒申鐃処う鐃緒申直鐃緒申鐃銃わ申襦o申鐃叔再わ申macruby鐃叔居申動鐃緒申鐃緒申鐃銃みわ申函鐃緒申匹鐃緒申鐃緒申鐃緒申鐃緒申肇泪鐃緒申鐃夙でわ申鐃緒申茲鐃緒申鐃緒申鐃処し鐃処し鐃緒申鐃夙居申鐃緒申鐃宿わ申鐃緒申鐃緒申macrake鐃緒申鐃緒申鐃初せ鐃緒申鐃緒申NamakeFS.app鐃熟でわ申鐃緒申鐃緒申里痢鐃緒申鐃緒申鐃緒申弔鐃緒申鐃瞬ルク鐃緒申奪鐃緒申鐃緒申討盖動鐃緒申鐃緒申直鐃緒申鐃緒申鐃緒申鐃暑。鐃緒申鐃緒申鐃緒申廛箸里泙泙鐃緒申塙圓鐃緒申鐃緒申鐃緒申鐃緒申疋鐃緒申廛鐃祝わ申鐃緒申肇鐃緒申瓠o申鐃緒申鐃緒申叩鐃

鐃緒申鐃盾そ鐃緒申HotCocoa鐃叔ワ申鐃竣ワ申鐃緒申鐃塾わ申鐃緒申鐃緒申亮鐃緒申鐃重鐃緒申鐃緒申覆鐃緒申里如鐃緒申發鐃緒申鐃緒申鐃緒申調鐃駿わ申里鐃緒申未糞鐃緒申鐃祝¥申鐃緒申鐃緒申鐃瞬わ申鐃暑こ鐃夙にわ申鐃銃¥申鐃緒申鐃駿わ申鐃緒申直鐃祝デ¥申鐃緒申鐃夙わ申鐃緒申動鐃緒申鐃処う鐃祝削申鐃縦常申鐃緒申鐃緒申鐃緒申鐃熟鰹申鐃粛常申蠅鐃緒申鐃獣て¥申namakefs鐃緒申鐃殉ワ申匹鐃獣¥申鐃緒申鐃NamakeFS鐃緒申/Volumes鐃塾駕申鐃祝マワ申鐃緒申箸鐃緒申鐃銃¥申Finder鐃緒申鐃緒申NamakeFS鐃薯アワ申泪鐃緒申鐃夙わ申鐃銃わ申鐃緒申namakefs鐃塾プワ申鐃緒申鐃緒申鐃緒申鐃塾も終了鐃緒申鐃銃わ申鐃緒申鐃処う鐃祝でわ申鐃緒申鐃緒申鐃処し鐃処し鐃緒申

鐃緒申鐃純あ鐃緒申鐃緒申鐃緒申速AtomPub鐃叔種申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃出わ申鐃銃みよう鐃緒申鐃夙思っわ申atomutil鐃薯インスト¥申鐃暑し鐃銃みわ申鐃緒申鐃緒申鐃宿わ申鐃祝もこ鐃曙が動鐃緒申鐃淑わ申鐃緒申鐃緒申鐃盾そ鐃緒申atomutil鐃緒申1.9鐃熟でわ申鐃緒申鐃緒申動鐃緒申鐃塾わ申鐃獣て醐申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿緒申鐃緒申鐃緒申妊鐃緒申鐃緒申鐃緒申蠅件申瞳觜緒申鐃縮鐃淑わ申鐃緒申鐃緒申鼻鐃緒申泙鐃緒申鐃緒申鐃宿わ申鐃緒申里任鐃緒申泙鐃緒申鐃緒申鐃緒申覆鐃緒申里辰討鐃緒申襦o申任癲MacRuby鐃緒申鐃緒申箸鐃緒申鐃緒申箸鐃緒申鐃緒申鐃宿わ申鐃盾そ鐃緒申鐃緒申鐃緒申硫媾鐃祝まわ申鐃緒申達鐃緒申鐃銃わ申鐃淑わ申鐃緒申鐃緒申鐃純い鐃緒申鐃緒申

鐃緒申鐃緒申紊縁申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申蝋鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鼎法鐃緒申屬鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申戮鐃淑わ申鐃緒申鐃緒申匹鐃淑わ申鐃祝」わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃准わ申鐃緒申鐃夙種申分鐃祝醐申鐃緒申聞鐃緒申鐃緒申鐃銃¥申鐃夙りあ鐃緒申鐃緒申鐃叔わ申net/http鐃緒申rexml/document鐃叔ワ申鐃緒申鐃俊ワ申文鐃緒申鐃緒申鐃緒申鐃緒申鐃銃みる。鐃緒申鐃緒申鐃緒申鐃初何鐃銃わ申鐃夙わ申鐃緒申鐃盾う鐃緒申鐃塾誌申鐃緒申鐃叔ワ申鐃緒申鐃緒申茵REXML::Document.new(res.body)鐃夙わ申鐃緒申鐃銃みわ申鐃初、鐃緒申鐃緒申鐃叔もう鐃緒申鐃緒申鐃暑。鐃緒申鐃順。鐃宿ワ申鐃緒申鐃緒申肇鐃緒申屮鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申鐃藷。わ申鐃緒申鐃緒申atomutil鐃叔わ申鐃緒申鐃塾ワ申鐃緒申鐃緒申廛箸鐃銃逸申鐃緒申鐃緒申討澆鐃緒申蕁鐃出てるエ鐃初ー鐃緒申鐃叔わ申鐃塾¥申鐃緒申鐃淑みわ申CRuby鐃緒申1.9.1鐃叔はわ申鐃緒申鐃緒申鷁燭鐃緒申鐃緒申鐃緒申覆鐃銃逸申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申抜鐃緒申鐃緒申未鐃緒申動鐃緒申鬚垢鐃塾は鰹申認鐃術み¥申鐃春わ申鐃獣わ申鐃緒申

鐃緒申鐃緒申鐃緒申鐃緒申鐃盾う鐃緒申鐃緒申鐃緒申鐃REXML鐃緒申鐃夙わ申鐃淑わ申鐃夙わ申鐃緒申鐃緒申辰鐃緒申鐃縦常申匹鐃緒申鐃緒申隼廚鐃緒申鐃緒申鐃MacRuby鐃祝はまわ申鐃緒申鐃曙が鐃緒申鐃暑!鐃緒申鐃緒申鐃緒申鐃緒申NSXMLDocument鐃淑鐃Cocoa鐃塾ワ申鐃初ス鐃祝¥申鐃緒申鐃緒申鐃緒申鐃宿わ申鐃緒申鐃熟わ申鐃緒申鐃春わ申鐃緒申鐃夙思わ申鐃殉わ申鐃緒申鐃緒申鐃緒ざ鐃緒ざMacRuby鐃叔書いてわ申里砲鐃舜わ申蕕MacFUSE鐃緒申鐃NSXMLDocument鐃緒申鐃緒申箸辰討襪誌申鐃緒申如鐃緒申福鐃緒申鐃夙わ申Ruby鐃獣ぽわ申文法鐃緒申Objective-C鐃塾ワ申鐃緒申鐃宿と駕申鐃緒申鐃緒申鐃緒申討鐃緒申襦o申發鐃淑んかわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申転鐃楯な器申鐃緒申鐃楯わ申覆鐃緒申鐃緒申匹癲鐃夙りあ鐃緒申鐃緒申net/http鐃緒申WSSE認鐃准わ申鐃殉わ申鐃緒申GET鐃緒申鐃銃わ申鐃緒申atom鐃塾デ¥申鐃緒申鐃緒申NSXMLDocument鐃祝随申鐃緒せ鐃緒申个覆鐃夙わ申必鐃竣な常申鐃緒申麓鐃緒申鐃夙わ申鐃緒申鐃殉ででわ申鐃緒申鐃緒申鐃処し鐃緒申鐃緒申鐃緒申鬚気辰鐃緒申離鐃緒申泪鐃宿わ申鐃夙み刻申鐃緒申弌帖鐃

segmentation fault 鐃縦わ申鐃夙¥申鐃緒申

鐃淑わ申鐃緒申鐃緒申匹鐃緒申錣鐃緒申泙鐃緒申鐃銃逸申鐃緒申討襯鰹申鐃緒申鐃 + 動鐃緒申鐃銃るコ鐃緒申鐃緒申 = 鐃緒申鐃緒申鐃春ワ申鐃緒申鐃盾う鐃緒申譴随申鐃術トワ申奪鐃緒申鐃縦¥申

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃MacRuby鐃熟ぶっわ申鐃純け鐃出ワ申鐃夙わ申鐃緒申鐃緒申箸鐃緒申鐃渋随申鐃緒申鐃緒申鐃緒申泙鐃緒申个討鐃緒申鐃塾で¥申鐃殉わ申鐃緒申鐃緒申任匹鐃緒申鐃緒申鐃緒申鐃緒申茲鐃夙わ申鐃緒申無鐃緒申鐃叔わ申鐃緒申流鐃出¥申RubyKaigi鐃塾ワ申鐃獣ワ申鐃緒申鐃叔鰹申発鐃峻種申鐃緒申鐃Crazy"鐃夙醐申鐃緒し鐃潤た鐃緒申鐃緒申鐃緒申鐃暑ぜ鐃緒申MacRuby0.5鐃緒申鐃緒申鐃緒申鐃淳わ申鐃緒申鐃祝わ申鐃緒申鐃緒申鐃淑ワ申鐃緒申鐃緒申鐃ObjC鐃緒申Ruby鐃緒申融鐃順が鐃叔わ申鐃緒申鐃純う鐃獣てわ申鐃緒申鐃瞬駕申能鐃緒申鐃竣には器申鐃峻わ申鐃銃わ申鐃緒申里鐃緒申鐃緒申匹癲鐃殉わ申鐃潤い鐃淳わ申鐃緒申鐃粛…¥申

鐃緒申鐃銃どわ申鐃緒申鐃処う鐃緒申MacRuby鐃祝随申鐃緒申鐃所す鐃緒申里呂鐃緒申鐃熟わ申鐃緒申燃擇鐃緒申鐃緒申鐃緒申任呂鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃淑わ申鐃夙わ申鐃銃わ申鐃緒申鐃FUSE鐃塾わ申鐃緒申忘鐃緒申鐃緒申磴わ申鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申箸蠅鐃緒申鐃緒申ObjC鐃叔書くわ申鐃淑わ申鐃緒申

鐃緒申鐃淑わ申鐃緒申AtomPub鐃緒申WebDAV鐃緒申鐃獣をしてて¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申API鐃緒申WebDAV鐃夙わ申鐃銃種申鐃緒申鐃緒申鐃銃わ申鐃緒申侫鐃緒申鐃緒申襯件申鐃緒申謄鐃夙わ申鐃銃マワ申鐃緒申箸任鐃緒申鐃緒申鐃緒申鬚っわ申鐃緒申鐃緒申覆鐃緒申鐃緒申任鐃緒申鐃緒申鐃緒申鐃楯なんじわ申覆鐃緒申里鐃緒申覆匹鐃緒申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃夙なわ申鐃緒申鐃緒申鐃叔わ申vim鐃叔居申鐃緒申鐃書いわ申:w鐃緒申鐃緒申討鐃緒申鐃緒申mv鐃緒申鐃緒申鐃初カ鐃銃ワ申鐃緒申鐃術わ申辰鐃rm鐃叔居申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃とわ申鐃緒申鐃緒申鐃曙胸鐃縦わ申燹鐃緒申鐃緒申覆鐃緒申辰鐃縮器申弔鐃準し鐃緒申鐃駿わ申諭鐃緒申覆鐃銃考わ申鐃緒申鐃夙わ申鐃緒申鐃叔ふと居申鐃春わ申鐃緒申鐃緒申鐃緒申鐃暑じ鐃緒申鵝▲侫鐃緒申鐃緒申襯件申鐃緒申謄爐醐申鐃淑わ申鐃緒申里鬟ライ鐃緒申鐃緒申鐃渋鐃叔フワ申鐃緒申鐃暑シ鐃緒申鐃銃ワ申砲鐃緒申鐃緒申磴鐃緒申鐃夙み¥申

鐃緒申鐃緒申鐃緒申鐃緒申FUSE鐃緒申鐃緒申Filesystem in Userspace鐃緒申鐃緒申鐃緒申鐃緒申鐃初そ鐃塾わ申鐃緒申遊鐃緒申任澆茲鐃夙は思ってわ申鐃緒申里鐃緒申辰縫優鐃緒申鐃竣わ申鐃春わ申鐃淑わ申鐃獣わ申鐃塾で種申鐃縦わ申鐃銃なわ申鐃獣わ申鐃塾わ申鐃緒申鐃宿¥申BlogFS鐃緒申鐃緒申鐃緒申鐃宿わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申辰箸鐃獣てみるこ鐃夙にわ申鐃緒申鐃緒申

Ruby鐃叔わ申鐃緒申鐃緒申

FUSE鐃獣てフワ申鐃緒申鐃暑シ鐃緒申鐃銃ワ申鐃暑く鐃初い鐃緒申鐃緒申鐃緒申鐃獣わ申C鐃夙わ申C++鐃夙わ申鐃叔書くわ申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申箸椶鐃緒申鐃竣ってわ申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申縫魯鐃緒申鐃緒申鐃緒申鐃渋器申鐃夙表鐃緒申鐃Ruby鐃叔種申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃獣てわ申鐃緒申覆鐃緒申鐃緒申鐃緒申鐃hatenafs鐃熟わ申鐃緒申鐃緒申鐃緒申鐃緒申Perl鐃緒申鐃獣わ申鐃獣わ申鐃淑わ申鐃緒申鐃夙思わ申鐃出わ申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申併箸辰討鐃塾で書けわ申福鐃緒申擇鐃緒申鐃緒申鐃緒申辰鐃緒申鐃Ruby鐃叔わ申FUSE鐃塾ライ鐃瞬ワ申蠅鐃緒申鐃緒申蕕件申鐃緒申鐃緒申茲件申鐃

鐃緒申make鐃叔ワ申鐃緒申鐃緒申鐃緒申鐃藷ー¥申Ruby鐃緒申fusefs鐃緒申鐃緒申鐃所が鐃緒申鐃緒申里鐃緒申發件申鐃淑わ申鐃緒申MacFUSE鐃緒申鐃緒申鐃初そ鐃塾わ申鐃緒申鐃緒申鐃緒申鐃塾わ申覆鐃緒申鐃緒申覆鐃fusefs鐃塾常申鐃緒申鼎鐃緒申里鐃緒申鐃緒申任討鐃緒申覆鐃緒申福鐃緒申鐃緒申鐃緒申鐃緒申櫃鐃緒申鐃緒申鐃緒申筺o申匹鐃緒申鐃緒申鐃緒申鐃藷かね¥申

鐃粛わ申鐃MacRuby鐃緒申鐃藷がわ申鐃暑じ鐃緒申覆鐃緒申鐃

Ruby鐃緒申鐃緒申FUSE鐃緒申箸鐃緒申鐃祝¥申鐃盾う鐃緒申鐃緒申調鐃駿わ申箸鐃緒申鐃Perl鐃緒申鐃緒申箸鐃緒申鐃祝¥申鐃縦器申戮鐃夙わ申鐃緒申鐃緒申鐃獣わ申鐃祝進わ申任鐃緒申匹鐃緒申辰鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申辰箸鐃緒申鐃准わ申鐃緒申法鐃祝居申鐃緒申鐃春わ申鐃緒申鐃緒申MacFUSE鐃薯インスト¥申鐃暑す鐃緒申鐃MacFUSE.framework鐃緒申鐃緒申鐃暑。鐃銃わ申鐃夙は¥申鐃夙りあ鐃緒申鐃緒申ObjC鐃緒申鐃緒申牢鐃獣縁申忙箸鐃緒申襦ObjC鐃叔書くのはまわ申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申直AtomPub鐃塾逸申鐃緒申鐃夙わ申文鐃緒申鐃緒申僚鐃緒申鐃緒申箸鐃緒申鐃緒申櫃鐃緒申鐃緒申鐃緒申鐃緒申襦o申鐃緒申譟鐃緒申鐃緒申辰鐃緒申圓董鐃ObjC鐃塾フレー鐃緒申錙種申鐃緒申鐃緒申鐃緒申鐃獣てわ申鐃夙は¥申MacRuby鐃緒申鐃緒申箸鐃緒申襪醐申鐃淑わ申鐃緒申鐃緒申

$ ls /Library/Frameworks
. .. MacFUSE.framework MacRuby.framework UIM.framework
$ macruby -v
MacRuby version 0.5 (ruby 1.9.0) [universal-darwin10.0, x86_64]
$ macirb
irb(main):001:1 > framework 'MacFUSE'
=> true

鐃緒申敵鐃緒申鐃緒申鐃緒申鐃銃る!

鐃夙りあ鐃緒申鐃緒申HelloFS

MacFUSE鐃塾ワ申鐃緒申廛鐃鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申屮鐃緒申鐃 Lua鐃叔フワ申鐃緒申鐃暑シ鐃緒申鐃銃ワ申鐃緒申鐃緒申鐃緒申鐃処う(MacFUSE鐃緒申)鐃竣わ申鐃緒申鐃緒申鮖温佑砲箸蠅鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃みわ申鐃緒申

鐃緒申鐃緒申鐃macruby鐃緒申鐃殉ワ申匹納孫圓鐃緒申襦o申鐃緒申覆澆鐃Snow Leopard+MacRuby 0.5beta1+MacFUSE 2.0.3鐃叔わ申辰討襪縁申鼻鐃Leopard+MacRuby 0.4鐃叔わ申動鐃緒申鐃夙は思わ申鐃緒申未鐃緒申認)鐃緒申

$ macruby namakefs.rb &
$ ls /Volumes/NamakeFS
honne.txt
$ cat /Volumes/NamakeFS/honne.txt
鐃緒申鐃緒申鐃塾わ申鐃緒申眠鐃緒申鐃緒申鐃緒申

OK鐃緒申OK鐃緒申鐃緒申鐃緒申茵o申鐃緒申覆澆砲鐃緒申鐃緒申鐃緒申鐃緒申Finder鐃緒申砲鐃NamakeFS鐃叔ワ申鐃緒申鐃緒申鐃緒申鐃殉ワ申鐃緒申箸鐃緒申鐃銃¥申鐃緒申鐃緒申鐃緒申Cocoa鐃緒申鐃竣ワ申箸鐃緒申鐃緒申鐃叔も開鐃緒申鐃暑。鐃竣っわ申鐃緒申鐃緒申単鐃緒申鐃獣わ申鐃緒申HotCocoa鐃叔ワ申鐃竣リ化鐃緒申鐃緒申鐃純え鐃緒申鐃緒申鐃循でわ申鐃緒申鐃緒申砲鐃緒申鐃塾わ申擇鐃緒申鐃緒申鐃緒申侫鐃緒申鐃緒申襯件申鐃緒申謄鐃緒申鐃緒申亮鐃緒申里鐃ObjC鐃塾削申法鐃緒申則鐃緒申必鐃竣わ申鐃緒申鐃暑け鐃宿¥申鐃緒申離鐃緒申鐃緒申奪鐃緒申鐃Ruby鐃叔書けるか鐃初、Ruby鐃緒申AtomPub鐃塾ライ鐃瞬ワ申鐃緒申箸鐃緒申襪ObjC鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃楯わ申文鐃緒申鐃緒申僚鐃緒申鐃緒申發居申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申襦

MacRuby鐃叔わ申鐃獣てのわ申鐃殉わ申鐃緒申鐃緒申鐃夙醐申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申直鐃緒申発鐃縦駈申鐃夙わ申鐃銃はまわ申鐃緒申鐃曙げ鐃緒申鐃緒申鐃緒申RubyCocoa鐃叔わ申鐃純い鐃緒申鐃獣わ申鐃獣ではわ申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃粛わ申鐃縦まわ申鐃緒申鐃緒申鐃獣わ申鐃緒申

鐃緒申鐃緒申泙鐃舜件申鐃淑わ申鐃緒申鐃宿¥申Lua鐃緒申鐃春鰹申鐃夙わ申鐃緒申覆鐃緒申匹瓩随申錙o申泙鐃緒申鐃叔わ申辰討襪鰹申箸呂泙鐃緒申ObjC鐃緒申鐃緒申鐃緒申辰討里發鐃暑け鐃宿¥申鐃緒申鐃緒申辰鐃Lua鐃盾い鐃緒申鐃獣てみよう鐃緒申鐃緒申鐃初。

表鐃緒申鐃縮わ申任鐃緒申鐃緒申鐃Ruby Freaks Lounge鐃叔居申鐃緒申鐃緒申颪わ申鐃銃わ申鐃緒申鐃緒申鐃緒申鐃殉わ申鐃緒申鐃緒申

Ruby Freaks Lounge鐃緒申鐃緒申23鐃緒申Rack鐃夙は駕申鐃緒申

Rack鐃獣てわ申鐃盾そ鐃盾何鐃淑の¥申鐃緒申鐃叔わ申鐃緒申覆僚鐃緒申茲随申痢鐃緒申澆鐃緒申鐃緒申鐃緒申辰鐃緒申単鐃祝¥申鐃藷ー¥申誰鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申覆鐃緒申鐃鐃夙わ申鐃緒申鐃緒申覆鐃緒申鐃鐃夙わ申鐃出っわ申鐃緒申辰討鐃緒申覆鵬鐃緒申鐃緒申鐃緒申椶糞鐃緒申鐃緒申颪い討鐃緒申鐃夙わ申鐃緒申鐃獣わ申鐃循は¥申鐃緒申鐃緒申鐃緒申鐃旬わ申覆鐃緒申鐃緒申鐃出わ申鐃緒申覆鐃緒申鐃緒申鐃緒申鐃

Rack鐃獣わ申Rails鐃緒申鐃夙わ申Sinatra鐃緒申鐃夙わ申鐃緒申鐃緒申戮鐃夙マニワ申鐃獣ワ申鐃緒申鐃緒申鐃緒申(鐃緒申名鐃駿わ申鐃夙わ申鐃緒申鐃緒申鐃熟使わ申道鐃緒申鐃緒申鐃緒申)鐃緒申鐃夙思わ申鐃緒申鐃緒申鐃緒申鼻鐃粛緒申朿鐃緒申鐃夙随申鐃緒申鐃緒申匹鐃緒申憧鬚靴鐃緒申鐃緒申鐃宿常申鐃緒申鐃緒申蓮鐃Perl鐃緒申鐃緒申鐃緒申PSGI鐃緒申鐃緒申鐃緒申紊鐃獣てるし鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申魯鐃緒申鐃緒申潺鵐阿鐃緒申匹鐃緒申辰鐃緒申里鐃緒申鐃竣と醐申鐃獣てわ申鐃緒申鐃宿¥申鐃緒申鐃緒申鐃祝わ申鐃緒申鐃緒申鐃淑¥申鐃緒申鐃緒申鐃緒申辰鐃PSGI鐃祝随申鐃曙た鐃塾わ申鐃殉わ申鐃緒申鐃緒申鐃緒申Ruby鐃塾わ申鐃夙ばっわ申鐃叔常申鐃緒申鐃緒申Perl鐃緒申鐃駿駈申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃鐃粛わ申Perl鐃順好鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申茵o申曠鐃夙¥申鐃緒申鐃緒申鐃緒申鐃緒申淵鐃緒申茵

鐃緒申鐃淑みに削申鐃処週鐃祝なっわ申鐃緒申鐃緒申圓鐃緒申悩椶鐃緒申鐃銃わ申呂鐃緒申鐃Rack鐃塾ミドルウ鐃緒申鐃緒申鐃緒申鐃獣とわ申鐃緒申予鐃所し鐃銃わ申(予鐃緒申辰討鐃緒申箸呂弔泙鐃殉わ申鐃殉わ申鐃書き上げ鐃銃なわ申鐃緒申鐃緒申鐃緒申匹鐃緒申)鐃塾で¥申鐃緒申鐃准わ申鐃淳に¥申

鐃淑わ申任皀随申鐃緒申潺淵鐃叔器申鐃暑さ鐃緒申鐃緒申鐃緒申鐃緒申

鐃叔駈申Objective-C鐃薯お仕誌申鐃叔書いてわ申鐃所す鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申垪鐃緒申鐃緒申鐃緒申覆鐃緒申蕕醐申鐃淑わ申鐃銃わ申鐃緒申鐃緒申鐃緒申鐃縮書くよう鐃祝なってわ申鐃緒申鐃Xcode鐃緒申鐃純か鐃獣わ申鐃緒申瓩鐃緒申里如鐃ObjC鐃出縁申鐃術みわ申ctags鐃薯インスト¥申鐃暑し鐃緒申鐃緒申xcodebuild鐃緒申茲件申覆鐃獣¥申鐃緒申討鐃緒申鐃緒申Rakefile鐃書いわ申鐃所し鐃緒申vim鐃叔削申箸鐃緒申鐃縦駈申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃iPhone鐃緒申鐃淳ワ申譟種申鐃緒申鐃銃逸申鐃緒申鐃緒申鐃緒申侫鐃緒申鐃緒申鐃宿わ申鐃緒申蠅刻申鐃塾わ申Xcode鐃熟鰹申鐃緒申鐃獣ぱなわ申鐃淑わ申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃叔わ申颪のわ申vim鐃叔わ申鐃緒申茲鐃祝なっわ申鐃緒申鐃緒申分鐃准になっわ申鐃緒申

鐃書くのは楽になっわ申鐃緒申鐃宿¥申鐃緒申鐃緒申鐃淑わ申蛤鐃緒申戮鐃銃逸申鐃塾醐申鐃准もい鐃緒申鐃緒申鐃緒申鐃緒申鐃淳ワ申譟種申鐃緒申鐃銃逸申鐃緒申討鐃緒申譴鰹申鐃緒申鐃庶し鐃銃ってのわ申鐃熟種申鐃熟種申鐃緒申鐃緒申鐃淑ってわ申鐃暑。鐃緒申鐃盾そ鐃緒申謄鐃緒申箸鐃書かなわ申鐃叔ワ申鐃竣リ開発鐃夙わ申鐃純け鐃銃わ申鐃暑。鐃緒申鐃緒申iPhoneSDK鐃叔わ申OCUnit鐃緒申鐃夙わ申鐃緒申里如鐃緒申薀わ申屮鐃緒申箸鐃緒申鐃緒申擇鐃出わ申鐃緒申鐃緒申分鐃緒申鐃縮プワ申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃准わ申个鐃緒申鐃緒申鐃叔ワ申縫奪肇謄鐃緒申箸鐃書くわ申鐃夙にわ申鐃暑。OCUnit鐃緒申UnitTest Bundle鐃獣てわ申鐃緒申鐃銃ワ申廛譟種申箸鐃緒申儖佞鐃緒申討鐃緒申鐃銃わ申里如鐃緒申廛鐃緒申鐃緒申鐃緒申鐃緒申箸鐃UnitTest鐃塾ワ申鐃緒申鐃緒申鐃獣トわ申鐃宿加わ申鐃銃わ申鐃緒申鐃俊ワ申匹鐃緒申鐃緒申鐃緒申鐃叔テワ申鐃夙わ申鐃緒申鐃緒申茲鐃祝なってわ申鐃暑。鐃緒申鐃緒申覆鐃rake鐃緒申鐃緒申鐃緒申単鐃祝実行でわ申鐃銃わ申鐃緒申鐃緒申

鐃宿わ申覆鐃緒申鐃

鐃緒申鐃緒申OCUnit鐃叔のテワ申鐃夙わ申鐃獣わ申鐃緒申鐃夙わ申鐃緒申佑鐃緒申里辰討鐃夙思わ申鐃緒申鐃宿¥申OCUnit鐃塾実行件申未呂鐃緒申鐃淑に醐申鐃竣わ申鐃淑わ申鐃緒申

ocunitbuild

鐃宿わ申襪鐃獣つ¥申鐃獣¥申鐃緒申鐃緒申鐃緒申鵑海鐃緒申Xcode鐃緒申任鐃宿緒申鐃緒申鐃緒申鐃緒申里如鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃塾わ申鐃緒申鐃緒申鐃緒申UnitTest Bundle鐃塾ワ申鐃緒申鐃緒申鐃獣トわ申咼鐃宿わ申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃暑カ鐃緒申鐃緒申鐃準ス鐃緒申鐃緒申廛箸鐃淑鐃叔わ申鐃祝ょご鐃祝ょす鐃緒申个鐃緒申鐃緒申辰討鐃緒申鐃緒申个鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申同鐃緒申Xcode鐃塾プワ申鐃緒申鐃緒申鐃緒申鐃夙わ申他鐃塾人わ申鐃緒申鐃緒申鐃獣わ申鐃所す鐃暑こ鐃夙わ申有鐃緒申鐃緒申鐃緒申里任鐃緒申鐃殉りそ鐃獣わ申鐃緒申鐃獣種申覆鐃緒申箸鬚靴鐃緒申鐃緒申覆鐃緒申鐃Xcode鐃緒申妊咼鐃宿わ申鐃緒申鐃夙わ申鐃熟わ申鐃緒申呂鐃緒申鐃叔わ申鐃緒申鐃塾わ申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃獣てわ申鐃塾ままなわ申咼鐃宿わ申鐃銃テワ申鐃夙まわ申鐃緒申鐃初せ鐃銃わ申鐃緒申鐃処う鐃祝なってわ申里法鐃緒申鐃緒申鐃緒申妊咼鐃宿わ申鐃銃パッワ申鐃緒申鐃緒申鐃緒申鐃銃テワ申鐃夙わ申鐃緒申表鐃緒申鐃緒申鐃緒申Rake鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申里鐃淑わ申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃緒申鐃塾常申鐃緒申鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申櫃砲覆辰瞳鐃宿どっわ申鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃緒申

鐃緒申鐃宿わ申鐃淑ら見鐃竣わ申鐃緒申鐃銃わ申鐃出わ申鐃緒申鐃塾でわ申

鐃夙わ申鐃緒申鐃緒け鐃叔¥申xcodebuild鐃緒申孫圓鐃緒申鐃緒申鐃縮わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申表鐃緒申鐃緒申鐃暑ス鐃緒申鐃緒申廛判颪い鐃緒申鐃緒申鐃緒申辰鐃緒申離謄鐃緒申箸鐃緒申鐃緒申鐃淑器申鐃緒申鐃緒申表鐃緒申鐃緒申鐃緒申襦

rocu

鐃緒申鐃緒申鐃緒申鐃緒申鐃塾でわ申鐃緒申鐃緒申鐃緒申茵鐃緒申鐃緒申鐃緒申鐃緒申鐃塾で¥申鐃出随申鐃祝なってわ申肇謄鵐轡鐃緒申紊鐃緒申鐃緒申鐃緒申鐃

鐃緒申鐃淑みに¥申STAssert鐃熟¥申NSAssert鐃熟のワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃巡、鐃渋行誌申鐃塾ワ申鐃初ー鐃淑どわ申鐃緒申鐃緒申判鐃緒申鐃緒申塀鐃緒申辰討鐃緒申鐃淑わ申鐃緒申鐃縮o申覆鐃)鐃緒申fail鐃緒申鐃緒申鐃緒申箸鐃緒申鐃淑器申鐃緒申鐃祝なる。

rocu_fail

STAssert鐃叔わ申鐃緒申鐃暑、鐃縦まわ申謄鐃緒申肇鐃緒申鐃緒申鐃緒申粘鐃緒申圓鐃緒申鐃緒申鐃縮わ申鐃出てなわ申鐃夙わ申鐃緒申鐃瞬誌申鐃叔ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃塾ワ申奪鐃緒申鐃緒申鐃緒申鐃出わ申鐃緒申鐃緒申鐃竣ワ申鐃緒申離鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任劼辰鐃緒申鐃緒申辰討鐃夙わ申鐃熟駕申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申縫鐃藷タワ申鐃準エ鐃初ー鐃叔実刻申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申屬鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申覆澆鐃緒申未房鐃緒申鐃緒申妊謄鐃緒申肇帖鐃緒申鐃緒申辰鐃緒申錣縁申鐃緒申鐃淑わ申鐃塾で(わ申鐃緒申鐃殉わ申xcodebuild鐃渋行誌申鐃塾緒申鐃熟わ申侫鐃緒申襯随申鐃緒申討鐃緒申鐃緒申鐃祝¥申鐃緒申鵐織鐃緒申爛鐃初ー鐃緒申鐃宿わ申鐃叔出てるか鐃殉ではわか鐃緒申覆鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申里鐃Xcode鐃塾デバッワ申鐃夙わ申鐃叔わ申辰討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃NSAssert鐃熟のマワ申鐃緒申鐃緒申箸鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申里如鐃緒申鐃緒申鐃緒申鐃緒申抔鐃縮鐃祝わ申辰討鐃緒申鐃緒申鐃緒申鐃緒申佑慮鐃緒申擇箸鐃緒申儷鐃重鐃緒申NSAssert鐃夙わ申鐃夙わ申鐃緒申鐃夙思わ申鐃緒申OCUnit鐃塾実行誌申鐃祝わ申NSLog鐃緒申print debug鐃獣てわけ鐃祝わ申圓鐃緒申覆鐃緒申鐃緒申佑鐃緒申鐃

鐃緒申鐃鐃緒申鐃殉ワ申匹砲鐃緒申鐃gist鐃祝上げ鐃銃みわ申鐃緒申鐃緒申鐃春わ申表鐃緒申鐃祝わ申鐃緒申砲鐃Term::ANSIColor鐃緒申鐃緒申鐃緒申里鐃緒申鐃緒申奸鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃縮居申鐃緒申討發わ申鐃緒申鐃緒申箸鐃緒申鐃緒申魯鐃緒申鐃緒申鐃緒申匹鐃夙わ申鐃緒申鐃夙思わ申鐃殉わ申鐃緒申鐃緒申鐃緒申Rakefile鐃緒申鐃緒申暴颪い討鐃緒申里鐃夙器申鐃緒申个鐃緒申討鐃緒申討鐃獣つわ申鐃叔ワ申鐃殉ワ申匹砲鐃緒申鐃緒申鐃縦なので¥申鐃緒申鐃緒申動鐃緒申慮鐃緒申擇箸鐃緒申鐃緒申討覆鐃緒申鐃緒申覆鵑ツ¥申鐃暑郡鐃祝まとわ申茲鐃緒申鐃夙思っわ申鐃緒申鐃緒申鐃緒申足鐃緒申鐃緒申鐃緒申辰鐃緒申里如鐃

表鐃緒申鐃縮わ申鐃緒申鐃緒申Ruby鐃緒申鐃2009鐃祝誌申鐃獣わ申鐃銃まわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃旬は誌申鐃獣でわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃旬の醐申鐃緒申鐃緒申鐃醇か鐃緒申抜鐃緒申鐃淑わ申鐃純い鐃緒申鐃淑わ申鐃獣わ申鐃緒申任鐃緒申鐃獣わ申鐃緒申鐃塾なわ申鐃獣わ申鐃緒申任鐃緒申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃緒申鐃緒申鐃祝楽わ申鐃緒申鐃獣わ申鐃塾でつわ申弔鐃夙器申鐃循わ申

鐃殉わ申鐃緒申鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃獣フに器申鐃春でわ申鐃緒申鐃緒申年鐃盾あ鐃塾居申鐃熟のワ申鐃駿ワ申箸鐃藷すのわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃術わ申鐃獣わ申鐃夙思わ申鐃緒申任鐃緒申鐃緒申鐃緒申匹離鐃緒申鐃緒申奪佞鐃緒申鐃緒申鐃春ワ申鐃宿リー鐃緒申鐃緒申鐃緒申寧鐃緒申鐃出縁申鐃緒申鐃銃わ申鐃緒申董鐃緒申鐃緒申鐃緒申澆鐃緒申鐃緒申鐃緒申鐃祝楽わ申鐃緒申鐃緒申鐃祝わ申鐃銃わ申鐃塾わ申鐃緒申鐃緒申的鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑¥申鐃緒申鐃緒申鐃緒申鐃祝わ申鐃緒申鐃緒申佑任鐃緒申鐃緒申鐃

Reject鐃緒申鐃銃駕申

鐃緒申鐃緒申鐃旬は仕誌申鐃緒申抜鐃緒申鐃緒申鐃淑わ申鐃獣わ申&鐃緒申鐃銃駕申離鐃緒申鐃緒申奪箸鐃緒申鐃獣てなわ申鐃獣わ申鐃塾で¥申Reject鐃緒申鐃銃駕申鐃祝誌申鐃獣¥申鐃淑んかみわ申鐃銃映鐃緒申粉鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申福鐃RubyKaigi鐃祝緒申鐃獣てわ申里法鐃Scala鐃緒申鐃緒申鐃緒申鐃緒申廖鐃Objective-C鐃緒申鐃緒申鐃緒申鐃緒申廚箸鐃緒申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃所し鐃銃わ申w

鐃緒申鐃緒申鐃旬以降わ申@repeatedly鐃緒申@koduki鐃緒申鐃緒申鐃夙逸申鐃祝駕申襪鰹申箸鐃渋随申鐃緒申辰鐃緒申鐃緒申鼻鐃緒申擇鐃緒申鐃緒申辰鐃緒申鐃緒申辰忙郵鐃夙わ申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申討鐃緒申達鐃夙わ申鐃緒申鐃緒申鐃醇々鐃書うわ申鐃夙わ申覆鐃緒申里如鐃緒申鐃緒申鼎糞鐃緒申鐃祝会えてよか鐃獣わ申鐃叔わ申鐃緒申

Matz鐃純外鐃緒申鐃緒申鐃緒申鐃緒申鐃

鐃殉つわ申箸鐃緒申鐃緒申拗錣件申鐃縦鐃緒申覆鐃緒申辰鐃緒申紂¬常申鐃緒申鐃祝削申鐃銃種申鐃春わ申足鐃淳めく鐃初う鐃夙わ申鐃緒申鐃緒申鐃緒申鵬鐃緒申鐃緒申鐃出¥申Ruby鐃緒申鐃純外鐃緒申鐃緒申鐃緒申鐃緒申鐃獣わ申鐃宿わ申鐃獣わ申鐃緒申鐃緒申鐃緒申鐃緒申祿逸申鐃緒申鐃渋鐃緒申鐃緒申討覆鐃緒申鐃RubyKaigi鐃緒申鐃塾わ申鐃緒申鐃緒申鐃春ワ申鐃叔緒申了鐃緒申鐃銃わ申鐃夙わ申鐃叔わ申鐃粛¥申鐃緒か鐃緒申泙鐃緒申鐃

Mac鐃緒申Ruby鐃緒申鐃緒申

鐃緒申鐃緒申鐃旬の醐申鐃緒申3鐃緒申鐃塾わ申鐃緒申鐃緒申弔鐃緒申鐃緒申鐃緒申鐃Mac鐃緒申鐃淳のワ申鐃獣ワ申鐃緒申鐃緒申鐃獣わ申鐃塾でわ申鐃獣とわ申鐃緒申鐃祝わ申鐃緒申鐃塾わ申鐃緒申鐃宿¥申予鐃循以常申某鐃渋随申鐃緒申辰鐃緒申鐃RubyCocoa/MacRuby鐃緒申鐃緒申鐃緒申鐃駿の高さ鐃祝驚わ申鐃緒申鐃緒申鐃緒申函鐃iPhone鐃緒申RubyCocoa鐃緒申箸鐃緒申鐃緒申奪鐃緒申鐃緒申砲鐃緒申鐃緒申鐃獣o申鐃iPhone鐃緒申有率鐃緒申鐃循常申鐃緒申辰鐃緒申鐃緒申鐃緒申里曚箸鐃宿の随申達鐃緒申鐃緒申鐃遵げ鐃銃るし鐃緒申iPhone鐃塾ワ申鐃獣ワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申

MacRuby 0.5鐃緒申鐃獣はとてわ申鐃緒申鐃薯かっわ申鐃緒申鐃緒申鐃峻¥申鐃緒申鐃緒申鐃塾ワ申鐃緒申鐃藷サンさんが醐申鐃獣てわ申鐃縮り、鐃緒申0.5鐃緒申箸鐃緒申里蓮屮鐃緒申譽わ申鐃緒申鐃緒申廚箸鐃緒申鐃緒申鐃緒申鐃緒申茲鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申匹癲LLVM鐃緒申丱奪鐃緒申鐃緒申鐃宿に使っわ申AOT鐃緒申鐃緒申僖鐃緒申鐃緒申鐃緒申辰討鐃夙わ申鐃緒申YARV鐃緒申鐃緒申鐃VM鐃緒申鐃夙種申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申鄂甘鐃淑誌申澆鐃渋随申鐃緒申鐃緒申匹辰討鐃夙楽わ申鐃緒申鐃緒申鐃殉わ申鐃緒申0.5鐃緒申鐃塾環駈申鐃叔はワ申鐃緒申僖鐃緒申鐃緒申未鐃淑わ申鐃獣わ申鐃緒申鐃緒申鐃緒申匹諭帖鐃

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申廚鐃緒申鐃淑わ申鐃緒申年鐃祝醐申鐃緒申鐃緒申MacRuby鐃粛ワ申鐃叔わ申鐃術意わ申鐃夙わ申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申MacRuby鐃緒申

RejectKaigi鐃祝誌申鐃獣わ申鐃緒申

鐃淑わ申鐃緒申鐃緒申鐃緒申鐃RejectKaigi鐃祝誌申鐃獣わ申鐃銃わ申鐃殉っわ申鐃緒申鐃緒申鐃緒申鐃緒申優鐃緒申鐃DT鐃緒申鐃緒申年鐃熟常申鐃緒申鐃緒申鐃緒申鐃塾駕申鐃緒申鐃緒申鐃春わ申鐃緒申鐃淑わ申鐃緒申2鐃夙ワ申奪鐃銃縁申鐃緒申聞圈鐃緒申澆鐃緒申鐃緒申淵鐃緒申鐃緒申鐃緒申幣鐃緒申屬任鐃獣てわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣て¥申鐃緒申鐃緒申覆鐃淑わ申箸鐃緒申鐃緒申鐃緒申襦鐃夙思って誌申鐃獣わ申鐃緒申鐃塾わ申鐃緒申鐃宿¥申鐃緒申年鐃熟メイ鐃緒申鐃緒申鐃Closing鐃塾後そ鐃塾まわ申Reject鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃藷。わ申鐃緒申鐃緒申鐃叔わ申鐃緒申鐃緒申鐃淑わ申任鐃緒申鐃緒申鼻鐃緒申覆鵑みわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申任鐃緒申鐃緒申鼻鐃緒申鐃宿器申佑鐃緒申鐃処、鐃粛¥申gkbr鐃緒申

鐃緒申張鐃塾わ申鐃殉りう鐃殉わ申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申無鐃緒申鐃緒申鐃宿¥申鐃殉わ申予鐃所し鐃銃わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃曙た鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃出ってわ申蕕鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申砲鐃緒申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃順う鐃緒申鐃緒申鐃緒申鐃述¥申鐃緒申鐃淳わ申覆鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃塾プレゼ鐃緒申鐃緒申个鐃緒申觧随申鐃緒申慮鐃緒申佞蓮屬鐃緒申鐃熟ひどわ申鐃竣わ申鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申瓩誌申鐃駿わ申鐃緒申

鐃夙わ申鐃緒申鐃叔¥申鐃緒申鐃緒申辰鐃緒申鐃緒申箸覆鐃緒申yhara鐃緒申鐃緒申鐃緒申鐃緒申鬚わ申鐃緒申鐃殉わ申鐃緒申鐃緒申鐃緒申鐃峻わ申鐃緒申鐃緒申鐃峻わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃緒申鐃緒申鐃旬なのにわ申鐃緒申雰鐃緒申濃箸錣誌申討鐃緒申辰謄鐃緒申鐃緒申泪鐃緒申鵝って居申分鐃叔わ申鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃緒申鐃緒申鐃宿わ申納鐃淑鐃叔醐申鐃緒申鐃獣わ申鐃獣わ申鐃獣¥申鐃渋はわ申鐃緒申泙鐃淑刻申鐃緒申覆鐃緒申鐃叔わ申鐃緒申諭鐃緒申廚函鐃緒申匹鐃緒申鐃緒申鐃緒申任鐃初え鐃銃わ申鐃粛子¥申鐃処か鐃獣わ申鐃縦¥申鐃緒申Ruby鐃叔削申鐃緒申妙鐃淑プワ申鐃緒申鐃緒申潺鵐宛鐃緒申鐃 ~Esoteric Language~鐃竣¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃薯いのでまわ申鐃宿わ申任覆鐃緒申佑鐃緒申磴鐃緒申鐃宿わ申鐃夙思わ申鐃殉わ申鐃緒申鐃緒申鐃緒申妊鐃緒申譽鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申隼廚鐃緒申泙鐃緒申鐃緒申鐃緒申任鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣縁申任鐃緒申鐃

鐃緒申年鐃緒申

鐃緒申年鐃緒申箸砲鐃緒申鐃緒申擇鐃緒申鐃緒申辰鐃緒申里如鐃緒申鐃叔鐃熟わ申辰肇鐃緒申潺奪箸任鐃緒申鐃緒申蕕わ申鐃緒申覆隼廚辰鐃緒申鐃緒申鐃緒申譴鐃緒申鐃緒申鐃獣フなのわ申鐃緒申鐃殉わ申LT鐃叔わ申鐃緒申里鐃緒申呂錣鐃緒申覆鐃緒申鐃緒申鼻鐃緒申鐃緒申廚鐃熟種申分鐃緒申鐃緒申鐃緒申鐃緒申唸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣と楽わ申鐃緒申鐃緒申RubyKaigi鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申董鐃緒申鐃獣わ申Ruby鐃緒申鐃緒申鐃銃э申濆鐃緒申鐃叔行わ申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃淑わ申道廚辰鐃緒申鐃竣わ申覆鐃緒申辰鐃緒申鐃竣っわ申鐃所。

鐃夙ップワ申戰鐃淑モジ鐃遵ー鐃緒申筌鐃初ス鐃塾鰹申鐃祝でメソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃夙どわ申鐃淑わ申任鐃緒申腓鐃緒申鐃緒申鐃緒申鐃夙ップワ申戰鐃叔は¥申鐃潤ソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃夙デフワ申鐃緒申箸鐃 private 鐃淑メソ鐃獣ドになわ申里鐃緒申鐃緒申佞任鐃緒申鐃

01.#!/usr/bin/ruby
02.  
03.p self.class # Object
04.p self       # main
05.  
06.cmethod = self.class.private_methods
07.imethod = self.private_methods
08.  
09.def bar
10.  puts "bar method"
11.end
12.  
13.p self.class.private_methods - cmethod # ["bar"]
14.p self.private_methods       - imethod # ["bar"]

鐃緒申鐃銃わ申鐃縮わ申任鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃緒申鵐好鐃緒申鵐好瓮緒申奪匹箸鐃緒申討皀鐃初ス鐃潤ソ鐃獣ドとわ申鐃銃わ申鐃緒申鐃術でわ申鐃緒申茲鐃祝なってわ申鐃殉わ申鐃緒申

鐃緒申鐃曙が鐃緒申鐃緒申辰筏鐃緒申砲覆辰鐃緒申里鐃縦器申戮討澆泙鐃緒申鐃緒申鐃緒申匹鐃緒申鐃夙ップワ申戰鐃叔関随申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 Kernel 鐃盾ジ鐃遵ー鐃緒申鐃緒申媛辰鐃緒申鐃緒申茲鐃叔わ申鐃緒申

鐃夙ップワ申戰鐃叔メソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃緒申竜鐃銃逸申鐃緒申垰弋鐃 - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃殉わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃薯いわ申鐃夙に居申鐃春わ申鐃緒申鐃獣ぽわ申鐃緒申鐃緒申鐃緒申鐃宿わ申撚鐃緒申鐃叔緒申屬鐃緒申叩鐃緒申覆砲鐃緒申譴鰹申錣わ申廚隼廚辰鐃緒申鐃緒申鐃緒申鐃宿¥申鐃渋はわ申鐃緒申辰醗磴鐃処う鐃叔わ申鐃緒申鐃述ワ申箸鐃private_methods鐃塾逸申鐃緒申鐃緒申

#!/usr/bin/env ruby

cm = Object.private_methods
mm = Kernel.private_methods
im = self.private_methods

def hoge
end

class Object
  private
  def piyo
  end
end

module Kernel
  def fuga
  end
  module_function :fuga
end

p Object.private_methods - cm         #=> [:hoge, :piyo, :fuga]
p Kernel.private_methods - mm         #=> [:hoge, :piyo]
p self.private_methods - im           #=> [:hoge, :piyo, :fuga]

p Object.private_methods(false) - cm  #=> []
p Kernel.private_methods(false) - mm  #=> []
p self.private_methods(false) - im    #=> [:hoge, :piyo]

鐃熟わ申鐃獣わ申鐃緒申鐃緒申private_methods鐃塾逸申鐃緒申鐃熟「ワ申鐃緒申鐃術¥申鐃緒申鐃初ス鐃緒申鐃緒申兢鐃緒申鐃緒申鐃緒申瓮緒申奪匹鐃殉わ申襪鐃楯わ申鐃竣で¥申鐃叔フワ申鐃緒申箸鐃true鐃緒申false鐃祝わ申鐃緒申半辰鐃緒申鐃獣てわ申鐃夙は¥申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙にとっては「わ申鐃塾ワ申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申譴随申瓮緒申奪鼻廚鐃緒申鐃緒申鼻鐃Object鐃緒申鐃初ス鐃緒申Kernel鐃盾ジ鐃遵ー鐃緒申砲箸辰討蓮屬匹辰鐃緒申鐃緒申鐃術常申鐃緒申鐃銃わ申鐃緒申鐃潤ソ鐃獣ド」わ申鐃夙わ申鐃緒申鐃緒申鐃夙¥申鐃緒申鐃曙が鐃緒申鐃緒申鐃祝「ワ申鐃初ス鐃潤ソ鐃獣ドとワ申鐃藷スワ申鐃藷スメソ鐃獣ワ申両鐃緒申鐃緒申鐃緒申討鐃竣とわ申鐃緒申Kernel鐃盾ジ鐃遵ー鐃緒申離皀醐申紂種申鐃舜随申鐃祝なってわ申廚箸鐃緒申鐃緒申辰鐃緒申蕁鐃緒申鐃塾件申未砲呂覆鐃淑わ申鐃熟わ申鐃緒申

private_methods鐃塾逸申鐃緒申鐃淑鰹申鐃叔¥申鐃緒申鐃緒申鐃緒申鐃塾ワ申鐃緒申鐃宿と常申離鐃緒申鐃緒申匹念磴鐃緒申分鐃緒申鐃緒申鐃暑。鐃夙ップワ申戰鐃叔メソ鐃獣ドわ申鐃緒申里鐃Object鐃緒申鐃初ス鐃塾ワ申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申private鐃淑メソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃緒申里鐃銃縁申鐃緒申任鐃緒申襦鐃夙わ申鐃緒申認鐃緒申鐃叔わ申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申尊櫃里箸鐃緒申鐃Object鐃緒申鐃初ス鐃叔削申辰討澆鐃緒申鐃宿わ申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙思ってわ申辰討澆鐃緒申里鐃緒申鐃塾ワ申鐃緒申鐃宿わ申piyo鐃潤ソ鐃獣ド¥申鐃叔¥申鐃緒申辰僂鐃hoge鐃緒申piyo鐃緒申同鐃緒申鐃緒申鐃緒申鐃書いをしてわ申鐃緒申茲鐃祝醐申鐃緒申鐃暑。鐃叔もそ鐃緒申呂鐃緒申鐃緒申箸鐃緒申董鐃緒申鐃獣ぱわ申鐃塾ワ申鐃緒申鐃宿ではトップワ申戰鐃塾メソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申覆鐃緒申董鐃Object鐃緒申鐃初ス鐃塾ワ申鐃初ス鐃潤ソ鐃獣ドまででわ申鐃銃わ申鐃殉ってわ申鐃緒申茲鐃祝醐申鐃緒申鐃暑。鐃緒申鐃緒申呂覆鐃緒申鐃緒申鐃緒申鐃緒申

"鐃緒申鐃初ス"鐃獣て駕申鐃峻¥申

鐃夙わ申鐃緒申鐃叔¥申鐃緒申鐃獣わ申鐃緒申鐃初ク鐃初ス鐃緒申鐃初ス鐃夙醐申鐃獣てるけ鐃宿¥申Ruby鐃緒申鐃術醐申乃鐃緒申鐃緒申佞鐃緒申覆鐃緒申磴わ申鐃緒申覆鐃緒申鐃緒申箸鐃緒申鐃緒申襦o申鐃緒申鐃緒申OOP鐃緒申鐃術醐申箸鐃緒申討鐃"鐃緒申鐃初ス"鐃緒申"Class鐃緒申鐃初ス"鐃緒申鐃縮種申鐃獣てわ申鐃夙¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申"鐃緒申鐃初ス"鐃夙書いてわ申箸鐃緒申蓮鐃緒申鐃緒申未鐃OOP的鐃淑鰹申念鐃叔のワ申鐃初ス鐃塾わ申鐃夙わ申鐃緒申辰討鐃緒申鐃緒申鐃緒申鼻鐃鐃緒申離鐃緒申鐃緒申鐃緒申鐃緒申"Object"鐃熟ワ申鐃初ス鐃緒申鐃緒申鐃緒申里鐃塾ではなわ申鐃銃¥申鐃緒申鐃瞬は¥申"Class鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃緒申"鐃緒申鐃所、鐃緒申鐃緒申鐃"Object"鐃夙わ申鐃緒申鐃緒申鐃緒申砲鐃緒申鐃緒申鐃塾¥申鐃緒申鐃緒申鐃緒申鐃銃わ申Ruby鐃緒申鐃緒申辰討鐃緒申鐃緒申蓮鐃8鐃熟のどわ申鐃緒申鐃祝わ申鐃暑コ鐃緒申鐃緒申探鐃緒申鐃銃みわ申鐃淳わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃宿¥申鐃緒申鐃緒申鐃夙「ワ申鐃初ス名鐃夙わ申Class鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スわ申鐃所、鐃緒申鐃緒申鐃緒申鐃緒申鐃祝わ申鐃緒申鐃緒申痢廚辰鐃緒申辰鐃緒申颪い討鐃緒申襦

鐃叔¥申Ruby鐃塾ワ申鐃初ス鐃塾ツリー鐃薯見わ申鐃淳わ申鐃緒申鐃緒申"Object"鐃緒申Class鐃緒申鐃初ス鐃塾¥申"Kernel"鐃緒申Module鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スなわ申鐃緒申鐃緒申鼻鐃Class鐃緒申鐃初ス鐃緒申Module鐃緒申鐃初ス鐃塾¥申Module鐃緒申鐃初ス鐃緒申Object鐃緒申鐃初ス鐃塾ワ申鐃瞬ワ申鐃初ス鐃祝なってわ申鐃暑。鐃縦まり、鐃緒申離鐃緒申鐃緒申鐃緒申鐃叔わ申"self"鐃緒申"Object"鐃緒申"Kernel"鐃盾、鐃淳わ申鐃Object鐃緒申鐃初ス(鐃緒申鐃緒申鐃緒申鐃塾ワ申鐃瞬ワ申鐃初ス)鐃塾ワ申鐃藷スワ申鐃緒申鐃夙醐申鐃緒申鐃暑。鐃緒申鐃緒申鐃初、Object鐃緒申鐃初ス鐃祝ワ申鐃藷スワ申鐃藷スメソ鐃獣ドわ申鐃宿加わ申鐃緒申鐃縦わ申鐃(鐃渋際わ申鐃緒申鐃縮わ申覆鐃緒申鐃緒申鐃緒申)鐃淑のに¥申鐃緒申鐃緒申鐃緒申鐃盾ク鐃初ス鐃潤ソ鐃獣ドわ申鐃宿加わ申鐃曙た鐃処う鐃祝醐申鐃緒申鐃暑。鐃叔も、"Object"鐃緒申鐃獣わ申"鐃緒申鐃藷スワ申鐃緒申"鐃淑わ申鐃緒申鐃塾¥申鐃緒申鐃藷スワ申鐃藷スメソ鐃獣ドわ申鐃夙わ申鐃銃駕申鐃盾お鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申覆鐃緒申鐃緒申箸鐃緒申鐃緒申叩鐃緒申鐃緒申鐃

鐃夙わ申鐃緒申鐃緒申鐃夙で¥申鐃叔緒申離鐃緒申鐃緒申匹鐃緒申罎鐃薯ける。鐃夙ップワ申戰鐃緒申self鐃緒申鐃縦まわ申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙は¥申Object鐃緒申鐃初ス鐃緒申鐃塾わ申里離鐃緒申鵐好鐃緒申鵐垢覆里如鐃private_methods(false)鐃薯すわ申箸鐃緒申鐃緒申鐃Object鐃緒申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申瓮緒申奪匹鐃出わ申鐃銃わ申鐃緒申襦o申如鐃"Object"鐃緒申"Kernel"鐃緒申Object鐃緒申鐃初ス鐃塾ワ申鐃瞬ワ申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スなので¥申private_methods(false)鐃緒申鐃緒申鐃Object鐃緒申鐃初ス鐃塾メソ鐃獣ドわ申鐃獣わ申鐃暑。鐃夙わ申鐃緒申鐃緒申鐃夙でわ申鐃緒申鐃緒申

鐃殉とわ申

  • 鐃夙ップワ申戰鐃舜随申鐃緒申Object鐃緒申鐃初ス鐃緒申private鐃淑ワ申鐃藷スワ申鐃藷スメソ鐃獣ワ申(鐃夙¥申同鐃緒申鐃祝醐申鐃緒申鐃暑、多分同鐃緒申)
  • 鐃緒申鐃初ス名鐃緒申皀醐申紂種申鐃縮常申亮鐃緒申屬鐃Class鐃緒申鐃初ス鐃緒申Module鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スでわ申鐃所、単鐃淑わ申鐃緒申鐃
  • Class鐃緒申鐃初ス鐃緒申Module鐃緒申鐃初ス鐃盾元鐃緒申辿鐃緒申鐃Object鐃緒申鐃初ス
  • Object鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スメソ鐃獣ドはワ申鐃初ス鐃潤ソ鐃獣ドわ申皀醐申紂種申鐃舜随申鐃塾よう鐃祝醐申鐃緒申鐃暑、鐃淑わ申討鐃緒申箸鐃緒申咾辰鐃緒申鐃緒申鐃緒申

鐃緒申鐃緒申鐃緒申続鐃緒申鐃緒申Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog鐃祝わ申鐃獣わ申鐃緒申鐃緒申require鐃緒申include鐃祝つわ申鐃銃書いわ申鐃塾で¥申鐃緒申鐃緒申module_function鐃緒申extend鐃緒申鐃獣わ申

module_function鐃熟駕申鐃塾わ申鐃緒申砲鐃緒申鐃塾わ申

鐃殉わ申鐃緒申鐃緒申里鐃緒申鐃緒申蕕わ申鐃

  • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申鐃獣異メソ鐃獣ワ申(def self.hoge鐃夙わ申鐃緒申鐃緒申)鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申譴随申鐃塾わ申include鐃緒申鐃緒申肇鐃緒申薀刻申瓮緒申奪匹砲覆襪件申鐃MyModule.hoge鐃夙わ申鐃緒申鐃緒申鐃叔呼べわ申
  • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃叔メソ鐃獣ワ申(def fuga鐃夙わ申鐃緒申鐃緒申)鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申譴随申鐃塾わ申include鐃緒申鐃緒申肇鐃緒申鵐好鐃緒申鵐好瓮緒申奪匹砲覆襦o申鐃緒申鐃MyModule.fuga鐃夙わ申鐃緒申鐃緒申鐃叔は呼べなわ申

鐃叔¥申module_function鐃緒申鐃緒申鐃緒申鐃夙わ申鐃夙どわ申鐃淑るか鐃夙わ申鐃緒申鐃夙¥申

module_function 鐃叔ワ申鐃藷スワ申鐃藷スメソ鐃獣ドのよう鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申瓮緒申奪匹鐃緒申鐃所し鐃銃わ申鐃緒申鐃緒申函鐃緒申鐃緒申離瓮緒申奪匹鐃 include 鐃緒申鐃淑わ申鐃緒申鐃緒申 Zozom 鐃夙わ申鐃緒申名鐃緒申鐃緒申鐃瞬で呼べて¥申include 鐃緒申鐃緒申鐃緒申鐃 include 鐃緒申鐃緒申 package 鐃祝メソ鐃獣ドわ申鐃緒申鐃緒申鐃銃¥申直鐃旬呼べわ申茲鐃祝なわ申茲鐃叔わ申鐃緒申鐃緒申鐃緒申鐃叔わ申鐃粛¥申鐃緒申
Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃夙わ申鐃緒申鐃緒申鐃夙になる。鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申覆里鐃緒申鐃

  • (鐃純え鐃緒申Math鐃淳わ申鐃緒申鐃緒申)鐃醇ー鐃銃ワ申鐃緒申謄鐃重鐃淑モジ鐃遵ー鐃緒申蓮鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申皀醐申紂種申鐃縮常申佞鐃緒申童討喀个鐃緒申硫鐃緒申紂include鐃緒申鐃緒申鐃夙み刻申鐃淳関随申鐃獣ぽわ申鐃夙わ申鐃緒申鐃緒申
  • 鐃叔わ申肇奪廛鐃駿ワ申鐃include鐃緒申鐃緒申鐃純う鐃緒申名鐃緒申鐃緒申鐃瞬縁申鐃緒申鐃緒申鐃緒申鐃純う鐃緒申鐃緒申鐃盾ジ鐃遵ー鐃緒申里曚鐃塾逸申鐃緒申鐃塾メソ鐃獣ドわ申鐃緒申鐃夙わ申覆鐃緒申里鐃宿鐃緒申include鐃緒申鐃緒申里鐃緒申僂鐃緒申鐃緒申鐃緒申鐃緒申鬚靴討鐃塾わ申鐃緒申鐃緒申的鐃祝わ申鐃緒申鐃緒申鐃夙わ申鐃盾あ鐃暑し鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃熟わ申Math.cos(x)鐃淳わ申鐃緒申鐃祝わ申鐃銃使わ申鐃緒申鐃緒申
  • 鐃叔もい鐃緒申鐃緒申鐃緒申同鐃緒申鐃緒申鐃緒申離瓮緒申奪匹鐃夙プライ鐃駿¥申鐃夙メソ鐃獣ワ申両鐃緒申鐃緒申鐃夙わ申鐃緒申鐃循わ申鐃緒申鐃緒申

鐃夙まわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒け鐃叔¥申両鐃緒申同鐃緒申鐃祝削申辰討鐃緒申鐃緒申箸鐃緒申鐃Module鐃緒申鐃初ス鐃緒申鐃緒申鐃緒申鐃潤ソ鐃獣ドでわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申鐃祝上げ鐃緒申Math鐃盾ジ鐃遵ー鐃緒申呂曚箸鐃宿のメソ鐃獣ドわ申module_function鐃緒申鐃緒申討鐃塾で¥申Math.cos鐃叔わ申include Math鐃緒申鐃銃わ申鐃緒申cos鐃叔わ申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃

extend鐃緒申鐃緒申鐃緒申離鐃緒申屮鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申妨鐃緒申呂鐃夙鐃緒申鐃緒申鐃緒申

include鐃緒申Module鐃緒申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙のメソ鐃獣ドわ申鐃獣わ申鐃緒申鐃宿¥申extend鐃緒申Object鐃塾メソ鐃獣ド¥申鐃獣わ申鐃銃¥申Module鐃緒申include鐃熟ワ申鐃初ス鐃潤ソ鐃獣ワ申(鐃獣異メソ鐃獣ワ申)鐃緒申鐃緒申鐃宿¥申Object鐃緒申extend鐃熟ワ申鐃藷スワ申鐃藷スメソ鐃獣ド¥申鐃緒申鐃緒申浪鐃緒申鬚垢鐃緒申里鐃緒申箸鐃緒申鐃緒申函鐃緒申鐃緒申鐃緒申鐃塾ワ申鐃瞬ワ申鐃緒申鐃緒申鐃夙にわ申鐃緒申鐃緒申鐃緒申鐃初ス鐃緒申include鐃緒申討喀个鐃緒申鐃緒申茲鐃淑醐申鐃縮わ申与鐃緒申鐃緒申廚鐃塾¥申鐃緒申鐃緒申辰箸錣鐃緒申鼎蕕わ申鐃緒申鼻鐃

include 鐃緒申 extend 鐃祝わ申鐃銃わ申泙辰鐃緒申鐃銃縁申鐃緒申鐃縮¥申Zozom鐃緒申鐃春わ申鐃淑わ申鐃銃わ申討戮鐃祝でわ申鐃緒申鐃緒申
Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃夙わ申鐃緒申鐃塾わ申鐃緒申妙鐃祝間違い鐃緒申鐃夙わ申鐃緒申鐃塾も、鐃夙ップワ申戰鐃叔はまっわ申鐃緒申同鐃緒申鐃緒申未覆鐃緒申鐃緒申鐃宿¥申鐃淑駕申鐃塾ワ申鐃緒申鐃宿では違う鐃緒申未砲覆襦

module Foo
  def hoge; "hoge!"; end
end 
  
module Bar
  def fuga; "fuga!"; end
end

class Baz 
end

include Foo
extend Bar

puts hoge # => "hoge!"
puts fuga # => "fuga!" 
    
baz = Baz.new
puts baz.hoge2 # => "hoge!"
puts baz.fuga2 # => NoMethodError

include鐃熟ワ申鐃初ス鐃祝モジ鐃遵ー鐃緒申鐃緒申鐃縦э申鐃緒申媛辰鐃緒申襦鐃緒申鐃塾常申鐃Object鐃緒申鐃初ス鐃緒申颪器申鐃緒申鐃緒申里如鐃Baz鐃緒申鐃緒申任鐃Foo鐃塾メソ鐃獣ドはわ申鐃緒申鐃緒申鐃夙わ申鐃暑。鐃叔も、extend鐃熟ワ申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申鐃獣異ワ申鐃初ス鐃緒申鐃緒申鐃塾常申鐃熟¥申"main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙にとってわ申"Object鐃緒申鐃初ス鐃竣わ申鐃緒申鐃書き器申鐃緒申鐃淑わ申鐃塾で¥申鐃緒申鐃旬わ申Object鐃緒申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Baz鐃祝は影駈申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃銃¥申鐃緒申鐃緒申覆鐃緒申箸鐃叔わ申鐃暑。

module Foo
  def hoge; "hoge!"; end
end 
  
module Bar
  def fuga; "fuga!"; end
end

class Baz
  include Foo
end

baz1 = Baz.new
baz2 = Baz.new
baz1.extend Bar
puts baz1.hoge2 # => "hoge!"
puts baz1.fuga2 # => "fuga!"
puts baz2.hoge2 # => "hoge!"
puts baz2.fuga2 # => NoMethodError

Foo鐃盾ジ鐃遵ー鐃緒申鐃Baz鐃緒申鐃初ス鐃緒申include鐃緒申鐃銃わ申里鐃baz1鐃叔わ申baz2鐃叔わ申hoge鐃潤ソ鐃獣ドわ申鐃夙わ申鐃暑し鐃緒申鐃緒申鐃塾ワ申鐃瞬ワ申鐃初ス鐃祝わ申鐃緒申鐃緒申僂鐃緒申鐃暑。鐃叔わ申Bar鐃盾ジ鐃遵ー鐃緒申鐃baz1鐃緒申extend鐃緒申鐃緒申鐃緒申里覆里如鐃fuga鐃潤ソ鐃獣ドわ申鐃夙わ申鐃緒申茲鐃祝なわ申里鐃baz1鐃緒申鐃緒申鐃叔¥申同鐃緒申Baz鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スわ申baz2鐃叔も、鐃緒申鐃緒申鐃緒申鵐汽屮鐃緒申薀刻申離鐃緒申鵐好鐃緒申鵐垢任癲fuga鐃潤ソ鐃獣ドわ申未鐃緒申鐃緒申里泙泙砲覆襦o申箸鐃緒申鐃緒申里鐃include鐃緒申extend鐃塾違い鐃叔わ申鐃緒申鐃緒申

鐃緒申鐃殉わ申: Module鐃緒申Class鐃塾違い

まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法鐃殉つわ申箸罎鐃述わ申 鐃緒申鐃緒申鐃宿わ申鐃緒申鐃緒申 鐃緒申鐃緒申鐃術¥申鐃緒申鐃竣ワ申鐃緒申鐃緒申泙砲覆鐃14鐃塾思刻申法
鐃緒申鐃峻¥申鐃殉つわ申箸罎鐃述わ申
鐃緒申鐃巡元鐃緒申鐃緒申鐃緒申BP鐃緒申鐃叔ワ申鐃藷タ¥申
発鐃緒申鐃緒申鐃緒申2009-05-21
鐃緒申鐃緒申鐃緒申鐃淳を見わ申

鐃緒申鐃緒申鐃旬の最緒申鐃緒申鐃緒申鐃Mix-in鐃塾鰹申念鐃祝つわ申鐃銃詳わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申箸鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃祝わ申鐃夙モジ鐃遵ー鐃緒申辰討里鐃Mix-in鐃緒申鐃緒申鐃夙わ申鐃銃ワ申鐃楯¥申鐃夙わ申鐃暑た鐃緒申鐃銃鰹申鐃緒申鐃緒申譴随申鐃塾らし鐃緒申鐃緒申鐃盾ジ鐃遵ー鐃緒申肇鐃緒申薀刻申琉磴わ申麓鐃緒申鐃緒申侶兢鐃緒申了鐃緒申鐃緒申琉磴わ申亡悗鐃獣てわ申鐃暑。

  • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申未離鐃緒申薀刻申離鐃緒申屮鐃緒申薀刻申砲呂覆鐃淑わ申鐃緒申鐃緒申include/extend鐃塾逸申鐃緒申鐃祝なって¥申鐃緒申鐃初ス鐃緒申皀醐申紂種申鐃祝種申鐃緒申鐃緒申襦o申泙鐃緒申鐃淑o申鐃緒申鐃緒申鐃緒申爐鰹申箸鐃緒申任鐃緒申鐃
  • 鐃緒申鐃初ス鐃緒申他鐃塾ワ申鐃初ス鐃塾ワ申鐃瞬ワ申鐃初ス鐃祝なるこ鐃夙わ申鐃叔わ申鐃暑が鐃緒申include/extend鐃緒申箸辰鐃渋常申離鐃緒申薀刻申鐃盾ジ鐃遵ー鐃緒申房鐃緒申鐃緒申爐鰹申箸呂任鐃緒申覆鐃緒申鐃緒申泙鐃緒申鐃緒申兢鐃緒申鐃緒申離鐃緒申薀刻申楼鐃縦に限わ申鐃緒申

鐃夙わ申鐃緒申鐃緒申鐃夙で¥申鐃盾ジ鐃遵ー鐃緒申蓮峽兢鐃緒申愀鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃緒申鐃"鐃緒申鐃"鐃祝関わ申鐃緒申鐃粛わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申廚里忙箸辰鐃緒申蠅刻申襦Java鐃叔醐申鐃緒申鐃夙わ申鐃緒申鐃塾ワ申鐃藷タ¥申鐃春ワ申鐃緒申鐃緒申鐃祝近い鐃緒申鐃宿¥申鐃緒申鐃緒申六鐃緒申佑鐃緒申鐃緒申鐃殉とわ申鐃緒申痢鐃Ruby鐃塾モジ鐃遵ー鐃緒申六鐃緒申佑伴鐃緒申鐃緒申鬟札奪箸任泙箸鐃緒申鐃塾¥申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申愀鐃緒申鐃緒申鐃緒申竸鐃緒申鐃緒申鐃緒申鐃緒申鐃醇ー鐃銃ワ申鐃緒申謄鐃緒申鐃緒申瓮緒申奪匹鐃緒申鐃緒申砲鐃緒申鐃縮常申鐃緒申鐃緒申鐃重鐃淑使わ申鐃緒申鐃盾す鐃緒申諭鐃緒申箸鐃緒申鐃緒申鐃Mix-in鐃祝器申鐃緒申覆鐃緒申鐃緒申鐃緒申呂鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申匹鐃緒申鐃緒申櫃鐃緒申鐃夙思わ申鐃緒申

鐃緒申譴随申鐃

鐃書いてわ申鐃緒申鐃祝「わ申鐃緒申叩鐃緒申鐃緒申鐃獣てわ申鐃緒申覆鐃淑ってわ申鐃緒申鐃緒申廚澆鐃緒申鐃緒申覆鐃緒申箸傍鐃緒申佞鐃緒申泙鐃緒申辰董鐃緒申匹鐃宿ん記誌申鐃緒申直鐃緒申鐃緒申調鐃駿なわ申鐃緒申鐃緒申鐃旬になっわ申鐃緒申鐃述わ申鐃緒申鐃塾わ申覆鐃緒申濃箸辰討襪鐃緒申鐃緒申鐃順し鐃銃逸申鐃渋器申鐃淑わ申鐃獣わ申鐃緒申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申椶帽佑鐃緒申呂瓩芯常申鐃熟わ申鐃初い鐃緒申笋鰹申鐃緒申鐃緒申萄鐃緒申陲靴鐃緒申鐃緒申膸鐃縦にわか鐃獣てわ申鐃緒申鐃緒申呂覆鐃銃わ申鐃夙なわ申鐃緒申鐃緒申鐃緒申匹福鐃緒申鐃

Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog鐃緒申鐃宿わ申任董鐃緒申發件申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申辰噺鐃緒申鬚わ申鐃緒申里鐃緒申覆隼廚辰鐃緒申里鐃require鐃緒申include鐃緒申extend鐃緒申鐃獣わ申

require鐃緒申Kernel鐃盾ジ鐃遵ー鐃緒申離瓮緒申奪鐃

Ruby鐃叔鰹申鐃緒申鐃初イ鐃瞬ワ申鐃緒申鐃宿み刻申鐃緒申砲蓮鐃require 鐃緒申鐃緒申鐃術わ申鐃殉わ申鐃緒申
Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃緒申鐃緒申呂鐃緒申鐃緒申未蝓o申鐃獣と駈申鐃緒申的鐃祝醐申鐃緒申鐃夙¥申require鐃熟逸申鐃緒申鐃塾フワ申鐃緒申鐃緒申名鐃緒申Ruby鐃春ワ申鐃緒申鐃緒申鐃緒申匹濆鐃緒申鐃叔実行わ申鐃緒申瓮緒申奪匹任鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申丱僖鐃緒申鐃緒申辰鐃緒申箸鐃緒申呂鐃緒申離侫鐃緒申鐃緒申鐃薯、わ申鐃緒申鐃叔なわ申鐃緒申鐃熟ワ申鐃緒申鐃宿パワ申鐃緒申優鐃緒申鐃縮常申未鐃緒申鐃獣鐃獣て最緒申妨鐃緒申弔鐃緒申辰鐃緒申侫鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申匹鐃緒申襦o申如鐃緒申鐃縦ワ申劼泙粘泙鐃銃書いてわ申鐃緒申鐃緒申呂鐃緒申離侫鐃緒申鐃緒申鐃薯、わ申鐃緒申鐃叔なわ申鐃緒申鐃緒申.rb鐃盾し鐃緒申鐃緒申.so鐃塾わ申里鐃緒申鐃緒申鐃宿わ申鐃暑そ鐃緒申鐃淑¥申require鐃緒申他鐃緒申load鐃夙わ申鐃緒申鐃潤ソ鐃獣ドもあ鐃獣てわ申鐃緒申呂鐃暑こ鐃夙わ申同鐃緒申鐃緒申鐃緒申鐃宿¥申require鐃塾常申鐃鐃宿み刻申鐃緒申里楼鐃緒申戮鐃緒申鐃鐃緒申鐃緒申鐃宿¥申load鐃塾常申鐃緒申無鐃緒申鐃緒申鐃宿み刻申鐃緒申鐃緒申鐃淑のでライ鐃瞬ワ申鐃夙わ申鐃緒申鐃宿み刻申鐃緒申箸鐃緒申鐃require鐃緒申箸鐃緒申鐃

include鐃緒申Module鐃緒申鐃初ス鐃塾メソ鐃獣ワ申

鐃緒申鐃緒申鐃緒申鐃盾ジ鐃遵ー鐃緒申鐃緒申匹濆鐃緒申鐃夙わ申鐃祝わ申 include 鐃緒申鐃淑わ申鐃夙わ申鐃緒申鐃淑わ申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃夙わ申崕鐃緒申討鐃Ruby鐃竣わ申討鐃緒申鐃塾っわ申鐃塾わ申鐃緒申速鐃庶し鐃銃みまわ申鐃緒申鐃緒申
Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃緒申鐃緒申麓禊鰹申岼磴わ申鐃include鐃熟モジ鐃遵ー鐃緒申鐃夙わ申鐃緒申辰鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申里如鐃

鐃緒申鐃緒申調鐃駿わ申鐃緒申漫鐃緒申匹鐃緒申鐃 include 鐃獣てわ申鐃塾フワ申鐃緒申鐃緒申鐃緒申匹濆鐃緒申澆呂鐃緒申討鐃緒申鐃淑わ申鐃獣ぽわ申鐃叔わ申鐃粛¥申鐃緒申鐃緒申鐃殉でわ申侫鐃緒申鐃緒申鐃緒申鐃宿み刻申鐃淳わ申 require 鐃緒申担鐃緒申鐃獣ぽわ申鐃叔わ申鐃緒申
Ruby鐃叔種申鐃緒申粒鐃緒申鐃緒申皀醐申紂種申鐃緒申鐃宿み刻申鐃緒申鐃緒申法 - include 鐃緒申 extend 鐃緒申 module_function - (鐃淳∀鐃)o鐃緒申 sasata299's blog

鐃獣てわ申鐃緒申鐃塾わ申鐃緒申鐃緒申鐃緒申鐃緒申

鐃緒申鐃純あinclude鐃獣て駕申鐃淑わ申鐃緒申鐃獣てわ申鐃夙なわ申鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃熟¥申鐃緒申鐃緒申鐃祝モジ鐃遵ー鐃緒申鐃緒申蝓include鐃緒申鐃緒申鐃緒申鐃初ス鐃緒申include鐃緒申鐃曙た鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申媛辰鐃緒申鐃鐃竣とわ申鐃緒申鐃緒申鐃夙をしてわ申鐃緒申襦鐃夙わ申鐃緒申Module鐃緒申鐃初ス鐃塾メソ鐃獣ド¥申鐃純え鐃出¥申鐃緒申鐃暑ク鐃初スBar鐃緒申Foo鐃盾ジ鐃遵ー鐃緒申鐃include鐃緒申鐃緒申函鐃鐃緒申鐃緒申鐃術¥申鐃緒申鐃初ス(Bar鐃緒申鐃緒申鐃緒申兢鐃緒申鐃緒申討覆鐃緒申鐃出逸申鐃循のワ申鐃緒申鐃術¥申鐃緒申鐃初スObject)鐃夙の継常申鐃舜件申鐃塾間わ申Foo鐃盾ジ鐃遵ー鐃緒申鮑垢鐃緒申鐃緒申鐃緒申鐃緒申鐃潤ソ鐃獣ドやク鐃初ス鐃術随申鐃緒申探鐃緒申鐃夙わ申鐃祝¥申Bar鐃薯見る→無鐃緒申鐃獣わ申鐃緒申Foo鐃薯見る→無鐃緒申鐃獣わ申鐃緒申Object鐃薯見る→無鐃緒申鐃獣わ申鐃緒申Kernel鐃薯見る→鐃緒申鐃緒申任鐃縮居申鐃緒申覆鐃縮居申鐃緒申廚箸鐃緒申鐃緒申鐃緒申砲鐃緒申討鐃緒申鐃暑。鐃縦まりこ鐃緒申鐃緒申鐃緒申鐃緒申鐃夙¥申

class Bar
  include Foo
end
Bar.ancestors
# ancestors鐃熟ワ申鐃緒申鐃術¥申鐃緒申鐃初ス鐃夙ワ申鐃藷クルー鐃宿わ申鐃銃わ申皀醐申紂種申鐃緒申優鐃緒申鐃縮緒申鐃緒申屬鐃緒申瓮緒申奪鐃
# => [Bar, Foo, Object, Kernel]

鐃叔¥申鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申include鐃緒申鐃緒申鐃所す鐃緒申函鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸砲覆襦

  • Hoge鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申self.hoge鐃緒申鐃緒申鐃緒申鐃緒申譴随申瓮緒申奪匹蓮鐃Hoge.hoge鐃夙わ申鐃銃使わ申鐃緒申
  • Hoge鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申fuga鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申譴随申瓮緒申奪匹蓮鐃Hoge.fuga鐃夙わ申鐃銃わ申鐃夙わ申鐃淑わ申
  • include鐃緒申鐃緒申函鐃include鐃緒申鐃緒申鐃緒申鐃初ス鐃緒申鐃緒申鐃藷スワ申鐃藷スわ申鐃緒申鐃fuga鐃緒申鐃夙わ申鐃緒申茲鐃祝なわ申

鐃緒申鐃緒申鐃緒申鐃緒申未侶兢鐃緒申愀鐃緒申砲鐃緒申襯居申屮鐃緒申薀刻申肇鐃緒申鐃緒申僉鐃緒申鐃緒申薀刻申里鐃緒申箸鐃粛わ申鐃緒申伐鐃緒申里鐃緒申箸呂覆鐃緒申鐃

  • def self.hoge鐃緒申鐃緒申鐃初ス鐃緒申hoge鐃夙わ申鐃緒申鐃潤ソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃
  • def fuga鐃緒申鐃緒申鐃塾ワ申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スわ申fuga鐃夙わ申鐃緒申鐃潤ソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃
  • 鐃緒申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申譴hoge鐃潤ソ鐃獣ドわ申Klass.hoge鐃夙わ申鐃緒申鐃緒申鐃叔呼べわ申
  • 鐃緒申鐃緒申鐃術¥申鐃緒申鐃初ス鐃緒申鐃緒申鐃緒申鐃緒申譴fuga鐃緒申鐃藷スワ申鐃藷スメソ鐃獣ドはワ申鐃瞬ワ申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スわ申鐃緒申鐃fuga鐃夙わ申鐃緒申鐃緒申鐃叔呼べわ申

鐃叔¥申鐃緒申鐃塾「継常申鐃竣わ申鐃緒申分鐃緒申鐃include鐃緒申鐃緒申廚鐃緒申匹澳鐃緒申鐃緒申鐃夙わ申鐃暑ク鐃初ス鐃緒申鐃緒申皀醐申紂種申鐃緒申include鐃緒申鐃緒申鐃夙わ申鐃塾居申動鐃緒申分鐃緒申鐃緒申隼廚鐃緒申鐃銃縁申鐃緒申茲鐃祝随申鐃緒申鐃書う¥申

鐃夙ップワ申戰鐃叔わ申include

鐃叔¥申鐃緒申鐃緒申鐃殉では「ワ申鐃初ス鐃緒申鐃盾ジ鐃遵ー鐃緒申鐃include鐃緒申鐃緒申鐃夙わ申鐃竣わ申鐃獣¥申鐃緒申鐃獣わ申鐃緒申鐃緒申呂鐃緒申鐃獣とわ申笋鰹申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任魯肇奪廛鐃駿ワ申妊皀醐申紂種申鐃緒申include鐃緒申鐃銃わ申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃緒申呂鐃緒申鐃獣わ申鐃緒申鐃薯いわ申鐃夙になる。

鐃夙ップワ申戰鐃獣て駕申鐃淑わ申鐃緒申辰鐃緒申辰覆鐃緒申鐃緒申鐃宿¥申鐃夙ップワ申戰襦鐃縦まわ申class文鐃緒申module文鐃緒申屮鐃緒申奪鐃緒申鐃緒申罎醐申鐃淑わ申鐃緒申鐃緒申鐃瞬鰹申側鐃叔書いわ申Ruby鐃緒申鐃緒申鐃宿は¥申main鐃夙わ申鐃緒申鐃緒申鐃循わ申Object鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スわ申self鐃叔わ申鐃暑。鐃淑ので¥申鐃夙ップワ申戰鐃叔駕申鐃初か鐃塾メソ鐃獣ドわ申討喀个鐃緒申函鐃self.method鐃緒申鐃縦まわ申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙のメソ鐃獣ドわ申討喀个鐃緒申鐃緒申砲覆襦o申如鐃緒申鐃緒申鐃緒申鐃緒申鐃縮鐃淑わ申鐃緒申鐃緒申鼻鐃緒申鐃緒申磴鐃夙ップワ申戰鐃緒申include鐃夙わ申鐃緒申辰鐃緒申鐃def self.hoge鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃縦わ申鐃夙ップワ申戰鐃緒申hoge鐃祝なり、def fuga鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃縦わ申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙のワ申鐃藷スワ申鐃藷スわ申fuga鐃祝なりそ鐃緒申鐃淑わ申里鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申呂覆鐃淑わ申鐃緒申鐃緒申鐃緒申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申Object鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スなのに¥申鐃緒申鐃緒申里鐃緒申鐃祝ワ申鐃藷スワ申鐃藷スって駕申鐃緒申鐃緒申鐃縮o申錣鐃緒申鐃処、鐃獣わ申鐃獣でわ申鐃処。

鐃渋際はどわ申鐃淑ってるか鐃夙わ申鐃緒申鐃夙¥申def self.hoge鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申瓮緒申奪匹鐃緒申鐃緒申討離鐃緒申薀刻申離鐃緒申薀刻申瓮緒申奪匹砲覆蝓def hoge鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申瓮緒申奪匹鐃緒申鐃緒申討離鐃緒申鵐好鐃緒申鵐好瓮緒申奪匹砲覆鐃鐃緒申鐃淑ので¥申鐃緒申鐃緒申鐃緒申鐃塾ワ申鐃緒申鐃宿わ申hello鐃熟わ申任鐃緒申鐃Object鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スでわ申鐃緒申箸鐃緒申鐃緒申鐃main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙のメソ鐃獣ドになわ申泙鐃緒申鐃緒申鐃緒申鐃debug鐃緒申Zozom.debug鐃夙わ申鐃銃呼べわ申里澆覆蕕削申未淵鐃緒申薀刻申鐃緒申辰討鐃緒申磴鐃緒申Yakitori.debug鐃淳わ申鐃緒申鐃祝呼べる、鐃夙わ申鐃緒申鐃獣になる。鐃緒申笋鰹申鐃緒申鐃緒申鐃

main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申鐃緒申include鐃緒申鐃緒申

鐃緒申鐃緒申浪鐃緒申覆鐃緒申鐃緒申鐃緒申鐃塾どわ申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃縦駕申鐃熟¥申鐃緒申鐃緒申鐃夙わ申任鐃淑わ申鐃緒申鐃銃э申濆鐃緒申鐃叔わ申鐃殉っわ申鐃塾わ申鐃縦と醐申鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃殉わ申鐃渋は器申単鐃緒申鐃獣わ申鐃獣わ申鐃所す鐃暑。class文鐃緒申鐃緒申鐃include鐃緒申Module鐃緒申鐃初ス鐃塾ワ申鐃初ス鐃潤ソ鐃獣ドでわ申鐃緒申箸鐃緒申鐃緒申鐃include鐃緒申鐃緒申鐃宿¥申鐃夙ップワ申戰鐃緒申include鐃緒申鐃緒申妙鐃緒申鐃獣種申如鐃緒申肇奪廛鐃駿ワ申鐃include鐃潤ソ鐃獣ドつまわ申main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申include鐃潤ソ鐃獣ドわ申孫圓鐃緒申鐃緒申Object鐃緒申鐃初ス鐃緒申include鐃緒申鐃初ス鐃潤ソ鐃獣ドわ申討鐃緒申鐃処う鐃淑居申動鐃薯する。鐃緒申鐃塾わ申鐃緒申法鐃緒申鐃緒申里茲鐃淑わ申鐃夙になる。

  • 鐃緒申鐃銃のワ申鐃初ス鐃緒申Object鐃緒申鐃初ス鐃塾ワ申鐃瞬ワ申鐃初ス鐃淑のわ申(1.9鐃熟わ申鐃純外鐃盾あ鐃暑け鐃宿¥申鐃緒申鐃粛わ申鐃緒申鐃緒申鐃夙思ってわ申鐃緒申鐃塾わ申)鐃緒申include鐃緒申鐃緒申鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def self.hoge鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申鐃潤ソ鐃獣ドわ申鐃緒申鐃初ス鐃潤ソ鐃獣ドとわ申鐃銃使わ申鐃緒申
  • main鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申Object鐃緒申鐃初ス鐃塾ワ申鐃藷スワ申鐃藷スなのわ申include鐃緒申鐃緒申鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def fuga鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申鐃潤ソ鐃獣ドわ申鐃緒申鐃藷スワ申鐃藷スメソ鐃獣ドとわ申鐃銃使わ申鐃暑、鐃緒申鐃塾わ申鐃緒申fuga鐃緒申鐃夙み刻申鐃淳関随申鐃塾よう鐃祝醐申鐃緒申鐃緒申茲鐃祝なっわ申

長鐃緒申鐃淑ってわ申鐃緒申鐃塾で逸申旦鐃殉とわ申鐃

  • Ruby鐃春ワ申鐃緒申鐃緒申鐃緒申匹濆鐃緒申鐃塾わ申require
  • include鐃熟「モジ鐃遵ー鐃緒申鐃夙わ申鐃緒申辰鐃緒申鐃緒申鐃竣ではなわ申鐃銃「モジ鐃遵ー鐃暑が鐃緒申鐃獣てわ申鐃緒申鐃緒申鐃薯、ワ申鐃初ス鐃緒申鐃夙み刻申鐃緒申瓮緒申奪鼻鐃
  • class/module文鐃緒申鐃緒申鐃鐃夙わ申鐃夙¥申鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃縦э申鐃鐃緒申鐃塾ワ申鐃初ス鐃緒申鐃宿加わ申鐃緒申
    • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def self.hoge鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申弔鐃鐃緒申鐃塾ワ申鐃初ス鐃緒申鐃緒申鐃初ス鐃潤ソ鐃獣ドになわ申
    • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def fuga鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申弔鐃鐃緒申鐃塾ワ申鐃初ス鐃緒申鐃緒申鐃藷スワ申鐃藷スメソ鐃獣ドになわ申
  • class/module文鐃緒申鐃緒申鐃緒申鐃夙わ申鐃夙¥申鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃縦э申鐃Object鐃緒申鐃初ス鐃緒申鐃宿加わ申鐃緒申
    • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def self.hoge鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申弔鐃鐃緒申鐃銃のワ申鐃初ス鐃緒申鐃緒申鐃初ス鐃潤ソ鐃獣ドになわ申
    • 鐃盾ジ鐃遵ー鐃緒申鐃緒申鐃緒申def fuga鐃夙わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申弔鐃鐃緒申鐃銃のワ申鐃初ス鐃緒申鐃緒申鐃藷スワ申鐃藷スメソ鐃獣ドになわ申

調鐃駿てわ申鐃緒申include鐃緒申鐃竣わ申鐃塾ほわ申鐃緒申笋鰹申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃縦刻申鐃緒申覆辰鐃緒申鐃獣わ申鐃塾で¥申module_funcfion鐃緒申extend鐃熟種申鐃塾居申鐃緒申鐃緒申続鐃緒申鐃緒申

鐃緒申鐃緒申辰箸鐃緒申鐃緒申鐃渋

def self.hoge鐃夙わ申鐃緒申鐃緒申鐃緒申鐃塾メソ鐃獣ワ申鐃緒申鐃緒申蓮鐃緒申鐃祝ワ申鐃初ス鐃潤ソ鐃獣ドわ申鐃緒申鐃緒申箸鐃緒申道箸鐃緒申討襪縁申鼻鐃緒申鐃緒申里妨鐃緒申鐃緒申函鐃緒申丹曠瓮緒申奪鼻廚箸鐃緒申鐃緒申里鐃緒申鐃緒申鐃緒申鐃緒申鐃塾¥申鐃淑のわ申self鐃緒申鐃緒申分鐃熟実はどわ申淵鐃緒申屮鐃緒申鐃緒申鐃緒申箸任發鐃殉つわ申鐃緒申鐃緒申鐃叔もい鐃緒申鐃緒申鐃緒申鐃緒申鐃初ス鐃潤ソ鐃獣ドと呼わ申任鐃緒申里亮鐃緒申屬蓮鐃"鐃緒申鐃初ス鐃夙わ申鐃緒申鐃緒申鐃緒申離鐃緒申屮鐃緒申鐃緒申鐃緒申鐃"鐃緒申鐃獣異ワ申鐃初ス鐃緒申(鐃緒申鐃藷スワ申鐃緒申)鐃潤ソ鐃獣ド」わ申鐃獣わ申鐃所す鐃暑。鐃熟わ申鐃緒申鐃塾わ申鐃緒申鐃獣異ワ申鐃初ス鐃夙わ申鐃獣異メソ鐃獣ドとわ申鐃熟…種申鐃塾居申鐃緒申鐃叔書くわ申鐃淑¥申多分鐃緒申

初めてのRuby鐃緒申鐃銃わ申Ruby
鐃緒申鐃峻¥申Yugui
鐃緒申鐃巡元鐃緒申鐃緒申鐃初イ鐃所ー鐃緒申鐃緒申僖鐃
発鐃緒申鐃緒申鐃緒申2008-06-26
鐃緒申鐃緒申鐃緒申鐃緒申鐃駿¥申4.5
鐃緒申鐃緒申鐃緒申鐃淳を見わ申

sinatra鐃緒申ActiveRecord鐃緒申ERB鐃緒申BBS鐃緒申辰鐃緒申里妊鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃みわ申 - 鐃緒申鐃緒申鐃緒申鐃鐃祝随申発鐃緒申鐃緒申堂鐃緒申鐃BBS鐃緒申鐃獣てみよう鐃夙¥申鐃緒申鐃緒申鐃緒申鐃緒申Sinatra鐃薯いわ申鐃獣てわ申鐃緒申鐃緒申Sinatra鐃緒申鐃緒申郎廼鐃出¥申鐃緒申鐃緒申鵐▲奪廚鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申襪縁申鼻鐃緒申匹鐃緒申鐃緒申鐃緒申鐃緒申鐃Ruby1.9.1鐃叔わ申動鐃緒申鐃処う鐃緒申鐃緒申鐃緒申敵鐃緒申

鐃叔¥申鐃緒申調鐃祝行わ申鐃緒申鐃夙思っわ申鐃緒申鐃緒申鐃緒申鼻鐃緒申匹鐃緒申砲鐃書き刻申鐃淳わ申spec鐃緒申鐃縮わ申覆鐃緒申鐃緒申鐃緒申鐃緒申能鐃緒申董鐃POST鐃緒申GET鐃叔パワ申瓠種申鐃緒申縫泪鐃緒申鐃出ワ申鐃夙わ申文鐃緒申鐃緒申鐃緒申鐃獣てわ申伐鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸傍鐃緒申佞鐃緒申鐃緒申鐃

鐃叔緒申暴颪い鐃spec鐃夙ワ申鐃竣ワ申側鐃塾ワ申鐃緒申鐃宿わ申抜鐃処。

# coding: utf-8
require 'rubygems'
require 'rack/test'
require 'routes.rb' #sinatra鐃緒申鐃竣ワ申

set :environment, :test

include Rack::Test::Methods

def app 
  Sinatra::Application
end

describe '鐃緒申討鐃緒申鐃夙わ申' do
  it '鐃緒申鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃緒申譽鐃夙わ申鐃暑こ鐃緒申' do
    @props = { 
      'user'  => '鐃緒申鐃緒申',
      'body'  => '鐃駿¥申鐃縮にワ申鐃藷タわ申鐃緒申文鐃緒申鐃緒申鐃循なんじわ申覆鐃緒申鐃緒申鐃緒申鐃初!',
    }
    Entry.should_receive(:create).with(@props)
    post '/add', @props
    last_response.status.should be_equal(302)
  end 
end
# coding: utf-8
require 'rubygems'
require 'sinatra'
require 'haml'
require 'sequel'

post '/add' do
  Entry.create(params)
  redirect '/'
end

DB = Sequel.connect('sqlite://db/trabbs.db')
class Entry < Sequel::Model; end

鐃渋際にわ申get '/'鐃夙わ申Entry鐃塾ワ申鐃緒申鐃緒申鐃殉とわ申index.haml鐃夙わ申鐃緒申鐃術意わ申鐃銃わ申鐃緒申泙鐃緒申鐃緒申鐃緒申鐃熟随申鐃緒申鐃旬わ申鐃巡完鐃緒申鐃銃わ申鐃緒申鐃曙。鐃緒申如鐃緒申鐃緒申圓鐃緒申討鐃塾はわ申鐃緒申鐃鐃緒申鐃緒申鐃緒申鐃縦ワ申妊鐃緒申鐃緒申討鬚靴討鐃緒申譴DB鐃祝居申録鐃緒申鐃曙、鐃緒申鐃塾醐申肇奪廚縫鐃緒申鐃緒申鐃曙ク鐃夙わ申鐃緒申襪鰹申箸覆鐃緒申鐃緒申鐃宿¥申鐃緒申鐃曙が鐃緒申鐃緒申鐃暑。

1)
Spec::Mocks::MockExpectationError in '鐃緒申討鐃緒申鐃夙わ申 鐃熟¥申鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃緒申譽鐃夙わ申鐃暑こ鐃緒申'
 expected :create with ({"user"=>"鐃緒申鐃緒申", "body"=>"鐃駿¥申鐃縮にワ申鐃藷タわ申鐃緒申文鐃緒申鐃緒申鐃循なんじわ申覆鐃緒申鐃緒申鐃緒申鐃初!"}) but received it with ({"user"=>"\xE3\x82", "body"=>"\xE3\x81\xB9\xE3\x80\x81\xE5\x88\xA5\xE3\x81\xAB\xE3\x82\xA2\xE3\x83\xB3\xE3\x82\xBF\xE3\x81\xAE"})

鐃緒申鐃緒申磧UTF-8鐃緒申文鐃緒申鐃藷がわ申鐃緒申戮鐃緒申箸鐃緒申鐃緒申法鐃ASCII-8BIT鐃緒申鐃縦まわ申丱鐃緒申鐃緒申鵑わ申鐃塾まわ申鐃緒申鐃緒申鐃獣てる。鐃緒申燹鐃緒申鐃緒申鐃夙¥申鐃渋際のバワ申鐃緒申鐃緒申鐃緒申儿鐃緒申鐃緒申鐃緒申縫鐃緒申鵐魁鐃緒申妊鐃緒申鵐阿鐃緒申鐃緒申僂鐃緒申鐃塾わ申force_encoding鐃緒申鐃獣わ申鐃緒申諭鐃緒申箸鐃緒申鐃緒申鐃緒申箸鐃force_encoding('UTF-8')鐃緒申鐃銃みる。

1)
Spec::Mocks::MockExpectationError in '鐃緒申討鐃緒申鐃夙わ申 鐃熟¥申鐃緒申討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃祝ワ申鐃緒申鐃緒申譽鐃夙わ申鐃暑こ鐃緒申'
 expected :create with ({"user"=>"鐃緒申鐃緒申", "body"=>"鐃駿¥申鐃縮にワ申鐃藷タわ申鐃緒申文鐃緒申鐃緒申鐃循なんじわ申覆鐃緒申鐃緒申鐃緒申鐃初!"}) but received it with ({"user"=>"\xE3\x82", "body"=>"鐃駿¥申鐃縮にワ申鐃藷タわ申"})

鐃緒申鐃緒申鐃緒申鐃曙?鐃淑わ申足鐃緒申覆鐃緒申覆鐃緒申鐃緒申鐃緒申鐃熟どわ申鐃緒申鐃緒申鐃緒申鐃夙¥申

Rack::Utils#escape

鐃夙わ申鐃緒申鐃叔¥申鐃緒申任鐃獣種申泙辰鐃緒申鐃緒申鼻鐃緒申造鐃spec鐃緒申孫圓鐃緒申鐃楯にわ申鐃緒申鐃warning鐃緒申鐃出てわ申鐃暑。

/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.0.0/lib/rack/utils.rb:13: warning: regexp match /.../n against to UTF-8 string

UTF-8鐃緒申鐃出わ申鐃銃ワ申鐃藷コ¥申鐃叔ワ申鐃藷グわ申無鐃暑し鐃緒申鐃緒申鐃緒申表鐃緒申鐃祝マッワ申鐃緒申鐃緒申鐃銃わ申弔鐃緒申鵝△匹鐃緒申發鰹申譴鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申呂匹鐃緒申鐃緒申鐃出てるか鐃夙わ申鐃緒申鐃夙¥申鐃緒申鐃緒申淵鐃緒申鐃緒申匹鐃緒申鐃出てわ申鐃暑。

# rack-1.0.0/lib/rack/utils.rb
module Rack
  # Rack::Utils contains a grab-bag of useful methods for writing web

  module Utils
    # Performs URI escaping so that you can construct proper
    # query strings faster.  Use this rather than the cgi.rb
    # version since it's faster.  (Stolen from Camping).
    def escape(s)
      s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
        '%'+$1.unpack('H2'*$1.size).join('%').upcase
      }.tr(' ', '+')
    end
    module_function :escape

    # Unescapes a URI escaped string. (Stolen from Camping).
    def unescape(s)
      s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){
        [$1.delete('%')].pack('H*')
      }
    end
    module_function :unescape

    # 鐃淑駕申鐃緒申略
  end
end

鐃淑わ申曚匹任鐃緒申諭鐃緒申鐃緒申廚鐃緒申鐃祝¥申

  1. escape鐃緒申鐃unpack鐃緒申鐃緒申箸鐃緒申法鐃String#size鐃緒申箸辰討鐃緒申襦1.8鐃殉ではわ申鐃塾メソ鐃獣ドはバワ申鐃夙随申鐃緒申鐃瞬わ申鐃銃わ申鐃緒申鐃宿¥申1.9鐃叔わ申文鐃緒申鐃緒申鐃緒申鐃瞬わ申鐃処う鐃祝誌申鐃粛わ申鐃術刻申鐃緒申鐃緒申討鐃緒申鐃鐃緒申鐃殉ワ申鐃緒申丱鐃緒申箸鐃淑醐申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃出ワ申鐃夙随申鐃緒申文鐃緒申鐃緒申鐃熟逸申鐃竣わ申鐃淑わ申鐃塾で¥申鐃緒申鐃緒申鐃緒申擇鐃緒申鐃純う鐃緒申鐃夙になる。
  2. pack鐃緒申鐃緒申鐃瞬ってわ申鐃緒申里鐃獣縁申覆鐃出ワ申鐃緒申鐃藷、つまわ申ASCII-8BIT鐃緒申String鐃緒申
  3. 1.8鐃殉でわ申文鐃緒申鐃藷がどわ申淵鐃緒申鵐魁鐃緒申妊鐃緒申鵐阿任鐃緒申譟unpack鐃緒申鐃緒申pack鐃緒申鐃緒申个泙鐃淑醐申鐃緒申鐃緒申鐃緒申鐃鐃緒申鐃叔わ申1.9鐃叔わ申unpack鐃緒申鐃緒申pack鐃塾駕申鐃緒申鐃叔醐申鐃塾ワ申鐃藷コ¥申鐃叔ワ申鐃藷グ常申鐃緒申麓鐃緒申覆鐃緒申討鐃緒申鐃塾で¥申鐃緒申鐃緒申的鐃祝ワ申鐃藷コ¥申鐃叔ワ申鐃藷グ常申鐃緒申鐃緒申娉辰鐃緒申討鐃緒申必鐃竣わ申鐃緒申鐃緒申鐃緒申

鐃夙わ申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃初。鐃殉わ申1鐃祝関わ申鐃銃わ申String#size鐃緒申箸辰討鐃夙わ申鐃緒申鐃緒申String#bytesize鐃緒申箸鐃緒申茲鐃祝書き器申鐃緒申鐃緒申个鐃緒申鐃緒申鐃緒申鐃緒申覆澆鐃Rack::Utils鐃叔わ申1.8鐃叔わ申1.9鐃叔わ申動鐃緒申鐃処う鐃緒申Rack::Utils#bytesize鐃夙わ申鐃緒申鐃潤ソ鐃獣ドわ申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃緒申里如鐃緒申鐃緒申鐃緒申箸鐃緒申箸鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申鐃緒申鐃緒申覆鐃叔使ってなわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣縁申鐃祝削申鐃銃わ申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃縦¥申

module Rack
  module Utils                                                                          
    def escape(s)
      s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/) {                                              
        '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase                               
      }.tr(' ', '+')
    end
  end
end

鐃緒申鐃緒申鐃rack鐃緒申require鐃緒申鐃緒申鐃緒申暴颪い鐃Rack::Utils#escape鐃緒申鐃書きわ申鐃銃わ申鐃夙¥申鐃緒申鐃緒申鐃緒申escape鐃緒申鐃緒申鐃処う鐃祝なる。

鐃緒申鐃緒申ASCII-8BIT鐃祝なっわ申鐃緒申辰討鐃塾わ申force_encoding鐃緒申鐃銃ワ申鐃藷コ¥申鐃叔ワ申鐃藷グわ申鐃術わ申鐃暑。鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃Rack::Utils#unescape鐃緒申鐃書きわ申鐃銃¥申鐃緒申鐃緒申鐃緒申妊鐃緒申鵐魁鐃緒申妊鐃緒申鵐阿鐃緒申測鐃緒申鐃緒申force_encoding鐃緒申鐃銃わ申鐃緒申鐃銃¥申鐃緒申鐃竣ワ申側鐃塾フッワ申鐃緒申String#encoding鐃緒申箸辰鐃緒申鐃緒申鐃緒申濃箸鐃緒申鐃緒申鵐魁鐃緒申妊鐃緒申鵐阿鐃緒申儡鐃緒申鐃緒申討鐃緒申里鐃緒申鐃緒申鐃緒申鐃緒申覆鐃緒申箸鐃緒申廚辰鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃緒申任鐃緒申鐃緒申里鐃緒申福鐃緒申鐃

鐃緒申任鐃殉わ申鐃緒申鐃緒申鐃緒申鐃UA鐃祝縁申鐃緒申鐃緒申view鐃塾ワ申鐃藷コ¥申鐃叔ワ申鐃緒申鐃術わ申鐃緒申澆鐃緒申鐃緒申覆鐃緒申箸呂鐃緒申討覆鐃緒申鐃緒申鐃UTF-8鐃緒申鐃緒申任鐃緒申鐃緒申匹鐃緒申鐃粛¥申鐃縦とわ申鐃緒申鐃緒け鐃叔¥申Sinatra鐃緒申before鐃緒申鐃緒申如鐃RUBY_VERSION鐃緒申1.9鐃淑常申鐃緒申辰鐃緒申箸鐃緒申鐃param鐃緒申文鐃緒申鐃緒申鐃force_encoding('UTF-8')鐃緒申鐃緒申茲鐃祝わ申鐃緒申鐃獣わ申鐃緒申鐃宿わ申鐃述はわ申鐃緒申鐃夙わ申鐃銃駕申鐃緒申鐃緒申鐃緒申

鐃熟わ申鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申鐃spec鐃縮わ申泙鐃緒申鐃緒申鐃緒申奸鐃緒申鐃

鐃縦で¥申

鐃緒申鐃緒申鐃緒申鐃初、鐃緒申鐃駿わ申Rack鐃緒申fork鐃緒申鐃緒申直鐃緒申鐃緒申pull request鐃緒申鐃緒申个鐃緒申鐃緒申鐃緒申鐃緒申諭鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃淑わ申鐃緒申福鐃緒申箸六廚鐃緒申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃宿わ申鐃緒申鐃緒申鐃春のわ申鐃緒申渕鐃緒申鐃緒申覆鐃緒申里如鐃獣鐃緒申1.9鐃叔わ申鐃緒申鐃緒申鐃銃逸申鐃緒申茲鐃緒申直鐃緒申鐃緒申Rack鐃塾鰹申発鐃緒申鐃緒申鐃獣フに駈申鐃緒申鐃銃わ申鐃緒申鐃銃わ申蕕鐃緒申判鐃緒申鐃緒申鐃殉わ申鐃緒申鐃緒申鐃緒申鐃銃ワ申鐃緒申鐃緒申鐃粛¥申

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申余鐃獣てワ申鐃緒申鐃出わ申Ubuntu 9.04鐃叔再刻申鐃循わ申鐃銃¥申鐃緒申鐃塾際つわ申鐃叔わ申鐃緒申Ruby鐃緒申1.9.1鐃祝わ申鐃銃わ申譟apt鐃緒申鐃緒申鐃緒申鐃夙随申鐃緒申鐃緒申鐃緒申鐃楯わ申鐃緒申鐃初自分鐃叔ビワ申匹鐃緒申茲鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Perl鐃緒申鐃緒申鐃盾、CPAN鐃盾ジ鐃遵ー鐃緒申隆鐃緒申鐃緒申箸鐃緒申鐃緒申鐃淑器申鐃緒申鐃祝なるし鐃緒申鐃緒申鐃獣わ申鐃盾ソ鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申直鐃緒申鐃緒申鐃緒申鐃夙わ申鐃緒申辰討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申離鐃緒申鵐好函鐃緒申鐃竣わ申砲覆辰討鐃緒申泙辰鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申茵鐃緒申鐃藷スト¥申鐃暑。鐃緒申味鐃叔わ申鐃処。鐃緒申鐃緒申文鐃順あ鐃暑か鐃緒申

鐃夙まわ申鐃准わ申鐃緒申鐃緒申鐃藷ス¥申鐃緒申廚鐃薯終わ申鐃銃¥申鐃緒申鐃緒申鐃緒申鐃竣ワ申鐃銃逸申鐃緒申鐃緒申鐃緒申隼廚辰鐃緒申蕁鐃緒申鐃緒申鐃緒申鐃404鐃竣わ申鐃殉わ申鐃緒申鐃塾ワ申鐃初ー鐃緒申鐃緒申鐃暑ぇ鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申鐃1.9.1鐃叔わ申動鐃緒申鐃銃わ申鐃緒申鐃緒申鐃緒申匹覆鐃緒申鐃緒申隼廚鐃緒申覆鐃緒申鐃緒申鐃緒申鐃薯見わ申鐃緒申鐃invalid byte sequence in US-ASCII鐃竣わ申文鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申encoding鐃熟わ申鐃緒申鐃夙誌申鐃所し鐃銃わ申鐃暑し鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申肇鐃緒申鐃緒申仂鐃塾フワ申鐃緒申鐃緒申鐃緒申辰飽磴わ申呂覆鐃緒申鐃緒申覆鵑犬鐃緒申鐃緒申鐃緒申鐃宿って行わ申鐃夙わ申鐃塾ワ申鐃緒申鐃宿わ申辿鐃緒申鐃遵く鐃緒申

Haml::Engine.new(File.read(file)).render(Object.new, locals)

File鐃緒申鐃緒申鐃宿み刻申鐃緒申鐃緒申里鐃US-ASCII鐃塾バワ申鐃緒申鐃緒申箸鐃緒申動鐃緒申鐃緒申討鐃緒申襦o申鐃緒申里鐃緒申瓠鐃緒申鐃緒申鐃緒申个鐃緒申鐃淑醐申鐃緒申鐃緒申鐃庶し鐃処う鐃夙わ申鐃緒申鐃緒申鐃緒申劼離鐃緒申蕁種申鐃緒申个襦o申鐃緒申鐃緒申鐃緒申筺鐃緒申鐃緒申encoding鐃緒申鐃所し忘鐃緒申討鐃緒申鐃緒申任癲鐃緒申鐃純あ鐃緒申鐃淑わ申妊鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申動鐃緒申鐃緒申鐃緒申辰鐃緒申鐃

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申File鐃夙わ申標鐃緒申鐃緒申鐃熟わ申鐃緒申鐃緒申匹濆鐃緒申鐃夙わ申鐃熟¥申鐃緒申鐃所が無鐃緒申鐃緒申亟超鐃緒申竸鐃緒申鐃緒申鐃encoding鐃緒申鐃緒申鐃緒申鐃緒申辰鐃緒申鐃緒申鐃叔¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃LANG=ja_JP.UTF-8鐃緒申鐃緒申鐃緒申鐃出わ申LANG=C鐃緒申鐃淑のでワ申鐃緒申鐃緒申側鐃叔わ申IO鐃緒申encoding鐃緒申US-ASCII鐃緒申鐃緒申判鐃所し鐃銃わ申鐃殉わ申鐃緒申invalid byte sequence鐃祝なわ申錣縁申鐃緒申鐃緒申遒件申鐃export LANG=ja_JP.UTF-8鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃Spec鐃縮っわ申鐃緒申鐃夙醐申鐃緒申鐃緒け鐃叔¥申File鐃緒申鐃緒申鐃宿み刻申鐃緒申箸鐃緒申砲鐃緒申鐃緒申鐃UTF-8鐃緒申鐃宿わ申茲鐃祝緒申鐃緒申鐃緒申

Haml::Engine.new(File.read(file, :encoding => 'UTF-8')).render(Object.new, locals)

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃銃逸申鐃緒申茲鐃祝なわ申泙鐃緒申鐃緒申鐃緒申鐃緒申覆澆法鐃緒申鐃緒申鐃緒申鐃緒申鐃祝書いてわ申動鐃緒申鐃緒申

Haml::Engine.new(File.read(file, encoding:'UTF-8')).render(Object.new, locals)

Ruby鐃塾常申鐃潤ソ鐃獣ドの逸申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Hash鐃塾とわ申鐃緒申{}鐃緒申鐃塾鐃叔わ申鐃緒申里鐃緒申鐃緒申鼻鐃1.9鐃熟なわ申{ :symbol => VALUE }鐃淳わ申鐃緒申鐃淑のはわ申鐃緒申望鐃塾鐃緒申鐃銃ワ申鐃緒申鐃緒ー鐃緒申鐃春わ申鐃緒申鐃緒申鐃淳わ申鐃緒申鐃緒申表鐃緒申鐃叔わ申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃循ほわ申鐃緒申

鐃緒申Ruby1.9鐃出縁申鐃夙わ申鐃准常申鐃緒申鐃緒申鐃竣みわ申鐃緒申鐃祝思ってわ申鐃緒申鐃緒申鐃緒申鐃粛にわ申有鐃緒申泙鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑器申鐃緒申鐃叔わ申鐃獣わ申鐃緒申潺鐃緒申鐃緒申櫂鐃緒申櫂鐃緒申任討鐃緒申鐃緒申鐃緒申鐃粛緒申鐃緒申鐃緒申鐃渋醐申離薀わ申屮鐃緒申鐃夙わ申鐃緒申鐃緒申鐃叔も、鐃緒申鐃淑わ申鐃緒申鐃緒申戮鐃IO鐃緒申鐃緒申鐃緒申表鐃緒申鐃緒申鐃緒申鐃invalid byte sequence鐃夙わ申invalid encoding鐃夙わ申鐃緒申鐃緒申鐃緒申里如鐃緒申鐃緒申鐃緒申淡鐃1.9鐃熟でのトワ申屮襯件申紂種申謄鐃緒申鵐阿亡鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃宿わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃encoding鐃緒申鐃淳わ申鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申匹諭鐃緒申僂鐃獣てわ申里蓮鐃緒申鐃緒申鐃祝わ申鐃銃わ申1.9鐃叔わ申1.8.7鐃叔わ申个鐃出わ申働鐃緒申鐃銃わ申鐃緒申鐃Ramaze鐃緒申鐃緒申鐃緒申鐃盾し鐃緒申鐃淑¥申

鐃緒申鐃緒申鐃緒申離鐃緒申董鐃緒申鐃緒申鐃緒申鐃緒申屬鐃鐃竣わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿みわ申鐃緒申鐃夙わ申鐃緒申鐃所ク鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃獣わ申鐃塾で¥申鐃緒申鐃緒申鐃緒申直鐃緒申鐃緒申gist鐃祝上げ鐃銃みわ申鐃緒申

gist: 112607 - GitHub

鐃緒申鐃緒申鐃塾常申鐃瞬わ申rackup鐃緒申鐃緒申鐃銃逸申鐃緒申泙鐃緒申鐃haml鐃緒申rack鐃塾最随申鐃叔わ申必鐃竣わ申他鐃緒申鐃獣に駕申鐃緒申鐃竣わ申覆鐃緒申呂鐃緒申鐃緒申鐃緒申覆澆鐃1.8.6鐃緒申1.8.7鐃緒申1.9.1鐃叔わ申動鐃緒申鐃塾わ申鐃叔э申僂漾鐃緒申鐃緒申Passenger鐃緒申動鐃緒申鐃緒申鐃夙わ申鐃祝は¥申鐃緒申Passenger鐃緒申Rack鐃緒申鐃竣ワ申鐃銃逸申鐃緒申鐃鐃竣で書いわ申鐃処う鐃祝¥申config.ru鐃緒申同鐃緒申鐃緒申鐃舜わ申public鐃緒申tmp鐃獣てデワ申鐃曙ク鐃夙ワ申鐃緒申辰討鐃獣て¥申鐃緒申鐃緒申鐃夙ワ申鐃緒申鐃夙わ申鐃銃わ申鐃緒申RewindableInputWrapper鐃緒申有鐃緒申鐃祝わ申鐃銃わ申鐃出わ申鐃緒申鐃熟わ申鐃緒申

鐃縦わ申鐃叔わ申Rack::Test鐃緒申箸辰峠颪い鐃spec鐃夙¥申鐃渋際わ申GET鐃緒申鐃緒申鐃緒申POST鐃緒申鐃緒申鐃所し鐃銃どわ申淵譽刻申櫂鐃緒申屬鐃緒申討鐃塾わ申鐃緒申鐃暑ス鐃緒申鐃緒申廛箸鐃緒申屬鐃緒申箸鐃緒申鐃緒申里如鐃緒申鐃緒申佑泙任法鐃

鐃瞬っわ申鐃純けRack鐃緒申Haml(鐃夙わ申鐃緒申Passenger)鐃緒申遊鐃俊わ申鐃緒申鐃獣わ申鐃緒申鐃緒申鐃淑ので¥申鐃緒申Sinatra鐃塾わ申鐃准わ申鐃緒申諭鐃緒申廖屬辰討鐃緒申鐃緒申鐃Apache鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申任覆鐃夙わ申鐃淑りそ鐃緒申鐃淑…」とわ申鐃緒申鐃緒申鐃縦ッワ申鐃淳わ申無鐃緒申鐃緒申鐃緒申鐃緒申鐃叔¥申鐃緒申鐃淑みわ申Rack鐃叔ワ申鐃曙オ鐃緒申WAF鐃緒申匹鐃緒申鐃緒申砲呂鐃緒申鐃緒申鐃緒申鐃祝逸申鐃緒申討鐃緒申鐃緒申里如鐃緒申鐃緒申鐃Ramaze鐃緒申鐃緒申鐃粛件申鐃叔わ申鐃所。Ramaze鐃緒申鐃藷いわ申鐃淑¥申鐃緒申鐃緒申鐃緒申鐃獣わ申鐃緒申鐃夙はわ申鐃緒申鐃緒申鐃緒申Rack鐃緒申鐃緒申鐃緒申鐃縮居申未任呂覆鐃緒申董鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申箸鐃獣てわ申鐃緒申Ramaze鐃塾ワ申鐃緒申鐃緒申鐃宿わ申任鐃緒申鐃銃鰹申流鐃曙が鐃熟わ申鐃緒申匹鐃緒申辰鐃緒申鐃

鐃緒申鐃緒申Last-Modified鐃緒申鐃緒申鐃春とわ申鐃盾う鐃循わ申半鐃緒申未覆里任鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申優鐃緒申某鐃緒申鐃緒申弔鐃緒申箸鐃縮居申鐃緒申鐃緒申鐃緒申鐃緒申如鐃緒申鐃緒申鐃緒申弔鐃緒申覆茵o申鐃緒申个某鐃緒申鐃緒申弔鐃緒申覆茵o申鐃緒申个鐃緒申鐃緒申鐃淑¥申

鐃緒申鐃緒申鐃塾ネワ申鐃叔わ申Rack鐃叔器申単鐃淑ワ申鐃竣ワ申鐃緒申辰討鐃緒申鐃緒申複鐃緒申立鐃緒申鐃遵げ鐃緒申Thin鐃緒申動鐃緒申鐃緒申鐃縦つ¥申表鐃緒申Apache鐃緒申鐃緒申mod_proxy_balancer鐃緒申適鐃緒申鐃祝プワ申鐃緒申鐃緒申鐃緒申鐃銃わ申鐃獣て刻申鐃緒申鐃祝わ申鐃緒申鐃緒申Rails鐃夙わ申鐃叔わ申茲鐃緒申鐃塾で器申鐃緒申討襪件申鐃緒申鐃緒申鐃緒申廚鐃緒申里嚢鐃緒申鐃緒申聞鐃緒申鐃緒申鐃緒申鐃

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃粛件申咾任鐃緒申鐃獣とわ申辰討澆鐃緒申鐃緒申辰鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申襦o申鐃緒申鐃緒申箸鐃緒申鐃緒申函鐃Passenger鐃緒申導鐃緒申鐃緒申mod_rails鐃夙わ申mod_rack鐃夙わ申鐃銃ばわ申討襯鐃曙。鐃緒申鐃緒申鐃緒申疋鐃緒申鐃緒申鐃塾ワ申鐃緒申鐃出ではなわ申鐃緒申Apache鐃緒申nginx鐃緒申鐃夙み刻申鐃緒申濃箸鐃緒申鐃緒申鐃緒申廚如鐃緒申僖侫鐃緒申鐃緒申泪鵐垢發緒申鐃淑わ申鐃緒申匹鐃緒申鐃緒申箸鐃緒申廚鐃緒申箸鐃緒申鐃緒申辰鐃淑刻申鐃緒申討鐃緒申里乃鐃緒申砲覆辰討呂鐃緒申鐃緒申鐃緒申任鐃Rails鐃夙わ申覆鐃緒申覆辰討鐃緒申鐃淑わ申鐃淑わ申鐃庶し鐃銃みる機鐃書がなわ申鐃獣わ申鐃塾で¥申鐃緒申鐃塾際つわ申鐃叔わ申鐃緒申鐃夙わ申辰討澆襪鰹申箸砲鐃緒申鐃緒申鐃

鐃緒申鐃緒申牢鐃獣

鐃緒申鐃藷スト¥申鐃緒申砲弔鐃緒申討鐃Passenger鐃塾ペ¥申鐃緒申鐃叔も見鐃銃わ申蕕鐃夙わ申鐃殉わ申鐃緒申鐃縮に駕申鐃塾わ申鐃夙はなわ申鐃緒申gem鐃緒申鐃初イ鐃藷スト¥申鐃緒申任鐃緒申襪件申鐃緒申鐃緒申鐃緒申擇鐃銃るサ鐃緒申鐃緒申(OS鐃緒申Ubuntu 8.04)鐃叔わ申apt-get鐃叔わ申鐃緒申鐃獣わ申鐃緒申鐃獣わ申鐃緒申

鐃緒申如鐃緒申磴鐃出¥申鐃緒申鐃塾よう鐃淑刻申鐃緒申鐃緒申Rack鐃緒申鐃竣リが鐃叔わ申鐃銃わ申鐃夙わ申鐃暑。鐃緒申鐃緒申鐃緒申鵑海両鐃緒申屬鐃rackup鐃緒申鐃緒申鐃緒申鐃緒申未鐃銃逸申鐃緒申里鐃緒申鐃緒申鐃

/var/www/rackapp
         |
         +-- config.ru
         |
         +-- lib/
         |
         +-- view/

鐃叔¥申rackapp.example.org鐃獣てのでワ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申半鐃塾ワ申鐃竣ワ申暴鐃緒申鐃緒申鐃緒申椶鐃処う鐃祝わ申鐃緒申鐃緒申鐃夙わ申鐃暑。鐃殉わ申鐃緒申/var/www/rackapp鐃淑駕申鐃緒申public鐃緒申tmp鐃獣てデワ申鐃曙ク鐃夙ワ申鐃緒申襦public鐃緒申html鐃夙わ申css鐃夙わ申鐃緒申鐃緒申的鐃春ワ申鐃緒申鐃緒申鐃緒申屬鐃緒申鐃所。tmp鐃祝は¥申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申鐃暑け鐃宿¥申restart.txt鐃獣てのわ申鐃瞬わ申鐃銃わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑る。

/var/www/rackapp
         |
         +-- config.ru
         |
         +-- lib/
         |
         +-- view/
         |
         +-- public/
         |
         +-- tmp/
              |
              +-- restart.txt

鐃緒申鐃緒申鐃殉わ申鐃術意でわ申鐃緒申鐃初次鐃緒申Apache鐃緒申鐃緒申鐃所。

<VirtualHost *:80>
ServerName rackapp.example.org
DocumentRoot /var/www/rackapp/public
RackBaseURI /
</VirtualHost>

鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申造砲鐃緒申辰僂蝓o申辰忙鐃緒申鐃薯しなわ申鐃緒申个鐃緒申鐃緒申RACK_ENV=production鐃叔ワ申鐃竣リが鐃緒申動鐃緒申鐃暑。鐃緒申鐃緒申鐃駿わ申鐃緒申鐃緒申鐃緒申呂任鐃緒申襪縁申鼻鐃緒申泙鐃緒申鐃緒申鐃緒申必鐃竣になっわ申鐃夙わ申鐃祝わ申鐃緒申鐃緒申个鐃緒申鐃緒申鐃粛とりあ鐃緒申鐃緒申鐃緒申鐃緒申鐃夙¥申鐃緒申鐃竣ワ申僚鐃緒申鐃緒申鬚靴鐃緒申鐃緒申呂鐃緒申鐃緒申鐃緒申鐃Apache鐃緒申撞鐃銃逸申鐃緒申覆鐃緒申討癲

$ touch tmp/restart.txt

鐃夙わ申鐃緒申辰鐃restart.txt鐃塾ワ申鐃緒申鐃準ス鐃緒申鐃緒申廚鮃洪鐃緒申鐃緒申討鐃緒申鐃Passenger鐃緒申鐃緒申鐃竣ワ申鐃緒申鐃宿み刻申鐃淳わ申鐃銃わ申鐃緒申襦o申鐃緒申錙種申鐃緒申任鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申泪鐃緒申鐃獣縁申鐃緒申鐃緒申茵種申鐃緒申箸鐃緒申廚辰討鐃緒申鐃重わ申鐃獣わ申鐃緒申

鐃淑¥申鐃緒申鐃緒申个覆鐃緒申鐃緒申帖鐃

鐃緒申速鐃緒申鐃緒申妊屮薀鐃緒申鐃緒申鐃初ア鐃緒申鐃緒申鐃緒申鐃緒申鐃銃みわ申鐃初、鐃緒申鐃緒申鐃緒申鐃緒申表鐃緒申鐃緒申鐃緒申覆鐃緒申鐃緒申覆鐃緒申鐃緒申鐃曙。config.ru鐃緒申Rack::Lint鐃緒申use鐃緒申鐃銃わ申鐃緒申鐃緒申鐃宿¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃初そ鐃緒申鐃縦わ申鐃緒申鐃緒申鐃駿刻申个鐃緒申峠鐃緒申鐃緒申鐃淳わ申討襦o申鐃緒申鐃緒申鵝△鐃緒申鐃緒申鼻鐃緒申鐃緒申鐃緒申鐃緒申乏个鐃緒申里覆鐃緒申拗鐃淑ので¥申鐃緒申鐃叔わ申鐃縦わ申Rack::Lint鐃薯外わ申鐃銃みる。鐃銃わ申鐃所エ鐃初ー鐃出わ申鐃緒申鐃緒申襦o申匹鐃緒申鐃初見鐃銃わ申函鐃緒申鐃緒申廛鐃緒申call鐃潤ソ鐃獣ドわ申鐃熟わ申鐃曙たenv鐃緒申鐃緒申Rack::Request鐃緒申鐃緒申箸鐃緒申砲鐃緒申鐃緒申鐃緒申融辧鐃緒申覆砲覆法鐃env['rack.input']鐃緒申rewind鐃潤ソ鐃獣ドわ申無鐃緒申鐃縦¥申

鐃緒申鐃緒申調鐃駿てわ申鐃初、Rack::Request鐃緒申rewind鐃叔わ申鐃緒申IO鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申必鐃竣なわ申鐃緒申鐃緒申鼻鐃Passenger鐃緒申rewind鐃叔わ申鐃淑わ申IO鐃緒申鐃熟わ申鐃銃わ申鐃緒申蕕件申鐃緒申鐃Rack鐃塾鰹申発鐃緒申鐃暑ー鐃竣でわ申鐃緒申鐃緒申砲覆辰討鐃緒申融鐃鐃緒申鐃緒申鐃緒申Rack鐃駿¥申鐃緒申鐃緒申WAF鐃夙わ申鐃緒申辰討鐃夙結構鐃緒申命的鐃緒申鐃緒申福鐃緒申鐃

rewind鐃緒申無鐃緒申鐃緒申鐃緒申鐃旬なら、rewind鐃叔わ申鐃暑オ鐃瞬ワ申鐃緒申鐃緒申鐃夙にわ申鐃緒申鐃純え

鐃夙まわ申鐃縦まりそ鐃緒申鐃緒申鐃緒申鐃獣なわけ鐃叔わ申鐃処。Passenger鐃緒申鐃熟わ申鐃銃わ申鐃緒申IO鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申rewind鐃叔わ申鐃淑わ申鐃淑ら、rewind鐃叔わ申鐃緒申IO鐃緒申鐃瞬ワ申鐃緒申鐃緒申鐃夙わ申鐃術器申鐃緒申鐃緒申覆鐃緒申奪廚鐃緒申鐃淑りし鐃銃わ申鐃殉わ申鐃出わ申鐃緒申鐃巡、鐃夙¥申鐃緒申辰僂鐃銃縁申鐃緒申鐃緒申塙佑鐃緒申討鐃粛もい鐃緒申澆鐃緒申鐃鐃緒申鐃緒申鐃緒申鐃緒申鐃盾そ鐃盾そ鐃塾人わ申鐃緒申鐃薯参考にわ申鐃銃るか鐃夙わ申鐃緒申鐃緒申Rails鐃緒申ActionController鐃塾種申鐃緒申鐃緒申鐃獣わ申鐃所す鐃暑。鐃夙わ申鐃緒申鐃緒け鐃叔¥申鐃緒申鐃緒申砲覆鐃獣てとりあ鐃緒申鐃緒申鐃緒申鐃緒申淵潺疋襯鐃緒申鐃緒申鐃緒申鐃獣てみわ申鐃緒申

# netakit/rewindable_input.rb
module NetaKit
  class RewindableInput
    def initialize(app)
      @app = app
    end
    def call(env)
      unless env['rack.input'].respond_to?(:rewind)
        env['rack.input'] = StringIO.new(env['rack.input'].read)
      end
      @app.call(env)
    end
  end
end
# config.ru
require 'netakit'
require 'netakit/rewindable_input'

use NetaKit::RewindableInput
use Rack::CommonLogger

map '/resource/kanojo' do
  run NetaKit::Resource::Kanojo.new
end

NetaKit鐃緒申鐃緒申faultier.jp鐃緒申動鐃緒申鐃銃るア鐃竣ワ申鐃namespace鐃淑のわ申鐃獣に居申鐃祝わ申鐃淑わ申鐃緒申鐃緒申鐃叔¥申鐃殉わ申鐃緒申鐃緒申粉鐃緒申鐃緒申砲鐃緒申討鐃緒申函鐃rack.input鐃緒申rewind鐃叔わ申鐃淑わ申IO鐃緒申鐃獣わ申鐃夙わ申鐃緒申StringIO鐃緒申鐃術器申鐃緒申鐃銃わ申鐃初ア鐃竣ワ申鐃緒申呂鐃緒申討鐃緒申鐃緒申茲鐃祝なる。鐃緒申辰討澆鐃緒申蕕鰹申鐃叔わ申鐃緒申鐃緒申動鐃緒申鐃処う鐃祝なっわ申鐃緒申鐃殉わ申鐃緒申鐃塾ままわ申鐃緒申鐃緒申鐃熟わ申箸鐃緒申箸鐃淑わ申鐃祝刻申鐃緒申蕕(鐃純え鐃緒申Rack::Response鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申env鐃緒申鐃緒申鐃叔逸申鐃緒申鐃緒申鐃緒申鐃緒申input鐃緒申鐃宿わ申必鐃竣のなわ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申茲鐃淑ミドルウ鐃緒申鐃緒申鐃夙わ申鐃緒申鐃縮わ申鐃銃わ申箸鐃緒申砲任鐃)鐃緒申鐃input鐃緒申read鐃緒申鐃緒申鐃緒申辰謄鐃緒申譴駕申覆里如鐃緒申鐃緒申鐃緒申箸鐃緒申鐃緒申鐃夙思っわ申鐃初何鐃緒申鐃塾ワ申鐃瞬ワ申鐃緒申鐃緒申鐃夙でワ申奪廚鐃緒申討鐃獣て呼ばれた鐃夙わ申鐃緒申鐃術器申鐃緒申鐃緒申鐃緒申茲鐃祝わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃盾。鐃純え鐃出わ申鐃獣わ申鐃緒申CloudKit鐃緒申鐃夙わ申鐃緒申鐃緒申鐃緒申房鐃緒申鐃緒申鐃緒申討鐃鐃夙わ申鐃緒申鐃殉わ申鐃緒申鐃緒申暴颪い鐃緒申里任鐃銃逸申鐃緒申辰鐃緒申鐃銃逸申鐃緒申里任鐃緒申遒件申鐃緒申戮覆藹淑鐃緒申鐃緒申鐃宿¥申

鐃緒申鐃緒申擺鐃緒申漏里鐃緒申鐃

鐃夙わ申鐃緒申鐃緒け鐃叔意鰹申鐃祝種申屬匹辰鐃Passenger鐃出縁申鐃緒申鐃獣わ申鐃緒申鐃緒申鐃緒申鼻鐃rack.input鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃出器申単鐃緒申鐃緒申鐃緒申任鐃緒申鐃緒申罅刻申匹鐃緒申鐃塾鐃緒申鐃遵げ鐃緒申廛鐃緒申鐃緒申鐃緒申鐃緒申鐃縦器申鐃緒申箸鐃緒申鐃Apache鐃緒申鐃緒申鐃緒申砲鐃獣てわ申鐃緒申鐃緒け鐃緒申鐃緒申鐃緒申鐃緒申的鐃春ワ申鐃緒申鐃緒申魯鐃緒申廛鐃緒申未鐃緒申覆鐃緒申鐃緒申屬鐃緒申茲鐃祝わ申鐃緒申里砲鐃緒申辰鐃緒申鐃緒申蠅鐃竣わ申覆鐃緒申里鐃准わ申鐃緒申動鐃緒申鐃緒申鐃塾わ申Apache鐃緒申鐃緒申鐃淑のわ申余鐃竣なわ申鐃夙考わ申鐃淑わ申鐃叔済むし鐃緒申鐃緒申鐃淑¥申

鐃緒申鐃緒申鐃緒申鐃緒申鐃出¥申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申戮鐃Apache Bench鐃緒申Passenger鐃緒申Thin+mod_proxy_balancer鐃夙のパフワ申鐃緒申鐃殉ワ申鐃緒申戮討澆鐃緒申鐃緒申鐃緒申鐃宿¥申鐃瞬っわ申鐃純け鐃舜ど削申鐃熟なわ申鐃緒申鐃夙醐申鐃獣てわ申/resource/kanojo鐃祝ひわ申鐃緒申鐃緒申GET鐃所ク鐃緒申鐃緒申鐃緒申鐃緒申鐃獣てわ申鐃舜わ申鐃緒申的鐃淑レス鐃楯ンスわ申鐃瞬わ申鐃緒申鐃緒申鐃淑のわ申鐃緒申鐃緒申鐃祝誌申鐃緒申鐃緒申鐃駿¥申同鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃巡し鐃銃みわ申鐃緒申禊鰹申鐃緒申佑鐃緒申鐃獣てわ申鐃緒申鐃宿¥申Thin鐃緒申立鐃緒申鐃遵げ鐃銃わ申廛鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃術わ申辰討鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿わ申鐃緒申鐃渋縁申鐃術になわ申鐃Passenger鐃塾常申鐃叔わ申發鐃緒申鐃淑フワ申鐃緒申鐃塾鐃銃てわ申鐃祝ょご鐃祝わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃淑わ申鐃緒申Rails鐃夙わ申Merb鐃夙わ申鐃叔わ申鐃緒申鐃獣とワ申鐃竣ワ申鐃夙わ申如鐃mongrel鐃緒申lighttpd鐃緒申WEBrick鐃緒申fcgi鐃夙わ申鐃緒申鐃緒申鐃庶し鐃銃みなわ申鐃夙駕申鐃夙わ申鐃緒申鐃緒申颪ぁ鐃緒申朕佑悩鐃獣わ申鐃緒申里鐃緒申蕕わ申鐃緒申辰鐃緒申鐃Passenger鐃塾わ申鐃緒申襪鰹申半鐃緒申覆鐃緒申討鐃緒申鐃准わ申鐃盾、鐃緒申鐃初い鐃祝は思っわ申鐃緒申鐃緒申鐃夙まわ申鐃緒申鵐織襯居申鐃緒申个鐃緒申辰鐃緒申鐃銃種申鐃緒申鐃竣リケ鐃緒申鐃緒申鐃緒申鵐機鐃緒申亠鐃銃逸申鐃緒申鐃緒申鐃夙わ申鐃緒申鐃緒申鐃淑わ申鐃緒申鐃緒申鐃緒申鐃緒申鐃宿¥申Apache鐃緒申鐃夙み刻申鐃緒申鐃緒申覆鐃緒申鐃緒申鐃夙わ申鐃銃わ申鐃緒申鐃夙わ申鐃緒申鐃夙わ申鐃緒申鐃所そ鐃緒申鐃緒申鐃殉わ申鐃緒申直鐃宿っわ申鐃叔もい鐃緒申鐃淑¥申鐃夙りあ鐃緒申鐃緒申鐃緒申鐃出らくPassenger鐃叔縁申鐃術わ申鐃銃みよう鐃緒申

鐃緒申鐃緒申浚愀鐃緒申覆鐃緒申鐃緒申鐃

rack.input鐃緒申鐃緒申調鐃駿てわ申鐃緒申鐃祝駈申鐃緒申辿鐃緒申鐃春わ申鐃緒申CloudKit鐃緒申鐃緒申鐃緒申辰筏鐃緒申砲覆襦o申鐃緒申鬚修鐃緒申鐃緒申鐃緒申鐃atomserver鐃緒申鐃塾に誌申鐃粛になりそ鐃緒申鐃緒申鐃緒申鐃夙でわ申鐃緒申鐃獣てみよう鐃緒申

鐃緒申鐃緒申鐃塾ペ¥申鐃緒申鐃塾トップワ申