RSS4J がうるさいのでパッチを当てました

RSS フィードを読むのに RSS4J(要 Xerces) を採用したのですが、なぜか

RssParser.parseRss( … );

を呼び出す都度、

date: 2006-11-24T14:09:40+09:00

のように、RSS feed 中の日付を出力するようになっていました。
煩いし、これはちょっと都合が悪いなので調べてみると…

$ grep -rn System.out.print rss4j
rss4j/src/churchillobjects/rss4j/model/DateLanguageUtil.java:202: System.out.println(“\n\n date: “+date);

と、churchillobjects.rss4j.model.DateLanguageUtil で System.out.println していたので、この行をコメントアウトし、このクラスだけ再コンパイルして対応しました。一応変更適用済のバイナリを置いておきますので、よろしければどうぞ。
 
rss4j092p.zip
 
参考:
– Greenery – RSS4j v0.92-JAVA/RSS4j-Wiki
RSS4J, Feed Parser, Informa = Java の RSS ライブラリ(Goodpic)
@IT:Java TIPS — サーブレットでRSSフィールドを配信する

HTTP 接続の定石

よく忘れるので簡易コードメモ。
もちろんこのままでは動作しません。

final java.net.URL url = new java.net.URL(String sUrl); // 接続先指定(HTTPS, HTTP いずれも可)
final java.net.HttpURLConnection con = (java.net.HttpUrlConnection) url.openConnection(); // 接続開始
 
/* 必要であればここで con に対して接続設定(ex. User-Agent, キャッシュなど) */
 
// 以下(リクエスト送信と)結果取得
final int code = con.getResponseCode(); // 結果コード取得
if( code < 200 && 300 <= code){
    return; // HTTP レスポンスコードが 2XX 以外なら続行不可
}
 
// ページデータ取得(ヘッダ除く)
final BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), “JISAutoDetect”);
 
String line;
while(null != (line = reader.readLine())){
    System.out.println(line);
}

 
参考:
java.net.HttpURLConnection
HTTP Status Code

文字エンコードを自動判別する

文字コードが不明な文字列を自動判別して変換するには、 JISAutoDetect を文字コードとして指定します。

// InputStreamReader の例
final BufferedReader reader =
        new BufferedReader(new InputStreamReader(in, “JISAutoDetect”)); // コンストラクタの第二引数で文字コードとして JISAutoDetect を指定
while(null != (line = reader.readLine())){
    System.out.println(line);
}

// String の例
final String src = “あいうえお”; // 任意の文字コードの文字列
final String str = new String(src.getBytes(), “JISAutoDetect”); // 文字コード自動変換
System.out.println(“str”);

 
JavaFAQ の S146-Q07 の前後あたりが参考になると思います。

ハードディスクの中身を誤って消した場合のファイル復旧方法

http://opentechpress.jp/article.pl?sid=06/09/09/1417236&from=rss
 
PhotoRec というツールを使ってファイル復元を行う方法を書いている。Windows (9x,Dos,NT,XP), Linux, Mac OS X で利用可能。
参考:
– Windows で PhotoRec
 http://oss.moongift.jp/review/i-1587.html

画像の伸縮

1. 単純に -resize を使った場合、アスペクト比を維持する。

convert from.png -resize 600×100 to.png

結果: from.png が 1000×1000 の場合、 100×100 に変換される
 
2. サイズ指定の最後に ! を付与すると、アスペクト比を無視する。

convert from.png -resize 600×100\! to.png

結果: 元のピクセルサイズによらず、600×100 になる。
 
などなど。
 
なお、単純に伸縮するだけでフィルタ処理( -filter, -support)をしないなら、-scale のほうが速いようです。

convert from.png -scale 600×100\! to.png

 
参考:
– ブログの木村研 – ImageMagick Tips#03 オプションでさらに便利に
ImageMagick – Command-line Options#resize

権限があっても削除/変更不可能にする

Linux なら chattr, FreeBSD なら chflags を使うことで、 root 権限でも rm -f で削除不可にすることが可能です。
たとえば /bin ディレクトリ以下すべてを削除不可能にするには

# Linux
chattr +i /bin

 

# BSD
chflags schg /bin/* /bin

 
とすれば削除できなくなります。
 
参考:
– http://www.linux.or.jp/JF/JFdocs/Chroot-BIND-HOWTO-2.html
UNIX の部屋 chflags
FreeBSD memo – jail の作り方
– MANPAGE of chflags

PEAR – DB から MDB2 への移行

PEAR :: Package :: DB

This package been superseded by MDB2 but is still maintained for bugs and security fixes
(意訳: このパッケージの代わりに MDB2 が使われるようになりましたが、バグ、セキュリティの修正はまだ続けられています)

とあったので、PEAR::DB から PEAR::MDB2 への移行について書かれているサイトをメモしておきます。
 
DB to MDB2 migration
 
参考/情報元:
PEAR::MDB2
– MDB2 Homepage