Archive for the ‘雑文’ Category

暗黙のエコー

月曜日, 6 月 29th, 2009

このタイトルなんだかかっこいいよね。そんなことを意図して決めた訳ではないのですが。
名前に似合わず?コーディングネタ。

今回はWordPressは置いといて、PHPだけの話。
得てしてマニュアルと言うものは不親切ではありますが…。
いや決してマニュアルを責めている訳でもないのです。
大変お世話になっとります。
しかしぱっとよんで「そう言う理解はせんよ」と思う文章はあります。

PHPでは、他のテキストの間に、コードを埋め込むことが出来ます。こんな感じで。

<html>
	<body>
		<h3>ページタイトル</h3>
		<?php echo 'test'; ?>
		あああああ<br />
	</body>
</html>
恐らくHTMLを書いたことがある人、そしてブラウザからウェブページのソースを覗いたことのある人にとって、 <?php echo 'test'; ?>以外の部分は奇異ではないと思います。
そして(当たり前ですが)この?phpの部分がPHPのコードです。
仮にこのコードがtest.phpというファイルに書き込まれていたとすると、ブラウザで、例えばhttp://kenbunden.net/test.phpにアクセスすると、

ページタイトル

test あああああ

なんて表示になるはず。
つまり、echoの後にアポストロフィとかシングルクォーテーションで括られた文字列があると、それはHTMLに(微妙な言い方)反映されるのです。
多少は実用的な使い方を考えてみると、例えばPHPにはdate()という日付と時刻に関する便利な関数が存在します。
この関数はOSが時刻を管理するのに使っている整数値を、人間が見て分かり易い形式に変換してくれます。
一般的な場合は、1970年1月1日0時0分0秒からその日その瞬間までの秒数です。
大小を比較したりするのには便利ですが、そんな数字を提示されても人間にはいつのことだかサッパリです。
使い方についてはまぁ…マニュアルでも参照してもらうとして…。
先ほどの’test’の部分をdate(’Y-m-d H:i:s’)に書き換えると、2009-06-25 16:38:32等と表示される様に変わります。

<html>
	<body>
		<h3>時間を表示してみる</h3>
		本日は<?php echo date('Y-m-d'); ?>です。
		現在時刻は<?php echo date('H:i:s'); ?>です。<br />
	</body>
</html>
なんて書けば、

時間を表示してみる

本日は2009-06-25です。 現在時刻は16:38:32です。

なんて表示される訳です。

これぐらいのことJavaScriptでも出来る?その通りです。
しかしJavaScriptではなくPHPを使う最大の魅力は、なんと言ってもブラウザから見ている人にはただのHTMLにしか見えない、と言う点です。
JavaScriptであれば、なにやら怪しげなことが背後で行われているのはわかりますし、多少知識があれば何をやっているか丸見えです。
またブラウザを使って実行しているので、閲覧者がJavaScriptの実行を停止すると、表示もおかしくなります。
PHPであれば、閲覧者の元に届くのは処理を全て終えた後のただのHTMLなので、そういった心配は必要ありません。
(勿論PHPとJavaScriptを組み合わせて使うのは全く珍しくない話ですが)

…思えば遠くへ来たもんだ…。元々の話題は何でしたっけ?

    PHPの特徴
  1. PHPはプログラミング言語の一つである
  2. PHPはサーバで実行されるのであって、ブラウザで実行される訳ではない
  3. PHPはHTMLと混ぜて書くことができる
私が今話題にしようとしているのは最後の部分、HTMLと混ぜて書けると言う部分です。
例えばPHPでは以下の様なスクリプトが頻繁に出てきます。
<?php $i = 0; if ($i > 10 ) { ?> $iは10を超えている。<br /> <?php } else { ?> $iは10以下である。<br /> <?php } ?> このコードは、最も基本的な条件分岐を含んでいます。
つまり、変数(数学で使うのとはちょっと違います)$iが、10を超えているか否かによって、その後の動作が変化します。
因に$(ドル記号)はPHPにおいて変数を他のPHPコードの類から区別する為の接頭辞(プレフィクス)です。
プログラムはこれが先頭に来ている文字列を、変数として解釈しようとします。
説明の順序が逆になりましたが、変数と言うのはメモの様なものです。
様々な情報に名前付けをして管理するのに用います。
コンピュータの記憶領域の一部にプログラマが勝手な名前を付けて参照する仕組み、と言った所でしょうか。
さてこのコードは、以下のコード
<?php $i = 0; if ($i > 10 ) { echo '$iは10を超えている。'; } else { echo '$iは10以下である。'; } ?> と等価です。この、echoを明示的に書かなくても実質的にechoを書いたことになる点を指して、「暗黙のエコー」と勝手に呼んでいる訳です。

