<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>fujlog</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/" />
    <link rel="self" type="application/atom+xml" href="http://www.fujlog.net/atom.xml" />
    <id>tag:www.fujlog.net,2011-10-03://4</id>
    <updated>2011-12-26T08:30:45Z</updated>
    <subtitle>明日は今日より面白ことが書けますように。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.12</generator>

<entry>
    <title>Calculating Catalan Number in Haskell</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/12/catalan-number-haskell.html" />
    <id>tag:www.fujlog.net,2011://4.1045</id>

    <published>2011-12-26T08:11:37Z</published>
    <updated>2011-12-26T08:30:45Z</updated>

    <summary>Check Catalan number // code catalan :: ...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>Check <a href="http://en.wikipedia.org/wiki/Catalan_number">Catalan number</a></p>

<pre><code>// code
catalan :: Integer -&gt; Integer
catalan n
	| n &gt; 0 = sum [(catalan i) * (catalan (n - 1 - i)) | i &lt;- [0 .. (n - 1)]]
	| otherwise = 1</code></pre>

<p>Simply :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>ScalaFX を動かしてみる</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/12/scalafx.html" />
    <id>tag:www.fujlog.net,2011://4.1044</id>

    <published>2011-11-30T15:45:53Z</published>
    <updated>2011-12-07T04:41:39Z</updated>

    <summary>Introduction 巷では、とりわけ日本では終わってる感の強い RIA (...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<h2>Introduction</h2>

<p>巷では、とりわけ日本では終わってる感の強い <span class="caps">RIA </span>(Rich Internet Application) の中で、WPF (Silverlight) や <span class="caps">AIR </span>よりもさらにマイナーかつ注目度の低い JavaFX を皆さんご存知でしょうか？<br />
じつは私も先週知りました。<br />
JavaFX 1.0 から 2.0 への方針変更でますます人気ないみたいですね。</p>

<p>そんなの何がいいんだよ <span class="caps">HTML5 </span>だろ今更興味ないよと言われそうですが、ちょっとはいいトコもあるんだョ。<br />
・Declarative Syntax<br />
・WebKit使える<br />
・JVMで動く<br />
って感じで、触らないのも勿体無い気がしてきませんか？<br />
そしてJVMだからScalaからもいけちゃうんです。そこで率先して(?)試してみました。</p>

<p>こちらの手順+αなので、詳しくはこちらを参照して下さい。<br />
<a href="http://code.google.com/p/scalafx/wiki/DeveloperGettingStarted">DeveloperGettingStarted</a></p>

<h2>動作環境</h2>

<p>私が試したのは以下の環境です。<br />
なんと、あろうことか JavaFX 2.0 は Windows しか正式リリースされておらず、 Mac はインストーラもない Beta で Linux はまだないというアーリーアダプターに冷たい状況となっています。</p>

<blockquote><p>Windows XP<br />
<span class="caps">JDK</span> 1.7 (1.6の方が面倒がないかも、、、)<br />
Scala 2.9.1<br />
JavaFX 2.0<br />
IntelliJ <span class="caps">IDEA</span><br />
Mercurial</p></blockquote>

<h3>インストール</h3>

<p>まず、上記一式をインストールします。<br />
次に、scalafx を落としてきます。</p>

<p><a href="http://code.google.com/p/scalafx/">scalafx</a></p>

<p>Downloads を開いても何もないよ、なんて言わないでください。ソースをチェックアウトしましょう。</p>

<pre><code>hg clone https://code.google.com/p/scalafx/</code></pre>

<p>そして、環境変数を通します。</p>

<blockquote><p><span class="caps">JAVA</span>_HOME<br />
<span class="caps">SCALA</span>_HOME<br />
<span class="caps">JAVAFX</span>_HOME</p></blockquote>

<p>反映するため、一旦ログインし直します。 (IntelliJ関係のどこかにそう書いてあった。)</p>

<h3>IntelliJのセットアップ</h3>

<p>さて、ここからは IntelliJ です。<br />
こちらを参考にしつつ IntelliJ Scala plugin をインストールします。<br />
<a href="http://confluence.jetbrains.net/display/SCA/Getting+Started+with+IntelliJ+IDEA+Scala+Plugin">Getting Started with IntelliJ <span class="caps">IDEA</span> Scala Plugin</a></p>

<p>IntelliJ の Preference Plugins から scala で検索してダウンロードできます。</p>

<p>この時点で、scalafx のプロジェクトを開けばいいはずなんですが、もしかしたらコンパイラが見つからなくて怒られるかもしれません。その場合は、適宜設定を変えてみたり、空の scala のプロジェクトを作ってみるなどしてください。</p>

<h3>ビルドとデモの実行</h3>

<p>設定できたら、 All Tests の右の三角を押してテストがパスすることを確認します。<br />
私の環境では、JFXApp.scala でコンパイルエラーが出たので、以下のように修正しました。</p>

<pre><code>// before
javafx.application.Application.launch(classOf[AppHelper], args:_*)</code></pre>

<p>を</p>

<pre><code>// after
javafx.application.Application.launch(classOf[AppHelper], args)</code></pre>

<p>配列を展開しなくてよくなったんでしょうか？コンパイラの言うがままに変更しただけですが、動いたので深く考えないことにします。<br />
そこまで行ったら、任意のデモを開いて、クラスの辺りを右クリックして Run main を選ぶとデモが実行されます。</p>

<h3>まとめ</h3>

<p>結局、なぜ ScalaFX かという話ですが、デモを見れば分かる通り yield でアニメーションすれば楽だよね〜、というのが一つ。アルゴリズムの可視化なんていうのも簡単にできそうです。あとは、宣言的にUIを作れるよね〜、など。</p>

<p>JavaFX とか別に興味なくても、Scala でサラッと書いたら絵が出てアニメーションするのっていい感じじゃないですか。<br />
Scalaに興味があったら是非お試しあれ。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Git の References と Remotes</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/10/git-references-remotes.html" />
    <id>tag:www.fujlog.net,2011://4.1037</id>

    <published>2011-10-14T07:22:10Z</published>
    <updated>2011-10-14T08:42:54Z</updated>

    <summary>昨日、遅ればせながら Heroku を使ってみました。 それはおいおい書くとして...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>昨日、遅ればせながら Heroku を使ってみました。<br />
それはおいおい書くとして、deploy するには <code>git push</code> する必要があって、そのコマンドがふと気になったのでメモ。</p>

<p>ちなみに、私は git はたまに使う程度です。</p>

<h3>Heroku に push するコマンド</h3>

<p>Heroku に push するコマンドは、<br />
<a href="http://blog.heroku.com/archives/2011/8/29/play/">公式サイトの説明</a><br />
にもあるように、以下のコマンドを使う。</p>

<pre><code>git push heroku master</code></pre>

<p>確かにうまくいきます。<br />
でも、 heroku と master って誰が決めたんでしょうか。プロジェクトが複数あってもそれぞれ heroku で push できるのはどういうこと ?</p>

<p>これは Git の References と Remotes というものでした。</p>

<p><a href="http://progit.org/book/ch9-3.html">Pro Git - Pro Git 9.3 Git Internals Git References</a></p>

<p>本来、 Git のリポジトリは <span class="caps">URL </span>とハッシュ値で管理しているところを、『ローカルコピーごとに』エイリアスが付けられているんだなぁ、というお話でした。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQuery Mobile を使って Twitter ビューワー作ってみた</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/10/jquery-mobile-twitter.html" />
    <id>tag:www.fujlog.net,2011://4.1035</id>

    <published>2011-10-10T04:28:36Z</published>
    <updated>2011-10-23T08:35:29Z</updated>

    <summary>jQuery Mobile 1.0 RC1 を使って Twitter ビューワー...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>jQuery Mobile 1.0 <span class="caps">RC1 </span>を使って Twitter ビューワー作ってみた。</p>

<p><a href="http://www.fujlog.net/proj/jqmtwi/">jqmtwi</a></p>

<p>Trends や入力キーワードの検索結果を5秒ごとに更新しながら表示します。トップページの上の検索ボックスにキーワードを入力するか、Trends を選択して下さい。<br />
細かいところはテキトーな作りです。</p>

<p>以下技術的な話。</p>

<p>jQuery Mobile を使ったページから、別サーバー (Twitter) の <span class="caps">API </span>を呼んでページをレンダリングする。楽勝だろうと思って作ってみたら、意外とここが jQuery Mobile の弱点っぽい感じがしたので説明したい。</p>

<p>まず、jQuery Mobile には page という概念があって、一つの <span class="caps">DOM </span>に複数の page を抱えることができる。<br />
それぞれの page には、hash が割り当てられ、hash を指定した a タグのタップか、changePage によって遷移する。<br />
上記ビューワーでも、ページ遷移で url バーの # 以降が変わることが分かると思う。</p>

<p>page から page への遷移は、DOM に遷移先の page が読み込まれていれば url の hash を変更してすぐにトランジションする。読み込まれていなかったら、 Ajax リクエストで page を取得する。（この間、ローディングアイコンが出る）<br />
一枚の <span class="caps">HTML </span>ファイルに複数の page がある構成を、 Multi-page という。</p>

<p>さて、ここで二つ問題があって、</p>

<blockquote><p>何かの Web <span class="caps">API </span>が返す <span class="caps">JSON </span>を元にページをレンダリングしたい</p></blockquote>

<p>かつ、</p>

<blockquote><p>Multi-page 構成にしたい</p></blockquote>

<p>場合はどうすればいいだろう？<br />
<span class="caps">REST API </span>で取得した一覧を元にレンダリングして、リストアイテムの ID を元に別の <span class="caps">REST API </span>を呼ぶというのは、一般的によくあるケースだ。<br />
しかし、Multi-page では hash でページ遷移するのに、パラメータはどうすればいいのだろう？<br />
この問題について、本家ドキュメントには hash からパラメータ部分を取り出して preventDefault する例がある。</p>

<p><a href="http://jquerymobile.com/test/docs/pages/page-dynamic.html">jQuery Mobile and Dynamic Page Generation</a></p>

<p>この説明の中で出てくる、</p>

<pre><code>.../index.html#item.html?id=1898432</code></pre>

<p>というのは uri として valid なの？というあたりが気になる。後述するが実はこれはブラウザの history に入らないため問題ない。<br />
本家フォーラムでも議論になっているものの、sessionStorage や localStorage を使うと言う話まで出ている。</p>

<p><a href="http://forum.jquery.com/topic/passing-parameters-between-pages">Passing Parameters Between Pages</a></p>

<p>どうせHTML1枚の中で閉じた話だし、ここを真面目にやっても、という感じもするので、シンプルに hidden の input に値をセットしてから遷移するという手もありそうだ。<br />
(追記 10/22) すいませんやっぱこれだめでした。page enhancement が終わっていないとselectorで選択できない。 <code>&lt;input type=&quot;search&quot; name=&quot;foo&quot; /&gt;</code> を <code>$(input[name=&quot;foo&quot;])</code> とやっても取れないから。</p>

<p>長々と書いてあるが、公式ドキュメントの例でキーになるのは、</p>

<p>- toPage がまだ文字列の時点でトラップする<br />
- パラメータを含む hash から、除去した hash に書き換える<br />
- 直接 <code>$.page()</code> を呼んで page enhancement をやってしまう<br />
- page を移動する前にコンテンツ生成を完了する</p>

<p>というあたりだ。<br />
特に、パラメータを含む hash はイベントの中で解釈されて <span class="caps">URL </span>バーには入らない。<br />
サンプルでは別の関数でコンテンツ生成して <code>changePage</code> しているが、個人的に <code>$.widget</code> が大好きなのでこちらがオススメ。  <code>$.widget</code> についてはそのうち書く。</p>

<p>ソースコードは github 参照。<br />
<a href="https://github.com/fpt/jqmtwi">fpt/jqmtwi</a></p>

<p>触ってみると気付くと思うが、トランジションのアニメーションの後に内容が表示されるので少し違和感が残る。</p>

<p>いずれにせよ、やっぱりurlにIDが入った方がいいと思うし、個人的にこんなことするくらいなら Multi-page を使わないで複数ページにして、サーバーサイドで <span class="caps">API </span>を呼んだ方が jQuery Mobile の正しい使い方だろう。<br />
jQuery Mobile で <span class="caps">HTML5 </span>な Web アプリと言っても、HTML 1枚で JS で動けば OK なんてことはなくて、むしろ逆に hash や <span class="caps">DOM </span>キャッシュを考慮したサイト設計が必要になってくるのではないだろうか。</p>

<p><a href="http://twdesk.com">つぶやきデスク</a></p>

<p>もよろしく</p>

<h3>参考<br />
<a href="http://en.wikipedia.org/wiki/URI_scheme"><span class="caps">URI </span>schema</a></h3>]]>
        
    </content>
