だだもれ

2010年6月30日

パワポ、全然やってない。普通に働いてしまった。 といってもあまり意味がなかったが。

私の感覚として一つのファイルが1000行を超えるとかなり嫌な気分になる。 今日も高速化のついでに1400行あったものを8分割もしてしまった。 これ、クラス切り直したらもうちょっと綺麗になるな。

明後日九州行く。このPCにエンジェルビーツを全話入れて持ってこう。 最近アニメをまったく消化できないが、 九州行きが3回もあればだいぶ消化できるだろう。 他にやることもないだろうし。

2010年6月29日

たまちゃんが風呂でうんこ。うんこ風呂になった。

裏方仕事。何千何万のオーダーだからな。速い方がいい。 1回あたり1秒の高速化でも10000回使えば 累積で3時間近くになる。元は取れるはずだ。 実際には1秒どころでない高速化になっているはずだし。

予防接種。問題はその後の体調がよくないっぽいこと。 どうも熱が出たらしい。私が帰った時は体がまだ赤かった。 副反応として1-2割の確率で37.5度以上の発熱があるらしい。 数日以内には引くようだが、数日というのは結構なものだ。 明日明後日あたりも体調が良くないかもしれない。 ひつじこには苦労をかける。

明日はパワポを作ろう。

教えてもらった再就職についてのブログ。 大変だと思った。 いつ仕事がなくなってもおかしくないという危機感を ひつじこと共有して生きていきたいと思う。 そして、収入が途絶えてもそれほど慌てずに済むようにしたい。 私のスキルを伸ばし続けることが一番大切だが、 生活にかかるお金が増えないように身の程をわきまえた生活を 続けることも重要だ。贅沢は敵。

最近の忙しさは避けられたはずの忙しさなのだが、 私のスキルを大きく成長させてくれるし、 人の関係もできるので、すまないが協力してくれ。 給料が増える効果はないけど。

住民税の紙をもらった。初めて残業と休日出勤がない状態での年収が どれくらいなのかを知った。 やっぱり大きかったんだな。休日出勤。 そしてそれだけ会社に余計なコストをかけさせていたわけだ。

2010年6月28日

#includeと#defineを消してきた。大改造だったがどうにか。 PDFは70ページくらいになった。まだ1/3も行ってないと思うが、 例の講義の一回目に関してはこれで足りる。 パワポ作らんと。

泣くたまちゃんを抱きながら池上なんとかの番組をダラダラ見ていた。 先進国にいるのは幸せなことなのに、 幸せであることを実感できないというのは困ったことだ。 日本がもっと良くなるように何かができればと思うが、 それよりずっと困っている人が世界中にいることを考えると そっちを向くべきなのかもしれないとも思う。 日本から出て仕事をすることができるとしたら、 その方が社会に貢献できるんだろうか。 でもまあ、とりあえず今書いているものを形にするか。

不景気な時に財政再建をやると大抵失敗すると何かで読んだ。 しかし、確かに財政再建の道筋を示さないとみんな不安がって 金を使わないので、やらないわけにも行かない。

子供手当が通った。 もらえるものはもらっておくが、うちらは国が期待する使い方はしないぞ。

洗濯機。買うとしたら三洋のASW-800SBかASW-700SB。寸法は同じだが、 前者は8kgで後者は7kg。値段は1.5万くらい違う。 東芝のDDインバータの奴でもいいが、ちょっと高い。 そして評判が取りたてて三洋よりいいというわけでもない。 日立のビートウォッシュもそんなに高くないのだが、 使える洗剤の制約がきついのでダメ。 パナソニックのは節水なのが売りだが、3万以上高いのでダメ。

乾燥しないなら、洗濯機のランニングコストの大半は水だ。 電気代はうちの旧機種でも数十円のオーダーである。 一方水は数百円以上になる。 その意味で節水なのはいいのだが、いくらなんでもパナソニック高すぎだろ。 それに、上からシャワーで水をかけるから節水、という話だが、 本当にそれで大丈夫なのか不安が残る。 三洋の奴は一番素直に洗濯機だ。 もし買うならこいつでいいだろう。そこそこ静かで、 一番電気を食わず、一番場所を食わず軽く、一番安い。 まあ、買うとしたら、の話だ。最近明らかに音がデカいので そろそろヤバいんだろうとは思うが。

遅いツールを速くする仕事。どうしようもなく裏方。 しかし、100回以上使うことを考えると7分が5分になるだけでも 価値がある。もう一つ数千回以上使われるツールが遅いままになっているのも どうにかせねばならない。

ひつじこのスネ毛が復活した。 あと、たまちゃんを出してからというもの腹が黒い。

一年も経ったか。あっという間だ。

夜はあまり蛍光灯を使わない。明るすぎるからだ。 なのでもらったおしゃれ豆電球(10W)をよく使っているのだが、 こいつはさすがに暗すぎるし、白熱球なので熱が邪魔くさい。 コードにソケットがついてるだけの奴にLED電球さしたら いい具合に使えないだろうか。できれば調光機能がついてるとなおいい。

CEDEC落ちた。 チュートリアルみたいなのに資源を割くよりも、 一番来てる玄人層向けに資源を割く方がいいので、 それでいいと思う。どうせ学生や新人は来ないんだし。

2010年6月27日

GABA行って世間話してきた。というか、拳法の話。 向こうの人は拳法に興味を持つ率が高い。

ショパン練習曲、無理じゃね?速度を不問にするなら弾くことはできるだろうし、 それでもテクニックはずいぶんと上がるだろうからいいんだが、 たぶん自分で「弾けた」と思う完成度には永遠に達しない気がする。 しかし、ヴァイオリンの経験から考えると、 「取りたてて妙な曲を除いて、大抵の曲は音楽性はともかく弾くことはできる」 という状態になってからが本当の勝負なわけで、 こんなところでつまづいていたら当初の目的は達成できない。 「適当にその場ででっちあげながら弾ける」というレベルはそこより上だからだ。 そう考えると、だいぶ絶望的になってきた。

1番、指の間広いよ。しかし中学生が弾いてるってことは弾けないわけはない。

さよならピアノソナタ3。主人公は鈍感でないと物語が成立しないのだ。

2010年6月26日

includeは難しいな。C#みたいにプロジェクトみたいなものがあれば そこにソースコードのリストを入れておしまいになるのだが、 そんな面倒くさいマネはできない。

ひつじこが妖怪チチポッタリと化している。 たまちゃんがどんどん飲まないと無駄に大地に垂れ流されてしまうので、 たまちゃんには是非がんばっていただきたい。

もう5.5kgくらいはあるはずだが、さてどうなんだろう。

今日は大豆と楽譜を買ってこねば。あとGABAに寄って丁度いい時間が 空いてるか聞く。空いてれば夕方レッスンを受けて行こう。 外人と世間話してこれればいい。

2010年6月25日

やっぱり#defineと#includeはダメだ。 こいつらの文法が別であることを説明できない。 説明のテンポを激しく損なう。 自作言語なのに歴史的事情を出すのは卑怯だ。 とりあえず#defineはconstでの定数定義に置き換える。 激しく例外ルールで嫌だが、constのスコープはグローバルとする。 また、#includeはinclude( "ファイル名" )として言語内で処理すべきだ。 少なくともそう見せかける必要がある。 かなりの改造だ。だがやらんとしゃーない。

コンパイルの処理順が問題だ。まずコメントを飛ばし、 CRやタブを空白に置換する。次に、前はプリプロセスしていたが、 今度はいきなり字句解析にかける。 その後、includeだけを構文解析でみつける。 みつかったらそいつにコメント飛ばしと字句解析をして、というように再帰処理。 トークン列は全部配列に並べて、その後で改めて構文解析。あとは一緒。 うわ、面倒くせえ。

日本語で変数や関数の名前をつけるとだいぶ読みにくい。 しかし、それは私が英語に慣れているせいで、 慣れてない人にとっては日本語の方がマシだろう。 日本語で変数名をつけてもいい、ということで精神的に楽になる人は多いはずだ。 サンプルは全部日本語ベースにすべきかもしれんなあ。 ifとかwhileとかallocateとかの予約語も日本語バージョンを用意した方が いいのかもしれん。

反復( i == 0 ){
   分岐( i == 1 ){
      a = 確保( 10 );
   }
}

とかの方がifやwhileより抵抗がなかったりするんだろうか。 まあ今回の講義は英語のまま行くが。 あんまりやりすぎて「なでしこ」みたいになってもその後につながらんしな。 つうか、毎回漢字変換するの面倒くさすぎる。 実用言語で日本語はありえないと思った。

