color-themeのテーマを全部 Emacs themeフレームワーク向けに移植しました
ちまちま移植していたんですが、全部やってしまおうということで頑張りました
スクリーンショット
画像がたくさんあるので若干注意
https://github.com/emacs-jp/replace-colorthemes/blob/master/screenshots.md
移植したテーマ
- aalto-dark
- aalto-light
- aliceblue
- andreas
- arjen
- beige-diff
- beige-eshell
- bharadwaj-slate
- bharadwaj
- billw
- black-on-gray
- blippblopp
- blue-erc
- blue-eshell
- blue-gnus
- blue-mood
- blue-sea
- calm-forest
- charcoal-black
- clarity
- classic
- comidia
- dark-blue
- dark-blue2
- dark-erc
- dark-font-lock
- dark-gnus
- dark-green
- dark-info
- dark-laptop
- deep-blue
- desert
- digital-ofs1
- emacs-21
- emacs-nw
- euphoria
- feng-shui
- fischmeister
- gnome
- gnome2
- goldenrod
- gray1
- gray30
- greiner
- gtk-ide
- high-contrast
- hober
- infodoc
- jb-simple
- jedit-grey
- jonadabian-slate
- jonadabian
- jsc-dark
- jsc-light
- jsc-light2
- katester
- kingsajz
- late-night
- lawrence
- ld-dark
- lethe
- marine
- marquardt
- matrix
- midnight
- mistyday
- montz
- oswald
- parus
- pierson
- pok-wob
- pok-wog
- ramangalahy
- raspopovic
- renegade
- resolve
- retro-green
- retro-orange
- robin-hood
- rotor
- ryerson
- salmon-diff
- salmon-font-lock
- scintilla
- shaman
- simple-1
- sitaramv-nt
- sitaramv-solaris
- snow
- snowish
- standard-ediff
- standard
- subtle-blue
- subtle-hacker
- taming-mr-arneson
- taylor
- tty-dark
- vim-colors
- whateveryouwant
- wheat
- word-perfect
- xemacs
- xp
おわりに
漏れがあるとか、色が違うとか、移植して欲しいものがある等ありましたら、
githubの issuesまでお願いします.
POSIX::Socketのテストがこける理由
Monoceros等で利用される POSIX::Socketのテストが
こける理由のメモ. RTに登録すべきなんだろうけど、手元の環境ではうまくいかないので
ここにメモっておきます(サーバサイドの問題??).
問題となるテスト
t/10send.tの 2つめのテストが通りません(#2となっているテスト)
sub setsockopt_test($) { my ($buflen) = @_; my $sock; my $ret; $sock = _socket(AF_INET, SOCK_DGRAM, 0) or die "socket: $!\n"; my $rv1 = _setsockopt($sock, SOL_SOCKET, SO_RCVBUF, pack("L", $buflen)); my $rv2 = _getsockopt($sock, SOL_SOCKET, SO_RCVBUF, $ret, 4); _close($sock); return (($rv1 != -1) && ($rv2 != -1) && (unpack("L", $ret) == $buflen*2)); } # 2 ok(setsockopt_test("1000"), "setsockopt/getsockopt test");
問題 1
subsockopt_testの returnの最後の式を見ると, setsockopt(SO_RCVBUF)で設定した値の
2倍の値が getsockoptで取得できることになっていますが、これがまず問題です. 2倍の値を
返すのは Linuxの仕様であり, FreeBSD等他の OSではそのような仕様ではなく,
setsockopt(SO_RCVBUF)で設定したバッファ長がそのまま返ります. なので 2倍の値が返って
くることを期待するのは, Linux以外の環境で動作させる場合良くないでしょう.
問題 2
setsockopt(SO_RCVBUF)に指定するバッファ長が短すぎる問題です.
Linuxのコードを確認したところ, setsockopt(SO_RCVBUF)で設定できる値には
下限があります(procfs等で変更できるかと思われますが, 未確認). 下限以下の
値を設定した場合, それは無視され下限の値の 2倍の値が getsockopt(SO_RCVBUF)で
返ることになります. デフォルトでは下限の値は 1000より大きいので, getsockoptから
返る値は 1000でも 2000でもない値となっています. なので数十KB等のサイズに
するのが妥当でしょう(下限の値をあらかじめチェックするというのが本当は
良いと思います).
問題 1だけでは Linuxはパスしますが, 問題 2もあり, 大半の環境でテストを
パスしないという事態になっているという次第です. Linux::Socketだったら
まああれなんでしょうけど, POSIX::となっているので気になりました.
おわりに
github等にコードが置いてないとレポートがめんどくさいので
なんとかならないものでしょうか・・・。