Debug- Official Website -


犬土偶日記

海の近くに住みたい

Debug日記の使い方

話題:Webプログラミングとか

2008年12月04日

RSSとか無効クリックとかCGIプログラミングとか

公開日時: 2008年12月05日 06時45分36秒

朝寝て午後に起きた。予告どほり日記のCGIを弄ることにした。まづRSS Auto-Discoveryを。今までやつてゐなかつたのもある意味凄い。Debugの日記CGIではRSSを発行してゐる。日記を更新するたびにRSSファイルをCGIプログラムが自動的に更新する。RSSといふのは、RSSリーダー等のソフトに登録しておけばブラウザで直接そのサイトを訪れなくても更新されたかどうかをチェックできたりする便利なもの。このサイトで使はれてゐるRSSのバージョンは1.0。まあ色々種類があるんだが、かういふ系統のRSSならどれでも大差無い。ちなみに犬土偶日記のRSSはこれ→ http://orca.xii.jp/info/diary-dogoo.rdf で、Auto-Discoveryといふのは、ブラウザ等でサイトにアクセスするとそこにRSSがあるかどうか自動的に探し出せるやうにする機能のこと。最近のブラウザなら大体対応してゐると思ふ。ブログにアクセスするとブラウザの右下にRSSフィードのロゴが表示されると思ふ。それをクリックしたりするとRSSを登録できるのだ。Debugの日記には今までその機能はつけてゐなかつた。RSS自体はあるのだが、全く登録してもらふ気が無いのでどのメンバーの日記を読むか選ぶページにRSSのリンクを置いてゐるだけで、日記そのもののページにすらRSSのリンクが無い始末。これではRSSを使ふ人には不便かもしれない。といふわけで、ブラウザ等が自動的にRSSを探し出せるやうにAuto-Discoveryを設定する。と言つても別に難しいことではない。単に出力されるHTMLのHEAD要素内にLINK要素でRSSのURIを指定すれば良い。<link rel="alternate" type="application/rss+xml" title="RSS" href="../../info/diry-dogoo.rdf">といふ具合に。もちろんCHOSANGの日記ならdiary-chosang.rdfになる。ここは誰の日記かプログラムで判別して書き換へる。といふか、URLの後ろについてゐるid=****の部分の変数をそのまま使つてゐる。これだけのことなんだが、実は密かに苦戦した。IE6ではRDF形式のRSSにブラウザでアクセスした時に不明な形式のファイルとしてダウンロードを試みる。なのでサーバー側でRDFのMIME-TYPEをapplication/xmlに指定してゐた。それなら直接IE6でRSSにアクセスしてもXMLとして処理される。XSLTでXHTMLに変換してゐるのでブラウザでアクセスしても生のXMLではなく普通のWebページのやうに見える。それで、上に書いたLINK要素のTYPE属性も同じやうにapplication/xmlと書いてゐたのだが、それだとAuto-Discoveryとして機能しないらしい。ブラウザの右下にRSSフィードのマークが出ないのだ。それが原因だと気付くまで色々と無駄に苦戦した。で、application/rss+xmlにしたら機能したので終了。

日記の目次ページと個別ページにRSS Auto-Discoveryを設定してから軽く飯を食つた。さうしたら起きたばかりなのに猛烈に眠くなつて来た。眠くなつたら無理に起きてゐる必要は無い。といふわけで寝た。で、夜中に起きた。1日に何度も寝たり起きたりする。

メールを受信したら激しくウンコなのが来てゐた。Yahoo!アドパートナーから。クリックされたら金が貰へる広告のやつ。引用してみよう。

Yahoo!ウェブオーナーセンター アドパートナーをご利用いただきありがとうございます。

Yahoo!ウェブオーナーセンターでは、アドパートナーに登録いただいているサイトが アドパートナーの参加基準を満たしているかどうかを定期的にパトロールを行い確認しています。

パトロールの結果、お客様のサイトへの広告の配信を停止させていただきました。
サイトのURL: http://orca.xii.jp/

下記に該当していないかご確認ください。

調査の期間は、3週間程度となります。再審査依頼は、調査完了後に順次受け付けます。

また、ガイドライン違反による広告配信停止が規定回数を超えた場合、サイトへの広告の配信を永久に停止させていただきますのでご了承ください。

なお、配信停止の理由につきましては、個別のご案内は行っておりませんのでご了承ください。お問い合わせは、ご遠慮くださいますようお願い申しあげます。