さて長々とここまでかかってやっと何が「暗黙」なのか書けたのですが、 マニュアルがいけないと思うのは、入門者へのこのHTMLと混ぜて使える点に関する説明がどうも不十分に感じられるんですよねー。
具体的にはこの[HTMLからの脱出]の部分です。
ここを読むと、開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサに無視されます。とある訳ですが〜。
現実問題、無視されている訳ではないのはお分かり頂けたかと思います。
なんだよちゃんと制御されているじゃん。
もう少し下を見ると、PHP は ?> 終了タグを見つけると それ以降新たに開始タグを見つけるまでの内容を何でも出力するからですってなってるんだけど、 それは無視じゃねーだろ。

実際、出力バッファリング関数群で、出力をバッファしてみると、<?php>と<?>に挟まれていない部分も、 あくまでもPHPスクリプトの出力として扱われていることがよくわかります。
でも私にはこの仕様(if文の途中で?>を書いても正常に動作する)はどーも気に食わないと言うか、違和感が拭えないと言うか…。
ヒアドキュメントなんてのもあるんだから、それでいーじゃないかと思ったりするんですよね。
うーん。

さらば700行

金曜日, 6 月 19th, 2009

さてAtahualpaの改造だが、一応当初の予定通りの動作をするものが出来た。
ソースを見てもらえば、以前はヘッダにあった長大(700行を越える)なCSSが無くなって、代わりにbfa_ata_style.cssとか、そんな名前のファイルが読み込まれる様になったのが分かると思う。
私が行った改造の具体的な内容及び手順は以下。

  1. Atahualpaの設定が更新されたことを記録するタイムスタンプをadd_optionで用意(実は必要ないが、念のため)
  2. Atahualpaのフォルダ直下にある、functions.phpを開けて、update_option()を呼び出している部分を探す
  3. 上記部分(Save Settingsを押すと呼び出される関数)の末尾に、タイムスタンプをupdate_option('option_name',date('YmdHis'))で記録する部分を追加
  4. header.phpに、カテゴリ判別してスタイルシートの名前を生成するコードを追加(以前からカテゴリ判別してCSSを書き換えていた)
  5. ファイル名を$filenameとすると、filemtime( TEMPLATEPATH . $filename)と、先ほどのタイムスタンプを比較して、タイムスタンプが大きければCSSを再生成する
  6. CSS再生成は具体的には以前のCSSを書き出していた部分の前後から、<style></style>を取り除き、前後にob_start()ob_get_clean()を配置、 バッファリングした内容を変数で受けて、ファイルに保存($filepointer=fopen($filename,'wb+'); fwrite($filepointer,$content);)
  7. 最後に、再生成をしてもしなくても、<link rel='stylesheet' href='春眠に限らず暁を覚えず'>を吐くように記述。

しかし誤算があった…。本家ブログだけでAtahualpaを使っているつもりだったのだが、そうではなかった。
木許さんのブログでもAtahualpaを使っていたのでした…。
複数のブログでAtahualpaを使うと、CSSが一種類しか生成されていないので片方の設定が更新されると、もう片方で読み込まれるCSS(同じファイル)が変わってしまい、結果奇妙なことが起きるのは想像がついていたのだが、「確か他にAtahualpa使ってる人はいないよなー、じゃあブログ判別ルーチンは書かなくていいや〜」と適当に書いた所、案の定衝突が起きました…。
現在はまずglobal $blog_idを呼び出してブログ判別を行い、更にその後カテゴリ判別をしています。
カテゴリとカテゴリIDの対応は、当然ブログ毎に違うので、この判定ルーチンはブログID毎に用意しなくてはいけないのが難点です。
今は本家以外ではカテゴリ判別を行っていないので特に問題はないけど、他でも行おうとすると中々面倒なことに。
引数としてブログIDとカテゴリIDを渡すと、ファイル名を生成するみたいな専用関数を書かないと収拾が着きませんな。
$filename=cr_fname($blog_id,$cats)みたいな。
しかも実際に吐き出すCSSの内容も変更しなくてはいけないので、中々難儀。
そうなったら変更に合わせた内容をoptionに格納してしまうぐらい必要だなー。
要らぬ心配(?)をするのでありました。

