タグ Rui Ueyama
人気順 10 users 50 users 100 users 500 users 1000 usersマンションのネットが遅すぎるのでサポートに電話したらタワマンの闇だった→引っ越すしかないな…
Rui Ueyama @rui314 Googleソフトウェアエンジニア / スタンフォード大学院コンピュータサイエンス→投資生活→スタートアップ創業 Open-source dev. ex-@Google. MS/CS at Stanford. Creator of the mold and lld linkers. 帰国して婚活予定 github.com/rui314 Rui Ueyama @rui314 マンションのネットが遅すぎるのでサポ... 続きを読む
オープンソースビジネスの挑戦と現実|Rui Ueyama
いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・ソフトウェアを元にビジネスを立ち上げようと試行錯誤してきた。その経験についてここでシェアしてみようと思う。 あらすじ薄々予期していたことで... 続きを読む
Rust の嬉しさをより多くの日本語話者に知ってもらうためには、スタンフォードで強く敷かれている educational benefit の概念を Rust コミュニティが抱くことが大事なのではないか、という私見
Rui Ueyama @rui314 スタンフォードの授業で「え、ここまでそれわかってなくて聞いてたの?」という質問をしてる生徒はかなりいたし、教える方は驚くこともなく普通にそういう基本的な質問に答えていたので、ああいうのは見習いたい(どちら側も)。 2021-08-14 21:55:14 Rui Ueyama @rui314 こういうの、難しい問題とか... 続きを読む
スタンフォード大学で「ここまでそれ分かってなくて聞いてたの?」という質問をする生徒がかなりいた→質問しやすい環境が学びやすさに繋がっている - Togetter
Rui Ueyama @rui314 スタンフォードの授業で「え、ここまでそれわかってなくて聞いてたの?」という質問をしてる生徒はかなりいたし、教える方は驚くこともなく普通にそういう基本的な質問に答えていたので、ああいうのは見習いたい(どちら側も)。 2021-08-14 21:55:14 Rui Ueyama @rui314 こういうの、難しい問題とか... 続きを読む
スタンフォードのコンピュータサイエンスの授業の感想(後編)|Rui Ueyama|note
2017年にも同じタイトルの記事を書いたのだけど、その後無事にスタンフォード大学院のコンピュータサイエンス学部を卒業することができたので、前回の記事以降に取った授業について、僕なりの感想をちょっとまとめたい。 CS255 暗号入門 (2018Q1)文字通り暗号についての授業。対称鍵暗号、公開鍵暗号、メッセージ認証、... 続きを読む
mold: modern linker - Google スライド
mold: modern linker Rui Ueyama 続きを読む
mold: modern linker - Google スライド
mold: modern linker Rui Ueyama 続きを読む
Googleにはある年数働くと3ヶ月間無給休暇をとることが勧められていたけど、そのまま辞めてしまう率が高かったという話 - Togetter
Rui Ueyama @rui314 Googleには昔、5年だか7年働くと3ヶ月無給休暇が取れるサバティカルみたいなやつがあって、ある種長期休暇を奨励していたんだけど、そのまま辞めてしまう率が高すぎるというのでなくなったんだよな。僕も3ヶ月休職→退職なので、ほんとそれ正しかったんだなという気持ち。 2020-10-25 08:42:54 Rui Ue... 続きを読む
Cコンパイラ作成のオンラインコースを始めます | rui314.github.io
Cコンパイラ作成のオンラインコースを始めます Rui Ueyama 2020-04-15 Cコンパイラを作成するオンラインのコースを試験的に始めてみようと思います。僕の書いているオンラインブック「低レイヤを知りたい人のためのCコンパイラ作成入門」を教材として使います。対象者は、この本の内容に(少なくとも大まかには)従って... 続きを読む
ビットコインは世界中でどれだけの電力を使っているのか?|Rui Ueyama|note
ビットコインのような暗号通貨は、取引所で購入するだけではなく、PCやマイニング機器を使って「掘り出す」こともできる。しかし、ビットコインをマイニング(採掘)するとは、そもそもどういうことなんだろうか? また、ビットコインのマイニングのために世界中でどれくらいのエネルギーが使われているのだろうか? こ... 続きを読む
IPv6がなぜいまだに普及していないのか|Rui Ueyama|note
現在のインターネットの基本をなしているIPv4というプロトコルには、広く知られた大きな欠点がある。パケットのアドレスフィールドの幅が32ビットなので、ネットワークに接続可能なホスト数の上限が2³²(約43億)になってしまっているのだ。その欠点を修正するために、1990年代後半にIPv6という新たなプロトコルが設計さ... 続きを読む
オープンソース活動がフルタイムの仕事になる仕組みの話|Rui Ueyama|note
僕の仕事をひとに説明するときに、「Googleで仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒に仕事している」と言うと、「???」という反応になることが多いので、僕はこういう仕事をしているんだよということをここでちょっと説明してみ... 続きを読む
Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話|Rui Ueyama|note
2018年の夏に僕はセキュリティキャンプ(以下「セキュキャン」)というイベントでCコンパイラ作成コースの授業を行いました。授業はとてもうまくいったといってよいと思います。参加者は6人だったのですが、6人全員プログラミング技術がかなり飛躍的に向上したようですし、そのうち3人は期間中にセルフホスト(自分の書... 続きを読む
音の良いポッドキャストを録音するために ― Turing Complete FMの収録テクニック|Rui Ueyama|note
僕は最近 Turing Complete FM というポッドキャストを運営しているのですが、その収録のためにポッドキャスト録音テクニックを結構研究しました。ここではそのノウハウをシェアしようと思います。音がよくて聞きやすいポッドキャストの収録に役立ててもらえると幸いです。 はじめに ポッドキャストでは音質は死活的に重要です。音質の大切さは強調してしすぎることはないと思うのですが、初心者はこの点を甘... 続きを読む
「悪い方が良い」原則と僕の体験談|Rui Ueyama|note
ソフトウェアの世界には 「悪い方が良い」原則 という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカのオリジナルの作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイ... 続きを読む
コンピュータセキュリティと様々なサイドチャネル攻撃|Rui Ueyama|note
コンピュータセキュリティというのは微妙なもので、正面からの攻撃には安全でも、攻撃対象とは思われていなかった部分を突くとあっさり情報が盗めるパターンがある。そういう攻撃手法をサイドチャネル攻撃という。ここではサイドチャネル攻撃についていくつか見てみよう。 たとえば社外秘の文書をセキュアにブラウズしたいとしよう。VMwareなどを使って仮想マシンにOSを2つインストールして、通常利用環境とセキュア環境... 続きを読む
意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて|Rui Ueyama|note
プログラムを書いていると、素直に実装した結果として毎回特定の条件が満たされているけど、本来はそれは誰に保証されていないという場面に出くわすことがよくある。保証されていない偶然の動作に依存することで生じるバグというのはかなり多い。 例えば最近では、ドッカンバトルというゲームで、2回SQL文を実行した結果が同じ順序で並んでいるという誤った期待をしているコードがあったせいで、ガチャの確率がめちゃくちゃに... 続きを読む
ソビエトロシアの3進コンピュータ|Rui Ueyama|note
ロシア人の同僚に、ロシアには3進コンピュータがあったらしいよね、という話をしたら、僕の大学の教授がそのコンピュータの発明者と一緒に仕事してたよ、と言われたことがあった。ソビエト連邦には3進数のコンピュータが実際にあったのだ。その奇妙な機械についてちょっと書いてみよう。 普通の2進コンピュータでは、数の1桁を1ビットといって、1ビットで2つのパターンを表すことができる。同じように、3進コンピュータで... 続きを読む
コンパイラに仕込まれた細工とシステムのセキュリティの話|Rui Ueyama|note
コンパイラのソースには書いていないのにバイナリだけで代々伝わっていく情報というのがあって、それはコンピュータのセキュリティに大きく関わっている。ここではそれについて書いてみよう。 僕は 8cc というCコンパイラをスクラッチから書いたことがあるのだけど、8ccには文字列を読む部分で、"\"の後に"n"がきたら"\n"という文字(改行文字)を読んだことにするという 箇所 がある。これはよく考えてみれ... 続きを読む
高頻度アルゴリズム取引業者の終わりなきスピード競争|Rui Ueyama|note
誰にとっても通信速度は遅いより速い方がいいけど、情報の速さで利益を出している高頻度アルゴリズム取引業者にとっては、通信速度は死活問題だ。そういった業者のために、証券取引所間のレイテンシをマイクロ秒単位で減らすネットワークが、数百億~数千億円というお金を使って構築されている。ここではそういうネットワークについて書いてみよう。 いつの時代でも、証券取引の参加者にとって、他の証券取引所の状況をいち早く知... 続きを読む
もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?|Rui Ueyama|note
思考実験として、全世界の人が同時に、自分の持っているコンパイラやインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソースコードが残っていても、コンパイラ自身も含めてどのようなプログラムもコンパイルできなくなってしまう。この状況から人類は元のコンピュータ文明を復旧することができるのだろうか? 僕は結論としては、かなり簡単に復旧できると思う。ここではその手順につ... 続きを読む
システム障害なしにうるう秒を乗り切る技術の発達について|Rui Ueyama|note
数年に一度、1秒だけ1日が長くなることがある。そのたびにどこかでシステム障害が起こるのだが、何回もうるう秒を経験するごとに次第にベストプラクティスも確立されつつある。ここではうるう秒問題と人々がそれにどう対応してきたかについて説明しよう。 うるう秒というのは地球の自転速度のわずかな揺らぎに対して時計を調整するために数年に一回調整される1秒のことだ。うるう秒で1秒短くなる日は23:59:59からの1... 続きを読む
十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama|note
いろいろなソフトウェアで、大きいランダムな値をユニークな値とみなすということが行われている。例えばユニークな識別子としてよく使われる UUID はただの128ビットの乱数だ。gitも SHA-1 ハッシュ値が160ビットの乱数のように扱えることを期待して、それをユニークな識別子として使っていた。実際にはランダムな2つの値が同じになる確率はゼロではないのに、なぜこれが安全なやり方だと言えるのだろうか... 続きを読む
機械の目と人間の目の類似点|Rui Ueyama|note
「機械の目」というと冷徹かつ忠実に現実の世界を切り取るというニュアンスがある。カメラのイメージセンサなどは誰が作っても、それこそ別の惑星の知的生命体が作っても、僕らが持っているものと同じものになりそうだ。しかし実際にはそうではない。カメラは多くの場合、人間が見るための画像を生成する装置なので、人間の目の構造をかなり忠実に反映している。それについてちょっと見てみよう。 多くの人の目にはRGBの3種類... 続きを読む
エレベータに見るアルゴリズムの性能と公平性のバランス|Rui Ueyama|note
現実世界でもコンピュータの中でも、何らかの性能指標だけを追求すると参加者にとって極端に不公平になってしまうことがある。例えばエレベータとHDDは共通点がありそうに思えないが、この2つは性能特性的にとてもよく似ていて、リーズナブルな性能と公平性を両立させるために同じ制御方法が使われている。これについてちょっと説明してみよう。 1基しかない場合のエレベータの動き方は単純だ。一度上に動き出すと、上で待っ... 続きを読む