マガジン

  • #エンジニア 系記事まとめ

    • 1,092本

    noteに投稿されたエンジニア系の記事のまとめ。コーディングTIPSよりは、考察や意見などを中心に。

記事一覧

オープンソースビジネスの挑戦と現実

いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・…

Rui Ueyama
10か月前
1,016

スタンフォードのコンピュータサイエンスの授業の感想(後編)

2017年にも同じタイトルの記事を書いたのだけど、その後無事にスタンフォード大学院のコンピュータサイエンス学部を卒業することができたので、前回の記事以降に取った授業…

Rui Ueyama
3年前
364

ビットコインは世界中でどれだけの電力を使っているのか?

ビットコインのような暗号通貨は、取引所で購入するだけではなく、PCやマイニング機器を使って「掘り出す」こともできる。しかし、ビットコインをマイニング(採掘)すると…

Rui Ueyama
4年前
212

IPv4と互換性のあるアドレス拡張プロトコルを考えてみたら、どういう感じになるんだろうか?

前回の記事ではIPv6の普及がなぜなかなか進まないのかを説明した。一つの根本的な問題は、IPv6がIPv4と互換性がないことだった。では、IPv4と互換性のあるプロトコルは、一…

Rui Ueyama
4年前
60

IPv6がなぜいまだに普及していないのか

現在のインターネットの基本をなしているIPv4というプロトコルには、広く知られた大きな欠点がある。パケットのアドレスフィールドの幅が32ビットなので、ネットワークに接…

Rui Ueyama
4年前
544

オープンソース活動がフルタイムの仕事になる仕組みの話

僕の仕事をひとに説明するときに、「Googleで仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒…

Rui Ueyama
5年前
552

Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話

2018年の夏に僕はセキュリティキャンプ(以下「セキュキャン」)というイベントでCコンパイラ作成コースの授業を行いました。授業はとてもうまくいったといってよいと思い…

Rui Ueyama
5年前
247

Turing Complete FMの裏側 ― Webサイト構築編

前回の記事ではTuring Complete FM(TCFM)ポッドキャストの録音テクニックを紹介しました。TCFMウェブサイトにはポッドキャストのリスナーのユーザ体験を向上させる工夫が…

Rui Ueyama
6年前
51

音の良いポッドキャストを録音するために ― Turing Complete FMの収録テクニック

僕は最近Turing Complete FMというポッドキャストを運営しているのですが、その収録のためにポッドキャスト録音テクニックを結構研究しました。ここではそのノウハウをシェ…

Rui Ueyama
6年前
310

「悪い方が良い」原則と僕の体験談

ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実…

Rui Ueyama
6年前
667

コンピュータセキュリティと様々なサイドチャネル攻撃

コンピュータセキュリティというのは微妙なもので、正面からの攻撃には安全でも、攻撃対象とは思われていなかった部分を突くとあっさり情報が盗めるパターンがある。そうい…

Rui Ueyama
6年前
81

意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて

プログラムを書いていると、素直に実装した結果として毎回特定の条件が満たされているけど、本来それは誰も保証してないという場面に出くわすことがよくある。保証されてい…

Rui Ueyama
6年前
83

ソビエトロシアの3進コンピュータ

ロシア人の同僚に、ロシアには3進コンピュータがあったらしいよね、という話をしたら、僕の大学の教授がそのコンピュータの発明者と一緒に仕事してたよ、と言われたことが…

Rui Ueyama
6年前
86

コンパイラに仕込まれた細工とシステムのセキュリティの話

コンパイラのソースには書いていないのにバイナリだけで代々伝わっていく情報というのがあって、それはコンピュータのセキュリティに大きく関わっている。ここではそれにつ…

Rui Ueyama
6年前
49

高頻度アルゴリズム取引業者の終わりなきスピード競争

