タグ

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

  • ポートノッキングで10秒間だけsshdを公開する設定 - hnwの日記

    先日Twitterに次のような書き込みをしたところ思ったより反応が良かったので、詳細の設定を紹介します。 UDP53番、TCP443番、UDP123番とポートノッキングをするとTCP443番に10秒だけsshdが現れる、という中二病全開の設定をした。皆様にもお勧めしたい。— hnw (@hnw) 2017年3月26日 といっても特殊なことをしたわけではなく、knockdでポートノッキングの設定を行い、iptablesと組み合わせて実現しました。 ポートノッキングとは ポートノッキングというのは、決められたポートを決められた順番で叩くことでファイアーウォールに穴を空けられるような仕組みのことです。ポートノッキングを使えば、TCPの7000番、8000番、9000番の3ポートにパケットを送りつけると22番ポート (SSH) へのアクセスが許可される、といった設定ができます。 ポートノッキングの

    ポートノッキングで10秒間だけsshdを公開する設定 - hnwの日記
    tyru
    tyru 2017/03/30
    knockd なんてのがあるのか
  • PHPのround関数とは一体なんだったのか - hnwの日記

    (7/3 14:05追記)Javaに関する記述について誤認があったので盛大に書き換えました。Java 6、Java 7、Java 8それぞれで実装が変わっていたようです。 (7/13 23:55追記)記事中ではroundを四捨五入と言い切ってしまっています。これは筆者がC99のroundを基準に考えているためですが、言語によっては偶数丸めになっているround関数も珍しくありません。ご注意ください。 PHPのround関数について、ネット上で次のような記述を見つけました。 PHP 四捨五入の計算を間違える唯一の言語として畏れられていましたが、そのバグは治っているかもしれません(治ってないかもしれません) 主要なプログラミング言語8種をぐったり解説 - 鍋あり谷あり 各言語を面白おかしく紹介する内容とはいえ、ずいぶん雑な理解だなーという印象です。ゆるふわな話だけでPHPがdisられ続けるの

    PHPのround関数とは一体なんだったのか - hnwの日記
    tyru
    tyru 2016/10/29
    浮動小数点数怖い
  • PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記

    PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい

    PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記
    tyru
    tyru 2014/08/11
  • RSA公開鍵から素数の積を取り出す方法 - hnwの日記

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

    RSA公開鍵から素数の積を取り出す方法 - hnwの日記
  • feof関数でwhileループを回す奴はド素人 - hnwの日記

    (2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があったので、整理しました stackoverflowの記事「“while( !feof( file ) )” is always wrong」をざっくり翻訳してみます。これはWilliam Pursellさんによる自作自演スレ(回答者も人)で、Cでwhile( !feof( file ) )というループを作るのが悪い理由を説明するものです。 ちなみにPHPについてもほぼ同じことが言えますので、PHPプログラマの方にも一読をお勧めします(PHPの主要なファイル操作関数はCとほぼ同じインターフェース

    feof関数でwhileループを回す奴はド素人 - hnwの日記
    tyru
    tyru 2013/04/07
    あるあるネタ
  • .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の日記
    tyru
    tyru 2012/12/21
    gitignore-boilerplatesというGithubのgitignoreリポジトリから取ってきてまとめてくれるツールがあるらしい
  • gitが無くてもgit cloneするコマンドfakegitを作りました - hnwの日記

    最近は一段とGitHubが流行してきたように思います。多くのオープンソースプロジェクトGitHubに移転するなど、いまやOSS開発者にとっては無くてはならない存在ですね。 ところで、GitHubホストされているプロジェクトの中には、インストール方法として「git cloneしてね」などと書いてあるものがあります。確かに開発者の立場からはgit cloneが一番自然な方法かもしれませんが、ソフトウェアのユーザー全員がgitコマンドを用意しているとは限りません。 もし、こうした意識のズレがソフトウェアの普及を妨げているとすれば不幸なことです。この事態を解決するため、gitコマンドがなくてもGitHubからのgit cloneをエミュレートするbashスクリプト「fakegit」を作ってみました。 fakegitは、指定されたGitHubリポジトリからのダウンロードをgit以外のコマンドで実

    gitが無くてもgit cloneするコマンドfakegitを作りました - hnwの日記
    tyru
    tyru 2012/06/03
    ちなみに勘違いしてる人多過ぎですが、GitHubはgitなくてもダウンロードできます。前はDownloadsとかだったけど今だとZIPってボタンがリポジトリのページにある。
  • 日付と時刻の豆知識 (2)うるう秒とコンピュータ - hnwの日記

    うるう秒とは、地球の自転と時刻とのずれを補正するために、特定の日を1秒だけ長くしたり短くしたりして調整するものです。私たちが日常的に利用している時刻は原子時計を基準にしていますが、地球の自転する速度は僅かながら変化し続けているので、観測に基づいて調整を入れる必要があるのです。これまで、基準値以上のずれが観測されるたびに実施されてきました。 このうるう秒は1972年から2010年までの間に24回実施されており、いずれも1秒長くする補正でした。一番最近では2008年12月31日が1秒長くなっており、UTCで23:59:60という時刻が挿入されました。 うるう秒とUNIXタイムスタンプ このうるう秒をコンピュータ上では無視することが多いようです。多くのOSにはうるう秒をサポートする機能があるのですが、デフォルトで無効になっているのが普通です。また、UNIXタイムスタンプについても、通常うるう秒を

    日付と時刻の豆知識 (2)うるう秒とコンピュータ - hnwの日記
  • array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記

    追記(2009/06/26):PHP 5.2.10以降、この問題は修正されています。「array_unique関数がPHP5.2.10から後方互換性を取り戻します」も併せてご覧ください。 2/26にPHP5.2.9がリリースされましたが、このバージョンからarray_unique関数が後方互換性を失いました。この関数を利用しているアプリケーションは、PHP5.2.9以降のバージョンでは新たなバグに悩まされるかもしれません。 5.2.9RC1の頃にこの仕様変更に気づいて「PHP Bugs: #47370: array_unique has backward compatibility problem, and SORT_REGULAR is confusing」で指摘してみたんですが、相手にされませんでした。 その後もid:moriyoshiさんが元の動作をデフォルト動作にするよう、中の人と

    array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記
    tyru
    tyru 2009/12/31
    ひどすぎる。メーリングリストでの対応が。弾さんの「PHPの(中の)人は多言語から学んだのか?」っていう言葉が
  • phpallコマンドでPHPの全バージョンの挙動を試す - hnwの日記

    追記:1/13頃まで、install-all-php.shにバグがありました。ごめんなさい。今は全バージョンを一気にコンパイルできるはずです。 第38回PHP勉強会でも紹介しましたが、私はPHP5.0.0〜PHP5.2.8までの全バージョンのPHPバイナリを持っています。これはPHPのバージョン間の差異やバグを確認したいときなどに便利です。(参考:「第38回PHP勉強会に参加してきました」) このような環境を作る方法について紹介します。基的には各バージョンのPHPをコンパイルするだけですが、コンパイルが通らない場合があるのでその回避方法と、かんたんインストールスクリプトを用意したのでそれを紹介します。また、全てのバージョンのPHPを順に実行するコマンドphpallについても紹介します。 PHP5をgcc4環境でコンパイルする 実は、PHP 5.0.0-5.0.3はgcc4 でコンパイルで

    phpallコマンドでPHPの全バージョンの挙動を試す - hnwの日記
    tyru
    tyru 2009/12/19
  • PHPでメモリ上に一時ファイルを作る - hnwの日記

    blog.plastik.jp » PHP5 の fgetcsv() で読み込み内容が腐る現象」という記事を読みました。fgetcsv()だとSJISのCSVファイルがうまく読めないので、UTF-8に直してテンポラリファイルに保存してfgetcsvで読み込む、という筋書きのようです。 ちゃんとtmpfile()を使っていたりしてナイスなコードだと思います。でも、すぐ不要になるデータをディスクに書き込むのはイマイチじゃないでしょうか。ここはメモリに書いた方がカッコいいと思うんです。僕なら下記のようにします。 <?php $data = file_get_contents("example.csv"); $data = mb_convert_encoding($data, "UTF-8", "Shift_JIS"); $fp = fopen('php://memory', 'r+'); fw

    PHPでメモリ上に一時ファイルを作る - hnwの日記
    tyru
    tyru 2009/03/20
    PHPってCSVを読み込む関数があるんã
  • 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の日記
  • 1