<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://www.kaoriya.net/recent/RSS">
  <title>KaoriYa - 最近の更新</title>
  <link>http://www.kaoriya.net</link>

  <description>
    
      
    
  </description>

  

  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2011-02-26T02:43:40Z</syn:updateBase>
        

  <image rdf:resource="http://www.kaoriya.net/logo.png"/>

  <items>
    <rdf:Seq>
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2011/07/20110718"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/05/12"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/05/10"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2011/08/20110813_2"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/news/2012/20120501"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/04/20"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/04/19"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/04/18"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2011/12/20111210"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/04/02"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/04/01"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/02/09"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/01/17"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/blog/2012/01/15"/>
      
      
        <rdf:li rdf:resource="http://www.kaoriya.net/software/vim/about"/>
      
    </rdf:Seq>
  </items>

</channel>


  <item rdf:about="http://www.kaoriya.net/blog/2011/07/20110718">
    <title>Chromebook開封の儀</title>
    <link>http://www.kaoriya.net/blog/2011/07/20110718</link>
    <description>注文していたChromebook (AC-700)が到着したので、早速開封の儀をとり行いました。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>先日発売された<a class="external-link" href="http://www.amazon.com/Acer-AC700-1099-Chromebook-Wi-Fi/dp/B00507ALBG/" target="_blank">Chromebook (AC-700)</a>を<a class="external-link" href="https://www.usadeokaimono.com/" target="_blank">転送サービス</a>経由で購入(<a class="external-link" href="http://someya.tv/chrome/700chromebook/amazonchromebook01.php" target="_blank">参考</a>)し、本日AM11時少し前に到着したので早速開封の儀をとり行いました。なお注文から到着まではほぼ一週間でした。</p>
<p><img alt="DSC00279.JPG" class="image-inline" src="/images/201107/DSC00279.JPG" /></p>
<p>見慣れたAmazonの箱。</p>
<p><img alt="DSC00280.JPG" class="image-inline" src="/images/201107/DSC00280.JPG/image_mini" /><img alt="DSC00281.JPG" class="image-inline" src="/images/201107/DSC00281.JPG/image_mini" /><img alt="DSC00282.JPG" class="image-inline" src="/images/201107/DSC00282.JPG/image_mini" /><img alt="DSC00283.JPG" class="image-inline" src="/images/201107/DSC00283.JPG/image_mini" /></p>
<p>梱包は外から順に</p>
<ol>
<li>Amazon箱(&amp;緩衝材)</li>
<li>Acerの外箱</li>
<li>Acerの化粧箱(取っ手付き)</li>
</ol>
<p>となってました。</p>
<p><img alt="DSC00284.JPG" class="image-inline" src="/images/201107/DSC00284.JPG" /><img alt="DSC00285.JPG" class="image-inline" src="/images/201107/DSC00285.JPG/image_mini" /></p>
<p>内容物一覧。マニュアル3組、バッテリー、ACアダプタ、そして本体。マニュアルには一部日本語による記載を発見。このACアダプタはゴツいけどなかなか面白い構造ですが、コレ180度と270度の説明は要るか?w</p>
<p><img alt="DSC00287.JPG" class="image-inline" src="/images/201107/DSC00287.JPG/image_preview" /><img alt="DSC00288.JPG" class="image-inline" src="/images/201107/DSC00288.JPG/image_preview" /></p>
<p>バッテリーを接続したらいきなり初期設定画面に。そこに至るまでがかなり早くて焦った。言語選択で日本語を選べば日本語表示可。</p>
<p><img alt="DSC00290.JPG" class="image-inline" src="/images/201107/DSC00290.JPG/image_mini" /><img alt="DSC00291.JPG" class="image-inline" src="/images/201107/DSC00291.JPG/image_preview" /></p>
<p>自室に設置しての試用。キーボードはストロークが浅く、タイピングはどうしてもHHK Proと比べてしまうのでチープ感が否めないが、不快という程ではない。CtrlボタンとSearchボタンの場所を入れ替えられたら、文句は無いというレベル。日本語IMEのON/OFFはCtrl+Space。</p>
<p>サスペンドからの復帰とネットへの接続はかなり素早く、自分のGoogle+とTwitterという用途ではWindowsデスクトップと遜色ないどころか、はるかに快適。ニコニコ動画もバッチリ見れた。個人的にはソレが大きい。</p>
<p><img alt="DSC00292.JPG" class="image-inline" src="/images/201107/DSC00292.JPG" /></p>
<p>Amazonの写真で見た印象よりはかなり大きい。</p>
<p>全体として、これがとても4万円以下で手に入るとは思えない快適さ。<br />通常の生活にどうストレスなくネット(Web)を組み込むかということに特化しており、その用途で使うなら文句なしと言って良い。<br />開発用途?うん。この製品にそれを期待するのは間違ってるね。</p>
<p>使用感の詳しいレビューはまた別記事で。</p>
<h3>13:40追記</h3>
<p>CtrlとSearchの入れ替えができました。「設定→システム→言語→修飾キー」で。</p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>chromebook</dc:subject>
    
    <dc:date>2011-07-18T04:20:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/05/12">
    <title>ioBook Air開封の儀</title>
    <link>http://www.kaoriya.net/blog/2012/05/12</link>
    <description>ちょっと落ち着いた感のあるioBook Airを買ってきたので開封した</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>ちょっと落ち着いた感のあるioBook Airを買ってきたので開封しました。</p>
