もう何十時間使っていることやら

昨日の「順調」は間違い。
「焦燥」という熟語こそふさわしい。

つねにギリギリ。あせってあせってプログラムもアンケートも作成。


そして、こんなときにバグ発生orz
受講生のデータはすべて番号で管理しているんだけど、数値と文字列の扱いを勘違いしていたために発生したバグ。おかげで、ある受講生の日程変更をしようとして全然違う人の日程を変更していたという事態にorz


PHPでもJavaScriptでも数値文字列は簡単に数値に変換できる。

//PHP
$str = "001";
print((int)$str);  // 1
print($str+2);     // 3

//JavaScript
str = "001";
document.write(Number(str));    // 1
document.write(Number(str)+2);  // 3


こんなもんだから、JavaScriptでこんな感じの記述をしてしまった。

document.write(001);


最初の例と似ているようで似ていないので気づかなかったorz
001は数値であって、僕が望んだ10進数の数値ではないのだ。
せっかくだから、JavaScriptPHPで001から099までの数値を上みたいに出力させてみた。
http://yellow.ribbon.to/~tomoemon/test.php


ぱっと見た最初は本当、なにがどうなってるのやら???って感じです。なんだこの規則性の見つからない数字たちは?!そのまんまのものもあるし、マイナス10されてる数字もあるし・・・うう〜わからん。



とりあえず、放置して他の部分をぽちぽち。。



しばらくしてからもう一度見たらすぐに気づきました。


はじめに「0」がつく数値は8進数として扱われるんだーー!!


なんで044の人の日程を変更しようとすると勝手に36の人の日程を変えてしまうのか・・・この6時間の悩みがようやく解決です。さすがに普段全然使わない8進数じゃすぐには気づけないです。そして、今度はこのバグによって変わってしまった全然関係ない人たちの日程を元に戻さなければorz


まーったくほかのことができん!