IT業界、40年やってます (老人の独り言) 

現在68歳、IT関連で勉強したい事が盛りだくさんで、目移り状態です(^o^)

1990年 OSF 出張とアメリカ免許証

1989年にApollo Computer が HP に買収された関係で

日本法人の社長が Sonyワークステーション NEWS を販売・サポートする会社 ソニーコンピュータシステムを立ち上げて、そこに誘われました参加しました。

その頃 UNIX の主導権争いを Sun MicrosystemsAT&TUnix Internationsl(UI) と DEC , HP, IBM などの Open Software Foundation(OSF) 連合が戦ってました。

自分はハーバード大学、MIT の有るケンブリッジに有った OSF に行って OSF/1 OS の開発グループに参加してコマンドの日本語作業を行いました。Apollo Computer 出身者も多く、上司が女性でこの方も Apollo Computer 出身者でした。アメリカ人の友人も居ました。

プロジェクトは10月で完了して、参加した記念で以下のような木製の表彰状を頂きました。

 

 

日本では自動車免許証を持ってて、国際免許証も持ってましたが、アメリカの免許証がどんなものか興味が有ったので取得しました。

自分は短期滞在でしたが、免許証センターに行って、パスポートを見せるだけで、試験の登録が終わり、お金を払って教科書を貰いました。その後、予約した日に試験場に行きました。試験の言語は日本語を含めて複数ありましたが、教科書が英語だったので、英語で受けました。10問中7問正解(記憶が定かでないです)で試験がパスです。後は視力検査が有って、仮免が発行されます。自分はすぐに実地試験の登録を行いました。

ただ面倒なのは試験場まで、車とマサチューセッツ州の免許証を1年以上取得者を連れて行かないと行けない規則があり、アメリカ人の友人にお願いしました。

試験はすごく簡単で試験官が隣に乗って、進め、左に曲がれ、駐車しろって指示されそれに従って自動車を運転するだけでした。

それで合格したら、すぐに5年有効の免許証が出来ました。

PC のドライブ C の容量アップ 512GB => 2TB

久しぶりの投稿です。

BTOで購入したPCでしたが、内蔵6TB HDDを増やしたり、512GB SSD を追加したりして来ましたが、そろそろ C ドライブの容量が 512GB なので 1TB 以上にしたいと思ってました。

価格.COM を漁ってたら 2TB の SSD 1万5千円

Solidigm  P41 Plus SSDPFKNU020TZX1 (M.2 2280 2TB)

を見つけたので即購入しました。

もともとインテルの技術を引き継いだ製品で評判も良かったです。数日後価格を見たら2万円になっててびっくりしました。

 

SSD M2 外付けのケースを持っていたので、データの入れ替えに使えると思ってたら、なんと B&M Keyで購入したM Key なので使えず! 仕方がないので、クリーンインストールしました。 Windows10 Pro のインストールメディアが USB メモリに有ったので

Win10 Pro => Win11 Pro へアップグレード。その他にアプリを全部復元に時間がかかりましたが、無事終えられました。さすが 2TB なので C ドライブがスカスカです。

 

古い 3Dゲーム作成本について

1995年に出版された本 Lary L. Myers' "Animation Construction Kit" はどこで買ったか覚えて無いのですが、ほとんど読まずに積読状態。やがてはスキャナで PDF にして本は捨ててしまいました。

当時 DOOM って疑似 3D ゲームが大流行で,かなりハマりました。同じ様なゲームを作る本で、プログラムはソースで CD-ROM 付きで配布されてました。

 

ずっと気になってましたが、この本のソースコードコンパイルしようと試みたカナダ人が居ることを知りました。その人のブログです。

Amazing 3-D Games Adventure Set | Gered's Ramblings

 

これ読むと、CD-ROM に入ってる DOS 版のソースは安定度が低い間違ったバージョンだそうです。そこで Windows 版は動く様なので、それを移植したそうでその記事が

Amazing 3-D Games Adventure Set | Gered's Ramblings

 

あと調べた所、このオリジナルの英語の本には日本語の翻訳が有りました。それも CD-ROM が付いているので、中古で1,350円だったので買ってしまいました(汗)

内容説明

