<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-7832341384774868997</id><updated>2024-11-01T16:50:42.381+09:00</updated><category term="Mac"/><category term="日常"/><category term="tips"/><category term="技術"/><category term="Software"/><category term="買い物"/><category term="Blog"/><category term="Gadget"/><category term="Web"/><category term="iPod"/><category term="Windows"/><category term="Music"/><category term="Linux"/><category term="VDM"/><category term="Wordpress"/><category term="iPhone"/><category term="モニター"/><category term="Firefox"/><category term="TeX"/><category term="Photo"/><category term="Blogger"/><category term="Bootcamp"/><category term="Java"/><category term="JavaScript"/><category term="子育て"/><category term="本"/><category term="食"/><category term="Programming"/><category term="Ruby"/><category term="Chef"/><category term="FON"/><category term="Gmail"/><category term="Google"/><category term="astah"/><category term="携帯"/><category term="旅行"/><category term="ETロボコン"/><category term="Sphinx"/><category term="Twitter"/><category term="Android"/><category term="Cordova"/><category term="Drupal"/><category term="Flickr"/><category term="Gradle"/><category term="Groovy"/><category term="Jenkins"/><category term="Jリーグ"/><category term="PHP"/><category term="Titanium"/><category term="XOOPS"/><title type="text">mas-lab.blog</title><subtitle type="html">"Less is more."</subtitle><link href="http://mas0061.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default?alt=atom&amp;redirect=false" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default?alt=atom&amp;start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>189</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3528053849417071131</id><published>2014-10-30T20:39:00.001+09:00</published><updated>2014-10-30T20:39:27.371+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gadget"/><category scheme="http://www.blogger.com/atom/ns#" term="モニター"/><title type="text">ナノブロック アンバサダーモニターで『まちと電車のある風景』を体験</title><content type="html">9ヶ月ぶりにブログ書く。ここしばらくは、技術ネタを&lt;a href="http://qiita.com/mas0061" target="_blank"&gt;Qiita&lt;/a&gt;にポストしてて、ブログは放置でした。&lt;br /&gt;
&lt;br /&gt;
で、今回は&lt;a href="https://form.ambassadors.jp/nanoblock/form/?id=nanoblockform" target="_blank"&gt;ナノブロックアンバサダープログラム&lt;/a&gt;の&lt;a href="http://www.diablock.co.jp/nanoblock/campaign_event/_1.php" target="_blank"&gt;モニター企画&lt;/a&gt;に当選して、ナノブロックで遊んだので感想等々を。&lt;br /&gt;
&lt;br /&gt;
今回いただいたのは、以下の商品。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.diablock.co.jp/nanoblock/catalog/nanogauge/_n700.php" target="_blank"&gt;ナノゲージ　トレインコレクション　N700系新幹線&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.diablock.co.jp/nanoblock/catalog/nanogauge/post_44.php" target="_blank"&gt;ナノゲージ　情景 　ビルセット&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.diablock.co.jp/nanoblock/catalog/nanogauge/post_45.php" target="_blank"&gt;ナノゲージ　情景　ストラクチャーベース&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
作ってく様子は、Twitterに随時ポストしてたので、そちらを紹介。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
当選した &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; 商品届いてた。こりゃー息子に取られそうだ。 &lt;a href="http://t.co/rf0ctPJeh2"&gt;pic.twitter.com/rf0ctPJeh2&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/525259969134727168"&gt;2014, 10月 23&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

最初にN700系を作り始めたんだけど、これが今回の中では最も難易度が高くて1時間かかった。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
たっぷり1時間近くかかって完成。さて、息子の手が届かない所へ飾ろう。 &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; &lt;a href="http://t.co/oTuWCDYdGp"&gt;pic.twitter.com/oTuWCDYdGp&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/525285790494896128"&gt;2014, 10月 23&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

次の日は、ビルセットにトライ。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
今日はこちらを作ってみる。 &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; &lt;a href="http://t.co/sYcTssmHNh"&gt;http://t.co/sYcTssmHNh&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/525609974916206593"&gt;2014, 10月 24&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

これも、なんだかんだ1時間近くかかった。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
ビルセット完成！ &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; &lt;a href="http://t.co/wZ3fBFUGXO"&gt;http://t.co/wZ3fBFUGXO&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/525627887995871232"&gt;2014, 10月 24&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

最後にストラクチャーベース。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
できた！ちょっと地味。 &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; &lt;a href="http://t.co/QQ3hv7pZSX"&gt;pic.twitter.com/QQ3hv7pZSX&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/527441592496295937"&gt;2014, 10月 29&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

今回のモニター品全てを並べるとこんな感じ。

&lt;br /&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;
そして、今回のモニター品全部。 &lt;a href="https://twitter.com/hashtag/%E3%83%8A%E3%83%8E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC?src=hash"&gt;#ナノブロックモニター&lt;/a&gt; &lt;a href="http://t.co/I5plVRJAJm"&gt;pic.twitter.com/I5plVRJAJm&lt;/a&gt;&lt;br /&gt;
— mas0061 (@mas0061) &lt;a href="https://twitter.com/mas0061/status/527441708368146434"&gt;2014, 10月 29&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

子供の頃から、レゴには慣れ親しんでて、ブロックで何か作るのは割りと好き。ナノブロック自体も、ディズニーランドに行った時に買ってみたりしてたので、触るのは初めてではなかった。&lt;br /&gt;
&lt;br /&gt;
今回3品作ってみて、小さいブロックで良く構成が考えられているなぁ、と。反面、オリジナルで何かを作るのが難しそうな印象。&lt;br /&gt;
&lt;br /&gt;
各商品で余りブロックが結構出るので、その気になったら何か作ってみたいな。あと、今回のN700系を走らせてみたい。</content><link href="http://mas0061.blogspot.com/2014/10/blog-post.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3528053849417071131" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3528053849417071131" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2014/10/blog-post.html" rel="alternate" title="ナノブロック アンバサダーモニターで『まちと電車のある風景』を体験" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-2542524497198924886</id><published>2014-01-27T21:29:00.000+09:00</published><updated>2014-01-27T21:31:05.285+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">SVGで画像内のデータをJavaScriptから操作する</title><content type="html">&lt;p&gt;最近、後輩の仕事に関する相談をプライベートで解決するようになってきた…。&lt;/p&gt;

&lt;p&gt;今回相談受けたのは、Webサイトに回路図のような画像を載せて、かつ図の中のデータをサーバ内のデータに応じて可変にしたいというもの。
元々は、それをHTMLでやりたい！と言っていたんだけど、さすがにその解決策は思いつかなくて、持ち帰り宿題化。&lt;/p&gt;

&lt;p&gt;結局、解決策として提示したのがタイトルにもあるSVGを使ったアプローチ。
別の解決策として、HTML 5のCanvasタグを使って、画像を描くってのもあったけど、
Canvasタグが良く分かってなかった＋SVGの方が目的には簡単だったので却下。&lt;/p&gt;

&lt;p&gt;やったことは、&lt;a href="http://www.inkscape.org/ja/"&gt;Inkscape&lt;/a&gt;でSVGファイルを作って、それをJavaScriptで操作すること。
SVGファイルを作るのにInkscapeを使ったのは、SVGの規格標準なファイルが作れることと、
Illustratorとは違ってフリーで使えたから。&lt;/p&gt;

&lt;h3&gt;MacにInkscapeをインストール&lt;/h3&gt;
&lt;p&gt;InkscapeはX11アプリなので、単純にダウンロードしてインストールじゃ動かない。
まずは、X11のインストールが必要。と言っても、昔はMac OS XにX11も含まれてたと思うけど、
今は含まれていないので&lt;a href="http://xquartz.macosforge.org/landing/"&gt;XQuartz&lt;/a&gt;をインストール。&lt;/p&gt;

&lt;p&gt;Xquartzは、&lt;a href="http://xquartz.macosforge.org/landing/"&gt;XQuartzのWebサイト&lt;/a&gt;からダウンロードしてきて
インストール。&lt;/p&gt;

&lt;p&gt;続いてInkscapeのインストールだけど、手順は&lt;a href="http://www.inkscape.org/ja/download/mac-os/"&gt;公式サイト&lt;/a&gt;が
詳しく書いているので割愛。&lt;/p&gt;

&lt;h3&gt;Inkscapeで画像を描く&lt;/h3&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ppyQtbNCvdKj9jtTISAjx_8cIv-6qeb7YP44LhH9OeXX0GQiMFqNwHShvrf89aEK3q_6LcRjof1wo-zhZzBr9h4C-zF6-rY50T3jnkoZKX_UHZbhIA8WFj9rCJZU7Tranrp6LEaBf-c/s1600/drawSvg.png" imageanchor="1" &gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ppyQtbNCvdKj9jtTISAjx_8cIv-6qeb7YP44LhH9OeXX0GQiMFqNwHShvrf89aEK3q_6LcRjof1wo-zhZzBr9h4C-zF6-rY50T3jnkoZKX_UHZbhIA8WFj9rCJZU7Tranrp6LEaBf-c/s320/drawSvg.png" /&gt;&lt;/a&gt;
&lt;p&gt;画像のように、ごくごく簡単な画像をInkscapeで描く。今回は、「80w」の部分を可変にするイメージ。&lt;/p&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAPRZvcdM_jXmF9HspYGtK1apCmKkoXcaPWaPDL5ghvDr-fDLwjyZYsQDJcKYOaKwGZkZrc3yYK8VGhGe_v8ScDuHghDDmfoSFIO08SXWg4tKY1EmNVkD8raP1NCZw43Y_iTi3bB9aIsE/s1600/putId.png" imageanchor="1" &gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAPRZvcdM_jXmF9HspYGtK1apCmKkoXcaPWaPDL5ghvDr-fDLwjyZYsQDJcKYOaKwGZkZrc3yYK8VGhGe_v8ScDuHghDDmfoSFIO08SXWg4tKY1EmNVkD8raP1NCZw43Y_iTi3bB9aIsE/s320/putId.png" /&gt;&lt;/a&gt;
&lt;p&gt;で、可変にしたい部分は、プロパティでIDを付与する。これは自動的にも付与されるんだけど、自分で付けた方がわかりやすいと思う。&lt;/p&gt;
&lt;p&gt;画像を描いたら、SVGファイルとして保存する。&lt;/p&gt;

&lt;h3&gt;JavaScriptから操作する&lt;/h3&gt;
&lt;p&gt;SVGファイルはXMLになっているので、テキストエディタで開いてHTMLへコピペする。&lt;/p&gt;
&lt;p&gt;今回は、以下のようなHTMLを用意した。テキストボックスに値を入れて、「書き換え」ボタンを押すと画像が変わる。&lt;/p&gt;
&lt;pre class="brush:html"&gt;
&lt;head&gt;
  &lt;meta charset="UTF-8" /&gt;
  &lt;title&gt;画像マッピングテスト&lt;/title&gt;
  &lt;script src="http://code.jquery.com/jquery-2.0.3.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div&gt;
    &lt;svg
       xmlns:dc="http://purl.org/dc/elements/1.1/"
       xmlns:cc="http://creativecommons.org/ns#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:svg="http://www.w3.org/2000/svg"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
       xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
       width="700"
       height="300"
       id="svg2"
       version="1.1"
       inkscape:version="0.48.2 r9819"
       sodipodi:docname="New document 1"&gt;
      &lt;defs
         id="defs4" /&gt;
      &lt;sodipodi:namedview
         id="base"
         pagecolor="#ffffff"
         bordercolor="#666666"
         borderopacity="1.0"
         inkscape:pageopacity="0.0"
         inkscape:pageshadow="2"
         inkscape:zoom="0.76508705"
         inkscape:cx="375"
         inkscape:cy="676.8449"
         inkscape:document-units="px"
         inkscape:current-layer="layer1"
         showgrid="false"
         inkscape:window-width="1256"
         inkscape:window-height="832"
         inkscape:window-x="40"
         inkscape:window-y="0"
         inkscape:window-maximized="0" /&gt;
      &lt;metadata
         id="metadata7"&gt;
        &lt;rdf:RDF&gt;
          &lt;cc:Work
             rdf:about=""&gt;
            &lt;dc:format&gt;image/svg+xml&lt;/dc:format&gt;
            &lt;dc:type
               rdf:resource="http://purl.org/dc/dcmitype/StillImage" /&gt;
            &lt;dc:title&gt;&lt;/dc:title&gt;
          &lt;/cc:Work&gt;
        &lt;/rdf:RDF&gt;
      &lt;/metadata&gt;
      &lt;g
         inkscape:label="Layer 1"
         inkscape:groupmode="layer"
         id="layer1"&gt;
        &lt;path
           sodipodi:type="arc"
           style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
           id="path2985"
           sodipodi:cx="71.233727"
           sodipodi:cy="54.436527"
           sodipodi:rx="11.109847"
           sodipodi:ry="11.109847"
           d="m 82.343574,54.436527 a 11.109847,11.109847 0 1 1 -22.219695,0 11.109847,11.109847 0 1 1 22.219695,0 z" /&gt;
        &lt;path
           transform="translate(139.19984,-0.65352156)"
           sodipodi:type="arc"
           style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
           id="path2985-3"
           sodipodi:cx="71.233727"
           sodipodi:cy="54.436527"
           sodipodi:rx="11.109847"
           sodipodi:ry="11.109847"
           d="m 82.343574,54.436527 a 11.109847,11.109847 0 1 1 -22.219695,0 11.109847,11.109847 0 1 1 22.219695,0 z" /&gt;
        &lt;path
           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
           d="m 82.343571,53.783005 c 115.019589,0 115.019589,0 115.019589,0 l 0,0 0,0 -1.30704,0"
           id="path3005"
           inkscape:connector-curvature="0" /&gt;
        &lt;text
           xml:space="preserve"
           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
           x="99.335106"
           y="98.222397"
           id="textW01"
           sodipodi:linespacing="125%"
           inkscape:label="#text3007"&gt;&lt;tspan
             sodipodi:role="line"
             id="tspan3009"
             x="99.335106"
             y="98.222397"&gt;80w&lt;/tspan&gt;&lt;/text&gt;
      &lt;/g&gt;
    &lt;/svg&gt;
  &lt;/div&gt;
  &lt;div&gt;
    ワット数を書き換える：&lt;input type="text" id="textW01edit"&gt;&lt;input type="submit" id="wButton" value="書き換え"&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/pre&gt;

&lt;p&gt;JavaScriptでこれを操作するのは、こんなコード。jQuery使ってる。&lt;/p&gt;
&lt;pre class="brush:javascript"&gt;
$(document).on("click", "#wButton", function() {
  console.log($("#textW01").text());
  $("#textW01").text($("#textW01edit").val());
});
&lt;/pre&gt;
&lt;p&gt;こんな感じで、結構簡単に画像とJavaScriptのコラボレーションができた。&lt;/p&gt;
&lt;p&gt;と、感動して後輩に伝えたら、上司に良くわからないものを使うな、と言われたらしい。
自分が知らないものを「良くわからないもの」で片付けるのは老害というのでは…。&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2014/01/svgjavascript.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/2542524497198924886" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/2542524497198924886" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2014/01/svgjavascript.html" rel="alternate" title="SVGで画像内のデータをJavaScriptから操作する" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ppyQtbNCvdKj9jtTISAjx_8cIv-6qeb7YP44LhH9OeXX0GQiMFqNwHShvrf89aEK3q_6LcRjof1wo-zhZzBr9h4C-zF6-rY50T3jnkoZKX_UHZbhIA8WFj9rCJZU7Tranrp6LEaBf-c/s72-c/drawSvg.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-8041520073786830495</id><published>2013-11-23T22:08:00.000+09:00</published><updated>2013-12-06T12:32:10.530+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Cordova"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><title type="text">Android SDKの場所を変えた時にCordovaプロジェクトで修正すべき所</title><content type="html">&lt;p&gt;結構なレアケースだと思うんだけど、少しハマったので記録。&lt;/p&gt;
&lt;p&gt;こんな条件の時に出会う。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cordova 3.xのプロジェクトでAndroidをプラットフォームとして追加している&lt;/li&gt;
&lt;li&gt;Cordovaプロジェクト作成後にAndroid SDKの場所を移動した&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
上記条件が揃うと、cordova buildが失敗するはず。build.xmlでSDKのbuild.xmlをimportできないって下のようなエラー。&lt;/p&gt;
&lt;blockquote&gt;
[Error: An error occurred while building the android project.Error executing "ant clean -f /path/to/project/platforms/android/build.xml": &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br&gt;BUILD FAILED&lt;/blockquote&gt;
&lt;p&gt;
原因は、platforms/android/local.propertiesにSDKの場所が書かれてるから。このファイルにある「sdk.dir」を移動したSDKの場所に書き換えればコンパイルできるはず。&lt;/p&gt;
&lt;p&gt;
今回、Android Studioに同梱されてるSDKをやめて、SDKのみをインストールし直したことからこんなことに…。&lt;/p&gt;
</content><link href="http://mas0061.blogspot.com/2013/11/android-sdkcordova.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8041520073786830495" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8041520073786830495" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/11/android-sdkcordova.html" rel="alternate" title="Android SDKの場所を変えた時にCordovaプロジェクトで修正すべき所" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3309876591414359222</id><published>2013-11-08T22:47:00.000+09:00</published><updated>2013-11-08T22:47:44.726+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type="text">Gradleでfile.encodingをセットする</title><content type="html">&lt;p&gt;続けて、超小ネタを投稿。&lt;/p&gt;
&lt;p&gt;Gradleでビルドしたjarに日本語クラス名のクラスがある時、そのクラスが見えない現象が発生。結局、jarをビルドした時のfile.encodingがMS932だったのが原因。&lt;/p&gt;
&lt;p&gt;解決方法である&lt;a href="http://hideoku.hatenablog.jp/entry/20121029/1351476635"&gt;この方法&lt;/a&gt;が効かなかったので、別の方法を取ることにした。この解決方法が効かなかったのは、GVMで入れたGradleだからかな？&lt;/p&gt;
&lt;p&gt;今回解決したのは、build.gradleに以下を入れる方法。&lt;/p&gt;
&lt;pre class="brush:java"&gt;
System.setProperty('file.encoding', 'UTF-8')
&lt;/pre&gt;
</content><link href="http://mas0061.blogspot.com/2013/11/gradlefileencoding.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3309876591414359222" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3309876591414359222" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/11/gradlefileencoding.html" rel="alternate" title="Gradleでfile.encodingをセットする" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-6061975975856589987</id><published>2013-11-08T22:40:00.000+09:00</published><updated>2013-11-08T22:40:53.894+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Proxy環境でJenkins回すために</title><content type="html">&lt;p&gt;久しぶりの投稿。最近は、JavaやらBRMSやらJavaScriptをよくやってます。&lt;/p&gt;

&lt;p&gt;今回は、今のプロジェクトで作っているものをJenkinsでビルド→テストしておこうと設定したので小ネタとして投稿。
こういうのは、プロジェクトの初期にやらないと泥沼になると &lt;a href="https://twitter.com/hideoku"&gt;@hideoku&lt;/a&gt; に聞いたので、
その教訓を活かしてプロジェクト初期の今のうちに設定。&lt;/p&gt;

&lt;p&gt;例によって、Proxy環境に若干苦しめられたけど、なんとか完了。
以下、やったこと。&lt;/p&gt;

&lt;h3&gt;Jenkinsをyumでインストール&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;/var/lib/jenkinsに入る&lt;/li&gt;
  &lt;li&gt;jenkinsユーザのホームディレクトリもここに&lt;/li&gt;
  &lt;li&gt;GradleプラグインもJenkinsのシステム設定からインストール&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Apacheと連携&lt;/h3&gt;
&lt;p&gt;Jenkinsが標準で使うポートをを他で使ってて、かつURLをhttp://server/jenkinsにしたかったので、/etc/sysconfig/jenkinsを編集&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
JENKINS_PORT="8084"
JENKINS_AJP_PORT="8010"
JENKINS_ARGS="--prefix=/jenkins"
&lt;/pre&gt;

&lt;h3&gt;AntとGradleをインストール&lt;/h3&gt;
&lt;p&gt;BRMS系のパッケージ作りはAntでのビルド、それを使う周辺はGradleでのビルドなので、両方ともインストール。&lt;/p&gt;
&lt;p&gt;Jenkinsのシステム設定を見ると、自動インストールできそうだったけど、JDK以外は自動インストールが上手く行かなかったので、手動でインストールすることに。&lt;/p&gt;
&lt;p&gt;と言っても、両方ともバイナリー版をダウンロードして、/usr/localにantとgradleとして置いて、/etc/profileに設定追加しただけ。&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
  export GRADLE_HOME=/usr/local/gradle
  export ANT_HOME=/usr/local/ant
  export PATH=$PATH:$GRADLE_HOME/bin:$ANT_HOME/bin
&lt;/pre&gt;

&lt;h3&gt;GradleのProxy設定&lt;/h3&gt;
&lt;p&gt;Gradleのビルド途中でdependency解決でインターネットに接続するけどProxy環境なので、/var/lib/jenkins/.gradle/gradle.propertiesを作成。&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
systemProp.http.proxyHost=proxy.jp
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=hoge
systemProp.http.proxyPassword=hogehoge
systemProp.http.nonProxyHosts=*.hoge.com|localhost
systemProp.https.proxyHost=proxy.jp
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=hoge
systemProp.https.proxyPassword=hogehoge
systemProp.https.nonProxyHosts=*.hoge.com|localhost
&lt;/pre&gt;

&lt;p&gt;と、まぁこんな感じでJenkins環境ができた。来週からジャンジャンJavaとルールとJUnitテスト書かねば。&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2013/11/proxyjenkins.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6061975975856589987" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6061975975856589987" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/11/proxyjenkins.html" rel="alternate" title="Proxy環境でJenkins回すために" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3921282234721351739</id><published>2013-06-11T22:25:00.000+09:00</published><updated>2013-06-11T22:25:15.940+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Titanium StudioをWindowsかつProxyの環境で使う時のTips</title><content type="html">&lt;p&gt;所用で、WindowsかつProxy環境にTitanium Studioをインストールしたらハマったのでメモ。&lt;/p&gt;

&lt;h3&gt;64bitのWindowsで動かない！&lt;/h3&gt;
&lt;p&gt;色々調べた結果、これは原因がよくわからず、対処方法だけ分かった。
対処方法は、JDK 6の32bit版をインストールして、TitaniumStudio.iniの9行目あたりに以下を書いておくこと。&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
-vm
C:\Program Files (x86)\Java\jdk1.6.0_45\bin\javaw.exe
&lt;/pre&gt;

&lt;h3&gt;Titanium Updatesできない！&lt;/h3&gt;
&lt;p&gt;次にハマったのは、Titanium Studio自体のインストールは問題なく完了するんだけど、
「Check for Titanium Updates」でSDKをアップデートした時の、ACSやらAlloyをnpmで
インストールする所で、下の画像みたいなエラーになる。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZMSoSq4yhLyply1J0743icR77WU7FKBPbPJnwn545f6GVNbyeceeL7dMCrdyF2ZosWSewMvUacXpq_P_5Mkqyvn6PxYXSsVGiujjWcxw6DuOgxwKmBwRY1Ly3-wnjJRVZr3mwk0p152M/s1600/WS0001.png" imageanchor="1" &gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZMSoSq4yhLyply1J0743icR77WU7FKBPbPJnwn545f6GVNbyeceeL7dMCrdyF2ZosWSewMvUacXpq_P_5Mkqyvn6PxYXSsVGiujjWcxw6DuOgxwKmBwRY1Ly3-wnjJRVZr3mwk0p152M/s320/WS0001.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;色々調べた結果、やっぱりいつも通りのProxyが原因だった。
原因は、npmがProxyを通れずにパッケージをインストールできないこと。&lt;/p&gt;

&lt;p&gt;なので、Titanium StudioがSDKをアップデートする前にNode.jsをインストールして、
npmにProxyを設定してやる。Node.jsのインストールは、&lt;a href="http://nodejs.org/"&gt;ここ&lt;/a&gt;からインストーラーを
ダウンロードしてインストールするだけなので割愛。npmのProxy設定は、以下をコマンドプロンプトで発行する。&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
% npm config set proxy http://ユーザ:パスワード@ProxyサーバURL:ポート/
&lt;/pre&gt;

&lt;p&gt;こうすると、~/.npmrcができてTitanium Studioもアップデートできるようになる。&lt;/p&gt;

&lt;h4&gt;参考&lt;/h4&gt;
&lt;blockquote&gt;
&lt;a href="http://sushichop.blogspot.jp/2013/01/npm-install.html"&gt;いつか見た惑星: プロキシ環境下でnpm installを実行する&lt;/a&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Kitchen Sinkがimportできない！&lt;/h3&gt;
&lt;p&gt;上のに加えて、TitaniumのサンプルであるKitchen Sinkをimportしようとすると、またエラー。
今度は、たぶんgit cloneする時のプロトコルがhttpsじゃなくてgitなのが原因。&lt;/p&gt;

&lt;p&gt;任意の場所で、&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
% git clone https://github.com/appcelerator/KitchenSink.git
&lt;/pre&gt;

&lt;p&gt;してやれば大丈夫。&lt;/p&gt;

&lt;p&gt;うーん…こんな限定的なノウハウ、誰かの役に立つかな？？？会社では役に立ったけど。&lt;/p&gt;
</content><link href="http://mas0061.blogspot.com/2013/06/titanium-studiowindowsproxytips.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3921282234721351739" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3921282234721351739" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/06/titanium-studiowindowsproxytips.html" rel="alternate" title="Titanium StudioをWindowsかつProxyの環境で使う時のTips" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZMSoSq4yhLyply1J0743icR77WU7FKBPbPJnwn545f6GVNbyeceeL7dMCrdyF2ZosWSewMvUacXpq_P_5Mkqyvn6PxYXSsVGiujjWcxw6DuOgxwKmBwRY1Ly3-wnjJRVZr3mwk0p152M/s72-c/WS0001.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-508232884962217380</id><published>2013-04-15T22:19:00.001+09:00</published><updated>2013-04-15T22:19:51.349+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chef"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Chefで試したレシピのイディオム的な何か</title><content type="html">&lt;p&gt;珍しくブログに連投。&lt;/p&gt;
&lt;p&gt;このWindows + Cygwin + Proxy環境でChefを試した時に書いたレシピの中から、
いくつかピックアップして掲載。もっと良い書き方があると思うんだけどなー。&lt;/p&gt;
&lt;p&gt;いずれの書き方も、Ubuntu 12.10への環境構築を前提にしての記述。&lt;/p&gt;

&lt;h2&gt;Proxy環境への適応&lt;/h2&gt;
&lt;p&gt;Proxy環境だと、色々事前にセットしないとネットワーク経由でのapt-getやらgitやらgemが使えない。
まずは、Proxy環境への適応。&lt;/p&gt;
&lt;h3&gt;attributes/default.rb&lt;/h3&gt;
&lt;p&gt;ProxyのURLを直接レシピに入れたくないので、以下のような内容をattributesとして設定しておく。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
default["private"]["proxy"] = "http://ユーザ名:パスワード@ProxyのURL:ポート番号/"
&lt;/pre&gt;
&lt;h3&gt;recipes/default.rb&lt;/h3&gt;
&lt;p&gt;その上でレシピに以下を入れる。やっていることは、/etc/profileにProxyの環境変数を追加。&lt;/p&gt;
&lt;p&gt;ちなみに、このレシピにはnot_ifを入れてあって、attributesにURLをセットしなければ、
このレシピは動作しない。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
# attirbutesに設定したProxyのURLを変数にセット
proxy = node['private']['proxy']

bash "proxy on profile" do
  not_if { proxy.empty? }
  code &lt;&lt;-EOC
    echo "export http_proxy=#{proxy}" &gt;&gt; /etc/profile
    echo "export https_proxy=#{proxy}" &gt;&gt; /etc/profile
    source /etc/profile
  EOC
end
&lt;/pre&gt;

&lt;h2&gt;認証が必要なGitリポジトリからclone&lt;/h2&gt;
&lt;p&gt;PublicなGitからcloneする分には、単にURLを入れれば良いが、認証の必要なPrivateリポジトリの場合は、
一工夫いる。また、Gitを使う場合は、GitにもProxy設定が必要。上のattributesを応用する。&lt;/p&gt;
&lt;h3&gt;attributes/default.rb&lt;/h3&gt;
&lt;pre class="brush:ruby"&gt;
default["private"]["gitUrl"] = "https://ユーザ名:パスワード@リポジトリURL"
&lt;/pre&gt;
&lt;h3&gt;recipes/default.rb&lt;/h3&gt;
&lt;pre class="brush:ruby"&gt;
bash "git proxy" do
  # 以下で使ってるproxyは、Proxy環境への適応で作った変数
  not_if { proxy.empty? }
  code &lt;&lt;-EOC
    git config --global http.proxy #{proxy}
  EOC
end

git "cloneするディレクトリをフルパス指定" do
  # ここでは、attributesを直接使ってる
  repository node[:private][:gitUrl]
  reference "master"
  action :checkout
end
&lt;/pre&gt;

&lt;h2&gt;その他気をつけること・ハマったこと&lt;/h2&gt;
&lt;h3&gt;not_ifの記述&lt;/h3&gt;
&lt;p&gt;not_ifをメソッド呼び出しだと思い込んだため、当初こんな書き方をしていた。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
not_if(条件)
&lt;/pre&gt;
&lt;p&gt;これ動作しない。以下のように書く。波括弧なことに注意する。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
not_if { 条件 }
&lt;/pre&gt;

&lt;h3&gt;リンクを作るlink Resource&lt;/h3&gt;
&lt;p&gt;シンボリックリンクやハードリンクを作るlink Resourceを使おうと思って、こんな書き方をしていた。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
link "/home/hoge" do
  to "/home/hoge/dotFiles/.zshrc"
end
&lt;/pre&gt;
&lt;p&gt;やろうとしていることは、lnコマンドのつもり。&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
ln -s /home/hoge/dotFiles/.zshrc .
&lt;/pre&gt;
&lt;p&gt;だが、これが動作しない。以下のように書く。ファイル名まで書くようにする。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
link "/home/hoge/.zshrc" do
  to "/home/hoge/dotFiles/.zshrc"
end
&lt;/pre&gt;
</content><link href="http://mas0061.blogspot.com/2013/04/chef.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/508232884962217380" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/508232884962217380" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/chef.html" rel="alternate" title="Chefで試したレシピのイディオム的な何か" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-6412760665525157850</id><published>2013-04-15T13:11:00.000+09:00</published><updated>2013-04-15T13:11:34.841+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sphinx"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><title type="text">【追記あり】SphinxのblockdiagでOSごとにフォント設定を変える方法</title><content type="html">&lt;p&gt;Sphinxで簡単なフローとかを書く時に&lt;a href="http://blockdiag.com/ja/blockdiag/"&gt;blockdiag&lt;/a&gt;を使うことがある。ただ、blockdiagは、フォント設定をしておかないとSphinxのビルド時にエラーになってしまう。&lt;/p&gt;
&lt;p&gt;しかも、フォントの設定はMac・Linux・Windowsでパスも使うフォントも違う。そこで、Sphinxのconf.pyを使って、OSごとにフォント設定を変える方法を紹介。&lt;/p&gt;

&lt;h2&gt;追記&lt;/h2&gt;
&lt;p&gt;この記事を公開後、Twitterで作者さんからもっと便利な対処方法を教えていただきました。そちらの方が便利なので、以下の方法をお勧めします。&lt;a href="https://twitter.com/tk0miya"&gt;@tk0miya&lt;/a&gt;さんありがとうございました！&lt;/p&gt;

&lt;pre class="brush:python"&gt;
blockdiag_fontpath = [
  'C:\WINDOWS\Fonts\MEIRYO.TTC',
  '/Users/mas/Library/Fonts/meiryo.ttc',
  '/etc/alternatives/fonts-japanese-gothic.ttf',
]
&lt;/pre&gt;
&lt;blockquote class="twitter-tweet" lang="ja"&gt;&lt;p&gt;blockdiag_fontpathは配列が指定できるので、分岐せずに全部指定するのがお勧めです。ファイルが見つからない場合はスキップします。 RT @&lt;a href="https://twitter.com/mas0061"&gt;mas0061&lt;/a&gt; ブログ書いた →SphinxのblockdiagでOSごとに… &lt;a href="http://t.co/37jTNFVpTU" title="http://goo.gl/fb/tpKhL"&gt;goo.gl/fb/tpKhL&lt;/a&gt;&lt;/p&gt;&amp;mdash; Takeshi KOMIYAさん (@tk0miya) &lt;a href="https://twitter.com/tk0miya/status/323612125090164737"&gt;2013年4月15日&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;h2&gt;追記前の元ネタ&lt;/h2&gt;
&lt;p&gt;といっても、割と単純な方法で、以下をconf.pyに入れるだけ。&lt;/p&gt;
&lt;pre class="brush:python"&gt;
import platform
〜中略〜
os_name = platform.system()
if os_name.startswith("CYGWIN"):
  blockdiag_fontpath = 'C:\WINDOWS\Fonts\MEIRYO.TTC'
elif os_name == "Darwin":
  blockdiag_fontpath = '/Library/Fonts/ヒラギノ角ゴ Pro W3.otf'
elif os_name == "Linux":
  blockdiag_fontpath = '/etc/alternatives/fonts-japanese-gothic.ttf'
else:
  sys.exit()
&lt;/pre&gt;
&lt;p&gt;ちなみに、UbuntuだとIPAフォントを入れる方法が一般的っぽいけど、デフォルトの日本語フォントで事足りてる。fontpathを/usr/share/fonts以下の方にしてないのは、シンボリックリンクだからかblockdiagがエラーになるから元ファイルを設定してる。&lt;/p&gt;
&lt;p&gt;今回紹介した方法とは別に、各OSの$HOME/.blockdiagrcにフォント設定を書く方法もある。でも、今のところblockdiagを常用してるわけじゃないので、この方法をしばらく使ってる。&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2013/04/sphinxblockdiagos.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6412760665525157850" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6412760665525157850" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/sphinxblockdiagos.html" rel="alternate" title="【追記あり】SphinxのblockdiagでOSごとにフォント設定を変える方法" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-6620598074906956309</id><published>2013-04-12T22:09:00.000+09:00</published><updated>2013-04-12T22:09:29.672+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chef"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Vagrant 1.1.xでGUIモードでVMを起動する方法</title><content type="html">&lt;p&gt;Ubuntuの開発環境を作っていて、tmuxを使いたいがためにGUIを使ってる。Chef使って自動化を試みる中で、VagrantはデフォルトでCUIで立ち上がってくるので、GUIで起動する方法を調べた。&lt;/p&gt;
&lt;p&gt;Vagrantの1.0.xと1.1.xでは、方法がちょっと違っているようで、ここに書いているのは1.1.xの起動方法。&lt;/p&gt;

&lt;p&gt;Vagrantfileに&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
config.vm.boot_mode = :gui
&lt;/pre&gt;
&lt;p&gt;を追加するとGUIになるのは、Vagrant 1.0.x。&lt;/p&gt;

&lt;p&gt;1.1.xでは、作られたVagrantfileの以下のコメントを外せば良い。
このまま起動すると、とりあえずVirtualBoxがGUIで起動する。&lt;/p&gt;
&lt;pre class="brush:ruby"&gt;
   config.vm.provider :virtualbox do |vb|
     # Don't boot with headless mode
     vb.gui = true
  
     # Use VBoxManage to customize the VM. For example to change memory:
     vb.customize ["modifyvm", :id, "--memory", "1024"]
   end
&lt;/pre&gt;
</content><link href="http://mas0061.blogspot.com/2013/04/vagrant-11xguivm.html#comment-form" rel="replies" title="2 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6620598074906956309" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6620598074906956309" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/vagrant-11xguivm.html" rel="alternate" title="Vagrant 1.1.xでGUIモードでVMを起動する方法" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-8962481561865038677</id><published>2013-04-12T21:45:00.000+09:00</published><updated>2013-11-17T06:51:13.582+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chef"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Windows + Cygwin + Proxy環境でChefにトライ</title><content type="html">&lt;p&gt;伊藤直也さんの&lt;a href="http://www.amazon.co.jp/gp/product/B00BSPH158/ref=as_li_ss_tl?ie=UTF8&amp;camp=247&amp;creative=7399&amp;creativeASIN=B00BSPH158&amp;linkCode=as2&amp;tag=mas0061-22"&gt;入門Chef Solo - Infrastructure as Code&lt;/a&gt;を購入したこともあって、Chefにトライした。最初は、第2章をMac＋Vagrantで試してみて、続いて&lt;a href="http://mas0061.blogspot.jp/2013/04/vmubuntu-1210.html"&gt;先日作ったUbuntuの開発環境&lt;/a&gt;を自動化してみようと思った。&lt;/p&gt;
&lt;p&gt;会社で始めたので、残念ながらProxyの環境。以下の参考URL通りに進めたんだけど、やっぱProxyあたりで一工夫必要だったので、ブログに残すことにした。&lt;/p&gt;
&lt;blockquote&gt;
参考：&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/thinkAmi/20130407/1365310673"&gt;Windows7上で Vagrant + Chef solo + knife-soloを使い、Ubuntu + ubuntu-desktopの環境を構築してみた - メモ的な思考的な&lt;/a&gt;
&lt;/blockquote&gt;

&lt;h2&gt;環境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Windows 7 Professional 64bit&lt;/li&gt;
&lt;li&gt;Cygwin 1.7&lt;/li&gt;
&lt;li&gt;認証Proxy必須…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;準備&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CygwinにOpenSSHをインストールしておく&lt;/li&gt;
&lt;li&gt;VirtualBoxインストール → インストーラーの通りに&lt;/li&gt;
&lt;li&gt;Vagrantインストール → インストーラーの通りに&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;chef, knife-soloインストール&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% gem install chef --no-ri --no-rdoc
% gem install knife-solo -v 0.3.0.pre2 --no-ri --no-rdoc
% knife configure
  →全てEnter、参考にあるffiのエラーは出なかった
&lt;/pre&gt;

&lt;h2&gt;Ubuntu 12.10 32bitをインストール&lt;/h2&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% vagrant box add Ubuntu12.10 http://files.vagrantup.com/precise32.box
% vagrant init Ubuntu12.10
&lt;/pre&gt;

&lt;h2&gt;knife&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% knife solo init chef-repo
% vi Vagrantfile
  → config.vm.network :private_network, ip: "192.168.33.10" をコメント外す
% vagrant up
&lt;/pre&gt;

&lt;p&gt;ここでVM側のProxyを設定＆chefをアップデート&lt;/p&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% vagrant ssh
--
$ vi /etc/environment
  http_proxy="http://user:password@hostname:port/"
  https_proxy="http://user:password@hostname:port/"
$ sudo vi /etc/wgetrc
  http_proxy=http://user:password@hostname:port/
  https_proxy=http://user:password@hostname:port/
  →ダブルコーテーション入れたらエラーになる
$ sudo gem update chef --http-proxy http://user:password@hostname:port/
$ exit
--
% cd chef-repo
% knife solo -V prepare vagrant@192.168.33.10
&lt;/pre&gt;

&lt;p&gt;VM側の/etc/wgetrcにProxyを書かないと以下のエラー&lt;br /&gt;
knife-soloのコードを追い掛け回してやっと判明&lt;/p&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
  Bootstrapping Chef...
  Enter the password for vagrant@192.168.33.10:
  --2013-04-10 08:23:17--  https://www.opscode.com/chef/install.sh
  Resolving www.opscode.com (www.opscode.com)... failed: Name or service not known.
  wget: unable to resolve host address `www.opscode.com'
&lt;/pre&gt;

&lt;pre class="brush:bash; auto-links: false;"&gt;
% vagrant halt
% knife cookbook create piyo -o cookbooks
% vi cookbooks/piyo/recipes/default.rb
  → 参考URL通りに記述
% vi ../Vagrantfile
  →いくつかコメントを外して実態に合わせて書き換える
   config.vm.provision :chef_solo do |chef|
     chef.cookbooks_path = "./chef-repo/cookbooks"
  #   chef.roles_path = "../my-recipes/roles"
  #   chef.data_bags_path = "../my-recipes/data_bags"
     chef.add_recipe "piyo"
  #   chef.add_role "web"
  #
  #   # You may also specify custom JSON attributes:
  #   chef.json = { :mysql_password =&gt; "foo" }
   end
% vi nodes/192.168.33.10.json
  {"run_list":["recipe[piyo]"]}
% vagrant up
  Bringing machine 'default' up with 'virtualbox' provider...
  [default] Setting the name of the VM...
  [default] Clearing any previously set forwarded ports...
  [default] Creating shared folders metadata...
  [default] Clearing any previously set network interfaces...
  [default] Preparing network interfaces based on configuration...
  [default] Forwarding ports...
  [default] -- 22 =&gt; 2222 (adapter 1)
  [default] Booting VM...
  [default] Waiting for VM to boot. This can take a few minutes.
  [default] VM booted and ready for use!
  [default] Configuring and enabling network interfaces...
  [default] Mounting shared folders...
  [default] -- /vagrant
  [default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
  [default] Running provisioner: VagrantPlugins::Chef::Provisioner::ChefSolo...
  Generating chef JSON and uploading...
  Running chef-solo...
  stdin: is not a tty
  [2013-04-11T02:00:37+00:00] INFO: *** Chef 11.4.0 ***
  [2013-04-11T02:00:39+00:00] INFO: Setting the run_list to ["recipe[piyo]"] from JSON
  [2013-04-11T02:00:39+00:00] INFO: Run List is [recipe[piyo]]
  [2013-04-11T02:00:39+00:00] INFO: Run List expands to [piyo]
  [2013-04-11T02:00:39+00:00] INFO: Starting Chef Run for precise32
  [2013-04-11T02:00:39+00:00] INFO: Running start handlers
  [2013-04-11T02:00:39+00:00] INFO: Start handlers complete.
  [2013-04-11T02:00:39+00:00] INFO: Processing execute[update package index] action run (piyo::default line 9)
  [2013-04-11T02:00:58+00:00] INFO: execute[update package index] ran successfully
  [2013-04-11T02:00:58+00:00] INFO: Processing execute[update package index] action nothing (piyo::default line 9)
  [2013-04-11T02:00:58+00:00] INFO: Processing log[done update] action write (piyo::default line 15)
  [2013-04-11T02:00:58+00:00] INFO: done update
  [2013-04-11T02:00:58+00:00] INFO: Processing package[ubuntu-desktop] action install (piyo::default line 17)
  [2013-04-11T02:33:14+00:00] INFO: Processing log[done install] action write (piyo::default line 21)
  [2013-04-11T02:33:14+00:00] INFO: done install
  [2013-04-11T02:33:14+00:00] INFO: Chef Run complete in 1954.115293972 seconds
  [2013-04-11T02:33:14+00:00] INFO: Running report handlers
  [2013-04-11T02:33:14+00:00] INFO: Report handlers complete
% vagrant halt
% vagrant up
&lt;/pre&gt;

&lt;blockquote&gt;
参考：&lt;br /&gt;
&lt;a href="http://qiita.com/items/aac33218f8e5a7aff828"&gt;Chefのプロキシ設定 #chef - Qiita&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;↓この本は良かった。Chefを始めてみるのに最適。ユースケースごとに解説されてるから、始めた段階でのリファレンスとしても良かった。&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=mas0061-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B00BSPH158" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;番外編：Ubuntuでリトライ&lt;/h2&gt;
&lt;p&gt;WindowsのProxy環境でどうにもうまくいかなくて、気分転換にWindows上のVMware Playerでやってみようと思った。結果から言うと、VMのネストが原因かVagrantをupできずやめた。&lt;/p&gt;
&lt;p&gt;一応、Vagrantをインストールするとことまでを残しておく。&lt;/p&gt;
&lt;h3&gt;VirtualboxとVagrantをインストール&lt;/h3&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% sudo apt-get install libqt4-opengl
% sudo apt-get install libsdl1.2debian
% wget http://download.virtualbox.org/virtualbox/4.2.10/virtualbox-4.2_4.2.10-84104~Ubuntu~quantal_i386.deb
% sudo dpkg -i virtualbox-4.2_4.2.10-84104~Ubuntu~quantal_i386.deb
% wget http://files.vagrantup.com/packages/64e360814c3ad960d810456add977fd4c7d47ce6/vagrant_i686.deb
% sudo dpkg -i vagrant_i686.deb
&lt;/pre&gt;
&lt;h3&gt;Chefとknife-soloをインストール&lt;/h3&gt;
&lt;p&gt;Rubyが2.0.0しか入ってなかったので、1.9.3をインストール&lt;/p&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% rbenv install 1.9.3-p392
% rbenv global 1.9.3-p392
% gem install rbenv-rehash --no-ri --no-rdoc
% gem install bundle --no-ri --no-rdoc

% gem install chef --no-ri --no-rdoc
% gem install knife-solo --no-ri --no-rdoc
% knife configure # 全てEnter
&lt;/pre&gt;

&lt;h3&gt;Ubuntu 12.10 32bitをインストール&lt;/h3&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% vagrant box add Ubuntu12.10 http://files.vagrantup.com/precise32.box
% vagrant init Ubuntu12.10
% vagrant up # VMware Player上のUbuntuでVirtualBoxを動かそうとしているからかupしない
&lt;/pre&gt;
</content><link href="http://mas0061.blogspot.com/2013/04/windows-cygwin-proxychef.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8962481561865038677" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8962481561865038677" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/windows-cygwin-proxychef.html" rel="alternate" title="Windows + Cygwin + Proxy環境でChefにトライ" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-2785801275193107603</id><published>2013-04-10T22:09:00.000+09:00</published><updated>2013-04-10T22:17:40.802+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">RVMからrbenvにMac・Ubuntu・Windowsを移行した</title><content type="html">
&lt;p&gt;MacもLinuxもRubyの環境は&lt;a href="https://rvm.io/"&gt;RVM&lt;/a&gt;からインストールしていて、Windowsは&lt;a href="http://rubyinstaller.org/"&gt;RubyInstaller&lt;/a&gt;を使ってた。&lt;/p&gt;
&lt;p&gt;この間、&lt;a href="http://mas0061.blogspot.jp/2013/04/vmubuntu-1210.html"&gt;Ubuntuをセットアップした時&lt;/a&gt;に.zshrcを共通化したこともあって、Ruby環境も共通化したいなと思い、どうせならということでrbenvに乗り換えてみた。&lt;/p&gt;

&lt;h2&gt;Ubuntu 12.10&lt;/h2&gt;
&lt;h3&gt;RVMアンインストール&lt;/h3&gt;
&lt;pre class="brush:bash"&gt;
% rvm seppuku
  → これでrvm自体とRubyとGemが全部消える
% vi .zshrc
  → RVM向けの設定を削除
&lt;/pre&gt;

&lt;h3&gt;rbenvインストール&lt;/h3&gt;
&lt;pre class="brush:bash; auto-links: false;"&gt;
% git clone https://github.com/sstephenson/rbenv ~/.rbenv
% vi .zshrc
  export PATH=$HOME/.rbenv/bin:$PATH
  eval "$(rbenv init - zsh)"
% mkdir ~/.rbenv/plugins
% cd ~/.rbenv/plugins
% git clone https://github.com/sstephenson/ruby-build
% exit
&lt;/pre&gt;

&lt;h3&gt;Rubyインストール&lt;/h3&gt;
&lt;pre class="brush:bash"&gt;
% rbenv install -l  # インストール可能なRubyが出る
% rbenv install 2.0.0-p0 --verbose
% rbenv global 2.0.0-p0
% exit

% gem install rbenv-rehash
% gem install bundle
&lt;/pre&gt;

&lt;blockquote&gt;
参考&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/sandmark/20121122/1353625485"&gt;今更だけどrvmからrbenvに乗り換えるときの個人用メモ - === SANDmark 19106 === beginning stress test&lt;/a&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Mac&lt;/h2&gt;
&lt;h3&gt;準備&lt;/h3&gt;
&lt;p&gt;Homebrewで以下をインストール。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;libyaml&lt;/li&gt;
&lt;li&gt;openssl&lt;/li&gt;
&lt;li&gt;autoconf, readlineはインストール済みだった&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;インストール&lt;/h3&gt;
&lt;p&gt;RVMのアンインストールからrbenv、RubyのインストールはUbuntuと一緒。
Macには、Ruby 1.9.3-p392と2.0.0-p0とJRuby 1.7.3をインストール。
デフォルトは、2.0.0-p0にしておいた。&lt;/p&gt;

&lt;h2&gt;Windows&lt;/h2&gt;
&lt;p&gt;Windowsは、Cygwinで使えることが前提。ただし、結果から言うとrbenv installは失敗した。
Windows + Cygwin + 認証Proxyの組み合わせは、開発環境が非常に作りにくいと改めて実感。
そういえば、RVMもRuby 1.9.3がrvm installできなくてRubyInstaller使うようになったんだった…。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rbenvのインストールまではUbuntuと一緒&lt;/li&gt;
&lt;li&gt;rbenvをインストールしてシェルを起動した時に、"\r"関係のエラーが出る場合は、
  Windowsの環境変数 "SHELLOPTS" に "igncr" を追加すると良い&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
\rを無視するための参考&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/gm_kou/20070117/1169071054"&gt;Cygwin 上の bash で，CR を無視する方法 - Lokiへの日々&lt;/a&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Rubyインストール&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;RubyInstallerでインストールしたRubyはアンインストール&lt;/li&gt;
&lt;li&gt;rbenv install 1.9.3-p392にしても、yamlのconfigureでエラーになる&lt;br /&gt;
  →単体でyamlをwgetしてconfigureしてもエラーにならない&lt;/li&gt;
&lt;li&gt;諦めて、ソースからコンパイルしてrbenv管理下に置くことに&lt;/li&gt;

&lt;li&gt;Cygwinのsetup.exeでlibyaml-devel, readline, zlib, zlib-devel, openssl, openssl-develを追加インストール&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="brush:bash; auto-links: false;"&gt;
% wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz
% tar xvf ruby-1.9.3-p392.tar.gz
% cd ruby-1.9.3-p392
% ./configure --prefix=~/.rbenv/versions/1.9.3-p392
% make
% make install
% rbenv rehash
% rbenv versions
  →　1.9.3-p392が出てくるはず
% rbenv global 1.9.3-p392
&lt;/pre&gt;

&lt;blockquote&gt;
参考&lt;br /&gt;
&lt;a href="http://qiita.com/items/1f6b396a26984ba2c0b6"&gt;自分でコンパイルしたRubyをrbenvで管理する(Mac OS X) #Ruby #Mac #rbenv - Qiita&lt;/a&gt;
&lt;/blockquote&gt;</content><link href="http://mas0061.blogspot.com/2013/04/rvmrbenvmacubuntuwindows.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/2785801275193107603" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/2785801275193107603" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/rvmrbenvmacubuntuwindows.html" rel="alternate" title="RVMからrbenvにMac・Ubuntu・Windowsを移行した" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-1243048833255289471</id><published>2013-04-02T22:16:00.001+09:00</published><updated>2013-04-12T21:57:24.773+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">VM上のUbuntu 12.10をセットアップした【追記あり】</title><content type="html">&lt;p&gt;Cygwin + minttyの環境で色々やってきたけど、Proxy環境と相まってつまづくことが多い。
そこで思い立って、UbuntuをVMware Playerにインストールして開発環境にしてみた。&lt;/p&gt;
&lt;p&gt;今のところ必要なものをちょこちょことセットアップしてきて、ほとんどの環境ができてきたと思う。
あとは、EclipseもUbuntuに移してしまうかどうかぐらいかな。&lt;/p&gt;
&lt;p&gt;というわけで、やったことをログとして残しておく。&lt;/p&gt;

&lt;h2&gt;ベース環境&lt;/h2&gt;
&lt;p&gt;VMware Player上にUbuntu 12.10 日本語 Remixイメージをインストール&lt;/p&gt;

&lt;h2&gt;必要なモノをインストール&lt;/h2&gt;

&lt;pre class="brush:bash"&gt;
% sudo apt-get install zsh
% sudo apt-get install tmux
% sudo apt-get install subversion
&lt;/pre&gt;
&lt;p&gt;Subversionは入ってないのに、Gitは最初から入ってることに驚いた。&lt;/p&gt;
&lt;p&gt;あとは、VMWare Toolsも忘れずに。&lt;/p&gt;

&lt;p&gt;.zshrc, .vimrcは、Gitリポジトリからcloneしてシンボリックリンク。.™ux.confは、今回初めて作ったので、これもGitリポジトリへ。&lt;/p&gt;

&lt;h2&gt;Sphinx&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% sudo apt-get install python-setuptools
% sudo apt-get install python-pip
&lt;/pre&gt;

&lt;p&gt;pipでProxyを使うために、.zshrcに以下を追加&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
alias pip="pip --proxy=$http_proxy"
&lt;/pre&gt;

&lt;pre class="brush:bash"&gt;
% sudo pip install sphinx
% sudo pip install blockdiag
% sudo pip install sphinxcontrib-blockdiag
&lt;/pre&gt;

&lt;p&gt;&lt;a href="https://github.com/shibukawa/oktavia"&gt;Oktavia&lt;/a&gt;を使うために、Node.js v0.10.2をソースからコンパイル。&lt;br /&gt;
※apt-getで入るバージョンだと、古くてOktaviaが動かない模様&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
% ./configure
% make
% sudo make install
&lt;/pre&gt;

&lt;p&gt;自作Pygmentsは、eggファイルだからpipで入らなくてeasy_install&lt;/p&gt;

&lt;pre class="brush:bash"&gt;
% sudo easy_install pygments_plugin_vdm_lexer-0.1-py2.6.egg
&lt;/pre&gt;

&lt;h2&gt;日本語入力にMozc&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% sudo apt-get install ibus-mozc
% killall ibus-daemon
% ibus-daemon -d -x &amp;
&lt;/pre&gt;

&lt;h2&gt;日本語TeX環境&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% sudo apt-get install texlive-lang-cjk
% sudo apt-get install texlive-fonts-recommended
&lt;/pre&gt;

&lt;p&gt;あとは、自作のplatexからdvipdfmxするシェルスクリプトを持ってくればOK。&lt;/p&gt;

&lt;blockquote&gt;
参考：&lt;a href="http://nort-wmli.blogspot.jp/2012/11/ubuntu1210latex.html"&gt;WM×LI: 【Ubuntu12.10】LaTeX環境を整える【簡単】&lt;/a&gt;&lt;br /&gt;
※texlive-fonts-recommendedを入れないと日本語TeXコンパイルでエラー
&lt;/blockquote&gt;

&lt;h3&gt;追記&lt;/h3&gt;
&lt;p&gt;これでTeX環境もOKだと思ってたら、pngやjpg画像をebbしてTeXファイルをコンパイルしてみるとxbbファイルがないとのエラー。色々調べた結果、texmf.cnfにextractbbを追記しないとダメだった。&lt;/p&gt;
&lt;p&gt;extractbbを入れてしまえば、これまで通り画像ファイルをebbしてplatexすればOKになった。&lt;/p&gt;
&lt;p&gt;↓extractbbを入れるとこんな感じ。&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
shell_escape_commands = \
bibtex,bibtex8,\
kpsewhich,\
makeindex,\
mpost,\
repstopdf,\
extractbb, \
&lt;/pre&gt;
&lt;blockquote&gt;参考&lt;br /&gt;
&lt;a href="http://qiita.com/items/32ea69d031701463f789"&gt;TeXにpng画像を挿入するときの注意 #TeX #Ubuntu - Qiita&lt;/a&gt;&lt;/blockquote&gt;

&lt;h2&gt;Ruby&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% sudo apt-get install curl, bison, dh-autoreconf
% \curl -L https://get.rvm.io | bash -s stable
% rvm install 1.9.3-head
&lt;/pre&gt;
&lt;p&gt;ここで、全くRubyが入っていない環境だと、Ruby 2.0.0を先に入れる動作になるらしい。
で、2.0.0を入れるものの、which rubyしてもない環境で1.9.3のインストールに失敗する。
たぶん、apt-get install rubyを先にした方が良いんだけど、ここでは、やったことをそのまま掲載。&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
% rvm use 2.0.0
% rvm install 1.9.3-head
% rvm use 1.9.3-head --default
% rvm install jruby
&lt;/pre&gt;

&lt;h2&gt;ホームディレクトリの不要なディレクトリを削除する&lt;/h2&gt;
&lt;pre class="brush:bash"&gt;
% LANG=C xdg-user-dirs-gtk-update
% vi ~/.conf/user-dirs.conf
enabled=False
% rm -rf Documents Music Pictures Public Templates Desktop Videos
&lt;/pre&gt;

&lt;p&gt;リブートして、ディレクトリの名前を変えるか？のダイアログ出るけど、2度と表示しないにチェックして、ディレクトリを変えないボタンを押す&lt;/p&gt;

&lt;blockquote&gt;
参考：&lt;a href="http://smdn.jp/softwares/ubuntu/initialconfig_precise_desktop/#section.5.2"&gt;Ubuntu 12.04 初期設定メモ - Softwares/Ubuntu - 総武ソフトウェア推進所&lt;/a&gt;
&lt;/blockquote&gt;

&lt;h2&gt;トラブル：ターミナルでCtrl+aとかCtrl+rができない&lt;/h2&gt;
&lt;p&gt;tmuxを疑ったこともあったけど、.zshrcに&lt;/p&gt;
&lt;pre class="brush:bash"&gt;
bindkey -e
&lt;/pre&gt;
&lt;p&gt;指定追加で解決。
MacでもCygwinでもいらなかったんだけどなー…。&lt;/p&gt;

&lt;blockquote&gt;
参考：&lt;a href="http://d.hatena.ne.jp/sotarok/20080926/1222368908"&gt;zsh でいつの間にか Ctrl+R とか Ctrl+A とかきかなくなっていた - 肉とご飯と甘いもの @ sotarok&lt;/a&gt;
&lt;/blockquote&gt;</content><link href="http://mas0061.blogspot.com/2013/04/vmubuntu-1210.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1243048833255289471" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1243048833255289471" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/04/vmubuntu-1210.html" rel="alternate" title="VM上のUbuntu 12.10をセットアップした【追記あり】" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-6508948470829513489</id><published>2013-03-12T06:20:00.001+09:00</published><updated>2013-04-02T21:53:39.114+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">pkgbuildとproductbuildでMacのインストーラーを作ろう</title><content type="html">&lt;p&gt;ここ最近インストーラーを作る機会が多い。&lt;/p&gt;&lt;p&gt;Windowsでのインストーラー作りは、&lt;a href="http://mas0061.blogspot.jp/2013/01/windowsnsiswix.html"&gt;NSISやWiXを使う方法&lt;/a&gt;で書いた形で作れた。で、今回はMacでのお話。&lt;/p&gt;&lt;p&gt;Macのインストーラーは、Package MakerがXcodeに付属していて、これを使えばGUIベースで簡単にインストーラーが作れたらしい。Snow LeopardかLionあたりまでは。Mountain Lionな今、どうやらPackage Makerは標準ではなくなり、AppleのDeveloperサイトから&lt;strong&gt;Auxiallery Tool (Late July 2012)&lt;/strong&gt;をインストールしなければ使えないらしい。&lt;/p&gt;&lt;p&gt;Auxiallery ToolをインストールしてPackage Makerで作ってもいいんだけど、どうせならMountain Lion時代の標準でと思い、色々調べてみた。その結果、pkgbuildとproductbuildというコマンドを使うのが良さそうだと行き着いた。ちなみに、両コマンドともSnow Leopardには既に入ってたコマンド。&lt;/p&gt;&lt;p&gt;pkgbuildとproductbuildを使うのに行き着いたのはいいけど、これらを使う情報が非常に少ない。特に日本語の解説は見当たらなかった。しかも、pkgbuildはArchLinuxにもあるらしく、そっちばかり検索に引っかかる…。そんな中、どう検索しても最終的に行き着く解説ページがStack Overflowにあった。&lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://stackoverflow.com/questions/11487596/making-os-x-installer-packages-like-a-pro-xcode4-developer-id-mountain-lion-re"&gt;Making OS X Installer Packages like a Pro - Xcode4 Developer ID Mountain Lion ready pkg&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;↑では、単にインストーラーを作るだけじゃなくて、Developer IDを埋め込む方法も書いてある。&lt;/p&gt;&lt;p&gt;んで、今回のやりたいことはこんな感じ。&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;1つに集めたディレクトリ内のファイルを/Applicationsにコピー&lt;/li&gt;    &lt;li&gt;インストール過程で使用許諾を表示して同意させたい&lt;/li&gt;    &lt;li&gt;使用許諾は、日本語と英語で表示する文言を変えたい&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;1つ目の要求だけだったら、pkgbuildだけで実現できるんだけど、2つ目も実現しようとするとproductbuildが必要になってくる。なので、ここから個別に解説。&lt;/p&gt;&lt;h3&gt;pkgbuildでインストールパッケージを作る&lt;/h3&gt;&lt;p&gt;下のコマンドを発行すれば、とりあえずファイルを指定ディレクトリへコピーするインストーラーが作れる。&lt;/p&gt;&lt;pre class="brush:bash"&gt;pkgbuild --root コピー元ディレクトリ \        --identifier jp.hoge.pkgみたいなやつ \        --install-location コピー先ディレクトリ（/Applicationsとか） \        --version バージョン番号 \        パッケージ名&lt;/pre&gt;&lt;h3&gt;productbuildでビルドするためのXMLファイルを作る&lt;/h3&gt;&lt;p&gt;続いて、pkgbuildで作ったパッケージをproductbuildで仕上げるために、XMLファイルを作る。手でXMLファイルを作っても良いんだけど、このコマンドで発行した方がラク。&lt;/p&gt;&lt;p&gt;ちなみに、このコマンド発行は最初の1回だけで良い。&lt;/p&gt;&lt;pre class="brush:bash"&gt;productbuild --synthesize \            --package pkgbuildで指定したパッケージ名 \            ./Distribution.xml（XMLの名前は何でも良い）&lt;/pre&gt;&lt;p&gt;これによって、以下のようなXMLが得られる。&lt;/p&gt;&lt;pre class="brush:xml"&gt;&lt;?xml version="1.0" encoding="utf-8" standalone="no"?&gt;&lt;installer-gui-script minSpecVersion="1"&gt;    &lt;pkg-ref id="jp.hoge.pkg"/&gt;    &lt;options customize="never" require-scripts="false"/&gt;    &lt;choices-outline&gt;        &lt;line choice="default"&gt;            &lt;line choice="jp.hoge.pkg"/&gt;        &lt;/line&gt;    &lt;/choices-outline&gt;    &lt;choice id="default"/&gt;    &lt;choice id="jp.hoge.pkg" visible="false"&gt;        &lt;pkg-ref id="jp.hoge.pkg"/&gt;    &lt;/choice&gt;    &lt;pkg-ref id="jp.hoge.pkg" version="1.0.0" onConclusion="none"&gt;pkgbuildで指定したパッケージ名&lt;/installer-gui-script&gt;&lt;/pre&gt;&lt;h3&gt;Distribution.xmlのカスタマイズ&lt;/h3&gt;&lt;p&gt;これに2点手を加える。&lt;/p&gt;&lt;p&gt;まずは、タイトルを入れること。入れておかないと、インストーラーのタイトルがない状態になる。タイトルは、こんな感じで&amp;lt;installer-gui-script&amp;gt;の下にでも入れる。&lt;/p&gt;&lt;pre class="brush:xml"&gt;&lt;title&gt;The VDM++ Toolbox&lt;/title&gt;&lt;/pre&gt;&lt;p&gt;続いて、使用許諾の表示。これは&amp;lt;options&amp;gt;の下あたりに以下を入れる。使用許諾のファイル名は何でもOK。&lt;/p&gt;&lt;pre class="brush:xml"&gt;&lt;license file="License.rtf"/&gt;&lt;/pre&gt;&lt;p&gt;使用許諾を日英別々のファイルにするには、ディレクトリ構成を以下のようにして入れる必要がある。English.lprojとJapanese.lprojにそれぞれの言語の使用許諾ファイルを入れれば準備OK。&lt;/p&gt;&lt;pre class="brush:bash"&gt;Resources├── English.lproj│   └── License.rtf└── Japanese.lproj    └── License.rtf&lt;/pre&gt;&lt;h3&gt;productbuildでインストーラーを仕上げる&lt;/h3&gt;&lt;p&gt;ここまで準備できたら、後はインストーラーを仕上げるためにproductbuildをかける。&lt;/p&gt;&lt;pre class="brush:bash"&gt;productbuild --distribution productbuildで指定したXML \            --package-path . \            --resources 各種リソースがあるディレクトリ \            最終的に作りたいインストーラーパッケージ名&lt;/pre&gt;&lt;h3&gt;まとめ&lt;/h3&gt;&lt;p&gt;長くなったけど、これでMacのインストーラーができる。productbuildのsynthesizeは一度だけで良いので、インストーラーを作るシェルスクリプトを作っておくと便利。例えばこんな感じ。バージョンは引数で与える想定。&lt;/p&gt;&lt;script src="https://gist.github.com/mas0061/5137819.js"&gt;&lt;/script&gt;</content><link href="http://mas0061.blogspot.com/2013/03/pkgbuildproductbuildmac.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6508948470829513489" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/6508948470829513489" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/03/pkgbuildproductbuildmac.html" rel="alternate" title="pkgbuildとproductbuildでMacのインストーラーを作ろう" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-1435240206090305995</id><published>2013-03-02T06:24:00.000+09:00</published><updated>2013-03-02T06:24:43.462+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gadget"/><title type="text">さらばKindle Fire HD</title><content type="html">&lt;p&gt;&lt;a href="http://mas0061.blogspot.jp/2012/12/kindle-fire-hd_19.html"&gt;この時ゲットしたKindle Fire HD&lt;/a&gt;を2ヶ月あまり楽しく使ってたんだけど、&lt;/p&gt;
&lt;p&gt;先日こうなって、&lt;/p&gt;
&lt;blockquote class="twitter-tweet" lang="ja" xml:lang="ja"&gt;
  &lt;p&gt;Kindle Fire HDが起動しなくなった…。起動時のロゴ表示後落ちる or 起動後に強制シャットダウン。&lt;/p&gt;— mas0061さん (@mas0061) &lt;a href="https://twitter.com/mas0061/status/304546394151198720"&gt;2013年2月21日&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;さらにこうなって、&lt;/p&gt;
&lt;blockquote class="twitter-tweet" lang="ja" xml:lang="ja"&gt;
  &lt;p&gt;起動しなくなったKindle Fire HDが、ごくたまに起動した隙に初期化してみた。端末からアッサリできるのはスゴい。が、初期化後の初期設定画面で強制シャットダウンのダイアログ…。ダメだこりゃ。&lt;/p&gt;— mas0061さん (@mas0061) &lt;a href="https://twitter.com/mas0061/status/304551877876539392"&gt;2013年2月21日&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;こうなった。&lt;/p&gt;
&lt;blockquote class="twitter-tweet" lang="ja" xml:lang="ja"&gt;
  &lt;p&gt;残念な感じのKindle Fire HDに見切りをつけ、Amazonに電話してみた。ダメそうな状態ってことで、この後交換含めた話をすることに。返品して、NEXUS 7 or iPad miniって離れ技はありなんだろうか？&lt;/p&gt;— mas0061さん (@mas0061) &lt;a href="https://twitter.com/mas0061/status/304552353837760512"&gt;2013年2月21日&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;こうなる前から変な動作をしてた。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;テーブルの上に置いて触ってもいないのにスリープから目覚める&lt;/li&gt;

  &lt;li&gt;電源ボタン付近を強めに押すと「シャットダウンしますか？」と聞いてくる&lt;/li&gt;

  &lt;li&gt;Perfect Viewerが頻繁に落ちる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というわけで、結論としてはタイトル通りこうなった。&lt;/p&gt;
&lt;blockquote class="twitter-tweet" lang="ja" xml:lang="ja"&gt;
  &lt;p&gt;色々あって、結局Kindle Fire HDは今日旅立つことに。短い付き合いだったな…。&lt;/p&gt;— mas0061さん (@mas0061) &lt;a href="https://twitter.com/mas0061/status/304691333673668609"&gt;2013年2月21日&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;そして、これは更なる展開へ…&lt;/p&gt;
</content><link href="http://mas0061.blogspot.com/2013/03/kindle-fire-hd.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1435240206090305995" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1435240206090305995" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/03/kindle-fire-hd.html" rel="alternate" title="さらばKindle Fire HD" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3418011767300144337</id><published>2013-01-30T05:49:00.001+09:00</published><updated>2013-04-02T21:54:38.939+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sphinx"/><title type="text">Sphinxの新しい？テーマを勝手に使ってみた</title><content type="html">&lt;p&gt;たまに見に行く&lt;a href="http://sphinx-doc.org/"&gt;Sphinxの公式サイト&lt;/a&gt;。最近見てみたらテーマが変わってた。なかなかいい感じの見た目なので、早速適用してみたいと思ったのが今回の発端。&lt;/p&gt;&lt;p&gt;HTMLを見てみると、どうやら「sphinx13」というテーマらしいことが分かる。が、どこかで配布されてるようなものではない模様。&lt;/p&gt;&lt;p&gt;で、色々探したあげく、Bitbucketの&lt;a href="https://bitbucket.org/birkenfeld/sphinx/src/71444a5b62861a113abdd175a83eaf54ee7da3d3/doc/_themes/sphinx13?at=default"&gt;Mercurialリポジトリ&lt;/a&gt;に入っていることを発見。&lt;/p&gt;&lt;p&gt;そこで、Mercurialリポジトリを丸ごとcloneしてきて、テーマだけ抜いて適用してみたのがこちら。&lt;/p&gt;&lt;p&gt;MacのChromeだとこんな感じ。&lt;/p&gt;&lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvqqPLgXs85NRrIlnkTEaGT_2CdztgLsnsKodTjXBBzTIk_X4NWv2nM7lTgKpfPpgJMAZmmTscaHBTCQeUKQLMVOCdUd520sMrjdFXX_jyvrkq3txtS4DIr4SIcfuBJbIzdljH8tETAuA/s1600/scMac.png" imageanchor="1"&gt;&lt;img border="0" height="214" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvqqPLgXs85NRrIlnkTEaGT_2CdztgLsnsKodTjXBBzTIk_X4NWv2nM7lTgKpfPpgJMAZmmTscaHBTCQeUKQLMVOCdUd520sMrjdFXX_jyvrkq3txtS4DIr4SIcfuBJbIzdljH8tETAuA/s320/scMac.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;WindowsのFirefoxだとこんな感じ。&lt;/p&gt;&lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjkChh_OW42eFlmCeNiHMb0an4eUkAexAYNoxEHuEB8TzEEgWpcqRiJiGTRRLZYMcUan6Fww7hEBoGqYvcgSd5M1rrlZNwjyb62Z-vha6ADECUyNH3YzsUziQGRmrfePrC_-Qm9r0yFJo/s1600/scWin.png" imageanchor="1"&gt;&lt;img border="0" height="212" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjkChh_OW42eFlmCeNiHMb0an4eUkAexAYNoxEHuEB8TzEEgWpcqRiJiGTRRLZYMcUan6Fww7hEBoGqYvcgSd5M1rrlZNwjyb62Z-vha6ADECUyNH3YzsUziQGRmrfePrC_-Qm9r0yFJo/s320/scWin.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;適用するためには、source/_themeにsphinx13をディレクトリごと入れて、conf.pyに以下の設定を追加する。&lt;/p&gt;&lt;pre class="brush: py"&gt;html_theme = 'sphinx13'html_theme_path = ['_theme']&lt;/pre&gt;&lt;p&gt;ただし、今回2点カスタマイズした所がある。&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;ヘッダー画像を入れ替える&lt;/li&gt;  &lt;li&gt;日本語フォントをCSSに追加する&lt;/li&gt;  &lt;li&gt;リレーションバーを書き換える&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;ヘッダー画像は、SphinxのWebサイト用のが使われてたので、layout.htmlを変更した。&lt;/p&gt;&lt;p&gt;日本語フォントを追加したのは、元々が英語サイトで、細めのOpen Sans？を使ってるんだけど、日本語フォントをセットしないとMS Pゴシックになっちゃって残念な感じになるから。何が合うかと思ったけど、どこにでも入っていそうなメイリオを指定することにした。&lt;/p&gt;&lt;p&gt;なので、sphinx13.cssのbodyを以下のようにした。&lt;/p&gt;&lt;pre class="brush: css"&gt;body {  font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana',               'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro W3', メイリオ, Meiryo, sans-serif;    （以下省略）}&lt;/pre&gt;&lt;p&gt;リレーションバーは、元々のテーマだとうまくパンくずリスト的にならなかったので、以下のURLを参考に書き換えた。&lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://togakushi.bitbucket.org/build/html/SphinxAdventCalendar2012_5.html"&gt;テーマに少し手を入れてちょっとだけ使いやすくる &amp;mdash; togakushi.bitbucket.org 0.1 documentation&lt;/a&gt;&lt;/blockquote&gt;&lt;pre class="brush: html"&gt;{% block rootrellink %}  &lt;li&gt;&lt;a href="{{ pathto('index') }}"&gt;home&lt;/a&gt;{{ reldelim2 }}&lt;/li&gt;  &lt;li&gt;{{ super() }}&lt;/li&gt;{% endblock %}&lt;/pre&gt;&lt;p&gt;これで、Sphinxドキュメントをmake htmlすればできあがり。良い感じになったので、しばらくこれを使おうかな。&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2013/01/sphinx.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3418011767300144337" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3418011767300144337" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/01/sphinx.html" rel="alternate" title="Sphinxの新しい？テーマを勝手に使ってみた" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvqqPLgXs85NRrIlnkTEaGT_2CdztgLsnsKodTjXBBzTIk_X4NWv2nM7lTgKpfPpgJMAZmmTscaHBTCQeUKQLMVOCdUd520sMrjdFXX_jyvrkq3txtS4DIr4SIcfuBJbIzdljH8tETAuA/s72-c/scMac.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3006647338516862078</id><published>2013-01-27T07:35:00.001+09:00</published><updated>2013-04-02T21:54:14.772+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">Windowsでインストーラーを作るのは意外と簡単だった【NSISとWiX】</title><content type="html">&lt;p&gt;仕事でWindows用のインストーラーを作ることになって、ちょっと面倒だなと思ってたけど意外と簡単だったというお話。&lt;/p&gt;&lt;p&gt;今回は、以下のようなことを実現したいと思ってツールを選定、試行した。&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;64bit版Windows対応できることが最優先&lt;/li&gt;  &lt;li&gt;できれば64bitと32bitのインストーラーを1つにまとめたい&lt;/li&gt;  &lt;li&gt;できれば日本語と英語のインストーラーを1つにまとめたい&lt;/li&gt;  &lt;li&gt;インストーラー作成はCygwinからコマンドラインでやりたい&lt;/li&gt;  &lt;li&gt;使用許諾をインストールの過程で出したい&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;で、今回の成果は、GitHubに公開しておいた。汎用的に書いておいたから、他でも流用できるはず。&lt;/p&gt;&lt;blockquote&gt;&lt;a href="https://github.com/mas0061/NSIS-WiX_Example"&gt;NSIS-WiX_Example - https://github.com/mas0061/NSIS-WiX_Example&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;色々試行する中でのTips等々を書いておく。なお、今回試した環境はいずれもWindows 7 64bit。&lt;/p&gt;&lt;p&gt;まずはNSISから。&lt;/P&gt;&lt;h3&gt;NSIS&lt;/h3&gt;&lt;p&gt;NSISは、専用のスクリプト言語みたいので書いてツールにかけることでインストーラーができるツール。スクリプトはちょっとクセがあるので書きやすいとは言えないけど、記述量は多くないのでなんとかなる感じ。&lt;/p&gt;&lt;p&gt;NSISのメリットは、64bitと32bitを1つのインストーラーにまとめられること。あとはスクリプトベースなので、後述するWiXのXMLベースよりは書きやすいとこかな。&lt;/p&gt;&lt;h4&gt;ツールダウンロード&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://nsis.sourceforge.net/Download/"&gt;NSIS&lt;/a&gt;：2.46（この時の最新）&lt;/li&gt;  &lt;li&gt;&lt;a href="http://hmne.sourceforge.net/"&gt;HM NIS EDIT/&lt;/a&gt; ：2.0.3（この時の最新）&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;ツールインストール&lt;/h4&gt;&lt;p&gt;どちらもインストーラーを実行して素直に従えばOK。HM NIS EDITはオプションで、今回は結局インストールすらしなかった。直接スクリプトを書いていっても問題ない感じ。&lt;/p&gt;&lt;h4&gt;Cygwinで使えるようにする&lt;/h4&gt;&lt;pre class="brush: bash"&gt;% vi .zshrc # bash使いなら vi .bashrc&lt;/pre&gt;&lt;p&gt;↓以下を追加&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;export PATH="/cygdrive/c/Program Files (x86)/NSIS":$PATH&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Cygwinで&lt;/p&gt;&lt;pre class="brush: bash"&gt;% makensisMakeNSIS v2.46 - Copyright 1995-2009 ContributorsSee the file COPYING for license details.Credits can be found in the Users Manual....&lt;/pre&gt;&lt;p&gt;となればOK&lt;/p&gt;&lt;h4&gt;メモとTips&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;Cygwin + Poderosaの組み合わせはダメ、Cygwin + minttyやCygwinのターミナルならOK&lt;/li&gt;  &lt;li&gt;Fileコマンドの/rと/oname=Xは両立できない&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;ディレクトリを違う名前でインストールしたければ、以下のようにする&lt;/p&gt;&lt;pre class="brush: bash"&gt;File /r hogeRename "$INSTDIR\hogeRename" "$INSTDIR\hoge" &lt;/pre&gt;&lt;h4&gt;参考になるURL&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://www.geocities.jp/penguinitis2002/computer/programming/NSIS/NSIS.html"&gt;NSISによるインストーラの作成&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://kenichiro22.hatenablog.com/entry/20110301/1298951736"&gt;NSISでx64対応のインストーラを作成する&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://kwikwi.cocolog-nifty.com/blog/2010/04/contents.html"&gt;NSIS Users Manual（日本語訳）&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://cml.s10.xrea.com/ej/MUI2Readme_ja.html"&gt;NSIS Modern User Interface（日本語訳）&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;続いて、WiX。&lt;/p&gt;&lt;h3&gt;WiX&lt;/h3&gt;&lt;h4&gt;ツールダウンロード&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://wix.codeplex.com/"&gt;WiX Toolset&lt;/a&gt;：3.7（この時の最新）&lt;/li&gt;  &lt;li&gt;&lt;a href="http://wixedit.sourceforge.net/"&gt;WixEdit&lt;/a&gt;：0.7.5.0（この時の最新）&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;ツールインストール&lt;/h4&gt;&lt;p&gt;どちらもインストーラーを実行して素直に従えばOK。&lt;/p&gt;&lt;h4&gt;Cygwinで使えるようにする&lt;/h4&gt;&lt;pre class="brush: bash"&gt;% vi .zshrc # bash使いなら vi .bashrc&lt;/pre&gt;&lt;p&gt;↓以下を追加&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;export PATH="/cygdrive/c/Program Files (x86)/WiX Toolset v3.7/bin":$PATH&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Cygwinで&lt;/p&gt;&lt;pre class="brush: bash"&gt;% candleWindows Installer Xml Compiler version 3.7.1224.0Copyright (C) Outercurve Foundation. All rights reserved.&lt;/pre&gt;&lt;p&gt;となればOK&lt;/p&gt;&lt;h4&gt;チュートリアルを実施&lt;/h4&gt;&lt;p&gt;右も左も分からない状態で、良い&lt;a href="http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html"&gt;チュートリアル&lt;/a&gt;があったので、それをベースに作っていった。その上で詰まった所や変えたとこを書いておく。&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;ProductのVersionは、数字+.しか許されないようだ。「10.0.0b」のような記述は不可&lt;/li&gt;  &lt;li&gt;ライセンスに同意して次へ進むと不明なエラー(コード2819)が出る。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;上にある不明なエラーは、「Property.Id="WIXUI_INSTALLDIR"」がキャメルケースになってたためだった。&lt;/p&gt;&lt;blockquote&gt;参考 ： &lt;a href="http://lufia.org/notes/2010/1130.html"&gt;orange/note: WindowsインストーラWiX&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;64bit版インストーラーを作るためには、以下が非常に参考になる。この中の方法2で今回は試した。&lt;/p&gt;&lt;blockquote&gt;参考 ： &lt;a href="http://d.hatena.ne.jp/torutk/20110529/p1"&gt;WiXによるインストーラ作成 - torutkの日記&lt;/a&gt;&lt;/blockquote&gt;&lt;h4&gt;参考になるURL&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html"&gt;WiX・WixEdit&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.softark.net/wix/"&gt;WiXチュートリアル（日本語）&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/torutk/20110529/p1"&gt;WiXによるインストーラ作成 - torutkの日記&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;さいごに&lt;/h3&gt;&lt;p&gt;64bit対応のために始めた今回の試行。冒頭に書いた通り意外と簡単だった。あんまりインストーラーを作る機会はないけど、貴重な経験の1つとしておこう。いつか使うかもしれないし。&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2013/01/windowsnsiswix.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3006647338516862078" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3006647338516862078" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2013/01/windowsnsiswix.html" rel="alternate" title="Windowsでインストーラーを作るのは意外と簡単だった【NSISとWiX】" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-9148819970602840478</id><published>2012-12-21T23:22:00.001+09:00</published><updated>2012-12-21T23:24:32.017+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="VDM"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">VDM++のgetter・setterを生成するサクラエディタのマクロ書いた</title><content type="html">VDM++は、仕様記述言語かつオブジェクト指向言語。VDM++にはレコード型という構造体のような型が組み込まれているし、仕様記述言語なので、タイトルにあるようなgetter・setterは使いたくない所ではある。&lt;br /&gt;
ただ、例えば汎用的なフレームワークやライブラリーを書きたいシーンや、コード生成を前提に周辺クラスとの連携をするシーンにおいては、インスタンス変数とgetter・setterのセットが含まれたクラスを書くこともある。&lt;br /&gt;
その時、このgetter・setterを書くのが面倒だと、常日頃思ってた。定型的な書き方なのに記述量は割りと多い。これを解決するには、2つの方法がある。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;インスタンス変数をpublicにする&lt;/li&gt;
&lt;li&gt;getter・setterの記述を生成する仕組みを作る&lt;/li&gt;
&lt;/ul&gt;
今回は、2.の生成する仕組みをサクラエディタのマクロとして実現した。Windowsでサクラエディタを使ってVDM++を書くという、超ニッチなニーズがどこにあるのか分かんないけど、少なくとも自分は常用するマクロなので、どこか他の人にもで役に立つといいなと思って公開する。&lt;br /&gt;
&lt;h2&gt;
ダウンロード&lt;/h2&gt;
GitHubからダウンロードしてください。&lt;br /&gt;
&lt;a href="https://github.com/mas0061/SakuraEditor-Macro-for-VDM"&gt;VDMgetterSetterGen.js&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
使う準備&lt;/h2&gt;
まずは、サクラエディタにマクロの登録をする。&lt;br /&gt;
任意の場所にマクロを置いて、[設定] -&amp;gt; [共通設定]。[マクロ]タブの空いている所に、以下のように設定して、[設定]ボタンを押す。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981209"&gt;&lt;img alt="WS001" height="408" src="http://kura2.photozou.jp/pub/283/188283/photo/163981209.png" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981209"&gt;WS001&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
続いて、[キー割り当て]タブにてキーを割り当てる。例えば自分の場合は[Shift+Ctrl+g]にしてる。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981227"&gt;&lt;img alt="WS002" height="408" src="http://kura2.photozou.jp/pub/283/188283/photo/163981227.png" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981227"&gt;WS002&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
こうすれば、[ツール] -&amp;gt; [登録済みマクロ]以下に、設定したマクロとキーが設定されているはず。&lt;br /&gt;
&lt;h2&gt;
使い方&lt;/h2&gt;
まずは、以下のようにクラスにインスタンス変数を定義する。1行に1インスタンス変数にする。初期値はあってもなくても良い。&lt;br /&gt;
&lt;p&gt;&lt;pre class="brush: js"&gt;class EntityClass

instance variables
  id : nat := 0;
  flag : bool := true;
  aClass : Aclass;

end EntityClass
&lt;/pre&gt;&lt;/p&gt;
次に、getter・setterを生成するインスタンス変数を選択してコピーする。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981235"&gt;&lt;img alt="WS003" height="379" src="http://kura1.photozou.jp/pub/283/188283/photo/163981235.png" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981235"&gt;WS003&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
コピーした状態で生成したい場所にカーソルを移動し、マクロを設定したキーを押す。すると、getter・setterが生成される。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981245"&gt;&lt;img alt="WS004" height="407" src="http://kura2.photozou.jp/pub/283/188283/photo/163981245.png" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981245"&gt;WS004&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
ちなみに、boolのインスタンス変数で生成した場合は、getterがis○○になる仕様。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981256"&gt;&lt;img alt="WS005" height="407" src="http://kura2.photozou.jp/pub/283/188283/photo/163981256.png" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163981256"&gt;WS005&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
仕様&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;操作名は、「getインスタンス変数名」と「setインスタンス変数名」&lt;/li&gt;
&lt;li&gt;インスタンス変数名の最初は大文字にする&lt;/li&gt;
&lt;li&gt;boolのインスタンス変数は、getterが「isインスタンス変数名」になる&lt;/li&gt;
&lt;li&gt;改行コードはCRLF&lt;/li&gt;
&lt;/ul&gt;
もし想定通りに動かないとか、こうした方が良い、があればぜひご意見お願いします。</content><link href="http://mas0061.blogspot.com/2012/12/vdmgettersetter.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/9148819970602840478" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/9148819970602840478" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/12/vdmgettersetter.html" rel="alternate" title="VDM++のgetter・setterを生成するサクラエディタのマクロ書いた" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-1706448132464649107</id><published>2012-12-19T22:30:00.001+09:00</published><updated>2012-12-20T06:00:10.052+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gadget"/><title type="text">Kindle Fire HD到着・ファーストインプレッション</title><content type="html">縁あって入手することになった&lt;a href="http://www.amazon.co.jp/gp/product/B008UAAE44/ref=famstripe_kt"&gt;Kindle Fire HD&lt;/a&gt;が昨日届いた。セカンドがあるかはわかんないけど、ファーストインプレッションを。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163818809"&gt;&lt;img alt="IMG_0120" height="450" src="http://kura2.photozou.jp/pub/283/188283/photo/163818809.jpg" width="338" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163818809"&gt;IMG_0120&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
あんまり予備知識がない中で入手したので、手探りでセットアップした。今回は、ギフト扱いで到着してるので、Amazonのアカウントがセットされた状態じゃなくて、セットアップの過程でアカウントとのヒモ付け。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816216"&gt;&lt;img alt="IMG_0133" height="299" src="http://kura3.photozou.jp/pub/283/188283/photo/163816216.jpg" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816216"&gt;IMG_0133&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
一通りセットアップが終わると、Kindle Storeで購入した電子書籍が既にあって、開くとiPhoneのKindleアプリで読んでた所から読めた。Kindle Paperwhiteの記事とかで読んでたから知ってたけど、改めて体験すると感心してしまう。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816235"&gt;&lt;img alt="IMG_0134" height="450" src="http://kura1.photozou.jp/pub/283/188283/photo/163816235.jpg" width="299" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816235"&gt;IMG_0134&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
ここから、色々と触ってみて感じたことを羅列してみる。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;大きさはちょうど良い。iPad miniをちゃんと触ってないこともあって、重さも悪くない&lt;/li&gt;
&lt;li&gt;液晶保護フィルム貼るのに失敗したので、Kindle Fire HDは裸族で行くことに&lt;/li&gt;
&lt;li&gt;付属のUSBケーブルが固めで、柔軟さはあんまりない&lt;/li&gt;
&lt;li&gt;フォントに違和感。昔のLinux的な&lt;/li&gt;
&lt;li&gt;改めて、iOS端末の作りこみのスゴさを実感。あらゆる所にユーザーが気持よく使える工夫がしてあると実感。&lt;/li&gt;
&lt;li&gt;液晶がキレイなのは、写真を表示した時に実感。ロック画面の写真がキレイ&lt;/li&gt;
&lt;li&gt;ホーム画面は、コンテンツが増えてきたらツラくないか？マンガみたいに複数冊出てくると一覧性が悪い&lt;/li&gt;
&lt;li&gt;PDFのページめくり方向が設定できないのは不便&lt;/li&gt;
&lt;li&gt;動作はキビキビしてるとこと、そうでないとこが入り混じってる感じ&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816250"&gt;&lt;img alt="IMG_0135" height="299" src="http://kura2.photozou.jp/pub/283/188283/photo/163816250.jpg" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816250"&gt;IMG_0135&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
一通り触ってから、手持ちのPDFも入れてみようとMacとUSBで接続するも、USB接続するには接続用のアプリを入れろとKindle Fire HDが言う。そこで、指定されたページに飛んで、「&lt;a href="https://www.amazon.com/gp/help/customer/display.html/ref=hp_201022260_usmac?nodeId=201022260#mac"&gt;USB Transfer Tools for Kindle Fire HD and Kindle Fire 2nd Generation&lt;/a&gt;」をダウンロードしようとするが、Macは「&lt;a href="http://www.android.com/filetransfer/"&gt;Android File Transfer&lt;/a&gt;」を使うように、さらに飛ばされる。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816266"&gt;&lt;img alt="IMG_0136" height="299" src="http://kura3.photozou.jp/pub/283/188283/photo/163816266.jpg" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816266"&gt;IMG_0136&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
この辺りは、USBでMacと繋げれば、外部ディスクとして使えると思ってたので、ちょっとがっかりした点。&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816275"&gt;&lt;img alt="IMG_0137" height="299" src="http://kura1.photozou.jp/pub/283/188283/photo/163816275.jpg" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816275"&gt;IMG_0137&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
そして、ここからコンテンツ周りで色々試してみたこと。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;iTunes用に変換した動画は、そのままKindleで再生できる&lt;/li&gt;
&lt;li&gt;動画をイヤホンで見たけど、結構音は良い感じ&lt;/li&gt;
&lt;li&gt;USB接続して、Booksディレクトリ以下に子ディレクトリ作って、PDFとか入れても読めるか？を試してみたけどダメだった&lt;/li&gt;
&lt;li&gt;PDFファイルは、Booksディレクトリ以下に入れても本ではなく、ドキュメントとして認識される&lt;/li&gt;
&lt;li&gt;【追記】事前にできないとの情報も見てたけど、iPhone 5とBluetoothでのPAN通信も試してみた。Buletooth端末としてiPhone 5を認識するも通信はできず…。&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816293"&gt;&lt;img alt="IMG_0139" height="299" src="http://kura3.photozou.jp/pub/283/188283/photo/163816293.jpg" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163816293"&gt;IMG_0139&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;br /&gt;
ちょっとマイナス面が多い気もするけど、この値段でこのサイズ感は結構好き。今までiPhone 5で動画を見たりしてたけど、これを機に動画はKindle Fire HDに任せても良いかなと思った。いずれにしろ、まだ使い始めたばかりなので、せっかくだからもっと色々触ってみよ。&lt;br /&gt;
&lt;br /&gt;
↓一緒に急速充電器も買うと良い。&lt;br /&gt;
&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=mas0061-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=B006GWO5WK" style="height: 240px; width: 120px;"&gt;&lt;/iframe&gt;</content><link href="http://mas0061.blogspot.com/2012/12/kindle-fire-hd_19.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1706448132464649107" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/1706448132464649107" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/12/kindle-fire-hd_19.html" rel="alternate" title="Kindle Fire HD到着・ファーストインプレッション" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-914205723242708947</id><published>2012-12-16T21:26:00.001+09:00</published><updated>2012-12-16T21:26:59.866+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gadget"/><category scheme="http://www.blogger.com/atom/ns#" term="買い物"/><title type="text">Kindle Fire HD用の液晶保護フィルム届いた</title><content type="html">&lt;p&gt;本体はいつ届くか分からないけど…。買ったのはこちら。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/163544787"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/163544787.jpg" alt="IMG_0116" width="338" height="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163544787"&gt;IMG_0116&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;とにかく安いやつってのがコンセプト。見た目、iPad用？って思うけど、よく見ると「Kindle Fire HD 7 Anti-glare」って書いてある。まぁ、アンチグレアだと知ったのは届いてからだが。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/163544808"&gt;&lt;img src="http://kura1.photozou.jp/pub/283/188283/photo/163544808.jpg" alt="IMG_0117" width="338" height="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163544808"&gt;IMG_0117&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;汎用品かなぁと思ったけど、カメラ用？の穴も開いてるから大丈夫そう。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/163544823"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/163544823.jpg" alt="IMG_0119" width="338" height="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/163544823"&gt;IMG_0119&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;とりあえず、本体が届いたらこれを貼ってみよう。&lt;/p&gt;
&lt;p&gt;ちなみに、Kindle Fire HDは父からの誕生日プレゼント。ありがたや。&lt;/p&gt;
&lt;table border="0" cellpadding="0" cellspacing="0"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;
        &lt;div style="border:1px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"&gt;
          &lt;a href="http://hb.afl.rakuten.co.jp/hgc/107d8574.a43d76c3.107d8575.8acf182a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2farrive-arrive%2fkf-hd-f%2f%3fscid%3daf_link_tbl&amp;amp;m=http%3a%2f%2fm.rakuten.co.jp%2farrive-arrive%2fn%2fkf-hd-f" target="_blank"&gt;&lt;img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2farrive-arrive%2fcabinet%2fimg4%2fkf-f-hd.jpg%3f_ex%3d300x300&amp;amp;m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2farrive-arrive%2fcabinet%2fimg4%2fkf-f-hd.jpg%3f_ex%3d80x80" alt="【レビューを書いてメール便送料無料】 Kindle Fire HD用　保護フィルム　保護フィルター　キンドル　ファイヤーHD　タブレット　レザー　電子書籍　電子ブックリーダー" border="0" style="margin:0px;padding:0px" /&gt;&lt;/a&gt;

          &lt;p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px"&gt;&lt;a href="http://hb.afl.rakuten.co.jp/hgc/107d8574.a43d76c3.107d8575.8acf182a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2farrive-arrive%2fkf-hd-f%2f%3fscid%3daf_link_tbl&amp;amp;m=http%3a%2f%2fm.rakuten.co.jp%2farrive-arrive%2fn%2fkf-hd-f" target="_blank"&gt;【レビューを書いてメール便送料無料】 Kindle Fire HD用　保護フィルム　保護フィルター　キンドル　ファイヤーHD　タブレット　レザー　電子書籍　電子ブックリーダー&lt;/a&gt;&lt;br /&gt;
          価格：420円（税込、送料込）&lt;br /&gt;&lt;/p&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

</content><link href="http://mas0061.blogspot.com/2012/12/kindle-fire-hd.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/914205723242708947" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/914205723242708947" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/12/kindle-fire-hd.html" rel="alternate" title="Kindle Fire HD用の液晶保護フィルム届いた" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-7988075207287160513</id><published>2012-12-09T07:00:00.001+09:00</published><updated>2013-02-05T13:57:15.893+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="astah"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type="text">astah Scriptでパッケージを取り払ったXMI出力するスクリプト書いた</title><content type="html">&lt;p&gt;いや、ホントは書いてからだいぶ時間経っちゃったけど…。&lt;/p&gt;&lt;p&gt;astah Scriptが出た時に、これはおもしろいということで、何か作ることにした。例によって、VDM関連でできたら良いな、というものがあったので、それを作ることに。&lt;/p&gt;&lt;p&gt;作ったのは、パッケージに分けられたクラス構造から、パッケージが全くないフラットなクラス構造にしたXMI出力するスクリプト。&lt;/p&gt;&lt;p&gt;何に使うかというと、VDM++にはパッケージの概念がないので、これまでastah→VDMToolsにクラス構造をXMIエクスポートしてくると、パッケージ内のクラスが反映されなかった。&lt;/p&gt;&lt;p&gt;でも、クラス構造をUMLで見る場合はツリー構造になってる方が分かりやすい。そこで、XMI出力する時だけパッケージ構造を取り払うことにした。&lt;/p&gt;&lt;h2&gt;仕様&lt;/h2&gt;&lt;ul&gt;  &lt;li&gt;パッケージを全て取り払ったクラス構造のXMI出力をします&lt;/li&gt;  &lt;li&gt;XMLファイルは、元の.astaファイルがある場所に「exportFlat.xml」という固定ファイル名で出力します&lt;/li&gt;  &lt;li&gt;パッケージ構造を取り払うのは一時的で、元の.astaファイルには反映されません&lt;/li&gt;  &lt;li&gt;パッケージを越えて同じクラス名があった場合は、先に見つかった方が優先されます&lt;br /&gt;
      この時、astahのスクリプトウィンドウ下部に、「duplicate class -&gt; クラス名」と表示されます  &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;使い方&lt;/h2&gt;&lt;ol&gt;  &lt;li&gt;&lt;a href="https://gist.github.com/mas0061/4231525"&gt;ここ&lt;/a&gt;からダウンロードして、ExportFlatClassXMI.jsを任意の場所に置く&lt;/li&gt;  &lt;li&gt;クラス構造を含む.astaファイルを開く&lt;/li&gt;  &lt;li&gt;メニューの [ツール] -&gt; [スクリプト] で、スクリプトウィンドウを表示する&lt;/li&gt;  &lt;li&gt;ここからスクリプトウィンドウでの操作&lt;/li&gt;  &lt;ol&gt;    &lt;li&gt;[ファイル] -&gt; [開く]で、保存したExportFlatClassXMI.jsを指定&lt;/li&gt;    &lt;li&gt;[アクション] -&gt; [実行] でスクリプト実行&lt;/li&gt;  &lt;/ol&gt;&lt;/ol&gt;&lt;h2&gt;制限事項&lt;/h2&gt;&lt;ul&gt;  &lt;li&gt;astahのXMI出力機能を使うため、astah* professionalが必要です&lt;/li&gt;  &lt;li&gt;パッケージを全てなくしてしまうため、パッケージをまたがって同じクラス名があった場合は、      最初に発見したクラスを優先します&lt;/li&gt;  &lt;li&gt;Macにおいて、円マークをファイル名やディレクトリ名に使用した場合の動作は保証できません&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;試行錯誤したとこ&lt;/h2&gt;&lt;p&gt;パッケージのない構造が元ファイルに保存されると困るので、XMI出力した後で保存しないで閉じる→再度開くをしてる。もうちょっとスマートなやり方ないもんかな。&lt;/p&gt;&lt;p&gt;トップのパッケージをスクリプトで取得するのに、全パッケージをループして親がいないパッケージを探索する関数を書いたけど、途中で「astah.getProject()」で取れることに気づいた…。ちなみに、最初は以下のようなコードで取ってた。&lt;/p&gt;&lt;p&gt;&lt;pre class="brush: js"&gt;function getTopPackage() {    packages = astah.findElements(IPackage);        for(var j in packages) {        if (packages[j].getOwner() == null) {            topPacakge = packages[j];        }    }    return topPacakge;}&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;これを使うと、astahでおおよそのクラス構造を書いて、VDMにXMIで持っていくのが便利になった。自分では常用しそうだから、スクリプトじゃなくてプラグインにしちゃった方が良いかな？？？&lt;/p&gt;</content><link href="http://mas0061.blogspot.com/2012/12/astah-scriptxmi.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/7988075207287160513" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/7988075207287160513" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/12/astah-scriptxmi.html" rel="alternate" title="astah Scriptでパッケージを取り払ったXMI出力するスクリプト書いた" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3059539611241096540</id><published>2012-12-07T22:21:00.001+09:00</published><updated>2012-12-07T22:21:23.901+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="astah"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><title type="text">Proxy経由でastahプラグインの開発環境を作る時の注意点</title><content type="html">&lt;p&gt;astahのプラグイン開発環境を作るには、公式の&lt;a href="http://astah.change-vision.com/ja/plugin-tutorial/devenv.html"&gt;開発チュートリアル&lt;/a&gt;があるので、通常は特に迷うことなく環境が作れるはず。&lt;/p&gt;

&lt;p&gt;がっ！世の中には閉鎖的な環境というのがあるもんで、Proxyのある環境ではチュートリアル通りに行かない。
ここでは、そんな環境で注意すべき点を1つ紹介。&lt;/p&gt;

&lt;p&gt;試した環境は、Windows XPのCygwin環境。環境変数のhttp_proxyは設定してあるけど、それではダメ。astahプラグインSDKを置いた場所（ASDK_HOME）以下に設定ファイル（ASDK_HOME/conf/settings.xml）があるので、それを編集する。&lt;/p&gt;

&lt;p&gt;90行目付近に、Proxy関連の設定があるので、それを生かすようにする。&lt;/p&gt;

&lt;pre class="brush: xml"&gt;
  &lt;proxies&gt;
    &lt;proxy&gt;
      &lt;id&gt;optional&lt;/id&gt;
      &lt;active&gt;true&lt;/active&gt;
      &lt;protocol&gt;http&lt;/protocol&gt;
      &lt;username&gt;proxyuser&lt;/username&gt;
      &lt;password&gt;proxypass&lt;/password&gt;
      &lt;host&gt;proxy.host.net&lt;/host&gt;
      &lt;port&gt;80&lt;/port&gt;
      &lt;nonProxyHosts&gt;local.net|some.host.com&lt;/nonProxyHosts&gt;
    &lt;/proxy&gt;
  &lt;/proxies&gt;
&lt;/pre&gt;

&lt;p&gt;動作確認するには、これを設定した上で「astah-launch」してastahが起動すればOK。&lt;/p&gt;

</content><link href="http://mas0061.blogspot.com/2012/12/proxyastah.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3059539611241096540" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3059539611241096540" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/12/proxyastah.html" rel="alternate" title="Proxy経由でastahプラグインの開発環境を作る時の注意点" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-4202122788702852401</id><published>2012-11-23T22:29:00.001+09:00</published><updated>2012-11-23T22:29:16.664+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gadget"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="買い物"/><title type="text">指を加えて早4年、ようやくiPhoneへMNPした</title><content type="html">&lt;p&gt;iPhoneが日本で発売されて4年以上。当初から欲しいと思っていたが、自分の携帯がドコモで、ドコモからiPhoneが出ないため、ずっと奥さんの了承が取れなかった。が、ようやく10/28にiPhone 5へMNP。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103801"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/161103801.jpg" alt="P1070253" width="450" height="338" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103801"&gt;P1070253&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;iPhoneを買えない間、&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;2009年：第3世代iPod touch購入&lt;/li&gt;

  &lt;li&gt;2010年：WiMAXルーター購入&lt;/li&gt;

  &lt;li&gt;今年1月：Softbankの007Zルーターに買い替え&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、外でネットに繋げて色々やる環境は持っていた。加えて、携帯はドコモのガラケーを月1,200で運用していた。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103776"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/161103776.jpg" alt="P1070252" width="450" height="338" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103776"&gt;P1070252&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;満を持して購入したiPhone 5。奥さんの了承が取れたのは、&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;ずっとiPhone欲しいと言っていた（しつこくない程度に…）&lt;/li&gt;

  &lt;li&gt;世の中スマートフォンの流れになっているし、iPhoneがデファクトみたいに見える&lt;/li&gt;

  &lt;li&gt;奥さんが仲の良いママ友が夫婦でドコモからiPhone 5へMNP&lt;/li&gt;

  &lt;li&gt;auがiPhoneを取り扱い始め、さらにスマートバリューを始めた&lt;/li&gt;

  &lt;li&gt;我が家のネットはauひかり&lt;/li&gt;

  &lt;li&gt;自分のおこづかい減額を提案した&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、様々な要因が絡み合ってのこと。ここまで長かった…。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103748"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/161103748.jpg" alt="P1070251" width="450" height="338" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103748"&gt;P1070251&lt;/a&gt; ケースは、iPod touchで使った実績からパワサポのエアージャケットに。posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;そうやってようやく手に入ったiPhone 5で今は快適な暮らしをしてる。ここまで1ヶ月弱使ってきての印象は、&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;やっぱりどこでもネットに繋がるのは快適&lt;/li&gt;

  &lt;li&gt;LTEは本当に速い&lt;/li&gt;

  &lt;li&gt;どこでも繋がる分、ちょっと繋がらなかったり遅いとストレス感じるように…&lt;/li&gt;

  &lt;li&gt;カメラが優秀すぎ&lt;/li&gt;

  &lt;li&gt;iPod touchをずっと使ってるから戸惑わないと思ったけど、結構電話やメッセージの設定周りで右往左往&lt;/li&gt;

  &lt;li&gt;持ち物が激減（ガラケー＋iPod touch＋Wi-Fiルーター → iPhone 5のみ）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という感じかな。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103825"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/161103825.jpg" alt="P1070377" width="450" height="338" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103825"&gt;P1070377&lt;/a&gt; posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;あとは、iPhoneにMNPしてメールアドレスが変わるのきっかけに、キャリアメールを使うのを止めた。iPhoneというか携帯のメールアドレスとして、Google Appsで運用している独自ドメインにメールアドレスを作った。アドレス変わりましたメールをGmailから出せるのは快適だったけど、思っていたより送れない人が多かった。おそらくドメイン指定受信の設定をしているため。これについては、一部の方には申し訳ないけど指定受信設定をしてもらって、他の方は送れないままにしている。直接会う機会があったら設定をお願いするかも。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103733"&gt;&lt;img src="http://kura1.photozou.jp/pub/283/188283/photo/161103733.jpg" alt="IMG_0053" width="338" height="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103733"&gt;IMG_0053&lt;/a&gt; iPhoneのカメラは、夜でもここまで撮れる。posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;(C)mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;何はともあれ、ようやくiPhoneを手に入れた。今回のiPhone 5は、周りにいたドコモユーザーの乗り替えが目立つ。相当数auへMNPしたというニュースを肌で感じたし、実際ドコモを持っていたメリットは安いこととエリアが確かなことぐらい。やっぱり使う端末に魅力がないとツラいのかな、という感じがしている。&lt;/p&gt;
&lt;p&gt;2年後はどうするかな？？？&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://photozou.jp/photo/show/188283/161103714"&gt;&lt;img src="http://kura2.photozou.jp/pub/283/188283/photo/161103714.jpg" alt="IMG_0029" width="338" height="450" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://photozou.jp/photo/show/188283/161103714"&gt;IMG_0029&lt;/a&gt; 荷物減らしのためにも買った。posted by &lt;a href="http://photozou.jp/user/top/188283"&gt;©mas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=mas0061-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=B009GD61VY" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=mas0061-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=B009LKSJS0" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;

</content><link href="http://mas0061.blogspot.com/2012/11/4iphonemnp.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/4202122788702852401" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/4202122788702852401" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/11/4iphonemnp.html" rel="alternate" title="指を加えて早4年、ようやくiPhoneへMNPした" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-8463852504903274881</id><published>2012-08-31T18:52:00.001+09:00</published><updated>2012-08-31T18:52:29.286+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="astah"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="VDM"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">astah Scriptで遊ぼう</title><content type="html">astah*が、JavaScriptでastahにアクセスできるプラグイン「&lt;a href="https://github.com/ChangeVision/astah-script-plugin/" target="_blank"&gt;astah Script&lt;/a&gt;」を出してた。ホントはETロボコンのモデルを書かなきゃいけないから遊んでる場合じゃないんだけど、遊んでたらおもしろかったので…。色々書いてみて遊んだメモを残しておく。&lt;br /&gt;
&lt;br /&gt;
インストールや基本的な動かし方は、公式サイトを見てください。あと、今回作ったスクリプトは別エントリで公開しようと思ってる。例によって、VDM絡みのスクリプト。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
気をつけること&lt;/h2&gt;
&lt;h3&gt;
getNameで取れるのは、JavaScriptのStringではない&lt;/h3&gt;
&lt;div class="p1"&gt;
Javaのjava.lang.Stringじゃないかと。&lt;/div&gt;
&lt;div class="p1"&gt;
文字列比較が == ではできなくてequals使う必要あるし、typeofするとObjectになる。&lt;/div&gt;
&lt;h3&gt;
getProjectで取れる要素の意味&lt;/h3&gt;
&lt;div class="p1"&gt;
開いているプロジェクトのトップ階層がAPI説明で言うところの「起点となるモデル」。&lt;/div&gt;
&lt;div class="p1"&gt;
最初分からなくて、自分で取得するメソッド書いてた…。&lt;/div&gt;
&lt;h3&gt;
JavaScriptのArrayクラスが持つindexOfは使えない&lt;/h3&gt;
&lt;div class="p1"&gt;
なぜだろう？？？そんなメソッドないエラーが出る。&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Tips&lt;/h2&gt;
&lt;h3&gt;
UML版やPro版で可能なモデルの編集にはimportを追加する&lt;/h3&gt;
&lt;div class="p1"&gt;
importPackage(com.change_vision.jude.api.inf.editor);&lt;/div&gt;
&lt;h3&gt;
XMIエクスポートみたいに、ファイルやディレクトリが絡むとMacとWindowsの関係が面倒&lt;/h3&gt;
&lt;div class="p1"&gt;
下のような関数を作って対応。ただし、ファイル名やディレクトリ名に円マーク使った場合は正常に動かない&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;pre class="brush: js"&gt;var dirName = getCurrentDirectory(astah.getProjectPath());

function getCurrentDirectory(fullPath) {
  var enPos = fullPath.lastIndexOf("¥¥");
  var slaPos = fullPath.lastIndexOf("/");
  return fullPath.substring(0, enPos &amp;gt;= slaPos ? enPos + 1 : slaPos + 1);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;
配列に含まれているか？のindexOfは、自分で実装&lt;/h3&gt;
&lt;div class="p1"&gt;
Arrayとastahから取れるStringをもらって判定。仕様はJavaScriptのindexOfと一緒で、見つからなければ-1を返す。&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;pre class="brush: js"&gt;function indexOf(org, element) {
  for (var i in org) {
    if (org[i].equals(element)) {
      return i;
    }
  }
  return -1;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;
astah.close()すると、モデルを書き換えていてもいきなり閉じる&lt;/h3&gt;
&lt;div class="p1"&gt;
保存しますか？ダイアログ出ないので注意&lt;/div&gt;
&lt;div class="p1"&gt;
今回の用途だと、モデルは一時的に書き換えたいだけだから良かった&lt;/div&gt;
&lt;h3&gt;
要求図で、起点モデルから要求の包含関係を辿るスクリプト&lt;/h3&gt;
&lt;div class="p1"&gt;
ただし、satisfyやderiveReqtで繋がる要求まではカバーしない&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;pre class="brush: js"&gt;importPackage(com.change_vision.jude.api.inf.model);

var req = astah.findElements(IRequirement);
for(var i in req) {
  if (req[i].getNestedClasses().length != 0) {
    if (req[i].getOwner().getName() == astah.getProject().getName()) {
      println(req[i].getName());
      printNestClass(req[i], 1);
    }
  }
}

function printNestClass(req, depth) {
  var nestClasses = req.getNestedClasses();
  for(var j in nestClasses) {
    for(var k = 0; k &amp;lt; depth; k++) { print("    "); }
      println("|- " + nestClasses[j].getName());
      if (nestClasses[j].getNestedClasses().length != 0) {
        printNestClass(nestClasses[j], ++depth);
      }
    }
  }
&lt;/pre&gt;
&lt;/div&gt;
&lt;h2&gt;
使ってみて思ったこと&lt;/h2&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;おもしろい、簡単&lt;/li&gt;
&lt;li&gt;JavaScript上の問題なのかJavaの問題なのかが切り分け辛い&lt;/li&gt;
&lt;li&gt;Groovyあたりで書いた方がJavaとの親和性も高くてやりやすいかも&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Groovyで書いておけば、astah Scriptでちょろっと試して、それをプラグインまで持ってくのがラクかも&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
</content><link href="http://mas0061.blogspot.com/2012/08/astah-script.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8463852504903274881" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8463852504903274881" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/08/astah-script.html" rel="alternate" title="astah Scriptで遊ぼう" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-8840872662301640307</id><published>2012-07-25T22:57:00.004+09:00</published><updated>2012-07-26T05:43:31.284+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="日常"/><category scheme="http://www.blogger.com/atom/ns#" term="買い物"/><category scheme="http://www.blogger.com/atom/ns#" term="食"/><title type="text">C.C.レモン ストロングはC.C.レモンではない</title><content type="html">昔からC.C.レモンが好き。学生の頃は良く飲んでた。&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
そんなC.C.レモン好きとしては、一度飲んでみたいと思ってたのがC.C.レモン好きストロング。先日コンビニでようやく買ってみた。&lt;br /&gt;
&lt;br /&gt;
が、これはC.C.レモンではない。別物だ。どっちかというと、オロナミンCの方が味が近い。しかもきわめつけは、そんなに炭酸強くもない…。&lt;br /&gt;
&lt;br /&gt;
次買うことはないな。と、初めてiPadから更新してみた。</content><link href="http://mas0061.blogspot.com/2012/07/cc-cc.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8840872662301640307" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/8840872662301640307" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/07/cc-cc.html" rel="alternate" title="C.C.レモン ストロングはC.C.レモンではない" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832341384774868997.post-3892050213515586689</id><published>2012-07-11T22:38:00.001+09:00</published><updated>2012-07-11T22:38:40.086+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><category scheme="http://www.blogger.com/atom/ns#" term="技術"/><title type="text">MySQL 5.1系から5.5系にダンプ→復元する時は文字コード設定に気をつける</title><content type="html">&lt;p&gt;先日、管理しているサーバーの移転をした時に、MySQLのバージョン違いでハマった話。&lt;/p&gt;
&lt;p&gt;移転前のサーバーには、MySQLの5.1.xがインストールされてて、いくつかのDBがある状態だった。で、サーバー移転するために、まずは全てのDBをダンプした。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;% mysqldump -u root -x --all-databases &amp;gt; mysqlDump.sql&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;んで、このファイルを新サーバーにコピーして復元。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;% mysql -u root -p &amp;lt; mysqlDump.sql&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この時点で、MySQLをコマンドラインから見ると問題なくデータが復元されてた。で、もろもろのWebサービスも移転したんだけど、唯一Java+Tomcat+Apache+MySQLな構成のWebサービスだけ挙動が不審。&lt;/p&gt;
&lt;p&gt;Javaから検索に行っても正常に検索されず、updateをすると文字化け、でもupdateしたデータは検索できる。と、明らかに文字コード関連で変な挙動をしている。&lt;/p&gt;
&lt;p&gt;ダンプ→復元時にDBの文字コードが反映されなかったかな？と思って見たけど、移行前後ともにUTF-8。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;mysql&amp;gt; show create database DB名&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;結局原因は、MySQL 5.5からmy.cnfに対する文字コード設定が変わったことだった。元々、my.cnfには [mysql]、[mysqld]共に&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;default-character-set=utf8&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;としてたんだけど、MySQL 5.5からは [mysqld] のみ&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;character-set-server=utf8&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;じゃないとダメだった。設定し直して、MySQLを再起動したら無事動作するようになった。それにしても、こんな微妙な仕様変更しなくても良いのに…。&lt;/p&gt;
&lt;p&gt;【参考サイト】 &lt;a href="http://d.hatena.ne.jp/littlebuddha/20110524/1306208820"&gt;MySQL 5.1 系と MySQL 5.5 系の文字コード - make world&lt;/a&gt;&lt;/p&gt;

</content><link href="http://mas0061.blogspot.com/2012/07/mysql-5155.html#comment-form" rel="replies" title="0 件のコメント" type="text/html"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3892050213515586689" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/7832341384774868997/posts/default/3892050213515586689" rel="self" type="application/atom+xml"/><link href="http://mas0061.blogspot.com/2012/07/mysql-5155.html" rel="alternate" title="MySQL 5.1系から5.5系にダンプ→復元する時は文字コード設定に気をつける" type="text/html"/><author><name>mas</name><uri>http://www.blogger.com/profile/18009089976609295893</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="http://4.bp.blogspot.com/_z__Wwgo00LA/SqJtUsX9YwI/AAAAAAAAAAo/QhytR49k1Ss/S220/+ring.jpg" width="32"/></author><thr:total>0</thr:total></entry></feed>