この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
今年もよろしくお願いします。
PCの接続に使うのをWILLCOMからEMOBILEに変えていて、つながらないかもと思っていたけど、問題なくつながっていた。
ruby 1.9 で String#each はなくなってしまったが、 IO#each や ARGF#each は残っているようだ。
% cat catfn.rb
#!/usr/bin/ruby
ARGF.each do |line|
puts "#{ARGF.filename}:#{ARGF.file.lineno}:#{line}"
end
% ruby catfn.rb catfn.rb catfn.rb
catfn.rb:1:#!/usr/bin/ruby
catfn.rb:2:ARGF.each do |line|
catfn.rb:3: puts "#{ARGF.filename}:#{ARGF.file.lineno}:#{line}"
catfn.rb:4:end
catfn.rb:1:#!/usr/bin/ruby
catfn.rb:2:ARGF.each do |line|
catfn.rb:3: puts "#{ARGF.filename}:#{ARGF.file.lineno}:#{line}"
catfn.rb:4:end
%
今年の目標は出来るだけ毎日更新ということでPC関連以外もちょっと書いてみる。
年末年始に進めようとしていたが、マイクが必須のところが結構あって、電車の中での移動中とかも進めようとすると厳しいところがあった。
GoogleBot に年始にささださんが省略機能をつけてくれたので、「google> nadoka」などの代わりに「g> nadoka」のように書けるようになりました。 別に作成されていた google calc bot や google codesearch bot も取り込まれています。
API が対応しているからと入れてみた google local は日本に対応していないので、あんまり使えませんでした。 google news とかは便利だと思います。
NadokaWiki は句読点をよくみるとどこを誰が書いたのかある程度推測できるかもしれません。
[ruby-dev:39116] のテストを追加するのに、 test/ruby/envutil.rb に assert_in_out_err というのがあって、それを使えばいいかと思ったが、 /:0/ にマッチしないというのが素直に書けそうになかったので、 assert_in_out_err の中で使っている EnvUtil.invoke_ruby を使って書いてみた。
コミットした後で気づいたけど $DEBUG=true の時に出てくる例外発生場所は backtrace じゃなさそう。
ibus-skk を更新したら起動できなくなって困ってしまったので、原因を git bisect で調べてみた。
まず master にいる状態で
とした。
その後、alienで適当debを作成する方法で deb を作成して dpkg -i でインストールした後、ログインし直して試していき、結果に応じて
を繰り返していくと、途中ファイルが変更された状態になっていて
が必要なことがありつつ、以下の変更が原因だとわかった。
% git bisect next
6ae512110d846a6d101a743a72176cbe26fb59c3 is first bad commit
commit 6ae512110d846a6d101a743a72176cbe26fb59c3
Author: Daiki Ueno <ueno@unixuser.org>
Date: Tue Dec 29 15:24:59 2009 +0900
Request the default orientation of the lookup table.
:040000 040000 0df61ec21a0dbd6e5df25c8010a7d050642229b2 8eedc5739ed475d4806a27c81a3dff173dff9e57 M engine
% git bisect log
git bisect start
# good: [81c1230149ac10d748a3541f853aa1b2531fef70] Show the URL of the SKK Project if SKK-JISYO.S is not found.
git bisect good 81c1230149ac10d748a3541f853aa1b2531fef70
# bad: [15922c5577b3887377ae0861c6ed6d62b4fce7cc] Use ibus.ORIENTATION_*.
git bisect bad 15922c5577b3887377ae0861c6ed6d62b4fce7cc
# good: [ca33bf5157cbadaac5f4f2f52d912240d0381716] Lower the preference rank from 99 to 70 so that IBus-Anthy is default.
git bisect good ca33bf5157cbadaac5f4f2f52d912240d0381716
# bad: [6ae512110d846a6d101a743a72176cbe26fb59c3] Request the default orientation of the lookup table.
git bisect bad 6ae512110d846a6d101a743a72176cbe26fb59c3
# good: [f0ebaaac8cc03459c5cf74761dcbde62bb08e23c] Move acceptable keys check from engine.py to skk.py.
git bisect good f0ebaaac8cc03459c5cf74761dcbde62bb08e23c
# good: [1c5388f8b65b9afee06c9a01324fc2b5aab31c91] Call emacsclient if the candidate string is "(...)".
git bisect good 1c5388f8b65b9afee06c9a01324fc2b5aab31c91
# good: [d2f741450ba0b7128720206cac4cf0653893f3aa] Done.
git bisect good d2f741450ba0b7128720206cac4cf0653893f3aa
# good: [d4fa90dbbbb8affd4b53b0df715439a40f3a985e] Align candidates to the page_size if pagination is active.
git bisect good d4fa90dbbbb8affd4b53b0df715439a40f3a985e
# good: [d4fa90dbbbb8affd4b53b0df715439a40f3a985e] Align candidates to the page_size if pagination is active.
git bisect good d4fa90dbbbb8affd4b53b0df715439a40f3a985e
%
IRC で報告してみると git の ibus じゃないと ibus.ORIENTATION_* が定義されてないということで直してもらえた。
また、調査の仕方として、ibus のアプレットを終了して、ibus-daemon --verbose で再起動してみればどこで落ちているかなど例外の情報も見えるということを教えてもらった。
% ibus-daemon --verbose
/usr/share/ibus/ui/gtk/candidatepanel.py:193: DeprecationWarning: Use the new widget gtk.Tooltip
self.__tooltips = gtk.Tooltips()
/usr/share/ibus/ui/gtk/candidatepanel.py:243: DeprecationWarning: Use the new widget gtk.Tooltip
self.__tooltips.set_tip(self.__aux_label, "Aux string")
/usr/share/ibus/ui/gtk/candidatepanel.py:262: DeprecationWarning: Use the new widget gtk.Tooltip
self.__tooltips.set_tip(self.__prev_button, "Previous page")
/usr/share/ibus/ui/gtk/candidatepanel.py:267: DeprecationWarning: Use the new widget gtk.Tooltip
self.__tooltips.set_tip(self.__next_button, "Next page")
(ibus-daemon:30206): IBUS-WARNING **: org.freedesktop.DBus.Python.AttributeError: Traceback (most recent call last):
File "/usr/lib/pymodules/python2.6/dbus/service.py", line 702, in _message_cb
retval = candidate_method(self, *args, **keywords)
File "/usr/lib/pymodules/python2.6/ibus/factory.py", line 68, in CreateEngine
engine = self.__factory.create_engine(engine_name)
File "/usr/share/ibus-skk/engine/factory.py", line 56, in create_engine
return engine.Engine(self.__bus, "%s/%d" % (self.ENGINE_PATH, self.__id))
File "/usr/share/ibus-skk/engine/engine.py", line 119, in __init__
self.__lookup_table.set_orientation(1)
AttributeError: 'LookupTable' object has no attribute 'set_orientation'
^C
Traceback (most recent call last):
File "/usr/share/ibus-skk/engine/main.py", line 105, in <module>
main()
File "/usr/share/ibus-skk/engine/main.py", line 102, in main
launch_engine(exec_by_ibus)
File "/usr/share/ibus-skk/engine/main.py", line 62, in launch_engine
IMApp(exec_by_ibus).run()
File "/usr/share/ibus-skk/engine/main.py", line 55, in run
self.__mainloop.run()
KeyboardInterrupt
Traceback (most recent call last):
File "/usr/share/ibus/ui/gtk/main.py", line 80, in <module>
main()
File "/usr/share/ibus/ui/gtk/main.py", line 76, in main
launch_panel()
File "/usr/share/ibus/ui/gtk/main.py", line 47, in launch_panel
UIApplication().run()
File "/usr/share/ibus/ui/gtk/main.py", line 42, in run
gtk.main()
KeyboardInterrupt
この後、「git checkout master」しても zsh の vcs_info で (git)-[master|bisect] の bisect の消えなくてどうすればいいのか困ってしまったが、「git bisect reset」で消すことが出来た。
rsync を使ったバックアップ場所へコピーするのに、最初は svn-hot-backup を使おうかと思ったが、 rsync 側で --link-dest を使って古いものが残るので不要だと思ったので、「svnadmin hotcopy」を直接使うことにした。
svn_hot_backup_all () {
cd /srv/svn
for svn_repo_dir in */*; do
if [ -f "$svn_repo_dir/format" ]; then
svnadmin hotcopy "$svn_repo_dir" "$BACKUP_DIR/$svn_repo_dir"
fi
done
}
まとめて設定できるものがないか、頑張って探してみたところ、 http://svnchecker.tigris.org/ とその後継の http://repoguard.tigris.org/ というのを見つけたが、 repoguard は使い方が良くわからず、 svnchecker は挙動が微妙なこと ( https://thomas.apestaart.org/thomas/trac/wiki/5Minutes/svnchecker の手順を試してみると pylint test.py を直接実行したときのメッセージが svn クライアント側に出てこない) が気になったので、まだ使わないことにした。
rails:3357を見てherokuを試してみようと思って、何を作るのか悩んで、とりあえず Tropy クローンを作ってみることにした。
そして出来たものは RoR ということで r をつけて Tropyr という名前にしてみた。
実際に動かしているのは http://tropyr.heroku.com/ で、ソースは http://github.com/znz/tropyr で公開した。
苦労した点としては ActiveRecord で自動で振られる id ではなく pageid という ActiveSupport::SecureRandom.hex で生成した文字列で識別しようとしたため、 config/routes.rb で map.resources と同じようなことを個別に定義しないといけなくなって、 POST や PUT に対応するものは「:conditions => { :method => :put }」などをつければいいとわかって
map.random '', :controller => "tropies", :action => "index"
map.with_options :controller => "tropies", :pageid => /[0-9a-f]{32}/ do |t|
t.tropy ':pageid.:format', :action => "show"
t.edit_tropy 'e/:pageid.:format', :action => "edit"
t.connect ':pageid.:format', :action => "update", :conditions => { :method => :put }
end
map.with_options :controller => "tropies" do |t|
t.new_tropy 'c.:format', :action => "new"
t.tropies '.:format', :action => "create", :conditions => { :method => :post }
end
としてみたら、 GET 用だけのつもりの定義を上の方に書いていると POST や PUT の時もそちらにいってしまったので、
map.random '', :controller => "tropies", :action => "index", :conditions => { :method => :get }
map.with_options :controller => "tropies", :pageid => /[0-9a-f]{32}/ do |t|
t.tropy ':pageid.:format', :action => "show", :conditions => { :method => :get }
t.edit_tropy 'e/:pageid.:format', :action => "edit"
t.connect ':pageid.:format', :action => "update", :conditions => { :method => :put }
end
map.with_options :controller => "tropies" do |t|
t.new_tropy 'c.:format', :action => "new"
t.tropies '.:format', :action => "create", :conditions => { :method => :post }
end
のように GET も明示的に指定するか
map.with_options :controller => "tropies", :pageid => /[0-9a-f]{32}/ do |t|
t.edit_tropy 'e/:pageid.:format', :action => "edit"
t.connect ':pageid.:format', :action => "update", :conditions => { :method => :put }
t.tropy ':pageid.:format', :action => "show"
end
map.with_options :controller => "tropies" do |t|
t.new_tropy 'c.:format', :action => "new"
t.tropies '.:format', :action => "create", :conditions => { :method => :post }
end
#map.resources :tropies, :as => "t", :only => [:create, :update]
map.random '', :controller => "tropies", :action => "index"
のように汎用的な方を後ろに持って行かないとダメだった。
リモートのマシンで、iptablesでなんかいじる前に保険をかけておく - (ひ)メモやリモートでこわいことをやるを見て以前書いたiptables-applyはdebian独自なのかが気になって調べてみたところ、iptables自体に1.4.0で追加されているようだったので、新しいiptablesが入っていれば他のディストリビューションでも使えそうだと言うことがわかった。
[ruby-dev:40026]の話をみてUNIX系OSだとqmailのRELAYCLIENTのように空の環境変数でも設定されていることに意味があるものとして使われていたことがあったのを思い出した。
Windowsだと「set FOO=」のように環境変数を削除するので、空の環境変数と設定されていない状態は普通区別しないように見える。
gem update して rack が 1.1.0 にあがったら radiant が動かなくなった ( Re: [Radiant] Rack 1.1.0 と同じ?) ので、とりあえず rack 1.1.0 をアンインストールして rack 1.0.1 だけに戻して解決した。
etch 環境から lenny 環境にあげて tdiary に問題がおきないか調べるために wget しておいたファイルを git に入れて git diff で比較してみたところ、改行の変化でうまくいかなかった。
「git diff --ignore-all-space」とか「git diff --color-words」でもいまいちだったので、 http://git.or.cz/gitwiki/GitTips の git-oodiff を参考にして「odt2txt」を「ruby -e 'gets(nil).delete(" \t\r\n").gsub(/>/, ">\n").display'」にして「GIT_EXTERNAL_DIFF=./my-diff git diff」のように試してみたところ、非常にわかりにくい diff になってしまったけど、余分な差分は減らすことができた。
気がつくと何も流れてこないようになっていたので検索してみつけた http://twitter.com/cho45/tig-rb からたどって http://twitter.com/cisc/status/7703706925 http://twitter.com/cisc/status/7703719051 の修正をしてしのいだ。
後で git pull をするとちゃんと修正されていた。
uuuu用にハードディスクが故障しているノート PC を netboot で youtube を再生できる環境にした。
最初は karmic の LTSP で試していたが ltsp-localapps や端末側への pulseaudio の設定がうまくいかなくてあきらめた。(gdm の起動時の音がなるのにログイン後は mixer の対象として dummy device しかでてこなかった。)
そこでもっと素直な環境として Debian の live-helper を使ってみることにした。
まず最初にちゃんと起動できることを確認するために
であまりカスタマイズはせずに以下のように試してみた。
/etc/exports に
/srv/nfs/debian-live *(ro,sync,no_subtree_check,no_root_squash)
を追加して
% sudo exportfs -av
で反映。(ro なので他のオプションなどは適当に設定)
karmic の live-helper だと「debian-live/i386/boot-screens/*」の include のパスがおかしかったので、それをなんとかしたりしたら起動できた。
キーボード設定などを追加したり、BIOS の時計がローカルタイムのようなので utc=no にしたり、 live helper を動かすのを karmic (live-helper 1.0.5-1, live-initramfs 1.157.2-1) から sid (live-helper 2.0~a3-1, live-initramfs 1.157.4-2) に変えたりした。
キーボード設定は「keyb=jp106」と書いてあるものもあったが「keyb=jp kmodel=jp106」じゃないとダメだった。 sid の live-helper では lh_config などがなくなっていて「lh config」などのようにしないとダメになっていた。 curl は http://bts.vinelinux.org/guest.cgi?project=wishes&action=view_report&id=178 を参考にして後述の libflashplayer.so のために追加した。 日本語関連はとりあえず表示が出来ればいいかということで ttf-vlgothic だけ入れて入力関係は入れなかった。
libflashplayer.so はライセンスの都合があるので、以下のようなシェルスクリプトを用意して別途インストールすることにした。
% cat /srv/nfs/debian-live/install-libflashplayer.sh #!/bin/sh set -ex wget -N http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz mkdir -p $HOME/.mozilla/plugins tar xf install_flash_player_10_linux.tar.gz mv libflashplayer.so $HOME/.mozilla/plugins %
14日はLLVM勉強会梅田 - Low Level Virtual Machine Workshop Osaka Umeda, Japanだった。
そのために LLVM (バージョン2.6以上) が入った netboot のイメージを作ろうと思って、 lenny だと古いので squeeze や sid で作ろうとしたが、sid は「E: Couldn't find package aufs-modules-2.6-686」で失敗して squeeze は「E: Couldn't find package squashfs-modules-2.6-686」で失敗してしまった。 もうちょっと試行錯誤が必要そう。
Getting the source - OpenOffice.org Wiki を参考にして、まず
mkdir ~/OOo cd ~/OOo hg clone http://hg.services.openoffice.org/DEV300 DEV300
でソースを取得した。
次に Building on Linux - OpenOffice.org Wiki を参考にして以下のようなシェルスクリプトを作成してビルドした。 configure のところでライブラリなどが不足しているとメッセージが出るので、それに従って不足しているパッケージをインストールしたり、シェルスクリプトの中でやっているようにファイルをダウンロードしたりすると configure が最後まで進んだ。 Wiki の方に書いてある (コメントアウトしている方の) 引数だとパッケージにないものまで要求されたので (何だったのかメモし忘れ)、あきらめて少なめのオプションにしようと思って --with-use-shell=bash だけにした。
% cat build-ooo.sh #!/bin/sh set -ex cd $(dirname $0) export CC='ccache gcc' CXX='ccache g++' [ -d BUILD300 ] || time hg clone DEV300 BUILD300 [ -f unowinreg.dll ] || wget -N http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll cp -p unowinreg.dll BUILD300/external/unowinreg/unowinreg.dll [ -f seamonkey-1.1.14.source.tar.gz ] || wget -N ftp://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/1.1.14/seamonkey-1.1.14.source.tar.gz cp -p seamonkey-1.1.14.source.tar.gz BUILD300/moz/download/seamonkey-1.1.14.source.tar.gz cd BUILD300 #./configure --with-use-shell=bash --with-system-libs --without-system-jars --without-system-icu --without-system-agg --without-system-lpsolve --without-system-mspack --disable-mozilla time ./configure --with-use-shell=bash time ./bootstrap case $(uname -m) in x86_64) source ./LinuxX86-64Env.Set.sh ;; *) source ./LinuxX86Env.Set.sh ;; esac time dmake
apache の古い設定を引き継いでいるファイルを見ていると「<Directory proxy:*>」で許可している設定があったが、この書き方は apache1 の頃のものらしく、 apache2 では「<Proxy *>」を使うようだ。 他の設定ファイルをみてみると「<Proxy http://localhost:8081/VirtualHostBase/http/*>」のようにもっと制限しているものもあった。
(少なくとも karmic で) apt での翻訳された文字列の出力の行の折り返しの処理がおかしくて、 UTF-8 の文字の途中でも折り返されてしまって壊れてしまう。 そこで適当なワンライナーで直す処理を書いてみた。
% apt-cache show apt|ruby-trunk -Ku -e '$<.each_line{|x|p x}'
"Package: apt\n"
"Priority: important\n"
"Section: admin\n"
"Installed-Size: 5244\n"
"Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>\n"
"Original-Maintainer: APT Development Team <deity@lists.debian.org>\n"
"Architecture: i386\n"
"Version: 0.7.23.1ubuntu2\n"
"Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)\n"
"Provides: libapt-pkg-libc6.10-6-4.8\n"
"Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)\n"
"Recommends: ubuntu-keyring\n"
"Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt\n"
"Filename: pool/main/a/apt/apt_0.7.23.1ubuntu2_i386.deb\n"
"Size: 1685688\n"
"MD5sum: a9802ae4b51307bb25daf8a6075211fe\n"
"SHA1: b86dc69f84846c4b54606a5cd2e337ce4091e59e\n"
"SHA256: e7c06e4a71030790b1ba64a98076956a3ed68ba6d75f9ae83dafc5d83d366004\n"
"Description-ja: dpkg の高機能フロントエンド\n"
" Debian の dpkg\n"
" パッケージマネージャ用次世代フロントエンドです。 \xE3\n"
" \x82\xA4ンストールやアップグレードを、シンプルかつ安全に\n"
" 行う apt-get ユーティリティと APT dselect\n"
" メソッドを提供しています。\n"
" .\n"
" APT は、完全なインストール順序付けや、複数の取得源\xE3\n"
" \x82\x92設定できるなど、\n"
" 他にはない特徴を持っています。apt-doc\n"
" のユーザガイドをご覧ください。\n"
"Bugs: https://bugs.launchpad.net/ubuntu/+filebug\n"
"Build-Essential: yes\n"
"Origin: Ubuntu\n"
"Task: minimal\n"
"\n"
% apt-cache show apt|ruby-trunk -Kn -e '$<.read.gsub(/(?<=[\xc0-\xfd])\s+(?=[\x80-\xbf])/n, "").display'
Package: apt
Priority: important
Section: admin
Installed-Size: 5244
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: APT Development Team <deity@lists.debian.org>
Architecture: i386
Version: 0.7.23.1ubuntu2
Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
Provides: libapt-pkg-libc6.10-6-4.8
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)
Recommends: ubuntu-keyring
Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
Filename: pool/main/a/apt/apt_0.7.23.1ubuntu2_i386.deb
Size: 1685688
MD5sum: a9802ae4b51307bb25daf8a6075211fe
SHA1: b86dc69f84846c4b54606a5cd2e337ce4091e59e
SHA256: e7c06e4a71030790b1ba64a98076956a3ed68ba6d75f9ae83dafc5d83d366004
Description-ja: dpkg の高機能フロントエンド
Debian の dpkg
パッケージマネージャ用次世代フロントエンドです。 インストールやアップグレードを、シンプルかつ安全に
行う apt-get ユーティリティと APT dselect
メソッドを提供しています。
.
APT は、完全なインストール順序付けや、複数の取得源を設定できるなど、
他にはない特徴を持っています。apt-doc
のユーザガイドをご覧ください。
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Build-Essential: yes
Origin: Ubuntu
Task: minimal
%
改行まで消さないといけない都合上、一気に読み込んで間のスペースを消すようにしてみた。 これだと ruby 1.9 必須になってしまうので、「(?<=...)」を使わないように書き換えてみた。
% ruby -e 'puts "\xE3\n \x82\xA4"' | ruby -Kn -e '$<.read.gsub(/([\xc0-\xfd])\s+(?=[\x80-\xbf])/){$1}.display'
イ
コードの色つけの都合で http://d.hatena.ne.jp/znz/20100119 の方に書いた。
IRC の IRCnet の方で動かしている bot で FULLWIDTH TILDE か WAVE DASH かわからないが、ほとんどのクライアントで文字化けするシーケンス(ログを lv コマンドで見ると化けていなかったので、化けないクライアントもありうる)が送られることがあったので、調べてみた。
「-j」オプションで変換した結果を dump してみると「"\e$(D\"7\e(B"」になっていて、これは Wikipedia の 表3 7ビット符号のマルチバイト用キャラクタセットでの文字集合の選択 によると ISO-2022-JP-1 らしいということで、「-j」と同じ意味の「--oc=iso-2022-jp」も含めていくつか試してみると以下のような変換結果になった。 「--numchar-input」を使っているのは入力される文字をはっきりさせるためで、本質には無関係。
IRC できいてみたところ「CP50221使えってこと」らしいので、いくつかの bot では「-j」のかわりに「--oc=CP50221」を使うことにした。
% ruby -r nkf -e 'puts NKF.nkf("-j --numchar-input","~").dump'
"\e$(D\"7\e(B"
% ruby -r nkf -e 'puts NKF.nkf("--oc=iso-2022-jp --numchar-input","~").dump'
"\e$(D\"7\e(B"
% ruby -r nkf -e 'puts NKF.nkf("--oc=iso-2022-jp-1 --numchar-input","~").dump'
"\e$B!A\e(B"
% ruby -r nkf -e 'puts NKF.nkf("-j", NKF.nkf("-s --numchar-input","~")).dump'
"\e$B!A\e(B"
% ruby -r nkf -e 'puts NKF.nkf("--oc=CP50221 --numchar-input","~").dump'
"\e$B!A\e(B"
% ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2009.10
%
いつものように CAcert.org で発行してもらっている証明書の更新のついでに一部のサーバは openssl genrsa で 4096 で生成した。
数値は2の累乗しかダメかと思っていたら、適当に「openssl genrsa -out hoge 1234」とかでも生成できるらしい。
sylpheed の ML で gravatar の話を見て wanderlust でも表示したいと思って gravatar.el を探したら http://gist.github.com/15087 は gnus 依存で困ったが、よく見ると fork の http://gist.github.com/18015 では gnus 依存を分離していた。
しかし、fork 元の方が更新されて機能が増えていたので、別途 fork して merge し直して wl-gravatar.el を作成した。
成果は http://gist.github.com/283328 。
% git clone git@gist.github.com:283328.git gravatar-el
Initialized empty Git repository in /srv/nfs/homes/kazu/Share/wc/gist/gravatar-el/.git/
cd gremote: Counting objects: 18, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 18 (delta 5), reused 18 (delta 5)
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (5/5), done.
% cd gravatar-el
% git remote add 15087 git://gist.github.com/15087.git
% git remote add 18015 git://gist.github.com/18015.git
% git pull 18015 master
remote: error: object directory /data/git/repositories/3/3d/ba/88/gist/15087.git/objects does not exist; check .git/objects/info/alternaremote: tes.
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 12 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (12/12), done.
From git://gist.github.com/18015
* branch master -> FETCH_HEAD
Auto-merged gravatar.el
CONFLICT (content): Merge conflict in gravatar.el
Automatic merge failed; fix conflicts and then commit the result.
% emacs *.el
% git commit
Merge branch 'master' of git://gist.github.com/18015
Conflicts:
gravatar.el
#
# It looks like you may be committing a MERGE.
# If this is not correct, please remove the file
# .git/MERGE_HEAD
# and try again.
#
# Please enter the commit message for your changes.
# (Comment lines starting with '#' will not be included)
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: gnus-gravatar.el
# modified: gravatar.el
#
Created commit d5f6d7b: Merge branch 'master' of git://gist.github.com/18015
% git push
Counting objects: 20, done.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 3.14 KiB, done.
Total 16 (delta 7), reused 0 (delta 0)
To git@gist.github.com:283328.git
576b19f..d5f6d7b master -> master
% git add wl-gravatar.el
% git commit -m "add wl-gravatar.el"
Created commit 400a6c7: add wl-gravatar.el
1 files changed, 56 insertions(+), 0 deletions(-)
create mode 100644 wl-gravatar.el
% git push
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.21 KiB, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gist.github.com:283328.git
d5f6d7b..400a6c7 master -> master
%
AMD Opteron(tm) Processor 144 という CPU のマシンで amd64 の lenny を入れて VMware Server 2.0.2 を入れてみたところ、ゲスト OS に amd64 の OS が動かなかった。
VMware KB: Hardware and firmware requirements for 64bit guest operating systems によると revision D 以降でないとダメらしく、いろいろ調べた結果、
とわかって、わかりやすい違いは Socket ということで sudo lshw の出力のマザーボードの方の型番でも調べてみると http://www.tyan.com/archive/products/html/tomcatk8s_spec.html でダメな方の CPU しかのらないマザーボードと言うことで、ダメということがわかった。
気になっていたので一部のサーバで CAcert.org の代わりとして使ってみた。
Firefox だとなぜかうまくいかなかくて、 google-chrome だと証明書のバックアップ方法がわからなかったので、 Opera でやってみた。
Opera だとルート証明書が入っていなかったので、毎回ブラウザ起動後の初回接続で確認が必要だったが、個人証明書を発行してもらったり、CSR を送信してしばらくまって証明書をダウンロードしたりするのは問題なくできた。
最初のユーザ登録や証明書の発行のところはちゃんと誰かが確認しているらしく、メールを待ってから続きという感じだった。
サーバへの設定は CAcert.org と違って中間証明書の設置も必要のようなので、FAQ を見て設定したが、中間証明書の設定がちゃんと設定出来ているかどうかの確認方法はよくわからなかった。
ほとんど使ったことがない Mac OS X で 端末上で動くプログラムを通知スペースに入れる のような感じのことをしたかった。
いろいろ調べた結果、結局以下のようなファイルを command という拡張子で作成して実行属性をつけるということにした。
osascript -l AppleScript -e 'tell application "Terminal" set miniaturized of front window to true end tell' ここでデーモン的なプログラムをフォアグラウンドで起動 # http://apple.sysbio.info/~mjhsieh/archives/000328.html echo "Please close this terminal window!" osascript -l AppleScript -e 'tell Application "Terminal" to close every window w hose contents contains "Please close this terminal window!"' &
参考にしたサイト:
Failure: test_segv_test(TestRubyOptions) は同じ環境なのに chkbuild でビルドしている方は Failure にならなくて $HOME 以下に入れている方だけで起きていた。 他にもいくつかの環境で試しても再現しなかったので、再現するうちに調べた方が良さそうと思ったら、結構簡単に直せたので良かった。
SEGV のテストってどうやってるのかと思ったら、"Process.kill :SEGV, $$" で自分に SIGSEGV を送りつけているだけだった。
wl-gravatar.el で画像を入れているバッファで flyspell-buffer を実行すると画像の中でなぜかひっかかることがあったので悩んでいたが、(insert-image-file filename) を (insert-image (create-image filename)) に変えると直った。
違いがよくわからないが、画像の上で C-x = (what-cursor-position) などで確認すると画像の内容そのままが埋まっていたのが半角スペース1個に変わって問題が起きなくなったように見える。
Debian -- News -- Debian GNU/Linux 5.0 updated ということで 5.0.3 から 5.0.4 にあがったので、更新していった。
少し前に etch から lenny にあげたサーバがあるけど、もうちょっと待っておけば再起動の回数が減らせたのに、と思ってしまった。