昨年5月に開設したVisited Entry Ranking -Weblog記事アクセスランキング-(概要はこちら)の改良を昨年後半からずっとやっていたのですが、ちょっとだけ改良が済んだので公開します。
なお、VERに関してはいまでも自由に参加可能です。まぁ参加というほどでもありませんが...
たくさんあるブログサイトランキングとは違って、記事ページごとのランキングですので一味違った面白さがあると思います。画像ファイルを表示させるだけですのでお試しください。(説明はこちら)
というのは、アクセスしていただくとわかるのですが、リストに表示されるリンク先の名がタイトルになっているものをアドレスがそのまま表示されているものがあります。
これは自分が「ここ最近よく表示されるからタイトル表記にしよう」と手動でアドレスtoタイトル変換リストに登録していたからです。
で、この作業の手間を何とか少なくする方法を考えていたのですが、ようやく少しだけ動くようになったのでテストを兼ねて実装しました。
今回実装したのはみなさんが記事を投稿する時に、トラックバックにpingアドレスを入力してもらうと、自動的に変換リストに登録されるという仕組み。
たったそれだけの仕組みなのになかなか実装できなかったのは、悩み悩んだのが自分の中でのpingサーバーへの送信とトラックバック送信との勘違いがありました。
pingサーバーは「新しい投稿があった」場合にサーバーに通知し、サーバーがインデックスのファイルを取りに来て更新するような仕組みになっている(らしい)のですが、ウチの場合、インデックスであるRDFファイルが必要なわけではなく、ただ単に記事ファイルのタイトルとアドレスがわかればいいわけです。
ところが自分はpingサーバーには、投稿するたびに記事に関する全情報を送信してくるものだと思い込んでいたので、pingを必死に受信する方法を公開直後から年末にかけて半年近くも試行錯誤していたわけです。
年末にやっとpingサーバーが完動したものの、受信しているのはブログサイトのタイトルとトップのアドレス。そこまでいって年越し。
確かに、更新pingを受け取ってRDFファイルを取りに行って云々...という処理が間違いないわけなのですが、そこまで大げさなシステムはない(笑)ので、もっと簡単な方法を探していました。だいたい格納ファイルだってMySLQではなくテキストファイルなんですから(爆)
そんなこんなと悪戦苦闘をしていた昨晩、ふっといつも参考に見ていたサイトでこんな一文を発見しました。
「トラックバックはPOSTとGETの両方あったが、GETが廃止されPOSTに一本化される(現在はすでにされています)」という内容でした。
じゃぁ、それを掲示板と同じようにデータファイルに書き込みできればいいわけじゃん!!
うわぁー、めっちゃ単純な仕組みでよかったのに全く気づかなかった。
というわけで、さっそくトラックバックで送信されてくるデータを受信してみると...
できたー(ToT)
というわけで、さっそく実装してみました。
トラックバックに次のアドレスを入れて投稿してください。
http://ver.narupara.com/ping.cgi
なお、現在まだこんなにエラーあります。これもおいおい修正できるものは修正します。
・送信側にトラックバックエラーが出る(MTとか)
・サービスによってタイトルが文字化けする
・きちんと送信されない(またはサーバーが受信できない)
・動的ページの場合はきちんとアドレスを取得できない
・トラックバックに変換用サーバーのアドレスを毎回入力してもらう必要がある
・更新通知サーバーに登録されても当然無視されます
結局ほとんど不完全な状態ということです(^^;
なお、今までのVERの機能に関しては全く不具合はでません。
たいへんお世話になりましたトラックバック技術仕様書さんをかなり参考にさせていただきました。