「JSON」タグアーカイブ

AWSの日本サーバのIPアドレスのリストを得る

ツールのインストールなしで。

EC2サーバーなどのIPアドレスの範囲については、AWS公式がJSON形式で最新の情報を公開しています。

AWSのサーバ「からのアクセスを禁止したい」とか「からだけアクセスを許可したい」という時は、ここから対象となるサーバのリストを抽出することになります。

公式ドキュメントでは jq を使ってフィルタするといいよ、と言っています

jq をオンラインで実行できるサービス jq playがあるので、これをブラウザで開き、JSON のところに先ほどの公式のJSON の中身を貼りつけます。

フィルタとして、たとえば、「東京と大阪リージョンのEC2のアドレスを絞りこむ」だと、以下を入れます。

.prefixes[] | select(.region=="ap-northeast-1" or .region=="ap-northeast-3") | select(.service=="EC2") | .ip_prefix

ダブルクオートが不要であれば、Raw Output にチェックを入れましょう。

[訂正] はてブでご指摘いただきました。大阪は ap-northeast-3 ですね。ごめんなさい

jq play の結果は、permalink 化して共有できます。右上の”Share snippet” から。

今日の時点でのIPアドレスの範囲は、こんな風にでました。

# 今回は、公開されているデータを絞り込んだだけなので問題ないと思います。社外に漏れたら困るようなJSONを、こういったサイトに突っ込むのはやめましょう。念のため

Chess.com のiPhone版が32bitオーバーフローで動かなくなる

オンラインのチェス対局コミュニティChess.comのスマートフォン版が、プログラムのバグによって動かなくなる事件が発生していたそうです。

13日に公式フォーラムでiOS版ユーザーから「動かない」という声が上がりはじめ、開発チームが調査したところ、これまでにchess.com 上でプレイされたゲーム回数が 21億回を超えていたことが判明。正確には 2,147,483,647 回越えで、プログラマーならピンとくると思いますが、2^31, 符号付き32bit整数の最大値です。

サイト全体が動かなくなったのではなく、2013年以前のiPhoneを使っているユーザーだけに不具合が起こっていたので、運営もなかなか気づけなかったということ。運営ではみんなが新しいiPhoneを使っていたんですね。

32bit版のiOSを使う古いiPhone や iPad では、chess.com サーバから送られてきた JSON の解釈が、なぜか元と異なる値になってしまっていた、と。

開発チームは、クライアント側の修正とサーバ側の修正の2案を用意しましたが、テストチームのテストを通した後、ハック的でその場しのぎなサーバ側の修正は反映せず、Appleのアップストア側のアプリを新バージョンに更新することで修正としたそうです。

記念すべきオーバーフローを最初に引き起こした対局がこちら

Hacker News やIT系のニュースで多く取り上げられたことで、「これまでの対局が21億回もある」という点がクロースアップされ、サイト的には良い宣伝にもなったようです。

via Hacker News

Depressed? 自分が憂鬱かどうかをAPI提供できるオープンソースアプリ

AreYouDepressed は、自分の状態が鬱かどうかを知らせるためだけのサイトと、そのAPIを提供するためのソフトウェアです。

デモサイトにアクセスすると、鬱なら”Yes”、そうでないなら”No”が、色やバックグラウンドのアニメーションをそれぞれ変えて、表示されます。

is-evan-depressed-no

設置者には、4時間置きに指定したアドレスにメールが届き、”Yes”か”No”をクリックすることで状態が更新されます。

JSON APIで現在の状態や、

is-evan-depressed-api

最近の履歴を取得することもできます。

is-evan-depressed-api-all

メールだけでなく、管理画面から更新したり、状態を問い合わせるメールを送らない時間帯を指定したりする機能もあります。

is-evan-depressed-admin

PHPのLaravelフレームワーク上に構築されたアプリのソースはGitHubで公開されていて、自分用の同種のサイトを公開することができます。

鬱状態を広く世界に通知する以外にも、状態を伝えるという単機能のサービスとして何か使いみちがありそうな気もします。

https://depressed.evan.netsoc.co