2008-01-01から1年間の記事一覧

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の追加 モジュール毎のオート…

Agavi-0.11.3RC1 Agavi-1.0beta2リリース

0.11.3RC1と1.0beta2がそろってリリースされたようです。1.0beta2からはアクション・ビュー・モデルのそれぞれの命名規則が厳密化され、たとえばmodules/Foo/action/Bar/BazAction.class.phpに配置されるアクションの場合はFoo_Bar_BazActionという名前にす…

MobilePictogramConveter PHP5対応版を更新

PHP

MobilePictogramConverterをPHP5に対応させたものを以前公開しましたが、全く動作確認をしていませんでした。今回はPHPUnit3によるテスト追加して一応動作確認を取ったのものを公開します。MobilePictogramConverter-1.2.0-php5

phpgeomobilejpを使ってみた

PHPで携帯の位置情報を扱うライブラリphpgeomobilejpを使ってみた。使い勝手がよさげ。ただ、format変換をかけたとき誤差が出るので注意が必要です。via: PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」を作りました

convert from camelCase to snake_case

キャメルケースからsnake_case(アンダースコア)に変換するメモ 1) echo strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), '$1_$2', $argv[1])), PHP_EOL; ?>

PHP<5.3での遅延静的束縛エミュレート

PHP5.3からは遅延静的束縛(Late Static Bindings)によって子孫クラスの静的メソッドを呼び出すことができるようになった。 同じことを5.3より前のバージョン*1で行う方法 = 5.3 (Late Static Bindings) echo '-- use sta…

Agavi-1.0BETA1リリース

ついに1.0系が来ました。とりあえずBETA1です。では早速アナウンスメール邦訳です。(一部、文が長かったので箇条書きに改めてあります。) こんにちは皆さん。3年強の開発の末、Agaviはついに最初の1.0マイルストーン 1.0.0 beta 1のリリースを迎えました! h…

「?:演算子」使える場面Part2

PHP

Doctrineは検索結果が0件の場合falseを返してくることを思い出した。ということはこれだ find($user_id, Doctrine::FETCH_ARRAY) :? array('user_id'=>'anonymous'); ?>

「?:演算子」使える場面だってあるさ!

PHP

そろそろそろそろ「?:演算子」について一言言っておくかに一言言っておくか最近、配列で利用する可能性のあるキーすべてをとりあえず初期化するようにしている。 null, 'enable_hoge'=>false, 'name'=>'nobody' ); ?> なので、 'anonymous', 'enable_hoge'=>…

PHP4お疲れ様

PHP

今日でEOLを迎えたPHP4 今までありがとう。

MobilePictogramCoverterを使おうと思った

PHP

MobilePictogramConverterを使おうと思った。ブログで報告されているバグがあるようなので修正してた。 それとPHP5的にグローバル定数ってどうなのよってことで、グローバル定数をMobilePictogramConverterクラスに取り込んでみた。 そして今、修正版を公開…

Subversion-1.5でsvn:externalsに相対パスを使う

subversion-1.5からsvn:externalsに相対パスを使えるようになったというので使おうとして少しはまったのでメモ。エイリアスと参照先の順番が逆になっている。すなわち、相対パスを指定する場合、今まで同じレポジトリ内のprojectAからprojectBを/projectA/tr…