Ubuntu 10.04 に最新版の firefox をインストール

はじめに

Ubuntu 10.04のfirefoxはデフォルトで3.6ぐらいまでしかバージョンアップされません。
それをなんとか最新版のfirefox 9にします。

アップデートして不具合が出ても責任は負えません。自己責任でお願いします。

インストールする

1. レポジトリ追加

sudo add-apt-repository ppa:mozillateam/firefox-stable

2. update, upgrade

sudo apt-get update
sudo apt-get upgrade

3. 終わり

これでfirefox 9になってるはずです。
とりあえずSyncが使えないと辛い辛い。。。

おまけ

firefoxの次のリリース版であるベータ版を使いたい方は
firefox-stable -> firefox-next
に変更すれば幸せになれます。

卒研の現状

こんにちは。でこです。
とりあえず研究テーマが変わりそうです。
そろそろLaTeXで研究の概要書いたりしないといけないんだけど・・・。

来週月曜が概要提出の締切りだから、週末にかけて研究を進めんと!
今日からようやく寒くなってきたので、明日は厚着かな。
ではでは。

Auduinoを使ってみる

秋葉原の千石でAuduino unoを購入。だいたい3kした。
使い方は簡単。
PCに公式サイトからIDEをダウンロードして、
基盤とPCをUSBで繋ぐ。
んでドライバをインストールしたらもう使える。手軽。

デジタル入力が5本、PWMが6本あるのは超魅力的。
さて、何に使おうかな。
まずはライブラリ使ってLCD制御でもしてみよう。

Arduino - Home

簡単なHTTPサーバを作る

.NETではSystem.Net名前空間のHttpListenerクラスを
使うことによって簡易HTTPサーバを自作することができる。

HttpListener Class (System.Net) | Microsoft Docs
HttpListenerContext Class (System.Net) | Microsoft Docs
HttpListenerRequest Class (System.Net) | Microsoft Docs
HttpListenerResponse Class (System.Net) | Microsoft Docs
MediaTypeNames Class (System.Net.Mime) | Microsoft Docs

static void Main(string[] args) {
  string prefix = "http://*:34567/";

  if (!HttpListener.IsSupported)
  {
    Console.WriteLine("Not Supported!");
    return;
  }

  HttpListener hl = new HttpListener();
  hl.Prefixes.Add(prefix);
  hl.Start();

  while (true)
  {
    HttpListenerContext context = hl.GetContext();
    HttpListenerRequest req = context.Request;
    HttpListenerResponse res = context.Response;

    res.StatusCode = (int)HttpStatusCode.OK;
    res.ContentType = MediaTypeNames.Text.Html;
    res.ContentEncoding = Encoding.UTF8;

    StreamWriter sw = new StreamWriter(res.OutputStream);
    sw.WriteLine("this is server program's response.");
    sw.Flush();
    res.close();
  }
}

これで起動したクライアントのブラウザでポート34567番にアクセスすると、
this is server program's response. と表示される。

npruntimeのサンプルをビルド、実行してみる

npruntimeとは:
https://developer.mozilla.org/En/Gecko_Plugin_API_Reference:Scripting_plugins(英語)をみるべし。
要はFirefoxGoogle ChromeとかOperaで使われている外部プラグインであるNPAPIの機能の一つ。
これができると何が嬉しいかというと「Javascriptからプラグインを叩ける」ということ。
例えば、ブラウザを経由せずにファイルをダウンロードしたい、とかそういうときに使う。

プラグインの拡張子はWindowsだったら.dllファイル、Linuxだったら.so、Macは・・・しらん。
このプラグインのサンプルがFirefoxソースコードにあるので、それを実際にmakeして動かしてみる。
環境はUbuntu 10.04でやります。Linux

以下のページを参考にやりました。
http://www.cmiss.org/cmgui/wiki/BuildingSampleNpruntimePlugins(英語)

ソース、SDKのダウンロード

まずはFirefoxのソースファイル
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
をDL。
適当なバージョンを選んで、sourceディレクトリを見つけてOSに併せてDL。
自分はバージョン3.6.20を選びました。

また、SDKもDLしておく。(いるのか不明)
Gecko SDK - Mozilla | MDN
これもOSにあわせて。自分はGecko 1.9.2 (Firefox 3.6)のLinux i686を選択。

下準備

ビルドの前に以下をインストールしておく。(不要かも)

sudo apt-get install auto-make
sudo apt-get install libdbus-glib-1-dev
sudo apt-get install libcurl4-gnutls-dev

ビルドの準備

ソースとSDKを適当なディレクトリに解凍。とりあえずホームが無難。

次に解凍したmozillaディレクトリに行き、
toolkit/toolkit-makefiles.shを編集。
MAKEFILES_pluginのグループを見つけて以下の行を追加。

modules/plugin/sdk/samples/npruntime/Makefile

mozillaディレクトリに戻って、以下を実行。

$ cp browser/config/mozconfig .

http://d.hatena.ne.jp/uniker/20070427/1177654300

んで、SDKディレクトリを指定してconfigureする。

$ ./configure --with-libxul-sdk=解凍したSDKディレクト
$ ./configure

これを実行すると、さっきの設定で指定したディレクトリにMakefileが生成される。

ビルドする

config/
modules/plugin/base/public/
modules/plugin/sdk/samples/npruntime/

上から順番に移動してmakeする。
二番目のディレクトリのmakeでエラーが出ても先に進んで大丈夫。

これで、npruntimeのディレクトリにlibnprt.soができる。

使ってみる

Firefoxを利用してこのプラグインが正しく動いているか確認する。
まず、生成されたプラグインを~/.mozilla/plugins/にコピー。ディレクトリがなければ作る。

そして、npruntimeと同じディレクトリにある「test.html」をFirefoxで開くと、
プラグインが動く様子を見ることができる。

コンソールで、

$ firefox test.html

と起動したほうが、コンソールにデバッグメッセージが表示されるので、
動いている様子がわかりやすい。
改造するならば、「plugin.cpp」と「nprt.def」をいじっていけばいいと思われ。