ThinkPadセットアップ中 ― 2007年08月14日 03時04分58秒
この記事、書くの3回目...
本題に入る前に愚痴をば。
なんかわからんが、「のーと」を変換しようとすると使用中のアプリが落ちるというよくわからん事態に見舞われて、この記事書くのが3回目。しょぼPCとか揶揄するから反乱おこしたのかしらん。
さて、本題。ってほどたいしたネタ書くわけじゃないんだけど。
一週間もブログをさぼってしまった
先週の頭から夏風邪をひいてダウンしてしまった。風邪をひくこと自体が2~3年ぶり(どんだけバカなんだか...)だったのだが、夏風邪なんぞはこれまでの人生で1、2回しかひいたことがないのでけっこうしんどかった。
まぁ、週の後半は大分体調も回復していたのだが、こちらのエントリにも書いたように、愛機・ThinkPad X22のHDDがアレな状態になっており、しかたないので代替のしょぼノート(おぉ、F7の変換なら落ちないか)を使用しているのだがこれがまた使いづらい。CPUのしょぼさもさることながら、メモリが192M(これがこの機種のMAX。これ以上はごっつい改造しないと無理)ってのがかなりしんどく、Firefoxをまともに使う気になれないのでネットを見るのも億劫にしていた。
HDDを買ってきたワケだが
そんなこんなで、週末にアキバに出張って2.5インチのHDDを購入してきた。ほんとは新品を調達するつもりだったが、ほぼ同じ値段で倍の容量が買えるのでついつい中古にしてしまった。80G。まぁ、大丈夫だろ。
こちらのエントリでも書いたが、外付け3.5インチ用の設備を流用して5インチ工学ドライブからブートが可能なのでHDDさえ入手できればセットアップに入れるので早速HDDを換装、Win2KのインストールCDからブートしてみた。
なんか、画面が青いんスけど...
USB1.1経由なうえ、手持ちの5インチドライブが何倍速かもわからんような古いやつなのでとろとろとセットアッププログラムをロードしていたのだが、はっと気づくと青画面。ええ、STOPエラーですわ。
手持ちのインストールCDが悪いのかと思い、今日(もう明けてるので昨日か)会社からインストールCDを借りてきて試してみるも結果同じ。ぐぅ。
で、調べてみると、どうやらSP3以前のWindows2000がUSB接続のCD-ROMドライブをサポートしていないための障害の模様。なんや、それ。
SP適用済みインストールディスクを作成してみたり
解決策としては、「SP3(またはSP4)を適用したインストールCDを作成してそっからインスコしる」ってな感じらしいので、めんどうくさいがこんなところやこんなところを参考にして、SP4適用済みのインストールCDを作成してみることに。
不精はアカンね...
普段使用しているDeep Burnerでもブートイメージはサポートしているので、bbie.exeで吸い上げたブートイメージを指定、あとは元のインストールCDからXCOPYしたファイル郡を単純に焼きこんで作成してみたが「ブートできねぇぞ、ゴルァ」メッセージが連発、あえなく廃棄。
こちらの手順どおり、makeisofsを使用してISOイメージを作成したらちゃんとブートできた。やはり先達の叡智は大事にせにゃ、ってことだすな。
ということでセットアップ中
インストールパーティションを40G確保したせいか、パーティションのフォーマットに結構時間がかかったが、なんとか現在セットアップは進行中。でもこっから環境復帰させるのがまた大変なんだよなぁ。
Number#toStringの詳しい解説 ― 2007年08月18日 00時08分16秒
久々のJavaScriptネタ。といってもすごい人へのリンクですが。
Number#toStringの深層
以前書いたエントリ「Number#toString、面白い」の関連だが、ネタ元のnanto_viさんが詳細を調査された模様。
仕様の解説と、各ブラウザごとの実装状況まで調査しておられ、一覧表を掲載されている。これは非常に参考になる。
(ありがたいというか恥ずかしいというか、「Number#toString、面白い」にリンクしていただいた。どうもありがとうございました。)
parseIntもそうなんだ
Number#toStringのほかに、parseIntについても言及されている。parseIntの第二引数にradix指定できるなんてしらなんだ。と思ったら、Windows スクリプティング テクノロジのヘルプ(Script56.CHM)にもちゃんと
radixって書いてあるのねん。見落としてたわ。
省略可能です。引数 numstring に含まれる数値の基数を表す 2 ~ 36 の範囲の値を指定します。省略した場合、先頭に "0x" が付いている文字列は 16 進数、"0" が付いている文字列は 8 進数と見なされます。これ以外の文字列は、10 進数と見なされます。
parseIntのすごい使い方
さらにparseIntの使い道でこんなすごいアイディアまで。
余談ですが、anarachy golf banner での 2007 年 3 月 8 日時点での JavaScript の記録 (278 バイト) では、データサイズを減らすため数値データを 36 進数文字列として格納し、parseInt を使ってそれを数値化しています。
多少は和らいだかな? ― 2007年08月18日 03時27分31秒
暑さには強いんだけど
夏生まれのせいか、ほかの人より暑さには強いと思うんだけど、さすがに体温と同じくらいの気温が続くと「もぉいいっス」という感じになっていたのだが、今日になって多少楽になった気がする。
それが証拠に、多少ブログを書く気になってるし(w
どのくらいで「暑すぎ」と思うか
5~6年くらい前は32度を超えると「暑すぎ」と思っていたのだが、ここ数年は33度くらいまで許容範囲だった。
しかしこの猛暑でまた少し許容範囲が広がった気がする。たぶん34度まで大丈夫と身体が勘違いしていそうだ。
気が付いたらもう8月も半ばを過ぎ、暦の上では秋が近づいてきているが、来週は多少は楽になるかなぁ。
余談
ボクのセンセイはぁ…と出てきた貴方は 40代。...まだ30代だけど浮かびましたよ > 水谷豊の顔。
PHPのコネタ ― 2007年08月18日 04時10分33秒
脈絡もなくPHPネタ。いや、いろいろとすぐに忘れちゃうもんで。
スタティックメソッドチェーンて、できるのか?
まぁ、インスタンスアクセスをしないユーティリティクラスに対して値を設定するなんてことは普通しないワケなんだけど、何を思ったのか、スタティックメソッドでメソッドチェーンができないかを試してみた。
ま、実用性皆無のサンプルだけど、こんな感じのコードがあったとする。
/** * 単純なカウンタクラス */ class Counter { private static $_counter = 0; /** * 現在値の取得 */ public static function current() { return self::$_counter; } /** * カウンタを進める */ public static function increment() { self::$_counter++; } }見てのとおり、現在値の取得とカウンタのインクリメントをスタティックメソッドで提供している。で、これを
var_dump( Counter::increment() ); echo Counter::current();とかってすると、出力は
NULL 1見たいな感じになる。
で、本題。incrementメソッドを何も考えずに
public static function increment() { self::$_counter++; return self; }としてみる。「echo Counter::increment()::current();」とかってやってみたいわけ。記述は変態じみてるけど。
で、実行してみると、以下のようになる。
string(4) "self" 1キーワード「self」を戻り値にすると、"self"という文字列が返るみたいだ。なので当然「increment()::current()」はできませんでしたとさ。
call_user_funcのまとめ
よく忘れるのでメモ的にまとめる。
関数「call_user_func」は、第一引数に関数名、それ以降にその関数への引数を列挙することで動的な関数呼び出しを行う関数。
で、第一引数にはarrayを渡すこともでき、これによりメソッド呼び出しも行える。インスタンスメソッドもクラスメソッド(スタティックメソッド)も。
まとめるとこんな感じ。
- 関数呼び出し
-
- 呼び出したい関数名をstringで渡す。
- インスタンスメソッド呼び出し
-
- array渡し。arrayの第一要素にはメソッドを所有するインスタンス、第二要素にメソッド名をstringで渡す。
- クラスメソッド呼び出し
-
- array渡し。arrayの第一要素にはクラス名をstringで、第二要素にメソッド名をstringで渡す。
以下サンプル。ちなみにPHP5のコードなので注意。
<?php function func_test() { return '関数呼び出し'; } class TestClass { public function __construct() {} public function instanceMethod() { return 'インスタンスメソッド呼び出し'; } public static function staticMethod() { return 'クラスメソッド呼び出し'; } } // 「func_test()」と等価 echo call_user_func( 'func_test' ) . "\n"; // → "関数呼び出し" $test = new TestClass(); // 「$test->instanceMethod()」と等価 echo call_user_func( array( $test, 'instanceMethod' ) ) . "\n"; // → "インスタンスメソッド呼び出し" // 「TestClass::staticMethod()」と等価 echo call_user_func( array( 'TestClass', 'staticMethod' ) ) . "\n"; // → "クラスメソッド呼び出し"
いつのまにか1.0.1でてるし。 ― 2007年08月18日 04時29分53秒
うぎゃ、未チェックだった。Zend Frameworkが7/30付けで1.0.1になってる。
うーん、まだ詳しく見てないけど、Changelogをざっとなめた感じではbug fixメインかなー。
いま1.0.0で仕事やってるんだけど、バージョンあげたほうがいいのかしらん。今のとこバグくさいのにあたってないからこのままでもいいのかな。
最近のコメント