シャトル再延期

木曜日, 6 月 18th, 2009

更新が滞っているので、書きたかった時間の掛かるネタを諦め、短いものを。

2009/06/17に予定されていたシャトルの打ち上げが例によって再延期された。当初の予定は13日だった。
次の打ち上げ予定は多分窓の関係でだと思うが、7月後半になるらしい。
日食と被りますねぇ。まさか日食中に打ち上げたりはしないと思うけど…。
あれ?今シャトルは夜間打ち上げはしないことになってるのかな?

宇宙開発では、打ち上げの1ヶ月延期は取り立てて珍しいことではない。打ち上げに掛かる費用が莫大であるため、 打ち上げを強行して失敗するよりも、多少延ばした方がいい、という判断が働くのだろう。
とはいえ、それが費用が嵩む大きな原因になっているのだと思うが…。

延期の原因は、一度目も二度目も発射台でシャトルに燃料(LH2)を注入するパイプ(アンビリカルケーブル)が、水素ガス漏れを起こしたためだ。
一度目のガス漏れの後、その周辺の部品を全て取り外して交換し、漏れが無いことをチェックして注入し始めたのだが、 途中でまたもガス漏れをしたそうな。原因はなんなんでしょうね。
知ってる人は知ってるだろうが(何でもそうだ)、あの発射台はアポロ計画のサターンVを打ち上げるために作ったもので、 それを小改造して今でも使っているのである。
なんでシャトル専用のを作らなかったかって?そりゃ金が掛かるからですよ。
実際、シャトルはサターンVと違って回転対称ではないので、打ち上げ時の姿勢に制限が掛かるあの発射台は不便なんですが、 今でも使っております。
だから打ち上げ途中でくるっと旋回するんですよね、シャトルは。
まぁそんなこんなでアポロ月着陸40周年の今年は、あの発射台はもう40を当に超えているわけです。
そりゃー40年前の建築物なら(雨ざらしだし)老朽化もしますわなぁ。

今回シャトルは、実験モジュール「きぼう」の目玉である、船外実験設備を軌道上へ運ぶ。
大規模な真空曝露実験を行う設備は、ISS全体でもここにしか設置されないので、利用価値の高い設備だろう。
実験設備用の小さなエアロックもJEMには付属している。あと広角X線カメラで全天を走査するらしい。
突発的な現象を発見して、地上に知らせるのが役目だ。
注目すべきイベントがあると、世界中の天文台の望遠鏡や天文衛星が、予定を変えてその現象を撮影する。
見てないところは見られないのが望遠鏡なので、全天を96分で見張る設備があると大変便利なのです。

曝露実験をしても実験後の試料をどうやって持ち帰るかって問題はどうするんでしょうね。
なんにせよ頑張っても6年程度しか運用できないんですが…。
とにもかくにも、無事打ちあがって欲しいものです。

あたわるぱ。

水曜日, 6 月 10th, 2009

さてお約束通りCODINGネタ。
前回のキャッシュする作戦は一応成功したらしく、運悪く再生成する場合には、顕著に表示が遅くなる。
まぁ自己満足ですけどね。
でもアルゴリズム的に無駄な所を一カ所発見してショーック。
make_update_list()は、引数を4つ取っているのですが、当然どんな引数が渡されるかは実行時にならないと分かりません。 つまり、前回の引数と違っていたら、動作を変えなくてはいけないので、キャッシュを破棄して再生成しなくてはいけない。
そこで、再生成する度にそのとき使った引数をデータベース上に保存することにしたのですがー。
別に個々の引数が必要な訳じゃないんだから、まとめて判定してまとめて保存しておきゃーいいのに気付かず、 いちいち引数四つを個別に更新しているか判定、さらに個別に保存してまつた…。
後で直します…。

さて次の私の(自己満足の)ターゲットは、本家のあの長〜いヘッダ。アレどうにかしたい。CSSを外部ファイル化したい。とてもしたい。
その為のHeadClearnerってプラグインもあるんだけど、諸般の事情により使えないので、自作(!)しちゃえ。
自作と言う程のことは出来ないけど、Atahualpaのheader.phpを操作(ってかhack)すれば、ページに出力されるCSSが変更できるのは実証済みなので、 その出力を(場合によって)ファイルに保存しておけばいいのです。で、<style rel=”???.css”>とか書き込めば、うまくいく筈ですよね?
同じCSSを使っているページなら、外部CSSファイルを共有して、ブラウザ側でキャッシュしてくれるので、そう言う意味でもサーバ側もクライアント側も嬉しい筈。

