けんども日記: カテゴリ: blog

カテゴリ: blog のエントリを新しい順に 20 件まで表示します。 21 件以上ある場合、それらは省略されます。

2005-06-10

けんども日記の新スクリプト

けんども日記のスクリプトを新バージョンに差し替えた。内部のコードをほとんど書き換えてメンテナンス性が上昇!でも、機能はあまり変わらない。要するに、閲覧側にとってはあまり変わらない。しかし、作り直せてよかった。今までのスクリプトは過去に作った中で最も巨大な上、コードが汚くて厄介なものだった。

一部仕様を変更し、 Permalink (恒久的な URI) と、月別一覧の URI を変更。これでは何のための Permalink なのかわからない気がしたので、 Permalink だけは旧 URI でのリクエストに対して Location で飛ばすようにした。今思えば、 diary.php というのも、明らかに PHP スクリプトであることがわかるのがセキュリティ上問題があるのだけど、各参照先などの問題で、これを変更すると別の問題が発生しそうな気がする。この部分は保留。

変更前
http://home.kendomo.net/diary.php/20050525_01
変更後
http://home.kendomo.net/diary.php/2005-05-25/1

セキュリティといえば、前のスクリプトにはフォームから POST されたデータをそのまま SQL に突っ込んでいた部分があることに気付いた。これは、 SQL インジェクションを狙った攻撃を受ける可能性がある。直接入力されたものに対してはもちろん対応していたが、識別のための id を格納しておくだけの hidden な input 要素までは対策を忘れていたらしい。

その他の変更点は、古いエントリの表示に対する制限といったところで、月別アーカイブは過去半年分だけにして、カテゴリ表示でも過去 20 件だけの表示にした。古い中にも有用な内容のエントリはあるかもしれないが、あまりにも古すぎると WWW 上のゴミとなってしまうだろうから。もちろん、 URI 直打ちなら古いエントリも表示可能。

もしも何か不具合に気付かれた方、お伝えいただければ幸いです。

2004-04-13

Trackback Auto-Discovery

他の blog からリンクされてもトラックバックを受けないことがある。私はトラックバック ping は手動で送信するものだと認識していたのだが、代表的な blog ツールや blog 提供サービスでは Trackback Auto Discovery により、投稿時に自動で打ってくれるらしい。

わかりやすい解説が Blog Developer's Cookbook : Trackback Auto Discovery にある。このページを参考にして Permalink に RDF データを埋め込んでみた。この記事だと次のようになる。

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <rdf:Description
    rdf:about="http://home.kendomo.net/diary.php/20040413_01"
    trackback:ping="http://home.kendomo.net/diary.php/trackback/20040413_01"
    dc:title="Trackback Auto-Discovery"
    dc:identifier"http://home.kendomo.net/diary.php/20040413_01" />
</rdf:RDF>

blog ツールなどでは dc:description や dc:date もあるようだが、トラックバック URI を検出させるためであればこれだけで十分だと思う。

XHTML 内にこうした RDF タグを埋めこんだ場合、User-Agent によっては表示に不具合を起こす場合があるので、この RDF を HTML エスケープするのが一般的なようです。

とのことなので、 <-- と --> で囲った。

とりあえず、この blog から他の blog へのトラックバック ping 送信は今まで通り手動で行うつもりだ。投稿直後、何度も修正することがあるので、自動に送ってしまうのは避けたい。

2004-03-10

?__mode=rss を実装

今更ながらトラックバック URI に ?__mode=rss をつけると RSS もどきを出力するようにした。これは代表的な blog ツールや blog 提供サービスでは実装されている機能らしい。

例えば上のように呼び出す。もとの記事の要約とトラックバックされた内容を出力する。

もうひとつ。なぜかトラックバック URI を普通の Web ブラウザで開いてしまう方がいらっしゃるので、 ?__mode=rss をつけずに Web ブラウザで開いた場合のメッセージをわかりやすい内容に変更した。

