powerline.el で emacs モードラインを派手に

http://www.emacswiki.org/emacs-en/PowerLine vim の powerline に似たモードを emacs で実現できる powerline.el を試してみた。 見た目が派手でかわいくなるので、気に入った。w すでに下記のようなサイトで紹介さ れつつある。 http://d.hatena.ne.jp/kenjiskywalker/20120502/1335922233 http://n8.hatenablog.com/entry/2012/03/21/172928 インストールすると見た目はこんな感じになる。 うん、かわいい。 インストール方法は簡単。auto-install 環境が構築されているとして auto-install-from-emacs-wiki powerline.el する。auto-install が入っていなければ http://www.emacswiki.org/emacs/powerline.el ここにある powerline.el をダウンロードして ~/.emacs.d/lisp/ 配下など path の通っ ている所に入れれば OK。 あとは .emacs 内には下記を追記するだけだ。 ;; powerline.el (defun arrow-right-xpm (color1 color2) "Return an XPM right arrow string representing." (format "/* XPM */ static char * arrow_right[] = { \"12 18 2 1\", \". c %s\", \" c %s\", \". \", \".. \", \"... \", \".... \", \"..... \", \"...... \", \"....... \", \"........ \", \"......... \", \"......... \", \"........ \", \"....... \", \"...... \", \"..... \", \".... \", \"... \", \".. \", \". \"};" color1 color2)) (defun arrow-left-xpm (color1 color2) "Return an XPM right arrow string representing." (format "/* XPM */ static char * arrow_right[] = { \"12 18 2 1\", \". c %s\", \" c %s\", \" .\", \" ..\", \" ...\", \" ....\", \" .....\", \" ......\", \" .......\", \" ........\", \" .........\", \" .........\", \" ........\", \" .......\", \" ......\", \" .....\", \" ....\", \" ...\", \" ..\", \" .\"};" color2 color1)) (defconst color1 "#FF6699") (defconst color3 "#CDC0B0") (defconst color2 "#FF0066") (defconst color4 "#CDC0B0") (defvar arrow-right-1 (create-image (arrow-right-xpm color1 color2) 'xpm t :ascent 'center)) (defvar arrow-right-2 (create-image (arrow-right-xpm color2 "None") 'xpm t :ascent 'center)) (defvar arrow-left-1 (create-image (arrow-left-xpm color2 color1) 'xpm t :ascent 'center)) (defvar arrow-left-2 (create-image (arrow-left-xpm "None" color2) 'xpm t :ascent 'center)) (setq-default mode-line-format (list '(:eval (concat (propertize " %b " 'face 'mode-line-color-1) (propertize " " 'display arrow-right-1))) '(:eval (concat (propertize " %m " 'face 'mode-line-color-2) (propertize " " 'display arrow-right-2))) ;; Justify right by filling with spaces to right fringe - 16 ;; (16 should be computed rahter than hardcoded) '(:eval (propertize " " 'display '((space :align-to (- right-fringe 17))))) '(:eval (concat (propertize " " 'display arrow-left-2) (propertize " %p " 'face 'mode-line-color-2))) '(:eval (concat (propertize " " 'display arrow-left-1) (propertize "%4l:%2c " 'face 'mode-line-color-1))) )) (make-face 'mode-line-color-1) (set-face-attribute 'mode-line-color-1 nil :foreground "#fff" :background color1) (make-face 'mode-line-color-2) (set-face-attribute 'mode-line-color-2 nil :foreground "#fff" :background color2) (set-face-attribute 'mode-line nil :foreground "#fff" :background color3 :box nil) (set-face-attribute 'mode-line-inactive nil :foreground "#fff" :background color4) 色を少し変えただけで、ほぼ emacswiki に載っているコードそのままだ。no window だと寂しいことになるが、まぁ仕方ない。vim でも powerline を使って気に入ってい たので emacs でも使えるとあって嬉しい限りだ。これから少しずつカスタマイズして いこうと思う。 ...

Vyatta で無線アクセスポイント

自宅ルータを Vyatta で運用開始したのだけど、無線ルータ化ができたのでメモしておき ます。 まずはアクセスポイントとして稼働する無線カードの選定。下記の URL に Linux 系で 動作する無線カードチップ名の一覧が載っている。Vyatta は Linux 系ドライバを利用 しているので、この一覧が有効なはずだ。 http://linuxwireless.org/en/users/Drivers Intel 系も結構アクセスポイントとしては動作しないことが判ったので Atheros の AR9k のカードを購入した。私が買ったのはAR9280 チップの mini PCI-E 無線カード。 早速装着してみると、認識した! % dmesg | grep ath [ 11.528390] ath9k 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 11.528398] ath9k 0000:01:00.0: setting latency timer to 64 [ 11.961619] ath: EEPROM regdomain: 0x37 [ 11.961620] ath: EEPROM indicates we should expect a direct regpair map [ 11.961622] ath: Country alpha2 being used: AW [ 11.961623] ath: Regpair used: 0x37 [ 12.031676] ieee80211 phy0: Selected rate control algorithm 'ath9k_rate_control' 早速設定に入る。有線側有線 NIC と無線 NIC をブリッジ接続する。br0 デバイスにの み IP アドレスを振り、eth1, wlan0 は IP アドレスを振らない構成にする。 ...

