2008-02-03

_ 「雪程度で遅れが出る東京の電車m9」…とか、30分に一回しか走らない電車と2分に一回走る電車を一緒にしてもらっては困るブログ

週末天気悪いとか…困る。 _

_ そろそろいい加減「〜ブログ」とかタイトル付けて面白がる癖やめたほうがいいな

Rubyの人ってどうして深読みすれば「Ruby使いはいかにすばらしいか」と読み取れなくもない文書をwebに置けるのだろうか。 _

なかなかそういうことって考えても恥ずかしくて書けないのだけど。 _

_

いや、そういう意図は無くてもwebには読み取ってしまう人はいるし…書いてる人なら、無理すればそういう風に読み取れるというのはわかるだろうし… _

_

↑とか書いて思ったけど、この文も深読みできるな…。 _

上の文は、「どうやったらアルファブロガーになれるか、つまりギーク(笑)なテキストが書けるようになるか」以上の意味はありません。 _

_

そうか、恥ずかしい文かどうかの問題ではなくて、「恥ずかし文だと深読みしすぎる人達」のための対策を行うか行わないかの違いか。 _

_ 並列プログラミングが今後も流行らない10の理由

  1. そもそも計算性能が求められてない。求められてる分野は全体で見るとちょっとなので、 そういう人達が全員並列方面へ向かったとしても流行りにはならない
  2. 無駄な手間が増えるわりに性能以外の恩恵が無い
  3. そもそも並列化に頼らなくてもプログラムを見直すだけで10倍くらいになる
  4. そもそも並列化に頼らなくてもお気に入りの言語を捨ててCで書きなおすだけで10倍くらいになる
  5. 3.,4.を組み合わせれば100倍くらいになる
  6. 8コア、16コアあったとして、その性能をフルに発揮してもたかだか8倍、16倍にしかならない(実際はもっと低い)

_ White Setubun

「まるで僕等を祝ってくれてるようだね…赤鬼くん…」
「キモいよ」
2008-02-05

_ 最もタメになる初心者用言語はFF12

最も十字キーを使う言語はカルネージハート。 _

sendmail.cfとかChameleonの型システムとか書こうと思ったがよく考えたらどっちも全然知らない。 _

今年の目標はCahemelon理解できるとこぐらいかなぁ… _

ところで千言万語て書籍化しないのだろうか。 _

_ FFTプレイ日記

結局必要になった。書けないが。 _

_ やべ

カルネージハートかぶりすぎ。 _

2008-02-07

_ やばい今週仕事しすぎ

しかしこれを仕事と言ってたら真面目に仕事してる人に怒られ気味。 _

ネタが作れない… _

これは一晩二時間でサクっと作れるネタを考えるしかないな。 _

_ [lifehack] ティッシュと一緒に洗ってしまった衣類を画期的になんとかする10の方法

我慢して着る _

_ いい加減「〜10の〜」とか書いて10書かないで面白がる癖やめたほうがいいな

人にパタヘネを読めと言っておいて実は自分が読んでない _

人に読めと言っておいて読んでないシリーズ _

http://udrepper.livejournal.com/19557.html _

http://www.iecc.com/linker/ _

2008-02-08

_ ほげほげ

明日京都 _

そして明後日も京都 _

_

鶴橋から京都へ行くには何がいいんかな…JRか…ふむ。 _

_ autotoolsは使う度に殺意しか湧かないな

今日は aclocal -I というものをおぼえたよ! _

バージョン管理とかdiffとかと相性忘すぎるんだけどみんなどうしてんかな… _

Makefile.inを含めない→automakeのバージョン違いで死亡 _

Makefile.inを含める→パッチの9割がconfigureとMakefile.inで死亡 _

_ F・F・T!F・F・T!

なんか面白くなってきてしまった…やっぱ自動生成かな… _

とりあえず連休中にPPCのアドレス変換かFFTを覚えたいところ。 _

_ sizeofが定数でない件

int a(int n)
{
	int x[n];
	printf("%d\n",sizeof(x));
}

int main()
{
	a(10);
}

隣の人がこういうコードを書いててびっくりした。動くらしい。これってC99準拠なんだろうか。 _

ん〜。templateに渡したらどうなんのだろうか。 _