3Dゲームを作ろう!!3Dエンジンの設計/実装から、ゲーム作りのテクニックまで。サンプルプログラムを収録した付録CD‐ROM付き。

目次

1 3次元ゲームのテクニック(3次元ゲームの世界へ;3次元光線キャスト技術の探求)
2 ACK‐3Dエンジンの実装(3次元ゲームエンジンへ向けて;データ構造の統合;マップの上の移動 ほか)
3 3次元ゲームの作成(ACK‐3DによるWindowsアプリの作成;マップの作成;3次元ゲームを作ろう)

なので英語の翻訳本に間違い無いです。

 

CD-ROM の内容は

Amazing 3-D Games Adventure Set CD-ROM : Coriolis Group Books, Larry L. Myers : Free Download, Borrow, and Streaming : Internet Archive

に ISO 形式でダウンロードできます。このオリジナル英語本の著者自身がアップロードしてます。なので、DOS 版の修正がされているかもしれないで、差を調べてみようと思います。

 

つづく・・・

 

 

 

 

O’Reilly 社の サブスク

中小企業の老人アプリ技術者には新しい技術は不要なので、回ってくる仕事は改修作業で、中には10年位古いアプリの改修が有って、Visual Studio の2013 でしか開発出来ないとか、検索しても出てこないとか・・・

 

そんな訳で、今ホットな IT の話題って何か興味があります。やっぱり最新の IT トレンドはアメリカが一番かと思います。そこで著名な出版社の O’Reilly Media の人気な話題を探してみます。

 

10日間無料の書籍・教材なので申し込んでみます。ただ円安の今、1ヶ月の代金がけっこう高い。

$49/month または $499/year 1ドル = 150円換算すると $49= 月額7,350円と老人の身には高い感じ。

 

 

デジタル化って何が目的か

最近公共料金の支払いに使っていたクレジットカードの有効期限が切れ、引き落とせない状況となって大慌て!

 

1. 携帯会社 はオンラインで登録OK

2. 電力会社(新電力会社)オンラインで登録OK

3. インターネット 半分OK・・・変更画面にログイン出来ない。(携帯番号が有効でない)契約していた携帯を解約。支払いをインターネット&携帯合算支払いにしていたため。やっとチャットで対応が出来た。

4. 地元ガス会社 はNG。オンラインで出来るのが、変更手続きの用紙を郵送して来るって事。それを送り返す。

 

支払い方法一つとってもバラバラ・・・これは良いけど、4の地元ガス会社は未だ紙で運用している。中小企業なら分かるけど。

そういう事務作業する担当者が未だ山ほど居るのでしょうね。デジタル・オンライン化すると担当者が余剰になるので廃止出来ないのかな?

 

って愚痴って見ました。

 

 

 

 

 

 

 

昔話 パート9 アメリカ出張 Apollo Computer 本社

◎ビッグニュース

翌年の 1986年の1月かな、スペースシャトルのチャレンジャー号が大爆発して墜落。

本社の日本人従業員の人と話していたら、すごい勢いで女性が入ってきて、大事件が起こった事を伝えていた事を記憶してます。

 

乗組員にニュー・ハンプシャー州の高校教師クリスタ・マコーリフさんが居て、本社のほぼ地元でも有るので、かなりその女性は驚いてました。わずか37歳で亡くなったので、彼女の人生の最大のイベントで命を失ったことは本当に残念でした。

 

数日間、スペースシャトルが発射後すぐに爆発するショッキングがシーンは何度もニュースでやってました。

 

当時は自分には関係の無い事故だと思ってましたが、この事故で宇宙関連の多くのプログラムが停止して、その影響で日本のある案件で機械が売れなかったと聞きました。

 

◎生活

マサチューセッツ州ニューハンプシャー州は冬の間は雪が毎日降っていて、車での出勤の日課は、外に停めてある車のフロントガラスに積もった雪かきする事です。

それからアパートから車で30分位の通勤です。全ての室内は温かいので、移動の時だけ寒いです。

朝、車がスタートできなくなり、車をトーラスという ワゴンタイプの FORD 車に交換して貰いました。それからはトラブル無しの通勤が出来ました。

 

2カ月後、アパートの引っ越しが必要で、会社のそばのチェルムスフォードに引っ越しました。そこは、ガレージが有り、リモコンで開閉出来て、雪かきは無くなりました。

 

