2004-01-21 (Wed)
_ Net::IMAPでclosed streamエラー
mobileimapで以下のようなエラーが出るというレポートをいただいた。
closed stream /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `write' /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `print' /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `put_line' /usr/local/lib/ruby/1.8/net/imap.rb:986:in `send_command' /usr/local/lib/ruby/1.8/net/imap.rb:980:in `synchronize' /usr/local/lib/ruby/1.8/net/imap.rb:998:in `send_command' /usr/local/lib/ruby/1.8/net/imap.rb:311:in `logout' ...
Net::IMAPのせいではないか、ということだけど、そうに違いない。 ごめんなさい。
でも、上記のバックトレースだけでは状況がよくわからない。
Net::IMAPはスレッドを使ってるのだが、Rubyだとメイン以外のスレッド
が例外で落ちた時にデフォルトでは何もおこならい(Javaとかはどうなんだっけ)
ので、バックトレースの情報があんまり有用でないことがある(本当の問
題はバックトレースが出てくるより前の、別スレッドの挙動にあるため)。
こういう時は、Thread.abort_on_exception = true
とすると原因
がわかることが多い。
*1
*2
あと、Rubyのスレッドではまりやすいのは、Cで実装したメソッドの中で ブロックしてしまうと(関係ないスレッドもふくめて)全部の処理が止まっ てしまうことだ。 たとえば、データベースのトランザクションなんかでデッドロックに陥 ると、どうしようもなくなる。 *3
_ Changes
rubyの変更点を日本語で読みたい時は <URL:http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs> を見ればいいらしい。 *1
*1 というか、書かなきゃ。
2005-01-21 (Fri)
_ fixed typo
ひさびさにcommit。 ChangeLogに、
fixed typo. fixed: [ruby-list:40546]
と書こうとしたら、
fixed typo. fixed: [ruby-lis:40546]
と書いてしまった。
もう一度直したけど、今度はだいじょうぶだよな。
2017-01-21 (Sat)
_ Textbringer 0.1.0
年末から作っていたテキストエディタをいったんリリースした。
こんな感じのスクリーンエディタである。
$ gem install textbringer
でインストールして、
$ tb
で起動する。
日本語テキストも扱える。
ISO-2022-JPも扱いたい場合は~/.textbringer.rbに以下のように書いておくとよい。
Buffer.detect_encoding_proc = Buffer::NKF_DETECT_ENCODING
マニュアルは何もないので、lib/textbringer/keymap.rbあたりを読んで使い方を想像してほしい。 まあだいたいEmacsと同じでredoがundoと別のコマンド(C-xC-/)になっているくらい。
Rubyモードも一応作ったけど、まだオートインデントとC-cC-cでのrake実行くらいしかできない。
名前の由来はマイクル・ムアコックのメルニボネの皇子とかに出て来る魔剣Stormbringerなんだけど、新訳が出たと思ったらもう紙は絶版になっているようでつらい。
何でテキストエディタを作っているかというと、会社の忘年会の時に中村君と話していて最近作りたいものないという話になって、昔テキストエディタを作りたいと思っていたことを思い出したから。 そのためにcursesの拡張ライブラリを作ったのだが、その時から20年くらい経ってしまった(しかも結局ncurseswというgemを使うことにしたので活かされてない)。
今のところEmacsに対するアドバンテージは括弧が少ないことくらいだが、地道に育てていきたい。
1/22追記
tbというコマンド名がtb.gemとconflictするという指摘があったのでtextbringerにrenameした0.1.1をリリースした。
2018-01-21 (Sun)
_ QMK Firmwareのカスタマイズ
Viterbi keyboardに載せているQMK Firmwareに面白そうな機能があったのでカスタマイズしてみた。
RGB Lightingの無効化
ViterbiのデフォルトのキーマップではRGB Lightingが有効になっているが、LEDは付けていなので無効化した。 これでかなりファームウェアのサイズが小さくなる。
Mousekeysの有効化
マウスの移動やボタンイベントをキーに割り当てられるので、Lower + カーソルキーをマウス移動、Lower + 最右列下から三つをボタンイベントに割り当てた。
Dynamic Macroの有効化
Emacsのキーボードマクロのような機能があるので有効にした。 Raise + Homeで記録開始、Raise + Escで記録終了、Raise + Endでマクロの実行とした。 マクロは二つまで同時に記録できるので、もう一つはPage Up / Page Downに割り当てた。
その他
他にはAuto Shiftを試してみたけど、hjklあたりの長押しが使えなくなるのでいったん無効化した。
OS毎にUnicodeサポートもあるようなので、頑張ればキーボード単体でT-Code入力もできるかもしれない。