vyatta で UPnP 接続

Vyatta を自宅ルータで使い始めて感じたのは、PS3 などのゲーム機や IP 電話など UPnP 接続が必要なことがあるってこと。ただ Vyatta は UPnP に対応していないので、 どうしようかと思っていたら、有志の方が作ってくれたソフトウェアがあり、うちでも これを使うことにした。今回はその方法を記していきます。 https://github.com/kiall/vyatta-upnp 上記のソースを取得して生成するのだが、vyatta 上で構築する環境を作りたくないの で、私は Debian Gnu/Linux マシン上で行いました。Ubuntu でも大丈夫だと思います。 debian% sudo apt-get && sudo apt-get install build-essential debian% git clone https://github.com/kiall/vyatta-upnp.git debian% cd vyatta-upnp debian% dpkg-buildpackage -us -uc -d 一つ上のディレクトリに vyatta-upnp_0.2_all.deb という .deb ファイルができあがっ ているはずで、これが UPnP パッケージファイル vyatta-upnp_0.2_all.deb です。 次に vyatta 上での作業。packages.vyatta.com から libupnp4 と linux-igd を取得、 その後先ほど生成した vyatta-upnp_0.2_all.deb を vyatta 上に持ってきてからイン ストールします。 vyatta# cd /tmp/ vyatta# wget http://packages.vyatta.com/debian/pool/main/libu/libupnp4/libupnp4_1.8.0~svn20100507-1_amd64.deb vyatta# wget http://packages.vyatta.com/debian/pool/main/l/linux-igd/linux-igd_1.0+cvs20070630-3_amd64.deb vyatta# scp ${DEBIAN}:/${SOMEWHERE}/vyatta-upnp_0.2_all.deb . # 先ほど生成したファイル vyatta# dpkg -i libupnp4_1.8.0~svn20100507-1_amd64.deb linux-igd_1.0+cvs20070630-3_amd64.deb vyatta# dpkg -i vyatta-upnp_0.2_all.deb これで設定が可能になりました。設定してみます。 ...

vyatta で自宅ルータ構築

自宅ルータを Vyatta で構築してみたくなり、秋葉原の ark でマシンを調達しました。 Broadcom の BCM57780 チップが搭載された NIC がマザーボード J&W MINIX™ H61M-USB3 だったのですが、Vyatta.org によると Broadcom の NIC が Certificated Hardware に載っていなくて心配でした。まぁ定評のある NIC メーカだから動くだろう と楽観視していたのですけど、案の定動きました。vyatta.org の Certificated Hardware にコミットしたら “user tested” として掲載してもらえました。 http://www.vyatta.org/hardware/interfaces こんな感じに見えています。 # dmesg | grep Broadcom [ 3.284646] tg3 0000:03:00.0: eth0: attached PHY driver [Broadcom BCM57780](mii_bus:phy_addr=300:01) [ 3.524122] tg3 0000:05:00.0: eth1: attached PHY driver [Broadcom BCM57780](mii_bus:phy_addr=500:01) 今回は、基本的な設定 (PPPoE, NAT, DHCP) 周りを記していきます。 環境は… +--------+ | Modem | +--------+ | | pppoe0 +--eth0--+ | vyatta | +--eth1--+ | 192.168.1.0/24 +----------+ | |192.168.1.10 +--------+ +--------+ | CPE | | DNS | +--------+ +--------+ として記します。 ...

Mosh を使う

