2008/1/4 金曜日

FORM要素がdisableになったときにcssを適用

Filed under: css — admin @ 10:25:14

複数指定なんてできるんだ。

<style type="text/css">
input[type="text"][disabled] {
 color: black;
}
</style>
No Tags

ネットワークインターフェースを自動再起動するシェルスクリプト

Filed under: djb, shellscript — admin @ 1:56:16

原因不明のネットワークインターフェース不良でサーバーにアクセスできなくなってしまう現象が頻繁に発生。
syslogに何も書かれてない。ディスプレイにも何も書かれてない。kernel panicでもないから
kernelの設定でrebootするようになっていても再起動されないという。
さぁ、困ったという状態になっていた。

直前に中国からssh portに怪しいアクセスが見られるから、多分
DOS攻撃くらったとかそのせいかと思う。
というか、このサーバーだけiptablesで中国・韓国を遮断してないんだった。
これはあとで設定するとして

daemontoolsを用いて、ネットワークインターフェースの再起動を
行うスクリプトを書いてみた。

daemontoolsってプロセスの監視ツールだけど、こういった
簡単な監視プログラムを作るのにも使えるよ。

内容はルーターにpingを打って、failしたらネットワークインターフェースをリブートするって仕様。
別にcronでもいいじゃんというのはおいておいてください。
ムリクリdjbを使うことに意味があるのです。

#!/bin/sh 

exec 2>&1 

if ping -c 5 10.0.0.1; then
    echo "success"
  else
    echo "fail"
    /etc/sysconfig/network-scripts/ifdown eth0
    /etc/sysconfig/network-scripts/ifup   eth0
fi 

sleep 10
No Tags

PHPのpathinfo、basename関数で日本語ファイル名がうまく取得できない。

Filed under: php — admin @ 0:32:16

まさかbasename関数の方にバグがあったとは思わなかった。
というのは嘘だけど。
phpはその系のバグが結構あるので、バグを疑ってぐぐる日常。

そしてあった。
作業日報 | 【PHP】pathinfo、basename関数の日本語ファイル名取得問題
どうやら、ファイル名の最初がマルチバイト文字だといかんようだ。

このページには、PHPをバージョンアップする以外に解決方法が書いてなかったので、

  $img_name = basename($uri,".".$ext); //PHP 5.2.2以前はPHPのバグで動かない

  $img_name = current(mb_split(".",end(mb_split("/",$uri))));

こんな感じに解決してみました。

簡単に解説すると、マルチバイト対応のsplit mb_splitを使って/で配列に分解し、その配列の最後の値(ファイル名)を取ってきて、
さらにこれを.で分割して、拡張子を分離、currentでファイル名だけ取って来るって寸法。

ちなみにmb系は、文字列が長くなるとapacheが落ちるという別のバグがあるので、代替には注意されたし。

No Tags