zshで正規表現によるマッチ
http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fregex-Module
zsh/regexというモジュールをロードすると,-regex-matchという演算子が使用できるようになる.
$ cat ogya.zsh zmodload zsh/regex if [[ "ogyaaaaaaa" -regex-match "^ogya+$" ]]; then echo "おぎゃああああああ" else echo "え?" fi $ zsh ogya.zsh おぎゃああああああ
LinuxでGrowl
LinuxでもGrowl通知あったら便利だなーと思ってたら作ってる人がいた.
https://github.com/mattn/growl-for-linux
ということで導入ログ.
$ git clone git://github.com/mattn/growl-for-linux.git $ cd growl-for-linux $ ./autogen.sh $ ./configure --prefix=/home/hoge/local $ make && make install $ gol
といったところでこんなエラー
$ gol gol: symbol lookup error: /home/hoge/local/lib/growl-for-linux/display /libnotify_gol.so: undefined symbol: notify_init
ということでlddしてみる.と,どうもlibnotifyがリンクされてない.
よくわからんけどnotify_initはどう見てもlibnotify.soにあるシンボルなので,Makefileをいじってldにlibnotifyをリンクさせる.
--- Makefile.old 2012-11-19 22:00:17.000000000 +0900 +++ Makefile 2012-11-19 22:00:41.000000000 +0900 @@ -209,7 +209,7 @@ INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s LD = /usr/i686-pc-linux-gnu/bin/ld -LDFLAGS = +LDFLAGS = `pkg-config --cflags --libs libnotify` LIBCURL_CFLAGS = LIBCURL_LIBS = -lcurl LIBOBJS =
$ make clean && make && make install $ gol &
ということで無事動いたー.よかったよかった.
Perlでヒートマップが書けるImager::Heatmapをリリースした
http://search.cpan.org/~kawamuray/Imager-Heatmap-0.02/lib/Imager/Heatmap.pm
https://github.com/kawamuray/p5-Imager-Heatmap
Perlでヒートマップを書く手段としては,既にCPANにあるImage::Heatmapが使えそうだけど,いくつかの理由から新たに書きました.
- docみたらなんか複雑
- PerlMagick入れるのがめんどくさい
- 投入予定のシステムが既にImagerを使ってたので,結果がImagerのインスタンスでgetできると便利
- 色合いがいまいち
仕組みとしては,n * m pixelの画像において,挿入される各点について確率密度関数を用いて周辺ピクセルの重みを加算していって,最後にその値をHSV色空間にマップする感じ.
HSV色空間の扱いとか新たな知識を得たし,高速化のためにいろいろ工夫もしたので詳しく書こうと思ったけど,もう眠たくなったのでまた今度にする.
jQueryのhtml()メソッドはjQueryオブジェクトを返すわけじゃない
ので,
var div = $('<div>'); var p = $('<p>').appendTo(div); div.html(div.html() + "aaa"); div.find('p').eq(0) === p; // false
html()メソッドはinnerHTML(テキスト)を返すので,それをセットしたらその時点でDOMツリーは再生成されるので,変数で持ってるpとは別物に差し変わってるんだな.
ALSA Audioがソフトウェアミキシングしてくれなくて1プロセスしか音を出せなかった
ALSA - Gentoo Wikiに従ってALSAを設定したら一度に1プロセスしか音が出せなかったので試行錯誤した話.
状況としては
みたいな.Terminalにはこんなエラーメッセージ.
ALSA lib pcm_dmix.c:862:(snd_pcm_dmix_open) unable to open slave
普段はそんなこと意識しないけど,複数のメディアから流れる音が同時にスピーカーから聞こえるのは,ソフトウェアでミキシングをしてくれているからである.
つまり,上の状態ではミキシングを設定していないので,一度に一つのメディアからの音しか出せず,Youtubeで音を流すとFlashPlayerプロセスがサウンドカードデバイスをロックしちゃうので,後から開いたVLCがサウンドカードデバイスを開けず音がでない,ということだと思う.
で,しばらくgoogleさんに向かって格闘した結果,僕の環境では解が見つかった.~/.asoundrc(ALSAのローカル設定ファイル)に以下を追加でPulse Audio Pluginが有効になってソフトウェアミキシングをしてくれるようになった.
pcm.!default { type pulse } ctl.!default { type pulse }
多分,USEフラグにpulseaudioを入れた状態でalsa系パッケージのemergeをしてる必要がある + media-sound/pulseaudioのインストールも必要だと思う.