#include 
template < int N > class A {};
int a(int n)
{
	int x[n];
	A<sizeof(x)> a;
	printf("%d\n",sizeof(x));
}
int main()
{
	a(10);
}
sizeof.cpp: In function 'int a(int)':
sizeof.cpp:6: error: '((((long unsigned int)(((long int)n) - 1)) + 1u) * 4u)' is not a valid template argument for type 'int' because it is a non-constant expression

ふむ。この式はどっから出てくんのかな。 _

_

何しないといけないんだ。 _

アレとアレ忘れない。図書館に本返す(行けるか?)。FFT。仮想アドレス。アレ。京都の地理に詳しくなる(もう無理)。ネタ考える(多分もう無理)。 _

2008-02-10

http://www.mesdigital.com/english/Products/product_mmsp2.asp _

これがプログラマぶるなのか… _

うーーーーーーーんぉえーーーー。のぅおおおーーー(色々悩み中) _

2008-02-14

というわけで京都から帰ってきた。(いつの話だ) _

向こうは雪でした。 _

_ sizeof

http://www.kt.rim.or.jp/%7ekbk/zakkicho/08/zakkicho0802b.html#D20080212-3 _

http://d.hatena.ne.jp/isshiki/20080213/p1 _

投げっぱなしネタの捕捉どうもありがとうございます。 _

C99準拠らしいので、ついうっかり // のコメント使っちゃうような人はバンバン使っても構わないということですね! _

あとC++ではそもそも可変長配列駄目なんじゃないでしょうか。とか書こうと思ったけどC/C++の規格ってちゃんと読んだことないな… _

原典を当たろうとか言う人は是非ともISO/IEC 9899, 14882を読もう!こうして人に勧めておいて自分は読んでないリストが追加されるのだった。 _

_ mmsp2

MMU付きのARMとMMU無しのARMが共有メモリで繋がってるという素敵アーキテクチャだとかいう話を聞いてGP2Xを買いそうになってた。 _

意味も無くCPUとかデバイスのデータシート読むのが好きな人には垂涎ものの参考リンク _

_

http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,19,2132 _

これがARM940Tを使ったoggデコーダらしいですよ。 _

_

ぱっと見たところ、0xc0000000周辺に片方のCPUの制御レジスタ… _

http://mudiweb.com/gp2x/MP2520F_Manual_Eng_V1.0.pdf _

これの4.3のリストか…があって、リセットかけれる。このとき下6bitが共有メモリの上位8bitになる…なので0x30000000が共有メモリ _

_

んで、table5-13に書いてあるA940TCLKを落として940Tを止める、んで、共有メモリにプログラムをロード、パラメータ設定したあと、んで、ほげほげか(面倒になってきた) _

_

でも、http://svn.gp2x.com/gp2x/tag/kernel-f200/4.0.0/drivers/char/dualcpu.cこれ見る限り共有メモリのデータ壊すと、標準のデコーダとかのプログラム破壊されそうなんだけどどうなんかな… _

必要な時になるとモジュールロードするようになってるから、毎回初期化されてんかな…うーん。これはやっぱ買うしか…ないのか…買わないよ…頑張る… _

2008-02-19

8時に起きるのは世間的には早起きとは言わないよ! _

2008-02-21

早く帰った。 _

早く起きて早く会社行って早く帰って早く寝るのを目標に… _

_ というわけで寝るぞ

寝るぞ _

_ うむ

寝るぞ(早く寝ろ) _

2008-02-22

_ 今週

というわけで、今週は、「朝5時に起きるぞ」と誓ったものの、結局起きたのは八時でしかし、これは、いつも9時30分に起きてる社会人失格の僕としてはまあまあそれなりの成果で、一応4日続いたので、三日坊主ではなく、そんであと、近くに座ってる人が面白い人だと知ったりとか、あの人が会社やめるだとか聞いたりとか、それ関連で、Googleは今日からは敵であり、僕はあと一週間でFFTを極めねばならず、そして、明日からは頑張ろうと思いつつも、そんな色々も他人にとってはどうでもいいことというか、そんな考えも全て酔った勢いでしかなくて、明日の僕にとってはどうでもいいことで、何もかも全て忘れてるんだろうなーとかいう。 _

まとめると、久し振りに色々と刺激ある一週間だったように思う。 _

