トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2001-06-21(木) [長年日記]

2日ばかりホテルの会議室に缶詰めにされていたので、日記どころではなかった。でも、ちゃんとL1は買ったぜ。というわけで昨日の日記を補完。

JisCompactFilter

うぎゃ。それはシンボリックリンクの精のいたずら……(そんな精はいません)。あとで元に戻しておきますだ。とほほ。

行末の「。」は、実際「.」にされてみると読み辛かったので、むしろ変換しない方がいいなー、という個人的な趣味で放置しました。そうしたい人はReplaceFilter使ってもいいわけだし。

tDiary

そういうことか。問題を理解しました。なるほど、ある意味バグかも知れませぬ。でも本当の正解は、スタイルシートで字下げするなので、気にしないのがいいかも(ってをい)。

もう一件。namazuで検索したいってことは、1ファイル/日になったテキストファイルができればいいってことかな? だったら、namazuでインデックスを作る前に以下のスクリプトを実行すればよろしいかと。2行目のTDIARY_PATHをtDiaryをインストールしたディレクトリに、3行目のDEST_PATHをテキストファイルを置きたいディレクトリに書き換えて実行すれば、テキストファイルが日付分、ぞろぞろできます。PStoreファイルのパーミッションに注意。これで乗り換えられるかな?(笑)

#!/usr/local/bin/ruby -Ke
TDIARY_PATH = '/home/sho/src/tdiary'
DEST_PATH = '/home/sho/var/namazu/diary'
 
require "#{TDIARY_PATH}/tdiary"
load "#{TDIARY_PATH}/tdiary.conf"
@data_path.chop! if /\/$/ =~ @data_path
Dir["#{@data_path}/??????"].each do |file|
  next if /\/\d{6}$/ !~ file
  PStore::new( file ).transaction do |db|
    db['diary'].each do |date,diary|
      File::open( "#{DEST_PATH}/#{date}", 'w' ) do |o|
        o.puts diary.title
        diary.each_paragraph do |p| o.write p.text end
      end
    end
  end
end
本日のツッコミ(全3件) [ツッコミを入れる]
うえち (2001-06-22(金) 13:46)

スクリプトありがとうございます.同様なことをやろうとしてPStoreファイルのパーミッションではまってました.これで乗り換え決定かな :-)

でんすけ (2001-06-29(金) 11:32)

テキスト出力を一定時間とかさせると、変更の有無なく出力してしまうので、
あまりうれしくありませんでした。
ということでちょっとtdiary本体に手を入れてみました。
<pre>

--- tdiary.rb.orig Sat Jun 16 18:34:26 2001
+++ tdiary.rb Fri Jun 29 11:25:56 2001
@@ -279,7 +279,18 @@
                                @diaries = {}
                        end
                        yield
- db['diary'] = @diaries if @dirty
+ if @dirty
+ db['diary'] = @diaries
+ if @text_output
+ dstr = date.strftime("#{@text_output_dir}/%Y%m%d")
+ File::open(dstr, 'w') do |o|
+ diary = @diaries[dstr]
+ o.puts diary.title
+ diary.each_paragraph do |p| o.write p.text end
+ end
+ end
+ end
+
                end
                File::delete( filename ) if @diaries.empty?
        end
</pre>
tdiary.confの末尾にでも
<pre>
# text output
@text_output = true
@text_output_dir = "/home/densuke/tdiary/text"
</pre>
とすると、日付毎に指定したディレクトリに出してくれます。
これなら更新された時に吐くので必要最小限の更新になると思います。

でんすけ (2001-06-29(金) 11:35)

ごめんなさい、間違えました。
<pre>
--- tdiary.rb.orig Sat Jun 16 18:34:26 2001
+++ tdiary.rb Fri Jun 29 11:32:48 2001
@@ -279,7 +279,18 @@
                                @diaries = {}
                        end
                        yield
- db['diary'] = @diaries if @dirty
+ if @dirty
+ db['diary'] = @diaries
+ if @text_output
+ dstr = date.strftime("%Y%m%d")
+ File::open("#{@text_output_dir}/#{dstr}", 'w') do |o|
+ diary = @diaries[dstr]
+ o.puts diary.title
+ diary.each_paragraph do |p| o.write p.text end
+ end
+ end
+ end
+
                end
                File::delete( filename ) if @diaries.empty?
        end
</pre>
です。dstrの記述にミスがあったです。すいません。


トップ «前日 最新 翌日» 編集
RSS feed