誰にとっても通信速度は遅いより速い方がいいけど、情報の速さで利益を出している高頻度アルゴリズム取引業者にとっては、通信速度は死活問題だ。そういった業者のために、…

Rui Ueyama
6年前
54

もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?

思考実験として、全世界の人が同時に、自分の持っているコンパイラやインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソース…

Rui Ueyama
6年前
228

オープンソースビジネスの挑戦と現実

いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・ソフトウェアを元にビジネスを立ち上げようと試行錯誤してきた。その経験についてここでシェアしてみようと思う。

あらすじ

薄々予期していたことではあったけれど、結論から言うと、そんなにはうまくいかなかった話ということになる。要点をまとめると

もっとみる

スタンフォードのコンピュータサイエンスの授業の感想(後編)

2017年にも同じタイトルの記事を書いたのだけど、その後無事にスタンフォード大学院のコンピュータサイエンス学部を卒業することができたので、前回の記事以降に取った授業について、僕なりの感想をちょっとまとめたい。

CS255 暗号入門 (2018Q1)文字通り暗号についての授業。対称鍵暗号、公開鍵暗号、メッセージ認証、一方向ハッシュ関数などのトピックについて学ぶ。プログラミングではなく理論中心の授業

もっとみる

ビットコインは世界中でどれだけの電力を使っているのか?

ビットコインのような暗号通貨は、取引所で購入するだけではなく、PCやマイニング機器を使って「掘り出す」こともできる。しかし、ビットコインをマイニング(採掘)するとは、そもそもどういうことなんだろうか? また、ビットコインのマイニングのために世界中でどれくらいのエネルギーが使われているのだろうか? このエッセイではそれについて解説してみようと思う。

ビットコインの仕組みまずは簡単にビットコインの仕

もっとみる

IPv4と互換性のあるアドレス拡張プロトコルを考えてみたら、どういう感じになるんだろうか?

前回の記事ではIPv6の普及がなぜなかなか進まないのかを説明した。一つの根本的な問題は、IPv6がIPv4と互換性がないことだった。では、IPv4と互換性のあるプロトコルは、一体どういうものがありえたのだろうか?

この記事では、ASCIIをUTF-8に拡張したみたいに、IPv4と互換性を維持したままアドレスを64ビットに拡張したプロトコル(ここではIPv4+と呼ぶ)について考えてみたいと思う。そ

もっとみる

IPv6がなぜいまだに普及していないのか

現在のインターネットの基本をなしているIPv4というプロトコルには、広く知られた大きな欠点がある。パケットのアドレスフィールドの幅が32ビットなので、ネットワークに接続可能なホスト数の上限が2³²(約43億)になってしまっているのだ。その欠点を修正するために、1990年代後半にIPv6という新たなプロトコルが設計されたのだけど、いまだにインターネットではIPv6は少数派で、主流ではいまだにIPv4

もっとみる

オープンソース活動がフルタイムの仕事になる仕組みの話

僕の仕事をひとに説明するときに、「Googleで仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒に仕事している」と言うと、「???」という反応になることが多いので、僕はこういう仕事をしているんだよということをここでちょっと説明してみようと思います。

(2016年の僕のFacebookの投稿の転載です。)

僕のいるチーム

もっとみる

Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話

2018年の夏に僕はセキュリティキャンプ(以下「セキュキャン」)というイベントでCコンパイラ作成コースの授業を行いました。授業はとてもうまくいったといってよいと思います。参加者は6人だったのですが、6人全員プログラミング技術がかなり飛躍的に向上したようですし、そのうち3人は期間中にセルフホスト(自分の書いているコンパイラで自分のコンパイラ自身をコンパイルできること)まで漕ぎ着けることができました。

もっとみる

Turing Complete FMの裏側 ― Webサイト構築編

前回の記事ではTuring Complete FM(TCFM)ポッドキャストの録音テクニックを紹介しました。TCFMウェブサイトにはポッドキャストのリスナーのユーザ体験を向上させる工夫がいくつか存在しています。今回はTCFMのウェブサイトの技術面を紹介します。

