Pyon's Diary
2007-10-22 舊 平成拾玖年丁亥長月拾貳日己丑 (月・晴) [長年日記]
tDiary を UTF-8 版に變更した。
今時 EUC-JP も無いだろう。と云ふ事で tDiary を UTF-8 版に變更した。
UTF-8 版を入手する。
UTF-8 版は SourceForge.net の CVS で Test_UTF8 のタグが附いてゐるので、以下の樣にすれば取得出來る。
cd ${TDIARY}
cvs -d:pserver:anonymous@tdiary.cvs.sourceforge.net:/cvsroot/tdiary login
cvs -z3 -d:pserver:anonymous@tdiary.cvs.sourceforge.net:/cvsroot/tdiary co -P -t Test_UTF8 core
cvs -z3 -d:pserver:anonymous@tdiary.cvs.sourceforge.net:/cvsroot/tdiary co -P -r Test_UTF8 plugin
cvs -z3 -d:pserver:anonymous@tdiary.cvs.sourceforge.net:/cvsroot/tdiary co -P -r Test_UTF8 contrib
データを UTF-8 に變換する。
UTF-8 に手で変換する必要の有るデータファイルは、
- core/tdiary.conf
- ${DATA}/YYYY/YYYYMM.td2
- ${DATA}/YYYY/YYYYMM.tdc
- ${DATA}/YYYY/YYYYMMDD.tdc
- ${DATA}/tdiary.conf
の五種類。
此乃内最後の ${DATA}/tdiary.conf 以外は nkf で一發變換が出來るので、其れで濟ました。${DATA}/tdiary.conf は既存の設定編輯畫面を開いて一つゞゝ手で複寫した。
一旦動作を確認する。
此處で一旦動作を確認して、動か無ければ原因を特定して手を加へる。自分の場合は、RD を入力に使用してさくらで動かしてゐるので、index.rb, update.rb の貳行目に、
$:.unshift( "[RD のディレクトリ]" )
を插入する必要が有つた。
趣味の修正を行ふ(core)。
此で動く事が確認出來たので、後は趣味の修正を行つた。對象は、
- core/tdiary.rb
- core/skel/footer.rhtml
- core/skel/header.rhtml
- core/tdiary/defaultio.rb
の四つ。
最初は core/tdiary.rb を弄つた。空の p タグを除去する樣に變更した。
@@ -395,7 +395,7 @@
end
def eval_rhtml( opt, path = '.' )
- ERB::new( File::open( "#{path}/skel/#{opt['prefix']}diary.rhtml" ){|f| f.read }.untaint ).result( binding )
+ ERB::new( File::open( "#{path}/skel/#{opt['prefix']}diary.rhtml" ){|f| f.read }.untaint ).result( binding ).gsub( /<p>\s*<\/p>/im, '' )
end
end
@@ -1040,7 +1040,7 @@
rescue Exception
raise
end
- return r
+ return r.gsub( /<p>\s*<\/p>/im, '' )
end
def restore_parser_cache( date, key )
@@ -1094,7 +1094,7 @@
# apply plugins
r = @plugin.eval_src( r.untaint, @conf.secure ) if @plugin
@cookies += @plugin.cookies
- r
+ r.gsub( /<p>\s*<\/p>/im, '' )
end
def mode
次は core/skel/footer.rhtml で、Google Analytics のコードを埋め込んだ。
@@ -4,5 +4,15 @@ Generated by <a href="http://www.tdiary.org/">tDiary</a> version <%=h TDIARY_VERSION %><br> Powered by <a href="http://www.ruby-lang.org/">Ruby</a> version <%=h RUBY_VERSION %><% if /ruby/i =~ @cgi.gateway_interface %> with <a href="http://www.modruby.net/">mod_ruby</a><% end %> </div> +<!-- ********** Google Analytics *********************************** --> +<script src="http://www.google-analytics.com/urchin.js" + type="text/javascript" charset="UTF-8"></script> +<script type="text/javascript" charset="UTF-8"> +<!-- + _uacct = "UA-1009623-1"; + urchinTracker(); +// --> +</script> +<!-- ********** Google Analytics *********************************** --> </body> </html>
其乃次は core/skel/header.rhtml で、透過 PNG を IE6 以下の版で綺麗に表示する爲の修正をした。
@@ -2,6 +2,11 @@ <html lang="<%%=h @conf.html_lang%>"> <head> <%%=header_proc%> +<!--[if lt IE 7]> +<!-- http://homepage.ntlworld.com/bobosola/pnghowto.htm --> +<!-- http://www.designwalker.com/2006/12/transparent-png.html --> +<script defer type="text/javascript" src="/js/pngfix.js"></script> +<![endif]--> </head> <body> <% if @error then %><p class="message">Security Error?<br>
更に *.td2 ファイルで日記が日付順に竝ぶ樣にした。
@@ -58,6 +58,7 @@
fhc.rewind
fhc.truncate( 0 )
fhc.puts( TDIARY_MAGIC )
+ diaries = diaries.sort
diaries.each do |date,diary|
diary.each_comment( diary.count_comments( true ) ) do |com|
fhc.puts( "Date: #{date}" )
@@ -94,6 +95,7 @@
end
# convert to referer plugin format
+ diaries = diaries.sort
diaries.each do |date,diary|
fname = file.sub( /\.tdr$/, "#{date[6,2]}.tdr".untaint )
File::open( fname, File::WRONLY | File::CREAT ) do |fhr|
@@ -235,6 +237,7 @@
begin
fh.seek( 0 )
fh.puts( TDIARY_MAGIC )
+ diaries = diaries.sort
diaries.each do |date,diary|
# save diaries
fh.puts( "Date: #{date}" )
趣味の修正を行ふ(plugin)。
次にプラグインの修正を行つた。
- plugin/amazon.rb
- plugin/bq.rb
- plugin/edit_today.rb
最初は plugin/amazon.rb で Amazon 商品プレビューの機能を合體させた。
@@ -7,6 +7,7 @@
#
require 'open-uri'
require 'timeout'
+require 'uri'
require 'rexml/document'
# do not change these variables
@@ -83,7 +84,15 @@
end
def amazon_url( item )
- item.elements.to_a( 'DetailPageURL' )[0].text
+ if not @conf['amazon.preview'] then
+ item.elements.to_a( 'DetailPageURL' )[0].text
+ else
+ asin = item.elements.to_a( 'ASIN' )[0].text
+ uri = URI::parse(item.elements.to_a( 'DetailPageURL' )[0].text)
+ uri.path = '/gp/product/' + asin + '/'
+ uri.query = 'tag=' + @conf['amazon.aid']
+ uri.to_s
+ end
end
def amazon_label( item )
@@ -316,3 +325,18 @@
alias isbnImgRight isbn_image_right
alias isbnImg isbn_image
alias amazon isbn_image
+
+# Imported from http://different-view.jp/~vette/108/amazon_preview.rb.html
+add_footer_proc do
+ aid = @conf['amazon.aid'] || ''
+ if @conf['amazon.preview'] and not aid.empty? and not @cgi.mobile_agent? then
+ <<-SCRIPT
+<!-- ********** Amazon Item Preview ******************** -->
+<script type="text/javascript" src="http://www.assoc-amazon.jp/s/link-enhancer?tag=#{aid}&o=9"></script>
+<noscript><div><img src="http://www.assoc-amazon.jp/s/noscript?tag=#{aid}" alt="" /></div></noscript>
+<!-- ********** Amazon Item Preview ******************** -->
+ SCRIPT
+ else
+ ''
+ end
+end
次に plugin/bq.rb で只の改行は br タグに變換し、blockquote タグが p タグの中に成ら無い樣に變更した。
@@ -26,7 +26,7 @@
else
result = %Q[<blockquote>\n]
end
- result << %Q[<p>#{src.gsub( /\n/, "</p>\n<p>" )}</p>\n].sub( %r[<p></p>], '' )
+ result << %Q[<p>#{src.gsub( /\n\n/, "</p>\n<p>" ).gsub( /\n/, "<br/>\n" )}</p>\n].sub( %r[<p></p>], '' )
result << %Q[</blockquote>\n]
if url then
cite = %Q[<cite><a href="#{h url}" title="#{h bq_cite_from( title )}">#{title}</a></cite>]
@@ -35,6 +35,6 @@
cite = %Q[<cite>#{title}</cite>]
result << %Q[<p class="source">[#{bq_cite_from( cite )}]</p>\n]
end
- result
+ %Q[</p>\n] + result + %Q[<p>]
end
最後は plugin/edit_today.rb でリンクを「[」と「]」とで圍む樣に變更した。
@@ -19,7 +19,7 @@
unless @conf.mobile_agent?
r = <<-HTML
#{title}\n<span class="edit-today">
- <a href="#{@update}?edit=true;#{date.strftime( 'year=%Y;month=%m;day=%d' )}" title="#{edit_today_edit_label( date )}" rel="nofollow">#{caption}</a>
+ [<a href="#{@update}?edit=true;#{date.strftime( 'year=%Y;month=%m;day=%d' )}" title="#{edit_today_edit_label( date )}" rel="nofollow">#{caption}</a>]
</span>
HTML
else
以上で終はり。此でもう機種依存文字とかに惱まされる事は無いかな。
ミクシィで自分の外部ブログへのリンクがおかしい。(FeedBurner が腐つてゐる?)
先日、友人から「ミクシィから日記へ飛べないよ。」と云はれた。
で確認してみると慥かに飛べない。飛ぶと以下の樣なエラーが出力された。
Not Found The requested URL /diary/20020728.html#p05 was not found on this server. Apache/1.3.39 Server at www.pyon.net Port 80
其乃時 Firefox のアドレスバーは、
http://www.pyon.net/diary/20020728.html%23p05
と成つてゐた。フラグメントの「#」が URL エンコードされてゐた。
此乃日記の RSS は
- tDiary の makerss.rb プラグインで出力し、
- 其れを FeedBurner に登録して、
- FeedBurner で變換された RSS をミクシィに登録してゐる。
と成つてゐる。
tDiary の makerss.rb プラグインが出力する RSS ではフラグメントの「#」は URL エンコードされてをらず、FeedBurner が變化した後で URL エンコードされてゐた。
いつから仕樣が變はつたのだろう。
取敢へずミクシィには tDiary の makerss.rb プラグインが出力する RSS を登録し直して置いた。
追記: FeedBurner に質問してみた。(2007-11-01)
何にせよ此乃儘では埒が空か無いので FeedBurner サポートフォーラムで質問してみた。
すると半日後に中の人から囘答が在つた。
(省略)お問ひ合はせいたゞきました現象につきまして、
弊社にて確認いたしました。
米國側へ確認と修正の依頼を行ひましたので、
大變恐れ入りますが今しばらくお待ちいたゞけ
ますでせうか。(省略)
[FeedBurner サポートフォーラムより引用]
不具合だつたらしい。直ると良いな。
追記: 直つた模樣。(2007-11-10)
けふフォーラムを確認したら修正した旨の連絡が入つてゐた。
早速確認した處、以前の樣に「#」附きの URL でもキチンと遷移する樣に戻つてゐた。
速攻でミクシィに喰はせるフィードを FeedBurner のものに戻した。