Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

フォーマッター(black)の導入

f:id:overworker:20200812004214p:plain:h150


『仕事ではPythonを使ったことがない』程度のレベルです。
自習時に調べたことのノートとして記録します。

前提条件

  • WindowsOS
  • VSCodeを利用する

詳細

blackの導入

公式ドキュメント

インストール手順

pip install black
  • 実行結果
>pip install black
Collecting black
  Downloading black-20.8b1.tar.gz (1.1 MB)
     |████████████████████████████████| 1.1 MB ...
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: typing-extensions>=3.7.4 in c:\users\******\appdata\local\programs\python\python38\lib\site-packages (from black) (3.7.4.3)
Requirement already satisfied: typed-ast>=1.4.0 in c:\users\******\appdata\local\programs\python\python38\lib\site-packages (from black) (1.4.2)
Requirement already satisfied: mypy-extensions>=0.4.3 in c:\users\******\appdata\local\programs\python\python38\lib\site-packages (from black) (0.4.3)
Collecting click>=7.1.2
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 483 kB/s
Collecting pathspec<1,>=0.6
  Downloading pathspec-0.8.1-py2.py3-none-any.whl (28 kB)
Collecting regex>=2020.1.8
  Downloading regex-2020.11.13-cp38-cp38-win_amd64.whl (270 kB)
     |████████████████████████████████| 270 kB ...
Collecting toml>=0.10.1
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting appdirs
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Building wheels for collected packages: black
  Building wheel for black (PEP 517) ... done
  Created wheel for black: filename=black-20.8b1-py3-none-any.whl size=124186 sha256=0dd46807760f80b6006fe75192b5be007e618e4f519437d93eb1dfa48dd83c83
  Stored in directory: c:\users\******\appdata\local\pip\cache\wheels\95\a4\59\10cd5378d52f92cdb45025f040e4686e10ae5217961c25fd66
Successfully built black
Installing collected packages: toml, regex, pathspec, click, appdirs, black
Successfully installed appdirs-1.4.4 black-20.8b1 click-7.1.2 pathspec-0.8.1 regex-2020.11.13 toml-0.10.2

インストールしたバージョンを確認する

>black --version
black, version 20.8b1

設定をカスタマイズする(省略)

  • プロジェクトのトップディレクトリにsetup.cfgまたはmypy.iniというファイルを作成し、内部を記述することで設定をカスタマイズすることができます。
  • setup.cfgには複数のツールの設定を書くことができます。

静的型チェックツール(mypy)の導入

f:id:overworker:20200812004214p:plain:h150


『仕事ではPythonを使ったことがない』程度のレベルです。
自習時に調べたことのノートとして記録します。

前提条件

  • WindowsOS
  • VSCodeを利用する

詳細

mypyの導入

公式ドキュメント

Welcome to Mypy documentation! — Mypy 0.790 documentation

インストール手順

pip install mypy
  • 実行結果
>pip install mypy
Collecting mypy
  Downloading mypy-0.790-cp38-cp38-win_amd64.whl (8.5 MB)
     |████████████████████████████████| 8.5 MB 3.3 MB/s
Collecting mypy-extensions<0.5.0,>=0.4.3
  Downloading mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)
Collecting typed-ast<1.5.0,>=1.4.0
  Downloading typed_ast-1.4.2-cp38-cp38-win_amd64.whl (158 kB)
     |████████████████████████████████| 158 kB ...
Collecting typing-extensions>=3.7.4
  Downloading typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Installing collected packages: typing-extensions, typed-ast, mypy-extensions, mypy
Successfully installed mypy-0.790 mypy-extensions-0.4.3 typed-ast-1.4.2 typing-extensions-3.7.4.3

バージョンを確認する

>mypy --version
mypy 0.790

設定をカスタマイズする(省略)

  • プロジェクトのトップディレクトリにsetup.cfgまたはmypy.iniというファイルを作成し、内部を記述することで静的解析時の設定をカスタマイズすることができます。
  • setup.cfgには複数のツールの設定を書くことができます。

