2012-11-01から1ヶ月間の記事一覧

Facebook への不正アタック

IT

Facebook から時々以下のようなメールが届く。Facebook なんてめったにアクセスしないので放っておいたんだけど、今日確信した。 これって不正ログインが試みられた証拠なんじゃないの。Google は二段階認証を設定しているので、初めての機器でログインしよ…

Labels as Values による Compiled goto でインタプリタを高速化

Android のインタプリタは C で実装されたバージョンとアセンブラで実装されたバージョンがあって、どちらもインストラクションを goto で処理するように実装されている。ずっと気になっていた C の goto の仕組みを調べてみた。単純化したのが以下の擬似コ…

C 言語における最適化を抑止する

C 言語の最適化抑止について調査した。ローカル変数のアドレスを関数外部にリークさせた場合、volatile がなくても最適化が抑止されるのではないか、という仮説を証明するためだ。環境は以下のとおり。 Ubuntu 12.04 LTS gcc 4.6.3 検証するコードは以下のと…

乱数とサイコロ

IT

疑似乱数生成機のアルゴリズムが線形合同法*1の場合、以下のようなサイコロの目の求め方は不適切だという。 int n = rand() % 6 + 1; 概念的には以下のように行う必要があるらしい。 int n = rand() / (RAND_MAX / 6 + 1) + 1; これなら、たまたま偶数や奇数…

TinyMT の使い方メモ

IT

Mersenne Twister の Tiny 版 TinyMT を調べたのでまとめておきます。 事前準備 パラメータを生成するために NTL というライブラリが必要です。今回は Ubuntu で行うのでライブラリがインストールされているかどうか確認して、なければ apt-get でインストー…