Tuesday, June 01, 2010

firefox を複数バージョンインストールする方法 (for Debian lenny)

Debian lenny において firefox の最新版(3.6.3)を使いたくなったが、以前のバージョンも同時に使いたかったので
複数バージョンの導入にトライしてみた。

以下の方法は公式にサポートされている方法ではないのであくまでも自己責任で。

1. firefox をローカルの好きなディレクトリに展開する。
linux 版の firefox の tar.bz を

http://www.mozilla.com/en-US/firefox/firefox.html?from=getfirefox

などからダウンロードし、以下のようにインストール先のディレクトリに展開する。

mkdir /usr/local/firefox-3.6.3
cd /usr/local/firefox-3.6.3
tar xvjf firefox-3.6.3.tar.bz2


2. LD_LIBRARY_PATH を通す。
インストールしたディレクトリにLD_LIBRARY_PATHを通す。

LD_LIBRARY_PATH=/usr/local/firefox-3.6.3

複数バージョンを共存させるときは共有ライブラリの衝突を避けるためこれをfirefoxの呼び出し前につける。

3. 他のバージョンと違う独自のプロファイルを作成し、ブックマークデータの衝突などを防ぐ
firefox のブックマークなどのデータはプロファイルごとに管理されているので以前のバージョンと異なるプロファイルを作成し、データの衝突を防ぐ。
firefox のProfileMnager を以下のように呼び出す。

LD_LIBRARY_PATH=/usr/local/firefox-3.6.3 /usr/local/firefox-3.6.3/firefox -ProfileManager

ここではfirefox-3.6.3 というプロファイル名を作成したものとする。

4. 上記をまとめたaliasを作成する。
以下の記述を .bashrc などに行う。

set alias firefox-3.6.3='LD_LIBRARY_PATH=/usr/local/firefox-3.6.3/firefox /usr/local/firefox-3.6.3/firefox-bin -P firefox-3.6.3'


source .bashrc などとして設定を有効にする。

5. firefox を起動する。
上記の設定を終了した後

firefox-3.6.3

と打つとfirefox-3.6.3 が firefox-3.6.3 というプロファイルで立ち上がる。
これで前バージョンのfirefoxのデータの破壊を防げる(はず)。

P.S
結局 firefox-3.6.3 をインストールしたものの、なぜかフリーズが多発したのでベータ版の3.7 alpha2 を入れた。こちらはすこぶる好調。今のところ満足して使っている。

Thursday, January 28, 2010


リアルタイムで編集作業ができるwebサービスetherpad
http://etherpad.com/
がオープンソース化されたのを知ったのでダウンロードした。

以下のサイトを参考にしたところ結構簡単に動作した。これには驚き。
https://wiki.ubuntu.com/Etherpad

自分のDebian etchの環境の場合

  • Scala をローカルインストールする必要があった(/usr/local/scala)。
  • java のパスを java6 を使うように修正

ぐらいのポイントを抑えればで実可動してるサービスと同様のものが  http://localhost:9000 で動いた。



ちなみに環境変数の設定は以下のようにした。

export JAVA_HOME=/usr/lib/jvm/java-6-sun/
export SCALA_HOME=/usr/local/scala/
export MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
export PATH=/usr/local/scala/bin:$PATH
export PATH=/usr/lib/jvm/java-6-sun-1.6.0.12/bin/:$PATH


etherpadのオープンソース化のきっかけは昨年の12月に会社がgoogleに買収された後、サイト閉鎖が決定したことがきっかけだそうだが、ここまでレベルの高いサービスがオープンソース化されるとはすごいと思う。

世間はiPadやスマートフォンで騒がしいけど、
etherpadのソース公開はその先に来そうな、リアルタイムコラボレーションツールの時代に向けて準備をするいいきっかけになるかもしれない。

Friday, July 31, 2009

bash で「ある番号以降のファイル」を選択する

cat -n と tail -n + を使ってBashである作成日時以降のファイルをコピーする方法のまとめ。

写真などを撮ると以下のような連番ファイルができることが多々ある。

dscf0007.jpg
dscf0008.jpg
dscf0009.jpg
dscf0010.jpg
...
dscf0199.jpg
dscf0200.jpg
dscf0201.jpg
dscf0202.jpg
dscf0203.jpg
dscf0204.jpg
dscf0205.jpg
dscf0206.jpg
dscf0207.jpg
dscf0208.jpg
dscf0209.jpg
dscf0210.jpg

そしてこの中からある番号以降のファイルを取り出したい場合もまた良くあるが、bashのif文等を使うのは少々面倒に感じていた。最近 cat -n と tail -n + のコマンドを使うことでこの作業が楽になることを発見した。

方法は簡単で


$ ls | cat -n
...
89 dscf0199.jpg
90 dscf0200.jpg
91 dscf0201.jpg
92 dscf0202.jpg
93 dscf0203.jpg
94 dscf0204.jpg
95 dscf0205.jpg
96 dscf0206.jpg
97 dscf0207.jpg
98 dscf0208.jpg
99 dscf0209.jpg
100 dscf0210.jpg

などとし、目的の番号より大きいファイルが何番目以降に出力されるかを調べ
あとは

$ ls | tail -n +

とすれば求める行数以降のファイル名が出力されるのでそれを選択すればよい。
以下はcat -nで89番目以降に表示されるファイルを/dir以下にコピーするコマンドの例。

$ ls | tail -n +89 | xargs -i cp {} /dir


結局はGUIである日付以降のファイルを全部選択するのと同じことをやっているだけなのだけど、CUIでもできるとファイル数がやたら多くなった場合や自動化したい場合に役に立つかもしれない。

Sunday, March 22, 2009

