タグ

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

  • 日本語のパスワードジェネレータを作ってみた - hnwの日記

    Webサービスを使っていると、たまに「秘密の質問」の設定を求められることがあります。 こういう場合、個人的にはランダム文字列を登録したいと思うのですが、次のようにマルチバイト文字しか登録できないことが多い気がします。 普通のパスワードジェネレータではマルチバイト文字のパスワード生成ができないので、このような用途には使えません。そこで、ランダムなマルチバイト文字列を生成するサービス「 秘密の答えジェネレータ」を作ってみました。 自分でも実用しており、既に5サービスに設定しましたが、非常に便利だと感じます。 稿ではこのサービスの技術面の詳細について紹介します。 「秘密の答えジェネレータ」の構成要素 「秘密の答えジェネレータ」はHTML+JavaScriptだけで実現されており、GitHub Pagesでホストしています。また、独自ドメインのDNSおよびSSL化はCloudFlareで行ってい

    日本語のパスワードジェネレータを作ってみた - hnwの日記
    tsukimiya
    tsukimiya 2018/04/17
    秘密の質問の答えはソーシャルハックで突破されやすいと思うので、ランダムな文字列入れた方がいいよねーってなる…。 母親の旧姓とか、他人が知り得る情報をなぜ使ってしまうのか。
  • 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の日記
    tsukimiya
    tsukimiya 2015/06/24
    今日の老人の集いはここですか?
  • PHP extensionとZend extensionの違い - hnwの日記

    PHPのextensionにはPHP extensionとZend extensionという2種類があります。これらの違いが何なのか、PHPの実装レベルから調べてみました。 PHPのextensionについて PHPのextensionには2種類が存在します。これらは次のようにphp.iniでロード指定する構文が異なります。 extension=extension.so zend_extension=/path/to/extension.so 稿では「extension=」でロードされるものをPHP extension、「zend_extension=」でロードされるものをZend extensionと呼びます。これらはPHPのソースコード中ではそれぞれmoduleとextensionと呼ばれているので注意してください。 代表的なZend extensionとしてはXdebugとZend

    PHP extensionとZend extensionの違い - hnwの日記
    tsukimiya
    tsukimiya 2013/07/24
    extesionとzend extension自体の違いじゃないけど、zend extensionはdl()で呼べなかった気がする。何か理由あるから分けてると思っていたんだけど、実はないの…?
  • PHPの新しいround関数にバグをみつけた - hnwの日記

    PHP 5.3.0以降、PHPのround関数の挙動はChristian Seilerさんが提案したRFCに従って一新されています。この新しいround関数の仕様上の問題もしくはバグを見つけました。 以前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった」でこの新しい実装は「今までよりは良い実装」ではないかと書きましたが、撤回すべきかもしれません。ベースのアイデアとしては以前の記事にも書いた通り悪くないと思うのですが、考え漏れがあるような気がしています。 たとえば次のサンプルコードを見て下さい。 <?php ini_set("precision",19); var_dump(1000000000000000.125); var_dump(round(1000000000000000.125)); サンプルコード中の1000000000000000.125

    PHPの新しいround関数にバグをみつけた - hnwの日記
    tsukimiya
    tsukimiya 2011/04/07
    derickさん…
  • 見直されるべきPHP5の組み込みイテレータ - hnwの日記

    PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日語の資料が少ないせいか、かなり知名度は低いように思います。記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い

    見直されるべきPHP5の組み込みイテレータ - hnwの日記
    tsukimiya
    tsukimiya 2009/05/25
    で、おやぢギャグはまだ? / 確かにhnwさんが書いているとタイトルから「(中の人は)PHPのイテレータの実装を見直したほうがいい」って話しか!と思っても仕方がない気がする。偏見ですが。
  • 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の日記
    tsukimiya
    tsukimiya 2009/02/27
    どう見てもオヤジです / おまいらダジャレ大好きですね!!!><
  • strtotime関数との付き合い方 - hnwの日記

    PHPで日付・時刻の処理を書く際、「strtotime()関数を使うと可読性が高くなって良い」と僕は思っていたのですが、全面的に信用するのは危険だと感じてきました。 strtotimeというのは、文字列をunix timeに変換する関数です。「2008-12-24 23:59:59」のような文字列はもちろん、様々なフォーマットの文字列を解釈してくれます。中でも特徴的なのは下記のような文字列を理解することでしょう。 now +1 day +1 week +1 week 2 days 4 hours 2 seconds next Thursday last Monday これを解釈してくれること自体はいいんですが、与えられた文字列をどう解釈するかについてはどこにもドキュメントがありません。下記のような文字列も解釈してくれるんですけど、どう解釈するのが正解なのかは僕にもわかりません(実際に試すと

    strtotime関数との付き合い方 - hnwの日記
    tsukimiya
    tsukimiya 2008/12/26
    バグがある=PHPなんて使えねー!やっぱPHP避ける!(盲目的に)じゃなくて、付き合い方を考える。良エントリ。/ っていうか、これはバグというより「仕様がドキュメントとしてまとまってない」のが問題だよね。やっぱ。
  • PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記

    (2016/07/02 20:00追記)稿をさらに掘り下げた記事「PHPのround関数を読み解く (1)丸め桁数が大きすぎ・小さすぎる場合」「PHPの新しいround関数を読み解く (2)pre-roundingの意味」を書きました。合わせてご確認ください。 12月4日付でPHP5.2.7とPHP5.3.0alpha3が同時リリースされましたが、これに関連して毎度おなじみPHPのround関数の話題です。相変わらず記事は長いので簡単なまとめから。 PHP5.3.0alpha3ではこれまでのPHPのいずれとも違うround関数が実装されました。少々疑問は残るものの、比較的マシな実装だと僕は考えています。今回は0.50000000001のような不思議な数は含まれていませんし、問題が起こる例が以前より減ったように思います。 第3引数で丸め方式を選択できるようになりました。四捨五入(デフォルト

    PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記
    tsukimiya
    tsukimiya 2008/12/08
    round魔王が現れた。良いまとめ。
  • PHPの==がキモい件 - hnwの日記

    どうやら僕はround()の人なんだそうです(参考資料)。それはそうとして、もう少し前までは==の人だった気がしますので、その頃の話題を再掲します。 僕は2年ほど前に「==がキモい件」などのタイトルで勉強会で発表していた頃がありました。PHPの==演算子の挙動について、啓蒙が必要だろうと考えていたためです。当時に比べれば最近はPHPの==演算子の不思議な挙動に関する記事を見る気がしますが、まだまだキモさの全容を把握している人は少ないような気もします。 PHPの==演算子の何がキモいのか、一言で言うと両辺の値の型をテキトーに合わせて比較する点です。言い換えると、「型はさておき、等しい値を意味しているようならtrue」という演算子です。 マニュアルの「PHP 型の比較表」の「==による緩やかな比較」を見てもキモさがチラホラ見えるんですが、今回は更に突っ込んだ比較表を作ってみました。 まずは以前

    PHPの==がキモい件 - hnwの日記
    tsukimiya
    tsukimiya 2008/06/06
    バグではなく、仕様です。そこの所注意な。
  • LDRユーザーは仕事サボってるのがバレバレな件 - hnwの日記

    livedoor Reader(以下LDR)って便利ですよね。僕も最近使うようになって便利さを実感しています。ところで、LDRに関して最近こんな記述を見つけました。 更新通知API http://rpc.reader.livedoor.com/notify param: user livedoor ID を渡す method: get/post 該当するlivedoor IDユーザの未読Feed数を取得する。存在しないユーザの場合は -1 が返ってくる。これだけ reader.livedoor.com ではなく rpc.reader.livedoor.com なので注意。 livedoor ReaderのAPI一覧 - ヨコナビ 要するに、LDRの他人の未読数が誰でも取れるんですね。IDを知っている必要がありますけど、LDRのフィード公開してる人とか、livedoor クリップとか、いくら

    LDRユーザーは仕事サボってるのがバレバレな件 - hnwの日記
    tsukimiya
    tsukimiya 2008/01/23
    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の日記
    tsukimiya
    tsukimiya 2007/08/03
    大勝利なんです!(`・ω・´)
  • 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の日記
    tsukimiya
    tsukimiya 2007/07/04
    もうid:roundでいいんじゃまいか><
  • round関数その5:そろそろ反撃していいですか? - hnwの日記

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

    round関数その5:そろそろ反撃していいですか? - hnwの日記
  • 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の日記
    tsukimiya
    tsukimiya 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の日記
    tsukimiya
    tsukimiya 2007/05/25
    ===のえろい人
  • 1