<p><a class="internal-link" href="resolveuid/219e5620-7d18-4a28-b7b0-5124f25fce93"><img class="image-inline" src="resolveuid/219e5620-7d18-4a28-b7b0-5124f25fce93/@@images/image/preview" /></a></p>
<p>例のお店の紙袋。わくわくしますね。</p>
<p><a class="internal-link" href="resolveuid/4fd14cea-e53c-427e-ac7c-4bdee8e8c797"><img class="image-inline" src="resolveuid/4fd14cea-e53c-427e-ac7c-4bdee8e8c797/@@images/image/preview" /></a></p>
<p>うわ…外箱はなんかそっくりですよ!</p>
<p>じゃ、開けてみますかね。</p>
<p><a class="internal-link" href="resolveuid/1873288a-85fa-44cf-9d67-ed1bbba0efca"><img class="image-inline" src="resolveuid/1873288a-85fa-44cf-9d67-ed1bbba0efca/@@images/image/preview" /></a> (本当の写真は<a class="internal-link" href="resolveuid/762187ae-b1e0-436e-adcc-9705052916a4">こっち</a>)</p>
<p>うっわーなにこれ…やりすぎでしょw</p>
<p>中に入ってみるもの並べてみますか。</p>
<p><a class="internal-link" href="resolveuid/a26b638a-f91f-4cb5-99d9-8ed02a2b1358"><img class="image-inline" src="resolveuid/a26b638a-f91f-4cb5-99d9-8ed02a2b1358/@@images/image/preview" /></a> (本当の写真は<a class="internal-link" href="resolveuid/2808f065-7a21-4065-93f1-3a3d50b216d2">こっち</a>)</p>
<p>…これはヒドイwww</p>
<p>まぁ、茶番はともかく値段の割によくできています。値段なりの部分も多いですけどね。</p>
<p>本当はUbuntuでも入れたかったんですが、諸般の事情により時間切れってことで、最後にパクリとパクラレを並べて撮影してみました。</p>
<p><a class="internal-link" href="resolveuid/d5a2f48a-8f1c-42fc-8cc6-a4e94ab5de53"><img class="image-inline" src="resolveuid/d5a2f48a-8f1c-42fc-8cc6-a4e94ab5de53/@@images/image/large" /></a></p>
<p>IOSYSはいつ訴えられてもしかたないと思いますwww</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>book</dc:subject>
    
    <dc:date>2012-05-12T03:10:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/05/10">
    <title>JDK7でAndroidアプリをリリースビルドする方法</title>
    <link>http://www.kaoriya.net/blog/2012/05/10</link>
    <description>AndroidアプリはJava/JDKを使ってビルドしますが、少し前までJDK7ではリリースビルドできませんでした。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>AndroidアプリはJava/JDKを使ってビルドしますが、少し前まで<a class="external-link" href="http://togetter.com/li/208415">JDK7ではリリースビルド(ant release)できません</a>でした。正確にはビルド自体はできるけど実機にインストールできないバイナリができてしまっていたのです。しかしあれから半年がたち、気がついたらリリースビルドするための条件が揃っていたのでちょっとやってみましょう。</p>
<h3>必要なもの</h3>
<p>まずrequirementsですが、まぁ私が試した各ソフトウェアのバージョンです。</p>
<ul>
<li>Android SDK r19 (r18をDL後SDK managerでupdate)</li>
<li><b>Apache Ant 1.8.3</b> (この記事のキーポイント。1.8.2以前だと絶対にできません)</li>
</ul>
<p>あとは適当なAndroidアプリのソースが要りますね。</p>
<h3>手順</h3>
<p>Android SDKの tools/ant/build.xml に次のパッチを当てましょう。</p>
<pre class="brush: diff;">--- tools/ant/build.xml.orig  2012-05-09 08:54:03.105827000 +0900
+++ tools/ant/build.xml 2012-05-09 09:00:23.602590200 +0900
@@ -1052,6 +1052,8 @@
                         storepass="${key.store.password}"
                         alias="${key.alias}"
                         keypass="${key.alias.password}"
+                        sigalg="SHA1withRSA"
+                        digestalg="SHA1"
                         verbose="${verbose}" /&gt;
 
                 
</pre>
<p>さぁ、たったこれだけで ant release できるようになりましたよ。</p>
<h3>解説</h3>
<p>あとはこのパッチが機能する理由を解説するだけですから、単にJDK7でリリースビルドしたいだけの人はここで読むのを止めてよいでしょう。</p>
<p>さてこのパッチが機能する理由を知るには、なぜJDK7でリリースビルドできなくなったか知る必要があります。それを以下に示します。</p>
<ul>
<li>Androidアプリには署名が必要である</li>
<li>署名にはいつくかの方式があるが、sigalg(署名アルゴリズム)とdigestalg(ダイジェストアルゴリズム)の2つのパラメータで選択する</li>
<ul>
<li>Androidアプリの署名にはsigalgにSHA1withRSAを、digestalg=SHA1を使う</li>
</ul>
<li>Androidアプリはリリースビルド時はAntの<b>signjarタスク</b>を使って署名する</li>
<ul>
<li>signjarタスクにはsigalgとdigestalgを指定する方法がなかった(Ant 1.8.2まで)</li>
</ul>
<li>AntのsignjarタスクはJDKに付属するjarsignerと同等である</li>
<li>jarsignerではsigalgとdigestalgをそれぞれ省略した場合にはデフォルト値が使われる</li>
<li>jarsignerの署名方式のデフォルト値が<a class="external-link" href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">JDK6まで</a>と<a class="external-link" href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html">JDK7以降で</a>変わってしまった</li>
</ul>
<p>以上の事実の積み重ねによりJDK7ではリリースビルドできなくなっていたのです。</p>
<p>で、今回のポイントは太字でも示した「signjarタスク」です。本来こいつにsigalgとdigestaltを指定できないのがおかしいわけでして、やはり<a class="external-link" href="https://issues.apache.org/bugzilla/show_bug.cgi?id=52344">Antのほうでも指摘を受けて</a>1.8.3にて追加されていました。前述のパッチではsignjarタスクにsigalgとdigestalgを利用するようにしたのです。</p>
<h3>結論</h3>
<p>これでAndroidアプリをJDK7でリリースビルドできるようになりました。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>android</dc:subject>
    
    <dc:date>2012-05-09T22:45:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2011/08/20110813_2">
    <title>Vim昔語/未来編</title>
    <link>http://www.kaoriya.net/blog/2011/08/20110813_2</link>
    <description>人は歩みを止めないし止めるべきではない、そんな明日への話。Vim昔語、最終話。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>昔語で未来編とはどういうわけだ、というツッコミは甘んじて受ける。人は歩みを止めないし止めるべきではない。常に何事にも一歩を踏み出す勇気が必要、そんな明日への姿勢を新たにした思い出話。</p>