「Python関連の記事」のまとめ

f:id:overworker:20200812004214p:plain:h150


『仕事ではPythonを使ったことがない』程度のレベルです。
自習時に調べたことのノートとして記録します。

環境構築

pythonのインストール

モジュールのインスール

開発環境の構築

基本的な文法

  • まずはここから、Pythonのコメントの書き方

使い方ピックアップ

外部モジュール

その他の記事へ

仮想環境(venv)+静的コード解析ツール(Flake8)の導入

f:id:overworker:20200812004214p:plain:h150


『仕事ではPythonを使ったことがない』程度のレベルです。
自習時に調べたことのノートとして記録します。

環境構築

前提条件

  • WindowsOS
  • VSCodeを利用する

詳細

1.仮想環境の構築:venv

1-1.仮想環境標準ライブラリのvenvを導入する

  • コマンドプロンプトで実行しました
python -m venv {仮想環境のパス}

1-2.仮想環境を作成する

  • コマンドプロンプトで実行しました
python3 -m venv venv

1-3.仮想環境を有効化する

  • 1-1で指定した{仮想環境のパス}に以下ができていることを確認してください

    • pyvenv.cfg
    • Scriptsディレクトリ
    • Scriptsディレクトリの中にActivate.ps1
    • Scriptsディレクトリの中にactivate.bat
  • 利用するコマンドシェルによって、コマンドが異なります。

1-3-1.PowerShellを使用する場合
PS {仮想環境のパス}\Scripts> PowerShell -ExecutionPolicy RemoteSigned ./Activate.ps1
1-3-2.コマンドプロンプトを使用する場合、
{仮想環境のパス}> Scripts\activate.bat

2.コードを静的解析し、コーディング規約に則っているかチェックする

2-1.Flake8を導入する

  • Flake8とは静的コード解析ツールPEP8のラッパーです。
  • 以下のツールを同時に実行することができます。

    • pycodestyle:PEP8に準拠することをチェックする
    • pyflakes:未使用の変数やモジュールといった論理的なエラーをチェックする
    • mccabe:コードの複雑さの指標である循環的複雑度の計測を行う
  • インストールにはPythonのパッケージ管理ツールであるpipを使います。

{仮想環境のパス}> pip install flake8

実際の実行結果は以下です。

>pip install flake8
Collecting flake8
  Downloading https://files.pythonhosted.org/packages/d4/ca/3971802ee6251da1abead1a22831d7f4743781e2f743bd266bdd2f46c19b/flake8-3.8.4-py2.py3-none-any.whl (72kB)
     |████████████████████████████████| 81kB 5.1MB/s
Collecting pyflakes<2.3.0,>=2.2.0
  Downloading https://files.pythonhosted.org/packages/69/5b/fd01b0c696f2f9a6d2c839883b642493b431f28fa32b29abc465ef675473/pyflakes-2.2.0-py2.py3-none-any.whl (66kB)
     |████████████████████████████████| 71kB 4.5MB/s
Collecting pycodestyle<2.7.0,>=2.6.0a1
  Downloading https://files.pythonhosted.org/packages/10/5b/88879fb861ab79aef45c7e199cae3ef7af487b5603dcb363517a50602dd7/pycodestyle-2.6.0-py2.py3-none-any.whl (41kB)
     |████████████████████████████████| 51kB 3.2MB/s
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in c:\users\yutaka\appdata\roaming\python\python38\site-packages (from flake8) (0.6.1)
Installing collected packages: pyflakes, pycodestyle, flake8
Successfully installed flake8-3.8.4 pycodestyle-2.6.0 pyflakes-2.2.0
WARNING: You are using pip version 19.3.1; however, version 20.3.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
実際にコードをチェックする
flake8 src/sample.py

以下自作ツールに対してチェックを実施したときの結果です。(悲惨な結果になりました。)