今週/先週?、Hacker News で取り上げられた Mosh を自宅 と会社で使い始めた。SSH 代替なソフトウェアで、SSP (State Synchronization Protocol)over UDP で動作している。MIT が開発したそうだ。 動作は、クライアントがシーケンス番号と共にデータグラムをサーバに送信し、同期し 続ける。クライアントがローミングし IP アドレスが代わる等した時、以前より大きい シーケンス番号と共に正当なパケットが送信されたとサーバが認識した場合のみ、サー バは新しいソース IP アドレスを新たなクライアントだと認識する。もちろん、この場 合のローミングは NAT 越しの IP 再アサイン時やクライアントのネットワークインター フェース切り替えやノート PC を新たな無線アクセスポイント配下へ移動した場合も同 様に動作する。めちゃ便利やん。Mosh は SSP を2経路持ち、1つはクライアントからサー バへユーザの打ったキーの同期を取る。もう一方はサーバからクライアントへで、スク リーンの状態をクライアントへ同期を取るためだ。 つまり、ノート PC やその他モバイル機器の IP アドレスが変わったとしても接続性は 担保され、また ノート PC のスリープ解除後にも接続性は確保され続ける。また、UDP で動作しているので、フルスクリーンの vim や emacs 等での再描画の遅延等も起こり にくそうだ。あと Ctrl-C 。TCP だと、キータイプがサーバプログラムに伝わらない状 況はプログラムプロセスが混雑しているとよくあるのだが、SSP over UDP での Ctrl-C はそういうことが無いそうだ。 また、認証機構は SSH に任せているので sshd は引き続き稼働させておく必要がある。 mosh は接続する先のユーザが一般ユーザ権限で動作させるプログラムでしかない。つ まり mosh daemon は必要ないようだ。 実際にインストールしてみた。Mac の場合、homebrew で ...

debian sid on thinkpad

ノート PC を購入するといつも Debian Gnu/Linux sid をインストールするのだけれど も、X Window System や InputMethod をインストールして利用し始められるところま での手順っていつも忘れる。メモとしてブログに載せておきます。 console 上での ctrl:caps swap 設定 取りあえずこの設定をしないと、何も操作出来ない。Caps Lock と Control キーを入 れ替える設定です。 /etc/default/keyboard を下記のように修正 XKBOPTIONS="ctrl:swapcaps" 下記のコマンドで設定を反映。 % sudo /etc/init.d/console-setup restart sid の sources.list 設定 Debian Gnu/Linux をノート PC にインストールする時は必ず sid を入れます。新し目 のソフトウェアを使いたいから。 deb http://ftp.riken.jp/Linux/debian/debian/ unstable main contrib non-free deb-src http://ftp.riken.jp/Linux/debian/debian/ unstable main contrib non-free 下記のコマンドで dist-upgrade % sudo apt-get update % sudo apt-get dist-upgrade iwlwifi のインストールとネットワーク設定 買うノート PC はいつも ThinkPad。大体 intel チップな Wi-Fi モジュールが搭載さ れているので、iwlwifi を使う。 ...

cocoa な emacs インストール

Carbon な API は排除していくべきと Apple も言っているようですし、自宅も会社も Cocoa な emacs を使うようになりました。 その手順を書いていきます。 ソースとパッチでビルドも出来るのですが、homebrew 使うとメチャ楽なので今回はそれを使います。 homebrew は公式サイトに詳しいことが書いてありますけどインストールがワンラインで済みます。 あと、事前に AppStore で Xcode を入れてください。 % /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)" だけです。 そして Cocoa な emacs インストール。 % brew install --cocoa emacs % sudo mv /usr/local/Cellar/emacs/24.1/Emacs.app /Applications/ 以上です..。簡単すぎる。先人たちのおかげですね。 次は時間見つけて anything.el のことを書こうかなぁと思ってます。 参考 URL : http://mxcl.github.com/homebrew/

OpenFlow 勉強会

2012年2月6日、西新宿にある株式会社ニフティさんで行われた “OpenFlow 勉強会” に参加したので簡単なレポメモを書いておきます。 まずは OpenFlow の基本動作。 メッセージの切り出し ハンドシェイク コネクションの維持 スイッチから送られてくるメッセージへの応答 構成は OpenFlow コントローラ, スイッチから成る コントローラは通信制御 スイッチはフロールールをコントローラに問い合わせ通信を受け流し(packet/frame 転送) コントローラは L2 - L4 フィールドを見て制御する そしてコントローラ、スイッチは各社・団体から提供されている。今月も Nicira Networks さんが自社システムの構成を抽象的ではありますが公開され、HP さんも OpenFlow 対応スイッチを12製品ほど発表されました。 コントローラの種別、 Beacon (Java) NOX (Python) Ryu NodeFlow Trema (C/ruby) Nicira Networks Big Switch Networks Midokura NTT Data スイッチの種別、 cisco nexus 3000 IBM BNT rackSwitch G8264 NEC Univerge PF5240/PF5820 Pronto Systems 3240/3290 HP 3500/5400 HP OpenFlow 化 firmware Reference Implementation (Software) Open vSwitch (Software) NEC さんの PF ほにゃららは、GUI なインターフェースと API を持った製品で OpenFlow 1.0.0 仕様に準拠。スイッチ25台までを管理するコントローラ。価格は、コントローラ : 1000万, スイッチ : 250万 だそうです。スイッチ25台はあくまでもソフトリミットらしいです。 ...