Diary?::2008-03

2008-03-01
Sat

(03:00)

MS の連中が嫌々ながらとはいえ各種 Office の仕様を公開したわけだが、まあ予想の通りに酷かったわけだ (流石に全部は読んでないが、酷くない部分は存在しないだろう)。勿論この酷さには理由があって、

  • パフォーマンス上の問題
  • 膨れ上がる要求仕様
  • バージョン間での互換性の維持
  • 一度満たしたニーズの継続的サポート

といった問題があり、そのため既にこの世界の誰も使っていなさそうな仕様を廃棄することが出来ないでいるわけだ。ある視点からの理想を言えば、適当なところでデータフォーマットもきちんと洗い直して、古いデータ形式から新しいデータ形式へのエクスポートを行えるようにして、既にニーズが消滅しているであろう仕様は撤廃するのがいいのだろう。が、これをやると古いバージョンを使いつづけたいというユーザをどうするか、誤差に過ぎないとはいえ確実に存在するニーズを無視するのか、といった問題を生みだす。そしてそちらの問題は古いパッケージも継続して使えるようにする以外に方法は無く、継続的あるいは永久的に旧バージョンのメンテナンスとサポートを行うことを意味する。勿論、それら全てに目を背けて大鉈をふるってもいい。さあ、一番高くつくのはどれだ?

ちなみに俺は何にせよこの手の問題を生み出したのは他ならぬソフトウェア開発者だと思っていて、要するにユーザに対して自分たちのソフトウェアの思想を提示することが出来なかったから、惰性でどんどん仕様が膨らんでいくわけだ。相手の要求に答えるだけならどんなバカでも出来るのだ。本当に重要なのは、相手が何故その要求を出したのかについて考え、本当の問題解決手段を提示することで、それこそが個人であれ企業であれソフトウェアにおける思想というものだろう。そして俺は「全部入り」のような回答を出すことは人間の知性に対する許されざる冒涜だと考える。

もっともプロプライエタリなソフトウェアの場合、どうしても囲い込みとモノカルチャー化というのが付いて回るのが割と真実に近いと思う。そして結局それは「何でもやります」というくだらん結論にしか至らないわけで、俺がよりフリーでオープンな方向を指向するのはそういうことだ。

最後に書いておくと、 Office の仕様が公開されたこと自体は喜ばしいことだと思う。たとえそれが 99% の開発者の手に負えないようなとんでもない代物で、 MS Office と完全互換のソフトウェアを MS に依存せずに作るのは限りなく不可能だということになっても、公開されていないよりはマシだ。少なくとも公開されたことで、このフォーマットに真面目に付き合うのは俺にとっては人生の浪費だということがわかった。これは「もしかしたらどうにか処理できるフォーマットかも」というささやかな希望を完膚なきまでに叩き潰すものだが、問題に対する回答ってのは得てしてそういうもので、この場合の「解決不能」は「わからない」より相当マシだ。

それにしても Apache POI の連中はこれをリバースエンジニアリングで解析してある程度のことは出来るようになったんだから、本当にとんでもない連中だよな。

(12:00)

Scribes をアップデートしたら、どうにも不安定になっちまった。具体的には、自分で書いたプラグインの挙動が変だ。エラーメッセージから推察するに API に変更があったようなのだが、まだ詳しくは調べていない。やはり正式なドキュメントが揃う前にプラグインを書くのは無謀だったか。

これはどうにもいただけないので、対応策を考える必要があるのだが……。しばらくは kwrite でも使うか?

(21:33)

どーでもいいけど、シェルスクリプトで「とあるディレクトリが空かどうか」を調べる方法。

if [ -d $TARGET ] && [ 0 -lt `ls $TARGET | wc -l` ]

これしか思いつかんかった。

実は例の世界樹2 のページはファイルの生成とかデータのコピーとか、そういうのを Makefile に書いて次のようなターゲットを定義している。