<p>2008年秋の早朝、私は赤坂プリンスのロビーにいた。緊張していた。話はその数ヶ月前にさかのぼる。Bramから個人的にメールが来た。</p>
<p>「秋に東京に行くんだけど会えないか?」</p>
<p>「いいね、ぜひ会おう」</p>
<p>Bramが毎年一ヶ月ほどを世界のあちこちへ旅行していることは知っていた。この年は日本だった。私は彼が自分を気にとめていてくれて声をかけてくれたことがとても嬉しくて、軽い気持ちで会う約束をした。そしてBramの宿泊先ホテルの上階のレストランで朝食をとりながら歓談しようということになったのだ。</p>
<p>ロビーの電話でBramを呼び出し、彼を待ってる間も胸中は複雑だった。メールでしかやり取りしたことのない一生会うことのなかったかもしれない相手と直接会える喜びと、メールや翻訳程度は苦ではないが会話などまともにしたことのない英語力への不安とでゴチャゴチャだった。しかも助けは誰一人いない。会うと安請け合いした数ヶ月前の自分を呪ったりもした。なお高校時代の英語の試験は一回を除いて全て赤点&amp;追試だったと付け加えておく。</p>
<p>エレベーターから降りてきたBramはとにかくデカかった。私の身長は<a class="external-link" href="http://jigokuno.com/?eid=704" target="_blank">170cm弱</a>と大きくないので、見上げるBramは2m近いんじゃないか。歳を重ねているため、よく目にする若い頃の写真のイメージとはかなり違うが、漂う知的な雰囲気に同じところがあった。</p>
<p>挨拶と握手を交わす。手の大きさは今も覚えている。お土産にと用意した<a class="external-link" href="http://maps.google.co.jp/maps/place?q=%E6%B5%85%E8%8D%89+%E5%B0%8F%E6%A1%9C&hl=ja&ie=UTF8&cid=14792978055337954028" target="_blank">浅草の小桜</a>のかりんとうを、異文化への理解が深い彼は喜んで受け取ってくれた。彼からはスイスのチョコレート(BramはスイスのGoogle勤務だ)をいただいた。海外のチョコレートの日本とは根本的に異なる風味が大好きな私は、必要以上に喜びを表現していた気がする。</p>
<p>告白しよう。その後、何を話したか正確には記憶していない。ちゃんと応対できていたかも怪しい。さらに惜しいことにもう今では食べられない赤坂プリンスの朝食ビュッフェの味すら記憶にない。</p>
<p>しかし楽しい笑いの絶えないひとときだった。前日訪れた<a class="external-link" href="http://ja.wikipedia.org/wiki/%E8%B0%B7%E4%B8%AD_(%E5%8F%B0%E6%9D%B1%E5%8C%BA)" target="_blank">谷中</a>の風景をとても気に入ったこと。ビルに囲まれた景色は世界中どこでも一緒だということ。「赤坂」と「浅草」の発声、区別が難しいこと。今日は鎌倉をみて、そのあとは関西に向かうこと。シーズンなので台風が心配だが、それを含めての日本だということ。ほうっておけばPCばかり触っていること。この旅行では電子機器を一切封印していること。最新のVimスクリプトはPythonからの影響が強いこと。Vimの将来のメンテナンスの話。そしてVimという素晴らしい仕事への感謝と、それを通じて出会えた喜びを。</p>
<p>楽しい時間を過ごした後、朝食を提供するレストランの最後の客になろうかという頃、私たちはわかれた。私はその足で出勤し、Bramはたぶん鎌倉へ向かったのだろう。日本を楽しんでくれただろうか、台風は大丈夫だっただろうか、かりんとうは口にあっただろうか。もっと英語ができれば、もっといろいろ喋れたのかもしれない。</p>
<p>でもそれは重要なことではなかった。終わってみれば当初の不安は何だったのかと思う。大事だったのは相手に対し真摯に尊敬し興味を抱くこと。そして知り合うための一歩を踏み出す、小さな勇気。</p>
<p>独自改変バイナリを配布するために、ほとんど初めての自分の意志で書いた英語のメール、その送信ボタンを押すときのあのためらい。あれを超えるのに必要だったのは本当に小さな勇気と決断だったけれど、それらの積み重ねが今に、さらに明日へ繋がってゆく。今後、何か行動するのをためらうようならば、この経験が一歩を踏み出す次の勇気になってくれるだろう。きっと踏み出せば違う景色が見えてくるから。</p>
<p>そして私の手元にあったのは過去の勇気へのご褒美とも言えるチョコレート。…チョコレート、とても美味しかったです。</p>
<p><a class="internal-link" href="../../../images/201108/IMG_20081005_110750.jpg"><img alt="スイスのチョコ、美味しいです" class="image-inline" src="../../../images/201108/IMG_20081005_110750.jpg/image_mini" /></a></p>
<p>以上、Vim昔語はおしまい。</p>
<p>ちなみに食事している時の目線はBramとほとんど変わらなかった。<a class="external-link" href="http://tavii.jp/nensyu/" target="_blank">うわっ… 私の座高、高すぎ…?</a></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2011-08-13T07:45:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/news/2012/20120501">
    <title>Vim 7.3.515 (2012/05/01版) 配信</title>
    <link>http://www.kaoriya.net/news/2012/20120501</link>
    <description>Vim 7.3.515 (2012/05/01版) 配信を始めました。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div style="padding-left: 0px; ">
<div style="padding-left: 0px; ">
<div style="padding-left: 0px; ">
<p style="padding-left: 0px; ">Vimの最新版のWindows向けコンパイル済みバイナリの配信を開始しました。</p>
<ul>
<li>ベースコードを7.3.515に更新しました</li>
<li>dicwin.vimプラグインを更新しました</li>
<li>vimdoc-jaを(2012/04/27版)に更新しました</li>
<ul>
</ul>
</ul>
<ul>
</ul>
</div>
<div style="padding-left: 0px; "><a class="internal-link" href="../software/vim">ソフトウェア/Vim</a>もしくは下記リンクからダウンロードしてください。</div>
<div style="padding-left: 0px; ">
<ul>
<li><a class="external-link" href="http://files.kaoriya.net/goto/vim73w32" target="_blank">Windows 32bit版 ダウンロード</a></li>
<li><a class="external-link" href="http://files.kaoriya.net/goto/vim73w64" target="_blank">Windows 64bit版 ダウンロード</a></li>
</ul>
</div>
</div>
</div>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-05-01T01:00:00Z</dc:date>
    <dc:type>ニュース</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/04/20">
    <title>Vimにニジリ寄るﾎﾓｫ</title>
    <link>http://www.kaoriya.net/blog/2012/04/20</link>
    <description>意地があんだろ!!男の子には!!</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>というわけで<a class="external-link" href="http://d.hatena.ne.jp/osyo-manga/20120420/1334847965">タイマン</a>であるw 例のごとくまずはこの動画を見るべし。</p>
