<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Supernova</title>
	
	<link>http://blog.dealforest.net</link>
	<description>be careful, be bravely</description>
	<lastBuildDate>Wed, 01 Sep 2010 15:18:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dealforest" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dealforest" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://blog.dealforest.net</link><url>http://blog.dealforest.net/wp-content/uploads/2008/09/icon.gif</url><title>dealforest</title></image><item><title>Links for 2010-08-12 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-12</link><pubDate>Fri, 13 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-12</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://homes-cp.jp/index_pc.html"&gt;&amp;#12488;&amp;#12483;&amp;#12503;&amp;#12506;&amp;#12540;&amp;#12472; | &amp;#12507;&amp;#12540;&amp;#12512;&amp;#12474;&amp;#12367;&amp;#12435;&amp;#21490;&amp;#19978;&amp;#26368;&amp;#24375;&amp;#12398;&amp;#38627;&amp;#21839;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nippondanji.blogspot.com/2010/07/mysql.html"&gt;&amp;#28450;(&amp;#12458;&amp;#12488;&amp;#12467;)&amp;#12398;&amp;#12467;&amp;#12531;&amp;#12500;&amp;#12517;&amp;#12540;&amp;#12479;&amp;#36947;: &amp;#12514;&amp;#12480;&amp;#12531;&amp;#12394;MySQL&amp;#12398;&amp;#38283;&amp;#30330;&amp;#29872;&amp;#22659;&amp;#12398;&amp;#27083;&amp;#31689;&amp;#26041;&amp;#27861;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-11 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-11</link><pubDate>Thu, 12 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-11</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://pmakino.jp/tdiary/20070907.html#p01"&gt;[&amp;#12471;&amp;#12473;&amp;#12486;&amp;#12512;&amp;#36939;&amp;#29992;][Perl] Apache Combined Log &amp;#12434;&amp;#21177;&amp;#29575;&amp;#30340;&amp;#12395;&amp;#12497;&amp;#12540;&amp;#12473;&amp;#12377;&amp;#12427;&amp;#27491;&amp;#35215;&amp;#34920;&amp;#29694;&amp;#12513;&amp;#12514; - [&amp;#12404;](2007-09-07)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://subtech.g.hatena.ne.jp/mala/20100114/1263458709"&gt;AnyEvent::Handle&amp;#12391;&amp;#27704;&amp;#32154;&amp;#30340;&amp;#12395;&amp;#12467;&amp;#12493;&amp;#12463;&amp;#12471;&amp;#12519;&amp;#12531;&amp;#24373;&amp;#12427;&amp;#38555;&amp;#12395;&amp;#12513;&amp;#12514;&amp;#12522;&amp;#39135;&amp;#12356;&amp;#12414;&amp;#12367;&amp;#12426; - &amp;#37329;&amp;#21033;0&amp;#28961;&amp;#21033;&amp;#24687;&amp;#12461;&amp;#12515;&amp;#12483;&amp;#12471;&amp;#12531;&amp;#12464; &amp;ndash; &amp;#12461;&amp;#12515;&amp;#12483;&amp;#12471;&amp;#12531;&amp;#12464;&amp;#12391;&amp;#12365;&amp;#12414;&amp;#12377; - subtech&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-10 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-10</link><pubDate>Wed, 11 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-10</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/"&gt;Single-keystroke Instapaper in Google Reader &amp;laquo; Brett Terpstra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-09 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-09</link><pubDate>Tue, 10 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-09</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/zigorou/mbga-open-platform-and-perl"&gt;mbga Open Platform and Perl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yumewaza.yumemi.co.jp/2010/07/git.html"&gt;Git&amp;#12398;&amp;#12385;&amp;#12423;&amp;#12387;&amp;#12392;&amp;#20415;&amp;#21033;&amp;#12394;&amp;#20351;&amp;#12356;&amp;#26041; (&amp;#12422;&amp;#12417;&amp;#25216;&amp;#65306;&amp;#12422;&amp;#12417;&amp;#12415;&amp;#12473;&amp;#12479;&amp;#12483;&amp;#12501;&amp;#12502;&amp;#12525;&amp;#12464;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/winebarrel/20100721/p2"&gt;tcpdump&amp;#12391;&amp;#12463;&amp;#12456;&amp;#12522;&amp;#12434;&amp;#12461;&amp;#12515;&amp;#12503;&amp;#12481;&amp;#12515;&amp;#12377;&amp;#12427; - [](Diary d) { return [=]() mutable { return ++d; }; }(hatena);&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/cooldaemon/20100801/1280650414"&gt;&amp;#31532;&amp;#20108;&amp;#22238; Erlang &amp;#22522;&amp;#30990;&amp;#21193;&amp;#24375;&amp;#20250;&amp;#12414;&amp;#12392;&amp;#12417; - cooldaemon&amp;#12398;&amp;#20633;&amp;#24536;&amp;#37682;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/"&gt;Erlang/OTP R14A&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.geminimobile.jp/mobile_cloud/technology/hibari.html"&gt;Gemini Mobile Technologies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-08 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-08</link><pubDate>Mon, 09 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-08</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/cubicdaiya/20100731/1280561128"&gt;&amp;#12514;&amp;#12480;&amp;#12531;&amp;#12394;C, C++&amp;#12398;&amp;#38283;&amp;#30330;&amp;#29872;&amp;#22659;&amp;#12398;&amp;#27083;&amp;#31689;&amp;#26041;&amp;#27861; - &amp;#32771;&amp;#12360;&amp;#12427;&amp;#20154;, &amp;#12467;&amp;#12540;&amp;#12489;&amp;#12434;&amp;#26360;&amp;#12367;&amp;#20154;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xslate.org/benchmark.html"&gt;Benchmarking Xslate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-05 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-05</link><pubDate>Fri, 06 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-05</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.nomadscafe.jp/2010/08/cloudforecastqmail.html"&gt;CloudForecast&amp;#12391;qmail&amp;#12398;&amp;#12461;&amp;#12517;&amp;#12540;&amp;#25968;&amp;#12434;&amp;#30435;&amp;#35222;&amp;#12377;&amp;#12427; - blog.nomadscafe.jp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maaash.jp/perl/perl32bit64bit%E3%81%A7%E3%83%A1%E3%83%A2%E3%83%AA%E4%BD%BF%E7%94%A8%E9%87%8F%E9%81%95%E3%81%86%E3%81%91%E3%81%A9/"&gt;[perl]32bit/64bit&amp;#12391;&amp;#12513;&amp;#12514;&amp;#12522;&amp;#20351;&amp;#29992;&amp;#37327;&amp;#36949;&amp;#12358;&amp;#12369;&amp;#12393; : maaash.jp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nomadscafe.jp/2010/07/plackbuilderenable-ifmiddleware.html"&gt;Plack::Builder&amp;#12398;enable_if&amp;#12424;&amp;#12426;&amp;#12418;&amp;#31777;&amp;#21336;&amp;#12395;&amp;#12289;&amp;#25351;&amp;#23450;&amp;#12375;&amp;#12383;&amp;#26465;&amp;#20214;&amp;#19979;&amp;#12391;middleware&amp;#12434;&amp;#26377;&amp;#21177;&amp;#12395;&amp;#12377;&amp;#12427;&amp;#12514;&amp;#12472;&amp;#12517;&amp;#12540;&amp;#12523; - blog.nomadscafe.jp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/memememomo/20100726/1280124818"&gt;CloudForecast&amp;#12434;&amp;#20837;&amp;#12428;&amp;#12390;&amp;#12415;&amp;#12383; - &amp;#12513;&amp;#12513;&amp;#12513;&amp;#12514;&amp;#12514;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2010-08-04 [del.icio.us]</title><link>http://del.icio.us/dealforest#2010-08-04</link><pubDate>Thu, 05 Aug 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2010-08-04</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/ryuka01/20100104/p1"&gt;Twitter&amp;#35299;&amp;#26512;&amp;#12484;&amp;#12540;&amp;#12523;&amp;#65297;&amp;#65301;&amp;#31278;&amp;#27604;&amp;#36611;&amp;#12524;&amp;#12499;&amp;#12517;&amp;#12540; - &amp;#12522;&amp;#12450;&amp;#12523;&amp;#12450;&amp;#12463;&amp;#12475;&amp;#12473;&amp;#35299;&amp;#26512;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://memoro.cocolog-nifty.com/blog/2008/01/ubuntutimezone_4774.html"&gt;ubuntu&amp;#12398;timezone: Memoro&amp;#12398;&amp;#12513;&amp;#12514;&amp;#24115;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item>
		<title>mod_proxy + mod_proxy_balancer を使用した際の reverse proxy の設定のメモ</title>
		<link>http://blog.dealforest.net/2009/11/apache-cofig-reverseproxy/</link>
		<comments>http://blog.dealforest.net/2009/11/apache-cofig-reverseproxy/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 06:04:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[mod_proxy_balancer]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=613</guid>
		<description>忘れそうだったのでメモ

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / balancer://hogehoge/ timeout=2
ProxyPassReverse / balancer://hogehoge/
&amp;#60;Proxy balancer://hogehoge&amp;#62;
    BalancerMember http://192.168.1.1 loadfactor=10 keepalive=Off
    BalancerMember http://192.168.1.2 loadfactor=10 keepalive=Off
