<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>in a Stream</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/" />
    <link rel="self" type="application/atom+xml" href="http://www.brainsellers.com/blog/inastream/atom.xml" />
    <id>tag:www.brainsellers.com,2009-07-23:/blog/inastream//4</id>
    <updated>2012-01-30T05:56:29Z</updated>
    <subtitle>BrainSellers.com 中の人 技術スタッフによる情報発信</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Commercial 4.25</generator>

<entry>
    <title>PS Vita は C# でアプリ開発</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2012/01/ps-vita-c.html" />
    <id>tag:www.brainsellers.com,2012:/blog/inastream//4.1379</id>

    <published>2012-01-26T04:53:41Z</published>
    <updated>2012-01-30T05:56:29Z</updated>

    <summary>PS Vita のアプリ開発について紹介してみたいと思います。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="c" label="C#" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="c" label="C++" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ios" label="iOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="objectivec" label="Objective-C" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="playstation" label="PlayStation" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sony" label="SONY" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>スマホ(iPhone,  Android携帯など)やポータブルゲーム機のアプリは、それぞれ異なるプログラミング言語で開発を行います。<br />
ここでは、ゲーム開発会社ではなく、個人でも開発に使用できる言語についてフォーカスしてみます。</p>

<dl class="list-A01">
<dt>iPhone/iPod Touch (OS=iOS)</dt>
<dd>Objective-Cという言語でアプリを開発するのですが、この言語はC言語をオブジェクト指向化したものです。<br />
以前から、AppleのMac OS Xがこの言語でアプリを開発していました。</dd>

<dt>Android携帯(OS=Android)</dt>
<dd>基本的にJava言語ですが、最近はC/C++も使えるようになりました。</dd>

<dt>Nintendo DSシリーズ</dt>
<dd>基本的にC/C++言語と思われますが、基本、個人は開発不可な状態かと思います。</dd>

<dt>PS Vita</dt>
<dd>そこで、Vitaですが、OSがWindowsという訳ではないのに、元々MicrosoftがWindowsのために開発したC#言語を使います。<br />
さらに、Vira用に作成したものは、SONYのスマホやタブレットでも実行できたりします。（詳しくは<a href="http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AC%E3%82%A4%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_%E3%82%B9%E3%82%A4%E3%83%BC%E3%83%88" target="_blank">PlayStation Suite</a>を参照）</dd>
</dl>

<p>言語的には、C→Objective-C, C++→Java→C#の順番で登場してきたので、右に行くほど言語的には洗練されていると個人的には思います。<br />
そう考えると、PS Vita用のアプリが個人的には一番簡単に作れそうかなと思います。<br />
興味がある人は、C#のプログラミングについての勉強のために、PS Vita (PS Suite)用アプリの開発を行ってみるのも面白いかと思います。</p>]]>
        
    </content>
</entry>

<entry>
    <title>GALAPAGOSその後</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2012/01/galapagos-1.html" />
    <id>tag:www.brainsellers.com,2012:/blog/inastream//4.1378</id>

    <published>2012-01-17T15:06:57Z</published>
    <updated>2012-01-20T10:41:55Z</updated>

    <summary> 遅ればせながら、新年明けましておめでとうございます。
本年もブレインセラーズ、並びにbiz-Streamをよろしくお願い致します。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="galapagos" label="GALAPAGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xmdf" label="XMDF" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="電子書籍" label="電子書籍" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>昨年は国内を見ても、海外を見渡しても、何年に1度来るかと思われるような<br />
重大事が立て続けに起こり、とても目まぐるしく、歴史にも残る1年だったように思われます。</p>

<p>個人的に私生活の面でも大きな変化が起きた1年でもあり、言い訳になってしまいますがその<br />
影響もあり、しばらく筆者の記事も更新が滞ってしまい、申し訳ありませんでした。。</p>

<p>年も明けたので、気持ちも改めて行く所存でおります。</p>

<p>さて、弊社では現在、近日公開される予定の「biz-Stream4.7」のリリースに向けて現在、<br />
動作検証のテストが続いております。　詳細についてはしばし、お待ち下さい。</p>

<p> 前回、どんな記事を書いていたかな？と振り返ってみると、GALAPAGOSがAndroid化された、<br />
と言う物でしたが。。</p>

<p>自分なりのお浚いも兼ねて、その後の顛末について書きたいと思います。</p>

<p>OSがAndroidに変更された矢先「GALAPAGOS絶滅」等と新聞にも書かれ、端末は販売終了。。と、何とも<br />
寂しい状況になってしまいました。</p>

<div class="float-block-L00"> 
<div class="imageblock"> 
<img alt="ガラパゴス「絶滅」の新聞記事" src="/blog/inastream/2012/01/18/20120118_01.jpg" width="120" height="213" />
<!-- /. imageblock --></div> 
<div class="textblock">

<p>　電子書籍の配信サービスとしての「TSUTAYA GALAPAGOS」は継続しており、筆者も新聞の定期購読を続けています。<br />
　書籍の数はサービス開始当初よりはかなり増えたとはいえ、まだまだ読んでみたいな。。<br />
と思った本がすぐ手に入るような状況ではありません。</p>

<p> ハードウェアとしての端末の出来はなかなか良い出来だと思うし、相変わらず朝の通勤時間帯には重宝しているし、シャープが推しているXMDF、というファイル形式も、少なくとも日本語の電子書籍用のフォーマットとしては最適のようにも思えるのですが。。</p>

<p>　色々と状況を調べてみると、様々な利権関係もあるのか、出版業界自体がまだ電子書籍をビジネス化する事に消極的な面もあるように思われます。</p>

</div>
</div>

<p> いずれは紙媒体の書籍と電子書籍のマーケットも自然と住み分けが行われるような<br />
時代が来るとは思うのですが、まだまだ黎明期、というか混沌とした状況を潜り抜けなければ<br />
ならないようですが、希望的観測を抱きながら注視したいと思います。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>PDFとフォントの話</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/12/fc-configuration.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1371</id>

    <published>2011-12-09T06:43:52Z</published>
    <updated>2012-01-20T10:43:15Z</updated>

    <summary>PDFを表示するときに，困ったことはありませんか．</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pdf" label="PDF" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="swftools" label="SWFTools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<!-- Important options, and finally the main call -->
<script type="text/javascript">
SyntaxHighlighter.config.tagName = "pre" // use pre tags
SyntaxHighlighter.config.stripBrs = false  // disregard trailing
SyntaxHighlighter.all()
SyntaxHighlighter.brushes.Plain = function()
{
};
SyntaxHighlighter.brushes.Plain.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Plain.aliases = ['text', 'plain'];
</script>

<p>
PDFを表示する場合，その文字表示に関しては，<br />
それを表示するアプリケーション及びアプリケーションが稼働している環境に依存します．<br />
（フォント埋込の場合を除く）<br />
</p>
<p>
このため，同じフォントをインストールしても，Windows環境で表示・印刷した場合と，<br />
Linux環境で表示・印刷した場合で，見た目が異なるといった事態が，たまに起こります．<br />
</p>
<p>
この場合，PDFの表示に使われるフォントを，両方の環境にインストールすれば解決するはずなのですが，<br />
Linux環境に於いて，オープンソース・プロダクトなどを使用しているような場合は，<br />
PDFで使用しようとしているフォントがインストールされているにもかかわらず，<br />
別のフォントでレンダリングされてしまうといった事象が発生します．<br />
</p>
<p>
これは，Linuxで使用されているフォント管理システムである，<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>
が，<br />
PDF内で指定されているフォント名とフォントファイルの関係を，正しく認識できていないからです．<br />
</p>
<p>
このような場合には，<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>の設定ファイルでの設定を調整して対応します．<br />
</p>
<p>
今回は，以下のような筆者の環境における，<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>の設定例を紹介します．
</p>
<ul class="default">
	<li>Red Hat 4.1.2-50</li>
	<li>FontConfig 2.4.1</li>