といふわけで広告配信を停止されてゐる。といふわけで、と言つてもどういふわけなのか全く分からんのだけどな。最初は1つ目の暴力的な表現・誹謗中傷に関する記述とやらに引つ掛かつたのかと思つた。ウンコ食つて苦しんで死ねとかお前には食糞のみが相応しいとかいつも書いてるからな。誹謗中傷に関する記述といふのもよく意味が分からんけどな。でも管理画面に入つて見てみたら1つ目のやつに引つ掛かつたのではなかつた。広告の無効なクリック数や表示回数が発生している可能性があるため、調査対象となっております。といふのが表示されてゐたのだ。該当する行為として3つ挙げられてゐるが、どれも心当たりは無い。自クリなどといふ最大の自殺などするわけがない。怪しげなツールも使つてゐない。3つのうちどれに該当したのかぐらゐ言へよ。でも配信停止の理由は個別に教へないんだとよ。何が悪いのか分からんのに修正しろとかバカなのか?最初から金払ふ気が無いのかもしれんな。適当に広告を表示させて広告主から金もらつておいて広告を掲載してゐるサイトには最低支払額に到達する少し前に理由は言はずにガイドライン違反とか言つて停止する。詐欺か。該当する行為は一切してゐないのでそのまま何もせずに再審査依頼を出しておいた。

しかし本気で理由が分からんわ。ナメてんのか。今日停止されたことを考へるとRSSに関する修正に原因があるのかもしれん。日記CGIのプログラムを弄つたんだが、修正後に直接サーバーにUPしてバグがあると大変なのでローカルで動作チェックした。その時に広告へのHTTPリクエストが出た。それを違反行為と判断されたのかもしれない。広告配信サイトとして登録されてゐるorca.xii.jpからではなく、ローカルの127.0.0.1から広告の要求が来たことに反応したのかもしれない。しかしバカでなければそれぐらゐログ見れば違反でないことがすぐに分かるだらう。CGIをローカルでテストしたと想像できないはずはない。広告は犬土偶日記にしか貼つてゐない。他のメンバーの日記には貼らない。金が振り込まれるのは俺の口座だし万一大金が入れば税金を払ふのは俺だ。だから他のメンバーが書いた日記を読んだ人がクリックした金が俺に入るのは拙いかもしれない。といふわけで、CGI内で広告を表示する部分に条件式を書いて俺の日記だけに貼るやうにしてゐる。その条件式の部分に俺の日記かどうかといふ条件だけでなく、$ENV{'REMOTE_ADDR'}が127.0.0.1ではないといふ条件も書いておくべきだつたか。←「だつたか」の部分が何故か「トッピー」に変換された。壊れてるのか?まあいい。IPアドレスが127.0.0.1の時はローカルテストだから広告表示をしないといふ処理にしておけば良かつたのかもしれない。でもほんの3回か4回程度127.0.0.1からの要求があつただけならCGIのローカルテストだなとすぐに分かりさうなものだけどな。まあそれが理由で配信停止になつたとは限らんのだけど。それぐらゐしか理由が思ひ浮かばん。理由は教へないけど修正して再審査依頼しろとか頭がをかしいと思ふ。

再審査依頼を出してから飯を食ひ、部屋に戻つて犬土偶日記アクセスログを見たら早速Yahooが来てた。で、どうなのかね?何を基準にどう判断するのか知らんが再開するなら早くしろ。こちらには一切非は無いんだから停止日数分はそちらで計算して金を上乗せしろよ。まあその気になれば最終的には「ウンコ」とか「殺す」と書いてあるからダメと言へば完全配信停止してアカウント消せるから向うは気楽だよな。最初に無効クリックがどうのかうのと言つてゐたのは無かつたことにしても良いわけだ。何と言つても「殺す」とか頻繁に書いてるんだからな。でも今までそれを散々スルーして来て無効クリックとか表示回数云々と最初に言ひ出したんだから後出しで別の理由にすり替へるのは常識的に考へて許されることではないし論理的でない。と言はれるのを避けるために理由を明かさないんだらう。極端に言へば理由など要らない。停止したいから停止するといふのでもOKなんだらう。やりたい放題だな。ヤクザか。

