まあ、日々の記録なんとなく

計算機とか、数学とか、その他

Docker on macOS(macOSでdockerを使いたい)

この書籍でdockerとかコンテナとかを学んでみる。
book.impress.co.jp

% brew install --cask docker  #でDocker Desktopをインストールしてあったので、
% brew remove --cask docker #でDocker Desktopをアンインストールしてみる
% which docker
not found
% brew install docker	# brewでdockerをインストールしてみる
% which docker
/usr/local/bin/docker
% ls -l /usr/local/bin/docker
lrwxr-xr-x  1 ***  admin  35  7  6 15:49 /usr/local/bin/docker -> ../Cellar/docker/20.10.7/bin/docker
% docker --version
Docker version 20.10.7, build f0df35096d
% brew install --cask docker
・・・
Error: It seems there is already a Binary at '/usr/local/share/zsh/site-functions/_docker'.
% docker image ls
Cannot connect to the Docker daemon at unix:///Users/foo/.docker/run/docker.sock. Is the docker daemon running?
# さらに上手くいかない
# brewでインストールしたdockerをアンインストールしてみる
% brew remove docker
% which docker
docker not found

# 再度、brew install --cask docker でdockerをインストールしてみる
% which docker
/usr/local/bin/docker
% ls -l /usr/local/bin/docker
lrwxr-xr-x  1 root  admin  54  7  1 10:33 /usr/local/bin/docker -> /Applications/Docker.app/Contents/Resources/bin/docker

「コンピュータシステムの理論と実装 モダンなコンピュータお作り方(The Elements of Computing Systems: Building a Modern Computer from First Principles)」Nand2Tetris

サポートサイトwww.nand2tetris.org

  • 完全なるコンピュータシステムをゼロから構築する
  • NANDゲート
  • 論理回路
  • 加算器
  • ALU
  • CPU

「Pythonによる問題解決のためのアルゴリズム設計技法(Python Algorithms: Mastering Basic Algorithms in the Python Language)」第2章

題2章 アルゴリズム解析の基礎

  • 負のサイクルがない重み付き有向グラフ
  • \Theta(n \log n)の実行時間
  • 実行時間に焦点を当てる漸近記法
    • プログラムの実行時間を測るときに陥りやすい罠
  • Pythonによる木構造やグラフの表現方法

2-1 計算機における重要な考え
2-2 漸近記法
ブラックボックス list
ギリシャ語はちんぷんかんぷん!
交通ルール
2-3 グラフと木構造の実装
2-4 ブラックボックスにご注意を
2-5 まとめ
2-6 さらに興味のある方へ
2-7 演習問題
2-8 参考文献

「Pythonによる問題解決のためのアルゴリズム設計技法(Python Algorithms: Mastering Basic Algorithms in the Python Language)」第1章

第1章 どんな本なのか?

  • 循環セールスマン問題 v.s. 最短経路問題
    • A地点からZ地点まで全地点を通る最短経路を見つけるという難しい問題
    • A地点からB地点への最短経路を見つける問題
      • 効率的なアルゴリズムは存在しないので、近似的な解法を受け入れる必要がある

 1-1 本書の内容(つまり、何に関する本なのか?)

 1-2 本書を読む理由
 (なぜ、あなたはここにたどり着いたのか?)
 1-3 本書を読むにあたって(前提条件)
  Column ▶ 必要なものを手に入れよう
 1-4 本書の構成
 1-5 まとめ
 1-6 興味のある方へ
 1-7 演習問題
 1-8 参考文献

The Feynman Problem-Solving Algorithm:
  1. Write down the problem.
  2. Think very hard.
  3. Write down the answer.

「Pythonによる問題解決のためのアルゴリズム設計技法(Python Algorithms: Mastering Basic Algorithms in the Python Language)」

gihyo.jp
サポートページ
監訳者 辻真吾

  • 日々コードを書く上で、もっと効率のよいやり方があるのでは?とアルゴリズムに興味を持つ、このコード本当にあらゆるケースで正確なの?と疑問を持つ
  • Python2の正式なサポートは2020年1月に終了しているし、今更Python2はないでしょ、なので、Python3でコードを書いていこう
  • 書籍で使用されているコードはサポートページでJupyter Notebook(.pyynb)形式で公開されている
  • 実行環境は、第1章のコラム「必要なものを手に入れよう」に書かれているが、macOSならデフォルトでインストール済み、Anacondaを使いNumpy, Scipyなども一緒にインストールしてしまった方が楽かも
% which python
/usr/bin/python

% python --version
Python 2.7.16

% which python3
/usr/local/bin/python3

% python3 --version
Python 3.9.5
アルゴリズムに関する話題は、コンピュータ科学と数学の両方に広がりを持っています。
ある問題Aがあるときに、それを解くためのアルゴリズムを思いついたとしましょう。アルゴリズムをプログラミングしていくつか問題Aの具体例に適用したところ、答えがきちんと帰ってきたとします。・・・そのアルゴリズムですべての問題Aが解けるかどうかはわかりません。アルゴリズムが途中で止まったり、間違った答えを返したりしないということを証明する必要があります。これは数学的な考え方が必要です。
  • アルゴリズムを設計し数学的に正しいことを証明できるようになるための知識が必要

著者

https://www.oreilly.com/library/view/python-algorithms-mastering/9781484200551/images/9781484200568_unFM-01.jpg

第1章 どんな本なのか?
第2章 アルゴリズム解析の基礎
第3章 数え上げ入門
第4章 帰納再帰と還元
第5章 巡回:アルゴリズムのマスターキー
第6章 分割・統合・統治
第7章 貪欲が善って,ほんとうですか? それなら証明してください
第8章 もつれた依存関係とメモ化
第9章 A地点からB地点へEdsger Dijkstraとその仲間たちとともに
第10章 マッチング・カット・フロー
第11章 困難な問題と適度ないい加減さ
付録A 全力疾走 - Pythonを最大限加速させるには
付録B 問題とアルゴリズムの一覧
付録C グラフに関する用語と表記
付録D 演習のヒント

「新・明解C言語 ポインタ完全攻略」

BohYoh.com【著書】新・明解C言語 ポインタ完全攻略

第1章 ポインタの基本
第2章 配列とポインタ
第3章 多次元配列とポインタ
第4章 文字列とポインタ
第5章 文字列の配列とポインタ
第6章 構造体とポインタ
第7章 記憶域の動的な確保
第8章 関数へのポインタ

「アインシュタイン方程式を読んだら「宇宙」が見えた ガチンコ相対性理論」

bookclub.kodansha.co.jp

プロローグ 宇宙が「数学の言葉」で書かれているのなら
(準備の部)
第1章 ガリレオの相対性原理
第2章 時間の延びとローレンツ変換
第3章 距離と時間と不変間隔
第4章 4元ベクトルとE=mc2
(登山の部)
第5章 一般座標変換と共変微分
第6章 リーマン曲率テンソルとメトリック
第7章 測地線方程式とエネルギー・運動量テンソル
第8章 アインシュタイン方程式
エピローグ 方程式を「読む」「解く」ということ