emacs で全バッファもしくはサブディレクトリ以下の全バッファを再読み込みする

最近Androidアプリを作るためにしかたなくEclipseのIDEを使っているのですが、Emacsを併用して使いたくなります。そこで困るのがファイルの同期をどう取るかです。Eclipseは外部でファイルが編集されると、警告メッセージと共に再読み込みをしてくれるのでEmacsでの変更をEclipseのバッファに反映するのには困りません。しかし、Emacsにはデフォルトではそういう機能がないので簡単なマクロを作ってみました(どちらとも警告なしで再読み込みを行うので注意(:-()。

現在開いている全てのバッファを再読み込み(revert-buffer)するマクロ
revert-all-buffers

;; revert (reload) all buffer which is opened
;; I got this macro from here
;; http://q.hatena.ne.jp/1134532052
(defun revert-all-buffers ()
(interactive)
(let ((cbuf (current-buffer)))
(dolist (buf (buffer-list))
(if (not (buffer-file-name buf)) ;only the file which visit on path
nil
(switch-to-buffer buf)
(revert-buffer t t)))
(switch-to-buffer cbuf)
))


さらにサブディレクトリ以下のファイルを全て再読み込みするマクロ(ただし、diredモード下でカレントディレクトリをうまく取得する方法がわからないのでディレクトリを開いているときには使えない(:-( )

revert-all-subdir-buffers

;; revert all buffers which is subdirectory of current buffer
(defun revert-all-subdir-buffers ()
(interactive)
(let ((cbuf (current-buffer)) (current-dir-name (file-name-directory (buffer-file-name))))
(dolist (buf (buffer-list))
(if (and (buffer-file-name buf) ;only the file which visit on path
(eq 0 (string-match current-dir-name (buffer-file-name buf)))) ;;only match with subdirectory
(progn
(switch-to-buffer buf)
(revert-buffer t t))
nil))
(switch-to-buffer cbuf)
))


問題点としては
・再読み込み前に警告(できれば一括で)を出すようにする。
・revert-all-subdir-buffers が dired モードからでも動作するようにする。

の2点
がんばらねば。

Friday, March 20, 2009

Android の Java ライブラリを展開する

Android-api のダウンロードと展開の方法

Android-api のダウンロード
次のサイトからのコピペ
http://androidforums.com/android-developers/1045-source-code-android-jar.html

以下のようなシェルスクリプトを作成し実効する。
すると git リポジトリから最新の Android のJavaライブラリがandroid-api以下に取得できる。

最新でなくてもよい場合は android-sdk の中に android.jar というファイルがあるのでそれを使う。


#!/bin/sh

git-clone git://git.source.android.com/platform/frameworks/base android-api
cd android-api
git checkout android-1.0
jar cvf ../android-src.jar -C core/java .
jar uvf ../android-src.jar -C graphics/java .
jar uvf ../android-src.jar -C location/java .
jar uvf ../android-src.jar -C media/java .
jar uvf ../android-src.jar -C opengl/java .
jar uvf ../android-src.jar -C sax/java .
jar uvf ../android-src.jar -C services/java .
jar uvf ../android-src.jar -C telephony/java .
jar uvf ../android-src.jar -C wifi/java .
cd ..


なお、.jar ファイルの中に何にあるファイル全てを知りたいときは以下のようにすると.jarファイルに含まれているコンテンツ一覧が表示される。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/tooldocs/solaris/jar.html

$ jar tvf android-src.jar

Friday, February 20, 2009

Android Dev Phone をセットアップする

勢いでAndroid Dev Phone を買った。

Sim カード無しで操作する場合そのための設定をAndroid Dev phone 上のシェルで行う必要がある。

ほぼ以下のサイトの手順そのままで成功した

ちょっと、やったこと/思うこと
2008/12/19
Android Dev Phone 1 を SIM無しで設定する
http://hanagurotanuki.blogspot.com/2008/12/android-dev-phone-1-sim.html

自分ホストPCの環境(Debian lenny)の場合 udev rules のファイル名を
50-android.rules
でなく
z99-android.rules
にする必要があった。これは以下のサイトを参考にした。

兼雑記
Android であそぶ 22:43
http://d.hatena.ne.jp/shinichiro_h/20081226

これだけで無線LANセットアップ画面まで進みアカウントとパスワードに自分のgmailのアドレスとパスワードを入力するとアクティベーションが完了し、googleの検索やgmailが使えるようになった。

私が以前(今も)遊んでいたopenmokoとは段違いの簡単さ、中でやっていることは同じなのにツール類の完成度が大きく違うことにgoogleパワーを感じる。

ま、openmokoも最近debian-openmokoとかがでてきて面白くなりつつありますが。

Saturday, December 13, 2008

emacsのerlang-modeで自動改行やインデントを設定する

emacsのerlang-mode は非常に便利だが、デフォルトの設定であると自動改行が有効なので自分が期待していない場所で改行されてしまうことがある。

erlang-electric-commands という変数に有効にしたいelectricコマンドのリストを設定することで自動改行の挙動を変更することができる

erlang-electric-commandsのデフォルトの設定は以下のようになっている


(defvar erlang-electric-commands
'(erlang-electric-comma ; ','の文字で自動改行
erlang-electric-semicolon ; ';'の文字で自動改行し現在の場所と同じ関数名を自動挿入
erlang-electric-gt) ; '>' の文字で自動改行 ('->' などの文字に反応することを想定している)
)


自分の場合はセミコロンの時の設定だけ残し、あとはリターンキーでオートインデントして欲しかったので以下のように設定した。


(setq erlang-electric-commands '(erlang-electric-semicolon erlang-electric-newline))


ピリオド'.'で自動改行するようにもしたいのだが現在その方法は調査中