どういうわけだか 2005/200503.td2ファイルは存在してない。悲しい。
categoryキャッシュとamazonキャッシュから購入履歴だけは復元(できたと思う)。
要望リストから発見。自分も欲しい。古い日記もちょこちょこ修正するから。
appendとreplaceを捉まえて日付をファイルに記録していく方式になるだろうね。
↓tdiary.rb (Revision: 1.195.2.2。TDiaryLatestクラスだけ抜粋。変更点はそこだけ)
# # class TDiaryLatest # show latest mode view # class TDiaryLatest < TDiaryView def initialize( cgi, rhtml, conf ) super ym = latest_month #↓追加 if(@cgi.valid?('from') && @cgi.params['from'][0] =~ /(\d\d\d\d)(\d\d)(\d\d)/) date_from = Time::local($1.to_i, $2.to_i, $3.to_i) ym = [date_from.year, date_from.month] @date = nil else date_from = nil end #↑ unless @date then @date = ym ? Time::local( ym[0], ym[1] ) : Time::now @io.transaction( @date ) do |diaries| @diaries = diaries #↓追加 if(date_from) (date_from.day+1..31).each{|day| self.delete(Time::local(date_from.year, date_from.month, day)) } end #↑ @diary = @diaries[@diaries.keys.sort.reverse[0]] DIRTY_NONE end end if ym then y = ym[0].to_i m = ym[1].to_i oldest = oldest_month calc_diaries_size while ( oldest and @diaries_size < @conf.latest_limit ) date = if m == 1 then Time::local( y -= 1, m = 12 ) else Time::local( y, m -= 1 ) end break if date < Time::local( *oldest ) @io.transaction( date ) do |diaries| @diaries.update( diaries ) calc_diaries_size DIRTY_NONE end end #↓追加 date_to = date_from; latest(@conf.latest_limit) {|diary| date_to = diary.date; } if(date_to && date_from != date_to) if(date_to.day == 1) if(date_to.month == 1) date_to = Time::local(date_to.year-1, 12, 31); else date_to = Time::local(date_to.year, date_to.month-1, 31); end else date_to = Time::local(date_to.year, date_to.month, date_to.day-1); end @conf['date_to'] = date_to; end #↑ end end protected def calc_diaries_size @diaries_size = 0 @diaries.each_value do |diary| @diaries_size += 1 if diary.visible? end end def latest( limit = 5 ) idx = 0 @diaries.keys.sort.reverse_each do |date| break if idx >= limit diary = @diaries[date] next unless diary.visible? yield diary idx += 1 end end def cache_file( prefix ) #↓条件文追加 if(@cgi.valid?('from')) nil else "#{prefix}#{@rhtml.sub( /\.rhtml$/, '.rb' )}" end #↑ end end
↓misc/plugin/next_diaries.rb (EUCで保存後、選択して使用可能にする)
# next_diaries.rb # # <概要> 「最新」表示の時に「次の○日分」へのリンクを表示する。 # <条件> tdiary.rbのTDiaryLatestクラスに細工してあることが前提。 def next_diaries(label=nil) if(@mode == 'latest' && @conf['date_to']) %Q[<a href="#{@conf.index}?from=#{@conf['date_to'].strftime('%Y%m%d')}">#{(label || next_diaries_label)}</a>] else '' end end def next_diaries_label() "次の#{@conf.latest_limit}日分" end
MLを読んでたわけではないのにこのカブりよう。
EUCで保存して misc/plugin/ へ放り込む。その後使用可能にするのを忘れない。
# footnote2.rb $Revision: 1.0 $ (footnote.rb $Revision: 1.8 $ を改変) # # 日別表示に飛ばずに同一ページ内のアンカーに飛ぶように変更 # # footnote.rb $Revision: 1.8 $ # # fn: 脚注plugin # パラメタ: # text: 脚注本文 # mark: 脚注マーク('*') # # Copyright (c) 2001,2002 Junichiro KITA kita@kitaj.no-ip.com> # Distributed under the GPL # =begin ChangeLog 2002-05-06 MUTOH Masao <mutoh@highway.ne.jp> * change file encoding from ISO-2022-JP to EUC-JP. 2002-03-12 TADA Tadashi <sho@spc.gr.jp> * runable in secure mode. =end # initialize instance variable as taint @footnote_name = "" @footnote_name.taint @footnote_url = "" @footnote_url.taint @footnote_mark_name = "" @footnote_mark_name.taint @footnote_mark_url = "" @footnote_mark_url.taint @footnotes = [] @footnotes.taint @footnote_index = [0] @footnote_index.taint def fn(text, mark = '*') # if @footnote_name and /^append|replace$/ !~ @mode then if @footnote_name @footnote_index[0] += 1 @footnotes << [@footnote_index[0], text, mark] r = %Q|<span class="footnote"><a | # r << %Q|name="#{@footnote_mark_name % @footnote_index[0]}" | if @mode == 'day' r << %Q|name="#{@footnote_mark_name % @footnote_index[0]}" | r << %Q|href="#{@footnote_url % @footnote_index[0]}" title="#{CGI::escapeHTML text}">#{mark}#{@footnote_index[0]}</a></span>| else "" end end add_body_enter_proc(Proc.new do |date| date = date.strftime("%Y%m%d") # @footnote_name.replace "f%02d" @footnote_name.replace "f#{date}-%02d" # @footnote_url.replace "#{@index}#{anchor date}##{@footnote_name}" @footnote_url.replace "##{@footnote_name}" # @footnote_mark_name.replace "fm%02d" @footnote_mark_name.replace "fm#{date}-%02d" # @footnote_mark_url.replace "#{@index}#{anchor date}##{@footnote_mark_name}" @footnote_mark_url.replace "##{@footnote_mark_name}" @footnotes.clear @footnote_index[0] = 0 "" end) add_body_leave_proc(Proc.new do |date| if @footnote_name and @footnotes.size > 0 %Q|<div class="footnote">\n| + @footnotes.collect do |fn| r = %Q| <p class="footnote"><a | r << %Q|name="#{@footnote_name % fn[0]}" | r << %Q|href="#{@footnote_mark_url % fn[0]}">#{fn[2]}#{fn[0]}</a> #{fn[1]}</p>| end.join("\n") + %Q|\n</div>\n| else "" end end)
タイムアウトになってブラウザの用意したエラーページが表示される。
設定とか一日表示とか他の部分は正常だから「最新」表示だけがダメっぽい。キャッシュが壊れたか?
「前の日記」をたどって一日ずつ日記を確認していったら、一日だけ「2004/06/30 (水)の日記はありません。」って表示された。
「前の日記」は単なる前日を表示するリンクじゃないから 6/30の日記は無いんじゃなくて失くなったとみるべきかも。
結局、最新表示は今日も復活してない。キャッシュを消すのが面倒臭いのだ。学校にダイアルアップする必要があるので。
考えたら、latestのキャッシュが壊れてるなら、この13日の日記を書いて保存した時点でキャッシュが書き換わって表示も復活するはずなのに、そうはなってない。
それなら次の手は 6/30の日記を空白でも何でもいいので上書きすることだ。結果は...直りました。
Ruby で書かれてるからと Tiki 入れてみたけどよくわからん。一応動いてるけどロゴ画像は表示されへんし、Nodeの作り方とか今イチやし。
あと tDiary からアクセスする方法も見つからん。キーワードからリンクを作成して、そこからアクセスする都合上 GET で新規ページを作りたいねんけど、WelcomeVisitors ページの[編集]インプットボックスを参考にパラメータをいろいろ試したけど駄目やった。
YukiWiki (Perl) は InternalServerError が解決できなかった。インストールまでのドキュメントは親切。
PukiWiki (PHP) は Tiki に比べて機能も劣ってないし、ドキュメントも含めた全体の完成度が高そうだ。GET による新規ページ作成も、オフィシャルサイトで試したところパラメータ2つで出来た。
Ruby が入ってるんやし、と期待したが PHP 動かない。
Tiki で ページ表示 or ページ新規作成 するには tiki.cgi?p=〜 でOKみたい。c=〜 とかいらんことする前に試せよ、って言いたい。
Wikiスタイル には kwプラグイン を呼び出す構文が含まれてるのでシームレスに、<%=%>無しに、kw が使える。
kwプラグイン は辞書に URL を登録しておいてキーワードと引数からハイパーリンクを作成するが、URL の部分を HTML とすると <a> 以外のタグも使えるし、kwプラグインの最後で apply_plugin を呼び出すようにすれば他のプラグイン呼び出しも kwプラグイン経由で使えるようになる。はず{{fn'プラグインの呼び出し構文は既にある。今言ってるのはキーワード構文を使ったプラグイン呼び出し'}}。
待ってました。
♪
ブックマーク
同期するのが面倒臭い。
♪
Googleツールバー
「検索文字列のページ内検索」と「検索文字列のハイライト」と「上に移動」よく使う。
♪
Amazonツールバー
Google と同じくらい使うなあ。Firefox で追加の検索エンジンから Amazon を探したらあったけどアメリカ、イギリス、カナダとかばっか。
入力した文字列をURLエンコードして特定の文字列 "http://www.amazon.co.jp/exec/obidos/external-search?keyword=..." に埋め込んでそのページを表示するだけでええねんけど。
Firefox の searchplugin って単なるテキストファイルやね。Amazon 検索を追加しとこう。
自作プラグイン第2弾
昨日のと似たようなので、設定画面からプラグインが書ける。ラベルの書き換えや、他のプラグインの動作の一部修正、自作プラグインを FTP 無しにレンタルサーバーで運用中の tDiary に適用することなどを想定している。(最近 FTP に不自由してるものですから (;^_^A
ソースは以下の通り。コピーして misc/plugin/ ディレクトリに「~chotto_plugin.rb」として EUC で保存するとよい。ファイル名の頭の ~ は他のプラグインの後に読み込まれるように付けてある。もちろん、その後で設定画面からこのプラグインを使用可能な状態にすることを忘れてはいけない。
# ~chotto_plugin.rb # # 設定画面からプラグインを定義/上書きできる。 # ラベルの書き換え、プラグインの動作の一部修正など、 # ちょっとしたことに使う。 if(@conf['~chotto_plugin.script']) begin instance_eval(@conf['~chotto_plugin.script']); rescue Exception end end add_conf_proc('~chotto_plugin', 'プラグインの微調整') { if(@mode == 'saveconf') if(@cgi.params['~chotto_plugin.script'].empty? || @cgi.params['~chotto_plugin.script'][0].empty?) @conf.delete('~chotto_plugin.script'); else @conf['~chotto_plugin.script'] = @cgi.params['~chotto_plugin.script'][0]; end end <<-HTML <h3>ちょっとしたプラグインスクリプト</h3> <p>入力したスクリプトが読み込み時に実行されます。普通のプラグインと同じ内容のものを書きます。他のプラグインのちょっとした修正や、自作プラグインの試用に使って下さい。</p> <p><textarea name="~chotto_plugin.script" cols="70" rows="15">#{CGI::escapeHTML(@conf['~chotto_plugin.script'].to_s)}</textarea></p> HTML }
この前書いた希望を完全に満たすものがなかったので書いた。骨格に「append-css.rb」を利用した。
テーマ別に修正が行えるのと同時にappend-css.rbのように全てのテーマにも修正が行える。
ソースは以下の通り。コピーして misc/plugin/ ディレクトリに user_css2.rb として EUC で保存するとよい。
# user_css2.rb: lastupdate:2005-04-04 # # Append CSS fragment via Preferences Page. # # @conf['user_css2..css'] = '全てのテーマに適用するCSS断片' # @conf['user_css2.<theme>.css'] = 'テーマ「<theme>」に適用するCSS断片' # @cgi.params['user_css2.theme'] = 'CSS追加の対象となるテーマ名' # @cgi.params['user_css2.css'] = '追加するCSS断片' add_header_proc do css_base = @conf["user_css2..css"]; css_theme = @conf["user_css2.#{@conf.theme}.css"]; if((css_base && !css_base.empty?) || (css_theme && !css_theme.empty?)) <<-HTML <style type="text/css"><!-- #{css_base.gsub(/\x0d\x0a|\x0a|\x0d/, "\n\t\t") if css_base} #{css_theme.gsub(/\x0d\x0a|\x0a|\x0d/, "\n\t\t") if css_theme} --></style> HTML else '' end end # デフォルトの言語リソース unless @resource_loaded then def user_css2_label 'テーマの微調整' end def user_css2_desc <<-HTML <h3>CSS断片</h3> <p>下から選んだテーマに、スタイルシートを追加設定する場合、以下にCSSの断片を入力してください。</p> HTML end def user_css2_label2 'このテーマを修正する' end end add_conf_proc( 'user_css2', user_css2_label ) do if @mode == 'saveconf' then if(@cgi.params['user_css2.css'].empty? || @cgi.params['user_css2.css'][0].empty?) @conf.delete("user_css2.#{@cgi.params['user_css2.theme'][0]}.css"); else @conf["user_css2.#{@cgi.params['user_css2.theme'][0]}.css"] = @cgi.params['user_css2.css'][0]; end end unless(@conf_theme_list) # plugin/00default.rb からのコピー @conf_theme_list = [] Dir::glob( "#{::TDiary::PATH}/theme/*" ).sort.each do |dir| theme = dir.sub( %r[.*/theme/], '') next unless FileTest::file?( "#{dir}/#{theme}.css".untaint ) name = theme.split( /_/ ).collect{|s| s.capitalize}.join( ' ' ) @conf_theme_list << [theme,name] end end theme = (@cgi.params['user_css2.theme'][0] or @conf.theme); theme_hash = Hash[* @conf.options.map{|thm,css| (thm =~ /^user_css2\.(.+)\.css$/) ? [$1, $1.split(/_/).collect{|s| s.capitalize}.join(' ')+' (deleted)'] : nil}.compact.flatten ].update( Hash[* @conf_theme_list.flatten] ); theme_hash[''] = '* All Theme *'; <<-HTML #{user_css2_desc} <select name="user_css2.theme"> #{theme_hash.keys.sort.map{|t| %(<option value="#{CGI::escapeHTML(t)}"#{' selected' if t == theme}>#{CGI::escapeHTML(theme_hash[t])}</option>)}.join} </select> <input type="submit" value="#{user_css2_label2}" /> <p><textarea name="user_css2.css" cols="70" rows="15">#{CGI::escapeHTML( @conf["user_css2.#{theme}.css"].to_s )}</textarea></p> HTML end
少し前の話題だけど。DR にデカタンクとデカライトとキャリアを付けたモデルである DJEBEL がちょっと変わった。ホントにちょっと。バッテリー容量が少し増えて、タンクのデカールが 200cc と共通デザインになった。
ジェベルでよく言われるのが、バッテリーの弱さ と オイル滲み/漏れで、それに応えたんだろうが 自分は毎日乗ってるせいかバッテリーに不足を感じたことはない。むしろウチの DR の滴るほど漏れてるエンジンオイルを何とかして下さい。
タンクのデカールは極めて地味で小さい。下地の青色の面積が広すぎてのっぺり。見てらんない。飾り気も何もあったもんじゃない。新車より96、97年あたりのの方が見た目もキャブも魅力的。
♪
テーマの微調整
テーマなんてなくてもいいものだ。好みのものだ。だから気に入ったテーマが見つかっても、人の作ったテーマでは微妙に気に入らない所があって当然。そんな時の選択肢。
3が俺の希望だ。ファイルのアップロードが必要なく編集が簡単だから。テーマ別の上書きスタイルと常に適用する上書きスタイル(base.cssの上書きにあたる)とを設定画面で定義して、プラグインはテーマ名を見て<style>の内容を書き分ける。
♪
footnote.rb
本文と脚注とを相互に結ぶリンクは、「同一ページ内」の脚注と本文に向けてはってほしい。現状では日別表示に移動してしまう。
♪
title_list.rb, recent_list.rb
サブタイトルを抜き出してリスト表示するプラグイン。
リンクを「同一ページ内」の日記にはってほしい。あと、サブタイトルからカテゴリ除かんといて。
♪
calendar3.rb
一月分の日付リストを表示し、日付をポイントするとポップアップでサブタイトルを表示するプラグイン。
CSSで各部のスタイルを定義できるが、日記の書いてある日とない日を区別できるクラスがない。
♪
category.rb
category_form の 1Q、2Q、3Q、4Q という表記がわかりにくい。
♭ ds14050「3が俺の希望だ。」についてるセクションアンカーって etDiaryスタイルの間違いだよね。段落番号かぶってるし。
♭ ds14050うわ! append-css.rb がまさにソレ (⇒テーマの一部修正)。
♭ ds14050いや違う! 毎月テーマを変える人向きではない。