« 2007年12月 | メイン | 2008年02月 »

2008年01月28日

Red Books

 絶滅危惧種に関係ありそうな感じだけど、これは IBM が出している資料のこと。White Paper に対抗しているのかな?
 こんなのをダウンロードして印刷してみた。全部で600ページくらいあるんだよ。すごいボリューム。近日中に読破しようと思います。

これだよ。

 こんな記事を見つけた。

 稼ぐだけ稼いで、働く必要がなくなるとこういうこと言うようになるのかな?
 #でも、まじレスペクトしてますよ。


2008年01月24日

やっぱ、こうでなきゃ!!

Adaptor


 それほど、うまいコーヒーを飲みたくないのであれば、PCを持っている時はマンガ喫茶に行くことが多い。そこで自分のPCを広げて作業開始なわけだ。ミク友では、USBメモリのみを持ち歩いていて、そこにすべての環境を入れ込んでしまっている強者もいる。

 ウェブマスターのようにハードの工作も行うものにとってはシステムのコンフィグも必要になるので、上記のようなわけにはいかない。必然的に自分のPCを使う必要が出てくる。

 で、マンガ喫茶なわけだけどコンセントが使える場合なら問題ないけど、たまにPCの電源のみだったりする。コンセントが自分のブースに見つからないことが多々あるのだ。そこで開発したのが写真のアダプタ。探せば売っているのかもしれないけど、探すのが面倒くさいので自作してみた。

 マンガ喫茶に置いてあるPCは大抵、デスクトップなので電源ケーブルは確保できる。でも、それを受けるケーブルが無かったので使えなかったのだ。

 制作上の注意
100Vを扱うので、感電には十分に注意しましょう。

2008年01月22日

長浜ラーメン

 最近、仕事が忙しく開発に割ける時間が減ってきているので、生活臭が漂うブログになってきたのがちと悲しい。九州出身の業者さんと仕事をしているので、色々と九州ネタを仕入れている。

 九州ラーメンと言うと、トンコツベースのがつんとしたパンチの効いた感じのラーメンを想起する。九州男児みたいな感じ?で、ベースがわからないので彼に色々と聞いてネタを集めている感じだ。

 で、一発目の九州ラーメンは不発/不興だったので、二発目でなんとかこんな感じってのがつかめた。

 でも、話を聞くと九州面白そうだな。女の子が方言を話すのが萌えるのだ。

 いやだな、こんな男は。

2008年01月20日

気持ちのいい対応

 小生の普段使いのケータイは、E61スペシャルである。UI は使い慣れたS60なので便利だ。ケースは Krusellのカブリオレを使っている。 最初はキツキツだったけど、馴染んできてかなり良い感じになってきた。先日、このベルトのバックルの接合部分が壊れてしまった。この手の部品はどこかを弱めることにより破断が全体に波及することを防いでいる。いわゆるヒューズの役割をしているわけだ。

 これだと、バックルに付けられないのでパーツ単位で買えないかどうかを問い合わせてみた。事情を聞いた Kurusell のほうで、一個送ってくれることになった。あまりにも気持ちのいい対応だったので、ウェブページを見ていたらそのまま衝動買いをしてしまった。鞄の把っ手にケータイを固定させるアダプタだの予備のバックル接合部品などだ。

 接合部品はその把っ手のアダプタにも付いてきたので、都合5個になってしまった。でも、一個は同僚から借りたので、返す予定。

 でも、4個もいらないよ。壊さないように大事に使います。

2008年01月17日

アプライアンス

 PLAYSTATION3 Linux をベースにしたウェブシステムが稼働し始めた。外部に公開するわけでもない自分たちだけのシステムだが、動き出したことは大きい。可能な限り動作させてみて、問題点を洗い出すのだ。これと今開発中の SPE のプログラムを組み合わせたシステムが完成形である。みちのりはかなり長いけど、はじめの一歩はどんな長旅にも必ずあるのだ。

 色々とやることは多いけど、少しだけ列記してみる。
 1.固定 IP の取得による外部からのログイン
 2.本格運用

 とりあえず、フレームワークの理解からはじめるのだ。

2008年01月16日

Mixi 飲み

 ミク友のイタリア人ヲタクのフランキーとJulie ちゃんと渋谷で飲んだ。面識はあるけど、飲みは初めてなのでかなり楽しい。でも、俺の方の仕事がかなりてんぱっていてなんか中途半端だったのがくやまれる。それに向こうにとっては東京は away なので、今度はこっちが遠征したいなと痛感した。

 でも、フランキーは本当にヲタ(褒め言葉)だし、Julie ちゃんは芸能人やっていたくらいだから、オーラ出まくり。ちょっと、小ネタを仕入れて遠征に備えようと思う。

2008年01月14日

読書の時間

 原稿書きの良いところは、様々な出版社や編集部と懇意になれて、献本していただくことも出来るようになるところだ。
 最近ではネットで色々な情報が手に入るようになって来たけれど、書籍のようにまとまっているのは可搬性と信頼性の面から好ましいのだ。

 最近は組込み関係で翔泳社さんと付き合わせてもらっている。組込みzine に寄稿している。
 http://kumikomizine.jp/

 組込み関係の仕事とは別に最近の個人的な興味はウェブプログラミングである。Rails, mysql などは避けて通れないのだ。
 「Xen 徹底入門
 オープンソースの仮想化技術である Xen の説明を行っている。ディストリも4種類ほど対応しているので、自分の環境に合わせて、設定すれば良いと思う。今一番興味のあるところはこれで、夢を見れるかどうかなのだ。

 「現場で使えるMySQL
 月刊DBマガジンの連載である「本気で取り組むMySQL入門」を一冊にしたものである。小生のようにデータベースに関して、現場経験の少ないものにとって非常にありがたい一冊だ。

 「MySQL 辞典
 リモートで操作していて時々、こんな操作をしてくださいと言われるときがある。そんな時にこの本で素早く繙くと自分が何をやっているかどうかすぐにわかる。まだまだの自分にとっては大変、ありがたいのだ。

 その他の本に関しても、これから色々と紹介していこうと思う。

2008年01月13日

システムとしての性能

 PS3をホストとして、ウェブサービスを提供できないかを考えているんだけど、PCとしての実力は??って感じ。やっぱり、ゲーム機としてのピーキーな性能を使いこなすのは難しい。2.5inch のハードディスクではデータベースなど定常的な処理に置いて、足回りの処理でかなり差が出てしまう。速めのデバイスとそれなりのメモリと CPU がやっぱり必要な感じ。

 PS3でサービスさせるのはハッカー的には美しいことだろうと思うんだけどビジネスとしてはどうかな?もう、そんなにやんちゃなことはできないし。

 しばらく使ってみてから検討してみようかと思います。

2008年01月12日

BS, DEL の設定

 Linux で往年の VZ エディターと同等の動作をする ne エディターを使い始めたわけであるが、一カ所だけ気に入らないところがあった。

 BS, DEL キーの設定であるが、これがデフォルトだといまいちだった。色々と調べてみると、Macのターミナル(PS3 にはMacから SSH 経由で入っている)の設定が問題だとわかった。

 CTRL-H の設定をイネーブルにすることでこの問題が解消できた。

 少しづつ、環境を整備していこうと思う。

2008年01月11日

知らなかった

 VZ Editor 互換の ne を使っているわけであるが、コンソールの画面を縦/横を引き延ばしても大丈夫なのを知らなかった。

 これでかなり作業が効率化できそうな予感。

 今日から本格的な開発が始まるわけだ。

2008年01月10日

The last two decade

 PS3Linux の cell をいじり始めているんだけど、環境自体が激重なので ssh で接続しているのは前にも書いた通りだ。で、ssh だと当然コンソールの環境なんだけど、コンソールで使えるエディターは vi とか emacs が基本だ。

 最近では eclipse にすっかり慣れきっている怠惰なプログラマーに vi, emacs での開発は死ぬほどつらい。生産性もガタ落ちである。20年前の環境ですよ。現役で vi, emacs が幅を利かせているのは。X 環境ですら、gedit を使っているだめっぷりなのであるからして。

 コンソールでプログラムを書かなければいけないのなら、せめて VZ くらいは使いたいよなぁー。と言うのが小生の偽らざる感想なのである。で、あるんで
