04_01_01


僕的にランク高かったけど、姉と妹が何も言わなかったので あんまり良くないのかもしれない。

04_01_02


ああ、そういえば、きのこなんだよなぁ…実際は。 刻んだ形しか思い浮かばないけど。

--

「今年の年賀状はファミコンで」っていうネタをやろうとしたんだけど、 6502をちょっと甘く見てたというか、8bit CPUなんだからZ80みたいなもんだと思ってたんだけど、 全然違ってたので、とても数日では間に合いそうになくなったのでやめた。

とりあえず、6502はレジスタが少ない。A,X,Y。8bit x3。 アドレスが16bitで、ペアレジスタとか無いのでアドレスをレジスタに入れられない。 慣れてたら大丈夫かもしれないけど、1,2日とかでは慣れるの無理。

で、「ファミコンのプログラムって全部これで書いてんのか…」とか思った。

面白そうなの発見Computer-ArchivっていうとこのCPUのとこ
Z80が1976.07生、6502が1975.06。へぇー。おっと、初期ARMは1985生まれか。もっと新しいと思ってた。

お、スーファミの65816って6502エミュレーションとかできんのか。へぇー。 じゃあスーファミの上でファミコンとかってスーパーゲームボーイよりも簡単なんじゃないだろうか。 あー、そういえば、GBAでゲームボーイのソフトが遊べるってどうなってんだろう。 エミュが動いてんの? お、Z80互換CPU持っててしかもそのCPUが他のチップの機能も持ってんのか。 Embedded into the processor is a fully functional GBC chipset。 なんかすごいなぁ…。

全然コード書いてない。あと、virtualaveなんとかしないといけない。

04_01_06


色々間に合わない。

SDLで遊んでんだけど、やっぱり日本語フォントっていうのは問題で、 なんとかならんかと思うのである。

今回はBDFをビットに直して、それを埋めこむ、っていうのをやってみた。 今手元にコード無いから書けないけど、それなりにうまくいくはず。 使わない文字のフォントは削るようにすれば用意するようにすればサイズも結構抑えられるので、 大小ふたつのフォントを用意するぐらいは許されると思う。 嬉しいことに東雲フォントはパブリックドメインだし。

SDL_ttfを使いたくない理由は自分でTTF用意しないといけない点だ。 日本語TTFはサイズがやたら大きいし、再配布してもいい フォントを探すのが大変だ。で、 ONScripter みたいに、「default.ttfをカレントディレクトリに置いてください」云々するはめになる。

で、Windowsだったらフォントディレクトリの位置調べるAPIが有るとかで そこから拾ってくるっていうのがある。

で、よく考えたら、fontconfigって X上でTTFファイルの位置を設定する為の代物だったような気がして、 それ考えると、なんとかなりそうな感じがしてきた。

// TTFがあるディレクトリのダンプ

void 
dump_dirs()
{
	FcStrList *paths;
	FcChar8 *path;
	FcConfig *config;

	config = FcConfigGetCurrent();

	paths = FcConfigGetFontDirs( config );

	while ( (path=FcStrListNext(paths)) != NULL ) {
		puts(path);
	}

	FcStrListDone(paths);
}

うまくやれば日本語のフォントだけ拾ってくるとかもできそう。 なんかいまいちよくわからんかったけど。

04_01_07


いけた。

#include <stdio.h>
#include <fontconfig/fontconfig.h>

FcConfig *config;

void 
dump_dirs()
{
	FcStrList *paths;
	FcChar8 *path;

	paths = FcConfigGetFontDirs( config );

	while ( (path=FcStrListNext(paths)) != NULL ) {
		puts(path);
	}

	putchar('\n');

	FcStrListDone(paths);
}

void 
dump_best_font()
{
	FcPattern *pat = FcPatternCreate();
	FcPattern *best;
	FcResult result;
	FcChar8 *fname;

	FcDefaultSubstitute( pat );

	// プロポーショナルフォントとか? 確かめてない。
	//
	// FcPatternDel( pat, FC_SPACING );
	// FcPatternAddInteger( pat, FC_SPACING, FC_MONO );

	best = FcFontMatch( 0, pat, &result );

	result = FcPatternGetString( best, FC_FILE, 0, &fname );

	puts( fname );

	FcPatternDestroy( pat );
}

int
main( )
{
	FcInit();
	config = FcConfigGetCurrent();

	dump_dirs();
	dump_best_font();

	return 0;
}