&amp;#60;/Proxy&amp;#62;

ポイントは ProxyPreserveHost On ってところ。
ProxyPassReverse だけだと proxy 先に header の Host: をそのまま送ってくれるようになる。
参考資料

ProxyPreserveHost ディレクティブ</description>
			<content:encoded><![CDATA[<p>忘れそうだったのでメモ</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">ProxyRequests Off
ProxyPreserveHost On
ProxyPass / balancer://hogehoge/ timeout=2
ProxyPassReverse / balancer://hogehoge/
&lt;Proxy balancer://hogehoge&gt;
    BalancerMember http://192.168.1.1 loadfactor=10 keepalive=Off
    BalancerMember http://192.168.1.2 loadfactor=10 keepalive=Off
&lt;/Proxy&gt;</pre></div></div>

<p>ポイントは <b>ProxyPreserveHost On</b> ってところ。<br />
ProxyPassReverse だけだと proxy 先に header の Host: をそのまま送ってくれるようになる。</p>
<h3>参考資料</h3>
<ul>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost">ProxyPreserveHost ディレクティブ</a></li>
</ul>

<p><a href="http://feedads.g.doubleclick.net/~a/KS-FLo2Liy8NuFvFJQckB0iBKRI/0/da"><img src="http://feedads.g.doubleclick.net/~a/KS-FLo2Liy8NuFvFJQckB0iBKRI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KS-FLo2Liy8NuFvFJQckB0iBKRI/1/da"><img src="http://feedads.g.doubleclick.net/~a/KS-FLo2Liy8NuFvFJQckB0iBKRI/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/11/apache-cofig-reverseproxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML::Simple で RSS の entry を順番通りに取り出す方法</title>
		<link>http://blog.dealforest.net/2009/09/xml-parse-in-order/</link>
		<comments>http://blog.dealforest.net/2009/09/xml-parse-in-order/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 09:38:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=595</guid>
		<description>たとえばこんな感じのフィードがあったとします。

&amp;#60;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;#62;
&amp;#60;feed&amp;#62;
    &amp;#60;entry&amp;#62;
        &amp;#60;key&amp;#62;blog1&amp;#60;/key&amp;#62;
        &amp;#60;title&amp;#62;blog1-title&amp;#60;/title&amp;#62;
        &amp;#60;content&amp;#62;blog1-content&amp;#60;/content&amp;#62;
    &amp;#60;/entry&amp;#62;
    &amp;#60;entry&amp;#62;
        &amp;#60;key&amp;#62;blog2&amp;#60;/key&amp;#62;
        &amp;#60;title&amp;#62;blog2-title&amp;#60;/title&amp;#62;
 [...]</description>
			<content:encoded><![CDATA[<p>たとえばこんな感じのフィードがあったとします。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;feed<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/feed<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>
単純に parse するとハッシュに格納されるので<br />
entry の並び順はめちゃくちゃになります。
</p>
<p>dump結果</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$VAR1 = {
          'entry' =&gt; {
                     'blog2' =&gt; {
                                'content' =&gt; 'blog2-content',
                                'title' =&gt; 'blog2-title'
                              },
                     'blog5' =&gt; {
                                'content' =&gt; 'blog5-content',
                                'title' =&gt; 'blog5-title'
                              },
                     'blog4' =&gt; {
                                'content' =&gt; 'blog4-content',
                                'title' =&gt; 'blog4-title'
                              },
                     'blog1' =&gt; {
                                'content' =&gt; 'blog1-content',
                                'title' =&gt; 'blog1-title'
                              },
                     'blog3' =&gt; {
                                'content' =&gt; 'blog3-content',
                                'title' =&gt; 'blog3-title'
                              }
                   }
        };</pre></div></div>

<p>
ランキングの RSS とかだと entry の順番が変わるだけで致命的です。<br />
今回がまさにその状態。<br />
blog1〜5の順番で entry に入っていてほしかったのです。
</p>
<p>
できないかと思って調べてたらいけました。<br />
<a href="http://www.cpanforum.com/threads/6670">how to preserve XML::Simple element order</a><br />
どうやら Tie::IxHash を使えばいけそうとのこと。<br />
Tie::IxHash については <a href="http://katsubemakito.net/cgiperl/variable/hash/post-46.html">ハッシュのキーを挿入(追加)した順番通りに取り出す</a> がとても<br />
まとまっておりわかりやすいです。
</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Tie<span style="color: #339933;">::</span><span style="color: #006600;">IxHash</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dumper</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #0000ff;">*XML</span><span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">::</span><span style="color: #006600;">new_hashref</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'new_hashref'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">sub</span> new_hashref <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$self</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">tie</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%hash</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'Tie::IxHash'</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">%hash</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span> 
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">\%hash</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$parser</span> <span style="color: #339933;">=</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$parser</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">XMLin</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'sample.xml'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">warn</span> Dumper <span style="color: #0000ff;">$xml</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">__END__</span>
結果
<span style="color: #0000ff;">$VAR1</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #ff0000;">'entry'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                     <span style="color: #ff0000;">'blog1'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog1-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog1-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog2'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog2-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog2-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog3'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog3-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog3-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog4'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog4-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog4-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog5'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog5-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog5-title'</span>
                              <span style="color: #009900;">&#125;</span>
                   <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
このように new_hashref を Tie::IxHash で tie してやった<br />
ハッシュリファレンスを返すように override してやれば大丈夫です。<br />
XML::LibXML でも同じようなことはできるらしいです。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/NL8dbDp7zA1Ed7cros7L-XdqmCc/0/da"><img src="http://feedads.g.doubleclick.net/~a/NL8dbDp7zA1Ed7cros7L-XdqmCc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NL8dbDp7zA1Ed7cros7L-XdqmCc/1/da"><img src="http://feedads.g.doubleclick.net/~a/NL8dbDp7zA1Ed7cros7L-XdqmCc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/09/xml-parse-in-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>snow leopard 移行したまとめ</title>
		<link>http://blog.dealforest.net/2009/08/migrate-over-t-snowleopard-from-leopard/</link>
		<comments>http://blog.dealforest.net/2009/08/migrate-over-t-snowleopard-from-leopard/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 15:02:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[snowleopard]]></category>
		<category><![CDATA[leopard]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=587</guid>
		<description>snow leopard が届いた。
もちろん待てるわけもなく気づけば移行していたw


64bit で使いたかったからアップデートすると ports と Xcode, SDK 周りで
ハマりそうな気も凄いしたから結局クリーンインストールすることにした。


アップデート自体は QuickSilver と KeyRemap4MacBook が使えないと
作業効率に支障きたすからどうしようかと思ってたけど
TimeMachine にバックアップとって試してみた。

アプリケーション

iStat menu がそもそもつかえない。
しばらくしたら対応版がでるみたい。
それまでの我慢ということでしばらく放置。


本家対応済み。
前よりも個人的には使いやすくなっています。

QuickSilver はここから最新版を落とせばちゃんと動く。
KeyRemap4MacBook に関してはパッチをあててくれている人がいて無事に動作した(DL)。
パッチも本家に送っているらしい。とりあえず暫定的には使える。
感謝感謝。
その他の Tips

起動時はデフォルトだと 32bit モードで起動している。
Snow Leopardの起動カーネルを32bitから64bitに変更『32- or 64-bit Kernel Startup Mode Selector』
を参考にしてデフォルトを 64bit にした。



safari だけ SIMBL をなぜか使えてる。
SIMBL を使う場合は 32bit モードで開けばいけるとのこと。
ただ GreaseKit はスクリプトが消えている。
追加もできないので結局使えてないようなもの。
ただいかんせん動作が不安定すぎる。。。
それにしても SIMBL 使えないのは不便すぎる。



追記 2009-09-06 22:00
InputManager がそもそも使えないから Logicool のドライバも入らないし。
なにより Terminal.appで選択時にコピーするSIMBLプラグインを作りました が
使えなくなったのが相当不便。


あと 64bit の場合だとMac::Growl が使えなくなる。
MacPerl や Carbon 系のアーキテクチャが 32bit にしか対応していないためとのこと。
ソースはここ。
これどうにかならないかなぁ〜。


updatedb [...]</description>
			<content:encoded><![CDATA[<p>
snow leopard が届いた。<br />
もちろん待てるわけもなく気づけば移行していたw
</p>
<p>
64bit で使いたかったからアップデートすると ports と Xcode, SDK 周りで<br />
ハマりそうな気も凄いしたから結局クリーンインストールすることにした。
</p>
<p>
アップデート自体は QuickSilver と KeyRemap4MacBook が使えないと<br />
作業効率に支障きたすからどうしようかと思ってたけど<br />
TimeMachine にバックアップとって試してみた。
</p>
<h3>アプリケーション</h3>
<p><del datetime="2009-09-06 22:00"><br />
iStat menu がそもそもつかえない。<br />
しばらくしたら対応版がでるみたい。<br />
それまでの我慢ということでしばらく放置。<br />
</del></p>
<p>
本家対応済み。<br />
前よりも個人的には使いやすくなっています。
</p>
<p>QuickSilver は<a href="http://www.blacktree.com/">ここ</a>から最新版を落とせばちゃんと動く。</p>
<p>KeyRemap4MacBook に関してはパッチをあててくれている人がいて無事に動作した<a href="http://blog.drikin.com/2009/08/keyremap4macbook-for-snowleopard-64bit-kernel.html">(DL)</a>。<br />
パッチも本家に送っているらしい。とりあえず暫定的には使える。<br />
感謝感謝。</p>
<h3>その他の Tips</h3>
<p>
起動時はデフォルトだと 32bit モードで起動している。<br />
<strong><a href="http://veadardiary.blog29.fc2.com/blog-entry-2471.html">Snow Leopardの起動カーネルを32bitから64bitに変更『32- or 64-bit Kernel Startup Mode Selector』</a></strong><br />
を参考にしてデフォルトを 64bit にした。
</p>
<p>
<del datetime="2009-09-06 22:00"><br />
safari だけ SIMBL をなぜか使えてる。<br />
SIMBL を使う場合は 32bit モードで開けばいけるとのこと。<br />
ただ GreaseKit はスクリプトが消えている。<br />
追加もできないので結局使えてないようなもの。<br />
ただいかんせん動作が不安定すぎる。。。<br />
それにしても SIMBL 使えないのは不便すぎる。<br />
</del>
</p>
<p>
<a href="#update_simbl">追記 2009-09-06 22:00</a><br />
InputManager がそもそも使えないから Logicool のドライバも入らないし。<br />
なにより <a href="http://blog.s21g.com/articles/1075">Terminal.appで選択時にコピーするSIMBLプラグインを作りました</a> が<br />
使えなくなったのが相当不便。
</p>
<p>
あと 64bit の場合だとMac::Growl が使えなくなる。<br />
MacPerl や Carbon 系のアーキテクチャが 32bit にしか対応していないためとのこと。<br />
ソースはここ。<br />
これどうにかならないかなぁ〜。
</p>
<p>
updatedb に関しては</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">sudo touch /var/db/locate.db
sudo chown nobody:wheel /var/db/locate.database</pre></div></div>

<p>しておかないと権限の問題で locate.databse が生成されない。
</p>
<p>
snow leopard とは関係ないけど ports の perl が 5.10.1 になっていた。<br />
体感速度はあがった気がするし今のとこは leopard に戻す！！<br />
といったこともないので入れなおして良かったかな。<br />
また随時追加していきます。
</p>
<h3>参考資料</h3>
<p><a href="http://d.hatena.ne.jp/mizchi/20090827/1251358228">Snow Leopardにアップデートした後に気をつけること 主にMacPortsとrubygemsについて</a><br />
<a href="http://hackd.net/2009/06/18/enabling-simbl-on-snow-leopard/">enabling SIMBL on Snow Leopard</a></p>
<h3><a name="update_simbl">追記 2009-09-06 22:00</a></h3>
<p>■ Safari 関連</p>
<p>
<a href="http://www.culater.net/software/SIMBL/SIMBL.php">SIMBL本家</a>が Snow Leopard 対応！！
</p>
<p>
64bit に対応した Safari の SIMBL プラグイン。<br />
Tab 系と GreaseKit が 64bit で対応しているのが相当あつい！！<br />
あとは Glims と SafariStand が対応してくれればほぼほぼ問題ない状態になりそう。
</p>
<ul>
<li>
<a href="http://d.hatena.ne.jp/griffin-stewie/20090901/p1">Snow Leopard 64bit版 プラグインをまとめてリリース</a>
</li>
<li>
<a href="http://d.hatena.ne.jp/canberland/20090901/1251817655">SafariSIMBL (SIMBL for Safari 64bit)</a>
</li>
</ul>
<p>GreaseKit のスクリプトのまとめは<a href="http://d.hatena.ne.jp/tanemori/20080422/GreaseKit">ここ</a>がよくまとまっています</p>
<p>■ Input switcher が組み込まれている！！</p>
<p>
これすごい便利。なぜかデフォルトだとオフられているので設定が必要。<br />
「言語とテキスト」->「入力ソース」->「入力ソースのオプション」<br />
これを、「書類ごとに異なるものを使用」を選択する。<br />
そうすると InputSwicter と同じようにアプリ毎に入力ソース(英字、ひらがな、etc)が保存されるようになる。
</p>
<p><!-- TG-Affiliate Banner Space --><br />
<A href="http://ad2.trafficgate.net/t/r/3/4620/196956_231748/" target="_blank"><IMG src="http://srv2.trafficgate.net/t/b/3/4620/196956_231748/" border="0"></A><br />
<!-- /TG-Affiliate Banner Space -->        </p>

<p><a href="http://feedads.g.doubleclick.net/~a/0klpwT88N-gp-eJpq0dXJ3yCc2o/0/da"><img src="http://feedads.g.doubleclick.net/~a/0klpwT88N-gp-eJpq0dXJ3yCc2o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0klpwT88N-gp-eJpq0dXJ3yCc2o/1/da"><img src="http://feedads.g.doubleclick.net/~a/0klpwT88N-gp-eJpq0dXJ3yCc2o/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/08/migrate-over-t-snowleopard-from-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法”が便利すぎる件</title>
		<link>http://blog.dealforest.net/2009/08/repositorys-branch-preview-zsh-prompt/</link>
		<comments>http://blog.dealforest.net/2009/08/repositorys-branch-preview-zsh-prompt/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 18:19:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[zsh]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=562</guid>
		<description>&amp;#8220;Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法&amp;#8221; で紹介されている zsh の vcs_info という関数を使って
git や mercurial のブランチ名をプロンプトに表示しているみたいです。

git 使ってたら実際どのブランチいじってるのかわからなくなることが
多々あって困ってたのでさっそく導入してみました。


git リポジトリ

svn リポジトリ

svn リポジトリ


はまったのは &amp;#8220;vcs_info: function definition file not found&amp;#8221; というエラーが
表示され vcs_info が使用できなかった。
これはバージョンを 4.3.6-dev-0+20080929-1 以降にすればいいらしい。


mac の ports の場合は zsh-devel でいれないと 4.3.6 以下なので使用できない。
zsh-devel をインストールして /opt/local/bin/zsh-4.3.10 から /bin/zsh へと
/etc/zprofile から /opt/local/etc/zprofile へシンボリックリンクを張って準備完了。


zprofile のシンボリックリンクを張らないと PATH の環境変数が足らなくなる。
/usr/bin とかその辺の PATH をここを呼んで足してるみたい。
.zshrc の設定に関しては本家の方で詳しくまとまってます。
.zshrc の一部抜粋でこんな感じです。


autoload -Uz vcs_info
zstyle ':vcs_info:*' formats ':(%s)%b'
zstyle [...]</description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/mollifier/20090814/p1">&#8220;Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法&#8221;</a> で紹介されている zsh の vcs_info という関数を使って<br />
git や mercurial のブランチ名をプロンプトに表示しているみたいです。</p>
<p>
git 使ってたら実際どのブランチいじってるのかわからなくなることが<br />
多々あって困ってたのでさっそく導入してみました。
</p>
<div style="margin:0px;padding:0px;">
<p align="center">git リポジトリ</p>
<p><img src="http://blog.dealforest.net/wp-content/uploads/2009/08/demo-git.png" width="100%" /></p>
<p align="center">svn リポジトリ</p>
<p><img src="http://blog.dealforest.net/wp-content/uploads/2009/08/demo-svn.png" width="100%" /></p>
<p align="center">svn リポジトリ</p>
<p><img src="http://blog.dealforest.net/wp-content/uploads/2009/08/demo-hg.png" width="100%" />
</div>
<p>はまったのは <strong>&#8220;vcs_info: function definition file not found&#8221;</strong> というエラーが<br />
表示され vcs_info が使用できなかった。<br />
これはバージョンを <strong>4.3.6-dev-0+20080929-1</strong> 以降にすればいいらしい。
</p>
<p>
mac の ports の場合は zsh-devel でいれないと 4.3.6 以下なので使用できない。<br />
zsh-devel をインストールして /opt/local/bin/zsh-4.3.10 から /bin/zsh へと<br />
/etc/zprofile から /opt/local/etc/zprofile へシンボリックリンクを張って準備完了。
</p>
<p>
zprofile のシンボリックリンクを張らないと PATH の環境変数が足らなくなる。<br />
/usr/bin とかその辺の PATH をここを呼んで足してるみたい。<br />
.zshrc の設定に関しては<a href="http://d.hatena.ne.jp/mollifier/20090814/p1">本家</a>の方で詳しくまとまってます。<br />
.zshrc の一部抜粋でこんな感じです。
</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">autoload -Uz vcs_info
zstyle ':vcs_info:*' formats ':(%s)%b'
zstyle ':vcs_info:*' actionformats ':(%s)%b|%a'
precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n &quot;$vcs_info_msg_0_&quot; ]] &amp;&amp; psvar[1]=&quot;$vcs_info_msg_0_&quot;
}
PROMPT=&quot;%{${fg[yellow]}%}[%n@%m%1(v|%F{green}%1v%f|)%{${fg[yellow]}%}]%{${reset_color}%}%b &quot;</pre></div></div>

<p>zsh ちゃんと勉強すればもっと便利になりそうだな</p>
<h3>参考資料</h3>
<p><a href="http://d.hatena.ne.jp/bannyan/20090820/1250777187">vcs_info: function definition file not found</a></p>
<p><p>アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。</p></p>

<p><a href="http://feedads.g.doubleclick.net/~a/SbBOYxtvYsFwG2N5EP4PxTbquMs/0/da"><img src="http://feedads.g.doubleclick.net/~a/SbBOYxtvYsFwG2N5EP4PxTbquMs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SbBOYxtvYsFwG2N5EP4PxTbquMs/1/da"><img src="http://feedads.g.doubleclick.net/~a/SbBOYxtvYsFwG2N5EP4PxTbquMs/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/08/repositorys-branch-preview-zsh-prompt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>「Flash Liteで作る 携帯コンテンツ実践教科書」を読んで</title>
		<link>http://blog.dealforest.net/2009/08/read_books_of_flashlite/</link>
		<comments>http://blog.dealforest.net/2009/08/read_books_of_flashlite/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 15:21:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[flashlite1.1]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[flashlite]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=541</guid>
		<description>これはかなりの良書です。
これから Flash Lite を勉強しようとしてたり、すでにやってる人にもお奨めできる１冊です。
むしろこれ以外で役に立つ本が今までなかった。


書籍としてもサンプルにQRコードがついていて何もしなくても確認もできるし
Flash Lite1.1 の書き方と FLash Lite2.0 の両方のサンプルがついててわかりやすい。


中でも役にたつのが Chapter 10 と Chapter 11。
これだけのために本書をかったとしても損はないと思うくらいの内容。
さらに Flash Lite 3.1 までもカバーしています。


未だに知らなかったはまりどこもたくさんあったので著者の方々には本当に感謝です。
以下、簡単な自分用のまとめです。

音について

機種毎の拡張子

docomo =&gt; MIDI
au =&gt; SMAF
softbank =&gt; SMAF

コンパクトサウンド(.fls) 便利

    Flash Lite が自動的に端末に合わせた音データを選択して再生してくれる
    Mobile &amp;#038; Device Developer Center だと繰り返しとかで対応していない
    対応していない実機もある

全てをカバーするなら UA を見て出し分ける必要がある
複数音を同時に鳴らせない
サウンドの繰り返しの際に処理が遅れる
待ち受けだと音が鳴らない

最適化について

線の最適化 :「修正」-&gt;「シェイプ」-&gt;「高度なスムーズ」
ベクターの最適化 : 「修正」-&gt;「シェイプ」-&gt;「最適化」

テキストについて

12, 24px を使う
変数のプロパティに直接 「/:newsTxt」みたいに指定できるのは知らなかった
mblength =&gt; ２バイト文字での長さ (FlashLite1.1のみ)

GPSについて

docomo [...]</description>
			<content:encoded><![CDATA[<p>
これはかなりの良書です。<br />
これから Flash Lite を勉強しようとしてたり、すでにやってる人にもお奨めできる１冊です。<br />
むしろこれ以外で役に立つ本が今までなかった。
</p>
<p>
書籍としてもサンプルにQRコードがついていて何もしなくても確認もできるし<br />
Flash Lite1.1 の書き方と FLash Lite2.0 の両方のサンプルがついててわかりやすい。
</p>
<p>
中でも役にたつのが Chapter 10 と Chapter 11。<br />
これだけのために本書をかったとしても損はないと思うくらいの内容。<br />
さらに Flash Lite 3.1 までもカバーしています。
</p>
<p>
未だに知らなかったはまりどこもたくさんあったので著者の方々には本当に感謝です。<br />
以下、簡単な自分用のまとめです。
</p>
<h3>音について</h3>
<ul>
<li>機種毎の拡張子</li>
<ul>
<li>docomo => MIDI</li>
<li>au => SMAF</li>
<li>softbank => SMAF</li>
</ul>
<li>コンパクトサウンド(.fls) 便利</li>
<li>
    Flash Lite が自動的に端末に合わせた音データを選択して再生してくれる<br />
    Mobile &#038; Device Developer Center だと繰り返しとかで対応していない<br />
    対応していない実機もある
</li>
<li>全てをカバーするなら UA を見て出し分ける必要がある</li>
<li>複数音を同時に鳴らせない</li>
<li>サウンドの繰り返しの際に処理が遅れる</li>
<li>待ち受けだと音が鳴らない</li>
</ul>
<h3>最適化について</h3>
<ul>
<li>線の最適化 :「修正」->「シェイプ」->「高度なスムーズ」</li>
<li>ベクターの最適化 : 「修正」->「シェイプ」->「最適化」</li>
</ul>
<h3>テキストについて</h3>
<ul>
<li>12, 24px を使う</li>
<li>変数のプロパティに直接 「/:newsTxt」みたいに指定できるのは知らなかった</li>
<li>mblength => ２バイト文字での長さ (FlashLite1.1のみ)</li>
</ul>
<h3>GPSについて</h3>
<ul>
<li>docomo => 使えない</li>
<li>au => getURL(&#8220;device:location?url=CGIのURL);</li>
<li>softbank => getURL(&#8220;location:auto?url=CGIのURL);</li>
</ul>
<h3>お気に入りについて(auのみ)</h3>
<ul>
<li>表示 => getURL(&#8220;device:home/bookmark&#8221;);</li>
<li>登録 => getURL(&#8220;device:home/bookmark?url=[URLエンコードされたURL]&#038;title=[URLエンコードされたもの]&#8220;);</li>
</ul>
<h3>Tips</h3>
<ul>
<li>動的な変数の参照 (Flash Player6以前)  ex) eval(&#8220;hoge&#8221; add 1);</li>
<li>書き換え ex) set(&#8220;hoge&#8221; add 1, 0);</li>
<li>バイブレータ振動中は描画速度が落ちる</li>
<li>決定キーを押しても一時的に処理が遅くなる</li>
<li>同じタイミングでフレームの遷移、変数の代入したら駄目</li>
<li>ドットズレをさせないためには MC のサイズを偶数値にし位置を整数値にすればよい</li>
<li>変数の初期値は&#8221;"</li>
<li>_width, _height は読み取り専用</li>
<li>マスクレイヤーの MC は操作できない</li>
<li>call で別の階層にあるラベルも call で呼べる ex) call(&#8220;../:hoge&#8221;);</li>
<li>透明なオブジェクトの重なりは５階層までは正常に表示できる</li>
<li>&#038;&#038; || よりも and or の方が処理が早い</li>
</ul>
<p>
あと、ここには書かれてなかったけどメモリの使用量を確認するときは<br />
Mobile &#038; Device Developer Center で確認するだけでなく<br />
メインを実機で確認した方がいいと思う。<br />
以前にメモリ使用量が実機だと倍になっていることがあったので<br />
めんどくさいけど実機で見た方がいい。<br />
あと、ビットマップ画像はそのままメモリに乗るのでバランス良くビットマップ画像を使う。
</p>
<p>
<p>アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。</p></p>

<p><a href="http://feedads.g.doubleclick.net/~a/dOslWSw2rW5zPI6ugcyNnus9y8g/0/da"><img src="http://feedads.g.doubleclick.net/~a/dOslWSw2rW5zPI6ugcyNnus9y8g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dOslWSw2rW5zPI6ugcyNnus9y8g/1/da"><img src="http://feedads.g.doubleclick.net/~a/dOslWSw2rW5zPI6ugcyNnus9y8g/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/08/read_books_of_flashlite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>リバースプロキシ後の webDAV に https で mv できない</title>
		<link>http://blog.dealforest.net/2009/07/subversion_behind_an_apache_reverse_proxy/</link>
		<comments>http://blog.dealforest.net/2009/07/subversion_behind_an_apache_reverse_proxy/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 17:07:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[subversion]]></category>
		<category><![CDATA[pound]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=528</guid>
		<description>サーバーの構成はこんな感じ



LB に pound (http, https 使える状態)
webDAV に mod_dav_svn を使って http で apche がたっている。


で、今回の問題が https で checkout したリポジトリに対して mv や rename すると
 svn COPY 502 bad gateway over HTTPS  と言われてコミットできない。
http だと問題なく mv, rename がコミットできる。


以下  http://www.digilib.org/modules/bwiki/index.php?Subversion#zca25176 より引用


これはHTTPS超えて、SVNを管理する場合、ファイル移動する際発生する問題。
davのモジュールは相対ではなく、絶対パスで管理するから。 
Subversion付属のsvnserveなら問題発生しない。


って書かれてたので半ばあきらめてた。
ただいかんせん、ほかにも https でやってるとこもある。
現に会社では webDAV, https という組み合わせでもできていた。


サーバのセットアップをやったついでに調べるとこれの回避方法をようやくみつけた！！

Subversion behind an Apache Reverse Proxy

ここに書いてあるとおりで、
どうやらリバースプロキシを使って、https で client からアクセスがいき
webDAV が http でたっている場合に怒られるらしい。


LoadModule headers_module [...]</description>
			<content:encoded><![CDATA[<p>
サーバーの構成はこんな感じ
</p>
<p><img src="http://blog.dealforest.net/wp-content/uploads/2009/07/構成.jpg" /></p>
<p>
LB に pound (http, https 使える状態)<br />
webDAV に mod_dav_svn を使って http で apche がたっている。
</p>
<p>
で、今回の問題が https で checkout したリポジトリに対して mv や rename すると<br />
<b> svn COPY 502 bad gateway over HTTPS </b> と言われてコミットできない。<br />
http だと問題なく mv, rename がコミットできる。
</p>
<p>
以下  http://www.digilib.org/modules/bwiki/index.php?Subversion#zca25176 より引用
</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">これはHTTPS超えて、SVNを管理する場合、ファイル移動する際発生する問題。
davのモジュールは相対ではなく、絶対パスで管理するから。 
Subversion付属のsvnserveなら問題発生しない。</pre></div></div>

<p>
って書かれてたので半ばあきらめてた。<br />
ただいかんせん、ほかにも https でやってるとこもある。<br />
現に会社では webDAV, https という組み合わせでもできていた。
</p>
<p>
サーバのセットアップをやったついでに調べるとこれの回避方法をようやくみつけた！！
</p>
<p><a href="http://silmor.de/49">Subversion behind an Apache Reverse Proxy</a></p>
<p>
ここに書いてあるとおりで、<br />
どうやらリバースプロキシを使って、https で client からアクセスがいき<br />
webDAV が http でたっている場合に怒られるらしい。
</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">LoadModule headers_module modules/mod_headers.so
RequestHeader edit Destination ^https http early</pre></div></div>

<p>
こうしてやるといいとのこと。<br />
これでよーやく気兼ねなく mv や rename ができるようになった。<br />
快適快適
</p>
<p>
LB はさまずに直接 apache で受けたら回避できる問題だけど<br />
<a href="http://slashdot.jp/security/09/06/23/0455215.shtml">Slowloris Dos攻撃</a> もあるから LB を間にいれときたいってのもあるしね。
</p>
<p>
それにしても https で pound が proxy すると<br />
pound 以降は http で通信が行われてるっていう<br />
認識だったんだけど違うのかな？？
</p>
<p>
おいおい調べることにして寝る。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/B_ZsXwRZwtZ2Ddg1UACYnbcZu4g/0/da"><img src="http://feedads.g.doubleclick.net/~a/B_ZsXwRZwtZ2Ddg1UACYnbcZu4g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/B_ZsXwRZwtZ2Ddg1UACYnbcZu4g/1/da"><img src="http://feedads.g.doubleclick.net/~a/B_ZsXwRZwtZ2Ddg1UACYnbcZu4g/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/07/subversion_behind_an_apache_reverse_proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LDR+SBM Counter にコメント一覧機能をつけてみた</title>
		<link>http://blog.dealforest.net/2009/07/ldrsbm-counter-add-function-of-commet-list/</link>
		<comments>http://blog.dealforest.net/2009/07/ldrsbm-counter-add-function-of-commet-list/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 18:27:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=527</guid>
		<description>最近 FF から Safari に本格的に移行しようとしててネックになったのが tombloo と SBMカウンタ。
これがないと相当不便。
という訳で SBMカウンタ を SIMBLE とかで作ってる人いないかなと思って探すと
greasemonkey スクリプトで実装している方がいました。

Safari で動く LDR+SBM Counter を公開しました

いかんせん、これだとコメント一覧が取得できません。
それがあると文句なし！！！
ということで衝動で勉強がてら実装しちゃいました。

dealforest&amp;#8217;s ldrsbmcounter at master &amp;#8211; GitHub
デフォルト表示

フォーカス時


ロゴをクリックするとコメントのフィルタリングできます。
LDR をクリックすると全てのコメントが表示されます(画像用意してないだけw)。
とりあえず Safari4 で動くようにしかしてません。
一応 FF でも動いてるっぽい(スタイルが微妙にずれる)。
delicious だと SBMカウンタ の場合とコメントがずれるので
そのうち取得する API を変更する予定。
そーすると MD5 絡みがいらなくなるからコードがばっさり少なくなる。
あとコードはリファクタ前の状態。
けっこー汚いけど、眠いからそのうちする。


と、まぁ〜そのうちよくなる感じ。
本家さんが対応するまで？？の仮対応みたいなノリで。
Safari で SBM カウンタで困ってる人がいればどーぞー

追記 2009-07-13 03:28:11
ブログ書いた後に気づいたけど本家の方で機能追加されてた。。。
なんて無駄なことしたんだろーかー。
まぁ勉強になったからいいやー。
というわけで使おうとした方はこちらのを入れて下さい。</description>
			<content:encoded><![CDATA[<p>
最近 FF から Safari に本格的に移行しようとしててネックになったのが tombloo と SBMカウンタ。<br />
これがないと相当不便。<br />
という訳で SBMカウンタ を SIMBLE とかで作ってる人いないかなと思って探すと<br />
greasemonkey スクリプトで実装している方がいました。
</p>
<p><strong><a href="http://d.hatena.ne.jp/milk1000cc/20080508/1210239049">Safari で動く LDR+SBM Counter を公開しました</a></strong></p>
<p>
いかんせん、これだとコメント一覧が取得できません。<br />
それがあると文句なし！！！<br />
ということで衝動で勉強がてら実装しちゃいました。
</p>
<p><a href="http://github.com/dealforest/ldrsbmcounter/tree/master">dealforest&#8217;s ldrsbmcounter at master &#8211; GitHub</a></p>
<p>デフォルト表示</p>
<p><a href="http://blog.dealforest.net/wp-content/uploads/2009/07/nonfocus_03.png" rel="lightbox[roadtrip]" title="動作画面"><img alt="フォーカスをはずしてる時" src="http://blog.dealforest.net/wp-content/uploads/2009/07/nonfocus_03.png"/></a></p>
<p>フォーカス時</p>
<p><a href="http://blog.dealforest.net/wp-content/uploads/2009/07/focus_03.png" rel="lightbox[roadtrip]" title="動作画面"><img alt="フォーカスを当てた時" src="http://blog.dealforest.net/wp-content/uploads/2009/07/focus_03.png"/></a></p>
<p>
ロゴをクリックするとコメントのフィルタリングできます。<br />
LDR をクリックすると全てのコメントが表示されます(画像用意してないだけw)。<br />
とりあえず Safari4 で動くようにしかしてません。<br />
一応 FF でも動いてるっぽい(スタイルが微妙にずれる)。<br />
delicious だと SBMカウンタ の場合とコメントがずれるので<br />
そのうち取得する API を変更する予定。<br />
そーすると MD5 絡みがいらなくなるからコードがばっさり少なくなる。<br />
あとコードはリファクタ前の状態。<br />
けっこー汚いけど、眠いからそのうちする。
</p>
<p>
と、まぁ〜そのうちよくなる感じ。<br />
本家さんが対応するまで？？の仮対応みたいなノリで。<br />
Safari で SBM カウンタで困ってる人がいればどーぞー
</p>
<h3>追記 2009-07-13 03:28:11</h3>
<p>ブログ書いた後に気づいたけど本家の方で機能追加されてた。。。<br />
なんて無駄なことしたんだろーかー。<br />
まぁ勉強になったからいいやー。<br />
というわけで使おうとした方は<a href="http://d.hatena.ne.jp/milk1000cc/20080521/1211330038">こちら</a>のを入れて下さい。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/XkGEDWcupkPZZoK6pHACHaZPaBE/0/da"><img src="http://feedads.g.doubleclick.net/~a/XkGEDWcupkPZZoK6pHACHaZPaBE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/XkGEDWcupkPZZoK6pHACHaZPaBE/1/da"><img src="http://feedads.g.doubleclick.net/~a/XkGEDWcupkPZZoK6pHACHaZPaBE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/07/ldrsbm-counter-add-function-of-commet-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WEB+DB PRESS あたった</title>
		<link>http://blog.dealforest.net/2009/06/prezent-webdb-press/</link>
		<comments>http://blog.dealforest.net/2009/06/prezent-webdb-press/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 16:36:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=522</guid>
		<description>ほんとにあたんだー
初めて知った。</description>
			<content:encoded><![CDATA[<p>ほんとにあたんだー<br />
初めて知った。</p>
<p><a href="http://blog.dealforest.net/wp-content/uploads/2009/06/img_0110.jpg" rel="lightbox[roadtrip]" title="WEB+DB PRESS vol.51"><img width="50%" alt="あたったー" src="http://blog.dealforest.net/wp-content/uploads/2009/06/img_0110.jpg"/></a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/st9pCyrrxlCatWrzEUSd9j8Ih2o/0/da"><img src="http://feedads.g.doubleclick.net/~a/st9pCyrrxlCatWrzEUSd9j8Ih2o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/st9pCyrrxlCatWrzEUSd9j8Ih2o/1/da"><img src="http://feedads.g.doubleclick.net/~a/st9pCyrrxlCatWrzEUSd9j8Ih2o/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/06/prezent-webdb-press/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac で screen 起動後に pbcopy を動くようにする方法</title>
		<link>http://blog.dealforest.net/2009/06/can-use-pbcopy-on-screen/</link>
		<comments>http://blog.dealforest.net/2009/06/can-use-pbcopy-on-screen/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:40:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[pbcopy]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=518</guid>
		<description>ずっと pbcopy が動かなくてなんでだろうと思ってたけど
screen を起動しなかったら動いてることにきづいた。


ここをみると Ports で screen をいれればいいらしい。
でもそれじゃ動かない。で、色々と調べると
どうやらパッチをあてて自分でコンパイルすればよさげ。
というわけでさっそくコンパイルしたら pbcopy ができるようになった！！


以下、コンパイルの流れ。
http://git.savannah.gnu.org/cgit/screen.git
ここから screen のソースをおとしてくる。


パッチを下記のサイトを参考にあてる。
Macのscreen + pbcopy
screen で pbcopy/pbpaste が動かない問題
ちなみにパッチファイルをまとめて gist にあげた。(DL)
これを screen/src の中に保存。
そして screen/src の中に移動。


1
2
3
4
5
patch -s -p0 &amp;#60; screen-mac-pbcopy.patch    &amp;#60;- これでパッチがあたる
autogen.sh
./configure -prefix=/opt/loca/                    &amp;#60;- ports と同じ場所にいれたかったから [...]</description>
			<content:encoded><![CDATA[<p>
ずっと pbcopy が動かなくてなんでだろうと思ってたけど<br />
screen を起動しなかったら動いてることにきづいた。
</p>
<p>
<a href="http://d.hatena.ne.jp/moro/20080405/1207411997">ここ</a>をみると Ports で screen をいれればいいらしい。<br />
でもそれじゃ動かない。で、色々と調べると<br />
どうやらパッチをあてて自分でコンパイルすればよさげ。<br />
というわけでさっそくコンパイルしたら pbcopy ができるようになった！！
</p>
<p>
以下、コンパイルの流れ。<br />
<a href="http://git.savannah.gnu.org/cgit/screen.git">http://git.savannah.gnu.org/cgit/screen.git</a><br />
ここから screen のソースをおとしてくる。
</p>
<p>
パッチを下記のサイトを参考にあてる。<br />
<a href="http://d.hatena.ne.jp/hiboma/20090304/1236179492">Macのscreen + pbcopy</a><br />
<a href="http://d.hatena.ne.jp/eagletmt/20090516/1242486472">screen で pbcopy/pbpaste が動かない問題</a><br />
ちなみに<a href="http://gist.github.com/135393">パッチファイル</a>をまとめて gist にあげた。(<a href="http://gist.github.com/tarballs/gist135393-e9c5b566918962bf413c0929eadb77990c1d1a7f.tar.gz">DL</a>)<br />
これを screen/src の中に保存。<br />
そして screen/src の中に移動。
</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">patch -s -p0 &lt; screen-mac-pbcopy.patch    &lt;- これでパッチがあたる
autogen.sh
./configure -prefix=/opt/loca/                    &lt;- ports と同じ場所にいれたかったから prefix をつけただけ。
make
sudo make install</pre></td></tr></table></div>

</p>
<p>
これで vim で &#8220;*y とすると pastebord にもコピーできた。<br />
日本語まじりの文字をコピーしようとすると nkf が必要。<br />
<a href="http://d.hatena.ne.jp/akio0911/20080322/1206197733">vim・mac間でクリップボードを介してやり取りする方法 完結編</a><br />
を参考にして設定しました。
</p>
<p>
これでそーとー快適。<br />
やっぱり pastebord や clipbord は共有されてるにかぎる。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/1CoIqmBDxz3FoESexcA_wmjEMZk/0/da"><img src="http://feedads.g.doubleclick.net/~a/1CoIqmBDxz3FoESexcA_wmjEMZk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1CoIqmBDxz3FoESexcA_wmjEMZk/1/da"><img src="http://feedads.g.doubleclick.net/~a/1CoIqmBDxz3FoESexcA_wmjEMZk/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/06/can-use-pbcopy-on-screen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gist を Vim から操作する Gist.vim が相当便利</title>
		<link>http://blog.dealforest.net/2009/06/vim-plugin-gistvim/</link>
		<comments>http://blog.dealforest.net/2009/06/vim-plugin-gistvim/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 16:14:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[vi]]></category>
		<category><![CDATA[gists]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=505</guid>
		<description>id:mattn さんが作った Gist.vim が gists を使う際にとても便利です。
curl が必要なのと id と token を vimrc に書けば使える。
ちなみに git config に設定していれば書かなくても大丈夫

簡単に操作の説明。(version 2.5)

let g:github_user = 'dealforest'
let g:github_token = 'XXXXXXXXXXXXXXXXXX'



:Gist
ポストされます。


:&amp;#8217;</description>
			<content:encoded><![CDATA[<p>
<a href="http://mattn.kaoriya.net/software/vim/20081106153534.htm">id:mattn</a> さんが作った Gist.vim が gists を使う際にとても便利です。<br />
curl が必要なのと id と token を vimrc に書けば使える。<br />
ちなみに git config に設定していれば書かなくても大丈夫
</p>
<h2>簡単に操作の説明。(version 2.5)</h2>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">let g:github_user = 'dealforest'
let g:github_token = 'XXXXXXXXXXXXXXXXXX'</pre></div></div>

<table>
<tr>
<td>:Gist</td>
<td>ポストされます。</td>
</tr>
<tr>
<td>:&#8217;<,'>Gist </td>
<td>矩形選択部分をポストします</td>
</tr>
<tr>
<td>:Gist -p</td>
<td>privateモードでポスト</td>
</tr>
<tr>
<td>:Gist xxxx</td>
<td>idを指定して開く</td>
</tr>
<tr>
<td>:Gist -l [ユーザID]</td>
<td>(ユーザーを指定して)一覧を開く</td>
</tr>
<tr>
<td>:Gist -la</td>
<td>全てのユーザの最新gist一覧</td>
</tr>
<tr>
<td>:Gist -c XXXXX</td>
<td>クリップボードにコピー</td>
</tr>
<tr>
<td>:Gist -e</td>
<td>編集。ただし gist buffer 上でしかできない。</td>
</tr>
</table>
<h2>ショートカット</h2>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">nnoremap &lt;silent&gt; ,gn :Gist&lt;cr&gt;
nnoremap &lt;silent&gt; ,gl :Gist -l&lt;cr&gt;
nnoremap &lt;silent&gt; ,ga :Gist -a&lt;cr&gt;
nnoremap &lt;silent&gt; ,ge :Gist -e&lt;cr&gt;
nnoremap &lt;silent&gt; ,gp :Gist -p&lt;cr&gt;
nnoremap &lt;silent&gt; ,gr :Gist
nnoremap &lt;silent&gt; ,gu :Gist -l</pre></div></div>

<p>こんな感じでショートカットを作ってます</p>
<h2>パッチ</h2>
<p>
実際に使っていて凄い便利。<br />
ただ :Gist xxxx がどーしても動かなかったので gist.vim を修正した。
</p>
<pre class="brush: diff;">
@@ -391,7 +398,7 @@
     elseif arg =~ '^\(-e\|--edit\)$' &amp;&amp; bufname =~ bufnamemx
       let editpost = 1
       let gistid = substitute(bufname, bufnamemx, '\1', '')
-    elseif len(gistls) &gt; 0 &amp;&amp; len(gistnm) == 0
+    elseif len(gistnm) == 0
       if editpost == 1
         let gistnm = arg
       elseif len(gistls) &gt; 0
</pre>
<p>gistls についてはそれ以下のところで判断してるのでここでいれたら動かないと思う。</p>
<p>
あと自分用に少しカスタマイズした。<br />
:Gist で POST した後に :Gist -l で一覧を表示した際<br />
少しラグがありさきほど POST したのが表示されない。<br />
修正したり変更したりするのが不便。というわけで POST 後に自動的に<br />
buffer に開くようにした。これで :w で再度ポストもそのままできるから便利。<br />
split して開くのがどーかとも思うけど、まぁいいやと放置
</p>
<pre class="brush: diff;">
@@ -340,13 +340,6 @@
   let res = substitute(res, '^.*: ', '', '')
   if len(res) &gt; 0 &amp;&amp; res != 'http://gist.github.com/gists'
     echo 'done: '.res
+
+    let mx = '^http://gist.github.com/\(\d\+\)$'
+    if res =~# mx
+      let gistid = substitute(res, mx, '\1', '')
+      echo gistid
+      call s:GistGet(g:github_user, g:github_token, gistid, 0)
+    endif
   else
     echoerr 'Post failed'
   endif
</pre>
<p>
GistListAction と動作が似てる(ほぼそこのコピペ)からいじればいいとは思うけど<br />
そもそも vimscript そこまで分からなってないため妥協。<br />
とりあえず動いてるしいいかと。。。
</p>
<p>
デバッグとかってどーするもんなんだろ。<br />
みんな echo でしてんのかな。<br />
効率いい方法はどうしたものか。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/nt0BpVBZIrWy6JARfcf_slrrOHA/0/da"><img src="http://feedads.g.doubleclick.net/~a/nt0BpVBZIrWy6JARfcf_slrrOHA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nt0BpVBZIrWy6JARfcf_slrrOHA/1/da"><img src="http://feedads.g.doubleclick.net/~a/nt0BpVBZIrWy6JARfcf_slrrOHA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/06/vim-plugin-gistvim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 3.666 seconds --><!-- Cached page served by WP-Cache -->
