必要に迫られてmod_evasiveをインストールしたのでメモ。Ubuntu9.04でのことです。
そのものずばりの記事がこちら ⇒ How to mod_evasive Ubuntu 9.04

sudo apt-get install libapache2-mod-evasive

こうするだけでいいよ(That is all there is to it.)と。
ほんとかなぁ?
ほんとに動いているかどうか心配だって?(How to test that it works ?)
じゃあ、F5連打してみなよ、すぐわかるから。(Simply open any browser, got to your server’s home page, and click the reload button as fast as you can.)
 
で、やってみました。
1秒間に2、3回程度なら全然拒否られません。
ガーっと連打というか押し続けると、こんな画面が。

Forbidden

You don't have permission to access / on this server.

みごとです。しばらくは間をおいてもこの画面でした。ちなみにサーバ側は 403を返しています。
 
Ubuntuではこれだけですが、ソースから入れたりしての詳しい設定方法などは、以下を参照。
Apache DoS攻撃対策 mod_evasiveインストール&設定 – Linux

ちょっといろいろあって「お断り」したいアクセス元があったので、しばらくIPアドレスで拒否っと。
まず、どこから来てるか、それを調べる。

# lsof -i:80

COMMAND   PID     USER   FD   TYPE   DEVICE SIZE NODE NAME
apache2 23768 www-data   17u  IPv6 54246506       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:53982 (ESTABLISHED)
apache2 23770 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23770 www-data   17u  IPv6 54246505       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:40936 (ESTABLISHED)
apache2 23778 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23778 www-data   17u  IPv6 54246518       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:38658 (ESTABLISHED)
apache2 23780 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23780 www-data   17u  IPv6 54247178       TCP ubuntu904A:www->spider79.yandex.ru:54332 (ESTABLISHED)
apache2 23794 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 24506 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 24506 www-data   17u  IPv6 54246543       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:41587 (ESTABLISHED)

ま、こんな感じのレポートが出てくるわけです。(この例は、aguse.jpを動かしたときのもので、aguse.jpを拒否りたいわけではないので。念のため)
 
この例で言うと「i125-201-8-158.s05.a023.ap.plala.or.jp」を拒否りたいので、これをIPアドレスをなんでもいいんですけど、調べる。

# dig i125-201-8-158.s05.a023.ap.plala.or.jp

;; ANSWER SECTION:
i125-201-8-158.s05.a023.ap.plala.or.jp. 3600 IN A 125.201.8.158

 
で、「125.201.8.158」をしばらく拒否ろうかなと。

# iptables -I INPUT -s 125.201.8.158 -j DROP

 
iptablesの状態を見てみると、

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  i125-201-8-158.s05.a023.ap.plala.or.jp  anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

 
戻すときは、

# iptables -D INPUT 1

指定している数字は、iptables -Lで出てくる順番です。いまは1つしかないから1。
 
このやり方(プロバイダのIP制限)をすると、巻き添えを食ってアクセスできない人がたくさん出ると思うので、緊急事態だけね。
 
参考:
iptables で特定IPからのアクセスを拒否
第9回 IP認証によるアクセス制限のテクニック

1つ1つの投稿に後から画像やカスタムフィールドを付けるのって、面倒ですよね。
DBを直接いじれる前提ですが、手順を書いておきます。
これをやる前に画像はまとめて、メディア ≫ ライブラリ に新規追加しておきます。(タイトルがファイル名になっている前提)
 

select ID,post_title from wp_posts where post_type='post';

とりあえず、投稿した IDを取りだします。
 

insert into wp_postmeta (post_id, meta_key, meta_value) values (930,'cf_price','3150');
insert into wp_postmeta (post_id, meta_key, meta_value) values (930,'cf_image_1','http://satake7.net/files/2010/05/b-005.jpg');

カスタムフィールドは、post_id に投稿IDをセットして追加します。
 

update wp_posts set post_parent = 930 where post_title='b-005' and post_parent=0 and post_type='attachment';

メディア ≫ ライブラリ に追加しただけの画像ファイルは投稿に紐づいていないので、post_parent=0 になっています。この post_parentに投稿IDをセットすればOKです。

how-to-order_1

お客様からレイアウトが崩れるというクレームがあって、IE7、IE8、Firefox、Chromeで調べてみたんだけど、こっちでは全然再現せず。
打合せのついでに訪問して確認してみたら、確かにずれてる。

how-to-order_2

でも、なんか字が大きくて変だ。
IE8の設定(ツール ≫ インターネットオプション ≫ ユーザー補助)を確認したら『Webページで指定されたフォントサイズを使用しない』になってた。orz…
でも、お客様がわざわざこれを設定してるということは、一般的なWebサイトの字が小さくて見ずらいということだろうから、うちのサイトを見るときだけ設定変えてくれというわけにもいかず。


if (jQuery("#notice a").attr("offsetHeight") > 15) {
  jQuery("#notice").css("left", "670px");
}

苦肉の策でこうしました。
#noticeブロックは position absoluteで配置してあるので、#notice aの文字の高さがCSSで設定した高さ(ling-height:14px)を超えているようなら、もう少し左から書くようにすると。
こうやっても、表示の文字サイズを大とか最大とかにされると同じようになるんですけど、それは自分で調整可能なので。
(あと、ちゃんとやるなら、offsetHeightの値から文字サイズを判定して、leftを変えればいいんですけど、とりあえずはこれでOK)

Custom Field Template plugin
スーパーつぼ(にはまる)。いままで存在を知らなかったのが恥ずかしいくらい。ぼつぼつ使っていきます。
 
WordPress とFlashを連携させたい(入力編)
上のやつの簡単な解説。
 
[WordPress] プラグインを作ろう(2) 独自のカスタムフィールドを追加する
参考になりそうなのでメモ。
 
Fun With Plugins
  ウィザード形式でプラグイン名など必要事項を入力していくだけで、WordPressのプラグインとしての骨格を作ってくれるプラグイン。
 
WordPressでサイト構築して便利だったプラグイン
ここ、いろいろとまとまってて便利。
 
SEO的アイディア(妄想)
WPのプラグインとして実装。複数ブログへの投稿。<p>単位でのランダマイズ。時事ニュースを自動挿入。meCabでの形態要素分解。oAuth認証。XML-RPC、Atom投稿でのポスト。リモート投稿できない場合は、メール投稿 ≫ スクレイピングによる自動ログイン・投稿。自分以外にニーズがあるとも思えないが、ドネーション・サポートソフトウェアというのはどうだろうか?

最短一致について
正規表現で最長一致じゃ困るときの対処。?を使う。/SELECT(.+?)FROM/i
 
PHP による日付・時刻・時間の計算・演算のまとめ
『2つの日付の差(何日間あるか)を求める』。mktime(0, 0, 0, $month1, $day1, $year1)の引数の順番にイラっと来た。
 
preg_match — 正規表現によるマッチングを行う
つい、忘れがちなので。
 
sprintf — フォーマットされた文字列を返す
ゼロ・パディングするのに本当にこれしか方法がないのかよ、と思う。