du:ディスク使用量を調べるコマンド

/home/ 以下、各アカウントのディスク容量を調べたい

$ du -h /home --max-depth=1
オプション 説明
-a, –all ディレクトリだけでなく、全てのフィアルについての容量を表示
-b, –bytes デフォルトのブロックサイズを無視し、バイト単位でサイズを表示する
-c, –total 全ての引数について使用量表示の処理をした後、全ての引数の使用量の統計を表示する
-h, –human-readable それぞれのサイズに例えば、メガバイトならMのようなサイズ文字を付加する
-k, –kilobytes サイズをキロバイト単位で表示する
-l, –count-links あるファイルが(ハードリンクとして)既に集計されている場合を含め全てのファイルの使用量を集計する
-m, –megabytes メガバイト(1,048,576バイト)単位でサイズを表示する
-s, –summarize それぞれの引数について、総計のみを表示する
-x, –one-file-system 引数で指定されたファイルのあるファイルシステムとは異なるファイルシステム上にあるディレクトリを集計に含めない
-D, –dereference-args コマンドライン引数で指定したシンボリックリンクをたどる
-H, –si それぞれのサイズに例えば、メガバイトならMのようなサイズ文字を付加する
-L, –dereference シンボリックリンクをたどる
-S, –separate-dirs サブディレクトリの使用量を含めずに個々のディレクトリの使用量を分けて表示する
-XFILE, –exclude-from=FILE 除外するためのパターンをFILEから1行ずつ取り込む
–block-size=SIZE 環境変数の値を無視し、ブロックサイズをSIZEに設定する
–exclude=PATTERN 再帰的に集計する際、PATTERNにマッチする名前のサブディレクトリやファイルを除外する
–max-depth=DEPTH 階層のルートから深さレベルが最大DEPTHまでにある各ディレクトリのディスク容量の合計を表示する
–help 標準出力に使用方法を出力する
–version 標準出力にバージョン情報を出力する

qmail と tcpserver

割と長時間はまってしまったので

外部からのメールを受け付けようと qmail の設定を少し変更して
再起動したところ全く受け付けず、、、更に telnet で確認すると localhost にすらつながらない状態。

/var/qmail/control

内のファイルを見ても問題なさそう ⇒ ログをみるか

tcpserver: fatal: unable to bind: address already used

もしかして、smtpが何かに使われてる?
プロセスを確認しても

root xxxxx 0.0 0.0 0 0 ? Z 00:00 0:00  tcpserver <defunct>

tcpserver が起動してない。

# netstat -tpl | grep smtp
tcp 0 0 *:smtp *:* LISTEN 2543/exim
tcp6 0 0 *:smtp *:* LISTEN 2543/exim

どうやら exim という、smtpデーモンが知らないうちに起動してしまっていたようだ。

# /etc/init.d/exim stop
# /sbin/chkconfig exim off

として、あらためて qmail を再起動
無事に qmail-smtpd が機能しだしました!
#そういや、qmail インストール時にサービスを止めた気がするzzz

ファイル名 解説
me 自分自身の完全修飾ドメイン名を示すものだそうで、各種制御ファイルのディフォルトとしても効果をなすそうです。SMTP 接続時の応答メッセージや、Received ヘッダなどで使用されるようです。
defaultdomain ドットの無いホスト名が指定された場合に付加されるドメイン名だそうです。defaulthost にドットが含まれない場合にも、この情報が付加されるとのことでした。
plusdomain ドットがなく、さらに最後が + で終わるホスト名が指定された場合に付加されるドメイン名だそうです。defaulthost についてもこの条件に該当する指定がなされていた場合は、この情報が付加される対象となるそうです。
locals ここに記されたドメイン宛てのメールを自サーバ宛てのメールとして、メールボックスへの格納対象とします。virtualdomains で指定されたドメインは含みません。
rcpthosts SMTP 接続時に、ここに記されたドメイン宛のメールを受理します。具体的には SMTP 要求の "RCPT TO: " にて指定可能な宛先のドメイン名です。locals や virtualdomains に指定されたドメインがここに含まれていないと、それら宛のメールの SMTP による送受信が行えませんので注意です。
virtualdomains バーチャルドメイン宛てに来たメールの制御を行います

svscan の覚書

svscan で起動したサービスの操作方法について

-u サービスを開始します。既に稼動中の場合は再起動します。
-d サービスを停止します。TERM -> CONT
-o サービスを開始します。既に稼動中の場合はそのままです。
-p サービスに STOP シグナルを送ります。
-c サービスに CONT シグナルを送ります。
-h サービスに HUP シグナルを送ります。
-a サービスに ALRM シグナルを送ります。
-i サービスに INT シグナルを送ります。
-t サービスに TERM シグナルを送ります。
-k サービスに KILL シグナルを送ります。
-x サービスがダウンしたらすぐに supervise を終了します。

redMineのアップグレード

Redmineをインストールしたディレクトリで

$ svn update

データベースのマイグレーション

$ rake db:migrate RAILS_ENV="production"

以下のメッセージで更新できない場合は、メッセージ通り「gem update –system」を実行してから再度マイグレーションを

(in /var/www/redmine)
Rails requires RubyGems >= 1.3.2 (you have 1.3.1). Please `gem update --system` and try again.

キャッシュ、セッションを消去

rake tmp:cache:clear
rake tmp:sessions:clear

sed コマンド(文字列置換)

今更なんですけど、便利だなぁーと再認識したので

