<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>大徳日記 &#187; Ruby</title>
	<atom:link href="http://www.saitoudaitoku.com/wordpress/?cat=16&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.saitoudaitoku.com/wordpress</link>
	<description>飲むのが好きなパソコンお○くの日記</description>
	<lastBuildDate>Thu, 01 Sep 2011 14:18:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Rails 2.3でのSessionの有効期限を延ばす方法</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=925</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=925#comments</comments>
		<pubDate>Tue, 26 May 2009 13:43:42 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=925</guid>
		<description><![CDATA[あまり、ネットで検索しても出てこないのでメモ。Railsのセッション(Cookie)はブラウザーが終了すると消えてしまう。で、ブラウザーが終了した後も残す方法だが、以前のRails(おそらく2.2以前）だと、enviro [...]]]></description>
			<content:encoded><![CDATA[<p>あまり、ネットで検索しても出てこないのでメモ。Railsのセッション(Cookie)はブラウザーが終了すると消えてしまう。で、ブラウザーが終了した後も残す方法だが、以前のRails(おそらく2.2以前）だと、environment.rbあたりに次のように書く。</p>
<blockquote><p>ActionController::Base.session_options[:session_expires] = Time.local(2009, 1)
</p></blockquote>
<p>詳しくは以下のサイトにある。</p>
<p><a href="http://d.hatena.ne.jp/zariganitosh/20081001/1222841011">sessionに有効期限を設定する時の試練 &#8211; ザリガニが見ていた&#8230;。</a></p>
<p>が、やってみても思ったようにいかず、ブラウザーを終了するとセッションも失われてしまう。いろいろとネットを検索してみたところ、次のページにたどりついた。</p>
<p><a href="http://groups.google.co.jp/group/rubyonrails-talk/browse_thread/thread/fad938718ac26e23">Active Record Session expiration in Rails 2.3 &#8211; Ruby on Rails: Talk | Google グループ</a></p>
<p>いわく、</p>
<blockquote><p>Oh, I found the reason</p>
<p>:session_expires has been replaced by :expire_after. </p></blockquote>
<p>とのこと。確認していないが、expire_afterてことは、最後にアクセスしてからの有効期間が指定出来るのだろうか？</p>
<p>（追記）↑出来るようです。リロードするたびにCookieのexpire日次が更新されてます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=925</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handbrakeの自動スクリプト</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=544</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=544#comments</comments>
		<pubDate>Sun, 07 Sep 2008 13:36:48 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=544</guid>
		<description><![CDATA[Handbrakeを使うとISO→mp4変換ができるのだが、字幕や音声を手動で選ぶのは面倒なのでスクリプト作ってみました。常時起動しているLinuxなどでcron起動すると寝ている間に勝手に変換してくれ、iPhone/i [...]]]></description>
			<content:encoded><![CDATA[<p>Handbrakeを使うとISO→mp4変換ができるのだが、字幕や音声を手動で選ぶのは面倒なのでスクリプト作ってみました。常時起動しているLinuxなどでcron起動すると寝ている間に勝手に変換してくれ、iPhone/iPod touchに入れて持ち歩けます。</p>
<p><a href="/iso2mp4.rb">iso2mp4.rb</a></p>
<p>rubyの実行環境とコマンドライン版Handbrake(Linux版を想定だがWindowsでも動くかも）が必要です。使い方はとても簡単で、拡張子が&#8221;ISO&#8221;のファイルを引数（複数可）にして起動するだけ。</p>
<p>音声と字幕の選択ロジックは、次の通り。私の場合、これでだいたいいけます。英語の勉強をするので英語の字幕がいる、字幕なんていらないと言う人はちょっと修正が必要ですな。</p>
<ol>
<li>タイトルは20分(スクリプト61行目で変更可）以上のものだけをピックアップ</li>
<li>音声に日本語以外が入っていると非日本語ムービーと見なし、音声は非日本語、日本語で2トラックをピックアップして字幕は日本語</li>
<li>音声に日本語以外が入っていないと日本語ムービーと見なし、音声は日本語で字幕なし</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=544</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyKaigi2008終わりました</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=522</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=522#comments</comments>
		<pubDate>Sun, 22 Jun 2008 14:49:44 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=522</guid>
		<description><![CDATA[二日目もほとんど最後まで出席しました。終わってから思ったのは発表者の選定がRubyの全分野を網羅するようにものすごく考えられていたこと。おかげで二日間聞いているとRuby全般についてかなり網羅できたと思う。ま、消化が大変 [...]]]></description>
			<content:encoded><![CDATA[<p>二日目もほとんど最後まで出席しました。終わってから思ったのは発表者の選定がRubyの全分野を網羅するようにものすごく考えられていたこと。おかげで二日間聞いているとRuby全般についてかなり網羅できたと思う。ま、消化が大変なわけだが。</p>
<p>これだけのコミュニティに成長したRubyを育てた松本さんももちろんすごいのだが、これだけのコミュニティを育てたRubyコミュニティの人にも本当に頭が下がる思いです。またRubyKaigiを運営したスタッフの皆様おつかれさまでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=522</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>no configuration is good configuration</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=520</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=520#comments</comments>
		<pubDate>Sun, 22 Jun 2008 01:32:09 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=520</guid>
		<description><![CDATA[RubyKaigiでの田中さんのセッションの「Matzを説得する方法」の中で出てきた言葉。可能な限りシステムで自動調整させてユーザーの負担を減らすべし！ということだろう。 また名前にはものすごいこだわりがあって、機能はは [...]]]></description>
			<content:encoded><![CDATA[<p>RubyKaigiでの田中さんのセッションの「Matzを説得する方法」の中で出てきた言葉。可能な限りシステムで自動調整させてユーザーの負担を減らすべし！ということだろう。</p>
<p>また名前にはものすごいこだわりがあって、機能ははっきりしていても名前が決まらないと実装されないらしい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=520</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyKaigi2008@つくば</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=519</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=519#comments</comments>
		<pubDate>Sat, 21 Jun 2008 22:30:43 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=519</guid>
		<description><![CDATA[週末はRubyのカンファレンスRubyKaigi2008に参加するために「つくば」まで来てる。つくばエクスプレスって早いですなー。朝は少し寝坊したものの、１日目はほぼすべてのセッションを聞いて懇親会まで参加。そして家に帰 [...]]]></description>
			<content:encoded><![CDATA[<p>週末はRubyのカンファレンスRubyKaigi2008に参加するために「つくば」まで来てる。つくばエクスプレスって早いですなー。朝は少し寝坊したものの、１日目はほぼすべてのセッションを聞いて懇親会まで参加。そして家に帰るのが面倒なのでビジネスホテルに宿泊。←今ここ</p>
<p>当日の詳しい様子は次をどうぞ。</p>
<p><a href="http://gihyo.jp/news/report/01/rubykaigi2008/0001">RubyKaigi2008 スペシャル★レポート：RubyKaigi2008 1day Photoレポート［随時更新］｜gihyo.jp … 技術評論社</a></p>
<p>松本さんの基調講演の質問タイムでささださんの「Matzにっきはどうしたのか？」の質問に会場から拍手。Rubykaigiのエントリーから再開するとかしないとか。</p>
<p>面白いという意味ではライトニングトークスが一番面白かったし感動したし共感した。他にはMacを使ってのデモをまじえてのプレゼンが異常にスムーズな人が何人かいてとても感動。</p>
<p>またメインセッションの会場で参加者（会場では無線LANが提供）によるまるでニコニコ動画のようなつっこみチャット(IRC)がメインのスクリーンの横の小さなスクリーンでリアルタイムで表示されていたのがかなり良かった。</p>
<p>懇親会では、いろいろな人に「仕事でRuby使ってますか？」と聞いてみたところ、「まずは社内システムから」とかやはりパフォーマンスで手こずるとかいろいろ。</p>
<p>というわけで今から朝ご飯食べて２日目に参加。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=519</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>久しぶりのPerl</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=486</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=486#comments</comments>
		<pubDate>Wed, 02 Apr 2008 12:32:19 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=486</guid>
		<description><![CDATA[仕事で久しぶりにPerlのスクリプトを書きました。最近は仕事でも自分しか使わないスクリプトは全部Rubyで書いているのでちょっとリハビリが必要。以下、当たり前ですが、 ステートメントの最後にセミコロンが必要 変数、配列、 [...]]]></description>
			<content:encoded><![CDATA[<p>仕事で久しぶりにPerlのスクリプトを書きました。最近は仕事でも自分しか使わないスクリプトは全部Rubyで書いているのでちょっとリハビリが必要。以下、当たり前ですが、</p>
<ul>
<li>ステートメントの最後にセミコロンが必要</li>
<li>変数、配列、ハッシュには$, @, %が必要</li>
<li>空の配列作成は()は、無名配列は[]</li>
<li>オブジェクト指向でないので join(&#8220;,&#8221;, @array)なのかjoin(@array, &#8220;,&#8221;)なのか悩む</li>
</ul>
<p>ここを参考にしました。</p>
<p><a href="http://f14.aaa.livedoor.jp/%7Eteriyaki/wiki/index.php?%5B%5B%B8%C0%B8%EC%CA%B8%CB%A1%C8%E6%B3%D3%5D%5D">TeriyakiWiki &#8211; 言語文法比較</a></p>
<p>まったく容赦なくセミコロンが抜けまくりです。が、すぐに勘が戻ってきました。ふー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=486</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>歯抜け配列からハッシュの配列を作りたい</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=452</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=452#comments</comments>
		<pubDate>Thu, 07 Feb 2008 18:24:59 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=452</guid>
		<description><![CDATA[RubyでWILLCOMから取り出した電話帳データのCSVの処理を書いたのだが、ちょっと面白い処理があった。読み込んだCSVは読みとかグループとかいらない情報が多いので、電話番号とかメアドとかいる情報だけ抜き出したい。次 [...]]]></description>
			<content:encoded><![CDATA[<p>RubyでWILLCOMから取り出した電話帳データのCSVの処理を書いたのだが、ちょっと面白い処理があった。読み込んだCSVは読みとかグループとかいらない情報が多いので、電話番号とかメアドとかいる情報だけ抜き出したい。次のような何列目に必要なデータがあるかを格納したハッシュとCSVから抜き取った2次元配列から、</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">target = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">1</span>, <span style="color:#ff3333; font-weight:bold;">:phone</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#125;</span>
csvarray = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;hoge&quot;</span>, <span style="color:#996600;">&quot;&quot;</span>, <span style="color:#996600;">&quot;070-1111-2222&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
             <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;huga&quot;</span>,  <span style="color:#996600;">&quot;&quot;</span>, <span style="color:#996600;">&quot;080-2222-3333&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>

<p>次のようなハッシュの配列に変換したい。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:name</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;hoge&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:phone</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;070-1111-2222&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span>,
 <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:name</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;huga&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:phone</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;080-2222-3333&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>

<p>最初に書いたのがこれ。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 1 Array#each + Hash.each</span>
a = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
csvarray.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span>
  h = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
  target.<span style="color:#9900CC;">each</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>k,v<span style="color:#006600; font-weight:bold;">|</span> h<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> = r<span style="color:#006600; font-weight:bold;">&#91;</span>v<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
  a <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">&lt;</span> h
<span style="color:#9966CC; font-weight:bold;">end</span>
pp a</pre></div></div>

<p>Array#mapを使ってこれを1行にするとこうなる。</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 2 Array.map + Hash.each</span>
pp csvarray.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span> h = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>; target.<span style="color:#9900CC;">each</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>k,v<span style="color:#006600; font-weight:bold;">|</span> h<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> = r<span style="color:#006600; font-weight:bold;">&#91;</span>v<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span>; h<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>で、<a href="http://blog.s21g.com/articles/324">それをinjectでやる方法</a>を見て感動して改良したのがこれ。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 3 Array#map + Array#inject</span>
pp csvarray.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span> target.<span style="color:#9900CC;">keys</span>.<span style="color:#9900CC;">inject</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>h,k<span style="color:#006600; font-weight:bold;">|</span> h.<span style="color:#9900CC;">merge</span> k <span style="color:#006600; font-weight:bold;">=&gt;</span> r<span style="color:#006600; font-weight:bold;">&#91;</span>target<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>せっかくのハッシュなのにキーで抜いてきてまたブロック内でまたtarget[k]にアクセスしているのがちょっと残念なのでHash#mapを使ってみる。2次元配列をflattenで1次元配列に変換して*で多重代入にしてHash[]でハッシュを作成している。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 4 Array#map + Hash#map</span>
pp csvarray.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC00FF; font-weight:bold;">Hash</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">*</span>target.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>k,v<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#91;</span>k, r<span style="color:#006600; font-weight:bold;">&#91;</span>v<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">flatten</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>苦しい、苦しいです。Hash#injectなんてあるのかよと思ったが、HashもEnumerableだからあるんです。ブロックパラメーターpにはkeyとvalueが配列で格納される。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 5 Array#map + Hash#inject #1</span>
pp csvarray.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span> target.<span style="color:#9900CC;">inject</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>h,<span style="color:#CC0066; font-weight:bold;">p</span><span style="color:#006600; font-weight:bold;">|</span> h.<span style="color:#9900CC;">merge</span> <span style="color:#CC0066; font-weight:bold;">p</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> r<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC0066; font-weight:bold;">p</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>これはpを(k, v)で受ければよさそうということでたどり着いたのがこれ。美しい！</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># pattern 6 Array#map + Hash#inject #2</span>
pp csvarray.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>r<span style="color:#006600; font-weight:bold;">|</span> target.<span style="color:#9900CC;">inject</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>h,<span style="color:#006600; font-weight:bold;">&#40;</span>k,v<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">|</span> h.<span style="color:#9900CC;">merge</span> k <span style="color:#006600; font-weight:bold;">=&gt;</span> r<span style="color:#006600; font-weight:bold;">&#91;</span>v<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p><strong>でも、結局pattern 2が一番長さが短いのね。ちょっとがっくり。</strong>これだけでも結構遊べました。Rubyって面白いですねー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=452</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetBeans+Rails</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=445</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=445#comments</comments>
		<pubDate>Wed, 30 Jan 2008 17:34:54 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=445</guid>
		<description><![CDATA[前にSIM氏も絶賛していたし、昨日もAR氏もなかなかいいといっていたのでNetBeansを入れて試してみた。以下、メモ インストールする前にあらかじめJDK 5かJDK 6をインストールしておく必要あり ダウンロードパッ [...]]]></description>
			<content:encoded><![CDATA[<p>前にSIM氏も絶賛していたし、昨日もAR氏もなかなかいいといっていたのでNetBeansを入れて試してみた。以下、メモ</p>
<ul>
<li>インストールする前にあらかじめJDK 5かJDK 6をインストールしておく必要あり</li>
<li>ダウンロードパッケージはRubyを選択</li>
<li>Tools -&gt; Plugins -&gt; Updatesはしてもいい</li>
<li>Tools -&gt; Ruby Gems -&gt; Updatesはだめ。Rails 2が入ってしまって動かなくなる</li>
<li>JDKに付属のDerby(Embedded)を使うにはC:\Program Files\Sun\JavaDB\lib\derby.jarをC:\Program Files\NetBeans 6.0\ruby1\jruby-1.0.2\libにコピー</li>
<li>テーブルの中身を見るためにはDerbyのURLを指定する必要があるが、相対パスのjdbc:derby:db/development.dbだとうまくいかないべたにjdbc:derby:C:\Users\daitoku\Documents\NetBeansProjects\RailsApplication\db\development.dbとするとなんとか。スキーマはSA</li>
</ul>
<p>SQLite3を使ってからというものすっかりサーバー起動が不要なファイル形式が好きになってしまった。もはやcreate dbもcreate tableも打たなくてもいいのはものぐさな私としては実に魅力的。１００件ぐらいしか入っていない開発用DBにクラサバのリレーショナルDBなんて１００年早いわっなどと思う。しかも勝手にSQLite3やDerbyって簡易的なDBだから相関副照会やOuter Joinって使えないと思っていたら問題なく使えるようだ。</p>
<p>さて肝心のIDEの機能だがちょっと触ってみた感じではEclipseっぽくコード補完もしてくれるしなかなかである。そのうちRails 2にも対応するでしょう。それにしても家の２４インチのモニターでIDEが動いているのを初めて見たのだがとってもステキでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=445</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby談義＠新宿</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=444</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=444#comments</comments>
		<pubDate>Wed, 30 Jan 2008 15:45:24 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=444</guid>
		<description><![CDATA[Ruby談義をということでNAIST時代のAR氏と新宿でタイ料理。確かザガットサーベイにも載っているピッチーファーというタイ料理店なのだがいつのまにか広い2号店が出来ておりその2号店で食事。その名もピッチーファー2th。 [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby談義をということでNAIST時代のAR氏と新宿でタイ料理。確かザガットサーベイにも載っているピッチーファーというタイ料理店なのだがいつのまにか広い2号店が出来ておりその2号店で食事。その名もピ<a href="http://gourmet.yahoo.co.jp/0006711139/M0013016690/">ッチーファー2th</a>。英語がさほど得意でもない私でもそれって2ndの間違いでは？とつっこみたくなる。&#8221;2th&#8221;なる単語があるのかと思い検索してみたらこの店のページが1番上だった。うーん。</p>
<p>で、Rubyだけでなくいろいろとディープな話をしてたらあっという間に終電の時間。とても楽しかったです。それにしても２軒目に行ったドイツのビールの店は高かった。おいしかったけど。で、その店でドイツワインの赤というものをはじめて飲んだらなかなかだった。実は有名なのだろうか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=444</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTful Webサービス</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=436</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=436#comments</comments>
		<pubDate>Wed, 16 Jan 2008 19:53:17 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[書評]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=436</guid>
		<description><![CDATA[何かと話題な本なのでプチッとクリックして英語版を買って積読していたのだが、昨年末に本屋で日本語版を見つけて泣きながらレジに…。 主張は、「インターネットでWebサービスを公開するんだったら、メソッドを公開するよりも、 U [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/redirect.html%3FASIN=4873113539%26tag=saitoudaitoku-22%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/4873113539%253FSubscriptionId=1N9AHEAQ2F6SVD97BE02" title="Click and drag this image to the post editor"><img src="http://ecx.images-amazon.com/images/I/21RXsMNvdwL.jpg" align="left" hspace="10" vspace="10" width="123" /></a>何かと話題な本なのでプチッとクリックして英語版を買って積読していたのだが、昨年末に本屋で日本語版を見つけて泣きながらレジに…。</p>
<p>主張は、「インターネットでWebサービスを公開するんだったら、メソッドを公開するよりも、 URIにマッピングしてリソースをいろいろ公開したほうがいいよ。そうすると、リソースにブックマークできるし、URLを他人に知らせることが出来るし、リソース同士で相互にリンクも張ることでプログラムがリンクをたどれるし。あとHTTPにはちょうどいい感じでCRUD(Create, Read, Update, Delte)に相当するメソッド(Post, Get, Put, Delete)があるから、公開するリソースへのアクセスはこれらのHTTPのメソッドを使ってさ。で、このコンセプトをROA(Resource Oriented Architecture)と呼ぼうぜ！」といったところか。</p>
<p>これを読むと沸々と「リソースに全部URIをつけて公開するのはいいと思う。意味のあるURLは分かりやすいし。そう思うとWebサービスでない普通のWebアプリもこの規約に従えば、いいことはあっても悪いことはないのではないだろうか？さしてポリシーも無くURLを決めるぐらいだったら、WebアプリでもURLに関してはRESTfulにしちゃってもいいのでは？後でそのままWebサービスとして公開するのも簡単だし。」</p>
<p>などと思ったりしていたのだが、Railsはすでにそうなっていた。以下、<a href="http://peepcode.com/products/rails2-pdf">Rails2 PDF</a>より</p>
<blockquote><p>Rails 2 makes no apologies for its all-in attitude about RESTful development and replaces the standard script/generate scaffold with the scaffold_resource functionality from 1.2. The general attitude　seems to be &#8220;Why wouldn&#8217;t you want to create RESTful scaffolding?&#8221;.<br />
There&#8217;s not much not to like with the RESTful generation – giving you RESTful forms in the view templates and the appropriate RESTful structure in your controllers.</p></blockquote>
<p>教訓：英語版の技術書を買うんだったら和訳が出るまでに読みきらないと悲しい結果になる</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=436</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rails勉強会@東京第25回に行ってきました</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=424</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=424#comments</comments>
		<pubDate>Mon, 17 Dec 2007 15:31:36 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=424</guid>
		<description><![CDATA[最近、Rubyという言語とRuby on Railsというフレームワークにはまって趣味で勉強してたりするのだが、いかんせん周りにほとんど詳しい人がいないのでつまらん！というわけで週末にRails勉強会なるものに参加してき [...]]]></description>
			<content:encoded><![CDATA[<p>最近、Rubyという言語とRuby on Railsというフレームワークにはまって趣味で勉強してたりするのだが、<strong>いかんせん周りにほとんど詳しい人がいないのでつまらん！</strong>というわけで週末に<a href="http://wiki.fdiary.net/rails/?RailsMeetingTokyo-0025">Rails勉強会</a>なるものに参加してきました。</p>
<p>勉強会の流れは前半と後半２つのセッションにわかれており、事前あるいは当日にみんなで議論してセッション内容を決め、希望者に合わせて前半、後半の時間割と部屋割りをその場で決めてそれぞれ自分の好きなセッションに参加できる形式。運営は非常に完成度が高く初参加の私でも気持ちよく参加できました。</p>
<p>前半のセッションは、Yuumi3さんの初心者セッションに参加。パソコンの無い私は教科書を忘れた小学生のようにテスト駆動開発で有名なt-wadaさんのパソコンで見せてもらう。どうもです。&gt;t-wadaさん。先生を入れて4人という少人数なのでいろいろ聞けました。以下、独学ではなかなか学べない収穫。</p>
<ul>
<li>Scaffoldは&#8221;スカフォード&#8221;と発音するらしい</li>
<li>RailsのマニュアルはRDocなので自分ローカルで生成できる</li>
<li>SQLite3はDBの起動もDB作成も不要なので小規模開発にはお手軽</li>
<li>script/generate modelは引数で一気にカラムも指定できる（こういうのがうれしい）</li>
<li>script/consoleが便利</li>
<li>統合環境はまだいまひとつで玄人はだいたいvimかemacsでマクロ</li>
<li>DSLにはオレオレDSLと言語内DSLがある</li>
</ul>
<p>後半のセッションは、ほぼ全員が目当てにしている笹田さんの1.9の基調講演セッション。やはり1.9.1はクリスマスに出るとのこと。その他、細かい言語使用をどうするかについての熱い議論。一番、おおっと思ったのはブロックパラメーターがブロックローカルになるとかそのあたりの話。</p>
<p>それにしても一人で知り合いもいない趣味の集まりに行ったのははじめてかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=424</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