FcDefaultSubstituteが環境変数LANGを適当にやってうまくやってくれるようで。

Xft使うのにfontconfig必要なので、fontconfigは今はどのディストリビューションにも付いてるし、 それなりに設定してあるだろうから十分使えるんじゃないだろうか。

そういえば、物理のレポート明日だった。

あー、結局こんなの書いてしまった…。 まあ、フォント名直打ちよりもマシ…だといいな…

昨日の「色々間に合わない」 + 物理レポート まだ何もやってない

04_01_08


なんかカレー丼とか話なんだけど、 松屋ではビーフカレー止めてチキンカレーやってた。

松屋メニュー

松屋のカレーが290円で。明日はこれ食べよう。

04_01_10


チキンカレー、290円はお得だと思う。 吉野屋が値上げしたカレー丼なのに対して、松屋はビーフカレーに対して値段を下げたチキンカレーなのである。 どうでもいいけど。

--

テレビで百人一首対戦やってたので見る。

…なんじゃこりゃ。

「むすめふさほせ」がどうこういうレベルじゃない。

なんていうか、よくわからん。

競技カルタのルール では、ただ取るだけじゃなくて、相手に札を渡したり、配置を変えたりすることが 起こるわけで、相手の取りにくい位置に配置したり、自分の得意な札を相手に渡して がんがん攻めていったりとか、そういう戦略があるらしい。ただ覚えて速く取ればいい、と いうものでもないようで。

まあ、どうでもいいんだけど、「あさぼらけあ」と「あさぼらけう」が区別できる理由を 解説の人が説明してくれてたんだけど、聞き逃してしまった…なんでなんだろう…

--

前回のやつ

SDL_ttf使ったサンプル付け足したので、まあ、適当に使ってもらえると助かります。

とりあえず、これでSDLのフォント周りは僕としてはもう十分だ。 作りかけ(というか、ほぼできてんだけど)、のBDFいじる関数はもういらない。 書きかけのビットマップ8x8かなフォントもいらない。

04_01_11


あしたは成人式。らしい。

特に書くこともないので。

--

virtualaveもいよいよあと2日。

あと2日で変更する気が出なかった場合、色々不具合が出ると思いますが、仕様です。

不具合が出なかったら、まあ、頑張ってやる気だしたんだと思ってください。

04_01_12


設定があった方がそれっぽい絵が描けるらしいので、 昨日の絵はちょろっと設定考えて描いたんだけど、あんまり意味なかった。

まあ、設定っていっても、「米使ってなんかやる。」(食べ物を粗末にしてはいけません) ぐらいしか考えてなかったので、設定なんて無いようなもんだったんだけど。

あんまりこういうのを書くのもどうかと思うんだけど、 最近(ここ数週間くらい)、自分の絵が許容範囲に入ってきた。 まあ、下手じゃないかなぁ…くらいに。 色々まずいけど、まあぱっと見くらいはなんとかなってる、と思っている。

でも、僕の絵を金払ってまで見たい、という人は世界に一人もいないだろう。 僕だって、この程度の絵に金払うのは信じられない。 まあ、別にその辺は全然構わないんだけど。

まあ、プロになりたかったら、上手いだけじゃなくて、 説明できない「何か」、っていうのが必要だろう。 他の人の絵と比べた時に「これは違う」っていう何か。

そういう「何か」を表現できる人っていうのは、いわゆる「天才」っていう類の人か、 何故かわからないけど、常人を逸っする努力をした人(それが天才かもしれんけど) なんだろう。僕がその領域に辿り付くことは無いと思う。

プロプログラマ

で、プロのプログラマの話である。

プロのプログラマっていうのは、プロのスポーツ選手とか、 さっき説明したプロの絵描きとかと違って、 常人を超えた能力を持ってなくてもなることが可能だと思う。

自分の夢を掴める確率(夢は手に入ると云々は無視するとして)っていうのは 非常に高い、というか、プログラマ目指してたらほぼ間違いなく就職できると 言っていいくらいだろう。 だったら、プロのスポーツ選手に憧れてる人よりも、 プロのプログラマに憧れてる人のほうが得なんじゃないだろうか。

けど、やっぱり全然そんなこと無いのである。、 マラソン選手が(良い意味で)マラソン馬鹿なのに対して、 僕は学生だから実際に体験したわけではないけど、聞いた限りのプロプログラマ っていうのはコード書き馬鹿っていうよりは、普通のサラリーマンで、 そのうちの仕事の一部がコード書きなだけ、っていう感じだろう。 夢を掴みやすい分、夢と現実のギャップが大きいのである。

まあ、プログラマに限らず、世間全体で考えると、常人の能力でも就ける 仕事はいっぱいあると思うし、むしろそういう仕事のほうが圧倒的に多いだろう。 だから、まあ、別に何てこと無い話なのかもしれない。

しかし、そうでは無いと思う。プログラミングっていうのは他の仕事と比べると 個人でも十分作業できるという特殊性がある。 個人で馬鹿みたいに半導体の調査研究実験を行うことは不可能だけど、 プログラミングならばそれが可能なのである。 個人で作業できるものっていうのはそうじゃないものに比べて「天才」を生み出す可能性が 比較的高いような気がしなくもない。天才営業よりは天才プログラマの方が生まれやすいだろう。

で、プログラマっていうのはそういう特殊性を持つにも関わらず、 「ただひたすら良質なコードを書き続ける」という意味での プロプログラマというのは存在しないような気がするのである。 まあ、海外とかだったらあるかもしれないけど、 日本ではそんなに有名じゃないだろう。

じゃあ、プロプログラマに憧れてコード書き馬鹿になってしまった人はどうすればいいのだろうか、 人を超える努力をしたにも関わらず、ただのサラリーマンになるしかないんだろうか。 と、考えてみて、少し前(10/6)matzにっき からちょっと続いて、オープンソースエンジニアになるにはどうしたらいいかっていう話により、 10/8の分

違いがあるとするならば、フリーソフトウェアの開発にかけてきた時間と熱意と、それから若干の幸運だろう。

っていう一文を思い出して、

「オープンソースエンジニアっていうのは本当の意味でのプロのプログラマかもしれない」

って思った。

だから、プロのプログラマになりたいと思っている小学生(いるのか)は常人を逸っする努力をして オープンソースエンジニアになったらどうか。っていうなんとも中途半端な結論。

04_01_13


過去ログの10月、11月の四が見れない状態だったようで。 誰も気付かなかったっていうことは特に問題無かったっていうことなんだろう。

ていうことで、昔、気の迷いで取ったinfoseekのアカウントを使うことにした。 そのうち気が向いたらジオシティーズやめて全部そっちへ移動するかもしれない。 しないかもしれない。 あー、それとカレー占いも移動しないと…面倒だ。

木村拓哉がなんかドラマの役をやってるとなると何も見なくても そのキャラの性格わかるというかなんというか、別にどうでもいいんだけど。

おっと、「iswebサイト以外からのCGI呼び出しは禁止されています。」らしい。 どうしようか。→まるごとinfoseekに移動する。さようなら、ジオシティーズ。

一行ではレスしづらいので。米の件についてこっちでフォローしておくと、 昨日の文は「設定するんだったらそれなりにきっちり設定しないと全然設定しないのと変わらないから注意。」 っていう自分への覚書だったわけです。

おとといのはとりあえず「米を使ってなんとかする」しか決めてなくて、 それで描き初めたら「そんな設定どうやって使ったらいいかなんてわかんねーよ」 と、なって、米設定は何も触れられることなく闇に葬られてしまって、 最終的に米は全然関係無くなってしまった。と、いう流れ。

たしかに、昨日の文では少し、というか、全然説明が足らないような気がする。

fontlist、 shinichiro.h氏の指摘により、 ちょっと修正。てか、コンパイル通らないレベルなので全然テストしてないのバレバレ。

04_01_14


さらに卵を温める担当者なんかも出てきてお茶の間に涙を呼ぶことに。

--

あー、全然コード書く気が起こらん。って定期的に書いてるような。 あと、昔のPentium 150MhzなんかとPentium M 1GHzとかefficeonとかって どっちのほうが消費電力小さいんだろう。なんか昔のPentiumの方が大きそう。 別にどっちでもいいけど。


e1101:
無性卵は孵化しないんですよー,とかレスしてみたり
wo:
無精卵では?
e1101:
全く持ってそうですな.間違ってしまった

04_01_17


色々書くのが面倒だとか、どう書いたらいいかわからんとかだったら、 参考文献読めっていう形で丸投げしたほうがいいのかもしれない。 というか、よく考えたらそっちのほうが基本なわけで。

gcc 3.5 branch ができてるっていうことは、3.4リリースもうすぐっていうことで いいんだろうか。

GCCのフロントエンドなんだけど、tree中間コードの表現方法わかったから、 あとは書くだけかと思ったんだけど、まだrtlをなんとかする方法も調べないと いけないようで、まだまだ先は長い。全然わからん。

家から一歩も出てない。昨日午前1時ごろ寝たのに今日起きたの12時だった。寝過ぎ。 という駄目休日。

04_01_18


もうすぐ府知事選挙のような気がするんだけど、 選挙っていうとなんか「選挙行け」っていうような感じなんだけど、 「選挙に行かない」っていうのもありかもしれない。

投票率上がったら自然にひとりあたりの票の価値っていうのが下がるわけで、 まあ、要するに、僕みたいに適当に票を入れるような人間が まじめに考えて投票に行ってる人の票の価値を下げてしまうのは どうなんだろうっていうことだ。 どうでもいいけど。 まあ、選挙権っていうのは投票に行くだけじゃ使えないと思った。

--

GCCは偉い

何から手を付けたらいいか全然わからなくて、 機械語生成をGCCバックエンドに任せたら楽できるかもしれない、 っていう目論見は大きく外れてしまったのである。

ちょろっと弄ったところ、GCCのRTLに変換するコードを書くのは以前適当に書いた 機械語生成コードを書くのと比べたら何倍もの労力が必要な感じがする。 まあ、RTL生成する方法が理解できたらもう少し楽になると思うけど。

でも、それでもGCCバックエンドの恩恵、大量のCPUに対応、 商用コンパイラに迫る最適化、デバッガ用の情報の埋め込み、 っていうのを考えたら、何十倍の労力をかけてでも GCCのフロントエンドとして実装する価値はあると思う。 あのレベルのものを個人で書くのは不可能だ。

まあ、要するに、GCCっていうのは相当凄い、っていうことである。 で、さらに、そういうのがフリーソフトウェアとして提供されている、 なんて感動物語だろうか。

でも、GCCはなんか、日本ではフリーソフトの代表には加えられていない感じがある。 Linuxの隣に並んでも十分だと思うんだけど、日本GCCユーザー会は今のところ存在しないようだし。

"cat foo"とかと同じレベルで"gcc foo.c"ていうふうな感じで、 何も設定しないでも十分使えるからあんまり凄い感じにならないんじゃないだろうか。 もっと、コンパイルとか複雑にして、設定も糞ややこしくして、specもユーザごとに書かせたりしたら どうだろうか。そしたら、Linux雑誌とかで「これでできるGCC設定」みたいなコーナーができて、 GCCも偉くなれると思うんだけど。


e1101:
うちもそう思う.あと,選挙進めてくるやつはうざい.
主張ようしらんから,とかって逃げようとすると演説はじめるし.
もちろん,他の候補者に対する説明はなし.
非有権者時代が懐かしい

04_01_20


ファミマで全品1%引き

こう、百貨店とかでも2割引とかじゃなくて「100人に20人がなんとタダ」とかにしたら もっとインパクト出るんじゃないだろうか。 色々別のややこしい問題が出てきそうだけど。

後向きコーディングスタイル

今月のCマガの特集2が 少しおもしろかった、といっても立ち読みなんだけど。 日本みたいな資本主義社会では、僕みたいになんでも全部立ち読みで済ましてしまう 人間はまあ、あんまりよくないんだけど、それはいいとして、 この特集はよく論争になっちゃう色々な問題(情報処理とかの資格は取るべきか?とか) について軽く触れたものだ。

で、それに関連して、なんとなくコーディングスタイルについて考えてみた。

後向きコーディングスタイルは、 「どうせコーディングスタイル良くしたってそんなに読みやすくならねーよ。」 と、いう後向きな考えから生まれたネガティブなスタイルで、 基本は、「揉めごとが起こらないように、スタイルを隣の人に合わせる。」 と、いうものである。

隣の人が「だから、変数の頭には型を示す文字を付けるべきなんだよ」 とか言ったら、「ああ、そうだね」と、返事をするべきで、 「lParamは?wParamは?enumは?structは?」などと言ってはいけないし、 隣の人がGNUスタイルで書いてても「インデント少ない」とは言わないし、 プログラムの最後でfreeしてなくても、「OSが解放してくれるしね。」 と適当に合わせておくし、「関数の頭は大文字だよね」と言われても 文句ひとつ言わないし、「-pedantic付けろよ」と言われたら付けるし、 if ( VALUE_OK == foo ) とか書いてても無視だし、まあ、要するに、 ものごとは平穏無事に済むのが何よりも素晴らしいという話。