</entry>

<entry>
    <title>Javascript (ECMAScript) の変なところ</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/10/strange-javascript-ecmascript.html" />
    <id>tag:www.fujlog.net,2011://4.1034</id>

    <published>2011-10-03T02:56:52Z</published>
    <updated>2011-12-06T10:30:12Z</updated>

    <summary>Javascript (ECMAScript) には変なところがたくさんある。 ...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>Javascript (ECMAScript) には変なところがたくさんある。<br />
ここでは、クロージャーやプロトタイプチェーンといった大きいところではなくてもっと細かい変なところをまとめたい。<br />
以前、自分がパーザーや制御文を実装していたためその辺りが多いかも。</p>

<h2><span class="caps">ECMA</span> 262 5th</h2>

<h3>Completion value</h3>

<p>Completion value というのは、</p>

<pre><code>//
100; // line. 1
200; // line. 2</code></pre>

<p>とあった時に、line. 1を実行するとCompletion valueが100になり、line. 2を実行すると200になる、というものである。<br />
まあ、 Perl の <code>return</code> を省略した場合の戻り値ようなものだ。</p>

<p>基本的に参照する方法もないし、言語実装の内部的なものなのでどうでもいいようなものだが、実は eval が返す値のことだったりする。<br />
<code>eval(&quot;return 10;&quot;);</code> がエラーになるのは、evalは文字列をjsファイルのトップレベルとして評価するためだが、 <code>eval(&quot;10;&quot;);</code> で <code>10</code> が帰るのはプログラムを実行した最後のCompletion valueを返しているのだ。</p>