<p><iframe frameborder="0" height="480" src="http://www.youtube.com/embed/Mb6oINB3dAI" width="640"></iframe></p>
<p>ｳﾜｧｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱｱ!</p>
<p>ちなみにコレは完成形ではない。</p>
<h3>その後こうなった</h3>
<p><iframe frameborder="0" height="480" src="http://www.youtube.com/embed/Xk-z64q3JZY?rel=0" width="640"></iframe></p>
<p>コレで気持ちの上では80%の完成</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-04-20T04:05:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/04/19">
    <title>Vimに這いよるﾎﾓｫ</title>
    <link>http://www.kaoriya.net/blog/2012/04/19</link>
    <description>例のアレをアニメーションさせた。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><span>まずはこのビデオを見て欲しい。</span></p>
<p><iframe frameborder="0" height="480" src="http://www.youtube.com/embed/6OdB3Tbj1kU" width="640"></iframe></p>
<p><span>ソースコードは <a href="https://github.com/koron/homoo-vim">https://github.com/koron/homoo-vim</a> こちらからどうぞ。</span></p>
<p>パクったら<a class="external-link" href="http://d.hatena.ne.jp/osyo-manga/20120419/1334761496">パクリ返された</a>ので再度パクってみたわけだが、自分で作っておきながら動いた瞬間に「ｳﾜｧ…ｷﾓｫ」ってなった。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-04-19T02:25:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/04/18">
    <title>Vimに這いよる混沌</title>
    <link>http://www.kaoriya.net/blog/2012/04/18</link>
    <description>「いつもニコニコあなたのVimに這いよる混沌」作った。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>まずはこのビデオを見て欲しい。</p>
<p><iframe frameborder="0" height="480" src="http://www.youtube.com/embed/ZaxOy65CUFo" width="640"></iframe></p>
<p>ソースコードは <a href="https://github.com/koron/u-nya-vim">https://github.com/koron/u-nya-vim</a> ここからどうぞ。</p>
<p> </p>
<p>いつもニコニコあなたのVimに這いよる混沌</p>
<h2>ニャルラトホテプです♪</h2>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-04-18T03:40:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2011/12/20111210">
    <title>Walkman Android買った</title>
    <link>http://www.kaoriya.net/blog/2011/12/20111210</link>
    <description>Walkman Android (ウォークマン Zシリーズ)を買ったので開封の儀&amp;インプレッションなど。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>実は私、普段あまり音楽を聞きません。ただ気に入った新しい音楽デバイスが登場した時に購入&amp;集中的に聞いたりします。最初は初代iPodでした。次は初代iPod touchでした。そして今度はウォークマンです。しかもAndroid搭載。</p>
<p style="padding-left: 30px; "><a class="external-link" href="http://www.sony.jp/walkman/lineup/z_series/" target="_blank">ウォークマン Zシリーズ</a></p>
<p>今回購入したのはZ1000シリーズの64GB版、NW-Z1070です。価格はヨドバシカメラで42800円でした。</p>
<h2>開封の儀</h2>
<p>まずは開封の儀をとり行います。まずは外装。</p>
<p><a class="internal-link" href="../../images/201112/20111210_01.JPG" target="_blank"><img class="image-inline" src="resolveuid/74b93c7e-8605-4718-a3ed-b6719b734d60/@@images/image/mini" /></a></p>
<p>外箱をあけて中身を取り出すと二段に別れます。上(右)が本体。下(左)が付属品。</p>
<p><a class="internal-link" href="../../images/201112/20111210_02.JPG" target="_blank"><img class="image-inline" src="resolveuid/4bd2d4b2-d823-4c60-92d6-1e843e12371e/@@images/image/mini" /></a></p>
<p>内容物を並べるとこんな感じ。</p>
<p><a class="internal-link" href="../../images/201112/20111210_03.JPG" target="_blank"><img class="image-inline" src="resolveuid/5fd829af-5916-4009-9738-3997a85155bb/@@images/image/mini" /></a></p>
<h2>インプレッション</h2>
<p>そして早速セットアップ。基本的にAndroidなので慣れてます。というか携帯電話としての余計なセットアップが要らないし、変なアプリもプリインストールされていないしで非常に調子が良いです。OSのバージョンは2.3.4でした。各所の速度も申し分ないどころか、ところによってはGalaxy Nexus (4.0.1)よりも快適に感じます。</p>
<p>画面は4.3インチと大きいのですが、解像度は480x800と高くなく、今となっては低いと言えるでしょう。しかしこの解像度の低さが逆にOSのサクサク感を向上させているように思いました。このくらいがTegra2の高速さが生きるサイズなんじゃないかと感じます。タッチ精度は非常に高く、いわゆる「ヌルヌル」具合は気持ちが良いです。ただ時々ボタン類がクリックに反応しにくいと感じることがあるのですが…原因など詳細は不明です。</p>
<p>で、NW-Z1000シリーズはWalkmanなのですから、音を評価しないわけにはいきません。私は音にあまりコダワリはありませんが、このWalkmanが付属のノイズキャンセリングヘッドホンを含めて、実に良く鳴っているのはわかります。また側面に配置されたウォークマンボタンや音量調節ボタンは画面消灯時にも機能して、シンプルながらも便利です。</p>
<p>本体側のコネクタが独自なためPCとの接続に専用ケーブルが必要なのは非常に残念かつ唯一と言ってよい不満点ですが、PCに繋ぐとMTPデバイス&amp;ドライブとしてマウントされ/mnt/sdcardに相当する場所がさわれます。そこにあるMusicフォルダに音楽ファイルをコピーするだけで、Walkmanのデフォルトの音楽プレイヤーに認識されるのは非常に良いです。余計なものが要りません。</p>
<p>音楽などの管理&amp;転送には<a class="external-link" href="http://NW-Z1070外装" target="_blank">x-アプリ</a>というiTunesに相当するアプリも用意されていますが、ちょっと特殊な私の環境ではインストーラが途中で止まってしまいました。しかしUSBのファイル転送でそのまま使える以上、それで苦にならない人はこれを使わなくても問題はなさそうです。</p>
<p>adbドライバもGoogleから配布されているもののinfをちょっと書き換えてあげたらインストールでき、開発用Androidとして使えました。</p>
<h2>評価</h2>
<p>基本に忠実なAndroid端末であり、そして当然音楽端末として非常に良くできています。買って損はないでしょう。Android端末としてはどの携帯電話Androidよりもはるかに素直で、カメラこそないものの、オススメです。</p>
<p>一般的な音楽プレイヤーと考えるとやや大きいのは一般うけしないかもしれません。が、売れてくれればもっとスマートな次モデルが登場するのではないかと期待してしまいます。是非、世界的に売れてほしいものです。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>android</dc:subject>
    
    <dc:date>2011-12-09T15:00:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/04/02">
    <title>RAID1再構築</title>
    <link>http://www.kaoriya.net/blog/2012/04/02</link>
    <description>FreeBSD9.0にしてから動かなくなっていたgmirrorによるRAID1を再構築し直した。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>自宅のサーバとしてFreeBSDを利用しています。このサーバは起動用ディスクにgmirrorでRAID1を組んで運用しています。このサーバのFreeBSDを9.0にしてからというものある問題がありました。gmirror経由でRAID1が動かなかったのです。FreeBSD 9.0へのアップグレード後に起動しないというなんとも悲しい状況に陥り、泣く泣くRAID1を切って片肺(HDD)だけで動作させていたというわけです。まぁ、当時は情報を集める時間も気力もありませんでしたし。</p>
