CSV_Iteratorをリリースしました

PHP

CSVファイルをイテレートするためのクラスCSV_Iteratorをopenpearでリリースしました。 コンストラクタの第二引数で入力ファイルのエンコードを指定でき、Shift_JISやUTF-16,ISO-2022-JPなどでエンコードされたファイルも扱うことができます。 また、コンス…

第45回PHP勉強会参加してきました

PHP

ということで、表題どおり第45回PHP勉強会に参加してきました。 今回は六本木にあるお好み焼き屋「はてな」さんを3時間半貸し切って飲み食いしながらの大LT大会でした。長時間の貸切を安価で提供していただきありがとうございました。 僕の発表は自己紹介程…

NetBeansのPHPエディタのインデントが気に入らない

どうもインデントが気に入らない。 {直後のコメントのインデントが崩れる ブロックを開いた直後のコメントブロックがブロック外のインデントレベルに揃えられてしまいます。

CicindelaのwebAPIラッパをopenpearで公開

これからPHP製レコメンデーションエンジンをリスペクトCicindelaな感じで作っていこうかと思っているわけですが、WebAPIに関しては申し分ないのでCicindelaのWebAPIをPHPから叩くためのライブラリを作成して、openpearで公開しました。 仕事の時間に作ったの…

レコメンドエンジンを検討してみた

運営してるサイトへレコメンド機能を導入するため、レコメンドエンジンをどうするか検討している。 考えられる選択肢は現段階では3つ。 Cicindelaの導入 Vogooの導入 新規エンジンの構築 とりあえず、前者二つを比較検討してみる。 Cicindela Vogoo 実装言語…

Thumbs.dbをコミットする輩に対処しろとの命令を受けた

ということでここを参考に次のpre-commitスクリプトを作ってみた。 #!/usr/bin/php

第41回PHP勉強会@関東で発表してきました

PHP

タイトルどおりです。第41回PHP勉強会@関東でAgaviの宣伝をしてきました。資料作りが間に合わなかったので最後がグダグダでしたが、どうだったでしょうか。 明日以降に資料をうpします。忘れてたらワッサーなどで発破をかけてください。多分忘れます。なん…

きちんと伝えられなくて申し訳ない

id:yoyaさんが発表内容に触れてくれていたんですが、きちんと伝えられていなかったようなので補足させていただきます。 冒頭のフレームワーク話しは XSS対策で入力バリデート強化って時点で…なんていうか、サニタイズ言うなや的な… XSS脆弱性の報告によって…

Agavi 1.0.0がついに出ました。

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なんかを…

0.11.5以前1.0.0beta7以前のバージョンにXSS脆弱性が発見されています

RFC 3986に従っていない一部のブラウザ(Microsoft Internet Explorer 6,7)からのリクエストによりREQUEST_URIやQUERY_STRINGが汚染される問題により、下記のメソッドの戻り値が汚染される問題が判明しました。 AgaviWebRouting::gen(null) 'bar') )などは除…

TokyoTyrantが突然落ちた

TokyoTyrantが突然落ちてサービスが停止してしまいました。それも夜中の3時に。 たまたま別の問題が発生していて対応に追われていたので早めに気がつくことができました。 しかし、原因が全くつかめずTTの再起動を試みたり、出力ファイルやpidファイルに問題…

mb_えんこで_みめへあでr

PHP

もしかして:mb_encode_mimeheaderローマ字入力のまま検索して悲しかったので、同じ間違いを犯した人がたどり着くことを望んで ここに記す。

factories.xmlで定義されたクラスの初期化順序

factories.xmlで定義されるシステムクラスの初期化のタイミングが気になったので調べてみた。以下はfactories.xmlのコンパイルキャッシュです。 databaseManager = new AgaviDatabaseManager(); $this->databaseManager->initialize($this, array ()); $this…

hasManyしたレコードはあんまりjoinしない

DoctrineでhasManyした(1対多あるいは多対多の関係にある)レコードを複数joinすると劇的に遅くなります。 Doctrineがよしなにやってくれるかと思いきや単純にjoinしてしまうので、結果セットが爆発的に膨れ上がります。今回は5つほどjoinしたら1700行強返…

Agaviで生成されるmod_rewrite