<p>厄介なのが、DOMのイベントのIE時代にトラディショナルなコードで、<br />
<code>&lt;button onclick=&quot;false;&quot; /&gt;</code><br />
など書いて動いていた（今ではjQueryのbind, live, delegateを使う）が、これは、</p>

<pre><code>// ex.
function (event) {
    false;
}</code></pre>

<p>と書いてあるのと同じことで、この関数の戻り値はundefinedでありfalseではない。<br />
結局、コードがソースコードのどういう構文要素なのかを考えないと誤りに気付きにくい。</p>

<p>参考:<br />
<a href="http://www.w3.org/TR/html5/webappapis.html#event-handler-attributes">6.1.6.1 Event handlers</a></p>

<h3>Type conversion</h3>

<table><tr><td>Type name</td><td>Description</td></tr><tr><td>Boolean</td><td>ブール型</td></tr><tr><td>Number</td><td>浮動小数点型。整数型はない（実装内部にはあることが多い）</td></tr><tr><td>String</td><td>文字列型</td></tr><tr><td>Object</td><td>オブジェクト型</td></tr></table>

<p>Javascriptでは特に型を考慮する必要はないが、内部的には上記の型がある。</p>

<pre><code>// Clearly, 'a' contains a string primitive value.
var a = &quot;string&quot;;</code></pre>

<p>しかし、演算子や組み込み関数の中には内部的な型変換を呼ぶものがあるため、definePropertyなどしてあるとカオスなことができる。</p>

<p>今度書く</p>

<h3>Regular Expression Literals</h3>

<p>人間が見ても割り算やコメントと区別が付きづらいが、それはパーザーにとっても同じだったりする。</p>

<pre><code>// ex.
/=/==/=/;</code></pre>

<p>の実行結果は <code>false</code> だ。これは <code>==</code> の左右の正規表現オブジェクトの比較となり、同一のオブジェクトではないためこのようになる。</p>

<p>しかし、以下の2つはどうだろうか？</p>

<pre><code>// ex.
/=//==/=/; // case 1
/=//=/=/; // case 2</code></pre>

<p>これらをFirefox と Chormeで試すと、Firefoxでは両方同じエラーになるが、Chromeではそれぞれ異なる。</p>

<pre><code># result (Firefox)
&gt;&gt; Exception: ReferenceError: invalid assignment left-hand side
&gt;&gt; Exception: ReferenceError: invalid assignment left-hand side</code></pre>

