「咲」の片岡優希の腰についてるアクセサリーが凄く気になります(1巻114ページ2コマ目辺りが分かり易いか)。何となくどこかで見たことある気がしていたのですが、最近になって「FATALIZER」のエイミー・ペトレスク(の本体)に似ていることに気付きました。腰への巻きつき方とか。……いや、そうでもないかなぁ。どうだろう。
しかし、小林立先生は何時の間にこんな漫画を描いていたのでしょうか? ずっとエロゲの原画とかラノベの挿絵とかのイメージしかなかったので、書店の店頭で「咲」を見かけたときは雑誌連載を抱えているということに驚嘆しました。しかもあの絵で麻雀漫画だということでさらに吹きました。「咲」の3巻まだかなぁ。
todatetime 0.0をリリースしました。日付や時刻のtext objectsを提供するプラグインです。今のところW3CのDate and Time Formats限定で、単一のobjectしか対象にできませんが、まああれば少しは便利なので作りました。他のフォーマットへの対応や[count]のサポートは……気が向いたらということで。
普段、bashでCDPATHの値を色々と設定して使用しています。Vimにも同様の'cdpath'というオプションがあり、デフォルト値はCDPATHから引き継がれるものの、:cdのディレクトリ名の補完は'cdpath'を用いないため色々と不便です(bash_completionを常用しているだけになおさら違和感が)。
という訳でディレクトリ名の補完で'cdpath'を参照するようなスクリプトを書きました。Vim組み込みのコマンドは直接弄れないため、ユーザー定義のコマンドを作成して置き換えました。
command! -complete=customlist,<SID>CommandComplete_cdpath -nargs=1
\ CD cd <args>
function! s:CommandComplete_cdpath(arglead, cmdline, cursorpos)
return split(globpath(&cdpath, a:arglead . '*/'), "\n")
endfunctionこのままでは:cdの代わりに:CDを明示的に指定しなければならないため、自動的に:CDを使うようにも設定しました。
let s:CMapABC_Entries = []
function! s:CMapABC_Add(original_pattern, alternate_name)
call add(s:CMapABC_Entries, [a:original_pattern, a:alternate_name])
endfunction
cnoremap <expr> <Space> <SID>CMapABC()
function! s:CMapABC()
let cmdline = getcmdline()
for [original_pattern, alternate_name] in s:CMapABC_Entries
if cmdline =~# original_pattern
return "\<C-u>" . alternate_name . ' '
endif
endfor
return ' '
endfunction
call s:CMapABC_Add('^cd', 'CD')これで大分便利になりました。まあ:cdの出番はそう多くはないのですけどね。
$ cd ~/working $ svk mirror http://svn.coderepos.org/share/ //mirror/coderepos $ svk sync //mirror/coderepos $ svk copy -p //mirror/coderepos //local/coderepos $ svk co //local/coderepos coderepos-wc $ svk mirror file:///home/kana/myrepos //mirror/myrepos $ svk sync //mirror/myrepos $ svk copy -p //mirror/myrepos //local/myrepos $ svk co //local/myrepos myrepos-wc
$ cd ~/working/coderepos-wc/dotfiles/bash $ svk copy ~/working/myrepos-wc/config/dot.bashrc kana-bashrc $ svk copy ~/working/myrepos-wc/config/dot.bash_profile kana-bash_profile $ svk copy ~/working/myrepos-wc/config/dot.bash.d kana-bash.d $ svk ci $ svk push --lump --verbatim
$ cd ~/working/myrepos-wc/config $ $EDITOR dot.bashrc # 色々編集 $ svk ci $ $EDITOR dot.bash_profile # 色々編集 $ svk ci $ $EDITOR dot.bash.d/foobar # 色々編集 $ svk ci $ # ... 以下略
本題はここからで、この状況でmyrepos-wcに加えられた変更をcoderepos-wcへマージするにはどうしたらいいのでしょうか? 両working copyのディレクトリ構造やファイル名が同一であればいいのですが、上記のようにファイル名は異なっています。この点を正しく認識させてマージさせたいのです。つまり、//local/myreposに起きた変更のうち、dot.bashrcの変更をkana-bashrcに、dot.bash_profileの変更をkana-bash_profileに、dot.bash.d下の変更をkana-bash.d下にマージし、それ以外の部分については無視する、ということをコマンド一つで行いたいのです。
どうも無理っぽいです。ファイル一個だけならファイル名を明示して、ファイルが複数あるならディレクトリにまとめてそれを指定してマージするしかない模様。まあ考え直してみればそんなものかなぁ、と。
coLinux上でsvkが使えるかどうかテストしていたのですが、svk pushができないという問題が発生しました。状況は以下の通り:
# 既存のSubversionリポジトリのミラーを作成。 # /c にはcofsを使ってWindows側の C:\ をマウントしている。 $ svk mirror file:///c/cygwin/home/kana/svn-repos //mirror/svn-repos $ svk sync //mirror/svn-repos $ svk copy -p //mirror/svn-repos //local/svn-repos # ローカルブランチをチェックアウト $ svk co //local/svn-repos/trunk foo # ローカルブランチで色々と作業 $ cd ./foo $ ... $ svk ci # ローカルブランチの変更をオリジナルのリポジトリに反映。 $ svk push Auto-merging (0, 6) /local/svn-repos/trunk to /mirror/svn-repos/trunk (base /mirror/svn-repos/trunk:4). ===> Auto-merging (0, 5) /local/svn-repos/trunk to /mirror/svn-repos/trunk (base /mirror/svn-repos/trunk:4). Merging back to mirror source file:///c/cygwin/home/kana/var/svn-repos. Empty merge. ===> Auto-merging (5, 6) /local/svn-repos/trunk to /mirror/svn-repos/trunk (base /mirror/svn-repos/trunk:4). Merging back to mirror source file:///c/cygwin/home/kana/var/svn-repos. U README New merge ticket: 6d8c2d9d-40b9-4fb5-95ab-9382aead936e:/local/svn-repos/trunk:6 Input/output error: Can't flush file to disk: Input/output error
Input/output error: Can't flush file to disk: Input/output errorということは、cofsが原因?
xcezx先生の助言を参考に調べてみたところ、cofsでは無理らしいです。なので、Windows側のファイルシステムへのアクセスにはcofsの代わりにsmbfsを使うことにしました。こちらなら特に問題は発生しませんでした。
なお、coLinuxから外部ネットワークへの接続にSlirpを使用している場合、Windows側のIPアドレスは10.0.2.2になるようです。例: mount -t smbfs //10.0.2.2/Shared /mnt/windows ... (最初、mountする際にこれが分からなくて少し困りました)
ただ、smbfsはmountするのにWindows側のユーザーのパスワードが要るので困ってます。毎回手動でmountしなけばなりません(自動化できなくはないですが、適当なファイルにパスワードを生のまま保存する必要があるので、すげー嫌)。
これならsvkに手を入れてfsync云々のチェックを誤魔化した方が……あるいは……
coLinux内でWindows用バイナリ作成のためのクロスコンパイル環境のセットアップですが、手間取るものだとばかり思っていたら、Debianにmingw32というパッケージがありました。apt-get -y install mingw32でインストールは終了。クロスコンパイルには専用のコンパイラ(ファイル名はi586-mingw32msvc-gcc等)を使うようです。実際にコンパイルしてみたところ、ちゃんとWindows用のバイナリが生成できました。ひゃっほい。
これはもうCygwinからcoLinuxに完全に移行しちゃってもいいかな……と思ったのですが、試しにcerejaのソースでmake testしたところ、テストプログラムがWindows用バイナリなのでcoLinux内で実行できずにコケたという酷いオチが。テストはWindows側でしなければならないというのはかなり面倒だな。その辺はどうしよう。
coLinux内からWindowsのクリップボードにアクセスしたい。Cygwinでいう/dev/clipboardがあれば理想的なのだけど、さすがにないみたい。一応、Windows側で適当なサーバーを走らせておいてそこに投げるという方法はあるのだけど、Cygwinに慣れた身としては/dev/clipboardの方が良い。
気が向いたら勉強がてらに作ろう。取り敢えず思いつくこととしては、coLinuxとWindowsを横断するという性質上、coLinuxのソースを参照する必要があることと、Linuxでのデバイスドライバ関係の知識が要ること。その手の知識は一切ないけれども、まあやればできるかな。
今朝方、HDDへのアクセス音がやたらと続いたため、何事かと思って調べてみたところ、coLinux側のcronからlocateコマンド用のデータベースの更新スクリプトが実行されていただけでした。でもlocateコマンドなんて全然使わないので迷惑なだけです。という訳で、今後起動しないように不要なジョブを削除しようとしたのですが:
# crontab -l # まあまずは確認を。 no crontab for root
あれ……?
もう少し調べてみたところ、システム用の設定/etc/crontabは/etc/cron.{hourly,dairy,weekly,monthly}下のファイルを適宜実行する形態になっており、問題のジョブはその中に含まれていることが分かりました(パッケージ管理システムとの協調のためにこのような形態になっているんでしょうね)。
また、ディレクトリ下のファイルの実行はrun-partsというコマンドを用いて行われており、これはディレクトリ下のファイルのうち、名前にドットを含むものを無視することが分かりました。
という訳で、問題のジョブのファイルをリネームすることで対処しました(mv /etc/cron.daily/{,+stopped.}find)。削除するのはアレですし。
普段bashで色々と作業をしており、^Zやfgを頻繁に使います。^Zはともかくfg^Mは微妙に面倒臭さを感じるため、一発でできないかと思っていたのですが、GNU readlineの設定を弄ればホットキーもどきを設定できることに気付きました。という訳で最近の~/.inputrcの一部はこんな感じに:
# ~/.inputrcのリロード "\C- r": re-read-init-file "\C- \C-r": re-read-init-file # fgの実行 "\C- ": "\C-[Ax\C-ufg\C-m" "\C- \C- ": "\C-[Ax\C-ufg\C-m" # cdhist: cdの履歴を進む/戻る "\C-j": "\C-[Ax\C-ucdhist_forward\C-m" "\C-k": "\C-[Ax\C-ucdhist_back\C-m"
問題点は次の通り:
set editing-mode viを仮定していること。既にコマンドを入力済みの場合でも使えるよう、コマンドラインの内容をクリアしているのだけど、この辺のゴテゴテ具合が気に食わない。DRYに引っかかるし。fg 3を実行、といった感じ。でもどうすればいいか分からない。えー、DebianでWindows用のバイナリを作成するためにクロスコンパイル環境をセットアップしたいのですが、どうすればいいんでしょうか? (TODO: 後で調べて書くこと)
これができるなら、もう完全にCygwinからcoLinuxに移行しちゃう気がします。あ、いや、あとWindows側からcoLinux側のファイルシステムへのアクセスができないと困るか(cofsのUNIX meta data modeが利用できるようになれば楽だけど)。
私、何かした?
でも、アベック妨害の後、狭い道を通っていると向こう側から自転車に乗った女子高生が通りがかってきたのですが、道を譲ったら軽く会釈されました。荒んだ心が和みました。ありがとう女子高生。明日も頑張ろう。
……と思ったら、#codereposへのjoinをZoneAlarmさんにブロックされた。IRCクライアントの外部への接続許可はしているので何故ブロックされるのか分からずに3分程困った(答え: IM Security > Settings > Advanced > Block IRC)。
SSHでの接続時のパスワード入力を省略する方法。ここではSSHクライアントを実行する端末をlocalhost、SSHで接続する先の端末をremotehostとする。以下の作業はlocalhostで行う。
# 公開鍵id_dsa.pub/秘密鍵id_dsaの作成
# passphraseは空にすること。
ssh-keygen -t dsa
# 公開鍵をremotehostに送る。この段階ではまだパスワードの入力が必要。
cat ~/.ssh/id_dsa.pub \
| ssh user@remotehost 'cat - >>~/.ssh/authorized_keys;
chmod 600 ~/.ssh/authorized_keys'SSHクライアントとしてPuTTYを使う場合は以下の作業を行う。
Loadし、Save private keyで保存する。Connection > SSH > Auth > Private key file for authenticationにputtygen.exeで作成した秘密鍵ファイルを登録し、Connection > Data > Login details > Auto-login usernameにユーザー名を入力する。# 好きなホスト名に変更 $ $EDITOR /etc/hostname $ $EDITOR /etc/hosts # 変更を反映 $ /etc/init.d/hostname.sh
coLinuxをインストールしたはいいものの、環境が窮屈で窒息しそうなので、今後生きていくために必要なパッケージをインストールしている最中。以下、その一覧:
# 256色を使いたいので、ソースからビルドする必要がある $ cd /usr/src $ apt-get source screen # ソースパッケージのダウンロード $ apt-get build-dep screen # ビルドに必要なパッケージのインストール $ apt-get install ncurses-term # 256色用のterminfoのためにインストール $ dpkg-source screen_4.0.3-0.3.dsc # ソースの展開 $ cd screen-4.0.3/ $ $EDITOR debian/rules # ``--enable-colors256''を有効にする $ dpkg-buildpackage -us -uc # カスタムパッケージの作成 $ dpkg --install ../screen_4.0.3-0.3_i386.deb # 作成したパッケージをインストール
coLinuxをインストールしてみました。都合、四回目くらいではないかと思われます。ネットワーク周りの設定で彼是四日か五日は躓いていましたが、Slirpを使えば簡単にできました(ずっとTAPやWinPcapを使う方法しか試していませんでした)。以下、そのメモ:
$ dd if=/dev/zero of=swap.img bs=1M count=256等として作成する。my.confを作成した:kernel=vmlinux cobd0="C:\coLinux\root.img" cobd1="C:\coLinux\swap.img" cofs0="C:\" root=/dev/cobd0 ro initrd=initrd.gz mem=64 eth0=slirp,,tcp:10022:22ポイントは次の通り:
eth0=...の行)。Slirpを使う場合、デフォルトではWindows側からcoLinux側に接続することができないので、リダイレクトの設定をする必要がある。ここでは(取り敢えず)SSHでcoLinuxに接続できるよう、Windows側の10022番ポートをcoLinux側の22番ポートにリダイレクトするようにした。/dev/cofs0がC:\を参照するようにした。$ colinux-daemon.exe @my-conf -t ntで起動する。rootでログインする(初めてインストールしたときはパスワードがrootだということを知らなくて暫く困った)。$ mount -t cofs cofs0 /c等とする(/cは予め作成しておく)。coLinux起動時に自動でマウントしておく場合は/etc/fstabに/dev/cofs0 /c cofs defaults,uid=kana,gid=users 0 0等の行を追加する(現状ではファイル/ディレクトリのメタデータが無視される。デフォルトではオーナーがrootになるので、uid/gidの指定をしておかないと一般ユーザーでログインしたときに困る)。/etc/fstabに/dev/cobd1 none swap sw 0 0を追記。$ mkswap /dev/cobd1$ /etc/init.d/mountall.sh$ free/etc/network/interfacesの内容を以下の通りに変更する:auto lo eth0 iface lo inet loopback iface eth0 inet static address 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 gateway 10.0.2.2
/etc/resolv.confの内容を以下の通りに変更する:nameserver 10.0.2.3
$ ssh -p {redirected-port} {ip-address-of-the-host-os}で外部からアクセス可能である。それは怖いので、coLinuxとそのHost OSでのみログイン可能なようにアクセス制限をかける。/etc/hosts.allowの内容を以下の通りに変更する:ALL: localhost 10.0.2.0/255.255.255.0
/etc/hosts.denyの内容を以下の通りに変更する:ALL: ALL
/etc/hosts.allowに記述されていれば可; (2) /etc/hosts.denyに記述されていれば不可; (3) どちらにも記述されていなければ可。$ tzconfigで設定し、$ /etc/init.d/hwclock.sh startで反映させる。$ useradd -c 'To Vim, or not to Vim.' -g users -m -s /bin/bash kana $ passwd kana
# おまじない # 各種パッケージがインストール済みかどうか等のデータベースの更新。 $ apt-get update # インストール済みパッケージの更新。 # (upgradeとの違い: パッケージ間の依存関係の変化に追従) $ apt-get dist-upgrade # 最適なミラーサイトの選択 $ cd $ apt-get install netselect-apt $ netselect-apt stable $ mv sources.list /etc/apt/sources.list # 後は好みに応じてインストール $ apt-get install ssh $ ...
cd C:\coLinux .\colinux-daemon.exe @my.conf -d
とまあこんなところかな。これ以上は使うdistro固有の話になるので省略(自分自身がよく把握していないということもあるけれど)。
しかしcoLinuxをサービスとして起動できなくて困った。サービスのインストールはできるものの、起動しようとすると以下のように失敗します。原因がさっぱりなので諦め気味。
$ net start "Cooperative Linux" サービスが制御機能に応答しません。 NET HELPMSG 2186 と入力すると、より詳しい説明が得られます。 $ net helpmsg 2186 サービスが制御機能に応答しません。 説明 現在、このコマンドは実行できません。 対処 コマンドを後で再実行してください。 問題を解決できないときは、サービスを停止し、再度開始してください。 しかし、サービスを再度開始した後も問題が発生するときは、 その問題をテクニカル サポートに報告してください。 拒否されたコマンドとサービスの名前も必ず報告してください。
SVKをCygwinにインストールした。苦労した。以下その残骸:
これで一応インストールできたにはできたけど、これ、絶対問題起きるだろ……大丈夫かなぁ。
途中、coLinuxをインストールしてみました(とはいえ、これはこれで苦労した)。そっちの方だと何の問題なくインストールは済むし、動作もCygwinとは雲泥の差っぽい感じがしました。でもWindows側にちょっかいを出せないのが辛い。Windowsアプリケーションの開発にも不便だし。どーしよ。coLinux側からWindows側のファイルシステムにアクセスできるようにできたら移行を考えなくはないのですけど。
いや、できるはずなんでしょうけど、その辺は疎いし今日はもう疲れたので明日また考えます。
CodeRepos::Shareに参加しました。後で何かcommitする予定。
しかし自分用リポジトリとCodeRepos::Shareのリポジトリとの同期が面倒。自分用リポジトリへcommitしたら、その変更内容を自動的にCodeRepos::Shareのリポジトリへcommitしたいのだけれど、まずSubversionは出自のリポジトリが異なるとmergeができないので困った。無理矢理mergeするスクリプトを書こうかと思ったけれど結構面倒臭いし(ファイル等の移動の扱いとか)。それにCodeRepos::Shareが落ちてたときの対処に困る。
どうもsvkを使えばいいらしいことに気付いたのだけど、Cygwinへのインストールで躓いた(CPANから必要なモジュールをインストールする最中、何個かエラーでコケる)。Cygwinに拘らないなら、Windows用のバイナリをインストールして、それに対するCygwin用のラッパーを書けばいい。でもこれやると後々問題が出そうで嫌なんだよなぁ。どうしよう。
今更ながらはてなスターを試してみる。テスト。
CS版「beatmaniaIIDX13 DistorteD」を購入しました。よいこなのでちゃんと特別版コンプリートセットにしましたよ。
肝心のゲームの方は諸事情であまりプレイできていないのですが、「予想は裏切る。期待は裏切らない」
の言葉どおり、内容に関しては文句の出ようがありません。インターフェイスのちょっとしたところやデザインなど、今まで手の届いていなかった箇所が地味に改善されていて好感触です。
ただ残念なのはSAMBA DE JANEIROが未収録なこと。AC版でもDistorteDからGOLDで削除されたこともあるので、やはり色々と難しいのかなぁ(しかし、これはCS版GOLDでJIVE INTO THE NIGHTとともに再録のフラグ……だったらいいなぁ。GOLDのコンセプト的にもSAMBAは合ってるし)。
一方、特典の方は今一な感じでした。毎度恒例のCDですが、正直8th〜9thのV-RARE SOUNDTRACKから徐々に内容が薄くなっている気がします。10thはCS版新曲そのまま収録しただけ(面白みがない)、HAPPY SKYは別売のCDをセットにしただけ(特別版なのにレア感がない)。今回はコンセプトは問題ないのですが、内容が大体予想がつく範囲内なので若干面白みに欠けますし、5曲という少なさもあって何だか物足りません。ついでに言えばCS版pop'n musicのV-RARE SOUNDTRACKも徐々に収録曲数が減ってますしねぇ。
ポストカードは……うーん……トレーディングカードぐらいのサイズなら栞代わりに使うんですけど。缶バッジも使い道に困ります。卓上カレンダーは実用的かと思いきや、イラスト優先でカレンダーの文字が見難く、さらに単体では立てられないために実用度がゼロに近い状態です。個人的には、こういう特典を付けるくらいならば、もっとCDの方に力を入れて欲しいですね。
まあ愚痴はこのくらいにしておいて。暇ができたらIRに向けてEXPERT埋めよう。