タグ

ブックマーク / iogi.hatenablog.com (19)

  • php.ini-recommendedで、variables_orderがGPCSである理由と、PHP5のauto_globals_jit - おぎろぐはてブロ

    遅ればせながら関連ネタ。 ライブラリの類で$_ENVを使うのはやめてgetenv()を使いましょうって思った。 getenv()推進キャンペーンを考えた - 絶品ゆどうふのタレ これには同感。recommendedが variables_order="GPCS" である以上、多くの環境*1で手を加えずに動かせるようにするためには、それがいいか悪いかは関係なく、これを基準として動くアプリケーションを書いた方がいいと思います。 なぜ、variables_orderに "E" が含まれないのか recommended = オススメ設定なのだけれど、どういう理由なのか。これは、php.ini-recommendedのコメントにあるように、パフォーマンス対策とのこと。 ; - variables_order = "GPCS" [Performance] ; The environment varia

    php.ini-recommendedで、variables_orderがGPCSである理由と、PHP5のauto_globals_jit - おぎろぐはてブロ
    hiro_y
    hiro_y 2009/02/05
    PHPの環境変数について。
  • clearstatcache()のはなし - おぎろぐはてブロ

    前々回、前回のrealpath cacheの話は実のところこの話の前振り。(なんだけど、前振りの方が長くて役立つ。 clearstatcache()を叩くと、realpath cacheもクリアされるよというのが前回までの話なのですが、clearstatcache()の関数リファレンスにはこのように説明が書かれています。 void clearstatcache( void ) stat やlstat、またはその他の関数(後述)を使用すると、PHPはパフォーマンス向上のために それらの関数の戻り値をキャッシュします。しかし、ケースによっては、 キャッシュされた情報を消去したい場合もあるでしょう。例えば、一つのスクリプト上で同じファイルが何度もチェックされ、そのファイルが変更されたり削除されたりする可能性がある場合、ステータスキャッシュを消去しなければならないと感じるでしょう。 このようなケー

    clearstatcache()のはなし - おぎろぐはてブロ
    hiro_y
    hiro_y 2008/05/07
    clearstatcache関数について。
  • PHP5.1から実装されたrealpath cacheについて(2) - その動きと影響を受ける関数 - おぎろぐはてブロ

    前回に引き続き、realpath cacheについてのはなしです。どうキャッシュされるのか、動きを追っかけてみたいと思います。 (前回と同じく、コードは5.2.6をベースにしています) たとえば、こんな感じのコードのとき。 <?php $filename = "/var/www/data.txt"; $data = file_get_contents($filename); ?> 相対パスだと、 <?php $filename = "data.txt"; // 第2引数がtrueだと相対パス時にinclude_pathを走査する $data = file_get_contents($filename, true); ?> ファイルアクセスの前段にはstream wrapper 実際にコードを読む人のために補足しておくと(いねーよ)、PHPでファイルアクセスを伴う関数の多くは、ファイル実体に

    PHP5.1から実装されたrealpath cacheについて(2) - その動きと影響を受ける関数 - おぎろぐはてブロ
    hiro_y
    hiro_y 2008/05/07
    realpath cache、どのように動作してるのか。
  • PHP5.1から実装されたrealpath cacheについて(1) - 概要と、デフォルトのキャッシュサイズが小さめというはなし - おぎろぐはてブロ

    PHP5.1から、パフォーマンス対策として、realpath cacheというものが導入されています。 PHPがファイルを開く際(実行ファイル体から、include/require、fopenなど基的には全てのファイルアクセスが対象)に、open_basedirの検証や、include_pathの探索のために、realpath(3)を呼び出し、その中でstat(2)を大量に呼び出しており、ファイルをたくさん扱う場合には、結構ボトルネックとなっていました。(realpathとは正規化された絶対パス名を返すもので、パス中のシンボリックリンクをすべて展開する関数です) ここらへんの実際の動きについては前に書いてます。 include_pathを探しにstat()を呼びまくるのを眺める - おぎろぐはてな Yahoo!では、このキャッシュがなかったころ(PHP4の時代)、realpathを呼び

    PHP5.1から実装されたrealpath cacheについて(1) - 概要と、デフォルトのキャッシュサイズが小さめというはなし - おぎろぐはてブロ
    hiro_y
    hiro_y 2008/05/07
    realpath cache、概要。
  • 加算子の挙動 - おぎろぐはてブロ

    これは知らなかった。 <?php $a = 'Test'; echo ++$a . PHP_EOL; $b = 'Test' + 1; echo $a . PHP_EOL; ちなみにこの結果は Tesu 1 http://d.hatena.ne.jp/kidd-number5/20080112/1200067231 ++$a と、インクリメントすると、最下位の文字が t → u と、1文字ずれる $b + 1 と、1 を加えると、0扱いされて、演算結果は 1 になる。 なんか違和感がある。 マニュアルみてみた。 PHP は、算術演算子で文字変数を扱った場合に C ではなく Perl の慣習に 従います。例えば、perl では 'Z'+1 は 'AA' を返しますが C では 'Z'+1 は '[' ( ord('Z') == 90, ord('[') == 91 ) を返します。 文字変数

    加算子の挙動 - おぎろぐはてブロ
    hiro_y
    hiro_y 2008/01/14
    不思議な演算。マジカルインクリメント。
  • iPod touchでフォーム入力補完をするbookmarkletを作るbookmarklet - おぎろぐはてブロ

    2007年末の振り返りエントリでも書いたように、ITmediaの3分LifeHacking (該当記事)でリンクされたことから、2007年の年間アクセス数トップになった記事が、iPod touchで無線LANのブラウザ認証を楽にするbookmarklet - おぎろぐはてなでした。 しかしながら、無線LANのアクセススポットの3種類にしか対応していないこと、増やしていくにしても自分の知らないスポットに対して作ることができないという制約があります。また、はてブで、 leva こういうちょっとした楽チンさはいいよね。毎回認証してくるサイト(e.g. Yahoo! Japan)なんかもコレで楽できます。 はてなブックマーク - iPod touchで無線LANのブラウザ認証を楽にするbookmarklet - おぎろぐはてな というアイデアも頂いたこともあり、各自でこういったbookmarkle

    iPod touchでフォーム入力補完をするbookmarkletを作るbookmarklet - おぎろぐはてブロ
    hiro_y
    hiro_y 2008/01/07
    IDとパスワードを簡単に入力できるようにするbookmarkletを作成できるbookmarklet。
  • 第29回PHP勉強会で発表しました (PHP型変換の世界) - おぎろぐはてブロ

    日はPHP勉強会。会場を貸して頂いたトライコーン株式会社さんありがとうございますー。 第29回PHP勉強会 とりあえず、発表資料貼っておきますー。 | View | Upload your own 局所的なんですが、はまると??なことがあるという感じです。飲み会に忙しく(w、きちんと資料を作れていない。。 全てのバージョンのPHPを用意して、一括で叩くコマンドも用意してるhnwさんの話がすごく興味深かった。

    hiro_y
    hiro_y 2007/12/24
    PHPの型変換まわり。
  • php|works 2007の講演スライド - おぎろぐはてブロ

    9月13〜14日にアトランタで開催されたphp|works 2007での講演スライドが、以下にまとめられています。 http://works.phparch.com/c/p/works_live,slides 個人的に興味のあるやつと、タイトルでは中身が分からないものをピックアップして軽く説明します。 Ed Finkler - Intro to Codeigniter PHPフレームワークCodeigniterの説明 (参考) http://userguide.cilab.info/ Ed Finkler - Securing the PHP Environment with PhpSecInfo セキュリティチェック用のツールPHPSecInfoの説明 Sara Golemon - PHP Extensions めがねっ娘SaraによるPHP Extensionの書き方。すごく詳しいです

    php|works 2007の講演スライド - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/09/22
    php|works 2007のスライドをいろいろ紹介。
  • php|works slides from Atlanta - Derick Rethans - おぎろぐはてブロ

    php|works 07が先日開催され、講演のスライドがいろいろwebで公開されてます。 php|works slides from Atlanta — Derick Rethans にあるように、Derickは以下の3つを講演 Time = Money (PHP date/time support) Input Filtering 7 (or more) PHP Myths defused 入力フィルタについて解説した、Input Filteringが個人的にはおすすめ。 スライドのダウンロードは、Talks and Presentationsから。

    php|works slides from Atlanta - Derick Rethans - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/09/19
    php|works 07の発表資料の紹介。
  • (PHP) プログラマのための Vim (まとめ)

    遅ればせながら、依然書いてたAndreiのVimスライドの訳記事の一覧エントリを。 今でもちょくちょくブックマークされているのですが、個別エントリしかなくてブクマしづらいので。 元記事 http://www.gravitonic.com/blog/archives/000357.html ここからAndreiの実際使っているVimの設定ファイルやプラグインのアーカイブもダウンロードできます。 記事一覧 カーソル位置・カーソル移動・マーク・挿入 削除・検索 置換・テキストオブジェクト コピー/削除/貼り付け、レジスタ undo ビジュアルモード、ウィンドウ、タブ 補完・マップ・オプション セッション、misc、ヘルプ PHP向けカスタマイズ(1) ペアマッチ・ブロックオブジェクト・ハイライト・折りたたみ(folding) PHP向けカスタマイズ(2) タグ・補完・netrw PHP向けカスタ

    (PHP) プログラマのための Vim (まとめ)
    hiro_y
    hiro_y 2007/07/15
    PHPをvimで扱う際にちょっと便利にするためのtipsまとめ。
  • phptのEXPECTREGEXは /s 修飾子指定 - おぎろぐはてブロ

    phptは、PHPの関数やスクリプトをテストするためのツールで、PHP体や拡張モジュール、PEARライブラリなどいろんなところで利用されています。bobchinの日記さんで、phptドキュメントの日語訳が公開されています。 設定パラメータ、実行コード、期待する結果を書いたテストケース(拡張子phpt)を作って、実行させると、パラメータをセットして、コードを実行、実行結果を期待する値と比較し、可否を判断します。そんだけ。シンプルです。たとえば、こんな感じ。 --TEST-- strtr() function --FILE-- <?php $trans = array("hello"=>"hi", "hi"=>"hello", "a"=>"A", "world"=>"planet"); var_dump(strtr("# hi all, I said hello world! #", $t

    phptのEXPECTREGEXは /s 修飾子指定 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/07/08
    phptテストのEXPECTREGEXについて。
  • テンプレート管理ツール r3 (第25回PHP勉強会発表資料) - おぎろぐはてブロ

    第25回PHP勉強会で発表させて頂きました。ぐだぐだなプレゼンに貴重なお時間頂き、ありがとうございました。m(__)m 発表資料はSlideShareでアップしています。 テンプレート管理ツール r3 r3とは Yahoo!がオープンソースで公開した、テンプレート管理ツールで、継承と掛け合わせを使い、効率よく管理、生成するしくみ。 r3のテンプレートから任意の形式のテンプレートを作る、テンプレートのプリプロセッサのようなもの。 まとめ テンプレートの継承という概念はおもしろい r3は、まず国際化ありきのツール。複雑な国際化をしないなら、使わない方がいいかも この機能を他に流用するってのもありかも。ケータイ用テンプレとか かなりニッチなツールで、必要とする⼈は限られているかと 今のところ、使えねーという感想 → そう思った理由をあとのエントリで書いた 現在はアルファ版。これから? 引き続き様

    テンプレート管理ツール r3 (第25回PHP勉強会発表資料) - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/06/25
    r3に関する発表資料。テンプレート管理ツール、国際化前提。
  • include_pathを探しにstat()を呼びまくるのを眺める - おぎろぐはてブロ

    id:koyhogeさんのPHPのコードキャッシュがなぜ速いのか - Blog::koyhoge::Techから。(先日はありがとうございました m(__)m) 「PHPは内部でstat()を呼びまくっているので遅い」とのことですので、include_pathの後ろの方のディレクトリにあるスクリプトファイルを大量にrequireしていたりすると、それだけでコードキャッシュのメリットが出てくるのかもしれません。 PHPのコードキャッシュがなぜ速いのか - Blog::koyhoge::Tech どのレベルからキャッシュが利用されるのかは、ちょっと記憶が無いので、コードを読み直さないとダメなのですが、「stat()を呼びまくって遅い」のstat()が爆発的に呼ばれる動きを軽く説明?したいとおもいます。(早く寝なきゃと適当に書いてるので、説明になってない。。ーー;いかんせん、こういうのあまりやら

    include_pathを探しにstat()を呼びまくるのを眺める - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/06/19
    PHPがファイル探索する際に実行される大量のstat。
  • facebookでのAPCの設定 - おぎろぐはてブロ

    php|tek 2007で発表された、facebookの中の人のAPCの設定についての話です。軽く中身を説明します。 apc@facebook (PDF) apc@facebook (PDF) 2007/09/21 追記 サイトの構成が変わって、スライドがデッドリンクになっていたため差し替えました。また、今月開催されたphp|works 2007での講演もアップされています。こちらのが読みやすくなっている部分があるので、こちらを参照したほうがいいかも。 apc@facebook (PDF) in phpworks2007 http://tekrat.com/talks 内容 LAMP構成で、そしてAPCを使ってます Facebookのprofile.phpの表示を例にあげると、ノーマルのPHPに比較して、FacebookのチューンしたAPC設定では秒間リクエスト数が12倍に! ちょ、、それ

    facebookでのAPCの設定 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/06/15
    Facebookで使われているAPCの設定とか。
  • r3 と stickleback を試してみる - テンプレートの特殊化 - おぎろぐはてブロ

    デモのチュートリアルを引き続き試してみます。 今日のところは、 テンプレートの特殊化 (specialize) あたりです。 過去記事 新しい順に並べてます r3 と stickleback を試してみる - ターゲットの作成とサイトの全生成 - おぎろぐはてな r3 と stickleback を試してみる - プロジェクトの事前設定 - おぎろぐはてな r3 と stickleback を試してみる - プロジェクトの作成 - おぎろぐはてな r3 と stickleback を試してみる - セットアップ - おぎろぐはてな Yahoo!のツール R3 と StickleBack がオープンソースに - おぎろぐはてな テンプレートの特殊化 注) specializing = 特殊化と訳してます。なんかすっきりしない テンプレートの中のいくつかをコピーして、違うプロダクトとintlに

    r3 と stickleback を試してみる - テンプレートの特殊化 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/06/03
    r3 + stickleback、使用例。
  • r3 と stickleback を試してみる - ターゲットの作成とサイトの全生成 - おぎろぐはてブロ

    デモのチュートリアルを引き続き試してみます。 今日のところは、 ターゲットの作成 サイトの全生成 <r3:include />ディレクティブの理解 include先のテンプレートの編集 あたりです。 過去記事 新しい順に並べてます r3 と stickleback を試してみる - プロジェクトの事前設定 - おぎろぐはてな r3 と stickleback を試してみる - プロジェクトの作成 - おぎろぐはてな r3 と stickleback を試してみる - セットアップ - おぎろぐはてな Yahoo!のツール R3 と StickleBack がオープンソースに - おぎろぐはてな ターゲットの作成 うまいこと継承関係が設定できたので、いくつかターゲットを作成していきます。 $ r3 target create generic_product/generic_intl/inde

    r3 と stickleback を試してみる - ターゲットの作成とサイトの全生成 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/05/30
    r3 + stickleback、使用例。
  • r3 と stickleback を試してみる - プロジェクトの事前設定 - おぎろぐはてブロ

    デモのチュートリアルを引き続き試してみます。 ここの部分は事前設定ということで、intlとproductを作り、継承関係を設定するというものです。 過去記事 r3 と stickleback を試してみる - プロジェクトの作成 - おぎろぐはてな r3 と stickleback を試してみる - セットアップ - おぎろぐはてな Yahoo!のツール R3 と StickleBack がオープンソースに - おぎろぐはてな プロジェクトの事前設定 始めに、products と intl を作成する必要があります。 products と intl は、r3の用語で "dimensions" と呼ばれるものです。r3のバージョン0.9では、もう1つのdimensionとして、"page"があります。将来的には、自分でその他の dimensionを定義することができるようになります。 pro

    r3 と stickleback を試してみる - プロジェクトの事前設定 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/05/30
    r3 + stickleback、使用例。
  • r3 と stickleback を試してみる - プロジェクトの作成 - おぎろぐはてブロ

    前記事(r3 と stickleback を試してみる - セットアップ - おぎろぐはてな)の続き。 移動中の電車の中で、ボールペン片手にドキュメントを読んでみた。まだ最後まで読み終わってないので勘違いがあるかも。。 で、これってどういうものなのか productとintlをベースに、テンプレートを管理、一括生成する仕組みで、自由度の高いローカライズ等を可能にするもの。ヘッダーとかの埋め込みも、辞書を使ったローカライズも、リアルタイムにせずに、予め生成してしまって、ファイル一杯サーバにアップしちゃったほうが早いじゃない。ってアプローチだと思います。 多言語、多地域、大小のいくつものプロダクトでサービス展開をするポータルみたいなサイト (それって、Yahoo!とかgoogleとか)では、有効だと思うのですが、個人でやってる分には、きちんと継承関係が整理されるくらいのメリットなのかも。 Ya

    r3 と stickleback を試してみる - プロジェクトの作成 - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/05/30
    r3 + stickleback、使用例。
  • r3 と stickleback を試してみる - セットアップ - おぎろぐはてブロ

    r3と、sticklebackは、Yahoo!が最近オープンソースで公開を始めたテンプレートまわりのツールです。(前記事参照) これがどういうものなのかがよく分かんないので、ドキュメントを読みながら試してみます。 ドキュメントは、SourceForgeにあるものだけのようです。 アーカイブの取得 SourceForgeから、r3とsticklebackのアーカイブを取ってきます。 $ ls r3-0.9.3.tgz stickleback-0.9.3.tgz インストール 必要な環境は以下。 PHP5 PDO拡張に対応 MySQLSQLiteのいずれかを使える アプリケーションを完成させるには、sticklebackとr3の2つのパッケージをインストールする必要があります。sticklebackは、r3のコマンドラインのI/Fです。(なんで、分かれてるんですかね。。) 将来的にはr3はG

    r3 と stickleback を試してみる - セットアップ - おぎろぐはてブロ
    hiro_y
    hiro_y 2007/05/30
    r3 + stickleback、使用例。
  • 1