京大生のためのブログ | blog.kyoto-u.com | 使い方 | 管理モード | kyoto-u.com |

May 24, 2004

ブログ関連コンテンツ検討

早速SQLを考えていくこととしよう。まずは「ブログ一覧」。これは簡単かと思ったが、意外と面倒くさかった。

select blog_name, blog_site_url , author_name 
from mt_blog B, mt_author A, mt_permission P 
where B.blog_id=P.permission_blog_id and P.permission_author_id=A.author_id 
and (author_id != 1 or (author_id=1 and blog_id=1));

MTの場合、一つのWebログに対して複数の投稿者を登録できるようにするため、「ユーザ一覧」「ブログ一覧」「ユーザとブログの権限関係」それぞれが別テーブルになっている。そこで一覧として取り出すには、まずこれら3つを結合してからでなくてはいけない。さらに、これは本来望ましくない状態だが、現在はユーザID1のユーザが全体の管理者を兼ねており、権限テーブルにおいて全てのブログに出現する。これを避けるための条件が最後の行である(単にauthor_id != 1では自身のブログが出力されなくなってしまうため、こういう形になっている)。

次に最新のエントリーN(ここでは15)件。

select entry_title, blog_name, date_format(entry_created_on, '%Y/%c/%e, %T') as created_on,
 concat(blog_archive_url ,lpad(entry_id, 6, '0'), '.', blog_file_extension) as entry_url 
from mt_blog B, mt_entry E 
where B.blog_id=E.entry_blog_id and entry_status=2 
order by entry_created_on desc limit 15;

エントリーへのURL生成部分がかなり苦しい。上記では日ごとのアーカイブ生成を前提としているわけだが、これは今後変わらない保証はない。「最新」エントリーなんだから、素直にトップのURL+アンカーとするべきか…要検討といったところか。

「コメントが付いたエントリー一覧」については、トラックバックとの絡みもあって色々とややこしい。だからそれはもう少し後で検討することにして、早々に実装作業に入ろうかな。他スタッフを急かす意味でも(笑。

投稿者 StaffT : 06:52 PM | コメント (0)

May 23, 2004

ブログ関連コンテンツの方針

せっかくRDBMSに移行したので、ここらでブログ関連コンテンツについて検討しようと思う。ファイルベースのBerkeley DBと違い、RDBMSではデータ構造の把握が容易である。ごく普通にSQLが書けて、ごく普通にプログラム中からDBにアクセスする手段があれば、基本的にはどのようなことも可能なはずである。

(無論、それが余り上手いやり方ではないことは心得ている。特定の環境、バージョンに依存したコードを書くのは出来る限り避けるべきだからだ。特にMTには専用のPerl APIが用意されている。普通はそれを使うべきだろう。敢えて私が直接DBからデータを引っ張ってくる方法を採るのは、単に興味の問題に過ぎない。というか、今後の気分次第で素直にPerl APIを使用することになるかも知れない)

具体的な話に入る。コンテンツとして必要そうなのは…

  • ブログ一覧(タイトル、URL、作者、…)
  • 最近更新されたエントリーN件(ブログタイトル、エントリータイトル、更新日時、…)
  • 最近コメントがついたエントリーN件(上記に加えコメント日時、総コメント件数、…)

こんな感じだろうか。まあ初めからそうカチッと決めておく必要もないので、今後、少し手を動かしながら色々検討していきたい。

投稿者 StaffT : 09:02 PM | コメント (0)

May 22, 2004

RDBMSに移行

何もかも消して構わないとのことだったので、有無を言わさず再インストールしてみた。とりあえず自分の分だけ作ってみたが、一応はうまくいっている様子。データベースにも間違いなく反映されている。これでハックするのがかなり楽になったかな。

投稿者 StaffT : 04:31 PM | コメント (137)