</ul>
<p>
<a href="/blog/inastream/2011/07/pdfflashswftools01.html" title="PDFをFlashに変換するツールSWFTools">以前，紹介した</a> <a href="http://www.swftools.org/" target="_blank">SWFTools</a> の pdf2swf を使用した場合を例にして説明します．
</p>
<p>
設定前の状態で，以下のように実行すると，
</p>
<dl class="code-block-A01">
<dt>《 FontConfig設定の調整前 》</dt>
<dd>
<pre>
<code>
&gt; pwd; ls ./bin
/home/hoge/swftools
as3compile    gif2swf         <em>pdf2swf</em>        swfbbox     swfcombine
swfextract      swfstrings    font2swf       jpeg2swf    png2swf
swfc               swfdump      swfrender    wav2swf    
&gt; <em>export FC_DEBUG=1039</em>
&gt; ./bin/pdf2swf <em>-vvvv</em> -s languagedir=./share/xpdf/japanese -F ./fonts \
-T 4 -s flashversion=4 ./Test-HelveticaNeueLTStdMdCnO.pdf \
-o ./Test-HelveticaNeueLTStdMdCnO.swf
........
<em>
FcConfigSubstitute Pattern has 20 elts (size 32)
        family: "HelveticaNeueLT Std Med Cn"(s)
        familylang: "en"(s)
        style: "Italic"(s)
        stylelang: "en"(s)
        fullname: "HelveticaNeueLTStd-MdCnO"(s) "HelveticaNeueLT Std Med Cn Ob"(s)
        fullnamelang: "en"(s) "en"(s)
        slant: 100(i)(s)
        weight: 100(i)(s)
        width: 75(i)(s)
        foundry: "adobe"(s)
        file: "/home/hoge/swftools/fonts/HelveticaNeueLTStd-MdCnO.ttf"(s)
</em>
........
DEBUG   Font HelveticaNeueLT Std-LtIt (/home/hoge/swftools/fonts/HelveticaNeueLTStd-LtIt.ttf) \
is a match for HelveticaNeueLTStd-MdCnO
DEBUG   fontconfig: returning filename /home/hoge/swftools/fonts/HelveticaNeueLTStd-LtIt.ttf
<em>VERBOSE Font HelveticaNeueLTStd-MdCnO maps to \
/home/hoge/swftools/fonts/HelveticaNeueLTStd-LtIt.ttf</em>
........
</code>
</pre>
</dd>
</dl>
<ul class="default">
	<li>環境変数 FC_DEBUG は，FontConfig のデバッグ情報出力設定のためのものです．<br />
        　　詳細は，<a href="http://www.freedesktop.org/software/fontconfig/fontconfig-user.html" target="_blank">FontConfigのマニュアル</a>を参照して下さい．</li>
	<li>pwd2swf コマンドの "-vvvv" オプションは，ログ出力レベルをTRACEにするものです．</li>
</ul>
<p>
最後の，フォント名とフォントファイルをマッピングしている部分を見て分かる通り，<br />
<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>のフォント認識状態に問題があって，<br />
pdf2swf コマンドが，PDF内で指定されているフォント名に対応するフォントファイルを，<br />
正しく認識できていないことがわかります．
</p>
<p>
そこで，上記の <a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>のフォント認識を，pdf2swf が正しく使用できるように修正するために，<br />
~/.fonts.conf に以下の記述を追加し，設定します．
</p>
<dl class="code-block-A01">
<dt>《 .fonts.conf 》</dt>
<dd><pre class="brush: xml; wrap-lines: false">
&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
&lt;fontconfig&gt;
&lt;!-- for fontconfig ver.2.4.1 --&gt;
  &lt;match target="scan"&gt;
    &lt;test name="family" qual="any"&gt;
      &lt;string&gt;HelveticaNeueLT Std Med Cn&lt;/string&gt;
    &lt;/test&gt;
    &lt;edit name="family" mode="assign_replace"&gt;
      &lt;string&gt;HelveticaNeueLT Std&lt;/string&gt;
    &lt;/edit&gt;
    &lt;test name="style" qual="any"&gt;
      &lt;string&gt;Italic&lt;/string&gt;
    &lt;/test&gt;
    &lt;edit name="style" mode="assign_replace"&gt;
      &lt;string&gt;MdCnO&lt;/string&gt;
    &lt;/edit&gt;
  &lt;/match&gt;
&lt;/fontconfig&gt;
</pre>
</dd>
</dl>
<p>
すると，設定後の，コマンド実行の結果は．．．
</p>
<dl class="code-block-A01">
<dt>《 FontConfig設定の調整後 》</dt>
<dd>
<pre>
<code>
&gt; pwd; ls ./bin
/home/hoge/swftools
as3compile    gif2swf         <em>pdf2swf</em>        swfbbox     swfcombine
swfextract      swfstrings    font2swf       jpeg2swf    png2swf
swfc               swfdump      swfrender    wav2swf    
&gt; <em>export FC_DEBUG=1039</em>
&gt; ./bin/pdf2swf <em>-vvvv</em> -s languagedir=./share/xpdf/japanese -F ./fonts \
-T 4 -s flashversion=4 ./Test-HelveticaNeueLTStdMdCnO.pdf \
-o ./Test-HelveticaNeueLTStdMdCnO.swf
........
DEBUG   Font HelveticaNeueLT Std-MdCnO (/home/hoge/swftools/fonts/HelveticaNeueLTStd-MdCnO_mk.ttf) \
is a match for HelveticaNeueLTStd-MdCnO
DEBUG   fontconfig: returning filename /home/hoge/swftools/fonts/HelveticaNeueLTStd-MdCnO.ttf
<em>VERBOSE Font HelveticaNeueLTStd-MdCnO maps to \
/home/hoge/swftools/fonts/HelveticaNeueLTStd-MdCnO.ttf</em>
........
</code>
</pre>
</dd>
</dl>
<p>
となり，pdf2swf が，PDF内で指定されているフォント名に対して，
フォントファイルを正しくマッピングするようになりました．
</p>
<p>
どうも，<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>は，フォントファイルを読み込んで解析する処理の部分が，まだこなれていないようで，<br />
今回使用した FontConfig 2.4.1 以降も，頻繁にバグフィックスを重ねています．
</p>
<p>
このことにより，《 FontConfig設定の調整前 》 にある，<br />
<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>のフォント認識状態の出力が，バージョン毎に変化しています．
</p>
<p>
ですから，~/.fonts.conf ファイルを設定するときには，<br />
稼働環境の<a href="http://www.freedesktop.org/wiki/Software/fontconfig" target="_blank">FontConfig</a>のバージョン毎に，確認しながら設定する必要があります．<br />
ご注意下さい．
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>iPhoneで重宝するかもしれないアプリ Nike+ GPS part4</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/11/iphone-nike-gps-part4.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1370</id>

    <published>2011-11-01T06:47:21Z</published>
    <updated>2011-11-09T07:09:14Z</updated>

    <summary>おさむ＠ダイエット部です。
九段下では、木枯らしが吹きました。
そんな鍋が恋しい季節はあぷりで体力をつけて、さわやかに脂肪燃焼しようぜ！
</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone3gs" label="iPhone3GS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone4s" label="iPhone4S" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nikegps" label="Nike+ GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>公式ページはここ<a href="http://nikerunning.nike.com/nikeos/p/nikeplus/ja_JP/" title="Nike Running" target="_blank">ココ！</a></p>

<p>iPhoneで重宝しそうなアプリ <a href="http://itunes.apple.com/jp/app/nike-gps/id387771637?mt=8" title="iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 Nike+ GPS" target="_blank">Nike+ GPS</a>についての続編を紹介したいと思います。</p>

<p>今回、ほぼ4ヶ月強使いこなした感想を書きます。<br />
アプリは2011/09/02にVer3.2.1なったままですが、筆者の端末がiPhone４Sに変わった為、<br />
パリパリ動く上、GPSの精度が飛躍的に上がりました。<br />
下の一部コースは、ひと周り400m足らずの公園の敷地内も的確に捉えてます。<br />
すごいっす。</p>

<p>走行距離も500キロを超え、段階、レベルがグリーンゾーンから、そろそろ<br />
ブルーゾーンまで長く果てしないですが、<br />
モチベーションとテンションがもりもり上がってきております。<br />
因みに、このソフトでは走った通算距離（km）に応じて、6段階のレベルに<br />
イエロー（0～49 km）、オレンジ（50～249 km）、グリーン（250～999 km）、<br />
ブルー（1,000～2,499 km）、パープル（2,500～4,999 km）、ブラック（5,000+ km）</p>

<div class="float-block-L00"> 
<div class="imageblock"> 
<img alt="全体" src="/blog/inastream/img/111028_3.jpg" width="264" height="220" />
<p class="caption">《一部コース》</p>
<!-- /. imageblock --></div> 

<div class="imageblock"> 
<img alt="記録" src="/blog/inastream/img/111028_0.jpg" width="336" height="220" />
<p class="caption">《全体》</p>
<!-- /. imageblock --></div> 
<!-- /.float-block-L00 --></div>

