2002-03-05 [長年日記]

_1 クールな日記 URI その 3

そもそもの動機は、HNS 風の '/?yyyymmdd' を tDiary 風の '/?date=yyyymmdd' に変換できなかったので、もっと汎用的なものにしたい、ということでした。 そうなると、'?...' のような CGI っぽいものはまず論外ですが、'/yyyymmdd.html' というのも、将来 HTML でなくなるかもしれないし避けたかったのでした。 拡張子を避けるだけなら Apache のコンテントネゴシエーションを適切に使えば可能なのですが、結局のところ、年は 4 桁、月と日は必ず 2 桁という 20020305 のような表記にすくなからず違和感を感じていたのです。

そんなときに、hns-dev ML で Kenji さん記事を拝見して、「おぉ、これだ!」と思ったのでした。 しかし実際に試してみると、最新表示と月表示と日表示とで URI の階層の深さが違うことがけっこう面倒でした。 mod_rewrite で場当たり的な解決をして相対パスを使いつづけるのもいいのですが、 今は、これまで <a href="plugin/"> と書くところを、<a href="<% @index %>plugin/"> と書くようにしています。

それはそれとして、きたさんが一連のプラグインをもりもり anchor を使うように改良してくださり、しかも calendar2.rb も素敵に改良してくださったので、さっそくいただきました。ありがとうございます。

_2 クールな日記 URI その 4

「年は 4 桁、月と日は必ず 2 桁という 20020305 のような表記にすくなからず違和感を感じていた」と言うからには、むきになって月日から不要な '0' を省くように [anchor.rb] を書き換えました ('to_i' と 'sub' とどっちがコストが低いのかわかりませんが)。

def anchor( s )
  if /^(\d{4})(\d{2})(\d{2})?#?([pc]\d*)?$/ =~ s then
    if $4 then
      "#$1/#{$2.to_i}/#{$3.to_i}/##$4"
    elsif $3
      "#$1/#{$2.to_i}/#{$3.to_i}/"
    elsif $2
      "#$1/#{$2.to_i}/"
    end
  else
    ""
  end
end

また、ずんださんjtime.rb をいただいて、tdiary.conf の末尾に require 'jtime' を追加して、date_format を修正して実際の日付表示にも '0' が出ないようにし、さらには [title.rb] でタイトルもカスタマイズしてここにも '0' が出ないようにしました。これで全部かな?

_3 クールな日記 URI その 5

メールを受信してみると...

Subject: <d>:2002-03-05-1 ただただし
わはは、すげーこだわりだ

むぅ、まだあったか!

で、調べてみると、skel/mail.rtxt にハードコーディングされていましたので、これも @date_format を参照するように変更し、あと、@mail_header に日本語が含まれていると生 JIS サブジェクトなメールが送られそうな気がしたので、全体を to_mime ( ... ).to_jis で囲むように変更しました。

--- skel/mail.rtxt.orig	Wed Feb 27 11:47:56 2002
+++ skel/mail.rtxt	Tue Mar  5 11:57:35 2002
@@ -2,8 +2,7 @@
 To: <%= @author_mail %>
 Date: <%= date %>
 Message-Id: <%= message_id %>
-Subject: <%= @mail_header %>:<%= @date.strftime( '%Y-%m-%d' ) %>-<%= serial %> 
-	<%= to_mime( @name.to_jis ) %>
+Subject: <%= to_mime( "#{@mail_header}:#{@date.strftime( @date_format )}-#{serial} #{@name}".to_jis ) %>
 MIME-Version: 1.0
 Content-Type: text/plain; charset="iso-2022-jp"
 Content-Transfer-Encoding: 7bit

これを私の first commit to tDiary にしてもよろしいでしょうか?>たださん。

_4 tDiary: 本日の commit

[skel/mail.rtxt] たださんの指摘を受けて、サブジェクトが過度に長くならないように -serial の前後で MIME 化を切って、改行を入れるようにしました。@mail_header, @date_format ともに MIME エンコードされているので日本語を使えるようになりました。

[tdiary.rb] そのたださんからのつっこみメールが、
Message-Id: <tdiary.<d>.20020305.2@fdiary.net>
のようになっていたのですが、その前に私が一度つっこみの実験をして、update.rb から非表示にしていたときのつっこみメールと同じ Message-Id になってしまいました。 そこで、Message-Id に月日だけでなく時分秒も入れるようにし、今後日本語が含まれる可能性のある @mail_header は Message-Id に含めないようにしました。

[tdiary.conf.sample] @mail_header で日本語が使えないという注意書きを消しました。

本日のツッコミ(全2件) [ツッコミを入れる]
_ ただただし (2002-03-05 11:06)

わはは、すげーこだわりだ

_ ただただし (2002-03-05 17:40)

そうすっと、@mail_headerも日本語可になるのかな。MIME化すると文字列が長くなっちゃうので、適当に改行を入れた方が良いと思い、@nameは別の行に分けてあるのです。だから適当に分割すべきかも。
……という点も考慮してくれたら、commitして下さい:-)

[]