参考
http://www.kanzaki.com/docs/sw/rss-trackback.html#mode-rss
http://www.movabletype.org/docs/mttrackback.html

追記: SQL のミスにより、今まで正常に表示できていませんでした。修正済みです 2004-03-14 03:36

2004-02-17

うざがられない blog にしよう

某所で「blog がよく検索エンジンで引っかかってうざい」という声を聞いた。確かに、最近調べものをしていると blog がよく引っかかる。本文がたった 3 行程度しかなく、目的の情報が全く得られないことも少なくない。うざいというのは内容がないからだ。私も急いで調べものをしているときなどは Google 検索の際、キーワードと一緒に -blog -diary などを指定してしまうことがある。

この blog も例外ではない。 Linux、PC 関係に属する記事は設定方法、使用した感想などを具体的に記載することが多いので役に立つこともあるかもしれない。一方、買い物メモはどうだろう。初期は購入した本の名前だけが挙げてある。ブックレビューなどを求めてやってきた訪問者には残念な思いをさせてしまうに違いない。そこで、最近は簡単な感想もあわせて書くようにしている。

個人の日記のようなものだから当然好きにしてもよいと思う。しかし、内容のない blog は迷惑になることがある (もちろんすべてではない) 。このままでは将来、日々進化しているような検索エンジン、例えば Google で blog を引っ掛かりにくくされてしまうことだってあるかもしれない。私はできれば毎日更新したいと思いつつ、ネタがない日は無理にネタを作って書かないことにしようと思う。

2004-02-15

「blog って何?」な方々

くどいようだが、けんども日記はオリジナルスクリプトを使っている。まだ機能に不安があり、トラックバックされても正常に受け取れていないかもしれない。そこで、 Web サーバのログの中から diary.php/trackback という文字列を探してトラックバックされた形跡がないか調べてみた。すると、トラックバック URI を直接 Web ブラウザで開いてしまったケースが数件見受けられた。 Web ブラウザでトラックバック URI を開いたらどんなコードを吐くか調べてみた…なんていう様子ではないと思われる。たぶん、この方々は「トラックバック」を知らないのだろう。

先日の slash.jp でも blog を知らない女性が 9 割というタレコミがあり、少し驚いていたところだった。

2004-01-25

やっとトラックバック

トラックバック機能を取り付けた。やっと blog としての代表的な機能がそろったことになるだろうか。トラックバック用のスクリプトとは別に「けんども日記」スクリプトの中核となっている diary.php を書き換えたので時間がかかってしまった。というのは、もともとは単機能の Web 日記のはずだったので、処理は常に上から下へと流れていた。ところが、 blog 風になっていくにつれ、記事の抽出やコメントといった機能をそれに無理矢理取り付けていったので、自分でもわけがわからなくなってしまっていた。今日はそれを修正していたのだ。

トラックバックは評価用としてインストールしている Movable Type と相互に送りあって正常に動作することを確認している。他人の blog に文字化けの嵐を送るようなことだけはしたくないので、このあたりは念を入れた。

意外と単純なトラックバック

トラックバックというと何やらとても難しいもののように思っていて仕様も調べずに気にならず放置していたのだが、意外なほど単純だった。最初は ping 送信みたいに XML-RPC を使ったものだと思っていた。ところが、トラックバック技術仕様書によると、ごく一般的な POST リクエストだった。フォームから掲示板に書き込むようなものと同じ。掲示板より単純そうだ。その気になれば静的な HTML からでもトラックバックできてしまう。

私も評価用として Movable Type をインストールしている。 URI は http://home.kendomo.net/mt/ 。これはあくまで評価用なので、ロボットなどにクロールされないようにリンクはしないことにする。そして、トラックバック送信フォームは http://home.kendomo.net/mt/tb.html 。このフォームは単なる XHTML で書いたもの。わりと簡単にできそうなので、近いうちに実装予定。

2004-01-24

コメントに URI も