<pre><code># result (Chrome)
&gt;&gt; Exception: SyntaxError: Unexpected token =
&gt;&gt; Exception: ReferenceError: Invalid left-hand side in assignment</code></pre>

<p>Firefox は、 <code>/=//=</code> までパーズして、 <code>/=</code> の左辺がオブジェクトだから代入できないということで ReferenceError を出している。一方、Chrome は <code>/=//=</code> までパーズして、次の@=@が受理できずに SyntaxError となっている。</p>

<p>どちらが正しいということはないが、case 1 の方は JS の構文として誤りなので、異なるエラーが出た方がいい気もする。パーザーのアルゴリズムには <span class="caps">LL, LALR </span>などあるが、その違いにより異なっているのだろう。</p>

<h3>Automatic Semicolon Insertion</h3>

<p>今度書く</p>

<h3>Labelled Statements</h3>

<p>JSには Labelled Statement というものがある。<br />
これがどういうものかというと、</p>

<pre><code>// example
foo:
for(;;) {
    for(;;) {
        print(&quot;hello.&quot;);
        break foo;
    }
    print(&quot;ouch!&quot;);
}</code></pre>

<p>で、内側のbreakで外のループも抜けるというものだ。これも perl から借りてきたような感じがする。 C プログラマには違和感があるし、特に使っているコードを見た覚えがない。いろいろあると思うが、関数を分けてreturnするとか、例外を投げることが多いような気がする。</p>

<p>実は <code>continue</code> でも使える。ちょっと見てみよう。</p>

<pre><code>// example
foo:
for(var i = 0; i &lt; 3; i++) {
    for(;;) {
        print(&quot;hello.&quot;);
        continue foo;
    }
    print(&quot;ouch!&quot;);
}</code></pre>

<p>実行すると、</p>

<p>bc.<br />
hello.<br />
hello.<br />
hello.</p>

<p>となる。これくらいだったらまあ分かると思うが、もっと大きいループでこれをやられると悪夢ではないだろうか。</p>

<p>ところで、ちょっとした間違いで LabelledStatement になってしまって混乱することもある。一番ありそうなのは、</p>

<pre><code>// example
{ a: 1 }</code></pre>

<p>というJSONを括弧で囲まないまま eval して戻り値が <code>1</code> になって首をかしげることではないかと思う。<br />
この場合、外側の <code>{ }</code> はコードブロックを表し <code>a</code> というラベルが付いた <code>1</code> というステートメントが実行され、その Completion Value である <code>1</code> が返る。</p>

<h3>Object Literal</h3>

<p><span class="caps">IE6 </span>では、 ObjectLiteral の最後にカンマがあるとパーズエラーになってしまう。<br />
特に jQuery では options に Object Literal を渡すことが多いので気をつけたほうが良い。<br />
こういうのはツールでチェックするべきだろう。</p>

<pre><code>// example
{
    foo: 100,
    bar: 200, // &lt;- Causes parse error in IE6
}</code></pre>

<h2><span class="caps">DOM</span></h2>

<h3>Event handler</h3>

<p>スコープに上の要素が入る。</p>

<p>今度書く</p>

<h3>The window object</h3>

<p>今度書く</p>

<h3>その他</h3>]]>
        
    </content>
</entry>

<entry>
    <title>Media Center ソフト比較</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/10/media-center-softwares.html" />
    <id>tag:www.fujlog.net,2011://4.1033</id>

    <published>2011-10-02T15:28:45Z</published>
    <updated>2011-10-25T06:05:51Z</updated>

    <summary>XBMCを使っていたAspire Revo H3610のHDDが飛んだ (x_x...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p><span class="caps">XBMC</span>を使っていたAspire Revo <span class="caps">H3610</span>のHDDが飛んだ (x_x)<br />
結局、元々使っていたWindows 7 Media Center に戻ってしまったが、これはこれで悪くない。</p>

<p>さて、ここらで Media Center (MC) なソフトについて比較してみたい。<br />
特に、代表的なXBMC と Windows 7 Media Center について。</p>

<ul>
<li><span class="caps">XBMC</span><ul>
<li>Pros.<br />
- 非力なマシンでも動く<br />
- 機能とアドオンが豊富<br />
- 無料<br />
- 割とかっこいい</li>
<li>Cons.<br />
- プラットフォームによってアドオンが使えたり使えなかったりする (radikoとか)<br />
- 日本語のScraperがないのでライブラリ構築が困難<br />
- プラットフォームの制約でビデオアクセラレーションがそれなり</li>
</ul></li>
</ul>

<ul>
<li>Windows 7 Media Center<ul>
<li>Pros.<br />
- Mikinho さんの <a href="http://mikinho.com/wmc/mount-image/">Mount Image</a> などを使えば簡単にメディアライブラリが構築できる<br />
- Windows ドライバの豊富なビデオアクセラレーションでDVDもきれい<br />
- 地デジも見られる</li>
<li>Cons.<br />
- ハードウェアの要求が高い<br />
- カスタマイズが困難<br />
- マイナーである<br />
- Mount Image がたまに再生に失敗することがある</li>
</ul></li>
</ul>

<ul>
<li>FrontRow<br />
- これで何とかできるとか。<br />
<a href="http://mac.softpedia.com/get/Video/DVD-Assist.shtml"><span class="caps">DVD</span> Assist</a></li>
</ul>

<ul>
<li>Apple <span class="caps">TV2</span><br />
- 母艦となるPCでiTunesが動いていないとライブラリが参照できない。(DAAP機能付きのNASのライブラリは見られない)<br />
- こういうのもある。<br />
<a href="http://sourceforge.jp/magazine/11/01/25/0340225">Apple TV 2でフルHD動画の再生を可能にするARM版XBMC登場</a></li>
</ul>

<p>よくXBMCは無料で使えて簡単に動いていろいろできてすごい、みたいな話があるけれど、使い込む上で重要なのは手持ちメディアのライブラリ化ではないだろうか。<br />
もちろん、日本でもHuluのようにサービスが始まってBoxeeのような商業的に成立するMCが登場するのが一番うれしいのだが。</p>

<p>一方で、ホームサーバーとして機能するソフトもある。</p>

<ul>
<li><a href="http://www.playon.tv/playon">PlayOn</a></li>
<li><a href="http://ps3mediaserver.blogspot.com/"><span class="caps">PS3</span> Media Server</a></li>
<li>Transcode 360</li>
</ul>

<p>これらは PC にソフトをインストールしてトランスコードなどのサービスを動かすことで、 <span class="caps">LAN </span>につながったデバイスでコンテンツを再生するというものだ。<br />
再生する側では特別なセットアップが不要というメリットがあるものの、動画のシークが困難であるとか、トランスコードにPCのスペックを要求するという根本的な問題がある。<br />
技術的には一定の説得力があるので、将来的にある程度残っていくかもしれない。</p>

<p>- 自分用メモ</p>

<p>PC Media Center を使う上で <span class="caps">NAS </span>を選ぶポイント</p>

<p>- Java が動く<br />
- <span class="caps">HDD</span> 4 台以上</p>]]>
        
    </content>
</entry>

<entry>
    <title>Bullet Physics を iPhone で使う</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/10/bullet-phisics-iphone-cmake.html" />
    <id>tag:www.fujlog.net,2011://4.1032</id>

    <published>2011-10-01T08:48:46Z</published>
    <updated>2011-10-07T04:39:55Z</updated>

    <summary>iつみきで使っているライブラリのプロジェクトファイルはCMakeにこんな感じオプ...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>iつみきで使っているライブラリのプロジェクトファイルはCMakeにこんな感じオプションを指定して作っています。<br />
<span class="caps">BULLET</span>_PHYSICS.xcodeprojを開いて、LinearMath, BulletCollision, BulletDynamics あたりをビルドします。<br />
できたライブラリは src/BulletDynamics/Debug などから適当にコピーして使います。</p>

<pre><code>#
$ cmake -DBUILD_SHARED_LIBS=OFF -DFRAMEWORK=OFF \
    -DCMAKE_INSTALL_PREFIX=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks \
    -DCMAKE_INSTALL_NAME_DIR=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks \
    -DCMAKE_C_COMPILER=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 \
    -DCMAKE_CXX_COMPILER=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 \
    -DCMAKE_OSX_SYSROOT=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/ \
    -DCMAKE_OSX_ARCHITECTURES='armv6;armv7' \
    -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
    -DCMAKE_CROSSCOMPILING=ON \
    -DBUILD_DEMOS=OFF \
    -DBUILD_EXTRAS=OFF \
    -DBUILD_UNIT_TESTS=OFF \
    -DUSE_GLUT=OFF \
    -G Xcode</code></pre>

<p>iOS5 でもビルドできることは確認しました。<br />
なんかいらなさげなオプションも一応つけたままにしています。ちなみにiPadだとarmv6のライブラリだと警告が出ます。</p>

<p>なるべくなら手動で操作するところを減らしたいので Framework にしたいところですが、 iOS では shared library が使えないため、今のところ static library を使っています。<br />
iOSのバージョンが変わった場合が気になる人は Base <span class="caps">SDK </span>を Latest iOS に設定する良いかもしれません。</p>

<p>関連情報<br />
- http://stackoverflow.com/questions/794137/how-to-set-up-cmake-to-build-a-library-for-the-iphone<br />
- http://stackoverflow.com/questions/822404/how-to-set-up-cmake-to-build-an-app-for-the-iphone<br />
- http://discussions.apple.com/thread.jspa?threadID=1549084<br />
- http://www.cmake.org/pipermail/cmake/2009-October/032661.html</p>

<p>Mac <span class="caps">OSX</span>用<br />

$ rm CMakeCache.txt
$ cmake -DBUILD_SHARED_LIBS=ON -DFRAMEWORK=ON \
    -DCMAKE_INSTALL_PREFIX=/Library/Frameworks \
    -DCMAKE_INSTALL_NAME_DIR=/Library/Frameworks \
    -DCMAKE_OSX_ARCHITECTURES='i386;x86_64' \
    -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
    -G "Unix Makefiles"
$ make
$ make install
 chmod install_manifest.txt
<br />
- BulletDynamics<br />
- BulletCollision<br />
- LinearMath<br />
をビルドする</p>]]>
        
    </content>
</entry>

<entry>
    <title>XBMCのScraperを作ろうとした雑感</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/09/xbmc-media-scraper.html" />
    <id>tag:www.fujlog.net,2011://4.1031</id>

    <published>2011-09-26T04:29:20Z</published>
    <updated>2011-10-08T02:51:20Z</updated>

    <summary>XBMCのScraperを作ろうとして、まあ動かなくもないものはできたものの、ど...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p><span class="caps">XBMC</span>のScraperを作ろうとして、まあ動かなくもないものはできたものの、どうもすっきりしない感じでした。</p>

<p><span class="caps">XBMC</span>の主要な機能の一つにメディアライブラリがありますが、利用するにはScraperと呼ばれるメディア情報を取得するアドオンの設定が必要です。<br />
Scraperは、メディアの情報を何らかのWeb検索を通じて取得します。<br />
機能すれば便利そうなのですが、今のところ日本語の情報を取得するアドオンがないようです。</p>

<p>それなら作ってみようかと思い、以下のWikiページを参考に作り始めました。</p>