サイエンスアイという番組で太極拳を扱っていた。 氷の上で押されても大丈夫とか、そういうのをモーションキャプチャーして 解析していた。私、あれできるんだろか。 できなかったら教える資格ないよな。 つうか、全然型やってない。ちょっとまずいかもしれない。 そういえば「太極拳は地面を蹴って移動しない」と言っていたが、 どうなんだろうな。 地面を蹴ることで移動を始めない、ならわかるのだが。

にしても、テレビに出る太極拳使いには是非何かを殴ってほしい。 そして、それをモーションキャプチャーして解析してくれ。

「末代まで!」。キャラが薄いのが残念だが、そこそこ楽しんだ。 作者プログラミングやってんだろうな。亀出して動かすような言語 が確かあったはずだ。それにしても、これ、漫画の方が面白かったかもしれんな。

2010年6月24日

配列という言葉がすでに専門用語であることに気づいた。いかん。 演算子もいかん。サンプルコードはできるだけ日本語の方がいいのかもしれんなあ。 英語怪しい奴多いだろうし。

コンパイラがしくじってる系のバグはどうしようもないのが困る。 丸ごと渡さないと再現しなかったりするしな。

重曹15kg、クエン酸3kg、ビタミンC500gを買った。

出産祝いのお返しにはパシーマを送った。 使ってくれるといいのだが。 こんないいものはないと思うのだが、 いかんせん飾り気がなさすぎて豪華感がない。

2010年6月23日

文章。if文が出現する前にwhile文が出現した。 そして、変数はwhileの後まで出てこなかった。 普通とは違うが、自然な説明の順番がそうなのであれば、 気にすることはないのだろう。 そして、こうやって文章を書いていると、 スコープというものが実に説明しにくいことに気づく。 {}の中だけで有効、というようなスコープはなくていいのではないか。 関数から出るまでは出てきた変数は全部残る、 という作りの方がシンプルな気がしてきた。 実用言語なら自分の意思でスコープを狭める手段はあった方がいいが、 こいつは実用言語じゃない。 スコープを変えるくらいなら大した手間ではないし、やるか。 ローカル変数領域を確保する際の検索対象を広げるだけだ。 これまで書いたサンプルにはそれで動作が変わる場所もなかったはずだし、 問題ないだろう。

今日はロクにごはんを作ってやれなかった。 ひつじこが作り始めたあんこを煮詰めていたら焦がした。 ダメだ、今日。

ドラム習いたいな。ちょっと。リズム感が足りない。 しかし、ひつじこは私の比ではないほどリズム感がない。 これはひどい。4拍子で2と4を強くする黒人リズムの練習をしよう。 膝をドラムがわりに叩くとたまちゃんが喜んで手を振るので、 楽しく練習できると思う。

2010年6月22日

たまちゃんを抱いて散歩している最中に、ぐにゃりとしたものに足が引っかかった。 何だろうと思って足元を見てみたら、カニみたいなものが見えた。 カニ?と思って良く見たら、デカいカエルだった。 一体どこから来たのだろう。車道をひょこひょこ歩いていたので、 車に轢かれたら嫌だと思って端に追いやっておいた。 つまづいた時に怪我をさせてなければ良いのだが。

牛肉が安かったので買ってきて、焼いて食べた。 肉が必要だとは思わないが、 知らないうちに何か大切なものが欠けてるような状態にならない保証はないのだし、 たまには肉も食べた方がいい。

文章を書きはじめた。 なんでプログラムを勉強するのか、ということから納得してもらおうと思うと 結構考えないといけない。 あと、相手はプログラミングを全く知らない、という前提で書くのは難しい。 プログラミングという言葉がすでにアウトかもしれないのだ。

引数と戻り値という言葉は排除することにした。入力と出力にする。 他にもあるだろう、そういう言葉が。 関数は避けられないが、そこそこ説明しないとダメだろうな。

いろんな言語があることを今更知ったり、 スタックオーバーランがヤバい理由を今更知ったり、いろいろ。 haskellとsmalltalkを勉強すると何か世界が広がりそうだと思ったが、 どちらもさっぱり使う予定がない上に結構しんどそうである。 実行環境が仮想的なVRAMへのアクセスさえ持っていれば それでゲームを作ってみる気にもなるのだが、 ウィンドウを出すことすらままならない状態ではどうにもならない。 ハローワールド書いたり、クイックソート書いたり、 みたいな練習は正直つまらん。 私はそういう意味ではプログラマではないんだと思う。 pythonも最近とんと使ってないので、 書く時が来たら苦労するだろう。perlを使わないルールを作ったので、 時が来れば嫌でも使うことにはなるんだろうが。

政党のビラが入ってる。選挙が近いのだな。 さっぱりそれどころじゃないと言いたいところだが、 一応投票までにはそれなりに調べてちゃんと投票しようと思う。

政治家ってどういうきっかけでなるものなんだろう。

携帯ゲーム機でもずいぶんと綺麗な絵が出る時代になってしまった。 喜ばしいことだが恐ろしくもある。 テレビにつなぐ理由を提供しないと携帯できないゲーム機に未来はないよな。 テレビの前で棒を振ったり踊ったりすることは その理由として納得されるだろうか。

2010年6月21日

#defineは悪だからconstにしよう、と思ったが、 考えたらこの言語グローバル変数がないんだった。 外にあるconst定数を関数の中から見られない。 「関数の中にない変数はどこからでも見える」 と「関数の外の変数は見えない」を矛盾なく納得させられるとは 思えなかったのだ。 Cの場合、仕事をするコードは全部関数の中にあるから、 「関数の外の変数は見えない」を、 「他の関数の変数は見えない」と言い換えれば グローバル変数と矛盾しない。 しかし、main()がないperlみたいな言語だと、 これは無理だ。

定数はどこでも使えないと困る。これは間違いない。 問題はそれをどうやってやるかだ。 #defineでやるのは悪くない。 #defineが危険なのは規模がデカくなった時で、 500行も書けば嫌な気分になるような言語ではあまり問題にはならない。 #defineの場合「コンパイラに渡す前に置換されます」 と説明すれば、他と文法が違うことも納得しやすいだろう。 これをconstという言語内要素にしようとすると、 「関数の外は見えない」問題を解決せねばならなくなる。

まず一つ、関数の外が見える言語にしてしまうという手がある。 しかし、これをやると深くなるほど遠い変数がたくさん見えるようになっていくし、 どこから呼ばれたかで使える変数が変わるという恐しく嫌な状態になる。 もう一つはCと同じにmain()を作って、グローバルは特別どこからでも見える ということにする手がある。 これが一番素直なのは明らかなのだが、 「main()が必要」という仕様が「main()が不要」という仕様よりは とっつきにくいし、グローバル変数は特別にどこからでも見えます、 というのはいかにも例外ルールである。 実用言語ならグローバルにアクセスできる名前は絶対に必要だから 多少汚くなってでもできるようにすべきだが、 最初の10時間のための言語にそれを入れることは果たしてプラスになるだろうか。

やっぱり#define。そうすれば定数と変数の区別という 面倒な問題がそもそも発生しない。 基本的には何もかも引数でリレーし、 どうしても嫌ならメモリの番地直打ちでグローバル変数、 というのがすっきりする。

定数なんてなければいいんじゃないか?という考え方もある。 しかし、STAGE_WIDTHみたいなのをプログラム全体で同じ値として 使いたいという欲求はかなり初期から出てくるはずで、 これを捨てるのは無茶だ。

/**/を入れ子にできるようにしてみた。//と混ざると少々不思議なことになるが、 敢えて気にしない。//の後に*/があっても*/は無視しないようにした。

たまちゃんが泣く。外を散歩すると落ちつくようなので、 食事時に一人が外を散歩してる間にもう一人が食べる、 みたいなことになったりもする。

ひつじこと私の子育てレベルの差がどんどん開いていく。抱いても泣きやまない。

「末代まで!」の設定は素敵だ。なにかと設定の説明が多い作品だが、 ここまで設定がおかしいとそれが面白くなる。 インデクスとかだとただウザいだけなんだがなあ。 ババアレースって、一体どこから出てきた発想なんだろう。

レタスとわさび菜のサラダ、シャケ。御飯が質素だ。 しかし、サラダはそこそこ手をかけているのでおいしい。 まず野菜を洗ってちぎって水を切る。即冷蔵庫。 食べる前にボールにあけてキャノーラ油をまぶす。 別に醤油3、酢1、こしょうを混ぜておいてドレッシングとし、 さらに鰹節をアホかというくらい削る。 野菜に鰹節をかけて、その上からドレッシングをかける。以上。 先に野菜を油で覆って直接ドレッシングに触れないようにするのが重要。 直接そんな塩分濃度の高いものが野菜についたら中の水分を どんどん吸い出してしまうからである。

