Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 99/248: « 95 96 97 98 99 100 101 102 103 »

RapidSVNとdiff - Jan 31, 2008

前にメモした気がしてたんだけどどうやらメモし忘れてたみたいなので……

WindowsでRapidSVNを使うときは、差分を表示するツールが付いてくるみたいなのでいいんだけど、UbuntuでRapidSVNをインストールすると、編集時のテキストエディタ、差分表示ツールのどっちも手動で設定しないといけない。テキストエディタはgeditでいいんだけど、差分表示ツールは普通にdiffを指定してもうまく動いてくれないので、GUIの物を入れて使わないといけない。

で、パッケージマネージャで「diff」をキーワードにして検索するとやたらたくさん引っかかるのでそれらしい物を片っ端から試してみたところ、どうも「xfdiff」が一番よさげな感じだった。日本語が化けないとかGUIがそれなりに綺麗とか、まあそんな理由からなんですが。

XUL/Migemo 0.7.12 Thunderbirdでメール検索に対応 - Jan 29, 2008

ということで、アップデートしました。余りに久しぶりの更新すぎて更新の手順を忘れてしまっていたのはここだけの秘密です。

やってることとしては、リンク先にも書いてるけど、まず検索対象のフォルダのメール全部を走査してヘッダ情報を収集。次に、それを文字列として連結して検索用のデータを作成。それに対してXUL/Migemoで生成した正規表現でマッチングを行い、ヒットした箇所を抜き出して、それを検索語句としてThunderbirdに渡す。という手順で、ローマ字入力でのメール検索を実現しています。今のところヘッダ情報しか収集していないので、本文内に含まれる単語は検索できません。要約とかをきちんとキャッシュするようにすればできるのかもしれないけど、そこまでやると大変そうなので今のところはここまで。

ハードディスクが逝ってしまった後に再構築した環境でテストしている都合上、大量のメールがある状況でどのくらい重くなるのかは未検証です。ヤバいくらい遅くなる場合は、設定ダイアログから「メールの検索でXUL/Migemoを使用する」のチェックを無効にしてください。

んぁ。意図したわけではなかったんだけど肉の日リリースになった……

鴉 -KARAS- オリジナルサウンドトラック - Jan 29, 2008

DVDだけじゃなくてサントラも買っちゃったよ……まあ概ね第1話アバンタイトルと最後のメインテーマのためだけに買ったようなもんなんだけど。

オーケストラがたまんないです。

Thunderbirdの環境 - Jan 28, 2008

Firefoxの環境はデスクトップ百景を参照。

新マシンへの移行と同時にThunderbirdの本格的な利用を開始して、さっそく不満タラタラになったのでアドオンを漁ってみた。

  • Colored Diffs:Subversionのコミットログが色分け表示されるようになる。
  • Console2:主にデバッグ用。
  • コンテキストメニュー拡張:主にデバッグ用。
  • CuteMenus - Crystal SVG:メニューの視認性向上のために。
  • DOM Inspector (Linux):1.5までしか対応してないよという警告が出たけど、install.rdfのバージョン情報を書き換えたらそのまま使えた。
  • header scroll extension:すべてのヘッダを表示するようにしたら本文が画面外に吹っ飛んでしまって困るので。
  • JavaScript Debugger (Venkman):主にデバッグ用。
  • No New Window on Double Click/Mozilla Add-ons:フォルダペインのダブルクリックで新規ウィンドウを開かないようにする。とりあえず入れてみた。
  • Priority Switcher:メールの重要度を手動で変更できるようにする。
  • Quote Colors:Thunderbird標準の引用表示が気に入らなくて、一般的な「>」の表示にするために。
  • SQLite Manager:主にデバッグ用。
  • Tag Dialog/Mozilla Add-ons:タグをこれから使うようになるかもしれないなと思って入れた。
  • XUL/Migemo/Mozilla Add-ons:一応入れてみた。ほとんど動作検証用?→メール検索に使えるようにしたので実用性が増した。
  • Signature Editorほか:Linuxだと署名が文字化けする……テキストファイルを自分で作って設定すればいけるんだけど。→公開終了になってしまった。「今日届いたメールの受信日時が時刻だけしか表示されない」という挙動を「常に日付と時刻を表示する」ように変更するものについてはabout:configでmail.ui.display.dateformat.todayを2にすればいいようだ。あとの機能は新しい拡張機能を作らないといけない。
  • Mail Redirect:メールに手を加えずそのまま転送する。
  • ThreadBubble:スレッド表示を有効にした状態で送信日順でソートする時、新しく返信が付いたスレッド全体が「送信日が最も新しい」とされるようになる。GMailのような感じ。古いスレッドに返信が付いたときに見落とさなくて済むようになる。
  • セカンドサーチ:クイック検索を開始してから「あー受信者じゃなくて送信者で探したかったんだってば」とイライラすることが多かったので、Thunderbirdにも対応させた。
  • Correct Identity:メールを返信するとき、差出人をメールを受信したアドレスのものに自動的に変更してくれる。受信アドレスと差出人アドレスを変えたい場合はエイリアスを設定する必要がある。詳しい説明