すよこれが、VZエディターのクローンが!!!

 まずはこれ!!
 ne
 作者は日本人でソースを落として来て早速、PS3Linux(ubuntu) でビルドしてみるも、下記のようなエラーが出てしまった。
 


 gcc -c menu.c
 menu.c: In function ‘makev_proc’:
 menu.c:85: error: incompatible types in assignment
 menu.c:92: error: incompatible types in assignment
 

 実際のコードはこんな感じ、
 

void makev_proc(int a, mitem_t *mip, void *vp)
{
va_list args;
char *p;
args=*(va_list *)vp;

p=va_arg(args, char *);
if (p==NULL)
strcpy(mip->str,"null"); else
strcpy(mip->str,p);

*(va_list *)vp=args;
}
 


 
 何か情報がないかと探してみると、ページ内に掲示板を発見した。で、見つけたのがこのサイト。
 ne, the nice editor
 それっぽいのでダウンロードして早速ビルドしてみることにした。configure も無いので、少しビビったけど少しワーニングが出るくらいで、ビルド完了。

 で、早速、
 ./ne[Enter]

 おぉー、なんとなく last two decade に見慣れた画面がぁー!!

 

 特に下側に注目ですよ。これが特徴だったような気がします。

 これで開発効率が高まりそうです。

 しかし、最新アーキテクチャのチップ開発に約20年前のソフトを引っ張りだそうとは……。


2008年01月09日

spe のスレッド処理

 libspe2 になってからの処理はコンテキストが単位になることは前のブログで述べた通りだ。spe のイメージをそのままファイルから取り込んで展開する API があるのだが、それだとうまく動作しなかった。仕方がないので、サンプルコードのとおりにやることにした。これをベースに少しづつ、肉付けしていこうと思う。動くものがないと始まらないのだ。

 Fixstars からは CTK0.73 がリリースされていた。CTK そのものは、ビルドが出来てインストールまで問題なくできるのであるが、サンプルコードのビルドでいつもしくる。どんなことが出来るかはサンプルを見ればわかるし、こういうのを見てると色々な技を組み合わせて、新しい技法を生み出すことも出来る「宝の山」なのだ。

 とりあえず、明日は複数スレッドの立ち上げと、仮想環境での開発環境の構築を目標にする。時間がないのだ。

マジで。

2008年01月08日

libspe2

 昨日に引き続き、cell のプログラミング方法について色々と調べてみる。IBM のウェブサイトに日本語でばっちり解説があったので載せておく。これと DMA を組み合わせれば、オーバーヘッドの少ない簡単なスケジューラが作れそうだ。なるべく、計算そのものを SPE にやらせるようにして、他の処理(スケジューリングとかデータベースへのアクセスとか)を PPE にやらせるようにするのだ。

 タイマ(フリーランニングカウンタ?)の値もアクセスできるので、これを使って経過時間を測定する。これはストップウォッチに相当するような機能だ。測定したい手前でスタートして、そのルーチンを通過したところでストップさせるわけだ。ハードウェアで計測するのでかなり正確に測定できそうだ。

2008年01月07日

libspe1, libspe2

 CBE(Cell Broadband Engine) の SDK は Ver.3.0 が最新版なんだけど、これで使うライブラリに libspe がある。libpspe1 まではスレッドが割とお手軽にコンテキストと一緒になって生成できた。

 libsp1 だとこんな感じだったのだ、
 FixStars のサンプルコードより抜粋、


/* SPEスレッドの生成とスタート */
printf("Create and Start spe program\n");
for (i = 0; i < SPE_NUM; i++) {
spe_id[i] =
spe_create_thread(0, spe_handle[i], (void *) &dma_data[i],
NULL, -1, 0);
if (spe_id[i] == 0) {
printf("[ERR] Can't create spe%d thread\n", i);
return -1;
}
}