<p>で、さきほど新年度ということで気力も充実、それにちょっと時間ができたので調べてみた(一時的にRAID1を復活させてみた)ところ、こんなエラーが記録されているではありませんか。</p>
<pre>GEOM_PART: integrity check failed (ada5, MBR)</pre>
<p>文字通りgmirrorの下のgpartがintegrity checkして失敗している、だからgmirrorもコケる、というわけですね。早速このエラーメッセージでググってみました。引っかかりましたよソレらしいのが。</p>
<p><a class="external-link" href="http://lists.freebsd.org/pipermail/freebsd-geom/2011-May/004767.html">SVN r221788: GEOM_PART: integrity check failed...</a></p>
<p>どれどれ…</p>
<p class="callout">Also, recently i added a workaround in r221972, you can disable integrity checking with sysctl kern.geom.part.check_integrity=0</p>
<p>( ﾟдﾟ)ﾎﾟｶｰﾝ</p>
<p>(つд⊂)ｺﾞｼｺﾞｼ</p>
<p>(ΦωΦ)</p>
<p>(´･ω･`)ｼｮﾎﾞｰﾝ</p>
<p>「integrity checkに引っかかるなら切っちゃえばいいじゃない」というわけのわからなさ。ただ確かに切れば問題無く動きます。いやコレ切ること自体が大問題だと思うんですけどねw</p>
<p>最新のOSを追っかけるのにはこういう理不尽なこともあるわけです。ただFreeBSD 9.0自体はなかなか良いものです。特に気に入っているのはZFSのRAID-Z2のパフォーマンスがえらく良くなってたってことです。最近はLinuxのほうが流行ってますけど、機会があればFreeBSDも使ってみてほしいものです。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>freebsd</dc:subject>
    
    <dc:date>2012-04-02T14:00:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/04/01">
    <title>lstree</title>
    <link>http://www.kaoriya.net/blog/2012/04/01</link>
    <description>lstreeというディレクトリ構造をツリー表示してくれるコマンドを紹介します。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a class="external-link" href="http://www.yk.rim.or.jp/~unya/lstree/">lstree</a>は私のお気に入りのコマンドの1つです。実行するとこんな感じにディレクトリ構造をツリー表示してくれるのです。</p>
<pre>lstree-git\
  +-- .gitignore
  +-- Make_msvc.mak
  +-- Makefile
  +-- README.mkd
  +-- README_JP.euc
  +-- dirent_win32.c
  +-- dirent_win32.h
  +-- getopt.c
  +-- getopt.h
  +-- lstree.c
  +-- lstree.h
  +-- msvc-7\
  |   +-- lstree.sln
  |   +-- lstree.vcproj
  +-- msvc-8\
  |   +-- lstree.sln
  |   +-- lstree.vcproj
  +-- node.c
  +-- print.c
  +-- sjis_pathcpy.c
  +-- wildmatch.c
  +-- xmalloc.c
  +-- xmalloc.h
  +-- xstring.c
</pre>
<p>ただオリジナルの方のソースコードは幾分古いCスタイルで書かれ、またWindowsでは.svnや.gitなどの見たくないディレクトリまで表示してしまうので、ちょっと手を入れてみました。ついでのWindowsやMacOSXでも綺麗にコンパイルできるようにしました。</p>
<p>修正後のソースコードは<a class="external-link" href="https://github.com/koron/lstree">github</a>においておきました。ちょっとしたコマンドなのですが小回りが利く感じで便利なのに、あまり知られていないようです。興味のある人は是非使ってみてください。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>tool</dc:subject>
    
    <dc:date>2012-04-01T14:55:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/02/09">
    <title>VimだけでXML Reformat</title>
    <link>http://www.kaoriya.net/blog/2012/02/09</link>
    <description>Vim「だけ」でなんちゃってXML Reformat</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a class="external-link" href="http://mattn.kaoriya.net/software/lang/python/20120209221728.htm" target="_blank">まっつんさんの記事</a>のパクリです。</p>
<p><span style="height: normal;">たとえばこういう XML があったとして…</span></p>
<pre class="brush: xml;">&lt;status&gt;&lt;created_at&gt;Mon Feb 06 21:07:52 +0000 2012&lt;/created_at&gt;&lt;id&gt;166629198054690816&lt;/id&gt;&lt;text&gt;Post-Bowl Twitter analysis http://t.co/OYYSRSew http://t.co/M0AtLQVd&lt;/text&gt;&lt;source&gt;web&lt;/source&gt;&lt;truncated&gt;false&lt;/truncated&gt;&lt;favorited&gt;false&lt;/favorited&gt;&lt;in_reply_to_status_id&gt;&lt;/in_reply_to_status_id&gt;&lt;in_reply_to_user_id&gt;&lt;/in_reply_to_user_id&gt;&lt;in_reply_to_screen_name&gt;&lt;/in_reply_to_screen_name&gt;&lt;retweet_count&gt;454&lt;/retweet_count&gt;&lt;retweeted&gt;false&lt;/retweeted&gt;&lt;user&gt;&lt;id&gt;783214&lt;/id&gt;&lt;name&gt;Twitter&lt;/name&gt;&lt;screen_name&gt;twitter&lt;/screen_name&gt;&lt;location&gt;San Francisco, CA&lt;/location&gt;&lt;description&gt;Always wondering what's happening. &lt;/description&gt;&lt;profile_image_url&gt;http://a0.twimg.com/profile_images/1124040897/at-twitter_normal.png&lt;/profile_image_url&gt;&lt;profile_image_url_https&gt;https://si0.twimg.com/profile_images/1124040897/at-twitter_normal.png&lt;/profile_image_url_https&gt;&lt;url&gt;http://blog.twitter.com/&lt;/url&gt;&lt;protected&gt;false&lt;/protected&gt;&lt;followers_count&gt;7625563&lt;/followers_count&gt;&lt;profile_background_color&gt;ACDED6&lt;/profile_background_color&gt;&lt;profile_text_color&gt;333333&lt;/profile_text_color&gt;&lt;profile_link_color&gt;038543&lt;/profile_link_color&gt;&lt;profile_sidebar_fill_color&gt;F6F6F6&lt;/profile_sidebar_fill_color&gt;&lt;profile_sidebar_border_color&gt;EEEEEE&lt;/profile_sidebar_border_color&gt;&lt;friends_count&gt;822&lt;/friends_count&gt;&lt;created_at&gt;Tue Feb 20 14:35:54 +0000 2007&lt;/created_at&gt;&lt;favourites_count&gt;16&lt;/favourites_count&gt;&lt;utc_offset&gt;-28800&lt;/utc_offset&gt;&lt;time_zone&gt;Pacific Time (US &amp;amp; Canada)&lt;/time_zone&gt;&lt;profile_background_image_url&gt;http://a1.twimg.com/profile_background_images/378245879/Twitter_1544x2000.png&lt;/profile_background_image_url&gt;&lt;profile_background_image_url_https&gt;https://si0.twimg.com/profile_background_images/378245879/Twitter_1544x2000.png&lt;/profile_background_image_url_https&gt;&lt;profile_background_tile&gt;true&lt;/profile_background_tile&gt;&lt;profile_use_background_image&gt;true&lt;/profile_use_background_image&gt;&lt;notifications&gt;false&lt;/notifications&gt;&lt;geo_enabled&gt;true&lt;/geo_enabled&gt;&lt;verified&gt;true&lt;/verified&gt;&lt;following&gt;true&lt;/following&gt;&lt;statuses_count&gt;1266&lt;/statuses_count&gt;&lt;lang&gt;en&lt;/lang&gt;&lt;contributors_enabled&gt;true&lt;/contributors_enabled&gt;&lt;follow_request_sent&gt;false&lt;/follow_request_sent&gt;&lt;listed_count&gt;68708&lt;/listed_count&gt;&lt;show_all_inline_media&gt;true&lt;/show_all_inline_media&gt;&lt;default_profile&gt;false&lt;/default_profile&gt;&lt;default_profile_image&gt;false&lt;/default_profile_image&gt;&lt;is_translator&gt;false&lt;/is_translator&gt;&lt;/user&gt;&lt;geo/&gt;&lt;coordinates/&gt;&lt;place/&gt;&lt;possibly_sensitive&gt;false&lt;/possibly_sensitive&gt;&lt;contributors&gt;&lt;user_id&gt;7694352&lt;/user_id&gt;&lt;/contributors&gt;&lt;/status&gt;</pre>
<p>Vim のバッファにコピペで貼りつけた上で次のようにコマンドを叩くと…</p>
<pre>:set ft=xml
:%s/&gt;&lt;/&gt;^M&lt;/g
:%s/&gt;\(\S\)/&gt;^M\1/g
:%s/\(\S\)&lt;/\1^M&lt;/g
gg=G</pre>
<p>こんなんなります。^Mは&lt;CTRL-V&gt;&lt;ENTER&gt;で入力しましょう。めんどくさければマクロ化や関数化しても良いですが、まぁその場で組み立てれば十分です。</p>
<pre class="brush: xml;">&lt;status&gt;
  &lt;created_at&gt;
    Mon Feb 06 21:07:52 +0000 2012
  &lt;/created_at&gt;
  &lt;id&gt;
    166629198054690816
  &lt;/id&gt;
  &lt;text&gt;
    Post-Bowl Twitter analysis http://t.co/OYYSRSew http://t.co/M0AtLQVd
  &lt;/text&gt;
  &lt;source&gt;
    web
  &lt;/source&gt;
  &lt;truncated&gt;
    false
  &lt;/truncated&gt;
  &lt;favorited&gt;
    false
  &lt;/favorited&gt;
  &lt;in_reply_to_status_id&gt;
  &lt;/in_reply_to_status_id&gt;
  &lt;in_reply_to_user_id&gt;
  &lt;/in_reply_to_user_id&gt;
  &lt;in_reply_to_screen_name&gt;
  &lt;/in_reply_to_screen_name&gt;
  &lt;retweet_count&gt;
    454
  &lt;/retweet_count&gt;
  &lt;retweeted&gt;
    false
  &lt;/retweeted&gt;
  &lt;user&gt;
    &lt;id&gt;
      783214
    &lt;/id&gt;
    &lt;name&gt;
      Twitter
    &lt;/name&gt;
    &lt;screen_name&gt;
      twitter
    &lt;/screen_name&gt;
    &lt;location&gt;
      San Francisco, CA
    &lt;/location&gt;
    &lt;description&gt;
      Always wondering what's happening. &lt;/description&gt;
    &lt;profile_image_url&gt;
      http://a0.twimg.com/profile_images/1124040897/at-twitter_normal.png
    &lt;/profile_image_url&gt;
    &lt;profile_image_url_https&gt;
      https://si0.twimg.com/profile_images/1124040897/at-twitter_normal.png
    &lt;/profile_image_url_https&gt;
    &lt;url&gt;
      http://blog.twitter.com/
    &lt;/url&gt;
    &lt;protected&gt;
      false
    &lt;/protected&gt;
    &lt;followers_count&gt;
      7625563
    &lt;/followers_count&gt;
    &lt;profile_background_color&gt;
      ACDED6
    &lt;/profile_background_color&gt;
    &lt;profile_text_color&gt;
      333333
    &lt;/profile_text_color&gt;
    &lt;profile_link_color&gt;
      038543
    &lt;/profile_link_color&gt;
    &lt;profile_sidebar_fill_color&gt;
      F6F6F6
    &lt;/profile_sidebar_fill_color&gt;
    &lt;profile_sidebar_border_color&gt;
      EEEEEE
    &lt;/profile_sidebar_border_color&gt;
    &lt;friends_count&gt;
      822
    &lt;/friends_count&gt;
    &lt;created_at&gt;
      Tue Feb 20 14:35:54 +0000 2007
    &lt;/created_at&gt;
    &lt;favourites_count&gt;
      16
    &lt;/favourites_count&gt;
    &lt;utc_offset&gt;
      -28800
    &lt;/utc_offset&gt;
    &lt;time_zone&gt;
      Pacific Time (US &amp;amp; Canada)
    &lt;/time_zone&gt;
    &lt;profile_background_image_url&gt;
      http://a1.twimg.com/profile_background_images/378245879/Twitter_1544x2000.png
    &lt;/profile_background_image_url&gt;
    &lt;profile_background_image_url_https&gt;
      https://si0.twimg.com/profile_background_images/378245879/Twitter_1544x2000.png
    &lt;/profile_background_image_url_https&gt;
    &lt;profile_background_tile&gt;
      true
    &lt;/profile_background_tile&gt;
    &lt;profile_use_background_image&gt;
      true
    &lt;/profile_use_background_image&gt;
    &lt;notifications&gt;
      false
    &lt;/notifications&gt;
    &lt;geo_enabled&gt;
      true
    &lt;/geo_enabled&gt;
    &lt;verified&gt;
      true
    &lt;/verified&gt;
    &lt;following&gt;
      true
    &lt;/following&gt;
    &lt;statuses_count&gt;
      1266
    &lt;/statuses_count&gt;
    &lt;lang&gt;
      en
    &lt;/lang&gt;
    &lt;contributors_enabled&gt;
      true
    &lt;/contributors_enabled&gt;
    &lt;follow_request_sent&gt;
      false
    &lt;/follow_request_sent&gt;
    &lt;listed_count&gt;
      68708
    &lt;/listed_count&gt;
    &lt;show_all_inline_media&gt;
      true
    &lt;/show_all_inline_media&gt;
    &lt;default_profile&gt;
      false
    &lt;/default_profile&gt;
    &lt;default_profile_image&gt;
      false
    &lt;/default_profile_image&gt;
    &lt;is_translator&gt;
      false
    &lt;/is_translator&gt;
  &lt;/user&gt;
  &lt;geo/&gt;
  &lt;coordinates/&gt;
  &lt;place/&gt;
  &lt;possibly_sensitive&gt;
    false
  &lt;/possibly_sensitive&gt;
  &lt;contributors&gt;
    &lt;user_id&gt;
      7694352
    &lt;/user_id&gt;
  &lt;/contributors&gt;
&lt;/status&gt;
</pre>
<p>手元の環境にPythonが入ってなくても安心です。そう<a class="external-link" href="../01/19" target="_blank">スパルタンVim</a>ならね。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-02-09T13:50:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/01/17">
    <title>Javaにおける日時の文字列化</title>
    <link>http://www.kaoriya.net/blog/2012/01/17</link>
    <description>Javaで日時を表示する簡単なお仕事も、時と場合でパフォーマンスを考慮したほうが良いよ、というお話。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>思いのほか<a class="internal-link" href="15">前の記事</a>の参照数が多いので、次はJavaで思い当たることを書いてみます。</p>
<p>Javaで日時を表示のために文字列化するのはSimpleDateFormatが強力なので非常に簡単です。関数化する必要もないほどですがちょっと書いてみましょう。</p>
<pre class="brush:java;">public static String toString(Date d) {
  SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  return f.format(d);
} </pre>
<p>SimpleDateFormatをstaticにして使いまわしたほうが良いとかはありますが、この記事がフォーカスするのは「そもそもSimpleDateFormatを使わないほうが良い場合がある」というほうです。</p>
<p>SimpleDateFormatを使わないほうが良いというのは、format()メソッドの内側で生成されるオブジェクトがあまりに多いことに拠ります。format()の内側では正規表現オブジェクトやそのたのオブジェクトが大量に生成されます。そのためそもそもリソース制約の厳しいAndroidや、多数のリクエストを処理するサーバ用途、何度も呼ばれるログフォーマッタなどで使うと頻繁にGCが起き、目に見えて動作速度が落ちたりします。特にAndroidはGCが発生するとUIの反応が鈍るため、昔に比べてGCが格段に速くなったとはいえ、ヌルサクが好まれる傾向があるので深刻に捉えて良いでしょう。</p>
<p>さて、ではそれを考慮した版をStringBuilderとCalendar使うだけですが書いてみましょう。</p>
<pre class="brush:java;">public static String toString(Date d) {
  StringBuilder s = new StringBuilder();
  Calendar c = Calnedar.getInstance(c);
  c.setTime(d);
  s.append(c.get(Calendar.YEAR)).append('/')
    .append(c.get(Calendar.MONTH) + 1).append('/')
    .append(c.get(Calendar.DAY_OF_MONTH)).append(' ')
    .append(c.get(Calendar.HOUR_OF_DAY)).append(':')
    .append(c.get(Calendar.MINUTE)).append(':')
    .append(c.get(Calendar.SECOND));
  return s.toString();
} </pre>
<p>%02dなフォーマットをかけないと同じ動作とは言えませんが、ソースコードを簡略化するために上では省略してます。ただ書くならこんな感じで書くことになるでしょう。</p>
<pre class="brush:java;">public StringBuilder format_02d(StringBuilder s, int n) {
  if (n &lt; 10) {
    s.append('0');
  }
  return s.append(n);
}</pre>
<p>なおSimpleDateFormatの実装はJDKのsrc.zipに入っていますので、具体的になにがどう無駄になってるかを見てみるのも良いかもしれません。</p>
<p>こういう問題はだいたいパフォーマンスの問題として現れ、JvisualVMとか使って詳しく調査してみてこれが原因だったと判明したりします。仮に納品直前のQAや納品後に見つかって指摘されるのはかなりハズカシイですから、こういう視点を持って試験したりあらかじめ対処しておくと良いのではないでしょうか。Androidの話ですが、実際に納品されたコードの動作があまりに遅いので調査をしたら原因でコレで、こんな感じで書き直したら10倍近くも速くなったとか…そういう話もなくはないのです。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>snippet</dc:subject>
    
    
      <dc:subject>coding</dc:subject>
    
    <dc:date>2012-01-16T16:45:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/blog/2012/01/15">
    <title>C言語における文字列連結</title>
    <link>http://www.kaoriya.net/blog/2012/01/15</link>
    <description>C言語で文字列連結を行う。とても簡単に思えるけれど、実はパフォーマンスについて考えることもあるんだよ、というお話。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>C言語で2つ文字列の連結して、1つの文字列にするプログラム(関数)を書けるでしょうか? ちょっとC言語でプログラミングを学んだことがあれば簡単ですよね。要求仕様としては2つの引数aとbをとり、どちらもNULターミネートな文字列で、その文字列をヒープから確保した領域で連結して戻り値として返す、という感じの動作です。ヨユーですね。ちょっと書いてみてください。</p>
<pre class="brush: c;">char* str_join(const char* a, const char* b)
{
    char* p = malloc(strlen(a) + strlen(b) + 1);
    strcpy(p, a);
    strcat(p, b);
    return p;
}
</pre>
<p>こんな風に書いてしまったあなたは及第点です。個人的には失格です。問題は4行目と5行目で不要なメモリアクセスが発生します。4行目ではstrlen(a)相当の処理が、5行目ではstrlen(a)相当の処理とstrlen(b)相当の処理が発生し、いずれも余計となります。実はstrlen()は速くありません。そのためこの関数は将来的にパフォーマンスボトルネックになる恐れがあるのです。</p>
<p>より良いコードはこうなります。</p>
<pre class="brush: c;">char* str_join(const char* a, const char* b)
{
    size_t la = strlen(a);
    size_t lb = strlen(b);
    char* p = malloc(la + lb + 1);
    memcpy(p, a, la);
    memcpy(p + la, b, lb + 1);
    return p;
}
</pre>
<p>strlen()を明示的にまとめることで、余計なメモリアクセスがグっと減ります。ただこのコードも及第点に毛が生えた程度でしょう。エラー処理が無いとかcalloc使ってないとかmemmove使えとかコメント書けとか、ケチはいくらでもつけようがあります。</p>
<p>伝えたかったのは、このような短いコードであっても、メモリのアクセス速度が格段に速いとしても、しっかり意識したプログラムを書かないと簡単に動作速度は遅くなるんだよ、ということです。もちろん1つめの書き方でも動きますしハードウェアが十分に高速な現在では、だいたい問題ないでしょう。ですがこういう見方をできるかどうかというのは、プログラミングの技量を論じる上で重要になってくるものなのです。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>blog</dc:subject>
    
    
      <dc:subject>snippet</dc:subject>
    
    
      <dc:subject>coding</dc:subject>
    
    <dc:date>2012-01-15T12:40:00Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>


  <item rdf:about="http://www.kaoriya.net/software/vim/about">
    <title>Vim</title>
    <link>http://www.kaoriya.net/software/vim/about</link>
    <description>VimのWindows向けコンパイル済みバイナリを配布しています。</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>配布の案内</h2>
<p>Windows用Vim最新版のGUI,CUI同梱版をZIP書庫で配布しています。<a class="external-link" href="http://www.vim.org" target="_blank">vim.org</a>等で配布されるオリジナルに、日本語を扱う上で便利な設定やスクリプトが追加されています。必要なファイル(シンタックス定義・マクロ・日本語マニュアル)が全てまとめてあるので、これ1つをダウンロードして解凍すればすぐにVimを使うことが出来ます。</p>
<p>VimのVersion 7.3系列をVisual Studio 2010(以下VC10)でコンパイルして配布しています。32bit版のWindowsでは64bit版はご利用いただけません。VC10でコンパイルするためにVisual Studio 2003(VC8)以前でコンパイルしていた過去の版で利用できていたいくつかの機能は使えなくなっています。</p>
<p>書庫にはUNIXでのコンパイルに利用可能なパッチも含まれています。</p>
<h2>ダウンロード</h2>
<p>下、もしくは右のリンクからご利用のWindowsのバージョンに合わせてダウンロードしてください。</p>
<ul>
<li><a class="external-link" href="http://files.kaoriya.net/goto/vim73w32" target="_blank">Windows 32bit版 ダウンロード</a></li>
<li><a class="external-link" href="http://files.kaoriya.net/goto/vim73w64" target="_blank">Windows 64bit版 ダウンロード</a></li>
</ul>
<p><span style="height: 33px;">サポート</span></p>
<p>Vimの日本語による質問、要望、バグ報告、議論等はこちらのvim_jpグループ(掲示板、メーリングリスト)などで受けつけています。お気軽にご連絡、ご参加ください。</p>
<ul>
<li><a class="external-link" href="http://vim-jp.org/" target="_blank">vim-jp コミュニティサイト</a></li>
<li><a class="external-link" href="http://groups.google.com/group/vim_jp?hl=ja" target="_blank">vim_jpグループ(hosted by Google Group)</a></li>
</ul>
<p>日本語によるissue管理はgithubで行なっています。</p>
<ul>
<li><a class="external-link" href="https://github.com/vim-jp/issues/issues" target="_blank">vim-jp/issues@github</a></li>
</ul>
<ul>
</ul>
<h2>その他</h2>
<h3><a class="external-link" href="http://hp.vector.co.jp/authors/VA025040/" target="_blank">ctags日本語版</a></h3>
<p>ctagsはプログラミングの際に便利なインデックス作成ツールの一つです。Vim 6.0以降はctagsがリリースに含まれないことになりました。そのためctagsを利用するには別途ダウンロードする必要があります。また<a class="external-link" href="http://ctags.sourceforge.net/" target="_blank">オリジナルのctags</a>では日本語(特にShift-JIS)を正しく扱えないという問題があります。そんな状況を踏まえ東さんがctags日本語版をソース実行ファイルともに公開してくださっています。是非こちらを参照してみてください。</p>
<h3>日本語ドキュメント</h3>
<p>Vimに付属のドキュメントの日本語版はVimドキュメント翻訳プロジェクトの成果物です。プロジェクトの詳細は以下のリンク先を参照してください。</p>
<ul>
<li><a class="external-link" href="https://github.com/vim-jp/vimdoc-ja/wiki" target="_blank">Vimドキュメント翻訳プロジェクト(hosted by github)</a></li>
<ul>
<li><a class="external-link" href="http://code.google.com/p/vimdoc-ja/" target="_blank">旧Vimドキュメント翻訳プロジェクト(hosted by Google Code)</a></li>
</ul>
<li><a class="external-link" href="http://groups.google.com/group/vimdoc-ja?hl=ja" target="_blank">vimdoc-ja グループ(メーリングリスト)</a></li>
</ul>
<h2>最後に</h2>
<p>Vimはユーザーの方々からの意見などの支援によって育てられました。これからも何卒、ご理解とご協力の程をお願いします。</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>MURAOKA Taro</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>vim</dc:subject>
    
    <dc:date>2012-03-29T01:06:39Z</dc:date>
    <dc:type>ページ</dc:type>
  </item>





</rdf:RDF>

