ももらぼっ!にっき


2008年05月21日 [長年日記]

_ tDiaryをさくらへ。

移行してみた。

これでどうだろう?

_ 今後は。

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を学んでいったかと、その時々の疑問をそのまま書いてくれているのが、同様の勉強を始めようとしている私には心強い感じです。
本日のツッコミ(全1件) [ツッコミを入れる]

_ ももたろ [ツッコミもテストしておこう。]


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] 緯度経度から住所を探す

rgeocode.php - 逆ジオコーディングサービス

これで、twitterに現在地を表示させられる? すでにそんなサービスはありそうだけど。

_ [hidden] 複数のサイトに書き込みを行うインターフェースの実装。

ここ(tDiary)とか、mixiとか、Twitterとかとかとか…。

いろんなサービスがあるので、ひとりで日記的ブログ的スペースをいくつも使用している人は多いと思います。 書きたいと思ったことをすぐに書けずに、書く先を決めることから始めないといけないのはちょっとストレスが溜まります。

なので、いろんなサイトに書き込みを行える統括的なインターフェースを持ったWEBサービス(かアプリケーション)があればいいなー。 プラグインな形式で複数のサービスに対応させるようにして。

って思ってみたけど、既にありそう。 探すまでは[hidden]にしとこう。

_ [tDiary] hide_category2.rbの続き。

…書いた内容を見るすべが無いことにいまさらながら気がつきました(遅すぎ)。

hidden参照モード、見たいな事ができるといいのかな。

ページのどこかにパスワード入力エリアを設けておいて、そこにパスワードが入力されたらcookieあたりにそれを保存しておく。んで、表示側ではcookieの内容を参照して、[hidden]を表示するかどうかを切り替える、と。cookie盗まれたら全部見られちゃうけど、その辺については今後の課題としておこう。

今日は実装する暇が無いので、また今度。


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に入って聞いてみるかなー。

_ [tDiary] hide_section.rb

hide_category2.rbだと、カテゴリを隠すことになっちゃってちょっと違うかなーと思って名称変更。 hide_section.rbとしました。

前回気付いた、[hidden]な内容が参照できない問題を解決してみました。 アプローチは前回書いた通りですが、上に書いた通り設定画面からクッキーへの書き込みが出来なかったので、無理やり修正したupdate.rbが必要です。

長くなっちゃうので、ここに置いてみたので見てみてください。


2008年05月26日 [長年日記]

_ [W-ZERO3] WILLCOM 03

伊藤さんとこで知ったのだけど、これは食指が動くなぁ。

2モードイルミネーションキーって面白そう。自分で好きなイルミネーションに変えたりできると面白そうなんだけど。

とりあえずW-VALUEの残金を払ってこないとだな。

本日のツッコミ(全2件) [ツッコミを入れる]

_ 藤代千尋 [アプリがいろいろ変わりそうで、Ad[es]からは変えづらいです。(^^;)]

_ ももたろ [でもまぁ、その気になれば今までのソフトも使えるでしょうし。 困れば作ったらいいんですよ(^^;;]


2008年05月27日 [長年日記]

_ サイトを復旧させたのは。

Wicketのおべんきょ結果を残しておきたかった為なんだけど。

急に時間がなくなって、全然何もできていない…。 とはいえ、サイト復旧作業前に少しだけおべんきょしていた結果はSubversionのログに書いてあるので、今週中に1つはエントリをあげることを目標にしよう。

…って、このままだとずるずると何もしない日々が続きそうなので、書いておこう。

ニコ動楽しいよ、ニコ動。

orz


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なので、そっちにカウンタをつけるのは後日、ということで…。