2012-01-01から1年間の記事一覧

Eclipse の FileSync プラグインで特定のディレクトリのみ同期する場合のパターン指定

Eclipse の FileSync プラグインを使うと、Eclipse でファイルの操作を行ったときに自動でプロジェクト外のディレクトリに同期(保存)させることが出来ます。Linux サーバに samba を入れて Windows からマウントし、ネットワークドライブに FileSync で同…

PHP からバックグラウンド起動させたプロセスを Apache の停止や再起動後も続行させる ← 失敗

PHP

mod_php(Apache/PHP)で、ページの表示時にバックグラウンドで別プロセスを起動して並列に処理したい場合、次のように書くことが出来ます。 /dev/null 2>&1 &'); ただし、この方法だと Apache の子プロセスの停止や再起動時に、起動したプロセス(上の例な…

CentOS 6 の sbin

CentOS 6 では一般ユーザでも sbin が PATH に設定されるようになっているのですね。 CentOS 6.3 /etc/profile : # Path manipulation if [ "$EUID" = "0" ]; then pathmunge /sbin pathmunge /usr/sbin pathmunge /usr/local/sbin else pathmunge /usr/loca…

PHP を Windows でビルド

PHP

前々回 に拡張モジュールを Windows でビルドするついでに PHP 本体を拡張機能を全て無効にしてビルドしましたが、今度は拡張機能を出来るだけ有効にして PHP をビルドします。 なお、前々回とディレクトリ構成を変えていますが深い意味はありません*1。 依…

PHP の set_error_handler で設定した関数が例外を投げた場合の動作(with 拡張モジュール)

PHP

ErrorException という例外クラスがあり set_error_handler で PHP エラーを例外にして送出する方法がよく紹介されていますが、拡張モジュールの1回の関数呼び出しで複数回の PHP エラーが発生した場合にどのような動作になるのか気になったので調べてみま…

PHP拡張モジュールを Windows でビルド

PHP

参考URL https://wiki.php.net/internals/windows/stepbystepbuild 必要なもの とりあえず下記のものを準備します。 Microsoft Visual C++ 2010 Express*1 PHP ソースファイル ... PHP: Downloads php-sdk ... windows.php.net - /downloads/php-sdk/ php-sd…

NetSNMP の traptoemail で Date ヘッダを追加する