<div class="float-block-C"> 
<div class="imageblock"> 
<img alt="コース" src="/blog/inastream/img/111028_2.jpg" width="600" height="383" />
<p class="caption">《コース》</p>
<!-- /. imageblock --></div> 
<!-- /.float-block-C --></div>

<p><em>では、今度は、ブルーレベル1000キロ達成した頃にまた！</em></p>]]>
        
    </content>
</entry>

<entry>
    <title>PDFをFlashに変換するツールSWFTools (SWF生成編)</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/10/pdfflashswftools-swf.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1369</id>

    <published>2011-10-27T09:20:33Z</published>
    <updated>2011-10-28T00:46:23Z</updated>

    <summary>今回は，ようやく，SWFToolsを使った，PDFをFlash変換を紹介します．</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flash" label="Flash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pdf" label="PDF" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="swftools" label="SWFTools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>
以前紹介した通り，PDFをSWFに変換するには，pdf2swfのコマンドを使用します．
</p>
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd; ls ./bin
/home/hoge/swftools-0.9.1
as3compile    gif2swf         <em>pdf2swf</em>        swfbbox     swfcombine
swfextract      swfstrings    font2swf       jpeg2swf    png2swf
swfc               swfdump      swfrender    wav2swf    
&gt;
</code>
</pre>
</dd>
</dl>
 <p>
実際にbiz-Streamで作成したPDFをSWFに変換する場合の呼び出し例を，以下に示します．
</p>
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd;
/home/hoge/swftools-0.9.1
&gt; ./bin/pdf2swf -s languagedir=./share/xpdf/japanese -F ./fonts ./swfTest.pdf -o ./swfTest.swf
</code>
</pre>
</dd>
</dl>
<script type="text/javascript" src="/blog/inastream/js/swfobject.js"></script>
<script type="text/javascript">
  swfobject.embedSWF("/blog/inastream/img/swfTest.swf", "flashresult", "153", "216", "6", "#336699");
</script>
<div class="float-block-C"> 
<div class="imageblock"> 
<a href="/blog/inastream/img/swfTest.pdf" target="_blank">
<img src="/blog/inastream/img/swfTestpdf_t.jpg" width="300" height="216" alt="変換元のPDFファイル" />
</a>
<img id="flashresult" name="flashresult" alt="変換後のSWFファイル" />
<p class="caption">(上左)PDFファイル から (上右)SWFファイル が生成されます<br />(上画像クリックで元のPDFファイルが開きます)<br />(<a href="/blog/inastream/img/swfTest.swf" target="_blank" title="変換後のSWFファイル">ここをクリック</a>すると変換後のSWFファイルが開きます)</p>
</div>
</div>
<p>
その他のオプションを加えて呼び出すことで，<br />生成されるSWFの解像度やフラッシュレートなどを設定することもできます．<br />
詳しくは，
</p>
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd;
/home/hoge/swftools-0.9.1
&gt; ./bin/pdf2swf --help
</code>
</pre>
</dd>
</dl>
<p>
または，
</p>
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd;
/home/hoge/swftools-0.9.1
&gt; ./bin/pdf2swf -s help
</code>
</pre>
</dd>
</dl>
<p>
などのヘルプを参照して下さい．
</p>]]>
        
    </content>
</entry>

<entry>
    <title>新言語 Dart</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/10/-dart.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1368</id>

    <published>2011-10-13T08:01:57Z</published>
    <updated>2011-10-13T08:02:41Z</updated>

    <summary>10日にGoogleより，新しいプログラミング言語&quot;Dart&quot;が発表されました．
</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dart" label="dart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p><a href="http://www.dartlang.org/" target="_blank"><img src="http://www.dartlang.org/imgs/dart-logo.png" width="268" height="116" alt="DART Logo" /></a></p>
<br />
<p>Googleによると「Web構造化プログラミング言語」という位置付けの言語のようです．</p>
<p>Googleは以前も<a href="http://golang.org/" target="_blank">"Go"</a>という新言語を発表しています．</p>
<p>今後，どのようにこのGoogle発の２言語が住み分けていくのか興味があるところです．</p>
<p>もしかすると，住み分けはあまり考えていなく，社内で有力な新言語のグループが２つになっただけなのかもしれません．</p>
<p>ちなみにどちらの言語も簡単にそれぞれのオフィシャルサイト上で試すことができますので興味を持たれた方はそれぞれのロゴをクリックしてみてください．</p>
<br />
<p><a href="http://golang.org/" target="_blank"><img src="http://golang.org/doc/logo.png" width="464" height="55" alt="GO Logo" /></a></p>
<br />
]]>
        
    </content>
</entry>

<entry>
    <title>Node.js 使ってみました。</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/09/nodejs.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1365</id>

    <published>2011-09-20T01:32:09Z</published>
    <updated>2011-09-20T01:36:16Z</updated>

    <summary>最近話題のNode.jsに触れてみました。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<!-- Important options, and finally the main call -->
<script type="text/javascript">
SyntaxHighlighter.config.tagName = "pre" // use pre tags
SyntaxHighlighter.config.stripBrs = false  // disregard trailing
SyntaxHighlighter.all()
SyntaxHighlighter.brushes.Plain = function()
{
};
SyntaxHighlighter.brushes.Plain.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Plain.aliases = ['text', 'plain'];
</script>
<p>
弊社製品biz-Streamは、JVM上で動作する製品なので、 <br />
アプリケーションサーバーにはTomcatなどを使っていますが、<br />
JVM環境以外のものは、日頃の業務では触れる機会がありません。
</p>
<p>
そこで、最近話題のサーバーサイドJavaScript環境であるNode.jsにふれあってみることにしました。<br />
以降の記載は、Linux環境での実行結果です。
</p>
<p>
最初に、インストールですが、ほとんど何も用意する必要がありません。 <br />
最低限必要なものは
</p>
<ol class="default">
	<li>build-essential</li>
	<li>libssl-dev</li>
        <li>curl</li>
        <li>git-core</li>
</ol>
<p>
で、
</p>
<dl class="code-block-A01">
<dt>《 必要なLinuxパッケージの導入 》</dt>
<dd>
<pre>
<code>
&gt; sudo apt-get install build-essential libssl-dev curl git-core
</code>
</pre>
</dd>
</dl>
とすれば，簡単にOKです。<br /> 
<p>
さらに、Node.jsは活発に開発されていて、バージョンアップ等が頻繁なため、<br />
バージョン管理ツールが必要になりますが、それもすでに用意されています。 <br />
今回は、naveを使用することにして、それも含めて紹介します。
</p>
まず、任意の場所に、naveやNode.jsのモジュールのためのディレクトリを作成します。
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd
/home/hoge
&gt; mkdir Node.js; cd Node.js
</code>
</pre>
</dd>
</dl>
最初に、naveの導入、
<dl class="code-block-A01">
<dt>《 Node.jsのバージョン管理ツール naveの導入 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js
&gt; git clone http://github.com/isaacs/nave.git
&gt; ls
nave
&gt;
</code>
</pre>
</dd>
</dl>
そして、naveを使って、Node.jsをインストールします。<br />
今回は，安定版(= stable) を使用します．
<dl class="code-block-A01">
<dt>《 naveを使ったNode.jsのインストール 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js
&gt; cd nave
&gt; ./nave.sh install stable 
</code>
</pre>
</dd>
</dl>
環境変数等の設定して使用するNode.jsのバージョンを設定します。
<dl class="code-block-A01">
<dt>《 naveを使って，使用するNode.jsのバージョンを設定 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js/nave
&gt; ./nave.sh use stable
</code>
</pre>
</dd>
</dl>
これで、Node.jsの導入は完了です。
<p>
Node.jsの実体は、ユーザーのホームディレクトリの<br />
.nave ディレクトリ配下にインストールされます。 
</p>
<dl class="code-block-A01">
<dt>《 .nave ディレクトリ例　[latest及びstableをインストールした環境] 》</dt>
<dd>
<pre>
<code>
.nave/
|-- installed
|   |-- 0.4.11
|   |   |-- bin
|   |   |   `-- node
|   |   |-- include
|   |   |   `-- node
|   |   |-- lib
|   |   `-- share
|   |-- 0.4.12
|   |   |-- bin
|   |   |   `-- node
|   |   |-- include
|   |   |   `-- node
|   |   |-- lib
|   |   `-- share
|   `-- 0.5.6
|       |-- bin
|       |   `-- node
|       |-- include
|       |   `-- node
|       |-- lib
|       `-- share
`-- src
    |-- 0.4.11
    |-- 0.4.12
    `-- 0.5.6
