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

  • date-holidays という祝日ライブラリが良い意味で狂っていた - hnwの日記

    世界には色々なマニアがいるなーという話を紹介します。 先日Node.jsで使える祝日ライブラリを探していたところ、複数の国や地域の祝日に対応しているライブラリ date-holidays を見つけました。 commenthol/date-holidays: worldwide holidays このライブラリは稿執筆時点で143ヶ国379地域の祝日に対応しています。この時点で頭がおかしい(ほめ言葉)のがわかると思うんですが、さらに凄いのがこれらの祝日をすべてYAMLで定義しており、このYAMLが変態的だという点です。 YAMLによる祝日の定義例 どう凄いかは実際のYAMLを見た方が早いと思うので、例を紹介します。下記は日の祝日の定義の一部です。 01-15: name: en: Coming of Age Day jp: 成人の日 active: - from: 1948-07-20

    date-holidays という祝日ライブラリが良い意味で狂っていた - hnwの日記
    tmatsuu
    tmatsuu 2019/04/25
    中国の振替出勤日ってなんだそりゃこわい
  • 日本語のパスワードジェネレータを作ってみた - hnwの日記

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

    日本語のパスワードジェネレータを作ってみた - hnwの日記
    tmatsuu
    tmatsuu 2018/05/05
    よーし絵文字も追加だ
  • BuffaloのUSB無線LANアダプタの返す製造元の文字列を解読する - hnwの日記

    私の手元に「Buffalo WLI-UC-AG300N」というUSB無線LANアダプタがあるのですが、Macの「システム情報」で見ると製造元が「敇瑭步挮浯䩟」となっていることに気づきました。 バッファローとかメルコとか書いてあるなら分かりますが、少なくとも日語ではありませんし、簡体字なり繁体字なりだとしても不自然に思えます。となると、一体何が表示されているのでしょうか?文字コード警察的な意味で興味を持ったので、調べてみました。 謎解き(1) 何が書いてあるのか この記事の執筆時点では「敇瑭步挮浯䩟」でGoogle検索しても同じ無線LANアダプタの情報が1件見つかるだけで、そんなメーカーは地球上に存在しなさそうなことがわかります。 ネット上にも情報が無いときに頼れるのは自分の直感だけです。そこで、私は謎の漢字列をUTF-16にしてみることにしました。 上記PHPファイルをUTF-8で保存し

    BuffaloのUSB無線LANアダプタの返す製造元の文字列を解読する - hnwの日記
    tmatsuu
    tmatsuu 2017/06/03
    文字コード警察すごい
  • RSA公開鍵から素数の積を取り出す方法 - hnwの日記

    RSA暗号はHTTPSやSSHの通信で利用されている暗号化方式です。公開鍵として巨大な素数の積を交換しあって暗号に利用しており、この素因数分解が困難であることにより安全性が担保されています。このことは教科書にも載っているような内容で、ご存じの方も多いかと思います。 ところで、その素数の積を実際に見たことってありますか?少なくとも僕は見たことがありませんでしたし、大抵の人は見たことが無いのではないでしょうか。稿ではこの公開鍵の情報を見る方法を紹介します。 OpenSSH公開鍵の中身を見る まずはOpenSSHの公開鍵の情報を取り出してみます。OpenSSHの公開鍵は次のようなものです。 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw+XdXSrhBcDFAXPcisrc8im4y8ytC46HEQ0GsWOph9OPK1elTQmBD5LATGfp4JG4

    RSA公開鍵から素数の積を取り出す方法 - hnwの日記
    tmatsuu
    tmatsuu 2014/05/21
    おー面白い
  • hardlink.pyを使ったらディスクの空き容量が劇的に増えた - hnwの日記

    ノートPCを使っているとディスクの空き容量が不足してくることがありますよね。僕の場合、$HOME/src/php以下にPHP 5.0.0から5.5.5まで88バージョンのPHPのソースコードを展開しているのですが、このサイズが約8.9GiB、約110万ファイルと恐ろしい量であることがわかりました。 そこで、この全ファイルに対してhardlink.pyを適用してみたところ、7.7GiBほど空き容量が増えました。稿ではこのhardlink.pyについて紹介します。 hardlink.pyとは hardlink.pyは、同じファイルを見つけてhardlinkにしてくれるPythonスクリプトです。同じファイルが多ければ多いほどディスクの空き容量を節約できるというわけです。 同じファイルと見なす条件はオプション指定で変更できますが、僕は「ファイルの中身とオーナーとパーミッションが完全一致、ただし

    hardlink.pyを使ったらディスクの空き容量が劇的に増えた - hnwの日記
    tmatsuu
    tmatsuu 2013/11/17
    目的によってはアリだが、同じファイルになるので編集時に注意。
  • PHPカンファレンス2013でZend OPcacheについて発表しました - hnwの日記

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

    PHPカンファレンス2013でZend OPcacheについて発表しました - hnwの日記
    tmatsuu
    tmatsuu 2013/09/19
    もうAPCの時代やないで、OPcacheやで。特に5.4以降は。5.2以降サポートしてるらしい。ほほう。5.2や5.3でもアリかな?
  • 第70回PHP勉強会で浮動小数点数の話をしました - hnwの日記

    7月22日に開催された第70回PHP勉強会で発表してきました。以下が発表資料です。 浮動小数点数周りのトピックを3点紹介する内容でしたが、思ったより反応が良かったように思います。 ただ、面白おかしく話そうとして、聞いている方々に無駄に恐怖を与えてしまったかもしれません。冷静に読み返していただければ、怖いように見える内容もレアケースの話題が多いことがわかるかと思います。 また、PDOの挙動については誤解を与えてしまったかと思いますので、プレゼン資料の25ページ目を大幅に差し替えてアップロードしました。 この点についてもう少し説明します。PDOでプリペアードクエリを利用する際、プレースホルダに値を埋め込むのにPDOStatement::bindValueメソッドを利用することができます。この際、bindValueメソッドの第3引数で利用でPDO::PARAM_INT定数を指定しても、第2引数の

    第70回PHP勉強会で浮動小数点数の話をしました - hnwの日記
    tmatsuu
    tmatsuu 2013/07/24
    こわい。浮動小数点を回避できるならできるだけ回避。
  • .gitignoreを作ってくれるgiboが便利すぎる - hnwの日記

    gitignore-boilerplates(長いので以後giboと呼びます)という便利なツールを紹介します。これは.gitignoreのひな形を作ってくれるものです。 https://github.com/simonwhitaker/gitignore-boilerplates もう少し詳しく説明すると、giboは様々なOS・エディタ・言語・フレームワークなどに特化したファイルの情報を利用して、複数環境を考慮した.gitignoreを作ってくれます。 .gitignoreに入れたいファイルは環境ごとに変わってくるわけですが、各人がcommitしたくないファイルの存在に気づくたびにチマチマ.gitignoreに追記していくのって当に無駄だと思うんですよね。giboはそれを自動化してくれるというわけです。 例えば、WindowsMacOSXの2環境、Emacsとvimの2エディタを使う人

    .gitignoreを作ってくれるgiboが便利すぎる - hnwの日記
    tmatsuu
    tmatsuu 2012/12/22
    複数環境を考慮した.gitignoreを自動生成。ほうほう。.DS_Storeとか入ってるとカッコ悪いもんね。でも思わぬものまでignoreされるかもしれませんのでご注意ください。
  • WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記

    新年あけましておめでとうございます。今年もボチボチやっていきます。 稿ではPHP製のWebスクレイピングライブラリGoutteを紹介します。 Goutte(グット)とは Goutteは必要十分な機能を持ったWebスクレイピングライブラリです。そもそもWebスクレイピングというのは、外部Webページから必要なデータを取ってくるくらいの意味です。つまり、GoutteはWebスクレイピングを簡単に行う道具だと考えればいいでしょう。 具体的には、GoutteはWebクローラとHTMLパーサを組み合わせたようなものです。Cookieやフォームの扱いなどWebブラウザとしての機能は一通り揃っていますし、CSS風の要素指定もできるなど、機能面では他のライブラリと遜色ないように感じます。 さらに僕個人がGoutteに期待している点は、安定性とロングサポートです。Goutteは主要機能をSymfony2お

    WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記
    tmatsuu
    tmatsuu 2012/01/17
    PHP用。へー。
  • 1