<p><a href="http://wiki.xbmc.org/?title=Scrapers">Scrapers - <span class="caps">XBMC</span></a></p>

<p><a href="http://wiki.xbmc.org/index.php?title=HOW-TO_Write_Media_Info_Scrapers">How-to:Writing Media info scrapers</a></p>

<p><span class="caps">XBMC</span>のScraperは、正規表現パターンとキャプチャでWebサイトを解析します。<br />
Scraper自体はXMLファイル一つというDSLのような構成になっています。<br />
以下画像直リンク。</p>

<p><img src="http://wiki.xbmc.org/images/a/a5/Scraperinterface.png" alt="" /></p>

<p>とりあえずシンプルに作ってみたものの、どうも動かない。動作確認をするためのScrapというツールでは動くのに。<br />
仕方がないのでリポジトリを見ると、Scrapは既に削除されてobsoleteになった様子。<br />
他のScraperを見ると、CreateSearchUrl が返す文字列はXMLに変更されたようで、 url タグで囲むとXBMC本体でも動きました。<br />
また、配置も xbmc/system/scrapers/videoではなく、addonに移ってaddon.xmlが必要になったようです。</p>

<p>さて、とりあえず動いたものの文字化けしていてタイトルが読めない状況だったので、xml の encoding を指定してみるもうまくいかず。<br />
再びリポジトリの xbmc/addon/Scrapers.cpp を見ると、ASCIIとUTF-8しか考慮してなさそうなコードだったので、一旦諦めて保留することに。<br />
また、別のサイト向けのを作れないか見ていると、文字コードはもんだいないものの製品タイトルの文字列が character entity reference になっていて挫折。</p>

<p>あ、でもそのままXMLに入れれば動いたのかもしれない。<br />
いずれにしても、ファイル名でWeb検索してDBに登録するという方法はあまり良くない気がする。普通は素直に <span class="caps">NFO </span>ファイル作った方がいいか。</p>

<p>いろいろと難しいものです。</p>

<h3>追記</h3>

<p>それにしても、正規表現でscrapingするというのはもはや古いアイデアだけど、かといってBeautifulSoupやその他であらゆるサイトに対応できるかというとそれも難しそうだ。<br />
本来は、xbmcのようなメディアセンター自体でこういうことをするべきでなく、外部のWeb <span class="caps">API</span>を参照するだけの方がシステム的にはいい気がする。でもWebサイトの利用規約の関係もあるので私は作りたくないな。。。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryとXRegExpが、、、</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/08/jqueryxregexp.html" />
    <id>tag:www.fujlog.net,2011://4.1028</id>

    <published>2011-08-29T06:56:24Z</published>
    <updated>2011-10-07T08:40:54Z</updated>

    <summary>正規表現で文字クラスを扱えて便利な XRegExp ですが、IE8 で jQue...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>正規表現で文字クラスを扱えて便利な XRegExp ですが、IE8 で jQuery と組み合わせて使うと問題が起きました。</p>

<p>jQuery の <code>$.animate</code> で、パラメータの value が数値の場合に <code>XRegExp.exec</code> の中で例外が発生しました。<br />
だいたいこんな感じ。</p>

<pre><code>// example
$(&quot;#block&quot;).animate({ 
    scrollTop: 100 // &lt;- Bad! must be &quot;100px&quot;
}, 1500 );</code></pre>

<p>value を文字列にして解決。<br />
型がないのも良し悪しですね。というか標準の RegExp を置き換えないオプションが XRegExp に欲しいです。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Twitter APIあれこれ</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/08/twitter-api.html" />
    <id>tag:www.fujlog.net,2011://4.1026</id>

    <published>2011-08-17T11:59:09Z</published>
    <updated>2011-10-07T03:44:49Z</updated>

    <summary>メモ http://blog.programmableweb.com/2010/...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>メモ</p>

<p>http://blog.programmableweb.com/2010/08/30/twitter-api-adds-retweet-count-and-more/</p>

<p>自分でやってみたところ、retweet_count は確認できたけど、retweetedはよく分からなかった。</p>

<p>Twitter公式のドキュメントに書かれていないオプションが必要になることもある。</p>

<p>include_my_retweet</p>

<p>http://code.google.com/p/twitter-api/issues/detail?id=1891</p>

<p>これがないと、自分のタイムラインに表示されるフォロワーのツイートをリツイートしたかどうか分からない。</p>

<p>apiチェッカー</p>

<p>https://apigee.com/console/twitter</p>

<p>エディットボックス左側のカギアイコンを押すとOAuthのメニューが出てくる。<br />
# それになかなか気付かず5分くらい首を傾げてしまった。<br />
左のリストにない <span class="caps">API </span>でも、URL で入力すれば呼ぶことができる。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Acer Aspire Revo R3610 に XBMC をインストール</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/08/acer-aspire-revo-xbmc.html" />
    <id>tag:www.fujlog.net,2011://4.1024</id>

    <published>2011-08-14T12:41:53Z</published>
    <updated>2011-10-07T03:56:07Z</updated>

    <summary>死蔵していた Acer Aspire Revo R3610 に XBMC をイン...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>死蔵していた Acer Aspire Revo <span class="caps">R3610 </span>に <span class="caps">XBMC </span>をインストールしました。</p>

<p><a href="http://xbmc.org/">xbmc</a></p>

<p>もともと、Windows Media Center のクライアントとして使いたかったのですが、いくら <span class="caps">ION </span>でも <span class="caps">ATOM </span>で Windows 7 を動かすのは厳しいものがありました。<br />
それとは別に、XBOX 360 を Media Center Extender として使ってみた結果、XBoxがデコードできる動画しか見られないなどの理由で使えないという結論に至ったので、Windows Media Center を諦めることにしました。</p>

<p>さて、いきなりですがXBMCを使うにはいくつか方法があります。<br />
- Windows 版 <span class="caps">XBMC </span>を使う<br />
- Linux 版 <span class="caps">XBMC </span>を使う<br />
- <span class="caps">XBMC </span>live を使う</p>

<p>私は Natty で Unity を使ってみたかったので、Linux 版を使うことにしました。</p>

<h3>Aspire Revo に 64bit の Ubuntu 11.04 をインストールする上で気づいたことなど。</h3>

<ul>
<li>シャットダウンや再起動の直前でハングアップする。<br />
どうも、無線LAN のモジュールが原因で起こるような話が海外のMLに書いてあり、 rt2800pci を modprobe -r してみると再現しなくなったので、<br />
/etc/modprobe.d/blacklist-rt2800pci.conf<br />
に<br />
blacklist rt2800pci<br />
と書いて使わないことにした。</li>
</ul>

<ul>
<li>64bit は unstable のpptにしかない？<br />
ppa で追加してもないよと言われて首をかしげた。<br />
結局stableのppaはいらなかったのでsynapticで削除した。</li>
<li>画面が真っ黒のままになる<br />
サスペンドからの復帰に失敗している様子。<br />
とりあえずサスペンドしないようにした。</li>
</ul>

<p>インストールにあたっては、最初にクイックスタートガイドを読むことをお勧めします。ライブラリの設定方法もここに書いてあります。<br />
http://wiki.xbmc.org/index.php?title=XBMC_Quick_Start_Guide</p>

<h3>追記</h3>

<p>Aspire Revo壊れたorz</p>

<h3>その他トラブル一覧と対処状況 (Ubuntu 11.04 + xbmc)</h3>

<ul>
<li>[未解決] キーボード操作ができなくなる<br />
日本語IMEが有効になっていると操作できない。XBMLをシェルにしない方がよさげ。</li>
</ul>

<ul>
<li>[未解決] マウスが消える<br />
どうも、desktop zoom のバグという話がある様子。<br />
http://www.giannistsakiris.com/index.php/2007/12/20/ubuntu-mouse-pointer-is-randomly-disappearing/<br />
だけどどうもそれだけじゃなさそう。</li>
</ul>

<ul>
<li>24fpsのDVD再生でティアリングする<br />
どうも、compiz切れば直るといってる人がいる、、、<br />
http://forum.xbmc.org/showthread.php?t=64009<br />
Natty入れた意味がないからそれは避けたい。<br />
新しいリビジョンで直ってた。<br />
http://forum.xbmc.org/showthread.php?t=45482</li>
</ul>

<ul>
<li><span class="caps">DVD</span>の音が小さい<br />
システム設定 -&gt; Audio -&gt; Increase downmix volume<br />
とやらをオンにする。<br />
advancedsettings.xml の ac3downmixgain かと思ったら違った。注意！<br />
http://forum.xbmc.org/showthread.php?t=48045&amp;page=2</li>
</ul>

<ul>
<li>音が出なくなる<br />
Ubuntu のデスクトップにログインすると音が出るのに、xbmcをシェルとしているユーザーでログインすると音が出ない。<br />
sshで入って alsa を初期化したら直った。やはりシェルにしない方がいい。<br />
<code>alsactl init</code><br />
か<br />
<code>alsa reload</code><br />
だったような、、、</li>
</ul>

<ul>
<li>YouTube pluginで日本語を含むディレクトリ名を保存先に指定するとエラー<br />
とりあえず<br />
<code>LANG=C xdg-user-dirs-gtk-update</code><br />
でディレクトリ名を英語にした。しかしアドオンを修正して欲しい。</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Order &amp; Chaos Online</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/08/order-chaos-online.html" />
    <id>tag:www.fujlog.net,2011://4.1023</id>

    <published>2011-08-06T19:19:43Z</published>
    <updated>2011-10-07T04:06:07Z</updated>

    <summary><![CDATA[iPhone/iPad 向け MMORPGの、 「Order &amp; Cha...]]></summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>iPhone/iPad 向け <span class="caps">MMORPG</span>の、 「Order &amp; Chaos Online」 をやってます。<br />
Gameloft という大手パブリッシャーのゲームで、Unity という最近話題のフレームワークを使っているようです。 <br />
一応 iPhone でも動きますが、 iPad で遊ばないと楽しめない感じです。</p>

<p><a href="http://itunes.apple.com/jp/app/id414664715?mt=8">iTures Store: オーダー＆カオス オンライン©</a></p>

<p>アプリが\600で、アカウントはとりあえず3ヶ月有効です。</p>

<p>始めたら、巻物アイコンが出ている人に話しかけまくって、お使いをクリアしていけばどんどん先に進みます。<br />
レベルはクエストをこなすうちに勝手に上がります。<br />
装備もクエストでもらえるので特に買う必要はありません。</p>

<p>レベルの他に、生産スキルがあります。最初のスキルはクエストでもらえます。<br />
生産には材料が必要なので、戦闘で手に入るファーや沙織、アーマースクラップは売らないでためておくと良いです。<br />
本を買うと作れるものが増えますが、まずは初級、中級では最初から覚えているものを作りまくった方がレベルを上げやすいようです。</p>

<p>PvPは拒否できますが、一部PvPエリアがあります。そこを通らないとクリアできないクエストも結構あります。</p>

<p>まあ、グラフィックもそれなりだし、すごく面白いってほどでもないんですが、安いし、 iPad なのでゴロ寝しながらでもトイレの中でも遊べるのが良いです。</p>

<h3>参照</h3>

<p><a href="http://orderandchaosonline.wikia.com/wiki/Order_%26_Chaos_Online_Wiki">Order and Chaos Online Wiki</a></p>

<p><a href="http://wikiwiki.jp/oco/">Order &amp; Chaos Online　Wiki</a></p>

<h3>追記(2011/8/20): 面白い現象があったのでメモしておきます。</h3>

<p>ウィルムの巣の、ヴェレシー港周辺のクエストで「ゴーストリベンジ」というのがあります。<br />
これは、海賊の幽霊のハイエンからソウルストーンをもらってスネークマンのジアドゥアを倒すように言われる、という内容ですが、ジアドゥアのところに行くと、ハイエンが何人もいてジアドゥアが湧いた瞬間にやっつけてしまってジアドゥアを倒せません。<br />
仕方ないので本家フォーラムで検索したら、次のように書いてありました。<br />
<span class="caps">MMORPG</span>のサーバーでも適切な lock/unlock が必要ですね！</p>

<p>http://forums.toucharcade.com/showthread.php?p=1728875</p>

<blockquote><p>That soulstone is used to summon Haien to help yu fight the quest mob. The reason you see So many versions of him is because people come up and use the soulstone a bunch of times. The game client (cleverly enough) will not render too many things on your screen as not to bog down your device too much, so what you are not seeing is all the corpses of the snake people all over the ground. </p>

<p>In order to complete the quest, stand right where the quest mob spawns (next to the stack of Haiens) and spam an attack button. This gives you a chance to tag the mob before the Haien mob instq kills it, so you can complete the quest.</p>

<p>Whatever you do, don't use the soulstone!</p></blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>Javascript で Unicode の文字クラスを使う</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/07/javascript-unicode.html" />
    <id>tag:www.fujlog.net,2011://4.1017</id>

    <published>2011-07-14T07:43:23Z</published>
    <updated>2011-10-07T04:01:21Z</updated>

    <summary>Javascript で扱う文字列の文字コードは全て Unicode (UTF-...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    <category term="javascript" label="Javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regexp" label="RegExp" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>Javascript で扱う文字列の文字コードは全て Unicode (UTF-16) ですが、 <code>\w</code> が日本語にヒットしなかったりして不便なことこの上ありません。</p>

<p>また、記号を除いた文字だけ取り出したい、といった場合、ほかの環境では Unicode で定められている文字クラス (Character Class) で指定することで簡単に記述できますが、ECMA-262 5th にも含まれていないため Javascript では@[\uxxxx-\uxxxx]@という泥臭い指定をする羽目になってしまいます。</p>

<p>そこで使えそうなのがこのJSライブラリ。</p>

<p><a href="http://xregexp.com/">XRegExp</a></p>

<p>これ単独でも、名前付きキャプチャーが使えたりして便利です。<br />
そして、プラグインを入れると文字クラスも使えます。</p>

<p><a href="http://xregexp.com/plugins/">XRegExp - plugins</a></p>

<p>テーブルを含んでいるだけに若干サイズがでかいのが気になりますが、細かいことは気にしない！自分で書いてバグるよりマシ！</p>

<p>ちなみに、ここを見て知りました。最近StackOverflowばっかり見てる。<br />
<a href="http://stackoverflow.com/questions/280712/javascript-unicode">regex - Javascript + Unicode - Stack Overflow</a></p>

<p>以上、XRegExpの紹介でした。</p>

<p>余談:<br />
Twitter の本家で日本語ハッシュタグのリンクの処理部分を見たら、fromCharCode で文字コード範囲の文字を全て含む Array を作っていた。<br />
これって超積極的に定数伝播するインタープリタだとコンパイルタイムにテーブル作れるのかな？と思った。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Facebook API でログアウトする方法</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/05/facebook-api.html" />
    <id>tag:www.fujlog.net,2011://1.355</id>

    <published>2011-05-26T09:47:28Z</published>
    <updated>2011-10-07T03:58:35Z</updated>

    <summary>Facebook API にはログアウトするAPIがありません。 そこで、非公式...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>Facebook <span class="caps">API </span>にはログアウトするAPIがありません。<br />
そこで、非公式のAPIを使うことでログアウトが実現できます。</p>

<p> http://stackoverflow.com/questions/2764436/facebook-oauth-logout<br />
の、Amirさんの投稿です。</p>

<p>ここで、@session key/code@ というのは <code>access_key</code> ではなく@code@の方です。<br />
したがって、ログアウトするためには <code>response_type</code> に code を含めて取得しておく必要があります。</p>

<p>以前は m.facebook.com を使う方法があったようですが、今はnextを設定しても戻ってこないようなのでご注意。</p>]]>
        
    </content>
</entry>

<entry>
    <title>近況</title>
    <link rel="alternate" type="text/html" href="http://www.fujlog.net/2011/05/post-160.html" />
    <id>tag:www.fujlog.net,2011://1.354</id>

    <published>2011-05-02T03:08:30Z</published>
    <updated>2011-05-02T03:32:06Z</updated>

    <summary>Wordpress に以降しようかと思ったけれど、あまり気に入らないので MTの...</summary>
    <author>
        <name>Youichi Fujimoto</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.fujlog.net/">
        <![CDATA[<p>Wordpress に以降しようかと思ったけれど、あまり気に入らないので MTのまま続けることにします。<br />
MTの書き心地になれてしまっているのだろうか。</p>

<p>さて、最近iPadアプリを作りました。</p>

<p>iWoodenblocks (iつみき)<br />
http://itunes.apple.com/jp/app/id431514007?mt=8</p>

<p>タッチ操作で積み木を操作するアプリです。<br />
今後も引き続き改良していく予定です。<br />
</p>]]>
        
    </content>
</entry>

</feed>