$ find . -name '*.html' | xargs grep -l 'hogehoge' | xargs sed -i.bak 's/hogehoge/fugafuga/g'

1)拡張子が「.html」
2)「hogehoge」という文字列を含んでいる
3)「hogehoge」を「fugafuga」に置換する

ちなみに -i.bak というオプションは [元のファイル名].bak というバックアップファイルまで作ってくれます。

PHP:setcookie

cookieを利用するときの注意点

php.ini(もしくは.htaccess) で以下の設定してれば問題ないと思っていましたが、とんだ勘違いでした。

php_flag session.cookie_secure On
php_flag session.cookie_httponly On

マニュアルはよく読みましょうということで

setcookie

setcookie ( string $name  [, string $value  [, int $expire = 0  [, string $path  [, string $domain  [, bool $secure = false  [, bool $httponly = false  ]]]]]] )

$secure、$httponly を true にしないと意味ないです。

session.cookie_secure

session.cookie_secureは、 セキュアな接続を通じてのみCookieを送信できるかどうかを指定します。
デフォルトは、offです。 この設定は、PHP 4.0.4で追加されました。 

session.cookie_httponly

クッキーに対して、HTTP を通してのみアクセスできるようにします。
つまり、JavaScript のようなスクリプト言語からはアクセスできなくなるということです。
この設定を使用すると、XSS 攻撃によって ID を盗まれる危険性を減らせます (が、すべてのブラウザがこの設定をサポートしているというわけではありません)。 

勝ちに不思議の勝ちあり、負けに不思議の負けなし

自民党大会での野村監督のスピーチからメモ書き

江戸時代中・後期で肥前国平戸藩の第9代藩主 松浦 清(松浦 静山)
勝負の原則について残した言葉だそうです。
※心形刀流剣術の達人

勝つ時は、運に左右されて偶然勝ちが転がり込んでくるときがあるが、負ける時は負けるべくして負ける。
負けには必ずその負けにつながった原因があるということだそうです。

「運がなかった」で済ませるのではなく、謙虚に受け止め、原因を追究して次にいかす。
当たり前のこと当たり前にし、やるべきことを着実にやり、手を抜かずやり通すことが大事

というのはわかっていても難しい

MySQL:AUTO_INCREMENT 属性

DB(とりあえずMySQL)でテーブルのIDを生成するのに AUTO_INCREMENT 属性を使用します
この AUTO_INCREMENT について

AUTO_INCREMENT 属性をリセット
ALTER TABLE 文でできます

ALTER TABLE dtb_customer AUTO_INCREMENT = 1;

1 にリセットすることはあまりないと思いますが、会員IDや商品IDなど1桁は
ちょっとというときに 10001 にしたりすることが多いかな?

ちなみに AUTO_INCREMENT の値ですが information_schema.TABLES 格納されています。

欠番を取得するにはどうする?
テーブル自体を長いこと運用していると頻出の問題だと思います

MySQL以外でもできるかわかりませんが、以下の方法で欠番が取得できます

SELECT MIN(t1.product_id) + 1 AS product_id FROM dtb_products AS t1
LEFT JOIN dtb_products AS t2 ON t1.product_id + 1 = t2.product_id
WHERE t2.product_id IS NULL
;

最大値まで達したらどうなる?
そもそも最大値まで達することがほぼ無いので、あまり考えたことがなかったのですが
キーカラムの型次第ってことのようです。

バイト 最小値 最大値
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807

まさか TINYINT ってことはないので、通常 INT が多いとすれば約21億 UNSIGNED で符号ビット
をはずせば約42億 十分といえば十分?
仮にアクセスログなんかの大量データを扱ったりするなら BIGINT のほうがいいかもしれませんね

考え方が変われば行動が変わる

NHKの「野村監督が残したもの」だったかな?
印象に残った言葉だったので覚書しときます。

心が変われば態度が変わる
態度が変われば行動が変わる
行動が変われば習慣が変わる
習慣が変われば人格が変わる
人格が変われば運命が変わる
運命が変われば人生が変わる

「野村のノート」に書かれているようなので買って読んでみます。

新大阪センイシティーって爆安

回転寿司でお昼ごはんをすました後
週末、結婚式に出席するためスーツを新調しに行くことに
近くに紳士服の「あ○やま」があるので、とりあえずそこに向かうものの
、、、イメージしてたよりも結構高い。
夏物だし、バーゲンって書いてあるし、2~3万円ぐらいなのかと思ったら
普通に1着5万円以上する。
2着目買うと1,000円ってこの売り方もどうかと思う
生地やデザインがいいなと思うものは更に値段もあがるし
というわけで買うのをやめた。

夕飯の買出しをスーパーで終えて
やっぱりスーツをなんとかしたいなと思い、近所の「”新大阪センイシティー”」へ向かう
日曜日だからかあまり開いていないけど、3、4店舗紳士服屋がある
その内の1つに入るとおっちゃんが出てくる
さっと見立ててくれた「このあたりのサイズが合う」と教えてくれた
さて値段は、、、2~3万円かこれなら予算内だなと
しばらくどれにするか思案していると、予算が厳しいならこっちもあるよと教えてくれた
(いや、予算内なんで大丈夫なんですけど・・・)

ありえない 15,000円 って (定価50,000円って書いてる)
さっきの「あお○ま」は定価ってことか?
あまりの安さに礼服用のブラックスーツ(こちらは10,000円)まで買ってしまった。
さすがに卸だけあって考えられない値段でした。