カテゴリー : 2005年 3月

簡易タイマー


例えば 1 分後にアラートを鳴らすには次のようにすればよい。
- Windows なら sleep というコマンドを使えるようにして([2006-04-28]参照)からコマンドプロンプトで

sleep 60 && echo <Ctrl-G>

- UNIX 系(bash, sh)なら

sleep 60 && printf “\a”

 
追記:
(2006-05-10) sleep が Windows 標準で存在しないことに気づき訂正.

Google に登録されない原因


- 新規ページを作り、そのページへのリンクのあるページはクロールで更新されてるのに、新規ページのほうにはいっこうにクロールしに行かないので調べてみた。
<http://www.google.co.jp/faq.html#nonindex>
- Google よくある質問

Google インデックスに私のページが登録されていないのはなぜ?
 
おそらくWeb上にそのページにリンクしている他のページが少ないために見落とされている可能性があります。
(以下略)

もう一つ、

URL登録申請からGoogle登録までの期間は?
 
登録とクロールのタイミングにもよりますが、全ての手続きが終了するには1〜4週間かかります。

これとか。PageRank の高いページからリンクされてたり多数サイトからのリンクがある場合はやっぱり優先順位が高そうなので、その逆はなおざりになるのかな、と。
他の原因として、META タグや robots.txt で禁止するようになっていれば、当然クロールされない。

ARP Poisoning


<http://ettercap.sourceforge.net/>
- Ettercap
こんなものがあるのね…
akademeia.info より。

FP 法


オンラインにはなかなか具体的な例や説明がないけれど、とりあえず。
<http://www1.ocn.ne.jp/~matsuo3/words/fp1.htm>
- ファンクションポイント法入門
<http://e-words.jp/w/FPE6B395.html>
- e-Words: FP 法
<http://www.kiis.or.jp/salon/kikansi/kiis110/110htm/gengyo.htm>
- ファンクションポイント法によるソフトウエア開発規模・工数見積の現状
<http://www.taf.or.jp/publication/kjosei_16/pdf/p667-p673.pdf>
- TAF: オブジェクト指向ソフトウェアに対する機能量計測に関する研究
やっぱり論文を漁れば面白い内容が結構見付かるのね。

論文をオンラインで探す


<http://www.gsid.nagoya-u.ac.jp/service/library/guide/dis.html>
- 日本の大学の学位論文を探すサイト

SPAM 送信元 IP を調べるためのブラックリスト


<http://www.spamhaus.org/sbl/index.lasso>
- spamhaus
<http://www.spamcop.net/>
- spamcop
<http://www.itmedia.co.jp/enterprise/articles/0503/28n/news010.html>
- 情報元: ITMedia: 手元に届いた「イマドキの日本語スパムメール」撃退編
ブラックリストで IP アドレスが登録されているかを調べることで、その IP アドレスを持つマシンが BOT ネットワークに入っていたり、スキャナで検出されないウィルスに感染していないか調べる足掛かりになる、というアイデアが斬新だった。

static ファクトリメソッドの落とし穴


Effective Java より、static ファクトリメソッドで Foo.getInstance() みたくするのがいい、とあったが、何も考えずやってると継承周りで混乱を招く。

class Parent {
public static Parent getInstance(){ return new Parent(); }
}
class Child extends Parent {}

このとき、Child.getInstance(); は Child インスタンスではなく(スーパークラスで定義されている getInstance() を使うため) Parent インスタンスを生成してしまう。
 
Effective Java の例にきっちり書かれているとおり、

class Parent {
private Parent(){ }
public static Parent getInstance(){ return new Parent(); }
}

とか class final Parent とかして継承を禁止するのが妥当な解決方法(拡張にはコンポジションを使う)。
それが嫌なら static ファクトリメソッドの公開をやめて普通にコンストラクタを公開する。
 
あるいは、継承を行うクライアントが、確実に public static Child getInstance() を定義してくれることを信じるか。

プラグインを探すのに便利なサイト


<http://eclipse-plugins.2y.net/>
- Eclipse Plugins
<http://www.eclipseplugincentral.com/>
- Eclipse Plugin Central
- どちらにも人気投票があって結果は目立つ場所に表示されている。

コマンドプロンプトでマウスでのコピー&ペーストを可能にする


プロパティで簡易編集モードにチェックをいれておけばいいだけ。ドラッグ&ドロップ後エンターでコピー、右クリックでペースト。

DAO パターン


- Core J2EE Patterns – Data Access Object
データソースや製品依存の処理を隠蔽して、例えばテーブル単位でアクセス用の API を作り、insert, delete, find, update など必要な処理はインターフェイスにして、それを実装する。複数の形式に対応するにはこの DAO インターフェイスを実装すればいいだけなのがメリット。
 
DAO だけでなく、シリアル化可能な値オブジェクトの、 Transfer Object も用意しておけば、DAO とクライアントの通信では Transfer Object がレコードの代用になるため抽象度が増す。
 
説明では、複数のソースと複数のテーブルが存在するため、利便性のために Abstract Factory Method Pattern でソースタイプ毎に階層を作り、メソッドでテーブルを作れるようにしている。
 
難点は、簡易的な実装だと条件をしぼりきれずオーバーヘッドがかかりそうなことや、どうしても JDBC とかを直接さわるより開発コストがかかること。単純な実装では select で全てとって Collection にしてしまえば楽だけど、たとえば数万行のテーブルが毎回格納されるとなると大変。単純な実装とは別にシステム特化のメソッドを実装すればいいかも。