で、方針。echoをリダイレクトします。出来るのかチェックした訳じゃないんだけど、これだけCそっくりなんだったら、標準出力への出力をリダイレクトする機能も多分あるでしょ。
CSSをモーレツに出力し始める手前で、条件分岐して、ファイルの更新日時と、タイムスタンプを比較して、もし設定が変わっているようなら、ファイル出力をやり直します。
そうでないなら素通しで。あ、あとカテゴリ毎に違うヘッダを適用するって、Atahualpaじゃ出来ないんでしょうか。Atahualpaの設定項目のほとんどは、CSSの形でheader.phpで呼び出されてしまうので、 header.phpの内容をどうにかしない限りは、どうにもならない。
今はheader.php内にカテゴリ判別を付加して強引に動かしているのですが…。
そんな感じ。いつ取りかかれるやら…。Atahualpa設定項目多過ぎですよ(泣)。

書評『好き好き大好き超愛してる』

火曜日, 6 月 9th, 2009

『好き好き大好き超愛してる』を読んだ。
私がおよそ読みそうにないタイプの本であるし、 実際明日(下書きをしているうちに日付が変わらないといいのだが)に備えるという目的がなければ、 多分私は読まなかったであろう本だ。

…ストレートに書くと酷評に見えるかもしれないので、ちょっとソフトに書こうか…。
この発言が既に酷評とか言わないように。まぁ気を取り直していきましょう。
本を開いて最初の感想は、「…行間、広くね?」だった。正直驚いた。
まぁ飛ばし読み(←警告1!)するのには適していると思ったが、ちょっとスカスカじゃね?とどうしても思ってしまう。
根が貧乏性なのだろう、同じ値段ならよりページ数が多くて文字数も多いほうがお得な感じがしてしまうのだ。
ついでに言えば、全体のデザイン、表紙、ページ数を表記した飾り文字などを見るにつけ、
あからさまに”女性向け”に作ってありますね。この本。(←警告2!)
その段階で、「覚悟のない男性読者」であるワタクシメにはダメージがでかかった。(←警告3!)

基本的に、私は物語の類については公の場でネタばれしないことにしているのだが、
今回は多少仄めかすことにしよう。許して誰かさん。
形式としては、短編集に近い。”恋愛”をテーマにしたと思しき短編 (思しいのは私にゃ恋愛が分からんからであって、決して「恋愛を書いてない」とか言いたいわけじゃないからね!)が、6つ位あって、 その内3つは明らかに一つのストーリーを分割してあるのだが、残りと”本体”の関係は定かではない。
“本体”の主人公である小説家の書いた作品と読めないこともないのだが、なんかちょっとちぐはぐ。よく分からない。
すべての共通点は、「男女の恋愛を扱ってい」て、「女性が死にそう」あるいは「女性が死ぬ」。で、「男は肉体的にはぴんぴんしたまま残る」。
悲恋ってやつなんでしょうか。

書評を書いている内にどんどん分析的になっていく自分に嫌気がさしているのだが、まぁ自分Zの暴走を暫くは放置しようか。
恋愛を外的要因で”破壊”して、何が恋愛なのかとか、成立要件(妙な表現だ)とかを明らかにするってことなんでしょうかね?
あとは”祈り”ですか。願望を吐露することに意味があるのだ、みたいな?
いつも言い訳がましい文章を書く私ではあるが、ここまで言い訳がましいのも珍しい…。

私は、作中で登場した”ASMA(アズマと読ませる)”や”アダムとイヴのろっ骨融合”といったSF的ガジェットに目を奪われ、登場する”神”との戦争のような、 物語の背景にばかり注意を向けていた。全くどうでもいいが肋骨は漢字で書いて欲しい。
世界観とか設定好きの典型的SFスキーとしては、「キリスト教ネタか!?」とかドキドキワクワクしたのに詳細が語られず大変残念である。無念。
一般的なこの本の読者層からすれば、それこそこういう”些細な”ギミックはどうでも良いのかなー。

こういう、女性にターゲットを絞った(は言過ぎですかね?)本が、大学の読書サークルから多くの票を集めたとなると、極単純な推論をすれば、こういったサークルの構成員には女性が多いと言うことに。
幾ら何でも安直すぎだって?いや意外に安直な推論が当たるから世の中恐ろしい。(←警告4!)

あと目に留まった、というよりも気に入ったのは、主人公?の小説家と、その恋人(故人)の中学生の弟の会話の中で登場する、「友達がメタ化している」と言う表現とか、その辺のくだり。
私の解釈では、「友達」という関係がどういうものかに関する暗黙の了解が出来上がっていて、その枠にはまった「友達」という役を誰もが演じていると言うか、まぁそんな話らしい。
概念的な形式が実際の人間関係を規定しているみたいな。これは中々面白かった。

ただひたすら恋愛が分からんSFヲタの愚痴みたいな文章になってしまったけれども、普段小説を読む時にはこんな感じで読んでます。多分。
ここまで物語の流れに入り込んでないのもそれはそれで珍しいんだけど(←警告5!)、まぁそれは文章の責任よりも、私自身が気が急いていて立読みの斜め読みで1時間程度で読んだが故って部分が遥かに大きいです。
弁護に成っている様な成っていない様な…。

果たしてこんな評価を下す人物が某企画に参加していいのか!?甚だ怪しい所ではありますが、深く突っ込まないで下さい。 最後に全くどうでも良いことをもう一つだけ(コロンボか!)。このタイトル、変換するといつも「寵愛してる」になって笑ってしまう。どこの光源氏だ(笑)。お後が宜しくないようで。

キャッシングは計画的に。

月曜日, 6 月 8th, 2009

いやはや、中々儘ならぬものと言うか、コーディングでよくあるのはうっかりミスである。
今回の、make_update_list高速化計画こと、caching(って言うのかな…)しようぜ!計画は、一応成功裏に終わったのであるが、躓いた所を列挙してみよう。

  1. OSの違いに泣くある程度の部分はローカルでテストをしたのだが、前にも書いたと思うが私の環境はWinXP+Apache2.2+PHP5.2+MySQL5.0である。Unixと違ってパーミッションが無くて云々て言う話は前もしたような気がする。今回はfilemtimeなる関数を使おうとしたのだが、これはWinでは実装されていないそうだ。ダメか。ついでにmb関数群もダメらしい。それは無いだろ。おいおい。という訳で、結局ローカルではプラグイン丸ごとの試験は出来なかったorz
    これはUnixマシンを所有せよとの神のお告げか!?(どーゆー神だ&金はあるのか)
  2. array_splice()は中々曲者であるというのも、添え字が保存されないので、foreach($array as $key => $element)の中で呼ぶと、array_splice()した部分以降の、$keyと$elementの関係がずれてしまうらしいのだ。あるいは、条件式で( $number && $x != 1)みたいなことをやったのだが、つまり$numberが0か空ではなく、しかも別の変数$xが1でないという条件式なのだが、これが意図した通りに解釈されなかった可能性もある。ちゃんと切り分けて実証はしていない。とにかくarray_spliceするループを分離してしまったら収まったので、それでよしとした。
  3. 定義リストを閉じ忘れたトップページのソースを見てもらえば分かるが、”ゼミ生ブログ集”の部分は、DIVタグで囲われた定義リスト(DL)になっている。んで定義リストを閉じる部分を吐き出し忘れた(てへ)。直ぐ気付いたが…。
  4. パスを間違えたのに気付かなかった。キャッシュを保存しているのだが、いくらやっても上手く保存できている様子が無い。この間実験した時には上手く行ったのに、何がいけないんだ…と頭を抱えていたら、スラッシュが一本足りず、存在しないディレクトリにあるファイルを開こうと頑張っていた。そらー開きませんわ。書き込めませんわ。
あとは、データベース上のブログオプションに、一部のデータを保存したくて、この間も紹介した我等がバイブルを参照していたのだが、そこでget_last_updated()なる関数を発見してしまったorz
コレ、私が苦労してデータベースにクエリ発行して取得していた情報を取ってくる関数じゃありませんか。徒労感が…。
とは言え、幾つかのデータは結局データベースにアクセスしないと、用意された関数群からでは取得できそうに無い(?)ので、まぁいいかと自分を慰めています。ハイ。或いは灰。
まぁそもそもこの関数を見つけられたのだって、関数名と引数を見れば大体どんな関数なのか見当がつくという、WPMU(あるいはWP)での命名作法に慣れてきた証ではあります。喜びましょう。悲しみましょう。
これできっと恐らく多分(随分自信ないんだな)、ブログが更新された直後にKENBUNDENトップを訪れた不運な人意外は、キャッシュされたデータでリストが作成されるので、随分表示が速くなる…といいなぁ…。