>flake8 CheckAtResult.py
sample.py:26:39: E231 missing whitespace after ','
sample.py:35:27: W291 trailing whitespace
sample.py:45:56: E231 missing whitespace after ','
sample.py:45:69: E231 missing whitespace after ','
・
・
・
設定をカスタマイズする(省略)
  • プロジェクトのトップディレクトリにsetup.cfgまたは.flake8というファイルを作成し、内部を記述することで静的解析時の設定をカスタマイズすることができます。
  • setup.cfgには複数のツールの設定を書くことができます。

Python関連のその他の記事へ

pipをアップデートする方法

f:id:overworker:20200812004214p:plain:h150


モジュールを追加するためにpipコマンドを実行した際に、以下のコメントが出ていることに気が付きました。

f:id:overworker:20210101064327p:plain
WARNING: You are using pip version 19.3.1; however, version 20.3.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

今使っているpipが最新ではないことを通知してくれています。
というわけで、pipをアップグレードしてみたいと思います。

アップグレードコマンド

指示通りのコマンドを入力してみます。

python -m pip install --upgrade pip

10秒ほどでアップデートが完了しました。

実際の出力内容は以下になります。

>python -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/54/eb/4a3642e971f404d69d4f6fa3885559d67562801b99d7592487f1ecc4e017/pip-20.3.3-py2.py3-none-any.whl (1.5MB)
     |████████████████████████████████| 1.5MB 6.4MB/s
Installing collected packages: pip
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
Successfully installed pip-20.3.3

バージョン確認コマンド

ちなみに、インストールしたバージョンを確認するコマンドは以下になります。

>pip --version
pip 20.3.3 from ******\appdata\local\programs\python\python38\lib\site-packages\pip (python 3.8)

補足

※ WindowsOSで実施しました。

追記

それでもErrorが残ってしまった場合、以下が参考になるかもしれません。 - pipをアップデートする②

Python関連のその他の記事へ

Dockerコンテナの生成、起動、停止

f:id:overworker:20200628105903p:plain
  • 自分のノート代わりのメモです。

0.Dockerコンテナのステータスとライフサイクル

f:id:overworker:20200702233743p:plain

1.コンテナの生成

2.コンテナの生成+起動

2-1.コンテナの生成+起動(対話形式)

構文

