Home > Latest topics

Latest topics 近況報告

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

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

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

Page 43/248: « 39 40 41 42 43 44 45 46 47 »

新マシン(仕事用) - 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でまた変更があったようだ

UXU - UnitTest.XUL、1000人スピーカプロジェクト - Jan 21, 2008

amachangの1000人スピーカプロジェクト第1回でお披露目したUXU(うず)のこととか。書くのが遅くなったのは見てたからです。

プレゼンの話

ニコ動に全プレゼンの映像が上がってて僕の奴も見れるんですが、いやー、これはひどいプレゼンですね。

いや言い訳さしてもらうとですね、前日に仕事用マシン(Let's note W2)のHDDが逝ってしまいまして、前日夕方くらいからそれのせいであたふたして徹夜してて、あんまり頭働いてなかったんですよ。だからこの日はマシンは持参してたけどUbuntu 7.10のLive CDで起動してました。隣の人とか後ろの人とか多分CD-ROMドライブの音がぶんぶんうるさかったと思いますが、それはこのせいです。それにしてもUbuntuすごいね。CD起動なのに無線LAN使えちゃったよ。さすがにプロジェクターの認識は再起動が必要みたいだったからプレゼンの時だけamachangにマシンをお借りしましたが。

プレゼンでちゃんと言えてなかったことの補足。自分がテストという物の意義を理解したのがRailsのそれだったので、UXUを最終的にどういうものにしたいのかという目標も、今の所はRailsに置いてます。なので、今は実現できてないけどfixtureみたいな物もできるようにはしたいと思ってます。

それか、もっと根本的なところで、テスト専用のプロファイルにその時だけ切り替えて……みたいなこともできるようにしたいんですが、この辺になってくるとプラットフォーム用のバイナリを作らないといけないような気がしていて気が重いです。もしかしたらProfile Switcherが解決のヒントになるでしょうか?

yieldの変な使い方の話

yieldの読み方は「いーるど」でよかったんですね。でもそれ知ってもどうしても「いぇーるど」と読んでしまう……

昨年頭にごにょごにょしてたのはプレゼン中に書いたお蔵入りバージョンのUXU 0.1のことなんですが、その時は単にウェイトの秒数を指定するだけでした。つい最近になって奥さんのエントリを見て、そうか「復帰条件」と考えれば返り値は数値だけじゃなくてもっとなんでも渡してイイんだな、とインスパイアされて、フラグを保持するオブジェクトを渡すパターンをまず実装し、それから関数を渡すパターンも実装したという次第です。

UXUでやってることの工夫というか特徴的なところは、yieldの本来の用途であるところのジェネレータ・イテレータの生成という役割を隠蔽してしまって、「処理の一時停止」「再開」という部分だけに特化した見せ方をしているところではないでしょうか。内部的には昨年頭に書いた話にあるとおり、setUpとかテストケースとかの関数オブジェクトの返り値がジェネレータであればタイマーを使ってイテレーションを行う、というだけのことなんですが。

amachangが紹介していたJSDeferredの方がもっときっと便利でいろんな事ができるとは思うんですが、プレゼンでも言った通り僕はN88BASICの行番号の呪縛から未だに逃れられていないような人間ですので、これ以上の複雑なことは脳が拒否して受け入れてくれんのですよ……

続きを表示する ...

Firefoxとペリカン便 - Jan 10, 2008

昨年くらいに試した時、日通のWebサイトからペリカン便の再配送を申し込もうとしたら、Firefoxではフォームが機能しなくて往生こいた。Amazonで買い物をすると僕の所には必ずペリカン便で届くので世話になる頻度も高いのだけれども、僕の中では日通は「つかえねー」サイトの代表の一つになってた。でも今日ふとFirefoxでアクセスしてみたら普通に動くようになってた。いつの間に対応したんだ? ともかく、この件で僕の中では日通の株がかなり上がった。

XULRunnerアプリケーションにアドオンをインストールする方法 - Dec 17, 2007

McCoyの改造を試みるために、XULRunnerアプリでもアドオンを使えるのかどうかという実験をしてみた。

  1. XULRunnerアプリを終了する。
  2. インストールしたいアドオンのXPIパッケージの中にあるinstall.rdfを編集して、targetApplicationにそのXULRunnerアプリのIDを書き加える。ちなみにXULRunnerアプリのIDはアプリケーションのディレクトリにあるapplication.iniに書かれている。McCoyなら「mccoy@developer.mozilla.org」。
  3. XULRunnerアプリのプロファイル内の「extensions」フォルダに、アドオンのXPIパッケージをコピーする。McCoyの場合は「C:\Documents and Settings\ユーザ名\Application Data\Mozilla\McCoy\Profiles\ランダムな文字列.default\extensions」。
  4. XULRunnerアプリを起動する。
  5. Firefoxの物と同じ「ソフトウェアインストール」のダイアログが表示されるので、「OK」ボタンを押してアドオンをインストールする。

これだけでいける。逆に、アドオンをアンインストールしたい時は、アドオンのID名が付いたフォルダをプロファイル内の「extensions」フォルダから削除する。

amachangさんはアプリやアドオンそのものの中身をガリガリ書き換えるやり方を紹介されてるけど、僕はこういうやり方はしない方がいいと思ってる。理由は以下の通り。

  • アプリやアドオンが自動アップデートされる度に、その都度ソースを書き換え直さないといけない。Firefoxの場合特に設定を変えていなければ勝手にそれらが行われてしまうので、「気がついたら変更が失われてた」ということになりかねない。
  • アプリやアドオンの自動アップデートを止めればその心配はなくなるが、今度は、セキュリティアップデートが適用されないので危険なままの状態が続いてしまうという別の問題が発生する。少なくとも僕については、ものぐさなので、毎回必ずコードを書き換え直すのを嫌ってセキュリティホールがあると知りながら古いバージョンの改造版を使い続けてしまいそう。

なので、これらの問題を回避するために、teramakoさんのようにそれ用のアドオンを作って使うか、userChrome.jsを使うかする方がいいと僕は思う。今回McCoy用の改造をアドオンという手法で行うことを試みているのも、そういう理由からだ。

第8回Mozilla拡張機能勉強会のネタ - Dec 17, 2007

第8回Mozilla拡張機能勉強会でFirefox 3で要求されるセキュアなアドオン提供方法について話すつもりですが、話すだけじゃ何なのでMcCoyを改造して何かできたらなぁと思ってますが、できるかどうか分からないのであんまり期待しないでください。と、宣伝になってるんだかなってないんだか分からない宣伝をしておきます。

緑のgoo - Dec 11, 2007

緑のgoo版Firefoxが今日公開されました。緑のgooは収益の15%が環境保護団体に寄付されるという検索サービスで、緑のFirefoxを使うと普通に検索してるだけで環境保護に貢献できるYO、という物です。

詳しくは配布ページなりITmediaCNET JapanINTERNET Watchの記事なりに書いてありますが、要するに、デフォルトの検索エンジンが緑のgooになってて、緑のgooで検索した回数がツールバー上の「gooの木」ボタンに(gooの木の本数換算(検索100回=gooの木一本)で)出て、おまけに緑のgooっぽいテーマが適用されてる、というFirefoxです。導入済みのFirefoxに全く同じ機能を追加するアドオンも同時に公開されてます。

まあぶっちゃけ、タブが使いやすくなるとかそういう系の実用的なメリットは特に無いっちゃあ無いんですが、損したり面倒な手間をかけたりしないでも普通に検索するだけで環境保護にチョコっと貢献できる、社会的なメリットがあるアドオンというのは珍しいんではないでしょうか。緑のgooのWeb検索のバックエンドはGoogleなので普段ググりまくりの人にも特にデメリットは無いし。ということで僕も今のところデフォルトの検索エンジンは緑のgooにしてます。

なお、他の検索エンジンと併用するためにセカンドサーチも入れておくとより一層便利でしょう(宣伝)。

続きを表示する ...

落ちる - Dec 10, 2007

とよく言われるんだけど自分の環境&自分の見てる範囲のWebサイトでは落ちないので原因が分からない、ということが多い。落ちるか落ちないかのギリギリの所をうまく突くようなコードを知らず知らずのうちに書いてしまっているのでしょうか。そんな能力いらなさすぎる。

タブブラウザ拡張3 - Dec 06, 2007

TBEのページのトップを刷新して、古い情報は別のページに移動した。どれだけの人がこのページを今も利用してるのかは微妙な所だけど、Firefox 2向けの情報が注意書きとしてだけ入ってるというのは現状からするとあまりよくないので。

Page 43/248: « 39 40 41 42 43 44 45 46 47 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき