Home

日記
今日のスポクラ (14:09)Edit

VAAMはゼリーよりも缶の方が強力らしいんで、運動前には缶の方を飲んでみた。で、いつものメニュー。いつもより多く汗をかいた気がするのは、多分気のせいだろう。そろそろシャドーだけじゃなく、ピッチング練習もしておいた方がいいよなー。

Published At2005-09-07 00:00Updated At2005-09-07 00:00

日記
pukiwiki.org回避 (18:06)Edit

ひとまずpukiwiki.jpに変えておく。

  • 「init.php」の開発チームへのリンク部分。
  • 「InterWikiName」のpukiwikiの設定。ここを参照してInterWikiで接続しているページが他にもありうるんで、重要度高い。
  • 「FormatRule」の中に例としてたくさんある。
  • 「SandBox」にもデフォルトではあるのかな? うちはSandBoxがなかったんで分からなかった。
  • 「InterWikiテクニカル」にもあった。

英語版のデータ?(wiki.en)の方にもあるっぽいけど、ブラウザの言語設定を変えればこっちが表示されるのかな? よくわからないから、そっちはひとまずいいや。

Published At2005-09-07 00:00Updated At2005-09-07 00:00

日記
リファレンスをよく分かっていなかった (10:02)Edit

$x = 'x';
$tmp =& $x;
$tmp = 'X';
echo 'x = ' . $x . "\n";
echo 'tmp = ' . $tmp . "\n";
$x = 'x';
$tmp =& $x;
unset($tmp);
$tmp = 'X';
echo 'x = ' . $x . "\n";
echo 'tmp = ' . $tmp . "\n";
$x = 'x';
$y = 'y';
$tmp =& $x;
$tmp =& $y;
$tmp = 'z';
echo 'x = ' . $x . "\n";
echo 'y = ' . $y . "\n";
echo 'tmp = ' . $tmp . "\n";
$x = 'x';
$y = 'y';
$tmp =& $x;
$x =& $y;
$tmp = 'z';
echo 'x = ' . $x . "\n";
echo 'y = ' . $y . "\n";
echo 'tmp = ' . $tmp . "\n";

の結果を正しく理解していなかった模様。この辺の理解が曖昧なままに、配列の要素のリファレンスをいじっていて混乱してしまった。

ああ、肝心なパターンが抜けていた

$x = 'x';
$y = 'y';
$tmp =& $x;
$tmp =& $y;
$tmp = 'z';
echo 'x = ' . $x . "\n";
echo 'y = ' . $y . "\n";
echo 'tmp = ' . $tmp . "\n";

ね。リファレンス変数にリファレンスを代入した場合の影響範囲。 ちなみに上記の結果は、

x = z
y = z
tmp = z

になる。

すみません、間違いでした

ISAさんにコメントで指摘された通り、前のテストコードで設定したリファレンスを引きずっちゃってました。正しくは、

x = x
y = z
tmp = z

でした。

$tmp =& $x;
$tmp =& $y;

で、$x、$y、$tmpのすべてが同じシンボルテーブルを参照するようになるんだと勘違いしていた。やっぱりわかってないなー。

Published At2005-09-08 00:00Updated At2005-09-08 00:00

日記
やっぱりダメだった (11:39)Edit

リファレンス変数の動作イメージがきちんと理解できていないな。配列と絡むとさらに混乱度倍。

要は、

function &getNode(&$tree, $path)
{
$node =& $tree;
foreach (explode('/', $path) as $key) {
if ($key == '') {continue;}
if (!isset($node[$key])) {
$node[$key] = NULL;
}
$node =& $node[$key];
}
return $node;
}
function setNode(&$tree, $path, $value)
{
$node =& getNode($tree, $path);
$node = $value;
}
function setNodeByRef(&$tree, $path, &$value)
{
$node =& getNode($tree, $path);
$node =& $value;
}
$tree = array(
1 => array(
11 => 11,
12 => 12,
),
2 => array(
21 => 21
),
);
$a = 'a';
print_r($tree);
setNode($tree, '1/11', $a);
print_r($tree);
setNodeByRef($tree, '1/12', $a);
print_r($tree);
$a = 'A';
print_r($tree);

なんてことをしたかったんだけど、これだとsetNodeByRefしても、指定したノードに$aのリファレンスが代入されない。

function setNodeByRef(&$tree, $path, &$value)
{
$node =& $tree;
$keys = explode('/', $path);
$lastkey = array_pop($keys);
foreach ($keys as $key) {
if ($key == '') {continue;}
if (!isset($node[$key])) {
$node[$key] = NULL;
}
$node =& $node[$key];
}
$node[$lastkey] =& $value;
}

みたいにすれば大丈夫だけど。

Published At2005-09-08 00:00Updated At2005-09-08 00:00

日記
今日のスポクラ (16:19)Edit

朝からPHPのリファレンスのテストをごちゃごちゃやっていたら、スポクラに行くのが10分ほど遅れてしまった。んで、マシンは今日は7割程度に省略。昨日今日とやたら汗をかくのはやっぱりVAAM缶のせいかな。それとも気候か体質の問題?

Published At2005-09-08 00:00Updated At2005-09-08 00:00

日記
なんじゃこりゃ (17:07)Edit

iTunes 5にアップデートしようとしたら、QuickTimeを7にアップデートしてもいいか聞いてきた。俺はQuickTime 6のProライセンスを持っているので、それが使えなくなるのはいやだから、「いいえ」を選択した。すると、インストールを中止するか聞いてきたので、QuickTimeのアップデートはしたくないけど、iTunesのインストールはしたかったので、「いいえ」を選択した。するとふつうにiTunesのセットアッププログラムが立ち上がったので、そのままインストール作業を続行した。すると、先ほど拒否したはずのQuickTimeも含めてインストールが行われ、QuickTimeはバージョン7にアップグレードされ、俺のQuickTime 6 Proのライセンスは失われた。なんじゃそりゃ。これってダウングレードできるのかなー。

Published At2005-09-08 00:00Updated At2005-09-08 00:00

日記
ジョグダイアルが完全に死んだ (19:07)Edit

何をやってもびた一文反応しなくなってしまった。今のところ、今週末にW31CAに買い換える予定。Suica初代機に乗り換えるのはあきらめた。

Published At2005-09-08 00:00Updated At2005-09-08 00:00

日記
今日のスポクラ (13:07)Edit

またちょっと出遅れたんでマシンをちょっと端折りつついつも通り。それにしても今日は眠い。眠すぎる。

Published At2005-09-09 00:00Updated At2005-09-09 00:00

日記
UNIX USER誌にブログスパムの記事を書きました (14:55)Edit

なんかネタ的にふつうすぎて、UNIX USERの誌面にあってなかったかも。塚本さんのWikiスパムの記事の方が具体的で面白いな。せめて、文字数あふれで削ってしまったスパムエントリーネタを入れておけば、タイムリーだったんだけどなー。

Published At2005-09-09 00:00Updated At2005-09-09 00:00

日記
W32Hに買い換えた (23:56)Edit

結局W31CAはやめて、W32Hに買い換えた。けど、まだ全然使ってないので感想は後で。ちなみにW21Sは機種変後に修理に出してみた(子供のおもちゃ用に)。ただし有償修理になったら修理はキャンセルする予定。

Published At2005-09-10 00:00Updated At2005-09-10 00:00