驚いたのは、当時まだ消費税と言うものが無かった日本。ニューハンプシャー州も無く、マサチューセッツ州には有った事です。最初お気に入りのスーパー Purity Supremeに行った時、値札より多くお金を請求されビックリした記憶が有ります。

 

書籍: Cpython Internals を読んでます

今一番人気の Python の内部構造を解説した本です。

Python 3.9 バージョンを解説。(最新は 3.11 です)

ちなみに、 Cpython のソースコードGithub

https://github.com/python/cpython

です。名前の通り C言語で書かれてます。

cpython internals

目次
Foreword 13
Introduction 15
How to Use This Book . . . . . . . . . . . . . . . . . . . . 16
Bonus Material & Learning Resources . . . . . . . . . . . 17
Getting the CPython Source Code 21
Setting up Your Development Environment 24
IDE or Editor? . . . . . . . . . . . . . . . . . . . . . . . . 24
Setting up Visual Studio . . . . . . . . . . . . . . . . . . . 26
Setting up Visual Studio Code . . . . . . . . . . . . . . . . 28
Setting up JetBrains CLion . . . . . . . . . . . . . . . . . 33
Setting up Vim . . . . . . . . . . . . . . . . . . . . . . . . 37
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Compiling CPython 43
Compiling CPython on macOS . . . . . . . . . . . . . . . 44
Compiling CPython on Linux . . . . . . . . . . . . . . . . 46
Installing a Custom Version . . . . . . . . . . . . . . . . . 48
A Quick Primer on Make . . . . . . . . . . . . . . . . . . 48
CPython’s Make Targets . . . . . . . . . . . . . . . . . . . 50
Compiling CPython on Windows . . . . . . . . . . . . . . 52
Profile Guided Optimization . . . . . . . . . . . . . . . . 58
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 60

The Python Language and Grammar 61
Why CPython Is Written in C and Not Python . . . . . . . 62
The Python Language Specification . . . . . . . . . . . . . 64
Using the Parser Generator . . . . . . . . . . . . . . . . . 69
The Parser Generator . . . . . . . . . . . . . . . . . . . . 69
Regenerating Grammar . . . . . . . . . . . . . . . . . . . 70
A More Complex Example . . . . . . . . . . . . . . . . . . 75
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Con􀑀guration and Input 80
Configuration State . . . . . . . . . . . . . . . . . . . . . 83
Build Configuration . . . . . . . . . . . . . . . . . . . . . 86
Building a Module From Input . . . . . . . . . . . . . . . 87
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Lexing and Parsing with Syntax Trees 94
Concrete Syntax Tree Generation . . . . . . . . . . . . . . 95
The CPython Parser-Tokenizer . . . . . . . . . . . . . . . 98
Abstract Syntax Trees . . . . . . . . . . . . . . . . . . . . 103
Important Terms to Remember . . . . . . . . . . . . . . . 113
Example: Adding an Almost Equal Comparison Operator . 113
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 118
The Compiler 119
Related Source Files . . . . . . . . . . . . . . . . . . . . . 121
Important Terms . . . . . . . . . . . . . . . . . . . . . . 121
Instantiating a Compiler . . . . . . . . . . . . . . . . . . 122
Future Flags and Compiler Flags . . . . . . . . . . . . . . 123
Symbol Tables . . . . . . . . . . . . . . . . . . . . . . . . 125
Core Compilation Process . . . . . . . . . . . . . . . . . . 132
Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Creating a Code Object . . . . . . . . . . . . . . . . . . . 143
Using Instaviz to Show a Code Object . . . . . . . . . . . . 144
Example: Implementing the “Almost-Equal” Operator . . . 147
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 152

