Turing Complete FM

Rui Ueyama

プログラミングとコンピュータサイエンスについてのディープな話をするポッドキャストです。

  1. 2018/10/01

    31. 携帯電話のハッキング、コンピュータサイエンスの論文 (るくす)

    カーネギーメロン大学の客員研究員として明日から赴任するるくすくんと、コンピュータのセキュリティや、システムズ系のコンピュータサイエンスの論文などについて話をしました。出演者: るくす (@RKX1209)、Rui Ueyama (@rui314) https://turingcomplete.fm/31 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) カーネギーメロン大学に明日から行きます (0:47) Samsung Galaxyのシリアルコンソールを有効にするハードウェアの裏技 (9:00) iPhoneではアンロックしてから1時間が経過するとUSBデータ通信が完全無効化される (16:00) メモリアクセスのときに放射される電磁波ノイズでラジオを鳴らす (17:30) 初代XBoxのメモリバスをタップしてデータを取得 (18:54) るくすくん作成のNintendo Switchエミュレータ公開されました (22:00) Nintendo SwitchにAndroidを移植 (26:10) Linus、他人に対する振る舞いを改善するために一時的に公的な立場を退く (27:50) るくすくん、Kernel/VM関西というイベントを主催 (34:06) x86ネイティブコードを安全に動かすNaCLの論文 (36:30) 4KiBページを自動的に2MiBのスーパーページに昇格するというFreeBSDの機能 (44:57) Hans Boehmの「スレッドはライブラリとしては実装できない」という論文 (50:20) カーネギーメロン大学における生活 (55:59) エンディング (59:46) iOSのUSB制限モード Macbook system bus radio るくすくんのSwitchエミュレータ Native Client: A Sandbox for Portable, Untrusted x86 Native Code Practical, transparent operating system support for superpages (PDF) Threads Cannot be Implemented as a Library (PDF)

    1時間
  2. 2018/09/23

    30. セルフホストできるCコンパイラの作り方を夏休みの特別授業で教えた話 (hikalium)

    セキュキャンのCコンパイラ自作コースが無事に終わりました。共同講師だったhikaliumと一緒に、コンパイラ自作の要点やコンピュータサイエンスの教え方などについて振り返りました。出演者: hikalium (@hikalium)、Rui Ueyama (@rui314) https://turingcomplete.fm/30 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) よい寄付先とは (4:47) セキュキャンのCコンパイラ自作ゼミとは (7:51) インクリメンタルにCコンパイラを作る (12:21) 左辺値と右辺値 (17:55) 似て非なるものを作るのは努力の重複ではない (19:17) 9cc書き始めました (20:51) 自作コンパイラの性能もそんなに悪くはない (21:18) Ken Thompsonのログインハック (23:10) Cコンパイラ、アセンブラ、リンカ、libc関数を全て自前で書く (32:16) Stanford CS140 (34:59) Stanford CS140e (37:40) 三億円事件 (40:59) 仮想通貨盗難事件のスケールの大きさ (45:29) ビットコイン盗難とSIMスワップ攻撃 (48:11) ハードウェアのセキュリティキー (49:08) hikalium、Ergodoxキーボードを買う (51:24) キーボード早打ち対決 (55:35) 国によってキー配列が違う (58:55) プログラミングを教える時の心構え (1:01:31) Keithというよい講師の話 (1:05:07) 褒めるときに悪い話をセットにしない (1:07:10) 久しぶりのTCFM (1:11:58) エンディング (1:14:14) An Incremental Approach to Compiler Construction (PDF) Let's Build a Compiler, by Jack Crenshaw Writing A Compiler In Go 8cc C Compiler 9cc C Compiler sk2cc aqcc Ken Thompsonのハック (PDF) 自作Cコンパイラで Ken Thompson のログインハックを再現してみた aqccの解説スライド Rustで書かれたJavaScriptエンジン Stanford CS140 Stanford CS140e 三億円事件 (Wikipedia) Yubikey Kinesis keyboard Ergodox keyboard Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話

    1時間16分
  3. 2018/08/01

    29. ユタ・ティーポット、Cコンパイラ開発の授業、中学生時代のOS自作エピソード (hikalium)

    セキュキャンのCコンパイラ作成コースの話、CGでよくでてくるティーポットの実物を入手した話、hikaliumの中学生時代のOS自作の話をしました。出演者: hikalium (@hikalium)、Rui Ueyama (@rui314) https://turingcomplete.fm/29 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) セキュキャン事前学習始まりました (1:33) 「低レイヤを知りたい人のためのCコンパイラ作成入門」(仮題)、現在7万字 (3:58) Cの不可解な言語仕様のルーツを知るために1972年の最初期のCコンパイラのコードを読んでみた (6:07) 符号拡張とマイナス2進数 (13:04) コース参加者のコードのほうが8ccのコードよりきれい (17:57) 一番最初のコンパイラは構文解析が非常に苦労した (20:23) CGでよくでてくる例のティーポットを買いました (22:07) 元々はボストンのコンピュータ博物館で展示されていた (25:15) Frieslandという会社が今でも同じティーポットを作っている (26:03) ユタ・ティーポットはなにがCGに適しているのか (28:27) ユタ・ティーポットと南部鉄器の類似性 (30:31) 内輪ネタとしてのユタ・ティーポット (33:14) ユタ大学のUtah Teapot Rendering Competition (34:00) 画像処理の標準テストイメージとしてよく使われる女の人Lennaの話 (37:57) ユタ・ティーポットは日本からも普通に買えるはず (41:47) hikaliumのOS自作入門 (43:28) hikaliumの小学生時代のホームページ (44:21) 30日OS自作入門本のOSのファイルシステム (48:00) GUIの多色対応 (51:36) 30日OS自作入門本のmalloc (55:29) K&R mallocを自力で発明して実装 (58:10) テキストボックスを実装 (1:00:33) ARMの実行のみできるページ(読めない)という新しい機能 (1:03:17) x86のページテーブルがいつの間にか5段くらいに深くなっている件 (1:06:32) lldでEFIバイナリのブートローダを簡単に作成 (1:08:01) lldはクロスのビルドを簡単にするつもりで作っている (1:09:48) hikaliumのOS次回作のテーマ (1:12:07) Window Systemでウィンドウを入れ子にする (1:15:04) クリックした場所を検出しようとすると必ずマウスカーソル自身になる問題の回避法 (1:18:58) MIDIファイルを読んでPCのビープ音で再生する機能を実装 (1:20:48) 無理やりなコードでも動くものを一回書くと学べることが多い (1:25:00) Intelのマニュアルを読んで16ビットモードのエミュレータの作成を試みる (1:26:42) 中学生の夏休みの頃はひたすらコードを書いていたりしていた (1:31:38) エディタはWindowsのメモ帳だった (1:32:18) いまからみると稚拙なコードを書いていた中学生時代 (1:37:50) エンディング (1:39:57) 1973年前後のCコンパイラのソースコード 2の補数 (Wikipedia) 8cc C Compiler ユタ・ティーポット (Wikipedia) 購入したユタ・ティーポットの写真 コンピュータ・ヒストリー・ミュージアムに収められている「本物」のユタ・ティーポット 南部鉄器 (Wikipedia) Utah Teapot Rendering Competition 画像の標準テストイメージとしてよく使われるLenna Frieslandのティーポット注文ページ Frieslandのティーポット注文ページ(中) Frieslandのティーポット注文ページ(オリジナルの大きいサイズ) 30日でできる! OS自作入門(書籍) ARM execute-only memory プログラミング言語C(通称K&R本)

    1時間42分
  4. 2018/07/24

    28. プログラミング言語のブートストラッピング問題、コードとの互換性を保ちつつ言語を変更していく話 (川合史朗)

    Gauche Schemeの作者の川合史朗さんと言語処理系についての話をしました。GaucheのCコードとの互換性を保ちつつ無限リストを導入するために採用したトリックや、Gauche自身で書かれているGaucheを過去のバージョンでビルドするために気をつけていることなどの話をしました。出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314) https://turingcomplete.fm/28 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) 電卓そろばん対決の動画存在しました (2:28) Gaucheとそのほかのプログラムのリリースプロセス (3:33) コンパイラのブートストラッピング問題とバージョン間の互換性 (4:51) GCCやClangにおけるブートストラッピング問題 (18:08) Goでは言語仕様がフリーズされていてGo 1の間は変更されない (19:41) Webブラウザの6週間のリリースサイクルは短いのか長いのか (20:35) FirefoxもClangとlldにスイッチ (21:32) Gaucheがstdioを使わずに独自bufferred IOを実装している理由 (22:58) FILE構造体の内部にアクセスする(移植性のない)実装 (26:41) プログラム終了時にバッファをフラッシュしないといけない (27:13) stdioではstdinを読もうとしたらstdoutがフラッシュされる (28:24) 遅延シーケンス(無限リスト) (31:05) Cレベルでの互換性を保ったままconsセルを遅延シーケンスにするトリック (34:52) 遅延シーケンスをどこで使っているのか (37:29) 遅延シーケンスのパフォーマンス最適化 (38:45) Clojure言語のTransducerという仕組み (42:07) カリー化とは何か (46:06) キーワードとシンボル (48:09) キーワードをシンボルのサブクラスにして発生した問題 (54:27) Scheme言語仕様にはキーワードはない(シンボルで十分?) (56:08) 現在仕様策定中のScheme言語仕様R7RS (58:27) R6RSの言語仕様は振り返ってみて良いものといえるのだろうか? (1:00:12) 標準化委員会が作る言語仕様と個人の作品としての言語仕様 (1:03:55) Goの言語仕様の変更のプロポーザル (1:05:09) Schemeでは言語仕様を実験的に拡張して良さそうなら標準化するというのがよくある流れ (1:06:51) 言語仕様策定の投票権は全員平等なのが本当によいのか (1:09:19) Schemeは誰でも参加できるところがよいところ (1:10:02) C++のトライグラフの廃止に最後まで反対していたのはIBMとカナダ (1:11:14) エンディング (1:13:22) Running for Grace (Shiroさんの出ている映画) Gauche Scheme Consセル (Wikipedia) stdioにおけるバッファのフラッシュのルール Go言語仕様 Clojure言語 Transducers カリー化 (Wikipedia) Haskell (Wikipedia) ハスケル・カリー (Wikipedia) SRFI(サーフィー) R6RS(現行の最新のScheme言語仕様) トライグラフ (Wikipedia)

    1時間15分
  5. 2018/07/15

    27. 歴史の中のコンピュータ: 1946年の電王戦、エニグマ暗号の解読 (うどん)

    今週は歴史回です。僕からは、終戦の翌年の東京で、日本のそろばん名人が米軍代表の電卓オペレータと大規模な公開マッチを行って、そろばん名人が勝利したという知られざるエピソードを紹介します。うどんくんからは、第二次世界大戦のドイツ軍の暗号がどう破られたのかという話をします。出演者: うどん (@kw_udon_)、Rui Ueyama (@rui314) https://turingcomplete.fm/27 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) コンピュータ歴史博物館 (0:40) そろばん対決の当時の新聞記事を図書館で探す (4:22) 星条旗新聞の一次資料を発見 (8:24) 日本側挑戦者は逓信省に勤めるマツザキ・キヨシさん (9:50) 新聞の興行としての計算勝負 (12:52) 会場はアーニー・パイル・シアター(旧東京宝塚劇場) (14:55) アメリカ側挑戦者はGHQ財務局のThomas Nathan Wood二等兵 (16:32) モータを内蔵した機械式計算機 (17:19) 勝負の予想は半々に割れる (18:40) 日本側からNHKや新聞が取材に来ていてフィルムも残っているはず (20:39) マツザキさんが勝利 (21:27) マツザキさんの勝利を報じる星条旗新聞 (23:35) この計算対決があったことはほとんど知られていない (24:35) エニグマ暗号機 (27:24) 大昔のコンピュータを、現役学生時代にMITでハックしていた人がデモしてくれる (27:56) エニグマの基本構造 (29:46) シーザー暗号やヴィジュネル暗号との比較とその解読法 (33:29) ワンタイムパッドとは (38:56) バベッジとバベッジの階差機関 (41:05) エニグマの基本構造と鍵空間の大きさ (43:24) エニグマはいつ解読されたのか (46:54) 分散コンピューティングで解読する現代の試み (49:32) ポーランドが暗号化手順の脆弱性を発見してエニグマのレプリカを作ることに成功 (51:02) ソ連のページが重複した「乱数表」でアメリカが通信解読に成功していた事件 (1:06:30) ポーランド侵攻の直前にイギリスのチューリングのチームに成果を引き継いだ (1:07:38) チューリングを描いた映画「イミテーション・ゲーム」 (1:11:10) クリブを元に全探索する装置Bombe (1:12:10) ドイツ軍は連合国の暗号解読を試みたのか (1:16:05) アメリカ軍の暗号解読により山本五十六海軍長官が殺害される (1:17:52) タイガー手回し計算機 (1:19:26) 物量の差で負けた戦争と、そろばん電卓対決 (1:22:29) テレビ番組化希望 (1:23:47) 未解読の暗号文を解読する現代の試み (1:24:58) 最近も新しい暗号文が解読されている (1:29:21) エニグマのレプリカ自作 (1:31:01) 歴史回はどうだったか (1:32:21) サイモン・シン「暗号解読」 (1:33:02) エンディング (1:35:04) NHKの持っていたそろばん対決のフィルムの抜粋 コンピュータ・ヒストリー・ミュージアム コンピュータグラフィックスのデモでよくでてくるティーポッド (Wikipedia) そろばん対決のWired日本語版の記事 そろばん対決のWired英語版の記事 そろばん対決についての短い説明 (Wikipedia) 東京宝塚劇場 (Wikipedia) 風船爆弾 (Wikipedia) 星条旗新聞 (Wikipedia) Ancestry モンロー計算機のデモ (YouTube) エニグマ暗号機 (Wikipedia) エニグマの解読 (Wikipedia) バベッジの階差機関 エニグマについての詳しい日本語スライド ヴィジュネル暗号 (Wikipedia) エドガー・アラン・ポーの「黄金虫」 (Wikipedia) ポーランドが内部の配線を特定するのに成功した手法の説明 (Wikipedia) 欠陥のある乱数表によりソ連の暗号を解読するプロジェクト 映画「イミテーション・ゲーム」 (Wikipedia) チューリングによる暗号解読機Bombe (Wikipedia) イギリスによる海底ケーブル網 山本五十六海軍大将の戦死 (Wikipedia) サイモン・シン「暗号解読」(書籍) How Polish Mathematicians Deciphered the Enigma (PDF) 分散コンピューティングで解読するプロジェクト Enigma@Home Frode Weierudさんによる エニグマ暗号まとめサイト Frode Weierudさんによるエニグマ暗号解読についての最近の進歩についての論文 (PDF) チャールズ・バベッジ (Wikipedia) タイガー計算機 計算機屋かく戦えり(書籍) 追記 そろばん対決では四番勝負と言っていますが正しくは加減乗除とその全てのコンビネーションの五番勝負です。

    1時間37分
  6. 2018/07/08

    26. Nintendo Switchのエミュレータでhomebrewアプリを動かす話、サイバーセキュリティと政府機関 (るくす)

    るくすくんとSwitchエミュレータの進歩や、政府機関のサイバー部隊に就職したい話、セキュリティ全般について話をしました。出演者: るくす (@RKX1209)、Rui Ueyama (@rui314) https://turingcomplete.fm/26 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) Switchエミュレータでネットワーク通信が動くようになった (0:53) SwitchのHomebrewのアプリをエミュレータで動かして動作確認 (1:48) Webブラウザの脆弱性を使ってアプリをインストール (4:12) 完成度はまだまだだが、Switch用のNES(ファミコン)エミュレータくらいは動く (8:17) GPUのエミュレーションの方法 (14:01) 既存のエミュレータと動作を比較してデバッグ (15:27) 開発期間は4〜5ヶ月 (20:47) main関数に到達するまでが大変 (22:47) QEMUベースのSwitchエミュレータの比較 (26:04) オープンソース化したらどういう反応があるのか (27:13) るくすくんのセキュリティのサーベイ記事 (29:42) 日本の政府機関のサイバー部隊 (30:55) 日本の政府機関のハイテク音痴ぽさ (37:10) アメリカの情報機関に就職するには国籍がないと難しい (38:25) スパイ衛星の運用は内調 (39:20) ハッキングチームの情報流出事件 (42:00) ハードウェアの脆弱性を使ったターゲット攻撃 (45:34) PlayStation 4でWebブラウザがクラッシュすると警告文が出る (48:46) 法執行機関に対抗してユーザのプライバシーを守ろうとするAppleの姿勢と努力 (50:56) セキュアブートとは (55:02) 拡張ハードウェアを使ったセキュアブートの回避 (57:31) TCFMミートアップのQ&Aコーナーの質問 (1:00:20) ワーム事件を引き起こしたRobert Morrisは今はMITの教授 (1:08:29) Kevin Mitnickの逮捕に協力した下村努はノーベル賞受賞者の下村脩の息子 (1:10:21) Project LoonのAstro TellerはEdward Tellerの孫 (1:11:55) SwitchBrew(Nintendo SwitchのためのHomebrew) BSDソケット (Wikipedia) リモートデバッグのためのGDB stub Hackaday Hacker News るくすくんのサーベイ記事 − システムソフトウェアに対する攻撃の歴史と傾向 - 高度標的型攻撃や国家に支援された攻撃の仕組み 内閣情報調査室 (Wikipedia) 自衛隊のサイバー攻撃への対応について ハッキングチーム (Wikipedia) TPM ロバート・モリス (Wikipedia) 下村脩 (Wikipedia) 下村努 (Wikipedia) ケビン・ミトニック (Wikipedia) Project Loon エドワード・テラー (Wikipedia)

    1時間15分
  7. 2018/07/01

    25. Chromeのローディングの最適化、脆弱性報奨システム、ブラウザとマイクロカーネル (Kinuko)

    Chrome開発者のKinukoさんと、Chromeのページロードを速くする話や、ブラウザのセキュリティ、ブラウザのマルチプロセスアーキテクチャとマイクロカーネルの類似性などについて話をしました。出演者: Kinuko (@kinu)、Rui Ueyama (@rui314) https://turingcomplete.fm/25 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) Chromeのローディングを担当 (1:24) リンクはクリックしたら一瞬で表示されてほしい (3:32) Service Worker (4:28) WebページをまとめるWeb Packaging (6:23) Web PackagingとCDNとデジタル署名 (10:35) 信頼できる第三者による署名 (15:06) マウスオーバーでプリフェッチ (16:22) 機械学習でプリフェッチ (17:32) Chromeのデータセーバー (18:28) 遅い機能を使っていないことを宣言できるfeature policy (21:14) ブラウザの深い話をするつもりが普通のWeb開発の話になっていた (23:00) Service WorkerはGoogle検索も使っている (24:22) Service Workerの最適化 (26:23) Service Workerを使っている大規模サイトの例 (30:36) ブラウザはとにかく大きくて複雑 (32:05) 細かくプロセスに分ける現代のブラウザはマイクロカーネルぽい (34:11) File descriptor passing (42:04) ブラウザのタブをVMにしたら? (44:06) KinukoさんはOSぽい研究をしていた (47:43) 分散ファイルシステムの研究 (48:40) WWWのデザインの適当さの衝撃度 (51:39) Chromeの脆弱性報奨システム (55:10) 定評のあるオープンソース開発者が意図的に悪意あるコードを書いたら見つけられるか? (1:00:03) SanitizerがC++を延命している (1:05:31) セキュリティレビューワーは何をみているのか (1:11:30) 開発力のあるエンジニアを大量に集めてブラウザの巨大さに対抗 (1:14:05) Windows版のChromeもlldリンカに移行 (1:15:16) TCFMミートアップに100人以上が参加 (1:17:39) 趣味や研究でChrome開発に参加→就職 (1:21:14) Service Worker Web Packaging AMP ソフトウェア危機 MozillaのXUL(ズール) LLVM sanitizers Valgrind Chromeの脆弱性報奨システム Turing Complete FMミートアップ lld

    1時間24分
  8. 2018/06/24

    24. 細胞内の物質の濃度を測る研究、ヒトゲノム計画、害虫の根絶 (Shiro Kadowaki)

    東大医学部卒業後にソフトウェアエンジニアをしている門脇さんと、生物の研究の話や最近の遺伝子技術の進歩などについて話をしました。出演者: Shiro Kadowaki、Rui Ueyama (@rui314) https://turingcomplete.fm/24 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) 東大医学部 → ソフトウェアエンジニア (1:43) DOS版のソフトをWindows 3.1に移植 (4:51) 医学部に行くと普通は医者になる (6:55) 細胞内の物質の濃度を測る研究 (9:40) IP₃の濃度を蛍光タンパク質を使って測定 (16:15) 生物の実験と再現性の問題 (19:33) 測定することで測定対象に影響を与える問題 (24:00) 遺伝子を一から作ることはできるのか (25:08) 人体を設計し直せるとしたら (29:35) 蛍光の観察方法 (31:26) 制御装置をビジュアルプログラミング言語で作る話 (36:27) 細胞のシートや立体構造を作る話 (38:29) 実験の動画をMOで保存 (39:37) 実験装置の光源 (40:56) ヒトゲノム計画 (46:29) Perlの正規表現で遺伝子を探索 (50:37) 遺伝子の候補を見つけた後どう検証するのか (55:18) ディープラーニングを使って眼底写真から血圧や性別を判別する話 (58:22) 蚊を根絶する話 (1:00:50) 沖縄における不妊虫放飼の実例 (1:03:07) タスマニアデビルの感染性のガン (1:06:03) 野生生物の種単位での根絶を可能にするGene Drive (1:07:37) 数珠つなぎ式Gene Drive (1:11:11) UnicodeのDNA絵文字のバグ (1:14:53) マッドサイエンティストなPCR発明者 (1:18:49) Wikipediaの専門のページ (1:20:40) Win32s IP₃受容体 蛍光タンパク質 MOドライブ SyQuestのリムーバブルハードディスク ヒトゲノム計画 タスマニアデビルの感染性のガン 不妊虫放飼 毎週数百万匹の不妊化蚊を放って蚊を地域から根絶する計画 Gene Drive 数珠繋ぎ式Gene Drive DNAの絵文字 マリス博士の奇想天外な人生(書籍) オクロの天然原子炉

    1時間24分
4.7
5段階評価中
211件の評価

番組について

プログラミングとコンピュータサイエンスについてのディープな話をするポッドキャストです。

その他のおすすめ