「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