2006-11-01 [長年日記]
_ 先月の自転車まとめ
というわけで、先月3日にLupoを買ってからの走行距離は、832.46kmでした。自転車通勤回数は13回。週4回くらいは乗りたいところなんで、雨が降らなければ、15、6回は乗れるはず。そうすれば+150kmくらいいけるのかな。あと土曜日は隔週くらいのペースでもうちょい距離を乗りたいな。できれば葛西臨海公園まで往復100kmくらいとか。
自転車関連には金を使いすぎたんで、小物を買うのはしばらく自粛。ただ、これからの時期は服にある程度金を使う必要がありそうだ。自転車専用の物はやけに高いんで、それ以外で自転車用にも使えそうな服を探していこう。
2006-11-02 [長年日記]
_ 自転車通勤往路
| かかった時間 | 2:30 |
| 自転車に乗っていた時間 | 2:14 |
| 走行距離 | 50.35km |
| 平均時速 | 22.6km/h |
| 最高時速 | 46.8km/h |
| 総走行距離 | 1427.1km |
| トレーニング効果 | 3.6 |
| 平均心拍数 | 145 |
| 最大心拍数 | 183 |
| 消費カロリー | 1367kcal |
すげー道に迷いまくってしまった。今日は彩湖あたりで荒川左岸に入り、そのまま戸田橋まで降りて、戸田橋で右岸に渡ってそのまま江北橋まで行き、江北橋でサイクリングロードを降りて、明治通りまでの昨日よりましなルートを探して渋谷に行く、という予定だった。んだけど、まず出だしでしくじった。彩湖の周りで高校生がマラソンをやっていたんで、それにあわせて反時計回りに彩湖の周りを回っていったんだけど、途中からよけるのがうざくなってきたんで、ダートっぽい道に突入。どこかに通り抜けられるだろうと思っていたら、行き止まりになってしまったんで、そのまま自転車を担いで土手をあがって、土手上の道へ。しかし土手上の道もしばらくしたらダートに変わってしまい、しょうがなくダートを通り抜けたらまた舗装されたところに戻ってきた。で、そのあたりで方向感覚を失い、適当に目についた道を走り続けているうちに、自転車道路のマークを発見したんで、そこを走っていたら、いつのまにかスタート地点に戻っていた。うげっ、彩湖の最外周を一周して来ちゃったのかよ。もう一回チャレンジしていると遅刻しそうなんで、あきらめて17号バイパスに抜けて、笹目橋から左岸沿いに再合流。すると、また今度は工事中のためダートによけて一部かついで通らなければならないところがあった。なんかシクロクロス満喫。それでもまあ予定通り戸田橋まで来たんで、戸田橋を渡って右岸に。でも右岸のサイクリングロードに合流するのに、また自転車をかつぐはめになってしまった。ようやくサイクリングロードを落ち着いて江北橋まで。江北橋から明治通りまでのルートは、この間王子駅前を通るのがいまいちだったんで、王子駅前を通らないように適当に進んでいたら、明治通りの看板を発見したんで、やったね!とその道をしばらく進む。が、いつまで経っても知っている道にたどり着かない。おかしいなーと地図を見たら、池袋方面に向かう明治通りではなく、122をはさんで逆方向に向かう明治通りを走っていた。最悪。来た道を戻って結局王子駅前を通ってこの間と同じルートに。こっちも道が分かっていて信号のつながりさえ悪くなければ、まあなんとかなるかな。あとはいつもの明治通りに合流して渋谷まで。往路からこんなに走るのはやり過ぎだな。
_ 自転車通勤復路
| かかった時間 | 1:13 |
| 自転車に乗っていた時間 | 1:06 |
| 走行距離 | 25.82km |
| 平均時速 | 23.4km/h |
| 最高時速 | 46.9km/h |
| 総走行距離 | 1452.9km |
| トレーニング効果 | 3.7 |
| 平均心拍数 | 148 |
| 最大心拍数 | 181 |
| 消費カロリー | 926kcal |
2006-11-03 [長年日記]
_ フューエルホースが切られて、ガソリンを盗まれた
今朝、バイクのフューエルホースが切られて、ガソリンを抜かれていた。並べておいてあったうちのオクサンのバイクとあわせて2台とも。一応警察に被害届を出しておいたけど、盗難扱いだと被害額はたかだか2000円分くらいにしかならねーんだよなー。修理に出すとそれなりにかかるのに。
っつーか、修理に出すのも面倒なんで、フューエルホースをそこらで買ってきて自前で交換してみようかと考えているんだけど、作業って大変かなー。フューエルコック側は、固定金具を外して引っこ抜けば良さそうだけど、エンジン側の方は作業スペースがかなり窮屈そうで、工具が届かない気がするんだよなー。
2006-11-04 [長年日記]
_ 荒川右岸河口まで往復
| かかった時間 | 3:32 |
| 自転車に乗っていた時間 | 3:22 |
| 走行距離 | 85.10km |
| 平均時速 | 25.2km/h |
| 最高時速 | 49.4km/h |
| 総走行距離 | 1538.0km |
| トレーニング効果 | 3.8 |
| 平均心拍数 | 146 |
| 最大心拍数 | 166 |
| 消費カロリー | 2641kcal |
秋ヶ瀬橋から荒川右岸に入り、葛西臨海公園に行こうと思っていたんだけど、いったん右岸河口まで行ってから、葛西臨海公園のある左岸側に渡るために戻りはじめたところで、思いのほか帰り道の向かい風がきつかったんで、ちょっと不安になって、そのまま帰路についた。で、往復で100kmくらい走れるかと思っていたんだけど、右岸のみだと80kmちょっとしかないのね。葛西臨海公園まで行けばちょうど100kmくらいになるかな。今度チャレンジしてみよう。
_ バイク修理して貰った
昨日フューエルホースを切られたバイクは、オクサンがバイクを買った近所のレッドバロンが、部品代だけで俺の分も出張修理してくれた。その後、わずかにタンクに残っていたガソリンを、車体を揺らしてエンジンに送り、なんとか近所のガソリンスタンドまで自走して、給油してきた。これで一応復活したけど、またやられないとも限らないし、何か対策しないとなー。
2006-11-07 [長年日記]
_ AM2:00頃〜AM8:00頃までサーバーが死んでました
poundが刺さっていたらしく、1470.net/ishinao.net上のWeb系サービスが応答しない状態になっていました。
poundのプロセス情報を見ようとすると応答が返らなくなるってパターンには初めて遭遇した。ソフトリセットも効かなかったんで、ハードリセットで復旧。
_ 自転車通勤往路
| かかった時間 | 1:38 |
| 自転車に乗っていた時間 | 1:26 |
| 走行距離 | 30.93km |
| 平均時速 | 21.5km/h |
| 最高時速 | 42.0km/h |
| 総走行距離 | 1569.0km |
| トレーニング効果 | 3.8 |
| 平均心拍数 | 149 |
| 最大心拍数 | 174 |
| 消費カロリー | 1240kcal |
今日は風がきつすぎ。横風で自転車ごと体がずれるし、向かい風では10km/h台まで減速させられるし。あまりにもきつくて対抗する気になれなかったので、だらだらと漕いできた。今日のルートは17号→戸田橋から荒川CR→江北橋で降りて明治通り→渋谷。往路はこのルートが基本になるかな。
_ 自転車通勤復路
| かかった時間 | 1:07 |
| 自転車に乗っていた時間 | 1:03 |
| 走行距離 | 25.83km |
| 平均時速 | 24.5km/h |
| 最高時速 | 48.6km/h |
| 総走行距離 | 1594.8km |
| トレーニング効果 | 4.1 |
| 平均心拍数 | 153 |
| 最大心拍数 | 177 |
| 消費カロリー | 909kcal |
2006-11-08 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:41 |
| 自転車に乗っていた時間 | 1:30 |
| 走行距離 | 31.67km |
| 平均時速 | 21.1km/h |
| 最高時速 | 47.2km/h |
| 総走行距離 | 1626.5km |
| トレーニング効果 | 3.5 |
| 平均心拍数 | 142 |
| 最大心拍数 | 170 |
| 消費カロリー | 1159kcal |
今日も風が強い&風邪気味で体調がいまいちなんで、だらだらと漕いできた。体調が悪くても自転車に乗って強引に新陳代謝を活発にして治してしまおう作戦は成功するでしょうか。正解は2日後くらいに。
_ 自転車通勤復路
| かかった時間 | 1:19 |
| 自転車に乗っていた時間 | 1:08 |
| 走行距離 | 25.86km |
| 平均時速 | 22.9km/h |
| 最高時速 | 47.7km/h |
| 総走行距離 | 1652.4km |
| トレーニング効果 | 3.5 |
| 平均心拍数 | 146 |
| 最大心拍数 | 180 |
| 消費カロリー | 948kcal |
2006-11-10 [長年日記]
_ 自転車で風邪を治す計画失敗
自転車に乗っている間は調子が良くなるんだけど、やっぱり風邪が治るってほどではないね。特に信号待ちとかでテンションが下がると力が抜けてくる。ってことで、結局昨日は休んで体調回復。でも、1日休んでも大して回復しなかった。っつーか、鼻水がすごくて、寝ていると鼻水が喉に流れ込んで、無意識に空気と一緒にそれを飲み込むらしく、1時間ごとに吐き気で目が覚める。で、大量のガスと痰を吐き出すと楽になる。といったループを繰り返していた。で、今朝方ようやく熟睡することができて、ちょっと復活したんで、今日は会社。
_ エンジンオイルが漏れていた
この間フューエルホースが切られてガソリンが抜かれた後遺症がまだ残っていた。この間走ったときにも気化したオイルがエンジン周りにやたらとついていて、なんか嫌な感じだったんだけど、今日は走っている途中から車体の左側がオイルまみれになってしまった。で、途中のバイク屋で診てもらったら、エンジンの左側にあるネジ蓋(エンジンオイル交換用のふたは右側にあるんだけど、左側のふたは何用なんだろう?)が取れていて、そこから気化したオイルが抜けている、ということだった。うわ、こんなところのふたも盗られていたのか。すぐには直らない(ふたを取り寄せなきゃダメ)ってことだったんで、ぼろ布を貰ってふたのところに詰めてごまかしつつ走った。後で近所のバイク屋でふたを取り寄せて貰いつつ、他も一応点検して貰おうかな。
2006-11-13 [長年日記]
_ 体調治らず
土曜日にはだいぶ良くなっていたんだけど、日曜日に上の子供のバス遠足で寒風が吹きすさぶ中、1日外で過ごしたところ、再び具合が悪くなった。前までは喉と鼻と頭痛の風邪だったんだけど、新しい風邪は全身がいてーよ。っつーことで、今日も自転車に乗れず。このまま自転車に乗らない日々が続くと、おっくうになって自転車に乗らなくなっちゃいそうで怖いなー。でも、無理して悪化させるとさらにまずいので、完治するまでおとなしくしてよう。
2006-11-14 [長年日記]
_ 荒川朝練
| かかった時間 | 1:15 |
| 自転車に乗っていた時間 | 1:11 |
| 走行距離 | 30.19km |
| 平均時速 | 25.4km/h |
| 最高時速 | 43.1km/h |
| 総走行距離 | 1682.6km |
| トレーニング効果 | 4.2 |
| 平均心拍数 | 149 |
| 最大心拍数 | 176 |
| 消費カロリー | 983kcal |
相変わらず体調は良くないんだけど、これ以上休むと自転車に乗れなくなりそうなんで、リハビリがてら荒川に行ってきた。自転車通勤するには体調がいまいちって感じの日は、1時間くらい荒川で走っておくことにするか。
_ パンク?
今朝自転車に乗るとき、この前乗ってから一週間ほど間が空いていたから、乗る前にタイヤに空気を入れたんだけど、そのとき後輪の空気がほとんど抜けていた。まあ一週間くらい乗っていなかったし、最近急に寒くなったしなー、などと思いつつ空気を入れ、その後走っている間は問題なかったんだけど、夜、家に帰ってからチェックしてみたら、また後輪の空気がほとんど抜けていた。
「パンク?」と思い、タイヤの表面を調べてみたけれども、特に問題は見つからない。試しに空気を入れてみたところ、空気が抜けているような気配はない。これって数時間かけてちょっとずつ空気が抜けるようなスローパンクなのかなー。念のため予備のチューブに交換してみたけど、抜いたチューブ単体でチェックしてみても、怪しいところは見あたらないんだよなー。試しに空気を入れて一晩放置して様子を見る予定。
そういや、今回初めてチューブ交換したんだけど、タイヤをホイールから外すときにタイヤレバーを一本折ってしまった。あまり無理に力を入れちゃダメなのね。この辺の作業は、コツをつかんじゃえば難しくないんだけど、コツをつかむまでは結構大変だなー。
2006-11-15 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:39 |
| 自転車に乗っていた時間 | 1:16 |
| 走行距離 | 31.21km |
| 平均時速 | 24.8km/h |
| 最高時速 | 53.9km/h |
| 総走行距離 | 1713.8km |
| トレーニング効果 | 4.2 |
| 平均心拍数 | 145 |
| 最大心拍数 | 181 |
| 消費カロリー | 1234kcal |
ほぼ風邪は治ったっぽいので、久しぶりの自転車通勤。荒川CRは戸田橋IN、江北橋OUTを経由。今日は追い風デーだったのでとても楽だった。寒くなってきたんで、いつもの格好に薄手のジャージ(一般スポーツ用)上下を追加したところ、いい感じになった。これで夜も寒くなければちょうどいいな。ただ、ジャージの裾がちょっと広くて、かなりまくり上げないとチェーンに巻き込むんで、その辺何とかしないと。途中寄り道したんで、トータル時間はちょっとかかっている。
_ パンク?続き
昨日のパンク?話は、やっぱりスローパンクだったらしい。チューブ単体でふくらましたまま一晩放置していたら朝には空気が抜けていた。1時間くらいでは特に変わった様子がなかったんだけど、8時間くらい経つと空気が抜けるのか。ここまでビミョーだとパンク修理できるかどうか怪しいから、このチューブは捨てて新しいのを買っておこう。
_ 自転車通勤復路
| かかった時間 | 1:22 |
| 自転車に乗っていた時間 | 1:10 |
| 走行距離 | 25.84km |
| 平均時速 | 22.0km/h |
| 最高時速 | 44.6km/h |
| 総走行距離 | 1739.6km |
| トレーニング効果 | 2.7 |
| 平均心拍数 | 136 |
| 最大心拍数 | 172 |
| 消費カロリー | 879kcal |
夕方から予想(天気予報)外の大雨になったんだけど、21時過ぎには帰宅ルートの雨は上がってくれたんで、帰りも自転車。ただ、路面はかなりぬれているし、ところによっては水たまりも残っていて、非常に走りづらい状態。ブレーキの効きとスリップが怖いんで、明治通りはスピードを20km/h台前半に抑えながらおそるおそる走ってきた。17号に入ってからはほぼいつも通り走れたけど。あと、今日は今までで一番厚着していたから良かったけど、この季節の雨上がりの夜はめちゃめちゃ寒い。スピードを出せないから体温もあまり上がらないし、いつもと同じ服装だったら寒すぎたかも。ジテツウ仲間が今日半袖で来たと言っていたけど、やつは凍死せずに家までたどりつけたんだろうか? そういや、家に帰り着いてから、結構自転車が雨に濡れたからちゃんと拭いておかなきゃダメかなーと思ってたんだけど、どうやら走っている間にほとんどの水滴は乾いてしまったらしく、タイヤが跳ね上げた汚れくらいしか見えなかったんで、軽く車体の汚れを拭いただけですませてしまった。このくらいで大丈夫かな。
2006-11-16 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:30 |
| 自転車に乗っていた時間 | 1:19 |
| 走行距離 | 30.91km |
| 平均時速 | 23.3km/h |
| 最高時速 | 45.3km/h |
| 総走行距離 | 1770.6km |
| トレーニング効果 | 3.2 |
| 平均心拍数 | 143 |
| 最大心拍数 | 181 |
| 消費カロリー | 1069kcal |
今日はところにより向かい風な感じだったんで、あまり無理せずだらだらと走ってきた。往路もがんばれば1時間15分くらいで着けるんだけど、そこを1時間30分くらいかけるペースにしておくと、足の筋肉への負担がほとんどなくなっていい感じ。心肺機能中心で走ろう。
_ 自転車通勤復路
| かかった時間 | 1:18 |
| 自転車に乗っていた時間 | 1:09 |
| 走行距離 | 25.85km |
| 平均時速 | 22.6km/h |
| 最高時速 | 43.4km/h |
| 総走行距離 | 1796.4km |
| トレーニング効果 | 3.5 |
| 平均心拍数 | 149 |
| 最大心拍数 | 181 |
| 消費カロリー | 998kcal |
2006-11-17 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:37 |
| 自転車に乗っていた時間 | 1:07 |
| 走行距離 | 25.92km |
| 平均時速 | 23.0km/h |
| 最高時速 | 51.5km/h |
| 総走行距離 | 1822.3km |
| トレーニング効果 | 3.4 |
| 平均心拍数 | 138 |
| 最大心拍数 | 187 |
| 消費カロリー | 1063kcal |
今日は久しぶりに荒川CRを通らないルート。途中でチェーンが噛んだ+寄り道買物したんで、ちょっと余計に時間がかかっている。
で、ずっと買うかどうか悩んでいたんだけど、ドイターのスーパーバイクを買った。自転車用のリュックサックね。今まで使っていた、オリンピックで買った安物だけど軽いリュックだと、固定器具周りがどうにも安物ちっくで、A4ノートPCを入れていると荷物の位置がずれる感じが気持ち悪かった。自転車専用だったら、もっときちっと固定できるだろうし、固定した状態での背中の空気の抜けが良くて蒸れないだろう、と期待して購入。今まで使っていたリュックの中身もちゃんと入ってくれたんで、ほぼ今まで通りの使い方ができるかな。ポケットが小さいんでその辺にいろいろ突っ込んでいた物は整理しないとならないけど。
あと、なるしまフレンドで安売りしていたGIZA LPF-014とかいうハロゲン+LEDライトを購入。今まではCAT EYE HL-EL200をメイン、サブに小さいフラッシングライトをつけていた。現状の街中通勤ルートだったらこれで十分なんだけど、夜の荒川CRとかはこれじゃ全然見えないだろうってんで、HL-EL200と同じ充電池を使い回せるハロゲンライトを購入。ただ、500円で投げ売りされていたものだから、ハロゲンライトといっても大して使えないかもしれないけど。
あと、まだ持ってなかったズボンの裾用ストラップを購入。寒くなると長いズボンを履いて乗る機会も出てくるだろうし、一応持っておいた方がいいだろう。
_ 自転車通勤復路
| かかった時間 | 1:22 |
| 自転車に乗っていた時間 | 1:08 |
| 走行距離 | 25.82km |
| 平均時速 | 22.7km/h |
| 最高時速 | 41.8km/h |
| 総走行距離 | 1848.2km |
| トレーニング効果 | 3.4 |
| 平均心拍数 | 144 |
| 最大心拍数 | 179 |
| 消費カロリー | 983kcal |
早速今日買ったもののレビューを。まず安売りライトGIZA LPF-014は、ハロゲンライトをハイモードで使う分には、そこそこのスピードで走っているときのダイナモライトくらいの光量がある。これくらいならば、結構暗いところでもそれなりに走れそう。ただし、ハロゲンライトをローモードにしたらかなり光量が落ちるし、LEDライトは暗すぎてフラッシング用途でも使い物にならなそう。俺みたいにフラッシングは別につけていて、暗いところでだけある程度の光量が確保できればいい、って人間にはとてもいいライトだけど、普通はあんまりおすすめできない感じ。かなり暗いところでしか使ってないんで、バッテリーの保ちはまだ不明。ハイモードで2時間位保てば、まあ使い物になるかなー。
ドイターのスーパーバイクの方は、今のところ文句なし。重い荷物が入っていても、背中にきっちり固定されてくれるし、それでいて背中とリュックの間に空間がある感じもきちんと伝わってくる(密着されてべたーっとした感じがしない)。いつもは体をちょっと振り気味に漕ぐと、荷物が背中で暴れて腰に負担がかかる感じがするんだけど、ダンシングしても荷物は背中と一体化していてくれる。今までよりも容量はちょっと減ったけど、荷室が狭い状態(ファスナーを閉めた状態)でも、A4ノートPC(with リュックの中身)+文庫本2冊+ウインドブレーカー+折りたたみ傘+その他小物ごちゃごちゃたくさん、という今までの荷物は一通り全部はいるし、それでいて自転車用の快適性と機能性が増している。買って良かった。
2006-11-20 [長年日記]
_ PHPで安全なセッション管理を実現する方法に対する高木さんのコメントへのフォロー
[セキュリティ][乱数][暗号][PHP][moderate] PHPはセッションID生成にsecureな擬似乱数生成系を使用していないようだ。さすがPHPらしい駄目っぷり。
とあって、そこから人がたくさん来ているらしいんで、ちょっとだけフォロー。PHPのセッションID生成は、
sprintf(buf, "%.15s%ld%ld%0.8f", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
なんて感じで、マイクロ秒単位の現在時刻+ユーザーのリモートアドレス+combined-LCG(線形合同法による乱数2つを組み合わせているらしい。線形合同法自体は、疑似乱数生成方法としてはセキュアな方法ではないとされている)による乱数を使って生成されているんだけど、php.iniとかで、
session.entropy_file = /dev/urandom session.entropy_length = 16
とか設定しておけば、そっちも組み合わせて使われます(/dev/urandomとかが使える環境ならば)。なんで、この設定を有効にしておけば、PHPのセッションID生成もセキュアな感じになるんじゃないでしょうか。
ただわたしはセッションID生成におけるセキュリティの問題として、「マイクロ秒単位の現在時刻+ユーザーのリモートアドレス+combined-LCGによる乱数」という方法にはどの程度の問題があり、それに「/dev/urandom」を組み合わせることでどのくらい安全性が高まるのか、とかよく分かってませんが。
PHP 5.2.0の該当コード(ext/session/session.c)を貼っておきますよ
entropy_lengthとentropy_fileがphp.iniなどからやってくるsession.entropy_lengthとsession.entropy_file設定。デフォルトはどちらも空。hash_funcはsession.hash_function設定(PHP 5以降で有効)から来ていてデフォルトはMD5(値としては0)になっている。
PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS)
{
PHP_MD5_CTX md5_context;
PHP_SHA1_CTX sha1_context;
unsigned char digest[21];
int digest_len;
int j;
char *buf;
struct timeval tv;
zval **array;
zval **token;
char *remote_addr = NULL;
gettimeofday(&tv, NULL);
if (zend_hash_find(&EG(symbol_table), "_SERVER",
sizeof("_SERVER"), (void **) &array) == SUCCESS &&
Z_TYPE_PP(array) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(array), "REMOTE_ADDR",
sizeof("REMOTE_ADDR"), (void **) &token) == SUCCESS) {
remote_addr = Z_STRVAL_PP(token);
}
buf = emalloc(100);
/* maximum 15+19+19+10 bytes */
sprintf(buf, "%.15s%ld%ld%0.8f", remote_addr ? remote_addr : "",
tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
switch (PS(hash_func)) {
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context, (unsigned char *) buf, strlen(buf));
digest_len = 16;
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Init(&sha1_context);
PHP_SHA1Update(&sha1_context, (unsigned char *) buf, strlen(buf));
digest_len = 20;
break;
default:
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function");
efree(buf);
return NULL;
}
if (PS(entropy_length) > 0) {
int fd;
fd = VCWD_OPEN(PS(entropy_file), O_RDONLY);
if (fd >= 0) {
unsigned char rbuf[2048];
int n;
int to_read = PS(entropy_length);
while (to_read > 0) {
n = read(fd, rbuf, MIN(to_read, sizeof(rbuf)));
if (n <= 0) break;
switch (PS(hash_func)) {
case PS_HASH_FUNC_MD5:
PHP_MD5Update(&md5_context, rbuf, n);
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Update(&sha1_context, rbuf, n);
break;
}
to_read -= n;
}
close(fd);
}
}
switch (PS(hash_func)) {
case PS_HASH_FUNC_MD5:
PHP_MD5Final(digest, &md5_context);
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Final(digest, &sha1_context);
break;
}
if (PS(hash_bits_per_character) < 4
|| PS(hash_bits_per_character) > 6) {
PS(hash_bits_per_character) = 4;
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The ini setting hash_bits_per_character is out of range (should be 4, 5, or 6) - using 4 for now");
}
j = (int) (bin_to_readable((char *)digest, digest_len, buf, PS(hash_bits_per_character)) - buf);
if (newlen)
*newlen = j;
return buf;
}
2006-11-21 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:14 |
| 自転車に乗っていた時間 | 1:03 |
| 走行距離 | 25.64km |
| 平均時速 | 24.2km/h |
| 最高時速 | 45.1km/h |
| 総走行距離 | 1873.8km |
| トレーニング効果 | 3.6 |
| 平均心拍数 | 146 |
| 最大心拍数 | 187 |
| 消費カロリー | 906kcal |
三日間休んだ後は足に余裕があるなー。上り坂とかでも最後までケイデンスを落とさずに走りきることができる。結構のんびり気味に来たはずなんだけど、思ったよりも速かったらしい。
_ Zend Framework 0.2.0調査メモ
0.2.0のアーカイブをながめながら、気になったところをメモ。
Zend_Cacheがincubatorからlibraryに格上げされている。incubatorの頃から使っているんで、特に俺的には新鮮みはないけれども、一応まとめておく。キャッシュの利用方法を規定するFrontendと、キャッシュの格納方法を規定するBackendの二つのクラスで構成される。Frontendはクラスのメソッド呼び出しをキャッシュするZend_Cache_Frontend_Class、ファイルの読み込みをキャッシュするZend_Cache_Frontend_File、関数呼び出しをキャッシュするZend_Cache_Frontend_Function、外部(HTML)出力をキャッシュするZend_Cache_Frontend_Output、ページ単位の出力をキャッシュするZend_Cache_Frontend_Page(Outputキャッシュとほとんど同じで、キャッシュIDをURL等から自動生成する)が用意されている。BackendはファイルキャッシュのZend_Cache_Backend_File、APCを使ったメモリキャッシュのZend_Cache_Backend_APC、memcachedを使ったメモリキャッシュのZend_Cache_Backend_Memcached、SQLiteを使ったZend_Cache_Backend_Sqliteが用意されている。ただしAPCとMemcachedはタグ機能がサポートされていないんで、機能限定版だと思っておいた方がいい。ちなみに自分ではMySQLバックエンドを書いて使っている。
Zend_Configもincubatorからlibraryに格上げされている。階層構造を持つ設定情報を、PHPのstdclassでプロパティアクセスするようなインターフェースにマッピングして扱えるようにするクラス。連想配列なんかよりも扱いやすくて便利そうなんだけど、データソースとして現状でINIファイル、XMLファイル、PHPの連想配列にしか対応していないんで使ってない。Spycとかのラッパーを書いてYAML対応してもいいんだけど、それならSpycをそのまま使ったって別にかまわないしなー。
ルーターは、Zend_Controller_RewriteRouterがlibraryに格上げされている。ってのは0.1.4からだっけ? RewriteRouter自体は悪くないんだけど、これの完成度が上がる前に、自前で似たようなルーターを書いちゃったから今のところ使ってない。将来的なメンテナンス性とかを考えると、そのうちRewriteRouterに乗り換えるかもしれないけど。RewriteRouterは機能的にはあまり文句はないんだけど、YAMLで設定を書けないところが面倒くさいよなー。っつーか、Zend Frameworkは早いところYAML対応して欲しいなー。ゼロから書き起こす縛りがなければ、YAML対応するのなんて簡単だろうに。
Zend_Http_Clientは、昔incubatorで開発されていたバージョンは没になって、構成がずいぶん変更されているっぽい。Zend_Http_Requestが導入されたんで、Zend_Http_Client本体を高機能に拡張するのはやめて、Zend_Http_Client、Zend_Http_Request、Zend_Http_Responseで役割を分割するようにしたのかな。っつーことは、旧incubatorバージョンを採用していた俺のコードは、すべて書き直す必要がありそうだ……。まあどちらにしろ、Zend_Http_Request対応する必要があるから、そのあたりは大規模に書き換える必要があるけど。
ちなみにincubatorではコントローラ周りにも結構大きな仕様変更が行われつつある。ルーティング結果を保持するZend_Controller_Dispatcher_Tokenがなくなり、代わりにZend_Controller_Request_Httpが採用される。これは、従来のTokenと同様にURLから解決されたコントローラ名、アクション名、パラメータを保持するだけでなく、$_GET、$_POSTなどの入力値も管理する機能を持つ。今まではURLから解決できる値はTokenが持ち、それ以外の入力値はZend_Filter_Inputあたりを使って解決するという、中途半端な仕様になっていたんだけど、Zend_Controller_Request_Httpが導入されることによって、ようやく入力値を統一的に扱うことができるようになる。また、こうやって入力値を統一的に扱うことができるようになると、アクションレイヤーのテストなんかで仮想的なRequestを渡してテストを実行できるようになったりするんで、そういう意味でも便利。ちなみにZend_Controller_Request_HttpはZend_Http_Requestを内部にもっているんで、その辺が前段落の話とつながってくる。ちなみに俺ルーターはすでに同様の機能を持っちゃってるのが、今後Zend Framework本家版に合流するのを難しくしてしまっている。
Zend_Aclはまだincubator止まりだな。これはいつになったら格上げされるんだろう? ちなみにZend_Aclの構成としては、アクセス制御される対象物を管理するACL(Zend_Acl。$acl = new Zend_Acl();)と、アクセスを行う実行者グループを管理するARO(Zend_Acl_Aro。$aro = $acl->aroRegistry();)があり、まずAROとして実行者グループを登録し($aro->add('somegroup'); // somegroupというグループを登録。$aro->add('someperson', $aro->somegroup); // somegroupに所属するsomepersonを登録)、続いてACLにどの対象物に対してどのAROがどういう権限を持つか設定していく($acl->deny(); // デフォルトは拒否。$acl->someobject->allow('somegroup'); // someobjectという対象物に対してsomegroupのアクセスは許可する。$acl->someobject->somepart->deny('someperson'); // someobjectの一部であるsomepartに対してsomepersonのアクセスを拒否する)。権限は基本的には許可(allow)と拒否(deny)だけど、対象物+アクションに対して権限を設定することもできる($acl->someobject->deny('somegroup', 'hit'); // 叩いちゃダメ)。で、実際にアクセス権があるかどうかはvalidメソッドでテストする(if ($acl->someobject->valid('someperson') { // アクセス権がある } )。
ZFormは進展なしな模様。っつーかいまだに命名規則すらZend_Formになってないし。
Zend_Json_Serverとかいうものがincubatorに入っているな。っつーかこれは、Zend_Serverってのが増えた中の実装の一つか。XMLRPCサーバーとかSOAPサーバーとかを書くためのZend_Serverってのができて、その実装の一つとしてJSONサーバーがあるのね。コードを読んだ限りでは、$_REQUEST['method']で実行したいメソッド名を渡し、$_REQUEST内からメソッド引数を抽出し、サーバーに登録されているメソッドだったらそのメソッド+引数を実行。結果はapplication/jsonとして出力するって感じらしい。こういう仕様のJSONサーバーって、どこかで規格化されていたりするのかな? RESTサーバーの返しはXMLになっている模様。SOAPとXMLRPCはまあちゃんと規格があるからコードは読まなくていいだろう。
Zend_Sessionもincubatorに入っている。ネームスペースの導入、バリデーションの共通インターフェース、時間もしくは回数による有効期限設定あたりが主な拡張かな。セッションハンドラーを拡張するインターフェースは用意されているけれども、まだハンドラーの実装はない模様。有効期限については、1回有効期限のセッションを利用すれば、RoRとかのFlashみたいな使い方ができるな。
ってあたりを押さえておけば、0.1.4から0.2.0へのアップデートに関してはだいたい大丈夫かな? その他の修正やアップデートに関しては、実際に使ってみた何かあったらチェックしよう。
_ 自転車通勤復路
| かかった時間 | 1:14 |
| 自転車に乗っていた時間 | 1:04 |
| 走行距離 | 25.79km |
| 平均時速 | 24.1km/h |
| 最高時速 | 45.5km/h |
| 総走行距離 | 1899.6km |
| トレーニング効果 | 3.6 |
| 平均心拍数 | 149 |
| 最大心拍数 | 181 |
| 消費カロリー | 990kcal |
2006-11-22 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:36 |
| 自転車に乗っていた時間 | 1:22 |
| 走行距離 | 34.29km |
| 平均時速 | 21.4km/h |
| 最高時速 | 49.7km/h |
| 総走行距離 | 1933.9km |
| トレーニング効果 | 3.4 |
| 平均心拍数 | 145 |
| 最大心拍数 | 181 |
| 消費カロリー | 1019kcal |
今日は昼から麻布で打ち合わせだったんで、心拍計だけ外してサイコンは着けたまま自転車で移動してしまった。んで、サイコンのデータ分は麻布までの往復が追加されてしまっている。心拍系の方は往路のみのデータ。ちなみに渋谷駅前から麻布十番まで自転車でだいたい20分くらいだった。行きは六本木通りから、帰りは明治通りを通ってきた。
_ 自転車通勤復路
| かかった時間 | 1:26 |
| 自転車に乗っていた時間 | 1:14 |
| 走行距離 | 25.80km |
| 平均時速 | 21.0km/h |
| 最高時速 | 37.3km/h |
| 総走行距離 | 1959.7km |
| トレーニング効果 | 2.6 |
| 平均心拍数 | 135 |
| 最大心拍数 | 170 |
| 消費カロリー | 975kcal |
2006-11-24 [長年日記]
_ 今日はバイク
しばらくバイクに乗ってなかったんで、今日はバイク。寒くなってきたんで、しばらく間が空くとエンジンのかかりが悪いな。
そういや今日も麻布方面に行ってきたんだけど、自転車よりもバイクの方が微妙に時間がかかることが判明。このあたりの道路の混み具合なら、5km以内だったら交通手段としては自転車の方が上か。
そういやそろそろジーパンだと腿のあたりの冷たさがかなり厳しくなりつつあるな。上着とグローブは冬でも耐えられるものを着ているけど、そろそろ下も何か考える必要があるかな。寒い日はレインウェアの下とかを着ておいた方がいいのかな?
2006-11-25 [長年日記]
_ 自転車+野球
| かかった時間 | 6:12 |
| 自転車に乗っていた時間 | 1:47 |
| 走行距離 | 41.49km |
| 平均時速 | 23.1km/h |
| 最高時速 | 48.5km/h |
| 総走行距離 | 2001.2km |
| トレーニング効果 | 3.9 |
| 平均心拍数 | 125 |
| 最大心拍数 | 187 |
| 消費カロリー | 3315kcal |
今日は今シーズン最後の草野球が江北橋のそばのグラウンドであったんで、往復は自転車に乗った。距離的にはちょうど良かったんだけど、バットを含めた野球道具を持って自転車に乗るのはうざいな。最初リュックにまっすぐ差して乗ったら、顔を上げるともろにヘルメットにバットが当たった。しょうがないんで斜め差しに変えてみたんだけど、それだとすり抜けとかでバットがサイドミラーとか電柱とかに当たらないか気になってしょうがない。もっと深いリュックとかがあればいいのかな。
ちなみに野球に関しては、今回もあまり思い出したくない内容だった。どうやら肩はもう治る気がないみたいだな。あと、やっぱり野球はいまいち運動量が少ないなー。本来のバックアップとかの動きとかを真面目にやれば違うだろうけど、だらだらとした草野球の動きだと、運動している時間が非常に短い。守備とか走塁とかでダッシュしたときだけ一時的に心拍があがるけれども、すぐに100程度まで落ちてしまう。といった感じだったんで、運動量をちょっと増やしておこうと、帰りはちょっと遠回りして帰ってきた。ただ、戸田橋〜秋ヶ瀬橋あたりを走っているところで、かなり薄暗くなってしまったんで、その辺からはスピードが出せなかった。この間買ったそこそこ光量のあるライトをつけていたんだけど、それでも30km/h出す気にはなれない。路面の荒れも見にくいし、車止め周辺も罠がありそうで行きにくい。
でまあ、なんのかんのでそれなりの時間運動していたことになるんで、トータルの運動量は結構いったみたいだ。ようやくサイコンの総走行距離が2000kmを超えた。Lupoの分だけじゃなく、前に乗っていたMTBルック車の分も足されてあるけど。
2006-11-29 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:21 |
| 自転車に乗っていた時間 | 1:05 |
| 走行距離 | 25.62km |
| 平均時速 | 23.5km/h |
| 最高時速 | 47.8km/h |
| 総走行距離 | 2026.8km |
| トレーニング効果 | 3.2 |
| 平均心拍数 | 142 |
| 最大心拍数 | 181 |
| 消費カロリー | 991kcal |
_ 自転車通勤復路
| かかった時間 | 1:07 |
| 自転車に乗っていた時間 | 1:03 |
| 走行距離 | 25.78km |
| 平均時速 | 24.5km/h |
| 最高時速 | 49.5km/h |
| 総走行距離 | 2052.6km |
| トレーニング効果 | 4.7 |
| 平均心拍数 | 156 |
| 最大心拍数 | 186 |
| 消費カロリー | 983kcal |
2006-11-30 [長年日記]
_ 自転車通勤往路
| かかった時間 | 1:25 |
| 自転車に乗っていた時間 | 1:09 |
| 走行距離 | 25.60km |
| 平均時速 | 22.2km/h |
| 最高時速 | 42.2km/h |
| 総走行距離 | 2078.2km |
| トレーニング効果 | 3.3 |
| 平均心拍数 | 137 |
| 最大心拍数 | 180 |
| 消費カロリー | 906kcal |
うひゃあ、雨だよ、雨。今日は降っても0mmクラスだと思ってたのに、結構ちゃんと降ってた。帰りにはやんでろよ。
_ 1470.net系サーバー設定をいじりました
なんだか最近ものすごく重くなっていたようなので、各種設定をいじりました。DBの分散設定を大規模に変更(スレーブの処理負荷を大きく)し、目立って処理時間がかかっていたSQL文対策のインデックスを張り、fastcgi/PHPの起動オプションを多少変更し、MM/Memoの類似検索をカットしました。これで何とかなるといいんですが。
_ 自転車通勤復路
| かかった時間 | 1:14 |
| 自転車に乗っていた時間 | 1:02 |
| 走行距離 | 25.79km |
| 平均時速 | 25.0km/h |
| 最高時速 | 50.1km/h |
| 総走行距離 | 2104.0km |
| トレーニング効果 | 3.8 |
| 平均心拍数 | 153 |
| 最大心拍数 | 185 |
| 消費カロリー | 1022kcal |
今日は昼すぎに300円台のコンビニ弁当を食ったきりだったんで、帰り道の途中で猛烈に腹が減って足に力が入らなくなった。カバンに入れてある緊急用の一口羊羹を食って、しばらくだらだらと走っているうちに復活。復活まで5〜10分くらいはかかるみたいだな。
そういや心拍計をつけはじめた頃は、最大心拍って測ったように181だった気がするんだけど、最近180台後半の最大心拍が記録されるようになってきたな。これは最大心拍が伸びてきたってことなんだろうか? それとも単に頑張って漕ぐようになったってことか? 最近多少頑張ったところで、大して後には残らないことが分かってきたんで、結構踏むようになってきたんだよなー。