doc:
  python .... #テキストファイルから HTML 生成のコマンド
  cp work/* ./ #作業ディレクトリ内からファイルをコピー

ところがこれだと、作業ディレクトリが空の時にエラーになる。この作業ディレクトリは画像の編集にしか使ってなくて、作業が終わったら空になる。なので、画像の編集が終わって文章を書いてる段階になると、 make するたびにエラーが出てきてウザったい。なので、次のように書いてる。

doc:
  python .... 
  if test 0 -lt `ls work | wc -l` ; then cp work/* ./ ; fi

ところで俺はこの手のビルドスクリプトは Makefile と Ant しか知らないんだけど、どっちがいいって言われたら Makefile かなあ。 Ant ははっきり言って嫌い。 Ant の嫌いなところは、そもそも俺は XML をスクリプトとして使うのが嫌いというのが大きいんだけど、それ以上に行いたい操作が要素として定義されていたり、あるいはとある要素の属性だったり、定義済みの要素がどこで定義されているのかさっぱりわからなかったり、とにかくそういう部分が嫌い。

(22:40)

世界樹2 のページを更新。おっかしいなー、ろくに話が進んでないのに何で俺は 33KByte も一回にかけてるんだ?

前に書いた通り俺の妹二号は全方位対応型腐女子なのだが、兄である俺がこんななので何も言えないなあ。

2008-03-02
Sun

(21:22)

ここ数日は世界樹のページへの検索エンジンからのアクセスが多いのだけど、何ていうかあんま攻略になってないんだよな、あのページ。それはともかく、通算7話目追加。ゲームをプレイしながら話を考えているので、どういう方向に転がしていいかさっぱりわからん。っていうか単にキャラクターがダベっているだけといえばそうだ。

(23:45)

俺はアクセスログの解析はすべて自前のスクリプトでやっているのだが、ムカつくことが一つ。いや、本当は一つどころの騒ぎじゃないけど、とりあえず一つ挙げる。

多くの検索エンジンでは、検索のクエリを URL に含める (= GET メソッド) 方式を取っている。そのおかげでどういう検索語でたどり着いたのかということがわかるわけだが、実はこれが結構厄介だ。その厄介さについて簡単な例を示すとこうだ。

まずは Python インタープリタを立ち上げて、そのあとインタープリタ上で次のように入力してみよう。

>>> import urllib
>>> urllib.quote(u'あ'.encode('utf-8'))
>>> urllib.quote(u'あ'.encode('sjis'))
>>> urllib.quote(u'あ'.encode('euc-jp'))

三つとも違った結果になるはずだ。これは要するに URL に使える文字にマルチバイト文字を変換する場合、それぞれの文字を 1 バイトずつ変換してるから当然のことだ。そして大抵の場合は検索エンジンのクエリにはこれと同じようにクォートされた文字列が使われているので、同じ検索語でも文字コードによってクエリに使われる文字列は変わるわけだ (大抵は検索画面のエンコーディングに一致する)。そして不愉快なことに検索クエリに GET 要求時の文字コードを含まない検索エンジンもあり、検索語を見ようとしたら UnicodeDecodeError を補足してどうこうするという実にふざけたコードを書くのが一番手っ取り早いということになる。

話はまだ終わらない。これだけで済むのならまだいいが、極めて fuck なことに変換をかける際に例えば Shift-JIS におけるローマ数字のような JIS X 0208 で未定義の文字については、当然 sjis などとコーデック名に書いた場合にはこけてしまう。これは正しい動作だ。こういった場合にはコーデック名に shift-jis-2004 や shift-jisx0213 あたりを指定すればいい。ローマ数字は JIS X 0213 で取り入れられ、それに対応したコーデックなら無問題だ。結構な量の文字が JIS X 0213 では取り入れられ、 Windows Vista では JIS X 0213 対応という話も聞いたことがあるので、単に sjis をコーデックには指定しない方が良さそうではある。もっとも、 Vista でのデフォルトの MBCS が何なのかは知らない。

ここで「じゃあ Python で Shift-JIS を扱うときには shift-jis-2004 あたりをコーデックに使えばいいんだな」と思ってはいけない。これは Python に限った話ではなく、なおかつ酷い問題なのだが、 JIS X 0208 ではローマ数字や記号の一部はユーザ定義の外字扱いで、この外字部分は NEC 特殊文字と NEC 選定 IBM 拡張文字と IBM 拡張文字で全然違うコードが使われており、そして NEC 選定 IBM 拡張文字と IBM 拡張文字は cp932 でないと期待した通りに処理できない。いわゆる文字化けだ。そして Windows では cp932 が Shift-JIS のように扱われていたはずで、俺はこういうところに怒りを感じるわけだ。

この文字集合とか符号化方式あたりの話は頭がこんがらがるのでなるべく考えたくねえのが本音で、俺はもうバカの一つ覚えで UTF-8 でやり取りしやがれとしか思っておらず、そして俺はこの場合のバカの一つ覚えは多くの場合で正しいと思っている。

2008-03-03
Mon

(22:32)

仕事が割と暇だからって帰ってすぐに世界樹の迷宮2 を起動するという毎日なのだが、ここ一週間程全然ギターの練習をしてないことに気がついた。が、気がつかなかったことにしてまたハイ・ラガードの樹海に潜ることにする。

2008-03-04
Tue

(20:21)

適当な単語の上にマウスカーソルを乗せるとその単語の訳がポップアップするという Firefox のアドオン。辞書引くのがかったるいときには便利かも。

(23:28)

俺は今まで友人との連絡用に mixi に入っていて、実際そのおかげで院生の友人の窮地を救う機会も得たのだが、本日をもって退会することにした。理由は単純で、 4/1 から適用されるという新しい利用規約があまりにもアホだったからだ。いや、現時点では修正アナウンスが出ているらしいが、既に退会しているのでそんなことは知らん。「ユーザの書いた日記や撮った写真を独占的に使うぞ」「お前ら著作人格権は行使すんなよ」「この規約にする前のものにも遡って適用するぜ」などという寝言を一度でも掲載するようなサービスを使い続けられるほど俺の神経は太くない。どうせろくに使ってなかったんだ、退会したって俺には何一つとしてマイナスはない。

実際問題、俺は mixi で日記をヘビーに書いていたわけではないし、コミュニティにもろくに入っていなかったし、そもそも新しい利用規約のもとで実際に mixi にアップしていたものを勝手に使われるユーザは全体的に見れば誤差、いやそもそもゼロということもあるだろう。っていうか多分そうだ。だが俺が問題視してるのはそういうことじゃなく、 mixi の連中がこの手の昔から火種になっていたことに対してあまりにも無頓着で、そんなサービスに幽霊ユーザとしてでも入会してるのは俺としては非常に嫌だということだ。

ちなみに俺がブログサービスの類を使わない理由の一つはこういうリスクを避けるためで、もしもこういった利用規約を制定されてしまった場合、俺が CC だなんだと言ってもそれが通じない可能性が出てくる。そして一般のブログサービスの中には出版や宣伝などで利用者のコンテンツを使うと明言しているサービスもあり、中には今回の mixi 同様ユーザが著作人格権を行使しないことなどを求めていたりする。別に俺は自分の文章を他人が勝手に使って金儲けをしても知ったことではないが、その場合でもそれら二次使用物をさらに他人が自由にできる、あるいはオリジナルに関しては自由に使えることが明記されているというのが絶対的な条件だ。たとえちっぽけなものでも自由を守るにはコストがかかるんだよ、実にムカつくことに。

2008-03-06
Thu

(01:27)

昨日は会社の上司とかに食事に誘われ、そこでまあいつもの通り相当な長時間いろいろダベって、どうにもやはり俺にはビジネスのアイディアを出すことも求められているらしいということがわかった。うーん、アイディアねぇ。俺は結局のところ何か問題があってそれがソフトウェアでどうこう出来る問題だったら何かしらのソフトウェアを書くってスタイルなので、ビジネスのアイディアを出せるかというと非常に微妙だ。そもそも今の会社が売り込もうとしている業界について、ぶっちゃけ俺は何も知らないしな。

あとこういう話になると上流工程だのオブジェクト指向分析だのが出てくるけど、俺はどちらにもまったく興味が無い。上司は「オブジェクト指向分析による概念モデルから実際のコードにストンと落ちるのだよ」とか言ってるが、俺はまったくもって信用していない。本当に断絶なくコードに落とせるのか、コードに落とすために一体何か誤魔化していないか、そういう疑問が今使っているフレームワークやらアプリのコードやらを見てると湧いてくる。おそらく俺も今の会社にいる限り、いつかはそういうことをやらされるのだろうが……

そもそも上司と俺ではソフトウェアに対する考え方が異なっており、早い話が上司のスタイルは Microsoft スタイルで、俺は Unix スタイルである。この「全部入り、何でも出来ます」 vs 「一つの事をしっかりやれや」という対立は間違いなく解消不可能で、そして俺に妥協するつもりはまったくないし、するぐらいなら職を辞する。何故ならこれは俺の職業倫理の根幹だからだ。

他にもいろいろ書きたいことはあるんだけど、いい加減寝ないと明日がキツいので寝る。

(22:37)

世界樹2のページを更新。前にもまして筆が滑ってきた。極めて先行き不明だ。

それにしても今回は条件付きドロップが全部条件付きレアなんじゃないかという疑惑が出てきて仕方がない。

2008-03-07
Fri

(19:45)

「GPL でライセンスされたソフトウェアはビジネスに使えるか」という知ってる人からすれば「何バカな事言ってんだオメーはよぅ」な話をまさか会社ですることになるとは思わなかった。っていうかビジネスを考える前にその辺の知識は付けておいてくれよ頼むから。じゃねえと俺がいなくなったときに困るだろうがよー。まあ、その GPL のソフトウェアは別の理由で没になったんだけどな。

で、 GPL のソフトウェアはそのままだろうと改造した場合であろうと、ソフトウェアを頒布する場合には当然のことだけどソースコードの公開義務が生じる。言い方を変えれば一般にソフトウェアを頒布しないなら義務なんぞないわけで、例えば特定の相手に対してカスタマイズをして売るような場合、そのカスタマイズした箇所については公開しなくてもいい。なので、

  • 契約上の理由により外部に出せない部分は非公開
  • 問題ない部分 (元のソフトウェアのバグフィックスパッチとか) は公開

ということをやっても全然問題ない。なのでソフトウェアの形態によっては GPL のソフトウェアがまったくビジネスに使えないなんて事はないわけで、もういい加減プロプライエタリな世界とはおさらばしてもいいんじゃないか。

(22:13)

最近になって Python 用のコードカバレッジ計測ツールを探していたら、そのものズバリの coverage というものを見つけた。ちょっと出力が怪しいところもあるが、それは Java の cobertura も同じだから別にいいこととする。第一カバレッジなんざテスト漏れチェック機構の一種なんだから、別に出力は概ねあってりゃそれでいいって感じなんだけど。

カバレッジツールの使い方については、「コード品質を追求する: カバレッジ・レポートに騙されないために」が参考になる。要するに、カバレッジはテストの質の高さの保障にはならないってこと。

2008-03-08
Sat

(22:37)

数ヶ月に一回ぐらいの割合で押切蓮介祭りが開催 (=単行本が4冊ほど同時発売) されるのだが、クソッタレなことに地元の本屋では「でろでろ」と「ゆうやみ特攻隊」しか置いてなかった。まあ、残り二冊の片方はかなりの割合で初期のカオスな短篇のお蔵だしだろうから、安牌二冊を買えたとも言えるのだが。

「でろでろ」は留渦ちゃんの可愛さが臨界点を突破してメルトダウンしてた。あと水面お姉ちゃんも相変わらずだった。要するに最高だった。本当、初期のアヴァンギャルドとかそういうのを通り越してぶっ壊れてた意味不明な作風からは想像もできないな。もしもデビュー前後の作品と今の奴を予備知識ゼロで読ませたら、絶対に同じ作者とは気がつかないだろう。

「ゆうやみ特攻隊」はえらいことシリアスな話になってきて、前巻のコメディタッチの部分が想像も出来ないほど。むしろ本格的な伝奇ものになってきてないかこれ。近代社会から隔離されたような島に伝わる因習におぞましい秘密を持った一族、実にこの先が楽しみ。多少強引かもしんないけど実にテンポよく進むので、近代少年漫画的スパイラル (=引き延ばし、金太郎飴的バトル) に辟易してる身にとってはそれも高評価。

2008-03-09
Sun

(01:37)

世界樹2のページを更新。ようやく第2階層クリアのところまで書いた。とりあえず俺に言えることは、ダークハンターとレンジャーあるいはガンナーのコンボは極悪だということだ。ってか残り二人はマジで何でもいいや。ダークハンターのフォーススキルを敵が動く前に叩き込み、あとは全員でラッシュ。どんなに運が悪くても2ターンは相手を確実に木偶に出来るから、これは今後も使えそうな必勝パターンかも。

(21:25)

アパートの契約更新の書類に保証人の印鑑が必要だったので、実家に戻って書類の記入とかをやってきた。妹二号は相変わらずの腐女子で、俺の世界樹2 のページに対して「これはいい強気受けですね」とか言い出してた。マジで勘弁してくれ。

問題なのは妹一号で、どうにも事務職で仕事を見つけたと思いきや、何かシステム部門に回されたとか何とか。妹一号がただでさえバカな上に母親が輪をかけたバカ者なので詳細は不明だが、最悪マジで妹もプログラミングの仕事に就いてるかも知れん。俺があんだけ「間違ってもシステム屋の仕事には就くな」と言っていたのに、一体何をしてるんだ。今日は一号の方とは会えず仕舞いだったが、とりあえず完全なトーシローを現場にぶち込むことでどんだけ回りに迷惑がかかるかを説明して、あと労働条件がどー考えてもゴミだったのでとっとと別の仕事を探せとも言っておいたが (手取りが激安で生活残業が事実上必須)、果たしてちゃんと伝わるかどうかは不明だ。

2008-03-10
Mon

(20:29)

今日からしばらく、職場で Linux 環境をメインに作業が出来るようになった。実験色が強い仕事なので、安定してなくても別にいいので無料のディストリビューションと言われ、多少悩んで Fedora 8 をチョイス。別の Red Hat 系列でも良かったんだけど、俺の他のメンバーも触るとなると、とりあえず日本語の情報がそれなりにあるところから選ばないといけないんだよな。個人的な趣味丸出しでいいってんなら Gentoo なんだけど、インストールと基本的な環境構築が一日仕事だからな。流石に仕事でそんな手間はかけてられんよ。そもそも俺以外誰も管理出来ないというかしたくないだろうし。

(21:20)

Python では文字列のリストを区切り文字で連結するには、次のような書き方をする。

slist = ['aaa', 'bbb', 'ccc']
s = '\t'.join(slist)

個人的にこれはなんとなく邪悪だと思うわけだが、だからと言ってリスト/イテレータ/ジェネレータに join メソッドを追加して、文字列以外のオブジェクトを暗黙のうちに str や unicode で文字列化してもいいのかというと、そっちはさらに邪悪だと思うのだよなあ。

ここで少し発想を変えて、例えば次のような定義の generic なクラスがあったとする (文法は適当)。

class List<T> {
  void add(T t) {
    ...
  }
  
  T get(int index) {
    ...
  }
}

このようなクラス List に対して String が型パラメータとして与えられた時、以下のようにメソッドを追加すると言うのはどうだろう。

class List<T> {
  void add(T t) {
    ...
  }
  
  T get(int index) {
    ...
  }
  
  if (T == String) {
    String join(String sep) {
      ...
    }
  }
  
}

……さらに邪悪になった気がする。そして実は Python では似たようなことが出来てしまう。実行している OS の種類によってメソッドの中身を入れ替えるというテクニックを使ってるのを見たことがあるけど、あれは本当に邪悪だったのか必要悪だったのか今となってはわからん。そもそもこのやり方だとコンパイル時に静的型チェックが不可能なのでもう少し別の形でやる必要があるだろうし、考えてみれば他にこんな機構が欲しいと思ったことは一切無いんだった。

ちなみに最初に出した例がどうしても許せないという人は、次のような書き方も出来るので参考までに。この程度のコードなら、標準的な書き方にそった方がいいとは思うけど。

slist = ['aaa', 'bbb', 'ccc']
s = str.join('\t', slist) #instance.method(arg) == class.method(instance, arg)

(21:54)

すげーどーでもいいけど、先日実家に帰ったときの話。うちの婆さんは根っからの音楽好きで大正琴やピアノを嗜んでるんだが、どうにもこうにも俺に対して「ギター弾いてみせろ」とか言い出したんだな、これが。まあ老人の頼みぐらい聞いてやるかと思って困ったのが、俺のレパートリーの無さ。下手糞なのはこれはもう仕方が無いとしても弾ける曲が無さ過ぎ、さてどうしようかと悩んだ挙句、

  • Black Sabbath の Paranoid (ソロの弾き方忘れたんでソロすっ飛ばし。これだけ歌も歌った)
  • 同じく Black Sabbath の Iron Man (半分以下にカット)
  • いい加減にしろといわれるかもしれないが Black Sabbath の Into The Void (展開を把握してないので超ショートカット版)
  • 自分でもどうしようもねーなーと思いつつも Black Sabbath の Supernaut (リフをちょろっと)
  • Paradise Lost の Shattered (1/3 ぐらい)

どれもこれも老人に聞かせるような曲じゃねーなーと思いつつも開き直って弾いてきた。ちなみにどれも最悪な出来だったとだけ言っておこう。

あと妹二号に俺の録音した音源を聴かせたら、その残念な出来に予想通り大爆笑された。改めて聴き直すと根本から曲構成を勘違いしていてよくもまあ公開出来たもんだと自分でも不思議なのだが、まあ笑わせることが出来たから俺の勝ちだ。何を基準としての勝ち負けなのかは俺にもよくわからない。

2008-03-11
Tue

(21:34)

単一言語脳の恐怖について。俺が心の底からムカつくのは何でもかんでも Java でどうにかしようとする連中で、大体そういうのは Java しかプログラミング言語を知らない。なので例えば別の言語で実装されたなかなか良さそうなソフトウェアがあっても、それを評価する機会さえ与えられない。比較検討した上で Java を選ぶというのなら話はわかるが、それすらないというのはどういうことだ。実際今やっている仕事も、 Java に限定されなければより良さそうなものが見つかるかもしれないってのに。

そして単一言語脳だけでも厄介なのに、世の中には単一パラダイム脳とでもいうべき人たちがいて、要するにオブジェクト指向を銀の弾丸とでも思っている連中が典型例で、そして前述の Java しか知らなくてそのことを問題視していないような連中はかなりの割合で単一パラダイム脳だった。

だから別に仕事では Java 使ってもいいから、他の言語、特に全然畑違いの言語にも目を向けてくれと思う。ある意味でプログラミング言語それ自体はどうでもよくて、重要なのは考え方だ。言語が思考を規定する以上、一つの言語しか知らなかったらその言語がもっとも得意とする考え方しか身につかない。最悪なのは一体どういう意図でデザインされたかわからない言語で、そういうのは仮に仕事には使えても学ぶところはない。例えば PHP とかな (いや、反面教師にはなるか)。

そういう意味ではとにかく尖った言語というのはただそれだけでも学ぶ価値があって、 Haskell とか Io とかあとは Boost を使った C++ とか、そういうぶっ壊れた言語は使いこなせなくてもいいから、っていうか俺も全然使いこなせないんだけど、それでもやってみる価値は十分ある。

2008-03-12
Wed

(19:38)

DVD コンテンツの中身だけみれば今月の Young Guitar はスルーなのだが、 Randy Rhoads 特集があるからねぇ。

2008-03-13
Thu

(20:29)

俺は DI コンテナとかその類の、設定ファイルでコードを制御するような仕組みは嫌いだ。何故なら、単純にコードを追いかけ難くなるからだ。確かにプラグインなど外部からモジュールを注入しなければならない部分であれば、そういった設定ファイルによる制御にせざるを得ないだろう。ところが中には事実上単一の実装しか必要としておらず、それでもなお設定ファイル地獄に陥っている物があって、俺はそういうものは「終わっている」と思うわけだ。とにかくオーバーデザインは良くないよ。

(23:40)

やはり間違った採用のダメージは深刻なんだよなー。

いや、何ていうか明らかにこの業界に向いてなくて仕事も出来ないなら、解雇するのも大事な事じゃないの? 相手がいくら頑張っていてもそれが全然結果につながらなくて、そもそもあまりの力不足のせいで周囲が頻繁にフォローに入らざるを得なくて、俺はあんまり酷い尻拭いが続くとイライラしてくるし、相手は相手で負い目を感じながら仕事を続けないといけないわけで、つまりお互いの精神衛生に非常に良くない。

そいつは何とかして汚名を返上しようとするかもしれないけど、どうしようもない資質の欠如というのは、その、本当にどうしようもないんだ。

2008-03-14
Fri

(21:18)

押切蓮介祭りの残り二冊の「プピポー!」と「ミスミソウ」を購入。どっちかは初期短篇集だろうと思っていたら、両方連載作品だった。えーと、この人はこれで連載が5本ぐらいだよな?

いろんな意味でショックだったのは「ミスミソウ」で、大変な鬱漫画だった。「でろでろ」を期待すると深刻なダメージを受けるので、鬱な漫画が嫌いな人は読まない方が吉。考えてみればこの人は「かげろうの日々」で一回救いも何もないオチをやっていたんだっけというか、そういやこの人はホラー漫画家だったんだ。

とにかく狂った漫画なので、トラウマ上等とか思ってる人にはオススメ。

(21:54)

スーツをハンガーにかけようとして、穴が三個所ほどに空いてることに気がついた。前々からポケットが破れていたりと限界っぽいかなとは思ってたけど、やはり限界だったか。

2008-03-15
Sat

(13:59)

未成年者へのインターネットのフィルタリングだの言ってるおっさんとかおばさんは、要するに子供にエロとか暴力を見せたくないのだろうけど、じゃああんたらがガキの頃はどうだったのかと聞きたい。公園に捨てられてるエロ本とか、隣のお姉さんから借りたやおい本とか、そういうのでおたくらのいう「有害情報」に触れたはずだ。そしてそういった「有害情報が子供に悪影響を与える」ってことは、

  • 自分たちは子供の頃に有害情報に触れて頭がおかしくなった
  • 自分たちの子供は有害情報で簡単に頭がおかしくなる (=その程度の教育しか自分たちには出来ない)

のどちらかあるいは両方を認めることになるんだけど、どうなんだ実際のところ。

ちなみに俺は ISP とか検索エンジンレベルのフィルタリングの類には全面的に反対で、何が有害なのか、そしてそれが有害なのは何故かというのは家庭内で教えるべき事であり、あらゆる親に共通する重要かつアウトソース不可能な仕事だと思っている。単に子供をそういった情報から隔離するだけではまったくダメで、きっちりと免疫をつけてやらないとな。

(22:22)

そういや「アニメ・ゲームも児童ポルノとして規制しよう」という動きが再燃してるようだが、これは完全にナンセンス。ていうかバカだろ、アニメやゲームで児童のどういった人権が侵害されてんだよ。児童ポルノが問題なのは明らかに被害者である児童の人権を蹂躙しているからであって、作品が出来た時点ではそういったことは一切行われていない。

っていうか「娯楽作品に触発されて犯罪に走る奴がいる」と言い出す奴は本当にどうしようもないバカで、この手の連中がサルというよりはバクテリア程度の大脳新皮質しか持ち合わせていない理由は簡単に書くと以下の通り。

  • 娯楽作品と犯罪との因果関係は立証されていない。むしろ「外部からの刺激で簡単に犯罪に走る」という精神的な問題の方が大きい可能性が高い
  • 犯罪者にインスピレーションを与えるのはアニメやゲームだけではない。この手の連中が無意識に避けている文学作品 (笑える言葉だ) とか報道とかの影響も考慮する必要がある
  • 「娯楽作品による気晴らし」が犯罪の抑止力にあっている可能性も考慮する必要がある。これは「娯楽作品が犯罪を助長する」と同程度に怪しい考えだが、だからこそ同程度に考慮しなければならない

おっと、バクテリアに大脳新皮質は無かったな。

2008-03-16
Sun

(01:54)

俺が仕事をしていてムカつくことの一つは、契約プログラミングと言う概念があまりにも広まっていないことである。例えば今俺が遊んでいる「世界樹の迷宮2」では、自分のパラメータを上げなければいけないところで敵のパラメータが上がっているとか、本来とは逆の効果をもたらすというバグがいくつか報告されている。 DS での開発環境やアトラスでの開発手法についてはさっぱり知らないが、とにかくこういった問題を起こさないためにも「契約」という概念は有効だ。

先に出した例でいうと、パラメータを上げるカテゴリのスキルを使った場合、その前後でパラメータが下がっていたら明らかにおかしい。そして当然ながら、味方にかけるスキルで敵が強化されていたらおかしい。こういったアサーションは多少パラノイア気味にでも行うべきで、特に使われるデータが膨大かつ複雑で単体テストレベルでは漏れが確実にありそうなプログラムの場合、契約という形で表明をすることで異常なデータの検出や仕様を整理することによるテストの品質の向上という利益を得ることが出来る。

もっとも契約プログラミングを実装してる言語はそれほど多くなくて (Eiffel と D ぐらいか、有名なのは)、そのせいで広まっていないってのもあるだろう。 Python なんかは高階関数と __setattr__/__getattribute__ なんかで事実上の契約プログラミングが出来るけど、まあ言語の機能に含まれているに越したことはないからな。

というか俺に言わせりゃプログラミング言語の「型」だって契約の一種で、俺が静的型システムの方が好きな理由はそこにある。ただ Java だの C だのといった言語じゃ面倒くさい上に融通が効かなくて、あんまりよく調べてないけど OCaml の型システムが俺の求めているものかもしれない。でもちょっと触ってみた感じ、 OCaml って文法とかが変態だったんだよな。

(23:54)

世界樹2のページを一気に更新。さすがにほぼ一階層分を一気に更新すると大変だ。主に画像ファイルの量が大変で、今回は結局 170 枚ぐらい画面写真を撮って、そこから取捨選択して、それで撮り忘れに気がついて悶絶とかしてた。

前の階層までみたいにもう少し細かく更新していった方が楽かもしれないけど、構成をいじるのは一気に大量に更新する方が楽なんだよなあ。どうしたもんやら。

2008-03-18
Tue

(22:12)

世界樹2のページを更新。多分他のどのプレイヤーもやってないバカ戦術だと思う。

2008-03-19
Wed

(21:00)

明日が祝日だということに、後輩に言われるまで気がつかなかった。いや、マジで明日も出社する気満々だった。

(23:55)

awesome っつーウィンドウマネージャを使ってみたが、うん、これは俺のスタイルには全然合わない。何が嫌かって、自動的にウィンドウのレイアウトが固定的に決まるところが嫌。多分使いこなせている人にはたまらないんだろうけど、俺はそこまでする気力が出てこないな。ただ、ウィンドウにタグ付けして管理するというアイディア自体は悪くないと思っているので、これをベースに fluxbox で何かユーティリティが作れないかとか考えてる。

俺の周囲じゃ全然使ってる人がいないんだけど、 fluxbox は本当に素晴らしいウィンドウマネージャだ。まずなによりも動作が軽い。これは超重要だ。それからメニューやツールバー、ウィンドウタイトルの透過処理。透過処理は殆ど気分の問題だが、どうせなら見てくれも良い方が良いだろ。別に透過処理といっても xorg の拡張機能みたいに重いことはやってないので、非力なマシンでもそれなりにクールな見てくれにすることが出来る。何せ 21 世紀になっても未だに Celeron 2.13 GHz のマシンを使ってるからな。そしてあんまり重量級のウィンドウマネージャや統合デスクトップ環境を使わない限り、その程度のマシンでも快適だ。

2008-03-20
Thu

(22:09)

妹一号はマジでプログラマとして採用されたらしい。プログラミングといっても汎用言語をつかったものではなく、専用の環境での機械制御らしいのだが、それでもシステム系の仕事には変わりない。っていうか俺よりも大変な仕事じゃねえかそれ。大体、何で兄妹揃ってこんな世界に足を踏み込んでるんだ。

そして最悪にその会社はヤバいらしく、

  • 基本給が 9 万円程度で残りは長時間残業で補う
  • 評価制度が導入されているが、仕事の内容よりも作業態度 (=上役への隷属度) で決まる
  • 普通に退職する人が殆ど居らず、突如失踪というケースが大半を占める
  • 会社内のサッカー部や野球部に問答無用で男性社員は駆り出される
  • みんな月 80 時間以上は残業してる。 100 越えるのもザラ
  • 休日出勤の嵐。そもそも土曜は隔週でしか休みにならない
  • 会社の体質が激烈に古く、老害としかいいようのないおっさんが幅を効かせている
  • 妹の入社に前後して妹のいるグループの主任が失踪した

という親の数え役満っぷり。とりあえず妹には「出来るだけ早く逃げる算段付けとけ」「続けたいならそれでもいいけど、精神衛生には気をつけろ」「労基に駆け込め」とはいっておいた。

(23:24)

pychecker よりも pyflakes の方が良さげに見えてきたので、試しに pyflakes を使ってみた。ヘルプすら無くてとにかくファイルを食わせればいいだけってのは潔くてアリだな。スタイルに関するチェックが無いのは好き好きだろうけど、引数の数が間違ってるとかのチェックが無いのはどうだんだろ。そういうのは単体テストで発覚するから別にいいっちゃそうだけど。

pylint も使ってみたけど、出てくる情報が多すぎて、何よりデフォルトだとスペース 2 個のインデントに警告を出してくるのがムカつく。あと一文字変数にもエラーを出してくるんだけど、俺はジェネレータ式/リストの閉包/短いループでは "for l in lines" みたいな書き方をして、ループ変数は大体一文字で済ませてる。これをエラー扱いされるのが気にくわない。これらはすべて設定ファイルでどうにかなるようだが、そこまでする気力がわかなかったのでこれからは pyflakes を使うことにしよう。

2008-03-22
Sat

(02:47)

ずっと前に適当に作った俺フォントがやはりおかしい。これはスクリーンショットを見てもらった方が話が早い。最初の奴が kwrite (Qt) で次の奴が scribes (Gtk)

とまあ、 Gtk 系のエディタでは f と i がくっついて表示されているのだけど、なぜか Qt 系のエディタでは普通に表示される。これは俺のフォントが悪いのを Qt がヤクザなことをやって修正しているのか、それとも Gtk の知られざる不具合を俺が叩いてしまったのか判断できん。何となく俺が悪そうな気がしないでもないが、でも俺そんな変な事やってないんだけどなあ (FontForge で合成するぐらい大目に見てくれよ Gtk の旦那)。

(03:55)

世界樹の迷宮2 はボチボチ進めているんだけど、何であのボスに即死攻撃が効くんじゃー! わかんねーよ、これは。

  • 流石に引き続き毒でフィニッシュはなかろうと他の状態異常を試す -> ダメ
  • 封じで倒すのかと思って頑張る -> やはりダメ
  • 術式属性ならどうだ? -> これもダメ
  • しょうがねーから諦めて進めて、休養してスキル振り直してから試しに叩き込んだジ・エンドで予期せぬドロップ

いや、だからわかんねーよこれは。途中でもしかしてテラーなのかとか思ってカースメーカーの投入を考えたけど、思いとどまって正解だったかも。ただし、即死でドロップなのか一定ターン以内に終局でドロップなのかは不明。

(23:38)

政治的に正しい表現について。という書き出しの時点で俺が何を書くかは決定されているようなものだが一応書いておくと、俺は政治的に正しい表現という奴が嫌いだ。どのぐらい嫌いかというと、政治的に正しくない表現を見つけてはヒステリックに騒いでる知恵遅れども (おっとこれも政治的には正しくないな) と同程度には「政治的に正しい表現」が嫌いだ。

そして何故俺がわざわざ政治的に正しくない表現をつかうかというとだな、それが単に面白いからだ。あーあー、その手の連中にとっちゃ不快極まりない表現をしているのはわかってるよ。でもこの世界には政治的に正しくない表現を面白がる人たちもいて、そして俺はそういう表現を面白いと思ってるんだよ。さらに言えば「政治的な正しさ」ばっかり気にしてカリカリ怒ってる連中を挑発するようなことを書くのが楽しくてしかたがない。そういう意味じゃあ、連中には大変面白い娯楽のタネを提供してもらっているんだよな。感謝しとくぜ、一応。

というわけでその手の連中にお礼代わりにアドバイス。もしも政治的に正しくない表現をなるべくこの世から減らしたいなら、いちいち騒ぎ立てないこと。律儀に反応する連中がいるからこそ政治的に正しくない表現をする価値があるわけで、挑発する相手がいなくなれば必然的にその表現の価値は暴落する。猫を追う間になんとやらだ。そしてこれは見方を変えれば、わざわざ反応することで政治的に正しくない表現により強い意味を与えているとも言える。俺が言葉狩りの類は差別を助長する、それどころか本来とっくに死んでるはずの差別意識を蘇生させると主張している理由がこれだ。

ま、このアドバイスが聞き入れられることは決してないという予測を俺は立ててはいるんだがな。

2008-03-23
Sun

(17:51)

前にもちょろっと書いたけど、世界樹の迷宮2 のバグの多さは一体なんじゃー。テストケースをきちんと書いてなさそうなバグも多いけど、アイテム名の表記ミスなんかを見てると片っ端からハードコーディングしてるか、あるいは別リソースに持っていても二重管理になっているかのどっちかとしか思えんな。誤変換とかの類はチェックしきれるものでもないだろうし、気が付いたときにプレイヤーが苦笑する程度だから別にいいんだけど。

世界樹の迷宮2Wiki 不具合・バグ情報が今回のバグの一覧になってるけど、とにかくダークハンターのバグが痛い。この手のサイトは見ないようには心がけていたが、バグとあっちゃ仕方あるまい。

(21:23)

世界樹の迷宮2のページを更新。手元のデータの整理に手間取って、なかなか進まんかったなあ。

2008-03-24
Mon

(23:34)

やはり通勤電車でゲームをやるのはそれなりにリスキーだ。今朝は電車を乗り過ごしてしまったんだが、これで俺は前科が幾つ目だ? もう数える気力もねえや。もっとも今は各駅停車での通勤なのと、割と早めに家を出ているのとで、一駅二駅乗り過ごしても問題ないんだが。

それで乗り過ごす原因となった世界樹の迷宮2は、ちょっと考えどころに来てしまった。とある職業が今のパーティのスタイルにあまり合わなくなってきていて、さてどうしたもんかなあ。

2008-03-25
Tue

(22:22)

仕事の関係で FreeMarker っていうテンプレートエンジンを弄ってるんだけど、何でこんな文法になってんだろ。例を一つあげると、「ある変数 foo が定義されてかつ null でなければ true を返す」がどうして "foo?has_content" になるんだ? defined とかだろ、意味的に。そもそもこんな意味不明な演算子 (?) なんぞ自分で定義せずに、大人しく関数呼び出しとかに似せた記法にしてくれって感じだ。まあ、 Seldom used and expert built-ins のものにガタガタ言うなって話かもしれんけど、でも俺が文句をつけたいのは他の部分にもあるんだよな。でもフレームワークの関係上、 JSP よかこっちの方が推奨されてるんだよなー。

2008-03-26
Wed

(22:24)

問題: 「俺が法律」+「OOP 原理主義」+「Java 原理主義」の結果を求めよ。

2008-03-28
Fri

(05:42)

俺は時々睡眠時間がとんでもなく不規則になって、昨日なんかは帰ってきて風呂に入ったらすぐに眠くなり、結局 21:00 ぐらいには寝付いてしまった。まあ、全然眠らないよりかはだいぶマシだろ。そして今日は健康診断があるのだが、そういや昨日の夜にオレンジジュースをしこたま飲んじまった気がするなー。まあどーでもいいか。

ところで pyFLTK なんて物があるんだね。この FLTK ってのはとにかく軽量な事が売りらしくてそれはとても結構な事なんだけど、どうにもプログラミングモデルが気にくわない。これが PyGtk とかだったらシグナル形式のプログラミングになるんだけど、 pyFLTK はどうにもハンドラ関数で一旦全部受け止めさせる方式らしい。シグナルの便利さを実感している身としては、今更ウィジェットそれ自体にハンドラ関数を書く気にはさらさらなれんのだよな。暇ができたらシグナルでイベントリスナを登録させるようなラッパークラスでも作ろうかなー。

(20:36)

談合消滅後の建設業界で何が起きているか」ってこりゃ IT 業界も似たような所が多々あるな。っていうか

  • コスト削減のプレッシャー
  • 優秀な人材の枯渇
  • 何もわかってない連中主導の標準化・ルール作成

なんてのはどこの業界も似たようなもんだろうな。特に共感を覚えたのは次のところ。

問 「安値受注は品質に影響を与える」という懸念も出始めています。

答 もっと品質が悪くなってくると思うよ。職人の腕がぐんと落ちている。教育してないもん。親方も教育に回すカネがない。それで、私がゼネコンに言うやん。「職人の育成にゼネコンも力を入れてくれませんか」って。そしたら、「落ちてもいい。誰にでも作れるようにしているから」と。こんな言い方あるか。

ここは IT 業界もその通り。というか、より悪い気がする。だって「プログラミングって何ですか」レベルの人間が平気で面接にやってきて、それで通っちゃうからな。あのな、せめてそんぐらい調べろと。ちったぁ事前に学習しとけと。プログラマという職業が他の専門的な職業 (医者とか大工とかその他諸々) に対して圧倒的に有利なのは、それらの職業に比べると法外といっていいぐらい金銭的なコストを負わずに学び始めることができるところで、もしも別分野からの転職を考えている人がいるなら、とにかく処理系とテキストエディタを揃えてやってみろと言いたい。書籍の類だって自分への投資だと思えば安いもんだろ。

それでも間違いなくより問題なのは彼らを雇ってしまう方で、雇うことも問題だし雇った後にする教育のダメさ加減は筆舌に尽くしがたい。上司は俺が新人に理論的な事を教えるのに時間を割くのを嫌がっているようだが、前から書いてる通り理論と実践は車輪の両軸でどっちが欠けても成り立たん。ただひたすらコードを打ち込んで、それでまともなプログラムが書けるようになるというのは極めてバカげた考えなんだよ。大体だな、ポインタやメモリ管理の概念をろくすっぽ知らずにどうやって Java なんかのオブジェクト参照や GC を理解できるってんだ?

何かまた話が脱線してきたが、いつも通りなので無視して話を進める。俺は大学の一年次によりによってアセンブリ言語を手書きで書かされるという経験をして、その時は非常にムカついて仕方がなかったが、結局そういった下位層の知識無しでは本当にプログラミングについて理解したとは言えないことがわかり、やり方はともかくとしてそういった知識を叩き込むのは正しいことだったと思うようになった。ちなみに俺の大学ではλ計算を扱うような講義がなく、当然これは非常に良くないことで、俺は今そっち方面の遅れを取り戻そうとしているんだけどやっぱ大学の頃にやっときたかったな。

俺はこういったことを正直に新人に話していて、一人前になるには 10 年にわたって絶えず修練を積むことが必要で、偉そうな事を言ってる俺だってまだ道半ばだから間違っても俺を目標とするな、もっと上を見ろとも言っている。俺はこれまでの会社のやり方からしたら相等にずれているのだろうが、未だに「動物クラスがどうのこうの、犬クラスを継承してどうのこうの」なんて事をやってプログラミングについて何かわかったつもりにさせるのは凄まじくプログラミングを舐めた行為なので、そういう愚かな行為から思いっきり離れたところにいるのは極めて正しいことだという確信がある。

(22:34)

Shadows Fall の "Redemption" という曲には次のような歌詞が出てくる。

All the world will hear you
Our voices can't be bound
All the world will hear you
Redemption in the power of the sound

この歌詞のニュアンスは絶対に日本語には訳せないだろう。何故なら、 Redemption という単語は救済という意味を持つが、俺の知る限りそれは「キリストが十字架に架けられたことによる救済」という意味を持ち、恐らくはそこには「贖罪」とか「対価」のニュアンスも含まれるのだろう (今辞書を引いてみたら、「金品を等価な物と交換する」みたいな意味もあった。やっぱりね)。そして日本じゃ贖罪と救済はどう考えても結びつかない。何か別の言語を学ぶということは、間違いなくその言語圏の文化を学ぶことにもなることを改めて実感。

プログラミング言語の話になるけど、何かプログラミング言語を学ぶということは、その言語の思想やプログラマたちの文化を学ぶことでもある。例えば Python プログラムはメンテナンスが容易な事が多いといわれていて、それは確かに言語仕様によるところもあるけど、やはり Python が体現している思想とそれによって作られた文化の影響も大きいだろう (プログラミング言語に思想・文化などないというのならご勝手に。俺はそういう奴を心の底から軽蔑する)。

実際のところ、俺は Python を学んだことで他の言語でのプログラムの書き方が大きく変わり、例えば C++ のコーディング何かは相当に改善された。 Perl しか使える言語が無いときにも、やはり Python で学んだことは生かされていたようにも思う。それどころかドキュメンテーションに対する考え方も変わり、もしかしたらこの部分への影響が一番大きいかもしれない。プログラミング言語を本当に学ぶということは、その言語の思想や文化も学び、そのいいところが他の言語にも適用できるなら適用するということだろう。最近はちょろちょろと Haskell の学習を進めているが、 Haskell に限らず関数型言語からは既に多大な影響を受けている。

だからもしも新しくプログラミング言語を学ぶとしたら、既に使えている言語とはまったく違うものを学ぶべきなんだろう。設計思想が大きく違えばそこから生み出される文化もまた違った物になるだろうからだ。俺が Haskell に手を出したのは Python からかなり遠そうだと思ったからで、じゃあ実際どうだったのかというとまだわからない。わかるほどまだ Haskell を学んでないし、 Haskell から学んでない。

2008-03-29
Sat

(10:59)

世界樹2のページを更新。サラマンドラとの激闘と第4階層の厄介なダンジョンの後にヘタレなボスと戦ってしまったもんだから、すげえ気が抜けた。

2008-03-30
Sun

(01:25)

FLTK は日本語入力、というか多言語対応全般がダメダメ。一応、 2.0 系統は UTF-8 を使えて XIM 経由の入力が出来るらしいのでそっちの方は多分実用上の問題は無いのだろうけど、でも 2.0 系統は安定してないっぽいからな。そして何より、 Gentoo の portage には 1.1.7 しか存在しない。他には FLTK 1.2 が UTF-8 をサポートしているようだが、それに関しては第三者の送ってきたパッチを 1.1.6 に適用しただけで、コア開発チームによるサポートではないとのこと。

これは困ったなあ。せっかく使って見ようかと思ったのに、これじゃちょっと作る気にならない。まあ、開き直って Fluxbox のツールキットを使っちまうのも手だとは思うのだが、流石に C++ を直に弄るのはかったるいのでいい加減 Python での C++ モジュールの書き方とか SWIG の使い方を覚えた方が良さそうだ (ctypes は C++ 使うには機能不足っぽい)。まあ、そんなことやってる時間が取れればの話だが (今のところ優先順位はかなり低め)。

(23:17)

「日本のオンラインゲーム市場は失敗した」——ソウル中央大学ウィ教授が語る,オンラインゲームの危機』。俺はオンラインゲームにはとんと疎いが、確かに日本国内でのオンラインゲームの印象ってのは最低最悪だよな。まあ廃人製造機みたいな MMORPG の話ばかりが取り沙汰されりゃ、そりゃあ印象も悪くなんだろ。だから任天堂がオンラインゲームという売り方をしてないところとかは、確かに言われてみりゃ当たり前のところだ。任天堂は掛け値無しに邪悪な会社だと俺は思っているが、それでもただ良いものを作っているだけでなく、イメージ戦略の面でもユーザが良い気分でゲームを出来るように練り込んでいるってのは真実だからな。

実のところ記事の本筋よりも日韓、というかアジアの「全部入りパッケージ嗜好」とアメリカの「バイキング嗜好」の違いの話の方がおもしろかった。「自由」ってことは裏を返せば「選択の義務」があるわけで、これは多分今の日本の文化にはそぐわないものだろう。もっとも俺はこれが完全に正しいなんてことは全然思ってなくて、例えば Windows にしても Mac にしても、結局は全部入りパッケージの定食だろどう考えても。まあ、それでも日本よりは全部入り嗜好は低そうだとは思う (結局は程度問題)。そういや大学の先輩が「Linux を日本でもっと普及させるには『何も考えずにこれを使え』なディストロがないとダメ」ということを言っていたが、恐らくその意見は正しい。そもそも日本では倫理・道徳ですらパッケージ的に扱われているので、この傾向を大きく変えるのは至難の技だろう。いや、他の国でも割とパッケージ的に扱われているか? ほれ、宗教って奴のやってることだ。

2008-03-31
Mon

(22:23)

久しぶりに凄いものを見てしまった。

今朝の時点では注意書きも何も無しでそのまま載っていたが、流石に間違いには気がついたらしい。しかしだな、「詳細をレビュー中」も何もノータイムで却下じゃヴォケ。どうみても未初期化ポインタだろ。多分筆者の環境じゃこれが動いちゃったんだろうけど、だから C言語は危険なんだよな(でもコンパイラの警告レベルを上げてどうこういう問題でもないし、ほんとこういうのって気がつかないときには気がつかないよな)。

きっと次のようなことがしたかったんだろうなーとは思う。でもこれ、普通に C の入門レベルの問題じゃねえか?

#include <stdio.h>
 
int main(void) {
  int n = 5, *p;
  p = &n;
  printf("%d\n", *p);
  return 0;
}

他の部分もわざわざ scanf なんてアホなもので説明してるし、何か全面的にこの人 C 言語わかってないんじゃねえか。これを 40 人近い人たちに推薦してるが、まあ殆どはコメントでのツッコミを含めた反面教師としての推薦だろうな。

追記: なぜか stdlib.h をインクルードしてたのを消去。いや、最初は mallocしてやろうかと思ってたけど、元の記事はそういう趣旨の内容じゃなかったんで。あと記事のコードは最初は以下の状態だった。

#include <stdio.h>
 
int main(void) {
    int *n;
 
    *n = 5;
    printf( "%d\n", *n );
 
    return 0;
}