2008年10月31日金曜日

ワードサラダって頭にくる

 最近googleのブログ検索でemacsをキーワードにブログを読んでいくと、支離滅裂なブログがあって???となることが度々。
 だってemacsがおいしい。とか、emacsを買った。とか。もう全然意味が分かんない。
 そのうちSEO対策でキーワードをちりばめた文章を人口無能に書かせているのかなと思って調べたら、ワードサラダっていうスパムの一種だそうです。
 日本では去年当たりから流行りはじめたみたい。
 人間の目には明らかにおかしいとわかる文章でも検索ボットには文章として認識されてスパムフィルタをすり抜けてしまうみたい。

 しかしこれがまた異様に腹が立つ。おまけにemacsなんていう、ごく一部の人種しか興味がないようなキーワードまで利用されていることにものすごい腹が立つ。

 GoogleReaderでブログは読んでいるので、最近はリンクを踏まないようにしているけど、あー腹が立つ。
 みなさんもあさましいワードサラダにはご注意を。

2008年10月17日金曜日

howmで保存時の設定

 howm という Emacs 使いなら絶対使っとけみたいなキラーアプリがあります。いわゆるメモ取りソフトなんですが、全文検索も出来て、リンクも出来て、しかもただのテキストファイルだから加工も容易で、ToDoアプリとしても使えて、スケジューラーとしても使えて、お勧めです。

 それで howm をメモソフトとして使っているのですが、基本的にメモはプライベートなモノなので他人に見られないようhowmのメモを保存時にパーミッションを600に変えるようにします。
 以下を~/.emacs に追記。

;;; 保存時処理
;;; 保存時にパーミッションを"600"にする。
(add-hook'howm-after-save-hook
(lambda ()
(let ((name (buffer-file-name)))
(set-file-modes name 384)))) ; 600

2008年10月16日木曜日

Emacsでオートセーブファイルの作成場所を変える

 オンラインストレージで Dropbox.com というのがありまして。こいつがとても凄くて、~/Dropbox/ にファイルを放り込むだけで自動的にファイルがアップされ、ファイルの履歴も取れて、同期も早くて、linuxでもMacでもWindowsでも使えるという夢のようなサービスなんですが、
 この~/Dropbox/内のファイルをEmacsで編集すると自動的に「#」の付いた自動保存ファイルが作成され、それがDropboxに同期されて履歴として残ってしまうという。
 これが激しくウザいので、~/Dropbox/以下では自動保存ファイルを作らないようにします。
~/.emacs に以下を追記。

