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の文字コードによってはうまくいかないことも。う〜ん。