2008年05月21日 [長年日記]
_ 今後は。
momo-lab.netのリソース(これはSPPDのレンタルサーバを借りていた)をさくらへ移行していく予定です。 …なんて話は前もしたような気がするけど、今度こそ実行に移そう。
んで、最終的にはさくら一本にまとめたいなーと思っている。
今度こそ。
今度こそ。
_ [tDiary] 最新おっかけ。
SPPDの時は、tDiaryを古いまま放置してしまっていたせいで警告を受け、スクリプトを実行不可に設定されてしまったのですが。
その反省を受け、今回はCVSで最新のtDiaryを追っかけることにしました。 UTF-8に文字コードを変えているとのことだけど、新しく一から始める私には関係ないかな、ということで。
…無事、CVSで最新を追っかけることが可能になった直後、「tDiary のバージョン管理システムを Subversion にした」という記事を発見。
さくらにインストールしていたSubversionは、もういらないかなーと思って削除したばっかりだったので、Subversionのインストールからやり直しましたとさorz
_ [Wicket] Wicket関連のメモ。
- Wicket-ja
- ここのwikiにある、「Maven2でQuickStart 」を取っ掛かりにして始めてみるとよいのかな。
- Wicket学習帳
- どのようにwicketを学んでいったかと、その時々の疑問をそのまま書いてくれているのが、同様の勉強を始めようとしている私には心強い感じです。
2008年05月22日 [長年日記]
_ [tDiary] 日記の一部を隠す。
…何てことできないかなぁ。
まだ、公開できる文章になっていないものを一時的に登録しておいたり、人に見せたくないアイディアを書き留めておいたり。 そんな使い方をしたいのだけど、「この日の日記を隠す」だと、1日の間に公開したいセクションと公開したくないセクションを分けられない。
なので、[hidden]タグを付けておけば、見えないようになる…みたいなことができないかなーと。
_ [tDiary] hide_category.rbプラグイン。
ということで、やってみた。 まだいろいろとおかしなところはあるけど、とりあえず本文だけは隠れている模様。
# hide_category.rb
#
# カテゴリに[hidden]があると、そのセクションを非表示にするプラグイン。
#
# 注意!
# このプラグイン内で@diariesの中身を書き換えています。
# その為、defaultio.rbで日記を保存していることが前提です。
# pstoreio.rbで日記を保存していると、非表示にしたセクションが消えちゃうと思います。
#
# 具体的には以下の前提の上に成り立っています。
# * 日記を表示するだけでは、TDiary::TDiaryBase::DIRTY_DIARYフラグが立たないこと。
# * 日記データを保存するのは、TDiary::TDiaryBase::DIRTY_DIARYフラグが立っているときだけ。
#
#TODO ./ja/hide_category.rbへ移動すること
def hide_category_conf_title
'非表示カテゴリの設定'
end
def hide_category_conf_html
<<-HTML
<p>
現在、以下の機能に未対応です。(他にもあるかもですが)
<ul>
<li>カテゴリの一覧表示</li>
<li>recent_list.rb</li>
</ul>
その為、非表示のセクションのタイトルは見えてしまいます。
</p>
<hr />
<h3>非表示にするカテゴリ名</h3>
<p>
非表示にしたいカテゴリ名を指定します。
デフォルトでは「hidden」が設定されます。
空で更新した場合には、デフォルト値が使用されます。
</p>
<p>
<input type="text" name="hide_category.category_name"
value="#{@conf['hide_category.category_name']}" />
</p>
HTML
end
# 非表示カテゴリを削除
if ['day', 'comment', 'month', 'nyear', 'latest'].include?(@mode)
cgi = CGI.new
def cgi.referer; nil; end
category_name = @options['hide_category.category_name'] || 'hidden'
@diaries.each do |date, diary|
next unless diary.methods.include?('delete_section')
now_index = 1
indexes = []
diary.each_section do |section|
if section.categories.include?(category_name)
indexes.push now_index
end
now_index += 1
end
indexes.reverse_each do |index|
diary.delete_section(index)
end
end
end
# 設定
add_conf_proc('hide_category', hide_category_conf_title, 'etc') do
category_name = ''
if @mode == 'saveconf'
category_name = @cgi.params['hide_category.category_name'][0]
else
category_name = @conf['hide_category.category_name']
end
if category_name.nil? || category_name.length == 0
category_name = 'hidden'
end
@conf['hide_category.category_name'] = category_name
hide_category_conf_html
end
_ とりあえず。
簡易的だけど、さくらのサーバに移行が完了しました。 まだ、過去の日記とか掲示板とかが移行できてないけど、それはまぁぼちぼち。
まだ、ドメインの移行ができてないので、.htaccessでリダイレクトしてます。 こんな感じで。
Redirect permanent / http://momo-lab.sakura.ne.jp/
さくらで独自ドメインを使うようにしたら、元々のドメイン(momo-lab.sakura.ne.jp)ってどうなるのかな…。 こっちのドメインで運用しているところがあるので、両方使えるといいんだけどな。
_ [tDiary] hide_category2.rb プラグイン。
ちょっと違ったアプローチで試してみました。 私はにっきをRDスタイルで書いているので、とりあえず、それ限定で。
# hide_category2.rb
module ::TDiary
class RdDiary
alias :each_section_orig :each_section
def each_section
each_section_orig do |section|
next if section.categories.include?('hidden')
yield section
end
end
def to_src
r = ''
each_section_orig do |section|
r << section.to_src
end
r
end
end
end
xx_style.rbのeach_sectionを無理やり書き換えてしまう、というアプローチ。 単純にeach_sectionを書き換えるだけでは、to_srcまで変わってしまい保存データからも[hidden]なセクションが消えてしまったので、to_srcも置き換えています。 スタイルによって実装を変えないといけなさそうだったので、とりあえず自分の使っているRDスタイルだけ作ってみたんだけど、今度はいい感じで動いているっぽいです。
…まぁ、これをテストする過程で、[hidden]で書いていた日記を全て消してしまったんだけどねorz
2008年05月23日 [長年日記]
_ [tDiary] 過去にっき。
適当なスクリプトを書いて、手動でコンバートしました。
require 'fileutils'
require 'kconv'
Dir.glob("200*/*.td[2c]") do |file|
data = File.open(file) {|f| f.read}
dir = "result/#{File.dirname(file)}"
FileUtils.mkdir(dir) unless File.exist?(dir)
File.open("result/#{file}", "w") {|f| f.write data.toutf8}
end
リファラ(*.tdr)はあまり見たくないので、移行するのを止めちゃいました。 すっきりしていい感じ♪
_ [hidden] 複数のサイトに書き込みを行うインターフェースの実装。
ここ(tDiary)とか、mixiとか、Twitterとかとかとか…。
いろんなサービスがあるので、ひとりで日記的ブログ的スペースをいくつも使用している人は多いと思います。 書きたいと思ったことをすぐに書けずに、書く先を決めることから始めないといけないのはちょっとストレスが溜まります。
なので、いろんなサイトに書き込みを行える統括的なインターフェースを持ったWEBサービス(かアプリケーション)があればいいなー。 プラグインな形式で複数のサービスに対応させるようにして。
って思ってみたけど、既にありそう。 探すまでは[hidden]にしとこう。
2008年05月25日 [長年日記]
_ [hidden] subversionでサイトを更新。
subversionでサイトのリソース管理をするようにしました。 忘れないように、post-commitの全文を張っておきます。
#!/bin/sh cd /home/momo-lab/www /home/momo-lab/local/bin/svn update >> /home/momo-lab/repos/log/svnupdate.log &
_ [tDiary] add_conf_procでadd_cookieしてもクッキーが出力されない。
プラグインの設定画面でOKボタンを押したタイミングで、クッキーを出力するようにしたくて、add_conf_proc内でadd_cookieメソッドを呼んでいたんだけど、どうしてもクッキーが出力されない。 どうしてかなーと思って、いろいろ見てみると、update.rbのレスポンスヘッダではSet-Cookieを出力しないようになっているようでした。 update.rbではクッキーを使わないようにしないといけない理由ってなにかあるんでしたっけ?
とりあえず、今回の目的を満たすためだけのパッチは以下のような感じです。
Index: update.rb
===================================================================
--- update.rb (revision 3270)
+++ update.rb (working copy)
@@ -48,27 +48,29 @@
end
begin
- head = body = ''
+ head = {}
+ body = ''
if @cgi.mobile_agent? then
body = conf.to_mobile( tdiary.eval_rhtml( 'i.' ) )
- head = @cgi.header(
+ head = {
'status' => '200 OK',
'type' => 'text/html',
'charset' => conf.mobile_encoding,
'Content-Length' => body.size.to_s,
'Vary' => 'User-Agent'
- )
+ }
else
body = tdiary.eval_rhtml
- head = @cgi.header(
+ head = {
'status' => '200 OK',
'type' => 'text/html',
'charset' => conf.encoding,
'Content-Length' => body.size.to_s,
'Vary' => 'User-Agent'
- )
+ }
+ head['cookie'] = tdiary.cookies if tdiary.cookies.size > 0
end
- print head
+ print @cgi.header( head )
print body if /HEAD/i !~ @cgi.request_method
rescue TDiary::ForceRedirect
head = {
MLに入って聞いてみるかなー。
2008年05月26日 [長年日記]
_ [W-ZERO3] WILLCOM 03。
伊藤さんとこで知ったのだけど、これは食指が動くなぁ。
2モードイルミネーションキーって面白そう。自分で好きなイルミネーションに変えたりできると面白そうなんだけど。
とりあえずW-VALUEの残金を払ってこないとだな。
2008年05月28日 [長年日記]
_ 自分の日記って。
読み直し始めると止まりませんね(^^;; 旅日記を読み直して、久しぶりに旅行に行きたくなったですよ。
で、見てみると、いろーんなものを放置してるんですねぇorz
作るだけ作って、そのままバージョンアップせずに放置しているソフトがたくさん。 W-ZERO3用ソフトなんか、手元に[es]もAd[es]もあるんだから、動作検証し直さないといけないはずなのに。 V友用ソフトって今どーなってるんだろう。
作るだけ作って、そのまま公開もせずに放置しているソフトも手元に転がってます。 caltとか、DirDiff高速・多機能化版とか、convunitとか。 どれも一応公開できるレベルにはなっているハズなんですけれど。
作りかけてそのまま放置しているソフトはもっと転がってます。 メールバックアップとか、メール送受信とか、Execシリーズの集約版とか、みいぽんとかとかとか。
こんな、投げっぱなしな私ですが、気付くと年単位でほっぽってたりしますが、サイト自身を止める気は無いハズですので、今後ともよろしくお付き合いくださいませ。
_ Poderosaで「最後の接続が切れたらアプリケーションを終了する」
SSHクライアントとしてPoderosaを使っているのだけど、ver3にはあった、「最後の接続が切れたらアプリケーションを終了する」オプションがver4では無くなってしまっています。 いつも、「exit」した後Alt+F4とかでアプリケーションを終了させているのだけれど、それはやっぱりめんどくさい。
ってことで、オープンソースなわけだし改造してみることにしました。
さくっとソースコードをダウンロードしてきて、VS2005で開いてデバッグ実行しようと、F5キーをポチッとすると、エラーが。クラスライブラリがスタートアップ プロジェクトになっていました。
見てみると、Executableプロジェクトがアプリケーションプロジェクトみたいですので、そいつをスタートアップ プロジェクトに変更して改めてデバッグ実行を開始。
…したのですが何もせずに終了してしまいました。
よくよく見てみると、普通にコンパイルしただけではdllが正しく配置されず、アプリケーションを起動しても何もせずに終了しちゃうようでした。UI部分までプラグイン機構を用いて作られているからのようです。
これじゃちょっとハックし辛いなーと思って出力パスを整えることにします。 とりあえず、全てのcsprojを開いて、bin\Debugとbin\Releaseを全て..\bin\Debugと..\bin\Releaseに変更してみたところ、無事デバッグ実行ができました。
…ってところで、時間がなくなったので続きは今度。
_ Poderosaで「最後の接続が切れたらアプリケーションを終了する」(2)
デバッグ実行しながら見ていくと、以下のパッチで望みのことが出来るみたいです。 面倒なのでオプション化とかはしてません。 自分の用途内ではうまくいくっぽいですが、使いこなしきれていないので他の環境でもうまくいくかは分かりません。
diff -ur poderosa410_1122_orig/TerminalSession/TerminalSession.cs poderosa410_1122/TerminalSession/TerminalSession.cs
--- poderosa410_1122_orig/TerminalSession/TerminalSession.cs Wed Nov 22 10:50:54 2006
+++ poderosa410_1122/TerminalSession/TerminalSession.cs Wed May 28 22:08:40 2008
@@ -139,7 +139,18 @@
}
private void HostCauseClose(string msg) {
if(TerminalSessionsPlugin.Instance.TerminalEmulatorService.TerminalEmulatorOptions.CloseOnDisconnect)
+ {
_sessionHost.TerminateSession();
+
+ bool isWindowClose = true;
+ foreach (ISession session in TerminalSessionsPlugin.Instance.SessionManager.AllSessions) {
+ isWindowClose = false;
+ break;
+ }
+ if (isWindowClose) {
+ this.OwnerWindow.CancellableClose();
+ }
+ }
else {
IPoderosaMainWindow window = this.OwnerWindow;
window.DocumentTabFeature.Update(_terminal.IDocument);
しばらく使ってみて様子を見てみます。 バイナリ欲しい方がもし居ましたらご一報くださいな。 公開も考えておきます。
2008年05月29日 [長年日記]
_ カウンタ。
…を付けてみました。
過去日記を見ると「30万hit!」とか言っているので、それぐらいは合ったはずなんですが、細かい数字まで覚えてないので、1からカウントし直してみることにしました。
まだ、トップページがただのHTMLなので、そっちにカウンタをつけるのは後日、ということで…。
_ ももたろ [ツッコミもテストしておこう。]