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

Flash の IE 仕様変更対応のための汎用 JavaScript クラス

<object> が自動でアクティブ化しなくなった([2006-04-18] 参照)対策には
SWFObject (旧 FlashObject )を使うと楽に対応できます。

<script type=”text/javascript” src=”../js/swfobject.js”></script>
<!– 略 –>
<div id=”flashcontent”></div>
<script type=”text/javascript”><!–
// SWFObject(filepath, id, width, height, version, bgcolor)
var so = new SWFObject(“main.swf”, “foo”, 960, 640, “6”, “#FFFFFF”);
so.write(“flashcontent”); // id=flashcontent に対して書き出し
 
// 今回の肝はここまで。
//–></script><noscript>
<!– JavaScript OFF の時は既存の object, embed タグを表示 –>
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″
       codebase=”http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0″
       width=”960″ height=”640″ id=”foo” align=”middle”>
<param name=”movie” value=”main.swf”><param name=”bgcolor” value=”#FFFFFF”>
<embed src=”main.swf” loop=”false” menu=”false” quality=”high” bgcolor=”#FFFFFF”
 width=”960″ height=”640″ name=”foo” align=”middle”
 type=”application/x-shockwave-flash”
 pluginspage=”http://www.macromedia.com/go/getflashplayer”>
</object>
</noscript>

 
なお、SWFObject は MIT ライセンスで公開されているため、制限なく利用が可能です。
 
参考:
– SWFObjectのドキュメントを日本語に翻訳してみたよ
– SWFObject(公式 / 上の原文)