/* PPEプログラムはフラグをSPEプログラム毎にSPE_STARTに設定 */
for (i = 0; i < SPE_NUM; i++) {
dma_data[i].flag = SPE_START;
printf("%d:flag=%d\n", i, dma_data[i].flag);
}

/* SPE_DONEに変わるまで待つ */
for (i = 0; i < SPE_NUM; i++) {
while (dma_data[i].flag != SPE_DONE);
/* SPEプログラム処理終了後のフラグ */
printf("%d:flag=%d\n", i, dma_data[i].flag);
}

for (i = 0; i < SPE_NUM; i++) {
/* SPEスレッドの終了待ち */
printf("Waiting spe%d program is finish...", i);
spe_wait(spe_id[i], &status[i], 0);
printf("done\n");

/* SPEスレッドの破棄 */
printf("Relese spe%d program\n", i);
spe_close_image(spe_handle[i]);
}

 libspe2 になってから大きく枠組みが変わった。(これが一番かわったところと言っても良いかもしれない。)自前で pthread を用いて、書かなければいけなくなった。これ、けっこう俺的には面倒くさい。なぜなら、libspe2 だと spe に仕事を投げる時にブロックしてしまうからだ。以下のメソッドを使って spe に投げる

 spe_context_run(spe, &entry, 0, NULL, NULL, NULL);

 spe で完了するまで戻ってこないから、戻って来たのを監視するスレッドを立ち上げないと行けないというわけだ。これ以外にもやり方はもちろん色々あって spe を自律的に動かすような仕組みもある。俺的には spe のオーバーヘッドを小さくする意味で、ppe のスレッドによるスケジューリングをやりたい。

2008年01月06日

PPE, SPE の役割分担

 年が明けてから、ずーっと SPE のうまい動かし方を考えている。まぁ、あまりうまくないとしても痛い使い方はしたくない。SPE の使いこなしってマイコンでのソフトの組み方に似ている。自分でスケジューラを組んで、タスクをディスパッチしていく。

 今、考えているやり方は関数一つ一つに SPE を割り当ててしまうこと。一つの大きな仕事を複数の SPE でこなすのではなくて、処理を丸ごと一つあるいは二つ割り当ててしまうわけだ。静的なスケジューリングと言えなくもない。当然、各SPE で処理の重さが変わるわけだけど、そこは PPE ががんばるわけだ。各 SPE の処理の終了時に結果を返して次のデータをセットする。これをラウンドロビン方式で処理していく。

 PPE は入出力と SPE をキックするだけになる。SPE の処理は予め抽象化しておき、普通のPCで充分に処理を枯らしておく。プロファイリングも欠かせない。ソースコードレベルの最適化は普通のPC環境で出来るので、チューニングはなんとかなりそうだ。

 面白くなって来た。早速、テストプログラムでも書いてみるか。

2008年01月05日

肌に触れるもの

 体に直接触れるデバイスには気を使う。キーボード、マウス、ヘッドホンなどなど。特にキーボードはゴツイ IBM-101 キーボードをいまだに使っているし、マウスは Logitech オンリーだな。あまりにも右手でマウスを使いすぎているので肩がおかしくなった。と言うことで今は左手で使っている。

 最近、ゲットした MX-Revolution は右手専用なんだよね。すげえ、便利なんだけどね。キーがたくさんあるのがサイバーっぽいし。でもなるべく、左右対称形を買うと良いのだろうな。体のためには。

 LX7とV470 が現在の主流かな。これらはMacでも Linux でも使えるので本当に重宝している。無線マウスの特性上、電池内蔵なのが程よい重さになっていいのかもしれない。この次は別の 肌に触れる モノを紹介したいと思う。