</code>
</pre>
</dd>
</dl>
<p>
つぎは、パッケージモジュール環境を構築しましょう。<br />
パッケージモジュール管理には、npmを使用します。<br />
</p>
<dl class="code-block-A01">
<dt>《 パッケージモジュール管理ツール npmの導入 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js
&gt; curl http://npmjs.org/install.sh | sh
</code>
</pre>
</dd>
</dl>
これで、npm の導入は完了です。
<p>
次は、いろいろとパッケージを導入していきましょう。<br />
<a href="http://search.npmjs.org/" target="_blank">npmjs</a> や <a href="https://github.com/joyent/node/wiki/modules" target="_blank">Modules</a> といったサイトに、数多くのパッケージモジュールが登録されているので，<br />
必要だと思うものを適用してください． 
</p>
<dl class="code-block-A01">
<dt>《 パッケージモジュールの導入例 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js
&gt; npm install socket.io
&gt; pwd
/home/hoge/Node.js
&gt; ls
nave    node_modules
&gt;
</code>
</pre>
</dd>
</dl>
適用したパッケージモジュールは，上記の node_modules ディレクトリ配下に格納されます．<br />
最後に，お決まりの"Hello World"を動かしてみましょう．<br />
まず，helloworld.jsを作成し，
<dl class="code-block-A01">
<dt>《 helloworld.js 》</dt>
<dd><pre class="brush: javascript; wrap-lines: false">
var http = require('http');
 
var server = http.createServer(
    function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.write('Hello World!!\n');
        res.end();
    }
).listen(8124, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8124/');
</pre>
</dd>
</dl>
以下のように，Node.jsを起動した後，
<dl class="code-block-A01">
<dt>《 Node.jsの起動 》</dt>
<dd>
<pre>
<code>
&gt; pwd
/home/hoge/Node.js
&gt; ls
nave    node_modules    helloworld.js
&gt; node helloworld.js
Server running at http://127.0.0.1:8124
</code>
</pre>
</dd>
</dl>
ブラウザを起動し，"http://127.0.0.1:8124"にアクセスすると．
<div class="float-block-C">
<div class="imageblock"><a href="/blog/inastream/img/HelloWorld.png" target="_blank"><img src="/blog/inastream/img/HelloWorld.png" width="306" height="228" alt="Webブラウザでのアクセス結果" /></a>
<p class="caption">《 Webブラウザでのアクセス結果 》</p>
<!-- /. imageblock --></div>
<!-- /.float-block-C --></div>
上記のように，"Hello World!!" と表示されます．<br />
みなさんも,いろいろと試してみてはいかがでしょうか．
]]>
        
    </content>
</entry>

<entry>
    <title>iPhoneで重宝するかもしれないアプリ Nike+ GPS part3</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/09/iphone-nike-gps-part3.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1364</id>

    <published>2011-09-13T00:40:42Z</published>
    <updated>2011-10-27T02:34:08Z</updated>

    <summary>おさむ＠ダイエット部です。
九段下では、少し朝晩は秋の気配が
そんな食欲の秋はあぷりで体力をつけて、さわやかに脂肪燃焼しようぜ！</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nikegps" label="Nike+ GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>公式ページはここ<a href="http://nikerunning.nike.com/nikeos/p/nikeplus/ja_JP/" title="Nike Running" target="_blank">ココ！</a></p>

<p>iPhoneで重宝しそうなアプリ <a href="http://itunes.apple.com/jp/app/nike-gps/id387771637?mt=8" title="iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 Nike+ GPS" target="_blank">Nike+ GPS</a>についての続編を紹介したいと思います。</p>

<p>今回、ほぼ2ヶ月強使いこなした感想を書きます。<br />
アプリは2011/09/02にVer3.2.1と頻繁にVerUPを繰り返してます。<br />
走行距離も300キロを超え、段階、レベルがグリーンゾーンにUPして、<br />
モチベーションとテンションが上がってきております。<br />
因みに、このソフトでは走った通算距離（km）に応じて、6段階のレベルに<br />
イエロー（0～49 km）、オレンジ（50～249 km）、グリーン（250～999 km）、<br />
ブルー（1,000～2,499 km）、パープル（2,500～4,999 km）、ブラック（5,000+ km）</p>

<p>最新のバージョンの特色は、iPhoneの他、WEB上でも同期が取れ<br />
走るペース、状態、気候など、走る時に得られるデータが全て、一元化されてます。<br />
こらぁ楽しくなってきますな～</p>

<p>日々の記録と、達成度でこのアプリ上で<br />
元プロ野球選手の清原和博さんが、<br />
『いっぱい走ったな、ごはん、いっぱい食べてや』と粋なひと言。</p>

<div class="float-block-L00"> 
<div class="imageblock"> 
<img alt="全体" src="/blog/inastream/2011/09/13/img/110909_0.jpg" width="300" height="267" />
<p class="caption">《全体》</p>
<!-- /. imageblock --></div> 

<div class="imageblock"> 
<img alt="記録" src="/blog/inastream/2011/09/13/img/110909_1.jpg" width="300" height="273" />
<p class="caption">《記録》</p>
<!-- /. imageblock --></div> 
<!-- /.float-block-L00 --></div>

<div class="float-block-C"> 
<div class="imageblock"> 
<img alt="コース" src="/blog/inastream/2011/09/13/img/110909_2.jpg" width="600" height="404" />
<p class="caption">《コース》</p>
<!-- /. imageblock --></div> 
<!-- /.float-block-C --></div>

<p><em>では、また今度こそ500キロ達成した頃にまた！</em></p>]]>
        
    </content>
</entry>

<entry>
    <title>Scala 2.9.1 final</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/09/scala-291-final.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1363</id>

    <published>2011-09-05T06:53:04Z</published>
    <updated>2011-09-05T06:54:14Z</updated>

    <summary>Scala 2.9.1 finalが先月末リリースされました．
</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ideonecom" label="ideone.com" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scala" label="Scala" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>注目すべき改善内容としては，コンパイル速度とREPLの起動速度のアップが挙げられます．</p>
<p>以前より，Scalaはコンパイルに時間がかかると言われてしまっていた点が改善され，ちょっとしたコードの検証に使えるREPLも今までより気軽に起動できるようになり，より利便性が高まった感があります．</p>
<br />
<p>また，2.9.Xでデグレートしたバグについても直されていたりしますので，バグのために2.8.Xを使い続けていた場合は，今回は使用を検討してみることをお勧めします．</p>
<br />
<p>なお，ScalaベースのソフトウェアのScala 2.9.1への対応状況ですが，ビルドツールであるsbtは，0.11.0で対応するようです．現在は，<a href="https://github.com/harrah/xsbt/tree/0.11" target="_blank">0.11ブランチのソース</a>からビルドすればスナップショット版が利用できます．</p>
<p>Liftは2011/09/02現在，<a href="https://groups.google.com/d/topic/liftweb/vNxz59z2QJ0/discussion" target="_blank">Scala 2.9.1への対応作業中</a>のようですので近々対応版がリリースされると思います．</p>
<br />
<p>話しは変わりますが，プログラミング環境がなくても数多くのプログラミング言語を実行できる「<a href="http://www.ideone.com/" target="_blank">ideone.com</a>」というサイトがあります．</p>
<div class="float-block-C">
<div class="imageblock"><a href="/blog/inastream/img/110902ideone.jpg" rel="lightbox" title="ideone.com"><img src="/blog/inastream/img/110902ideone.jpg" width="298" height="240" alt="ideone.com" /></a>
<p class="caption">《 ideone.com 》</p>
<!-- /. imageblock --></div>
<!-- /.float-block-C --></div>
<p>このサイトを利用すれば，ScalaのコードもWebブラウザが使える環境ならばどこでも手軽に実行してみることができます．</p>
<p>残念な所は，2011/09/02現在，利用できるScalaのバージョンが2.8.0であるという点です．</p>
<p>また，このサイトを利用する場合は，打ち込んだソースコードはデフォルトで公開されますので注意して下さい．</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Androidタブレットに生まれ変わったGALAPAGOS</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/androidgalapagos.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1362</id>

    <published>2011-08-29T11:22:28Z</published>
    <updated>2011-08-29T11:27:48Z</updated>

    <summary>前回の記事で延期になった、と書いていた、電子書籍端末「GALAPAGOS」のAndroid2.3アップデート・サービスが、8月11日にようやく提供されました。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="andoroid" label="Andoroid" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="galapagos" label="GALAPAGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="メディアタブレット" label="メディアタブレット" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p> <a href="http://www.sharp.co.jp/mediatablet/" target="_blank">SHARPの公式サイト</a>を見ると、既にAndroid3.2を搭載した新しい7インチ・サイズのGALAPAGOSの広告が・・<br />
