2007年02月13日(火)この後は夜ごはんタイム!

つまんない技術的なとまむさんのサイト修正のメモの時間がやってまいりましたよ?とか言う事で誰も望んでいない内容ではあるがきちんとメモとしては書いておく。
まずはshtmlになっていた日記のログファイル。それから同様の状態であった日記の表紙をPHPに変更した。ログファイルの方は元々限界まで記述を絞ってたから
単なるリネームで十分にオッケー。って言うかshtmlと拡張子で銘打っておきながらssi関連の記述は一切なし!とか言うへんちくりんな状態だったんで。

問題なのは日記の表紙のshtmlファイル。って言うかindex.shtmlに関してさてどうしようかと。まぁssiをふんだんに使っているからそれは各種phpのコマンドに
置き換えてしまえばそれでいい訳なんだが問題なのは予定表のプルダウンメニュー。これssiでincludeして表示していた訳なんだがincludeしていた元のファイルは
perlで出力させてた内容のそれ、と。phpでreadfileだとか使ったら「スクリプトの内容」がズラズラズラーっと読み込まれてしまう。それ違う。あくまでも
とまむさんが出力させたいのは「出力結果」であって「ファイルの記述」では無いんだよと。…10秒ほど考えて結局iframeで読ませる事にした。
やり方としては「日記一覧」の方で既にやっているから特に問題もなし。またCSSを本当に大幅に書き換えなければいけなくなりますがそんなに苦労する事でもないし。

と言う事でプルダウンメニューに関してはiframeで解決と。あとはカレンダーか。カレンダーの方はphpカレンダーを改造した物があるからそれを使う。
既存のスクリプトをそのまま使ったりはしない、それがとまむクオリティ。なんらかの改造はしちゃってるよな。そう言う訳でphpカレンダーは
「あいねこの館」と言うサイトでソースが公開されていた物を拝借。ただこれが割と曲者。日付の出力に関して例えば30日までだったら30日きっかりまでしか
tdを出力しない。カレンダーとしては「週末までは確実にtdを出力してほしいのよ、テーブルって言うのは」とか思ったんでややげんなり〜的なお話しで。

テーブルの背景をオレンジ、tdの背景をクリーム色。そう言う指定にしているのが俺の配色のやり方。今年の2月のカレンダーは28日まで。28日は水曜日。
そこでtdの出力が止まるから綺麗に枠が並ばずに背景のオレンジ色が顔を覗かせてさしずめ「29日30日31日」が入りそうな部分がオレンジ色に染まってしまう。
なんだこりゃ、とか思ったが。そこはきっちり土曜日分の枠までtdを出力してくれよと思う訳なんですが。さてどうするか〜。とか思って3分程度考えて解決。

PHPの曜日取得は日曜日で「0」土曜日が「6」と言う事で取得される。そう言う訳で今月末の曜日を算出する。PHPのmktime関数を使って
「mktime(0,0,0,$month+1,0,$year)」と記述する。「$month+1」と書く事で「翌月」の指定になる。「$month+1,0,$year」は「月、日、年」と言う順番。
仮に「月は3月」「年は2007年」とするとそのまま読んだら「2007年3月0日」になる。そんな日付は存在しない。この場合は「3月1日の1日前」
と判断され「先月の月末」として計算される。だからこの場合「2006年2月28日」と言う指定をしているのと一緒になる。閏年だったら2月29日。

これで「1ヶ月先の0日→そんな物はないから1日戻る→今月末として計算される」訳で。これで「今月末の日付」が出力された。あとは該当する日付の曜日。
それを算出する。date関数を使って「date('w')」と記述すればオッケー。2007年2月の末日、つまり28日の曜日がこれで算出される。今月末は水曜日。

出力に関しては数字で出力される。日曜日で「0」土曜日が「6」と言う事でつまり水曜日は「3」になる。今回出力される数字は「3」になる。
あとはカレンダーの配置を考えて「今月末が日曜日だったら土曜日までに必要なtdの数は6」「月曜日だったら5」と言う事で「6−月末の曜日」と言う式が成立する。
今月末は水曜日なので「6−3=3」と言う事で「td/td」の組み合わせは3つ「付け足す」必要がありますよ?と言う事で出力内容をちょろっといじって
月末の方に3つ「付け足して」出力される様にする。これで最後までキッチリとtdが出力されて整然としたテーブルのカレンダーが出力されました。

と言うやり方で終了。それとは別の問題として「今日の日付のtdだけ色を変えたい」と言う話。このPHPカレンダーでは変えられないのな。また中身をいじる俺。

まずは「今日の日付」を取得する。今日なら13日。「date ('d')」で取得する。カレンダーの日付出力はforを使っての繰り返しで
1日から28日までだったら28回繰り返して数字がカウントアップで「1、2、3、4、5、6、7…」と日付が出力されていく。そこで日付の数字を精査して
先程取得した「今日の日付」と「出力される数字」が「一致した場合」そこの色を変えましょう、と言う風に書いた。それ以外は変更しなくていい訳だから

「もしも(出力数字=今日の日付) なら [表示 色加工した日付] そうでなければ [表示 色加工してない日付]」となる。構文を意訳するとそんな感じ。

そう言う訳でこれで無事に俺の意図した通りのカレンダーが出力された。こう言う風にどんどん蹂躙するかの様な改造をやってしまう、それがとまむクオリティ。

と言う事で日記のPHP化もこれで完了。あとは日記のログに関してさすがにこれは古いだろう…的な時代の物をlzhで圧縮をかけてアップロード「しなおす」俺と。
手順としては「拡張子をphpにリネーム→サーバからローカルに日記ログをダウンロード→年代別にしてlzhで圧縮→圧縮したファイルをアップロード」と言う順番。
もちろん「圧縮した内容の『圧縮前の日記ログ』はサーバから消しておきますが。日記を開始したのが2000年。2000年から2003年までの日記ファイルは
lzhで圧縮した物をサーバにアップした。もちろんローカルもその状態。一旦解凍してみてバイト数が「圧縮前」と「圧縮→解凍した物」で完全一致してる事を確認。
ファイルの破損も無い、と言う事で圧縮完了。テキストは圧縮すると圧縮前の半分程度にまでサイズが小さくなるから圧縮が大変有効になってくる。
そもそもお前は長文の日記を書きすぎなんじゃボケ!みたいな事になっているから特に効果がある。2003年の1年間の間に書いた日記の圧縮前が4メガバイト。
圧縮をかけて2メガバイトにまで圧縮された。およそ半分か。この調子でどんどん圧縮。スペースを余計なログで使用容量がかさむ事も少なくなりました。

似た様なやり方で競馬予想、それから家計簿のログファイルも圧縮。そう言う事をやって気分スッキリ。でも見た目は全然変わらないんだよね。まぁね。
見た目は全然変わらないけどshtmlは案外サーバに対して負荷の原因となるから可能であるならばphpにしてしまった方がいい。そっちの方が負荷が少ない。
perlとphpだったら同程度だと個人的には思っている。ややphpの方が軽いとは思うが最近はmod_perlとかsuexecとか使ってるサーバも増えてきてるんで。
結局はサーバ管理者の腹の中、と言う風に思っているが。案外shtmlを使える無料サーバと言うのが少ない。例えばaaacafeはperl使えるphp使える
けれどもssiは使えない、って言う状態。案外ssiは嫌われてるな。拡張子をshtmlにして色々やっちゃいましょー、と言うのは出来ないサーバの方が多いわ〜。

なんて思ったんでちとこれは今使っているサーバには何の不満も無いけれど、何の不満もないからこそ「負荷を軽減したいなぁ」と思う訳ですが。
あー要するに「大容量のファイルをドカドカ掲載してバンバン転送量使う様な?帯域とか知ったこっちゃねぇよバーカ!」みたいな使い方をするのか、あるいは
「このサーバは大事に使わなければ…」みたいな使い方をするのか、と言うのは結局サーバ提供側、個人あるいは法人、その辺りの「態度」なんだろうなぁ。

そう思った。要するに「中の人」と言う事で。俺が前に使ってた有料サーバの人間が俺ぶっちゃけ「あいつら嫌い」って事で気に食わなかったんで
もう転送量とか割と使いまくってやるー!的な事でガンガン容量も使ってた。ぶっちゃけ1人で1ギガバイト使ってました。容量、転送量無制限だったんで。
おぉおぉ無制限言う以前にお前らが気に食わないからガンガン使っちゃるけんのぉーッッッ!!みたいな事で使ってた。いやぁ気分爽快だった。
他人との共有サーバですよ?とか言われたら「中の奴らの存在がかったるいけん共有の人間も俺と共闘しようや、のぉ?」とか言って焚きつけていたけど。当時は。

今?今は本当に快適だなぁとか思ったが。正直言ってここまで快適なサーバでサイト運営が出来ると言うのは名誉。誉れ高いわ。孫にも自慢出来る。居ないけど。
曾孫にも自慢出来る。居ないけど。なんて言うか回線からそしてサーバスペックから色々と快適やわ〜☆みたいな事を思ったそんなとまむさんですと言う事で。

2007年02月13日(火)20時17分37秒