トップ «前の日(02-21) 最新 次の日(02-23)» 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2004-02-22 VirtualPC 大活躍

% FreeBSD の package を作るのに重宝します。

Current の追っかけをやめて以来はもっぱら 5.x 系の security fix branch を利用しているわしですが、ports だけは current を利用しているわけです。つーか、そういう人は結構多いんではないかと思っとるんだが、それはともかく。人様に配布するような package を作成する場合には、こういう構成ってあまりよろしくなさげなんで、そゆことしようと思うとやっぱりキレイな release の環境が必要になるわけ。そこで出番なのが VirtualPC なのです。

てことで、現在は 4.9-RELEASE と 5.2-RELEASE の環境を構築してあります。最初に作ったのは 4.8R と 5.1R だったんだが、それらをアップグレードする際にはいろいろと面倒な手間はかかったもんだよ。4.9R については雑誌に付いてきた CD が有ったんで、(実はいままでやったことがない)バイナリアップグレードを試みたんだが、なぜかどうしても失敗するんで仕方なく新規インストールして環境構築し直しという、なさけない結果に。いまだにどうして失敗するのかわかりまへん(苦笑)。

で、5.2R についてはインストール CD なんつー便利なもんが無かったんで(それに 4.9R のせいでバイナリアップグレードに不信感バリバリだったしな)、RELENG_5_2 で cvsup して make world しましたよ。慣れてるからこっちの方が簡単だったさ。と言うことで厳密には 5.2R ではなくて 5.2.1-RC だったりしますが、それはともかく、これは本体だけの話なんで、ちゃんと 5.2R の環境を作るには ports の方もなんとかせねばならん。つーことでそちらの方は tag=RELEASE_5_2_0 で cvsup したわけだが、困ったことに XFree86-Server 辺りの package が残ってなかったりしてショックを受けつつ、だからって自前でビルドするのは勘弁な、ということで結局 tag=RELEASE_5_2_1 にしましたとさ。そんなわけで素の 5.2R な人にはちょっと気持ち悪い package ができてしまったのでしたが、5.x 系を使ってるような人ならそんなの大丈夫だよね?

ちなみに最近の FreeBSD には最初から mount_smbfs が存在するんで、HostOS(要するに Windows だが)とのファイルのやり取りも簡単なんでありがたいですな。

% グラディウスをクリア

