2005年9月20日から2005年9月16日までの日記を表示中

2005年 9月 20日 (火)

CDとか

よみさんから誕生日プレゼントを貰った!・・・どうすんだこれ(;´Д`).

それとは別に,確保してもらってた東方花映塚と,「東方連歌想」なるアレンジCDを受け取りました.かもさんというサークルさんが出してるそうなんですが,Webが無いようで,WAVEDRIVEさんより更に謎です(^^;.紅楼夢の残りなんですかね.よみさん曰く,とらのあなに行った時には既に3枚しかなかったとか.レアだ・・・.

uim.elとbackspaceとdeleteの無駄に長い話

AmazonでJavaScriptの本とか注文してみました.これでAjaxまっしぐらの予定.ってそれとは全然関係ない話で,こちらと関連した話なんですが・・・.まあ,何というか,EmacsのBackspaceとDeleteの関係は恐いというか,できれば触りたくないところだったりするという言い訳です.以下考えを整理するためのメモです・・・.

えーと,結局何が問題かって言うと,デフォルトのEmacsをXで上げてBackspace押すと,何か[127]が戻ってくるんですね(「(read-key-sequence-vector ">")」とか評価すると確認できる).で,127はASCIIコードでDELなんですが,Emacsでデフォルトのバインドを見ると,これが「backward-delete-char-untabify」にバインドされてます.これ,カーソルの左を一文字消す(ただしタブはスペースにばらして消す)ので,まあ,普通に他の環境のBackspaceと同じ雰囲気で使えてしまうと (ちなみに,ターミナルでEmacsを上げた場合,xtermならBackspaceはやっぱり[127]になり,mltermだと[4](つまりはC-d)になって,右側一文字が消える,「delete-char」として処理されます).

で,Emacsで完結するならそれでいいんですが,uim.elはこのキーの値をuim-agentを介してlibuimに渡す必要があります.そのときに,生のまま[127]をuim-agentに渡してしまうと,[127]はC-dともDeleteとも違うため,uimはDeleteとして処理してくれません.これだけならまあいいんですが,厄介なことにプリエディットがおかしくなるという副作用つきです.

この問題は,uim.elが[127]をuim-agentに渡す前に,こっそり[delete]に変換しちゃえば一応回避できます.ただ,[delete]は,当然uim-agent内部でUKey_Deleteに変換されるため,プリエディット表示時にはカーソルの右のプリエディット文字を消す動作になってしまいます.これはBackspaceキー押した際の一般的な振る舞いと違うので,よくないかなーと思うわけです.[127]をC-dである[4]に変換しても同じことです.

そこで,uim.elでは,現状[127]がきたら[8]に変換するようにしてます.なんでそんな変な変換してるのかというと,これはキーをUimがスルーしたときの処理と関係あります.Uimがそんなキーイラネとキーを返してきた場合,現状ではuim.elは,返ってきたキーをそのまま利用します.つまり,uim.elが[127]を変換してuim-agentに[8]を渡して,Uimがそれを処理しなかった場合,uim.elは,[127]ではなく,uim-agentが返してきた[(control 104)]というのを処理するようになってるんですね(104は「h」なので,これはC-hと同じ意味).uim.el側で変換前のとっといて使えばいいじゃんという感じなんですが,何らかの理由でそれはあきらめたんだったと思います(XEmacs絡みかな?忘れちゃいましたorz).

まー,そんなわけで,プリエディットが無い状態でBackspaceを押すと,uim.elには巡り巡って[8]と同じ意味の[(control 104)]ってのが戻ってきます.で,uim.elは何をするかというと,[(control 104)],すなわちC-hに何がバインドされているか,キーマップを走査して調べます.で,あらかじめ.emacsとかで「(global-set-key "\C-h" 'delete-backward-char)」とか設定してあると,delete-backward-charが実行されてめでたくカーソルの左の一文字が消えるんですが,C-hに「help-command」なるキーマップなんかが割り当てられてたりすると,消えずにヘルプに落ち・・・って現状落ちないなこれ(;´Д`).「Wrong type argument: commandp, help-command」はuim.el側のバグだった・・・orz.ま,まあ,本来は,エコー領域に「C-h (Type ? for云々・・」とか出るのが理想なわけです.

いやー,駄文ですね(;´Д`).こんな所まで読む人はいないと思いますが,そんなわけで,C-hに対してあらかじめdelete-backward-charが割り当てられてないと,uim.elを通す状態でbackspaceを押した時に,文字が消えてくれなくなる,という仕組です.というわけで,現状,uim.elは

  • C-hにdelete-backward-charとかが割り当てられていて
  • Backspaceを押すと[8]か[127]か返ってくるような環境

を前提として作っちゃってることになるっぽいです.大概,みんな必要に応じてbobcatとか使ってるだろうし,きっと・・・.というのが,言い訳でした.さて,どうしたものか・・・.Emacs側で[backspace] に「delete-backward-char」を割り当ててくれたりすると,[127]を[8]じゃなくて[backspace]に変換してそれで終わりな気もしますが・・・.

2005年 9月 19日 (月)

UimとAjax

前にtkngさんが日記に書かれていたのを思い出し,Ajaxの勉強がてらブラウザからUimを叩いてみることに挑戦してみました.まー,とりあえず結論からいうと,まだ動いてません(^^;.JavaScripは,Netscape 2.xかなんかに搭載されて間もない頃(96年頃!?)にちょっといじって似非電卓みたいの作ったっきり触ってないわけで,最近のDOMとかまったくわかっておらず,XMLに至っては一度もちゃんとした資料を見たこと無し..fonts.confとか日記のRSSとか見様見まねでいじったりしてるわけで・・・.というのは日頃の勉強不足の言い訳なんですが・・・.

とりあえず,ブラウザ側ですが,Ajax を使った日本語 Full IMEを激しく参考にしつつ,ちっこいページ作ってどの程度キーが拾えるのかチェックしてみました.おお,Firefoxだと何でも拾えますね.こりゃすごい.しかもイベントハンドラがfalseを返すとそのキーは捨てられて,trueを返すと何ごとも無かったかのようにキーが処理されるとは・・・,Emacsより断然楽かも(;´Д`).・・・と思ったら,ブラウザの間の壁早速登場.Mozillaのサイトにあったリファレンス見ながら書いたやつだと,IEで全然動かんorz.上記サイトだとIEでもバリバリC-qとか拾えるってことは,色々互換性に関するノウハウがあるんでしょうなぁ・・・.こりゃきっちり勉強しないとダメそうだ(;´Д`).というわけで後回し.

一方,サーバ側ですが,こっちはWebサーバ上でUimと裏のエンジンを動かして,適当なcgiか何かを用意して外からUimとやりとりするような感じで.cgiの部分は,めんどくさいのでuim.elのuim-agentの出力をS式っぽいのからXMLっぽいのに変更して,コンテキスト切替えとかヘルパーとか要らなそうな機能削ったものを用意.外とのやりとり書くのもめんどくさかったので,ここはphpで適当につなぐことにして済ませれば,かなり楽にできる・・・はずが,とりあえずchrootした環境で走らせるとAnthyの中でセグって動きませんでした.なぜだ・・・. homeが/dev/nullだから? とりあえずよくわからんので,skkにしたら,コマンドラインからはchroot状態でもphp越しにちゃんと動くようになりました.ふぅ.が,Webサーバ越しに叩くと,やっぱりちゃんと動かずorz.こっちは正常終了してるようなんですが,全然コールバック関数が呼ばれてない感じです・・・.なんだ,何が悪いんだ・・・.

というところでひとまずギブアップです.うー,不完全燃焼だ(^^;.まー,そのうち再挑戦します.

2005年 9月 18日 (日)

uim.el-0.0.4

ようやくuim.el-0.0.4出しました.疲れた・・・.ドキュメント書いてる内に設定のまずいところ見付けて直したりで,もう全然だめだめです_|‾|○.もっと早く終わらせて,Ajaxとやらで遊んでみようと思ってたのに・・・.

しかしこの日記と同じで自己満足的なところが強いソフトは言え,実際常用している人って,どれくらいいるんでしょね.回りだと/ ´_ゝ`)とMげ氏は使ってるらしいですが,GWAは実は使ってなさそうだし.最近primeに目覚めた443氏はどうかな・・・.

CDとか

昨日書きませんでしたが,黄昏フロンティアさんの「幻想曲抜萃」を聴きました.うおー,美鈴まだ使ったこと無いし.ていうかパッチさえ当てていないというか最近起動もしていないorz・・・というかここに書いてることCDと全然関係ないし_|‾|○.まあ,何はともあれ,ついに消化完了ですよ.実はまだ見てないBGMつきCG集があったりするんですが・・・.

そしてリッピングなんですが,リッピング自体はCD突っ込んでcd2ogg.shとかコマンド(笑)打つだけでwavに落としてノーマライズした上でoggに変換とかするようにしてあんですけど,タグ付けがめんどくさくて仕方ないです.おかげで,ちょっとだけタグをつけた新作がヘビーローテになってます(;´Д`).CDDBとか使えって感じですが,タグのつけ方のポリシーがCDごとにまちまちになるのがちょっと嫌なんで,やっぱそこは手打(というかこれもWebがあればそっからコピペして切り出してスクリプト(tagogg.pl)で適用するだけなんですけど)にこだわりたい,みたいな.

rockbox

うおーん,ここの写真とか見ると,ほんとrockboxは神ですね.iHP-120を失ったのは本当に痛い・・・とか思っちゃいけないんですがやっぱり痛いよなぁ.H320買わずにヤフオクでH120ゲットしときゃ良かったとちょっと思ったり・・・.うーむ,とりあえず,H300系用のが出たときに備えてクロスコンパイル環境用意してみよう・・・.

東方花映塚

委託始まったそうです.そしてよみさんが買っといてくれたそうです.∩( ・ω・)∩ワーイ.

ちなみに今日はmixiで刺激されて超ひさしぶりに永夜抄やりました.咲夜単体 Hard 5面で撃沈→咲夜単体 Extra フジヤマヴォルケイノで撃沈・・・orz.Hardはまだしも,一時はクリア当り前だったExtraがこれってのはひどいです.ひどいですけど,その後はヒトガタハッパやりました(^^;.これもノーマルクリアできそうに無い・・・.

2005年 9月 17日 (土)

uim.el

何か,別に狙って調べたりしたわけじゃないんですが,debug-on-errorをtにしているとキー入力の際にデバッガに落ちちゃう問題が解決しました.本来のキー割り当てを調べる際に,一時的にuim.elのキーマップをnilにしてたんですが,それがまずかったようです.マイナモード自体を一時的に無効化するようにしたら,まったく問題なくなりました.くそー,Emacs辛い・・・.

で,後はFreeBSDとかSolarisで動くかテスト・・・.うお,FreeBSD4だとヘッダが足りなくてコンパイル通らず・・・.試しといてよかった(;´∀`).よーし,あとはREADMEを書き直してリリースだ・・・って,メジャーモード変えたら動かなくなりましたよΣ(゜д゜lll).

うおお,なぜかuim-modeが有効になった状態でメジャーモード変えると,全てのバッファローカルな変数がリセットされるはずなのに,uim-modeだけtのまま_|‾|○.0.0.3.2では問題なかったのになぜ・・・.さっきから格闘してるんですが,全然とれません・・・.

原因が全然わからんのでcvsから少しずつ戻していくと・・・,さっきのデバッグ(debug-on-error回避のやつ)でエンバグしてた_|‾|○.うおー,つまらんところで時間食ってしまった・・・.しかもこの文章書いてて気づいたんだけど,昨日のundoリスト繋げる部分,実装が悪くてundoリストが長くなるとテラオソス.あー,setcarとかsetcdr使えばいいのか.リスト不勉強露見.あー,そしてまたもリリース失敗.

というわけで,ドキュメントが書けたら出します.

2005年 9月 16日 (金)

uim.el

昨日書いたのは,ほんと単に表示部いじるだけだったんで,あっさり完了.ついでに,井上さんに御指摘頂いたundoリストの更新の問題への対処もやってみました.思ったよりも面倒でしたが,珍しくはまることなく狙い通りにできたんでわははーとか思ってたら,C-xで始まる2ストロークの操作のあたりでバグが出て,やっぱりはまり→書き直しですよ_|‾|○.そんなわけで,リリース失敗orz.

Revolutionのコントローラ

何かすげーコントローラ発表されてますね.プロジェクタとPCを同時に操作できるけど実はどっちも中途半端でとても使いにくいレーザポインタつきリモコンみたいだ・・・.

2005年9月20日から2005年9月16日までの日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2005年9月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