今日夕方にskype電話かけてきたの誰?

2010年6月20日

うんこって飛ぶんだな。大変なことになった。 女の子はおしっこが飛ばないので楽が、 うんこは飛ぶようだ。

日本スタイルのドラム式はもう使える状態になっているのだろうか。 電源が落ちないだの、洗えないだの、あまりに根本的な不良が相次いで 報告されている。 ドラム式が各社の最上位モデルになって5年も経つのに、まだこういう報告が 出ているというのは一体どういうことなのか。 あるいは、買ってる人が多いだけで不良率はそんなに高くないのか。 isseiさんの所では普通に動いてるみたいだし。 しかし15万とかするもので失敗は痛いよなあ。 なんと言ってもPCより高いのだ。うちで一番高い家電になってしまう。

粉の洗剤は溶かしてからやれとか、量が少ないと脱水ができないことがあるとか、 なんとも難しい機械だなドラム式。たぶん気にしなくてもいいんだろうが、 これだけ注意事項があると微妙な気分だ。 それに紫外線防止洗剤を箱で買ったのがまだまだ残っているので、 それが使えなくなるのは痛すぎる。 前もって溶かせばいいのかもしれないが、 そんな面倒なことをするはずもない。 しかも、泡立ちやすい洗剤はダメらしく、ちょうどこの洗剤が 泡立ちやすい洗剤リストに入っている。おかげでビートウォッシュもダメだ。

今あるのと似たような機種を買ったら何か変わるのかと思って見てみた。 単に後継機種に買い換えてもほとんど差はないが、 5万払うとインバータになって消費電力が半分になり、騒音が1/4になり、 ステンレス槽になってカビにくくなる(らしい)。 元々単なる洗濯機の場合大して電気は使わないので、 電気代を下げる効果はほとんどない。音は全然気にしてない。 そして洗濯機がカビたことなんてない(あるいは気づいてない)。 よし。今あるのがダメになってきたり、 生活スタイルが変わって干すことのコストがもっと大きくなってくるようなら、 その時に改めて考えよう。現状維持。 とりあえず干すのを手伝うようにする。というか、私が担当してもかまわない。 ひつじこの要求水準には届かないかもしれないが。

他に何をしたら洗濯が楽になるかな。

ショパンエチュードの楽譜を買い忘れた。 アマゾンで買うかとも思ったが、 楽譜にはいくつかあり、どれがいいかは見てみないとわからない。 印刷が綺麗と評判の奴はたぶんページ数が増えて練習しにくいだろうし、 原典版がいいと良く言うが、指遣いが何も書かれてないような楽譜だと 練習しにくすぎる。 また、指使いが書かれていても外人のデカい手に合わせたものだったりするので 油断できない。 全音の一番安い奴は勝手な解釈が入ってるとか、 最近の研究が反映されてないとか言われているが、 どうせ私が好きなように弾くのだからそのへんは結構どうでも良かったりする。 というわけで、来週見て買ってこよう。 今週はバッハだけ弾いてればいい。どうせ大して練習時間は取れないしな。

テトリスが動いた。細かい不満点はあるが、 とりあえずはこんなもんだろう。授業を組み立てねば。 ところで、=を演算子でなくしてしまったので、=と==は文脈から確実に 判断できる。なので、==を=にしてしまってもかまわない。 が、どうしたものか。同じ記号に場所によって違う意味が割り当てられることと、 間違いやすい記号が二つあることのどちらが大きなデメリットだろうか。

コンパイラは難しいが、いろいろ切り捨てれば書けないわけでもない。 いろいろ切り捨てたものでも実用にはならなくても勉強には十分なる。 時間が有限であるということを無視するならば、 全てのプログラマは一回はコンパイラを作ってみるべきなんだろう。 少なくとも私は今回ので結構育ったと思う。

メモリの中身を画面に出せるようにしたが、馬鹿みたいに重くなった。 手抜きして文字描画で文字ごとにDrawPrimitiveUPしてるせいだ。 これ、直さないと大学のマシンがショボかった時にヤバいよな。 テクスチャでソートしてからまとめて描画するように直すか。 さすがに5000字とか画面に出すならこのままはマズい。

結局#defineを定数定義にしか使ってない。というか、 #defineなんてそれ以外の用途に使うべきじゃない。 「#define BEGIN {」みたいなマネをされても困るからな。 と考えると、const a = 4、みたいな定数定義用の別の書式を 用意した方が断然いい。 しかしそうなると、定数か変数かの区別がコード生成時まで持ち越される ことになるのが少々面倒だ。 定数しか置けない場所に変数を置くエラーをコード生成まで出せなくなる。 確かに5*4みたいな定数式をまとめる最適化はコード生成時にやるわけだから、 そこまで遅延させていいと言えばいいんだろうが。 そうなると#includeだけ残るのが気に食わないが、 変に独自の書式入れても嫌だし、仕方ないか。

第二回までにはデバグ機能をなんぼか足したいな。 何番地のコードを実行してる時には何々という名前の変数が 何番地にある、というということがわかれば それを画面に表示できる。コンパイル時に全変数は絶対アドレスが決まるので、 何かをどうにかすればそれは可能なはずだ。 ただ、画面に表示するにしても、プログラムを止めないと意味がない。 そのためにはブレークポイントを置けないといけないが、 IDEなんてないのでマウスでソースコードをクリック、 なんてわけには行かないし、かといってコマンドラインがあるわけでもない。 となると、コードに「dが押されてる間無限ループしながら垂直同期」 みたいなのを書いて、そこの変数を表示するくらいしかない。 それでもないよりマシだろう。 つうか、最終的には画面にソースコード出してクリックできるように すべきなんだろうが。

Windowsってメッセージでキー入力を受け取るとえらく遅れるな。 毎フレームGetASyncなんたらした方がマシか。

/**/のコメントは入れ子にできるようにすべきだと思った。 ずっと前からそう思っていたことを思い出したと言うべきか。 しかし、やってみたらCでそうできない理由がわかるのかもしれない。

2010年6月19日

ピアノ。モーツァルトは終わったことになったので、 次からショパンエチュード。無理だろと思いつつも、 練習時間が取れない状態では長い曲は辛いので 短くてテクニックがつくとなるとこういうものにならざるを得ない。 まあやってみればいいだろう。

洗濯機を買おう。なんか最近おかしいらしいし、よくゆれる。 エコエコ言うようになってからしばらく経つし、 今換えればそれなりに効果はあるだろう。 何よりひつじこの家事負担を減らせるなら惜しくない。 問題はどれくらいの何を買うかだな。

2010年6月18日

倉庫番が動いた。あとはCEDECで作ったテトリスの最初の奴を移植して、 そしたら講義の構成考えて文章書き。 25までに片づけて、もらったGABAの3レッスンを受けに行こう。 30までらしいので、時間ない。

たまちゃんは黒い靴下を目で追う。すごい勢いで追う。 壁や天井が白っぽいので、たまちゃんの視界の大半は白だ。 その中で黒は特別目立つのだろう。

コンパイル結果をファイルに吐くようにした。 メッセージログをファイルに吐くようにした。 コード生成でできたアセンブラに馬鹿みたいにたくさんコメントを埋めこんだ。

案外実行速度が速い。倉庫番くらいでもう処理落ちするんじゃないかと 思ってたが、大丈夫だ。 この分だとテトリスは楽勝だな。 そのうち乗算と除算をソフトウェア化してやろうか。 ちなみに剰余はすでにソフトウェア。といっても除算があるので そんなに遅くならない。

いくつか関数を書いた。ゲームを作るのには必要だが素人には書けず、かといって VMで面倒を見るには高レベルすぎる機能。 乱数と、整数を文字列化する奴。 でもまあ、乱数はすごく出来の悪い奴なら自作できるんだよな。 極端な話「x1=x0*5+7、初期値1」とかでも最初の数回を捨てれば 簡単なサイコロくらいには使える。統計の検定は何一つ通らないだろうが。

32bitの足し算とかけ算1回でできる線形合同法の範囲で一番性質がいい パラメータは何で、それは何故か、 みたいなのが気になった。Numerical Recipes in Cに 何か書いてあるが、理由は書いてない。 クヌースでも読めばいいのか。 あんなメジャーなものを読んでないのはまずいだろうし。 しかし高いので誰か持ってるなら借りよう。

wikipediaにちょっとあった。 x1=(a*x0+b)%mにおいて、 bとmが互いに素で、a-1がmの全ての素因数で割り切れ、 mが4の倍数ならa-1も4の倍数で、mは全てのxより大きい。 32bitで桁あふれしないようにするには、 aとxが16bitである必要があるので、mは65536になる。 bはmと互いに素なので、bは素数なら問題ない。 mの素因数は2しかないので、a-1が2で割れれば良く、 mは4の倍数なのでa-1は4の倍数でないとまずい。 あれ?a=5のb=3とかでいいんじゃね?