_ RSSが嫌いな理由

あんまり真面目じゃない話ばっかり書いててもアレなので、真面目じゃない話も書いておく。 _

どこぞでRSSについて書いてあって、RSSリーダを使わない人間が一方的に推論されてたように感じて何か一言言いたくなったので書いておく。読者の皆さまにおいては、この文章は久し振りにアルコール入った状態で勢いだけで書いてるという点を念頭に置いて読んでほしいように思う。 _

_

まず、RSSリーダを使う一番の問題点は、「誰のを読んでるのかわからなくなる」、という点。 _

わかりやすく言うと、「sumiiさんがなんかいつもと違うノリで文章書いてるなー」とか思ったら、odzさんの文章を読んでいた、とか、そういう現象だと理解してもらえるとありがたい。 _

我々(なんで複数形?)の短期記憶は限界時間が3秒しかなく、3秒後には、どこのURLを入力したのか覚えておらず、つまり、CSSというのは、自分がナニを閲覧しているのかを忘れないための重要な情報である、ということだ。 _

真のモヒカン族は「誰が書いた文章なのかは問題ではない」と考えるところだが、我々(なん?)はモヒモヒしてないので、一番重要な情報は、ドコのダレのプライバシックな情報であり、誰が書いたかは意味が無い文章などは何の意味も無い文章であることを理解していただきたく。(←なんでメール書くと「いただきたく」で文を終えてしまうのだろうか我々は) _

_

我々がぶろっぐに求めているものはプライバシックな情報…具体的に言うと、誰と誰がつきあってるか、であり、それ以外の情報は全て0bitであり、すなわち、「誰が書いたか」が最も重要な情報であり、しかし短期記憶の無い我々は、そのCSSが貴重な情報源であり、すなわち、本文よりもCSSのほうが大事だから、CSSを削ってしまうRSSリーダはその情報量が0bitである、ということである。(結論が本文と同じくらい長い文章) _

_

_

そして、どうでもいいはなしなのであるが、どうでもいいはなしであるが故に、上の点より重要な点として、我々(なんで複数系?)は、別に情報を集めるために、webを見てるわけではない、という点である。 _

我々(なん?)は、情報を集めたくて、webを見ているのではない。 _

ちゃんとした情報が欲しいのなら、まず、ブラウザを閉じて、PCをシャットダウンし、自分が今、何を求めているのかを整理し、本屋へ赴き、本を探し、図書館へ行き、本を探し、じっくりと、その根底にある理論を理解すべきである、ということは十分に理性としては把握しているのである。 _

しかし、そんな我々(?)が何故PCを起動し、ブラウザを起動し、どうでもいいぶっろぐを読んでいるかというと、つまり、ちゃんとした情報なんか欲しくなくて、いかに無駄な時間を潰すか、が重要な課題であるからであって、そして、無駄な時間というのは、必要な作業のための時間を削って生まれた貴重な時間であることを理解していただきたいところであるが、こんな文章で情報が伝わると思ったら大間違いである。 _

_

つまり、我々は、貴重な無駄な時間を過ごすためにwebを閲覧もしくはブラウジングしてる(卵、もしくはエッグしてる)のであって、効率良く情報を集めるなんていうのは、全くもって本末転倒なのである。 _

_

しかし、webから情報収集できるから素晴らしい、という考えと、webからは情報収集できないから素晴らしい、という考えのまいんどディバイド(て何?)はどこから生まれるんだろうな。二時だから寝るよ。 _

2008-02-26

久し振りにX Windowなんぞをビルド中。僕はXが無いとメール見れない人間なのだ。 _

こんなに依存があるのか…めんどいな。 _

_

しかしこのマシンconfigureおっそいな。distccならぬdistconfigureが欲しい。 _

環境を必要としてるのはリンカとプリプロセッサで、プリプロセッサとかは無視していいので、どっかのマシンでコンパイル、ローカルでリンク、と分けて、conf.cを複数コンパイルするときは、一個次のコンパイルと、今のリンクは並行して実行できるので、そのへんを云々。 _

しかし、今のシェルスクリプトという仕組みではそういう最適化はできない、コマンドがどういう影響を及ぼすかはシェルにはわかんないのでシェルは|や&が書かれた時以外は複数のコマンドを並行して実行するなんてことは出来ない。gccが一個前のgccの処理結果に依存するなんていうことはまず有り得ないけど、しかし、シェルは、その可能性がある限り、そういう最適化を行うことはできない。 _

