セミコンダクタ、ではなく。
なぜゼミナールはゼミと略すのにセミナーはセミと略さないのかという素朴な疑問、でもなく。
駒場で蝉が鳴いていた。
え?なに?夏?聞いてないよ!
つまりセミコンダクタとはセミのコンダクタ、即ちハーメルンの笛吹きならぬ、セミの鳴き声でセミを呼び集める謎の人物なんですね!良く分かりました!
大分錯乱しているようです。
…お前はもう、聞いている。
セミコンダクタ、ではなく。
なぜゼミナールはゼミと略すのにセミナーはセミと略さないのかという素朴な疑問、でもなく。
駒場で蝉が鳴いていた。
え?なに?夏?聞いてないよ!
つまりセミコンダクタとはセミのコンダクタ、即ちハーメルンの笛吹きならぬ、セミの鳴き声でセミを呼び集める謎の人物なんですね!良く分かりました!
大分錯乱しているようです。
…お前はもう、聞いている。
なんというか、画像編集って素朴に恐ろしいですね…。
適当にちょこっと弄っただけで、随分印象が変わってしまいます。

元の画像
[/caption]
上がBeforeで下がAfterでございます。
このタイトルなんだかかっこいいよね。そんなことを意図して決めた訳ではないのですが。
名前に似合わず?コーディングネタ。
今回はWordPressは置いといて、PHPだけの話。
得てしてマニュアルと言うものは不親切ではありますが…。
いや決してマニュアルを責めている訳でもないのです。
大変お世話になっとります。
しかしぱっとよんで「そう言う理解はせんよ」と思う文章はあります。
PHPでは、他のテキストの間に、コードを埋め込むことが出来ます。こんな感じで。
<html> <body> <h3>ページタイトル</h3> <?php echo 'test'; ?> あああああ<br /> </body> </html>恐らくHTMLを書いたことがある人、そしてブラウザからウェブページのソースを覗いたことのある人にとって、
<?php echo '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>
なんて書けば、
なんて表示される訳です。
これぐらいのことJavaScriptでも出来る?その通りです。
しかしJavaScriptではなくPHPを使う最大の魅力は、なんと言ってもブラウザから見ている人にはただのHTMLにしか見えない、と言う点です。
JavaScriptであれば、なにやら怪しげなことが背後で行われているのはわかりますし、多少知識があれば何をやっているか丸見えです。
またブラウザを使って実行しているので、閲覧者がJavaScriptの実行を停止すると、表示もおかしくなります。
PHPであれば、閲覧者の元に届くのは処理を全て終えた後のただのHTMLなので、そういった心配は必要ありません。
(勿論PHPとJavaScriptを組み合わせて使うのは全く珍しくない話ですが)
…思えば遠くへ来たもんだ…。元々の話題は何でしたっけ?
<?php
$i = 0;
if ($i > 10 ) { ?>
$iは10を超えている。<br />
<?php } else { ?>
$iは10以下である。<br />
<?php } ?>
このコードは、最も基本的な条件分岐を含んでいます。
<?php
$i = 0;
if ($i > 10 ) {
echo '$iは10を超えている。';
} else {
echo '$iは10以下である。';
} ?>
と等価です。この、echoを明示的に書かなくても実質的にechoを書いたことになる点を指して、「暗黙のエコー」と勝手に呼んでいる訳です。
さて長々とここまでかかってやっと何が「暗黙」なのか書けたのですが、
マニュアルがいけないと思うのは、入門者へのこのHTMLと混ぜて使える点に関する説明がどうも不十分に感じられるんですよねー。
具体的にはこの[HTMLからの脱出]の部分です。
ここを読むと、開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサに無視されます。
とある訳ですが〜。
現実問題、無視されている訳ではないのはお分かり頂けたかと思います。
なんだよちゃんと制御されているじゃん。
もう少し下を見ると、PHP は ?> 終了タグを見つけると それ以降新たに開始タグを見つけるまでの内容を何でも出力するからです
ってなってるんだけど、
それは無視じゃねーだろ。
実際、出力バッファリング関数群で、出力をバッファしてみると、<?php>と<?>に挟まれていない部分も、
あくまでもPHPスクリプトの出力として扱われていることがよくわかります。
でも私にはこの仕様(if文の途中で?>を書いても正常に動作する)はどーも気に食わないと言うか、違和感が拭えないと言うか…。
ヒアドキュメントなんてのもあるんだから、それでいーじゃないかと思ったりするんですよね。
うーん。
だぞー。
今回紹介するのは、デーヴィッド・マコーレイ作の、『道具と機械の本』。私の人生を間違いなく左右している本だ。
アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。
私は実は画像に写っている新版よりも、旧版の方が好きなんだけど…。
新版では、旧版になかった「ディジタルワールド」という章が追加され、若干他の章のページが削られています。
しかしこの新章は、残念ながらコンピュータを理解していない人が読んでも良く分からない。
他の章のレベルが高すぎて、この章はとても残念な感じになっています。
この本を小学校6年生ぐらいに親にせがんで買ってもらったのですが、当時は新版に追加された章のイメージが湧かなかった…。
応用的にどう使われているかはよく分かるのですが、この本の魅力である原理的な部分が良く分かる、って所までは行ってません。
おそらくマコーレイ氏はコンピュータを理解していたのですが、コンピュータの発達に合わせて急遽追加したため、説明の仕方を十分に寝る時間が無かったのではないか、と不遜なことを考えています。
コンピュータの原理を別の本で大体理解した高校一年生くらいになって読み返すと、「あーそういうこと」と頷けるのですが、小学生当時の知識ではちょっと厳しかった…。
コンピュータを理解した本についてはまた別の機会に譲ります。
さてAtahualpaの改造だが、一応当初の予定通りの動作をするものが出来た。
ソースを見てもらえば、以前はヘッダにあった長大(700行を越える)なCSSが無くなって、代わりにbfa_ata_style.cssとか、そんな名前のファイルが読み込まれる様になったのが分かると思う。
私が行った改造の具体的な内容及び手順は以下。
add_optionで用意(実は必要ないが、念のため)functions.phpを開けて、update_option()を呼び出している部分を探すupdate_option('option_name',date('YmdHis'))で記録する部分を追加header.phpに、カテゴリ判別してスタイルシートの名前を生成するコードを追加(以前からカテゴリ判別してCSSを書き換えていた)$filenameとすると、filemtime( TEMPLATEPATH . $filename)と、先ほどのタイムスタンプを比較して、タイムスタンプが大きければCSSを再生成する<style>と</style>を取り除き、前後にob_start()とob_get_clean()を配置、
バッファリングした内容を変数で受けて、ファイルに保存($filepointer=fopen($filename,'wb+'); fwrite($filepointer,$content);)<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に格納してしまうぐらい必要だなー。
要らぬ心配(?)をするのでありました。
更新が滞っているので、書きたかった時間の掛かるネタを諦め、短いものを。
2009/06/17に予定されていたシャトルの打ち上げが例によって再延期された。当初の予定は13日だった。
次の打ち上げ予定は多分窓の関係でだと思うが、7月後半になるらしい。
日食と被りますねぇ。まさか日食中に打ち上げたりはしないと思うけど…。
あれ?今シャトルは夜間打ち上げはしないことになってるのかな?
宇宙開発では、打ち上げの1ヶ月延期は取り立てて珍しいことではない。打ち上げに掛かる費用が莫大であるため、
打ち上げを強行して失敗するよりも、多少延ばした方がいい、という判断が働くのだろう。
とはいえ、それが費用が嵩む大きな原因になっているのだと思うが…。
延期の原因は、一度目も二度目も発射台でシャトルに燃料(LH2)を注入するパイプ(アンビリカルケーブル)が、水素ガス漏れを起こしたためだ。
一度目のガス漏れの後、その周辺の部品を全て取り外して交換し、漏れが無いことをチェックして注入し始めたのだが、
途中でまたもガス漏れをしたそうな。原因はなんなんでしょうね。
知ってる人は知ってるだろうが(何でもそうだ)、あの発射台はアポロ計画のサターンVを打ち上げるために作ったもので、
それを小改造して今でも使っているのである。
なんでシャトル専用のを作らなかったかって?そりゃ金が掛かるからですよ。
実際、シャトルはサターンVと違って回転対称ではないので、打ち上げ時の姿勢に制限が掛かるあの発射台は不便なんですが、
今でも使っております。
だから打ち上げ途中でくるっと旋回するんですよね、シャトルは。
まぁそんなこんなでアポロ月着陸40周年の今年は、あの発射台はもう40を当に超えているわけです。
そりゃー40年前の建築物なら(雨ざらしだし)老朽化もしますわなぁ。
今回シャトルは、実験モジュール「きぼう」の目玉である、船外実験設備を軌道上へ運ぶ。
大規模な真空曝露実験を行う設備は、ISS全体でもここにしか設置されないので、利用価値の高い設備だろう。
実験設備用の小さなエアロックもJEMには付属している。あと広角X線カメラで全天を走査するらしい。
突発的な現象を発見して、地上に知らせるのが役目だ。
注目すべきイベントがあると、世界中の天文台の望遠鏡や天文衛星が、予定を変えてその現象を撮影する。
見てないところは見られないのが望遠鏡なので、全天を96分で見張る設備があると大変便利なのです。
曝露実験をしても実験後の試料をどうやって持ち帰るかって問題はどうするんでしょうね。
なんにせよ頑張っても6年程度しか運用できないんですが…。
とにもかくにも、無事打ちあがって欲しいものです。
さてお約束通り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設定項目多過ぎですよ(泣)。
『好き好き大好き超愛してる』を読んだ。
私がおよそ読みそうにないタイプの本であるし、
実際明日(下書きをしているうちに日付が変わらないといいのだが)に備えるという目的がなければ、
多分私は読まなかったであろう本だ。
…ストレートに書くと酷評に見えるかもしれないので、ちょっとソフトに書こうか…。
この発言が既に酷評とか言わないように。まぁ気を取り直していきましょう。
本を開いて最初の感想は、「…行間、広くね?」だった。正直驚いた。
まぁ飛ばし読み(←警告1!)するのには適していると思ったが、ちょっとスカスカじゃね?とどうしても思ってしまう。
根が貧乏性なのだろう、同じ値段ならよりページ数が多くて文字数も多いほうがお得な感じがしてしまうのだ。
ついでに言えば、全体のデザイン、表紙、ページ数を表記した飾り文字などを見るにつけ、
あからさまに”女性向け”に作ってありますね。この本。(←警告2!)
その段階で、「覚悟のない男性読者」であるワタクシメにはダメージがでかかった。(←警告3!)
基本的に、私は物語の類については公の場でネタばれしないことにしているのだが、
今回は多少仄めかすことにしよう。許して誰かさん。
形式としては、短編集に近い。”恋愛”をテーマにしたと思しき短編
(思しいのは私にゃ恋愛が分からんからであって、決して「恋愛を書いてない」とか言いたいわけじゃないからね!)が、6つ位あって、
その内3つは明らかに一つのストーリーを分割してあるのだが、残りと”本体”の関係は定かではない。
“本体”の主人公である小説家の書いた作品と読めないこともないのだが、なんかちょっとちぐはぐ。よく分からない。
すべての共通点は、「男女の恋愛を扱ってい」て、「女性が死にそう」あるいは「女性が死ぬ」。で、「男は肉体的にはぴんぴんしたまま残る」。
悲恋ってやつなんでしょうか。
書評を書いている内にどんどん分析的になっていく自分に嫌気がさしているのだが、まぁ自分Zの暴走を暫くは放置しようか。
恋愛を外的要因で”破壊”して、何が恋愛なのかとか、成立要件(妙な表現だ)とかを明らかにするってことなんでしょうかね?
あとは”祈り”ですか。願望を吐露することに意味があるのだ、みたいな?
いつも言い訳がましい文章を書く私ではあるが、ここまで言い訳がましいのも珍しい…。
私は、作中で登場した”ASMA(アズマと読ませる)”や”アダムとイヴのろっ骨融合”といったSF的ガジェットに目を奪われ、登場する”神”との戦争のような、
物語の背景にばかり注意を向けていた。全くどうでもいいが肋骨は漢字で書いて欲しい。
世界観とか設定好きの典型的SFスキーとしては、「キリスト教ネタか!?」とかドキドキワクワクしたのに詳細が語られず大変残念である。無念。
一般的なこの本の読者層からすれば、それこそこういう”些細な”ギミックはどうでも良いのかなー。
こういう、女性にターゲットを絞った(は言過ぎですかね?)本が、大学の読書サークルから多くの票を集めたとなると、極単純な推論をすれば、こういったサークルの構成員には女性が多いと言うことに。
幾ら何でも安直すぎだって?いや意外に安直な推論が当たるから世の中恐ろしい。(←警告4!)
あと目に留まった、というよりも気に入ったのは、主人公?の小説家と、その恋人(故人)の中学生の弟の会話の中で登場する、「友達がメタ化している」と言う表現とか、その辺のくだり。
私の解釈では、「友達」という関係がどういうものかに関する暗黙の了解が出来上がっていて、その枠にはまった「友達」という役を誰もが演じていると言うか、まぁそんな話らしい。
概念的な形式が実際の人間関係を規定しているみたいな。これは中々面白かった。
ただひたすら恋愛が分からんSFヲタの愚痴みたいな文章になってしまったけれども、普段小説を読む時にはこんな感じで読んでます。多分。
ここまで物語の流れに入り込んでないのもそれはそれで珍しいんだけど(←警告5!)、まぁそれは文章の責任よりも、私自身が気が急いていて立読みの斜め読みで1時間程度で読んだが故って部分が遥かに大きいです。
弁護に成っている様な成っていない様な…。
果たしてこんな評価を下す人物が某企画に参加していいのか!?甚だ怪しい所ではありますが、深く突っ込まないで下さい。 最後に全くどうでも良いことをもう一つだけ(コロンボか!)。このタイトル、変換するといつも「寵愛してる」になって笑ってしまう。どこの光源氏だ(笑)。お後が宜しくないようで。
いやはや、中々儘ならぬものと言うか、コーディングでよくあるのはうっかりミスである。
今回の、make_update_list高速化計画こと、caching(って言うのかな…)しようぜ!計画は、一応成功裏に終わったのであるが、躓いた所を列挙してみよう。
オマケ:この記事の投稿に使っているstrongタグの閉じタグを、一箇所storngと表記してしまって、変な投稿をしてしまったのは内緒である。