けんども日記は blog のような日記、もしくは日記のような blog …。もはやどちらでもよくなってきた。他の blog ツールにはコメントに URI の入力欄が当たり前のようについているので私の blog にも URI の項目を追加した。テーブルの列を追加したのでメモ。列の追加は以下のようにする。

alter table テーブル名 add column 列名 データ型;

今回は以下のようにした。文字数に制限を設けたので、当然エラー処理もしている。面倒なら可変長文字列なんて使わなければよいのだが、細かくエラー処理をするのは習慣となってしまっている。

alter table comment add column uri varchar(100);

2004-01-03

Bulkfeeds

Bulkfeeds: RSS Directory & Search ではいろいろな RSS が登録されている。私のサイトもあった。

少し興味深いのは Stats のページ。 blog ツールのシェアがわかる。よく訪れるサイトは Movable Type が多いので、シェアも圧倒的だと思ったらそうでもない。はてなダイアリーやココログなどの blog ホスティングサービスのシェアが高い。手軽さがいちばんなのだろうか。

2003-12-28

トラックバックメモ

トラックバックを実装予定なので参考になりそうなところをピックアップ。今までの RSS 出力や ping 送信に比べると何となく難しそうな気がする。

2003-12-23

ping.bloggers.jp に RSS の表示

やっと ping.bloggers.jp にこの日記の RSS ファイルのリンクが載った。今までどうしても RSS が表示されなかったのでとてもうれしい。最初は ping 送信に原因があるのではと思い、他の blog システムの送信内容を調べたりしたのだが、原因はわからなかった。先日、 RSS が表示されている blog を片っ端から見てみると、 RSS の場所を指し示している link 要素の type 属性が application/rss+xml であることがわかった。私はそれまで application/xml としていたのだ。以下のように修正。

<link rel="alternate" type="application/rss+xml" title="RSS" href="http://home.kendomo.net/diary.php/diary.rdf" />

この日記の場合、 8 日に 1 度程度の割合で ping.blogger.jp/RSSdiscovery v/0.1 というロボットがやってくる。昨日の ping 送信の後、このロボットがやってきたのだが、そのときに正しい meta 要素ではじめて RSS を認識できたようだ。 RSS 自体は参照しないらしい。

2003-12-22

日記にコメント機能

コメント機能を取り付けた。これでもうすこし blog らしくなっただろうか。コメントの表示と入力フォームは Permalink と兼用のページにした。苦労したのはデータベースのテーブルがひとつ増えたため、 2 つのテーブルを使った SQL を作ることだった。次は TrackBack 機能に挑戦したい。

2003-12-15

ぶろっぐぴんぴん

Internet Watch の記事によると、 BlogPeople が ping 送信ツールを公開したらしい。これを使えば ping 送信に対応していないシステムでも更新通知をすることが可能になる。おもしろそうなので早速ダウンロードしてみた。 Windows 用アプリケーションだ。何とかして Wine で動かそうと思ったが、バージョンチェックにひっかかってうまくいかない。あきらめて素直に Windows で動かすことにした。まず最初に自分のサイトのタイトルと URI を入力し、必要に応じて ping サイトを追加する。 BlogPeople は追加しなくても最初から入っており、必ず ping 送信対象サイトとなり、省くことができないようだ。 ping 送信による内容は以下の通り。

