タグ

PHPに関するxnightsのブックマーク (141)

  • PHP以外では: 既にあたり前になりつつある文字エンコーディングバリデーション - 徳丸浩の日記(2009-09-14)

    _既にあたり前になりつつある文字エンコーディングバリデーション 大垣靖男さんの日記「何故かあたり前にならない文字エンコーディングバリデーション」に端を発して、入力データなどの文字エンコーディングの妥当性チェックをどう行うかが議論になっています。チェック自体が必要であることは皆さん同意のようですが、 チェック担当はアプリケーションか、基盤ソフト(言語、フレームワークなど)か 入力・処理・出力のどこでチェックするのか という点で、さまざまな意見が寄せられています。大垣さん自身は、アプリケーションが入力時点でチェックすべきと主張されています。これに対して、いや基盤ソフトでチェックすべきだとか、文字列を「使うとき」にチェックすべきだという意見が出ています。 たとえば、id:ikepyonの日記「[セキュリティ]何故かあたり前にならない文字エンコーディングバリデーション」では、このチェックは基盤ソフ

  • Thriftインストールメモ - nokunoの日記

    かな漢字変換エンジンのような複雑なソフトウェアの開発には、シンプルなLAMPのアプローチだけでは限界があると最近は感じています。以前SWIGを使ってAnthyのライブラリをPHPから使えるようにしたのですが、SWIGのような拡張モジュールによる連携ではスクリプトが呼ばれるたびに初期化が必要となる、という問題点がありました。 というわけで多言語RPCフレームワークであるところのThriftを使ってみることにしました。まずは以下のページから体をダウンロードします。Apache Thrift次に公式Wikiを参考に、体と利用言語ごとのインストールを行います。FrontPage - Thrift Wiki以下のページのサンプルを実行してみます。Ubuntu 8.04 で Thrift を試してみた - なんとなく日記やり方はURLの通りですが、PHPの場合が紹介されていなかったので、thrif

  • XMLをParseするアプリのセキュリティ(補足編) - teracc’s blog

    以前の日記では、外部からのXMLをサーバサイドでParseするアプリへの攻撃の概要について書きました。 今日の日記では、何点か補足する事項について書きます。 ファイルの内容を盗み出す他の方法 前の日記の中で、サーバ上のファイルの内容を外部から盗み出すにはいくつかの条件があると書きました。 その条件のひとつに「コーディングのスタイル」がある、具体的には「textContent」で要素の内容を取得するアプリ(下のPHPコードではAのスタイルのアプリ)でのみ、サーバ上のファイルの内容を盗まれる可能性がある、と書きました。 <?php ... $elm = $doc->getElementsByTagName('test')->item(0); // A: 外部実体参照が展開される $var = $elm->textContent; // B: 外部実体参照は展開されない $var = $elm-

    XMLをParseするアプリのセキュリティ(補足編) - teracc’s blog
  • Face detection in pure PHP (without OpenCV) - Maurice Bloggue

    Face detection in pure PHP (without OpenCV) Par Maurice Svay le vendredi, juin 19 2009, 12:17 - Technologie - Lien permanent Une résumé en français est disponible en fin d'article. Lately, I've been looking for ways to detect faces in photos with PHP. Nowadays, face detection is built in many consumer products (camera obviously, but also Google and iPhoto), and seems to be a pretty common job. So

  • memcachedを超える成果も、Interopで若手技術者がクラウドを支える技術を競う

    「日でゼロからクラウドを生み出すムーブメントを作り出したい」(実行委員長 門林雄基氏)---“クラウドを支える技術”の開発力を競う「クラウドコンピューティングコンペティション」が2009年6月11日、Interop 2009の会場で開催された(写真1)。企業や大学・大学院の研究者、そして高校生を含む若手エンジニアが、新しいアイディアと技術力で作り上げたクラウドコンピューティングの基盤ソフトウエアを披露した。 クラウドコンピューティングコンペティションは、奈良先端科学技術大学院大学の門林雄基准教授らの呼びかけで実現したイベント。若手のエンジニアがP2P(ピア・ツー・ピア)技術や分散データ処理技術といったクラウドコンピューティングの基盤技術を開発し、その成果を競う。検証環境として、情報通信研究機構(NICT)が運用するクラスタ環境「StarBED」のコンピュータを最大1000台まで使用可能で

    memcachedを超える成果も、Interopで若手技術者がクラウドを支える技術を競う
  • PHPの比較の素晴らしさ加減は正常

    if ("0x0A" == "10") { print '(´ε` )チュッ'; } チュッ。されちゃいます。 文字列であっても整数と解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうってのは有名な話だよね。 文字列であっても整数と解釈できる文字列の場合は自動的に整数に型変換してくれる超便利機能があるってのは有名な話だよね。 だけどなんでコレが一致するかわけがわからんかった。 0x0Aは10進数で10になるので一致する。と、言いたいところなんですがそう単純な話じゃないんだ。 以下の例を目ん玉見開いて見て欲しい。 var_dump(0x0A); var_dump("0x0A"); var_dump((int)"0x0A"); var_dump((float)"0x0A"); var_dump(intval("0x0A")); 実行結果 int(10) string(4

    PHPの比較の素晴らしさ加減は正常
    xnights
    xnights 2009/06/18
  • FluentDOM – jQueryライクなPHPのDOMElementラッパー | 秋元@サイボウズラボ・プログラマー・ブログ

    サーバ側(PHP)とクライアント側(Javascript)でDOMアクセスの書き方が異なるのが面倒、ということへの回答か、FluentDOMというPHPプロジェクトが始まっていました。 jQueryライクに、ということですけど、要素の選択はCSSセレクタじゃなくてXPathで行ないます。PHPのDOMDocument, DOMXPathを使ってるからこっちの方が実装が楽だということらしいです。(CSSセレクタからXPath表記への変換もToDoには入っています) 全部の のテキストを抜き出すという処理を、素のPHPで書いたのと、FluentDOMで書いてみました。 <?php $xml = <<<XML <html> <head></head> <body> <div> <p>Hello</p> <p>cruel</p> <p>World!</p> </div> </body> </ht

  • 見直されるべきPHP5の組み込みイテレータ - hnwの日記

    PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日語の資料が少ないせいか、かなり知名度は低いように思います。記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い

    見直されるべきPHP5の組み込みイテレータ - hnwの日記
  • CakePHP アプリケーション実行の流れをシーケンス図で書いてみた

    CakePHP関西勉強会での発表のためにアプリケーション実行の概要をシーケンス図で書いてみました。 具体的にはDispatcher#_invoke()[cake/dispatcher.php]が、コントローラ・コンポーネント・ビュークラスの各メソッドを呼び出す流れです。これを見るとアプリケーション側の各メソッドがどの順序で呼び出されるかが分かります。 なお図にあるUserControllerとUserComponentは、アプリケーションで定義しているものです。 勉強会での発表資料に解説があるので、そちらも参考にして下さい。 @see CakePHP関西勉強会終了しました&発表資料 cakephp_dispatcher__invoke_sequence.pdf

  • PHPで冗長化したコードを自動で検出してコードの最適化に使える「PHPCPD」:phpspot開発日誌

    Detecting duplicate code in PHP files : CodeDiesel PHPで冗長化したコードを自動で検出してコードの最適化に使える「PHPCPD」。 プログラムが大きくなってくると、同じような処理を違う場所で何度もやっているということがあります。 ソースコードのファイル数が多くなってくるとそれを探すのは大変ですが、その冗長部分を自動で検出できるPHP Copy Paste Detector(CPD)のご紹介。 使い方の流れが書かれていたので、試してみました(Windows上で実施) PHPCPDをPEARコマンドでインストールする 1) channel-discover でpearチャネル追加 Windowsの場合はコマンドプロンプトを開いて、pear コマンドを実行。Unix系でも同様にpearコマンドを実行> pear channel-discover

  • PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」:phpspot開発日誌

    PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」 2009年03月25日- XHProf Documentation (Draft) PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」。 通常、PHPでのプロファイリングというと、Xdebugでファイルを吐き出して、WinCacheGrindやKCacheGrindで読み込むというのが定番です。 ですが、この方法だと、ファイルを吐き出したファイルをGETして、ソフトに読み込ませる、というちょっと面倒な手順が必要でした。 XHProf を使えば、ブラウザ上で、プロファイリングが出来るみたいです。 XHProfの特徴 まず、セグメントごとの実行時間やメモリ利用の状況なんかがブラウザで見れます。 プログラムの構造を把握するのにも使えます。 プロファイリングの階層表示 2つのプロファ

  • 634 - PHPとWEBサービスを使って初代googleのアーキテクチャを勉強する

    This domain may be for sale!

  • PHPのsort関数は相当おかしい - hnwの日記

    追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、<、==、>が推移律を満たすので、この記事のような矛盾は起こりません。念のため。 オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介 sort ― 配列をソートする 説明 bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。 PHP: sort - Manual マニュアルをみる限り普通のソート関数です。省略可能な2番目の引数の意味は次の通りです。 sort_flags オプションの 2 番目のパラメータ s

    PHPのsort関数は相当おかしい - hnwの日記
  • PHP:既知のセキュリティ脆弱性 – Session Adoption

    (Last Updated On: 2018年8月13日)追記:より新しい情報については間違いだらけのHTTPセッション管理とその対策をどうぞ。 PHPには広く知られているにも関わらず放置されている既知のセキュリティ脆弱性が幾つかあります。その一つがセッションモジュールのセッションアダプション(Session Adoption)脆弱性です。この脆弱性は現在広く利用されているWebアプリケーションの安全性に、非常に大きな影響を与える脆弱性です。 セッションアダプション脆弱性とはセッション固定化攻撃を可能とする脆弱性の一種です。セッションアダプションに脆弱なセッション管理システムは、ユーザ(ブラウザ)が送信してきた未初期化のセッションIDを受け入れ、セッションを初期化してしまいます。PHPに限らず、RailsJavaのフレームワーク等、多くのWebフレームワークに発見されている脆弱性です。

    PHP:既知のセキュリティ脆弱性 – Session Adoption
  • PHP_LexerGeneratorとPHP_ParserGeneratorを利用して PHPで独自の言語を実装する方法

    はじめに 計算機用言語の処理には決まった方法があります。文字列で与えられた言語は、字句解析によってトークンに分けられ、構文解析によってトークン同士が結びつけられ、意味解析によって解釈されます。 字句解析を行うプログラムが字句解析器(lexer)、構文解析と意味解析を行うのが構文解析器(parser)です。字句解析器としてはlexあるいはflex、構文解析器としてはyaccあるいはbisonが有名で、資料も豊富にありますが、いずれもC言語で利用することを想定したソフトウェアです。 PHPで利用できる字句解析器としてはPHP_LexerGeneratorが、構文解析器としてはPHP_ParserGeneratorがあります。稿では、簡易電卓を実装するという例を通じてPHP_LexerGeneratorとPHP_ParserGeneratorの使い方を紹介します。 必要な環境 XAMPP fo

    PHP_LexerGeneratorとPHP_ParserGeneratorを利用して PHPで独自の言語を実装する方法
  • Javaで実装されたPHPエンジンQuercusはC言語で実装されたPHPより早い - HotPHPPER News

    Jean-Christophe MartinによるブログにQuercus (PHP implementation in Java) is faster than the C version」という記事が掲載されました。 この記事によるとResinというServlet Container + Web Serer の上で動くPHPエンジンのQuercusというものがあり、それはC言語で実装されたPHP(普段使用されているPHPです)より高速に動作するというものです。 ブログにある内容はResin 3.0.18 performance notes | Caucho Forumsからの引用のようですが、簡単なファイルアクセスのベンチマークとMediaWikiやDrupalを動作させたときのベンチマークが掲載されています。 QuercusはPHP 5相当を実装しているようで、その他の情報として公式サ

  • Openpear

    Openpear is a PEAR Repository Channel and Subversion Hosting Service. since November 2008 以前からお使いですか? 以前の Openpear をお使いだった方は、以下のコマンドを実行する必要があります pear channel-update openpear.org チャンネルを登録する pear channel-discover openpear.org 利用可能なパッケージをリストする pear remote-list -c openpear パッケージをインストールする pear install openpear/package_name バージョンや安定性を指定してパッケージをインストールする pear install openpear/package_name-1.0.0 pear insta

  • PHP 5.3の名前空間仕様が変更されました

    (Last Updated On: 2018年8月13日)名前空間に関する議論は5年以上も行われていたのですが、今度こそ結論が出たようです。 何故このようなエントリを書くかというと、Software Design(技術評論社)の11月号にPHPの最新情報としてα版PHP 5.3を紹介しているからです。入稿後に仕様変更があったので最新号の記事ですが既に内容が古くなってしまいました。 # とは言ってもまだ新しい仕様のPHPは無いですが α版なので仕様や機能が大きく変更される事もありますが大きな変更がありました。見誌が刷り上がった頃に名前空間の区切り文字が”::”だと静的にメソッドを呼び出す場合やクラス定数を呼び出す場合に困る場合がある、とPHP開発者のMLで議論になり始めました。 ML上、IRC上、オフラインの打ち合わせが行われ、数週間におよぶ議論の結果が昨日MLに投稿されました。名前空間の

    PHP 5.3の名前空間仕様が変更されました
    xnights
    xnights 2008/10/27
    \は微妙。
  • PHPでのセキュリティ対策についてのメモ - Liner Note

  • エクスギア技術系サイト PHP5限定 CakePHPのView内の関数処理を綺麗に記述する(邪道でしょうか?)

    PHP5限定 CakePHPのView内の関数処理を綺麗に記述する(邪道でしょうか?) CakePHPなどビューをPHPで記述する場合に、PHPの標準関数を利用することが多々あります。標準関数自体は豊富なものが揃ってますが、連続して処理を行いたい場合にどうしても読みづらい記述になってしまいます。PHP5にはクラス内にAutoloadの機能があり、これを利用して連続して関数処理を行う方法を検討します。 今回の事例ある変数に長文のテキスト文字列が入っていて、それを表示する際に以下の処理を行うケースを例とします。 文字列を先頭から100文字にカットする 英数字を半角にする HTMLエスケープ処理をする 改行コードをbrタグに変換する 表示PHPの標準関数だけで(一行で無理矢理)記述した場合 <?php echo nl2br(htmlspecialchars(mb_convert_kana(mb_