タグ hnw
新着順 10 users 50 users 100 users 500 users 1000 usersGitHubへpull requestする際のベストプラクティス - hnwの日記
みなさん、Git使ってますか?僕はまだメインのVCSがSubversionなのもあって、なかなか慣れません。せっかくGitを使っているのに、ちょっと不便なSubversionくらいの位置づけです。でも、同じような理解度の人って多いんじゃないでしょうか。 一方で、最近はGitHub管理のオープンソースプロジェクトが増えてきました。バグレポートを送るにしてもpull request*1が前提のような空... 続きを読む
GitHubユーザーのSSH鍵6万個を調べてみた - hnwの日記
GitHub APIを利用して、GitHubの31661アカウントに登録されているSSH公開鍵64404個を取得してみました。抽出方法*1が適当すぎて偏りがあるような気もしますが、面白い結果が得られたと思うのでまとめてみます。SSH鍵の種類鍵の種類 個数 割合 RSA鍵 61749 (95.88%) DSA鍵 2647 (4.11%) ECDSA鍵 8 (0.01%) 約6万個の鍵のうち、8個だけ... 続きを読む
ポートノッキングで10秒間だけsshdを公開する設定 - hnwの日記
先日Twitterに次のような書き込みをしたところ思ったより反応が良かったので、詳細の設定を紹介します。 UDP53番、TCP443番、UDP123番とポートノッキングをするとTCP443番に10秒だけsshdが現れる、という中二病全開の設定をした。皆様にもお勧めしたい。 — hnw (@hnw) 2017年3月26日 といっても特殊なことをしたわけではなく、knockdでポートノッキングの設定を... 続きを読む
ユニットバスの天井裏に備え付けのL2スイッチを発見した話 - hnwの日記
私は同じ賃貸住宅に10年ほど済んでいるのですが、ごく最近になって自宅内に備え付けのL2スイッチが存在することに気づきました。ソイツはなんとユニットバスの天井裏にいたのです。 このスイッチをGbEスイッチにリプレースしたところ、自宅のコンピューティング環境を改善することができました。本稿ではその顛末を紹介... 続きを読む
WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記
新年あけましておめでとうございます。今年もボチボチやっていきます。 本稿ではPHP製のWebスクレイピングライブラリGoutteを紹介します。 Goutte(グート)とはGoutteは必要十分な機能を持ったWebスクレイピングライブラリです。そもそもWebスクレイピングというのは、外部Webページから必要なデータを取ってくるくらいの意味です。つまり、GoutteはWebスクレイピングを簡単に行う道... 続きを読む
PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化... 続きを読む
date-holidays という祝日ライブラリが良い意味で狂っていた - hnwの日記
世界には色々なマニアがいるなーという話を紹介します。 先日Node.jsで使える祝日ライブラリを探していたところ、複数の国や地域の祝日に対応しているライブラリ date-holidays を見つけました。 commenthol/date-holidays: worldwide holidays このライブラリは本稿執筆時点で143ヶ国379地域の祝日に対応しています。こ... 続きを読む
PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記
PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、==をできるだけ使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られてい... 続きを読む
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Transcript 1. What’s new in PHP7 PHP7で変わること ̶̶言語仕様とエンジンの改善ポイント hnw PHPカンファレンス関西2015 (2015/5/30)発表資料 2. 自己紹介 ❖ @hnw ❖ 勤務先:KLab株式会社 ❖ カレーとバグが大好物 ❖ PHP歴15年 ❖ PHPや周辺エクステンションにバグレポ・PR多数 3. アジェンダ ❖ PHP7、さいきん... 続きを読む
PHPのround関数とは一体なんだったのか - hnwの日記
PHPのround関数について、ネット上で次のような記述を見つけました。 PHP 四捨五入の計算を間違える唯一の言語として畏れられていましたが、そのバグは治っているかもしれません(治ってないかもしれません) 主要なプログラミング言語8種をぐったり解説 - 鍋あり谷あり 各言語を面白おかしく紹介する内容とはいえ、ずいぶん雑な理解だなーという印象です。ゆるふわな話だけでPHPがdisられ続けるのもどう... 続きを読む
平方数かどうかを高速に判定する方法 - hnwの日記
平方数とは、ある整数の平方(=二乗)であるような整数のことを言います。つまり、0,1,4,9,16,...が平方数ということになります。 ところで、与えられた整数が平方数かどうかを判定するにはどうすれば良いでしょうか。与えられた整数の平方根の小数点以下を切り捨て、それを二乗して元の数になるかどうか、というのがすぐ思いつく実装です。 function is_square($n) { $sqrt = ... 続きを読む
PHPプログラムを書いたらマイナス21億行目あたりでエラーが出た - hnwの日記
毎度おなじみ、意図的に重箱の隅をつついてみたよって話です。あるPHPプログラムを実行したら次のようなエラーに遭遇しました。 $ php over-2g-lines.php int(0) PHP Fatal error: Uncaught Error: Call to undefined function var____dump() in /Users/hnw/over-2g-lines.php:2... 続きを読む
PHP5.6からPHP7にアップグレードして実際にはまった点9個 · DQNEO起業日記
仕事で使っているPHPアプリケーションをPHP7 beta1で動かしてみたらそのままでは動きませんでした。 私が実際にはまった点を紹介します。 なお、PHP7の変更点についてはhnwさんの記事に詳しく網羅されているのでご一読ください。 PHP7で変わること - hnwの日記 Apacheのモジュール名が変わっていた ApacheにPHPを組み込むためのモジュール(俗にいうmod_php)のモジュー... 続きを読む
PHP7はなぜ速いのか(zval編) - hnwの日記
この記事はPHP Advent Calendar 2014の7日目です。 僕は先日のPHPカンファレンス2014でPHP7に関するLTをしました(参照:「PHPNGの動向」)。ただ、時間が限られていたこともあり、あまり踏み込んだ内容には触れませんでした。 本稿ではLTの内容から深掘りし、zvalという内部的な構造体がどう変わるのか、性能面のメリットにフォーカスして解説してみます。 PHPをとりまく... 続きを読む
PHPでHTTPの並行ダウンロードを実現する(Guzzle編) - hnwの日記
PHPで最近注目のHTTPクライアントライブラリにGuzzleがあります。日本での知名度はまだまだという印象ですが、かなり高機能かつ真面目にメンテナンスされている印象で、今後のデファクトスタンダードになりうるライブラリと言えるでしょう。 本稿ではこのGuzzleを使ってWebサーバから並行にダウンロードする方法を紹介します。Webブラウザのように同時に複数コネクションを管理しながらKeep-Ali... 続きを読む
PHPのsort関数は相当おかしい - hnwの日記
オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介sort ― 配列をソートする 説明bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高... 続きを読む
MySQLのFLOAT型を使う理由が見つからない件 - hnwの日記
MySQLのデータ型としてFLOAT型という型があるのですが、これを採用するのは混乱の元ではないか?と感じたので、その詳細を紹介します。 そもそもこの話のきっかけは「 MySQLで6桁までの小数点を丸めずに扱うならFLOAT型を使うべき理由 」という記事が目に止まったことです。それなりに人気を集めている記事のようですが、私の読んだ限りではFLOAT型を使うだけの根拠が文中から読み取れず、さらに類似... 続きを読む
セキュリティの話題に丸腰で踏み込んでくる人を見た - hnwの日記
Qiita上で「 ゲームでよくされるチート手法とその対策 〜アプリケーションハッキング編〜 」という記事がいいね数を集めているようですが、全セクションにツッコミどころがあるような印象です。私はセキュリティ本職というわけではありませんが、素人の私から見てもひどいと思ったところだけ個別にツッコミを入れてみます。 念のため補足しておくと、誰であろうと情報発信すること自体は大変良いことです。ただ、誤りを含... 続きを読む
見直されるべきPHP5の組み込みイテレータ - hnwの日記
PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはItera... 続きを読む
PHPにおけるシンボリックリンクを使ったデプロイの危険性について(「realpath_cache」和訳) : KLabGames Tech Blog
この文書は @julienPauli さんによる記事「 realpath_cache 」の日本語翻訳です。元々は @gilbite さんがKLab社内向けに翻訳したものでしたが、日本語では見たことがない指摘を含んでおり今でも有用だと考えたため、@julienPauliさんの了解を取った上で @hnw が修正・追記して公開するものです。 はじめに PHP に realpath_cache_get()... 続きを読む
Javaで書かれたPHP処理系のJPHPが高速だった - hnwの日記
JPHPというJavaで書かれたPHP処理系があります。これは2013年10月にはじまった新しいプロジェクトで、大半をメイン開発者一人で開発しているようですが、既に一定以上の完成度です。また、内部的にはPHPファイルを解釈して直接Javaバイトコードにコンパイルしており、かなり高速なPHP処理系になっています。 他のPHP処理系と異なり、既存のPHPコードをWebサーバ上で動かすことを重視していな... 続きを読む
.gitignoreを作ってくれるgiboが便利すぎる - hnwの日記
gitignore-boilerplates(長いので以後giboと呼びます)という便利なツールを紹介します。これは.gitignoreのひな形を作ってくれるものです。 https://github.com/simonwhitaker/gitignore-boilerplates もう少し詳しく説明すると、giboは様々なOS・エディタ・言語・フレームワークなどに特化したファイルの情報を利用して、... 続きを読む
RSA公開鍵から素数の積を取り出す方法 - hnwの日記
RSA暗号はHTTPSやSSHの通信で利用されている暗号化方式です。公開鍵として巨大な素数の積を交換しあって暗号に利用しており、この素因数分解が困難であることにより安全性が担保されています。このことは教科書にも載っているような内容で、ご存じの方も多いかと思います。 ところで、その素数の積を実際に見たことってありますか?少なくとも僕は見たことがありませんでしたし、大抵の人は見たことが無いのではないで... 続きを読む
PHP7で変わること - hnwの日記
次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。 このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つず... 続きを読む
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック 1. A remarkable improvement on data structure in PHP7 PHP7の内部実装から学ぶ 性能改善テクニック hnw Developers Summit 2015 KANSAI (2015/9/4)発表資料 2. 自己紹介 ❖ @hnw ❖ 勤務先:KLab株式会社 ❖ カレーとバグが大好物 ❖ PHP歴... 続きを読む