やはり、動画やアプリケーションの提供については、Andoroidマーケットに対抗しうる独自の<br />
サービスを展開する事は難しい、という判断なのでしょうか。</p>

<p>　早速アップデートを行ってみる事にしたのですが、どうやら一度Androidに変更すると<br />
元に戻す事は出来ず、これまで使えていた端末の機能で制限される個所が何点かがあるらしく、<br />
注意深く確認してみると。。</p>

<ol class="default">
<li>専用アプリ「mixi for SH」<em>→ 使用不可</em></li>
<li>手書き入力機能 <em>→ 使用不可</em></li>
<li>PDFビューア機能 <em>→ 使用不可</em></li>
<li>省エネ動作モード <em>→ 廃止</em></li>
<li>Flash再生機能 <em>→ 使用不可</em></li>
</ol>

<p>との事です。</p>

<p> 1.についてはブラウザ、3.と5.については無料でダウンロード出来るPDFリーダー、<br />
Flashプレイヤーでそれぞれ代替が効き、2.は普段ほとんど使用していないため、<br />
一番気にかかったのは4.で、バッテリーの持ち時間がどの程度減るか？だったのですが、<br />
これも普段、考えてみれば省エネモードは使用していないため、大した影響はなかろう。。<br />
それよりもAndroidに変更する事で受けられる恩恵の方が多そうな気がしたので、迷う事は<br />
ありませんでした。</p>

<p> 少々ややこしいのは、Android2.3にアップデートする前に既存のOSのファームウェア<br />
をVer.1.10cに更新する必要がある事で、これを実行しないとAndroidへのシステム変更が<br />
行えません。<br />
　1.10cより旧いバージョンからAndroidに直接移行すると何らかの不具合があったためなのだろうか？<br />
提供開始が遅れたのはそのためかもしれません。</p>

<p> 予想はしていましたが、これまでのファームウェアのアップデートよりも、はるかに<br />
時間がかかりました。</p>

<p>全ての更新を終え、端末を再起動すると、確かにAndroid端末に生まれ変わっております。<br />
起動時のホーム画面は、それまでの電子書籍端末とAndroidの要素が混ざった独特の<br />
インターフェースになっています。</p>

<div class="float-block-L00">
<div class="imageblock">
<img alt="アップデート中" src="/blog/inastream/img/20110829_01.jpg" width="160" height="285" />
<img alt="ホーム画面" src="/blog/inastream/img/20110829_02.jpg" width="160" height="285" />
<!-- /.imageblock --></div>
<div class="textblock">
<p class="first-child"> スマートフォンと異なり、カメラやGPSの機能は元々端末に備わっていないため、その手のソフトは、Andoroidマーケットから落としても使用する事が出来ません。</p>
<p> そういう意味では完全なAndroidタブレットに生まれ変わった、という訳ではなく、これまでの電子書籍端末がAndoroidの機能も一部使えるようになった、という微妙な解釈になるのですが。。</p>
<!-- /.textblock --></div>
<!-- /.float-block-L01 --></div>

<p>それでも、これまで電子書籍端末としてある程度満足して使えていたので、今回のサービスにより機能が拡張された事は、素直に喜びたいと思います。</p>]]>
        
    </content>
</entry>

<entry>
    <title>軽量フレームワーク Sinatra その3</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/-sinatra-3.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1361</id>

    <published>2011-08-19T05:49:30Z</published>
    <updated>2011-08-19T05:50:41Z</updated>

    <summary>おくの＠LL部（軽量言語）です。
googleがmotorolaを買収しましたね！
これで、Xoom君の未来も保障されたも同然（？...だといいのですが）
。
まぁ、それはそれ、これはこれ・・・
今回は、バックオフィス機能の作りこみで特に重宝されるであろう。
Excelファイルの取り扱いです。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="excel" label="Excel" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sinatra" label="Sinatra" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<!-- Important options, and finally the main call -->
<script type="text/javascript">
 SyntaxHighlighter.config.tagName = "pre" // use pre tags
 SyntaxHighlighter.config.stripBrs = false  // disregard trailing 
 SyntaxHighlighter.all()
</script>
<p>Sinatraと直接関係無いのでは？と思われるかも知れません。<br />
が、今回は『組み合わせて使ってみる』事を目的としてみます。<br />
Excelファイルのアップロード＆ＤＢ登録に挑戦します。</p>

<p>私は、ExcelファイルをRubyで取り扱う場合、<a href="http://rubyforge.org/projects/spreadsheet/" target="_blank">'spreadsheet'</a> を利用してます。<br />
Windows環境限定なら'win32ole'と'Excel.Application'の組み合わせも便利です。
</p>

<h2 class="heading-02">1.Postするフォーム</h2>
<p>最初に、ブラウザからExcelファイルをPostする必要があります。<br />
PostするFormなのですが、Formのenctypeを'multipart/form-data'に設定し<br />
inputタグでは、typeにfileを設定するだけです。<br />
勿論、post先には対応するURLを設定してください。<br />
シンプルなので、ＨＴＭＬのサンプル引用などは・・・しません！</p>

<h2 class="heading-02">2-1.Postを受け取る処理</h2>
<p>次は、サーバー側でブラウザからPostされたExcelファイルを取得します<br />
Sinatraでは、Postされたファイル名は『params['file'][:filename]』として<br />
ファイルのバイナリデータは『params['file'][:tempfile]』として、設定してくれます。</p>
<dl class="code-block-A01">
<dt>《 Postを受け取る処理：参考 》</dt>
<dd>
<pre class="brush: ruby; wrap-lines: true">
xls = Spreadsheet.open( params['file'][:tempfile], 'rb' )
@columns, @rows = ExcelFile.sheet_to_rowcolumn( xls.worksheet(0) )
</pre>
</dd>
</dl>

<h2 class="heading-02">2-2.Postを受け取る処理</h2>
<p>2-1では、ワークシートの中身をArrayに置き換えて取得していますが<br />
これは、自作のメソッドです。<br />
ここでは、ActiveRecordのExcelファイルクラスに、そのメソッドを追加しています。<br />
ワークシートの行と列のArray化、必要に応じて文字コード変換をしています。<br />
※.文字コードは、内部処理はutf8、ダウンロードを行う場合にはShift_JISで処理する為、変換を想定しておきます。</p>
<dl class="code-block-A01">
<dt>《 ExcelFileクラス：参考 》</dt>
<dd>
<pre class="brush: ruby; wrap-lines: true">
# エクセルファイル
class ExcelFile &lt; ActiveRecord::Base
  # エクセルのシートを、見出し(columns)とデータ行(rows)
  def ExcelFile.sheet_to_rowcolumn( sheet, sjis_encode = false )
    columns = Array.new
    rows    = Array.new
    while true
      break if sheet[ 0, columns.size ].nil?
      columns.push( sheet[ 0, columns.size ].tosjis) if sjis_encode
      columns.push( sheet[ 0, columns.size ]) unless sjis_encode
    end
    
    i = 1
    while true
      break if sheet[ i, 1 ].nil?
      row = Array.new
      for j in 0 .. (columns.size-1)
        row.push('')                    if sheet[ i , j ].nil?
        if sjis_encode
          row.push(sheet[ i , j ].tosjis) unless sheet[ i , j ].nil?
        else
          row.push(sheet[ i , j ]) unless sheet[ i , j ].nil?
        end
      end
      rows.push(row)
      i += 1
    end
    return columns, rows
  end
end
</pre>
</dd>
</dl>

<h2 class="heading-02">2-3.DBに登録する処理</h2>
<p>今回のサンプルでは、大胆にエクセルファイルの内容を<br />
blob形式で、カラム'metadata'に保存してしまいましょう！。<br />
（お仕事の場合には、管理者と相談しましょう！）<br />
ActiveRecordで、操作する場合下記の様になります。</p>
<dl class="code-block-A01">
<dt>《 ExcelFileのDB登録：参考 》</dt>
<dd>
<pre class="brush: ruby; wrap-lines: true">
excel_file = ExcelFile.create( :filename =&gt;params[:file][:filename] )
excel_file.update_attribute( :metadata, params['file'][:tempfile].read )
excel_file.save!
</pre>
</dd>
</dl>

