この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
帰省の途中に途中下車すれば交通費がかからないということで、Scala勉強会@岡山-1に参加してみた。
Scalaは言語的にはおもしろくて、インタプリタもirb的に使えておもしろそうな感じだった。 クラスライブラリはほとんどがJavaのものをそのまま使うという感じで、今のところはJavaを知らないと使いこなすのは難しそうだと感じた。
地震情報 - livedoor 天気情報のRSSから震度3以上の場合のみ抜き出したいという話。
rubyで処理しようと思って、まずRSS::Parserを使ってみたけど、ldWeather:earthquakeがとれずにあきらめ。 RSSを処理しようと思ってRSS::Parserを使おうとすると使えないことが多いのはなぜだろう。 普通のRSSはRSS Readerで読むからRSS::Parserで処理したいと思うことが滅多にないんだけど、そういうRSSなら便利なんだろうか。
結局RSS::ParserはあきらめてREXMLを使ってXPathで処理した。 「5弱」などの強弱がついた場合にどうなるのかわからなかったので、「5+」のようになっても対応できるように1と2の場合をnotで除くようにしてみた。 ldWeather:earthquake要素の存在チェックも入れているのは広告itemを除くため。
#!/usr/bin/ruby
require 'rexml/document'
require 'open-uri'
uri = ARGV.shift || 'http://weather.livedoor.com/forecast/rss/earthquake.xml'
doc = open(uri) {|f| REXML::Document.new(f) }
doc.elements.each("//item[ldWeather:earthquake and not(ldWeather:earthquake/@maximumintensity<3)]") do |e|
#puts e
puts e.elements["description/text()"]
puts e.elements["link/text()"]
puts Time.parse(e.elements["pubDate/text()"].to_s)
end
opensslの方のDSAではdowkdというPerlスクリプトでチェックするようになっているが、DSA-1576でopenssh-blacklistというパッケージが増えていて、sshの鍵についてはssh-vulnkeyというコマンドでもチェックできるようになっている。
自分が管理しているサーバは、sarge以前にインストールして生成された鍵を使っているものが多いので、グローバルにおいているサーバへの影響は少なそう。 LAN内においているマシンはetch以降をインストールしたものがいくつかあるので、そちらは思いっきり影響を受けていた。
Creative Commonsによるオープンソース・ソフトウェアという嘘を書いているサイトもあるけど、ライセンスはGPL2だった。 Passenger users guideのライセンスをみて勘違いしたのではないかと予想。
インストールもpassenger-install-apache2-moduleを実行したときに「apt-get install apache2-prefork-dev」を実行しろとか具体的にどうすればいいのかが出てきて簡単だった。
設定はとりあえず以下のような感じでRailsMaxPoolSizeはちょっと減らしてRailsPoolIdleTimeは長めにしてみた。
% cat /etc/apache2/conf.d/mod_rails.conf
# vim: set filetype=apache:
LoadModule passenger_module /opt/ruby-1.8.6/lib/ruby/gems/1.8/gems/passenger-1.0.5/ext/apache2/mod_passenger.so
RailsSpawnServer /opt/ruby-1.8.6/lib/ruby/gems/1.8/gems/passenger-1.0.5/bin/passenger-spawn-server
RailsRuby /opt/ruby-1.8.6/bin/ruby-1.8.6
RailsAutoDetect off
RailsMaxPoolSize 10
RailsPoolIdleTime 1200
% cat /etc/apache2/sites-available/hoge.example.jp
# vim:set filetype=apache:
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName hoge.example.jp
DocumentRoot /home/kazu/rails_apps/hoge/public
RailsBaseURI /
<Directory /home/kazu/rails_apps/hoge/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/hoge.example.jp_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/hoge.example.jp_access.log combined
</VirtualHost>
%
バックアップ用のrsyncがetchで生成した鍵を使っていて、新しいsshdにつなごうとしても拒否されて、サーバ側のログにblacklistedと出ていた。
lenny(testing)でopen-vm-toolsを入れていると、pcnet32を削除してvmxnetに入れ替えるところでネットワークが切れてしまう。
ログインした後にnm-appletをクリックして有線ネットワークを選べばつながるが、毎回なので面倒で困る。
#479090 - open-vm-tools: replacing vmxnet/pcnet32 drivers on start/stop - network loses configuration - Debian Bug report logsの4に近い対処としてdebian/rulesのdh_installinitに「-u"start 39 S ."」という引数をつけて「dch -l local」でローカルパッケージを作って、(/etc/rc?.dのシンボリックリンクを消すために)open-vm-toolsを一度purgeして、ローカルパッケージを入れて試してみたところ、networkingでの接続はうまく動くようになったが、その後でNetworkManagerが起動するとupしているのにつながっていない状態になるのは直らなかった。(/etc/default/NetworkManagerを作ってその中でexitするようにして起動しないようにしたり、NetworkManager起動前にifconfigを出力するようにしたりして確認)
NetworkManagerはdbus経由でいろいろやっていて、dbus-monitorというコマンドでdbusに流れているメッセージを調べられると言うことがわかったが、「sudo dbus-monitor --system」としてもNetworkManager関連のメッセージは見えなかった。
調べてみるとeavesdropの設定が必要とわかったので、「/etc/dbus-1/system.d/NetworkManager.conf」に以下のように「<allow eavesdrop="true"/>」を追加してroot権限ならdbus-monitorでのぞけるようにした。
<policy user="root">
<allow own="org.freedesktop.NetworkManager"/>
<allow send_destination="org.freedesktop.NetworkManager"/>
<allow send_interface="org.freedesktop.NetworkManager"/>
<allow eavesdrop="true"/>
</policy>
この状態でnm-appletをクリックして「dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.setActiveDevice objpath:/org/freedesktop/NetworkManager/Devices/eth0」というコマンドで同じことが出来ることがわかった。
objpathは「dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.getDevices」の出力で調べられる。
結局NetworkManagerの起動時にネットワークが切れてしまう原因はまだわかっていない。
前田修吾さんと青木峰郎さんがリファレンスマニュアルについての話をするので、都合がつくようなら参加してほしいということだったので、懇親会に参加した。 直接懇親会に行くのは場所がわからないので、勉強会の方も最後の方だけ参加した。
内容についてはログをとっていたyharaさんがMLに出してくれるはず。
yharaさんがいなくなってから話した内容として、redmineの話があって、るりまのチケット管理にるりまWiki #2 - FrontPageを使っているけど、redmineに移動するといいのではないかという話になった。 利点としては、疑問点などをコミッターの人などにもassign出来ていいのではないかという話などがあった。
redmineからのメールのSubjectがUTF-8のQエンコードになっていて、Wanderlustで文字化けしていたので、原因を調べてみた。
bootchartについて調べてみた。仕組みとしては以下のような感じだった。
/usr/bin/bootchartはjavaを使っていて、etchのgijの「/usr/lib/jvm/java-gcj/jre/bin/java」だとログによっては「java.lang.OutOfMemoryError」で変換できなかったので、「sudo /usr/sbin/update-alternatives --config java」でsun-java5-jreの「/usr/lib/jvm/java-1.5.0-sun/jre/bin/java」に変更したら、簡単に変換できた。
% bootchart bootchart.tgz
Parsing bootchart.tgz
GC Warning: Repeated allocation of very large block (appr. size 75501568):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 113250304):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 150999040):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 18878464):
May lead to memory leak and poor performance.
GC Warning: Out of Memory! Returning NIL!
Exception in thread "main" java.lang.OutOfMemoryError
<<No stacktrace available>>
USBRH ドライバではなく USB HID ドライバがロードされてしまっているの対策として早めにusbrhをロードするようにした。