phpに関するbalibaliのブックマーク (32)

  • アクセッサの速度を計測する in PHP - kなんとかの日記

    PHPで、「$obj->var」と「$obj->get_var()」にどのくらい速度差があるのかを調べてみた。 またjQueryのようにgetterとsetterを同じメソッドで行うようにしたいとき、引数があるかどうかを調べるのにfunc_num_args()を使った場合と使わない場合との速度差も測ってみた。 class Foo { var $var; /// ふつうのaccessor function var0() { return $this->var; /// getter } /// jQueryライクなaccessor: func_num_args() を使わない方法 function var1($arg=null) { if ($arg === null) { return $this->var; /// getter } else { $this->var = $arg; /

    アクセッサの速度を計測する in PHP - kなんとかの日記
    balibali
    balibali 2010/04/07
  • sort関数と全順序集合 - hnwの日記

    大仰なタイトルですが、約1年前の記事「PHPのsort関数は相当おかしい」の補足記事です。僕が何を根拠にPHPのsort関数(の第二引数のデフォルト値)がおかしいと思ったかを説明します。一言でいうと、PHPの全ての値とSORT_REGULAR(言い換えるとPHPの<、==、>)の組み合わせが全順序集合になっていないからです。 前回の記事の概要 PHPのsort関数は第二引数で比較演算子を変更できますが、省略するとSORT_REGULARを用います。これはPHPの通常の比較演算子と同じ挙動で、両辺の値が数字っぽい場合は数値として、そうでなければ文字列として比較するものです。このような比較を用いると、ソートが不可解な挙動を示すことがあります。 $ php -r '$a=array("0xa","011","01a","2.0");sort($a);print_r($a);sort($a);pr

    sort関数と全順序集合 - hnwの日記
    balibali
    balibali 2010/01/08
  • htmlspecialcharsに関する残念なお知らせ - 岩本隆史の日記帳(アーカイブ)

    htmlspecialcharsのパッチ私案」に書いた件、バグレポートを出してみましたが、「すでに同じバグレポートがあるだろ」という理由により、あえなく却下されました。 せめて先方が「同じ」とみなしているレポート番号ぐらいは示してほしくて、そのようにコメントしましたが、お相手のjaniという人は気難し屋のようで*1、教えてもらえる気がしません。 私なりに探した結果、下記のレポートがくさいように感じました。 PHP :: Bug #43896 :: htmlspecialchars() returns empty string on invalid unicode sequence 「不正なUTF-8シーケンスの場合に空文字列を返すのはおかしい」というレポートで、私のそれとは正反対どころか、Shift_JISにもEUC-JPにも触れられていない別個のものです。もちろん、私はレポート送信前に

    htmlspecialcharsに関する残念なお知らせ - 岩本隆史の日記帳(アーカイブ)
  • PHP で快適なテスト駆動開発を - Stagehand_TestRunner の特徴と使い方を知る | ITEMAN Blog - アイテマンブログ

    先日、今年の 1 月以来となる Stagehand_TestRunner の最新バージョン 2.7.0 のリリースを行いました。コマンドラインのテストランナーを提供するこのプロダクトは、テスト駆動開発 (TDD: Test Driven Development) をより快適にすることを目的としています。 今回は Stagehand_TestRunner の特徴と使い方をご紹介いたします。 Stagehand_TestRunner とは? Stagehand_TestRunner とは、PHPUnitSimpleTest といった PHP のテスティングフレームワーク向けに書かれたテストの実行に特化した Piece Framework のプロダクトで、下記のような特徴があります。 指定されたディレクトリに含まれるテストの実行 指定されたファイルに含まれるテストの実行 指定されたファイル

    balibali
    balibali 2009/10/06
  • セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?

    (Last Updated On: 2018年8月13日)一見徳丸さんのブログは分かりやすいように思えますが、それは単純な実験により分かりやすいように見えるだけで複数の間違いがあります。 その間違いとは 意図の取り違い – 誤読 言語の仕様と実装の理解不足 HTTPやPHP仕様の理解不足 セキュリティ対策をすべき場所の理解不足 です。(※0) 徳丸さんは非常勤とは言え、国の出先機関の研究員であるし、その出先機関は職務放棄とも言える文書(「例えば、PHPを使用しない」と勧める文書)を公開している(いた?)のでしっかり反論しておく必用がありますね。IPAのあの文書は職務放棄と言える文書だと思っています。これについても後で意見を述べます。 意図の取り違い – 誤読 最初の間違いは私のブログのエントリ「何故かあたり前にならない文字エンコーディングバリデーション」に対する理解です。特にPHPユーザに

    セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?
  • php.iniのpost_max_sizeを2048Mにすると何もpostされなくなる - いぬビーム

    (中略) 32 ビット符号付き整数の最大値を上回る値を指定しないように注意しましょう (32 ビットシステムを使用している場合)。 そのようなことをすると、スクリプトの実行が失敗します。 http://www.php.net/manual/ja/ini.core.php#ini.post-max-size ヘルプにはこう記載されてますが、エラー等吐くわけではなく、単に $_POST が空配列になるだけで普通に実行されました。最大受付サイズがマイナスと解釈されてるのかな。 今日のPHPバッドノウハウでした。

    php.iniのpost_max_sizeを2048Mにすると何もpostされなくなる - いぬビーム
    balibali
    balibali 2009/09/16
  • Boost.phpを触ってみた - モノノフ日記

    今年のPHPカンファレンスジャパンで個人的に一番面白かったid:moriyoshiの発表に触発されてBoost.phpを試してみました。 試した環境 debian lenny githubからBoost.phpを取得する とりあえず最新版だけ欲しい人は--depthオプション使うとすぐダウンロードも終わります。moriyoshi/boost.php · GitHub $ git clone http://github.com/moriyoshi/boost.php.git Boostのソースコードを取得する 動作させるのにBoostが必要なのでダウンロードして適当な所に展開。パッケージに含まれるヘッダファイルだけ必要なのでビルドは不要。yumやaptでさっくり入れてもよいかと思います。 添付しているテストコードをビルドしてみる githubから落としたBoost.phpのコードにテストコー

    Boost.phpを触ってみた - モノノフ日記
    balibali
    balibali 2009/09/08
  • PHPcon2009ビジネスデイに行ってきた - Lism.in * blog - nekoya (id:studio-m)

    今年のPHPconは「ビジネスデイ」と「テックデイ」と銘打って2日間に渡って開催されました。どのようにそれぞれのカラーを打ち出していくのか、というかビジネスデイをどう形作っていくのかが気になっていたんですが、結論から言うとうまくキャラクター付けが出来ていたように思いました。 まずオラクルを会場で使えたことが大きい。一般的なイベントスペースでもなく、ベンチャーのオフィスでもない場所で開催できたというだけでもかなり違う。想像以上に格調高いオフィスで、進行のお姉さんも別の世界の人のようでした。電源の説明してる時に「おコンセント」って単語が飛び出しりするんだもん。どこまで丁寧なんだ! スタッフ陣もそれっぽい格好で、(心なしか緊張気味だったような…)いい顔してました。PHPは良くも悪くも他のLLに比べてGeek色が薄いので、それをいい方向に活かす試みとして非常に大きな意味のある一日だったと思います。

    PHPcon2009ビジネスデイに行ってきた - Lism.in * blog - nekoya (id:studio-m)
    balibali
    balibali 2009/09/07
  • PHP5.3で継承して使うSingletonをちゃんとやる - 絶品ゆどうふのタレ

    発端 02:51:51 (sotarok) で, hoge_klass::get_instance() も,同じように動くようにしたい,でも,hoge_klass には, get_instance を再実装したくないよね 略しすぎてなんだか分からない人のために言っとくと、まぁSingletonの実装ってメンドいから継承したいよねと。 昔、Objective-Cでもそれやったけど 継承して使えるSingletonクラス - ゆどうふろぐ PHP5.3で遅延静的束縛ができたから、継承できるSingletonを実装できるようになったから。 まぁあちこちサンプルあるけど、なんかcloneとかconstructとかちゃんとやって無いし。 で、まぁノリで書いてみたらfinalとかがcloneやconsructに付けられるという事実が分かって*1、なんか思ったよりきちんと重複を排除できる感じで、継承して

    PHP5.3で継承して使うSingletonをちゃんとやる - 絶品ゆどうふのタレ
    balibali
    balibali 2009/08/12
  • PHP コード最適化 Best Practices 63+ - カタコト日記

    みたいなタイトルの記事を Digg 経由で発見。チートシート代わりにと思い超訳。*1 A Software Architect PHP 最適化 ベストプラクティス! 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo '文','字'; (カンマ区切り)の方が、'文'.'字' (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09

    PHP コード最適化 Best Practices 63+ - カタコト日記
    balibali
    balibali 2008/05/23
  • /ext/spl/examples/nocvsdir.php - PHP re2c conversion - Trac

    balibali
    balibali 2008/05/11
    RecursiveFilterIteratorの例
  • 「@」でエラー抑制すると PHP が遅くなるという噂について : a My RSS 管理人ブログ

    PHP では @ を付けることでエラーを回避できるという便利な記述方法があり、ものぐさな私などは if (@$var["foo"]) $result = $var["foo"]; みたいなコードを書いてしまいます。 で、この処理が「遅い」という噂やツッコミを度々受けるので調べてみました。 「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。 劇遅じゃないですか、これ。 いやはや・・・ ちょっと列挙しますね。以下のようなコードを単純 for 文で 100万回実行したときの結果です。 error_reporting(0) で PHP4 if (@$a["hoge"]) $b = $a["hoge"]; ⇒ 約 2.4 秒 if ($a["hoge"]) $b = $a["hoge"]; ⇒ 約 1.3 秒 if (isset($a["hoge"]))

    balibali
    balibali 2008/05/11
    なぜisset
  • Date_Holidays 0.19.0リリース - Do You PHP はてブロ

    リリースされました。このバージョンから、Date_Holidays_Driverを継承したドライバクラスが別パッケージ扱いになったようです。 Date_Holidays helps you calculate the dates and titles of holidays and other special celebrations. The calculation is driver-based so it is easy to add new drivers that calculate a country's holidays. The methods of the class can be used to get a holiday's date and title in various languages. ということで、PEAR::Date_Holidays_Driver_J

    Date_Holidays 0.19.0リリース - Do You PHP はてブロ
    balibali
    balibali 2008/05/07
    Date_Holidays_Japan!使ってみたい
  • Runemaster

    Runemaster は、Web プログラム向けに提供される DOM アクセスベースな PHP5 HTML テンプレートエンジンです。 テンプレート <html> <head></head> <body> <h1 key="title">Hello, World!</h1> </body> </html> PHP require_once 'Rune/Master.php'; $master = new Rune_Master('./templatesDirectory'); $master->assign(array('title' => 'Hi, Runemaster!')); $master->cast('Hello'); 結果 <html> <head></head> <body> <h1 key="title">Hi, Runemaster!</h1> </body> </htm

    balibali
    balibali 2008/04/23
  • PHPSpecでユニットテスト

    こんにちは、牧野です。 今回は、PHPでユニットテストを行う際に便利なユニットテスト用フレームワーク、PHPSpecの紹介です。 PHPSpecは、phpで振舞駆動開発ができるようにと作られたものです。 PHPSpecの詳細はこちら http://dev.phpspec.org/manual/ja/ 日語マニュアルが大変充実しています。 振舞駆動開発について簡単に説明すると、テストありきの開発手法であるテスト駆動開発を発展させたような開発手法で、このプログラムはこんな動作をするべきだ、という要求仕様(スペック)を、そのままテストコードとして記述しながら開発を進めていく、という感じのものです。PHPSpecのような振舞駆動開発用フレームワークでは、要求仕様がすぐわかるようなテストコードの書き方をするようになっているので開発効率が上がるようです。 ではさっそく、まずはインストールについてです

    PHPSpecでユニットテスト
    balibali
    balibali 2008/04/03
    ユニットテスト用フレームワーク
  • Gsgame.jp – GSGAME: 楽しいゲームを提供し続ける

    It seems we can’t find what you’re looking for. Perhaps searching can help.

    balibali
    balibali 2008/03/05
    sfDocTestPlugin
  • Eclipse PDT (PHP Development Tool) - PHP Code Formatter Plugin (prototype)

    Eclipse PDT (PHP Development Tool) - PHP Code Formatter Plugin (prototype) PDT にコードフォーマット機能を追加するプラグインのプロトタイプです。 PHP コードブロックのみフォーマットします。HTML 部分はフォーマットしません。 部分的な(範囲を指定しての)フォーマットはできません(しません)。Ctrl+Shift+FとCtrl+I(Windowsの場合)は同じ動作になります。 設定値と異なる改行コードは設定値になります。 折り返しはトークン区切りでの折り返しになります。(文脈を意識したり(例えば関数呼び出しで第2引き数以降で折り返しが発生したら第1引き数から折り返すとか)トークンを分割したり(例えば長い文字列を分割してドットで結合する文に変えたりとか)はしません) また、「,」「;」はぶら下げになります。

    balibali
    balibali 2007/10/28
    PDT用のコードフォーマットプラグイン。使う使う
  • masuidrive on rails » Blog Archive » PHPユーザの為のRuby/Rails入門

    [追記] if構文の変数スコープの説明に間違えがあります。新しいスコープは作られません。 お盆のまっただ中8/11(土)に、社内勉強会を開いて、PHPユーザ向けにRuby/Rails入門をやりました。 じつはお盆の土曜日に4時間も勉強会って事で、そんなに人も集まらないだろうと思っていたのですが、ふたを開けてみたら28名も参加があり、びっくりしました。それだけ興味を持ってもらったのは嬉しいけど、これだけ集まるなら資料はちゃんと作らないと・・・・。ということで、作った資料を公開します。なんとRuby編100ページオーバー、Rails編200ページオーバーと、かなり大作です。 RubyKaigiで、発表者のスライドの横でIRCが表示されていたのが面白かったので、勉強会の参加者には、Lingrのチャットルームに全員入ってもらって、質問やパートごとの「終わった!」という書き込みをしてもらいました。今

    masuidrive on rails » Blog Archive » PHPユーザの為のRuby/Rails入門
  • PHP 4.xでPHP 5.2/6.0の機能を実現する互換キット"upgrade.php 15"登場 | エンタープライズ | マイコミジャーナル

    7月31日(ドイツ時間)、upgrade.phpの最新版となる「upgrade.php 15」が公開された。upgrade.phpPHPで開発された後方互換実現のためのコンパチブルキット。パブリックドメインとして公開されている。PHP 5.2や6.0で導入された新しいコア関数をPHP 4.xで動作するように実装したプロダクトで、4.x系で5.2や6.0で導入された機能を使いたい場合に役に立つ。 upgrade.php 15ではSQLインジェクション脆弱性を避けるために導入されたPDOのエミュレーションが追加されている。それ以外ではメインスクリプトにおけるより詳細はphpDocスタイルの導入、ファイルロックフラグに対するput_contents()サポートの追加、json_decode()におけるUnicodeエスケープのサポート追加などが実現されている。json_decode()では依然

    balibali
    balibali 2007/08/01
    後方互換ライブラリ。ふむ
  • re: PHP でメールアドレスかどうか調べる方法

    はてブでotsuneさんやkazuhookuさんがPHPクオリティについて勘違いしていたので、一言申し上げたところ、参考にされた方がいたようで、もうちょっと補足します。 いくつか実装での「正しいメールアドレス」を調べてみました。 phpspot function is_mail($text) { if (preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/',$text)) { return TRUE; } else { return FALSE; } } PEAR::Mail_RFC822 function isValidInetAddress($data, $strict = false) { $regex = $strict ? '/^([.0-9a-z_+-]+)@(([0-9a-z-]+¥.)+[0-9a-z]{2,})$/i'

    balibali
    balibali 2007/06/01
    DNS引いてドメインの有効性チェックまでやるsymfonyはヤリ過ぎ。たしかに。