スレッド表示してる時にソートできなくなる件について、あまりにあんまりだと思ってアドオンを作り初めてからふと「Thunderbird スレッド ソート」で検索してみたら、about:configでmailnews.thread_pane_column_unthreadsをfalseにすればよいと書かれた記事を発見した。こんなのデフォルトでfalseにしといてくれよ……

スレッドペインのコンテキストメニューで一番上の項目が「返信」じゃなくて「新しいウィンドウで開く」になってるせいで、無駄にウィンドウを開いてしまってイライラ。なのでuserChrome.cssで項目を消した。ついでにDOM Inspectorのインデントも減らしてみたスレッド表示のネストが深くなったときに見にくくなるので、スレッドペインのインデントも変えるようにした。

#threadPaneContext-openNewWindow,
#threadPaneContext-sep-open {
  display: none !important;
}

@-moz-document url(chrome://inspector/content/viewers/dom/dom.xul),
               url-prefix(chrome://messenger/content/) {
  treechildren::-moz-tree-indentation {
    width: 9px !important;
  }
  treechildren::-moz-tree-twisty {
    padding-right: 0px !important;
  }
  treechildren::-moz-tree-cell-text(colNodeName) {
    margin-left: 1px !important;
  }
}

新マシン(仕事用) - Jan 25, 2008

仕事用マシンにしてたLet's note W2のHDDがハードウェア的にいかれてしまったらしい、ということで新マシンを買ってもらえました。Let's note W7です。Windows Vistaがプリインストールされてるんだけど、例によってLinux環境が必要なのでUbuntu 7.10 Gutsy Gibbonを入れました。

以下、詰まったところと設定。

  • Live CDで起動できない!!!→光学ドライブの電源が初期状態でOFFになっているせいだった。BIOSメニューで起動時から電源ONにしとくようにしたらいけた。
  • 画面がぶっ壊れて何も見えない!!!→セーフグラフィックスモードで起動したらちゃんと表示されたので「うーん」と思いながらもう一度起動しなおしたら今度はちゃんと表示された。原因不明。ハードウェアの認識に失敗してたせい?
  • ホットキーでボリュームを操作しても音量が変わらない……→システム→設定→サウンド→デフォルトのミキサ・トラックで「Analog Devices AD1884(OSS Mixer)」を選択したらうまくいくようになった。あと、一応/etc/modulesに「pcc_acpi」という行も加えてみたけどこれは不要だっただろうか?→うまくいったと思ったら落とし穴……ミュートの制御はできるけど音量の制御はできなかった。トホホホホ。根本的に勘違いしていたぽ。システム→設定→サウンド→デフォルトのミキサ・トラックで「HDA Intel (Alsa mixer)」を選択した状態で、その下のリストで「PCM」を選択すると、ホットキーで音量を調節できるようになった。タスクトレイ(?)のボリュームコントロールも、右クリックして「設定」で同じような画面が出るのでやっぱりここも「PCM」を選択。これでGUIのツマミもちゃんとボリューム調整に使えるようになる。ただし一つだけ問題があって、何でかは分からないけどイヤホンを挿しても本体スピーカーが無効にならない。ボリュームコントロールで右クリックして「音量調節ツールを開く」で「音量コントロール」ダイアログが開かれるので、「編集」→「設定」で「Headphone」「PCM」「Front」の3つにチェックを入れると、「スイッチ」タブに「Headphone」と「Front」の2つのチェックが表示される。このチェックをON/OFFすればそれぞれイヤホン端子と本体スピーカの音をON/OFFできるんだけど、これっていちいち手でチェックを付け外しするなんて、ありえないよねぇ……
  • compizの視覚効果を有効にできない!!!→そもそもXglその他が入ってなかった。sudo apt-get install xserver-xglで必要なソフトウェアをインストールしたのちログインしなおしたら無事設定できた。/etc/X11/xorg.confに以下の内容も追加してみたけどこれは不要だっただろうか?
    Section "Module"
        Load            "xgl"
        Load            "dri"
    EndSection
  • 字が汚い!!!→sudo apt-get install ipafontでIPAフォントをインストールしてから(文字化けの修正も必要?)、システム→設定→外観の設定→フォント でフォントをすべて指定し直し。あと、「描画方法」で「サブピクセルのスムージング」を選んで「詳細」を開き、「ヒンティング」を「なし」に。これで文字が綺麗になった。
  • タッチパッドでくるくるスクロールできない!!!→sudo apt-get install gsynapticsで必要なソフトウェアをインストールしたのち、/etc/X11/xorg.confのSynaptics Touchpadのセクションに「Option "SHMConfig" "true"」を追加してログインしなおして、システム→設定→タッチパッド で「回転スクロールを有効にする」にチェックを入れればOK。
  • いくやさんが書かれてるとおり、ホットキーで画面の輝度調整ができない。別のエントリにも情報があるけど、素人フリーライダーの僕にはよく分からない……→いくやさんはxbacklightを使う方法に落ち着かれたそうなので、僕も以下のようなシェルスクリプトを書いて、アプリケーションランチャに「~/shellscripts/backlight.sh '+20'」と「~/shellscripts/backlight.sh '-20'」てな感じで登録して、ランチャのボタンをクリックする度に1段階ずつ明るさを上下させるようにしてみた。
    #!/bin/sh
    minimum=5
    display='-display :0.0'
    arg=`echo $1 | sed -r -e 's/([+-])([^ ])/\1 \2/'`
    echo 'from' `xbacklight -get $display`
    current=`xbacklight -get $display | sed -r -e 's/..+$//'`
    new=`expr $current $arg`
    if [ `expr $new \< $minimum` = '1' ]; then new=$minimum; fi
    xbacklight -set $new $display
    echo 'to' `xbacklight -get $display`
  • Ubuntu 6.06LTSからのアップグレードアップグレードでGutsyにしたW2ではハイバネーションできなくなってしまってたけど、W7ではできるようになっててよかった。
  • タッチパッドの左右ボタンがくっついていないので、左右同時押しでセンタークリックの代わりにする使い方がやりにくくて困る。あとW2では1キーで操作できてたPage Up/Page DownがFnキーを押しながらでないと使えなくなってるのも困る。CtrlとFnのキートップが同じ仕様になったからキートップを入れ替えれるようになった所は嬉しいんだけど。
  • Firefox上でプラグインのインストールを促す表示が出て、flashplugin-nonfreeをここからインストールできるというのはすげーなあと思ったんだけど、入れても認識されない。コンソールで表示を確認したら、MD5ハッシュが一致しないからインストールしないよというメッセージが出ていた……こーいう事情らしいので、紹介されてたDebian Sid用のパッケージをダウンロードしてきてsudo dpkg -i 〜.debでインストールしたらちゃんと入った。

大体こんなところだろうか? あとは今まで使ってたソフトの類が全部入れ直しなので、設定がどうしようもなくめんどいです……

あと、これを機にThunderbirdをメインのメールソフトとして使い始めてみたんだけど、メールからフィルタを自動作成できないとか、フィルタを設定する時に移動先フォルダを先に作っておかないと選択できない(移動先フォルダをその場で新規作成できない)とか、いちいち細かいところで痒いところに手が届かなくてムキーとなる。Sylpheedはその辺よかったんだけどなぁ……って、自分でガンガン要望を挙げてそうしてもらったから当たり前なんだけど。あとスレッド表示を有効にすると他のカラムでソートできなくなるというのは致命的。アドオンでどうにかなるんだろうか?

Firefox 3でコンテキストオブジェクトを明示して、日本語などを含むスクリプトを実行するための方法 - Jan 24, 2008

UxUのことで悩み中。

テストケースを実行するとき、コンテキストオブジェクトを指定してスクリプトを実行しないといけないんだけど、色々問題があって悩ましい。

brazilさんが紹介されているとおり、ビルトイン関数のevalに第2引数を渡すか、Objectクラスのメソッドであるevalを使うと、コンテキストオブジェクトを指定してスクリプトを実行することができる。ただ、この両者は若干動作が異なる。

例えばこんなコードを考えよう。

var context = {};
context.eval('var val1 = true; this.val2 = false');
alert(context.val1); // => true
alert(context.val2); // => undefined

Objectクラスのメソッドだと、実行したスクリプトの中で変数として宣言した物がそのままそのオブジェクトのプロパティとなり、外部から後で参照することができる。でも、

var context = {};
eval('var val1 = true; this.val2 = false', context);
alert(context.val1); // => undefined
alert(context.val2); // => undefined

ビルトイン関数の方だと、そうはならない。また、どちらにしてもthisを明示した場合は外部からは参照できない。

言い換えると、「コンテキストオブジェクトを明示して実行したスクリプトの中でvarで宣言された値を外部から取得するには、Objectクラスのevalメソッドを使わないといけない」ということ。

ところが、Firefox 3ではObjectクラスのevalメソッドが存在しない。どうやらどこかの時点で削除されてしまったようだ。

元のMozLabではどうしていたかというと、evalを使う代わりにmozISubScriptLoaderを使っていた。

var context = {};
var loader = Components.classes['@mozilla.org/moz/jssubscript-loader;1']
          .getService(Components.interfaces.mozIJSSubScriptLoader);
loader.loadSubScript(
  'data:application/x-javascript,'+encodeURIComponent('var val1 = true; this.val2 = false'),
  context
);
alert(context.val1); // => true
alert(context.val2); // => false

こちらは前二者のどっちとも結果が異なり、varで宣言した物もthisを明示した物も両方ともコンテキストオブジェクトのプロパティとして外部からアクセスできるようになる。

ところが。mozIJSSubScriptLoaderを使う方法だと、スクリプトの中に日本語などの非ASCII文字があると化けてしまう。

var script = 'alert("日本語")'; // Unicode

eval(script); // => "日本語"
({}).eval(script); // => "日本語"
loader.loadSubScript('data:application/x-javascript,'+encodeURIComponent(script), {}); // => 文字化けした文字列

encodeURIComponentによってUnicodeの文字列がUTF-8のバイト列に変換されてしまうのでこうなる、のか? とにかく、これではテストケースの説明を日本語で書けなくて(僕が)困る。UxUではこの処理の直前でUTF-8なりShift_JISなりで書かれたテストケースを読み込んで内部コードのUnicodeに変換しているのだけれども、せっかく変換したのに最後の最後で化けてしまうんじゃあしょうがない。

ということでああでもないこうでもないと試していて、以下のような方法に辿り着いた。

var script = 'alert("日本語")'; // Unicode
script = 'eval('+script.toSource().replace(/^\(new String\(|\)\)$/g, '')+')';
loader.loadSubScript('data:application/x-javascript,'+encodeURIComponent(script), {}); // => "日本語"

encodeURIComponentに放り込む前に、一旦全体を文字列リテラルとして評価可能な文に変換して(この時点で日本語などの非ASCII文字は「\uXXXX」のようなUnicodeエスケープに変換される)、encodeURIComponentを通過した後でevalで元に戻す、というトンネル抜けのようなやり方。これによって、日本語で書かれた説明もそのまま利用できるようになった。

でも、これにもまだ問題がある。この方法で実行したスクリプトの中でエラーが起こると、MozUnitテストランナーのUI上でソースを表示してもeval("(元のテストケースのスクリプト)")という1行だけのソースになってしまって、エラー箇所がさっぱりわからない。これ、どうにかならんもんだろうか……

追記。エラーが発生した行の番号自体はこれでも正しく取れてるようなので、とりあえずやっつけ仕事で、MozUnitテストランナーのUI上でソースを表示する時にソースを元の文字列に復元するという方向で手を打とうと思う。

さらに追記。よく考えたら、わざわざ自分でソースを復元しなくても、変換前後で行数その他は変わってないんだから、ソース表示の時に元のファイルの方を読み込ませるようにしたらいいんだな……

さらにさらに追記。mozIJSSubScriptLoaderの仕様変更によってこの方法も使えなくなりました。現在何かいい手は無いか考え中。

さらにさらにさらに追記。上記内容と同じような結果になる代替案を考えてみた。

さらにさらにさらにさらに追記。evalの機能についてFirefox 3.1でまた変更があったようだ

迷惑をかけたくない? - Jan 23, 2008

やりたいこと云々の話シロクマさんが私信を書いてくださっているのでそれを見てのコメントです。コメント欄に書かなかったのは、自分の所の文としてまとめておきたかったから。

迷惑をかけることを忌避する云々についてですが、自分の場合の根本的な動機を一言で言えば、「責められたくない」ということに尽きると思います。別の言葉で言えば「責任を追及されたくない」、「叱られたくない」、「怒られたくない」、「不愉快な思いをしたくない」、そんなとこでしょうか。

自分に非難の矛先が向く事態を可能な限り避けたい。迷惑をかければ非難されるし、かといって何もしなければそれも非難されるから、非難されないような無難な所を漂っていたい。と言いつつも、特別扱いされてちやほやされたいという感情には囚われている。それが僕なのだと思っています。結果的には同じ行動になっていたとしても、動機はまったく異なる。

だから僕の場合、責められないとひとたび分かればトコトン甘えて迷惑をかけまくります(あるいは何もしません)。そういう所を見ても、僕が忌避しているのがあくまで「責められること」でしかなくて、決して「迷惑をかけないこと」などという高潔・完璧主義的な考え方には基づいていないことは、まぁ、明らかでしょう。

タツノコプロ40周年記念作品 鴉 -KARAS- - Jan 23, 2008

公式サイトとかGyaoとかで見れるトレイラーはショボいので、ようつべとかにあがってる3分のトレイラーの方がオススメ。なんでこっちの方を公式に置かないんだろうねぇ……?

とりあえず先週後半にこれをチラッと見て「かっこEEEEEEEEEEEEEEE!!!!!」と思い、ニコ動とかで「これはDVDでこそ見るべき」とかコメントが付いてたし、「40周年」という売り文句もあってか、なんだろう、所有欲を物凄く刺激されてしまった。思わずDVD全6巻コレクターズエディション一気買いしちゃったよ。まあ定価じゃなくてマーケットプレイスとか使ったから2/3かそれくらいの値段で手に入れたんだけど(といっても4巻以外は新品だった)。公式サイト見たらコレクターズエディション全巻購入特典とやらの応募〆切が今月末とのことだったので、ギリギリのタイミングだ。トレイラー映像にこの時期に辿り着けたのは奇跡だね。貰える物はなんでも貰っとくよ。

とりあえずヒーロー物好きで未見の人は1話だけでも見ておいて損はない。作り手側が特に力を入れて作ったとコメントしているだけあって、劇場用どころの話じゃない激ハイクオリティだ。ストーリーはてんで分からんが(ぉぃ)、とにかく見せ場見せ場の連続でゲップが出るほど。何回も繰り返し見てしまいたくなる。

ストーリーの方は、特に4話の過去話とか6話の都知事の話とか陳腐やなぁと思わなくもないんだけど、それをさっ引いても僕にとっては十分面白かった。5話ラストのゆりね復活からのシークエンスは身震いしたよ。

映像は、いわゆる3DCGと2D作画の組み合わせなんだけど、これが丁寧に合わせてあって、3Dと2Dのいいとこ取りになってる。3DCGっていうとなんとなくオモチャっぽい印象を受けてしまいがちで、事実1巻特典ディスクに収録されてた2001年版トレイラーともなると「あー……」て感じなんだけど、本編映像では、単なるトゥーンシェードというわけでもなく、面カゲとかBLベタとか言われるクッキリハッキリした陰が描かれていて、レイトレーシングとかの「理屈的に正しい陰影」じゃなくて「画として魅せる陰影」になってるから、とても不思議な感じだ。

中二病と言われても構わない、ここまでガチで作り込んで作り抜いたことがもう賞賛に値すると思う。日本のアニメはホントに底が知れないな……

一応Amazonにリンクしとく。

何でそんな風に考えたのか - Jan 22, 2008

北極だか南極だかから白毛の熊さんがやってきそうなので今のうちに自分で芽を刈っておく。

やりたいこととやってみたいことの違いの話を見てこういうことを脊髄反射的に書いたのは、冒頭に書いている自分の恋愛関係の悩みというか自分で自信を持てずにいて自己欺瞞で凌いできている部分について痛い所を突かれたからに他ならないと思う。仕事の事だのなんだのは後付に過ぎないと思う。つまり、僕は、自分自身が今の関係についてただの「やってみたい」の域を出ない程度の思いしか抱いていなかった可能性を自覚しており、その可能性が少なくないということも自覚しており、そうであるはずがないと信じたがっていて、あるいは、そうであったとしてもその先には望ましい未来があるはずだと信じたがっている、という事だと思う。自分のした選択が間違いではなかった「ということにしたい」がために一生懸命正当化しようとした悪あがきの結果が、こういうことなんだろう。

続きを表示する ...

Page 99/248: « 95 96 97 98 99 100 101 102 103 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき