GOLD: SP七段取得

2007-10-25T02:10:00 / bm2dx / comment
AC IIDX GOLD SP七段取得! AC IIDX GOLD SP七段リザルト

先日再挑戦したSP六段の結果が意外に良く、以前よりかなり余裕を持ってプレイできたました。その勢いで特攻してみたところ……SP七段取得! 自分でも信じられません。

特攻とは言ったものの、実際には次のような予習をしました。

予習の段階では「THE SAFARIまでは何とか辿り着けるけれど、THE SAFARIのBAD+POOR数が110程度と多過ぎるので途中で落ちる」と予想を立てていたのですが、本番では予想以上にゲージが残せたのもあってギリギリのところでクリアできました。でも、本当にぶっつけ本番でプレイしたらまず落ちてたでしょうね。特にrainbow rainbowは1+3/2+4+6交互とか1+7/3+5トリルとか2+6/4トリルとか後半の対称地帯とか、事前に把握してないと捌けませんでした。

色々と思うところはあるのですが、取り敢えずこれで一区切り。今後は未プレイ曲を埋める等、のんびり遊ぶことにします。

Vim: <C-g>uの副作用

2007-10-21T09:55:00 / vim / comment

Insert modeにおいて<C-w><C-u>での削除をundoできるように、以下のようなmappingsを定義しておいたのですが、実は予期しない副作用があることに気付きました。

" Undoable <C-w> and <C-u>.
inoremap <C-w>  <C-g>u<C-w>
inoremap <C-u>  <C-g>u<C-u>

通常、<C-w>/<C-u>はInsert modeの開始位置までしか削除しません。既にカーソルがInsert modeの開始位置にある場合には、その位置を越えて削除を行います。

しかし、上記のmappingsを定義した場合、この「Insert modeの開始位置で一旦止まる」という挙動がなくなり、一気に削除されます。具体的には以下のような感じです:

# ``|''はカーソル位置

# 初期状態
foo bar| baz

# 適当に文字を挿入した
foo barINSERTED| baz

# <C-u>の挙動
foo barINSERTED| baz
foo bar| baz            # 1回目 - 開始位置までしか削除されない
| baz                   # 2回目 - 通常通り、行頭まで削除される

# <C-g>u<C-u>の挙動
foo barINSERTED| baz
| baz                   # 1回目 - 一気に行頭まで削除される

この副作用がかなり不便です。「止まる」ことを期待してるのに止まってくれないのですから。問題のmappingsを削除しようにも、undoできないと稀に困りますし。どうしたものか……

Vim: touser - support for user-defined text objects

2007-10-16T02:57:00 / vim / comment

touser 0.0をリリースしました(CodeRepos::Share/lang/vim/touser)。ユーザー定義のtext objectsを簡単に追加・使用するためのサポートライブラリです(ライブラリというには規模は小さいですけど)。

一応pluginの形で書いたものの、これ単体ではUIに対して何の影響もないので、別の形でまとめるべきだとは思います。とはいえ、Vimはライブラリ的なスクリプトを扱うための標準的な方法がないので困っています。:help write-library-scriptの記述はあるものの:

autoloadを使う方法
touserでは本来のメリットがない。
識別子の制限が気に食わない。
exists():runtimeを使う方法
ライブラリスクリプトを置く標準的なディレクトリが存在しない。
この処理をまとめて行う:require:import的なコマンドが存在しない。

という状態ですから。

身辺整理はじめました

2007-10-15T00:32:00 / diary / comment

身辺整理はじめました。近々、引越しする予定なので、その準備的な意味で。

まずは不要な物の処分を、と思って取り敢えず本の整理から始めたのですが、改めて見てみるとかなりの量でした。文庫、新書、雑誌、漫画の単行本だけでダンボール2箱がパンパンです。重すぎて運べません。誰か助けて。まだ技術書籍、昔の教科書類、そして同人誌という強敵達が待ち構えているのに。

本の処分を終えたとしても、CD、DVD、ゲーム機、PC関係、衣服が残っているという……何か嫌になってきたな。

しかし、何かと予想外の代物が出てきて吹きまくりです。DPS D6~D16とか、Ragnarok Onlineのファンアートブック(韓国版)とか、アニメ版「シスター・プリンセス」DVD全巻+初回限定版のフィギュア計9体とか、TCG用バインダー3冊(柄はモンスター・コレクションなのに中身はTo HeartやAIRのTC)とか。特にシスプリがどう処分したものか困ってます。中古屋に流そうにもフィギュアが……誰か引き取ってください。

本日のお買い物 (2007-10-07)

2007-10-07T23:17:00 / book, diary / comment
本日のお買い物 その1
ミュンヒハウゼン症候群 - ココアリロン 総集編
かおのない同人誌
ぷりん横丁 - 有馬神社の娘さん
本日のお買い物 その2
天櫻みとの - プリティ・パラダイス
小菅勇太郎 - 地上の天使

あー、つい、ふらっと。「ココアリロン 総集編」以外は半ば衝動買い。

svk: 特定条件下でpushできない

2007-10-02T17:39:00 / prog, svk / comment

前提

使用ツール
$ svnadmin --version
svnadmin, version 1.4.2 (r22196)
   compiled Nov 10 2006, 17:39:50
...  # 冗長なので省略。以下同様。

$ svn --version
svn, version 1.4.2 (r22196)
   compiled Nov 10 2006, 17:39:50
...

$ svk --version
This is svk, version 1.08.
テスト用リポジトリ作成
$ cd /tmp

$ svnadmin create test-depot

$ svnadmin create orig-repos

$ svk depotmap /test /tmp/test-depot
New depot map saved.
orig-reposをsvkでミラーして、そのミラーに対するローカルブランチを作成。
$ svk mirror /test/mirror/orig-repos file:///tmp/orig-repos
Committed revision 1.

$ svk sync /test/mirror/orig-repos
Syncing file:///tmp/orig-repos

$ svk copy -p /test/mirror/orig-repos /test/local/orig-repos
Waiting for editor...
Committed revision 2.
適当なプロジェクトを作成。ローカルブランチにimportする。
$ mkdir lunar-project

$ touch lunar-project/{COPYING,ChangeLog,NEWS,README}

$ svk import lunar-project /test/local/orig-repos/lunar-project
Committed revision 3.
Import path /test/local/orig-repos/lunar-project initialized.
Waiting for editor...
Committed revision 4.
Directory /tmp/lunar-project imported to depotpath /test/local/orig-repos/lunar-project as revision 4.
リポジトリの状態を確認。特に問題はない。
$ svk info /test/mirror/orig-repos
Depot Path: /test/mirror/orig-repos
Revision: 4
Last Changed Rev.: 1
Mirrored From: file:///tmp/orig-repos, Rev. 0

$ svk info /test/local/orig-repos
Depot Path: /test/local/orig-repos
Revision: 4
Last Changed Rev.: 4
Copied From: /mirror/orig-repos, Rev. 1
Merged From: /mirror/orig-repos, Rev. 1

$ svk info /test/mirror/orig-repos/lunar-project
Filesystem has no item: File not found: revision 4, path '/mirror/orig-repos/lunar-project'

Filesystem has no item: File not found: revision 4, path '/mirror/orig-repos/lunar-project'

$ svk info /test/local/orig-repos/lunar-project
Depot Path: /test/local/orig-repos/lunar-project
Revision: 4
Last Changed Rev.: 4

問題

ローカルブランチ全体をcheckoutする。
$ mkdir work

$ cd work

$ svk co /test/local/orig-repos
Syncing /test/local/orig-repos(/local/orig-repos) in /tmp/work/orig-repos to 4.
A   orig-repos/lunar-project
A   orig-repos/lunar-project/ChangeLog
A   orig-repos/lunar-project/COPYING
A   orig-repos/lunar-project/NEWS
A   orig-repos/lunar-project/README

$ cd orig-repos/

$ svk info
Checkout Path: /tmp/work/orig-repos
Depot Path: /test/local/orig-repos
Revision: 4
Last Changed Rev.: 4
Copied From: /mirror/orig-repos, Rev. 1
Merged From: /mirror/orig-repos, Rev. 1

