Pyon's Diary
2002-10-22 舊 平成拾肆年長月拾漆日 (晴) [更]
まあ、
慥かに宿主が滅んで仕舞へば病原菌もゐなく成るでせうねえ。
Microsoftが總務省にオープンソース反對の壓力。
(/.J經由) 閉鎖的なOSにも機會均等なら、Amiga, Mac, MSX, etc. も平等に導入しても好いんだな?>M$
第壹囘 攻撃者側から見た侵入前の事前調査(下見)。
(@IT經由) やつぱし基本はtelnetなのか。
tDiaryを最新版(CVS版)に入換へてみた。
以下覺書。
ディレクトリ$HOME/public_html下の構成は下記の樣に成つてゐるので、
$HOME
+-- public_html
| +-- diary (tDiary 本體の有るディレクトリ)
| +-- erb
| +-- plugin
| +-- skel
| +-- theme
|
+-- tdiary (日記データの有るディレクトリ)
+-- cache
| +--html
|
+-- index
ディレクトリ $HOME/public_html/diary の中身を入換へる。又tDiaryのデータ保存形式が 1.4.x ではバイナリ形式、1.5.x からテキスト形式に變更されたので $HOME/tdiary 以下の日記データを變換しないと成ら無い。
先づ、データのバックアップを取る。ディレクトリ$HOME/public_html/diaryは$HOME/public_html/diary.orgにリネームして置く。
$ cd $HOME $ cp -pr tdiary tdiary.org $ cd public_html $ mv diary diary.org
次に最新版のtDiaryを持つて來る。$HOME/work/tdiaryと云うディレクトリを掘つて、其之中でcvsコマンドを實行{{fn "tDiary のソースの取得法の頁を參照。"}}してリポジトリに在るファイルを持つて來る。
$ cd $ mkdir -p work/tdiary $ cd work/tdiary $ cvs -d:pserver:anonymous@cvs.tdiary.sourceforge.net:/cvsroot/tdiary login $ cvs -z3 -d:pserver:anonymous@cvs.tdiary.sourceforge.net:/cvsroot/tdiary co tdiary
するとディレクトリ$HOME/work/tdiaryの中にcore, plugin, themeの三つのディレクトリが出來る。此之内のcoreを$HOME/public_html下にtdairyと云ふ名前で移動する。
$ mv $HOME/work/tdiary/core $HOME/public/diary
結果此之時點でのディレクトリ構成は下の樣に成る。
$HOME
+-- public_html
| +-- diary (新しい tDiary の有るディレクトリ)
| | +-- erb
| | +-- plugin
| | +-- skel
| | +-- tdiary
| | +-- theme
| |
| +-- diary.org (舊い tDiary の有るディレクトリ)
| +-- erb
| +-- plugin
| +-- skel
| +-- theme
|
+-- tdiary (日記データの有るディレクトリ)
| +-- cache
| | +--html
| |
| +-- index
|
+-- tdiary.org (舊い日記データの有るディレクトリ)
+-- cache
| +--html
|
+-- index
次に行ふのは既存の日記の(バイナリ→テキスト)變換{{fn "日記のデータ變換法の頁を參照。"}}を行ふ。其之爲にtDiaryの設定ファイル$HOME/public_html/diary/tdiary.confを編輯する。
舊いtdiary.confを元に新しい設定ファイルを書いて行く。最低限必要だと思はれる*1のは@data_pathの設定。此處に$HOME/tdiaryを指定して置く。
@data_path = $HOME/tdiary
其れからディレクトリ$HOME/public_html/tdiary(新しいtDiaryの在るディレクトリ) で變換スクリプトconvert2.rbを實行する*2。
$ cd $HOME/public_html/tdiary $ ruby misc/convert2.rb
此でディレクトリ$HOME/tdiaryの下に2002(今年は西暦2002年)と云ふディレクトリが出來る。其之中にはYYYYMM.{td2,tdc,tdr}と云ふファイルが出來てゐる筈。新しいディレクトリ構成は下の樣に成る。
$HOME
+-- public_html
| +-- diary (新しい tDiary の有るディレクトリ)
| | +-- erb
| | +-- plugin
| | +-- skel
| | +-- tdiary
| | +-- theme
| |
| +-- diary.org (舊い tDiary の有るディレクトリ)
| +-- erb
| +-- plugin
| +-- skel
| +-- theme
|
+-- tdiary (日記データの有るディレクトリ)
| +-- 2002 (2002 年の日記データの在るディレクトリ)
| +-- cache
| | +--html
| |
| +-- index
|
+-- tdiary.org (舊い日記データの有るディレクトリ)
+-- cache
| +--html
|
+-- index
此處でブラウザからアクセスしてみて日記が讀めるかを確認する。きちんと日記が讀めれば九分九厘作業は終はり。後は新しい主題(テーマ)を擇んだり、プラグインの設定をすれば御仕舞ひ。
※ Namazuの設定に關しては2002/08/13の日記を參照の事。
な○こ [ミッキーは行き続けるので権利も何処までも伸びるでしょう。自分で自分の首を締めてることに気が付くまではずーっと。>著作..]
ぴょん [自國産業を保護する爲に、此之儘何百年でも延びて行つたりして。米國ならやりさう。]
2006-10-22 舊 平成拾捌年葉月朔日 (日・曇) [更]
地元の商店街で御祭。
歌手招いて唄はせたり、藝人を招いて藝をさせたり、後はボランティア達が屋臺で燒き蕎麦を賣つたりしてゐた。
此之商店街は年に數囘、此之手の祭りを催してゐる。偶には寄附でもしてみようか。
FULL SWING (BOB TAIL, 池の上)
けふは FULL SWING の演奏會。場所は池の上の BOB TAIL。二部構成で第壹部は、
- Lucky Seven.
- Humpty Dumpty.
- Sunset Clouds.
- Father Dozes.
- My Little Lover.
- Favorite Phrase.
- Happy Hours.
第壹部の Happy Hours を聽いてゐる時に、代々木公園で初めて FULL SWING を觀た時の影像が頭に蘇つて來た。酔つてゐるので殘りは後日。
晩御飯。
- BOB TAIL (池の上)
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 のものに戻した。
2008-10-22 舊 平成廿年戊子長月廿肆日乙未 (水・晴) [更]
File::Tempでどうしよう。(都合良く削除されない)
最近File::Tempを使つてみたがちと困つた事。
#!/usr/bin/perl
use strict;
use warnings;
use Carp;
use File::Temp qw(cleanup);
use IO::File;
use Readonly;
Readonly my $unlink => 1;
my $filename;
eval {
my $fh = File::Temp->new(
UNLINK => $unlink,
DIR => q{./},
SUFFIX => '.dat',
TEMPLAGE => 'tempXXXX',
) or croak q{Can't open tmpfile.};
$fh->write(qq{test\n});
$fh->flush;
$filename = $fh->filename;
};
$@ and croak $@;
-f $filename or carp qq{$filename doesn't exist.};
UNLINKを1にした状態で状態で實行すると、
% perl test.pl ./j0qVCbPfFh.dat doesn't exist. at test.pl line 26
と成つてスコープの外で一時ファイルは削除されて了つてゐる。
UNLINKを0にした状態だと、
% perl test.pl (出力無し)
でスコープの外でも一時ファイルは存在してゐるが、プログラムが終了しても殘つてしまつてゐた。
何か上手い方法は無いだらうか。
追記: (2008-10-23)
外のスコープでファイルハンドルを持つ樣にすれば當然大丈夫だつた。
#!/usr/bin/perl
use strict;
use warnings;
use Carp;
use File::Temp;
use IO::File;
use Readonly;
Readonly my $unlink => 1;
my $filename;
my $fh;
eval {
$fh = File::Temp->new(
UNLINK => $unlink,
DIR => q{./},
SUFFIX => '.dat',
TEMPLATE => 'tempXXXX',
) or croak q{Can't open tmpfile.};
$fh->write(qq{test\n});
$fh->flush;
$filename = $fh->filename;
};
$@ and croak $@;
carp $filename. ( -f $filename ? q{ exists.} : qq{ doesn't exist.} );
の樣にしておいて、
% perl test.pl ./tempUfid.dat exists. at test.pl line 26
プログラムが終了した後は一時ファイルは削除されてゐた。
追記: SIGINT等で中斷された場合は殘つた。(2008-10-23)
但しSINGINT等を受取つた時は一時ファイルは削除されてゐなかつた。
其處でシグナルハンドラを定義して其處でexitする樣にするとプログラム終了時に一時ファイルは削除された。
#!/usr/bin/perl
use strict;
use warnings;
use Carp;
use File::Temp;
use IO::File;
use Readonly;
Readonly my $unlink => 1;
$SIG{INT} = sub { exit; };
my $filename;
my $fh;
eval {
$fh = File::Temp->new(
UNLINK => $unlink,
DIR => q{./},
SUFFIX => '.dat',
TEMPLATE => 'tempXXXX',
) or croak q{Can't open tmpfile.};
$fh->write(qq{test\n});
$fh->flush;
$filename = $fh->filename;
};
$@ and croak $@;
carp $filename. ( -f $filename ? q{ exists.} : qq{ doesn't exist.} );
kill 2, $$;
でも此れだとSIGHUP, SIGINT, SIGKILL等受取りさうなシグナル全部に附いてハンドラを定義しないと成らないのだらうか。其れも綺麗で無いなあ。
2010-10-22 舊 平成廿貳年庚寅長月拾伍日乙巳 (金・曇) [更]
全彈撃ち盡くし尽くし外交。
職場を一時間早く抜け出して日本青年館に向かつた。上着を着てこなかつた所爲で寒かつた。
日本青年館に着くと、鳥肌實のファンさうな人達が屯つてゐた。
四半刻過ぎた頃にち○し○が來た。
寒かつたので中に入つた。
寒かつたので長袖のシャツを買つて手洗ひで來た。今後いつ着るのだらう?。
今年も面白かつた。
昔の瘠せてゐた頃の方が格好良いと思つてゐたのは自分だけではなかつた。終はりの方で質問タイムがあつて「瘠せないんですか?」と云ふ質問が出た時は「うんゝゝ」と頷いてしまつた。
來年は例年通り新曆十二月に九段會館で開催されると良いな。