<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>あぁ そうだった</title>
        <link>http://passing.breeze.cc/mt/</link>
        <description>つい毎度調べてしまうことをメモするページ</description>
        <language>ja</language>
        <copyright>Copyright 2011</copyright>
        <lastBuildDate>Fri, 30 Dec 2011 22:18:51 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>redmine 1.3.0にしたら wiki絡みの展開順が変わってた</title>
            <description><![CDATA[自作のwikiマクロの引数で、wikiリンクと同じ記法でリポジトリ上のリソースを指定させている。<br />

<pre class="prettyprint">{{macro(source:path/to/file)}}
</pre>

redmine 1.3.0からwikiリンクとマクロの展開順が変わり、先にwikiリンクが処理されるようになったみたい。<br />冒頭のマクロ引数に対してHTMLリンクに展開済の文字列（HTML）が渡ってくるようになった。<br /><br />

<pre class="prettyprint">  Redmine::WikiFormatting::Macros.register do
    desc '略'
    macro :some_macro do |wiki_content_obj, args|
    end<br />  end <br /></pre>

1.2.xの場合、args[0]に「source:path/to/file」<br />1.3.0の場合、args[0]に「&lt;a href="/projects/sample/repository/entry/path/to/file" class="source"&gt;source:path/to/file&lt;/a&gt;」<br />という文字列が渡ってくる。

<br /><br />「!」をつけると展開抑止になるので当面これで回避。<br /><pre class="prettyprint">{{macro(!source:path/to/file)}}
</pre>

<br />あるいは引数の受け取り方を変えて<br /><pre class="prettyprint">{{macro(param=source:path/to/file)}}
</pre>


とすればHTMLリンクに展開されず引数を受け取れる。<br /><br /><br /> ]]></description>
            <link>http://passing.breeze.cc/mt/archives/2011/12/redmine-130-wiki.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2011/12/redmine-130-wiki.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">redmine</category>
            
            
            <pubDate>Fri, 30 Dec 2011 22:18:51 +0900</pubDate>
        </item>
        
        <item>
            <title>jenkinsの DRY pluginで CPD</title>
            <description><![CDATA[<a href="https://www.jenkins-ci.org/">jenkins</a>を使って継続的インテグレーションを行なっている。<br />（<a href="http://passing.breeze.cc/mt/archives/2006/12/post-13.html">数年前</a>はCruiseControl .NETを使っていたのだけど、hudsonを試したときユーザフレンドリーさに打たれて乗り換えた）<br /><br />以前からmakeなどで1手順ビルドできる仕組みを作ることにはこだわりがあった。<br />たけど、単にビルドの1手順化だけでなく、<br /><ul><li>　複数の環境でビルドしたものを統合（CIサーバに集約）</li><li>　リポジトリのコミットとビルドを結びつけ（さらにITSのチケットに結びつく）</li><li>　複数の環境で自動テスト実行、その結果とビルドの結びつけ</li><li>　ビルドのログやテストのログなど記録をとる（確認したいときにすぐ辿れる）</li></ul>

<div style="float: right; margin: 1em;">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/482228395X/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51w7z1%2BBLXL._SL160_.jpg" alt="継続的インテグレーション入門 開発プロセスを自動化する47の作法" style="border: none;" /></a>

</div>


ということを手間なく繰り返し可能とする仕組みには大きな意味があると思う。<br /><br />SCM、自動テスト、ITSそれぞれ単独でも役立つけど、<br />ビルドとこれらを結びつけられるCIの存在は大きい。<br /><br /><br />で、そのビルドと結びついた記録を取りたいものの1つがコードメトリクス。<br />気にしている指標はいくつかあるけど、コードクローンについて。<br /><br />コードクローンの検出に<a href="http://pmd.sourceforge.net/cpd.html">CPD</a>（PMD）を使っている。<br />CPDのレポートxmlをjenkinsの<a href="https://wiki.jenkins-ci.org/display/JENKINS/DRY+Plugin">DRY Plugin</a>に食わせるだけ。ビルドごとの<a href="https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plug-ins#StaticCodeAnalysisPlug-ins-trend">静的解析の結果をとりまとめてくれるプラグイン</a>でトレンドを見ることができる。<br />正直に言えばjenkinsのビュー内でコードクローン部分そのものを見るのはあまり意味が無いというかかえって見づらいと思っている。eclipseにPMDプラグインをインストールしてクローン部分にアクセスする方が便利。<br />あくまでjenkins上では時系列（ビルド）でコードクローンの増減を概観したい。<br /><br /><br />ここの環境ではjenkinsのmasterをlinux上で動かしている。<br />CPDの実行はWindowsスレーブ上で行なっている。<br />入力はSJIS（MS932）でエンコードされたjavaソース。<br />jenkinsのslave配下でjavaモジュールのビルドをantで行う。同様にantでCPDのレポートを作成している。<br /><br />PMDのlib下jarをCLASSPATHに指定してantタスクを定義<br />
<pre class="prettyprint" style="overflow: scroll;">    &lt;path id="cp.cpd"&gt;
        &lt;fileset dir="${pmd.lib}"&gt;
            &lt;include name="*.jar"/&gt;
        &lt;/fileset&gt;
    &lt;/path&gt;

    &lt;taskdef name="cpd" classpathref="cp.cpd" classname="net.sourceforge.pmd.cpd.CPDTask" /&gt;<br />
</pre><br />cpdタスクを実行<br />

<pre class="prettyprint" style="overflow: scroll;">    <br />        &lt;cpd
            encoding="Windows-31J"
            minimumTokenCount="100"
            format="xml"
            language="java"
            outputFile="${reports.cpd}/cpd.xml"&gt;
            &lt;fileset dir="${src.dir}"&gt;
                &lt;include name="**/*.java"/&gt;
            &lt;/fileset&gt;
        &lt;/cpd&gt;
</pre>

<br />で、後はjenkinsのワークスペースに出力されたxmlのpathをDry Pluginの入力に設定するだけ。<br /><br /><br />当初、cpdタスクの入力エンコーディングを"MS932"にしていた。出力XMLのxml宣言にあるencodingも"MS932"になるのだけどこのままDry Pluginに読み込ませようとするとエラーになってしまう。<br />Dry Pluginのソースをgithubからcloneして、自動テストの入力xmlのencodingをMS932に書き換えて実行したらスタックトレースに<br />「Invalid encoding name "MS932".」と出ていた。<br />org.apache.xerces.*が使われるから？<br />
<br /><br />


環境：<br /><br />Windows 7 x64<br />　JDK6 u26 x86<br />　ant-1.8.2<br />CentOS 5.6 x64<br />　JDK u26 x64<br />　ant-1.8.1<br />
<br /> 
]]></description>
            <link>http://passing.breeze.cc/mt/archives/2011/09/jenkins-dry-plugin-cpd.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2011/09/jenkins-dry-plugin-cpd.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">jenkins</category>
            
            
            <pubDate>Sat, 03 Sep 2011 12:40:43 +0900</pubDate>
        </item>
        
        <item>
            <title>MT5に移行した</title>
            <description><![CDATA[<a href="http://passing.breeze.cc/mt/archives/2010/09/gae.html">「GAEに移行した」</a>で書いたようにここのサイトは、手元のサーバ上においてMTで編集/生成した静的HTMLを、GAEのアプリケーションにリソースとして組み込みServletで返しているだけなので、MT4でもMT5でも関係ないといえばない。<br /><br />MT4のときはSQLiteを使っていたので、MySQLに移行せざるを得なかった。<br /><ul><li>[MT4]システムメニューからバックアップ</li><li>[MT4]MySQLにMT用のDBとユーザを作成</li><li>[MT4]mt-config.cgiを書き換えてMySQLを参照する設定に。</li><li>[MT4]この状態でmt.cgiにアクセスすると新規セットアップになるので、適当に。</li><li>[MT4]システムメニューからバックアップを復元</li><li>[MT5]MT5のファイルをおいてアップグレード→再構築<br /></li></ul>てな感じで移行自体はできたんだけど、よく見るとカテゴリのリンクがまったく張られていない。<br />なんでかと思ったら全ての記事からカテゴリの情報が消えてた!!<br /><br />ちまちまちまちま全記事にカテゴリを設定しなおすはめに。<br />記事の一括編集でカテゴリ設定できることに途中まで気がつかず無駄にしんどかった。あーぁ。<br /><br />結果的に過去のエントリを見返すことになったのだけど、今も使ってるアプリ/OSSが結構古いバージョンのときから使ってたので驚いた。<br /><br />環境：<br />　CentOS 5.5 x86<br />　　MovableType 5.04<br /><br /><br /> ]]></description>
            <link>http://passing.breeze.cc/mt/archives/2011/01/mt5.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2011/01/mt5.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">other</category>
            
            
            <pubDate>Thu, 20 Jan 2011 23:47:52 +0900</pubDate>
        </item>
        
        <item>
            <title>Arduinoと ATtiny2313で SPI</title>
            <description><![CDATA[気がついたら前回工作してから半年もたってた。<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2011/01/SN3E0090-90.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2011/01/SN3E0090-90.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2011/01/SN3E0090-thumb-320x240-90.jpg" alt="SN3E0090.jpg" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="240" /></a></span><br />ArduinoからATtinyに指示を送ってモーターの制御をする、てなことをやるつもり。で、まずはSPIで指示を送り、これに従って何かする、ことをやってみたい。<br /><br />　※以下の内容は単にやってみたことの記録です。すべて無保証で、障害・損害・不利益・不都合に対し、筆者は一切の責任を負いません。<br /><br />SPI自体については<a href="http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%83%9A%E3%83%AA%E3%83%95%E3%82%A7%E3%83%A9%E3%83%AB%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9">このへん</a>を参照。<br />なんでSPIを選んだかというと、<br />I2Cよりも、仕組みが単純、転送速度も速くできるみたいだから。<br /><br /><ul><li>Arduinoをマスター、AVR ATtiny2313Vをスレーブとする。</li><li>ATtiny2313にはSSがないみたいなので、PB4をLOWにしたらスレーブ選択、という体（てい）で。</li><li>マスターから送ったデータ8ビットを、スレーブ側でLED点灯で表現（面倒だったのでLEDは4つ。下位4ビットだけ・・・）＆前回データを反転したものをマスターに返すことで、通信がうまくいったことを確認する。Arduino側はスレーブから受け取ったデータをSerialに書きだす。</li></ul>ATtiny2313は、外部クリスタル8Mhzを使用かつCKDIV8を無効にしているので、システムクロックは8Mhz。<br />電源はUSBからArduinoに給電。ATtinyはArduinoから出ている5Vを使う。<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2011/01/spi_test-93.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2011/01/spi_test-93.html','popup','width=1000,height=750,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2011/01/spi_test-thumb-320x240-93.png" alt="spi_test.PNG" class="mt-image-none" style="" width="320" height="240" /></a></span><br /><br /><font style="font-size: 1.5625em;">マスター：</font><br />最近公開されたarduino 0022ではSPIが標準ライブラリになっているので、マスター側はこれを利用した。<br /><br />
<pre style="overflow: scroll;" class="prettyprint">#include &lt;SPI.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />void setup()<br />{<br />  Serial.begin(9600);<br /><br />  SPI.begin();<br />  SPI.setBitOrder(MSBFIRST);<br />  SPI.setClockDivider(SPI_CLOCK_DIV8);<br />  SPI.setDataMode(SPI_MODE0);<br /><br />  pinMode(2, OUTPUT);<br />  digitalWrite(2, HIGH);<br /><br />  uint8_t d = 0;<br />  for (;;)<br />  {<br />    digitalWrite(2, LOW);<br />    uint8_t a = SPI.transfer(d);<br />    digitalWrite(2, HIGH);<br />  <br />    Serial.print(d, HEX);<br />    Serial.write(", ");<br />    Serial.println(a, HEX);<br />    d++;<br />    _delay_ms(300);<br />  }<br />}<br /><br /><br />void loop()<br />{<br />}<br /><br /></pre>
<br /><font style="font-size: 1.5625em;">スレーブ：</font><br /><br />

<div style="float: right; margin: 1em;">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789846040/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41hUli2JMiL._SL160_.jpg" alt="試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (SkiLL up mycomputerシリーズ)" style="border: medium none;" /></a>
</div>
スレーブ側は、ATtinyのデータシートに、アセンブリ言語で書かれた実装例があるので、ニーモニックの説明を見つつC言語に書き下してみた。<br />



ニーモニックについてはデータシートに説明がある。<br /><br />外部割り込みがどういう挙動か知りたかったこともあり、SS相当のPB4で割り込みがかかるようにした。<br />PB4がLOWになったら受信開始。8ビット受信する。受信にあたりマスターへの送信データは、前回受け取ったデータをビット反転したものとした。特に意味はない。<br />受け取った8ビットのうち下位4ビットのON/OFFをPB0～PB3につないだLEDに反映する。<br /><br /><br clear="all" />
<pre style="overflow: scroll;" class="prettyprint">#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define	USCK	PB7<br />#define	MOSI	PB5<br />#define	MISO	PB6	<br /><br /><br />volatile uint8_t triggered = 0;<br /><br />ISR(PCINT_vect)<br />{<br />	if (!bit_is_set(PINB, 4))<br />	{<br />		triggered = 1;<br />	}<br />}<br /><br />uint8_t	spi_slave_receive(uint8_t send)<br />{<br />	USIDR = send;<br />	USISR = (1&lt;&lt;USIOIF);<br />	while (!(USISR &amp; (1&lt;&lt;USIOIF)));<br />	uint8_t	receive = USIDR;<br /><br />	return	receive;<br />}<br /><br />void	spi_slave_init()<br />{<br />	USICR = (1&lt;&lt;USIWM0)|(1&lt;&lt;USICS1);<br /><br />	// MISO(PB6)は出力に<br />	DDRB |= _BV(MISO);<br />	// MOSI(PB5)/USCKは入力に<br />	DDRB &amp;= ~(_BV(MOSI) | _BV(USCK));<br /><br />	// MOSI(PB5)/USCK(PB7)プルアップ<br />	PORTB |= (_BV(MOSI) | _BV(USCK));<br />}<br /><br />int main(void) <br />{<br />	spi_slave_init();<br /><br />	// LED(PB0..PB3)は出力に<br />	DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3);<br /><br />	// LEDを消灯<br />	PORTB &amp;= ~(_BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3));<br /><br />	// PB4プルアップ<br />	PORTB |= _BV(PB4);<br /><br />	// PB4の変化割込み<br />	GIMSK |= _BV(PCIE);<br />	PCMSK |= _BV(PB4);<br /><br />	sei();<br /><br />	uint8_t  d = 0x00;<br />	for (;;)<br />	{<br />		while (!triggered)<br />		{<br />		}<br /><br />		// PB4がLOWになった<br /><br />		// clear<br />		triggered = 0;<br /><br /><br />		// 1バイト受信＋送信<br />		d = spi_slave_receive(~d);<br /><br /><br />		// display bits as LED<br />		for (int i = 0, check = 1; i &lt; 4; i++, check*=2)<br />		{<br />			if (d &amp; check)<br />			{<br />				PORTB |= check;<br />			}<br />			else<br />			{<br />				PORTB &amp;= ~(check);<br />			}<br />		}<br />	}<br />}<br /><br /></pre>
<br /><font style="font-size: 1.5625em;">おわり：</font><br />ようやくマイコン間で8ビット転送できるようになった。<br />普段やってることは、重層な抽象化レイヤの上に成り立っているので、8ビットどころかネットワークを超えて簡単に送り放題だし、RPCでもなんでもいくらでもやりようがある。たまにこうやってプリミティブなところから積み上げるのもいい訓練になるなと思った。<br /><br /><font style="font-size: 1.5625em;">環境：</font><br />　Windows 7 x64 Ultimate<br />　　arduino 0022<br />　　AVR Studio 4.18 + SP3<br />　　WinAVR 20100110<br />Arduino Duemilanove <br />AVR ATtiny 2313V<br /><br /><br /> <div><br /></div><div><br /></div>]]></description>
            <link>http://passing.breeze.cc/mt/archives/2011/01/arduino-attiny2313-spi.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2011/01/arduino-attiny2313-spi.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">arduino</category>
            
            
            <pubDate>Sat, 08 Jan 2011 16:04:37 +0900</pubDate>
        </item>
        
        <item>
            <title>GAEに移行した</title>
            <description><![CDATA[<div style="float: right; margin: 1em;" http:="" www.amazon.co.jp="" exec="" obidos="" asin="" 4797357606="" passingbreeze-22="" ref="nosim/&quot;" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/512pNjQz%2BKL._SL160_.jpg" alt="すっきりわかるGoogle App Engine for Javaクラウドプログラミング" style="border: medium none;" />
<br />
<br />
<br />
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798026999/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41uevmhlTAL._SL160_.jpg" alt="オープンソース徹底活用 Slim3 on Google App Engine for Java" style="border: medium none;" /></a>
</div>

今年の夏は暑かったせいか、このブログをホストしているサーバが時々ハングしていた。<br />ので、なんとなく思い立ってGoogle App Engineに移行した。<br /><br />ほぼ静的htmlしか公開していないサイトなので、静的ファイルのみのアプリケーションをGAEでホストするというゴージャス仕様。<br /><br />短時間でなんとかしたいなと考え、まずは以下のように。<br /><br /><ul><li>MTはperlで書かれているけど、これをGAE上で動くようにするのは道のりが遠いので、コメント/トラックバックの機能は閉じることにする。</li><ul><li>MTの管理画面で両者を無効にして、サイト全体を再構築。<br /></li></ul><li>GAEアプリケーションのwar/ディレクトリ配下に公開する静的ファイルを全部置く。</li><li>デプロイする。</li></ul>GAEのアカウントとったりアプリケーション登録したりと、こまごまやることはあったけど、静的ファイルを公開するだけならこれでおしまい。<br /><br />・・・なのだけどハマったことがいくつか。<br /><br /><ul><li>静的ファイル数の制限が3000個。</li><ul><li>cgiやライブラリを除くMTのファイル（画像やテーマなど）もまとめてデプロイしようとしたのだけど、ファイル数制限を超えてデプロイできなかった。使ってないファイルを調べてちまちま削除した。</li></ul><li>ファイル数が多かったのでデプロイに妙に時間がかかった。</li><ul><li>ftpやscpでアップロードするのとは状況が違い、単純にファイルとして格納されるわけではないそうで。自分ところではデプロイ開始から50分かかってしまった。</li></ul></ul><br />毎回デプロイに一時間近くかかってはこまるよなぁ、と。<br />ということで現在は以下のように変更。<br /><br /><ul><li>対象となる静的ファイルを、pathのハッシュを基準にいくつかのzipアーカイブに分割して保存。（現在は16分割している）</li><li>すべてのURLを受け付けるサーブレットを作成。</li><li>リクエストされたパスからハッシュ値をとって格納zipアーカイブを決定。</li><li>zipアーカイブから指定されたパスのリソースを取り出して応答。</li><li>静的コンテンツ1つ1つを、毎アクセスごとにzipから読み込んではさすがに無駄があるので、キャッシュAPIを使う。</li></ul>てなことをしたら、デプロイも数十秒で収まるようになった。<br /><br />アプリケーションが自分でOpenするファイルは、リソースファイルとしてデプロイしておく必要がある。<br /><br />ここのサイト用アプリは次のようなディレクトリ構成になっていて、<br /><br />gae-static-content/<br />&nbsp; src/<br />&nbsp;&nbsp;&nbsp; サーブレットなどのソース<br />&nbsp; war/<br />&nbsp;&nbsp;&nbsp; static-contents/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passing-static-0.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passing-static-1.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passing-static-2.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passing-static-4.zip以下 -f.zipの16分割。<br />&nbsp;&nbsp;&nbsp; WEB-INF/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; classes/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lib/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appengine-web.xml<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.properties<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web.xml<br /><br />war/static-contens/*.zipをリソースファイルとしてデプロイするために、appengine-web.xmlに以下のように指定している。デフォルトではstatic-fileとリソースファイルの両方としてデプロイされるそうなので、静的ファイルからは除外、とした。<br /><br /><pre>	&lt;static-files&gt;<br />	    &lt;exclude path="/static-contents/*" /&gt;<br />	&lt;/static-files&gt;</pre><br />MTで記事編集→<br />再構築してhtml生成→<br />静的ファイルのpathに応じて分割アーカイブ→<br />アプリケーションとしてデプロイ<br /><br />てな流れ。分割アーカイブはperlで書いたスクリプトで一括処理。<br /><br />処理と作業の単純化のため、pathのハッシュ基準にzip分割しているのだけど、ファイルサイズを考慮していないのでそれぞれのアーカイブがGAEのファイルサイズ制限にひっかかってしまう可能性がある。が、今のところ最も大きいzipでも3MBなので、まあいいかと思っている。<br /><br /><br />環境：<br />　Windows 7<br />
　　JDK6u20<br />　　Eclipse 3.6<br />　App Engine SDK 1.3.7<br /><br /><br /> ]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/09/gae.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/09/gae.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">gae</category>
            
            
            <pubDate>Wed, 15 Sep 2010 23:07:59 +0900</pubDate>
        </item>
        
        <item>
            <title>Windows 2008な DC相手に keytabで kinitする話</title>
            <description><![CDATA[<div style="float: right;">
<!-- Rakuten Dynamicad FROM HERE -->
<script type="text/javascript">
<!-- 
rakuten_template = "s_160_600_img";
rakuten_affiliateId = "0c9e60e9.29610818.0c9e60ea.fb9fb61c";
rakuten_service = "ichiba";
rakuten_target = "_blank";
rakuten_color_bg = "FFFFFF";
rakuten_color_border = "CCCCCC";
rakuten_color_text = "000000";
rakuten_color_link = "0000FF";
rakuten_color_price = "CC0000";
//--></script>
<script type="text/javascript" src="http://dynamic.rakuten.co.jp/js/rakuten_dynamic.js">
</script>
</div>


統合Windows認証用にktpass.exeを用いてサービス用のkeytabを作成。<br /><blockquote><a href="http://passing.breeze.cc/mt/archives/2008/12/active-directory-apache-window.html">Active Directoryと apacheで 統合Windows認証</a><br /></blockquote>kinitにこのkeytabを指定することで、パスワードを入力することなしでTGTを得ることができる。<br /><br />W2k8がDCな環境（krb5.confにおいて当該REALMのkdcにこの2008を指定している状態）で、上記エントリで作成したkeytabをkinitしようとすると、以下のエラーになってしまった。<br /><br /><blockquote>kinit(v5): Key table entry not found while getting initial credentials<br /></blockquote>下のリンクは、2000と2003環境の話だけど、要領は同じみたい。<br /><a href="http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-000A9D75">IBM Tivoli | Microsoft Windows Server 2003環境でのWindows統合認証設定の考慮点 (Tivoli-08-030)</a>:<br /><br />クライアント側が合わせる場合：<br />上記keytabはRC4で暗号化されたエントリが入っているので、krb5.conf側で暗号化にRC4を明示する。<br /><br /><blockquote>[libdefaults]<br />default_tkt_enctypes = rc4-hmac<br />default_tgs_enctypes = rc4-hmac<br /></blockquote><br />keytab側をAESで暗号化する場合：<br />以下のようにして暗号化にAESを明示する。<br /><blockquote><br />ktpass -princ HTTP/somehost.example.com@EXAMPLE.COM -mapuser マップするユーザ名 -crypto AES256-SHA1 -ptype KRB5_NT_SRV_HST +rndPass -out 適当なファイル.keytab</blockquote><br />複数の暗号化でエントリを作成してもいいかも。だけど、どうせなら暗号強度が強い方に倒した方がいいのかなーと。<br /><br /><blockquote>$ kinit -kt keytabファイル HTTP/somehost.example.com<br />$ klist<br />Ticket cache: FILE:/tmp/krb5cc_9999<br />Default principal: HTTP/somehost.example.com@EXAMPLE.COM<br /><br />Valid starting Expires Service principal<br />08/30/10 19:02:41 08/31/10 05:02:42 krbtgt/EXAMPLE.COM@EXAMPLE.COM<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renew until 08/31/10 19:02:41<br /><br /><br />Kerberos 4 ticket cache: /tmp/tkt9999<br />klist: You have no tickets cached<br /></blockquote><br />まずはこの状態で、SASL-GSSAPIによる認証を用い、ldapsearchでAD上のオブジェクトを検索できるとこまで確認した。つづきはそのうち。<br /><br /><br />環境：<br />Windows Server 2008 Standard x64<br />CentOS 5.5<br />　krb5-workstation-1.6.1-36.el5_5.5<br />　krb5-libs-1.6.1-36.el5_5.5<br /><br /><br />]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/08/windows-2008-dc-keytab-kinit.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/08/windows-2008-dc-keytab-kinit.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">activedirectory</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">kerberos</category>
            
            
            <pubDate>Mon, 30 Aug 2010 21:35:02 +0900</pubDate>
        </item>
        
        <item>
            <title>astah*で図を書いて redmineの wikiに埋め込むプラグインを考える その2</title>
            <description><![CDATA[<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/08/embed-astah-87.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/08/embed-astah-87.html','popup','width=639,height=460,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/08/embed-astah-thumb-320x230-87.png" alt="embed-astah.png" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="230" /></a></span>なんとなくアイデアを書いてからもう4カ月。書いたっきり手つかずで放置してたけど、突然やる気になってみた。<br /><br /><a href="http://passing.breeze.cc/mt/archives/2010/05/astah-redmine-wiki-1.html">astah*で図を書いて redmineの wikiに埋め込むプラグインを考える その1</a><br /><br />ソースはgithubに。例によって無保証です。<br /><a href="http://github.com/tckz/redmine_wiki_astah">tckz's redmine_wiki_astah at master - GitHub</a><br /><br />前のエントリに書いたように、astaファイルから図をエクスポートするのは非常に時間がかかる。だから、wikiマクロでは、エクスポート対象astaファイルをDBに記録するだけにした。そして別途cronなどを使ってエクスポート処理を動かす、という流れ。<br /><br /><font style="font-size: 1.5625em;">主なfeature</font><br /><br /><ul><li>wikiマクロ、{{astah_diagram}}を追加。</li><li>astaファイルは、public配下に置いたものまたは、リポジトリに入れたものを指定できる。</li></ul><font style="font-size: 1.25em;">{{astah_diagram}}マクロ</font><br /><br />
<pre>    {{astah_diagram(public:foo.asta, namespace/diagram)}}<br />    {{astah_diagram(source:/repo/path/foo.asta, namespace/diagram)}}<br />    {{astah_diagram(option=value...,public:foo.asta, namespace/diagram)}}<br /><br /></pre><ul><li>astaファイル：</li><ul><li>public:path/to/.asta</li><ul><li>RAILS_ROOT/public/配下に置いた.astaを指定する。</li><li>RAILS_ROOT/public/sample.astaなら、指定する値はpublic:sample.asta<br /></li></ul><li>source:repo/path/to/.asta</li><ul><li>リポジトリに格納したastaを指定する。プロジェクトにリポジトリがないと意味がない。</li><li>wikiのsourceリンク展開と同じように記述。</li><li>リポジトリの直下にあるsample.astaなら、source:sample.asta<br /></li></ul></ul><li>図のpath：</li><ul><li>Asta*で図をエクスポートした際のpathに準ずる。</li><li>図や名前空間に「/」が含まれると、エクスポートの際に「_」に変換される。ので、マクロに指定する値も「_」に変換した値とする。他にもあるかもしれないが不明。<br /></li></ul></ul><pre>オプション：<br /></pre>

<ul><li>align=value</li><ul><li>埋め込まれた図のIMG要素に追加するalign属性</li><li>例：right, left</li></ul></ul>
<ul><li>width=value</li><ul><li>埋め込まれた図のIMG要素に追加するwidth属性</li><li>例：100px, 100%<br /></li></ul></ul>
<ul><li>height=value</li><ul><li>埋め込まれた図のIMG要素に追加するheight属性</li><li>例：100px, 100%</li></ul></ul>
<ul><li>target={_blank|any}</li><ul><li>埋め込まれた図のIMG要素に追加するtarget属性</li><li>別ウィンドウで開くなら_blank</li></ul></ul>
<br /><font style="font-size: 1.5625em;">インストール</font><br /><br />事前に、astah（のGUI）を実行可能な状態に。↓のエントリで書いたように、図のエクスポートにはGUIが動くように、DISPLAYとライセンスを適切に設定する必要がある。<br /><a href="http://passing.breeze.cc/mt/archives/2010/05/astah-redmine-wiki-1.html">astah*で図を書いて redmineの wikiに埋め込むプラグインを考える その1</a><br /><br />1. プラグインをRAILS_ROOT/vendor/plugins/配下に置く。<br />例<br />&nbsp;&nbsp;&nbsp; #{RAILS_ROOT}/vendor/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugins/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redmine_wiki_astah/<br />2. redmine_wiki_astah/run-astah.shを環境に合わせて編集する。<br />&nbsp;&nbsp;&nbsp; ASTAH_HOME : Astah*を展開したディレクトリを設定。astah-pro.jarがあるディレクトリ。<br />&nbsp;&nbsp;&nbsp; DISPLAY&nbsp;&nbsp;&nbsp; : 当該環境のディスプレイをポイントする。自分ところでは前のエントリのとおり、vncserverを使っている。<br />3. プラグインが使うテーブルを準備。<br />　　rake db:migrate:plugins RAILS_ENV=production<br />4. Redmineを再起動<br />5. 管理者でredmineにログインする。<br />6. プラグインの設定画面で'secret key'に適当な文字列を設定する。<br />7. 図のエクスポートを定期的に行うようセットアップする。<br /><br /><font style="font-size: 1.5625em;">図をエクスポートする</font><br /><br />wikiに埋め込まれたastaをエクスポートして実際の図イメージを作成する。<br />Astah.export_diagrams()を定期的に実行する必要がある。<br /><br />こんな感じで。<br />#{RAILS_ROOT}/script/runner Astah.export_diagrams -e production<br /><br />エクスポートしたイメージをredmineを実行しているユーザから参照できるよう、実行ユーザに注意。<br /><br /><font style="font-size: 1.5625em;"><br />おわり</font><br /><br />astaにたくさん図が含まれるとエクスポートに何分もかかってしまう。<br />図のID（astaファイル中の内部的なID。APIで取得できる）があらかじめわかっていれば、特定の図だけをエクスポートすることで短縮もできるが・・・・。<br />
先のエントリに書いたように、大き目の図が多いせいでwikiに埋め込むと小さい。widthを付けることで収まりはよくなるが、リンクをクリックして図だけを表示しないと読み取るのは難しいかも。<br /><br /><font style="font-size: 1.5625em;">環境：</font><br />
&nbsp; CentOS 5.5 i386<br />&nbsp;&nbsp;&nbsp; ruby-1.8.7-p299(from source)<br />&nbsp; &nbsp; &nbsp; redmine-1.0.0<br />
&nbsp; &nbsp; &nbsp; sqlite3-ruby (1.3.1)<br />&nbsp; &nbsp; sqlite-3.7.0-1<br />&nbsp; &nbsp; astah* pro 6.2<br />
<!-- Rakuten Dynamicad FROM HERE -->
<script type="text/javascript">
<!-- 
rakuten_template = "200_200_img";
rakuten_affiliateId = "0c9e60e9.29610818.0c9e60ea.fb9fb61c";
rakuten_service = "all";
rakuten_target = "_blank";
rakuten_color_bg = "FFFFFF";
rakuten_color_border = "BF0000";
rakuten_color_text = "000000";
rakuten_color_link = "0000FF";
rakuten_color_price = "CC0000";
//--></script>
<script type="text/javascript" src="http://dynamic.rakuten.co.jp/js/rakuten_dynamic.js">
</script>
<!-- Rakuten Dynamicad TO HERE -->

<br /><br /><br /> <div><br /></div>]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/08/astah-redmine-wiki-2.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/08/astah-redmine-wiki-2.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">astah</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">jude</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">redmine</category>
            
            
            <pubDate>Sun, 22 Aug 2010 21:30:00 +0900</pubDate>
        </item>
        
        <item>
            <title>arduinoと MP4212でモータを回す</title>
            <description><![CDATA[前回の「<a href="http://passing.breeze.cc/mt/archives/2010/06/arduino-xbee.html">ラジコン風</a>」ではモーターの駆動に、TA7219Pを使った。<br />ネットをうろつくと、モータの駆動にはパワーMOSFETというのを使うそうで、<a href="http://www.geocities.jp/mimiin/tips/fet/fet.html">この辺</a>を参考にうなってみた。<br /><br />回すモータは、マブチモーターのRE260。<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0076-78.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0076-78.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0076-thumb-240x180-78.jpg" alt="SN3E0076.JPG" class="mt-image-none" style="" width="240" height="180" /></a></span><br />タミヤのハイスピードギヤボックス。<br />これ、ユニバーサルプレートの穴と、ギヤボックスのネジ穴位置がびみょーに合わない。<br />カットするしかないのか、とも思ったが今はモータを固定できればいいので、テストベッド的な感じで。<br /><br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0078-81.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0078-81.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0078-thumb-240x180-81.jpg" alt="SN3E0078.JPG" class="mt-image-none" style="" width="240" height="180" /></a></span><br /><a href="https://www.marutsu.co.jp/user/shohin.php?p=55160">MP4212</a>は、NchとPchのMOSFETが2つずつパッケージされていて、なんとなく扱いやすそうだと思ってこれにした。4Vで駆動できるしRE260なら定格に収ま
りそうだし。<br /><br />FETは燃えるぞ壊れるぞ、という話があちこちで見られる。<br />チキンなので、正転方向だけマイコン制御ありに、逆転方向のMOSFETはプルアップ・プルダウンで常にOFFになるようにして、PWMで回転数を制御するところだけ試した。<br /><br />TA7291Pのときと違ってドライバでの電圧降下が少ないため、エネループ2本で十分よくまわる。<br /><br />冒頭の参考ページにあるLow-side-PWMをなんちゃってでまねっこしてみる。<br />右側の7セグメントLEDは、analogWrite()の値を示している。<br />

写真では、MOSFETをトランジスタ1個でスイッチしているけど、のちにプッシュ・プル構成にして高速スイッチングをめざした。けど、arduinoのPWM周波数が約490Hzということで（<a href="http://www.musashinodenpa.com/arduino/ref/index.php?f=0&amp;pos=1925">日本語リファレンス</a>より）、今のところMOSFETのスイッチング速度を活かせる構成ではない。<br /><br />
写真では付いていないけど、10kΩの半固定抵抗で分圧した電圧をanalogRead()で読ませて回転数が変化するようにした。半固定抵抗を動かすとスムーズに回転数が変化してちょっと楽しかった。調子にのってぐりぐり動かしていたら、ねじ切ってしまった。あぁ。今度はちゃんとボリュームにしよう・・。<br />
<br /><br />最終的には、モータ制御はATtinyなど小さめのマイコンを使い、arduinoから独立させようと考えている。<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0079-84.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0079-84.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0079-thumb-240x180-84.jpg" alt="SN3E0079.JPG" class="mt-image-none" style="" width="240" height="180" /></a></span><br />ちょっと検索するとライタを自分で作っちゃう人ばかりで、道は遠いなーと思わざるを得ない。<br />が、4000円投資して<a href="http://akizukidenshi.com/catalog/g/gM-02582/">AVR ISP mkII</a>を購入。いいんだこれで。<br /><br /><a href="http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725">AVR Studio</a>本体とSPをダウンロードしてインストール。<br />ハナっからCで書くつもりなので<a href="http://winavr.sourceforge.net/">WinAVR</a>もDLしてインストール。<br /><br />ここの環境はWindows 7 x64だけどドライバも問題なく認識。<br /><br />ATtiny 2313Vを2つ購入した。低電圧版を選んだのは、モータ制御とは別にリモコン的なものを考えていて、単三×2で動くようにしてみたかったから（モータ制御用のは5Vで使う予定）。<br />とりあえずLチカするところまで進めたいなー、と、電源とGND（とISPに必要なピン）とLED＋抵抗だけ結線して、ISPに繋ぐ。<br /><br />ISPのコネクタにジャンプワイヤを突っ込んでブレッドボードに挿す、大雑把さ。ISP側のピン配置は<a href="http://www42.atwiki.jp/narec/pages/21.html">このページ</a>を参考にした。後はデータシートを見てAVR側のピンに接続。<br />Lチカ用のLEDは、PB0に繋いだ。<br /><br />電源はスイッチングなACアダプタ5Vから給電。クリスタルもパスコンもなんにもない状態。内部発振8MHzの1/8で、システムクロックは1MHz。<br /><br />AVR Studioを起動して、こんな感じのだらっとしたhello worldをビルドしてAVRに書きこむ。<br /><br />
<pre class="prettyprint">#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />int main(void) {<br /><br />    DDRB = 0xFF;<br /><br />    const int pin = 0;<br /><br />    while(1) {<br />        PORTB |= 1&lt;&lt;pin;<br />	_delay_ms(100);<br />	_delay_ms(100);<br />	_delay_ms(100);<br />	PORTB &amp;= ~(1&lt;&lt;pin);<br />	_delay_ms(100);<br />	_delay_ms(100);<br />	_delay_ms(100);<br />    }<br />}</pre>

なんか、ちゃんと点滅してる。<br />ブレッドボード上を見てると、ほぼワンチップマイコンだけが載ってる状態でプログラムが動いちゃうんだからおもしろいなー、と感動してしまう。<br /><br />次は、arduinoからSPIなりなんなりで、このATtinyに指令を送って何かさせる、ってことをやろう。<br /><br /><br />環境：<br />　Windows 7 x64 Ultimate<br />　　arduino 0018<br />　　AVR Studio 4.18 + SP2<br />　　WinAVR 20100110<br />Arduino Duemilanove <br />AVR ATtiny 2313V<br /><br />

]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/06/arduino-mp4212.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/06/arduino-mp4212.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">arduino</category>
            
            
            <pubDate>Sat, 26 Jun 2010 01:38:57 +0900</pubDate>
        </item>
        
        <item>
            <title>arduinoと xbeeでラジコン的なもの</title>
            <description><![CDATA[先月観に行った<a href="http://www.oreilly.co.jp/mtm/05/">MTM05</a>会場で、スイッチサイエンスの出店で、xbee×2とxbeeシールドを買ってきた。<br />ZigBee対応版は在庫がないそうで、シリーズ2を2つ購入。後からファーム更新してZB対応版相当品に。<br /><br />xbeeでラジコン的な作例はたくさんあるので、今さら感あふれる感じなんだけど、とにかく自分で実際にやってみたかったのだった。<br /><br />機構・構造部品は、少年時代を思い出すTAMIYAの「楽しい工作シリーズ」を使った。<br />昔懐かし、<a href="http://www.tamiya.com/japan/kousaku/k_products/70097_2motor.htm">ツインモーターギアボックス</a>と<a href="http://www.tamiya.com/japan/kousaku/k_products/70100_t&amp;w.htm">トラック＆ホイールセット</a>でクローラ風にしてみる。<br />このギアボックス、子供の時は金属フレームかつ完成品だったような気がしたんだけど（はっきり覚えてない）、今はプラスチック製で組み立て式なんだな。<br /><br />最初、<a href="http://www.tamiya.com/japan/products/70098universal_plate/index.htm">ユニバーサルプレート</a>という工作界のユニバーサル基板みたいなヤツを一枚しか買ってなくて、ギアボックスとキャタピラを乗せたら、電池も回路も置く場所がなくなってしまった・・・。<br />ユニバーサルプレートをもう一枚と、ユニバーサル金具というL字に使える構造材を買い足した。<br /><br />で、出来たのがコレ。なんか配線がピンピン飛び出てて危なっかしい・・。<br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0071-69.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0071-69.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0071-thumb-320x240-69.jpg" alt="SN3E0071.JPG" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="240" /></a></span><br />テーマは、<br /><ul><li>ラジコン的なものなので、当然、電池電源でもって行動できること。<br /></li><li>Xbeeを使って、PCからリモート操作する。</li><li>おまけで、測距センサを使って、障害物に近づいたら勝手に停止する。</li></ul>ていう感じ。<br /><br />モーターは2つで、左右の動輪をそれぞれ駆動している。細かい回転の制御は何もやってなくて、全開かオフかの二択だ。TA7291Pを2つ使っていて正転と逆転のコントロールはかろうじて可能に。<br /><br />手持ちの電池ケースが単三×4のしかなくて、勢いが良すぎた。TA7291PのVrefをもっと下げておけばよかった。ギア音うるさいし。<br /><br />arduino用の電源は、二階建ての裏面に取り付けた006Pから供給。xbeeシールドを乗せちゃうと、Vinが隠れてしまうが、シールドと本体の隙間から無理やり差し込んだ。<br /><br />ユニバーサルプレートはネジ止めだけで構造を乗せていけるので便利なんだけど、穴のピッチが5mm間隔のため、基板と合わなくて難儀する。結局、arduinoの方は2穴だけ使って斜めに配置、モータードライバを載せた基板は、アングルを使って90度立てることに。若干斜めになっているのは、こっちもネジ穴の位置が合わなかったため。<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0073-72.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0073-72.html','popup','width=480,height=640,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0073-thumb-240x320-72.jpg" alt="SN3E0073.JPG" class="mt-image-left" style="float: left; margin: 0pt 20px 20px 0pt;" width="240" height="320" /></a></span>arduino～xbee（シールド）間の通信は、普通にシリアル通信出来てしまう。便利だ。0ピンと1ピンを使うので、単にSerial.begin(ボーレート)しておいて、読み書きするだけ。<br /><br />コード上は、aruduino IDE上のシリアルモニタを使って、コマンドとモータの動作を実装・確認。で、動かす時はXbeeシールドを乗っけるだけ（もちろんxbee間の設定は先に済ませておく必要がある）。<br /><br />xbeeの設定は、<a href="http://www.switch-science.com/products/detail.php?product_id=30">XbeeエクスプローラUSB</a>とDigi社公式のX-CTUで。<br /><br />ここの環境では、2つのXbeeをどっちもFunctionSetを「Zigbee Router/End device AT」にして、お互い相手のシリアルナンバーをDH/DLに指定している。<br /><br />1対1の通信では、Xbeeの良さをスポイルしてしまうが、ラジコン風用途で用いる分にはいいだろう、てことで。<br /><br />PC側のXbeeは、XbeeエクスプローラUSBによって仮想COMポートとして見えているので、何らかのTerminalからぽちぽちと入力すれば、arduino側のXbee＋シールドを通じてシリアル通信で読みだされる。<br clear="left" /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0072-75.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0072-75.html','popup','width=480,height=640,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/06/SN3E0072-thumb-240x320-75.jpg" alt="SN3E0072.JPG" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="240" height="320" /></a></span><a href="http://akizukidenshi.com/catalog/g/gI-02551/">シャープ測距モジュール GP2Y0A21YK</a>。秋月電子で購入した。対象、というか壁のようなものとの距離を電圧で得られる。<br /><br />距離と電圧の関係はリニアではないけど、<a href="http://dl1.jp/cbbs.cgi?mode=al2&amp;number=218&amp;rev=&amp;no=0">近似式を求めた人がいた</a>ので、丸パクリしちゃう。ごっちゃんです。arduinoの場合、アナログ入力の分解能が10bitなので、analogRead()で得られた値を、(5/1024)倍して近似式に放り込む。<br /><br />室内の蛍光灯下で、「手のひら」を対象に測った感じでは、9cmから50cmぐらいまではそれっぽい値が出ている感じがした。（これ以上遠くは物差しがなかったのでよくわからん）<br /><br />本ラジコン風クローラでは、前進中で正面12cm未満に障害物が出てきたときは停止、というコードにしてみた。<br /><br />十分加速したところから、検知・制動すると、壁際2～3cmというところで、危なっかしい(^^; が、制御して遊ぶのが目的なのでヨシとする。<br /><br /><br /><br />キーボードからの入力で、工作がきーきー動くのはなんとも不思議な感じ。<br />やっぱり、モータの制御がON/OFFで大雑把過ぎるな。今度は各種センサからの情報を取り入れて細かく制御することをテーマにしてみたい。<br /><br />ひとしきり遊んだ後で、いくらかかったかなーとふと思う。<br />　・arduino＝3,200円<br />　・xbeeシールド＝2,200円<br />　・XbeeエクスプローラUSB＝2,500円<br />　・xbeeシリーズ2×2＝5,960円<br />　・ユニバーサルプレート×2＝700円<br />　・ツインモーターギアボックス＝800円<br />　・トラック&amp;ホイールセット＝600円<br />　・ユニバーサル金具セット×2＝800円<br />　・測距センサ＝400円<br />　・TA7291P×2＝360円<br />あとLEDとかコンデンサとかソケットがあるけど無視して・・・17,520円。<br />わぁ。<br /><br /><br />環境：<br />　Windows 7 Ultimate x64<br />　　arduino 0018<br />　Arduino Duemilanove <br /><br />]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/06/arduino-xbee.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/06/arduino-xbee.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">arduino</category>
            
            
            <pubDate>Sun, 06 Jun 2010 23:22:26 +0900</pubDate>
        </item>
        
        <item>
            <title>astah*で図を書いて redmineの wikiに埋め込むプラグインを考える その1</title>
            <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/05/uc-66.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/05/uc-66.html','popup','width=880,height=686,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/05/uc-thumb-320x249-66.png" alt="uc.png" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="249" /></a></span><br />UMLその他モデルの作図にJudeを愛用している。<br />・・・というかastah*か。<br /><br />astah*で書いた図を、emfで（拡大縮小しても綺麗だから）ワードに張り付けるなどしているが、redmineのwikiに埋め込めるといいのにな～と思っていた。<br />もちろん画像で出力してからアップロードすることはできるが面倒。<br />せっかくリポジトリにastahのファイルを保管しているのだから、最新の図をwikiに自動反映できたら便利そう。<br />

<br />最近知ったのだけど、<a href="http://plantuml.sourceforge.net/">PlantUML</a>というのがあって、一定の記法で書いたUMLを画像にしてくれるOSSがあるそうだ。じゃあ、astah APIでモデルの情報を抜き出してPlantUML記法で吐きだしたらどうか？と一瞬考えたものの、レンダリング結果がastah上の図とはかなり変わってしまうし、APIで取得できない情報が多数あるのでそもそも再現度が低い。<br /><br />やはり図の出力はastah*に任せたい。<br /><br />jude時代から、コマンドラインで図出力を実行することができるので、これを呼び出したらいいだろう。<br />※細かいことは、インストール先のCommandRunner.htmlに書いてある。<br /><br />自分ところで使っているredmineはどれもlinux上で動いているので、できればlinuxサーバで完結させたい。ということでまずは「linux上でコマンドラインで図出力」する手順を検討した。<br /><br />ポイントは以下のとおり。<br /><ul><li>コマンドライン図出力を実行するには、DISPLAY（Xサーバ）が必要。</li><ul><li>APIの場合はXサーバなしでも動くけど、図出力はdisplayが初期化できないと先に進まない。</li><li>図出力用のディスプレイという位置づけで、vncserverを使うことにした。<br /></li></ul><li>astahライセンスをセットアップする必要がある</li></ul><br /><font style="font-size: 1.25em;">1. ディスプレイを用意</font><br /><br /><ul><li>図出力を実行するユーザ向けにvncserverのディスプレイを作る。</li><li>CentOSの場合、yumリポジトリにvnc-serverがあるのでこれをインストール。</li><li>実行ユーザで一回vncserverを起動しておく。</li><ul><li>各種ファイルのひな型が作成されるのと、vncserverのパスワード設定を一度に出来るから。<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">% vncserver<br /><br />You will require a password to access your desktops.<br /><br />Password:<br />Verify:<br /><br />New 'somehost:1 (someuser)' desktop is host:1<br /><br />Creating default startup script /home/someuser/.vnc/xstartup<br />Starting applications specified in /home/someuser/.vnc/xstartup<br />Log file is /home/someuser/.vnc/somehost:1.log</pre></li></ul><li>上で起動したvncserverはkillしちゃう。<br />で、ひな型をちょこっと編集。CentOSの場合、xstartupは以下の内容になっていた。<br />twmが動いていると、Xクライアントがウィンドウを作成するときに出現位置をユーザ操作で指定する流れになるので、図出力の自動化においては邪魔になってしまう。ので、twmの行を削除した。xtermも特に必要ないので削除。<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">#!/bin/sh<br /><br /># Uncomment the following two lines for normal desktop:<br /># unset SESSION_MANAGER<br /># exec /etc/X11/xinit/xinitrc<br /><br />[ -x /etc/vnc/xstartup ] &amp;&amp; exec /etc/vnc/xstartup<br />[ -r $HOME/.Xresources ] &amp;&amp; xrdb $HOME/.Xresources<br />xsetroot -solid grey<br />vncconfig -iconic &amp;<br />#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &amp;<br />#twm &amp;</pre></li></ul><ul><li>システム起動時の自動起動を考慮して/etc/sysconfig/vncserverに設定<br />図出力を実行するユーザに合わせて編集。とりあえずディスプレイ番号は2のままにした。ジオメトリはもっと小さくてもいいはず。<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">VNCSERVERS="2:someuser"<br />VNCSERVERARGS[2]="-geometry 800x600 -nohttpd -localhost"</pre></li></ul><ul><li>rootでrcスクリプトから起動<br /># /etc/init.d/vncserver start<br /></li></ul><font style="font-size: 1.25em;">2. astah*を用意</font><br /><br /><ul><li><a href="http://astah.change-vision.com/ja/product/astah-professional.html">astah*</a>のダウンロードサイトからzipを入手。「JREなし、インストーラなしのアーカイブ」と書かれているもの。</li><li>適当な場所にunzipする。</li><li>同梱されているastah-command.shは後半がちょいおかしい（pro 6.1.1）ので、ちびっと修正して、とりあえず同じディレクトリに「run.sh」という名前で保存した。実行権限を忘れない。<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">#!/bin/sh<br /><br />ASTAH_HOME=`cd \`dirname $0\` &amp;&amp; pwd`<br /><br />INITIAL_HEAP_SIZE=64m<br />MAXIMUM_HEAP_SIZE=1024m<br />STACK_SIZE=3m<br /><br />JAVA_OPTS="-Xms$INITIAL_HEAP_SIZE -Xmx$MAXIMUM_HEAP_SIZE -Xss$STACK_SIZE"<br /><br />java $JAVA_OPTS -cp "$ASTAH_HOME/astah-pro.jar" com.change_vision.jude.cmdline.JudeCommandRunner $*<br /><br /></pre></li><li>ライセンスを配置。<br />自分ところはJUDEのユーザライセンスがサポート時効前なのでJUDEのライセンスで。<br />$HOME/.astah/professional/JUDE_License_User_Professional.xml<br /></li></ul><font style="font-size: 1.25em;">3. 実行</font><br /><br /><ul><li>path上にjavaコマンドがあることを確認。なければ適宜pathを通す。</li><li>環境変数DISPLAYにvncserverを指定。<br />自分はtcshスキーなので以下の通りだが、他のシェルの場合は適宜<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">% setenv DISPLAY 127.0.0.1:2<br /></pre></li><li>実行<br /><pre style="overflow: scroll; border: thin solid black; padding: 0.5em;">% /path/to/astah/run.sh -image all -f /path/to/some.asta -o /path/to/dir </pre></li></ul><br /><font style="font-size: 1.25em;">おわり</font><br /><br /><ul><li>で、出力されたのが冒頭のpng画像。</li><li>Windowsで出力したときとフォントが異なるので、見た目の違いはあるけど、元の図がキープされていることに意義はありそう。</li><li>元の図が大きくなりがちなので、wikiに張り付けるのに向かないケースも多そう。</li><li>図出力にはかなり時間がかかる&amp;出力したい図を指定できない（種類は指定出来る）ので、運用上はcronで出力しておいてどーこーみたいな仕組みも必要っぽい。</li><li>wikiマクロ的には、.astaファイルと図のpath（名前空間＋名前）を指定する感じか。<br /></li></ul><br /><br />環境：<br />&nbsp; Windows 7 Ultimate x64<br />&nbsp;&nbsp;&nbsp; JRE6 x86<br />&nbsp;&nbsp; &nbsp;&nbsp; astah* professional 6.1.1<br />&nbsp; CentOS 5.4 x64<br />&nbsp;&nbsp;&nbsp; vnc-server-4.1.2-14.el5_3.1<br />&nbsp;&nbsp;&nbsp; JRE6 x64<br />&nbsp;&nbsp; &nbsp;&nbsp; astah* professional 6.1.1<br />
<br /><br /> <div><br /></div>]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/05/astah-redmine-wiki-1.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/05/astah-redmine-wiki-1.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">astah</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">redmine</category>
            
            
            <pubDate>Sat, 08 May 2010 17:44:56 +0900</pubDate>
        </item>
        
        <item>
            <title>arduinoで lcd</title>
            <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/05/SN3E0066-63.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/05/SN3E0066-63.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/05/SN3E0066-thumb-320x240-63.jpg" alt="SN3E0066.jpg" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="240" /></a></span>しばらく前に秋月電子で20文字×4行のキャラクタ表示液晶（SC2004CSLB。SUNLIKE社 SC2004C）を買った。<br />当時、PICで制御してみたいなーともくろんでいてたんだけど、あっさり投げ出していたのだった。<br /><br />arduinoの場合、（<a href="http://www.musashinodenpa.com/arduino/ref/">リファレンス</a>いわくHitachi HD44780とその互換チップセットをベースにした）LCDを制御するライブラリが標準装備なので、print感覚で文字表示できる、はず。。。<br /><br />とりあえず、同梱の説明書にある、「バックライトの電源を液晶側を共有」するようにちまちまとハンダづけする。J2にハンダを盛ってショートさせ、R8に添付されてた抵抗100Ω×3を並列に接続。<br /><br />同梱されてたピンヘッダを何も考えずにモジュール背面にとりつけたのだけど、ネットで見かけた作例だとピンソケットを全面にとりつけている人もいた。そしたらジャンプワイヤで簡単に接続出来てお試ししやすいのか。そういう考え方もあるんだなー。<br /><br />すでに取りつけてしまったものはCTRL+Zでとりはずすこともできず。さりとて電子工作初学者の自分は、ハンダを吸い取るのもおっくうで、このまま進むことにするのだった。<br /><br />ユニバーサル基板にソケットとコントラスト調整用の半固定抵抗をのっけた。<br />説明書によれば、pin3 コントラスト調整用電源は、「＝Vssで最も濃くなる」とあったので、何も考えずにGNDに繋いだら、何も表示していない部分や表示した文字の上下に不必要なドットが現れてしまった。<br />手元に500Ωの半固定抵抗があったので、えいやっと繋いだけど、180度中、コントラスト調整として意味があるのは30度ぐらいだけになってしまった。残りの150度ぐらいは何も映らない。。。<br /><br />スケッチはただのコピペ。<br />使ってる液晶が20桁4行なので、初期化パラメータだけちょびっと変更。<br /><br />


<pre class="prettyprint" style="overflow: scroll;">#include &lt;LiquidCrystal.h&gt;<br /><br />LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);<br /><br />void setup()<br />{<br />  lcd.begin(20, 4);<br />  lcd.clear();<br />  lcd.cursor();<br />  lcd.blink();<br />  lcd.setCursor(0, 0);<br />  lcd.print("ohayo");<br />  lcd.setCursor(2, 1);<br />  lcd.print("oyasumi");<br />  lcd.setCursor(4, 2);<br />  lcd.print("ore dayo ore ore");<br />  lcd.setCursor(6, 3);<br />  lcd.print("moshi moshi");<br />}<br /><br />void loop()<br />{<br />}<br /><br /></pre>

<br />もはや制御らしい制御がコードに現れてこないのがすごい。<br />リファレンスによれば、blink()の結果はディスプレイ次第だそう。この液晶モジュールではカーソル位置に、下線→黒塗りつぶし四角のアニメーションが表示された。<br /><br />環境：<br />&nbsp; Windows 7 Ultimate x64<br />&nbsp; &nbsp; Arduino 0018 (IDE)<br />&nbsp; Arduino 
Duemilanove 328<br /><br /><br /><br />

]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/05/arduino-lcd.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/05/arduino-lcd.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">arduino</category>
            
            
            <pubDate>Mon, 03 May 2010 22:36:08 +0900</pubDate>
        </item>
        
        <item>
            <title>arduinoをさわってみる</title>
            <description><![CDATA[一か月ぐらい前にamazonで入門キットを購入したのだけど、忙しくてなんとなく放置してた。<br />キットに入ってたのは「Arduino Duemilanove 328」。<br />



<br /><font style="font-size: 1.5625em;">準備：</font><br /><br /><ul><li>Arduinoの<a href="http://arduino.cc/">公式サイト</a>からIDEをダウンロード。バージョンは0018。</li><ul><li>JRE6が同梱されてる。<br /></li></ul><li>B端子のあるUSBケーブルを用意してPCとボードを接続</li><li>Windows 7の場合、ドライバは自動インストールをじっと待てばOK。そのまま使えるようになる。<br />→公式サイトの<a href="http://arduino.cc/en/Guide/Windows">Getting Started</a>で「Really, it works!」って書いてあるのがウケる。</li><ul><li>ここの環境は64ビットだけど普通に使えた。</li></ul><li>ここの環境では、USB Serial PortにCOM3が割り当てられた。<br /></li></ul><br /><font style="font-size: 1.5625em;">実装</font><br /><br />実装、というほどのことはしていないけど、なにかしら入力と出力があるものしたいなと考え、<br />　スイッチをONにするとLEDが光る (^^;;<br />を目指してがんばる。。<br /><br />12番ピンを出力としてLEDの点灯制御に。<br />11番ピンを入力としてスイッチの入力に。<br /><br />タクトスイッチのどの足がどのように繋がるかも知らなかったので、テスタ片手にポチポチと試したり。<br /><br />ネットで調べると、デジタルの入力にはプルアップ/プルダウン抵抗というのを付けるのだとか。<br />スイッチON→真でコードが書けないと気持ち悪いという理由でプルダウン抵抗にしてみる。<br />※Arduino（というかAVRマイコン？）は内部プルアップを持ってるので、回路的にはプルアップの方がシンプルに。<br /><br />Arduino IDEを起動して、ボードの種類とCOMポートを設定。<br /><br />コードはこんな感じに。<br /><br />

<br />

<pre class="prettyprint" style="overflow: scroll;">void setup() {<br />  pinMode(12, OUTPUT);<br />  pinMode(11, INPUT);<br />}<br /><br />void loop() {<br />  int sw = digitalRead(11);<br /><br />  if (sw) {<br />    digitalWrite(12, HIGH);<br />  } <br />  else {<br />    digitalWrite(12, LOW);<br />  }<br /><br />  delay(100);<br />}<br /><br /></pre>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://passing.breeze.cc/mt/assets_c/2010/04/SN3E0065-60.html" onclick="window.open('http://passing.breeze.cc/mt/assets_c/2010/04/SN3E0065-60.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://passing.breeze.cc/mt/assets_c/2010/04/SN3E0065-thumb-320x240-60.jpg" alt="SN3E0065.JPG" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" width="320" height="240" /></a></span>


<br />コンパイルしてUpload。<br /><br />タクトスイッチを押したらLEDが点灯した。わぁ。<br /><br />入力にプルアップ/プルダウン抵抗を付けないと、スイッチOFF時の入力値が定まらないというか不安定になる、ということが、ソフトウェア屋からするとなんとも不思議な感じ。<br /><br />digitalRead()の後で入力値を、<br />　Serial.println(sw);<br />でシリアルに出力してみると、確かに1だったり0だったりする。<br /><br />ソフトウェアってのは多くの抽象化レイヤの上に成り立ってるのだな～と実感する。<br /><br /><br />環境：<br />&nbsp; Windows 7 Ultimate x64<br />&nbsp; &nbsp; Arduino 0018 (IDE)<br />&nbsp; Arduino Duemilanove 328<br />
<br />

<div class="amazlet-box" style="margin-bottom: 0px;"><div class="amazlet-image" style="float: left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0025Y6C5G/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51f3hT6qppL._SL160_.jpg" alt="Arduinoをはじめようキット" style="border: medium none;" /></a></div><div class="amazlet-info" style="float: left; margin-left: 15px; line-height: 120%;"><div class="amazlet-name" style="margin-bottom: 10px; line-height: 120%;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0025Y6C5G/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank">Arduinoをはじめようキット</a><div class="amazlet-powered-date" style="font-size: 7pt; margin-top: 5px; font-family: verdana; line-height: 120%;">posted with <a href="http://www.amazlet.com/browse/ASIN/B0025Y6C5G/passingbreeze-22/ref=nosim/" title="Arduinoをはじめようキット" target="_blank">amazlet</a> at 10.04.25</div></div><div class="amazlet-detail">スイッチサイエンス <br />売り上げランキング: 1553<br /></div><div class="amazlet-review" style="margin-top: 10px; margin-bottom: 10px;"><div class="amazlet-review-average" style="margin-bottom: 5px;">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-5.gif" alt="4.5" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> これではじめました<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> USBはB端子です<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> ここから大ジャンプは無理だけど<br /></div><div class="amazlet-link" style="margin-top: 5px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0025Y6C5G/passingbreeze-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left;"></div></div>
<div><br /></div>]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/04/arduino.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/04/arduino.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">arduino</category>
            
            
            <pubDate>Sun, 25 Apr 2010 00:30:35 +0900</pubDate>
        </item>
        
        <item>
            <title>ESXiをアップデートしたらデータストアが見えなくなった</title>
            <description><![CDATA[VMware Infrastructure UpdateからESXi 3.5をアップデート。<br />コアの部分はESXiを再起動しないと有効にならない、ということで素直に再起動。<br /><br />再起動完了後、VICで接続したらデータストアが認識されないという、目を疑う事態が発生。<br />vmfsが消えたのか？？<br />どうやってサルベージしようか？？<br />と考えをめぐらせながらも検索したらまたもや2chに救われた。<br /><br />以下の操作後もインベントリ内の仮想マシンは「Unknown(inaccessible)」のままだったので、データストアのブラウザから、vmxファイルを右クリック→インベントリに追加（Add to inventory）、でなんとか。<br /><br />
<pre>203 ：名無しさん＠お腹いっぱい。：2009/01 /16(金) 15:56:04 ID:gFIIee1g0<br />&nbsp;&nbsp;&nbsp; &gt;&gt;202<br />&nbsp;&nbsp;&nbsp; おぉ。VMFSのマウントがデキター<br />&nbsp;&nbsp;&nbsp; Thx<br />&nbsp;&nbsp;&nbsp; スレをちゃんと読めばよかったんですね吊ってきます<br /><br />&nbsp;&nbsp;&nbsp; リンク先の手順は、英語だったので、日本語に翻訳<br />&nbsp;&nbsp;&nbsp; 1.VI Clientを起動してESXiへログイン<br />&nbsp;&nbsp;&nbsp; 2.Configurationタブ、Softwareの中のAdvanced Settingを開く<br />&nbsp;&nbsp;&nbsp; 3.LVMの項目のLVM.EnableResignatureの値を「1」へ<br />&nbsp;&nbsp;&nbsp; 4.Configurationタブ、Hardwareの中のStorage Adapterを開き「Rescan...」を実行<br />&nbsp;&nbsp;&nbsp; 5.Configurationタブ、Hardwareの中のStorageを開くとVMFSがマウントされてることが分かる </pre>

<br />環境：<br />　VMware ESXi 3.5 <br /><br />
]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/03/esxi.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/03/esxi.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">vmware</category>
            
            
            <pubDate>Sat, 20 Mar 2010 20:41:35 +0900</pubDate>
        </item>
        
        <item>
            <title>redmine 0.9の Wikiとプラグイン</title>
            <description><![CDATA[<a href="http://passing.breeze.cc/mt/redmine_plugin/">Wiki Graphviz macro プラグイン</a><br />

例によって無保証です。<br /><blockquote><a href="http://passing.breeze.cc/mt/archives/2008/12/redmine-wiki-graphviz-1.html">redmineの wikiマクロで graphviz その1</a><br /><a href="http://passing.breeze.cc/mt/archives/2008/12/redmine-wiki-graphviz-2.html">redmineの wikiマクロで graphviz その2</a><br /><a href="http://passing.breeze.cc/mt/archives/2008/12/redmine-wiki-graphviz-3.html">redmineの wikiマクロで graphviz その3</a><br /></blockquote>


上のwikiマクロを<a href="http://github.com/">gihub</a>に置いている。<br /><blockquote><a href="http://github.com/tckz/redmine-wiki_graphviz_plugin">tckz's redmine-wiki_graphviz_plugin at master - GitHub</a><br /></blockquote><br />自分ところのredmineはまだ0.8.7なんだけど、早食いな人はもう0.9を使っているらしく、0.9で動かないよ、というメッセージが来た。<br />せっせと自分のところでも環境を作って試してみると「Filter chain halted as [:authorize] rendered_or_redirected.」が出ている。<br /><br />リンクの作り方がまずいと言えばまずいんだけど、0.8.x時代のWikiのURLと0.9からのURLが異なることが原因みたい。<br /><blockquote>0.8.7： http://example.com/wiki/project_id/WikiPage<br />0.9-stableブランチ： http://example.com/projects/project_id/wiki/WikiPage<br /></blockquote>それでは、とroutes.rbを書き換えてみるも反応なし。<br />どうもプラグインROOT/config/routes.rbに置かないと読んでくれないっぽい。<br /><br />0.8系でも0.9系でも動くように二か所にroutes.rbを置くことにした。<br /><br />プラグインROOT/<br />　routes.rb ←(1)：こっちは(2)をrequireするだけ<br />　config/<br />　　routes.rb ←(2)：redmineが0.9以降かどうかでURLマップを設定しわける<br /><br />(1)<br /><pre style="overflow: scroll;" class="prettyprint">require File.join(File.dirname(__FILE__), "config", "routes.rb")</pre><br />(2)<br /><pre style="overflow: scroll;" class="prettyprint">ActionController::Routing::Routes.draw do |map|<br /><br />  if (Redmine::VERSION.to_a &lt;=&gt; [0, 9, 0]) &gt;= 0<br />    # 0.9.0 or higher<br />    map.connect 'projects/:id/wiki/:page/graphviz', :controller =&gt; 'wiki_graphviz', :action =&gt; 'graphviz'<br />  else<br />    map.connect 'wiki/:id/:page/graphviz', :controller =&gt; 'wiki_graphviz', :action =&gt; 'graphviz'<br />  end<br />end
</pre>
<br />0.9もfeature freezeしたことだしリリースが待ち遠しい。<br />「バージョンに状態（進行中、ロック中、終了）を設定出来て、チケットの編集画面に終了済みバージョンがドロップダウンに表示されない」機能が地味にうれしい。<br /><br /><br />環境：<br />　CentOS 5.4<br />　　ruby-1.8.7-p248(from source)<br />　　mysql-server-5.0.77-3.el5<br />　　graphviz-2.26.0(from source)<br />　　redmine-0.9-stable branch at 2010/01/07(JST)<br /><br /><br /> ]]></description>
            <link>http://passing.breeze.cc/mt/archives/2010/01/redmine-09-wiki.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2010/01/redmine-09-wiki.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">redmine</category>
            
            
            <pubDate>Thu, 07 Jan 2010 23:59:50 +0900</pubDate>
        </item>
        
        <item>
            <title>WMIを用いた DNS操作 をPowershellで書く</title>
            <description><![CDATA[あるイベント起動で、「AD統合DNSのCNAMEの指すAレコードを変える」、ということをしたい。<br />イベントハンドリングはとりあえずおいといて、スクリプトでDNSのCNAMEを変更する方法を探す。<br /><br />やっぱりというかなんというかWMIにしっかりと用意されていた。<br />
　<a href="http://msdn.microsoft.com/en-us/library/ms682123%28VS.85%29.aspx">DNS WMI Classes (Windows)</a><br /><br />PowershellはWMIオブジェクトも扱えるので、こんな感じに。<br /><br />

<pre style="overflow: scroll;" class="prettyprint">$cnames = gwmi -Class MicrosoftDNS_CNAMEType -Namespace Root\MicrosoftDNS -ComputerName DCコンピュータ名<br />$cname = $cnames | ? {$_.OwnerName -eq "cname.example.com"}<br />$cname.Modify($null, "some.example.com.")<br /><br /></pre>&nbsp; <br />特定のCNAMEを表すMicrosoftDNS_CNAMETypeだけすぱっと取得したかったが、全CNAMEを取る方法しか分からなかったので場当たり的にWhere-Objectで絞り込む。とても無駄な感じ。<br /><br /><ul><li>CNAMEもAレコードも事前に作成してある前提なので、見つからない場合を考えていない。</li><li>適切な権限が必要。</li></ul><br />環境：<br />　Windows XP Pro SP3 x86<br />　　Powershell 1.0<br />　Windows Server 2008 Standard x64<br />　　Active Directory<br />　　DNS<br /><br />


]]></description>
            <link>http://passing.breeze.cc/mt/archives/2009/12/wmi-dns-powershell.html</link>
            <guid>http://passing.breeze.cc/mt/archives/2009/12/wmi-dns-powershell.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">PowerShell</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">wmi</category>
            
            
            <pubDate>Tue, 22 Dec 2009 00:08:13 +0900</pubDate>
        </item>
        
    </channel>
</rss>