オマケ:この記事の投稿に使っているstrongタグの閉じタグを、一箇所storngと表記してしまって、変な投稿をしてしまったのは内緒である。

かぐや姫、月へ帰る

土曜日, 6 月 6th, 2009

私にしては随分と感傷的なタイトルだけど、内容はいつも通りですよ!多分。
2007年09月14日、H-IIA13号機に載って、SELENEという月観測衛星が打ち上げられた。
日本の宇宙開発の慣例に従って、軌道投入が確認されてから、公募した中から審査委員が選んだ、 衛星の愛称が発表された。その名は「かぐや」。
ちょっとベタベタ過ぎない?と思わないでもなかったが、リレー衛星とVRAD衛星という二機の子衛星を積んでいるから、
3つセットの名前が欲しかったのだろう。ご存知の方も多かろうが、こちらは「おきな」と「おうな」と名付けられた。
かぐや姫の育ての親がかぐや姫に「乗っかって」月を目指すという逆転は、何だかおかしいけれども、”親孝行”なのでしょうかねぇ…。

さてそのSELENEが、来る2009年06月11日の午前3:30ごろに、月面に落下する。
SELENEは2007年12月から、2008年10月にかけて、所定の運用を行い、それが終わってからは言わば「オマケ」の運用を続けていた。
こういうことは、衛星の世界ではよくある話で、ハッブルの様な極めて特殊なものを除いて、人工衛星は過酷な環境の中で地上から直接物理的な支援が行えない状態で、高い精度での稼動を要求される。
そのため、かなり悪い予測に基づいて、衛星が確実に”生きて”いられると予想される期間で、所定のデータを採ってしまうようスケジュールが組まれる。
そして、運が良ければ所定の運用の後に、「オマケ」の調査を行うのである。勿論最初から期待してはいるのだが。
SELENEでは、月の重力異常や月表面の組成などについてのデータを、高度100km前後の円軌道で収集するのが当初の目標だった。
「オマケ」ではより高度を下げ、より精度の高いデータを採ってきた。
しかしそろそろ姿勢制御系にダメージが蓄積されてきて、姿勢の維持に支障が出始めたので、きちんと姿勢が制御できる内に、狙った場所へSELENE本体を落とし、その様子を地上から観測するのである。

JAXAが各地の天文台などにSELENE月面衝突時の観測を呼びかけている。
落下するのは、地球から見える面(当然だ)の、地球から見て南東側の影の部分である。詳しい場所や時間については、JAXAの公式ページから最新の情報を確認して欲しい。
また残念ながら、この衝突で発生する光を肉眼で見ることは出来ないと予想されている。
とはいえ、何が起こるかは最後まで分からないので、もし晴れたらちょっと思い出してみて欲しい。
シューメーカー・レヴィ第9彗星の例もあることだし。アレ、地球から見て木星の裏側に衝突したが、衝突前には「衝突しても半回転する間に痕跡は消えてしまうだろう」みたいな予想だったのだ。しかし実際には極めて明瞭な衝突痕が出た訳で…今回も、もしかすると、もしかするかもしれないのだ。
SL9よりも落ちる物体についても、落ちた先についても良く分かっているので、可能性は遥かに低いだろうが。
少々外に出て月を愛でるには非常識な時間なのが惜しい所である。

make_update_listを速くする

木曜日, 6 月 4th, 2009

なんとなく、コーディングのネタとそれ以外のネタを交互に書いていくことに今決めた。 次回のコーディングのネタは既に確保済みだが、ごく普通に考えるとやはりコーディングネタの方が先に尽きそうだ。 その時はその時考えよう。コーディングと言う内DNAネタに走ってみたりして…。

夜中にアイスを食べながら、なにを考えるかといえば、見聞伝トップ下部に現在表示されているアレ、何とか高速化できないものだろうか。 どう考えても、アクセスする度にあのリスト全体を生成しているのがいけないのだが、それを避けるにはやはり実行結果をどこかに保存しておくというのが順当な手段だろう。