The Evaluation Loop 154
Stack Frames . . . . . . . . . . . . . . . . . . . . . . . . 155
Related Source Files . . . . . . . . . . . . . . . . . . . . . 156
Important Terms . . . . . . . . . . . . . . . . . . . . . . 156
Constructing Thread State . . . . . . . . . . . . . . . . . 156
Constructing Frame Objects . . . . . . . . . . . . . . . . . 158
Frame Execution . . . . . . . . . . . . . . . . . . . . . . 166
The Value Stack . . . . . . . . . . . . . . . . . . . . . . . 169
Example: Adding an Item to a List . . . . . . . . . . . . . 175
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Memory Management 182
Memory Allocation in C . . . . . . . . . . . . . . . . . . . 182
Design of the Python Memory Management System . . . . 186
The CPython Memory Allocator . . . . . . . . . . . . . . . 188
The Object and PyMem Memory Allocation Domains . . . 198
The Raw Memory Allocation Domain . . . . . . . . . . . . 202
Custom Domain Allocators . . . . . . . . . . . . . . . . . 202
Custom Memory Allocation Sanitizers . . . . . . . . . . . 203
The PyArena Memory Arena . . . . . . . . . . . . . . . . 206
Reference Counting . . . . . . . . . . . . . . . . . . . . . 207
Garbage Collection . . . . . . . . . . . . . . . . . . . . . 214
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Parallelism and Concurrency 226
Models of Parallelism and Concurrency . . . . . . . . . . . 228
The Structure of a Process . . . . . . . . . . . . . . . . . . 228
Multi-Process Parallelism . . . . . . . . . . . . . . . . . . 231
Multithreading . . . . . . . . . . . . . . . . . . . . . . . 255
Asynchronous Programming . . . . . . . . . . . . . . . . 268
Generators . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Coroutines . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Asynchronous Generators . . . . . . . . . . . . . . . . . . 281
Subinterpreters . . . . . . . . . . . . . . . . . . . . . . . 282
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Objects and Types 288
Examples in This Chapter . . . . . . . . . . . . . . . . . . 289
Builtin Types . . . . . . . . . . . . . . . . . . . . . . . . 290
Object and Variable Object Types . . . . . . . . . . . . . . 291
The type Type . . . . . . . . . . . . . . . . . . . . . . . . 292
Bool and Long Integer Type . . . . . . . . . . . . . . . . . 296
Unicode String Type . . . . . . . . . . . . . . . . . . . . . 301
Dictionary Type . . . . . . . . . . . . . . . . . . . . . . . 311
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 316
The Standard Library 318
Python Modules . . . . . . . . . . . . . . . . . . . . . . . 318
Python and C Modules . . . . . . . . . . . . . . . . . . . 320
The Test Suite 324
Running the Test Suite on Windows . . . . . . . . . . . . 324
Running the Test Suite on Linux/macOS . . . . . . . . . . 325
Test Flags . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Running Specific Tests . . . . . . . . . . . . . . . . . . . 326
Testing Modules . . . . . . . . . . . . . . . . . . . . . . . 328
Test Utilities . . . . . . . . . . . . . . . . . . . . . . . . . 329
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Debugging 331
Using the Crash Handler . . . . . . . . . . . . . . . . . . 332
Compiling Debug Support . . . . . . . . . . . . . . . . . . 332
Using Lldb for macOS . . . . . . . . . . . . . . . . . . . . 333
Using Gdb . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Using Visual Studio Debugger . . . . . . . . . . . . . . . . 340
Using CLion Debugger . . . . . . . . . . . . . . . . . . . 342
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 352

Benchmarking, Pro􀑀ling, and Tracing 353
Using Timeit for Micro-Benchmarks . . . . . . . . . . . . 354
Using the Python Benchmark Suite for Runtime Benchmarks 356
Profiling Python Code with cProfile . . . . . . . . . . . . . 362
Profiling C Code with Dtrace . . . . . . . . . . . . . . . . 365
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Writing C Extensions for CPython . . . . . . . . . . . . . 371
Using This Knowledge to Improve Your Python Applications 372
Using This Knowledge to Contribute to the CPython Project 373
Keep Learning . . . . . . . . . . . . . . . . . . . . . . . . 376

Appendix 1 : Introduction to C for Python Programmers 378
C Preprocessor . . . . . . . . . . . . . . . . . . . . . . . 378
Basic C Syntax . . . . . . . . . . . . . . . . . . . . . . . . 381
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 389

 

 

読み始めたばかりですが、 VS Code のデバッガーを使って動きを追ってみました。

 

今まで PHPPython のプログラムは VS Code のデバッガーで動きを確認してましたが、C言語のデバッガーは初めてで、Windows の WSL2 Ubuntu 18.02 上の Cpython でのデバッグ環境構築は少々手こずりました。