PHPソースコードのスペルチェッカ

有料だとあるんだけど、無料が無い。

PHPUnitから実行したいからコマンドラインで動いて欲しい。

 

チェックして欲しい項目

  • 変数
  • クラス
  • ファイル名
  • メソッド名

 

コメント内はいいや。

sed memo

apacheのアクセスログからGETパラメータの数字だけを列挙。

% zcat ssl-access_log.200807*|grep IsReturn|sed 's/.*orders_suppliers_id=\([0-9]\+\).*/\1/g'

sedってエスケープする文字が微妙。。。

コピペでできるiptables

サーバをセットアップするときに、iptablesをコマンドでちゃちゃっと設定したいときのためのメモ。

リモートで実行する際にはお気を付けください。
自己責任でご利用願います。Cent OS 4.6にて動作確認はしてあります。

export PATH=$PATH:/sbin/:/usr/sbin/

# allow access for this setting
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# reset policy
iptables -F

# allow
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 20        -j ACCEPT
iptables -A INPUT -p tcp --dport 21        -j ACCEPT
iptables -A INPUT -p tcp --dport 80        -j ACCEPT
iptables -A INPUT -p udp --dport 53        -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# back to set input as drop
iptables -P INPUT DROP

# save
/etc/init.d/iptables save

db_loadコマンド@Cent OS

vsftpdのvirtual user機能を使うためにはdb_loadコマンドによってbdbフォーマットのパスワードファイルを作る必要がある。

yum searchしても、このコマンドが出てこないからちょっと困った。正解は、db4-utilsに入ってた。

# yum install db4-utils

puttyで作成したプライベートキーをopenssh形式へ変換する方法

puttyで公開鍵認証に利用するためのキーペア(秘密鍵、公開鍵)を作成するとputty用のキーペアが作成される。

このキーペアをopensshで利用するためにはキーの変換を行う。

■秘密鍵の変換

puttykeygen.exeにて秘密鍵(拡張子がPPK)を読み込む。

変換メニューから、OpenSSH形式へエクスポートを選ぶ 。この作業によって秘密鍵が生成される。

■公開鍵の変換

以下のコマンドで行う。

% ssh-keygen -i -f id_rsa_putty.pub > id_rsa.pub

id_rsa_putty.pubは、puttyで出力した公開鍵。
id_rsa.pubはOpenSSH形式の公開鍵

au,docomo向けコンテンツにて、転送禁止命令付与をコマンド一発で。

au,docomo向けページの画像ファイルに対して「転送禁止命令」をJPEG、GIF画像に対して付与できます。

Windowsアプリケーションでは、しょぼいアプリケーションしか出回っていないのでサーバで一発でやった方が楽。

サーバにはImageMagickが必要。

ファイル単体に対しては以下のコマンド。

% convert -comment 'kddi_copyright=on,copy="NO"' infile.jpg outfile.jpg

あるディレクトリ以下の全ての画像ファイルに対して行う場合は以下のコマンド。

% find . -iname "*.gif" -o -iname "*.jpg" -exec convert -comment 'kddi_copyright=on,copy="NO"' {} {} \;

シェルスクリプトで排他処理

運用サーバで、2分おきにsubversionのupdateを行うシェルスクリプトを動かしています。
今までは、1回のupdateが50秒程度で終了するので、同時実行を防ぐための排他処理をしていませんでした。しかし、サーバの負荷が高かったときは2分以内で終わらない場合があるためスクリプト実行の排他処理をしなければなりません。

Webを調べているとシェルスクリプトでロック用のディレクトリを作ってます。しかし、かっこわるい。。。そこで見つけたのがlockfileというコマンド。このコマンドを使った方がロック取得を失敗したときの挙動を変えられるから便利そうです。(今回の場合は意味無いけど)

以下にコード書いておきます。

#!/bin/sh

LOCKFILE=/tmp/subversion.locked

# try to get lock. With no retry.
lockfile -r 0 $LOCKFILE

# evaluate return code
if [ $? -ne 0 ]; then
  echo "Command aborted"
  exit 1
fi

# do something exclusive command
echo "important command"

# unlock
rm $LOCKFILE

携帯端末エミュレーションproxyサーバ、Moxy使ってみた

キャリアが提供しているエミュレータは操作がしづらいし、描画も超遅い。

Moxyを使えば使い慣れたブラウザでデバッグできるぅ~!

ws0361.JPG

もっと詳しく >>

unixコマンドでgrepの否定条件

-vで指定した正規表現の否定にマッチする。
% grep -v

ヘルプにこう書いてある。
-v, --invert-match select non-matching lines

複数台で運用しているサーバのアクセスログを1つに統合する

複数台のフロントエンドサーバでapacheが動いている場合を想定します。

その場合、アクセスログが複数のサーバにまたがってしまいます。

こんなかんじ。

  • web-01.access-log.20071130
  • web-02.access-log.20071130
  • web-03.access-log.20071130

webalizerやawstatsといったアクセスログ解析ソフトではこのファイルの状態では解析できない。

なぜなら、webalizerやawstatsのデフォルトでは1つのファイルのみを入力として受け付け、時系列順に記録されていなければならない。

この問題を解決するスクリプトを発見しました。awstatsの中に入っているlogresolvemerge.plというperlスクリプトです。

使い方は超簡単。引数に統合したいファイルを指定して実行すると、標準出力に時系列順にそろったレコードが出力される。

例:
% perl logresolvemerge.pl /path/to/log/*access.log.20071130|more
引数にgz圧縮されたファイルを指定してもちゃんと動きます。至れり尽くせりなスクリプト。

★おまけ情報★
ある日まで、commonフォーマットでアクセスログを取っていて、ある時点からcombinedフォーマットでログを取りだした場合、1つのアクセスログの中に2種類のフォーマットのログが混入してしまう。

そこで見つけたのがこの方法。commonフォーマットをcombinedフォーマットにする方法。
http://www.trisweb.com/archives/2007/02/15/convert-apache-common-logs-to-combined-logs/

3回シェルのコマンドを実行すればできちゃう!CUIはすばらしい。

参照:

http://awstats.sourceforge.net/

 

リンク