hnwの日記

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

浮動小数点数の丸め処理を見比べてみる

各種プログラミング言語には、切り上げ・切り捨て・四捨五入など浮動小数点数を丸める関数が何種類もあります。こうした丸め処理を利用する際、「ceilとfloorどっちがどっちだっけ?」「マイナスの数が来た時の挙動って大丈夫なんだっけ?」などと不安になる…

PHPの新しいround関数を読み解く (2)pre-roundingの意味

(2011/10/18 01:50)「他の言語で試してみる」「誰が正しいのか?」を追記しました。また、初心者への対策と強調しすぎて誤解を招いた気がしたため、少し表現を変更しました。 前回記事「PHPのround関数を読み解く (1)丸め桁数が大きすぎ・小さすぎる場合」に…

PHP5.3.4から5.3.6までのround関数がときどき丸めすぎてたのが直った

PHP5.3.4から5.3.6のround関数に問題があるんじゃないか、と僕がバグ報告していた件(PHP :: Bug #54334)が、PHP5.3.7から修正されています。僕のバグレポには特に返事もないので、全く独立に修正されたんだと思います。PHP5.3.7のChangeLogには次のような…

PHPのround関数を読み解く (1)丸め桁数が大きすぎ・小さすぎる場合

PHPのround関数はPHP5.3.0で一新されましたが、その挙動は複雑です。以前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった」では典型的な挙動を紹介しましたが、実際はもう少し細かい場合分けがあります。僕自身の整理も兼ねて、RFC*1およびPHP…

第4回Symfony2勉強会でLT発表してきました

PHP

去る6月4日、第4回Symfony2勉強会でLT発表してきました。以下が発表資料です。 発表資料:「PHPUnitのMockObjectの紹介」(slideshare版)(PDF版) 僕だけSymfony2と何の関係があるの?という感じのタイトルでしたが、案外好評だったように思います。懇親会でも…

GitHubへpull requestする際のベストプラクティス

みなさん、Git使ってますか?僕はまだメインのVCSがSubversionなのもあって、なかなか慣れません。せっかくGitを使っているのに、ちょっと不便なSubversionくらいの位置づけです。でも、同じような理解度の人って多いんじゃないでしょうか。一方で、最近はGi…

Emacs+Firefox+MozReplでファイルセーブと同時にリロード

Webアプリケーションの開発効率向上のため、Emacsでファイルをセーブすると同時にFirefoxをリロードするような仕組みをMozReplというFirefox拡張を利用して実現しました。毎度おなじみ、数年前に流行ったネタを蒸し返すコーナーです。 MozRepl拡張を使えば、…

PHPの新しいround関数にバグをみつけた

PHP 5.3.0以降、PHPのround関数の挙動はChristian Seilerさんが提案したRFCに従って一新されています。この新しいround関数の仕様上の問題もしくはバグを見つけました。 以前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった」でこの新しい実装…

『体系的に学ぶ 安全なWebアプリケーションの作り方』のススメ

(2011/03/04 14:00 追記)id:shin1x1さんのはてブコメントに基づきheader関数の挙動について修正しました。ご指摘ありがとうございました。 徳丸浩さん(id:ockeghem)が書かれたセキュリティ本『体系的に学ぶ 安全なWebアプリケーションの作り方』が3/1に発…

PHPの日付文字列の解釈ルールがドキュメント化されました

PHP

PHPのstrtotime関数やDateTimeクラスは、様々なフォーマットの日付文字列を解釈し、時刻として取り扱うことができます。たとえば次のような文字列を解釈することができます。 "Wednesday July 23rd, 2008"(=2008年7月23日) "first Wednesday July 23rd, 2…

PHPの独特な正規表現関数:mb_ereg_search

PHP

直前の記事「mb_ereg_replace関数でe修飾子を使う際の注意点」で利用しているmb_ereg_search_ナントカという関数群は特徴的な関数ですが、あまり使用例を見ない関数です。今回はこの関数群の概要を紹介します。 この関数群は正規表現マッチを行うmb_ereg系関…

mb_ereg_replace関数でe修飾子を使う際の注意点

PHP

mb_ereg_replace関数でe修飾子を使ってevalする場合の注意点をまとめてみました。 概要 マニュアルの下記引用部にもあるとおり、mb_ereg_replace関数はe修飾子の指定があっても特にエスケープなどを行いません。 信頼できない入力に対しては、絶対に e 修正…

2010年をふりかえる

年末恒例イベントのはずが、新年1発目に去年を振り返ることになってしまいました。来年の話をすると鬼が笑うらしいですが新年そうそう去年の話をすると誰が笑うんでしょうね。とにかく2010年を振り返ってみます。 2010年も書いた 2010年は、このブログ上で24…