(setq auto-save-file-name-transforms
`((".*/Dropbox/.*" ,temporary-file-directory t)))
これで ~/Dropbox/ 以下のオートセーブファイルは /tmp/ 以下に作成されるようになります。

2008年10月15日水曜日

Emacsの保存関係の設定

 Emacs には自動保存機能がデフォルトで有効になっています。
 ファイルを編集すると、ファイル名の前後に「」を付けたバックアップファイルが作成され、随時編集内容がこのファイルに保存されていきます。
 このため何らかの理由でファイルを保存しそこなったとしても、このバックアップファイルからリカバリできる仕組みになっています。
 この自動保存はデフォルトでは30秒ごとか、300打鍵ごとにオートセーブされるようになっています。
 間隔が長い、あるいは短かいと感じたのなら調整しましょう。それぞれ、
(setq auto-save-timeout 30)   ; 自動保存する間隔。秒。
(setq auto-save-interval 300) ; 300打鍵ごとに自動保存
の値を変えることで変更出来ます。

簡易履歴機能

 Emacsでは簡易的ながら複数の世代に渡るバックアップの履歴を取ることが出来ます。つまり、前の編集内容。さらにその前の編集内容、さらにさらに・・・
 編集して保存して、やっぱり以前の状態に戻したい。さらにはその前の編集した内容の方がよかったので、なんていうことにも対応出来て便利です。
 この世代バックアップファイルは、ファイル名の末尾に「.~1~」のようなサフィックスを付けられて保存されていきます。番号は自動的に増えていきます。
 バックアップファイルは元のファイルを同じ場所に保存されいきます。しかしこれではバックアップファイルだらけになって少々鬱陶しいのでバックアップファイルは専用ディレクトリを作ってそこに全部保存されるようにします。

(setq make-backup-files t) ; バックアップファイルを作成する。
;;; バックアップファイルの保存場所を指定。
(setq backup-directory-alist
(cons (cons "\\.*$" (expand-file-name "~/.backup"))
backup-directory-alist))

(setq version-control t) ; 複数のバックアップを残します。世代。
(setq kept-new-versions 5) ; 新しいものをいくつ残すか
(setq kept-old-versions 5) ; 古いものをいくつ残すか
(setq delete-old-versions t) ; 確認せずに古いものを消す。
(setq vc-make-backup-files t) ; バージョン管理下のファイルもバックアップを作る。
 これでバックアップファイルは~/.backup/以下に保存され、最新の世代から5つと、古い方から5つ残されていきます。

保存時実行属性付与

 定番ネタです。
 シェルスクリプトを作って保存したときに、いっしょに実行属性を付けてくれます。地味ながらも大変有り難い機能です。
 こちらを参考、というか丸写し(^_^;)

;;;====================================
;;;; シェルスクリプト保存時にchmod +x を自動実行する
;;;====================================
(defun make-file-executable ()
"Make the file of this buffer executable, when it is a script source."
(save-restriction
(widen)
(if (string= "#!" (buffer-substring-no-properties 1 (min 3 (point-max))))
(let ((name (buffer-file-name)))
(or (equal ?. (string-to-char (file-name-nondirectory name)))
(let ((mode (file-modes name)))
(set-file-modes name (logior mode (logand (/ mode 4) 73)))
(message (concat "Wrote " name " (+x)"))))))))
(add-hook 'after-save-hook 'make-file-executable)


 以上、地味ながらも確実にEmacsの使い心地を向上させてくれる大事な保存関連の設定でした。

2008年10月7日火曜日

ubuntuのゴミ箱をコマンドラインから操作する

 ubuntuのデスクトップにあるゴミ箱。ファイルを削除しても一旦ゴミ箱に入るので、誤ってファイルを削除してもゴミ箱から復活できて安心ですよね。
 ですがコマンドラインからファイルを削除する場合は、rm コマンドを使い、そして削除されたら綺麗さっぱりこの世から消えてしまって二度とその失なわれたファイルは返ってきません。
 そこでコマンドラインからでもゴミ箱機能を使いたいっということで、 trash-cli の出番です。

 trash-cli はコマンドラインからゴミ箱を操作するスクリプトです。類似のコマンドと違い、独自のゴミ箱を設けるのではなく、KDEやGNOMEのゴミ箱と連動します。素晴しい。

インストール

 こちらからファイルを落してきます。落としたら展開し、展開したディレクトリに移動して、
sudo python setup.py install
とするだけでインストールされます。

使い方

使い方はとても簡単です。

ファイルを削除する

 削除されたファイルはゴミ箱に移動します。
trash ファイル名

ゴミ箱の中身を見る

list-trash

ゴミ箱からファイルを復活させる

restore-trash
 実行すると以下のよう選択画面が出ますので、復活させたいファイルの番号を入力するだけです。復活させたファイルはちゃんと元の場所に戻っていることに注目して下さい。
 0 2008-10-03 19:19:22 /home/foo/Desktop/po_dpkg-ja.po.org
1 2008-10-06 15:02:23 /home/foo/Desktop/1222662276502.jpg
2 2008-10-03 19:19:22 /home/foo/Desktop/po_dpkg-ja.po
3 2008-10-07 13:13:49 /home/foo/trash-test
What file to restore [0..3]: 3

ゴミ箱を空にする

empty-trash

指定した日数以前のファイルをゴミ箱から削除する

empty-trash 日数
empty-trash に例えば 7 という数値を与えてあげると今日の日にちから7日以前のファイルをゴミ箱から削除します。


rm と置き換える

 trash コマンドは rm コマンドと置き換えてこそ真価を発揮すると言えるでしょう。 ~/.bashrc
alias rm='trash'
と記述し、
source ~/.bashrc
として即反映させます。以降 rm と打てば trash コマンドが実行されます。



*なおubuntuの次のバージョンである intrepid からはリポジトリに用意されていますのでインストールがより簡単になるでしょう。

2008年9月30日火曜日

ubuntuでフォルダを暗号化する

 個人情報流出が叫ばれている昨今。自分の大事なデータは暗号化したディレクトリに置いて、少しでも情報保護に頑張りましょう〜ということで、ubuntuでも簡単に出来るディレクトリ単位での暗号化方法。
 個別にファイル一個ごとに暗号化するなら、gpg で事足りるわけですが、比較的多くのファイルを、例えば、メモファイルが入ったフォルダなんかやmailディレクトリを丸ごと暗号化して他人に見られられないようにしたいなんて場合はgpgだときついので今回は、encfs を使います。
 encfsはディレクトリ単位でディレクトリの中身を暗号化してくれます。フォルダ単位なので、事前にボリュームを作成して容量決め打ちになることもありません。暗号化はファイル単位で行われ、ファイルの中身と、ファイル名も暗号化してくれますので、ファイル名から中身を類推される心配もありません。
 ではさっそく使ってみましょう。

インストール

sudo apt-get install encfs cryptkeeper


マウントポイントを作る

 仮想マウントポイントを作ります。
mkdir ~/encfs-test

データディレクトリを作る

 暗号化されたファイルの実体を格納するディレクトリを作ります。
mkdir ~/encryptd

マウントする

 初回マウント時に自動的に暗号ディレクトリが作成・設定がされます。
encfs ~/encryptd ~/encfs-test
 ~/encryptd~/encfs-test というディレクトリにマウントされます。アクセスは、この~/encfs-testに対して行ないます。
 初めてのマウント時は最初に手動で設定するかどうか聞かれます。何も入力せずにエンターキーを押して標準設定でいいでしょう。
 そして新規パスワードを聞かれますので入力します。確認のためにもう一度聞かれます。
新しい暗号化ボリュームを作成します。
Please choose from one of the following options:
enter "x" for expert configuration mode,
enter "p" for pre-configured paranoia mode,
anything else, or an empty line will select standard mode.
?>

Standard configuration selected.

設定が完了しました。以下のプロパティのファイルシステムが
作成されます:
ファイルシステム暗号アルゴリズム: "ssl/blowfish", バージョン 2:1:1
Filename encoding: "nameio/block", version 3:0:1
鍵サイズ: 160 ビット
Block Size: 512 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely no recovery mechanism. However, the password can be changed later using encfsctl.

新しい Encfs パスワード:
Encfs パスワードの確認:
 これで暗号ディレクトリが作成されました。マウントされたディレクトリはマウントしたユーザ以外アクセス出来ません。

 試しに暗号ディレクトリになにかファイルを作ってみましょう。
echo "encfsのテスト" > ~/encfs-test/test.txt
 確認してみましょう 。
ls -l ~/encfs-test/
-rw-r--r-- 1 foo foo 18 2008-09-20 21:37 test.txt

ls -l ~/encryptd/
-rw-r--r-- 1 foo foo 26 2008-09-20 21:37 oEnpZ00e7,5D-HStHHWlP2ld
ファイル名が暗号化され判らなくなっていますね。もちろん中身も暗号化されています。

アンマウントする

fusermount -u ~/encfs-test
 マウントが解除され暗号化されたデータの中身にはアクセス出来なくなります。

ステータスを確認する

 暗号フォルダの情報をチェックします。
~$ encfsctl ~/encryptd/

Version 5 configuration; created by EncFS 1.3.2 (revision 20040813)
ファイルシステム暗号アルゴリズム: "ssl/blowfish", バージョン 2:1:1
Filename encoding: "nameio/block", version 3:0:1
鍵サイズ: 160 ビット
Block Size: 512 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.

GUIで操作する

 頻繁に行なうであろうマウント手続きをGUIから行ないます。
 cryptkeeper を使います。メインメニューのアプリケーション→システムツールの中にありますので実行するとパネルに鍵マークのアイコンが追加されます。
 右クリックで設定が。左クリックで暗号フォルダの追加、新規作成、マウント処理が出来ます。



 このような感じでencfsはubuntuを使っていく上で非常に簡単でシームレスな操作性を持った暗号化ファイルシステムだと思います。
 ああ、あとなるべく必要な時以外はマウントしないようにしましょう。マウントしているということは、金庫のドアを開けているのと同じことですからね。

2008年9月4日木曜日

ubuntuで動画のサムネイルを作る。

ubuntuを使っていて、ふと、動画ファイルのサムネイルが生成されていないことに気づきました。前は生成されていたはず。
 とりあえず、~/.thumbnails をクリアして nautilus でリロードしてみるも、生成されず。
 いろいろ調べた結果、totem-xine を使えば、 .AVI.WMV .divx などなどのサムネイルが作成されました。

以下手順メモ


sudo apt-get install totem-xine
cd
mv ~/.thumbnails{,.bak}
sudo update-alternatives --config totem
sudo update-alternatives --config gnome-video-thumbnailer
1行目。 totem-xine版をinstallます。
2行目。 ~/に移動します。
3行目。 サムネールキャッシュを移動してクリアにしています。
4行目。 totemの標準設定を、totem-xineにします。
5行目。 gnome-video-thumbnailerの設定を/usr/bin/totem-xine-video-thumbnailerにします。
以上で、再度ノーチラスでリロードしてみると、見事に動画ファイルのサムネイルが作成されていきました。
 満足満足。

2008年8月5日火曜日

Amarok で音量をノーマライズする

Amarok でてけとーに音楽を聴いていたら、突然音がおっきくなってびっくりしたので調整しようとしたらamarokの設定にノーマライズがなかった・・・
 調べてみると、replaygain というplugin で対応できそうということでインストールメモ。

replaygain 単体ではダメでさらにフォーマットごとにプラグインが必要みたい。
うちではmp3とaacフォーマットをよく聴くので、aacgain を入れます。

インストール


 Replaygain はリポジトリにないので、ここから落してきます。
 落したら、Amarok のツール→スクリプトマネージャーを起動し、スクリプトをインストールをクリックしてインストールします。
 インストしたら実行ボタンを押して実行状態にするのを忘れずに。

 次にaacgainを入れます。こっちが先でもいいかも。これもリポジトリにないので直接取得しに行きます。debパッケージがなく、rpmパッケージが置いてあったので、今回はrpmパッケージをdebパッケージに変換してくれる、alien を使います。
sudo aptget install alien
wget http://altosdesign.com/aacgain/aacgain-1.7-1.i586.rpm
sudo alien --to-deb aacgain-1.7-1.i586.rpm
sudo dpkg -i aacgain-1.7-1.i586.deb

実行してみる


上記作業を終えたら Amarok を再起動。しばらく放置していれば勝手にプレイリストの曲をスキャンしてノーマライズ作業を始めます。
 完了したら曲を再生すると、自動的に音量が調整されていきます。

 これでシャッフル再生とかでも突然大音量でびっくりとか防げますね。

2008年8月2日土曜日

ubuntuにxubuntuを入れる

ubuntu、とっても素晴しいのですが、うちのPCだとメモリ512MBしかなく、マザーの制約でこれ以上増設も不可。この環境でJDを起動し、Firefox を起動して端末を一枚開くと、約200MBほどスワップアウトします。
 そこで、前々から気になっていた、 XFCE を使用した軽量で評判の xubuntu を試してみました。

インストール


 インストールは簡単です。今回はubuntuにxubuntuを入れるやり方でいきました。もっとも普通のやり方で簡単です。そしてgnome環境とxfce環境を自由に切り換えることができます。
sudo apt-get install xubuntu-desktop
これだけです。約234MBほどインストールされます。

起動


 ログイン画面でセッションでxfceを選択するだけでxfceで立ち上がります。

環境設定


入れた当初はフォントサイズが変だったので、
echo 'Xft.dpi: 96' >> ~/.config/xfce4/Xft.xrdb
としてXft.xrdbにフォント解像度を96dpiに指定してリログします。

 あとはgnomeとの違和感もなく使えました。

gnomeアプレットをxfceで使う。


xfceアプレットでCPUの温度を表示するものを探したんですけど、なくって困っていたら、gnomeのアプレットをそのまま使っちゃおうというツールがあることを知りました。

インストール

sudo apt-get install xfce4-xfapplet-plugin
インストールできたら、パネルの上で右クリック。アイテムの追加を選んで、Xfce アプレットを選択します。
詳しい方法はこちら


xfce にすることによってgnomeでは200MBスワップアウトが発生していたのが同条件でスワップアウトがほぼ0になりました。素晴しい。
じばらくはこのままで行ってみようかな。

2008年7月18日金曜日

HDDが吹っ飛んだ・・・

いつものようにアップデートマネージャーを起動したらディスクIOが100%になったまま帰ってこない。
dbでも壊れたか? と思ってdmesg みてみたらATAデバイスでエラーメッセージがいっぱい。
 んでま、結局いろいろいじってしまって(下手にfsckをかけてしまった)/etcいかが綺麗さっぱり消えてしまったorz
 fsck -cyf オプションでチェックしてみたら、バッドブロックが61個もorz
 なんでかなー振動与えていないし、熱かなーうーん、心当たりがないだけに不良セクタ発生はショック。まー寿命かもしれない・・・

 んで、さらにアホなことに完全なバックアップ取ってなかったの><
 ということですっぱり潔く再インストール。いくつかの/etc以下の設定ファイルはchangetrackで履歴管理していたのでセーフ。
 再インストールしてみてわかったのはubuntuのすばらしさ。windowsだとこうは簡単に環境復帰できない。ubuntuだとapt-get叩くだけでほぼすべてのアプリがインストールできて、設定ファイルもバックアップからコピーすればいい。これだけで元通りになる。これはすごいことだよね。

 とはいえちゃんとしたバックアップしていない私もアホなのだけれど。
うーんDarにしようかrsyncにしようか、changetrackを拡大して使うか。どうしよ。

Quick Lookup:

2008年7月11日金曜日

ubuntuで携帯用動画へ変換する

ffmpeg を使って au 携帯向け動画を作ってみました。
とは言ってもubuntuのffmpegは特許などの関係で軒並コーデックが使えない状態でビルドされているので自前でビルドします。
 携帯用のついでにmp3やxvidなんかも使えるようにします。

事前準備


  • 開発環境をあらかじめ入れておきます。
  • sudo apt-get install build-essential
  • 8.04にあるx264ライブラリはエラーで使えないので自前で入れます。
  • x264をビルドするためにyasmが必要ですが、これもリポジトリにあるのは古く、エラーが出て使えないので自前で用意します。
  • amrnbがリポジトリにないので自前で用意します。
  • amrwbがリポジトリにないので自前で用意します。
 ・・・はい、とっても面倒くさいです。たくさんのコーデックを、ライブラリを使う以上しょうがないのですが、ffmpegの自前ビルドなんて人に勧められるものじゃありませんね><

アーカイブの扱いに関して


 通常は、tar zxvf hogehoge.tar.gz ですが、私は面倒くさいので、すべてのアーカイブの操作を統一的に操作出来る atool を使っています。いちいちアーカイブファイルごとにコマンドやオプションを憶えなくてもいいし、操作性も統一できるので便利です。
sudo apt-get install atool
でインストール出来ます。

yasmのインストール

wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.1.tar.gz
aunpack yasm-0.7.1.tar.gz
cd yasm-0.7.1/
./configure
time make
sudo make install

x264のインストール

wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20080709-2245.tar.bz2
aunpack x264-snapshot-20080709-2245.tar.bz2
cd x264-snapshot-20080709-2245/
./configure --enable-shared
time make
sudo make install

amrnbのインストール

wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
aunpack amrnb-7.0.0.0.tar.bz2
cd amrnb-7.0.0.0/
./configure
make
sudo make install

amrwbのインストール

wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2
aunpack amrwb-7.0.0.2.tar.bz2
cd amrwb-7.0.0.2/
./configure
make
sudo make install


ffmpegのインストール

sudo apt-get build-dep ffmpeg
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-pthreads --disable-debug --enable-shared --enable-libfaac --enable-libfaad --enable-libamr-nb --enable-libamr-wb --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-libxvid --disable-ipv6
time make
sudo make install
sudo ldconfig
足りないライブラリはあらかじめ用意しておいて下さい。
configure のオプションは、./configure --help で見れますので、自分に合ったオプションを設定しましょう。
 必要なライブラリが揃い、コンフィグ設定も問題なければこれで無事ビルドできるはずです。

au用動画変換

ffmpeg -i 入力動画ファイル -vcodec mpeg4 -b 64k -s qcif -r 15 -acodec libamr_nb -ab 12200 -ar 8000 -ac 1 -flags bitexact 出力ファイル名.3gp2

の設定でau用動画ファイルに変換出来ました。携帯にコピーして無事観れました。
 一度パラメータが決まれば、あとは ~/.bashrc
# au携帯用動画変換
function au {
ffmpeg -i $1 -vcodec mpeg4 -b 64k -s qcif -r 15 -acodec libamr_nb -ab 12200 -ar 8000 -ac 1 -flags bitexact ${2}.3g2
}
などと書きこんで、
source ~/.bashrc
として設定を反映させて、
au 入力ファイル名 出力ファイル名
とすれば簡単に動画が変換出来ちゃう。ん〜簡単。

2008年7月7日月曜日

Amarok で日本語入力を

Amarok で日本語入力が出来なかった。Amarok使っていなかったので放りっぱなしだったのだけれど、気にしだすと気になって気になって・・・
ということで、
sudo apt-get install scim-bridge-client-qt scim-bridge-client-qt4
export QT_IM_MODULE="scim-bridge"
とすることでscimで日本語入力が出来ることを確認。環境変数QT_IM_MODULE="scim-bridge"は~/.bashrc にでも書いておけばいいのかな。

2008年6月12日木曜日

CheckGmail で 401 エラーが

CheckGmail で 401 エラーが頻発するようになった。
Gmail側が仕様変えたのかしらん。
とりあえず、
svn co https://checkgmail.svn.sourceforge.net/svnroot/checkgmail checkgmail
cd checkgmail
sudo cp ./checkgmail /usr/bin/
として最新のcheckgmailを導入。
それでもたまに401が出るなあ・・・

2008年5月20日火曜日

ubuntuで暗号化ファイルシステム、TrueCryptを試してみた

linux では暗号化ファイルシステムがけっこいいろいろあって、よりどりみどりです。
そのなかでも TrueCrypet は、
  • クロスプラットフォーム
    WindowsでもlinuxでもMacでも使える。
  • 隠し属性の暗号化ボリュームを作れる
といった特徴があり、特にWindowsとUSBメモリでデータのやり取りをしている人には打って付けでしょう。
 隠し属性については、暗号化したボリュームのなかに隠し属性の暗号ボリュームを潜ませることができます。そしてこの隠蔽した暗号ボリュームを検出することは不可能です。
 このことは、例えばこの記事、
米国税関が新制度を近くスタート、入国者が所持するPCのデータを丸ごとコピー
のように暗号化フォルダのパスワードを言わざるをえない場合でも、ダミーのほうを教えて、大事な隠し暗号化フォルダの存在には気づかれずに済むといったメリットがあります。

もちろんメリットばかりでなく、いろいろと使い勝手の悪い部分もあって、
  • linux版では日本語化されていない
    Windows版では日本語ランゲージパックを入れれば、日本語化出来る
  • CUIで使うときは、optionの先頭に -t optionを付けないといけない
  • manドキュメントがなくなった
  • オープンソースだがライセンスが独自
  • 現在のVer5だとlinuxで隠し属性のボリュームが作れない
    Ability to create hidden volumes on Mac OS X and Linux


前書きはこんな感じで実際に使ってみます。

インストール


http://www.truecrypt.org/downloads.php から ubuntu 用のパッケージをダウンロードしてきます。落したら、
tar zxvf truecrypt-5.1a-ubuntu-x86.tar.gz
cd truecrypt-5.1a
sudo dpkg -i truecrypt_5.1a-0_i386.deb
としてインストールします。

使い方


 暗号化ボリュームは、ハードディスクのパーティション丸ごと一つでもいいし、ファイルでもかまいません。ファイルの場合はそのファイルが暗号化ボリュームとしてマウントします。
 ここではお試しに使ってみるので、foobar.tc というファイルを作って、~/crypt にマウントしてみます。
truecrypt -t -c
とすると、
Volume type:
1) Normal
2) Hidden
Select [1]:
ノーマルか隠し属性か聞いてきます。隠しは非対応なので、ノーマルを選択します。
Enter volume path:
ボリュームパスを聞いてきますので、foobar.tc と入れます。
Enter volume size (sizeK/size[M]/sizeG):
ボリュームサイズを聞いてくるので、適当に入れます。
Encryption algorithm:
1) AES
2) Serpent
3) Twofish
4) AES-Twofish
5) AES-Twofish-Serpent
6) Serpent-AES
7) Serpent-Twofish-AES
8) Twofish-Serpent
Select [1]:
暗号アルゴリズムを聞いてきます。デフォルトでいいでしょう。
Hash algorithm:
1) RIPEMD-160
2) SHA-512
3) Whirlpool
Select [1]:
ハッシュアルゴリズムを聞いてきます。おなじくデフォルトにします。
Filesystem:
1) FAT
2) None
Select [1]:
ファイルシステムを聞いてきます。あとからフォーマットすることもできます。ここもデフォルトで。
Enter password:
パスワードを聞いてきますので、なにか適当なパスワードを入力します。20文字以下だと警告してきます。
WARNING: Short passwords are easy to crack using brute force techniques!

We recommend choosing a password consisting of more than 20 characters. Are you sure you want to use a short password? (y=Yes/n=No) [No]:
まあ、テストなので20文字以下でもOKなのでYesと解答します。
再度確認のためにパスワードを聞いてきますので、入力します。
Enter keyfile path [none]:
鍵ファイルの場所を聞いてきます。使いませんのでそのまま空欄でエンター。
Please type at least 320 randomly chosen characters and then press Enter:
鍵を生成するためのランダムな文字列の入力を求められす。320文字も適当にキーボードをがちゃがちゃ叩きます。疲れます・・・
Done: 100.000% Speed: 7.7 MB/s Left: 0 s
The TrueCrypt volume has been successfully created.
無事暗号化ボリュームが作成されました。

マウントしてみる

~/crypt にマウントしてみます。
$ truecrypt -t foobar.tc ~/crypt
  Enter password for /home/yama/foobar.tc:
  Protect hidden volume? (y=Yes/n=No) [No]:
  Enter system administrator password:
foobar.tc のパスワードは? 隠し属性があるかどうか? rootのパスワードは? など聞かれますので、順番に答えていけば無事マウントされます。

作成した暗号化ボリュームは、
~$ truecrypt -t -v -l foobar.tc
Slot: 1
Volume: /home/hoge/foobar.tc
Virtual Device: /dev/loop1
Mount Directory: /home/hoge/crypt
Size: 32.0 MB
Type: Normal
Read-Only: No
Hidden Volume Protected: No
Encryption Algorithm: AES
Key Size: 256 bits
Block Size: 128 bits
Mode of Operation: XTS
PKCS-5 PRF: HMAC-RIPEMD-160
PKCS-5 Iteration Count: 2000
Volume Created: 2008年05月20日 18時57分38秒
Header Last Modified: 2008年05月20日 18時57分38秒
Data Read since Mount: 191 KB
Data Written since Mount: 0 B
としてプロパティが閲覧できます。

アンマウント

truecrypt -t -d foobar.tc
としてアンマウントします。

GUIで使う


 Vre5 からlinuxでもGUIで使えるようになりました。たんに truecrypt を実行するだけで常駐で起動します。
 manページがなくなってしまったみたいで、代わりに、/usr/share/truecrypt/doc/TrueCrypt User Guide.pdf が入っています。いちいちPDFを見ろということですね。面倒くさいですね。
 当然PDFの中身は英語です。ですが、ランゲージパックの中にこのPDFを和訳したものが同梱されていますので、GUIで使いたい方は是非こちらを見ることをお勧めします。

参考

2008年5月19日月曜日

ubuntuでHDDの温度を計る。

これから暑い季節を迎えるにあたり、ハードディスクの温度を測定してみます。

インストール

sudo apt-get install hddtemp
インストール時に
  • sguidをセットするか?(rootユーザ以外でも実行できるようにするか?)
  • syslog にログを残すか?
  • 残すなら記録間隔を何秒にするか?
  • デーモンとして起動するか?
などを聞いてきます。聞いてこなくても後から、
sudo dpkg-reconfigure hddtemp
とすれば、いつでも再設定できます。

使ってみる


 さっそくHDDの温度を測ってみましょう。ただし古いHDDなどHDD自体にセンサーがないものは無理です。USB接続のHDDも無理でしょう。
$ hddtemp /dev/sd?

/dev/sda: HDS722512VLAT80: 44°C
/dev/sdb: ST380020A: 47°C
/dev/sdc: ST3120023A: 47°C
とでました。まあ、窒息ケースでリムーバブルケースに入れて、しかも4cmファンが壊れているので、温度が高いです・・・なんとかしようorz

GUIでも見られるように


 パネルの上で右クリックし、パネルの追加をクリックします。その中から、hardware sensor monitor を選択して追加ボタンを押せば、パネル上に追加されます。
 なければ、
sudo apt-get install sensors-applet
とすればインストールされます。

2008年5月14日水曜日

ubuntuのSSHに脆弱性

Debianの過去のパッチによるバグの影響でDebian系、つまりubuntuにも重大な脆弱性が発見されました。
この脆弱性は、opensshによる鍵の生成で予測可能な鍵ペアが生成されてしまうというもので、辞書攻撃によって侵入されるリスクが大変大きいものとなっています。

さっそく
wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz
wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc
gpg --keyserver subkeys.pgp.net --recv-keys 02D524BE
gpg --verify dowkd.pl.gz.asc
gunzip dowkd.pl.gz
としてチェックツールをダウンロードし、鍵の検査。
./dowkd.pl host localhost
及び、
./dowkd.pl user ユーザ名
として、weak key と表示されたら鍵を作り直しましょう。
その前にopenssh系パッケージのアップデートも忘れずに。

詳しくはURL参照。



20080515:追記:


  • その後のアップデートでopenssh-blacklistパッケージが追加されました。
    脆弱な鍵は自動的に拒絶されるようになりました。出来る範囲で。
  • ssh-vulnkey コマンドが追加されました。
    このコマンドで鍵の脆弱性を確かめることが出来ます。
    sudo ssh-vulnkey -a
    とすればすべての鍵を検査してくれます。
  • 参照
    http://www.debian.org/security/2008/dsa-1576

2008年5月10日土曜日

ubuntuでもNTFSの圧縮フォルダ機能を

WindowsのNTFSはよく出来ていて、銀行のATMのHDDなんかもNTFSが使われたり、世界中で一番使われているファイルシステムなわけで信頼性が高かったりします。そのぶん読み書きがあまり速くなく、断片化もしやすいといた欠点もありますけどね。

 で、NTFSの便利な機能として、透過的に扱えるフォルダの圧縮機能があります。2chの過去ログを圧縮するなど用途によってはこの圧縮機能は便利なのですが、残念ながらubuntuの標準ファイルシステムである ext3 には圧縮機能がありません。
 まーいまどき500GBのHDDが七千円で買えちゃうんですから、ストレージ買えってことになっちゃうのかもしれませんが、でもねえ、4Gもの過去ログが半分のサイズになんかNTFSでなっているのをみると、ubuntuでもやりたくなるわけで・・・

ということで以下実験メモ。
残念ながらlinuxではあまり圧縮ファイルシステムは不毛なようです。ROMなど組み込み系で使用を前途にした読取専用ファイルシステムは結構あるんですけどねえ。
 色々調べた結果、こちらの記事を参考に FUSE を利用した LZOlayer ファイルシステム を試用してみることにしました。といってもやっていることはそのままなんですけどねw
LZOlayerFS の特徴はFUSE を利用したユーザランドで動く透過的な圧縮ファイルシステムです。圧縮アルゴリズムに lzo を採用し、高速な圧縮速度で通常のファイルシステムと違和感なく扱えます。
 lzo の圧縮速度についてはこちらのレポートが参考になります。

導入手順

LZOlayerFSをダウンロードし、ビルドします。あらかじめ開発環境と必要なライブラリを導入しておいて下さい。少なくてもfuse,zlib,lzo(liblzo2-dev) のライブラリが必要です。私の環境ではなぜか全部入っていましたw
wget http://north.one.pl/~kazik/pub/LZOlayer/LZOlayer_fs-20060306.tar.gz
tar zxvf LZOlayer_fs-20060306.tar.gz
cd LZOlayer_fs-20060306
make
sudo cp lzo_fs /usr/local/bin/
なのですが、そのままではエラーが出てコンパイルが通りませんので以下のように修正。

--- LZOlayer_fs.c.org
+++ LZOlayer_fs.c
@@ -7,13 +7,13 @@
Use it at your OWN RISK
Absolutely NO WARANTY
*/
+#define _LARGEFILE64_SOURCE
#define FUSE_USE_VERSION 22
#include <fuse.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#define __USE_LARGEFILE64
#include <fcntl.h>
#include <dirent.h>
#include <sys/types.h>
@@ -31,7 +31,7 @@
#define max_packets 2048
off_t block_size = 131072;
#define __LZOlayer_DEBUG 0
-#define VERSION "20060202-2"
+#define VERSION "20060306"

static char *srcPath;
static int zlibCompression = 0;
これで一応make通りました。出来た lzo_fs を~/bin なり /usr/local/bin なりにコピーしておいて下さい。

マウントしてみる

さっそく実験です。
まずはマウントポイントと、実際に圧縮されたファイルを格納するディレクトリを作成しておきます。
mkdir ~/lzo ~/lzo_compressed
さっそくマウント
lzo_fs ~/lzo_compressed ~/lzo -s

テスト

圧縮ディレクトリに2chのdatファイルを ~/lzo ディレクトリにコピーしてみます。datファイルのサイズは244Kバイト。
stat -c %s lzo/1208334590.dat
244031
stat -c %s lzo_compressed/1208334590.dat
112651
テキストファイルなので約半分に圧縮されてディスク上に格納されています。

アウンマウント

アウンマウントは、
fusermount -u ~/lzo


実際に使ってみて、普通に使えました。違和感なく。便利ですね。
ただ使用実績がないので信頼性は?ですけど。
大量のログファイルにHDDを占有されている人には一考の価値ありかも。

2008年4月27日日曜日

ubuntu 8.04 hardy アップデートメモ

LTS版であるubuntu 8.04 がついにリリースされました。
本当はLTS版なのでクリーンインストールするつもりだったのですが、事情により7.10からアップデートしました。
で、ま、あいかわらずアップデートに失敗しましたorz いやま、6.06からアップデートしまくりの上に、サーバーいろいろ入れてさらにスクリプトもいろいろいじっているので、失敗して当然なのですけどねorz
 とりあえず、do-release-upgrade -d , apt-get install -f , dpkg-reconfigure -a などのコマンドを駆使してなんとかアップデート完了。げっそり。

以下個人的メモ

  • フォントがくっきりはっきりになった。
  • アプリの起動速度はあんまり変わらない。
  • firefox3が2と比べて早くなった気がしない。
    使いたい拡張機能が使えなかたので、firefox3を削除してfirefox2に戻した。自動スクロール機能の挙動がおかしかったのも替える理由。
  • emacs23でIPAフォントが細くなった。VLゴシックに変更した。
  • システム管理の中にあったフォルダの共有がなくなっている。不便かも?
  • きびきび感は上った。かも。
    これはプロセススケジューラがCFSに変ったせいかもしれない。
  • うちの鈍足PCではpreloadは効果ないので削除。7.10でも効果なかった。
  • ログイン画面がはみ出していた。xorg.confで仮想画面で大きい値になっていたのを修正した。
  • gnome-vfsからgvfsにgnomeの仮想ファイルシステムが変更になったせいで、Nautilusでfonts:///などが使えなくなった。
  • 同じくNautilusでsmb://が表示されない。直接アドレスを指定すれば接続する。動いてないみたい。
    smbclientでマウントして使っているから別にいいけど。
    • アップデートがきて解決。
  • アイコンテーマを変えてもフォルダのアイコンが変更されなくなった。
    いやんな感じ。スーケーラブルな画像データじゃないと変更されないとか?
  • locate が、slocate から mlocate に変更になった。mlocate の方が軽量だ。
  • ntfs-3g がsetuidしてもマウント出来ない。sudo すればいいだけだけど・・・

2008/05/09追記:

 しばらくして気付いたのだけれども、ファイルアクセスが速くなっている。
 たとえばNautilusを開いたときの速度が速くなった。
 あとは du でディレクトリ容量を表示するのが一瞬になった。前はごりごりHDDランプが点滅していちいちディレクトリ以下を見に行ってた。

  • GVFS はGNOME-VFSに代って導入されたユーザーランドで動く、新しい仮想ファイルシステム
    以前の機能がまだ未対応な部分も多いが順次切り替わっていくでしょう。GVFSになるとユーザのホームディレクトリに .gvfs/ ディレクトリが作られ、マウントポイントになる。
    試しにNautilusで適当にネットワークフォルダを見に行くと、自動的に ~/.gvfs/ 以下にマウントされている。

2008年4月6日日曜日

PuTTYでEmacsを256色で表示する。

puttyでemacsを使っていると、8色表示しかできていない。これだとさすがに色分け表示がきついので256色表示を出来るようにしてみた。
以下導入メモ。

PuTTY側

terminfo で xterm-256color を使う。
puttyは256色表示できるので、まず、puttyの設定を行う。
まず、
xterm 256色モードを使うことを許可する
にチェックを入れる。
次に、端末のタイプを表す文字列に、
xterm-256color
と指定する。

ubuntu側

xterm-256colorの設定を入れる。
sudo apt-get install ncurses-term



これで、emacs -nw として起動してcolor-themeなどから好きな色を選べばOK.

2008年3月16日日曜日

Ubuntuのpolipoでデイスクキャッシュサイズを制限する

えー、なんか polipo が大人気なようで。紹介した身としてとてもうれしい。
でもなんかpolipo入れればネットが速くなる魔法のソフトのような理解をしている方もいるみたい。polipoはあくまでもproxyサーバーなので。そこのとこをひとつよろしくね。

さて、MacユーザやWindowsユーザの苦労を尻目に快適に動いている我等が ubuntu でのpolipoなのですが、先日ニコニコ動画を連続視聴していましたら、急にストリームが受信できなくなって、なんでかなーと調べたら、polipoのキャッシュを保存してあるHDDのパーティションの使用率が100%になっていました。(^_^;)
 いやあ、あせったあせった。
 polipo にはディスクキャッシュのサイズを指定する設定がないみたい。そんなわけでディスクキャッシュを切り詰める、polipo_trimcache というツールがあるので、さくっと落として利用。

インストール

wget http://ely.ath.cx/~piranha/software/polipo_trimcache/polipo_trimcache-0.2.py
sudo mv polipo_trimcache-0.2.py /usr/local/bin
cd /usr/local/bin
sudo ln -s polipo_trimcache-0.2.py polipo_trimcache
polipo_trimcache は/usr/local/bin に放り込みました。~/bin に入れてそこからリンクを貼ってもいいかもしれません。

使い方

sudo polipo_trimcache /var/cache/polipo 1000M
のように使います。上の例は、サイズを1Gに指定しています。

 それで、後は上のコマンドを定期的にシェルスクリプトで動かせばいいわけですが、今回のように動画連続視聴でキャッシュいっぱいとか、いつハードディスクが満杯になるかわかりません。
 いろいろ考えたんですが、 quota 使うとか、dfを10秒ごとに回して使用量をチェックするとか。

 んでまあ、ファイルのイベントを通知する inotify を利用することにしました。
 キャッシュディレクトリを監視し、新規にファイルが作られたら、HDDの空き容量をチェックして、指定した閾値以上になったら polipo_trimcache を実行します。
 事前に polipo_trimcache と inotify が必要なので入れておきます。
sudo apt-get install inotify-tools
入れたら以下のスクリプトを polipo-diskcache-check.sh として保存します。実行属性を付けてね。

#!/bin/sh
# last updated : 2008/03/19 02:44:25 JST
# $Id: polipo-diskcache-check.sh,v 1.2 2008/03/18 18:04:30 yama Exp $
# polipo のキャッシュのあるパーティションの使用率が指定した
# パーセントを越えるとキャッシュを指定したサイズまで削除する。
#

# 設定
# キャッシュのあるディレクトリを指定する。
CacheDir="/var/cache/polipo"
# キャッシュのあるパーティションの使用割合(パーセントで指定する)
LimitDiskSize=84
# 指定サイズまで切り詰める。
CacheSize="1200M"
# polipo_trimcach の指定。
polipo_trimcache='/usr/local/bin/polipo_trimcache'
#---------------------------------------------------

#echo "初期値は、" $LimitDiskSize "%です。"
while inotifywait -q -q -r -e create $CacheDir ; do
AB=`df --sync /var | awk '/^\/dev/{sub(/\%/,"", $5);print $5}'`
if [ $AB -gt $LimitDiskSize ]; then
nice -n 15 $polipo_trimcache $CacheDir $CacheSize &> /dev/null
fi
done


 あとはこいつを実行すれば、キャッシュがHDDを圧迫しそうになったら自動的にお掃除してくれます。
 /etc/init.d/polipo を修正して同時に起動するようにしておくと楽でしょう。

2008/03/19 追記:

 具体的には、/etc/init.d/polipo の40行目あたり、

case "$1" in
start)
echo -n "Starting $DESC: "
$PPCTL start

の下に
polipo-diskcache-check.sh &
と追記。
45行目あたり、

stop)
echo -n "Stopping $DESC: "
$PPCTL stop
の下に
killall polipo-diskcache-check.sh inotifywait
を追記します。
 後は、
sudo /etc/init.d/polipo restart
としてpolipoを再起動し、
ps aux | grep polipo
と、psコマンドでちゃんと動いているか確認してみてください。

 いやあ便利べんり。ubuntu 最高。

2008年3月12日水曜日

Emacsから印刷する

前回を踏まえてEmacsから印刷してみます。
~/.emacsに以下を追記します。
;;;====================================
;;;; print - 印刷設定
;;;====================================
;;; Postscript で印刷
(setq my-print-command-format "nkf -e | e2ps -a4 -p | lpr")
(defun my-print-region (begin end)
(interactive "r")
(shell-command-on-region begin end my-print-command-format))
(defun my-print-buffer ()
(interactive)
(my-print-region (point-min) (point-max)))
これだけ。

あとは、M-x my-print-buffer でカレントバッファがプリントアウトされます。印刷範囲を指定したい時は、範囲選択をしてから、 M-x my-print-region です。

2008年3月11日火曜日

ubuntuでコマンドラインから印刷する

 GUI環境がこれだけ整っている今に、わざわざCLI環境から印刷を積極的に行なう、少くともデスクトップユーザー的にはあまりない話なのですが、ちょっと気になったので調べてみました。

 まず、印刷は lpr コマンドを通して行なわれます。例えば、hoge.txt を印刷したいときは、
cat hoge.txt | lpr
などとするわけですね。
 それでまあ日本語の場合、lprに渡す前に postscript に変換して渡さないといけないんですが、この変換ツールがいろいろあり、なかなか大変でした。
 ちなみに以下のコマンドを試すにあたっていろいろいじった環境でテストしたので他の方でうまくいかないかもしれません。プリンタは、 cups-PDF を入れてPDFに出力されたものをadobeの acrobatreader で確認しました。また事前に、
sudo apt-get install gs-cjk-resource cmap-adobe-japan1
して、
sudo dpkg-reconfigure cmap-adobe-japan1
を実行し、全てにチェックを入れてあります。

試した変換コマンド

  • a2ps
  • a2psj
  • u2ps
  • paps
  • e2ps
 ざっと試してみただけでこれだけありました。
 まず、 a2ps ですが、定番です。がこいつは日本語には対応していません。少くても ubuntu では。機能は豊富なんですが。
 次に a2psj は perl で書かれたスクリプトですが、UTF-8には対応していません。euc-jpならOKで綺麗に印刷できましたが、枠線が出ます。
 u2ps は、GNOME のライブラリを用いるタイプで、こいつはとっても綺麗に変換してくれました。名前の通りUTF-8対応です。ですが機能が貧弱で余計な枠線が表示され、消す方法がわかりませんでした。
 paps は画像データとして変換してしまうので、ファイルサイズも大きくなり、またPDFで文字選択ができないなど、お話にもなりませんでした。
 最後に e2ps ですが、名前の通りeuc-jp対応の変換ツールですが、こいつはばっちりでした。そして機能も申し分なく、u2psのような余計な枠線も出ませんでした。

 いろいろ試した結果、どれも帯に短かし、襷に長しでした。u2psは唯一utf-8対応ですが、機能は貧弱すぎでしたし、a2psjは枠線出るし、a2psは日本語無理だし・・・

 最終的には、
nkf -e hoge.txt | e2ps | lpr
のような形になりました。
 これでコマンドラインから綺麗な日本語文書を印刷する環境が整いました。
 コマンドラインから印刷できると、自動でPDFファイルを生成し、メールで送信するとか、いろいろ自動処理するのに都合がいいので、お試しあれ。

2008年3月4日火曜日

Emacsからrubyのドキュメントを閲覧する

疲れた。そもそもrubyのリファレンスをEmacsから見たいだけなのに、なぜにどうしてこうも苦労しないといけないのか。

とりあえず、いろいろごちゃごちゃやってしまったんだけど、忘れないようにメモ。

インストールメモ


手順1

ここから基本セット+リファレンスを落とす。
wget http://i.loveruby.net/archive/refe/refe-0.8.0-withdoc.tar.gz
tar zxvf refe-0.8.0-withdoc.tar.gz
cd refe-0.8.0-withdoc/refe-0.8.0
ruby setup.rb config
ruby setup.rb setup
sudo ruby setup.rb install


これでrubyのリファレンスを閲覧するためのrefeリファレンスがインストールされる。

手順2

次にEmacsで見るための rrse.el を入れる。
rrseはここから落としてくる。
wget http://www.kmc.gr.jp/~ohai/rrse/rrse-0.3.tar.gz
tar zxvf rrse-0.3.tar.gz
cd rrse-0.3
sudo cp rrse-* /usr/local/bin
cp rrse.el ~/.lisp
rrse-refe-listdescs, rrse-ri-listdescs, rrse-merga-tables, rrse-make-table は/usr/local/bin にコピー。rrse.el は~/.lisp に放り込む。
そしてデータベースを作成する。
rrse-make-table --refe
~/.rrse/ 以下にデータベースが作成される。

手順3

後は~/.emacsに以下を追記する。
;;;====================================
;;;; rrse - ruby マニュアル
;;;====================================
;;; ruby マニュアルReFeをEmacsから閲覧する。
(load "rrse")
(rrse-setup)

(add-hook 'ruby-mode-hook
'(lambda ()
(define-key ruby-mode-map [f1] 'rrse-help)))


これで準備完了。
後は、Emacsでなにか適当にrubyファイルを開いてruby-modeで、メソッドの上にカーソルを持っていけば、ミニバッファに簡単なリファレンスが表示される。
 詳しい情報は、その状態で、M-x rrse-help あるいは、F1 キーを押せば詳しいリファレンスが表示される。

globメソッドの上にカーソルを持っていくと、ちゃんとミニバッファに簡易な要約と、rrse-helpで詳しい情報が表示されている。

2008年2月28日木曜日

Firefoxの拡張を見直して、軽量化。

 長いことFirefoxを使ってきていて、ふと気がつくと、いつのまにか拡張機能が増えてきて、えらいもっさりしたFirefoxになっていた・・・
 これはいかんでしょうということで必要な拡張だけを残し、あとは削除してみた。

 最低限必要な機能は、
  • Tab Mix Plus
     タブ周りの使い勝手を劇的に改善してくれる。これがないとはじまらない。

  • AdBlockPlus
     広告を除去してくれる。これがないとFirefoxを使う意味がない。

  • All-in-one gesture
     マウスジェスチャを実現する。なくても問題ないが、あると便利。

  • NoScript
     javaScriptを原則禁止にしてくれる。信用できるサイトだけ許可すればいいので安心。

  • Save Image Folder
     あらかじめ指定したフォルダにコンテキストメニューから選択するだけで画像を振り分けられる。

  • ScrapBook
     紙にスクラップする感覚でWebを保存できる。メモがわりに便利。

  • テキストリンク
     リンクされていないurlもダブルクリックするだけでリンクのように扱える。


 がんばって削ってみた。Userchrome.cssをいじったりとかもFirefoxを重くするので使用はやめたほうがいい。Stylishもだ。ユーザ側でCSSをいじるのはすごい便利なのだけれども、重さにダイレクトに関わるので使うのをやめた。

 削った結果。かなり軽くなったのが体感できた。httpで取得したあとにhtmlをごにゃごにゃいじくる系を外したのが効いたようだ。
 Firefoxを使う最大のメリットは拡張機能にあると思うので、かなり悩みどころではある。
あとブックマークが肥大化すると、これまたFirefoxは重くなる。うちのブックマークだけで720KByteもあるよw どうすべw

2008年2月20日水曜日

EmacsのWanderlustの設定をちょこっと修正

前回のWanderlustの導入から操作にも慣れてきて、普段日常でも使えるようになってきました。
以前よりまめにメール出すようになったしねw

ということで少し設定をいじったのでメモ。

メールヘッダ

前回のは冗長すぎたので以下のように修正。
~/.wl に以下を追記。
;; summary-mode ですべての header を一旦除去
(setq wl-message-ignored-field-list '("."))
;; 表示するヘッダ。
(setq wl-message-visible-field-list
'("Cc:" "^Subject:" "^From:" "^To:" "^Cc:"
"^X-Mailer:" "^X-Newsreader:" "^User-Agent:"
"^X-Face:" "^X-Mail-Count:" "^X-ML-COUNT:"
))
全てのメールヘッダを表示するには、H キー。元に戻すにはもう一度 H キーか、「.」ピリオドを押す。生のメールヘッダを見たいときは、M キー。

WanderlustをEmacs標準のメーラーに

C-x m で 新規メール作成画面になるのだけれども、これをWanderlustが立ち上がるように設定する。
~/.emacs に以下を追記。

;;;====================================
;;;; Wanderlust - メールソフト
;;;====================================
;;; wl の設定は~/.wl に。
;;; 標準のメーラーをWanderlustにする。
(autoload 'wl-user-agent-compose "wl-draft" nil t)
(if (boundp 'mail-user-agent)
(setq mail-user-agent 'wl-user-agent))
(if (fboundp 'define-mail-user-agent)
(define-mail-user-agent
'wl-user-agent
'wl-user-agent-compose
'wl-draft-send
'wl-draft-kill
'mail-send-hook))

メール作成モード(ドラフトモード)の初期設定

~/.wl に以下を追記。
;;; メール編集モードフック。
(add-hook 'wl-draft-mode-hook
'(lambda ()
(setq paragraph-start '"^\\([  ・○<\t\n\f]\\|(?[0-9a-zA-Z]+)\\)")
(auto-fill-mode t)
(set-fill-column 60)
))

シグネチャ(署名)挿入時のセパレータを削除する

~/.wl に以下を追記。
(setq signature-separator "")
(add-hook 'wl-mail-setup-hook
(lambda ()
(require 'signature)
(local-set-key "\C-c\C-w" 'insert-signature)))

アドレス帳を暗号化する

EasyPG などのEmacsからgpgを透過的に扱うパッケージを入れてあれば簡単に出来ます。
~/.addresses ファイルをgpgを使って暗号化し、出来た ~/.addresses.gpg ファイルを ~/.wl に、
;;; アドレス帳の指定。EasyPGで透過的に扱える。
(setq wl-address-file "~/.addresses.gpg")
などとして指定するだけ。
あとはWanderlust起動時に自動的にパスフレーズを聞かれるので入力すればOK。

2008年2月17日日曜日

Ubuntuで polipo を使ってニコニコ動画を快適にキャッシュしよう

ニコニコ動画 や youtube やら Stage6 などでたくさんの動画を観ていると、すぐにウェブブラウザのキャッシュから溢れて、決っして少なくないサイズの動画データを再びダウンするはめになり、あまり快適とは言えません。
うちの環境ではfirefoxでキャッシュを500Mぐらいに取ってあるんですが、どうもフラッシュはうまくキャッシングされないようで、複数の動画を行ったりきたりしていると再度ダウンするはめになり、非常にストレスを感じていました。

windowsだとnicocacheなるニコニコ動画専用のキャッシュツールがあるみたいでうらやましく思っていたり、かといって本格的な squid を立ち上げるのもなあ、と思いながら放置してたんですが、個人使用に特化したパーソナルなproxyサーバー、 polipo というのを知りました。

polipo はなんでも個人向けに特化したproxyサーバーらしく、特徴は、
  • 小型で軽快
  • HTTP1.0のアクセスをHTTP1.1に変えてくれる
  • 個人で使用することを考えられている
  • 設定項目が豊富
とのことで、さっそく導入してみました。

インストール

sudo apt-get install polipo
これだけです。インストールされると自動的にデーモンとして動きはじめます。

設定

  • polioの設定・動作確認
    polioの各種設定やステータスを確認したい場合は、http://localhost:8123 にウェブブラウザからアクセスすればOKです。とりあえず、特に設定することはないでしょう。
  • ブラウザでの設定
    Firefoxでの説明をします。メニューの編集設定で、詳細をクリックし、ネットワークタブを選択します。その中の接続設定をクリックし、手動でプロキシを設定するにチェックを入れて、HTTPプロキシに、localhost、右のポートに、8123を設定します。
    すべてのプロトコルでこのプロキシを使用する、はお好みで。
    後は検証のためFirefoxのキャッシュを12MBぐらいに縮小して念のためFirefoxを再起動。



さっそく大きめの動画データを複数視聴。きちんとキャッシュされていて超快適w さらにFirefoxのキャッシュを12MBとしたことでFirefox自体の動作も軽くなりました。ん〜素晴しい。
ちなみにキャッシュ置き場はデフォルトでは、/var/cache/polipo/ になっているので、占有サイズを知りたければ、
sudo du -sh /var/cache/polipo/
とすれば分かります。
みなさんも快適なウェブブラウズ環境を構築して楽しんでください。

2008/02/18:追記:

 nicocacheはjavaで書かれているようで、linuxでも動きそうですね。でもproxyはやっぱりネイティブで動き、メモリ消費の少ないpolipoの方がいいですね。
 さらにLAN内のPCもpolipoを見るように設定しました。実際かなりレスポンスがよくなり、もっと早くにporoxy鯖立てておけばよかったと思います。
というかFfirefoxのキャッシュ、バカですよね。

2008/02/28:追記:

 polipo をLAN内で公開する場合は、/etc/polipo/config 内の、
# 公開するpolipoのIPアドレス。
proxyAddress = "0.0.0.0"
# 接続許可するIPアドレス。
allowedClients = 127.0.0.1, 192.168.0.22
あたりを有効にします。IPアドレス固定で運用しているなら、proxyAddress = を決め打ちでいいでしょう。

2008年2月7日木曜日

EmacsでGmailを

EmacsでGmailを扱えるようがんばってみた。
メーラーは Wanderlust で IMAP4 を使います。



インストール

sudo apt-get install bl-beta starttls gnutls-bin

設定

  • ~/.wl にWanderlustの設定を書きます。
  • ~/.folders にフォルダ設定を書きます。

私がとりあえず設定してみた~/.wl の中身。

;;; -*- mode: emacs-lisp; Coding: iso-2022-7bit -*-
;;; last updated : 2008/02/08 15:00:23 JST
;;;
;;; Wanderlust 設定ファイル

;;; 一般的なメーラの操作とGmailでの扱われ方の対応表
;;; https://mail.google.com/support/bin/answer.py?answer=77657

;; IMAP サーバの設定
(setq elmo-imap4-default-server "imap.gmail.com")
(setq elmo-imap4-default-user "ふがふがほげげ@gmail.com") ; メールアドレス
(setq elmo-imap4-default-authenticate-type 'clear)
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)
(setq elmo-imap4-use-modified-utf7 t) ; 日本語フォルダ対策

;; SMTP サーバの設定
(setq wl-smtp-connection-type 'starttls)
(setq wl-smtp-posting-port 587)
(setq wl-smtp-authenticate-type "plain")
(setq wl-smtp-posting-user "ふんがぁ") ; 適宜修正
(setq wl-smtp-posting-server "smtp.gmail.com")
(setq wl-local-domain "gmail.com")

;; 一意なmessage-ID 動的IPアドレスの場合に設定。何か適当な文字列を。例えばメールアドレスとか。
(setq wl-from "もげ <もげっとぎゃおす@gmail.com>")


;;;------------------------------------------
;;; その他の設定
;; デフォルトのフォルダ
(setq wl-default-folder "%inbox")
;; フォルダ名補完時に使用するデフォルトのスペック
(setq wl-default-spec "%")
(setq wl-draft-folder "%[Gmail]/Drafts") ; Gmail IMAPの仕様に合わせて
(setq wl-trash-folder "%[Gmail]/Trash")
;; 下書きディレクトリをローカルに設定する.
(setq wl-draft-folder "+Drafts")
(setq wl-folder-check-async t) ; 非同期でチェックするように
;; 大きなメッセージを分割して送信しない(デフォルトはtで分割する)
(setq mime-edit-split-message nil)
;; 起動時からオフラインにする
;; (setq wl-plugged nil)
;; サマリモードで日時を英語表示
;; (setq wl-summary-weekday-name-lang 'en)
;; HTMLファイルは表示しない。
(setq mime-setup-enable-inline-html nil)
;; メールを書くときは見出し画面を残して、フル画面にする
(setq wl-draft-reply-buffer-style 'keep)
;; 送信済みIMAPフォルダは送信と同時に既読にする
(setq wl-fcc-force-as-read t)
;; 最初からスレッドを開いておかない
(setq wl-thread-insert-opened nil)
;; スレッドを分割するしきい値(デフォルト:30)
(setq wl-summary-max-thread-depth 30)
;; 警告無しに開けるメールサイズの最大値(デフォルト:30K)
(setq elmo-message-fetch-threshold 500000)
;; プリフェッチ時に確認を求めるメールサイズの最大値(デフォルト:30K)
(setq wl-prefetch-threshold 500000)

;;;------------------------------------------
(setq wl-dispose-folder-alist
(cons '("^%inbox" . remove) wl-dispose-folder-alist))


;;;------------------------------------------
;;; from,to のデコード指定。
(mime-set-field-decoder
'From nil 'eword-decode-and-unfold-unstructured-field-body)
(mime-set-field-decoder
'To nil 'eword-decode-and-unfold-unstructured-field-body)

;;;------------------------------------------
;; summary-mode ですべての header を一旦除去
(setq mime-view-ignored-field-list '("^.*"))

;; 表示するヘッダ。
(setq wl-message-visible-field-list
(append mime-view-visible-field-list
'("^Subject:" "^From:" "^To:" "^Cc:"
"^X-Mailer:" "^X-Newsreader:" "^User-Agent:"
"^X-Face:" "^X-Mail-Count:" "^X-ML-COUNT:"
)))

;; 隠すメールヘッダを指定。
(setq wl-message-ignored-field-list
(append mime-view-ignored-field-list
'(".*Received:" ".*Path:" ".*Id:" "^References:"
"^Replied:" "^Errors-To:"
"^Lines:" "^Sender:" ".*Host:" "^Xref:"
"^Content-Type:" "^Content-Transfer-Encoding:"
"^Precedence:"
"^Status:" "^X-VM-.*:"
"^X-Info:" "^X-PGP" "^X-Face-Version:"
"^X-UIDL:" "^X-Dispatcher:"
"^MIME-Version:" "^X-ML" "^Message-I.:"
"^Delivered-To:" "^Mailing-List:"
"^ML-Name:" "^Reply-To:" "Date:"
"^X-Loop" "^X-List-Help:"
"^X-Trace:" "^X-Complaints-To:"
"^Received-SPF:" "^Message-ID:"
"^MIME-Version:" "^Content-Transfer-Encoding:"
"^Authentication-Results:"
"^X-Priority:" "^X-MSMail-Priority:"
"^X-Mailer:" "^X-MimeOLE:"
)))


;;;---------------------------------------------------
;; ファイル名が日本語の添付ファイルをデコードする [semi-gnus-ja: 4332]
(eval-after-load "mime"
'(defadvice mime-entity-filename
(after eword-decode-for-broken-MUA activate)
"Decode eworded file name for *BROKEN* MUA."
(when (stringp ad-return-value)
(setq ad-return-value (eword-decode-string ad-return-value t)))))

;; ファイル名が日本語の添付ファイルをエンコードする [semi-gnus-ja: 6046]
(eval-after-load "std11"
'(defadvice std11-wrap-as-quoted-string (before encode-string activate)
"Encode a string."
(require 'eword-encode)
(ad-set-arg 0 (or (eword-encode-string (ad-get-arg 0)) "" )) ))


;; 添付ファイルがある場合は「@」を表示
(setq elmo-msgdb-extra-fields
(cons "content-type" elmo-msgdb-extra-fields))
(setq wl-summary-line-format-spec-alist
(append wl-summary-line-format-spec-alist
'((?@ (wl-summary-line-attached)))))
(setq wl-summary-line-format "%n%T%P%1@%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")


修正する場所は、

(setq elmo-imap4-default-user "もきゅもきゅ@gmail.com") ; メールアドレス
(setq wl-smtp-posting-user "もきゅもきゅ") ; 適宜修正してください
(setq wl-from "もきゅ <もきゅもきゅ@gmail.com>")

ぐらいで、あとはそのままで動作するでしょう。

~/.folders はこんな感じで。まだよくわかってない。

# -*- mode: conf-unix ; Coding: iso-2022-7bit -*-
#
%inbox "受信トレイ"
+Drafts "下書き"
%/


使い方

起動は M-x wl でフォルダ一覧が出ます。
見たいフォルダの上でRETでメール一覧(サマリモード)が開きます。Pで前のメールに、Nで次のメールに移動。RET でメールの内容が表示されます。
  •  新規にメールを書くときは、W
  •  返信するときは、a
  •  引用して返信は、A

 メールを編集(ドラフトモード)しているときは、C-c C-c で送信。C-c C-z でセーブして編集を中断。

一応これで動いています。まだWanderlustの使い方がよく判ってないのでいろいろとあれですが、受信、返信、新規メール送信ぐらいは覚えましたw

使ってみてFirefox上でGMail扱うよりも軽快に動くし、Emacsで編集していたものを、そのままメールで送信とか便利です。

  • 20080209追記:

    Gmailの容量が6.4GBになってました・・・なんかもう凄いですね。
    C-x m を wl-draft に割り当てましたので、Emacsで編集している文章を片っ端からWanderlustでGmailにメールしちゃいそうです><

2008年2月5日火曜日

ubuntuでマウスジェスチャーを使う

Firefoxなどのブラウザでマウスジェスチャーを利用している人は多いですが、ブラウザ以外でもマウスジェスチャが利用出来れば確かに便利だよねと、この記事を見て試しにubuntuにも入れてみました。
入れるのは、Gestikk ですが、ubuntuのリポジトリにはパッケージがないのですが、本家でubuntu用パッケージを配布してくれているので、それを入れることにします。

インストール

sudo apt-get install python-wxgtk2.8 libwxbase2.8-0 libwxgtk2.8-0
wget http://projects.reichbier.de/gestikk/downloads/gestikk-0.4-debs.tar.gz
tar zxvf gestikk-0.4-debs.tar.gz
sudo dpkg -i gestikk_0.4.1-0ubuntu4_all.deb

これで無事インストールが出来、立ち上がることを確認しました。

私自身は使わないので、ここまでに(^_^;)

2008年2月4日月曜日

Emacsでmp3を聴く

作業中に音楽を聴くのに Amarok は邪魔だし重いし、Audacious もなあ、ということでEmacsで音楽を聴けるようにしてみました。
CLIで動作するmpg123とそれのフロントエンドのmpg123.elを使います。
が、ubuntuのリポジトリにあるmpg123はVer0.66なので古く、id3v2を解釈できないので、本家からソースを取ってきて自分でビルドしました。ついでにmpg123.elも本家から拾ってきました。

以下作業メモ


mpg123を取得したら展開してビルドしてインスト。
tar jxvf mpg123-1.2.0.tar.bz2
cd mpg123-1.2.0/
./configure
make
sudo make install
sudo ldconfig
端末から mpg123 hogehoge.mp3 などとして動作することを確認。ちゃんと日本語のid3v2タグも文字化けせずに表示された。
次に、音量を調節するのに必要なaumixを入れて、
sudo apt-get install aumix

mpg123.el を~/.lisp/ に放り込んで、~/.emacsに以下を追記する。
(autoload 'mpg123 "mpg123" "A Front-end to mpg123/ogg123" t)
(setq mpg123-lazy-check "\\.mp3$")
(setq mpg123-file-name-coding-system 'utf-8)
(setq mpg123-process-coding-system "utf-8")

これで無事文字化けせずに動作することを確認。ただid3v2の文字コードによってはうまくいかないことも。う〜ん。

2008年1月21日月曜日

Emacsで引用記号付き貼り付け

昔は、引用記号付き貼り付けが、エディタの必須機能の一つという時代がありました。
今では各アプリが自前の入力エディタを備えているので、必要とされなくなりましたが・・・orz

ま、それでもないよりは、あったほうがいいじゃん。ということで、Emacsで引用記号付き貼り付けの方法なぞを。

まずは、デフォルトでのやり方。
string-rectangle というコマンドが標準であります。 C-x r t に割り当てられているので、引用したい行を範囲選択し、C-x r t とすると、ミニバッファに引用記号を聞いてくるので、指定すればOK。
実にお手軽。

もうひとつは、~/.emacs に以下を追加して、

;;;====================================
;;;; 引用記号付き貼り付け
;;;====================================
;;; 切り取った文字列を指定した引用記号で貼り付ける。
(defun commentize (str)
"引用記号付き貼り付け。
切り取った文字列を指定した引用記号で貼り付ける。"
(interactive "s引用記号: ")
(save-restriction
(yank)
(narrow-to-region (mark) (point))
(goto-char (mark))
(while (re-search-forward "^[ \t]*" nil t)
(replace-match str)))
(end-of-line)
(newline 2))
Kill(切り取り)して、M-x commentize とすれば、引用記号を聞いてくるので、指定すれば引用記号付きで貼り付けてくれます。

私はこれを、

(global-set-key "\C-\M-y" (lambda () (interactive) (commentize "> ")))
として C-M-y に割り当てています。あらかじめ引用記号を指定してあるので、いちいち毎回引用記号を指定しなくてすむので楽ちんです。

2008年1月19日土曜日

SKKサーバーを入れてみた

Emacsで、初回に辞書を読み込む時の時間に苛立ちを憶え、SKKサーバを入れてみることにしました。
複数の辞書を使用しているので、uim-skkDDSKKで両方で使用したいというのもありますし、メモリの節約にもなると思ったからです。

とりあえず、ubuntuのリポジトリに複数の辞書を扱えるskkserverは、skksearchしかなかったので、skksearchを入れました。
sudo apt-get install skksearch tinycdb skkdic-cdb

ちなみにうちの環境では、skksearch を入れたら、らnetkit-inetdからopenbsd-inetdに変わりました。
skksearchはcdb形式の辞書を扱いますので、手持ちの辞書をcdb形式に変換します。
cd /usr/share/skk/
sudo skk2cdb SKK-JISYO.L SKK-JISYO.L.cdb
また手持ちの2ch辞書、顔文字辞書、カタカナ英語変換辞書、をそれぞれ同じようにcdb形式に変換しました。

次に /etc/skksearch.conf を開いて、
cdb:/usr/share/skk/SKK-JISYO.cdb
cdb:/usr/share/skk/SKK-JISYO.2ch.cdb
cdb:/usr/share/skk/SKK-JISYO.KAO.cdb
cdb:/usr/share/skk/katakana-eigo.jisyo.L.cdb
な感じで使用する辞書を登録。
事前準備が出来たので、inetdを起動する。
sudo /etc/init.d/openbsd-inetd start
念の為、~/.skk に、
(setq skk-aux-large-jisyo nil)
と書いておいて、Emacsを起動。おもむろにユーザ辞書にない単語を入力してみて、変換。
瞬時に変換候補が出た。以前のように初回辞書読み込みが発生することもなく、あっという間。
う〜ん、素晴しい。こんなことならもっと早くやれば良かった。

uim-skk の方は、uim-pref-gtk で、辞書ファイルの変わりにSKKサーバを使用にチェックを入れるだけ。

これで複数の辞書を、EmacsのSKKとuim-skkとで共通に利用できて、Emacsでも初回辞書読み込みに待たされることもなくなった

2008年1月8日火曜日

EmacsでTwitter

Twitterの日本語版が春にでも始まるらしいので、いい機会だから試してみた。

Twitter は海の向こうではSNSを抜いて大人気だとか。感覚的にこう、なんだろう。つぶやきの文化みたいな?

みんながぶつぶつ言葉の泡を吐くんだけど、それらが互いに干渉しあって、時に大きな泡となって盛り上がったり、時には消し飛んで消沈したり。
Twitterが受け入れられているのは、ブログのように気張って書く必要もなく、誰かに意識してメッセージを届けようとする必要もなく、ゆる〜く、ぶつぶつ呟けるからみたいなところがあるのかなと思う。

もう一つTwitterを試してみようと思ったのは、EmacsでTwitterが出来るtwitering-modeというのがあったから。

ここからtwittering-mode.elを落してきて、~/.lispあたりに放り込んで、~/.emacs

(load "~/.twitter.el")
と書いて、~/.twitter.elに、

(require 'twittering-mode)
(setq twittering-username "アカウント名")
(setq twittering-password "パスワード")
と書いた。
~/.twitter.elと、別ファイルにしたのは、IDとパスワードを~/.emacsに書きたくなかったから。~/.twitter.elはもちろん
chmod 600 ~/.twitter.el
しておくこと。

使い方は、M-x twittering-mode起動
C-c C-s書き込み
デフォルトでは90秒で自動的に更新される。


前後しちゃうけど、Twitterの使い方は、

を参考に。

そしてTwitterは一人でぶつぶつ呟いてもおもしろくもなんともない。どんどん友達を誘おう。
Twitterではかなり気軽に知らない人を誘ってもいいみたい。
友達の見つけ方は以下から探してみるといいかも。

2008年1月6日日曜日

pidginでYahoo!チャットを使えるようにする

gaimから名前が変って設定ファイルの場所も変ったみたい。
~/.purple/accounts.xml を開いて、yahooアカウントの
<setting name='room_list_locale' type='string'>ja</setting>
の下あたりに、
<setting name='room_list' type='string'>http://insider.msg.yahoo.co.jp/ycontent/</setting>
を追記。

これで、ツールの部屋一覧で日本の部屋一覧が表示されます。