2013-01-01から1年間の記事一覧
浮動小数点数の丸めにおいて丸め桁数を指定でき、それでいて精度を失わないようなround関数をCで実装してみました。 https://github.com/hnw/precise-round 実装としては、受け取った浮動小数点数から最短になる10進表記に変換し、浮動小数点をズラすことな…
(12/29 20:40追記)「(追記)なぜMySQLのdecimal型を例に使ったかについて」というセクションを追加しました。また、コメントを頂戴したので返信しました。 (12/29 21:30追記)C#について言えば「Math.Round メソッド (Double, Int32)」に内部実装がどうなっ…
ノートPCを使っているとディスクの空き容量が不足してくることがありますよね。僕の場合、$HOME/src/php以下にPHP 5.0.0から5.5.5まで88バージョンのPHPのソースコードを展開しているのですが、このサイズが約8.9GiB、約110万ファイルと恐ろしい量であること…
先週、MacBook Air 11inch Late 2010にMacOSX Mavericksをインストールしてみました。まだ時々違和感がありますが、もう1ヶ月もすれば細かい問題点も消えてくるのではないでしょうか。 しかし、Mavericks上でOSSをビルドしようと思うと案外苦労するかもしれ…
先日の記事「PHPのジェネレータの実装を調べてみた」で僕は次のように書きました。 GeneratorクラスはIteratorインターフェースを実装しており、対応するPHPメソッドを持っています。また、Cで実装した場合のみ指定できるイテレータ関数も実装しています。こ…
PHP 5.5で実装されたジェネレータについて、PHPのソースコードを追いかけてみました。ボチボチ追いかけたつもりですが、間違いや説明不足に気づいた方はツッコミをお願いします。 該当箇所のgithub.comへのリンクも作ってみました。カギ括弧で囲った場所がソ…
PHPにはイテレータの仕組みがあります。イテレータクラスのインスタンスは、配列同様にforeach文でループを作ることができます。たとえば次の例を見てみましょう。
9月14日に開催されたPHPカンファレンス2013で発表してきました。以下が発表資料です。
OpenSSH 6.2p2のAndroid用パッチを書きました。ビルドにはOpenSSLとldnsが必要です。 https://gist.github.com/hnw/6265015 記憶が曖昧なのですが、作業内容を書いておきます。 OpenSSH snapshot のAndroid関連の修正を取り込み ldnsの動作にOpenSSLが必要な…
7月22日に開催された第70回PHP勉強会で発表してきました。以下が発表資料です。 浮動小数点数周りのトピックを3点紹介する内容でしたが、思ったより反応が良かったように思います。 ただ、面白おかしく話そうとして、聞いている方々に無駄に恐怖を与えてしま…
PHPのextensionにはPHP extensionとZend extensionという2種類があります。これらの違いが何なのか、PHPの実装レベルから調べてみました。 PHPのextensionについて PHPのextensionには2種類が存在します。これらは次のようにphp.iniでロード指定する構文が異…
(2016/8/9)PHP7やHomebrewの現状に合わせるため細かい点を修正しました。 MacOSX上で5.3/5.4/5.5の3バージョンのPHP-FPMを自動起動する設定を紹介します。 各バージョンのPHP-FPMを用意する方法については、前回記事「php-buildで複数バージョンのPHP-FPM…
(2016/8/9)PHP7やHomebrewの現状に合わせるため細かい点を修正しました。 ついにPHP 5.5.0がリリースされましたね!これに関連して、php-buildを使ってPHP 5.3/5.4/5.5の3バージョンのPHP-FPM環境を用意する方法を紹介します。 この記事は「phpenv + php-b…
(2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があ…
3月27日に開催された第66回PHP勉強会でLT発表してきました。以下が発表資料です。 発表内容は、 PHP-FPMとuWSGI+PHP pluginを試してみた話と、PHP-FPMの面白機能紹介といった内容です。 個人的にPHP-FPMの記事は絶賛記事が多すぎて気持ち悪いと感じていたの…
誰得な内容ですので簡潔に。 #include "Zend/zend_interfaces.h" // (略) zval *zp; // (中略、この間にzpに意味のある値が入ったとする) // zpの型が何だろうと綺麗に表示! zend_call_method_with_1_params(NULL, NULL, NULL, "var_dump", NULL, zp); Z_…
3月2日に開催された第四回闇PHP勉強会で発表してきました。以下が発表資料です。 発表内容は、 Travis CIでPHP extensionのCIをする方法についてです。同じことをしている人があまり居ないように思ったので紹介してみましたが、少なくとも一部の人には好評だ…
リリースが間近になったPHP5.5ではジェネレータが導入される予定です。これはイテレータを簡単に記述する文法を導入するもので、Pythonのジェネレータに非常に良く似ています。 もう少し詳しく説明しましょう。PHP5.5では、yieldというキーワードが導入され…
あけましておめでとうございます。本年もよろしくお願いいたします。 唐突ですが、Haskellを少しやってみたので、その感想を書いてみます。 僕は正月休みにHaskellでProject Eulerに挑戦していました。これは、数学っぽい問題をプログラムを書いて解いていく…