SPE を喰らう

 cell プログラミングの情報を集めようと、インターネットを彷徨ったところこんなページを見つけた。他にも FixStars なども有名だ。そこで、CTK(CellTookKit) なるミドルウェアが作成されているが、小生の環境は SDK3.0 なのでうまく実行できない。sourceforge からソースをとってこようとしても微妙にはじかれてしまう。仕方がないので最初のサイトを参考にして cell に慣れようと思う。

 このサイトの作者は当初は PS3 自体を所有していなかったようだ。でも、こんだけのものを作ったわけで情熱があればある程度はいけるのだなと痛感した次第。で、最初の頃はエミュレータ環境でプログラムを組まれていたわけであるが、少しはまった。

 spe のプログラムを一つのファイルにパッケージせずに別ファイルになっている。後になるとこれをワンパッケージ(CESOF)にしていたわけであるが、spe のイメージをppe のディレクトリに置かずに spe のプログラム部分がが動作しなかった。

 少しコードを読んで、ようやく解決したわけだ。

 実機ではない x86 アーキテクチャのPCに cell の開発環境をインストールしようと思ったが、ubuntu(debianベース)の環境には rpm のパッケージはきついみたい。もちろん、alien コマンドとかも試したけど、あまりうまくなかった。と言うことで、しばらく実機で開発を行うことにする。

2008年01月04日

RSX Hack

 ついに RSX 用のXドライバが出たらしいので試してみることにした。起動しなくなったらどうしようとドキドキものだったが、画面の高速化が行われているかどうかはあまり良くわからない。いささか拍子抜けだった。まぁ、それでもこういう動きがあるのは非常にすばらしいことだと思う。ハックなくして、コンピュータ関係の進歩はないからね。

 今日も環境構築。ssh でログインできるので、キーボードは外してテンキーだけにしてしまった。テンキーも外したいところだけど、kboot の時にどうしても[Enter] キーをたたく必要があるんだよね。

 SPE への計算をどのように与えるかを考えている。色んな種類の計算を行うから、SPEはバラバラに使おうかと考えている。いずれにしても色々と使い込んでみないとわからないな。

 実機だけだと自宅でしかプログラミングが出来ないので、シミュレータをダウンロードしにいくもなんかサーバーがダウンしているみたい。もう少ししたら、また行ってみよう。

 あとはデータベースとの接続とか色々ありそうだけど、すこしずつやっていきます。

2008年01月03日

cell programming をはじめました

 正月休みはこればっかりだな。以来の受けた原稿を書かなきゃいけないんだけど、こっちも優先順位が高いので、かなり困っている。

 元々、数学とか計算機工学とかはあまり得意じゃないのにこういうアーキテクチャがらみのプログラミングをしなきゃいけないのはつらい。でも、ジャンプアップのためには仕方ないのだ。ssh でPS3にはログインできるようになったので、すごく便利。手元のPCでシミュレータでプログラムをしてから、実機で動作確認が簡単にできる。

 SPEでどんだけのことができるか分からないけど、いまやっているような分野の計算(データが連続で来るけど、計算その物は繰り返しが多い)では威力を発揮すると思うんだけどね。CELLは。

 2008年はこのあたりが中心になりそうだな。

 

2008年01月02日

RoR on PS3

 現在、メインで取り組んでいるテーマがこれ。

 PS3のディストリには ubuntu をつかっている。ubuntu には派生がけっこうあって、xbuntu なんてのもある。これは動作がとにかく軽いらしいので、入れてみたけど微妙に設定が異なるので、RoR のキモである mysql がうまく動かない。
 これは致命的。かなり致命的であるので、再び素の ubuntu に戻した。これから、PS3ならではのことを色々と組み込んでいくつもり。

 基本、組込み屋だからね。

2008年01月01日

捨て子

新年、あけましておめでとうございます。

 新年が来たと実感するのは、どんな時?小生は村上春樹が「やがて悲しき外国語」で言っていた新聞の束が玄関先に捨て子のように置き去りになったときである。日経新聞の元旦版は7部まであり、すごいボリュームなのである。これが来るたびに、「あぁー、年が明けたんだな。」と実感するのである。

 去年から仕込んでいるネタが花を開かせる年にしたいと切に思っている次第。


本年もよろしくお願いいたします。