_

マルチコアCPU向けのカーネルというのがあるかどうかはわからんが、上のような問題を引き起こさないように注意深くシステムを作っていけば、マルチコアCPU向けのシステムというのを作ることは可能だろう。 _

_

ほんとか?distconfigureの場合だと、GCCではコンパイラとリンカが別プロセスになっているので、これを分割することができる、が、これ以上分割できない。そうなってくると、「プログラムをリンクする」という行為をなんとかしたく思う。 _

_

が…まあいいか。ここらへんはまた今度書く。と、思ったが、そんなに書くことは無かった。 _

まあ、プログラムの最適化のための解析は、そのうちグローバルな依存関係の解析のほうが重要になってくる。のかなーとか。 _

_ 12時

寝るげ。 _

_ 2時

寝てない。 _

上の考えかたは問題があって、今のシェルスクリプトは「順序入れかえによる問題が起こらない」という仕様になってるので、「順序入れかえできない」のだけど、上の考えかたは、「正しく依存関係を記述しないと順序入れかえが起こって問題が起こるよ」という仕様にすることによって、順序入れかえが可能な仕様を実現してるので、問題はほとんど解決していない。 _

さて、では、何が嬉しいか?何も嬉しくない。 _

いや、仕様では、「依存性をちゃんと記述しなかった場合の動作は保証しない」とかになるはずなので、これを、「静的な検証で依存関係が正しくないとわかったは実行不可にする」とかにしてもよくなる。シェルスクリプトの場合は、正しく依存関係書いてないものを実行不可にするのは無理…という部分で違いが出てくる。 _

依存性を記述しないといけない面倒さは、多分依存性推論とかでなんとかなるだろう。なるの?推論しきれない部分は人間に書かせるようにする。 _

というわけでシステムの構成として、「並行実行を考慮したシステムの仕様」があって、「今のシェルスクリプトに大体近いもの…に若干手で依存性を書いたもの」をつくる。んで、あとは「依存性推論」「依存性検証」「並行実行最適化」を通して実行可能オブジェクトができる、ようにすれば、安全かつ、CPU数でスケールするシステムができる…と思う。 _

_

やっとxorg-serverがコンパイルできる環境になった。前はxlibとかが揃ってる環境でxserverコンパイルしたから簡単だったんだな…あのときはXFree86だったなぁ。これからはXFree86とか知らない人がでてくるのかなー。いや、XFree86とXorgで何が違うかなんてユーザレベルではわからんけど… _

「昔はデバイス挿すたびにX再起動してなぁ…」って書こうと思ったら、hotplugするにはdbusが必要らしいということがわかった。dbusて結局なんだ? _

_ 誰だプリプロセッサは無視していいとか言った奴

主にぷりぷろせすが遅かった。 _

$ distccmon-text 1
 15182  Compile     xaaWrapper.c                             192.168.10.100[1]
 15244  Preprocess  xaaPaintWin.c                            192.168.10.100[2]

 15711  Preprocess  xaaRect.c                                192.168.10.100[0]
 15776  Preprocess  xaaLineMisc.c                            192.168.10.100[1]
 15805  Preprocess  xaaBitOrder.c                            192.168.10.100[2]

 15711  Preprocess  xaaRect.c                                192.168.10.100[0]
 15776  Preprocess  xaaLineMisc.c                            192.168.10.100[1]

 16086  Preprocess  xaaFillPoly.c                            192.168.10.100[0]

 16086  Preprocess  xaaFillPoly.c                            192.168.10.100[0]

 16086  Preprocess  xaaFillPoly.c                            192.168.10.100[0]
 16347  Preprocess  xaaWideLine.c                            192.168.10.100[1]
 16366  Preprocess  xaaTables.c                              192.168.10.100[2]

 16086  Receive     xaaFillPoly.c                            192.168.10.100[0]
 16347  Preprocess  xaaWideLine.c                            192.168.10.100[1]

_

このマシン無理かなぁ…諦めるんじゃない!昔XFree86をビルドしたときはMMXPen133MHzとかだっただろ。 _