NetSNMP の snmptrapd で traptoemail を使うと簡単にトラップをメール送信することが出来ますが、Date ヘッダが付きません。Date ヘッダが無い場合は MTA が勝手に付けたりするらしいですが、qmail-1.03 は Date ヘッダを付けないため、送信日時(トラップ…

Windows版の pdo-mysql で MYSQL_ATTR_READ_DEFAULT_FILE が未定義だった

PHP

PHP の PDO でキャラクタセットを指定するときは次の様に行なっています。 $pdo = new PDO("mysql:host=127.0.0.1;dbname=test", $username, $password, array( PDO::MYSQL_ATTR_READ_DEFAULT_FILE => '/etc/my.cnf', PDO::MYSQL_ATTR_READ_DEFAULT_GROUP =>…

PHP 5.3.14 の CVE-2012-2143

PHP

php-5.3.14 の「Fixed CVE-2012-2143」ですが、以下のように文字列中に 0x80 が含まれているとその後の文字が無視されてしまうようです(その他にも問題があるかもしれませんが)。 $ php -r 'echo crypt("r", "rl") . "\n";' rlQzQWiSUOMKQ $ php -r 'echo …

MySQL の RAND 関数の引数

MySQL の RAND 関数の引数の意味がよくわからなかったので色々試してみました。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.4.2 数学関数 引数に定数を与えて複数回呼び出すと毎回同じ値が返されます。同じシードで初期化していることになるので当然…

thold プラグインのアップデート失敗と RPN Expression

cacti の thold プラグインを 0.4.3 → 0.4.9 にバージョンアップしたら、閾値に計算式が使えるようになっていたので使ってみました。 作業時の環境 OS CentOS 5 (2.6.18-308.8.1.el5) php 5.3.12 mysql 5.0.95 cacti 0.8.7g → 0.8.8a thold 0.4.3 → 0.4.9 se…

ディスクを動的に追加する

KVM

CentOS 5(ホストもゲストも)の KVM で、ゲストのディスクを動的に追加した時のメモです。 ゲスト側でカーネルモジュールを追加 ゲスト側でディスクのホットプラグに対応させるために acpiphp というモジュールが必要らしいので追加します。 modprobe acpip…

Eclipse PDT でのリモートデバッグの整理

PHP

xdebug.remote_mode や xdebug.remote_autostart の設定がよくわからなかったので整理しました。 xdebug.remote_mode req リクエスト開始時にデバッグセッションが開始されます jit 最初にエラーが発生したときにデバッグセッションが開始されます jit の場…

演算子の字句解析

VS2010 の VC++ で調査。 // このコードは・・・ i+++++++++j; // このように解釈され、インクリメント演算子の対象が左辺値では無くなるのでコンパイルエラーとなる ((((i++)++)++)++) + j; // このコードは・・・・ i+-+-+-+-+-+-j; // このように解釈され…

cronの設定ファイルは終端に改行が必要

/etc/cron.d/hoge などに配置するcronの設定ファイルは行が改行で終端している必要があります。 そのため、以下のような設定ファイルだと 002 の方は実行されません。 * * * * * /bin/echo 001 * * * * * /bin/echo 002[EOF]以下のように、行の終端で改行さ…

MySQL 5.5.22 と 5.5.24 のステートメントベースレプリケーションの変更点

MySQL 5.5.22 と 5.5.24 でステートメントベースのレプリケーションで気になる変更点があったので調べてみました。どちらも binlog_format = statement でテストしています。 MySQL 5.5.22 Statements that wrote to tables with AUTO_INCREMENT columns bas…

apcupsd で 製品名が MODEL ではなく DRIVER に表示される問題

CentOS 6 で rpmforge から apcupsd (3.14.10) をインストールしたところ、MODEL に表示されるはずの製品名が、DRIVER という項目に表示されるようになりました。 「3.14.10」の場合 VERSION : 3.14.10 (13 September 2011) redhat UPSNAME : SUA1500JB CABL…

SSHのエージェントフォワーディングを「sudo」の後でも引き継ぐ

SSH

SSHのエージェントフォワーディングは「sudo」したときは無効になります。 ※ hoge へのログインにエージェントフォワーディングは使用されない sudo ssh hoge ↑のような使い方だと意味はありませんが、例えば rsync を over ssh で使っている場合はエージェ…

innodbでサブクエリを使ったときの FOR UPDATE のロックの範囲

前提として、次の通りテーブルを使用する。 CREATE TABLE A ( id INT NOT NULL, no INT NOT NULL, PRIMARY KEY (id, no) ); CREATE TABLE B ( id INT NOT NULL, PRIMARY KEY (id) ); 普通に結合すると A と B の両方の行がロックされる。 SELECT * FROM A IN…

イントラネットでのIEの互換モード

特定の企業内イントラネットでしか使われないWEBアプリで、IE8だけ対応すればOK!という場合でも、なぜか自動的に互換モードが有効になり、レイアウトが崩れることがありました。それもすべての端末で崩れるわけではなく、端末によって崩れたり崩れなかった…

array_map と等価な array_walk なら array_walk の方が早いっぽい

$rows が 7 件の場合・・・ // 1秒で約290000回程度実行 array_walk($rows, function(&$row){ $row['xxx'] = 123; }); // 1秒で約180000回程度実行 $rows = array_map(function($row){ $row['xxx'] = 123; return $row; }, $rows);

SMTPの「SSL/TLS」と「STARTTLS」の違い

「STARTTLS」はポート番号 25(587) で、通信の開始時は平文通信(SMTP)で、STARTTLS命令により暗号化通信が開始される。「SSL/TLS」はポート番号 465 で、通信の開始時点で暗号化通信が行われる(真の"over SSL")。・・・らしい

mysqld_multiで複数のインスタンスを立ち上げ

1つのサーバで複数のMySQLのインスタンスを立ち上げるために mysqld_multi を使ったときのメモです。 使用した版は 5.1.61-1.el6_2.1 (CentOS6) です。 設定ファイルを作成します。 vi /etc/my.cnfとりあえず以下の様に作成します、基本的な設定のみです。 …

SSHでリモートログイン時にメールを送信

SSHでリモートログインしたときには「/etc/ssh/sshrc」が実行されるので(SSHD (8))、そこでメール送信のコマンドを実行すればメールを送信することができます。 /etc/ssh/sshrc echo "login from ${SSH_CLIENT} at `/bin/date '+%Y-%m-%d %H:%M:%S'`" \ | …

qmailの dot-qmail で動的に転送先を変更

qmailで「/var/qmail/alias/」ディレクトリに「.qmail-user-default」のようなファイル名で、 &user@other.example.jpのように作成すると、「user-」から始まる任意のアカウント宛のメールを「user@other.example.jp」に転送することができますが、この方法…

CentOS 5.7 でIPv6を無効化する・・の続き

同じ CentOS 5.7 でも「/etc/modprobe.conf」へ下記の追記だけでIPv6が無効に出来たり出来なかったりしていた件について、更に調べてみました。 alias net-pf-10 off alias ipv6 off IPv6が有効になっていたサーバでは「lsmod | grep ipv6」の出力が下記の通…

CentOS 5.7 でIPv6を無効化する

sshdの起動時に「/var/log/secure」に以下のようなログが記録されていました。 sshd[30843]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.いかにも22番ポートが競合している風なメッセージなので「lsof -i:22」を試してみるも・・・ …

ThunderbirdでGmailを同期するときの送信済みメール

Thunderbird で Gmail を IMAP で同期するとき、いつも「送信控えと特別なフォルダ」で「[Gmail]/送信済みメール」を送信済みトレイとして選択していたが、特に設定しなくても Gmail のアカウントでメールを送信すれば勝手に送信済みメールに保存されている…

Postfix で 正規表現で From を書き換え

sender_canonical_maps で正規表現マップを使って From を書き換えようとしたときに、 /^hoge/ fugaのようなマップで、アドレスの先頭の hoge だけを fuga に書き換えられると思いましたが、書き換え先(↑の「fuga」の部分)は、マッチした部だけでは無く、…

Thunderbird の Lightning と Googleカレンダーの同期

Thunderbird の Lightning で「Provider for Google Calendar」をインストールしてGoogleカレンダーと同期させているときに、Googleカレンダーの同じアカウントの複数のカレンダーを登録すると・・・(仮に A と B を登録したとする) Lightning で B の予定…