PHP
メリークリスマス! PHP Advent Calendarもいよいよ24日目に突入です。 昨日はxhprofについてでしたね。僕もパフォーマンスチューニングの際に使っています。手軽に利用できるのでお勧めです。さて、このエントリーでは表題の通りMVCについて書かせていただ…
社内では携帯向けAgavi拡張(KtaiAgavi/非公開)を作って利用しているけども、どうも使いにくいので設計を見直してみたい。折角なので公の場で開発しようかと思う。 キャリア判定 KtaiAgaviではキャリア判定をRequest初期化時にUserAgentを元に行っている。け…
PHPがデフォルトで生成するセッションIDの構成文字は何だろう。 マニュアルにはsession_id関数で指定できるセッションIDに制限があることは記述されています。 セッションハンドラによっては、セッション ID として使用できる文字に 制限がある場合がありま…
Doctrineでは、managerやconnectionの属性としてDoctrine_Core::ATTR_MODEL_CLASS_PREFIXに接頭辞を設定することができます。 また、Doctrine_CLIでyamlからモデルクラスを生成する場合は$config['generate_models_options']['classPrefix']を設定することで…
100回へ向けた折り返しとなる第51回PHP勉強会@関東に参加してきました。 前回の大盛況と打って変わって今回は大量のキャンセルなどにより8名分枠が余っていました。もったいない。 感想と突っ込み CodeIgniterのUnit_testクラスとHMVC (nekogetさん) CodeIgn…
昨日の続きで今日はHTML_Emojiを読んでみました。 処理は単純でUTF-8に変換したものをpreg_replace_callback使って絵文字っぽい私的領域を抜き出して連想配列のマップで置き換えるだけ! また、ソース読んだだけでも分かりますが、作者のベンチマークによる…
なんとなくXdebugでプロファイルをとってみたら、絵文字変換に半分以上持っていかれていたので絵文字変換を高速化したいなと思い動きだしました。 現在はMobilePictogramConverterをPHP5対応させたものを使っているのですが、他のライブラリも見ておこうと思…
第49回PHP勉強会@関東に参加してきました。今回も遅刻しました。すみません。準備を終えて出発しようとノートパソコンをシャットダウンしようとしたらWindows Updateがあると言われてて「まぁ平気だろ」と軽いノリで実行したら32件も有って家を出られません…
CSSをインライン展開してくれるライブラリのHTML_CSS_MobileのバグフィックスをCodeReposに投稿しました。 直したバグは二つありそれぞれ別ブランチを切ってコミットしてあります。そのうちopenpear版にも取り入れられるかと思いますが、必要な方はCodeRepos…
表題のような現象が起こった。仕方がないのでphp-5.2.11のソースを持ってきてpdo_pgsqlディレクトリでphpize;./configure;makeして出来上がったpdo_pgsql.soを/usr/lib/php/modules/pdo_pgsql-8.4.so*1にコピーして、/etc/php.d/pdo_pgsql.iniの参照先を変更…
PHPで使える単純ベイズ分類器(Navie Bayesian Classifier)がほしいと思ったので具体的な仕様をメモしておきます。将来的に造ろうと考えている人(含む自分自身)は是非ともこのメモを読んで希望をかなえてください! PEAR、openpear*1などpearチャネルからの配…
PHP5.3.0から標準で組み込まれるようになったPhar拡張ですが、こいつはPharアーカイブを扱うだけではなくtarやtar.gzも扱えます。また、それらを扱うためのストリームラッパーを提供しています。 ということで、ホントにPhar拡張を使ってtar.gzファイルを展…
Net_CicindelaでHTTP_Request2を利用してるんですが、なぜかAgavi-0.10から呼び出すとNet_CicindelaがアクセスするURLのクエリ部分の&が&になってしまう現象が起きました。 半日かけて調べた結果、HTTP_Request2が利用しているNet_URL2でデフォルトのク…
CSVファイルをイテレートするためのクラスCSV_Iteratorをopenpearでリリースしました。 コンストラクタの第二引数で入力ファイルのエンコードを指定でき、Shift_JISやUTF-16,ISO-2022-JPなどでエンコードされたファイルも扱うことができます。 また、コンス…
ということで、表題どおり第45回PHP勉強会に参加してきました。 今回は六本木にあるお好み焼き屋「はてな」さんを3時間半貸し切って飲み食いしながらの大LT大会でした。長時間の貸切を安価で提供していただきありがとうございました。 僕の発表は自己紹介程…
どうもインデントが気に入らない。 {直後のコメントのインデントが崩れる ブロックを開いた直後のコメントブロックがブロック外のインデントレベルに揃えられてしまいます。
これからPHP製レコメンデーションエンジンをリスペクトCicindelaな感じで作っていこうかと思っているわけですが、WebAPIに関しては申し分ないのでCicindelaのWebAPIをPHPから叩くためのライブラリを作成して、openpearで公開しました。 仕事の時間に作ったの…
タイトルどおりです。第41回PHP勉強会@関東でAgaviの宣伝をしてきました。資料作りが間に合わなかったので最後がグダグダでしたが、どうだったでしょうか。 明日以降に資料をうpします。忘れてたらワッサーなどで発破をかけてください。多分忘れます。なん…
id:yoyaさんが発表内容に触れてくれていたんですが、きちんと伝えられていなかったようなので補足させていただきます。 冒頭のフレームワーク話しは XSS対策で入力バリデート強化って時点で…なんていうか、サニタイズ言うなや的な… XSS脆弱性の報告によって…
via: http://blog.agavi.org/post/81642413/its-finally-done-agavi-1-0-0-has-arrived リリースアナウンスおよびリリースノートは近日中に翻訳して公開します。
NetBeansでAgavi利用のコードを書くときに便利なコードテンプレート public function execute${Target}(AgaviRequestDataHolder $rd) { ${cursor} } これをexあるいはetという省略名で入れておくとexecuteWrite,executeRead,executeJson,executeXmlなんかを…
RFC 3986に従っていない一部のブラウザ(Microsoft Internet Explorer 6,7)からのリクエストによりREQUEST_URIやQUERY_STRINGが汚染される問題により、下記のメソッドの戻り値が汚染される問題が判明しました。 AgaviWebRouting::gen(null) 'bar') )などは除…
もしかして:mb_encode_mimeheaderローマ字入力のまま検索して悲しかったので、同じ間違いを犯した人がたどり着くことを望んで ここに記す。
factories.xmlで定義されるシステムクラスの初期化のタイミングが気になったので調べてみた。以下はfactories.xmlのコンパイルキャッシュです。 databaseManager = new AgaviDatabaseManager(); $this->databaseManager->initialize($this, array ()); $this…
DoctrineでhasManyした(1対多あるいは多対多の関係にある)レコードを複数joinすると劇的に遅くなります。 Doctrineがよしなにやってくれるかと思いきや単純にjoinしてしまうので、結果セットが爆発的に膨れ上がります。今回は5つほどjoinしたら1700行強返…
Agaviのコマンドで生成される.htaccessに書かれているmod_rewirteは RewriteRule ^$ index.php?/ [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?/$1 [QSA,L]これだとディレクトリが存在して…
なかったので作ってみた * * @version $Id$ */ class BooleanValidator extends AgaviValidator { /** * Validates the input. * * @return bool * * @author MugeSo <mugeso@mugeso.com> */ protected function validate…</mugeso@mugeso.com>
Agaviに関する誤った脆弱性報告が出回っていたようです。ref:False Agavi Vulnerability Reports 簡単に言うとフランスのある代理店がAgavi-0.11を用いて制作した複数のサイトでディレクトリトラバーサル脆弱性が見つかり、これはフレームワーク外の実装に問…
ドイツのマインツで行われる国際PHPカンファレンス2008(International PHP Conference 2008)でAgaviの公演が行われるそうです。 是非とも行きたいところですが、何せドイツは遠い。 あと、参加するAgaviユーザのためにAgaviTシャツも用意しているそうです。…
Agavi-0.11.4がリリースされました。 以下リリースアナウンスの邦訳 今日は皆さんAgavi 0.11.4 がでました!これは0.11.3で導入されたサンプルアプリの問題やautoload.xmlへのクラス記入漏れといった諸問題の修正をおこなったメンテナンスリリースです。 ま…