POST /servlet/weblogUpdates HTTP/1.1
Connection: keep-alive
Content-Type: text/xml
Host: www.blogpeople.net
Accept: text/xml, */*
User-Agent: Mozilla/3.0
Content-Length: 242
Cache-Control: no-cache

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param><value>けんども日記</value></param>
<param><value>http://home.kendomo.net/diary.php</value></param>
</params>
</methodCall>

2003-12-07

ping 送信の内容は

研究用として Movable Type をインストールした。インストール作業は思ったほど難しいものではない。さて、まずは気になっていた ping 送信。 post された内容を覗いてみよう。

POST / HTTP/1.1
Connection: close
Host: localhost
Range: bytes=0-99999
User-Agent: MovableType/2.64
Content-Type: text/xml
Content-Length: 226

<?xml version="1.0"?>
<methodCall>
    <methodName>weblogUpdates.ping</methodName>
    <params>
    <param><value>kendomo test</value></param>
    <param><value>http://localhost/mt/</value></param>
    </params>
</methodCall>

一方、 PHP の XML-RPC を使った場合は次の通り。

POST / HTTP/1.0
User-Agent: PHP XMLRPC 1.0
Host: localhost
Content-Type: text/xml
Content-Length: 275

<?xml version="1.0"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value><string>けんども日記</string></value>
</param>
<param>
<value><string>http://home.kendomo.net/diary.php</string></value>
</param>
</params>
</methodCall>

string 要素があるかないかの違いだけでそれ以外は大して変わらない。

PHP で XML-RPC

blog での ping 送信は XML-RPC というプロトコルを使ったものだということを知った。 PHP での XML-RPC の使い方に書かれている方法で利用できると思われる。わざわざソケットを使って組まなくてもよかったのか。これで Myblog に送れるか試してみよう。

ping 送信テスト 2

単純に RSS ファイルのの URI を追加しただけでは失敗してしまった。 Movable Type のソースを覗いて調べてみよう。

ping 送信テスト

ping.bloggers.jp ではサイト名の横に RSS ファイルのリンクが出る。しかし、私が送信したものにはそれが出ない。よく使われる Movable Type で ping 送信したものにはちゃんと RSS ファイルのリンクが付いている。 ping 送信のときに RSS ファイルも指定する必要があるのだろうか。ということで、この記事を書き込んだときの ping 送信でテストしてみよう。

2003-12-06

PHP で ping 送信

ping といえば真っ先に ICMP のほうが頭に浮かんでしまい、当初何のことだかわからなかった。 blog の世界で ping といえば、更新したことを通知することのようだ。どこに通知するかというと、国内では Myblog japanping.bloggers.jp のようなサイト。ここへ ping 送信すると、更新されたサイトのリストに加わることになる。やはり RSS が配布されているので、対応したツールで取り込んで利用も可能らしい。

どんなものかはすぐに理解できたが、そこからどうしてよいのかわからない。仕様がわからなかったからだ。何とかおのひろきさんの 8 月 26 日の日誌とそこからリンクしてある Weblogs.Com XML-RPC interface を読んで仕様はわかった。 HTTP で post リクエストすればよいらしい。その作業をするものを何とか PHP で作り上げることができた。思ったより単純でよかった。

2003-12-05

文字コード変換 2

先ほどの方法で EUC-JP から UTF-8 へ変換できるはずだったのだが、 MIME タイプを application/xml にした途端にエンコードできなくなってしまった。つまり、 header("Content-type: application/xml"); を付けた途端にダメになる。他の MIME タイプなら問題ない。なぜなのかわからない。仕様なのだろうか。悔しいけど mb_convert_encoding($var, "UTF-8", "EUC-JP"); で対応。

文字コード変換

このサイトを含め、データベースも文字コードは EUC-JP だ。しかし、 RSS では UTF-8 にする必要がある。 PHP ポケットリファレンスによると、 mb_http_output("UTF-8"); でよさそうなのだがうまくいかない。実際にエンコード処理するには mb_output_handler 関数を出力バッファハンドラとして登録しておく必要があるとのこと。最初、何のことだかわけがわからず、とりあえず php.ini を編集してみた。

output_handler = mb_output_handler

こうするとエンコードはできるようになったが、 ob_start("ob_gzhandler"); を記述しているスクリプトでエラーが出てしまう。 mb_output_handler 処理すると ob_gzhandler が使えないらしい。ここでようやく php.ini ではなくスクリプト中に書けばよいことに気付いた。

ob_start("mb_output_handler");
mb_http_output("UTF-8");

これで問題ない。

Information

サイト内検索

けんども日記

直近 10 件
RSS
RSS 1.0
Home@けんどもネット
diary.php(v2): 2005-06-11
Copyright © 2003-2005 Kendomo.net.