はじめにTCFMはスタティックHTMLで構成されたサイトです。 ポッドキャストのテキスト情報が入っているYAMLファイルがあって、そこか

もっとみる

音の良いポッドキャストを録音するために ― Turing Complete FMの収録テクニック

僕は最近Turing Complete FMというポッドキャストを運営しているのですが、その収録のためにポッドキャスト録音テクニックを結構研究しました。ここではそのノウハウをシェアしようと思います。音がよくて聞きやすいポッドキャストの収録に役立ててもらえると幸いです。

はじめにポッドキャストでは音質は死活的に重要です。音質の大切さは強調してしすぎることはないと思うのですが、この点は甘く見られがち

もっとみる

「悪い方が良い」原則と僕の体験談

ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。

僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので

もっとみる

コンピュータセキュリティと様々なサイドチャネル攻撃

コンピュータセキュリティというのは微妙なもので、正面からの攻撃には安全でも、攻撃対象とは思われていなかった部分を突くとあっさり情報が盗めるパターンがある。そういう攻撃手法をサイドチャネル攻撃という。ここではサイドチャネル攻撃についていくつか見てみよう。

たとえば社外秘の文書をセキュアにブラウズしたいとしよう。VMwareなどを使って仮想マシンにOSを2つインストールして、通常利用環境とセキュア環

もっとみる

意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて

プログラムを書いていると、素直に実装した結果として毎回特定の条件が満たされているけど、本来それは誰も保証してないという場面に出くわすことがよくある。保証されていない偶然の動作に依存することで生じるバグというのはかなり多い。

例えば最近では、ドラゴンボールZ ドッカンバトルというゲームで、2回SQL文を実行した結果が同じ順序で並んでいるという誤った期待をしているコードがあったせいで、ガチャの確率表

もっとみる

ソビエトロシアの3進コンピュータ

ロシア人の同僚に、ロシアには3進コンピュータがあったらしいよね、という話をしたら、僕の大学の教授がそのコンピュータの発明者と一緒に仕事してたよ、と言われたことがあった。ソビエト連邦には3進数のコンピュータが実際にあったのだ。その奇妙な機械についてちょっと書いてみよう。

普通の2進コンピュータでは、数の1桁を1ビットといって、1ビットで2つのパターンを表すことができる。同じように、3進コンピュータ

もっとみる

コンパイラに仕込まれた細工とシステムのセキュリティの話

コンパイラのソースには書いていないのにバイナリだけで代々伝わっていく情報というのがあって、それはコンピュータのセキュリティに大きく関わっている。ここではそれについて書いてみよう。

僕は8ccというCコンパイラをスクラッチから書いたことがあるのだけど、8ccには文字列を読む部分で、"\"の後に"n"がきたら"\n"という文字(改行文字)を読んだことにするという箇所がある。これはよく考えてみれば自己

もっとみる

高頻度アルゴリズム取引業者の終わりなきスピード競争

誰にとっても通信速度は遅いより速い方がいいけど、情報の速さで利益を出している高頻度アルゴリズム取引業者にとっては、通信速度は死活問題だ。そういった業者のために、証券取引所間のレイテンシをマイクロ秒単位で減らすネットワークが、数百億~数千億円というお金を使って構築されている。ここではそういうネットワークについて書いてみよう。

いつの時代でも、証券取引の参加者にとって、他の証券取引所の状況をいち早く

もっとみる

もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?

思考実験として、全世界の人が同時に、自分の持っているコンパイラやインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソースコードが残っていても、コンパイラ自身も含めてどのようなプログラムもコンパイルできなくなってしまう。この状況から人類は元のコンピュータ文明を復旧することができるのだろうか?

僕は結論としては、かなり簡単に復旧できると思う。ここではその手順に

もっとみる