タグ

ブックマーク / hnw.hatenablog.com (16)

  • PHP勉強会10年の歴史をふりかえる - hnwの日記

    PHP勉強会@東京が今月で10周年の節目ということで、大変めでたいですね。僕にとっては初めて参加・発表した社外勉強会だったこともあり、不思議な感慨があったりします。 そこで、ふと思いついてPHP勉強会の10年を表形式でまとめてみました。古参の人が懐古する以外の用途はほぼ無いと思いますが、現在の参加者の方や他の勉強会の運営をしている方の参考になる部分が1%くらいはあるかもしれません。 (企業名などは全て当時の名前です) 2005年 開催日 募集ページ 募集人数 会場提供 幹事 2005-06-18 (土) 第1回PHP勉強会 in Tokyo 24 株式会社HDE ELF 2005-07-23 (土) 第2回PHP勉強会 in Tokyo ? 株式会社HDE ELF 2005-08-28 (日) 第3回PHP勉強会 in Tokyo ? 株式会社ぷらっとホーム ELF 2005-09-18

    PHP勉強会10年の歴史をふりかえる - hnwの日記
    cocoiti
    cocoiti 2015/06/24
    忙しかったのもあるのだけど、自分が偏食で店のチョイスにことごとく失敗してたので、空気よめる幹事の方々に頼った次第。
  • PHPで素数を数えて落ち着いてみた - hnwの日記

    2,3,5,7,11,13,...と素数を順に列挙することで落ち着く人が世の中にはいるようです(参考:「素数を数えて落ち着くんだ…」)。とはいえ人力では素数を100個列挙するのさえつらいので、プログラミング言語に頼った方が落ち着けるはずです。PHPには、そんな状況で使えそうな関数が存在します。 gmp_nextprime ― 次の素数を見つける PHP: gmp_nextprime - Manual よし、この関数さえあれば落ち着けるぞ、と思いきや、マニュアルにはこんな記述もあります。 注意: この関数は素数を識別するのに確率的アルゴリズムを使用します。 誤って合成数を取得してしまうことは、まずありません。 PHP: gmp_nextprime - Manual えっ?「まずありません」ってことは少しくらいはあるんでしょうか。逆に不安で落ち着かなくなってしまいそうです。 稿ではこの関数に

    PHPで素数を数えて落ち着いてみた - hnwの日記
    cocoiti
    cocoiti 2014/04/24
    こういう記事みてるとPHPやっててよかったって理由もなく思ってしまう
  • PHPカンファレンス2013でZend OPcacheについて発表しました - hnwの日記

    9月14日に開催されたPHPカンファレンス2013で発表してきました。以下が発表資料です。 マニアックな内容なのと、裏に面白そうな発表があったのでガラガラかと予想していたのですが、思った以上に盛況で驚きました。僕個人が伝えたかった内容は「PHPコア見るの楽しい」「Zend OPcacheは仕事上も趣味上も要注目」ということでした。どれくらいの人に伝わったかは不安ですが、この発表を機に興味をもってもらえれば嬉しく思います。 今回は廣川さんとテーマがかぶってしまって驚いたのですが、うっかりお昼ご飯に行っていて僕自身は廣川さんの発表を見られませんでした。プレゼン資料が公開されると嬉しいのですが…。 また、anatooさんやYahoo!の蒋さんもPHPの内部まで踏み込んだ発表をされていました。こうした発表を聞いて、「PHPのソースコードまで読んでみようかな」という人が少しでも増えてくれたらいいなと

    PHPカンファレンス2013でZend OPcacheについて発表しました - hnwの日記
    cocoiti
    cocoiti 2013/09/17
  • launchdで複数バージョンのPHP-FPMを自動起動する - hnwの日記

    (2016/8/9)PHP7やHomebrewの現状に合わせるため細かい点を修正しました。 MacOSX上で5.3/5.4/5.5の3バージョンのPHP-FPMを自動起動する設定を紹介します。 各バージョンのPHP-FPMを用意する方法については、前回記事「php-buildで複数バージョンのPHP-FPMを用意する」を参照してください。 launchdについて 多くのUnix系OSでは、OS起動時の自動起動スクリプトがinit.dもしくはrc.dといったディレクトリ以下に存在しますが、MacOSXではlaunchdというデーモンで置き換えられています。さらに、launchdはユーザー権限で動くデーモン起動にも利用することができます。今回はこれを利用してユーザー権限でnginxPHP-FPMを自動起動してみましょう。 実はlaunchdはcrondやxinetdの機能も実現している何でも

    launchdで複数バージョンのPHP-FPMを自動起動する - hnwの日記
    cocoiti
    cocoiti 2013/07/01
  • PHPのY10K問題 - hnwの日記

    PHPは他の言語と同様に、時刻を扱う際にunix epochからの経過秒数(いわゆるunix time)を利用しています。PHP5.2.6以降では、64bit環境であればunix timeも64bitに拡張されています。これで2038年問題も過去のものになるというわけです。 一方、unix timeが64bitに拡張されたことでカオスな結果になることがあるようです。64bit環境のPHP5.2.11で気づいた点を紹介します。 strtotimeが西暦10K年以降に対応していない <?php var_dump(strtotime("9999-12-31 23:59:59")); // int(253402268399) var_dump(strtotime("+10000-01-01 00:00:00")); //int(946648800) ISO8601的に+10000という書き方は正し

    PHPのY10K問題 - hnwの日記
    cocoiti
    cocoiti 2010/02/25
  • PHPのsort関数は相当おかしい - hnwの日記

    追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、<、==、>が推移律を満たすので、この記事のような矛盾は起こりません。念のため。 オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介 sort ― 配列をソートする 説明 bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。 PHP: sort - Manual マニュアルをみる限り普通のソート関数です。省略可能な2番目の引数の意味は次の通りです。 sort_flags オプションの 2 番目のパラメータ s

    PHPのsort関数は相当おかしい - hnwの日記
    cocoiti
    cocoiti 2009/02/27
    roundからおやじへ/じゃあそーっとやります。というレスがなくて絶望
  • mb_check_encodingは何をチェックするのか(その3 UTF-8編) - hnwの日記

    (2009/10/05追記)「サロゲートペアに相当する3バイト表現も正しいとみなしている」という件はバグとしてPHP5.3.0から修正されているようです。id:moriyoshiさんに超感謝。 PHPのmb_check_encoding関数の調査、おそらく今回が最終回です。今回はUTF-8について調べてみました。 UTF-8 UTF-8というのはUnicodeのエンコーディング形式の一つです。当にざっくり言ってしまうと、ASCIIが1バイト、ヨーロッパ圏の文字が2バイト、漢字などが3バイトで表現されるようなエンコーディングです。 今回は、「UTF-8 - Wikipedia」を参考に、4バイトまでのビットパターンを全数調査しました。5バイト、6バイトも少し実験しました。 1byte : 0xxxxxxx 2byte : 110yyyyx 10xxxxxx 3byte : 1110yyyy

    mb_check_encodingは何をチェックするのか(その3 UTF-8編) - hnwの日記
  • mb_check_encodingは何をチェックするのか(その1 SJIS編) - hnwの日記

    (2009/02/15 17:20)「個人的な感想」を追記しました。また、下記はPHP5.2.1以降の挙動です。PHP5.2.0以前のmb_check_encodingは更にカオスなので、あまり使い物にならないと思います。 (2009/02/16 12:30)追記2:バグっぽいと思った件は当にバグで、修正がhttp://news.php.net/php.cvs/56276の通り取り込まれました。PHP5.2.9から修正される予定です。 (2009/02/22 16:20)追記3:他のエンコーディングについても調査しました。「(その2 EUC-JP編)」と「(その3 UTF-8編)」も合わせてご覧下さい。 PHPのmb_check_encoding関数が一体何のチェックをしているのか、エンコーディングごとに一通り調べてみます。 まずはSJISとSJIS-win(CP932)について調べてみ

    mb_check_encodingは何をチェックするのか(その1 SJIS編) - hnwの日記
  • Rubyの浮動小数点数リテラルの扱いは正しいのか - hnwの日記

    題名の通りなんですが、前回の記事「PHP以外全員不正解」に対して「ダウト!」を頂戴したのでまとめてみます。 Cのこの動作が、唯一無二絶対のものであるとする根拠はどこにあるのでしょうか? strtod によれば、 If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in ) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and

    Rubyの浮動小数点数リテラルの扱いは正しいのか - hnwの日記
    cocoiti
    cocoiti 2007/08/03
    ひゃっほう
  • PHP以外全員不正解 - hnwの日記

    いまだにround関数のまとめは出来ていません。そろそろ皆様に忘れられる前にまとめなきゃな、とは思っていますが、もうしばらくお待ちください。今回は微妙にround関数と近いような遠いような話題です。 巨大な数の丸めについて実験しているうちに、PHPだけ正解でPerlRubyPythonが不正解と思われる例を見つけました。普段の叩かれっぷりを考えるとPHPだけ正解なんて状態は有り得ない気がするのですが、僕には他の結論が導けませんでした。識者の皆様に「ダウト!」と指摘して頂ければ幸いです。 今回は、2の65乗のことを265と表現することにします*1。 265=36893488147419103232の次に大きいIEEE64bit浮動小数点数は265+213=36893488147419111424です。仮に、265+212+1=36893488147419107329を浮動小数点数に丸める

    PHP以外全員不正解 - hnwの日記
  • round関数その9:PerlのMath::Roundモジュールについて - hnwの日記

    少なくとも十数人は居ると思われる読者の皆様、ごぶさたしておりました。サボリのため、まとめ記事は全く書けていません。 さて、今回は他所の記事の紹介です。PerlのMath::RoundというモジュールにPHPと似たようなマジックナンバーが採用されているようです。 ここら辺の話を読みながらPerlってround関数ないよなあと思っていたんだけど,CPANモジュールで実装しているものがあった.それがMath::Roundなんだけども,ソースコードを見るとphpと似たような定数が使われている. てきとうなメモ -[Perl]Math::Round これは標準で入るモジュールではありませんし、大してメジャーなものでもなさそうですけど、CPAN経由で気軽にインストール可能なものです。インストールしてソースコードを確認すると、確かに下記のような記述が見つかります。 $Math::Round::half

    round関数その9:PerlのMath::Roundモジュールについて - hnwの日記
    cocoiti
    cocoiti 2007/07/04
    もはや、round日記
  • round関数その7:偶数丸め - hnwの日記

    いい加減まとめるか他の記事書けよって感じですが、まだまだround関数の続きです。実際のところ僕も結構飽きていたりします。 この一連のround関数の件について言及している記事を見ると、かなり怪しい知識レベルの人もいるように思います。そんな記事をいちいち斬っていてもキリが無いかなと思ったのですが、下記の内容を信じていそうな人を見かけました*1。なので渋々ツッコミを入れます。 なお、round関数は、四捨五入じゃないのはシステム業界では有名なお話。 「偶数丸め」は IEEE 754 で定められており、JIS や ISO にも同じ規定があります。 多くの Round() 関数の挙動もこの IEEE 754 に則った「偶数丸め」です。 「偶数丸め」は四捨五入とほぼ同一ですが、次の1点が違います。 「丸め単位の丁度まんなかで、どっちつかずの場合は、偶数側を採用する」 したがって、1.25 を 0.

    round関数その7:偶数丸め - hnwの日記
    cocoiti
    cocoiti 2007/06/18
  • round関数その5:そろそろ反撃していいですか? - hnwの日記

    さて、またまた「PHPの奇妙なround関数」の続きです。今回はタイトルからいきなり負けそうですけど、気にせずいきましょう。 Matzさんの記事に反論するにはかなり理論武装が必要だろうという考えから、ここ2回の記事は僕としても頑張って書いてきました。ただ、相当数の方が議論についてきていないのではないか、ということに気づきました*1。このページは僕が面白いと思ったことを他人に伝えるのが目的のはずなのに、あまり伝わらないようでは意味がなくなってしまいます。また、できれば面白さを伝えたいと思っているのですが、僕に余裕が無い内容を扱っていると伝えることさえ難しかったりします*2。 また、そもそも理論武装が必要な話になってたっけ?というと、そんなことはないんですよね。僕の想像ではMatzさんは感覚的なことを言っているだけで、具体的にこういうアプリケーションで害があるという話ではないように思います。一

    round関数その5:そろそろ反撃していいですか? - hnwの日記
    cocoiti
    cocoiti 2007/06/08
  • Pythonのround関数の議論を読んでみた - hnwの日記

    さて、round関数の続きの記事を周囲からも催促されている気がするんですが、まだまとめ切れずにいて僕自身困っていたりします。PHPを擁護するような方向の話をしようかと考えているんですが、なかなか難しくて正直気が重いです*1。PHPの中の人の意図も一回はわかったような気がしたんですが、またわからなくなりました。 そんなわけで、横道にそれるわけではありませんが、今回は少し気楽な話題でいきたいと思います。 PHPのroundの件と似た話題を調べていたら、偶然PythonのMLの議論を見つけました。以下のURLとその続きを読んでもらえればわかりますが、質問者は0.0225を小数点以下第3位までに丸めようとして、Python2.3.5だと0.023に、Python2.4.1だと0.022になることに気づきました。 http://mail.python.org/pipermail/python-lis

    Pythonのround関数の議論を読んでみた - hnwの日記
    cocoiti
    cocoiti 2007/06/06
  • 「===」がtrueを返し「==」がtrueを返さないサンプル - hnwの日記

    (2015/04/01追記)稿の内容はPHP 5.3.xまでに当てはまります。PHP 5.4.0以降はINF==INFになりました。「PHP 5.4.0から無限大==無限大がtrueになってた - hnwの日記」もご確認ください。 Yahooの入社試験だという、PHPについての22問の質問が話題ですね。どれも面白い質問で、特に口頭試問で使って相手の反応が見たい問題だと感じましたが、その8問目を見て驚きました。 8. 「===」は何をするか? 「==」がtrueを返し「===」がtrueを返さないサンプルを示せ。 Do You PHP はてな - Yahoo!PHPエンジニアを雇う時に聞く質問 単なる勘違いなんですが、僕は10秒くらい逆の意味に取っていました。「恐ろしくマニアックな質問をするんだなー、そんなことを知っているからって仕事の役に立つのか?」などと考えてしまいましたが、そんなわ

    「===」がtrueを返し「==」がtrueを返さないサンプル - hnwの日記
    cocoiti
    cocoiti 2007/05/25
    ===の偉い人
  • hnwの日記 - PHPの奇妙なround関数

    (2012/11/01追記) 4年ほど前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記」でお伝えした通り、PHP 5.3.0から別の実装が採用されており、ページで指摘しているような挙動のPHPは既に絶滅危惧種です。念のため。 さて、プログラミングの話題もたまには書いてみます。今回はPHPのround関数の挙動が変だ!という話題です。 round()は浮動小数点数を四捨五入する関数で、大抵の言語に同じ名前で実装されているかと思います。ではPHPのround関数の何が問題なのか、ちょっと試してみましょう。 $ uname -sro Linux 2.6.9-42.0.10.plus.c4smp GNU/Linux $ php --version PHP 5.1.6 (cli) (built: Feb 23 2007 06:56:38)

    hnwの日記 - PHPの奇妙なround関数
    cocoiti
    cocoiti 2007/05/16
  • 1