2004年1月1日(木)
新年の挨拶はいつものとおり。
毎年のように新年の実感がなくなってくるというのは家族ともども同じらしい。
そりゃそうだ。
新年前に風呂に入った人は誰もいない。
毎日みんな午前まで起きている。
さっきまで大掃除していた。
姉はどこかにお出かけ中。
さらに極めつけ。
この時間になってもおせちを作っている(核爆)。お母さん、ご苦労様です。
さて、正月だというのに、深夜アニメが健在。
TVKも憎いことをしてくれます。1月1日午前1時から、レギュラーどおりアニメ放送(笑)。これでは早く寝られないじゃないですか(いつも寝てないけど)。
くだらない番組を垂れ流しにする大手民放よ、見習いなさい。これが本当のテレビ局というものだ。
フジテレビも、こういう時こそGunslingerとR.O.Dを早い時間にやりなさい(爆)。
就寝時刻はいつもとほぼ同じの2時30分。
起床時刻は少し早めの9時30分。お雑煮を食べたお陰で、少しはお正月の気分。
11時前、毎年恒例だが明治神宮へ向かう。のんびりと向ヶ丘遊園駅へ。新春パスネットを売る小田急は健在。
混雑率100%の急行で代々木上原まで。久しぶりの休日の急行は速くてなかなかいい。
何気なく見ていたら、向かいのホームに209系。そうか、となると203系や6000系もそろそろやばいかもしれない。息のあるうちに撮影をしておきたい。
参宮橋駅で下車。今年はキリスト教の宣伝も健在のようで、やはりお正月なのだという感じ。出店も相変わらずだ。人はそれほどでもなく、午前出発のメリットを感じる。
それにしても暖かい一日。空は曇り空だが、冬なのだろうかと思えるほど。
あっさりと今日もお参りを済ませた。今年もやはりロープによる仕切りは外されており、方針が完全に変更されたことを示していた。
帰りに酒饅頭を買って食すのもやはり同じ。昨年は寒くて寒くて立って食べているのがつらいぐらいだったが、今年は全然でやはり冷え込みは弱い。
それにしても、毎年毎年、ここで食べていく人がなぜか多いんだな、これが。たこ焼き6個500円とか豚汁一杯500円とか言う、トンデモ価格がはびこっていても、なぜか買う人がいるのだ。明治神宮の七不思議のひとつに加えておこう。
お参りはこれで終了。
これから私は学校へ向かう。私は研究が遅れ気味なので、人よりも多めにやっておかないと、いいかげんヤバイ。
予定では歩いて初台まで向かい、調布へ行く予定だったのだが、トイレの問題があって結局参宮橋駅から。150円でトイレを買ったことになる。トイレを済ませて跨線橋を駆け上がるとちょうど電車が到着したところで、効率よく下北沢まで先行。ここで家族と離れて井の頭線に乗り換える。これまたすぐに3000系が来て、久々の外遊気分。それにしてもガラガラだ。
明大前の乗換もやはり久しぶり。新しくなってホームを眺める間もなく、すぐに6000系の急行が到着。特急が後続で来るはずだったが、着席の誘惑に耐え切れずにそのまま乗った。110km運転を味わいたかったが、そのうち機会があるだろう。
あっさりと調布に到着の後、パルコへ。福袋には合えて手を出さずにおく。福袋は大概厄袋だ(おいおい)。
で、さすがに今日は人が少ない、街を歩く人の数が。
昼食がまだなので、マックに入った。なぜかかなりの混雑。ただ、フォーク並びで並んでいたところを高校生に割り込みされた。結局別の列に並ぶ羽目になり、さらにそのレジのお姉ちゃんの動きの鈍いこと鈍いこと。で、15分待ちを食らった。その15分待ちの挙句に頼むものといえば・・・
ハンバーガー1つ。
時間価値的に釣り合いません。
2時ごろ学校に到着し、警備員に鍵を開けてもらって校舎に入る。
研究室内には同級生が一人いるだけで、少し寂しい。
ただ、お正月を家でだらだら過ごすよりは刺激的で、一通りなぜその評価方法を取るかということを書き連ね、プログラムの改変作業を一気に進めていく。面倒な作業だが、非常に重要な作業でもある。
改変作業とファイルの書き出し、バグつぶしを終了し、ほっとしたところで7時20分に離脱。継承レベルが2段階になったが、非常にきれいにまとまった感じで個人的には満足。
ガラガラの京王線に乗って稲田堤で下りたのはいつも通り。しかし、自転車は当然向ヶ丘遊園。
実は帰宅ルートは、稲田堤あたりからバスを使おうと目論んでいた。
しかし・・・。よく考えたらルートは向ヶ丘遊園から府中街道経由、土淵のあたりで長尾の方に向かうルートだった。
そう、そんなバス路線はなかった。
さらに言えばそもそも、稲田堤駅から出ているバスは、1月1日から3日まで、完全運休、だった・・・。
当然のように稲田堤駅から南武線に乗って登戸へ。
登戸からは歩いて向ヶ丘遊園駅へ。
そこから自宅まで自転車で。
帰ってからはどうということもない普通の日々。
なんか疲れた。
今年も厄から離れられない予感がしてきた。気をつけないとまたやられるかも。今日すでに小さい厄が3回。
教授に送る年賀状の住所の場所が間違っていた・・・、何て事まで早々に・・・。
何か、明治神宮で厄を貰ってきているような気すらしてきた。
2004年1月2日(金)
この日は結局学校に行かなかった。何か行くタイミングを逸したという感じ。こういうのは私的にはあまり好きじゃない。
この日結局何をしていたのかというと、PAGERANKについて調べていた。今までも調べているのだが、それをさらに調べていろいろと。昨日に私のサイトにもランクが付き、トップと日記と物置場に2が与えられている。外部リンクを集中させている日記があり、ここから各日記に1が与えられ、上位に還流してトップに2が与えられ、そしてトップから5/8が与えられる物置場に集中する、という構図のようだ。
そうしたことをいろいろと調べつつ、PAGERANKに無意味なcgi登録の検索エンジンを次々と削除していく。そしてHTMLで書かれているエンジンへの登録をさらに推進していく。
わざわざ削除していくところに、個人的な思いがある。実はあまり見て欲しいわけではないということだ。検索エンジンから来てダメだった場合に比べ、ディレクトリ型で裏切られる内容というのは個人的にも好きじゃないし、たいした報酬(PAGERANK)もなくcgiで楽々に管理しているようなエンジンには正直賑って欲しくないということがある。
あと、個人的なことを言うと、理系的な探求心で、グーグルの秘密に魅入られてしまったというのが大きな理由なのかもしれない。
グーグルの仕組み、その技術の一つであるページランクやアンカーテキストマッチ、サイトテーマにリンクポピュラリティ、さらには正しいHTMLを書くことによる評価、それらが私のサイトを利用することでどのように変わっていくのか、いや、変えていけるのか。そして検索結果にどのような影響があるか。
個人的には非常に興味があるのです。実はアクセス増なんて全然関係ない。だから、それが理由でグーグル検索で期待した内容じゃない私のサイトが出てきてしまったら、とても申し訳ない気がする。それでもいろいろとやってみたい。
登録してアクセスを増やすとかそういうことじゃないんです。
どのような方法で評価されているのか、それがとても興味があります。だから、今日もまた意味のない削除と登録を繰り返している。
私、本当に卒論生なのでしょうか(爆)。
サイトの充実にも励みますので、こんなんでよければ暇つぶしに付き合い続けてくださいね(見ている人がいれば、ですが)。
今日は学校に行きそびれ、適当に時間を潰していった。母と姉は午前から福袋を買いに新宿に出かけていった。
夜はリクエストに答えてマージャン。3人というのも寂しい。ただ、何気に会話が弾むのが我が家のマージャンの傾向のひとつで、特にいい手で上がると舌好調、という具合になる。3人がそれぞれ1回ずつトップを取って終了。
そしてこの日もその他はどうということもなく。
寝る時刻が遅くなる傾向も変わらないのだった
2003年1月3日(土)
スタイルシートでのデザイン記述方法に一つの光明が見えた。
紹介する『Articles』には、スタイルシートを用いてテーブルの記述をする方法や、Netscape4.xにスタイルシートを読み込ませない方法が記述されている。これを読み込めば、それなりにデザインを構築できるだろう。なるほど、テキストの回り込み表示で擬似的に(実質的に)テーブルを作成するというわけか。面白いものだ。それがいわゆる、『2段組』という手法だとは。ある意味逆転の発想ともいえるわけで、ここあたりは頭の回転をうまく使えばいろいろなことができそうな気がする。そうか、テキストの周りにテキストを回りこませる、か。
CSSの奥の深さを知らせていただいた思いです。
さて、今日も学校を休むことにした私。
午後からは麻雀に興じる。3人麻雀だが、私にはいい手は回ってこないので、ひたすら「メンタンピン」の王道をひたすら行くことになる。王道を走るものは常に強く、手がよくなくても割合あっさりとあがれるため、今日は私の一人勝ちになった。やっててつまらなくなる時もありますが(笑)。
年賀状を書いたところで、今日のお出かけへの準備を始める。
自家用車で横浜へ。車を使うのは1ヶ月ぶり。ますます車を使わなくなりつつある我が家だが、横浜だけは例外で、電車という選択肢そのものが存在しないような気がする。なぜならば、車の方が安くて速くて快適、という状態で、速いというおいしさを取ってしまっては、電車は全くどうしようもない。第三京浜の高速料金の安さは格別なので、どうしても車になってしまうのだ。駐車料金を含めても、元が取れてしまうような気すらする。
今日も府中街道から南武沿線道路へのルートだったのだが、信じ難いことに南武沿線道路が大渋滞。津田山駅の手前から長々と渋滞になっていた。これではたまらないので、Uターンして、久地駅付近から分岐する府中街道の旧道を行く。府中街道はバイパスとの合流地点でもガラガラで、こちらは非常にすんなり。かなり拍子抜け。
相変わらず分かりにくい第三京浜の入口をすんなりと抜けて、空いている第三京浜を行く。これが東名だったら帰りは悲惨なことになるが、第三京浜はこういうことからは完全に無縁で、非常に喜ばしい。
そのまま横浜の首都高へ突っ込む。すさまじいカーブと合流を繰り返すので、個人的には本当に神経を使うが、ここを比較的落ち着いて運転できるようになったことを考えると、多少は運転レベルが上がってきているのかもしれない。
新山下で下りて、横浜市の地下駐車場を目指すのだが、いつも降りている場所と違うため、どうもとまどう。一方通行路が多いので、目的地になかなかたどり着けないのだ。ぐるぐると回って、やっとのこと駐車場に入れた。これが5時50分ぐらい。
中華街は大賑わいで、GWレベルだろうか。これは失敗したかなと思いつつ、結局は重慶飯店新館から。ここは40分程度の待ち状態となっていて、やはりありがたくない気がする。久々に他の店でも食べたい気がするし。
そして萬珍樓にも行ってみたのだが、ここは1時間30分待ち程度。やはりメインストリートは一等地で過大評価になっているので、混雑のレベルが半端じゃない。
ここを少し外れて、重慶飯店別館ヘ向かった。ここを聞いてみたところ、すぐに入れる。ありがたい。店内も比較的空いていて、メインストリートの店を外すことに必要性を改めて感じさせられた。
そして5品注文。かに玉、麻婆豆腐、あんかけ焼きそば、辛いスープ、炒飯。また、随分とシンプルなものを頼んだものだ。
しかし、久々にいいものを食べさせてもらった感じがする。重慶飯店新館では久しく食べていなかった極上の香辛料の使い方だ。このおいしさ、懐かしい。特に、辛い麻婆豆腐は久々に食べたな、と思った。やはり料理長の腕によって違うのだ、と思った。それにしても、重慶飯店の別館って、確か団体バスコースだったはずなのに、ここまでおいしいなんてあまりにも意外。やはりメインストリートを外した方がおいしいということなのかもしれない。
満腹で、会計は8400円程度。この値段で本格的な中華料理を食べられるならば全く文句なしだ。
腹をこなしながら元町へ。MM21線の開通を喜ぶ街の表情を見ながら、バリアフリーで歩きやすくまとめられている元町をゆったりと歩く。さすがにおしゃれ。閉店している店が多いのはさすがに仕方がない所か。
しばし歩いて途中の建物の中でトイレを済ませてから港の見える丘公園へ。急峻といえるかというと微妙だろうが、一気に上っていく。公園は意外に早く目の前に姿を現した。高度はちょっと足りないが、展望はなかなか。しかし、ガスっていた。やはりここのところの晴天と、今日の暖かさが影響しているのだろう。こう暖かいお陰で散策も楽なわけだが、やはり雨上がりの日にいくのがベストだろうか。
公園を歩いて外に。贅沢な家の数々が恐るべしとしか・・・・。グルっと公園を一周した後は山下公園へ。氷川丸を見て今日の散策は一通り終了した。それにしても、山下公園と道路の間にあった壁みたいなもの、いつ取り払われたのだろうか。
駐車場で回数券を買って精算、1800円(3時間36分)が駐車料金。9時25分の出発。
帰りはコスモワールドやランドマーク、クイーンズスクエアなどを車窓から見て、一般道経由で第三京浜まで。第三京浜は帰省ラッシュなどものともしない空き具合。いつも快適だ。
10時25分には家についていた。1時間もかからないとは本当に優秀だ。
この日も特に研究の進展はなし。正月は十分遊ばせて貰いました。あとは研究あるのみです。
2004年1月4日(日)
昼食後、学校へ。
明日からようやく学校も開放となるわけだが、相変わらずエラーが出る鍵の状態。何とかならないらしい。やる気なし。
部屋に入ってまずはやることを書き出してから作業を始める。やることをあらかじめ書いておかないと、やることが多すぎて頭が混乱してしまうからだ。量的にはそれだけ多いというか、パラメーターの数がすさまじい数になっているということもある。
いろいろと改変作業をしたわけだが、ソースがきれいになってきたということもあって、かなり簡単に改変作業ができるようになった。これは素晴らしい。やはりたくさん書く事は必要なのだった。
2時から11時まで学校滞在。粘って粘って帰宅。少しばかり冷え込んできていて、ここ数日よりは引き締まる感じがする。それにしても、学校で勉強を全力でやっていくだけでも、かなり消耗するな、と。体が怠け状態だったのが、あっという間に貯金がなくなる感じで、尋常じゃない。
それにしても、大学がレジャーランド、何て勝手に一義的な定義をして欲しくないものですな、全く。
ところで、Googleツールバー、かなり使えます。既にブロックした広告の数は軽く200を超えてしまいました。
他につかえるのが、バックワードリンク、つまりそのページがどこからリンクされているかを調べることができる機能です。PageRank4以上のページに限られるみたいですが、そこにリンクしているサイトを探すということをやると、かなりいろいろなページが探せる。今まで適当に探す作業がありましたが、関連サイトをこういう方法で探すというのはなかなかいい感じです。
あと、J.O.Yのディレクトリもかなり使えますな。
個人サイト限定というのが、無駄なページをクロールする必要がなくてことさらいい。おまけに説明文は自薦のサイト管理者が書いたわけだから、結構参考になる。うむうむ。
検索の幅が広がると面白いものだ。
2004年1月5日(月)
起床9時半。ゆったりと時間を過ごして昼食はもち。とりあえずポートの閉じ方が分かったので、一安心。
セキュリティについて考えて見て下さい
とりあえずここのページでやっている事は最低限やっておいた方が良さそうです。但しクライアント系Windows限定です。サーバー系統はかなり面倒なことが多そうですが、資料が多いので、気になる人はがんばって探してください。
2時前に学校へ向けて出発する。久々に自転車で高速アクセス。学校に着いたら、主な面々は全て出揃っていて、さすがにびっくり。
気合を入れて研究をやっていく。プログラミングを一通り。機能を追加していかなければならないので、どんどん拡張させていく。ある程度拡張に強いように作ったので、何とかついていっているけど、このままだとまたも解読性がおちてきて、最初から作り直し、というオチになりはしないだろうか、と考えてしまう。
二つ目のクラスを追加しようとして・・・。出力される値が正しくならない。
これの原因を、値を渡した関数の問題と考え始めたのがケチのつき始めで、引数の変更やら静的変数にしたり、ポインタをどうこうしてみたりとやってみたけれど、完全に自爆。翌日になって分かったのだが、完全に違う方向を向いていた。もっとよく見なければいけない。
この日は1時15分まで粘ってから帰宅への準備。既に電車は走っておらず、自転車で電気を落とした調布駅を見つつ、寒い家路に着く。食事にありつけたのは1時45分。夕食も当然のように遅く。就寝時刻は4時30分までずれ込んだ。
研究付けの日々はまだまだ続く。
2004年1月6日(火)
起床9時30分。
今日は10時50分頃、家を出発。
11時40分からお願いされていた被験者実験、実験後はラーメン屋、しらたかで。久々のしらたかラーメン、辛味噌味で温まる。800円とちょっとした贅沢。
研究室に戻り、全力で研究の今後。ようやく出口が見えてきたが、やる量は半端じゃなく多い。この作業量をいかにして完成させるのか、それが今後の大きな課題となっていくのだろう。それにしても、現在のプログラムをヘッダーファイルとかで分割して保存して使っていく方法、どうやるんだろう。
昨日の問題のプログラムは、for文の繰り返しで使う自動変数を重ねて使っていたことが原因だった。問題が片付いたので、それをちょこちょこと拡張し、一通りの作業を終了。ただ、まだまだやる事は山のように残っている。
明後日までの宿題になっている、授業のレポートの完成を目指して勉強を開始。恐ろしく難しい科目で、フーリエ級数展開とかを基礎レベルにして、A/D変換やら、サンプリング定理などを理解して、さらにA/D変換とかいろいろと理解しなければならないわけだけど、全く理解不能。何とかならんものか。
ネットを巡回して、いい説明を見ながらプリントに順々に書き込む作業を延々と続ける、と・・・。ネット上の記事はさすがに理解しやすく書かれていて、授業とは大違いだ。
A/D変換あたりなんかは、実は画像や音の問題にも関連していることがわかる。A/D、つまりアナログからデジタルへと変換することを意味するわけだが、連続データから離散データに移る過程で、どのサンプリング周波数をとるかという問題。サンプリング周波数を小さくとるととてもじゃないが波形がぐちゃぐちゃになって、再現性がなくなってしまう。かといってサンプリング周波数を大きくするとデータが爆発的に増えていく、と。
つまり、デジカメの画素数が大きいか小さいか。大きければ再現性は高まるがデータの処理が大変になる。色数が多くなってもやはり同じく。CDなどの再生はさらに高周波分が入っているかいないか、サンプリング定理通りに考えると、人間が聞き取れる周波数の倍の周波数で処理しなければならないということになる。そうしないと、エリアシング誤差というもので、高周波音が勝手に低い音に変換されてノイズが入ってしまう、と。ただ、高周波恩を入れる必要が無い場合は、ローパスフィルタ(低いところだけ通すフィルタ)をかけて最初から高周波部を切ってしまえば(音質は若干下がるようだが)、安心して使える、と。
って、書いていて分からなくなってきた。検索エンジンに引っかかってここに飛んできた方々には深くお詫びします。他を当たってください(死)。
この日は12時まで学校に残った。ほとんど勉強しっぱなしだけど、結構いい感じだ。
いろいろと優秀な記事を見つけても、紹介する暇すらないというのは寂しい限りです。
ところで最近、私のパソコンが妙な高周波音を出すようになっているんですけど、これってHDDがクラッシュする前兆、だなんてことがあったら凄く嫌なんですが・・・。どちらにしろ、あまりいい傾向ではない事は確かです。もう3年も経つのか、このパソコンを買って。
今まで壊れずに良くやってくれているので、まだまだがんばって欲しい。
2004年1月7日(水) 閉鎖はなぜに繰り返される・・・
起床10時前。
ネットサーフィンをしていて、悲しい便りが・・・。私のリンクのページに掲載している戯言通信が閉鎖されるらしい・・・。
その文章のレベルの高さ(話の構成の作り方や作品への分析という面からしたら今まで見てきたサイトで最高でしょうね)から、私自身が寵愛してやまなかったサイトのひとつですが、あまりにも痛すぎますよ・・・。ショックが大きすぎてしばらく考えることができなくなりそう・・・。何せ、私が今まで見てきた個人サイトの中で5指に入るほどの優秀なサイトなんです。
どうやってあの文章群をローカルに保存するか、3月までに考えて実行に移しておかなければならないことは確からしいです・・・。何度読み返してもあれだけいい文章というのは、本当にまず書けるものじゃない。いったい何度の笑いと感動を与えてくれただろう。
漫画感想のページを見て以来、いろいろと興味を持ってネットを巡回したことがあります。しかし、読むに耐える感想・分析を書いてくれるサイトを結局ひとつも見つけられずに今にいたっています(総合的観点まで広げても、TVアニメ資料館ぐらいでしょうか)。ある意味、奇跡的とも言える文章の数々がなぜ生まれたのだろうか、と今でも思うところで、今回の引退は本当に寂しい限りです。それだけoumiさんが偉大だったということなのでしょうけど。
よく考えたら、女性作者のページではまったサイトも実はほとんど無いです。見やすさと文章中心で評価してしまう私にとって、合ったというのも事実なのでしょうが、ネット上の女性人口で評価したとしても、なかなかレベルの高いページを作れないという傾向でもあるのかな、と思ってしまいます。特にデザイン面で見やすさと相反してしまう傾向があるだけに、『戯言通信』の見やすさと文章の質の高さはある意味特異なものだったのかもしれません。
いろいろと閲覧を繰り返して思ったのですが、明らかに壁というものを感じさせられることがあります。それは文章に対する分析力です。プロの小説を書く人にしか持ち得ない何か、そういったものをなんとなくかぐことができるのではないでしょうか。ここあたりは見てもらえは分かるんじゃないかと思います。
それにしても、何で有用なサイトほど、次々とページがなくなっていくんでしょうか・・・。無性にやるせなくなります。何らかの形に文章を保存するという方法が取れなかったものか、と。
私にとって漫画の感想や小説を扱う個人サイトで最強のページのひとつが消えてしまう、という事だけは間違いないみたいです。
今までで大きく思い入れていたサイトの廃止は実は初めて。寂しさもひとしおです。
2時過ぎに学校へ向かう。宿題がまだまだ残っているという現状は変わっていないのだ。
学校についてしまうと、家で思っていたことを考えている余裕もなく、ひたすら勉強。と言っても、宿題の量と難度は半端ではなく、この日も一日中宿題につぶれてしまった。気の向くようにプログラミングする方が、よほど気分転換になっているような・・・。
それにしても、かなり疲労がたまってきた。
アニメがあるので、11時離脱。そのアニメの録画がうまくいかなかったのは痛い。
2004年1月8日(木)
日記を書くことすら、かなり厳しい状況に追い込まれている。
10時過ぎに家を出た。強風吹き付ける中、自転車で学校へ。多摩川を渡っていたら、タイヤが横滑りしておっかない。体ごと吹き飛ばされそうになるほどの強風だ。普段25分で着くところが40分もかかった。研究室の中から外を見ると、倒れるんじゃないかというぐらい木がぐらついている。
宿題は昼12時ごろ完成。1時間残しての完成で、達成感もひとしお。
余った時間で、つるかめに行き、おやつ(せいべい)を買ってきた。おやつでも買って食べないと、とてもじゃないが体力が持たない。とにかく食べておかないと。
授業中に寝てしまうなど、体力的にかなり厳しさを増してきた。研究室内でも、調べ物をしている内に眠りに落ちてしまうなど、いよいよ卒論前の厳しさを実感しつつあるこの頃。
8時までにやるべき事とプログラムの構成をノートに書いて整理し、プログラミング開始。しかし、VBのマクロで出した結果をソートしてcsvに出した場合、パラメータの仕様変更にあまりにも弱すぎることに気がついた。これはいくらなんでも問題がありすぎる。実用に耐えられるようにしておかないと、研究とはいえない。結果だけ出してポイ、というのは研究の趣旨に反する。
しょうがないので、相関係数や標準偏差を求めるようにプログラムで直接記述するしかない。問題はこの量の多さと、そして処理の仕方だろう。CPUクロックが700MHzと処理能力が遅いので、これは痛い。何にしても面倒なことが多いし、やる量も半端じゃなく多い。プログラムのソースも爆発的に増加しつつあり、それに多少は耐えられるソースになっているのでまだ全体を把握できるが、今日の未完成時でのソースの分量は15KBを越えている。この調子だと20KBぐらいになってしまうかも。読みにくくて困るな・・・。分量は少ない方が美しいのに。
12時に学校を離脱。強風はさすがに収まっていたが、寒さは相変わらず厳しい。
体力への挑戦はいまだに続く。
2003年1月9日(金)
驚異的に眠い。
起床は10時。昼食を食べた後、再び寝てしまい、起きたのは3時ぐらい。
当然のように今日も自転車で学校へ。週5日自転車というのはさすがに初めてだろう。
学校についてからは、やることがいろいろと。今のパソコンを新しくするための注文期限が迫ってきており、そのために何を用意すべきか、という話になっていた。組み立て式になるのがうちの研究室では一般的らしく、ここ辺りに知識が足りない私にはサッパリ。CPUとかメモリとかHDD、マザーボード、コンポドライブぐらいは分かるが、ビデオカードとか、サウンドカードとか、その他いろいろは全然。どう影響するかが全然読めない。セット注文はだめだそうな・・・。手間がかかって困っちゃうな。
そうこうしている暇もそうなく、プログラミングにかかる。凄まじいほどの膨れ上がりによって、何かと面倒なことがたくさん。さてさて。
プログラムが一回目は動いたのだが、続いてやろうと厳しい改変作業を行い、ようやくエラーが出なくなったところで、なぜか動かない。2時間近く、この意味不明の症状に悩まされ続けた。そしてようやくという感じで手があいた(というよりマクロを書き終わったところを無理やりお願いしたというか・・・)D5先生に症状を見てもらった。
そのプログラムは、簡単に書くとこんな感じだった。意味のないところは全て省かせてもらう。一応の完成後のプログラムは、bunri126.txtを参照されたし(読む気しないと思うけど)。
char *func01(......){
char filename[256];
char *p = filename;
sprintf(filename, "...", ...);
......
return p;
}
void func02(char *filename){
FILE *fp;
if((fp = fopen(filename, "w")) == NULL)
Error();//ただエラーを報告するだけの関数
......
}
void main(){
char writename[256];
char *ptr = writename;
*ptr = func01(......);
func02(ptr1);
......
}
私がやろうとしていたのは、func01でファイル名を呼んでwritenameに格納し、それを用いてfunc02にwritenameを引数として渡し、処理を行うというもの。
プログラムを長くやっていて、さらに実戦経験があり、そして有能な方ならば、見るだけで違和感を覚えるらしい。
まず、この中には明らかな間違いがひとつ存在し、避けるべきことが二つある。
まず、間違い。
char *func01(......){
char filename[256];
char *p = filename;
......
return p;
}
実はこれは、関数から抜けた途端に、filenameのメモリの部分は事実上開放されてしまっている。もちろん、値自体は残っているが、いつ書き換えられてもおかしくはない。
あくまで返った値はfilename[256]ではなく、そこを指すポインタであることに留意する必要がある。つまり、filename[256]の部分に上書きされれば、想定されえない値を読み書きすることになり、エラーが発生する。
このため、func02でfopenした途端に同じ場所にメモリ確保が行われてファイルが壊れ、ファイルを開けなくなってしまう。
これが今回のバグの理由。開放した値を使うという、典型的なバグプログラムである、が実際の中身はこんな簡単ではないので、発見はかなり困難。
しかし、これを解決するためにstatic char filename[256];とするのはおかしい。これは後で述べる。
D5先生曰く「動けばいいってもんじゃない」とのこと。ごもっとも。
次の避けるべき間違いに向かう。
void main(){
......
char *pre = writename;
*ptr = func01(......);
......
}
この部分がそもそも間違っているという。
文法的に間違っているわけではないらしい(というかエラーが出なければそういうことになっているか・・・)。
左辺値にポインタ変数を持ってきて、関数を代入する場合、渡した関数先でmalloc()かfopenを使う形以外では絶対に使わない形であるということ。これは事実上の約束事に近いらしい。左辺値にポインタがある場合は「mallocを使う」と言う約束事。
この形自体が誤解を生む形であるということだ。
そして、ポインタを左辺値に置くような使い方をすることは滅多にないと。
mallocは動的なメモリ確保といういかにも仰々しい方法で、確かに使いたくない関数だ。freeする手間からしても確かに釣り合わない(但し、今のコンパイラはプログラム終了と共にメモリは自動的に開放されるらしいが)。
よって、一つ目の間違いを訂正すると同時に、ここでのファイルの呼び出し方を変える必要がある。
つまるは普通に引数で渡して取ってくればいいというだけのこと。余計なことでポインタを使うというのは愚の骨頂ということだろう。
D5さん曰く、ある程度慣れてくると、ダブルポインタとか多重継承とかそういう難しいことをやってみるようになる。それで動いたからといって適当にやっていると、処理系が大きくなった時に自爆する、と。
再び一言。『動けばいいってもんじゃない』
さて、まだある。上記誤りを訂正してから・・・。
void func01(char *filename){
......
};
void main(){
......
func01(filename);
}
ファイル名を渡す場合、ファイルの名前が大きくて溢れてしまう場合がある。
自分でやっている分には構わないが、引き継いだ後などに頻繁にエラーが出る部分らしい。このため、配列溢れを確認する事は必須であるという。
このため、main側で呼び出すときに配列の大きさも渡し、それ以上のファイル名が格納されたらエラーを返すことができるように、以下のように訂正する。
void func01(char *filename, int buffer){
sprintf(filename, "...", ...);
......
if(strlen(filename)>buffer)
Error();
......
};
void func02(const char *filename){
FILE *fp;
if((fp = fopen(filename, "w")) == NULL)
......
}
void main(){
......
func01(filename, strlen(filename));
func02(filename);
}
これで、配列溢れを回避できるようになる。
また、ファイル名の変更をしないことが確実であることから、constを加えることで勝手な書き換えから守ることが可能になる。
軽いところだが、ちょっとだけ教えてもらった。他にもいろいろありそうだったが、D5さんが非常に忙しい状態で、今回はこれぐらいまで。
とはいえ、こんな少ない部分だけでも、これだけ突っ込み所があるとは・・・。そんなとんでもないソースなので、あんまり見ないで下さい、プログラムのページ。あくまで自分のためのページです・・・。
10年以上本格的にやり続けてこられた方の凄さというより、才能の凄さに脱帽です。
12時40分に学校を離脱する。金曜日なので、月曜から木曜と比べるとやはり交通量が多い。暇人が多いのだな。
今日はひときわ冷えていて、帰ってきて食事にありつくと、急速に緊張感が解けると同時に厳しい睡魔が襲ってくる。
それにもめげず、この文章を書き終えるともう3時。風呂入っていないんですが・・・。
2003年1月10日(土)
いよいよやばい感じになってきた。もちろん研究が。
しかし、比較的のんびりと2時に家を出る。今日は京王稲田堤駅にアクセス。電車で行くのは久しぶりのような・・・。
2月までに買っておかなければならないパソコンについての談義が研究室内で。なぜ卒業研究が終わったあとにしてくれないのか、という問題があるが、理由は国立大の法人化にともない、予算を多めに消化しておきたいという思惑があるといわれている。尤も、うちの研究室は何かと貧乏なつくりなので、組み立てのパソコンは常識であるのは当然として、必要最小限のソフト以外は購入しないし、結果として大幅な黒字となり、他の研究室の赤字補填に回る役割になっている。何か非常に不公平だな。
それにしても、部品調達の方法だけど、奥が深い。
こういう時に価格.comの掲示板は、確かに役に立つわ。
8時あたりからようやくエンジンがかかり始め、全力でプログラムの作成を続ける。なんとなく使いにくい感じになってきていたので、クラスメンバを改良していく。こういった作業は、やはり面倒なので、最初から将来を見据えたつくりをしておくことの重要さを改めて考えさせられてしまう。
今日は電車で来ていたので、12時20分に離脱。42分の若葉台行き最終電車に間に合うために。
駅に着いたのは早く、12時30分。しかし、27分の多摩センター行きは既に出ていた。あんまり嬉しくない。
南口広場から誰かが、ギターを弾いてミスチルの曲を歌う声が聞こえてくる。最初弾いていたのは「Tomorrow never knows」と、これまたメジャーな曲だったわけだがその次の曲が突然分からなくなる。しばらく聞いて、Atomic Heart収録の「雨のち晴れ」であることが判明。なんか変わった選曲をしているもんだな。遅れてくる京王線を待つ吹きっさらしの調布駅に、一時の安らぎが・・・なわけないか。
それにしても最終電車という響きっていい。なんか、この電車に遅れたらもうだめ、というその緊張感。ある意味、旅行はそうなんだよなぁ。何か、余目でムーンライトえちごの接続列車を待っていた自分と重ねてしまった。
若葉台行きは8分も遅れて到着した。理由は、JRの接続のため、だとか。それって何線?まさか山手線じゃないよね。
帰ってきたら遅く、夕食を食べて日記を書いたらもう3時。