Agaviのコマンドで生成される.htaccessに書かれているmod_rewirteは RewriteRule ^$ index.php?/ [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?/$1 [QSA,L]これだとディレクトリが存在して…

国籍法改正問題

政治の話題はmixiの方で書くようにしてましたけど、大垣さん同様に僕もこの件はとても重要な問題であると考えていますので、こちらでも取り上げさせてもらいます。僕はとりわけ、「虚偽認知」に対する罰則の甘さと「認知」に対する審査の甘さに危機感を持っ…

BooleanValidator

なかったので作ってみた * * @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を用いて制作した複数のサイトでディレクトリトラバーサル脆弱性が見つかり、これはフレームワーク外の実装に問…

International PHP Conference 2008

ドイツのマインツで行われる国際PHPカンファレンス2008(International PHP Conference 2008)でAgaviの公演が行われるそうです。 是非とも行きたいところですが、何せドイツは遠い。 あと、参加するAgaviユーザのためにAgaviTシャツも用意しているそうです。…

Agavi-0.11.4リリース

Agavi-0.11.4がリリースされました。 以下リリースアナウンスの邦訳 今日は皆さんAgavi 0.11.4 がでました!これは0.11.3で導入されたサンプルアプリの問題やautoload.xmlへのクラス記入漏れといった諸問題の修正をおこなったメンテナンスリリースです。 ま…

Agavi-0.11でシステムアクションをcontextごとに分ける

Agavi-0.11でデフォルトアクション、ログインアクション、セキュアアクション、Error404アクションなどのシステムアクション(system-actions)の定義はsetting.xmlで行うが、ここではcontextによる分岐は例外テンプレートを除いては利用できない。 そこで、ど…

携帯GPS位置情報取得方法まとめ

結構はまったので書いておきます。 docomo <a href="[普通のURL]" lcs="lcs">なんたら</a> au <a href="device:gpsone?url=[urlエンコードした絶対URL]&amp;ver=1&amp;datum=0&amp;unit=0">なんたら</a> SoftBank <a href="location:auto?url=[普通のURL]">なんたら</a> ソフトバンクのURL指定が普通のURLなのにハマった。

2点間距離(1点からの距離)による検索方法3

一つ目にトラックバックが付いていたので補足 もう少し説明すると、半径 r の検索をするとして、UTM上で1辺 2r の外接矩形を求めますよね。 その矩形の四隅の点自体は、経緯度座標に戻しても、中心点から √2r の距離を持つ点として意味を持ちますが、いかん…

2点間距離(1点からの距離)による検索方法2

今回は昨日書いたexpand_by_meterについてもう少し考察してみたいと思います。 昨日書いたexpand_by_meterは与えられた点を一度最適なUTM上に射影し、UTM上でのバウンディングボックスを生成して再射影して元の座標系でのジオメトリを得るというものでした。…

2点間距離(1点からの距離)による検索方法

via: ここギコ!:PostGISで1点からの半径検索は、UTMなりに変換してから検索するのがベストプラクティス?, ここギコ!:PostGISのGeospatial化大作戦 その3(デタラメ編) 最近、GISにかかわり始めたばかりなので間違いかもしれませんが、上記ふたつを元…

ifとswitchどっちがはやいねん(文字列比較)

ということでベンチとった。

php_pharが入っているとgo-pearが動かない

PHP

Windowsでphp_phar.dllを読み込んだ状態だと下記メッセージが表示されgo-pearが動かないです。 E:\Program Files\PHP>go-pear.bat phar "E:\Program Files\PHP\PEAR\go-pear.phar" does not have a signaturePHP Warning: require_once(phar://go-pear.phar/…

Agavi-0.11.3RC1リリースアナウンス

やあ、みんなAgavi 0.11.3RC1 がでたよ!このメンテナンスリリースはPEARパッケージ生成やgettextの複数形の取り扱いといった幾つかの小さな問題の修正と幾つかの新しい機能追加がなされています。 データベースハンドラは接続後に任意のSQL文を送れるように…

Agavi-1.0.0beta2リリースアナウンス

やあ、皆さん。1.0.0 beta 2 がでました!beta1リリースでの諸問題の修正と幾つかの変更や改良を行いました。大きい事柄を列挙します: モデルでアクション形式のドット記法(Foo.Bar.Baz)の追加 モジュール毎のconfig_handlers.xmlの追加 モジュール毎のオート…