タグ

ブックマーク / note.com/ruiu (6)

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

    前回の記事ではIPv6の普及がなぜなかなか進まないのかを説明した。一つの根的な問題は、IPv6がIPv4と互換性がないことだった。では、IPv4と互換性のあるプロトコルは、一体どういうものがありえたのだろうか? この記事では、ASCIIをUTF-8に拡張したみたいに、IPv4と互換性を維持したままアドレスを64ビットに拡張したプロトコル(ここではIPv4+と呼ぶ)について考えてみたいと思う。そして、IPv4+ならば、IPv6のような長い移行期間を経ることなく、段階的にネットワークをアップグレードしていけることを示そうと思う。 なお、このIPv4+プロトコルは、筆者としてはそれなりに真面目に考えてみたものではあるけれど、単なる思考実験にすぎない。また、ここで提案するものがベストだと主張したいわけでもない。あくまで、現在の知識と経験を元に1995年くらいに戻って考え直せるとしたら、どういう世

    IPv4と互換性のあるアドレス拡張プロトコルを考えてみたら、どういう感じになるんだろうか?|Rui Ueyama
  • IPv6がなぜいまだに普及していないのか|Rui Ueyama

    現在のインターネットの基をなしているIPv4というプロトコルには、広く知られた大きな欠点がある。パケットのアドレスフィールドの幅が32ビットなので、ネットワークに接続可能なホスト数の上限が2³²(約43億)になってしまっているのだ。その欠点を修正するために、1990年代後半にIPv6という新たなプロトコルが設計されたのだけど、いまだにインターネットではIPv6は少数派で、主流ではいまだにIPv4が使われている。 1990年代当時は、IPv6は規格を策定すれば比較的すぐに普及するはずで、それによってインターネットが抱えているアドレス枯渇の問題が解決されるという雰囲気だったように思う。1998年にタイムトラベルして、20年たってもまだIPv4を置き換えることに成功していないと当時の人のIPv6推進者たちに教えたら、多分すごくびっくりされるだろう。一体どうしてこんなに普及が遅れてしまったのだろ

    IPv6がなぜいまだに普及していないのか|Rui Ueyama
    solidstatesociety
    solidstatesociety 2019/11/05
    現実には異界転生に抵抗
  • オープンソース活動がフルタイムの仕事になる仕組みの話|Rui Ueyama|note

    僕の仕事をひとに説明するときに、「Google仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒に仕事している」と言うと、「???」という反応になることが多いので、僕はこういう仕事をしているんだよということをここでちょっと説明してみようと思います。 (2016年の僕のFacebookの投稿の転載です。) 僕のいるチームはLanguage Platform Teamというところで、プログラミング言語や開発ツールの開発をしています。LPTの中にもいろいろ細かいチームが分かれているのですが、僕がいるのはC++チームで、Googleで主要開発言語になっているC++言語の開発環境を担当しています。 C++で開発をするときには、C++ツールチェインと呼ばれる一連のツールを使います。ツールチェインの一番大きなコンポーネントは、人

    オープンソース活動がフルタイムの仕事になる仕組みの話|Rui Ueyama|note
  • もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?|Rui Ueyama|note

    思考実験として、全世界の人が同時に、自分の持っているコンパイラやインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソースコードが残っていても、コンパイラ自身も含めてどのようなプログラムもコンパイルできなくなってしまう。この状況から人類は元のコンピュータ文明を復旧することができるのだろうか? 僕は結論としては、かなり簡単に復旧できると思う。ここではその手順についてちょっと考えてみよう。 コンパイラのバイナリファイルが全部消えてしまった後、復旧のために目指すべきマイルストーンは、おそらくCコンパイラを元に戻すことになるだろう。Cで書かれたプログラムはOSやコンパイラ自身を含めてたくさんあるので、そこを起点にすれば、たくさんのプログラムを芋づる式に復旧していけるからだ。 ほとんどのCコンパイラはCかC++で書かれている。最近のGCCやClangは巨大かつC

    もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?|Rui Ueyama|note
    solidstatesociety
    solidstatesociety 2017/12/04
    のちのフェンリルである
  • ソフトウェアの互換性と僕らのUser-Agent文字列問題|Rui Ueyama

    いろいろな環境で動くプログラムでは互換性のためにその場しのぎのことをしないといけないことがよくあるけど、歴史が積み重なってくると、アドホックな技の上にアドホックな技が積み上がる喜劇的な状態になることがある。こういう問題は認識するのは簡単だが直すことは誰にもできない。まさに僕がそのような体験をしたのでちょっと説明したい。 僕は仕事としてオープンソースのlldというリンカを書いている。リンカというのはコンパイラが生成したバイナリファイルをつなぎ合わせて最終的な実行ファイルやDLLを作成するプログラムで、知らない人も多いと思うけど、何をコンパイルしても最後にはリンカが動いている。lldは既存プログラムより何倍も速くてビルドが早くなるというので最近は結構人気が高まっていて、FreeBSDなどのいくつかのOSが全面的にスイッチしようとしたり、あるいは大規模プロジェクトChromeや、どうもFire

    ソフトウェアの互換性と僕らのUser-Agent文字列問題|Rui Ueyama
  • 「プログラミングの常識」を時々見直す必要性について|Rui Ueyama

    自分の中のプログラミングの常識というものは、ときどき現実のハードウェアに合わせて調節しないといけない。ハードウェアが進歩し続けているので、コンピュータで簡単にできることと相対的に難しいことのバランスが変化し続けているからだ。ここでは特にストレージにフォーカスして書こうと思う。 昔はメモリが相対的にとても貴重な資源だったので多くのプログラマがメモリを節約することに血道を上げていた。例えばWindowsの初期の頃に設計されたデータ構造には、メモリをバイト単位ででもいいから節約したいという意図の痕跡がいまでも多く見受けられる。DRAMの次に速い記憶装置はHDDだったので、メモリが足りなくなればHDDにデータを保存せざるを得ないのだが、DRAMとHDDのランダムアクセスの速度差は、机の上のの開いているページを見るのと、そのAmazonで注文して到着するのを待つのと同じくらいのスケールで違うの

    「プログラミングの常識」を時々見直す必要性について|Rui Ueyama
  • 1