試したら周期がちゃんと65536だった。テトリスで次に何が来るか 決めるくらいならこれで足りるだろ。 そして、m=2の32乗にしたら周期が2の32乗になった。 かけ算であふれても下32bitしか使わないので上は捨てていいからだ。 周期だけ考えるならこれでいいということか。 たぶん周期だけ考えたのではマズいからこそ パラメータを選ばないといけないんだろうが。 ビットごとのランダム度を調べないとダメなんだろう。

2010年6月17日

関数コールが動いた。 まだバグがあるらしく倉庫番はまともに動かない。 しかしあと一歩だ。あとはこまごまとした改良だから 頭をそれほど酷使しなくてもやれる。 いいかげん文章を書きはじめないとマズい。 そして文章からパワポに落とすのもそこそこ時間はかかる。

命令数を無駄に増やしている最大の原因は、 スタックポインタを操作する命令が即値プッシュとポップしかないせいだ。 ローカルにでかい配列を作るとそのサイズだけプッシュとポップが走る。 プッシュとポップが引数を取れるように改良すると 命令数がごっそり減るだろう。 でないとコンパイル結果が長すぎてデバグがしんどすぎる。 しかし、そのためには1命令足さないといけない。 即値プッシュは即値に31bit使っているのでオペランドを入れる場所がないからだ。 とりあえずポップだけでも複数やれるように直すか。

あとは、アドレスからのロードが2命令必要なのも無駄だ。 即値プッシュでアドレスをプッシュし、ロード命令でスタックの一番上を 置き換える。絶対アドレス指定のロード命令があれば これが1命令になる。実際問題、コンパイル時に全変数のアドレスが 絶対アドレスで定まるのでそうしても問題はない。 しかし、後で本当の関数コールを実装したら、 絶対アドレスからのロードを使う機会はまずなくなる。 また、オフセットを取れるようにしても、スタックの表面に置いたアドレスが ロード命令で中身に置き換えられてしまう以上意味がない。 スタックマシンというのは単純なだけにどうにもならないのだな ということがよくわかった。

すぐできる最適化。演算子の左右が定数なら計算してしまう。 0との加算を省略する。1との乗算を省略する。 これらの操作を構文木の段階で済ませてからコード生成すれば、 命令数は結構減る。しかし、それで減る命令数なんて微々たるもので、 スタックマシンである限りはそれほど劇的な改善はできない。

スクリプトが流行りだし、こういう経験はどっかで使えるだろう。 誰かが作った言語を使えばいいというのは確かにそうなのだが、 使い方に即したできるだけ低機能で自由度が低い言語の方が 運用面でいいことは多い。

プロバイダ変えたい。だが選んでる時間がない。講義が終わってからだ。 というわけで、8月ごろにはここを引っ越すと思う。

2010年6月16日

オリジナル言語で倉庫番を書いたらすごいことになった。 驚くほど面倒くさい。 しかし、この面倒くささは言語要素が少なくて便利な機能がないことによる。 ということは、この面倒くささを解消しようとすると 言語要素を増やさねばならないということだ。 当然それは初心者にとってはマイナスになる可能性がある。 とは言え、あんまり少なすぎてもそれはそれでしんどいわけで、 どのへんのバランスが良いかはよくよく考えねばならない。 でもまあ、この感じで行くんだろう。

ファイルIOの機能をつけるのは容易いが、 ファイルIOの概念がわからないと結局使えない。 それはプログラミングの問題ではない。

収入がない人が金を借りられない状態になって混乱しているらしい。 とりわけ専業主婦が借りられなくなったことが大きいそうだ。 しかし、主婦がサラ金で金を借りるという状況自体が狂っているわけで、 一向にかまわないと思う。 金が足りないなら夫が借りに行けば良く、 専業主婦が借りられなくて困るというケースは 夫に秘密で借りているケースしか思い浮かばない。 というか、サラ金で金を借りる状態が根本的にアウトだと思う。 浪費以外の理由でそこまで落ちるケースもあるんだとは思うので 全てがダメとは言えないだろうが、 大半のケースは浪費が原因ではないのだろうか。 さらに言えば、金を借りること自体がすでにアウトだと思う。 事業をしていない普通の人が借金をしていいのはせいぜい家を買う時くらいだろう。

2010年6月15日

国内外、株債券不動産、全部ほとんど同じ方向に動いていて さっぱり分散効果がない。結局景気が悪くなればそれまでということだ。

今日のたまちゃんの泣き方はすごい。 そして、ここまで泣かれると乳が出ない私にできることはほとんどない。 ごはんを作ろう。

鮭アラ、大根、にんじん、こんにゃく、みつば、で煮た。

ひつじこは鳥ガラスープを作った後の鳥ガラをモリモリ食べている。 圧力をかけたので確かに食える固さなのだが、 ダシを出し尽して味なんてまるで残っていないはずのものだ。 ひつじこは体の欲求に従って生きる子なので、 たぶんそれでも必要なものがあるんだろう。 カルシウムをもっと取れるように献立を考えるか。

a[10]とか書いて配列を定義できる言語だと、 一番下のレベルでは配列なんてないのだということがわかりにくい。 Cがわからん人の大半はたぶんそこの理解が曖昧だ。 低レベルのメモリを完全に隠蔽するなら配列という概念があってもいいのだが、 Cみたいに両方が混ざってて区別がいいかげんだとどうしようもなくわかりにくくなる。 いっそ配列なんてない方がはっきりするだろう。

私のプログラミング力の限界が試されてる。 ここを越えたら上のレベルへ行けるな、というくらいしんどい。 もしかしたら単純にやり方がまずくてしんどくなっているだけ という可能性もあるが、それならそれでより良いやり方を 思いつければ上へ行ける。いい勉強だ。

命令によって何回popして何回pushするかが決まっているわけだが、 いろいろ実行した後でスタックポインタが元通りになるように コンパイルされていることはいかにして保障されるんだろう。 ループ一回ごとにスタックポインタがズレてくようなバグは起こらないのか。 なんか大丈夫な気がするし、実際そういうことが起きたことはないのだが、 何故大丈夫なのかと聞かれると答えられない。

というか、こんな60年代レベルの言語のコンパイラを、 mapやlistを使い放題で実行速度もケタ違いの今のプログラミング環境で 作るのがこんなにしんどいというのは、 要するに私のプログラミングが全然ダメだってことだ。 C++のコンパイラなんて書いてる人は一体どれだけすごい頭をしているんだろう。

2010年6月14日

例の美少女は3ヶ月にしてすでに美少女だった。 人類は平等ではないし、平等であるべきでもない。

配列。スタックポインタを減らす命令は即値プッシュ命令しかないので、 それを配列サイズ分繰り返す馬鹿実装。でもさすがにループくらい生成すべきか。 あと、矩形塗りつぶし命令と、コンパイルエラーで正しい行番号が出るようにしたのと、 printfのための最小限の部品であるputchar相当。 色は10進法に直し、998877で赤99緑88青77とし、 16進数をユーザから見える場所から抹殺完了。 あとは関数と文字定数と文字列リテラルと配列初期化あたりが懸案事項。 Cと同じにしていいものかわからない。 文字列のヌル終端は絶対バグの元だしな。 しかし関数は絶対に必要なので、 とりあえずは全部インラインでやろう。 再帰はできんが、考えてみたら再帰でないとできない処理なんて滅多にない。 というか、たぶんそもそもそんな処理はこの世に存在しない。 再帰ができないことで不便になることはあっても不可能になることはないんじゃ なかろうか。 クイックソートも再帰で習うから再帰で書くだけで、 再帰を教えずに書かせたら意外に多くの人が再帰なしで書くような気もする。

インライン展開。コンパイル前のトークン列の段階で各関数の先頭をまず覚えておいて、 関数コールが出てきたらその先頭に飛ばしてしまえばいいだけだ。 一応そこまで呼んでる関数の名前を覚えておいて、 同じのがあったら再帰なのでエラーにする。 フレームポインタもいらん。 whileのブロックとほぼ同じ作りで行けるが、 外の変数が見えないようにしないといけないのだけが違う。 変数を探しにいくところはいじらないとダメだ。

whileの中で外の変数は見えるのに、関数の中で外の変数は見えない。 なんでか?もちろんその方が便利だからそうなっているのだが、 便利であることを実感する前の素人に納得させられるものだろうか。 グローバル変数は見えるじゃないか、というような文句も出そうなものである。 実際pascalは外の変数が見えるわけで、たまたまCがそうだというだけの 話にすぎない。

たまちゃんは急速に進化している。音がするものを目で追うようになったし、 泣く以外にも声を出すようになった。 しかしそれでもまだまだ野獣。

昨日私の母がたまちゃんを見に来たのだが、その後の法事で、 「写真写りが悪いんだろうと思ってたけど、全然そんなことなかった」 とか言いやがった。 でも今日は昨日よりかわいいと思う。

明日は鮭アラと大根とにんじんとしめじを煮る予定。 酒粕が欲しいが、蒲田まで買いに行ってるヒマなんてない。

おむつ用にバケツを買ってきた。あと蛍光灯を換えた。 8500時間のあんまり高くない奴。 うちの使用時間だと3年は切れない。切れる頃にはLEDだろう。

トイレと風呂場の電球が白熱球なのだが、 使用時間が小さいのでLEDに換えても省エネ効果がほとんど期待できない。 風呂なんて朝入るようになったからますます電気を使わない。 トイレも本を読もうとか思わなければ電気なんてつけないしな。

2010年6月13日

昨日のお客は美少女だったようだ。3歳にしてすでに他の子とは明らかすぎる 格差がある。 そしてその子は生後一ヶ月の段階ですでに美少女だったらしく、 ということはたまちゃんは美少女にはならないということだ。 美少女は美少女できっと大変だろうし、 殴って人を倒せるとか、学問が好きだとか、ヴァイオリンが弾けるとか、 そういう自分で積み上げたもので自信を持ってもらえれば、 たまちゃんは客観的な意味でかわいくなくてもいい。 こう言うと怒られるかもしれないが、 外見で勝負して許される人は産まれた段階で決まっている。 それ以外の人はさっさと別のことで得意技を作るべきだ。

蛍光灯が切れた。LEDにしたいが、さすがにまだ早すぎる。

じいちゃんの7回忌の法事。

ばあちゃんがどんな気持ちかはわからないが、 私が先に死ぬというのは、こういう状態を作ることだ。 統計的に言えばそうなる率が高いので仕方がないのだが、 できるだけ長生きしてそういう期間を減らす努力をするとともに、 それまでの時間をひつじこにとってできるだけ良いものにしたいと思う。 坊さんが技巧的な読経をする間、そんなことを思った。

一番と二番の間に語りがあり、三番の後に焼香という 観客参加イベントを配置して、四番でエンディング。そういう構成。

帰ってきたらねずりんさんが遊びにきていた。 私は弟を連れてきたので、夕飯は4人になった。 メイン部屋の蛍光灯が切れていたので、 変なおしゃれ豆電球の光だけでなんかクリスマス会っぽい感じ。

2010年6月12日

コンパイルエラーは画面に出せる限り出したが、 行番号とファイル名をまだ出せない。 プリプロセスで1ファイルになってしまって元の行番号が消えてしまうせいだ。 プリプロセス時に何か埋めこまないとダメだな。 あるいは新しい行番号と古いファイル名と行番号の対応表を作って 別に渡すか。 ブレークポイントや変数の中身表示はさらに面倒くさい。 画面にソースコードを表示してマウスでクリックされるインターフェイスを 作らないとブレークポイントは実用にならないし、 変数の中身を表示するには、その時にある変数がどこのアドレスにあるかを 知らねばならず、何か情報を持たないとダメだ。 今回はそこまでは無理なのでprintf相当のデバグ機能しか用意できないが、 それにしたってそこそこ面倒である。 初心者は大抵文字列でつまづくわけで、 どうすればでひっかかりにくいようにできるかは 頭を使わないといけない。

明日は法事。白シャツがなかったのでユニクロで買ってきた。 たぶんカレーで黄色くなったとか、そんな感じの理由で捨てたんだろうな。

今回の話には感謝しないといけない。 放っておいたら素人にプログラムを教える方法を考えるという今回の 試みはいつまで経っても形にならなかっただろう。 たまちゃんがらみで何かと忙しい今、というのは正直辛いが、 後になってヒマになるとも限らないからな。 とりあえず200ページくらいの文章を自習用に書いて配布しよう。 プログラミングなんてのは結局のところ数十分の授業で習っても どうにもならんのであって、自習してナンボのものだ。

お金の本一冊。熊野という人が書いた本。 私はこの人を拳法をやってる人としてしか知らなかったが、 本を読んでみてまともに金融業をやってる人であることを知った。 2002年の本なのでペイオフなんかに結構なウェイトを割いていて邪魔くさいが、 おおまかにはまっとうなことが書かれている気はする。 というか、専門家にも「アクティブ運用はパッシブ運用に勝てない」 とか言う人がこれだけいるのに、なんでアクティブな投資信託があれだけ 存在していられるんだろう。

ビジネス書の9割は本人が書いてないとかいう記事を見たなそういえば。 これもそうなんだろうか。とりあえず誤植が多いので あんまりじっくり作ってないんだろうなということはわかるが。

ネット銀行の定期預金はMMFより利率がいい。今MMFにあるものの 大半はそっちに置くべきか。

2010年6月11日

画面に文字を出せた。コンパイルエラーもそれなりに表示される。 あとはどうにかなるだろう。

VisualStudio2010Expressを家のに入れた。一応動いた。

ジャコにんにく豆板醤まいたけチンゲンサイ。炒めればいつも通りだが、 今日は水と昆布を入れてスープにしてみた。これはこれで食える。

「女子高生=山本五十六2」。戦争してる。だいぶおもろいが、 さてこれどうする気なんだろう。明らかに勝ちすぎている 普通の娯楽としての出来はあんまり良くないんだろう。 安定感がありすぎてハラハラしないし、 たまにハプニングがあっても本当に予測不可能なハプニングなので 「何!まさか!」という感じがない。 仮想戦記というジャンルの中での面白さが軸ということで、 そこにロマンを感じない人に売る気はないんだろう。

2010年6月10日

宿と一緒になった方が飛行機の切符は安い。 経済学的に考えれば理解できるはずだが、 経済学的に考えなければやはり不思議だ。

配列もなく関数もないが、コード生成もできて一応動いた。 あとは画面に文字を出すしくみを作って、 そこにメッセージとコンパイルエラーを表示できるようにすれば、 最低限の環境は整う。 あとは適当な所で動作を止めてメモリの状態を画面に出せたり、 なんらかの方法でブレークをはれるようにしたりできたらいいんだろうが、 そこまで行けるかどうかは不明。つうかたぶん無理。 明日あたり本業がまとめて襲ってくるはずだし。

コード生成。素直にやるとアホみたいなコードを吐く。 できる最適化は結構あるなということがわかったが、敢えてやらない。 そのうちヒマになったら命令セットをいじって 効果的に高速化できるような改造を加えてみよう。 たぶんロードストアに即値でオフセットを渡せるようにするのがものすごく効くし、 できたアセンブラもそれでかなり読みやすくなる。

関数呼び出しって面倒くさいな。 呼び出し直後のスタックポインタをどこかに取っておかないとダメで、 ということはスタックポインタを読み出す命令が必要だ。 そして、ローカル変数のアドレスは その関数開始時のスタックポインタからの相対値で入れておくしかないので、 実行ごとに本当のアドレスを計算しないといけない。 スタティックの方が速いとか言う話はこのせいか。 そしてその関数開始時のスタックポインタはスタックに埋もれさせて しまってはマズいので、別にレジスタを用意する必要がある。 どうやらそれをフレームポインタと言うらしい。 また、ローカル変数が使う領域の分だけ関数突入時にプッシュし、 抜ける時にポップせねばならず、 関数呼び出しのコストというものが実に良くわかる。 本当自分で作ってみないとわからないものだな。

関数呼び出しを全部インライン化で実現すれば フレームポインタはいらず、命令セットも拡張せずに済む。 ただし再帰呼び出しはできない。 最終的には再帰呼び出しは必須だと考えると、 やっぱり最初からちゃんとした関数呼び出しを実装しておくべきか。

最終的にはクラスは用意したいと思っているのだが、 今回の講義には絶対に間に合わないし、仮に実装できてもどうせ使わせないだろう。 そんなヒマがあったら矩形転送と矩形塗りつぶし、 それにファイルアクセスを足すべきだ。

どうしてああサウンド関連の機械はデカくてゴツいんだろう。 スピーカーが6つあるとか意味がわからんし、 ケーブルの終端にコネクタがなく剥き出しなのもわからない。 音質のためにそれらが必要なのだろうとか、 あんなゴツい機械を使うような人にとってはコネクタがあるより、 ケーブルを好き放題切れる自由の方が大事なんだろうとか、 いろいろと想像はできるが、根本的にあのゴツさを受け入れる気になれない 私としてはなんとも実感がわかない。 つうか、テスト面倒くさい。耳が二つあればだいぶ楽なんだろうがなあ。 スピーカー一つづつに耳をくっつけて鳴ってるかどうか調べる作業は どうにも怨念が溜まる。 自分の左耳が壊れていることを嫌でも思い出さざるを得ないからな。