<h2 class="heading-02">2-4.応答を表示する処理</h2>
<p>最後に、ブラウザーへ応答を返します。<br />
Sinatra(ruby)には、現在多種多様なテンプレートエンジンがあるので<br />
好みに合ったエンジンを選んでもらえればいいと思います。<br />
ここでの、表示にはワイルドに（雑？）、erbで出してしまいます。</p>
<dl class="code-block-A01">
<dt>《 ExcelFileのDB登録：参考 》</dt>
<dd>
<pre class="brush: ruby; wrap-lines: true">
erb @columns.inspect + @rows.inspect 
</pre>
</dd>
</dl>
<br />
<p>と、このような手順で、Excelファイルのアップロード＆Database格納が出来てしまいます。<br />
レッツ！Lightweight Language！</p>]]>
        
    </content>
</entry>

<entry>
    <title>iPhoneで重宝するかもしれないアプリ Nike+ GPS part2</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/iphone-nike-gps-part2.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1360</id>

    <published>2011-08-18T07:06:37Z</published>
    <updated>2011-08-18T09:26:17Z</updated>

    <summary>おさむ＠ダイエット部です。
九段下では猛暑まっさかりで汗だくだくです。
そんな中、夏バテをしないようにあぷりで体力をつけて、さわやかに熱中症対策をしようぜ！</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Gadget" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nikegps" label="Nike+ GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>公式ページはここ<a href="http://nikerunning.nike.com/nikeos/p/nikeplus/ja_JP/" title="Nike Running" target="_blank">ココ！</a></p>

<p>iPhoneで重宝しそうなアプリ <a href="http://itunes.apple.com/jp/app/nike-gps/id387771637?mt=8" title="iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 Nike+ GPS" target="_blank">Nike+ GPS</a>についての続編を紹介したいと思います。</p>

<p>前回は、Nike+ GPSのさわりを紹介しました。今回、ほぼ1ヶ月強使いこなした感想を書きます。<br />
アプリは2011/07/14にVer3.1.2と小刻みにVerUPを繰り返してます。<br />
走行距離も200キロを超え、モチベーションとテンションが上がってきております。<br />
日々の記録と、達成度でこのアプリ上で、タレントの安田美沙子さんが、<br />
またがんばーってと盛り上げてくれます。きめ細やかぁ！</p>

<div class="float-block-L00"> 
<div class="imageblock"> 
<img src="/blog/inastream/img/110812-001.png"  width="160" height="240" alt="記録" />
<p class="caption">《記録》</p>
<!-- /. imageblock --></div> 

<div class="imageblock"> 
<img src="/blog/inastream/img/110812-002.png"  width="160" height="240" alt="記録2" />
<p class="caption">《コース1》</p>
<!-- /. imageblock --></div> 

<div class="imageblock"> 
<img src="/blog/inastream/img/110812-003.png"   width="160" height="240" alt="コース" />
<p class="caption">《コース2》</p>
<!-- /. imageblock --></div> 
<div class="textblock">
<p class="first-child">まず、GPSの精度が上がっています。<br />
GPSの感度が低い箇所でも、小刻みにGPSが動いてくれるようです。<br />
自分が走った記録や平均時速やコースが地図上と比較しても、ほぼ正確に出るようになりました。</p>
<p>また、GPSの途切れそうな山間部でも途中途切れても、このように出してくれます。</p>
<!-- /. textblock --></div>
<!-- /.float-block-L00 --></div>

<p><em>では、また500キロ達成した頃にまた！</em></p>]]>
        
    </content>
</entry>

<entry>
    <title>PDFをFlashに変換するツールSWFTools (環境構築 続編)</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/pdfflashswftools02.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1359</id>

    <published>2011-08-15T00:51:04Z</published>
    <updated>2011-08-15T00:57:17Z</updated>

    <summary>前回紹介した，SWFToolsの環境構築についてですが，
情報として不十分なところがありましたので，今回続編として追記します．</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flash" label="Flash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pdf" label="PDF" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="swftools" label="SWFTools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<script type="text/javascript" src="/blog/inastream/js/swfobject.js"></script>
<p>
前回同様，Linux環境でソースからビルドして導入します．<br />
全てローカルビルドで環境構築する場合，必要となるのは，以下のアーカイブです．
</p>
<ol class="default">
	<li><a href="http://www.swftools.org/download.html" target="_blank">SWFTools本体</a>: swftools-0.9.1.tar.gz</li>
	<li><a href="http://www.freetype.org/" target="_blank">フォントエンジン</a>: freetype-2.4.5.tar.gz</li>
        <li><a href="http://www.ijg.org/files/" target="_blank">JPEG用ライブラリ</a>: jpegsrc.v8c.tar.gz</li>
        <li><a href="http://sourceforge.net/projects/giflib/" target="_blank">GIF用ライブラリ</a>: giflib-4.1.6.tar.bz2</li>
        <li><a href="ftp://ftp.foolabs.com/pub/xpdf/xpdf-japanese.tar.gz" target="_blank">PDFビューアの日本語サポートパッケージ</a>: xpdf-japanese.tar.gz</li>
</ol>
<p>
前回，最新版の，<a href="ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02.tar.gz" target="_blank">PDFビューア</a>: xpdf-3.02.tar.gz もあげましたが，<br />
<a href="http://www.swftools.org/download.html" target="_blank">SWFTools本体</a>: swftools-0.9.1.tar.gz が，対応できていないので，<br />
パッチを当てようとしても失敗してしまいます．
</p>
<dl class="code-block-A01">
<dt>《 フォントエンジンのビルド (1) 》</dt>
<dd>
<pre>
<code>
&gt; ls 
xpdf-japanese.tar.gz    swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz 
jpegsrc.v8c.tar.gz        giflib-4.1.6.tar.bz2
&gt; tar zxvf ./freetype-2.4.5.tar.gz
............
&gt; ls
<em>freetype-2.4.5</em>            xpdf-japanese.tar.gz    giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
&gt; cd ./freetype-2.4.5; pwd
/home/hoge/freetype-2.4.5
&gt; ls ./Jamfile
./Jamfile
&gt;
</code>
</pre>
</dd>
</dl>
ここで，上記の場所にある，Jamfile内の，
<dl class="code-block-A01">
<dt>《 Jamfile修正前 》</dt>
<dd>
<pre>
<code>
# Define FT2_BUILD_INCLUDE to point to your build-specific directory.
# This is prepended to FT2_INCLUDE_DIR.  It can be used to specify
# the location of a custom &lt;ft2build.h&gt; which will point to custom
# versions of `ftmodule.h' and `ftoption.h', for example.
#
FT2_BUILD_INCLUDE ?= ;
</code>
</pre>
</dd>
</dl>
の部分に，以下のように追記します．
<dl class="code-block-A01">
<dt>《 Jamfile修正後 》</dt>
<dd>
<pre>
<code>
# Define FT2_BUILD_INCLUDE to point to your build-specific directory.
# This is prepended to FT2_INCLUDE_DIR.  It can be used to specify
# the location of a custom &lt;ft2build.h&gt; which will point to custom
# versions of `ftmodule.h' and `ftoption.h', for example.
#
FT2_BUILD_INCLUDE ?= <em>/home/hoge/freetype-2.4.5/include
 /home/hoge/freetype-2.4.5/include/freetype
 /home/hoge/freetype-2.4.5/include/freetype/config
 /home/hoge/freetype-2.4.5/include/freetype/internal
 /home/hoge/freetype-2.4.5/include/freetype/internal/services</em>
 ;
</code>
</pre>
</dd>
</dl>
そして，ビルド.....<br />
ここで，全てローカルビルドで環境構築するために，静的ライブラリとして生成します．
<dl class="code-block-A01">
<dt>《 フォントエンジンのビルド (2) 》</dt>
<dd>
<pre>
<code>
&gt; sh ./autogen.sh
............
&gt; ./configure --prefix=/home/hoge/freetype-2.4.5 --enable-static --disable-shared
............
&gt; make; make install
............
&gt; 
</code>
</pre>
</dd>
</dl>

