mod_rewriteでフォワードされたリクエストにリクエストヘッダーを追加する

RewriteRuleのenvフラグで環境変数をセットしておき、RequestHeader append で使う。

  RewriteEngine on
  RewriteRule ^/(.*)$ http://appserver/$1 [P,L,QSA,env=ORG_REMOTE_ADDR:%{REMOTE_ADDR}]
  ProxyPassReverse / http://appserver/
  RequestHeader append X_ORG_REMOTE_ADDR %{ORG_REMOTE_ADDR}e env=ORG_REMOTE_ADDR
  RequestHeader append X-Forwarded-Proto https

mod_rewrite - Apache HTTP Server
たまねぎプログラマハマリ日記:Apache内のCGI環境変数をTomcatに渡す。 - livedoor Blog(ブログ)

findで検索した結果を削除したりgrepする方法

-exec command {} \;
  • 検索後、コマンドcommandを実行する。検索結果をcommandに引き渡すには、{}をもちいる。
  • \; の前に空白が必要。空白がないと、
    find: `-exec' に引数が見つかりません
    

    とか

    find: -exec: no terminating ";" or "+"
    

    というエラーになる。

  • 複数のコマンドを実行する場合は、-exec を複数指定すればよい。

例:

find ~ -name '*bak' -exec rm {} \;
  • 上記の例で-execにつづくrm {} \;が実行されるコマンド。最後の";"は-execのパラメタの終わりを示しており、その前の"\"は、";"がシェルに解釈されないようにエスケープする為のもの。

例:
ホームディレクトリ以下にある*~(emacsのバックアップファイル)を全て削除

$ find ~/ -name "*~" -exec rm {} \;

Subversionの作業コピーディレクトリから.svnディレクトリを全て削除する。

find . -name .svn -exec rm -rf {} \;

ディレクトリ配下のファイルをgrepする
(grepのオプション -H はファイル名表示、-n は行番号表示)

find ディレクトリ -type f -exec grep -nH 文字列 {} \;

You can't specify target table 'xxx' for update in FROM clause

MySQLでは、サブクエリ FROM 節と更新対象の両方に同じテーブルを使用することはでき
ない。

Source: MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.8.9 サブクエリ エラー

mysql> delete from user \
    -> where user.id in \
    -> (select user.id from user \
    -> left join reserve_data on user.id = reserve_data.user_id where reserve_data.id is null);
ERROR 1093 (HY000): You can't specify target table 'user' for update in FROM clause

このような場合は、以下のようにする。

mysql> delete from user \
    -> where user.id in \
    -> (select x.id from \
    -> (select user.id from user left join reserve_data on user.id = reserve_data.user_id where reserve_data.id is null) \
    -> as x \
    -> );
Query OK, 350 rows affected (0.00 sec)

こうすると、暗黙的に一時テーブルが作成されるので、うまくいく。

Source: SQL Delete: can't specify target table for update in FROM clause - Stack Overflow