2008-10-06(月)
■ Pistonを使ってtDiary公式trunkを追いかける(その後、うまく運用できなかった)
追記:その後、うまく運用できなかったので参考にしない方がよいと思います。
現状の俺trunkはStable-2.2をベースにしている。これをPistonで管理するtrunkにするにはどうしたらいいか?
一度ブランチを切って、trunkのすべてを消去してからpiston importして公式と同じ状態に。そのtrunkにさきほど作ったブランチをマージ、と思ったけど、これだと巻き戻るよね?それにそういう変則的なブランチの使い方をするとすぐに脳が混乱するのでやめ。
Pistonはsubversionの属性を見て動いているので、それを手動で書き換えるという手もありそう。だけど、piston:rootまで書き換えてうまく動くのかな。実験してみようかとも考えたけど、望まない挙動をしていたとしても自分では検知できない可能性も高い。
今のところローカルでの変更点も少ないことだし、piston importしたあとにあらためて変更を加えよう。今までの変更履歴は消える(よね)けど、いいや。
まずはコミットしていない変更がないことを確認してから現状のtdiaryプロジェクトをexportしておく。バックアップとして。
~% cd local/tdiary/ ~/local/tdiary% svn st ~/local/tdiary% cd ~/tmp/ ~/tmp% svn export $SVN/tdiary/trunk tdiary-2_2-localized A tdiary-2_2-localized (中略) A tdiary-2_2-localized/plugin/title_tag.rb Exported revision 13.
localized ってのは変か。まあいい。
いちおうリポジトリ自体もバックアップを取る。dumpを取るのではなくファイルコピーでお手軽に済ませてしまった。
trunkをcheckoutしたworkingcopyであるところの~/local/tdiaryを変更してみる。
すべてのディレクトリをsvn deleteしてからコミット。
~/local/tdiary% svn ci -m "delete Stable-2_2base files and derectories" Deleting blogkit Deleting contrib Deleting core Deleting plugin Committed revision 14.
svn updateしてからまずはtdiary/coreをpiston import。先端を持ってきてしまおう。
~/local/tdiary% piston import https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/core core Exported r3361 from 'https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/core' to 'core'
属性を確認してみる。
~/local/tdiary% svn propget piston:root core https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/core ~/local/tdiary% svn propget piston:remote-revision core 3361 ~/local/tdiary% svn propget piston:local-revision core 14 ~/local/tdiary% svn propget piston:uuid core 7f22e88f-374d-0410-998f-c91420d97ba2
よーし。この調子でpluginとblogkitもpiston import。
~/local/tdiary% piston import https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/plugin plugin Exported r3361 from 'https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/plugin' to 'plugin' ~/local/tdiary% piston import https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/blogkit blogkit Exported r3361 from 'https://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/blogkit' to 'blogkit'
テーマはいいや。サイト全体でCSSを管理するかたちにする予定なので。
さらにcodereposからplatform/tdiary/pluginをplugin_codereposとしてpiston import。flickr.rbやgoogle_analytics.rbやcategory_to_tagcloud.rbなんかを使いたい。他にもおもしろそうな試してみたいプラグインもたくさんあるから。
~/local/tdiary% piston import http://svn.coderepos.org/share/platform/tdiary/plugin plugin-coderepos Exported r20836 from 'http://svn.coderepos.org/share/platform/tdiary/plugin' to 'plugin-coderepos'
これでいいかな。いちどコミットする。
~/local/tdiary% svn ci -m "piston import blogkit, core, plugin from sourceforge(r3361) and plugin-coderepos(r20836)" (中略) Committed revision 15.
取り急ぎ、日々是横着 - xrea で tDiary を正常に動かす方法(まとめ)のnph対応とか、tDiary.org - 同一サーバで複数のtDiaryを運営する方法用の共通confをcoreの中に置いて、ローカルで最初のコミットをする。
~/local/tdiary% svn st ? core/common.conf M core/index.rb ~/local/tdiary% svn add core/common.conf A core/common.conf ~/local/tdiary% svn ci -m "fix nph-header for XREA, and add common.conf" Adding core/common.conf Sending core/index.rb Transmitting file data .. Committed revision 16.
webブラウザでGenerated by tDiary version 2.3.0.20080904を確認。日記データもこれでUTF-8に変換されているんだって。えらいねえ。
このやり方だと、いわゆるvendorブランチは存在しない。trunkがその役割を引き受けているから。XREAに公開するときにはXREAリリースブランチを切る。公式の更新を取り込みたいときにはtrunkでpiston updateする。ローカルでtrunkのテストが終わりXREAを更新するときは、また次のXREAリリースブランチを切る。
あってるかなあ。なんかシンプルすぎて不安だ。
2008-10-19追記
~/local/tdiaryてのは変だね。~/share/tdiaryに移動しておいた。このあたりのUNIX作法みたいなのが身についてないよな。
2008-10-19(日)
■ tDiary2.3.0.20080904にアップデート
もたもたしていたけどようやく更新した。カテゴリ画面がまだがちゃがちゃなんだけど。
いままではtDiaryをアップデートするたびにテーマも更新していた。これからは今のこのテーマをじっくりと作り込んでいくことにする。テーマディレクトリの構成もcssファイルを部品化して使い回しが効くようにしよう、と思って少し手を入れてある。このことはあとでまとめて書く、かも。
やらなきゃいけないことをリストにしておこう。
- image_ex.rbを使っていた日記をflickr.rbを使うように書き換える
- カテゴリ画面をきちんとする
- 過去の日記のタグ(カテゴリ)整理もちゃんとしないと
- リンク元の表示について
- 「その他のリンク元」を非表示にしたので、リンク元置換リストをきちんと管理する
- 検索結果は「以前の日記へのリンク元」のみに記録するようにしようかな
- ほかにもきっとたくさんある
2008-10-20(月)
■ まちゅさんがimage_ex.rbからflickr.rbへのマイグレーションツールを作ってくれるかも
はてなブックマークより。期待大。
と座して待っているだけではなく、自分でも仕組みを考えてみた。けど、どこまで親切なツールにするかっていうのが難しいなーと思った。まあ基本的には一度だけ使うツールになるのだからシンプルなものにするのがいいんだろうなあ。
自分はただダラを使っているのでローカルにテキストファイルがある。これが日記の原本。なので一気に置換するのはいろいろやり方がある。いろいろあるといいつつシェルからさくっとやる方法は知らないので調べておこうっと。
■ リンク元置換リスト登録完了
けっこうめんどい。後半は楽だったけど。
リンク元の記録について頭の中だけで考えていると混乱してきた。ので書き出して整理してみる。
- 記録除外するもの
- spam
- webからアクセスできない場所
- SNSとか
- 以前の日記へのリンク元にのみ記録するもの
- 検索結果
- あるいは本日のリンク元に記録したうえで、disp_referrer2.rbの「1日分の表示で通常のリンク元以外のリンク元を隠す」を使って非表示にするだけでもいいか?
- アクセスの多いサイトだと検索結果だけで.tdrが肥大するのだろうが、ここならさほど気にしなくてもいいかも。
- 記録しておけば「この日付の日記にどのような検索ワードでアクセスがあったか」を見るのが楽。
- でもGoogle Analyticsで見ればいいとも言える
- 検索結果
- 置換リスト未登録のもの
- disp_referrer2.rbで「その他のリンク元」として分類、隠す
以上をくぐり抜けたrefererだけが「本日のリンク元」として表示される。
いちどリンク元は全部消すべきかもしれないな。「以前の日記へのリンク元」機能がなかった時代のリンク元は、適切な日付の日記にあるとは限らないわけだから。
あと非表示にするだけでお茶を濁してきたspamがいっぱいあった。いいかげんだなあ>過去の俺
2008-10-22(水)
■ サーチエンジンの検索結果からのrefererをリンク元に記録すべきか、表示すべきかについて
ああ、そうか。「閲覧者にとって」必要かどうか、で考えればいいんだ。とある日付の日記を読んだときに「この日記にはどんな検索ワードでアクセスしてきた人がどれくらいいるのか」を知りたいと思うかどうか、それがリンクになっていて検索結果のページを見に行きたいと思うかどうかということだよな。うん、それ知りたいのは日記を書いた本人だけだろう。サーチエンジンの検索結果は「以前の日記へのリンク元」のみに記録することにしよう。
ということで「以前の日記へのリンク元」のみに記録するリストを整備しつつ、過去の検索結果からのrefererを削除開始。最初はローカルにコピーしたデータディレクトリで正規表現をテストしながらやっていたんだけど、作業を進めるうちにどんどん興奮してきて本番のデータディレクトリでざくざくざくざく削除してしまった。なんだか虚脱感あり。
これ、部屋の掃除をしているときにもなりますな。モノを捨て始めると止まらなくなって40リットル入りのゴミ袋を4袋ぐらい作っちゃうの。
2008-10-26(日)
■ image2flickr.rbを試してみる
仕事が早くて惚れるぜ!
催促しておいて使わないという手はあるまい。試してみる。
FlickrAPIのAPIキーはあるんだけど、シークレットキーが見あたらない。flickr.rbでは使わないからってんでID Managerに登録しなかったらしい。あほだな俺。あらためて取得した。
rflickrをインストール。
% sudo gem install rflickr
image2flickr.rbをcodereposからダウンロードして必要な箇所を編集。
# flickrのAPIキー @api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # flickr APIのシークレットキー @secret = 'xxxxxxxxxxxx' # tDiaryのデータフォルダ @data_path = '/Users/sen/var/tdiary/senosa' # tDiaryのイメージフォルダ @image_dir = '/Users/sen/tmp/diary_img'
さあ実行だ。初回はトークンを持っていないので、トークン発行を許可しなければいけないとのこと。表示されたURLにアクセスしてOK,I'LL ALLOW ITをクリック。これでトークンの発行が許可される。ターミナルに戻って続行。
と、いくつかERRORが。
found: {{image 0, '対峙'}}
updating 20041113_0.jpg (対峙) ...
ERROR: /Library/Ruby/Gems/1.8/gems/rflickr-2006.02.01/lib/flickr/upload.rb:146:in `initialize': No such file or directory - /Users/sen/tmp/diary_img/20041113_0.jpg
なるほど。
- image_dir内にimage_ex.rbで生成したjpgのサムネイル(s20041113_0.jpg)があるので置き換え対象になる
- が、イメージファイルそのものがjpgではない(20041113_0.gifだった)
このときにエラーになる。自分の場合はgifとpngがいくつかあった。のでちょこりと修正
--- image2flickr.rb.original 2008-10-26 17:10:03.000000000 +0900
+++ image2flickr.rb 2008-10-26 18:30:49.000000000 +0900
@@ -262,7 +262,7 @@
end
def replace(method, date, index, title)
- file = "#{@image_dir}/#{date}_#{index}.jpg"
+ file = Dir.glob("#{@image_dir}/#{date}_#{index}.{jpg,png,gif}").shift
# タイトルが未指定の場合はファイル名
title ||= File.basename(file)
id = @uploader.upload(file, title)
再度実行。無事に完了した。
Flickrにすでにアップロードされている写真は重複してアップロードしない、など抜かりのないツールであるなあ。


