Home > Latest topics

Latest topics 近況報告

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

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

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

Page 1/243: 1 2 3 4 5 6 7 8 9 »

xpcshellでタイマーやXMLHttpRequestなどの非同期処理を扱う方法(Gecko 1.9以降限定) - Feb 06, 2010

XPConnectも使えるコマンドラインのJavaScript実行環境で、xpcshellという物がある。XULRunnerをダウンロードするとおまけでついてくる。

  • 引数無しで実行すると対話インターフェースが起動する。irbみたいな感じで使える。
  • -fオプションを付けると外部のファイルをスクリプトとして実行できる。なので、JavaScriptでシェルスクリプトっぽいことができる。

xpcshell内ではWindowオブジェクトが無いので、当然だけどWindow.setTimeout()Window.setInterval()等を使った遅延処理は書けない。でもXPConnectは使えるので、nsITimerの機能を使えば似たようなことはできるはず。

という事で以下のようなスクリプトを書いて-fオプションで読み込ませてみたけど、実はこのままでは期待通りに動いてくれない。

var Cc = Components.classes;
var Ci = Components.interfaces;

function Timeout(aCallback, aDelay) {
  this.finished = false;
  this.callback = aCallback;
  this.init(aDelay);
}
Timeout.prototype = {
  init : function(aDelay) {
    this.timer = Cc['@mozilla.org/timer;1']
                  .createInstance(Ci.nsITimer);
    this.timer.init(this, aDelay, Ci.nsITimer.TYPE_ONE_SHOT);
  },
  cancel : function() {
    if (!this.timer) return;
    delete this.timer;
    delete this.callback;
    this.finished = true;
  },
  observe : function(aSubject, aTopic, aData) {
    if (aTopic != 'timer-callback') return;

    if (typeof this.callback == 'function')
      this.callback();
    else
      eval(this.callback);

    this.cancel();
  }
};

print('START');

var timeout = new Timeout(
    function() {
      print('3 SEC AFTER');
    },
    3000
  );

これを実行しても、「START」と出てすぐに終わってしまう。何故かというと、xpcshellはメインスレッドの処理が終わったらその時点でxpcshell自体を終了させてしまうからなのだそうだ。

UxU 0.7.6でも使ってるGecko 1.9以降のスレッド関係の機能を使うと、この問題を解消できる。さっきのスクリプトの末尾に以下を加えて実行すると、今度は「START」と出た3秒後に「3 SEC AFTER」「END」と出てからxpcshellが終了するようになる。

var thread = Cc['@mozilla.org/thread-manager;1']
              .getService()
              .mainThread;
while (!timeout.finished) {
  thread.processNextEvent(true);
}

print('END');

多分nsITimerのタイマー機能以外でも、これ(フラグが立つまでwhileでループ回してメインスレッドを止める)でうまくいくんじゃないかと思う。

XMLHttpRequestも試してみた。

var Cc = Components.classes;
var Ci = Components.interfaces;

var request = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
                .createInstance(Ci.nsIXMLHttpRequest)
                .QueryInterface(Ci.nsIDOMEventTarget);

var loaded = false;
request.open('GET', 'http://piro.sakura.ne.jp/', true);
request.addEventListener('load', function() {
  print(request.responseText);
  loaded = true;
}, false);
request.send(null);

print('REQUESTING...');

var thread = Cc['@mozilla.org/thread-manager;1']
              .getService()
              .mainThread;
while (!loaded) {
  thread.processNextEvent(true);
}

print('END');

これも、ちゃんとレスポンスが帰ってきてから終了した。

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用の改造をアドオンという手法で行うことを試みているのも、そういう理由からだ。

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jun 21, 2007

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

MozillaとXULRunnerとFirefoxとAIRとSilverlight - Jan 01, 1970

CNETに掲載されたマイク・シェーバーへのインタビュー記事での発言について、無明氏が辛辣な意見を述べておいでだけれども、僕も全面的に同意だなあ。

AIRやSilverlightの方が、だって、僕の目には全然健全に見えますよ。新しい物ガンガン採り入れて、開発者が楽できるようなしくみを着実に整えてて、利用者もストレスなく楽しんで使えるような高性能を持っていて、みんなが期待しているAIRやSilverlightと、同じ機能をずっと不完全な状態でしかまだ実現できていなくて、その進歩も革新的なスピードで進んでいるわけではなく、cairoグラフィックライブラリのポリシーとやらに足を引っ張られていまだにCSS2(CSS3)のtext-shadowを実装できない・今後も実装できそうにない、そんなわけでだんだんみんなの関心が薄れつつあるMozillaとを比べたら、Mozillaの方が不健全としか思えない。

続きを表示する ...

Page 1/243: 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき