<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
	<title>とんずら雑記R</title>
	<link>http://ujiya-denshi.com/</link>
	<language>ja</language>
	<description></description>
	<copyright>Copyright 2012</copyright>
	<pubDate>Sun, 04 Mar 2012 16:53:59 GMT</pubDate>
	<lastBuildDate>Tue, 01 May 2012 14:07:14 GMT</lastBuildDate>
	<generator>http://adiary.abk.nu/#2.21</generator>
	<docs>http://blogs.law.harvard.edu/tech/rss</docs> 
	<item>
		<title>ABIってなに？</title>
		<link>http://ujiya-denshi.com/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#tm1330880039</link>
		<guid>http://ujiya-denshi.com/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f</guid>
		<category>開発環境</category>
		<pubDate>Sun, 04 Mar 2012 16:53:59 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#k260p1"><span>■</span></a>ABIとは</h3>
Application Binary Interfaceの略称です。<br>
何のことかと云われると、高級言語（組み込みだと主にＣになるでしょう）向けの、<br>
データ配置ルールや関数引数と返値のレジスタ渡しルールを定めたモノです。<br>
これが異なると、オブジェクトリンク時に適切に処理ができません。<br>
<br>
object file提供のソフトを結合するケースや、ABIに併せてバイナリデータを<br>
流し込んでくるようなインタフェースを設計した場合に、アタリが出ます。<br>
全てのソースファイルを自分(自社)でbuildするソフト屋ならば、アタリは少ないでしょうが、<br>
基本的に複数名での開発や、LinuxなどのOSを使う場合に動的リンクするライブラリのABIも<br>
揃っていないと、実行時にシヌこととなるでしょう。<br>
<br>
このあたり、エミュレータ作ってたり、開発環境の準備をするヒトなんかは<br>
しっかりと把握しておかないとダメですね。昨今はＣＰＵも種類が増えていますし、<br>
バイナリレベルで下位互換を保ってはいても、拡張機能を使うライブラリと<br>
リンクするときなども注意が必要です。<br>
<br>
・・・恥ずかしながら、某Java Engineの結合の話が来るまで自分も知らなかったです。<br>
昔は情報源が乏しかったのと、コンパイラなんて使うモノの挙動を見ればいいやと思っていたのですね。<br>
しっかりと仕様書があるので、これを神様として、コンパイラの妥当性すらも<br>
検証していくべきであると考えるようになりましたとさ。。。<br>
<br>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#k260p1.1"><span></span>ARM</a></h4>
<a href="http://infocenter.arm.com/">ARM社のオンライン情報サイト</a>が有用です。<br>
コンパイラの参照資料として、以下があげられていました。後半にABIの付いたモノが、<br>
今回ご紹介するものだと思います（未確認）<br>
<ul>
	<li>BSABI</li>
	<li>BPABI</li>
	<li>EHABI</li>
	<li>CLIBABI</li>
	<li>AADWARF</li>
	<li>CPPABI</li>
	<li>AAPCS</li>
	<li>RTABI</li>
	<li>AAELF</li>
	<li>ABI Addenda</li>
</ul>
<br>
<br>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#k260p1.2"><span></span>PowerPC</a></h4>
IBMやfreescale社が ABI仕様書を出しています。<br>
ARMとは異なり、Instruction Setがアーキテクチャにより増減している模様。<br>
今まさにはまっているところなので、後日まとめたいと思います。<br>

</div>

<hr>
<h4><a href="/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/ABI%e3%81%a3%e3%81%a6%e3%81%aa%e3%81%ab%ef%bc%9f#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>組み込みソフト開発環境</title>
		<link>http://ujiya-denshi.com/%e7%b5%84%e3%81%bf%e8%be%bc%e3%81%bf%e3%82%bd%e3%83%95%e3%83%88%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83#tm1330879363</link>
		<guid>http://ujiya-denshi.com/%e7%b5%84%e3%81%bf%e8%be%bc%e3%81%bf%e3%82%bd%e3%83%95%e3%83%88%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83</guid>
		<category>開発環境</category>
		<pubDate>Sun, 04 Mar 2012 16:42:43 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
表題の件についてまとめたいと思います。<br>
裏付けの弱いことなども含まれるかもしれませんので、各自ソースを追って確認ください。<br>
できればフィードバックしてもらえると嬉しいです(ぉ<br>

</div>

<hr>
<h4><a href="/%e7%b5%84%e3%81%bf%e8%be%bc%e3%81%bf%e3%82%bd%e3%83%95%e3%83%88%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/%e7%b5%84%e3%81%bf%e8%be%bc%e3%81%bf%e3%82%bd%e3%83%95%e3%83%88%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>IPv6関係で役立ちそうなところ</title>
		<link>http://ujiya-denshi.com/IPv6#tm1325697890</link>
		<guid>http://ujiya-denshi.com/IPv6</guid>
		<category>memo</category>
		<pubDate>Wed, 04 Jan 2012 17:24:18 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/IPv6#k258p1"><span>■</span></a>IPv6関係で役立ちそうなメモ</h3>
コンテンツ的に, Linux依りになりそうだけど, まぁ一時待避用という位置づけで...<br>
<h4><a href="http://ujiya-denshi.com/IPv6#k258p1.1"><span></span>相手のIPを知りたい</a></h4>
<ul>
	<li><a href="http://mo.kerosoft.com/0189">2011/12/21(Wed) 同一セグメントの対向IPv6ホストアドレスを知るライフハック</a><br>要約する(?)と、<strong>"ff02::1"というglobal IPにたいしてpingを打つ</strong>といいらしい。<br>IPv4もデフォルト設定ではWin7マシンがping応答返してくれない模様。ウチのマシンは返しているけど、何かハズしたんだろう. defenderかfirewallかな..? ウイルスバスタ使っていて、ICMP応答は返すにチェックしてあるからだろうなぁ.</li></ul>

</div>

<hr>
<h4><a href="/IPv6#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/IPv6#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>git入門とか</title>
		<link>http://ujiya-denshi.com/%5bgit%5d#tm1325697920</link>
		<guid>http://ujiya-denshi.com/%5bgit%5d</guid>
		<category>memo</category>
		<pubDate>Wed, 04 Jan 2012 07:27:08 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/%5bgit%5d#k257p1"><span>■</span></a>git入門記事</h3>
<ul>
	<li><a href="http://blog.katty.in/758">三度の飯とエレクトロン, 非エンジニア向けGitの使い方</a><br>基本コマンドの列挙、といった感じだけど、とりあえず。</li></ul>

</div>

<hr>
<h4><a href="/%5bgit%5d#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/%5bgit%5d#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>URL_memo</title>
		<link>http://ujiya-denshi.com/URL_memo#tm1325661859</link>
		<guid>http://ujiya-denshi.com/URL_memo</guid>
		<category>memo</category>
		<pubDate>Wed, 04 Jan 2012 07:24:03 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/URL_memo#k256p1"><span>■</span></a>個人的備忘録</h3>
WEBを探したり見たときのメモ<br>

</div>

<hr>
<h4><a href="/URL_memo#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/URL_memo#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>2012年</title>
		<link>http://ujiya-denshi.com/0255#tm1325491003</link>
		<guid>http://ujiya-denshi.com/0255</guid>
		<category>雑談</category>
		<pubDate>Mon, 02 Jan 2012 07:56:43 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/0255#k255p1"><span>■</span></a>年明け</h3>
仕事・私事が忙しくなり、更新サボりまくってますが、サイト更新。<br>
サーバマシンをショボくして、省エネ・静音化を図りまんた。<br>
<br>
とりあえずこれで戦線に復帰できる・・・かな。<br>
更新したいネタは増えつつあるので、メモ代わりでアレですが、更新していきたいと思います。<br>
細々と。<br>
<br>
更新しないサイトに存在意義はないと考えていた時期もありました。<br>
備忘録になるかなぁとも思いましたが、それほど有用なネタを記録しているわけでもなく、<br>
今になると無駄が多いなぁと思う次第。老兵は去るのみ、かな～？<br>

</div>

<hr>
<h4><a href="/0255#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0255#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>[Perl] 覚書</title>
		<link>http://ujiya-denshi.com/0251#tm1325425663</link>
		<guid>http://ujiya-denshi.com/0251</guid>
		<category>Perl::基礎</category>
		<pubDate>Thu, 17 Feb 2011 17:52:01 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0251#k251p1"><span>■</span></a>ちょこっとメモ</h3>
<p>記事として伸ばすかどうか判らないけれど、自分用メモ。</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0251#k251p1.1"><span></span>XML fileを扱う</a></h4>
<p>use XML::Simpleとか使うと便利。HASH, ARRAYの接続に注意。Dumperで眺めてみるとわかりよい。</p>
<br>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0251#k251p2"><span>■</span></a>実行時型判定</h3>
<p>refを使う。<strong>ref(変数)</strong>として、文字列が得られる。（'ARRAY','HASH','REF','SCALAR'など。）</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0251#k251p2.1"><span></span>HASHの中身が入っているか確認する</a></h4>
<pre>
if (!%hash_var) {
  print "cleared hash\n";
}
else {
  print keys %hash_var ;
}
</pre>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0251#k251p3"><span>■</span></a>参考</h3>
<p><a href="http://www.ibm.com/developerworks/jp/xml/library/x-xmlperl1.html">Perl 開発者のための XML: 第 1 回 XML と Perl -- 魔法の組み合わせ</a></p>

</div>

<hr>
<h4><a href="/0251#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0251#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>シリコンハウス共立移転予定</title>
		<link>http://ujiya-denshi.com/0250#tm1325425663</link>
		<guid>http://ujiya-denshi.com/0250</guid>
		<category>雑談</category>
		<pubDate>Wed, 21 Apr 2010 14:02:44 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0250#k250p1"><span>■</span></a>店舗移転</h3>
<p>７月上旬頃を予定されているとのこと。twitterで得られたので便利というかなんというか。</p>
<p>デジットは独自の進化(?)を遂げるべきですねッ。得体の知れないジャンクにｗｋｔｋする日々・・・。液晶とかなんとかをごっそりと拾ってきていただけるとうれしげですね～。</p>
<br>
<br>
<p>情報ソース</p>
<ul>
	<li><a href="http://keic.jp/renew/">シリコンハウスWEB</a>にて正式発表。</li>	<li><a href="http://shop.nippon-bashi.biz/news/20100421_kyohritsu.html">http://shop.nippon-bashi.biz/news/20100421_kyohritsu.html</a></li>	<li>twitter公式アカウント: http://twitter.com/kyohritsu</li>
</ul>

</div>

<hr>
<h4><a href="/0250#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0250#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>[gcc][AVR] attributeによるバイト数装飾</title>
		<link>http://ujiya-denshi.com/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#tm1330879381</link>
		<guid>http://ujiya-denshi.com/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be</guid>
		<category>開発環境::gcc</category>
		<pubDate>Thu, 11 Mar 2010 16:28:18 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p1"><span>■</span></a>変数のビットサイズ～gcc方言の巻</h3>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p1.1"><span></span>avr-gccのstdint.hを見る</a></h4>
<p>VMにWinXP32bitを放り込んで、WinAVR 20100110をインスコ。uint32_tが8bitになっとる、という話をmixiのコミュで見かけたので検証してみました。とりあえずコードレベルで追いかけるとして、ヘッダファイルを探索。</p>
<pre>
typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__))); 
</pre>
<p><span><span style="color:#FF0000;"><strong>・・・・なんぞこれ。</strong></span></span></p>
<p><strong>__attribute__</strong>ってあたりは、まぁ、なんぞローカル定義の装飾しているなぁとは思うわけですが、<strong>__SI__</strong>ってなによ...</p>
<br>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p2"><span>■</span></a>変数サイズ指定</h3>
<p><a href="http://gcc.gnu.org/ml/gcc/2005-11/msg01038.html">Anton-sanがいいこといった！</a><strong>S</strong>ingle <strong>I</strong>ntegerだそうだ。</p>
<p>・・・ナニソレ？</p>
<br>
<pre>
* Title: Gcc help pages about __mode__ keyword
* From: Anton Soppelsa &lt;soppelsa at igi dot cnr dot it&gt;
* To: gcc at gnu dot org
* Date: Tue, 22 Nov 2005 15:48:45 +0100
* Subject: Gcc help pages about __mode__ keyword

Dear GCC help pages maintainers,
I recently encountered a statement like this one


__attribute__((__mode__(__DI__)))

in a micro kernel source file.

As I'm not so skilled with this kind of C/C++ syntax I tried to read the manual about the keywords involved in that expression.
Despite I found information about "__attribute__" and "__mode__"
I wasn't able to find information about "__DI__" (on the gcc manual pages).
Of course I found in Internet partial explanation of the meaning of "__DI__" keyword and also found out that there are many of the same type like "__SI__", "__HI__", and "__QI__".
 By the way, do they mean Double-, Single-, Half-, Quarter-, -Integer?

The point is that it seem to me those identifiers are actually keywords of the compiler.
So they really have be mentioned (at least) in the compiler manual. Better would be if they are explained.
I guess that part of the manual is not so well maintained because I found only reference to the keywords "__byte__" or "__word__" or "__pointer__".


This message is just to inform u about something if u have the time to work about has to be done (in my opinion) .
Best regards,
</pre>
<p>※本文にメールアドレスがありましたが、削除しています。改行も入れました..</p>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p3"><span>■</span></a>__SI__の謎</h3>
<p><a href="http://hal.cs.berkeley.edu/cil/cil016.html">George-sanないす</a>だ！<a href="http://sourceforge.net/projects/cil/">CIL (C Intermediate Language)</a>ということで、Ｃコンパイル時の中間言語の領域に到達した。やはりこのあたりから学ばないと、コンパイラの理解は終わらないようだな…。</p>
<br>
<pre>
GCC allows you to use the __mode__ attribute to specify the size of the integer instead of the standard char, short and so on:

int __attribute__ ((__mode__ (  __QI__ ))) i8;
int __attribute__ ((__mode__ (  __HI__ ))) i16;
int __attribute__ ((__mode__ (  __SI__ ))) i32;
int __attribute__ ((__mode__ (  __DI__ ))) i64;
</pre>
<br>
<p>ちょっとわかりづらい。CLI特有というわけでもないぽいなぁ...</p>
<br>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p4"><span>■</span></a>答えは身近に―</h3>
<p><a href="http://www.picfun.com/c30/c3004.html">後閑師</a>のところで、C30の説明があり、ここで紹介されてました。ナンテコッタイｗ</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p4.1"><span></span>以下、引用</a></h4>
<pre>
typedef int __attribute__((__mode__(SI))) int32 ; // int32を32ビット幅の整数型と定義
</pre>
<p>modeで指定したビット幅の型を定義する<br>byteは１バイト整数型、wordは１ワード整数、pointerはポインタ型を定義する<br>modeには下記記号が使用できる<br>QI ： 8ビット(char)<br>HI ： 16ビット(int)<br>SI ： 32ビット(long)<br>DI ： 64ビット(long long)<br>SF ： 32ビット(float)<br>DF ： 64ビット(long double)<br>ちょっぴり、アンダースコアの量が違いますが、まぁ、もともとも思想は同じと思って良いでしょう。処理系依存が多いでしょうし、迷ったときはアセンブラコードをはかせてみる。sizeof()でバイト数をチェックする、といった習慣をつけたほうが良いですね。特にマイコン屋さんは。仕事でも趣味でも。ね。。</p>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#k249p5"><span>■</span></a>注意</h3>
<p>斜め読みどころか、英語弱いのにかじりながら見た部分が多いですので、鵜呑みにせずリンク先の情報を消化して納得してください。<br>WEBの情報がすべて正しいとは限りませんし、何事も本家までさかのぼるよう習慣付けましょう…。<span>頼むよほんと(ぉ</span></p>

</div>

<hr>
<h4><a href="/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/%5bgcc%5d%5bAVR%5d%20attribute%e3%81%ab%e3%82%88%e3%82%8b%e3%83%90%e3%82%a4%e3%83%88%e6%95%b0%e8%a3%85%e9%a3%be#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>[perl] forkで子供がたくさん</title>
		<link>http://ujiya-denshi.com/0248#tm1325425663</link>
		<guid>http://ujiya-denshi.com/0248</guid>
		<category>Perl</category>
		<pubDate>Wed, 17 Feb 2010 16:35:34 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0248#k248p1"><span>■</span></a>子プロセスを作って並列処理</h3>
<p>表題のとおり。自動計測系の構築などで、監視する側と実行する側とに分離したいとき、forkを使うのが易いようです。</p>
<p>Windowsなら、Active Perlのperlforkを見ると、いろいろと例が載っています。</p>
<p>TrackBack先の<a href="http://www.magicvox.net/archive/2010/02161550/">Magic Vox</a>で見かけたので、記事を書いてみます。</p>
<p>自分で確認した記録でもありますが...なお、Windows7 Ultimatex64 + Active Perl v5.10.0で試しました.</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0248#k248p1.1"><span></span>コーディング例</a></h4>
<pre>
use POSIX ":sys_wait_h";

$| = 1;
my ($pid, $n) ;
	$n = 4 ;

	do {
		$pid = fork ;
		if (!defined $pid) {
			die "fork fairule...\n" ;
		}
		elsif ($pid==0) {	# child
			print "I'm a child $n/pid=$pid \n";
			sleep 10 - $n ;
			exit $n ;
		} else {
			print "create process $pid\n";
		}
		--$n;
	} while ($n&gt;0) ;

my $killid ;
	sleep 1;
	do {
#		$killid = wait();
		$killid = waitpid(-1, WNOHANG);

		print "child $killid  is dead and said $?\n" unless $killid==0;
	} while ($killid!=-1) ;
	print "Terminate test PGM.\n" ;
exit ;
</pre>
<p>親としては、子が消えるまで待ったり、よそからの要求で殺したりするわけですね。とりあえずは、forkで分岐するところをテンプレート的にお試ししました、というだけで。</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0248#k248p1.2"><span></span>実行例</a></h4>
<pre>
&gt;perl tst_fork01.pl
create process -4900
I'm a child 4/pid=0
create process -888
I'm a child 3/pid=0
create process -2364
I'm a child 2/pid=0
create process -2004
I'm a child 1/pid=0
child -4900  is dead and said 1024
child -888  is dead and said 768
child -2364  is dead and said 512
child -2004  is dead and said 256
child -1  is dead and said -1
Terminate test PGM.
</pre>
<p>ただし、<a href="http://labs.cybozu.co.jp/blog/kazuho/archives/2007/10/perl_mp.php">Perl で複数個のワーカープロセスを動かして処理を行う場合のコード</a>として例が挙がっているように、まじめにやる場合はこちらを参照したほうがよさそうです。SIGトラップして云々・・・。まだまだ勉強不足のようで('A`</p>

</div>

<hr>
<h4><a href="/0248#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0248#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>[Perl] 快適デバッグ環境</title>
		<link>http://ujiya-denshi.com/0247#tm1325425663</link>
		<guid>http://ujiya-denshi.com/0247</guid>
		<category>Perl</category>
		<pubDate>Tue, 09 Feb 2010 16:48:58 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247p1"><span>■</span></a>Perl環境</h3>
<p><a href="http://www.activestate.com/">Active State</a>から、Active Perlを拾ってきてインストール。</p>
<p>後のEclipseでデバッグする際に必要となるので、<a href="http://www.google.co.jp/search?lr=lang_ja&amp;ie=utf-8&amp;oe=utf-8&amp;q=PadWalker" title="Google検索 ">PadWalker</a>を拾ってくる。コマンドラインからppmでインスコできるので便利ね。</p>
<p><em>実行例：</em></p>
<pre>
C:\&gt;ppm install PadWalker
Downloading PadWalker-1.9...done
Unpacking PadWalker-1.9...done
Generating HTML for PadWalker-1.9...done
Updating files in site area...done
   6 files installed
</pre>
<br>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247p2"><span>■</span></a>Eclipse</h3>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247p3"><span>■</span></a>本体</h3>
<p><a href="http://www.eclipse.org/">Eclipse.org</a>から、パッケージを拾ってくる。現在GALILEOが新しい模様。いろんなぱケージがあるけれど、java開発しないならCDTでも十分。足りなくなったらパッケージを入れていけばいいでしょう。<span><a title="個人的にjava触らないので、CDT,EPICあればシアワセ" href="http://ujiya-denshi.com/adiary.cgi/0247#fk247n1">*1</a></span></p>
<p>インストーラが嫌いな人はzip版がいい感じ。eclipseディレクトリを作って、その下に展開して言ってくれるので、どこかのルートにでも展開するといいでしょう。</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247p3.1"><span></span>プラグイン</a></h4>
<p>Eclipseのメジャーなプラグインは、多くはUpdate Siteを持っているようで、Eclipse側でUpdate siteを登録して拾ってこさせることができます。また、更新チェックもしてくれるので便利です。基本的にサイト側で親切に書かれているので、そちらを参照ください・・・。ここではポインタを示すだけで、あまり細かいところまでは記載しないようにしておきます。<span><a title="Version upで操作が変わったりもしますからねぇ..." href="http://ujiya-denshi.com/adiary.cgi/0247#fk247n2">*2</a></span></p>
<br>
<h5>EPIC</h5>
<p><a href="http://www.epic-ide.org/">EPICのサイト</a>から、Perl開発用のプラグインを拾ってくる。参考サイトの@ITが詳しいので、ここでの説明は省略する。余力があれば自前でSnapShotをとっておくかネ。</p>
<h5>BABEL</h5>
<p><a href="http://babel.eclipse.org/babel/">Babel Project</a>のページにインストール方法が記載されています。やっぱり日本語のほうがサクサクと判断が進みます。</p>
<p>Babel projectの方々に感謝を。</p>
<br>
</div>
<div>
	<p><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247n1">*1</a> : 個人的にjava触らないので、CDT,EPICあればシアワセ</p>
	<p><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247n2">*2</a> : Version upで操作が変わったりもしますからねぇ...</p>
</div>

<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0247#k247p4"><span>■</span></a>参考</h3>
<p><a href="http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn10/eclipseplgn10_1.html">スクリプト言語をサポートするEclipseプラグイン</a></p>
<p><div style="text-align: center;"><img src="http://kwout.com/cutout/m/d5/uq/s2u_bor_rou_sha.jpg" alt="http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn10/eclipseplgn10_1.html" title="スクリプト言語をサポートするEclipseプラグイン - @IT" width="395" height="262" style="border: none;" /><p style="margin-top: 10px; text-align: center;"><a href="http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn10/eclipseplgn10_1.html">スクリプト言語をサポートするEclipseプラグイン - @IT</a> via <a href="http://itmedia.kwout.com/quote/md5uqs2u">kwout</a></p></div></p>

</div>

<hr>
<h4><a href="/0247#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0247#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>[Perl] 変数の型を調べる</title>
		<link>http://ujiya-denshi.com/0246#tm1325425663</link>
		<guid>http://ujiya-denshi.com/0246</guid>
		<category>Perl::基礎</category>
		<pubDate>Thu, 04 Feb 2010 17:08:39 GMT</pubDate>
		<author>ぉゅぅ</author>
		<description><![CDATA[<div>
<h3><a href="http://ujiya-denshi.com/adiary.cgi/0246#k246p1"><span>■</span></a>変数の型を調べたい</h3>
<p><em>ref</em>演算子が使える模様。リファレンスならその型を返してくれる模様。リファレンスじゃなかったらnullぽ...</p>
<p>blessされているときは、クラス名が返ってくるらすぃ。い万ところ使わないから参考程度にメモ。</p>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0246#k246p1.1"><span></span>ソース</a></h4>
<pre>
use strict ;

my $test ;
my $ref_1 = [1, 2] ;
my $ref_2 = \$test ;
my $ref_3 = $ref_1 ;
my $ref_4 = {1 =&gt;'t'} ;
my %hash_1 = {1 =&gt;'t', [2,3]} ;

	&amp;chk_type($test) ;
	&amp;chk_type($ref_1) ;
	&amp;chk_type($ref_2) ;
	&amp;chk_type($ref_3) ;
	&amp;chk_type($ref_4) ;
	&amp;chk_type(%hash_1) ;
	&amp;chk_type(\%hash_1) ;

exit ;

sub chk_type($)
{
my $v = shift @_ ;
my $a = ref $v;
  print "$a へのリファレンス\n" if ($a) ;
  print "scaler\n" unless ($a) ;

}
</pre>
<br>
<h4><a href="http://ujiya-denshi.com/adiary.cgi/0246#k246p1.2"><span></span>実行結果</a></h4>
<pre>
scaler
ARRAY へのリファレンス
SCALAR へのリファレンス
ARRAY へのリファレンス
HASH へのリファレンス
scaler
HASH へのリファレンス
</pre>
<p>配列やハッシュの要素として、任意の型をガンガン放り込めるので、それを調べて処理したいという欲求があったのですよ...</p>
<p>Ｃで書くなら、voidポインタをキャストして使っていたかなぁ。</p>
<p>C++やC#なら実行時型とか使って、同じような処理ができると思う。が、まぁ、今回はPerlだけ。ワンタイムの使い捨てになりかねないので..(^^;</p>

</div>

<hr>
<h4><a href="/0246#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/0246#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
</channel>
</rss>