04_01_21


GCCのC言語フロントエンドの部分のソース読んでると、恐しい量のwarningチェックが行われてて、 とにかく驚くほどの量で、使うだけなら非常に有難いんだけど、 全体の半分くらいはエラーチェック&警告のような気がするくらいの量で、 まあ、ソース読む時はどの部分が意味的に必要な部分で、どの部分がチェックなのか かわからんようになるくらいで非常に邪魔になるわけだ。

まあ、考えられる状況ひとつひとつに対応した処理とエラーメッセージを書かないといけないわけで、 チェック厳しくしようと思ったら比例して量が増えていくのは仕方無いと思うけど、 あれって状態遷移とか使ってエラーチェック&警告の部分だけ単独の別ファイルにして なんとかならんだろうかとか、そんな感じで「状態遷移」っていう 言葉使ったらちょっと賢くなったような感じがして素敵。

なんかよくわからんけど、サーバとX端末貰って家で動かす夢見た。

04_01_22


寒い

わざわざ状態遷移表とか自作しなくても、 yaccに文法+チェック入れてごにょごにょすればいいんじゃないだろうか。 とか思ったんだけど、それだったら構文解析用文法と意味チェック用の文法と、 同じの二つ書かないといけないし、パス一回分増えるし、 それは良くないような気がする。 yaccの拡張とかしたらいいんだろうか。 でも、それだったら構文解析と意味チェックのコードが混ざって、 それはむしろ悪いような気がする。

で、まあ、やっぱり意味チェック用のコードは直接書くのが 一番なような気がして、Warningって有難い物だと思った。

04_01_24


実行コンテキストを表わすのがthread(糸)、 で、 それの機能限定軽量版がfiber(繊維)、 文字列がstring(ひも)、 で、それの機能強化がrope(縄)。

まあ、要するに、実行コンテキストよりも文字列の方が重いわけで。

文字列のアロケートなんだけど、 文字列のメモリっていうのは可変長でサイズはそんなに大きくない、っていう特徴があるので、 汎用のアロケータ使うのは色々悪そうだ、っていうのと、 文字列っていうのは、大抵のプログラムでは使われるので 専用アロケータがあってもいいんじゃないか。と思ったのである。

でも、有名な文字列アロケータとかって聞いたことないなぁ、と思ったんだけど、 文字列っていうのは何百回、何千回も回るようなループの中で 確保-解放が行われるような代物じゃないので、わざわざ 専用アロケータ作る程でもないのかもしれない。

文字列っていうのはプログラム実行したときに 直接目に見える形で表われてくるから、 他のオブジェクトよりも沢山使われているような気がしただけかもしれない。 全然そんなことないかもしれない。

04_01_25


ほんとは下書きだったんだけど、 描き直す気が起こらんかったのでそのまま。べしべし。

ああ、巡回してしまう…巡回したら1時間くらい何もしてないのと同じだからなぁ… 良くない。

04_01_27


金曜くらいまで休みます。

04_01_31


非常にアレだ。アレ。特に何も無いわけだ。

識別子とキーワード

言語に機能を増やそうと思ったら、その分キーワードが増えてしまうっていうのがあって、 でも、だからって既存の変数名とキーワードが重なったらいけないとかで、まあ、色々大変なわけだ。

例えば、GCCには構造体とかに属性を付けれるように する機能があるんだけど、それ使おうと思ったら__attribute__ っていうちょっと長いキーワードを使わないといけなくてアレだ。 でも、だからって、attrとかいうキーワード作っちゃうと attrっていう名前の変数が使えなくなるので、そういうわけにもいかないだろう。

でも、キーワードなんか無くしても何もかも識別子として扱ってしまって、 構文解析の部分でなんとかすればキーワードをもっと減らすことができるんじゃないだろうか。 例えば、

// yacc 的に

if_or_while_stmt:
ident '(' cond_expr ')' stmt
	{
		if ( strcmp($1,"if") != 0 )
			puts("if文がおかしい");
		...
	}

っていうふうにやってしまえば、"if"っていう名前の変数 を作ることだって可能なはずだ。あいまいにならないように気をつけないと いけないけど。

この日以来やる気なくして 1か月くらいやってなかったんだけど、久し振りにやりに行ったら 僕とスコアが近い人がいて、最近またやってるんだけど、4100万行かない。 そんなエスプガルーダがPS2移植らしいのでPS2持ってる人は全員買うこと。