$ svk info lunar-project/
Checkout Path: /tmp/work/orig-repos/lunar-project
Depot Path: /test/local/orig-repos/lunar-project
Revision: 4
Last Changed Rev.: 4
ミラー元にpushする(これは動く)。
$ svk push
Auto-merging (0, 4) /local/orig-repos to /mirror/orig-repos (base /:0).
===> Auto-merging (0, 2) /local/orig-repos to /mirror/orig-repos (base /:0).
Merging back to mirror source file:///tmp/orig-repos.
Empty merge.
===> Auto-merging (2, 3) /local/orig-repos to /mirror/orig-repos (base /:0).
Merging back to mirror source file:///tmp/orig-repos.
A   lunar-project
New merge ticket: 942dc1df-7d78-4a9e-ba5b-9df7cfd06e5d:/local/orig-repos:3
Merge back committed as revision 1.
Syncing file:///tmp/orig-repos
Retrieving log information from 1 to 1
Committed revision 5 from revision 1.
===> Auto-merging (3, 4) /local/orig-repos to /mirror/orig-repos (base /local/orig-repos:3).
Merging back to mirror source file:///tmp/orig-repos.
A   lunar-project/ChangeLog
A   lunar-project/COPYING
A   lunar-project/NEWS
A   lunar-project/README
New merge ticket: 942dc1df-7d78-4a9e-ba5b-9df7cfd06e5d:/local/orig-repos:4
Merge back committed as revision 2.
Syncing file:///tmp/orig-repos
Retrieving log information from 2 to 2
Committed revision 6 from revision 2.

$ svk info
Checkout Path: /tmp/work/orig-repos
Depot Path: /test/local/orig-repos
Revision: 4
Last Changed Rev.: 4
Copied From: /mirror/orig-repos, Rev. 1
Merged From: /mirror/orig-repos, Rev. 1

$ svk info lunar-project/
Checkout Path: /tmp/work/orig-repos/lunar-project
Depot Path: /test/local/orig-repos/lunar-project
Revision: 4
Last Changed Rev.: 4
ローカルブランチからプロジェクトの部分だけをcheckoutする。
$ cd /tmp/work

$ svk co /test/local/orig-repos/lunar-project
Syncing /test/local/orig-repos/lunar-project(/local/orig-repos/lunar-project) in /tmp/work/lunar-project to 7.
A   lunar-project/ChangeLog
A   lunar-project/COPYING
A   lunar-project/NEWS.old
A   lunar-project/NEWS
A   lunar-project/README

$ svk info
Checkout Path: /tmp/work/lunar-project
Depot Path: /test/local/orig-repos/lunar-project
Revision: 7
Last Changed Rev.: 7
ミラー元にpushする(これがダメ)。
$ svk push
Cannot find the path which '' copied from.

考察

pushできない原因: svk infoの表示をよく見ると/test/local/orig-repos/lunar-projectには"Merged From"や"Copied From"の情報が含まれていないので、pushする先が分からないためにpushできないことが分かりました。/test/local/orig-reposの方にはこれらの情報が含まれているので正しくpushできます。

問題の情報が含まれない理由: ローカルブランチで追加されたものはミラーからコピーしたものではないため。

混迷: 原因は分かりましたし、問題の情報が含まれないことも納得できるのですが、これでは任意のディレクトリをcheckoutしてもpushできないので使い物になりません。再度ローカルブランチを作成すれば問題の情報は含まれるようになるものの、プロジェクトを追加するたびにそんなことをしたくありません。pushはsmergeのラッパーなので手動でsmergeするという手段はありますが煩雑すぎます。実際、今日はCodeRepos::Shareへ手動smergeでpushしようとして大失敗しましたし(Changeset 334-340の辺り)。

ローカルブランチではなくミラーに対して直接変更を行い、その後でpullすれば問題の情報が含まれるかと思ったのですが、それもダメでした。一体どうしろと。

……と、ここまで書いた時点で、にゃるらさんのところで似たような問題を見かけた覚えがあることに気付きました。そもそも最初にエラーメッセージそのもので検索すれば良かったということにも気付きました。絶望した! 自分の馬鹿さ加減に絶望した!

Vim: surround plugin私家版

2007-10-01T05:20:00 / vim / comment

Vim pluginのsurroundですが、少々不便に思うところがあったので適当に修正してCodeRepos::Shareにcommitしてみました(CodeRepos::Share/lang/vim/surround)。詳細についてはそちらを参照してください。

本来の目的は「」や『』などの記号についての設定を追加することだったのですが、実際に試してみるとsurrounding objectsの削除や変更においてユーザー定義のobjectsが対象に取れないことが分かり、それがどうしても気に食わなかったので直してしまいました。また、ユーザー定義のobjectsに対して2文字以上のキーを割り当てたかったので、(間接的ではあるものの)これもできるように修正しました。気が向いたらもう少し修正を加えるかも知れません。

予告 @ 2007-10

2007-10-01T05:18:00 / diary / comment

とっても忙しいのでアウトプットが減る予感。