日記CGIプログラム改造の続き。取り敢へず広告表示部分の条件式に$ENV{'REMOTE_ADDR'} ne "127.0.0.1"を追加しておいた。これでローカルテスト時には広告表示用のタグは出力しない。で、次に手を出すのは日記の更新日時に関する部分。今までは更新日はログに書き出さなかつた。基本的に俺は毎日書いてゐるから日記の日付と更新日は大体同じだ。正確な更新日など必要無いかなと思つてゐた。しかし必ずしもその日のうちに書くとは限らない。書いた時間によつても時事ネタの扱ひに関する価値が変はつて来るかもしれない。何かあつた時に正確な更新日時を記録しておくことが証拠やアリバイになつたりするかもしれない。RSSでも更新日時は日記の日付の0時0分0秒で統一されてゐるのが不自然だ。最初に更新した時と書き直した時の時間が分からないのも拙いかもしれない。といふわけで、更新日時を記録するやうに改造する。ちなみにコメントは最初から日時を記録してゐる。形式は昔からW3C-DTFのYYYY-MM-DDThh:mm:ssTZDの形式で記録してゐるのでRFC3339にも対応してゐる。日記のログファイルには日付、タイトル、本文、削除フラグ等を記録してゐたが、今後記録する要素が増えることを想定して何も記録されてゐない空き領域をいくつか用意してあつた。データの末尾に追加して行つても良いのだが、最初から領域を設定しておくはうがプログラムを作る上で不安が少ない。といふわけで、何年も前に用意しておいた空き領域をつひに使ふことになつた。記録するのは初回更新日時、最終更新日時、修正回数。本文入力フォーム(メンバーページ内にある)のhiddenフィールドにログから読み出した初回更新日と更新回数を記述しておいてプログラムに渡せば良い。この時点では最終更新日は無視して良い。初回はこのフィールドの値は当然無し。日記更新時にプログラムが受け取る時はしつかりデータ内容をチェックする。ログから読み出した値を使つてフォームが作られてゐるからと言つて、必ずその値が送られて来るとは限らない。フォームは自由自在に改竄可能なので毎回入力をチェックする。バンドメンバーしか触らないはずのフォームだが、パスワード等が漏れれば関係無い人も触ることができる。バンドメンバーの気紛れの悪戯でファイルが破壊されてしまふといふ事態もあり得ないことではない。ここはしつかりチェックしておかねばならん。初回更新日はRFC3339の形式でなければ空文字列に置換する。更新回数が数値でなければ0に設定する。日記更新してプログラムが受け取つたデータをチェックして加工した後、その時点の日時を取得する。初回更新日時の値が無い(=初回更新時)はその時刻を初回更新日時と最終更新日に設定する。初回更新日時が正しい形式で与へられてゐる場合は同じ日記を複数回更新したといふことだから新たに取得した日時を最終更新日時として別に記録する。そして更新回数の変数をインクリメント。最後にログファイルに書き込む。ここまでプログラムを修正し、ローカルで動作チェック。サーバーエラー。死ね。どこかに記述ミスがあるらしい。必死に探したけど見つからん。これはキツい。ハマると抜け出せなくなる。デバッグは大変なので最初から間違へないやうに慎重に書かねばならんのだが、慎重にやつてもどこかに間違ひが紛れ込む。どこだ。必死に探して苦労して見つけた。日時の形式チェック時の正規表現が間違つてゐた。正規表現のミスは見つけにくい。凄いストレスだ。IT系の仕事だけは絶対にしたくないなと思ふ。こんなの日常的にやつてゐたら一瞬で胃潰瘍になるぞ。で、特に問題無く意図したとほりに動くことを確認した。しかし後からをかしな動きをすることが発覚するかもしれない。取り敢へずログに更新日を記録するといふところまでしかやつてゐないので日記表示時に更新日時が表示されることは無い。RSSも今まで通り0時0分0秒に更新されたものとして扱はれる。記録した更新日時を表示時やRSS生成時に反映させるのはまた次の機会に。結局、見て分かる変化はRSS Auto-Discoveryが付いたことと、広告配信が停止されて広告が消滅したことだけ。

気付けばもうすぐ7時。鬱陶しいことに眠くない。といふことは2週間ぶりにパチ屋へ行かねばならんのか?行けば午後から眠くなつて地獄の苦しみを味はふのは必至だ。眠くならないとしても行きたくないのに。キツいな。行かなければいいんだが、休むためには正当な理由が必要だ。眠くなれば満面の笑みで休む。眠かつたら寝れば良い。そして開店時間までに起きれなければ行く必要が無くなる。この時間に寝れば起きれないのは確実だから寝てしまひたい。でも眠くないから問題なのだ。いや、まだ望みを捨ててはいけない。8時までに眠くなれば十分間に合ふ。休みたい。パチ屋へ行きたくない。

話題:Webプログラミングとか

Info.
公開日時2008年12月05日 06時45分36秒
本文文字数6536文字 (タグ込み)
URLhttps://orca.xii.jp/debug/diary/diary.cgi?id=dogoo;date=20081204
RSS1.0https://orca.xii.jp/info/diary-dogoo.rdf
Comments

コメントはありません。

コメント投稿フォーム
文字色              
  • 名前を省略すると「名無しDebugger」になります。
  • メールアドレスの入力は任意です。
  • 海外からのコメントスパム対策のため、表示された漢字の読みを必ず入力してください。
  • 本文は必須項目です。投稿する場合は必ず記入してください。タグは使えません。
  • 改行が1つ入力された場合は強制改行として処理されますが、2つ以上連続する改行は段落の終了として処理されます。
  • 本文の行頭に「>」のある文は引用としてマークします。引用でない部分の冒頭に「>」は付けないでください。
  • コメントの削除は管理者若しくは日記執筆者しかできません。書き込む時は注意しましょう。
  • 全部記入が済んだら投稿ボタンを押す前に一度読み直して推敲しましょう。