<?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/"
	>

<channel>
	<title>sakatam blog</title>
	<atom:link href="http://blog.sakatam.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sakatam.net</link>
	<description>日々の備忘録として</description>
	<pubDate>Wed, 06 Jan 2010 14:53:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>【Ruby】UDPマルチキャスト送信で Errno::EADDRNOTAVAIL</title>
		<link>http://blog.sakatam.net/2010/01/ruby-udp-multicast-caused-error/</link>
		<comments>http://blog.sakatam.net/2010/01/ruby-udp-multicast-caused-error/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 02:43:52 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[error]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[snowleopard]]></category>

		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=199</guid>
		<description><![CDATA[Mac を Snow Leopard 化してから、UDPマルチキャスト送信時に以下のエラーが起きるようになってしまいました。

Errno::EADDRNOTAVAIL: Can't assign requested a [...]]]></description>
			<content:encoded><![CDATA[<p>Mac を Snow Leopard 化してから、UDPマルチキャスト送信時に以下のエラーが起きるようになってしまいました。<br />
<code><br />
Errno::EADDRNOTAVAIL: Can't assign requested address - sendto(2)<br />
</code><br />
使用しているRubyのバージョンは 1.8.7 p174。<br />
<span id="more-199"></span><br />
具体的なコードは以下の通りです（簡略化してます）：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'ipaddr'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Multi-cast IP</span>
ip = <span style="color:#996600;">&quot;224.0.0.10&quot;</span>
port = <span style="color:#006666;">9876</span>
maddr = IPAddr.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>ip<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">hton</span> <span style="color:#006600; font-weight:bold;">+</span> IPAddr.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'0.0.0.0'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">hton</span>
<span style="color:#008000; font-style:italic;"># UDPソケットオブジェクトを作る</span>
sock = UDPSocket.<span style="color:#9900CC;">new</span>
sock.<span style="color:#9900CC;">setsockopt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Socket::SOL_SOCKET</span>,<span style="color:#6666ff; font-weight:bold;">Socket::SO_REUSEADDR</span>,<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
sock.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span>ip, port<span style="color:#006600; font-weight:bold;">&#41;</span>
sock.<span style="color:#9900CC;">setsockopt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Socket::IPPROTO_IP</span>, <span style="color:#6666ff; font-weight:bold;">Socket::IP_ADD_MEMBERSHIP</span>, maddr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># メッセージを送信</span>
sock.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'hello'</span>, <span style="color:#006666;">0</span>, ip, port<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_s</span></pre></div></div>

<p>Leopard では問題なかったのになぜ？？<br />
小一時間を費やして試行錯誤した結果、マルチキャスト用のネットワークインターフェイスを指定してあげることで問題解決できることが分かりました。</p>
<p>改良版のコードは以下の通り：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'ipaddr'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Multi-cast IP</span>
ip = <span style="color:#996600;">&quot;224.0.0.10&quot;</span>
port = <span style="color:#006666;">9876</span>
maddr = IPAddr.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>ip<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">hton</span> <span style="color:#006600; font-weight:bold;">+</span> IPAddr.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'0.0.0.0'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">hton</span>
<span style="color:#008000; font-style:italic;"># UDPソケットオブジェクトを作る</span>
sock = UDPSocket.<span style="color:#9900CC;">new</span>
sock.<span style="color:#9900CC;">setsockopt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Socket::SOL_SOCKET</span>,<span style="color:#6666ff; font-weight:bold;">Socket::SO_REUSEADDR</span>,<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
sock.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span>ip, port<span style="color:#006600; font-weight:bold;">&#41;</span>
sock.<span style="color:#9900CC;">setsockopt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Socket::IPPROTO_IP</span>, <span style="color:#6666ff; font-weight:bold;">Socket::IP_ADD_MEMBERSHIP</span>, maddr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># IFを指定（この場合はループバック）</span>
sock.<span style="color:#9900CC;">setsockopt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Socket::IPPROTO_IP</span>, <span style="color:#6666ff; font-weight:bold;">Socket::IP_MULTICAST_IF</span>, IPAddr.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'127.0.0.1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">hton</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># メッセージを送信</span>
sock.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'hello'</span>, <span style="color:#006666;">0</span>, ip, port<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_s</span></pre></div></div>

<p>原因はよく分かりませんが、エラーメッセージから察するにネイティブコールでの問題のようですね。<br />
差し当たりこの方法で解決できたので、Snow Leopard からの UDP Multicast で同様のエラーに遭遇された方は参考にしてみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2010/01/ruby-udp-multicast-caused-error/feed/</wfw:commentRss>
		</item>
		<item>
		<title>【Mac OSX】Quicksilver でファイルの親フォルダを開く方法</title>
		<link>http://blog.sakatam.net/2009/11/how-to-open-parent-directory-of-certain-file-in-quicksilver/</link>
		<comments>http://blog.sakatam.net/2009/11/how-to-open-parent-directory-of-certain-file-in-quicksilver/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 07:25:44 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[quicksilver]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=192</guid>
		<description><![CDATA[Mac OSX の便利なランチャーソフト Quicksilver（クイックシルバー）で、ファイルの含まれるフォルダを Finder で開く方法が分かったのでメモ。ずーっと知りたかった操作なんですが、最近ようやく分かって非 [...]]]></description>
			<content:encoded><![CDATA[<p>Mac OSX の便利なランチャーソフト Quicksilver（クイックシルバー）で、ファイルの含まれるフォルダを Finder で開く方法が分かったのでメモ。ずーっと知りたかった操作なんですが、最近ようやく分かって非常に重宝してます。<br />
<span id="more-192"></span></p>
<ol>
<li>ファイル名をタイプして対象ファイルを特定する。</li>
<li>Command キーを押しながら Enter を押す。</li>
<li>以上〜。</li>
</ol>
<p>どうも spotlight でも同様のキーで対象のファイルを Finder で表示できるらしいです。全然知らなかった。。</p>
<p>お困りの方がいたら参考にして頂ければ幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/11/how-to-open-parent-directory-of-certain-file-in-quicksilver/feed/</wfw:commentRss>
		</item>
		<item>
		<title>【port / MacPorts】curl で https を使う方法</title>
		<link>http://blog.sakatam.net/2009/09/using-https-connection-on-curl-mac-port/</link>
		<comments>http://blog.sakatam.net/2009/09/using-https-connection-on-curl-mac-port/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 06:50:47 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[port]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=187</guid>
		<description><![CDATA[テストで curl コマンドを使っていて、SSL 接続に限定している API を呼ぼうとして上手くいかなかった時のメモ。２ステップで解決しました。

 port のコンパイルオプションを&#8211;without-ss [...]]]></description>
			<content:encoded><![CDATA[<p>テストで curl コマンドを使っていて、SSL 接続に限定している API を呼ぼうとして上手くいかなかった時のメモ。２ステップで解決しました。</p>
<ol>
<li> port のコンパイルオプションを&#8211;without-ssl から &#8211;with-ssl に変更して再インストールする</li>
<li> curl 呼び出し時には -k オプションで証明書のチェックを省略する</li>
</ol>
<p>参考にさせていただいたページ： http://hikariworks.jp/blog/2009/01/09/curl%E3%81%AEssl%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/09/using-https-connection-on-curl-mac-port/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NASに保存したTimeMachineバックアップからMacを復元インストールする方法</title>
		<link>http://blog.sakatam.net/2009/08/how-to-restore-timemachine-backup-stored-on-nas/</link>
		<comments>http://blog.sakatam.net/2009/08/how-to-restore-timemachine-backup-stored-on-nas/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 13:22:39 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[linkstation]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[nas]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=163</guid>
		<description><![CDATA[このページを参考にしつつ、我が家の MacBook Air のバックアップを linkstation / LS-WHGL に設定してみました。
数日後にバックアップからの復元インストールを行ったのですが、一点ハマった箇所 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zqwoo.jp/sak_bfqa/show_c/BUF17437#1" target="_blank">このページ</a>を参考にしつつ、我が家の MacBook Air のバックアップを linkstation / LS-WHGL に設定してみました。</p>
<p>数日後にバックアップからの復元インストールを行ったのですが、一点ハマった箇所があったので忘れないうちにメモしておきます。<br />
NAS上のTimeMachineバックアップからの復元に挑戦する前に、是非ともご一読ください。<br />
<span id="more-163"></span></p>
<h3>インストールの開始</h3>
<p>開始の手順は通常の再インストールと変わりません。<br />
別のMac の DVDドライブ からリモートインストールしたので、option キーを押しながら起動。Wi-Fi 経由で共有された Mac OS インストールディスク に接続。<br />
あとは言語選択まで普通にすすめて大丈夫です。</p>
<h3>★Time Machineディレクトリのマウント</h3>
<p>コレが重要です。復元インストール時にはNASへの自動接続はされないので、これをやっておかないとバックアップの一覧には何も表示されません。<br />
言語選択の後、以下の手順で NAS をマウントしてください。</p>
<ol>
<li>「ユーティリティ＞シェル」を選択してシェルを起動します。</li>
<li>下記のコマンドで TimeMachine バックアップファイルが置かれているディレクトリをマウントします。(NAS のユーザ名、パスワード、IPアドレスやディレクトリ名はご自身の環境に応じて変えてください。)

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">		$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>Volumes<span style="color: #000000; font-weight: bold;">/</span>timemachine
		$ mount_afp afp:<span style="color: #000000; font-weight: bold;">//</span>USER:PASSWORD<span style="color: #000000; font-weight: bold;">@</span>192.168.xx.xx<span style="color: #000000; font-weight: bold;">/</span>timemachine <span style="color: #000000; font-weight: bold;">/</span>Volumes<span style="color: #000000; font-weight: bold;">/</span>timemachine</pre></div></div>

</li>
</ol>
<h3>バックアップからのシステム復元</h3>
<p>「ユーティリティ＞バックアップからシステムを復元」を選択。<br />
先ほどマウントしたバックアップファイルが表示されるはずなので、それを選ぶ。あとは画面の指示通りで OK です。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sakatam-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=B001AOZ8W0" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/08/how-to-restore-timemachine-backup-stored-on-nas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>【port / MacPorts】古いバージョンのパッケージをインストールする方法</title>
		<link>http://blog.sakatam.net/2009/06/how-to-install-outdated-port-packages/</link>
		<comments>http://blog.sakatam.net/2009/06/how-to-install-outdated-port-packages/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:18:09 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=152</guid>
		<description><![CDATA[いつも大変便利に使わせてもらっているMac OS Xのパッケージ管理システム port ですが、旧バージョンのパッケージをインストールしようとして若干ハマったので解決方法をメモしておきます。
やりたかったこと
Ruby1 [...]]]></description>
			<content:encoded><![CDATA[<p>いつも大変便利に使わせてもらっているMac OS Xのパッケージ管理システム port ですが、旧バージョンのパッケージをインストールしようとして若干ハマったので解決方法をメモしておきます。</p>
<h2>やりたかったこと</h2>
<p>Ruby1.8.7-p174 がインストールされているマシンに Ruby1.8.7-p72 を追加して、必要に応じてバージョンを切り替えたい。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ port installed ruby
The following ports are currently installed:
  ruby <span style="color: #000000; font-weight: bold;">@</span>1.8.7-p174_0+thread_hooks <span style="color: #7a0874; font-weight: bold;">&#40;</span>active<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<h2>失敗した方法</h2>
<p>通常の install コマンドにバージョン指定を加えて実行してみましたが、うまくいきません。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> ruby <span style="color: #000000; font-weight: bold;">@</span>1.8.7-p72
→失敗</pre></div></div>

<h2>うまくいった方法</h2>
<p>よくよく調べてみると、<a href="http://trac.macports.org/wiki/howto/InstallingOlderPort" target="_blank">公式サイトにやり方がのってました</a>。</p>
<ol>
<li>欲しいパッケージのリビジョン番号を調べて</li>
<li>そのリビジョンのPortFileを手動でダウンロード</li>
<li>で、インストール</li>
</ol>
<p>なるほど簡単ですね。早速<a href="http://trac.macports.org/browser/trunk/dports">リポジトリブラウザ</a>を開いて lang > ruby と辿り、画面右上の Revision Log からリビジョン番号を突き止めます。（ちなみに今回は 48382 でした。）<br />
リビジョン番号さえ判明すればあとは簡単。subversionでファイルをダウンロードして、インストールするだけです。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads
$ <span style="color: #666666; font-style: italic;"># リビジョン指定でcheckout</span>
$ <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> <span style="color: #660033;">-r</span> <span style="color: #000000;">48382</span> http:<span style="color: #000000; font-weight: bold;">//</span>svn.macports.org<span style="color: #000000; font-weight: bold;">/</span>repository<span style="color: #000000; font-weight: bold;">/</span>macports<span style="color: #000000; font-weight: bold;">/</span>trunk<span style="color: #000000; font-weight: bold;">/</span>dports<span style="color: #000000; font-weight: bold;">/</span>lang<span style="color: #000000; font-weight: bold;">/</span>ruby ruby1.8.7-p72_3
$ <span style="color: #7a0874; font-weight: bold;">cd</span> ruby1.8.7-p72_3
$ <span style="color: #666666; font-style: italic;"># インストール済みの Ruby を無効化しておく</span>
$ port deactivate ruby
$ port <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>これでお目当てのバージョンをインストールすることができました。ホッ。<br />
ポートのバージョン指定でお困りの方は参考にしてみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/06/how-to-install-outdated-port-packages/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Railsのログ書式を変更する方法</title>
		<link>http://blog.sakatam.net/2009/06/how-to-change-the-log-format-of-ruby-on-rails/</link>
		<comments>http://blog.sakatam.net/2009/06/how-to-change-the-log-format-of-ruby-on-rails/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 09:11:03 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[logs]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[snippet]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=146</guid>
		<description><![CDATA[Ruby on Railsからログ出力すると、日付やログレベルが表示されなくて困る場合があります。そこで、手っ取り早くログフォーマットを変更するスニペットを書いてみました。
ActiveSupportでLoggerの出力 [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby on Railsからログ出力すると、日付やログレベルが表示されなくて困る場合があります。そこで、手っ取り早くログフォーマットを変更するスニペットを書いてみました。<br />
ActiveSupportでLoggerの出力メソッドを上書きしてるのが原因のようなので、そこをフックしてログを整形してます。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">ActiveSupport::BufferedLogger</span>.<span style="color:#9900CC;">class_eval</span> <span style="color:#9966CC; font-weight:bold;">do</span>
 SEVERITIES = <span style="color:#0000FF; font-weight:bold;">self</span>::Severity.<span style="color:#9900CC;">constants</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>val, con<span style="color:#006600; font-weight:bold;">|</span> val<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC0066; font-weight:bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;self::#{con}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = con; val <span style="color:#006600; font-weight:bold;">&#125;</span>
 <span style="color:#9966CC; font-weight:bold;">def</span> add_with_format<span style="color:#006600; font-weight:bold;">&#40;</span>severity, message = <span style="color:#0000FF; font-weight:bold;">nil</span>, progname = <span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
   add_without_format<span style="color:#006600; font-weight:bold;">&#40;</span>severity, <span style="color:#0000FF; font-weight:bold;">nil</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#996600;">&quot;%s [%s] %s&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>, SEVERITIES<span style="color:#006600; font-weight:bold;">&#91;</span>severity<span style="color:#006600; font-weight:bold;">&#93;</span>, message<span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
 <span style="color:#9966CC; font-weight:bold;">end</span>
 alias_method_chain <span style="color:#ff3333; font-weight:bold;">:add</span>, <span style="color:#ff3333; font-weight:bold;">:format</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>このスニペットを実行すると、<br />
Thu Jun 25 16:23:14 +0900 2009 [INFO] XXXXXXX<br />
のようなログが出力されるようになります。<br />
フォーマットは適当なので、好みに応じて適宜修正してご利用ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/06/how-to-change-the-log-format-of-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby / Memcached キーの一覧を取得する</title>
		<link>http://blog.sakatam.net/2009/06/ruby-memcache-client-extension-for-item-listing/</link>
		<comments>http://blog.sakatam.net/2009/06/ruby-memcache-client-extension-for-item-listing/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 11:06:51 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[memcached]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[snippet]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=132</guid>
		<description><![CDATA[最近memcachedを仕事で使いはじめたので、勉強がてらmemcache-client拡張を書いてみました。保存されているアイテムの一覧を取得するメソッド、dump_all_itemsです。
デバッグの用途はもちろんで [...]]]></description>
			<content:encoded><![CDATA[<p>最近memcachedを仕事で使いはじめたので、勉強がてらmemcache-client拡張を書いてみました。保存されているアイテムの一覧を取得するメソッド、dump_all_itemsです。</p>
<p>デバッグの用途はもちろんですが、初心者にとってはmemcachedのデータ構造を確認することで、仕組み理解する手助けになるかと思います。</p>
<p>irbを起動して、以下のコードをコピペしてください。（要memcache-client）</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'memcache'</span>
<span style="color:#008000; font-style:italic;"># dump all items</span>
MemCache.<span style="color:#9900CC;">class_eval</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> dump_all_items
    <span style="color:#CC0066; font-weight:bold;">raise</span> MemCacheError, <span style="color:#996600;">&quot;No active servers&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> active?
    server_items = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#0066ff; font-weight:bold;">@servers</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>server<span style="color:#006600; font-weight:bold;">|</span>
      sock = server.<span style="color:#9900CC;">socket</span>
      <span style="color:#CC0066; font-weight:bold;">raise</span> MemCacheError, <span style="color:#996600;">&quot;No connection to server&quot;</span> <span style="color:#9966CC; font-weight:bold;">if</span> sock.<span style="color:#0000FF; font-weight:bold;">nil</span>?
&nbsp;
      <span style="color:#9966CC; font-weight:bold;">begin</span>
        sock.<span style="color:#9900CC;">write</span> <span style="color:#996600;">&quot;stats items<span style="color:#000099;">\r</span><span style="color:#000099;">\n</span>&quot;</span>
        items = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
        items_dump = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
        <span style="color:#9966CC; font-weight:bold;">while</span> line = sock.<span style="color:#CC0066; font-weight:bold;">gets</span> <span style="color:#9966CC; font-weight:bold;">do</span>
          <span style="color:#9966CC; font-weight:bold;">break</span> <span style="color:#9966CC; font-weight:bold;">if</span> line == <span style="color:#996600;">&quot;END<span style="color:#000099;">\r</span><span style="color:#000099;">\n</span>&quot;</span>
          <span style="color:#9966CC; font-weight:bold;">if</span> line =~ <span style="color:#006600; font-weight:bold;">/</span>^STAT items:<span style="color:#006600; font-weight:bold;">&#40;</span>\d<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span>:number <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>\w\.\:<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">then</span>
            items<span style="color:#006600; font-weight:bold;">&#91;</span>$<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> = $2.<span style="color:#CC0066; font-weight:bold;">chomp</span>
          <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
        items.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>k,v<span style="color:#006600; font-weight:bold;">|</span>
          sock.<span style="color:#9900CC;">write</span> <span style="color:#996600;">&quot;stats cachedump #{k} #{v}<span style="color:#000099;">\r</span><span style="color:#000099;">\n</span>&quot;</span>
          <span style="color:#9966CC; font-weight:bold;">while</span> line = sock.<span style="color:#CC0066; font-weight:bold;">gets</span> <span style="color:#9966CC; font-weight:bold;">do</span>
            <span style="color:#9966CC; font-weight:bold;">break</span> <span style="color:#9966CC; font-weight:bold;">if</span> line == <span style="color:#996600;">&quot;END<span style="color:#000099;">\r</span><span style="color:#000099;">\n</span>&quot;</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> line =~ <span style="color:#006600; font-weight:bold;">/</span>^ITEM <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>\w:<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#40;</span>.<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">then</span>
              items_dump<span style="color:#006600; font-weight:bold;">&#91;</span>$<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> = $2.<span style="color:#CC0066; font-weight:bold;">chomp</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
          <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
        server_items<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;#{server.host}:#{server.port}&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = items_dump
      <span style="color:#9966CC; font-weight:bold;">rescue</span> SocketError, <span style="color:#CC00FF; font-weight:bold;">SystemCallError</span>, <span style="color:#CC00FF; font-weight:bold;">IOError</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> err
        server.<span style="color:#9900CC;">close</span>
        <span style="color:#CC0066; font-weight:bold;">raise</span> MemCacheError, err.<span style="color:#9900CC;">message</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    server_items
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>で以下のようなコードを実行すると、指定したMemcachedサーバが保持している情報をHashとして取得でき、キャッシュ内容を確認することができます。こりゃ便利だ。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">m = MemCache.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'localhost:11211'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
m.<span style="color:#9900CC;">dump_all_items</span></pre></div></div>

<p>※参考にさせていただいたページ：<a href="http://blog.cles.jp/item/2141">memcachedの内容を確認するには</a></p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sakatam-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873113113" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/06/ruby-memcache-client-extension-for-item-listing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TextMate / Rubyのメソッドに直接ジャンプする方法</title>
		<link>http://blog.sakatam.net/2009/05/textmate-howto-jump-to-method-in-ruby/</link>
		<comments>http://blog.sakatam.net/2009/05/textmate-howto-jump-to-method-in-ruby/#comments</comments>
		<pubDate>Wed, 27 May 2009 05:24:23 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=129</guid>
		<description><![CDATA[２年ほどTextMateを使ってますが &#8220;Navigation &#62; Go To Symbol” (or &#8220;Command+Shift+T&#8221;) でメソッド一覧が出せるとは知りません [...]]]></description>
			<content:encoded><![CDATA[<p>２年ほどTextMateを使ってますが &#8220;Navigation &gt; Go To Symbol” (or &#8220;Command+Shift+T&#8221;) でメソッド一覧が出せるとは知りませんでした。</p>
<p><img class="alignnone size-medium wp-image-130" title="e38394e382afe38381e383a3-1" src="http://blog.sakatam.net/wp-content/uploads/2009/05/e38394e382afe38381e383a3-1-300x264.png" alt="e38394e382afe38381e383a3-1" width="300" height="264" /></p>
<p>メソッド宣言の一覧が出るうえ、名前の部分一致でフィルタリングできます。</p>
<p>これまで &#8220;def xxx&#8221; でファイル内検索してたのに比べて、２００倍くらい便利になりました。</p>
<p>参考：<br />
<a href="http://www.wetware.co.nz/blog/2009/03/textmate-trick-quickly-jump-to-function-method-definition-in-file/" target="_blank">Textmate Trick - quickly jump to function / method definition in file « Rails Development</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/05/textmate-howto-jump-to-method-in-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby / 文字列の追加処理のパフォーマンス比較</title>
		<link>http://blog.sakatam.net/2009/05/ruby-string-append-performance/</link>
		<comments>http://blog.sakatam.net/2009/05/ruby-string-append-performance/#comments</comments>
		<pubDate>Fri, 22 May 2009 09:42:29 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[benchmark]]></category>

		<category><![CDATA[perfomance]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=117</guid>
		<description><![CDATA[Rubyで、ある文字列の後に別の文字列を追加（連結）したい場合、&#60;&#60;や+=などいくつか方法があります。
どれが一番早いのか気になったのでパフォーマンスを比較してみました。

require &#34;ben [...]]]></description>
			<content:encoded><![CDATA[<p>Rubyで、ある文字列の後に別の文字列を追加（連結）したい場合、&lt;&lt;や+=などいくつか方法があります。<br />
どれが一番早いのか気になったのでパフォーマンスを比較してみました。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;benchmark&quot;</span>
<span style="color:#CC00FF; font-weight:bold;">Benchmark</span>.<span style="color:#9900CC;">bm</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>x<span style="color:#006600; font-weight:bold;">|</span>
  str = <span style="color:#996600;">''</span>; x.<span style="color:#9900CC;">report</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'+='</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 10000.<span style="color:#9900CC;">times</span><span style="color:#006600; font-weight:bold;">&#123;</span> str <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#996600;">&quot;abcdefg&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  str = <span style="color:#996600;">''</span>; x.<span style="color:#9900CC;">report</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'&lt;&lt;'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 10000.<span style="color:#9900CC;">times</span><span style="color:#006600; font-weight:bold;">&#123;</span> str <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">&quot;abcdefg&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  str = <span style="color:#996600;">''</span>; x.<span style="color:#9900CC;">report</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'+'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 10000.<span style="color:#9900CC;">times</span><span style="color:#006600; font-weight:bold;">&#123;</span> str = str <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">&quot;abcdefg&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  str = <span style="color:#996600;">''</span>; x.<span style="color:#9900CC;">report</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'#{}'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 10000.<span style="color:#9900CC;">times</span><span style="color:#006600; font-weight:bold;">&#123;</span> str = <span style="color:#996600;">&quot;#{str}abcdefg&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>結果は・・・</p>
<pre lang="">
      user     system      total        real
+=   0.220000   0.420000   0.640000 (  0.643629)
<<  0.000000   0.000000   0.000000 (  0.007104)
+  0.220000   0.410000   0.630000 (  0.638200)
#{}  0.230000   0.440000   0.670000 (  0.698459)
</pre>
<p>ということで、&lt;&lt;演算子の圧勝という結果になりました。</p>
<p>+や#{}が遅いのは何となく分かりますが、+=のパフォーマンスが想像以上に悪かったのが驚きです。<br />
パフォーマンス重視のプログラムで文字列の結合をする場合には、できるだけ&lt;&lt;演算子を使うようにすると良いかもしれません。<br />
以上、ご参考まで。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/05/ruby-string-append-performance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GR Digital 2と防水カメラケースDicaPack WP-510で水中撮影</title>
		<link>http://blog.sakatam.net/2009/04/gr-digital-2-underwater-shooting/</link>
		<comments>http://blog.sakatam.net/2009/04/gr-digital-2-underwater-shooting/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 05:57:51 +0000</pubDate>
		<dc:creator>sakatam</dc:creator>
		
		<category><![CDATA[Photolog]]></category>

		<category><![CDATA[dicapack]]></category>

		<category><![CDATA[gd2]]></category>

		<category><![CDATA[photo]]></category>

		<category><![CDATA[trial]]></category>

		<category><![CDATA[宮古島]]></category>

		<guid isPermaLink="false">http://blog.sakatam.net/?p=91</guid>
		<description><![CDATA[2009年4月下旬、宮古島に遊びに行ってきました。宮古島の海は透明度が高いことで知られているそうで、島中にシュノーケリング・スポットが存在しています。
せっかくの綺麗な海を撮ってみたいと思ったのですが、わざわざ防水カメラ [...]]]></description>
			<content:encoded><![CDATA[<p>2009年4月下旬、宮古島に遊びに行ってきました。宮古島の海は透明度が高いことで知られているそうで、島中にシュノーケリング・スポットが存在しています。</p>
<p>せっかくの綺麗な海を撮ってみたいと思ったのですが、わざわざ防水カメラを買うのももったいない気がしたので、今回は<a target="_blank" href="http://www.amazon.co.jp/gp/product/B001AK1C5Q?ie=UTF8&amp;tag=sakatam-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=B001AK1C5Q">デジタルカメラ専用防水ケース DicaPack WP-510</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=sakatam-22&amp;l=as2&amp;o=9&amp;a=B001AK1C5Q" border="0" alt="" width="1" height="1" /> を使って、GRD2での水中撮影にチャレンジしてみました。</p>
<p>DicaPackを使用する際の注意点、実際に撮影したサンプルを載せておきます。</p>
<p><span id="more-91"></span></p>
<h2>DicaPackの構造</h2>
<p>DicaPackのつくりは至ってシンプルで、ジップつきビニール袋の高級版といったところです。開口部はジップで閉じたうえに２〜３回丸めてマジックテープで留めるので、簡単には浸水しない構造になっています。また、レンズの部分は透明度の高いアクリル？のような素材なので、画質もわるくありません。</p>
<h2>実際に撮ってみた写真</h2>
<p>宮古島のビーチで実際に撮った写真です。ホワイトバランスは「曇天」、画面端のケラレを防止するためにデジタルズーム1.2xを設定しました。</p>
<style type="text/css">.wp-caption{float:left;}</style>
<div class="wp-caption alignnone" style="width: 243px"><a href="http://www.flickr.com/photos/sakatam/3474765779/in/set-72157617328534554/" target="_blank"><img title="サンプル１" src="http://farm4.static.flickr.com/3408/3474765779_b2700b49dc.jpg?v=0" alt="サンプル１" width="233" height="350" /></a><p class="wp-caption-text">サンプル１</p></div>
<div class="wp-caption alignnone" style="width: 243px"><a href="http://www.flickr.com/photos/sakatam/3475577924/in/set-72157617328534554/" target="_blank"><img title="サンプル２" src="http://farm4.static.flickr.com/3627/3475577924_77bde8d397.jpg?v=0" alt="サンプル２" width="233" height="350" /></a><p class="wp-caption-text">サンプル２</p></div>
<div class="wp-caption alignnone" style="width: 360px"><a href="http://www.flickr.com/photos/sakatam/3475577802/in/set-72157617328534554/" target="_blank"><img title="サンプル３" src="http://farm4.static.flickr.com/3340/3475577802_6cce0849f6.jpg?v=0" alt="サンプル３" width="350" height="233" /></a><p class="wp-caption-text">サンプル３</p></div>
<p style="clear:both;">
<h2>DicaPack + GRD2 で水中撮影する際の注意点</h2>
<p>DicaPackはGRD2専用の製品ではないため、レンズ部が中心からズレてしまうとケラレが発生します（<a title="ケラレてしまった写真" href="http://www.flickr.com/photos/sakatam/3474776725/in/set-72157617328534554/" target="_blank">ケラレてしまった写真</a>）。微妙な位置調整をすれば大丈夫なのですが、個人的にはデジタルズームの利用がオススメです。倍率は1.2くらいで十分だと思います。</p>
<p>また、DicaPackに入れた状態ではシャッター以外のボタンやダイアル操作が難しいので、撮影設定は事前に行ってマイセッティング登録しておくと良いと思います。</p>
<h2>まとめ</h2>
<p>ケラレの発生や操作性など、専用の水中カメラと比較すれば及ばない点も多いですが、使い慣れたカメラをお手軽に海に持ち込めるDicaPackはなかなかの製品だと思います。以上、GRD2での海中撮影をお考えの方がいらっしゃいましたら参考にしていただければ幸いです。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=sakatam-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=B001AK1C5Q&#038;md=1X69VDGQCMF7Z30FM082&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr&#038;nou=1" style="width:120px;height:240px;float:left;margin-right:10px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sakatam-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=B002J4UIOS" style="width:120px;height:240px;clear:both;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<h2>2009/7/30 追記</h2>
<p>ついにGR DIGITAL 3が発売されるようですね。外形は若干サイズアップしますがレンズ部の寸法はほとんど変わらないようなので、この記事でご紹介した DicaPack は GR DIGITAL III でも使用できそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sakatam.net/2009/04/gr-digital-2-underwater-shooting/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
