2011年11月30日水曜日

screenからtmuxに乗り換えた

いままで端末マルチプレクサとしてscreenを使っていたのだが、オワコンという話を聞いていたのでtmuxに乗り換えた。
screenはどっかから設定ファイルを拾って使っていたのだが、tmuxはデフォでステータスバーも出るしほぼ無設定で使っている。ただしscreen時代からCtrl-tをコマンドのプレフィックスとして使っていたのでその設定と、256色使いたかったのでTERMの設定をした。ホームディレクトリの.tmux.confに設定ファイルを書く
set-option -g default-terminal "screen-256color"
set-option -g default-command zsh
set-option -g prefix C-t
諸事情でログインシェルとターミナルのシェルを変えているので明示的にzshに変えている。
さて、これで大体OKなのだがEmacsがscreen-256colorなるターミナルを知らないので色が8色しか使えない。調べたところlist/term/${TERM}.elを読んで色設定をするらしいが、残念ながらscreenの設定が存在しない。入れようという話も出ているようだがEmacs23では入っていないので、適当に設定をコピペした。つぎを.emacs.elあたりに書いておけば良い。
(defun terminal-init-screen () 
      "Terminal initialization function for screen." 
      ;; Use the xterm color initialization code. 
      (load "term/xterm") 
      (xterm-register-default-colors))
これで色もちゃんと付くようになった。

追記:Emacs24ではscreen.elが追加されたらしい。はやくStableになって欲しい。

2011年11月13日日曜日

C++のドラフトをビルドした話

完全に俺得話。
いろいろ思ってC++の最新のドラフトをゲットしようと思った。で嬉しいことにドラフトはGithub上でホスティングされているので、ビルドしてみた。
環境はXubuntu11.10。gitでcloneするとMakefileがあるので中のコメントを読んで適当にtexliveをapt-getしておく。あとdotファイルのためにgraphvizもインストールしておく。
で、makeしてみたんだがsedがエラーを吐く。どうも"{"や"}"をエスケープしていないのが原因らしい。適当に修正してまたmake。一服しているうちに出来上がりました。
めでたしめでたし

2011年11月11日金曜日

bool型の変換について

もうただの忘備録でござるの巻。
CやC++では0はfalseとして、0以外はtrueとして扱われることは広く知られていることですが、逆にbool -> Integral typeどうなるんじゃらホイ。
Standard conversionにはっきりと書いてありました。
false -> 0
true -> 1
終わり。

2011年10月12日水曜日

GMA500にはまった件

すごく久しぶりにブログ更新。

後輩がArchLinuxをいじっているので僕も入れてみたくなって、家で眠っていたDell inspiron mini12にインストールしてみた。
ところがXがうまく動かない。

このマシンはGMA500という難有りのグラフィックチップが乗っているんだが、最近のLinux Kernel(2.6.29以上?)ではpsb-gfxというドライバが標準で用意されていて、これを使えば2Dは使えるらしい。

ところが、pacmanでxorg-serverとxf86-video-fbdevを入れても動かない!色々試したんだがうまくいかない。資料もない。

Xのlogを見てみると/dev/fb0がないようなので、デバイスファイルを作ってみたがうまくいかない。

ふとlsmod | grep psbとしてみるとpoulsboという名前が…。こいつはGMA500のコードネームで、この名前があるってことは、もしかして2つのモジュールがロードされているのではないかと思い至る。

/etc/modprobe.d/blacklist.listを作成してblacklist poulsboを書いて保存し、startxすると、ビンゴ!起動しました。

ということで、現在のArchではGMA500をpsb-gfxで使う場合poulsboモジュールをロードしないようにしましょう。

2011年7月21日木曜日

Emacs勉強会(仮)

8FでやったEmacs勉強会(仮)の資料をさらしてみる。

2011年6月8日水曜日

flymakeの設定

メモメモ。
どうもGCCのバージョンによって、エラーの出力フォーマットが異なるらしい。
そのため最新のGCCを使っているとflymakeでの出力がすべてエラーとして表示されてしまっていて見にくい。
適当なところに、次の設定を書いとけばOK。
GCC4.6にて確認。
(setq flymake-err-line-patterns
 (cons
  '("\\(.+\\):\\([0-9]+\\):\\([0-9]+\\): \\(.+\\)" 1 2 3 4)
  flymake-err-line-patterns))

2011年6月3日金曜日

C/C++でのvoid*の違い

久々に。
僕のボスがC/C++でvoid*型でのキャストの違いについて指摘するのだけれど、よくわかっていなかった。
int *p = malloc(sizeof(int));
とか書くと、CではOKでC++ではエラーとなる。
Cではこの動作は正しいので確かにエラーではない。が、警告がほしい時もある。
GCCでは-Wc++-compatをオプションに渡せば良い。