さてどんな時にリストを生成しなくてはいけないかというと、

  • ブログが更新されたとき
  • 引数が変更されたとき
  • 結果が保存されていないとき
当然ながら、これは頻度の順である。2と3を軽く説明しておくと、このリストを生成する時には、何件表示するかなどのパラメータがいくつか設定できる。当然ながら、この設定が変更された時には、リストを生成し直さなくてはいけない。また、今回更新した直後には当然過去のリストは保存されていないから、生成して保存しなくてはいけない。 他にも、保存した結果を消去すればリストが再生成されるようにしておくと、後々便利そうである。 この条件分岐はそのまま書くと結構スパゲッティーになるので、由緒正しきフラグを使って分岐を書くことにする。

蛇足ながら説明しておくと、スパゲッティーコードとは、スパゲッティーの如くごちゃごちゃと絡まりあっていて、どの部分が何を制御しているのか分かり難く、見通しの悪いコードのことである。間違いの元になるため敬遠される。逆に、そういうコードを意図的に書いて楽しむ(?)、IOCCCなるコンテストも存在している。ニコニコ動画でしばしば見られる、「技術の無駄遣い」を地で行くようなコンテストである。

さらにもう一本足を生やしておくと、フラグというと「死亡フラグ」なんて言葉が有名になってしまっている気がするが、技術屋さんにありがち(?)な伸ばし棒や促音を略して書いているもので、ごく一般的なカタカナ表記をするなら、フラッグである。つまり旗。 条件分岐に使う条件が成立しているかどうかの目印ってだけなんですよー。別にアドベンチャーゲームに出てくるだけじゃないんだぞー。

これ以上足を生やすと蛇が百足になりそうなので、今夜はこの辺で。来週までに改造を完了したいなぁ。

自転車で

土曜日, 5 月 23rd, 2009

久しぶりに市立図書館に行ってきた。自慢ではないが、いや自慢できないのだが、私は延滞の常習犯である。今回も、5/3に返却せねばならない本を、今日(5/23)まで返却していなかった。つまり、20日ほど延滞していたorz なんだか日記を書くたびにダメ人間っぷりをアピールしているだけのような気がするな。因みに、通常の貸し出し期間は14日つまり二週間である。延滞期間の方が長いとはナニゴトダ。

34日も図書館に行ってなかったのか。道理で最近周囲に本がない訳だ…。一応書いておくと、私はほとんど本を買わない。調達手段は、市立図書館か、隣の市の市立図書館(市同士が提携している)、学校の図書館、あるいは立ち読みである。一時期は、自分に掛かる税金分を取り戻す程度には利用していたのではないだろうか。最近はそれ程でもないが。

なぜと聞かれれば、1.金がない2.場所がない3.買うと読まない、と三拍子揃っているからである。特に3は、手元に半永久的にあると思うと、安心してしまってついつい他の本を先に読んでしまうのである。珍しく買った本の中には、そうやって積ん読の深い森の中に消えていったものも多い。まるで腐海。あるいはタクラマカンか。

さて本日の獲物である。

  1. 『不思議の国の論理学』ルイス・キャロル/柳瀬尚紀編訳-川出文庫(朝日出版からの再版)
  2. 『物理と数学の不思議な関係-遠くて近い二つの「科学」-』マルコム・E・ラインズ/青木薫訳-<数理を愉しむ>シリーズ
  3. 『今はもうない』森博嗣-講談社ノベルズ
  4. 『数奇にして模型』森博嗣-講談社ノベルズ
  5. 『機械仕掛けの神-ヘリコプター全史-』ジェイムズ・R・チャイルズ/伏見威蕃訳-早川書房
  6. 『Webデザイン-プロフェッショナルガイド-』ジェフ・カールソン+トビー・マリーナ+グレン・フリスマン/株式会社バベル訳-IDGコミュニケーションズ
  7. 『ライトノベル作家のつくりかた-実践!ライトノベル創作講座-』浅尾典彦+ライトノベル研究会-青心社

1.は、『ゲーデル、エッシャー、バッハ』の三人居る訳者の一人が書いた本で、GEBを読んだ時から読みたかったのだが、今日見かけたので借りてみた。

2.を借りるのはかれこれ三度目だろうか。知識レベルが上がるにつれて、読み取れる内容が変わっていく本である。要するにレベルたけーよ。

