<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4629086917523851821</id><updated>2024-09-09T00:02:57.992+09:00</updated><category term="Cocoa"/><category term="small talk"/><category term="Quartz Composer"/><category term="java"/><category term="technique"/><category term="Ruby on Rails"/><category term="GWT"/><category term="OpenCV"/><category term="Xcode"/><category term="eclipse"/><category term="RDF"/><category term="ARToolkit"/><category term="XML"/><category term="CoreImage"/><category term="twitter+fusen"/><category term="Arduino"/><category term="GWT on Rails"/><category term="MMD"/><category term="math/R"/><category term="rJava"/><category term="javascript"/><category term="CoGe"/><category term="GLSL"/><category term="OSGi"/><category term="Project Management"/><category term="apache felix"/><category term="apache tomcat"/><category term="english homework"/><category term="Automator"/><category term="WebKit"/><category term="WiiRemoteFramework"/><category term="grwolstyle"/><category term="scratch"/><category term="NyARToolkit"/><category term="OpenRDF_Sesame"/><category term="SproutCore"/><category term="jogl"/><category term="Dashcode"/><category term="MMD_DM"/><category term="MeCab"/><category term="SPARQL"/><category term="applescript"/><category term="fastcgi"/><category term="iPhone"/><category term="linda"/><category term="ruby"/><category term="sadi"/><category term="ARTK_MMD"/><category term="COLLADA"/><category term="GWT-Ext"/><category term="I2C"/><category term="NSBezierPath"/><category term="NXT2.0"/><category term="NyMmd"/><category term="OAuthConsumer.framework"/><category term="Soundflower"/><category term="XBee"/><category term="canvas"/><category term="firmata"/><category term="libdecodeqr"/><category term="sysex"/><category term="webfonts"/><category term="4store"/><category term="ADT7410"/><category term="AIR"/><category term="ARQ"/><category term="Bullet"/><category term="GSL"/><category term="Homebrew"/><category term="MPL115A2"/><category term="MacOSX"/><category term="MobileSafari"/><category term="Plask"/><category term="WebGL"/><category term="WiiRemoteJ"/><category term="apache axis"/><category term="bluecove"/><category term="google-blockly"/><category term="grails"/><category term="hadoop"/><category term="serialport-serever"/><category term="swing"/><category term="timbre"/><category term="ArtPig"/><category term="BazAR"/><category term="C#"/><category term="Cocoa-Ruby"/><category term="ColorSync"/><category term="Core Image Fun House"/><category term="CoreLocation"/><category term="LINQ"/><category term="LegNXTframework"/><category term="Mono"/><category term="NSArrayController"/><category term="OpenGL Shader Builder"/><category term="Preview"/><category term="Ustream Producer"/><category term="charset"/><category term="coca"/><category term="cocos2d"/><category term="dropwizard"/><category term="flot"/><category term="graphviz"/><category term="i18n"/><category term="iso-8859-1"/><category term="jaxws"/><category term="jsc"/><category term="raptor2"/><category term="raspberry-pi"/><category term="soap"/><category term="ust"/><category term="utf-8"/><category term="wsdl"/><title type='text'>いー ドット ぷりんとすたっくとれーす</title><subtitle type='html'>高確率で思い込みによる説明．間違っていることが多い．/「無知だったり、勘違いしていたり、底意を押しつけたり、いいかげんだったり、噂や疑惑を信じていたりして、狂気じみてさえいるかもしれません」( http://bit.ly/gs23zg )</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>483</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-518992302214164338</id><published>2015-03-28T04:10:00.000+09:00</published><updated>2015-03-28T05:13:35.420+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="timbre"/><title type='text'>43546414</title><content type='html'>blogspotではやはり無理があったので&lt;a href=&quot;http://pgtwitter.github.io/43546414/index.html&quot;&gt;github.io&lt;/a&gt;に移動しました．</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/518992302214164338/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/518992302214164338' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/518992302214164338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/518992302214164338'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/03/43546414.html' title='43546414'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-2734951283294097597</id><published>2015-02-05T09:58:00.002+09:00</published><updated>2015-02-05T10:19:59.252+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dropwizard"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jaxws"/><category scheme="http://www.blogger.com/atom/ns#" term="soap"/><category scheme="http://www.blogger.com/atom/ns#" term="wsdl"/><title type='text'>Dropwizard-JAXWSのサンプルを動かす(メモ)</title><content type='html'>&lt;a href=&quot;https://github.com/roskart/dropwizard-jaxws&quot;&gt;Dropwizard-JAXWS&lt;/a&gt;のサンプルを動かすまでにつまづいたのでメモ．&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;ルートディレクトリに移動(&#39;dropwizard-jaxws&#39;, &#39;dropwizard-jaxws-example&#39;が見える，githubからzip downloadした場合は&#39;dropwizard-jaxws-master&#39;ディレクトリ) &lt;/li&gt;
&lt;li&gt;&lt;pre&gt;mvn install -Djavax.xml.accessExternalSchema=all&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&#39;javax.xml.accessExternalSchema&#39;の指定がない場合は&#39;dropwizard-jaxws-example&#39;の段階で以下の問題でと失敗する．&lt;br /&gt;
&lt;div&gt;&lt;pre&gt;accessExternalSchemaプロパティで設定された制限により&#39;file&#39;アクセスが許可されていないため、スキーマ・ドキュメント&#39;xjc.xsd&#39;の読取りに失敗しました。&lt;/pre&gt;&lt;/div&gt;とりあえずこれで解決した．&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;ちなみにWSDLを表示するにはサービスに&#39;?wsdl&#39;をつける．&lt;br /&gt;
&lt;div&gt;&lt;pre&gt;http://localhost:8080/soap/simple?wsdl&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/2734951283294097597/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/2734951283294097597' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/2734951283294097597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/2734951283294097597'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/02/dropwizard-jaxws.html' title='Dropwizard-JAXWSのサンプルを動かす(メモ)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-8856960594470951374</id><published>2015-01-20T03:12:00.001+09:00</published><updated>2015-01-20T15:14:42.098+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><title type='text'>MacOSXのアプリのスタイルを使用してシェルスクリプトを実行します (例としてJavaApplicationStub劣化版)</title><content type='html'>&lt;a href=&quot;https://github.com/pgtwitter/ShellCommand_MacApp&quot;&gt;タイトルの通りのプロジェクトをGitHubに作ってみた&lt;/a&gt;．&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;注意&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;環境 MacOSX 10.10.1 / Java 1.8.0_25&lt;/li&gt;
&lt;li&gt;Finder上で，&quot;〜.app&quot;のフォルダ&quot;入る際は，コンテクストメニュー(副(右)クリックで出るメニュー)の「パッケージの内容を表示」を用いる．&lt;/li&gt;
&lt;li&gt;&quot;ShellCommand_MacApp.app&quot;をダブルクリックした際に「開発元が未確認のため開けません」とでることがある．コンテクストメニュー(副(右)クリックで出るメニュー)の「開く」で起動すると確認ダイアログで確認されたのちに起動させることができる．&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;作成&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;build.xmlをエディタで開き，&quot;javahome&quot;のプロパティ値を環境に合わせて修正する．&lt;/li&gt;
&lt;li&gt;antを実行する．&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;ShellCommand_MacApp.app/Contents/Resources/Java/の下にShellCommand_MacApp.jarファイルができる&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;ShellCommand_MacApp.appをダブルクリックして起動する．&lt;/li&gt;
&lt;/ol&gt;&lt;h4&gt;動作&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Windowが一つでる．&lt;/li&gt;
&lt;li&gt;Dock内のアイコンを確認してみる．&lt;/li&gt;
&lt;li&gt;Dock内のアイコン上のバッジを確認してみる．&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqGKBcKQ3bmgm0wMqT5d3r84BJ9znzvTqCp7XuJvP_0hyphenhyphenO2oQY4WLcLYh_YfIliRxXFmpUnIoqazUBzfzBg0i7f_ILATov21VOaS-5_jKJ0JxIMX-oNYPcnQFK-n-P9XHXmbyFr2aCxWL/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-20+15.04.49.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqGKBcKQ3bmgm0wMqT5d3r84BJ9znzvTqCp7XuJvP_0hyphenhyphenO2oQY4WLcLYh_YfIliRxXFmpUnIoqazUBzfzBg0i7f_ILATov21VOaS-5_jKJ0JxIMX-oNYPcnQFK-n-P9XHXmbyFr2aCxWL/s200/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-20+15.04.49.png&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;メニューの&quot;ShellCommand_MacApp / About&amp;nbsp;ShellCommand_MacApp&quot;を選択してみる．&lt;/li&gt;
&lt;li&gt;メニューの&quot;ShellCommand_MacApp / Preferences…&quot;を選択してみる．&lt;/li&gt;
&lt;li&gt;メニューの&quot;ShellCommand_MacApp / Quti&amp;nbsp;ShellCommand_MacApp&quot;を選択してみる．&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/8856960594470951374/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/8856960594470951374' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/8856960594470951374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/8856960594470951374'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/macosx-javaapplicationstub.html' title='MacOSXのアプリのスタイルを使用してシェルスクリプトを実行します (例としてJavaApplicationStub劣化版)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqGKBcKQ3bmgm0wMqT5d3r84BJ9znzvTqCp7XuJvP_0hyphenhyphenO2oQY4WLcLYh_YfIliRxXFmpUnIoqazUBzfzBg0i7f_ILATov21VOaS-5_jKJ0JxIMX-oNYPcnQFK-n-P9XHXmbyFr2aCxWL/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-20+15.04.49.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-3603871011083703405</id><published>2015-01-19T01:20:00.001+09:00</published><updated>2015-01-19T03:55:34.734+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>rJavaを用いたヒストグラム画像生成と，その画像によるパラパラ漫画</title><content type='html'>&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2015/01/mathrrjavaplotjavapanel.html&quot;&gt;前回の「Rの作図によるパラパラ漫画」&lt;/a&gt;用のクラス(RBase)を用意して，それの拡張(RSample)で実行する形にしてみた．&lt;br /&gt;
実行のためのパラメータ類については&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;rJavaを用いてJavaからRを動かしたPost&lt;/a&gt;と同様にR_HOME等を設定する．&lt;br /&gt;
（ファイルにPNG画像を書き出して読み込んで描画するを繰り返すので注意）&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/18d549f1e12e41275ed7.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/0a6a17e7cc696e8eaa06.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/H9QnUPQ42Ng&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/3603871011083703405/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/3603871011083703405' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3603871011083703405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3603871011083703405'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/rjava.html' title='rJavaを用いたヒストグラム画像生成と，その画像によるパラパラ漫画'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1695586612332536160</id><published>2015-01-18T03:49:00.001+09:00</published><updated>2015-01-19T03:55:26.510+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/R・rJavaでのPlot画像をJavaのPanelに貼り付ける</title><content type='html'>&lt;a href=&quot;/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;rJavaを用いてJavaからRを動かしたPost&lt;/a&gt;のRSampleと入れ替えてみる．&lt;br /&gt;
（ファイルにPNG画像を書き出して読み込んで描画するを繰り返すので注意）&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/387c332dfb1d1d1d51ec.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/5VVp57GliZQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1695586612332536160/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1695586612332536160' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1695586612332536160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1695586612332536160'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/mathrrjavaplotjavapanel.html' title='math/R・rJavaでのPlot画像をJavaのPanelに貼り付ける'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1270307364831050739</id><published>2015-01-11T11:07:00.001+09:00</published><updated>2015-01-11T11:14:29.099+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/RでPlotをrJava経由でやってみる(SVG)</title><content type='html'>&lt;a href=&quot;/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;rJavaを用いてJavaからRを動かしたPost&lt;/a&gt;のRSampleと入れ替えてみる．&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/b84d548b9ee14890ac14.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;pre&gt;&amp;lt;html&gt;&amp;lt;body&gt;

&amp;lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; width=&quot;504pt&quot; height=&quot;504pt&quot; viewBox=&quot;0 0 504 504&quot; version=&quot;1.1&quot;&gt;
&amp;lt;defs&gt;
&amp;lt;g&gt;
&amp;lt;symbol overflow=&quot;visible&quot; id=&quot;glyph0-0&quot;&gt;
&amp;lt;path style=&quot;stroke:none;&quot; d=&quot;M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 &quot;/&gt;
&amp;lt;/symbol&gt;
…
&amp;lt;path style=&quot;fill:none;stroke-width:0.075;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-miterlimit:10;&quot; d=&quot;M 59.039062 416.800781 L 473.761719 416.800781 &quot;/&gt;
&amp;lt;/g&gt;
&amp;lt;/g&gt;
&amp;lt;/svg&gt;

&amp;lt;/body&gt;&amp;lt;/html&gt;
&lt;/pre&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlNDpoV4HDRa2G5RdInE1PguH3USZ3pUB7bRkO0Jxyug45PAQiTybCONL2pd6oL1J2s1FwJziZBm6tBAJJwPIdG_eb9TS7BrF8zAcC0Ucx75OLV3ETc6VtsLlFAzGQilOd2jiYpE4iYNKA/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+11.06.22.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlNDpoV4HDRa2G5RdInE1PguH3USZ3pUB7bRkO0Jxyug45PAQiTybCONL2pd6oL1J2s1FwJziZBm6tBAJJwPIdG_eb9TS7BrF8zAcC0Ucx75OLV3ETc6VtsLlFAzGQilOd2jiYpE4iYNKA/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+11.06.22.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;参考&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://cse.naro.affrc.go.jp/takezawa/r-tips/r/49.html&quot;&gt;R-Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/myuhe/1825991&quot;&gt;R-SVG.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1270307364831050739/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1270307364831050739' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1270307364831050739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1270307364831050739'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/mathrplotrjavasvg.html' title='math/RでPlotをrJava経由でやってみる(SVG)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlNDpoV4HDRa2G5RdInE1PguH3USZ3pUB7bRkO0Jxyug45PAQiTybCONL2pd6oL1J2s1FwJziZBm6tBAJJwPIdG_eb9TS7BrF8zAcC0Ucx75OLV3ETc6VtsLlFAzGQilOd2jiYpE4iYNKA/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+11.06.22.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-2533588535697943098</id><published>2015-01-11T10:52:00.000+09:00</published><updated>2015-01-11T11:13:35.785+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/RでPlotをrJava経由でやってみる</title><content type='html'>&lt;a href=&quot;/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;rJavaを用いてJavaからRを動かしたPost&lt;/a&gt;のRSampleと入れ替えてみる．&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/f798065644e4630ac55a.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;pre&gt;&amp;lt;html&gt;&amp;lt;body&gt;&amp;lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAD8GlDQ1BJQ0MgUHJvZmlsZQA
…
IgAALGEUADbJzLUGAQAAEQAIEoEEADHAUvog4gAAIgAALGEfj/xnxImx+sxQYAAAAASUVORK5CYII=&quot;&gt;&amp;lt;/body&gt;&amp;lt;/html&gt;
&lt;/pre&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oB_2hZ7CDOlCW9WUQmpvPci8azlGVaGDhlVzzPhioQv8zdLPgC3ttlTIo8F_3k73o4zcHXZoyUQhMUBEXm0fNTlDjJpA7828l7mtH-4OWDYRfvaWuh90_sT0juLOCBWEU_nFWVhkfcLk/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+10.56.06.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oB_2hZ7CDOlCW9WUQmpvPci8azlGVaGDhlVzzPhioQv8zdLPgC3ttlTIo8F_3k73o4zcHXZoyUQhMUBEXm0fNTlDjJpA7828l7mtH-4OWDYRfvaWuh90_sT0juLOCBWEU_nFWVhkfcLk/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+10.56.06.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;参考&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://cse.naro.affrc.go.jp/takezawa/r-tips/r/49.html&quot;&gt;R-Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stat.biopapyrus.net/graph/imagedevice.html&quot;&gt;グラフの保存 | R言語で描かれた画像を保存する&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/2533588535697943098/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/2533588535697943098' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/2533588535697943098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/2533588535697943098'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/blog-post_11.html' title='math/RでPlotをrJava経由でやってみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oB_2hZ7CDOlCW9WUQmpvPci8azlGVaGDhlVzzPhioQv8zdLPgC3ttlTIo8F_3k73o4zcHXZoyUQhMUBEXm0fNTlDjJpA7828l7mtH-4OWDYRfvaWuh90_sT0juLOCBWEU_nFWVhkfcLk/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2015-01-11+10.56.06.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-5347728177915140487</id><published>2015-01-10T22:48:00.001+09:00</published><updated>2015-01-10T22:48:24.612+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/Rで度数分布表をrJava経由でやってみる</title><content type='html'>&lt;a href=&quot;/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;前々回&lt;/a&gt;のRSampleと入れ替えてみる．&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/51d0534c516326ad6d10.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;pre&gt;R_HOME:/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources
java.library.path:.:/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources/library/rJava/jri
label=[0,6) freq=0.0 ratio=0.0
label=[6,12) freq=19.0 ratio=1.9E-4
label=[12,18) freq=1394.0 ratio=0.01394
label=[18,24) freq=12456.0 ratio=0.12456
label=[24,30) freq=36287.0 ratio=0.36287
label=[30,36) freq=35818.0 ratio=0.35818
label=[36,42) freq=12658.0 ratio=0.12658
label=[42,48) freq=1340.0 ratio=0.0134
label=[48,54) freq=28.0 ratio=2.8E-4
label=[54,60) freq=0.0 ratio=0.0
sigma1=0.72105
sigma2=0.97219
sigma3=0.99953
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;参考&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://monge.tec.fukuoka-u.ac.jp/r_analysis/descriptive_statistics14.html&quot;&gt;R言語で統計解析入門： 度数分布表を作成　梶山　喜一郎&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/5347728177915140487/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/5347728177915140487' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/5347728177915140487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/5347728177915140487'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/mathrrjava_10.html' title='math/Rで度数分布表をrJava経由でやってみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-3909578552774028573</id><published>2015-01-10T03:26:00.000+09:00</published><updated>2015-01-10T15:31:19.075+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/Rでの関数モデルの当てはめをrJava経由でやってみる</title><content type='html'>&lt;a href=&quot;/2015/01/mathr-312-java-18025-macosx-1010.html&quot;&gt;前回&lt;/a&gt;のRSampleと入れ替えて，データファイル(dist.dat)を用意してみる．&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;src/rJava/RSample.java&lt;/b&gt;&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/e5b9e53bbad8d22e5a3d.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;dist.dat&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;0,22
1,25
2,28
3,19
4,20
5,18
6,18
7,12
8,15
9,11
10,22
11,16
12,19
13,22
14,18
15,10
16,16
17,11
18,11
19,11
20,10
21,15
22,12
23,10
24,10
25,11
26,12
27,10
28,7
29,8
30,10
31,11
32,9
33,6
34,9
35,10
36,11
37,6
38,5
39,6
40,8
41,10
42,15
43,7
44,5
45,3
46,4
47,2
48,5
49,9
50,3
51,7
52,6
53,5
54,5
55,1
56,7
57,5
58,5
59,4
60,3
61,2
62,2
63,7
64,4
65,4
66,9
67,5
68,7
69,6
70,6
71,2
72,2
73,2
74,3
75,2
76,1
77,2
78,4
79,1
80,3
81,1
82,3
83,3
84,4
85,2
86,4
87,6
88,0
89,7
90,3
91,3
92,3
93,2
94,8
95,0
96,0
97,2
98,3
99,3
100,4
101,5
102,1
103,3
104,3
105,1
106,3
107,3
108,0
109,3
110,4
111,1
112,2
113,0
114,3
115,2
116,0
117,2
118,2
119,0
120,1
121,1
122,2
123,1
124,2
125,2
126,3
127,3
128,0
129,1
130,3
131,1
132,4
133,2
134,0
135,1
136,1
137,1
138,2
139,1
140,1
141,0
142,2
143,0
144,0
145,0
146,2
147,0
148,0
149,0
150,2
151,0
152,0
153,0
154,0
155,4
156,1
157,0
158,0
159,1
160,1
161,1
162,1
163,0
164,0
165,0
166,1
167,1
168,1
169,1
170,1
171,0
172,0
173,0
174,0
175,1
176,0
177,0
178,0
179,0
180,0
181,2
182,1
183,0
184,1
185,2
186,0
187,0
188,0
189,0
190,0
191,0
192,1
193,2
194,0
195,0
196,1
197,0
198,0
199,0
200,1
201,0
202,0
203,1
204,1
205,0
206,0
207,0
208,1
209,0
210,0
211,0
212,1
213,0
214,0
215,1
216,0
217,0
218,0
219,0
220,0
221,1
222,0
223,0
224,0
225,0
226,0
227,0
228,0
229,0
230,0
231,0
232,0
233,0
234,0
235,0
236,0
237,0
238,0
239,0
240,0
241,0
242,0
243,0
244,0
245,0
246,0
247,1
248,1
249,1
250,0
251,0
252,0
253,0
254,0
255,0
256,0
257,0
258,0
259,0
260,0
261,0
262,0
263,0
264,0
265,0
266,0
267,0
268,0
269,0
270,0
271,0
272,0
273,0
274,0
275,0
276,0
277,0
278,0
279,0
280,0
281,0
282,0
283,0
284,0
285,0
286,0
287,0
288,0
289,0
290,0
291,0
292,0
293,0
294,0
295,0
296,0
297,0
298,0
299,0
300,0
301,0
302,0
303,0
304,0
305,0
306,0
307,0
308,0
309,0
310,0
311,0
312,0
313,0
314,0
315,0
316,0
317,0
318,0
319,0
320,0
321,1
322,0
323,0
324,0
325,0
326,1
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;結果&lt;/h4&gt;&lt;pre&gt;R_HOME:/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources
java.library.path:.:/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources/library/rJava/jri
a*x+b: a=-0.03550333158708252, b=8.498046248230285  (AIC 1712.5095155708004)
a*x^b: a=39.75900134122691, b=-0.5633965054825036  (AIC 1550.0470141120295)
a*b^x: a=21.2572188567732, b=0.9751177432706232  (AIC 1240.9971794263668)
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;参考&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://monge.tec.fukuoka-u.ac.jp/r_analysis/descriptive_correlation12.html&quot; target=&quot;_blank&quot;&gt;R言語で統計解析入門： 非線形回帰分析　A nonlinear regression analysis　梶山　喜一郎&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/3909578552774028573/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/3909578552774028573' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3909578552774028573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3909578552774028573'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/mathrrjava.html' title='math/Rでの関数モデルの当てはめをrJava経由でやってみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-4156470660432740573</id><published>2015-01-10T01:08:00.001+09:00</published><updated>2015-01-11T01:34:02.569+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="Homebrew"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="math/R"/><category scheme="http://www.blogger.com/atom/ns#" term="rJava"/><title type='text'>math/R 3.1.2 をJava 1.8.0_25 から使う (MacOSX 10.10.1 + Homebrew 0.9.5 + Eclipse 4.4.1)</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;b&gt;Homebrew/r-command&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;pre&gt;$ brew tap homebrew/science&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;$ brew install r&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;$ R CMD javareconf JAVA_CPPFLAGS=&quot;-I/System/Library/Frameworks/JavaVM.framework/Headers -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk&quot;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Eclipse&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Java Projectを作る&lt;/li&gt;
&lt;li&gt;BuildPathに追加する&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;pre&gt;/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources/library/rJava/jri/JRI.jar&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;コードを追加する&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;src/rJava/RSample.java&lt;/b&gt;&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/pgtwitter/203cd2c2ff78bcb4c565.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;一度RSampleをJavaApplicationとして実行してしまって，JavaApplicationの実行パネルを作ってしまう&lt;/li&gt;
&lt;li&gt;RunConfigureから上記で作成されたJavaApplicationのConfigureを選択し，以下を追加する&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Argumentsタブ &amp;gt; &quot;VM arguments:&quot;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;pre&gt;-Djava.library.path=.:/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources/library/rJava/jri&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Environmentタブ &amp;gt; &quot;Environment variables to set:&quot;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Variable: &lt;pre&gt;R_HOME&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Value: &lt;pre&gt;/usr/local/Cellar/r/3.1.2/R.framework/Versions/3.1/Resources&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;再度RSampleを実行．&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;h4&gt;参考&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qiita.com/Kentrow@github/items/cdc17f1c65f99a01396f&quot; target=&quot;_blank&quot;&gt;JavaからR言語を呼び出せる環境の構築 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/4156470660432740573/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/4156470660432740573' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4156470660432740573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4156470660432740573'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2015/01/mathr-312-java-18025-macosx-1010.html' title='math/R 3.1.2 をJava 1.8.0_25 から使う (MacOSX 10.10.1 + Homebrew 0.9.5 + Eclipse 4.4.1)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-6370643112310305399</id><published>2013-11-14T01:49:00.000+09:00</published><updated>2015-01-01T22:53:14.967+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="charset"/><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="i18n"/><category scheme="http://www.blogger.com/atom/ns#" term="iso-8859-1"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="utf-8"/><title type='text'>Grails 2.3.2 + GGTS 3.4 環境でgenerate-allしてできたi18nのlang=jaが，上手く表示できなかったのを対応してみたのでメモ</title><content type='html'>&lt;ul&gt;&lt;li&gt;Grails 2.3.3では文字化けしない．&lt;/li&gt;
&lt;/ul&gt;&lt;hr&gt;&lt;blockquote class=myInsert&gt;&lt;a href=&quot;http://edotprintstacktrace.tumblr.com/post/66839763910/grails-2-3-2-ggts-3-4&quot;&gt;tumblrにも書いたけど&lt;/a&gt;，こちらにもメモ．&lt;br /&gt;
&lt;/blockquote&gt;&lt;hr&gt;&lt;blockquote class=myInsert&gt;&lt;ul&gt;&lt;li&gt;動機: &lt;a href=&#39;http://www.ntts.co.jp/publish/column/tec/java_02/index.html&#39;&gt;こちら&lt;/a&gt;を参考に作業をしていたら，Grailsのバージョン違いのためか，i18nの関連で文字化けに出会って修正したのでメモ&lt;/li&gt;
&lt;li&gt;環境: Grails2.3.2+Eclipse4.3(Workspace内の文字コードはUTF-8)+GGTS3.4&lt;/li&gt;
&lt;li&gt;流れ?: &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Menu/File/New/Grails Project&lt;br /&gt;
&lt;blockquote  class=myInsert2&gt;Project Name: GrailsApp&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;ContextMenu/Grails Tools/Create Domain Class&lt;br /&gt;
&lt;blockquote  class=myInsert2&gt;name: FileEntry&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;編集 &#39;grails-app/domain/grailsapp/FileEntry.groovy&#39; &lt;br /&gt;
&lt;blockquote class=myInsert2&gt;参考: &#39; http://www.ntts.co.jp/publish/column/tec/java_02/index_03.html &#39;&lt;br /&gt;
&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;ContextMenu/Grails Tools/Open Grails Command Prompt&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;grails &gt; &lt;b&gt;generate-all grailsapp.FileEntry&lt;/b&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;ContextMenu/Grails Tools/Open Grails Command Prompt&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;grails &gt; &lt;b&gt;run-app&lt;/b&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;結果1: &#39; http://localhost:8080/GrailsApp/fileEntry/index?lang=jp &#39;にアクセス→文字化け&lt;ul&gt;&lt;li&gt;responseのheaderに&#39;Content-Type : text/html;charset=ISO-8859-1&#39;という指定がでている&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;対応:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;メソッドを一つ追加 &#39;grails-app/controllers/grailsapp/FileEntryController.groovy&#39;&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;package grailsapp
…
class FileEntryController {
 …
 &lt;b&gt;def beforeInterceptor = {
  response.setCharacterEncoding(&quot;UTF-8&quot;)
 }&lt;/b&gt;
 …
}
&lt;/pre&gt;&lt;/blockquote&gt;&lt;/il&gt; &lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;結果2: &#39; http://localhost:8080/GrailsApp/fileEntry/index?lang=jp &#39;にアクセス→改善&lt;ul&gt;&lt;li&gt;responseのheaderに&#39;Content-Type : text/html;charset=UTF-8&#39;で正しい指定になってる&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;アレコレやってみたが上手くいったのはこれ．&lt;br /&gt;
もっと賢い設定があるようにも思う．</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/6370643112310305399/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/6370643112310305399' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/6370643112310305399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/6370643112310305399'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/11/grails-232-ggts-34-generate.html' title='Grails 2.3.2 + GGTS 3.4 環境でgenerate-allしてできたi18nのlang=jaが，上手く表示できなかったのを対応してみたのでメモ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-4262082682968708709</id><published>2013-10-23T00:51:00.001+09:00</published><updated>2013-10-23T00:55:25.637+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="webfonts"/><category scheme="http://www.blogger.com/atom/ns#" term="WebGL"/><title type='text'>WebGLのTextureをCanvasに文字(Web Fonts)を書いて動的に作ってみる(jQuery/ThreeJS使用, Firefox 24.0/Safari 6.0.5で動作)</title><content type='html'>&lt;a href=&quot;http://edotprintstacktrace.tumblr.com/post/64776870012/webgl-texture-canvas-web&quot;&gt;tumblr&lt;/a&gt;にも書いたが，こっちにも書いておく．&lt;br /&gt;
&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2012/01/html5-canvas-2d-context-webgl.html&quot;&gt;以前にも試みた&lt;/a&gt;がリンク先の情報がなくなったりFirefoxでの動作に問題があったりしたので再挑戦．&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;img src=&quot;http://media.tumblr.com/5c70696912f40887142945c56ae2d481/tumblr_inline_mv2sqxtvD61qzus13.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;html&gt;
 &amp;lt;head&gt;
  &amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;charset=UTF-8&quot; /&gt;
  &amp;lt;link href=&#39;http://fonts.googleapis.com/css?family=Ewert&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39;&gt;
  &amp;lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;&amp;lt;/script&gt;
  &amp;lt;script src=&quot;http://mrdoob.github.com/three.js/build/three.min.js&quot; type=&quot;text/javascript&quot;&gt;&amp;lt;/script&gt;
  &amp;lt;script type=&quot;text/javascript&quot;&gt;
   var camera, scene, renderer, mesh, cube;

   function resize() {
    camera.aspect= window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize(window.innerWidth, window.innerHeight);
   }

   function animate() {
    requestAnimationFrame(animate);
    var time= Date.now() * 0.001;
    if(mesh) {
     mesh.rotation.x= -time;
     mesh.rotation.y= time;

     var imagedata= createImageData(&#39;Hello, World!! &#39; + (time % 1000).toFixed(2), {
      r: 0,
      g: 0,
      b: 255,
     }, 35);
     var texture= createTexture(imagedata);
     mesh.material.map= texture;
    }
    var time= Date.now() * 0.0005;
    if(cube) {
     cube.rotation.x= time;
     cube.rotation.y= time;
    }
    renderer.render(scene, camera);
   }

   function init() {
    camera= new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 2000);
    camera.position.z= 10;
    scene= new THREE.Scene();
    scene.add(camera);
    renderer= new THREE.WebGLRenderer({
     antialias: true
    });
    $(&#39;#endpoint&#39;).append($(renderer.domElement));

    cube= new THREE.Mesh(new THREE.CubeGeometry(1, 1, 1), new THREE.MeshBasicMaterial({
     color: 0xff0000,
     wireframe: true,
    }));
    scene.add(cube);
    cube.scale.x= 2;
    cube.scale.y= 2;
    cube.scale.z= 2;
    cube.position.z= -5;

    var geometry= new THREE.PlaneGeometry(1, 1);
    var material= new THREE.MeshBasicMaterial({
     transparent: true,
    });
    mesh= new THREE.Mesh(geometry, material);
    scene.add(mesh);
    mesh.scale.x= 5;
    mesh.scale.y= 5;
   }

   function createTexture(imagedata) {
    var w= imagedata.width;
    var h= imagedata.height;
    var size= w * h;
    var data= new Uint8Array(4 * size);
    for(var i= 0; i &amp;lt; size; i++) {
     data[i * 4 + 0]= imagedata.data[i * 4 + 0];
     data[i * 4 + 1]= imagedata.data[i * 4 + 1];
     data[i * 4 + 2]= imagedata.data[i * 4 + 2];
     data[i * 4 + 3]= imagedata.data[i * 4 + 3];
    }
    var texture= new THREE.DataTexture(data, w, h, THREE.RGBAFormat);
    texture.needsUpdate= true;
    return texture;
   }

   function createImageData(message, color, fontsize) {
    var c4tex= $(&#39;#hiddenCanvas&#39;).get(0);
    var w= $(c4tex).width();
    var h= $(c4tex).height();
    var ctx= c4tex.getContext(&#39;2d&#39;);

    ctx.clearRect(0, 0, w, h);
    ctx.fillStyle= &#39;rgba(&#39; + color.r + &#39;,&#39; + color.g + &#39;,&#39; + color.b + &#39;,.1)&#39;;
    ctx.fillRect(0, 0, w, h);
    ctx.fillStyle= &#39;rgba(&#39; + color.r + &#39;,&#39; + color.g + &#39;,&#39; + color.b + &#39;,1.0)&#39;;
    ctx.font= fontsize + &#39;px \&#39;Ewert\&#39;&#39;;
    ctx.fillText(message, (w - ctx.measureText(message).width) * .5, (h + fontsize) * .5);

    return ctx.getImageData(0, 0, w, h);
   }

   $(document).ready(function() {
    $(window).resize(function() {
     resize();
    });

    init();
    animate();
    resize();
   });
  &amp;lt;/script&gt;
 &amp;lt;/head&gt;
 &amp;lt;body style=&quot;margin: 0; padding: 0;&quot;&gt;
  &amp;lt;div id=&quot;endpoint&quot;&gt;&amp;lt;/div&gt;
  &amp;lt;canvas id=&quot;hiddenCanvas&quot; width=&quot;512&quot; height=&quot;512&quot; style=&quot;display: none;&quot;&gt;&amp;lt;/canvas&gt;
 &amp;lt;/body&gt;
&amp;lt;/html&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;ul&gt;&lt;li&gt;CanvasからtoDataURLメソッドを用いて，Data URI Schemeの形で得た値を返して，THREE.ImageUtils.loadTextureメソッドで生成しようとするとCORS(Cross-Origin Resource Sharing)的問題で引っかかる．&lt;/li&gt;
&lt;li&gt;また，Canvasの2DコンテクストからgetImageDataメソッドを用いて作ったImageData.dataを直接THREE.DataTexture.image.dataに突っ込んでも動作しなかった(私の間違いか，やはりCORS的なナニカか，わからないけど)．&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/4262082682968708709/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/4262082682968708709' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4262082682968708709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4262082682968708709'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/10/webgltexturecanvasweb.html' title='WebGLのTextureをCanvasに文字(Web Fonts)を書いて動的に作ってみる(jQuery/ThreeJS使用, Firefox 24.0/Safari 6.0.5で動作)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-4523844139038307395</id><published>2013-10-12T15:16:00.001+09:00</published><updated>2013-10-12T20:44:12.395+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache tomcat"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="sadi"/><title type='text'>先のPOST( SADI service の hello )をTomcatで動かしてみる</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;参考:&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/10/sadi-semantic-automated-discovery-and.html&quot;&gt;先のPOST&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;結果:&lt;/b&gt;&lt;br /&gt;
webapps以下にsaid-servicesを用意して配置&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjau6HBEk7FNWL3OeCvXqaNoLnVlGzeva4WBvOMwgd12oTzO588VHdZhkbs_0aWAEAztZbyw17uoFv2laG_8WtLVrIjeMVyRZ20UOqwqxggVbZDNnR8Cbic5fSK_OveUa1F1Qg0sMOfW2Ij/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-12+15.02.37.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjau6HBEk7FNWL3OeCvXqaNoLnVlGzeva4WBvOMwgd12oTzO588VHdZhkbs_0aWAEAztZbyw17uoFv2laG_8WtLVrIjeMVyRZ20UOqwqxggVbZDNnR8Cbic5fSK_OveUa1F1Qg0sMOfW2Ij/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-12+15.02.37.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;手順:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;${TOMCAT_HOME}/webappsに&#39;sadi-services&#39;ディレクトリを用意(${TOMCAT_WEBAPPS_SADI-SARVICES}とする)する&lt;/li&gt;
&lt;li&gt;Eclipseのsadi-servicesプロジェクト(${ECLIPSE_SADI-SARVICES}とする)から&lt;br /&gt;
&#39;said-services&#39;ディレクトリ(${TOMCAT_WEBAPPS_SADI-SARVICES})に以下を持ってくる&lt;br /&gt;
&lt;pre&gt;&lt;tt&gt;&lt;ul&gt;&lt;li&gt;${ECLIPSE_SADI-SARVICES}/src/main/webapp/index.jsp&lt;br /&gt;
→ ${TOMCAT_WEBAPPS_SADI-SARVICES}/index.jsp&lt;/li&gt;
&lt;li&gt;${ECLIPSE_SADI-SARVICES}/src/main/webapp/WEB-INF&lt;br /&gt;
→ ${TOMCAT_WEBAPPS_SADI-SARVICES}/WEB-INF&lt;/li&gt;
&lt;li&gt;${ECLIPSE_SADI-SARVICES}/target/classes&lt;br /&gt;
→ ${TOMCAT_WEBAPPS_SADI-SARVICES}/WEB-INF/classes&lt;/li&gt;
&lt;/ul&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&#39;sadi-services&#39;ディレクトリ(${TOMCAT_WEBAPPS_SADI-SARVICES})に&lt;br /&gt;
&#39;lib&#39;ディレクトリを用意( ${TOMCAT_WEBAPPS_SADI-SARVICES}/lib )する&lt;/li&gt;
&lt;li&gt;&#39;lib&#39;ディレクトリ( ${TOMCAT_WEBAPPS_SADI-SARVICES}/lib )に上記画像にある各jarを複写する&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;それぞれのjarは，先のPOSTを実行しているのであれば，$HOME/.m2/repositoryの下に入っています．&lt;/li&gt;
&lt;li&gt;commons-httpclient-*, xlightweb-*-taverna, xSocket-*は&#39;/sadi-services/hello?xsl&#39;にアクセスしなければ(Firefoxで開かなければ)いらない(かも)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;もっと簡単な手順:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Eclipseのsadi-servicesプロジェクト(${ECLIPSE_SADI-SARVICES}とする)に移る．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;$ cd ${ECLIPSE_SADI-SARVICES}&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;mavenのpackageコマンドを実行する&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;$ mvn package&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;targetディレクトリにプロジェクト名のwarができてる．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;$ ls target/sadi-services.war&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;このwarをTomcatのwebappsにおけばTomcatが展開するので，動かせる&lt;br /&gt;
(EclipseのJavaとTomcatのJavaのヴァージョンの差異に注意）&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;$ cp -p target/sadi-services.war ${TOMCAT_HOME}/webapps/&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;もっとちょっと簡単な手順:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Eclipseのメニューから&#39;Run &gt; Run Configureations …&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペインで&#39;Maven Build&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペイン，上部の左隅アイコン(&#39;New launch configuration&#39;)を押す&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペイン，&#39;Maven Build &gt; New_configuration (1)&#39;が追加されたので選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，右ペインを編集&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiONihqdQVk8VAGG7wSMEFIXVgWtSyBSaUn3dVa8p2JlVWGh4MbtVpRbVez-0CcmY4JvcVm4yR_kzwwIVBMplucAsy6C5hfyk9dXhks0wYLOyZvF-BatqkDkZJNU0weEYgfIotzeJY2HUDT/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-12+20.26.53.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiONihqdQVk8VAGG7wSMEFIXVgWtSyBSaUn3dVa8p2JlVWGh4MbtVpRbVez-0CcmY4JvcVm4yR_kzwwIVBMplucAsy6C5hfyk9dXhks0wYLOyZvF-BatqkDkZJNU0weEYgfIotzeJY2HUDT/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-12+20.26.53.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;&#39;Run&#39;を押す&lt;/li&gt;
&lt;li&gt;メニューから&#39;File &gt; Refresh&#39;を選択&lt;/li&gt;
&lt;li&gt;targetディレクトリにプロジェクト名のwar( &#39;sadi-services.war&#39; )ができてる．&lt;/li&gt;
&lt;li&gt;このwarをTomcatのwebappsにおけばTomcatが展開するので，動かせる&lt;br /&gt;
(EclipseのJavaとTomcatのJavaのヴァージョンの差異に注意）&lt;/li&gt;



&lt;/ol&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/4523844139038307395/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/4523844139038307395' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4523844139038307395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4523844139038307395'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/10/post-sadi-service-hello-tomcat.html' title='先のPOST( SADI service の hello )をTomcatで動かしてみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjau6HBEk7FNWL3OeCvXqaNoLnVlGzeva4WBvOMwgd12oTzO588VHdZhkbs_0aWAEAztZbyw17uoFv2laG_8WtLVrIjeMVyRZ20UOqwqxggVbZDNnR8Cbic5fSK_OveUa1F1Qg0sMOfW2Ij/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-12+15.02.37.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-3192327356445058873</id><published>2013-10-11T23:55:00.002+09:00</published><updated>2013-10-12T14:02:52.594+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="RDF"/><category scheme="http://www.blogger.com/atom/ns#" term="sadi"/><title type='text'>先のPOST( SADI service の hello )のクライアントをJavaで作ってみる</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;参考:&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/10/sadi-semantic-automated-discovery-and.html&quot;&gt;先のPOST&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;Build Path周り:&lt;/b&gt;&lt;br /&gt;
を，含むプロジェクト全体の図．&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;それぞれのjarは，先のPOSTを実行しているのであれば，$HOME/.m2/repositoryの下に入っています．&lt;/li&gt;
&lt;li&gt;面倒なら先のプロジェクトに居候してしまえばパスは通っているので簡単かもしれません．&lt;/li&gt;
&lt;li&gt;コードをパッと見るとsadi-clientとjenaがあればよさそうですが，依存関係の都合で色々いれなくてはなりませんでした．&lt;/li&gt;
&lt;/ul&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRVRvoBGW-KH-u_cg4_s34VQxLePcIgaRk-JA0ZEgFDVgFf0Wq-DquExXyN80YvpGK3MEHG2jGBwAxLFPw-xQV5DHo8mQt2Jip7s1ZfT2C0j8Ox2NCIEt37BEl4SGRlqBHLkFwyl88jrtZ/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+23.42.12.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRVRvoBGW-KH-u_cg4_s34VQxLePcIgaRk-JA0ZEgFDVgFf0Wq-DquExXyN80YvpGK3MEHG2jGBwAxLFPw-xQV5DHo8mQt2Jip7s1ZfT2C0j8Ox2NCIEt37BEl4SGRlqBHLkFwyl88jrtZ/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+23.42.12.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
（&quot;slf4j-api-*.jar&quot;だけでなく, &quot;slf4j-log4j12-*.jar&quot;が必要な場合もあるようです）&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;コード(Client.java):&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
package sample;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import ca.wilkinsonlab.sadi.SADIException;
import ca.wilkinsonlab.sadi.client.ServiceImpl;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;

public class Client {

 public static void main(String[] args) throws SADIException, IOException {
  Model inputModel = ModelFactory.createDefaultModel();
  if (true) {
   Resource type = ResourceFactory
     .createResource(&quot;http://sadiframework.org/examples/hello.owl#NamedIndividual&quot;);
   Resource s = inputModel
     .createResource(
       &quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;,
       type);
   s.addProperty(
     inputModel.createProperty(&quot;http://xmlns.com/foaf/0.1/name&quot;),
     &quot;Guy Incognito&quot;);
  } else {
   inputModel.read(new FileInputStream(new File(&quot;./hello-input.rdf&quot;)),
     &quot;&quot;, &quot;RDF/XML&quot;);
  }
  inputModel.write(System.out, &quot;RDF/XML&quot;);

  String serviceURI = &quot;http://localhost:8080/sadi-services/hello&quot;;
  ServiceImpl service = new ServiceImpl(serviceURI);

  Model outputModel = service.invokeServiceUnparsed(inputModel);
  outputModel.write(System.out, &quot;RDF/XML&quot;);
 }
}
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;結果:&lt;/b&gt;&lt;br /&gt;
当たり前だけど, service側が動いている前提です．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;http://xmlns.com/foaf/0.1/&quot;
    xmlns:j.1=&quot;http://sadiframework.org/examples/hello.owl#&quot; &gt; 
  &amp;lt;rdf:Description rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
    &amp;lt;j.0:name&gt;Guy Incognito&amp;lt;/j.0:name&gt;
    &amp;lt;rdf:type rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#NamedIndividual&quot;/&gt;
  &amp;lt;/rdf:Description&gt;
&amp;lt;/rdf:RDF&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;http://sadiframework.org/examples/hello.owl#&quot; &gt; 
  &amp;lt;rdf:Description rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
    &amp;lt;j.0:greeting&gt;Hello, Guy Incognito!&amp;lt;/j.0:greeting&gt;
    &amp;lt;rdf:type rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#GreetedIndividual&quot;/&gt;
  &amp;lt;/rdf:Description&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/3192327356445058873/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/3192327356445058873' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3192327356445058873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3192327356445058873'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/10/post-sadi-service-skeleton-hello-java.html' title='先のPOST( SADI service の hello )のクライアントをJavaで作ってみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRVRvoBGW-KH-u_cg4_s34VQxLePcIgaRk-JA0ZEgFDVgFf0Wq-DquExXyN80YvpGK3MEHG2jGBwAxLFPw-xQV5DHo8mQt2Jip7s1ZfT2C0j8Ox2NCIEt37BEl4SGRlqBHLkFwyl88jrtZ/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+23.42.12.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-4807233372038533241</id><published>2013-10-11T02:35:00.000+09:00</published><updated>2013-10-12T20:45:42.929+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="RDF"/><category scheme="http://www.blogger.com/atom/ns#" term="sadi"/><title type='text'>先のPOST( SADI service の hello )から真似っこだけで，数値2入力の足し算サービスを追加してみる</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;Owlを用意( ./sample.owl ):&lt;/b&gt;&lt;br /&gt;
てきとーに書いてみた(後の行程からみて間違ってるかも)．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:rdfs=&quot;http://www.w3.org/2000/01/rdf-schema#&quot;
    xmlns:owl=&quot;http://www.w3.org/2002/07/owl#&quot;&gt;

  &amp;lt;owl:Ontology rdf:about=&quot;&quot;&gt;
  &amp;lt;/owl:Ontology&gt;

  &amp;lt;owl:Class rdf:ID=&quot;inputValues&quot;&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;#number1&quot;/&gt;
        &amp;lt;owl:someValuesFrom rdf:resource=&quot;http://www.w3.org/2001/XMLSchema#int&quot;/&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;#number2&quot;/&gt;
        &amp;lt;owl:someValuesFrom rdf:resource=&quot;http://www.w3.org/2001/XMLSchema#int&quot;/&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
  &amp;lt;/owl:Class&gt;
  
  &amp;lt;owl:Class rdf:ID=&quot;outputValue&quot;&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;#result&quot;/&gt;
        &amp;lt;owl:someValuesFrom rdf:resource=&quot;http://www.w3.org/2001/XMLSchema#int&quot;/&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
  &amp;lt;/owl:Class&gt;

&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスのコードを生成する:&lt;/b&gt;&lt;br /&gt;
やり方は&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/10/sadi-semantic-automated-discovery-and.html&quot;&gt;先のPOST&lt;/a&gt;参照のこと．パラメータは以下の通り．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
serviceName : add
serviceClass: com.example.AddService
inputClass  : file:./sample.owl#inputValues
outputClass : file:./sample.owl#outputValue
contactEmail: your-email-address （そのままでも実行できる / エンドポイントにて連絡先として公開される）
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスのコードを修正・実装する:&lt;/b&gt;&lt;br /&gt;
AddService.java中の&#39;static final class Vocab {&#39;を修正する．&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&#39;public static final Resource int =&#39;と変数名が型になってしまったので&#39;int&#39;を&#39;intType&#39;と変更&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
 static final class Vocab {
  private static Model m_model = ModelFactory.createDefaultModel();

  public static final Property result = m_model
    .createProperty(&quot;file:./sample.owl#result&quot;);
  public static final Property number1 = m_model
    .createProperty(&quot;file:./sample.owl#number1&quot;);
  public static final Property number2 = m_model
    .createProperty(&quot;file:./sample.owl#number2&quot;);
  public static final Resource outputValue = m_model
    .createResource(&quot;file:./sample.owl#outputValue&quot;);
  public static final Resource &lt;b style=&#39;color:red;&#39;&gt;intType&lt;/b&gt; = m_model
    .createResource(&quot;http://www.w3.org/2001/XMLSchema#int&quot;);
  public static final Resource inputValues = m_model
    .createResource(&quot;file:./sample.owl#inputValues&quot;);
 }
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
AddService.java中の&#39;public void processInput(Resource input, Resource output)&#39;を実装する．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
 public void processInput(Resource input, Resource output) 
 {
  int n1 = input.getProperty(Vocab.number1).getInt();
  int n2 = input.getProperty(Vocab.number2).getInt();
  int result = n1 + n2;
  output.addProperty(Vocab.result, result + &quot;&quot;);
 }
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスを起動する:&lt;/b&gt;&lt;br /&gt;
やり方は&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/10/sadi-semantic-automated-discovery-and.html&quot;&gt;先のPOST&lt;/a&gt;参照のこと．&lt;br /&gt;
&lt;br /&gt;
Firefoxでアクセスすると( http://localhost:8080/sadi-services/add ):&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC59ZlTlFKPhZIaQFEwInnyiDfB7deJv7sY5Yd5kcdg3f01_tGTUgVPN3cufAjHSGiFPFo87K6t3jR-c88teWMYtpXS864L8GjtDcfez_Pe-Q2C-jrvtHt00BXyIScMBHNEbv9Nv18Hw_u/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+8.17.54.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC59ZlTlFKPhZIaQFEwInnyiDfB7deJv7sY5Yd5kcdg3f01_tGTUgVPN3cufAjHSGiFPFo87K6t3jR-c88teWMYtpXS864L8GjtDcfez_Pe-Q2C-jrvtHt00BXyIScMBHNEbv9Nv18Hw_u/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+8.17.54.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;curlを使ってアクセスしてみる:&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
$ cat add-input.rdf 
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:sample=&quot;file:./sample.owl#&quot;&gt;

 &amp;lt;sample:inputValues rdf:about=&quot;file:./sample.owl#1&quot;&gt;
  &amp;lt;sample:number1&gt;1000000000&amp;lt;/sample:number1&gt;
  &amp;lt;sample:number2&gt;20&amp;lt;/sample:number2&gt;
 &amp;lt;/sample:inputValues&gt;

&amp;lt;/rdf:RDF&gt;
$ curl -d &#39;@add-input.rdf&#39; http://localhost:8080/sadi-services/add
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;file:./sample.owl#&quot;&gt;
  &amp;lt;j.0:outputValue rdf:about=&quot;file:./sample.owl#1&quot;&gt;
    &amp;lt;j.0:result&gt;1000000020&amp;lt;/j.0:result&gt;
  &amp;lt;/j.0:outputValue&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/4807233372038533241/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/4807233372038533241' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4807233372038533241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/4807233372038533241'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/10/post-sadi-service-skeleton-2.html' title='先のPOST( SADI service の hello )から真似っこだけで，数値2入力の足し算サービスを追加してみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC59ZlTlFKPhZIaQFEwInnyiDfB7deJv7sY5Yd5kcdg3f01_tGTUgVPN3cufAjHSGiFPFo87K6t3jR-c88teWMYtpXS864L8GjtDcfez_Pe-Q2C-jrvtHt00BXyIScMBHNEbv9Nv18Hw_u/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+8.17.54.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1358264465619600259</id><published>2013-10-11T02:10:00.000+09:00</published><updated>2013-10-12T22:50:54.466+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="RDF"/><category scheme="http://www.blogger.com/atom/ns#" term="sadi"/><title type='text'>SADI (Semantic Automated Discovery and Integration) の service skeleton (Java) を試す(Eclipse+m2e環境で)</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;参考:&lt;/b&gt; &lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/sadi/wiki/BuildingServicesInJava#Generating_the_SADI_service_code&quot;&gt;Generating the SADI service code / BuildingServicesInJava / Tutorial: building a SADI service in Java.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;環境:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Mavenを使えるようにした(m2eプラグインだったと思う）Eclipse(Kepler/4.3)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://eclipse.org/m2e/&quot;&gt;m2e&lt;/a&gt;の&lt;a href=&quot;http://eclipse.org/m2e/download/&quot;&gt;update site情報&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;ダウンロード:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/sadi/downloads/list&quot;&gt;sadi-service-skeleton-*.zip&lt;/a&gt; (今回は sadi-service-skeleton-0.1.1-e3.7.zip )をダウンロード&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;プロジェクトを作る:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;メニューから&#39;File &gt; Import&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中から&#39;Existing Projects into Workspace&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中の&#39;Select archive file:&#39;にdownloadした&#39;sadi-service-skeleton-*.zip&#39;を設定&lt;/li&gt;
&lt;li&gt;ダイアログ中の&#39;Finish&#39;ボタンを押す．&lt;/li&gt;
&lt;/ol&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5IL2Q5HbL6jT830-CLXG1HX0c_jVLkT82EwwnxbGCLR9JcO9wSLAC9VCt0O9cqWbSjgZZkqpu86AJSoXQQeaGmqyZOPsofdNSL4QyjK7I9l9obSzGg1MfI3UVOfFKNTHdn7ILw68zjRkq/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.13.46.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5IL2Q5HbL6jT830-CLXG1HX0c_jVLkT82EwwnxbGCLR9JcO9wSLAC9VCt0O9cqWbSjgZZkqpu86AJSoXQQeaGmqyZOPsofdNSL4QyjK7I9l9obSzGg1MfI3UVOfFKNTHdn7ILw68zjRkq/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.13.46.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスのコードを生成する:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;メニューから&#39;Run &gt; Run Configurations …&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペインから&#39;Maven Build &gt; generate sadi service&#39;を選択&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOM3EeeDPjsA59Qe3S7oMG3QmioqX3vXxlS7O9Zb__-6S8DWzWqh4wbzazf8kG8j0rPDuxW8uPLTN-l6hbnUHTL6yrVjI6dw7yjF-cROWFFaOhXE5QDIQ8iCuvthkF3fmt6LQGaHRu_VdF/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.15.28.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOM3EeeDPjsA59Qe3S7oMG3QmioqX3vXxlS7O9Zb__-6S8DWzWqh4wbzazf8kG8j0rPDuxW8uPLTN-l6hbnUHTL6yrVjI6dw7yjF-cROWFFaOhXE5QDIQ8iCuvthkF3fmt6LQGaHRu_VdF/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.15.28.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ダイアログ中，右ペインのパラメタを修正&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
serviceName : hello
serviceClass: com.example.HelloWorldService
inputClass  : http://sadiframework.org/examples/hello.owl#NamedIndividual
outputClass : http://sadiframework.org/examples/hello.owl#GreetedIndividual
contactEmail: your-email-address （そのままでも実行はできる / エンドポイントにて連絡先として公開される）
（コピペ等で最初や最後に空白が入っていると失敗します）
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqWT9nvn1iA973WECIASinnzKFtLMmlgoQpAi1lFC_gMfJBgzqrif1X0ZCDRrP76AJMUZL5Mhd1KpdudBYK10tgSU_QW1yE5r0TKwkZyfaYNPeFyuJ7nGNM8kx-mw87cNAvpRBtkew0h0K/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.20.58.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqWT9nvn1iA973WECIASinnzKFtLMmlgoQpAi1lFC_gMfJBgzqrif1X0ZCDRrP76AJMUZL5Mhd1KpdudBYK10tgSU_QW1yE5r0TKwkZyfaYNPeFyuJ7nGNM8kx-mw87cNAvpRBtkew0h0K/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.20.58.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ダイアログ中の&#39;Run&#39;ボタンを押す&lt;/li&gt;
&lt;li&gt;生成ファイルを確認するためにメニューから&#39;File &gt; Refresh&#39;を選択&lt;/li&gt;
&lt;li&gt;ファイルを確認&lt;pre&gt;src/main/javaにcom.exampleパッケージのHelloWorldService.javaができている．
src/main/webapp/WEB-INF/web.xmlが作られ(無い場合)，hello Servletの設定が追加されている．
src/main/webapp/index.jspが作られ(無い場合)，“./hello”へのリンク(サービスのエンドポイント)が追加されている．
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG12SndKZwvSxME4uC-scuLcZ7FIyinGjWPGU4ckfq4XIYul20KLz2liW2G9MGqCbMeqXDPWu6LcG4akSMqCC4Zc9duAKxF7O74u4HV12baR1dH2bNLT2DiDrGCOBhsSzMGyr8pP_I7fn8/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.22.04.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG12SndKZwvSxME4uC-scuLcZ7FIyinGjWPGU4ckfq4XIYul20KLz2liW2G9MGqCbMeqXDPWu6LcG4akSMqCC4Zc9duAKxF7O74u4HV12baR1dH2bNLT2DiDrGCOBhsSzMGyr8pP_I7fn8/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.22.04.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ちなみに http://sadiframework.org/examples/hello.owl の中身はこんなの&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:rdfs=&quot;http://www.w3.org/2000/01/rdf-schema#&quot;
    xmlns:owl=&quot;http://www.w3.org/2002/07/owl#&quot;&gt;
    
  &amp;lt;owl:Ontology rdf:about=&quot;&quot;&gt;
  &amp;lt;/owl:Ontology&gt;
  
  &amp;lt;owl:DatatypeProperty rdf:about=&quot;http://xmlns.com/foaf/0.1/name&quot;&gt;
   &amp;lt;rdfs:isDefinedBy rdf:resource=&quot;http://xmlns.com/foaf/0.1/index.rdf&quot;/&gt;
  &amp;lt;/owl:DatatypeProperty&gt;
  
  &amp;lt;owl:DatatypeProperty rdf:about=&quot;#greeting&quot;/&gt;
  
  &amp;lt;owl:Class rdf:ID=&quot;NamedIndividual&quot;&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;http://xmlns.com/foaf/0.1/name&quot;/&gt;
        &amp;lt;owl:minCardinality rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#int&quot;&gt;1&amp;lt;/owl:minCardinality&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
  &amp;lt;/owl:Class&gt;
  
  &amp;lt;owl:Class rdf:ID=&quot;GreetedIndividual&quot;&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;#greeting&quot;/&gt;
        &amp;lt;owl:someValuesFrom rdf:resource=&quot;http://www.w3.org/2001/XMLSchema#string&quot;/&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
  &amp;lt;/owl:Class&gt;
  
  &amp;lt;owl:DatatypeProperty rdf:about=&quot;#lang&quot;/&gt;
  
  &amp;lt;owl:Class rdf:ID=&quot;SecondaryParameters&quot;&gt;
    &amp;lt;owl:equivalentClass&gt;
      &amp;lt;owl:Restriction&gt;
        &amp;lt;owl:onProperty rdf:resource=&quot;#lang&quot;/&gt;
        &amp;lt;owl:minCardinality rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#int&quot;&gt;1&amp;lt;/owl:minCardinality&gt;
      &amp;lt;/owl:Restriction&gt;
    &amp;lt;/owl:equivalentClass&gt;
  &amp;lt;/owl:Class&gt;
  
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスのコードを実装する:&lt;/b&gt;&lt;br /&gt;
HelloWorldService.java中の&#39;public void processInput(Resource input, Resource output)&#39;を実装する．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
 public void processInput(Resource input, Resource output) 
 {
  String name = input.getProperty(Vocab.name).getString(); 
  output.addProperty(Vocab.greeting, String.format(&quot;Hello, %s!&quot;, name));
 }
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;サービスを起動する:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;メニューから&#39;Run &gt; Run Configurations …&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペインから&#39;Maven Build &gt; run sadi services in Jetty&#39;を選択&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1sV7g3F5lGmlaPzO2xwBQSejdHemtQx2KToeBUltt-qMLBh8daIaK6P83nvrPHgtQ9SKcPlClvwfp4CcmTVSKstn6cdEuUylougAsm-APLhpbY5Rx1RPaPhOuicySudoehN67oKHXNEul/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.26.46.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1sV7g3F5lGmlaPzO2xwBQSejdHemtQx2KToeBUltt-qMLBh8daIaK6P83nvrPHgtQ9SKcPlClvwfp4CcmTVSKstn6cdEuUylougAsm-APLhpbY5Rx1RPaPhOuicySudoehN67oKHXNEul/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.26.46.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ダイアログ中，&#39;Run&#39;ボタンを押す&lt;/li&gt;
&lt;/ol&gt;これでサービスの開始．&lt;br /&gt;
&lt;br /&gt;
Firefoxでアクセスした場合( http://localhost:8080/sadi-services/hello ):&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg45X0fj3B319EfAU6VuGj-3nXHxJYvs2PNWuWb0WS9MEmIXfNFINTNMxqGbtAzoXvY1NeH4bvTud_rl3JBoPGflKWEuZ24yEXeNA9KH29ttdCCiPFskqMRBPObq-hqswu6sHKMx0zbuRoW/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+8.18.39.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg45X0fj3B319EfAU6VuGj-3nXHxJYvs2PNWuWb0WS9MEmIXfNFINTNMxqGbtAzoXvY1NeH4bvTud_rl3JBoPGflKWEuZ24yEXeNA9KH29ttdCCiPFskqMRBPObq-hqswu6sHKMx0zbuRoW/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+8.18.39.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Safariでアクセスした場合はRDFが返ってくる:&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&amp;lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;?xsl&quot; ?&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:mygrid=&quot;http://www.mygrid.org.uk/mygrid-moby-service#&quot;
    xmlns:j.0=&quot;http://protege.stanford.edu/plugins/owl/dc/protege-dc.owl#&quot;
    xmlns:rdfs=&quot;http://www.w3.org/2000/01/rdf-schema#&quot;&gt;
  &amp;lt;mygrid:serviceDescription rdf:about=&quot;&quot;&gt;
    &amp;lt;mygrid:hasOperation&gt;
      &amp;lt;mygrid:operation&gt;
        &amp;lt;mygrid:outputParameter&gt;
          &amp;lt;mygrid:parameter&gt;
            &amp;lt;mygrid:objectType rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#GreetedIndividual&quot;/&gt;
          &amp;lt;/mygrid:parameter&gt;
        &amp;lt;/mygrid:outputParameter&gt;
        &amp;lt;mygrid:inputParameter&gt;
          &amp;lt;mygrid:parameter&gt;
            &amp;lt;mygrid:objectType rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#NamedIndividual&quot;/&gt;
          &amp;lt;/mygrid:parameter&gt;
        &amp;lt;/mygrid:inputParameter&gt;
      &amp;lt;/mygrid:operation&gt;
    &amp;lt;/mygrid:hasOperation&gt;
    &amp;lt;mygrid:providedBy&gt;
      &amp;lt;mygrid:organisation&gt;
        &amp;lt;mygrid:authoritative rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#boolean&quot;
        &gt;false&amp;lt;/mygrid:authoritative&gt;
        &amp;lt;j.0:creator rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#string&quot;
        &gt;your-email-address&amp;lt;/j.0:creator&gt;
      &amp;lt;/mygrid:organisation&gt;
    &amp;lt;/mygrid:providedBy&gt;
    &amp;lt;rdfs:label rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#string&quot;
    &gt;hello&amp;lt;/rdfs:label&gt;
    &amp;lt;mygrid:hasServiceNameText rdf:datatype=&quot;http://www.w3.org/2001/XMLSchema#string&quot;
    &gt;hello&amp;lt;/mygrid:hasServiceNameText&gt;
  &amp;lt;/mygrid:serviceDescription&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;比較テストがあるのでやってみる:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;メニューから&#39;Run &gt; Run Configurations …&#39;を選択&lt;/li&gt;
&lt;li&gt;ダイアログ中，左ペインから&#39;Maven Build &gt; test sadi service&#39;を選択&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfKaCQNBhqX_lnGRTUC8lIruGMZH4eAu471XhscQOp2BQ_VA3m7ZfWdev6-XWdpPXuOnop_9P_Hw6DQiY-Pf-ycyc6rvSboB06nSIyvcPqbu-0z2_iEQ2M0ahSpUjOoFaqVDQtd1psesSm/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.28.13.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfKaCQNBhqX_lnGRTUC8lIruGMZH4eAu471XhscQOp2BQ_VA3m7ZfWdev6-XWdpPXuOnop_9P_Hw6DQiY-Pf-ycyc6rvSboB06nSIyvcPqbu-0z2_iEQ2M0ahSpUjOoFaqVDQtd1psesSm/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.28.13.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ダイアログ中，右ペインのパラメタを修正&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
serviceURL: http://localhost:8080/sadi-services/hello
input     : http://sadiframework.org/test/hello-input.rdf
expected  : http://sadiframework.org/test/hello-output.rdf (比較対象/予定されている出力(を,
Modle.write()で書き出し直したモノ)
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgFM8-poNKdENQoWkAmtQ2JyJV5QSxvgZVDh_M9ucG3HC9g-gn-3hX6zPHaBcdBEbSnh4zZDVWKLkrOeai_iECLwJr1BFTwPNF9tIBR4KZCVdomH-Vbmgo3zAfRmPnTa0km_6s-zZ5w4Gs/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+2.04.04.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgFM8-poNKdENQoWkAmtQ2JyJV5QSxvgZVDh_M9ucG3HC9g-gn-3hX6zPHaBcdBEbSnh4zZDVWKLkrOeai_iECLwJr1BFTwPNF9tIBR4KZCVdomH-Vbmgo3zAfRmPnTa0km_6s-zZ5w4Gs/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+2.04.04.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ちなみにhello-input.rdfの中身はこんなの&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;
    xmlns:hello=&quot;http://sadiframework.org/examples/hello.owl#&quot;&gt;

 &lt;span style=&#39;color:green;&#39;&gt;&amp;lt;hello:NamedIndividual&lt;/span&gt; &lt;span style=&#39;color:blue;&#39;&gt;rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&lt;/span&gt;&gt;
  &amp;lt;foaf:name&gt;Guy Incognito&amp;lt;/foaf:name&gt;
 &lt;span style=&#39;color:green;&#39;&gt;&amp;lt;/hello:NamedIndividual&gt;&lt;/span&gt;

&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
さらにちなむと，これをcom.hp.hpl.jena.rdf.model.Modelのreadメソッド読み込んでwriteメソッドで書き出すと以下のようになる．&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;
    xmlns:hello=&quot;http://sadiframework.org/examples/hello.owl#&quot; &gt; 
  &amp;lt;rdf:Description &lt;span style=&#39;color:blue;&#39;&gt;rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&lt;/span&gt;&gt;
    &amp;lt;foaf:name&gt;Guy Incognito&amp;lt;/foaf:name&gt;
    &lt;span style=&#39;color:green;&#39;&gt;&amp;lt;rdf:type rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#NamedIndividual&quot;/&gt;&lt;/span&gt;
  &amp;lt;/rdf:Description&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;ちなみにhello-output.rdfの中身はこんなの&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;http://sadiframework.org/examples/hello.owl#&quot; &gt; 
  &amp;lt;rdf:Description rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
    &amp;lt;j.0:greeting&gt;Hello, Guy Incognito!&amp;lt;/j.0:greeting&gt;
    &amp;lt;rdf:type rdf:resource=&quot;http://sadiframework.org/examples/hello.owl#GreetedIndividual&quot;/&gt;
  &amp;lt;/rdf:Description&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;ダイアログ中，&#39;Run&#39;ボタンを押す&lt;/li&gt;
&lt;/ol&gt;上手く行けばConsoleに&#39;[INFO] BUILD SUCCESS&#39;と出ている．&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;curlを使ってアクセスしてみる:&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
$ cat hello-input.rdf
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;
    xmlns:hello=&quot;http://sadiframework.org/examples/hello.owl#&quot;&gt;

 &amp;lt;hello:NamedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
  &amp;lt;foaf:name&gt;Guy Incognito&amp;lt;/foaf:name&gt;
 &amp;lt;/hello:NamedIndividual&gt;

&amp;lt;/rdf:RDF&gt;
$ curl -d &#39;@hello-input.rdf&#39; http://localhost:8080/sadi-services/hello
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;http://sadiframework.org/examples/hello.owl#&quot;&gt;
  &amp;lt;j.0:GreetedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
    &amp;lt;j.0:greeting&gt;Hello, Guy Incognito!&amp;lt;/j.0:greeting&gt;
  &amp;lt;/j.0:GreetedIndividual&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
2回分並べて入力してみる:&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;&lt;tt&gt;
$ cat hello-input2.rdf
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;
    xmlns:hello=&quot;http://sadiframework.org/examples/hello.owl#&quot;&gt;

 &amp;lt;hello:NamedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
  &amp;lt;foaf:name&gt;Guy Incognito&amp;lt;/foaf:name&gt;
 &amp;lt;/hello:NamedIndividual&gt;

 &amp;lt;hello:NamedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#2&quot;&gt;
  &amp;lt;foaf:name&gt;Gal Incognito&amp;lt;/foaf:name&gt;
 &amp;lt;/hello:NamedIndividual&gt;

&amp;lt;/rdf:RDF&gt;
$ curl -d &#39;@hello-input2.rdf&#39; http://localhost:8080/sadi-services/hello
&amp;lt;rdf:RDF
    xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
    xmlns:j.0=&quot;http://sadiframework.org/examples/hello.owl#&quot;&gt;
  &amp;lt;j.0:GreetedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#2&quot;&gt;
    &amp;lt;j.0:greeting&gt;Hello, Gal Incognito!&amp;lt;/j.0:greeting&gt;
  &amp;lt;/j.0:GreetedIndividual&gt;
  &amp;lt;j.0:GreetedIndividual rdf:about=&quot;http://sadiframework.org/examples/hello-input.rdf#1&quot;&gt;
    &amp;lt;j.0:greeting&gt;Hello, Guy Incognito!&amp;lt;/j.0:greeting&gt;
  &amp;lt;/j.0:GreetedIndividual&gt;
&amp;lt;/rdf:RDF&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1358264465619600259/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1358264465619600259' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1358264465619600259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1358264465619600259'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/10/sadi-semantic-automated-discovery-and.html' title='SADI (Semantic Automated Discovery and Integration) の service skeleton (Java) を試す(Eclipse+m2e環境で)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5IL2Q5HbL6jT830-CLXG1HX0c_jVLkT82EwwnxbGCLR9JcO9wSLAC9VCt0O9cqWbSjgZZkqpu86AJSoXQQeaGmqyZOPsofdNSL4QyjK7I9l9obSzGg1MfI3UVOfFKNTHdn7ILw68zjRkq/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-11+1.13.46.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-8265508538686929146</id><published>2013-09-25T12:04:00.002+09:00</published><updated>2013-09-25T12:06:53.159+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ColorSync"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><category scheme="http://www.blogger.com/atom/ns#" term="Preview"/><title type='text'>MacOSX プレビューにてJPEGをPDFにする際のファイルサイズが異様に大きいことへの対策</title><content type='html'>tumblrにも&lt;a href=&quot;http://edotprintstacktrace.tumblr.com/post/62211245401/macosx-jpeg-pdf&quot;&gt;書きました&lt;/a&gt;がこちらにもメモ．&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;基本&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;書き出し時にQuartzフィルタの&#39;Reduce File Size&#39;を指定してあげる．&lt;/li&gt;
&lt;li&gt;ただし&#39;プレビュー&#39;のフィルタではサンプリングが荒すぎて使い物にならないことがある．&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;対策&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;そこで&#39;ColorSync ユーティリティ&#39;を用いる．&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;準備&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;ColorSync ユーティリティを開く&lt;/li&gt;
&lt;li&gt;&#39;フィルタ&#39;タブを開く．&lt;/li&gt;
&lt;li&gt;&#39;Reduce File Size&#39;フィルタのコピーを作る(&#39;Reduce File Size のコピー&#39;)．&lt;/li&gt;
&lt;li&gt;&#39;イメージのサンプリング&#39;の最大, 最少を1024や2048等にする．&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img alt=&quot;image&quot; src=&quot;http://media.tumblr.com/05e3f8f344c3423254c3179506d528e9/tumblr_inline_mtnuir31Cg1qzus13.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;変換&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;対象JPGをColorSyncユーティリティで開く(プレビューではない)．&lt;/li&gt;
&lt;li&gt;&#39;ファイル/書き出す&amp;hellip;&#39;を選ぶ(保存ではない)．&lt;/li&gt;
&lt;li&gt;&#39;名前&#39;を任意に入力する．&lt;/li&gt;
&lt;li&gt;フォーマットをPDFにする．&lt;/li&gt;
&lt;li&gt;Quartz フィルタを上記作成のモノにする(&#39;Reduce File Size のコピー&#39;)&lt;/li&gt;
&lt;li&gt;&#39;保存&#39;を押す．&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img alt=&quot;image&quot; src=&quot;http://media.tumblr.com/2d4c4b08a16d1cff6c22c87541faff1e/tumblr_inline_mtnukwyyO81qzus13.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/8265508538686929146/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/8265508538686929146' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/8265508538686929146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/8265508538686929146'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/09/macosx-jpegpdf.html' title='MacOSX プレビューにてJPEGをPDFにする際のファイルサイズが異様に大きいことへの対策'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1643013409496863862</id><published>2013-09-18T22:36:00.000+09:00</published><updated>2013-09-18T22:39:50.855+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="applescript"/><title type='text'>AppleScript / ハンドメイドクッキーを自動で焼く</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;フト，思い立って試みた．&lt;/b&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;参考&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/zariganitosh/20120110/moving_mouse_technique&quot;&gt;あらゆる操作を実行可能マウスカーソルを動かす方法いろいろ - ザリガニが見ていた...。&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;b&gt;やったこと と　結果&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu6PDJKyHHhPRhPdcW41vxh0yIlGFuJShEgAT7rVE4cLlB8tclejnsh3d1T0XSMr8eL8Zwt47gKQxGKPLDSFHMbM-qyZXKcpE3kYGcSg_-GdJLMyP9t5zzbZBhFboedgJRNSFvOsq2hhXs/s1600/%E3%83%81%E3%83%BC%E3%83%88.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu6PDJKyHHhPRhPdcW41vxh0yIlGFuJShEgAT7rVE4cLlB8tclejnsh3d1T0XSMr8eL8Zwt47gKQxGKPLDSFHMbM-qyZXKcpE3kYGcSg_-GdJLMyP9t5zzbZBhFboedgJRNSFvOsq2hhXs/s320/%E3%83%81%E3%83%BC%E3%83%88.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;&lt;pre&gt;tell application &quot;System Events&quot;
 tell process &quot;Safari&quot;
  repeat with i from 1 to 100000
   click at {150, 400}
  end repeat
 end tell
end tell
&lt;/pre&gt;&lt;/blockquote&gt;参考にあるが，“目標の座標は、画面左上を原点（0, 0）とした絶対座標で指定する。”です．Window単位ではないので注意．&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=myInsert2&gt;システム環境設定で以下の設定をしないと有効にならないのでこちらも注意が必要&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUJe3PZYm__7NNq9hBkEW_1-amCiuProwjiU1Ub9jmMjueD-T-RoRKxPIYlKltZPZr3eVNAmm-cbcWPcIWoPDHSFsL88g1T1YuQDONyQALH9Nwq5SdZzwILo7uwmDsOHlxBtTwPvxHjh_M/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-09-18+21.33.21.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUJe3PZYm__7NNq9hBkEW_1-amCiuProwjiU1Ub9jmMjueD-T-RoRKxPIYlKltZPZr3eVNAmm-cbcWPcIWoPDHSFsL88g1T1YuQDONyQALH9Nwq5SdZzwILo7uwmDsOHlxBtTwPvxHjh_M/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-09-18+21.33.21.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1643013409496863862/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1643013409496863862' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1643013409496863862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1643013409496863862'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/09/applescript.html' title='AppleScript / ハンドメイドクッキーを自動で焼く'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu6PDJKyHHhPRhPdcW41vxh0yIlGFuJShEgAT7rVE4cLlB8tclejnsh3d1T0XSMr8eL8Zwt47gKQxGKPLDSFHMbM-qyZXKcpE3kYGcSg_-GdJLMyP9t5zzbZBhFboedgJRNSFvOsq2hhXs/s72-c/%E3%83%81%E3%83%BC%E3%83%88.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1381000007084154346</id><published>2013-06-13T22:28:00.001+09:00</published><updated>2013-06-14T21:35:16.171+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ADT7410"/><category scheme="http://www.blogger.com/atom/ns#" term="firmata"/><category scheme="http://www.blogger.com/atom/ns#" term="I2C"/><category scheme="http://www.blogger.com/atom/ns#" term="linda"/><category scheme="http://www.blogger.com/atom/ns#" term="MPL115A2"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="sysex"/><title type='text'>ruby gem &#39;aruduino_firmata&#39;のsysexを用いたI2C通信(温度センサと気圧センサ)でのlinda-arduino-sensor的なもの</title><content type='html'>&lt;blockquote class=myInsert&gt;2013/06/14-18:11JST u2sで負の値の求め方の間違いを修正(緑色)&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
気圧の値も妥当なものになった（と思う）．&lt;br /&gt;
&lt;/blockquote&gt;2013/06/14-13:30JST 返り値のバイト数が要求バイト数と合っていないことがあるのでその場合スキップするように修正(赤色)&lt;br /&gt;
&lt;/blockquote&gt;これまでの記事（&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/06/ruby-gem-arduinofirmata-sysex-adt7410.html&quot;&gt;APT7410&lt;/a&gt;と&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/06/ruby-gem-arduinofirmata-sysex-mpl115a2.html&quot;&gt;MPL115A2&lt;/a&gt;）でのコードを利用したlinda-arduino-sensor的なもの&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;pre&gt;#!/usr/bin/env ruby 
require &#39;rubygems&#39;
require &#39;sinatra/rocketio/linda/client&#39;
require &#39;arduino_firmata&#39;
$stdout.sync = true

url   = ENV[&quot;LINDA_BASE&quot;]  || ARGV.shift || &quot;http://localhost:5000&quot;
space = ENV[&quot;LINDA_SPACE&quot;] || &quot;test&quot;
linda = Sinatra::RocketIO::Linda::Client.new url
ts = linda.tuplespace[space]

linda.io.on :connect do  ## RocketIO&#39;s &quot;connect&quot; event
  puts &quot;connect!! &amp;lt;#{linda.io.session}&gt; (#{linda.io.type})&quot;
end

linda.io.on :disconnect do
  puts &quot;RocketIO disconnected..&quot;
end

STRING_DATA= 0x71
I2C_REQUEST= 0x76
I2C_REPLY= 0x77
I2C_CONFIG= 0x78

_WRITE= 0x00
_READ= 0x08

ADDRESS_ADT7410= 0x48
ADDRESS_MPL115A2= 0x60

#MPL115A2 coefficients
a0= b1= b2= c12= 0.0

def readByte(data, pos)
  return data[pos]+data[pos+1]*(1&amp;lt;&amp;lt;7)
end

def readData(msb, lsb)
  return (msb&amp;lt;&amp;lt;8)+lsb
end

def u2s(v)
  return (v&amp;lt;(1&amp;lt;&amp;lt;15)) ? v : &lt;span style=&quot;color:green;&quot;&gt;v-(1&amp;lt;&amp;lt;15)*2&lt;/span&gt;
end

def bytes2str(bytes)
  ret= &#39;&#39;
  bytes.each do |o|
    ret+= o.chr
  end
  return ret;
end

def decodeData(data)
  ret= {}
  ret[:address]= readByte(data, 0) if (data.length&gt;1)
  ret[:register]= readByte(data, 2) if (data.length&gt;3)
  ary= [];
  i= 4
  while i+1&amp;lt;data.length
    ary.push( readByte(data, i))
    i+= 2
  end
  ret[:data]= ary
  return ret;
end

arduino = ArduinoFirmata.connect ENV[&quot;ARDUINO&quot;], :nonblock_io =&gt; true

arduino.on :sysex do |command, data|
  #puts &quot;command : #{command}&quot;
  #puts &quot;data    : #{data.inspect}&quot;
  data= (command == STRING_DATA) ? bytes2str(data) : decodeData(data)
  if command == STRING_DATA
    p data
  elsif command == I2C_REPLY
    if data[:address] == ADDRESS_ADT7410
      &lt;span style=&#39;color:red&#39;&gt;if data[:data].length == 2&lt;/span&gt;
        tout= u2s(readData(data[:data][0], data[:data][1])) / (1&amp;lt;&amp;lt;7).to_f
        ts.write [&quot;sensor&quot;, &quot;temperature&quot;, tout]
      &lt;span style=&#39;color:red&#39;&gt;end&lt;/span&gt;
    elsif data[:address] == ADDRESS_MPL115A2
      if data[:register] == 0x04
        &lt;span style=&#39;color:red&#39;&gt;if data[:data].length == 8&lt;/span&gt;
          a0 = u2s(readData(data[:data][0], data[:data][1]))/(1&amp;lt;&amp;lt; 3).to_f
          b1 = u2s(readData(data[:data][2], data[:data][3]))/(1&amp;lt;&amp;lt;13).to_f
          b2 = u2s(readData(data[:data][4], data[:data][5]))/(1&amp;lt;&amp;lt;14).to_f
          c12= u2s(readData(data[:data][6], data[:data][7]))/(1&amp;lt;&amp;lt;24).to_f
        &lt;span style=&#39;color:red&#39;&gt;end&lt;/span&gt;
      elsif data[:register] == 0x00
        &lt;span style=&#39;color:red&#39;&gt;if data[:data].length == 4&lt;/span&gt;
          padc= readData(data[:data][0], data[:data][1])&gt;&gt;6
          tadc= readData(data[:data][2], data[:data][3])&gt;&gt;6
          pcomp= a0 + ( b1 + c12 * tadc ) * padc + b2 * tadc
          pout= pcomp * 650.0/1023.0 + 500.0
          ts.write [&quot;sensor&quot;, &quot;pressure&quot;, pout] if padc&gt;0
        &lt;span style=&#39;color:red&#39;&gt;end&lt;/span&gt;
      end
    end
  end
end

#i2c enable
arduino.sysex I2C_CONFIG, [0x00, 0x00]

#APT7410 16bit mode
arduino.sysex I2C_REQUEST, [ADDRESS_ADT7410, _WRITE, 0x03, 0x00, 0x00, 0x01]

#MPL115A2 coefficients
arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _READ, 0x04, 0x00, 0x08, 0x00]

loop do
  arduino.sysex I2C_REQUEST, [ADDRESS_ADT7410, _READ, 0x00, 0x00, 0x02, 0x00]

  arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _WRITE, 0x12, 0x00, 0x01, 0x00]
  sleep 0.02
  arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _READ, 0x00, 0x00, 0x04, 0x00]

  sleep 1
end
&lt;/pre&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1381000007084154346/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1381000007084154346' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1381000007084154346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1381000007084154346'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/i2clinda-arduino-sensor.html' title='ruby gem &#39;aruduino_firmata&#39;のsysexを用いたI2C通信(温度センサと気圧センサ)でのlinda-arduino-sensor的なもの'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-722725617331114714</id><published>2013-06-13T02:31:00.000+09:00</published><updated>2013-06-14T21:35:45.397+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="firmata"/><category scheme="http://www.blogger.com/atom/ns#" term="I2C"/><category scheme="http://www.blogger.com/atom/ns#" term="MPL115A2"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="sysex"/><title type='text'>ruby gem &#39;arduino_firmata&#39; の sysex を使ってMPL115A2使用の圧力モジュールから値を取得する</title><content type='html'>&lt;blockquote class=myInsert&gt;2013/06/14-18:11JST u2sで負の値の求め方の間違いを修正(緑色)&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
気圧の値も妥当なものになった（と思う）．&lt;br /&gt;
&lt;/blockquote&gt;2013/06/14-13:30JST 返り値のバイト数が要求バイト数と合っていないことがあるのでその場合スキップするように修正(青色)&lt;br /&gt;
2013/06/13-16:10JST ADT7410(温度)/&quot;arduino.sysex I2C_REQUEST, [ADDRESS_ADT7410, _WRITE, 0x03, 0x00, 0x00, 0x001]&quot;で16bit-modeで動くこともあるが, ケースによっては13bitのままだったりする．&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbZx6APl9vhEO4BpZxIiEfecF0CVl_OJgeeXi7IMTxcpRSJLnKKjPVEiXUHm3OnJ-4ag0jeCPGsTGt0uDiNXM3fSU-jOIF34-SLaeZVpfLn-rEKO54gmmn9g_3RjGVc8sDs_qbgtBJkh3/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+16.09.47.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbZx6APl9vhEO4BpZxIiEfecF0CVl_OJgeeXi7IMTxcpRSJLnKKjPVEiXUHm3OnJ-4ag0jeCPGsTGt0uDiNXM3fSU-jOIF34-SLaeZVpfLn-rEKO54gmmn9g_3RjGVc8sDs_qbgtBJkh3/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+16.09.47.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;0.1度の中に複数の計測点があるので16bit modeであることがわかる．&lt;/li&gt;
&lt;li&gt;気圧/MPL115A2側はパスコン入れたら安定した&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;2013/06/13-15:36JST ADT7410(温度)/16bit mode指定がやっぱり正しく動いてないので削除&lt;br /&gt;
2013/06/13-15:06JST ADT7410(温度)/16bit mode指定の間違いを訂正&lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote class=myInsert&gt;&lt;b&gt;結果&lt;/b&gt;:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGcRmlg6BxBxYFUmLssJ8zVnGpE0V_sNO3XeXkCRlEKcQXx3I91fZtepcWqUxx8o0SLoh2OfqljMae20aLFJ3L-Yt8wqrJPLthdvquOOZSXd-drd7UcUUkudTaFkuSuq8UXKFumC2Ao2Tp/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+3.52.22.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGcRmlg6BxBxYFUmLssJ8zVnGpE0V_sNO3XeXkCRlEKcQXx3I91fZtepcWqUxx8o0SLoh2OfqljMae20aLFJ3L-Yt8wqrJPLthdvquOOZSXd-drd7UcUUkudTaFkuSuq8UXKFumC2Ao2Tp/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+3.52.22.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
ブレッドボードをMBPの上からおろしたらみるみる温度が下がっていく図．&lt;br /&gt;
気圧が安定していない…やっぱりなにか間違っているのかもしれない．&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gI-06521/&quot;&gt;これ&lt;/a&gt;を使って，やってみた．のでメモ．&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;pre&gt;#!/usr/bin/env ruby -Ku
require &#39;rubygems&#39;
require &#39;arduino_firmata&#39;
$stdout.sync = true

STRING_DATA= 0x71
I2C_REQUEST= 0x76
I2C_REPLY= 0x77
I2C_CONFIG= 0x78

_WRITE= 0x00
_READ= 0x08

ADDRESS_ADT7410= 0x48
&lt;span style=&#39;color:red;&#39;&gt;ADDRESS_MPL115A2= 0x60&lt;/span&gt;

#MPL115A2 coefficients
a0= b1= b2= c12= 0.0

def readData(data, shift)
  msb= data[4+4*shift]+data[5+4*shift]*128
  lsb= data[6+4*shift]+data[7+4*shift]*128
  return (msb&amp;lt;&amp;lt;8)+lsb
end

def readDataS(data, shift)
  v= readData(data, shift)
  return (v&amp;lt;(1&amp;lt;&amp;lt;15)) ? v : &lt;span style=&quot;color:green;&quot;&gt;v-(1&amp;lt;&amp;lt;15)*2&lt;/span&gt;
end

def data2string(data)
  i=0
  msg= &#39;&#39;
  while i+1&amp;lt;data.length
    msg+= data[i].chr
    i+= 2
  end
  return msg;
end

arduino = ArduinoFirmata.connect ENV[&quot;ARDUINO&quot;], :nonblock_io =&gt; true

arduino.on :sysex do |command, data|
  puts &quot;command : #{command}&quot;
  puts &quot;data    : #{data.inspect}&quot;
  if command == I2C_REPLY
    if data[0] == ADDRESS_ADT7410
      &lt;span style=&#39;color:blue&#39;&gt;if data.length == 8&lt;/span&gt;
        tout= readDataS(data, 0)/(1&amp;lt;&amp;lt;7).to_f
        puts &quot;気温 #{tout} ℃&quot;
      &lt;span style=&#39;color:blue&#39;&gt;end&lt;/span&gt;
&lt;span style=&#39;color:red;&#39;&gt;    elsif data[0] == ADDRESS_MPL115A2
      if data[2] == 0x04
        &lt;span style=&#39;color:blue&#39;&gt;if data.length == 20&lt;/span&gt;
          a0 = readDataS(data, 0)/(1&amp;lt;&amp;lt;3).to_f
          b1 = readDataS(data, 1)/(1&amp;lt;&amp;lt;13).to_f
          b2 = readDataS(data, 2)/(1&amp;lt;&amp;lt;14).to_f
          c12= readDataS(data, 3)/(1&amp;lt;&amp;lt;24).to_f
        &lt;span style=&#39;color:blue&#39;&gt;end&lt;/span&gt;
      elsif data[2] == 0x00
        &lt;span style=&#39;color:blue&#39;&gt;if data.length == 12&lt;/span&gt;
          padc= readData(data, 0)&gt;&gt;6
          tadc= readData(data, 1)&gt;&gt;6
          pcomp= a0 + ( b1 + c12 * tadc ) * padc + b2 * tadc
          pout= pcomp * 650.0/1023.0 + 500.0
          puts &quot;気圧 #{pout} hPa&quot;
        &lt;span style=&#39;color:blue&#39;&gt;end&lt;/span&gt;
      end&lt;/span&gt;
    end
  else
    if command == STRING_DATA
      p data2string(data);
    end
  end
end

#i2c enable
arduino.sysex I2C_CONFIG, [0x00, 0x00]

&lt;span style=&#39;color:red;&#39;&gt;#MPL115A2 coefficients
arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _READ, 0x04, 0x00, 0x08, 0x00]&lt;/span&gt;

loop do
  arduino.sysex I2C_REQUEST, [ADDRESS_ADT7410, _READ, 0x00, 0x00, 0x02, 0x00]

&lt;span style=&#39;color:red;&#39;&gt;  arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _WRITE, 0x12, 0x00, 0x01, 0x00]
  sleep 0.02
  arduino.sysex I2C_REQUEST, [ADDRESS_MPL115A2, _READ, 0x00, 0x00, 0x04, 0x00]&lt;/span&gt;

  sleep 1
end
&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;前の記事の最後に書いた，「うまくいかない．」の原因は，1バイト(8ビット)の内容を送るのにも7bitの通信なので2バイト(7ビットのバイト+1ビットのバイト)送らないといけない(受信も)という点を全く理解していなかったのに挑んでいたのが原因.…だったと思っている（結局よくわかっていない）．&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/722725617331114714/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/722725617331114714' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/722725617331114714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/722725617331114714'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/ruby-gem-arduinofirmata-sysex-mpl115a2.html' title='ruby gem &#39;arduino_firmata&#39; の sysex を使ってMPL115A2使用の圧力モジュールから値を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRB0lMWnmGn0BVNjQ2kA9bT7ovFYDt58Bwin7YLB6NYDKKEShFbqNH7_Kkg9roPjw8w9sZeUlH6Qz266BT9i1R1Rkxu1szjFzT0SlcxbYYgCDMFA6rUQLlZjCcRNSCGO24dF4dICg5Fikg/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-14+18.17.45.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-3453043110977878392</id><published>2013-06-12T01:00:00.003+09:00</published><updated>2013-06-14T18:20:43.337+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ADT7410"/><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="firmata"/><category scheme="http://www.blogger.com/atom/ns#" term="I2C"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="sysex"/><title type='text'>ruby gem &#39;arduino_firmata&#39; の sysex を使ってADT7410使用の温度モジュールから値を取得する</title><content type='html'>&lt;blockquote class=myInsert&gt;2013/06/14-18:11JST u2sで負の値を求め方の間違いを修正(緑色)&lt;br /&gt;
2013/06/14-13:30JST 返り値のバイト数が要求バイト数と合っていないことがあるのでその場合スキップするように修正(青色)&lt;br /&gt;
2013/06/13-16:34JST &quot;arduino.sysex I2C_REQUEST, [ADDRESS_ADT7410, _WRITE, 0x03, 0x00, 0x00, 0x001]&quot;で16bit-modeで動くこともあるが, ケースによっては13bitのままだったりする．&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbZx6APl9vhEO4BpZxIiEfecF0CVl_OJgeeXi7IMTxcpRSJLnKKjPVEiXUHm3OnJ-4ag0jeCPGsTGt0uDiNXM3fSU-jOIF34-SLaeZVpfLn-rEKO54gmmn9g_3RjGVc8sDs_qbgtBJkh3/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+16.09.47.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbZx6APl9vhEO4BpZxIiEfecF0CVl_OJgeeXi7IMTxcpRSJLnKKjPVEiXUHm3OnJ-4ag0jeCPGsTGt0uDiNXM3fSU-jOIF34-SLaeZVpfLn-rEKO54gmmn9g_3RjGVc8sDs_qbgtBJkh3/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+16.09.47.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;0.1度の中に複数の計測点があるので16bit modeであることがわかる．&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;2013/06/13-15:36JST 16bit mode指定がやっぱり正しく動いてないので削除&lt;br /&gt;
2013/06/13-15:06JST 16bit mode指定の間違いを訂正&lt;br /&gt;
2013/06/13-01:53JST readDataの間違いを訂正(奇数バイトは128倍(8bit目?))&lt;br /&gt;
2013/06/12-23:27JST readDataの間違いを訂正(shiftの係数が2だった)&lt;br /&gt;
&lt;/blockquote&gt;&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gM-06675/&quot;&gt;これ&lt;/a&gt;を使って，やってみた．のでメモ．&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;&lt;pre&gt;#!/usr/bin/env ruby -Ku
require &#39;rubygems&#39;
require &#39;arduino_firmata&#39;
$stdout.sync = true

ADDRESS_ADT7410= 0x48
I2C_READ= 0x08

def readData(data, shift)
  msb= data[4+4*shift]+data[5+4*shift]*128
  lsb= data[6+4*shift]+data[7+4*shift]*128
  return (msb*256+lsb)
end

def readDataS(data, shift)
  v= readData(data, shift)
  return (v&amp;lt;(1&amp;lt;&amp;lt;15)) ? v : &lt;span style=&quot;color:green;&quot;&gt;v-(1&amp;lt;&amp;lt;15)*2&lt;/span&gt;
end

def data2string(data)
  i=0
  msg= &#39;&#39;
  while i+1&amp;lt;data.length
    msg+= data[i].chr
    i+= 2
  end
  return msg;
end

arduino = ArduinoFirmata.connect ENV[&quot;ARDUINO&quot;]&lt;span style=&#39;color:red&#39;&gt;, :nonblock_io =&gt; true&lt;/span&gt;
puts &quot;firmata version #{arduino.version}&quot;

arduino.on :sysex do |command, data|
  puts &quot;command : #{command}&quot;
  puts &quot;data    : #{data.inspect}&quot;
  if command == 0x77
    if data[0] == ADDRESS_ADT7410
      &lt;span style=&#39;color:blue&#39;&gt;if data.length == 8&lt;/span&gt;
        t= readDataS(data, 0) / (1&lt;&lt;7).to_f #デフォルトは13bit modeで下位三ビットが1固定で無効ですが割っちゃいます．
        puts &quot;#{t} [度]&quot;
      &lt;span style=&#39;color:blue&#39;&gt;end&lt;/span&gt;
    end
  else
    if command == 0x71
      p data2string(data);
    end
  end
end

#i2c enable
arduino.sysex 0x78, [0x00, 0x00]

loop do
  arduino.sysex 0x76, [ADDRESS_ADT7410, I2C_READ, 0x00, 0x00, 0x02, 0x00]
  sleep 1
end
&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;あまりスムースな振舞いでないので，どこか間違ってるのかもしれない．&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;→ &#39;nonblock_io&#39;を設定したら(赤色の部分)スムースになりました(2013/06/12 21:49 JST)&lt;br /&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gI-06521/&quot;&gt;MPL115A2&lt;/a&gt;も挑戦中ですが，普通にスケッチでWireを使い値を取得するとうまくいくのだけど，firmataでsysexだとwrite後のdelayの設定が悪いのか値がうまくとれない&lt;/li&gt;
&lt;li&gt;あと，「&lt;span style=&quot;background-color: whitesmoke; color: #333333; font-family: &#39;Helvetica Neue&#39;, Arial, &#39;Hiragino Kaku Gothic Pro&#39;, Meiryo, &#39;MS PGothic&#39;, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://twitter.com/p_g_/status/344135621478064128&quot;&gt;ruby arduino_firmata の動作 Arduino Duemilanova ATmega168 + IDE 1.0.3でのStandardFirmataの書き込みでは動作．それ以降のIDE 1.0.4, 1.0.5, 1.5.2 では動作しない．&lt;/a&gt;&lt;/span&gt;」「&lt;span style=&quot;background-color: whitesmoke; color: #333333; font-family: &#39;Helvetica Neue&#39;, Arial, &#39;Hiragino Kaku Gothic Pro&#39;, Meiryo, &#39;MS PGothic&#39;, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://twitter.com/p_g_/status/344135738218123264&quot;&gt;各IDE付属のStandardFirmataは全て同じコードであることは確認．&lt;/a&gt;&lt;/span&gt;」（私のケースだけかもしれませんが）．&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/3453043110977878392/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/3453043110977878392' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3453043110977878392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3453043110977878392'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/ruby-gem-arduinofirmata-sysex-adt7410.html' title='ruby gem &#39;arduino_firmata&#39; の sysex を使ってADT7410使用の温度モジュールから値を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbZx6APl9vhEO4BpZxIiEfecF0CVl_OJgeeXi7IMTxcpRSJLnKKjPVEiXUHm3OnJ-4ag0jeCPGsTGt0uDiNXM3fSU-jOIF34-SLaeZVpfLn-rEKO54gmmn9g_3RjGVc8sDs_qbgtBJkh3/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-13+16.09.47.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-7811355745547269405</id><published>2013-06-09T02:50:00.001+09:00</published><updated>2013-06-14T19:12:08.057+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google-blockly"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="linda"/><title type='text'>Blockly+linda.jsなこと(linda-arduino-sensorの値をとるコードを作成してみた)</title><content type='html'>(ブロックの表記は&#39;温度計の値を読む&#39;とかにして，内部でjsコードが正しくできあがるって方向に進めると良さげなんだろう．たぶん)&lt;br /&gt;
&lt;b&gt;Result:&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq7nJS93aQIaH7epkAObneHfplAEJl2wsTq7F5rSAs7e6K8WdcmqDsDQQxkICP3DOb4X0qbOswwhMVTTSRyCw6c6rMOzdji8bBsz4fR6alqyW2y0KYQe16Ql-QR19CMIONPwAebrKs5Mm4/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-09+2.10.24.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq7nJS93aQIaH7epkAObneHfplAEJl2wsTq7F5rSAs7e6K8WdcmqDsDQQxkICP3DOb4X0qbOswwhMVTTSRyCw6c6rMOzdji8bBsz4fR6alqyW2y0KYQe16Ql-QR19CMIONPwAebrKs5Mm4/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-09+2.10.24.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;lindaについての&lt;a href=&quot;http://shokai.org/blog/archives/7515&quot;&gt;@shokaiさんの記事&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/shokai/linda-arduino-sensor&quot;&gt;linda-arduino-sensor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&#39;linda.io.on&#39;関連を書いてないんだけど動いちゃった．&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;b&gt;How:&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;&lt;div&gt;&lt;b&gt;配置&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRU1pBoj4SnLTbUipIsS14RZHr1AgUYgUzi6FbXoHhi1iNEqwqVJfqY4AXXXm_812TIs-1c2Pg4CfvThZqueoSkt-U8A6PdHmVtMLowErSvJnYHRm8PriP1zWnPwb5XGI4MVaFisYFjG03/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-09+2.36.12.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRU1pBoj4SnLTbUipIsS14RZHr1AgUYgUzi6FbXoHhi1iNEqwqVJfqY4AXXXm_812TIs-1c2Pg4CfvThZqueoSkt-U8A6PdHmVtMLowErSvJnYHRm8PriP1zWnPwb5XGI4MVaFisYFjG03/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-09+2.36.12.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;1. blockly(-read-only)&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;&lt;pre&gt;svn checkout http://blockly.googlecode.com/svn/trunk/ blockly-read-only
&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;2. jquery.min.js &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;3. index.html&lt;/b&gt; (based on blockly-read-only/demos/generator/index.html)&lt;br /&gt;
&#39;rpi.local&#39;はl&lt;a href=&quot;https://github.com/shokai/linda-base&quot;&gt;inda-base&lt;/a&gt;が動いているマシン&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;&lt;pre&gt;&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
  &amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
  &amp;lt;title&amp;gt;blocky - linda&amp;lt;/title&amp;gt;
  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;blockly-read-only/blockly_compressed.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;blockly-read-only/en_compressed.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;blockly-read-only/javascript_compressed.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

&lt;span style=&quot;color: red;&quot;&gt;
  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;./language_linda.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;./language_utility.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src=&quot;./jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src=&quot;http://rpi.local:5000/rocketio/linda.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script&amp;gt;
   var linda= new Linda();
  &amp;lt;/script&amp;gt;
&lt;/span&gt;

  &amp;lt;style&amp;gt;
   body {
    background-color: white;
    font-family: sans-serif;
   }
   h1 {
    font-weight: normal;
    font-size: 140%;
   }
  &amp;lt;/style&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
  &amp;lt;p&amp;gt;
   &amp;lt;button onclick=&quot;showCode()&quot;&amp;gt;
    Show JavaScript
   &amp;lt;/button&amp;gt;
   &amp;lt;button onclick=&quot;runCode()&quot;&amp;gt;
    Run JavaScript
   &amp;lt;/button&amp;gt;
  &amp;lt;/p&amp;gt;

  &amp;lt;div id=&quot;blocklyDiv&quot; style=&quot;height: 480px; width: 600px;&quot;&amp;gt;&amp;lt;/div&amp;gt;

  &amp;lt;xml id=&quot;toolbox&quot; style=&quot;display: none&quot;&amp;gt;
   &amp;lt;category name=&quot;Control&quot;&amp;gt;
    &amp;lt;block type=&quot;controls_if&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;controls_repeat_ext&quot;&amp;gt;
     &amp;lt;value name=&quot;TIMES&quot;&amp;gt;
      &amp;lt;block type=&quot;math_number&quot;&amp;gt;
       &amp;lt;title name=&quot;NUM&quot;&amp;gt;10&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;controls_whileUntil&quot;&amp;gt;&amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;Logic&quot;&amp;gt;
    &amp;lt;block type=&quot;logic_compare&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;logic_operation&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;logic_negate&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;logic_boolean&quot;&amp;gt;&amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;Math&quot;&amp;gt;
    &amp;lt;block type=&quot;math_number&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;math_arithmetic&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;math_single&quot;&amp;gt;&amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;Text&quot;&amp;gt;
    &amp;lt;block type=&quot;text&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;text_length&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;text_print&quot;&amp;gt;&amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
&lt;span style=&quot;color: red;&quot;&gt;
   &amp;lt;category name=&quot;Variables&quot; custom=&quot;VARIABLE&quot;&amp;gt;&amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;List&quot;&amp;gt;
    &amp;lt;block type=&quot;lists_create_empty&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_create_with&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_repeat&quot;&amp;gt;
     &amp;lt;value name=&quot;NUM&quot;&amp;gt;
      &amp;lt;block type=&quot;math_number&quot;&amp;gt;
       &amp;lt;title name=&quot;NUM&quot;&amp;gt;5&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_length&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_isEmpty&quot;&amp;gt;&amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_indexOf&quot;&amp;gt;
     &amp;lt;value name=&quot;VALUE&quot;&amp;gt;
      &amp;lt;block type=&quot;variables_get&quot;&amp;gt;
       &amp;lt;title name=&quot;VAR&quot;&amp;gt;list&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_getIndex&quot;&amp;gt;
     &amp;lt;value name=&quot;VALUE&quot;&amp;gt;
      &amp;lt;block type=&quot;variables_get&quot;&amp;gt;
       &amp;lt;title name=&quot;VAR&quot;&amp;gt;list&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_setIndex&quot;&amp;gt;
     &amp;lt;value name=&quot;LIST&quot;&amp;gt;
      &amp;lt;block type=&quot;variables_get&quot;&amp;gt;
       &amp;lt;title name=&quot;VAR&quot;&amp;gt;list&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;lists_getSublist&quot;&amp;gt;
     &amp;lt;value name=&quot;LIST&quot;&amp;gt;
      &amp;lt;block type=&quot;variables_get&quot;&amp;gt;
       &amp;lt;title name=&quot;VAR&quot;&amp;gt;list&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;Linda&quot;&amp;gt;
    &amp;lt;block type=&quot;linda_createTupleSpace&quot;&amp;gt;
     &amp;lt;value name=&quot;TupleSpace&quot;&amp;gt;
      &amp;lt;block type=&quot;text&quot;&amp;gt;
       &amp;lt;title name=&quot;TEXT&quot;&amp;gt;myhome&amp;lt;/title&amp;gt;
      &amp;lt;/block&amp;gt;
     &amp;lt;/value&amp;gt;
    &amp;lt;/block&amp;gt;
    &amp;lt;block type=&quot;linda_watch&quot;&amp;gt;
     &amp;lt;title name=&quot;LIST&quot;&amp;gt;tuple&amp;lt;/title&amp;gt;
    &amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
   &amp;lt;category name=&quot;Utility&quot;&amp;gt;
    &amp;lt;block type=&quot;utility_log&quot;&amp;gt;&amp;lt;/block&amp;gt;
   &amp;lt;/category&amp;gt;
&lt;/span&gt;
  &amp;lt;/xml&amp;gt;

  &amp;lt;script&amp;gt;
   Blockly.inject(document.getElementById(&#39;blocklyDiv&#39;), {
    path: &#39;blockly-read-only/&#39;,
    toolbox: document.getElementById(&#39;toolbox&#39;)
   });

   function showCode() {
    // Generate JavaScript code and display it.
    Blockly.JavaScript.INFINITE_LOOP_TRAP= null;
    var code= Blockly.Generator.workspaceToCode(&#39;JavaScript&#39;);
    alert(code);
   }

   function runCode() {
    // Generate JavaScript code and run it.
    window.LoopTrap= 1000;
    Blockly.JavaScript.INFINITE_LOOP_TRAP= &#39;if (--window.LoopTrap == 0) throw &quot;Infinite loop.&quot;;\n&#39;;
    var code= Blockly.Generator.workspaceToCode(&#39;JavaScript&#39;);
    Blockly.JavaScript.INFINITE_LOOP_TRAP= null;
    try {
     eval(code);
    }
    catch (e) {
     alert(e);
    }
   }
  &amp;lt;/script&amp;gt;

 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;b&gt;4. language_linda.js&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;&lt;pre&gt;if(!Blockly.Language) {
    Blockly.Language= {};
}

Blockly.Language.linda_createTupleSpace= {
 category: &#39;Linda&#39;,
 helpUrl: &#39;&#39;,
 init: function() {
  this.setColour(110);
  this.setOutput(true);
  this.appendValueInput(&#39;TupleSpace&#39;).appendTitle(&#39;Create TupleSpace:&#39;)
  this.setPreviousStatement(false);
  this.setNextStatement(false);
  this.setTooltip(&#39;Create a TupleSpace.&#39;);
 }
};

Blockly.Language.linda_watch= {
 category: &#39;Linda&#39;,
 helpUrl: &#39;&#39;,
 init: function() {
  this.setColour(110);
  this.appendValueInput(&#39;TupleSpace&#39;).appendTitle(&#39;TupleSpace:&#39;);
  this.appendValueInput(&#39;Tuple&#39;).appendTitle(&#39;Watch Tuple:&#39;);
  this.appendDummyInput().appendTitle(&#39;Found Tuple:&#39;).appendTitle(new Blockly.FieldVariable(null), &#39;LIST&#39;);
  this.appendStatementInput(&#39;DO&#39;).appendTitle(&#39;Do&#39;);
  this.setPreviousStatement(true);
  this.setNextStatement(true);
  this.setTooltip(&#39;Watch the tuple in the tuplespace.&#39;);
 }
};

Blockly.JavaScript= Blockly.Generator.get(&#39;JavaScript&#39;);

Blockly.JavaScript.linda_createTupleSpace= function() {
 var _ts= Blockly.JavaScript.valueToCode(this, &#39;TupleSpace&#39;, Blockly.JavaScript.ORDER_NONE) || &#39;test&#39;;
 var code= &quot;new linda.TupleSpace(&quot; + _ts + &quot;)&quot;
 return [code, Blockly.JavaScript.ORDER_NONE];
};

Blockly.JavaScript.linda_watch= function() {
 var _ts= Blockly.JavaScript.valueToCode(this, &#39;TupleSpace&#39;, Blockly.JavaScript.ORDER_NONE) || &#39;ts&#39;;
 var _t= Blockly.JavaScript.valueToCode(this, &#39;Tuple&#39;, Blockly.JavaScript.ORDER_NONE) || &#39;[&quot;sensor&quot;]&#39;;
 var _l= Blockly.JavaScript.variableDB_.getName(this.getTitleValue(&#39;LIST&#39;), Blockly.Variables.NAME_TYPE) || &#39;list&#39;;
 var branch= Blockly.JavaScript.statementToCode(this, &#39;DO&#39;);
 var code= _ts + &quot;.watch(&quot; + _t + &quot;, function(&quot; + _l + &quot;){\n&quot;;
 code+= branch;
 code+= &quot;\n});\n&quot;;
 return [code, Blockly.JavaScript.ORDER_NONE];
}; 
&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;5. language_utility.js&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;&lt;pre&gt;if(!Blockly.Language) {
 Blockly.Language= {};
}

Blockly.Language.utility_log= {
 category: &#39;Linda&#39;,
 helpUrl: &#39;&#39;,
 init: function() {
  this.setColour(111);
  this.appendValueInput(&#39;Message&#39;).appendTitle(&#39;console.log:&#39;);
  this.setPreviousStatement(true);
  this.setNextStatement(true);
  this.setTooltip(&#39;console.log()&#39;);
 }
};

Blockly.JavaScript= Blockly.Generator.get(&#39;JavaScript&#39;);

Blockly.JavaScript.utility_log= function() {
 var _msg= Blockly.JavaScript.valueToCode(this, &#39;Message&#39;, Blockly.JavaScript.ORDER_NONE) || &#39;&#39;;
 var code= &quot;console.log(&quot; + _msg + &quot;)&quot;
 return code;
}; 
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/7811355745547269405/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/7811355745547269405' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/7811355745547269405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/7811355745547269405'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/blocklylindajslinda-arduino-sensor.html' title='Blockly+linda.jsなこと(linda-arduino-sensorの値をとるコードを作成してみた)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq7nJS93aQIaH7epkAObneHfplAEJl2wsTq7F5rSAs7e6K8WdcmqDsDQQxkICP3DOb4X0qbOswwhMVTTSRyCw6c6rMOzdji8bBsz4fR6alqyW2y0KYQe16Ql-QR19CMIONPwAebrKs5Mm4/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-09+2.10.24.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-3514885226550663476</id><published>2013-06-04T00:00:00.002+09:00</published><updated>2013-06-07T03:18:34.662+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linda"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>「現在の気温は23度です」を読み上げるまでのアレコレ</title><content type='html'>&lt;a href=&quot;http://edotprintstacktrace.blogspot.jp/2013/06/raspberry-pi-mincraft-pishokailinda.html&quot;&gt;lindaで遊んでいます&lt;/a&gt;．&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/shokai/linda-temperature-alert&quot;&gt;linda-temperature-alert&lt;/a&gt;で温度を&lt;a href=&quot;https://github.com/shokai/linda-mac-say&quot;&gt;linda-mac-say&lt;/a&gt;に読み上げさせると数字21が“にい・いち”のようにひとつずつ読み上げられてしまい，“にじゅういちど”とかにならないのが悲しかった．&lt;br /&gt;
&lt;br /&gt;
数字を漢数字にしてsaykanji記事(&lt;a href=&quot;http://d.hatena.ne.jp/zariganitosh/20090519/1242725122&quot;&gt;saykanjiコマンドを定義して漢字仮名混じり文を読み上げる - ザリガニが見ていた...。&lt;/a&gt;)のように&#39;mecab -O yomi&#39;すればいけるんじゃない？とか考えていろいろやりはじめた．その成果がこれ．
参考：&lt;a href=&quot;http://page.freett.com/elledia/tips/num2kanji.html&quot;&gt;漢数字に変換&lt;/a&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
n2k.rb
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;
&lt;pre&gt;#! /usr/bin/env ruby -Ku
# coding: utf-8
def num2kanji(val)
  kanji_str= &#39;:一二三四五六七八九&#39;.split(&#39;&#39;)
  keta_str = &#39;:十百千&#39;.split(&#39;&#39;)
  keta_str2= &#39;:万億兆京垓&#39;.split(&#39;&#39;)
  return &#39;零&#39; if (val==0)
  val= val.to_s.reverse.gsub(/(\d{4})/, &quot;\\1,&quot;).sub(/,$/, &quot;&quot;).split(/,/)
  i= 0;
  for val_item in val
    str= &#39;&#39;
    chars= val_item.split(&#39;&#39;)
    j= chars.length-1
    for char_item in chars.reverse
      str+= kanji_str[char_item.to_i] + keta_str[j]
      j= j-1
    end
    str = str.gsub(/:./,&#39;&#39;) + keta_str2[i]
    str= &#39;&#39; if (str.split(//u).length==1)
    val[i] = str.gsub(/:/,&#39;&#39;);
    val[i] = val[i].gsub(/一(百)|一(十)/, &quot;\\1\\2&quot;);
    i= i+1
  end
  return val.reverse.join(&#39;&#39;);
end
puts ARGV[0].gsub(/\d+/){ num2kanji($&amp;amp;.to_i) } if (ARGV[0] != nil)
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
でこれを
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
ruby n2k.rb 現在の気温は23度です|mecab -O yomi|say&lt;/blockquote&gt;
と読み出せばいいんじゃないか？と思った．
ただこれだと「気温は」の「は」が「ha」と発音されてしまう．
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
&lt;pre&gt;ruby n2k.rb 現在の気温は23度です|mecab -O yomi
ゲンザイノキオンハニジュウサンドデス&lt;/pre&gt;
&lt;/blockquote&gt;
調べてみるとこれを解決されている方がいた．
&lt;a href=&quot;http://denspe.blog84.fc2.com/blog-entry-170.html&quot;&gt;MeCab と KanateaTalk で漢字かな交じり文の読み上げ - 電脳スピーチ blog&lt;/a&gt;

mecabをportsで入れたのでdicrcは/opt/local/lib/mecab/dic/ipadic-utf8/dicrcにあった．
これに以下の三行を追加した．
&lt;br /&gt;
&lt;blockquote class=myInsert&gt;&lt;pre&gt;
node-format-talk = %pS%f[8]\s 
unk-format-talk = %M 
eos-format-talk  = \n&lt;/pre&gt;&lt;/blockquote&gt;
(ちなみにmecabで入れるとeucjpの辞書が入るので+utf8とかしていれないと色々困る）

これで「は」は「wa」と発音されることになる
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
&lt;pre&gt;ruby n2k.rb 現在の気温は23度です|mecab -O talk
ゲンザイ  ノ  キオン  ワ  ニ  ジュー  サン  ド  デス  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
で，ここまでやってフト，sayコマンドにKyokoさんがいたじゃないかと気がついた．&lt;br /&gt;
&lt;br /&gt;
すっかり忘れてました．&lt;br /&gt;
(いまでもデフォルトでは使えなかったと思う．Kyokoさんのインストールについてはこちらの記事が参考になるかと思う．&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://veadardiary.blog29.fc2.com/blog-entry-3854.html&quot;&gt;「Kyoko」さんに優しく警告してもらう方法 -  Macの手書き説明書&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
ということで，以下のようにlinda-mac-say.rbを改造してみた．&lt;br /&gt;
(英語を読ませようとした時にKyokoさんだと冠詞「a」が「エイ」となったりするので全角があるときだけKyokoさんに登場いただくことにした．)
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
&lt;pre&gt;#!/usr/bin/env ruby
require &#39;rubygems&#39;
require &#39;sinatra/rocketio/linda/client&#39;
$stdout.sync = true

class String
  def sanitize
    self.gsub(/[`&quot;&#39;\r\n;\|&amp;gt;&amp;lt;]/, &#39;&#39;).strip
  end
end

url =   ENV[&quot;LINDA_BASE&quot;]  || ARGV.shift || &quot;http://localhost:5000&quot;
space = ENV[&quot;LINDA_SPACE&quot;] || &quot;test&quot;
puts &quot;connecting.. #{url}&quot;
linda = Sinatra::RocketIO::Linda::Client.new url
ts = linda.tuplespace[space]

linda.io.on :connect do  ## RocketIO&#39;s &quot;connect&quot; event
  puts &quot;connect!! &amp;lt;#{linda.io.session}&amp;gt; (#{linda.io.type})&quot;
  ts.watch [&quot;say&quot;] do |tuple|
    p tuple
    if tuple.size == 2 or (tuple.size == 3 and tuple[2].kind_of? Hash)
      str = tuple[1].sanitize
      opts = tuple[2] ? tuple[2].map{|k,v| &quot;#{k} #{v}&quot;}.join(&#39; &#39;).sanitize : &quot;&quot;
      &lt;span style=&quot;color: red;&quot;&gt;vopt = (/[^ -~｡-ﾟ]/=~str)?&quot;-v Kyoko -r 300&quot;:&quot;-v Victoria -r 500&quot;
      if system &quot;say #{vopt} #{opts} \&quot;#{str}\&quot;&quot;&lt;/span&gt;
        ts.write [&quot;say&quot;, str, &quot;success&quot;]  # write response
      else
        ts.write [&quot;say&quot;, str, &quot;fail&quot;]  # write response
      end
    end
  end
end

linda.io.on :disconnect do
  puts &quot;RocketIO disconnected..&quot;
end

linda.wait
&lt;/pre&gt;
&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/3514885226550663476/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/3514885226550663476' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3514885226550663476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/3514885226550663476'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/23.html' title='「現在の気温は23度です」を読み上げるまでのアレコレ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-5009770970246583240</id><published>2013-06-01T16:00:00.000+09:00</published><updated>2013-06-07T03:18:16.371+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flot"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="linda"/><category scheme="http://www.blogger.com/atom/ns#" term="raspberry-pi"/><title type='text'>Raspberry Pi: Mincraft-Piも試し終わり，どうしようと思った所で@shokaiさんのLindaで遊び始めた．</title><content type='html'>タイトルの通り，&lt;a href=&quot;http://shokai.org/blog/archives/7515&quot;&gt;Linda&lt;/a&gt;をraspberry piに入れて遊んでます．&lt;a href=&quot;https://github.com/shokai/linda-arduino-sensor&quot;&gt;linda-arduino-sensor&lt;/a&gt;も動かしてるのでこいつを，&lt;a href=&quot;http://www.flotcharts.org/&quot;&gt;flot&lt;/a&gt;でグラフ化してみた．
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5yOppwTfU5j3GurvKM3VWwKsXwNb7yYpZlO4VXvNSu2j1uzVAcIDiC4qnQmECWBCu1rCtaf2v8L1kjjvUOz-FvPGxp1-0jpRZl0Zs279ryHwzhCaGU_qVLFjF1KkyZRCP5uhuVc8Ri-BB/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-01+15.44.51.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5yOppwTfU5j3GurvKM3VWwKsXwNb7yYpZlO4VXvNSu2j1uzVAcIDiC4qnQmECWBCu1rCtaf2v8L1kjjvUOz-FvPGxp1-0jpRZl0Zs279ryHwzhCaGU_qVLFjF1KkyZRCP5uhuVc8Ri-BB/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-01+15.44.51.png&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
(温度センサもCdSも安定してない…)&lt;/blockquote&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
(rpi.localはlinda-baseの動いてるraspberry piのこと.Lindaはクロスドメインをデフォルトでは許可してるのでこのコード自体はローカルファイルのfoobar.htmlでも動く)
&lt;br /&gt;
&lt;blockquote class=&quot;myInsert2&quot;&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
  &amp;lt;!-- http://jquery.com --&amp;gt;
  &amp;lt;script src=&quot;./jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  
  &amp;lt;!-- http://www.flotcharts.org --&amp;gt;
  &amp;lt;script src=&quot;./jquery.flot.min.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src=&quot;./jquery.flot.time.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
  
  &amp;lt;!-- https://github.com/shokai/linda-base --&amp;gt;
  &amp;lt;script src=&quot;http://&lt;span style=&quot;color: red;&quot;&gt;rpi.local&lt;/span&gt;:5000/rocketio/linda.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  
  &amp;lt;script&amp;gt;
   var space_name= &quot;myhome&quot;;
   var tuple= [&quot;sensor&quot;];
   var linda= new Linda();
   var ts= new linda.TupleSpace(space_name);
   var data= [];
   var data2= [];
   $(function() {
    //linda
    linda.io.on(&quot;connect&quot;, function() {
     ts.watch(tuple, function(_tuple) {
      log(_tuple)
     });
    });
    linda.io.on(&quot;disconnect&quot;, function() {
    });
    var log= function(msg) {
     if(msg[1] == &#39;light&#39;)
      data.push([(new Date()).getTime(), msg[2]]);
     else if(msg[1] == &#39;temperature&#39;)
      data2.push([(new Date()).getTime(), msg[2]]);
    }
    
    //flot
    var container= $(&quot;#placeholder&quot;);
    var maximum= container.outerWidth() / 2 || 300;
    function getData(_data) {
     while(_data.length &amp;gt; maximum) {
      _data= _data.slice(1);
     }
     return _data;
    }
    series= [{
     data: getData(data),
     label: &quot;light&quot;,
     lines: {
      fill: false,
     }
    }, {
     data: getData(data2),
     label: &quot;temp.&quot;,
     yaxis: 2,
     lines: {
      fill: false,
     }
    }];
    var plot= $.plot(container, series, {
     grid: {
      borderWidth: 1,
      minBorderMargin: 20,
      labelMargin: 10,
      backgroundColor: {
       colors: [&quot;#fff&quot;, &quot;#e4f4f4&quot;]
      },
      margin: {
       top: 8,
       bottom: 20,
       left: 20
      },
      markings: function(axes) {
       var markings= [];
       var xaxis= axes.xaxis;
       for(var x= Math.floor(xaxis.min); x &amp;lt; xaxis.max; x+= xaxis.tickSize * 2) {
        markings.push({
         xaxis: {
          from: x,
          to: x + xaxis.tickSize
         },
         color: &quot;rgba(232, 232, 255, 0.2)&quot;
        });
       }
       return markings;
      }
     },
     xaxis: {
      mode: &quot;time&quot;,
      timezone: &quot;browser&quot;,
      timeformat: &quot;%H:%M:%S&quot;,
      ticks: 8,
     },
     yaxes: [{
      tickFormatter: function(val, axis){return val.toFixed(1)},
     }, {
      tickFormatter: function(val, axis){return val.toFixed(1)},
     }],
     legend: {
      show: true,
      position: &quot;sw&quot;,
     }
    });
    setInterval(function updateSeries() {
     series[0].data= getData(data);
     series[1].data= getData(data2);
     plot.setData(series);
     plot.setupGrid();
     plot.draw();
    }, 1000);
   });
  &amp;lt;/script&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
  &amp;lt;div id=&quot;container&quot;&amp;gt;
   &amp;lt;div id=&quot;placeholder&quot; style=&quot;width:800px;height:300px;&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;myInsert&quot;&gt;
ちなみにsystem_timerはruby1.9.3でうまく入らなかったのでtwを使う上ではrubyは1.8系である必要があった(私だけかもしれないけど)．&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/5009770970246583240/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/5009770970246583240' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/5009770970246583240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/5009770970246583240'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2013/06/raspberry-pi-mincraft-pishokailinda.html' title='Raspberry Pi: Mincraft-Piも試し終わり，どうしようと思った所で@shokaiさんのLindaで遊び始めた．'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5yOppwTfU5j3GurvKM3VWwKsXwNb7yYpZlO4VXvNSu2j1uzVAcIDiC4qnQmECWBCu1rCtaf2v8L1kjjvUOz-FvPGxp1-0jpRZl0Zs279ryHwzhCaGU_qVLFjF1KkyZRCP5uhuVc8Ri-BB/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-06-01+15.44.51.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4629086917523851821.post-1771930895809258643</id><published>2012-10-06T15:35:00.001+09:00</published><updated>2012-10-06T15:42:55.661+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="graphviz"/><category scheme="http://www.blogger.com/atom/ns#" term="raptor2"/><category scheme="http://www.blogger.com/atom/ns#" term="RDF"/><title type='text'>&#39;rdf format&#39; to &#39;png image&#39;</title><content type='html'>&lt;blockquote class=myInsert&gt;&lt;b&gt;やり方&lt;/b&gt;&lt;br/&gt;
コード等はtumblrに&lt;a href=&quot;http://edotprintstacktrace.tumblr.com/post/32991892040/rdf-format-to-png-image&quot;&gt;書きました&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=myInsert&gt;&lt;b&gt;結果&lt;/b&gt;
&lt;pre class=myInsert2&gt;$ vi DescribingEricMiller.rdf&lt;/pre&gt;
&lt;blockquote class=myInsert2&gt;
&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
             xmlns:contact=&quot;http://www.w3.org/2000/10/swap/pim/contact#&quot;&amp;gt;

  &amp;lt;contact:Person rdf:about=&quot;http://www.w3.org/People/EM/contact#me&quot;&amp;gt;
    &amp;lt;contact:fullName&amp;gt;Eric Miller&amp;lt;/contact:fullName&amp;gt;
    &amp;lt;contact:mailbox rdf:resource=&quot;mailto:em@w3.org&quot;/&amp;gt;
    &amp;lt;contact:personalTitle&amp;gt;Dr.&amp;lt;/contact:personalTitle&amp;gt; 
  &amp;lt;/contact:Person&amp;gt;

&amp;lt;/rdf:RDF&amp;gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
reference: &#39;Example 1: RDF/XML Describing Eric Miller&#39; in &lt;a href=&quot;http://www.w3.org/TR/rdf-primer/#example1&quot;&gt;http://www.w3.org/TR/rdf-primer/#example1&lt;/a&gt;&lt;br /&gt;
&lt;pre class=myInsert2&gt;$ ./a.out DescribingEricMiller.rdf Eric.png&lt;/pre&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFKm7Hdx71sdNWI6tcyrzqkQj0SyORX_rXPOrenYJsNZV5Hqz0BeTE3y_ncStzfxOMzaNYKvDHwigiffevbnih2vEom4IuLYQnk57MRuOLCzLeVsuZxEvTiiFI-rbyLhf41hu4Om-eE3-4/s1600/Eric.png&quot; imageanchor=&quot;1&quot; style=&quot;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFKm7Hdx71sdNWI6tcyrzqkQj0SyORX_rXPOrenYJsNZV5Hqz0BeTE3y_ncStzfxOMzaNYKvDHwigiffevbnih2vEom4IuLYQnk57MRuOLCzLeVsuZxEvTiiFI-rbyLhf41hu4Om-eE3-4/s320/Eric.png&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;blockquote class=myInsert&gt;&lt;ul&gt;
&lt;li&gt;コード中の&quot;dot&quot;を変えればLayoutが変わります．&quot;circo&quot;とか?&lt;/li&gt;
&lt;li&gt;コード中の&quot;png&quot;を変えれば出力形式が変わります．&quot;svg&quot;とか?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://edotprintstacktrace.blogspot.com/feeds/1771930895809258643/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4629086917523851821/1771930895809258643' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1771930895809258643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4629086917523851821/posts/default/1771930895809258643'/><link rel='alternate' type='text/html' href='http://edotprintstacktrace.blogspot.com/2012/10/rdf-format-to-png-image.html' title='&#39;rdf format&#39; to &#39;png image&#39;'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFKm7Hdx71sdNWI6tcyrzqkQj0SyORX_rXPOrenYJsNZV5Hqz0BeTE3y_ncStzfxOMzaNYKvDHwigiffevbnih2vEom4IuLYQnk57MRuOLCzLeVsuZxEvTiiFI-rbyLhf41hu4Om-eE3-4/s72-c/Eric.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>