2007-12-18

Drupal で本文の最後に空白を空ける

Drupal で本文の最後に空白を空けるにはどうすればよいだろうか?

/usr/share/drupal 以下を探ってみる.

  • index.php
    • menu_execute_active_handler() を呼んでいる.
  • includes/menu.inc
    • menu_execute_active_handler() から $menu['callbacks'][$path]['callback'] を呼んでいる.これはモジュールで設定されるものだ.モジュール node を見てみる.
  • module/node/node.module
    • node_menu() を見ると,['callback']'node_page_view' が指定されている.
    • node_page_view()node_show()node_view()node_build_content()node_prepare()check_markup()
    • check_markup()module/filter/filter.module で定義されている.よって結論は,フィルターをつくればよいということになる.

2007-12-17

Docomo 携帯料金

自分の Docomo の携帯料金を再検討してみた.

2007/04~2007/11 の平均

  • 音声 1832.5 円/月
  • データ 12822.38パケット/月

ちなみにこの時点で加入しているパケット10では1パケット0.1円である.

パケットパックはパケットパック10の上はパケットパック30で+2000円なのでこのままでいい.

現在加入している音声プランのタイプSSは1000 円で1800円/月である(ファミリー割引といちねん割引の10年超の割引分も含む).その上のタイプSは無料通話分2000円で2300円/月になる. 上のデータからいうと,330円くらい安くなると考えられる.2300 - (1800 + 1832.5 - 1000) = -332.5

また,ゆうゆうコール(通話先を指定して割引)を設定するとよいと思われる.

2007-12-13

svk 実験

svn + svk でファイルの移動とファイルの更新がからみあったときの動作が興味深いので検証してみる.

まず svn リポジトリ http://example.com/svn/hello を用意する.

$ cd test
$ mkdir svn svk
$ cd svn
$ svn co http://example.com/svn/hello
A    hello/hello.c

svk でミラーし,ローカルブランチを作り,ワーキングコピーを作る.

$ cd svk
$ svk mirror //mirror/hello http://example.com/svn/hello
$ svk sync //mirror/hello
$ svk cp //mirror/hello //local/hello
A   hello/hello.c

svn 側でファイル名を変更し,コミットする.

$ cd hello
$ svn mv hello.c hello_world.c
$ svn ci

svk 側でファイルの内容を変更し,コミットする.

$ cd hello
$ vi hello.c
$ svk ci

さて,svk の困ったところは,現在のローカルリポジトリの状態が,リモートリポジトリに対してどのような状態であるかを表示するのが難しいところである.

ワーキングコピーからリモートリポジトリ(実際にはその化身であるローカルミラー)までにローカルブランチという中継点があるため,ワーキン グコピーの情報を表示する svk status などでは役に立たない.ローカルブランチの特定のパスに対して svk status 相当の動作をするコマンドがほしいところである.

まあまずは sync が必要である.

$ svk sync //mirror/hello

smerge で -C オプションを使ってみよう.まずはローカル→リモート方向.

$ svk sm -Cf .
Auto-merging /local/hello to /mirror/hello
Checking locally against mirror source http://example.com/svn/hello
    hello.c - skipped
Empty merge.

これでは状況はよくわからない.では次はリモート→ローカル.

$ svk sm -Ct .
Auto-merging /mirror/hello to /local/hello
A + ./hello_world.c
C   ./hello.c
New merge ticket:
xxxxxxxxxxxxxxxxxxxxxxxxxxx:/hello:NNN
1 conflict found.

わからないでもないが...ここで pull してみよう.

$ svk pull
Syncing http://example.com/hello
Auto-merging /mirror/hello to /local/hello
A + hello_world.c
Conflict found in hello.c:
e)dit, d)iff, m)erge, s)kip, t)heirs, y)ours, h)elp? [e] s
C   hello.c
New merge ticket: ...
Empty merge.
1 conflict found.

となりうまくいかない.では push はというと,

$ svk push
===> Auto-merging /local/hello to /mirror/hello
Empty merge.
===> Auto-merging /local/hello to /mirror/hello
    hello.c - skipped
Empty merge.

となってやはりうまくいかない.

svk help をあさっていて発見した方法を以下に示す.

$ svk sm --track-rename -f .
...
Collecting renames, this might take a while.
U   hello.c - hello_world.c
...
$ svk up -m

(注意) svk up -m のところで svk sm -t . としたら,checksum mismatch occurred なるエラーが出てにっちもさっちも行かなくなった.バグか?

2007-12-04

Subversion で working copy を即座にブランチする

方法

svn cp WC URL 形式を用いる.

$ svn info
Path: .
URL: http://example.com/svn/deopt/project/trunk
(...)
$ svn update
$ svn cp . http://example.com/svn/depot/project/branches/2007-1204-0909
$ svn revert -R .

この方法だと,ブランチしてから変更するのに比べて,ログに残るステップが一つ減るが,特に問題ない.

http://example.com/svn/depot/project/branches が存在している必要がある.コピー後は http://example.com/svn/deopt/project/trunk == http://example.com/svn/depot/project/branches/2007-1204-0909 となる.http://example.com/svn/depot/project/branches/2007-1204-0909 が既に存在していた場合にどうなるかは不明.

2007-12-02

svk 最初の実行ログ

svk depotmap --init
mkdir ~/var/lib/svk
svk depotmap --relocate // ~/var/lib/svk/repos
rm -rf ~/.svk/local

svk mirror //mirror/2007-1202-hello http://www.example.com/svn/aa-hello/branches/2007-1202-1349
svk sync //mirror/2007-1202-hello

svk mkdir //branches -m ''
svk cp //mirror/2007-1202-hello //branches -m ''

svk co //branches/2007-1202-hello
cd 2007-1202-hello/src
vi hello.c
svk ci
vi hello.c
svk ci

svk diff //mirror/2007-1202-hello //branches/2007-1202-hello
svk smerge -C //branches/2007-1202-hello //mirror/2007-1202-hello
svk smerge -l //branches/2007-1202-hello //mirror/2007-1202-hello

svn co file:///home/metalglue/var/lib/svk/repos/branches/2007-1202-hello 2007-1202-hello-svk-svn

注釈

  • smerge -l による各個ログの保持は,ミラー元への複数のコミットになるのではなく,単に一回のコミットに複数のコメントが並ぶだけ.
  • 複数のコメントが並ぶ場合,ローカルのリビジョン番号や日付が自動的に付加される.これを防ぐにはsmerge-verbatim オプションをつける.
  • 漢字は EUC なら問題ない.