<dl class="code-block-A01">
<dt>《 JPEG用ライブラリのビルド 》</dt>
<dd>
<pre>
<code>
&gt; ls 
freetype-2.4.5              xpdf-japanese.tar.gz   giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
&gt; tar zxvf ./jpegsrc.v8c.tar.gz
............
&gt; ls
freetype-2.4.5              <em>jpeg-8c</em>     giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
xpdf-japanese.tar.gz
&gt; cd ./jpeg-8c; pwd
/home/hoge/jpeg-8c
&gt; ./configure --prefix=/home/hoge/jpeg-8c --enable-static --disable-shared 
............
&gt; make; make test; make install
............
&gt; 
</code>
</pre>
</dd>
</dl>
<dl class="code-block-A01">
<dt>《 GIF用ライブラリのビルド 》</dt>
<dd>
<pre>
<code>
&gt; ls 
freetype-2.4.5              xpdf-japanese.tar.gz   giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
&gt; tar jxvf ./giflib-4.1.6.tar.bz2
............
&gt; ls
freetype-2.4.5              jpeg-8c     giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
xpdf-japanese.tar.gz   <em>giflib-4.1.6</em>
&gt; cd ./giflib-4.1.6; pwd
/home/hoge/giflib-4.1.6
&gt; ./configure --prefix=/home/hoge/giflib-4.1.6 --enable-static --disable-shared 
............
&gt; make; make test; make install
............
&gt; 
</code>
</pre>
</dd>
</dl>
<dl class="code-block-A01">
<dt>《 SWToolsのビルド 》</dt>
<dd>
<pre>
<code>
&gt; ls 
freetype-2.4.5              jpeg-8c                        giflib-4.1.6.tar.bz2
swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz    jpegsrc.v8c.tar.gz
xpdf-japanese.tar.gz   giflib-4.1.6        
&gt; tar zxvf ./swftools-0.9.1.tar.gz
............
&gt; ls
<em>swftools-0.9.1</em>              freetype-2.4.5              jpeg-8c
giflib-4.1.6.tar.bz2           swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz
jpegsrc.v8c.tar.gz        xpdf-japanese.tar.gz      giflib-4.1.6
&gt; cd swftools-0.9.1; pwd
/home/hoge/swftools-0.9.1
&gt; export PATH=/home/hoge/freetype-2.4.5/bin:/home/hoge/jpeg-8c/bin:\
/home/hoge/glib-4.1.6/bin${PATH}
&gt; export LDFLAGS="-L/home/hoge/freetype-2.4.5/lib -L/home/hoge/jpeg-8c/lib \
-L/home/hoge/glib-4.1.6/lib"
&gt; export CPPFLAGS="-I/home/hoge/freetype-2.4.5/include \
-I/home/hoge/jpeg-8c/include -I/home/hoge/glib-4.1.6/include"
&gt; ./configure --prefix=/home/hoge/swftools-0.9.1
............
&gt; make; make install
............
&gt;
</code>
</pre>
</dd>
</dl>
<p>
以上で，ビルドは完了です．<br />
以下のように，<a href="http://www.swftools.org/" target="_blank">SWFTools</a>のコマンド群が生成されていることがわかります．
</p>
<dl class="code-block-A01">
<dd>
<pre>
<code>
&gt; pwd; ls ./bin
/home/hoge/swftools-0.9.1
as3compile    gif2swf         <em>pdf2swf</em>        swfbbox     swfcombine
swfextract      swfstrings    font2swf       jpeg2swf    png2swf
swfc               swfdump      swfrender    wav2swf    
&gt;
</code>
</pre>
</dd>
</dl>
<p>
PDFをSWFに変換するには，pdf2swfのコマンドを使用します．
</p>
<p>
さらに，日本語のPDFに対応するためには，日本語サポートパッケージを設定する必要があります．
</p>
<dl class="code-block-A01">
<dt>《 日本語サポートパッケージの展開及び設定 》</dt>
<dd>
<pre>
<code>
&gt; pwd; ls
/home/hoge
swftools-0.9.1              freetype-2.4.5              jpeg-8c    giflib-4.1.6
giflib-4.1.6.tar.bz2           swftools-0.9.1.tar.gz    freetype-2.4.5.tar.gz
jpegsrc.v8c.tar.gz        xpdf-japanese.tar.gz
&gt; cd ./swftools-0.9.1/share; pwd
/home/hoge/swftools-0.9.1/share
&gt; mkdir xpdf; cd xpdf; pwd
/home/hoge/swftools-0.9.1/share/xpdf
&gt; tar zxvf ../../../xpdf-japanese.tar.gz
..............
&gt; pwd; ls
/home/hoge/swftools-0.9.1/share/xpdf
<em>xpdf-japanese</em>
&gt; mv ./xpdf-japanese ./japanese; ls
<em>japanese</em>
&gt; cd japanese; ls
Adobe-Japan1.cidToUnicode    CMap    EUC-JP.unicodeMap
ISO-2022-JP.unicodeMap     RADME    Shift-JIS.unicodeMap
<em>add-to-xpdfrc</em>
</code>
</pre>
</dd>
</dl>
<p>
ここで，上記の add-to-xpdfrc を編集します．
</p>
<dl class="code-block-A01">
<dt>《 add-to-xpdfrc修正前 》</dt>
<dd>
<pre>
<code>
#----- begin Japanese support package (2004-jul-27)
cidToUnicode  Adobe-Japan1  /usr/local/share/xpdf/japanese/Adobe-Japan1.cidToUnicode
unicodeMap  ISO-2022-JP  /usr/local/share/xpdf/japanese/ISO-2022-JP.unicodeMap
unicodeMap  EUC-JP  /usr/local/share/xpdf/japanese/EUC-JP.unicodeMap
unicodeMap  Shift-JIS  /usr/local/share/xpdf/japanese/Shift-JIS.unicodeMap
cMapDir  Adobe-Japan1  /usr/local/share/xpdf/japanese/CMap
toUnicodeDir  /usr/local/share/xpdf/japanese/CMap
#displayCIDFontTT       Adobe-Japan1    /usr/..../kochi-mincho.ttf
#----- end Japanese support package
</code>
</pre>
</dd>
</dl>
<dl class="code-block-A01">
<dt>《 add-to-xpdfrc修正後 》</dt>
<dd>
<pre>
<code>
#----- begin Japanese support package (2004-jul-27)
cidToUnicode Adobe-Japan1 <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/Adobe-Japan1.cidToUnicode</em>
unicodeMap ISO-2022-JP <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/ISO-2022-JP.unicodeMap</em>
unicodeMap EUC-JP <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/EUC-JP.unicodeMap</em>
unicodeMap Shift-JIS <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/Shift-JIS.unicodeMap</em>
cMapDir Adobe-Japan1 <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/CMap</em>
toUnicodeDir  <em>/home/hoge/swftools-0.9.1/share/xpdf/japanese/CMap</em>
#displayCIDFontTT       Adobe-Japan1    /usr/..../kochi-mincho.ttf
#----- end Japanese support package
<em>displayNamedCIDFontT1   RyuminPro-Bold       /home/hoge/fonts/A-OTF-RyuminPro-Bold.otf</em>
.............
</code>
</pre>
</dd>
</dl>
<p>
上記の<em>赤字部分</em>のように，使用する日本語フォントのフォントファイルを設定します．
これで準備はOKです．<br />
次回こそは，実際に<a href="http://www.swftools.org/" target="_blank">SWFTools</a>のコマンド群を使って，いろいろと試してみることにしましょう．
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Akkaで簡単分散プログラミング</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/akka.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1358</id>

    <published>2011-08-04T10:28:58Z</published>
    <updated>2011-08-04T10:29:31Z</updated>

    <summary>今回は，Scalaで手軽に本格的な分散プログラミングができる，Akkaについて紹介したいと思います．</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="akka" label="Akka" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scala" label="Scala" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<!-- Important options, and finally the main call -->
<script type="text/javascript">
 SyntaxHighlighter.config.tagName = "pre" // use pre tags
 SyntaxHighlighter.config.stripBrs = "false"  // disregard trailing 
 SyntaxHighlighter.all()
</script>

<p>Akkaは現在Scalaと一緒の形で<a href="http://typesafe.com/" target="_blank">Typesafe社</a>によって配布されています．</p>

<p>Scalaに標準で用意されているActor機能よりも高機能なものになっています．</p>

<p>シンプルなコード・設定ファイルで実際にどのようにプログラムが書けるかを，<br />
見てみたいと思います．</p>

<p>サーバ側のソースコードは次のようになります．</p>

<dl class="code-block-A01">
<dt>《 server.scala 》</dt>
<dd>
<pre class="brush: scala; wrap-lines: false">
import akka.actor.Actor

class EchoActor extends Actor {

  protected def receive = {
    case x =&gt; self.reply(x)
  }

}
</pre>
</dd>
</dl>

<ul class="default">
<li><strong>5行:</strong>&nbsp;Actorトレイトのreceiveメソッドを実装します．これがクライアントからのメッセージを受け取る部分となります．</li>
<li><strong>6行:</strong>&nbsp;クライアントから受け取ったメッセージxを受けて，それをそのままクライアントへ返します．</li>
</ul>