しましたよ。気合いで。最後の最後まで本物そっくりに作ってあって関心するというか、むしろあきれたよ。そこまでやるか(苦笑

ともあれ、クリアしたらサウンドテストが使えるようになったんで、心行くまでバブルシステムの起動音楽を最後まで聴けますよ。

% マグタイマーが欲しい

マグタイマーってのはあれですよ、マグがお腹をすかせるタイミングをお知らせしてくれるタイマーのことです。だいたい最後の食事から3分20秒くらいらしい。

Windows 用なんかだと結構あるみたいなんだが、FreeBSD で動く物となるとちょっとね。仕方ないんで Ruby + WideStudio ででっち上げるか?と思ったんだが、どうせ作るなら何か音を鳴らして知らせるようにしないとつまらんと考えたわけだ。そこでハタと考える・・・どうやって音を鳴らそう。まあ結局自分で使うだけなら何とでもなるんだが、どうせ作るならせっかくだから例の駄作置き場に公開しておきたい。とするとなるべく標準ライブラリだけで何とかしたいんだが、残念ながら WideStudio には現状、音に関する機能が無いし、Ruby も標準ライブラリにはその辺の機能は存在しない。じゃあ一般的な音楽関係の Ruby ライブラリって何なんだろうと考えると・・・全然知らんのだ(苦笑

そんなわけで、まともに設計を考え始める以前に出鼻をくじかれて気力減少。めんどくさいから公開するようなちゃんとしたのは諦めて、サクっと system() で mpg123 あたりを呼ぶようにしとくか?


2005-02-22 肩がこる…

% [game] ボタン類が全般的にハズレ気味なわしの PSP

もしかすると、みんなこんなもんなのかも知れないが(笑

まあ、なんちうか、分解して一回全部の部品を舐めってやれば(ベロで舐めるわけじゃないよ)直りそうな気がするけど、複雑そうだから開けるのイヤだなあ……とか思ってたら、Masuda さんとこでこんなネタが紹介されてた。やっぱなあ、まあ、いずれがまんできなくなったらやろう。なんのがまんかって?そりゃあれさ、『分解欲』ですよ(爆

とりあえず、保証で直すとかは、めんどくさいので却下ってことで(笑

% [雑談][PC] 嶋センセのブログ(正式名称がよくわからない。"Visual Technology Premier Site" がそうなのか?)

これもネタは Masuda さんとこから。コンピュータオタクにとっては燃えすぎる(かもしれない)ブログの登場ですな。とりあえずブックマークしとこう。

% [game] みんごる日記、やっぱじいさんを使うべきですか?

思わずマリオゴルフ64を引っ張り出してやってしまったが、せっかく慣れてきたみんごるのパット感覚がダメになりそうだったから、すぐにやめてしまった。つーか、みんごるのパットって難しくないですか。なんか遥か昔のナムコクラシック(ファミコン)を思い出しちゃったよ。あれもやっぱパッティングが異様に難しくて、ショートパットすら結構な割合で失敗するんで、最終的にはわざとグリーンに乗せないでチップインで叩き込む方が安定した成績を残せるという状況だった(苦笑

いっつも思うんだけど、チップインを狙ってるときに、ピン抜いてほしいんだよな。何度ピンにはじかれてせつない思いをしたことか。ピンを抜いてほしいときにちゃんと聞いてくれるゴルフゲームってどっかにないですかねえ。

なんかこのゲームって全体的に妙に転がる設定なんで、フェードボールのキャラって実は重宝するのかなぁとか思ったり(フェードボールは転がりにくいのです。逆にドローボールは転がるので距離が出る)。マリオゴルフでも、特定のコースなんかではルイージ(フェードボーラーだ)が役に立ったりするんだよね。でも、トシゾウ(現状で使える唯一のフェードキャラ)は、どうも見た目が好みじゃないなあ(苦笑)。もっと渋い年寄りを出してくれよ。

% [雑談] Hotmail の spam 利用対策

30 日に一度ログインしないとアカウントが無効になるんだそうな。しかも 90 日ほっとくとアカウントが削除されちゃうんだそうな。アホくさ。ところで MSN メッセンジャーのためだけに Hotmail アカウントを利用してる、わしのように人間は果たしてどうすりゃ良いんでしょうな。

以前は hotwayd を使ってたまにメールチェックしてたんだが、そもそもこの Hotmail のアドレスにメールを送ってくる友達はおらんので、意味無いわけですよ。

まあ、削除されたら、その時はその時だな。そもそも、わしは MSN メッセンジャーだって使いたいわけじゃないんだが(苦笑


2006-02-22

% [雑談] マツダとトヨタのエンブレムがどっちがどっちかわからなくなる病気

具体的に言うと……

「これはマツ……トヨタ。」
「これはマツダですよ〜」
「わかってるねん。わかってるねんで?」

こういう感じ。(具体的?)

トヨタをマツダに間違えることはないんだけど、なぜかマツダを見てもマツダだったかトヨタだったか確信を持てないんだよな。 結局「あれ、どっちだっけ?」と思いながらトヨタの車を探す。 (確かめるためにね)

他の会社のは間違えないんだけどね。 なぜかマツダだけは自信が無い。 いっつも確かめた後は「なんだ、全然似てないじゃん」って思うんだけど、しばらくするとやっぱり迷う。

ちなみに今わしが乗ってる車はスバルのプレオっていうのだが、こいつにはなぜか六連星じゃなく『P』の文字をあしらったエンブレムが付いている。 でも変にデフォルメしたせいで縦棒が短いからぶっちゃけ『D』にしか見えない。 うちの母親を含め、近所のおばちゃんはみんなダイハツの車だと思ってたらしい。

街でプレオを見かけて「お、良いな」と思った人がどれだけいたかはわからないが、それなりに商機を逃してたんじゃないのかなあ、スバルは……などと思ったりもする。

% [雑談][Ruby] do .. end 記法にも慣れてきた

……のは良いんだが、ついでに半分洒落で練習してたカッコ無し記法まで定着してきててヤバス。 なんかこう、深く考えずにスラスラっと書くと、まったくカッコを使わずにメソッド呼び出ししているワナ。

どう見ても OCaml の呪いです。 本当にありがとうございました。

って言うか、C で書くときにすら関数名の次に無意識のうちにカッコじゃなくスペースを置いてしまうのは、かなり病気でしょう。 でもまあ、C だとそれじゃうまく行かないから自然と矯正されるんだけど、Ruby の場合は (特に irb なんかで一発処理して終わりとかだと) 普通に動いてしまってそのまま……ってことが多いんで、矯正される機会もなくますますカッコ無しに慣れていくという循環が。

だいたい、以前はすごく気持ち悪いと思ってたこの記法も、今ではまったく違和感を感じないっつーか、むしろカッコがある方が気持ち悪く感じるほどに調教されてしまっているのはどうなんだろうな。 でもあれだな、C なんかがカッコ使ってても何も変に思わないってことは、実は Ruby にはカッコが似合わないってことなのかも。 もともと制御構造やなんかにブレース使わなかったりするし、そこら辺のバランスで見栄えに関する感じ方が違うのかも知れないなあ。

% [Ruby] 慣れないことはしない方が良い

基本的にわしは破壊的メソッドは使わない性質で、特に非破壊的なのと両方あるようなものについては、よほどのことが無い限り非破壊的な方を使うのを好む。 なんだけど、なぜか今日に限って気まぐれで破壊的メソッドを使ってみたんである。

・・・見事にハマッた...orz

今回使ったのは Array#compact! なんだけど、こんな風に書いてたわけ。

ary.compact!.join

普段は

ary.compact.join

と書くので何ら問題は無いんだが、上の例だと時にはハマる。 要するに compact! で ary の中身が変わらなかったときには self じゃなく nil が返ってくるんで join が NoMethodError になるわけだ。

たしか何かで読んだ話では、値の変更があったかどうか確かめられるように、無変化の場合は nil を返す…とかそんなポリシーだったかしらん。 普段破壊的メソッドなんて使わないから、そんな話は思いっきり忘れ去ってたよ。 10 分くらいエラーになる原因がわからなくて悩んでしまったじゃないか、もう。

こんな微妙な問題にわずらわされない富豪的プログラミング万歳。 やっぱりよほど必要に迫られない限りは、破壊的メソッドなんて使うもんじゃないな。 いや、普段から馴れとかないといざってときに困るだろ、って話も無くはないんだけど……

% [OCaml] godi 初心者日記

そうかー、godi って OCaml のバージョンは自動で上げてくれないんだなあ。 一体いつになったらアップデートされるんだろーとか思いつつ、今日になってふと godi のページ見てみたら 3.09 に対応してるようなこと書いてあってびっくらこいたのであった。

仕方ないのでユーザマニュアルを読む (先に読め)。 ……えーと端的に言って、

<PREFIX>/etc/godi_conf の GODI_SECTION を変更してアップグレード

ってことだと思われる。 パッケージのバージョンがダウンしてたりしてうまくアップグレードしてくれないときは、<PREFIX>build 以下の apps, base, conf, godi っていうディレクトリを消してもっかいやれとも書いてあるようだ。

てなわけで、ようやくわしも遅まきながら 3.09 の世界へ。 つーか、何か大きく変わったことってあったんだっけ? gauche に浮気してたせいで(謎)チェックしてねえ〜

% [WideStudio][Ruby] libws.rb

たまには WideStudio のことでも書く。 もう忘れそうになってるが、一応わしも開発メンバーに入ってるのだ。 興味が全然無くなってしまったわけではないんだが、今はちょっと優先順位が低いんだなあ、これが。 ……ともあれ。

WideStudio の Ruby バインディングは (と言うかネイティブである C++ 以外の言語は…かも知れないが) Rubyist にはあまりウケがよろしくないようである。 基本的に C++ でのお作法と歩調を合わせた作りだからして、あれはあれで良いところもあると思うんだがまあ Ruby 的に気に食わないってのも気持ちはわかる。

気持ちはわかってるんで、もう少し Ruby 的に使いやすくするラッパーの仕様とか考えたりもする。 んで、試しにちょろっと書いてみて、途中でほっぽってたのを思い出してしまったんで、少しだけいじって最低限動くようにしてみた。 ちゃんとした形で配布するにはまだまだだけど、とりあえず遊べるようにはなって来てる感じなんで、なんとなくここで晒してみようかと。

ダウンロード(zip 形式)

WideStudio の情報を目当てにここを見てる人なんて多分いないと思うけど、ご意見ご感想はツッコミかメールでよろしく。

ざっと解説と使い方説明。 根っこのところでは irb で遊ぶのを目的にしてるんで、ややこしい初期化だとかを勝手にやってくれるように作ってある。 今のところ定義されてるクラス・モジュールは以下の四つ。 多分もう増えない。

  • module
    • WsApp
      • アプリケーションの初期化なんかに関するメソッド群。WsObject に include しちゃってるんで、単体で使う事はまず無いはず。
    • WsUtils
      • wsbuilder が吐く win ファイル (GUI の見た目設定) を読み書きするメソッドとかを用意するつもりだけど、めんどくさくてまだ書いてない。簡易パーサ書かなきゃだめっぽいからメンドイの。他にもメソッドのアイデアはあったと思ったけどもう忘れた。
  • class
    • WsObject
      • 基本クラス。って言うかこれだけで全部のクラスをまかなえるコンテナみたいなの。Java で Eclipse のプラグイン書いてた時に (それは結局日の目を見なかったけど) 使ってたパターンを再利用してる。こいつが持ってないメソッドを呼んだときは、method_missing でラップしてるオブジェクトに丸投げ (ほんとは何か細工した方が良いとは思うが)。[] 演算子でプロパティ操作。
    • WsMainWin
      • WsObject のサブクラス。WSCmainWindow だけはちょっと特殊な扱いした方が良いかと思って。EXIT トリガのフックを簡単に書けるようにしたいと思ってるけど未実装。

エラー処理はかなり適当 (って言うかやる気なし)。 WsObject の機能は WSCbase 辺りに特異クラスで突っ込んでやれば良いような気もするけど、なんでラッパークラスに包むようにしたんだっけなあ? なんか WSCbase からのダウンキャストができない制限をなんとかする仕組みを突っ込むためだった気がするけど、詳しいことは忘れちったよ (ダメだ〜)。

細かいところはソース読むか、使ってみて身体で覚えるべし(何

実行例は irb で。

% irb
irb(main):001:0> require 'libws'
./libws.rb:136: warning: don't put space before argument parentheses
./libws.rb:136: warning: parenthesize argument(s) for future version
=> true

なんか警告出てるけど気にすんな。カッコ無しで書き直したせいだから(爆

irb(main):002:0> mwin = WsMainWin.new
Mwt::WSCmainWindow
=> #<WsMainWin:0x47644 @ws_instance=#<Mwt::WSCmainWindow:0x474f0>,
   @child_list={}, @ws_class=Mwt::WSCmainWindow>

とりあえずこれでウィンドウは出る。 アプリケーションの初期化処理とかは内々でやってるんで気にしない。

irb(main):003:0> mwin.activate
=> nil
irb(main):004:0> mwin.update
=> true

出たでしょ。 ボタンとか配置してみる。

irb(main):005:0> mwin['x'] = 400
=> 400
irb(main):006:0> mwin['width'] = 400
=> 400
irb(main):007:0> mwin['height'] = 400
=> 400
irb(main):008:0> btn = mwin.add_child("WSCvbutton", "btn")
#<WsApp::WsException: invalid class name.>
=> #<WsObject:0x6f554>

うげ、クラス名間違えた。

irb(main):009:0> btn = mwin.add_child("WSCvbtn", "btn")
Mwt::WSCvbtn
=> #<WsObject:0x14bd114 @ws_instance=#<Mwt::WSCvbtn:0x14bd0b0>,
   @child_list={}, @ws_class=Mwt::WSCvbtn>
irb(main):010:0> btn['width'] = 100
=> 100
irb(main):011:0> btn['height'] = 30
=> 30
irb(main):012:0> btn['x'] = 20
=> 20
irb(main):013:0> btn['y'] = 20
=> 20
irb(main):014:0> mwin.update
=> true

あれ?表示されないな。 されるはずだけど……どっか間違ってんのか? とりあえず放置して……

irb(main):017:0> def test_proc obj
irb(main):018:1> Mwt.WSGIappMessageDialog.popup
irb(main):019:1> end
=> nil

関数定義して…

irb(main):020:0> mwin.add_proc 'test_proc', Mwt::WSEV_ACTIVATE
=> 5084480

ああ!!じゃなくてこう、

irb(main):021:0> btn.add_proc 'test_proc', Mwt::WSEV_ACTIVATE
=> 5197024

ボタンにプロシージャとして登録。 メソッド名は文字列だけじゃなくシンボルも使えるようにした方が良いな。 あとで直そう。

irb(main):023:0> mwin.start_event_loop

えい。 ぐあ、mwin に間違って登録したプロシージャが動いちゃってダイアログが出てしまった。 キャンセルでそれを消すと……お、ボタンも表示されたな。 うーん、でも update で表示がリフレッシュされないのは何でだ? なんか仕様変わったかな。 ともあれ、ボタンを押したときのイベントプロシージャもちゃんと動くね。よしよし。

こうやって説明してみて思いついた今後の展望とか (どっちにしろモチベーションの問題なんで、いつになるかはわからんが)

  • プロパティ設定をも少し楽にしたい
    • 座標系とかアンカー系なんかは一個一個の要素を設定するより配列かなんかで一発で書けた方が楽だよなあ…とか。
  • イベントプロシージャにブロック渡ししたい
    • 大元の拡張ライブラリの方をいじらんと無理かも。つーか mwt_proc.cpp は前々から何とかしたいと思ってはいるんだが……
  • グローバルインスタンス (WSGIapp* なヤツ) をラップするためのクラスもあった方が良いな
    • まあ WsObject のサブクラス作って initialize で細工すればすぐだな、これは。

% [雑談] コメントスパム業界(謎)も大変だ

たださんのところに変わったコメントスパムが付いていて、いろいろ考えてるなあ…と関心してたんだが実は手動だったらしい(笑

いやほんと、お疲れさんと言うしかない。

% [雑談][Ruby] 今回のるびま

コードレビューはテンションがおかしくておもしろかったなあ。 あのノリでわしも辛口添削されてみたい気もするが、立ち直れないダメージ受けそうな気もするから止めておこう。


2007-02-22

% [Mac] AquaSKK のキーバインディングを変更する方法

Ctrl+J で改行するクセが付いちゃってるわしとしては、skk デフォルトの Ctrl+J でひらがなモードってのが激しくウザいのである。 そんなわけで、AquaSKK のデフォルトキーバインディングも激しくウザいので、結構前から設定を変更して使っている。 でも、この設定の仕方を探すのに結構苦労したんで (もはやどこで見つけたのか憶えてないし)、同様に不満を持っている誰かのために、ここに書き記してみる次第。

…と、ここまで書いて、なんかこのネタすでに書いたような気もしたんで検索してみたけど、とりあえず見当たらないんで、まあ書いとこう。 もし、かぶってたら、それはわしの脳が劣化しているせいである。

ともあれ、やり方自体は簡単。 ソースの Resources/config というファイルを参考に ~/Library/AquaSKK/config を編集するだけ。 あとは次回ログイン時から有効になる (ただし画面上の表示は変わらないので我慢)。

まあ、それだけ。 ……それだけなんだけど、これが何だか微妙に変で。 例えば、わしがやりたいのは Ctrl+O でひらがなモードだったりするんだけど、その場合いじるべきなのは、kana-mode-key じゃなく kakutei-key だったりする。 んで、変換を確定するキーの設定が kana-mode-key 。 どう考えても設定が逆になってる。 しかも、確定キーは Ctrl+J にしたいんだけど、kana-mode-key を "\C-j" に設定すると強制的に kakutei-key の方の設定も Ctrl+J に上書きされてしまう。 要するに、『確定が Ctrl+J でひらがなモードは他のキー』っていう設定ができない。 結局現在は、Ctrl+M で確定、Ctrl+O でひらがなモード、っていう設定で我慢してる。 ちなみに、しばらく前まではひらがなモードは Ctrl+K にしてたんだが、Emacs を使うときにこのキーが取られると不便なので変えたのであった。(まだちょっと慣れてない)

そういや、この辺の設定がおかしい件については、ソース読もうと思いつつ放置してるなあ。

(追記) 気になって試してみたら、記憶違いしてたみたいだ。 確定を Ctrl+J に設定しても、ひらがなモードを他のキーにできるんだけど、Ctrl+J で確定しようとすると確定されずに変換中の文字列が消えちゃうという謎の挙動をする。 だから、実質使い物にならないので、結果的に『確定が Ctrl+J でひらがなモードは他のキー』という設定はできないってことになる。

% [vim] ついでだから skk.vim の設定も

まあ、これは skk.vim のファイルを眺めればわかることなんだけど、.vimrc に

let g:skk_control_j_key = "<C-o>"

と書いとけば、Ctrl+O で skk モードの ON/OFF ができるようになる。 でも skk モードのまま l で英数モードにした場合に、かなモードにするキーはなぜか Ctrl+J のまま。 なんかこれも微妙にバグっぽいんだよな。 かなモードキーをカスタマイズする変数は設定されてないし、skk_control_j_key の説明には『<C-j> の働きをするキー。』と書かれてて、これを素直に解釈すれば元々 Ctrl+J に設定されてる機能は全部変更されないと変な気がする。

どうにも AquaSKK と skk.vim で操作法に一貫性が無いんで、ほんとは vim でも AquaSKK を使えばすっきりするんだけど、Terminal.app は Ctrl 修飾のキーイベントを IM に回してくれないみたいで、Terminal.app 上で AquaSKK を使うときは Command+Space で IM を切り替えなきゃいけない。結局一貫性が無いんだよな。 MacPorts の vim +aqua でできる Gvim.app はインライン入力が効かないから論外だし。

いつか何とかしよう…と思い続けて、結局めんどくさくて『直すより慣れろ』な状況になってるダメさ満点なわし...orz

% [あなごる][Erlang] うーむ、ultimate problem でタイムアウトはさすがに問題があるような…

いくらなんでも、↓こんなコードがタイムアウトするのは、どこかおかしい気がします(苦笑

-module(u).
-export([m/0]).
m()->io:write(42).

shinh さんが何とかしてくれるのを期待しつつ、Erlang は、しばし封印。 ちょっぴり Ruby に手を出そうかと思ってみたんだけど、ためしにちょっと書いてみたやつが、あまりにもお話にならないレベルだったんであきらめましたよ、ええ。 ただでさえゴルフの才能無いのに、こんなゴルファー御用達みたいな言語は使いこなせません(笑

% [あなごる][雑談] Erlang のコードを直接実行するシェルスクリプトを書こうと思った

…のが一昨日の話。とりあえず vim erlrun とかやって、

#!/bin/sh

と書くまでは 5 秒で終わったんだけど、その後が一向に続かない。 単純なものなんで、仕様というか、何をどうすべきかはすでに頭の中できあがっていて、あとは淡々とコーディングしていくだけなんだが、全然コードが浮かんでこないわけ。 結局 5 分くらいかけて、

if [

まで書いた(苦笑)ところであきらめて、一行目を…

#!/opt/local/bin/ruby

に書き変えたら 3 分でできあがった。 まあ、テストとデバッグで、さらに 3 分くらいかかったけど (ARGV の構造とか細かいとこは忘れてるんで)。

なんだか、ちょっと火をつけるだけなのにマッチの使い方がわからなくて、しかたなくガスバーナーを探しに行っちゃうようなダメっぽさを感じてしまって、苦笑い。

tcsh 使ってた頃は、ちょっとしたことは csh スクリプトで書いてたりしたんだけど、zsh に乗り換えたのを契機に sh スクリプトで書くように改めて (つーか sh を憶えないと設定ファイルが書けないからさ)、そうこうするうちに csh の方はすっかり忘れてしまって、かと言って sh の方もかなり知識があやしい状態のまま今に至るという感じ。 読めることは読めるけど、いざ書こうと思うと全然出てこない。

そして Ruby に逃げる。 なんかダメっぽい。 ダメっぽいけど、Mac OS X なんかだと Ruby は標準添付なわけで、sh 使うのと変わんねーじゃん…という気もしなくはない。 なんかクールじゃないけど。

% [vim] skk.vim の設定続き

良い機会なんで、AquaSKK と skk.vim の挙動が近くなるようにがんばってみようと思った。 んで、AquaSKK のソース読むよりは skk.vim を読んだ方が楽そうなんで、まずは読む。 とりあえず現状の設定だと、AquaSKK の場合 l で英数モードになった場合に次にひらがなモードにするには Ctrl+O なわけだけど、skk.vim だと Ctrl+J になっちゃうのが混乱の元。 なので、その Ctrl+J の役割を Ctrl+O に割り当てるか、skk 自体の ON/OFF は Ctrl+O に設定できてるので l で skk を OFF にできれば目的は達成できる。

そんな感じで調べた結果、Ctrl+J がハードコーディングされてる部分を見付けて、そこを Ctrl+O に直してみたんだけど、なぜか英数モードの時に Ctrl+O 押しても skk の ON/OFF 機能の方が優先されてしまって一旦英数モードになると、ひらがなモードに戻れなくなるので却下。 最終的に l の機能を上書きする方法を見付けて、それを使って対処することで幸せになれた。 ↓こんな感じ。

let g:skk_user_rom_func_rules = ""
         \. "l  SkkMode(0)\<NL>"

書式は skk_rom_func_rules を定義している箇所を参照。 SkkMode というのは skk の ON/OFF をする関数で、non-zero を与えれば ON。 これと、さっき書いた

let g:skk_control_j_key = "<C-o>"

とを併せて、AquaSKK に近い挙動になる。

ちなみに skk_user_rom_kana_rules という変数を使えば、ローマ字かな変換のルールを追加できる。 わしは↓こんなの書いてる。(わかりづらいけど、z→スペース、で全角スペース。他の z 系のルールは大体すでに設定されてるので、必要無い)

let g:skk_user_rom_kana_rules = ""
         \. "z   \<NL>"

あと、↓こうしとくと、insert モードでの skk の ON/OFF 状態を記憶してくれるようになるので、gvim の iminsert=2 のような挙動になる。 好みにもよるけど、便利なときは便利。

let g:skk_keep_state = 1

他には↓これで、何回変換キーを押したら候補一覧が出るかの制御。

let g:skk_show_candidates_count = 3

他にもいろいろ設定項目はあるけど、わしが設定してるのはこの程度かな。 あ、もちろん辞書の設定とかはしてるけど、そこら辺は基本だからここには書かない。


2008-02-22

% [Rails] 微妙なバグ発見

まあ大勢に影響は無さそうだが、エラーが変なところで出て悩むという可能性はあるかも。

(actionpack-2.0.2/lib/action_view/base.rb)
298 template_extension = pick_template_extension(template_path).to_s
299 unless template_extension
300   raise ActionViewError, "No template found for #{template_path} in #{view_paths.inspect}"
301 end

to_s してるから 299 行目の unless ブロックが実行されることは絶対に無い。 直すとしたら、

299 if template_extension.empty?

とか?

% [雑談] ネスカフェ ドルチェ グストというのを買った

わりとカフェイン中毒のわしとしては、仕事中とかコーヒー紅茶の類いは欠かせないんだが、いちいちちゃんと落としてコーヒー入れるのもめんどくさくて、ほとんどはインスタントコーヒーを飲んでいた。 でも、まあさすがにいい加減もう少しちゃんとしたコーヒーが飲みたいよなーと思っていたところ、知り合いが結構お薦め評価をしてたんで思い切って。

でまあ、結構良いですよ、と。 何が良いって楽なのが。 詳しいことはリンクしたサイトの方でも見てもらうとして、簡単に特徴を述べるなら、

  • 使い方、超簡単
  • お手入れ、超簡単
  • 味、少なくともインスタントよりはずっと上

「要するにコーヒーメーカーなんでしょ?」と思うかも知れないけど、ちょっと違う。 や、コーヒーを作る機械なんだからコーヒーメーカーで正しいんだけど、たぶん普通の人が思い浮かべるそれのイメージとは違う。

まず、コーヒーを作って溜めておくわけではない。 コーヒーはその都度飲むときに一杯分ずつ作る。 タンクには『水』を入れておいて、飲むときにカプセルをセットして抽出という流れ。 『お湯』じゃなくて『水』。 でも電気ポットじゃないのでお湯を沸かすわけではない。

なのに抽出時には、いきなり熱いコーヒーが出てくる。 すごい楽。 お湯が沸くまで待つ必要とか無いの。

カプセルの単価が 40 円 50 円ほど (追記)800 円でカプセル 16 個(/追記) で、ちょっと高いと言えば高いけど (世の中には単価十何円の一杯ずつパックとかあるしね)、わしのようなものぐさな人間にはかなり適しているアイテム。 ちなみに希望小売価格が 19,800 円になってるけど、実質唯一の取り扱い店であるセブンイレブンでは 14,800 円。 でも、店頭販売してるのは北海道だけみたいなんで、その他の地域の人はちょっと面倒かもしれない。

% [game] セカキュー2日記、第二夜

ガンナーとドクトルマグスも逃走率 UP を持っていることに気付く。

しかしガンナーはアルケミストがいない分の属性攻撃戦力を担ってるし、ドクトルはメディックの代わりに回復のエキスパートになってもらわないといかん。

…… って、 よく見たら全員持ってんじゃんか、逃走率 UP。 なんだ、誰でも使えるスキルになったのかよ。

とは言え、誰に付けたもんか迷うんだよなー。 で、結局パラディンに全力逃走を付けてみたり。 付けたは良いけど、どこまでレベルを上げるべきかも悩みどころ。

そう言えば、メディックの『キャンプ処置』はどうなったかなー。 前回あまりにも地雷だったんで、今回逆に使えるスキルに変身してたりして…… とか思っちゃうんだけど。

…… そして、また騙されると(笑

メディック入れないで良かった。 入れてたら悩んで眠れなそうだ。

% [game] セカキュー2日記、やっぱレンジャー良いなー

ちょっと事情があってレンジャーを一人作ったんだけど、やっぱスキルリスト見てると使いたくなってくる。 先制ブーストとか危機感知とか重要だよなー。

アザーズステップの取得条件が厳しくなってるような気がするけど、前作でどうだったかあんまり憶えてないんで実際のところはわからん。


トップ «前の日(02-21) 最新 次の日(02-23)» 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com