2010年6月9日

暫定コンパイラの構文解析まで。 構文木を作るのとコード生成を一緒にやろうかと思ったが、 コードが複雑化するのでコードの量は増えるが分けることにした。 が、要素数を前もって数えられない状態で木を構築しようと思うと std::listまみれになってだいぶ面倒くさい。 性能も落ちるしコードもエグくなる。 そのへんを回避するのにちょっと手間取ったが、一応できた。 こんなに面倒なら木を作らずにいきなりコード生成しても良かったのかもしれない とは思うが、 構文解析は後でたぶんいじりたくなる部分なので、 できるだけコードを短くしておきたい。

Cの文法は素直なトップダウン解析だとうまく行かないところがある。 変数名、関数名、配列アクセスの3つはどれもアルファベット始まりの 文字列から始まるので、2トークン先読みするか、やってみてダメだったら 戻るかのどちらかが必要だ。 callとかの予約語で関数コールする言語がある理由はそのへんにも あるのかもしれない。作る側になって初めてわかることはたくさんある。 字句解析の時に次に(か[があるのを識別してしまえばこの問題はなくなるが、 字句解析に文法の事をあんまり持ちこみたくないわけで、 やっぱり構文解析で処理すべきだろう。 文法を工夫して一段何かをはさめば行けるのかもしれないが、 段数が増えるほどコードが増えてコンパイルも遅くなるし、 文法の設計はとにかく頭に負荷がかかるので、 できるだけパクリ元であるPL/0のものから動かしたくない。 そういうわけでそこだけ2つ先読みしておいた。

もともと文法は結構Cとは変えていたのだが、 やってるうちにどんどんCに近づいていった。 文末セミコロンなんていらんだろと思ったが、 あった方が構文解析が楽だし、やっぱりあった方が 書きやすい気がしてきた。 あとは括弧なんて()だけでいいだろと思っていたが、 配列は[]、ブロックは{}と分けた方が解析が楽で、 たぶん書き間違いも減る。そう考えるとCは結構良く出来ているわけだ。 まあ、後でいじろう。今はとにかく何かを動かすことだ。 でもローカル配列と関数くらいは作らないとマズいよなあ。 構造体は今回は間に合わないだろうが。

長男・兄弟形式で木を表現しても、再帰の呼び出し段数を深さのオーダーに できることに今更気づいた。しかも簡単に。 遅すぎだ。本書き直さないとダメだろ。 他人のコードを読んでないせいだが、 ポインタ距離が2より大きいオブジェクトを扱うコードに抵抗感があったのも 大きい。子の兄弟、なんて直接つながってないオブジェクトなわけで、 直接操作するのは抵抗がある。頭がC++すぎたのかもしれんな。 アクセス権とかオブジェクトとかいう概念がなかったら あっさり思いついていたかもしれない。 でもまあ、メモリのことを度外視すれば子配列の方が楽で速いし、 子配列でないとまずい木の方が実際には多い。 それに、素直に再帰してエグい段数になっているコードをしょっちゅう見るわけで、 ああいうことをやらかす危険がないという意味でも子配列の方がいい気がする。 まあ今日は長男兄弟方式でないと構築がしんどいので仕方ないのだが。

まだコード生成のことは何も考えていない。でもまあなんとかなるだろう。 whileとif以外は前にやったことがある。

ちょっと安心できてきた。論理的に一番しんどい場所は終わった。 あとは泥作業だから、多少細切れの時間でもどうにかなる。 明日はさすがに本業をやらんとな。

飛行機取らなきゃ。ひつじこはそのへん詳しいので、助言をもらう。

2010年6月8日

暫定プリプロセッサ、暫定命令セット、暫定アセンブラ、 暫定コンパイラの字句解析、まで終わった。 一日でやったにしては悪くない成果だが、 いいかげん本業もやばいのでそうそうこっちをやってはいられない。 次はコンパイラの構文解析、ファイルアクセスがバグってて VS外で実行すると落ちるのを修正、 コンパイルエラーはとりあえずテキストファイルに吐き出して続行する作りにし、 標準フォントを入れて画面にメッセージを出せるようにするとともに 文字を表示するインターフェイスを用意、 というところまでか。 だいぶ追いつめられてきた。 7月9日だと思ってたら、7月2日だったしな。 それまでにコンパイルエラーで最低でも何行目にどんなエラーが あるか表示できるようにし、画面描画、printf、画面文字列描画までは 用意し、できればファイルアクセスと、スプライトも用意したい。 スプライトがないと事実上まともな絵が出るものを作るのは不可能になるしな。 1命令実行するのに100サイクル以上かかるはずで、 単純に3GHzのCPUが30MHzに落ちることになる。 そんな速度ではいかに256x192の解像度であっても 60fpsで画面の全更新をするのは無理だ。 サウンドは絶対に間に合わんので次の機会だな。

というわけで、7月2日から3回ほどに九州大学で講義してくる。 辛くならない範囲でまたそういう仕事が来るとうれしいので、 次につながるようにしっかりがんばって来よう。

コンパイルエラーの表示、どこにするかな... いまさらwin32APIとか勉強したくないし、 ビットマップフォント用意してDirectXで描画するか... あーでも本のライブラリにMSゴシックを実行時にラスタライズして テクスチャにする奴作ったな。あれを持ってこよう。

自分で言語作ってると、いろんなトレードオフがよく見える。 今流行ってる言語はそういうトレードオフでいい感じなところをつかめたり、 単にタイミングが良かったりしてるだけだったりするのだなあと思うと面白い。 出来が良くても消えていった言語はいくらでもある。

16進法や2進法がすでに初心者にとって耐え難い苦痛になっている可能性もある。 いっそ10進にすべきかもしれない。 しかし、 ビット演算さえしなければそこの違いはプログラミングには ほとんど現れてこない。 2進か10進かが問題になるのは現状ピクセルに色を入れる時だけだ。 0xffffffを白とするか、999999を白とするかの違いくらいしかない。 なお、0b10111011みたいにして2進でも書けるようにしておいた。 なんでCにこの機能がないのかまるでわからん。8進なんぞよりよほど 使えるだろう。そもそも8進なんて使ったことがない。

ひつじこの生後1ヶ月の時の写真が出てきたので上げた。 こうして見ると似ている。お宮参りをするならこういう服の方がいいな。 レースやらフリルやらはこの野獣には似合わない。

たまちゃんを抱くのは圧倒的にひつじこの方がいいらしい。 私だとゆらさないと泣くが、ひつじこならゆらさなくても泣かない。 あと、今日は布団に置こうとすると泣く。 置いたら、ではなく、置こうとすると、だ。 足が地面に触った段階で泣く。 どんどん賢くなっているということなので喜ぶべきなのだが、 なかなかに辛いものがある。

アニメ消化してる時間がまるでない。

そろそろ古いマシンの電源を落としてみるか。 最後にもう一回退避してないものがないかチェックせねば。 そして二度と電源が入らないようならHDDを取り出して バックアップ用に使う。SATA用のUSB箱を買ってこないと。 全部終わったら一応ジャンク屋に持ってってみるか。 ここまで危険な状態だと実家に持ってく気にもならないし。

2010年6月7日

ちょっとナメすぎてた。 ここんところ文字列処理なんて全然やってなかったので 頭がびっくりするほど働かない。こりゃ本格的にヤバいな。 #defineや#includeにこんなに手間取るとは。

家でやれるようにデカいモニタにつなごうと思ったが、 ThinkPadのウルトラベースから出ている端子はD-subとDisplayPort。 D-subで1920を出すとボケボケでかなりしんどい画面になるし、 DisplayPortなんてつながらない。 DisplayPortからDVIへの変換ケーブルを買ってくればいいのだが、 この手のケーブルは大抵高いのでなにか損した気分になる。 そして、それでも会社でやった方が効率的なのが困る。 モニタ2枚なんて家で望むべくもないからな。

2010年6月6日

「女子高生=山本五十六」。VRゲームという設定で仮想戦記。 面白い。主人公が最強キャラなので安定感がありすぎる気はするが、 元々日米の戦力差がべらぼうであることを考えるとこれくらいの方が 気持ちよく読めそうだ。 また、単純に知能勝負にせず、いかに人心を掌握するかというあたりにも 重きを置いているのがいい。基本的にネトゲなので、 中の人は主人公より年上だったり地位があったりする。 そういう連中を部下として使いこなす力量が問われるわけだ。 1巻はまだ始まったばかりなので、2巻が待ち遠しい。

IS2。GDCの飛行機で借りて読んだ、女子高生ハーレムモビルスーツ物の続き。 相変わらずひどいが、それほど嫌いではない。 にしても、まだヒロインを足す気だったとは。 さすがにキャラがかぶってる気がするんだがなあ。

たまちゃんハナクソ騒動。なにかとハナクソが溜まりがちで、 ブピーブピー言いながら呼吸する。苦しげでなかなか眠ってくれない。 それでひつじこがパニックしているわけだが、 こういう時はwebだ。 似たような事例がいくらでも出てくる。 総合すると、湿気。柔らかくなれば勝手に出てくるのだ。 赤ちゃんはくしゃみの頻度が高いので、なおさら出やすい。 風呂上がりに鼻をくわえて吸い出すのもいいようだが、 ひつじこは風呂は決まった時間に入れるポリシーらしいので、朝6時である 現在は無理だ。また、仮に風呂に入れるにしても、 それほど長く入れていられるわけでもない。 というわけで、風呂に連れていって、お湯シャワーを出しっぱなしにして 蒸気を充満させた中でしばらく抱いていた。 しばらく経つと鼻毛にびっしり水滴がつくくらい湿り、 呼吸の度に奥で何かが動くようになったので、風呂場を出た。 そしてしばらくしたら自然にデカいのが出た。 あとは部屋の湿度が下がりすぎないように 一番デカいボールに水を入れて置いておくことにした。 加湿器でドーンとやってもいいんだが、カビるのも困るのでこれくらいにしておく。

問題が定義されれば、対策を考えて実行することは結構簡単にできる。 しかし、定義するというのは一種の近似であり、そこで何かを切り捨てることでもある。 一番大きな問題から順に並べて、二番目以降が「十分に小さければ」 一切無視して一番大きな問題だけを考えるわけだが、 「十分に小さい」の判断は私の場合かなり甘い。多少大きくても大抵無視だ。 これは、複数の問題を同時に解決するのが大抵困難で、 その方法を探して時間をいたずらすに費すよりはやってしまった方が早いという 感覚があるからだ。 ハナクソを取ることが最優先課題なら、 そのために頭を押えて鼻に綿棒をつっこむことで多少泣いても仕方ない、 というような態度である。 おそらくこれは私がプログラマであることによる。 プログラミングほど「やってみてから考える」というやり方が 向いている分野もないだろう。考えなしな試行をたくさんやるのと、 考え抜かれた試行を一回だけやるのでどちらがいいかと聞かれたら、 迷わず前者だと答える。失敗だったらその経験を次に活かせば良く、 大抵の失敗は利益の方が大きいのである。 しかし、失敗のコストがずっと大きい分野だって世の中にはある。 子育てはたぶんそういうものの一つだろう。 ひつじこは私とは全く違う思考プロセスを持っているので、 うまく相補できるといいなあと思う。 そして、たぶんたまちゃんに関することに関してはひつじこが 主導権を握った方がいい。というか、どうしてもそうなる。

昨日は川崎のアカチャンホンポで紙おむつを350枚(4袋)買ってきた。 これでアカチャンホンポの商品券を使い果したので、 もう当分はあそこまで行く必要はない。 確かに安いが、交通費を入れるとそのへんで買った方が安くなる。 それにしても紙おむつは重い。足の重りとミット、それに帰りに買った牛乳を 合わせて10kgは軽く超えている。しかもかさばって持ちにくい。

大量のレシートをデータ化。 これで捨てられる。つまるところ、ひつじこは自分でハードルを上げてしまうから 面倒になってやめてしまうのである。 継続可能なライン以下で最大の効果を得る方法を考えないといけない。 予算なんてものを立ててもうちの場合は意味がないし、 月ごとの集計も面倒だし、ノートに貼るのも面倒だし、 大根がいくらだったかなどの細かな情報を残しても後でそれほど有益なわけではない。 というわけで、いつ、いくら、どんな分野に使ったか、 という集計に絶対必要な3つだけを記録して終わりにしよう。 これ以上楽にはできない形だ。 何か備考があれば4列目に任意で書く。 それらがコンピュータで扱える形で記録されてさえいれば、 整理や集計はプログラムを書けば自動でできる。 日付けがバラバラでもいいし、食費と交際費が一緒になってもかまわない。 集計側で面倒を見ればいいのだ。 プログラマはこういう時に強い。

11月末あたりからのデータを合計すると140万くらい。 このまま外挿すれば年間でかかるお金は280万くらいだ。 手取りを27万×12ヶ月+ボーナス60万とすると、380万くらいだから、 年間100万余らせることがギリギリ可能という程度である。 生きて行くには十分だ。 いわゆる「子供一人2000万」みたいな基準に照らすと全く足りないが、 とりあえず生きていければいいし、それ以上を望んでも実現する手段はない。

電気代の安さは自慢していいと思う。うちで120Kwhを超えることはほとんどなく、 一段料金オンリーで3000円以下だ。 冷凍庫が導入されたのでまた変わるとは思うが、 PCの消費電力も大きく落ちたし、 たまちゃんに配慮して夜はあまり電灯をつけないので、 ほどよく相殺してくれるだろう。 気をつけるとしたらガスだが、それにしたって大した額ではない。

携帯電話代がちょっとでかい。ひつじこが入院中その他に携帯電話から webを見るケースがあったのと、うちには固定電話がないので通話料が大きくなる ことによる。skypeを使えるケースではskypeを使うようにしよう。 コンピュータが新しくなって静かになったので、前に比べると不安なく 使えるはずだ。あとパケ代はどうしたものかな。 使うなら定額プランを導入するなどした方がいいんだろうが、 データ系の料金プランにしないとパケット定額はつかない。 さすがにそっちに乗りかえて得をするほどの額でもないしな。

SUICAで払ったケースで二重計算になっているのをどうしようか。 カードからの自動SUICA引き落としと、店のレシートで二重に計算されている。 微々たる額だから今は二重計算のままでもいいのだが、 そのうち使える範囲が増してくると問題になる。 一応SUICAで払ったという情報は入れているので、 後でその分引いて計算すればいいのだが、面倒は面倒だ。 当分放置。集計プログラムを書く時に考えればいいや。

投資信託や外貨などのリスク資産の含み損は無視している。 今のところ全体ではマイナス。 日経平均が10500円くらいになるとプラスになるのだが。

ウィルコムは小学生以下の子供がいると割引になるようだ。 これ母親だけだったりしないよなあ。 次の拳法の帰りに蒲田に寄るか。

交通費でかいな。しかし出産関連なので仕方ない。

まいたけペペロンチーノ風スパゲティ。 スパゲティをゆでる。塩分濃度1%。 にんにくと豆板醤をオリーブオイルで炒める。まいたけを入れる。 横でパルミジャーノレジャーノと塩鮭を小さく切る。 ゆであがりちょっと前くらいにゆで汁をおたま2杯分ほどフライパンに足して チーズと鮭を入れて、ちょっと煮る。 スパゲティ合流。食べる。 なお、二人で350gのスパゲティを食ったが、私は半分食べてない。

明日は会社休んで仕事するかな。いい加減本気でやばいだろ。 気合を入れてやれば一日でできるんだが、 一日ドーンと空かないとコンパイラを作るなんて無理だ。 まあまだその前のアセンブラで予行演習をする段階なのだが。 ...最悪アセンブラでやってもらってもいいかもしれんな。 覚える事が少ない分だけかえってとっつきやすいかもしれんし。 高級言語は覚える事を増やすかわりに一行で書ける処理内容を大きくしたものだ。 覚えた後は楽だが、覚えるまではそこそこ面倒くさい。 実のところアセンブラは覚えることは大してないので始めるだけなら簡単 なのだ。ただ、意味のある処理を書くために膨大な行数を書かねばならないので 難しいというのが問題なのである。 なんかいい具合に間を取ればアセンブラでも学びやすくできる気はする。 でもまあ、それは最悪の場合だ。

キーボードライト最高。もうこれがない機種は買わないぞ、と思うくらいいい。 なんと言っても、うちは夜になるとまっくらなのだ。 あと、バッテリーがあるのがすごい。ケーブルはずして トイレに持っていってもいい。無線LANもえらい。 あーそういえばルータ買い忘れたな。今から行くべきか。 でも来週。

えぼ鯛の干物を焼いて、たらこ、レタスのサラダ、しいたけじゃこ御飯。 質素だが、レタスのサラダは本式の作り方をしたので手が込んでいる。 まず、レタスをあらう。ちぎる。サラダ回しで水を切る。 サラダ回しごと冷蔵庫にしまう。 次に、酢、レモンを大さじ1づつ、塩1gくらい、胡椒を混ぜてドレッシング完成。 あとかつおぶしをアホかと思うくらい削る。これで準備は完了。 食べる寸前にレタスを出してボールにあけ、 キャノーラ油大さじ1をかけて、フォーク2本でレタスをすくい上げては 落とすのを何十回かやって油をまぶす。 その後ドレッシングをかけ、最後にかつおぶしをかける。 生で食う野菜はごまかしがきかないので、 水と酸素と高温から守らないといけない。 水を切るのも、サラダ回しごと冷蔵しておくのもそのせい。 油を先にまぶすのは、塩が直接つくと野菜から水を 吸い出して食べている間にしなびていくからだ。 油入りのドレッシングは手抜きである。 また、野菜がうまければドレッシングは簡素な方がいい。 酸味と塩が重要で、あとは飾り。レモンだけだと尖りすぎるし、 酢だけだと爽やかさに欠けるので、ほどよく混ぜる。 かつおぶしはレタスの味とはぶつからないので、かけても壊れない。 うまみが加わっておいしい。

ほとんど丸元準拠で私のオリジナルではないのだが、 強いて言えば、丸元の本気すぎる部分をできるだけ味を落とさずに 簡略化した所が工夫と言えなくもない。 それにしても、最近適当につくってもそこそこうまいものができる。 もしかしたら料理うまいのかもしれんな私。 レシピをガン無視するので失敗率は高いしブレるが、 平均値はそれなりに高いように思う。

鳥ガラ2羽、にんにく1かけ、レモン2/3個の皮を剥いたもの、 を圧力鍋で20分、その後大気圧に戻して弱火1時間。 レンズ豆とひよこ豆を1カップづつ水につける。 今日はここまで。明日はこれに玉葱3個のみじんぎりを加えて煮て、 塩で調味、カレー粉投入。食べられるのは夜。 これがおいしければ、今度築地に行った時に 鳥ガラをキロで仕入れてきて大量にストックを作る。 鳥ガラは10羽といったところか。6Lまでは一発で作れる。 保存は牛乳パックに入れて冷凍。使う時は破いて鍋に出して溶かせばいい。 いつも鳥ガラスープが冷凍庫にある、という状態になると 作る料理の幅がかなり広がる。ラーメンだって作れるからな。 鳥ガラはたぶんキロ200円以下で買えるはずだ。

うちの料理は時間はかかるが、金はかからないし、手間もそれほどかからない。 一回の生産量が多いので回数が少ないし、 放置時間が長いレシピを積極的に採用しているので スケジューリングさえうまくやれば手間はかからない。

確かにゲームはロクに作ったことがないけどな。 ゲームロジックを書くことだけをゲームを作ると呼ぶのであれば、だが。 あの本は学生のための心得みたいなもんで新人研修云々じゃない、 というのは全くその通りだが、 本当に学生のうちに皆があれを済ませてるようなら あんな面倒なマネをして本を書こうなんて思わなかっただろう。 あんな本がいまさら必要な状況がそもそも間違っているのだから。 それにしても、同意できることであっても、 他人に言われるとムカつくものだな。 甘んじて受けるが。 それにしても自分で書いたという実感がほとんどないのが面白い。 相当他人事だ。たまに見直してみるが、自分で書いたことが信じられなくなる。

2010年6月4日

MonsterTV U3のドライバを入れてテレビを見られるようにしたが、 ひつじこアカウントからだと見られない。 何度やってもインストーラが再起動を求めてくる。 電話するのダルいなあ。どうせつながらないんだろうし。 これは私の偏見かもしれないが、 堅気のソフトウェアの品質は大抵低い。 とりわけ周辺機器を使う専用ソフトの出来はひどいという印象がある。 スキャナのソフトとかも出来が悪かった。 一緒についてる画像管理ソフトとか、明らかにいらない出来。 プログラマのスキルが低いのか、そもそもべらぼうに難しいのか。 いっそドライバだけ書いて、アプリとの通信インターフェイスを 公開してそのへんの人の働きに期待した方がいいんじゃないだろうか。

一応マニュアルを読んで、それでもダメなら ベータ版のアプリも試しておくか。 電話で聞いても大したことはわかるまい。

にんにくの芽とピーマンのブレイズ。 レンズ豆と玉葱とにんにくのカレー風味スープ。 塩鮭をあぶったもの。 今日もごはんはおいしい。

2010年6月3日

PCが来た。一応使える状態まで持ってきた。恐ろしくキーボードが打ちやすいが、 escが遠いのと、ctrlの場所が違うのに慣れるには時間がかかるかもしれない。 ああ、escが遠いなあ。viなのでちょっと辛いかも。

無線LANをnにするか。AVCHD動画のネットワーク越し再生は帯域が足りない。 nのルータを土曜に買ってこよう。

昇進の試験を受けた。受かったら昇進するらしい。 8レベルあるうちの2レベルから3レベルになる。 二等兵が軍曹になるくらいの感じか。 1レベルは一年目オンリーなのでないも同然だし。 今まで平社員であることをいいことに好き放題してきたが、 金をもらえるとなるともう少し真面目に働かねばならない。 それはそれで面倒だが、悪いことではないな。

このコンピュータは異音がしない。すごいな。ファンの音がしないって 一体どういうことだ。 しかもバッテリーを積んでいて、コンセントに差さなくても動くのだ。 それにしてもwindows7は慣れないな。

テレビを見られるようにして、chromeのブックマーク同期を使って ブックマークを移し、openOfficeを入れた。おいおい環境を整えていこう。

視野角案外狭いな。ちょっと上から見ると白っぽい。

2010年6月1日

大学の時の先輩が来た。 確かに、おこづかい2万円の人におごってもらうことはなかったなあと反省。 食べ放題は久しぶりだったのでつい食べすぎた。 5歳の子供ってのはすごい。たまちゃんの5年後なんて想像もつかない。

習い事は難しいところだ。ピアノとヴァイオリンについては 私が横で楽しそうにやってるのを見てやる気になればやらせるだろうが、 それだけのことだ。 拳法については生活の一環なので、やらせる気がなくてもやらせることになる。 最初の数年は単に体をウネウネしたり呼吸をしたりしてるだけで十分だし。 でも剣道ならやってもいいかもしれないな。 あれは神経が細かくなりそうだ。 柔道や空手は下手な習い方をすると妙なクセがつくが、 剣道ならたぶん大丈夫だろうし。 あと習字と縫い物と水泳はひつじこが教えるだろう。 そろばんとか公文とかは私が有用性をわかってないので全然考えてない。

臨時ボーナスが5万円ほど出たが、何事もなかったように貯金する。 子供手当がもらえるっぽいが、何事もなかったように貯金する。 うちの消費性向はゼロだ。ああでも、今日また舞茸を箱で買ったり、 謎の柑橘類を買ってきたり、 そう安くもない春菊を買ってきたりしてるあたり、 やっぱり消費が刺激されているのかもしれない。

うちのごはんはおいしいと思うが、それはそれとして質素だ。 今日は焼いた塩鮭、春菊をゆでてかつおぶしをかけたもの、 自作納豆、じゃがいもをゆでて酢と油まみれにしたもの。 塩鮭なんて、普通の切り身の半分くらいしかないのを二人で食べている。

久しぶりに丸元クックブックを読むといろいろ発見がある。 この本はいい本なのでおすすめなのだが、 これを生身で勧められる知り合いは思い浮かばないのでここに書くに留めておく。

玉葱買ってきた。レンズ豆のスープ作ろう。 そういえばせっかく冷凍庫があるんだし、 鳥ガラのストックを大量生産するのもいいかもしれんなあ。 次の築地の時に鳥ガラを大量に買ってくるとしよう。

シーラー買うか。ラップでくるむよりは楽だろうし保存性もいい。 ランニングコストが若干高くつくのが気にはなるが、 調べれば安く買える場所も見つかるだろうし。

オカカ7型を使ってみた。なかなか具合がいい。 押さえる手はそこそこの力をかけねばならないので まるで疲れないというわけではないが、 普通の鰹節削りでがんばるよりはだいぶ楽だ。 これは勧められる。 だいぶ細くなった鰹節なので花かつおにはならないが、 ゆでた野菜にかけて食う分には問題ないし、 たぶん大きな鰹節なら花になるんだろう。 あとは耐久性がどうかだな。

たまちゃんは乳を飲みながら右手をブンブン振る。 たぶん右利きだ。左利きなことに気づかず無理矢理右でやらせるような 事はしたくないのでここは慎重でありたい。


もどる