<p>サーバの設定ファイルは次の通りとなります．</p>

<dl class="code-block-A01">
<dt>《 akka.conf(サーバ側) 》</dt>
<dd>
<pre class="brush: html; wrap-lines: false">
akka {
  time-unit = "seconds"
  enabled-modules = ["remote"]
  event-handler-level = "DEBUG"

  actor {
    timeout = 10
    serialize-messages = on
  }

  remote {
    server {
      hostname = "localhost"
      port = 9999
      connection-timeout = 10
      message-frame-size = 20000000 # limit byte size
    }
 }
}
</pre>
</dd>
</dl>

<p>サーバの起動は次のクラスを実行します．</p>

<dl class="code-block-A01">
<dt>《 boot.scala 》</dt>
<dd>
<pre class="brush: html; wrap-lines: false">
import akka.actor.Actor._

object ServicesBooster {

  def main(args: Array[String]): Unit = {
    remote.start()
    remote.register("echo-service", actorOf[EchoActor])
  }

}
</pre>
</dd>
</dl>

<ul class="default">
<li><strong>6行:</strong>&nbsp;サーバ環境を起動させます．</li>
<li><strong>7行:</strong>&nbsp;サーバ環境へサービスを行うActorを名前を付けて登録します．これで，クライアントからこの名前を指定してアクセスすることができるようになります．</li>
</ul>

<p>クライアント側のソースコードは次のようになります．</p>

<dl class="code-block-A01">
<dt>《 client.scala 》</dt>
<dd>
<pre class="brush: scala; wrap-lines: false">
import akka.actor.Actor

class TestActor extends Actor {

  val echoService = remote.actorFor("echo-service", "localhost", 8888)
  (0 to 10).par.foreach {
    no =&gt;
      println("echo = " + (echoService !! ("echo " + no)))
    }
  }

}
</pre>
</dd>
</dl>

<ul class="default">
<li><strong>5行:</strong>&nbsp;リモートのActorへアクセスするためのオブジェクトを名前とホスト名，ポート名を指定して生成します．</li>
<li><strong>8行:</strong>&nbsp;生成したオブジェクトを経由してメッセージを送ります（!!の後の部分が送るメッセージの内容となっています）．そして，返ってきた値を表示します．</li>
</ul>

<p>クライアントの設定ファイルは次の通りとなります．</p>

<dl class="code-block-A01">
<dt>《 akka.conf(クライアント側) 》</dt>
<dd>
<pre class="brush: html; wrap-lines: false">
akka {
  time-unit = "seconds"
  enabled-modules = ["remote"]
  event-handler-level = "DEBUG"

  actor {
    timeout = 10
    serialize-messages = on
  }

  client {
    message-frame-size = 20000000 # limit byte size
  }
}
</pre>
</dd>
</dl>

<p>このようなコード・設定ファイルを用意することで手軽に分散プログラミングを行うことができますので，Scalaを利用されている方は，是非，Akkaを使用してみてください．</p>]]>
        
    </content>
</entry>

<entry>
    <title>XMDFビルダー３</title>
    <link rel="alternate" type="text/html" href="http://www.brainsellers.com/blog/inastream/2011/08/xmdf.html" />
    <id>tag:www.brainsellers.com,2011:/blog/inastream//4.1357</id>

    <published>2011-08-02T04:29:10Z</published>
    <updated>2011-08-02T04:32:09Z</updated>

    <summary>　前回の記事で、SHARPのXMFDビルダーについて書いてから、その日を楽しみに待っている間に、GALAPAGOSに関してもう1件、
メディアタブレットのOSが、独自仕様の物からAndroid2.3に変更される、という新しいニュースが入って来ていました。</summary>
    <author>
        <name>製品開発部</name>
        
    </author>
    
        <category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="galapagos" label="GALAPAGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sharp" label="SHARP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xmdfビルダー" label="XMDFビルダー" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="電子書籍" label="電子書籍" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.brainsellers.com/blog/inastream/">
        <![CDATA[<p>当初は電子書籍に限らず、動画やアプリの配信等、SHARP独自のサービスの展開を図っていたと思うのですが、Androidマーケットの汎用性の高いサービスに対抗出来ない、という方針転換からなのか、ただ迷走しているだけなのか・・事情はよく分かりませんが、元々機器としては電子書籍以外の用途にも色々と使えそうなのを半ば強引に機能の制限を行っているような印象を受けていたので、単なる1ユーザーとしては朗報でした。</p>

 <p>7月25日にリリース予定だったらしいのですが、諸事情により<a href="http://www.sharp.co.jp/corporate/news/110714-a.html" target="_blank">延期になったようです</a>。
少々残念でしたが、<a href="http://www.xmdf.jp/" target="_blank">XMDFビルダー</a>の方は無事、ダウンロードし、使用する事が出来るように
なりました。（※対象は法人のみです）</p>

<p>　早速、ダウンロードして試用してみました。フリーのXMDFの生成ツールとしては既に「個人用」
として配布されたGALAPAGOS XMDF Clipper（「GALAPAGOS Stationに付属）がありましたが、
所謂「電子書籍コンテンツ作成」の用途には全く使えない物だったので、どんな物なのだろうか？
と半信半疑だったのですが。。</p>

<p>かなり本格的な編集・作成ツールになっており、フリーとは思えない程、機能的に充実しています。SHARPさん、いよいよ「XMDF」形式を、日本の電子書籍の主流として押し上げようとしているかのような「本気ぶり」が伺えます。</p>

<p>　もしかしたらこのツールを提供するサービスに力を入れていたため、Android2.3への更新サービスが遅れたのかもしれません。それならば合点が行きます。</p>

<p>何はともあれ、試しに何かコンテンツを作ってみようと、起動して「新規作成」を選ぶと、
コンテンツ・フォーマットでメディア・タブレットの5.5インチ用、もしくは10.8インチ用を選択する
メニューが現れました。</p>

<div class="float-block-C">
<div class="imageblock">
<img alt="メディアタブレットのタイプに合わせたフォーマットの選択が可能" src="/blog/inastream/img/20110731_01.png" width="640" height="416" />
<!-- /.imageblock --></div>
<!-- /.float-block --></div>

<p>筆者の所持している5.5インチタブレットのフォーマットを選び、弊社Webサイトのbiz-Straemのご案内のページをカタログ化してみる事に。</p>

<p>　テキスト部分や画像をそれぞれ「パーツ」として読み込み、組み込む事で、直感的に編集作業を
進めて行く事が出来ます。</p>

<div class="float-block-C">
<div class="imageblock">
<img alt="テキストや画像を「パーツ」として組み込み" src="/blog/inastream/img/20110731_02.png" width="640" height="345" />
<!-- /.imageblock --></div>
<!-- /.float-block --></div>

<p>　端末で表示させた場合のプレビュー機能も付いていたので、パブリッシュ（データ生成）する前に確認。</p>

<div class="float-block-C">
<div class="imageblock">
<img alt="コンテンツのプレビュー" src="/blog/inastream/img/20110731_03.png" width="640" height="345" />
<!-- /.imageblock --></div>
<!-- /.float-block --></div>

<p>　zbf形式でデータ出力後、GALAPAGOS Stationで筆者の5.5インチ・タブレットと同期して、アップロード、動作確認してみました。</p>

<p> ページ送りはもちろん、拡大した場合の、画像周りに合わせたレイアウトの変更、文字の大きさに合わせた改行もしっかりと行われ、「電子書籍コンテンツ作成ツール」としての要件を充分満たして
いる事が確認出来ました！</p>

<div class="float-block-C">
<div class="imageblock">
<a href="/blog/inastream/img/20110731-04.JPG" rel="lightbox"><img src="/blog/inastream/img/20110731-04.JPG" width="160" height="285" alt="biz-Streamのご案内を電子書籍化" /></a>&nbsp;
<a href="/blog/inastream/img/20110731-05.JPG" rel="lightbox"><img src="/blog/inastream/img/20110731-05.JPG" width="160" height="285" alt="ページ送りもバッチリ☆" /></a>
<!-- /.imageblock --></div>
<!-- /.float-block --></div>

<p>　おそらく、今回のダウンロード・サービスを機会に、コンテンツを提供する側の裾野が、一気に
広がる事が予想出来ます。<br />
　更に使用方法を習得して、電子書籍サービスの今後の可能性を探ってみたいと思います。</p>
]]>
        
    </content>
</entry>

</feed>