3.と4.は普通の?ミステリです。はい。やっとここまで来たぜ。

5.は前回に引き続き借りている。今年一月に出版された新しい本である。最後の方を読み切っていなかったので借り直した。

6.は見聞伝サイトを扱うにあたり、多少は読んでみようかと軽い気持ちで借りた。JavaScriptの本でも借りようかと思ってその辺の本棚に行ったのだが、残念ながらJavaScript関連の本は見つけられず。過去に見かけたことがあるので、誰か借りているのだろう。

7.はゼミ内で私が参加している企画の予習?である。私自身は基本的に物語の消費者であって、生産者になろうと思ったことはない。というか、ある時自分には世界設定とか、そういうものは書けても、物語(story)に出来ないなぁと気付いたので、それ以降物語を書こうとはしていない。故に、作家が産み出される過程についてほとんど何も知らない。てな訳で、目に付いたこの本を借りてみた。こういう本って、タイトルと中身にギャップがあったりするので、読んでみないと分からないが、どーなんでしょうね。

総括すると乱読ですね私。当たり前か。とはいえ、こうやって読書暦を付けると、乱読でありながらある点の周囲をぐるぐるぐるぐると回っている実体が良く見えるだろう。アトラクタに惹かれる蝶のよーに。実は余り広い範囲をカバーできているわけではないという…。触覚だけは蛾の如く大きく広げて置きたいものです。

あ、読んだら『僕らはこんな本を読んでいる』企画に投稿する予定です。先にブログに書いているのは、要するに木許さんのマネでございます。芸がないな。猿でもできる猿真似講座。

窪田-幅を広くと言っても興味のないものは読めんからなぁ-史朗

遡る

水曜日, 5 月 20th, 2009

私はかなり重度の天の邪鬼である。 とりあえず流れには逆らってみようとする。 反骨とか反体制とか、そんなにはっきりしたものではないし、 もっと言えばそういうモノだけではなくて、 クラスなどの小集団の中の流れにも出来れば逆らってみるタイプである。 …出来ればと言う辺りが小物なのだが。

さて私はプログラミングしていたり、サーバいじったり、 飛翔体が大好きだったりするので、さぞ電子機器に囲まれた生活をしていると思うだろう。 ところがどっこい、私の家には以下のものがないし、それに特に不便を感じていない。

  • 炊飯器
  • 電子レンジ
  • 電気ポット
米は鍋で炊くし、どうしても温め直したいなら蒸すし、湯は薬缶で沸かす。 …環境に悪そうだね。うん。ついでに言えば、私は携帯電話を持っていない。 家の固定電話も緑の公衆電話と同じく、通話機能しかない。 FAXはないし、録音機能もないし、ディスプレイもないから誰からかかって来たかも不明。 子機もない。もう20年位使っている。…流石に黒電話ではないよ? プッシュホンです。

ここまでで分かったことは、この性質は必ずしも私だけではなく、 少なくとも両親からのかなり強い影響を受けているだろうと言うことだ。 それだけではないが。

もう少し詳しく私が嫌いな『流れ』を書くと、 典型的には祭りの神輿を担いでいる時の様な、 トランス状態がキライなのだ、と最近気付いた。 同じ阿呆なら踊らにゃ損損、ではあるかもしれないが、 言わば集団がコヒーレントになる、ああいった空間がどうにも苦手である。 集団の構成員が同じ目標に向かって努力するとか言う状態を越えて、 何か群体の如く、個を剥奪された状態になる(様に見える)のが恐ろしい。

恐らくそれは、私自身が自他共に認める”変人”であることと無関係ではない。 私自身が、多様性が保証される様な環境でないと、排除される側になると言う、 潜在的な恐怖を抱えている気がする。いつもそんなことを考えている訳ではないが、 自分自身が属する集団がそういう状態に移行しそうになると、 同調することで、ではなく、同調を破壊することで、自分の居場所を確保しようとするらしい。

とはいえ、波に乗っている集団が嫌いな訳ではない。 そこで、思考の幅が制限されていくのが嫌いなのである。 波に乗るとむしろ思考の幅が広くなる場合もあるし、 そう言うのは大歓迎である。

立花ゼミで波に乗ると思考の幅が広くなるんだぞ、とゼミを持ち上げて筆を置こう。

窪田-分析癖発動中-史朗