■ IP アドレスを数値に変換してデータベースへ保存する場合の注意点 PHP や MySQL には、IP アドレスをドット表記の文字列と数値との間で相互に変換する関数がある。 ところが実は、PHP の ip2long() 関数は signed int な値を返すのに対し、 MySQL の INET_ATON(), INET_NTOA() 関数は unsigned int な値を前提にしている。 PHP 5.2.5 と MySQL 4.1 (4.1.11a-4sarge2) で試してみると、それぞれ次のような結果になった。 php > echo ip2long('192.168.0.1'); -1062731775 php > echo long2ip(-1062731775); 192.168.0.1 php > echo long2ip(3232235521); 192.168.0.1
また後できちんと書きます。 <?php function microtime_float() { list($usec, $sec) = explode(' ', microtime()); return ((float)$sec + (float)$usec); } $time1_start = microtime_float(); for ($i = 0; $i < 10000000; ++$i) { $time = time(); } $time1_end = microtime_float(); $time2_start = microtime_float(); for ($i = 0; $i < 10000000; ++$i) { $time = $_SERVER['REQUEST_TIME']; } $time2_end = microtime_float(); define(
■ CentOS 5 で IPv6 を本当に無効にする CentOS 5 のインストール時に IPv6 を無効にするよう設定したはずなのに、 netstat や lsmod の結果を見ると無効になっていなかったので、どうすればいいのか調べてみた。 FAQ/CentOS5 - CentOS Wiki CentOS 5 : IPv6 サーバでない場合は IPv6 を無効にする | Linux - P-SOC IPv6 を停止する まとめると、 /etc/sysconfig/network に NETWORKING_IPV6=no の設定を追加 /etc/modprobe.conf に以下の設定を追加 alias ipv6 off alias net-pf-10 off /sbin/chkconfig ip6tables off を実行 マシンを再起動 これでようやく IPv6 を無効にすること
■ CentOS 用 PHP 5.2.8 のパッケージをビルドする 単純に PHP 5.2.8 の rpm パッケージが欲しい場合は、この辺 から入手できます。 以下の説明は、自分でパッチをあてたりしてビルドしたい人向けの説明です。 Fedora 用の PHP のソースパッケージを、この辺のサイトからダウンロードしてきます。 この記事を書いている時点では、php-5.2.8-1.fc11.src.rpm が最新です。 Fedora プライマリサーバ 北陸先端科学技術大学院大学 IIJ KDDI 研究所 ソースパッケージをインストール。 $ rpm -ivh php-5.2.8-1.fc11.src.rpm spec ファイルのディレクトリに移動。 $ cd ~/rpm/SPECS php.spec に以下の変更を加える。 T1lib のパッケージが CentOS にはないので用いないように
■ PECL::APC をさらに高速化するための設定 PECL の APC (Alternative PHP Cache) のチューニングに関する情報をいくつか見つけたのでメモ。 .::t3rmin4t0r::. : include_once: "Mostly Harmless" APC 3.0.12 以降の apc.include_once_override オプションについて、 その効果や仕組みが分かりやすく書かれていた。 php.ini あたりで、 apc.include_once_override=1 のように設定するとこのオプションが有効になり、 include_once() や require_once() が高速化される。 PHP Works 2007: apc@facebook APC 全般について非常に詳しく書かれている資料。 これによると、APC には数種類のロック方式
■ mb_convert_encoding 関数の ISO-2022-JP と JIS の違い mb_convert_encoding() 関数でエンコーディングを指定する際、 ISO-2022-JP と JIS では意味が違うというのはご存知でしょうか? PHP のソースコード (mbfilter_jis.c) を見てみると、 それぞれのエンコーディングが対応する文字種は、次のようになっています。 ISO-2022-JP ASCII JIS X 0201 ラテン文字 JIS X 0208 JIS ASCII JIS X 0201 ラテン文字 JIS X 0201 半角カナ JIS X 0208 JIS X 0212 要するに、JIS は半角カナに対応していますが、ISO-2022-JP は対応していません。 そのため、半角カナのメールを扱うという無茶なことをやりたい時には、 ISO-20
■ 絵文字変換ライブラリの処理速度の比較 先日リリースした HTML_Emoji ライブラリ は、 高速に動作することを開発目標の1つとしています。 実際に、他のライブラリと比較してどの程度速いのか、ベンチマークを取ってみました。 方法 使用したライブラリ: MobilePictogramConverter 1.2.0 Text_Pictogram_Mobile 0.0.2 HTML_Emoji 0.1 ただし MobilePictogramConverter は、ezweb.php の絵文字抽出正規表現を次のように修正しています。 var $regex = array( 'WEB' => '/<img\s+(icon|localsrc)="?([0-9]+)"?[^>]*?>/ie', 'IMG' => '/(<img src="{PATH}\/(\d{1,3})\.gif"[^>]*?
概要 † HTML_Emoji は携帯の絵文字を変換するライブラリです。 PHP 4 以上で動作します。 docomo, au, SoftBank の絵文字に対応 (隠し絵文字を含む) 他キャリアの絵文字を、類似の絵文字に変換可能 PCでは gif 形式の画像に変換して表示 絵文字の入出力は、UTF-8, Shift_JIS のバイナリ形式 文字エンコーディングを UTF-8 と Shift_JIS 間で相互に変換可能 User Agent からキャリアを自動判別 (キャリアを指定することも可能) フォームに入力された絵文字を処理したり、 携帯宛の絵文字メールを作成したりするのに使えるはずです。 ▲ サンプル † 動作確認のためのサンプルをいくつか用意しました。 PC や携帯から読み書きしてみて下さい。 UTF-8 での表示 Shift_JIS での表示 絵文字掲示板 PC での動作確認に
■ Zend_Loader_Autoloader クラスの正しい使い方 まずは結論を。 Zend_Loader_Autoloader クラスを用いる際には、 registerNamespace() メソッドは使わず、 setFallbackAutoloader(true) に設定しておくべきです。 Zend Framework 1.8 では、Zend_Loader_Autoloader というクラスが新設され、 従来の Zend_Loader::registerAutoload() メソッドは、 Zend Framework 2.0 以降では廃止される予定となりました。 ところが、Zend_Loader_Autoloader クラスを用いるようコードを書き換えてみると、 困ったことに、PEAR のライブラリや Revulo_View_Phtmlc のような独自クラスをオートロードしてくれま
Zend Framework 用自作コンポーネント † Zend Framework の特徴の1つとして、 フレームワークを構成するコンポーネント群が疎結合だということが挙げられます。 そのため比較的容易に、 標準のコンポーネントを他のライブラリで置き換えて使うことができます。 そこで、ラッパークラスのようなものですが、 Zend Framework 用のコンポーネントをいくつか作ってみました。 Revulo_Controller_Dispatcher_Flow クラス Web フローエンジン&継続サーバの Piece_Flow を使えるようにします Piece Framework と同様のステートフルでセキュアなプログラミングが可能になります Revulo_Validate_Right クラス バリデータに Piece_Right を使えるようにします YAML 形式の設定ファイルに基づ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く