26
「Chromeで印刷のプレビュー画面を出したあと、出てきたウィンドウをマウスでつかんでものすごい勢いで画面中を振り回すと、Macに限って、まれにレイアウトが少しずれる」バグを報告してきた人がいるのだが、どうやってこんなバグを見つけたかの方が気になる・・・。
27
「エディタとかOSとか、デフォルトの設定が気に入らないからって、とにかくカスタマイズしたがる人っているじゃないですか。ああいうの見てると若いなーって思うんですよ」と言ってる人に、.emacsを見せてもらったら600行あってわろたwwwww
28
新卒で入社して初めてのプロジェクトが何だったかというと、Chromeでページを印刷するときに、レイアウト計算の浮動小数点数の丸め誤差が蓄積して印刷ページ数が1ページ増えてしまい、プリンタから最後に余計な白紙が一枚出てきてしまうバグを直して、世界の森林資源を救うというものだった。
29
プログラムのコメントの話。heとsheは論外。weは「自分たち以外の存在(they)」を示唆して排他的な感じになるのでアウト。youを使ったら「そもそも代名詞自体が・・・」と懸念され、物質主語の受動態で書くことに。ここまで来ると、言語自体に欠陥があると思わざるをえない。。。
30
主語を省略するのがデフォルトの日本語ではこの問題は生じにくいし、人を呼ぶときも、とりあえず「さん」を付けておけば相手が誰であれ失礼にならないのは便利で、日本語って案外そういう部分は寛容にできている言語なのかもしれない(どういう文化的要素が作用してそうなったのかは不思議ですが)。
31
ちなみに、heとsheの話は有名だけど、weも非常にデリケートなもので、利害関係が対立する複数の企業が協力開発しているオープンソースコミュニティで、何気なくweを使ってしまって炎上した騒ぎを何度か見かけたことがある。何が難しいかというと、
32
コミュニティ内のごく一部を指す意味でweを使った場合、「自分たちと自分たち以外」という意味での排他性を感じさせる発言として捉えられるおそれがあり、一方、コミュニティ全体を指す意味でweを使った場合、「なんで、君がコミュニティ全体の意志を代弁してるんだよ」と捉えられるおそれがあり、
33
結局のところ、weは避けるのが無難、というのがぼくの結論。最初このことで騒ぎを起こしてしまったとき、ごめんなさいと思いつつも、非ネイティブにそんなこと要求しないでよ・・・とも思ったw
34
35
Chromeの内部にはあまりにいろんなタスクスケジューラが乱立しすぎているので、それらを全部統合して全体として一貫した最強のタスクスケジューラを作ろうとしている。そのプロジェクトの名前を何にしようかと議論していて、「プロジェクト・ソビエト」と提案したら、却下されたwww
36
「京都の伝統的なキャンディーです」と言って、ミーティングの出席者に大きな手毬飴を配ったところ、20分くらいみんなうまくしゃべれなくなって議論の進行に支障をきたす事案が発生。
37
ホテルの電子レンジでサトウのごはんを温めようと思って、レンジで2分らしいので、「2」を押してみたところ、2秒後にピーって鳴ってしまった。そこで「118」を押してみたところ、今度は1分18秒でピーッと鳴った。おそらく僕が次に取るべき行動は、「40」と押すことだと思われる。むずい。
38
こんなもの誰が解けるんだよwww
答え:mathoverflow.net/questions/2277…
39
バームクーヘンを食べてて思ったのだけど、普段ぼくたちがやってる活動のうち、トポロジーを増やす活動(ドーナツを作る、地下鉄を建設する)と減らす活動(バームクーヘンを切る、マカロニを食べる)、どっちのほうが多いのかな?つまり、世界にある穴の数は増えているのか減っているのか。
40
周りの人たちがEclipseがどうのこうのと騒いでて、「君もはやくEclipseを見なきゃ」と言われたので、なんだかわからずとりあえずJavaのEclipseを起動したところ、外で本当に皆既日食が起きててワロタwww 朝からなんか暗いなぁとは思ってた。。。(@シリコンバレー)
41
面白いのがprobabilistic paymentという手法。1円のトランザクションを100回やると手数料がかさむので、代わりに1%の確率で100円を支払う貨幣交換を作ったらいいじゃないかというアイディア。貨幣交換に確率の概念を導入するのは、貨幣史的には十分新規的で面白い。
42
これは本当にそうで、さすがに阿部寛のホームページまではいかなくても、ブロッキングスクリプトをなくすだけで(=全部の<script>にきちんとasyncかdeferを付ける)、ページロードは見違えるように速くなる。試しにJavaScriptをオフにしていろんなサイトを開いてみると、そのあまりの速さに驚くはず。 twitter.com/mattn_jp/statu…
43
世間を騒がせているCPUの致命的なバグ、SpectreとMeltdown。Spectreの方は初歩的なプログラミングの知識で理解できるので、4ツイートで簡単に解説してみる。
44
こういうArrayクラスがあったとする。
class Array {
char at(unsigned i) {
if (i >= length) // (a)
return -1;
return data[i]; // (b)
}
unsigned length;
char* data;
};
45
ここで、次のコードを実行する。
char mem[257];
char v = array->at(12345678); // 秘密のデータが保存されているアドレスを指定
if (v & 1) { mem[0]; } else { mem[256]; } // (c)
46
CPUの分岐予測をうまく利用すると、(a)のCPU命令が完了する前に、分岐を(b)の方に予測させて、(c)を投機的に実行させることができる。もちろん(a)が完了した時点で投機実行された(c)は捨てられるのだが、すでにCPUはmem[0]またはmem[256]を投機的にキャッシュへロードしてしまっている。
47
よって、mem[0]とmem[256]へのアクセス速度を測ってどっちがキャッシュに乗ったかを調べれば、狙ったアドレスのデータが0なのか1なのかがばれる。バッファオーバーフローを防ぐための範囲チェックが役に立たなくなって、好きなメモリアドレスの値を読めてしまう。。。というのがSpectreの原理。
48
CPUの分岐予測に関する根本的なバグなのでソフトウェア側で対処するのは難しいのだが、Chromiumでは、if文を使わない形に範囲チェックを書き換える、(キャッシュへのアクセス速度を調べられないように)タイマーの精度を意図的に落とす、高精度タイマーが作れるAPIを無効化するなどで対処しています。
49
50
Operaが暗号通貨ウォレットをブラウザに組み込んだことについての会話。
同僚「Operaって家電に載ってるよねぇ」
ぼく「洗濯機に暗号通貨対応のOperaを載せたら『コインランドリー』ができるかな」
同僚「ビットコインランドリー」
ぼく「何に使うの?」
同僚「資金洗浄」
わろたwwwwww