docker container run [実行オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--attach,-a 標準入力(STDIN)
/標準出力(STDOUT)
/標準エラー出力(STDERR)にアタッチする
--cidfile コンテナIDをファイルに出力する
--detach,-d コンテナを生成し、バックグラウンドで実行する
--interactive,-i コンテナの標準入力を開く
--tty,-t 端末デバイス

コマンド入力結果(/bin/cal)

C:\Users\******>docker container run -it --name "test1" centos:7 /bin/cal
      June 2020
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

入力コマンドの説明(/bin/cal)

  • docker container run -it --name "test1" centos:7 /bin/cal
番号 入力内容 説明
docker container run コンテナを作成+実行
-it コンソールに結果を表示させる
--name "test1" コンテナ名
centos:7 イメージ名
/bin/cal コンテナで実行するコマンド
  • centos:7というイメージをもとにtest1という名前のコンテナを生成し実行して、コンテナ内の/bin/calというコマンドを実行する。

コマンド入力結果(/bin/bash

C:\Users\******>docker container run -it --name "test2" centos:7 /bin/bash
[root@99348d290971 /]#    
  • Linuxのターミナルが起動しているのと同じ状態
  • 抜ける場合はexitコマンドを実行する。
[root@99348d290971 /]# exit
exit

2-2.コンテナの生成+起動(バックグラウンド)

構文

docker container run [実行オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--detach,-d バックグラウンドで実行する
--user,-u ユーザー名を指定
--restart=[no/on-failure/on-failure:n(回数)/always/unless-stopped] コマンドの実行結果によって再起動を行う
--rm コマンド実行完了後にコンテナを自動で削除

コマンド入力結果(/bin/cal)

C:\Users\******>docker container run -d centos /bin/ping localhost
3bd5beab1045ad897f8fbb8e969c776b31d603578385eecf5ab46b0bc938bae3

入力コマンドの説明

  • docker container run -d centos /bin/ping localhost
番号 入力内容 説明
docker container run コンテナを作成+実行
-d バックグラウンドで実行
centos イメージ名
/bin/ping localhost` コンテナで実行するコマンド
  • pingコマンドを実行しているが、バックグラウンドでの実行なので結果はコマンドプロンプトに表示されない。
  • 表示されている文字列は起動したコンテナのコンテナID

コマンド入力結果(バックグラウンド実行中の動作確認)

C:\Users\******>docker container logs -t 3bd5beab1045ad897f8f
2020-06-28T13:00:39.738149475Z PING localhost (127.0.0.1) 56(84) bytes of data.
2020-06-28T13:00:39.738168975Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
2020-06-28T13:00:40.749741495Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.058 ms
2020-06-28T13:00:41.773938819Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.052 ms
2020-06-28T13:00:42.797915443Z 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.051 ms
2020-06-28T13:00:43.821839368Z 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.056 ms    
~(省略)

その他

  • -restartオプションで指定できる設定値
設定値 説明
no 再起動しない
on-failure 終了ステータスが0でないときに再起動する
on-failure:n(回数) 終了ステータスが0でないときにn回再起動する
always 常に再起動する
unless-stopped 直近のコンテナが停止状態でなければ、常に再起動する

2-3.コンテナの生成+起動(ネットワーク設定)

構文

docker container run [ネットワークオプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--add-host=[ホスト名:IPアドレス] コンテナの/etc/hostsにホスト名とIPアドレスを定義する
--dns=[IPアドレス] コンテナ用のDNSサーバのIPアドレスを指定
--expose 指定したレンジのポート番号を割り当てる
--mac-address=[MACアドレス] コンテナのMACアドレスを指定する
--net=[bridge/none/container:/host/NETWORK] コンテナのネットワークを指定する
--hostname コンテナ自身のホスト名を指定する
--publish,-p[hostのポート番号]:[コンテナのポート番号] ホストとコンテナのポートマッピング
--publish-all,-p ホストの任意のポートをコンテナに割り当てる

入力例

// コンテナのポートマッピング
docker container run -d -p 8080:80 nginx

// コンテナのDNSサーバ指定
docker container run -d --dns 192.168.1.1 nginx

// コンテナのMACアドレスの指定
docker container run -d --mac-address="**:**:**:**:**:**"  centos

// ホスト名とIPアドレスの定義
docker container run -it --add-host test.com:192.168.1.1.centos

その他

  • --netオプションで指定できる設定値
設定値 説明
bridge ブリッジ接続(デフォルト)を使う
none ネットワークに接続しない
container:[name/id] 他のコンテナのネットワークを使う
host コンテナがhostOSのネットワークを使う
NETWORK ユーザー定義ネットワークを使う

2-4.コンテナの生成+起動(リソース指定)

構文

docker container run [リソースオプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--cpu-shares,-c CPUの仕様の配分(比率)
--memory,-m 使用するメモリを制限して実行する(単位はb、k、m、gのいずれか)
--volume=[ホストのディレクトリ]:[コンテナのディレクトリ],-v ホストとコンテナのディレクトリを共有する

入力例

// CPU時間の相対割合とメモリの使用量を指定する
docker container run --cpu-shares=512 --memory=1g centos

// ディレクトリの共有
docker container run -v /Users/asa/webap:usr/share/nginx/html nginx

2-4.コンテナの生成+起動(環境を指定する)

構文

docker container run [環境設定オプション] イメージ名[:タグ名] [引数]

オプションについて

オプション 説明
--env=[環境変数],-e 環境変数を設定する
--env-file=[ファイル名] 環境変数をファイルから設定する
--read-only=[true/false] コンテナのファイルシステムを読み込み専用にする
--workdir=[パス],-w コンテナの作業ディレクトリを指定する
-user=[ユーザー名],-u ユーザー名、またはUIDを指定する

入力例

// 環境変数の設定
docker container run -it -e foo=bar centos /bin/bash

// 確認する
#set

// 作業ディレクトリの設定
docker container run -it -w=/tensorflow centos /bin/bash

// 確認する
#pwd
\tensorflow

3.稼働コンテナの一覧表示

構文

docker container ls [オプション]

オプションについて

オプション 説明
--all,-a 起動中/停止中を含めすべてのコンテナを表示する
--filter,-f 表示するコンテナのフィルタリング
--format 表示フォーマットを指定
--last,n 最後に起動されてからn件のコンテナのみ表示
--latest,-l 最後に起動されたコンテナのみ表示
--no-trunc 情報を省略しないで表示する
--quiet,q コンテナIDのみ表示する
--size,-s ファイルサイズの表示

出力項目の説明

出力項目 説明
CONTAINER ID コンテナID
IMAGE コンテナのもとになっているイメージ
COMMAND コンテナ内で実行されているコマンド
CREATED コンテナ生成からの経緯
STATUS コンテナの状態(restarting/running/paused/existed)
PORTS 割り当てられたポート
NAMES コンテナの名前

4.コンテナの稼働確認

構文

docker container stats [コンテナ識別子]

入力例

C:\Users\******>docker container stats test1
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
7275eaac2d3b        test1               0.00%               0B / 0B             0.00%               0B / 0B             0B / 0B             0
  • 確認が終わったらCtrlcでコマンドを終了する。

出力項目の説明

出力項目 説明
CONTAINER ID コンテナID
NAME コンテナ名
CPU % CPU使用率
MEM USAGE/LIMIT メモリ使用量/コンテナで使用できるメモリ制限
MEM % メモリ使用率
NET I/O ネットワークI/O
BLOCK I/O ブロックI/O
PIDS PID(Windowsコンテナ除く)

5.コンテナの起動

構文

docker container start [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--allach,-a 標準出力/標準エラー出力を開く
--interactive,-i コンテナの標準入力を開く

入力例

C:\Users\******>docker container start test1
test1

6.コンテナの停止

構文

docker container stop [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--time,-t コンテナの停止時間を指定する(デフォルト10秒)

入力例

C:\Users\******>docker container stop -t 20 test1
test1

7.コンテナの再起動

構文

docker container restart [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--time,-t コンテナの再起動時間を指定する(デフォルト10秒)

入力例

C:\Users\******>docker container restart -t 20 test1
test1

8.コンテナの削除

構文

docker container rm [オプション] コンテナ識別子 [コンテナ識別子]

オプションについて

オプション 説明
--force,-f 起動中のコンテナを強制的に削除する
--volumes,-v 割り当てたボリュームを削除する

入力例

C:\Users\******>docker container rm test1
test1

9.コンテナの中断/再開

構文

// コンテナの中断
docker container pause コンテナ識別子

// コンテナの再開
docker container unpause コンテナ識別子

参考文献

以下の本を読みながら、Dockerの勉強を開始しました。

その他の記事へ

「git-secrets」をインストールする際のエラーへの対応

f:id:overworker:20201107214512p:plain:h150

「git-secrets」をインストールする際にコマンドプロンプトを使用すると以下のようなエラーが発生しました。

C:\Users\Test\Documents\Program\git\git-secrets>git secrets --register-aws --global
git: 'secrets' is not a git command. See 'git --help'.

C:\Users\Test\Documents\Program\git\workspace>git secrets --install
git: 'secrets' is not a git command. See 'git --help'.

私はコマンドプロンプトからWindows PowerShellに変更したところ、インストールを成功させることができました。

その際の記録を以下の記事にまとめました。

overworker.hatenablog.jp