<?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>tkosugaのブログ</title>
	<atom:link href="http://blog.tkosuga.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.tkosuga.com</link>
	<description>魚が旨い、肉が美味い、野菜もうまい、お酒もウマイ</description>
	<lastBuildDate>Thu, 22 Sep 2011 07:16:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>鍾乳洞いってきました in 福島</title>
		<link>http://blog.tkosuga.com/?p=467&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%258d%25be%25e4%25b9%25b3%25e6%25b4%259e</link>
		<comments>http://blog.tkosuga.com/?p=467#comments</comments>
		<pubDate>Sun, 07 Aug 2011 07:42:03 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[旅行]]></category>

		<guid isPermaLink="false">http://blog.tkosuga.com/?p=467</guid>
		<description><![CDATA[7月中旬に福島県郡山市の両親に会いに行ってきました。 そのときの鍾乳洞めぐりで取った写真です。 あぶくま洞 入水鍾乳洞にも入ってきました。 鍾乳洞には心をときめかせる神秘的な魅力がありますね。 旅行先の写真をflicke [...]]]></description>
			<content:encoded><![CDATA[<div>7月中旬に福島県郡山市の両親に会いに行ってきました。</div>
<div>そのときの鍾乳洞めぐりで取った写真です。</div>
<div>あぶくま洞</div>
<div><img src="http://farm7.static.flickr.com/6144/5972227640_15ab8ce1d2.jpg" alt="" width="374" height="500" /></div>
<div>入水鍾乳洞にも入ってきました。</div>
<div><img src="http://farm7.static.flickr.com/6007/5972242198_3fa5e63c0d.jpg" alt="" width="374" height="500" /></div>
<div>鍾乳洞には心をときめかせる神秘的な魅力がありますね。</div>
<div>旅行先の写真をflickerにアップしているので興味のある方はどうぞどうぞご覧下さい。</div>
<div><a title="flickerにアップしたtkosugaの写真" href="http://www.flickr.com/photos/tkosuga/" target="_blank">http://www.flickr.com/photos/tkosuga/</a></div>
<p>&nbsp;</p>

]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=467</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>とりあえずraise</title>
		<link>http://blog.tkosuga.com/?p=463&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby%25e9%2580%2586%25e5%25bc%2595%25e3%2581%258d%25e3%2583%25ac%25e3%2582%25b7%25e3%2583%2594advent-calendar165%25e4%25be%258b%25e5%25a4%2596%25e3%2582%2592%25e7%2599%25ba%25e7%2594%259f%25e3%2581%2595%25e3%2581%259b%25e3%2581%259f%25e3%2581%2584</link>
		<comments>http://blog.tkosuga.com/?p=463#comments</comments>
		<pubDate>Tue, 14 Dec 2010 16:06:33 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[その他]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=461</guid>
		<description><![CDATA[おもいっきり久しぶりにブログを書くよ！ 「Ruby逆引きレシピAdvent Calendar:165例外を発生させたい」から。 もっともお手軽に例外を利用するときはどんな時かと言うと、assertionとして利用する時で [...]]]></description>
			<content:encoded><![CDATA[<p>おもいっきり久しぶりにブログを書くよ！</p>
<p>「Ruby逆引きレシピAdvent Calendar:165例外を発生させたい」から。</p>
<p>もっともお手軽に例外を利用するときはどんな時かと言うと、assertionとして利用する時でしょうきっと。raiseはクラスを指定せずに呼び出すとRuntimeErrorを発生させます。</p>
<p>以下のコードは到達しないはずコードが実行されたタイミングでメッセージを付けてraiseしています。</p>
<pre>if (pattern_a)
...
elsif(pattern_b)
...
else
 raise "pattern_aかpattern_b以外は存在しません！"
end</pre>
<p>本当にRuntimeError？rescueして確かめてみます。</p>
<pre>begin
  raise "例外クラスは何になるのかな？"
rescue => e
  puts e.class
  puts e.message
end</pre>
<p>結果は</p>
<pre>C:\tmp>ruby hoge.rb
RuntimeError
例外クラスは何になるのかな？

C:\tmp></pre>
<p>おお！RuntimeErrorですね。</p>
<p>何かしらの処理を中断させたい場合にも「とりあえずraiseする」時はありますよね。</p>
<pre>ごにょごにょ処理をした結果が...
result = {:status => false, :message => "An Unknown Error Occurred"}
raise result.to_s if result[:status] == false</pre>
<p>エラーが起こっていた場合に、とりあえずその情報をto_sして画面に表示させたりログに出力させたりしませんか？この実行結果は、</p>
<pre>C:\tmp>ruby hoge.rb
hoge.rb:2: statusfalsemessageAn Unknown Error Occurred (RuntimeError)</pre>
<p>おお！文字が繋がってしまいましたがエラーが表示されました。Hash#to_sは文字が繋がってしまうのでpメソッドさんが使ってくれるinspectを呼び出しましょうか。</p>
<pre>ごにょごにょ処理をした結果が...
result = {:status => false, :message => "An Unknown Error Occurred"}
raise result.inspect if result[:status] == false</pre>
<p>この実行結果は、</p>
<pre>C:\tmp>ruby hoge.rb
hoge.rb:2: {:status=>false, :message=>"An Unknown Error Occurred"} (RuntimeError)

C:\tmp></pre>
<p>おお！見やすく表示されましたね。</p>
<p>気軽にエラーメッセージを表示させたい場合や、ぱっとassertionを行う場合には「とりあえずraiseする」のも乙なものだと思います。</p>
<p>興味をもたれた方はAmazonからRuby逆引きレシピをどうぞ。</p>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798119881/"><img src="http://ecx.images-amazon.com/images/I/51d%2BTTZruOL._SL160_.jpg" style="border:0px; float:left;" alt="Ruby 逆引きレシピ すぐに美味しいサンプル&#038;テクニック 232 (PROGRAMMER’S RECIPE)" title="Ruby 逆引きレシピ すぐに美味しいサンプル&#038;テクニック 232 (PROGRAMMER’S RECIPE)" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=463</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntuのskypeのフォントが極端に小さくなった</title>
		<link>http://blog.tkosuga.com/?p=457&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e3%2581%25aeskype%25e3%2581%25ae%25e3%2583%2595%25e3%2582%25a9%25e3%2583%25b3%25e3%2583%2588%25e3%2581%258c%25e6%25a5%25b5%25e7%25ab%25af%25e3%2581%25ab%25e5%25b0%258f%25e3%2581%2595%25e3%2581%258f%25e3%2581%25aa%25e3%2581%25a3%25e3%2581%259f</link>
		<comments>http://blog.tkosuga.com/?p=457#comments</comments>
		<pubDate>Thu, 13 May 2010 04:00:41 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=457</guid>
		<description><![CDATA[急にスカイプのフォントが極小サイズになってしまいました。設定にあるのかなあと思ってちくちく探してみたのですが見つからず。 Googleで検索した所、それらしきものがあったので、その通りに「qt4-qtconfig」をイン [...]]]></description>
			<content:encoded><![CDATA[<p>急にスカイプのフォントが極小サイズになってしまいました。設定にあるのかなあと思ってちくちく探してみたのですが見つからず。</p>
<p>Googleで検索した所、それらしきものがあったので、その通りに「qt4-qtconfig」をインストールしてskypeを再起動したら解決しました。</p>
<p>sudo apt-get install qt4-qtconfig</p>
<p>これでスカイプのフォントが元のサイズに。良かった。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=457</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>フォントのためし書きが出来るサイト一覧</title>
		<link>http://blog.tkosuga.com/?p=451&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2583%2595%25e3%2582%25a9%25e3%2583%25b3%25e3%2583%2588%25e3%2581%25ae%25e3%2581%259f%25e3%2582%2581%25e3%2581%2597%25e6%259b%25b8%25e3%2581%258d%25e3%2581%258c%25e5%2587%25ba%25e6%259d%25a5%25e3%2582%258b%25e3%2582%25b5%25e3%2582%25a4%25e3%2583%2588%25e4%25b8%2580%25e8%25a6%25a7</link>
		<comments>http://blog.tkosuga.com/?p=451#comments</comments>
		<pubDate>Tue, 11 May 2010 01:03:55 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[fonthack.jp]]></category>
		<category><![CDATA[webservice]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=451</guid>
		<description><![CDATA[日本語フォントを試し書きできるサイトって意外とあるんですよ！ さわらびフォント http://sawarabi-fonts.sourceforge.jp/sampler/sawarabi-sampler.html デコモ [...]]]></description>
			<content:encoded><![CDATA[<p>日本語フォントを試し書きできるサイトって意外とあるんですよ！</p>
<p>さわらびフォント<br />
<a href="http://sawarabi-fonts.sourceforge.jp/sampler/sawarabi-sampler.html">http://sawarabi-fonts.sourceforge.jp/sampler/sawarabi-sampler.html</a></p>
<p>デコモジ<br />
<a href="http://decomoji.jp/">http://decomoji.jp/</a></p>
<p>白舟書体。左メニューの[書体見本]-&gt;[xxxxシリーズ]-&gt;[WebTypeViewer]のバナーをクリックで試し書きが出来ます。<br />
<a href="http://www.hakusyu.com/">http://www.hakusyu.com/</a></p>
<p>fonthack.jp<br />
<a href="http://fonthack.jp/">http://fonthack.jp/</a></p>
<p>秀英体。少し違いますが、フォントの骨格比較が出来ます。<br />
<a href="http://www.dnp.co.jp/shueitai/">http://www.dnp.co.jp/shueitai/</a></p>
<p>他にも多数見かけたのですが、探すと見つからない…</p>
<p>日本語フォントをウェブから試す事が出来るサイトを知っている方、ぜひ紹介していただけないでしょうか？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=451</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>狸小路で高知料理！</title>
		<link>http://blog.tkosuga.com/?p=447&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%258b%25b8%25e5%25b0%258f%25e8%25b7%25af%25e3%2581%25a7%25e9%25ab%2598%25e7%259f%25a5%25e6%2596%2599%25e7%2590%2586%25ef%25bc%2581</link>
		<comments>http://blog.tkosuga.com/?p=447#comments</comments>
		<pubDate>Mon, 10 May 2010 08:52:05 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[グルメ]]></category>
		<category><![CDATA[札幌]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=447</guid>
		<description><![CDATA[去年の古い写真ですが、坂本竜馬が流行ってそういえば狸小路にある高知料理のお店で食べてきたのを思い出しました。 ご当地ビール？ 各地の鶏料理は本当に美味しい！ 札幌きてからはもう完全にグルメ充です。]]></description>
			<content:encoded><![CDATA[<p>去年の古い写真ですが、坂本竜馬が流行ってそういえば狸小路にある高知料理のお店で食べてきたのを思い出しました。</p>
<p><img class="alignnone" title="エビうまい" src="http://farm5.static.flickr.com/4045/4325041178_2c4ce84342_b.jpg" alt="" width="648" height="485" /></p>
<p>ご当地ビール？</p>
<p><img class="alignnone" title="竜馬ビール" src="http://farm5.static.flickr.com/4042/4324309903_06ff8b1f36_b.jpg" alt="" width="618" height="463" /></p>
<p>各地の鶏料理は本当に美味しい！</p>
<p><img class="alignnone" title="鶏肉うまい" src="http://farm5.static.flickr.com/4039/4325046650_0701116b45_b.jpg" alt="" width="634" height="475" /></p>
<p>札幌きてからはもう完全にグルメ充です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=447</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vmwareで毎回やること</title>
		<link>http://blog.tkosuga.com/?p=446&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vmware%25e3%2581%25a7%25e6%25af%258e%25e5%259b%259e%25e3%2582%2584%25e3%2582%258b%25e3%2581%2593%25e3%2581%25a8</link>
		<comments>http://blog.tkosuga.com/?p=446#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:05:27 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[その他]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=446</guid>
		<description><![CDATA[カーネルの更新後にこれを実行。 /usr/bin/vmware-config-tools.pl その後に、serviceを起動しなおす。 sudo /etc/init.d/wmware-tools restart これで [...]]]></description>
			<content:encoded><![CDATA[<p>カーネルの更新後にこれを実行。</p>
<p>/usr/bin/vmware-config-tools.pl</p>
<p>その後に、serviceを起動しなおす。</p>
<p>sudo /etc/init.d/wmware-tools restart</p>
<p>これで共有フォルダが使える状態に戻る。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=446</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahooインデックスアップデート後にSEOで検索した上位10。</title>
		<link>http://blog.tkosuga.com/?p=442&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yahoo%25e3%2582%25a4%25e3%2583%25b3%25e3%2583%2587%25e3%2583%2583%25e3%2582%25af%25e3%2582%25b9%25e3%2582%25a2%25e3%2583%2583%25e3%2583%2597%25e3%2583%2587%25e3%2583%25bc%25e3%2583%2588%25e5%25be%258c%25e3%2581%25abseo%25e3%2581%25a7%25e6%25a4%259c%25e7%25b4%25a2%25e3%2581%2597%25e3%2581%259f%25e4%25b8%258a%25e4%25bd%258d10</link>
		<comments>http://blog.tkosuga.com/?p=442#comments</comments>
		<pubDate>Tue, 26 Jan 2010 05:54:34 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=442</guid>
		<description><![CDATA[しかもフルアップデート。Yahooの検索順位が大きく変わりますねー。 Yahoo!検索 Index Update http://searchblog.yahoo.co.jp/2010/01/yahoo_index_upd [...]]]></description>
			<content:encoded><![CDATA[<p>しかもフルアップデート。Yahooの検索順位が大きく変わりますねー。</p>
<p>Yahoo!検索 Index Update<br />
<a href="http://searchblog.yahoo.co.jp/2010/01/yahoo_index_update_10.html">http://searchblog.yahoo.co.jp/2010/01/yahoo_index_update_10.html</a></p>
<p>TDPと呼ばれている現象が解決するのか？加速するのか？<br />
たまたまインデックスのされ方が悪かっただけなのか？</p>
<p>とりあえず2010年1月26日14時51分時点でYahooでSEOを検索した結果。</p>
<p>1. SEO対策、検索エンジン最適化はグラソフトへ<br />
2. SEO対策|GMO SEOテクノロジー株式会社<br />
3. 検索エンジン最適化 &#8211; Wikipedia<br />
4. 長年の研究をもとにしたSEO対策「YES-SEO」-bing対策も始めました-<br />
5. SEO対策 &#8211; 検索エンジンで上位表示(10位以内)できた場合のみ報酬を下さい。<br />
6. SEO &#8211; Wikipedia<br />
7. SEO対策:完全成果報酬型SEOサービス 旅行情報株式会社<br />
8. SEO対策・・・。 &#8211; Yahoo!知恵袋<br />
9. SEO対策|確かな技術と実績のスマートシステム<br />
10. SEO &#8211; SEO対策 | 若葉なら10位までゼロ円</p>
<p>もう変動した後かも知れないですがどこまで順位が変動するのか楽しみです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=442</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google adwords APIのKeywordTool#getKeywordVariationsが遅い人へ</title>
		<link>http://blog.tkosuga.com/?p=439&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-adwords-api%25e3%2581%25aekeywordtoolgetkeywordvariations%25e3%2581%258c%25e9%2581%2585%25e3%2581%2584%25e4%25ba%25ba%25e3%2581%25b8</link>
		<comments>http://blog.tkosuga.com/?p=439#comments</comments>
		<pubDate>Wed, 13 Jan 2010 09:46:21 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=439</guid>
		<description><![CDATA[V200909のTargetingIdea#getを使うと速くなりますよ！ adwords4rを利用したサンプルコード。 service = @adwords.service("TargetingIdea", 20090 [...]]]></description>
			<content:encoded><![CDATA[<p>V200909のTargetingIdea#getを使うと速くなりますよ！</p>
<p>adwords4rを利用したサンプルコード。</p>
<pre>
    service = @adwords.service("TargetingIdea", 200909)

    kw = service.module::Keyword.new
    kw.text = keyword
    kw.matchType = "BROAD"

    parameter1 = service.module::RelatedToKeywordSearchParameter.new
    parameter1.keywords = [kw]

    parameter2 = service.module::AverageTargetedMonthlySearchesSearchParameter.new
    parameter2.operation = service.module::LongComparisonOperation.new
    parameter2.operation.minimum = 0
    parameter2.operation.maximum = 100_000_000_000

    selector = service.module::TargetingIdeaSelector.new
    selector.searchParameters = [parameter1, parameter2]
    selector.requestedAttributeTypes = ["AVERAGE_TARGETED_MONTHLY_SEARCHES"]
    selector.ideaType = "KEYWORD"
    selector.requestType = "STATS"
    selector.localeCode = "ja_JP"
    selector.currencyCode = "JPY"
    selector.paging = service.module::Paging.new
    selector.paging.startIndex = 0
    selector.paging.numberResults = 1
    service.get(selector)
</pre>
<p>このサンプルでは月の平均検索ボリューム(AVERAGE_TARGETED_MONTHLY_SEARCHES)を1件のみ取得となっています。もしかすると自分の探し方が悪かったかもしれませんが、KeywordTool#getKeywordVariationsでは1件のみの取得が出来ませんでした。</p>
<p>V200909のTargetingIdea#getを使うと細かい設定ができるため、性能を良く出来ます。体感で70%ぐらい速くなりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=439</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeCab 0.96でSegment fault。</title>
		<link>http://blog.tkosuga.com/?p=435&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mecab-0-96%25e3%2581%25a7segment-fault%25e3%2580%2582</link>
		<comments>http://blog.tkosuga.com/?p=435#comments</comments>
		<pubDate>Tue, 05 Jan 2010 10:55:55 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[mecab]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=435</guid>
		<description><![CDATA[みんな、Taggerにはnilとか&#8221;"(空文字)とかを引数に渡しちゃだめですよ！ >> MeCab::Tagger.new.parseToNode(nil) (irb):1: [BUG] Segmentati [...]]]></description>
			<content:encoded><![CDATA[<p>みんな、Taggerにはnilとか&#8221;"(空文字)とかを引数に渡しちゃだめですよ！</p>
<pre>>> MeCab::Tagger.new.parseToNode(nil)
(irb):1: [BUG] Segmentation fault
ruby 1.8.7 (2009-04-08 patchlevel 160) [x86_64-linux]</pre>
<p>単体で動かしていればすぐに気が付いたんだろうけど、デプロイした後で起こっていたのでなかなか気付きませんでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=435</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HpricotのXPATHを使って属性名の小文字大文字を無視する</title>
		<link>http://blog.tkosuga.com/?p=424&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hpricot%25e3%2581%25a7%25e5%25b1%259e%25e6%2580%25a7%25e3%2581%25b8%25e3%2581%25ae%25e3%2582%25a2%25e3%2582%25af%25e3%2582%25bb%25e3%2582%25b9%25e3%2582%2592%25e5%25b0%258f%25e6%2596%2587%25e5%25ad%2597%25e5%25a4%25a7%25e6%2596%2587%25e5%25ad%2597%25e3%2581%25ae%25e4%25b8%25a1%25e6%2596%25b9%25e3%2581%25a7%25e5%258f%25af</link>
		<comments>http://blog.tkosuga.com/?p=424#comments</comments>
		<pubDate>Tue, 05 Jan 2010 09:18:16 +0000</pubDate>
		<dc:creator>tkosuga</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.rizeteaz.com/tkosuga/?p=424</guid>
		<description><![CDATA[HpricotのXPATHではlower-caseとupper-caseは使えなかったんですね。アイター。 ということでさっくりとコードいじりました。 例えばmetaタグのdescriptionを取り出すときに、以下のよ [...]]]></description>
			<content:encoded><![CDATA[<p>HpricotのXPATHではlower-caseとupper-caseは使えなかったんですね。アイター。</p>
<p>ということでさっくりとコードいじりました。</p>
<p>例えばmetaタグのdescriptionを取り出すときに、以下のように大文字になっていると</p>
<pre>&lt;meta NAME="DESCRIPTION" ...&gt;</pre>
<p>次のようなxpathでは取り出せません。</p>
<p>//head/meta[@name=description]</p>
<p>これを解決するには以下のようにxpathの関数を使うのが理想なのですが</p>
<p>//head/meta[lower-case(@name)=description]</p>
<p>Hpricotでの実現方法が分からなかったのでElem::Travを直でいじるという乱暴な方法で解決しました。</p>
<pre>#
# 属性へのアクセスは全て小文字に揃えます。
#
module Hpricot
  module Elem::Trav
    def has_attribute?(name)
      self.raw_attributes &amp;&amp; self.raw_attributes.has_key?(name.to_s.downcase)
    end
    def get_attribute(name)
      a = self.raw_attributes &amp;&amp; self.raw_attributes[name.to_s.downcase]
      a = Hpricot.uxs(a) if a
      a = a.downcase if (a &amp;&amp; self.name.downcase == "meta" &amp;&amp; name == "name")
      a
    end
    alias_method :[], :get_attribute
    def set_attribute(name, val)
      altered!
      self.raw_attributes ||= {}
      self.raw_attributes[name.to_s.downcase] = val.fast_xs
    end
    alias_method :[]=, :set_attribute
    def remove_attribute(name)
      name = name.to_s.downcase
      if has_attribute? name
        altered!
        self.raw_attributes.delete(name)
      end
    end
  end
end</pre>
<p>これでmetaタグのname属性だけが全て小文字に揃います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tkosuga.com/?feed=rss2&#038;p=424</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

