PIL->Tensor, Tensor -> PIL変換
import cv2 import PIL import torchvision.transforms as T import torchvision import torch #cv2 imread cv2_img = cv2.imread("pic/dogAndPerson.jpg") cv2.imwrite("pic/img.jpg", cv2_img) print(f"cv2_img.shape: {cv2_img.shape}, type: {type(cv2_img)}") # => cv2_img.shape: (533, 800, 3), type: <class 'numpy.ndarray'> #PIL Image Open pil_img = PIL.Image.open("pic/img.jpg") print(f"pil_img.size: {pil_img.size}, type: {type(pil_img)}") #=>pil_img.size: (800, 533), type: <class 'PIL.JpegImagePlugin.JpegImageFile'> #PIL -> Tensor transform = T.Compose([ T.Resize(800), T.ToTensor(), T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) tensor_img = transform(pil_img) print(f"tensor_img.shape: {tensor_img.shape}, type: {type(tensor_img)}") #=>tensor_img.shape: torch.Size([3, 800, 1200]), type: <class 'torch.Tensor'> #Tensor -> PIL # 標準化の逆変換 mean = torch.tensor([0.485, 0.456, 0.406]) std = torch.tensor([0.229, 0.224, 0.225]) denormalized_tensor = tensor_img * std[:, None, None] + mean[:, None, None] torchvision.transforms.functional.to_pil_image(denormalized_tensor).save("pic/img2.jpg")
vim tips
記号を挿入
- 挿入したい行の先頭で"Ctrl + v"(ビジュアル 矩形モード)
- jやk(あるいは方向キーの↑↓)で範囲選択
- 大文字のIで("Shift + I"で)挿入モードへ
- 挿入したい文字列を入れる.
- "Esc"(あるいはCtrl + [でもよい)を押すと選択したすべての行に文字列が挿入される.
記号を削除
- 削除したい行の先頭で"Ctrl + v"(ビジュアル 矩形モード)
- jやk(あるいは方向キーの↑↓)で範囲選択
- d これによって行頭の1文字が削除されます.
自己証明書でChromeのエラーを消す方法
前提
手順
自己証明書の作成
openssl genrsa -out server.key 2048 openssl req -out server.csr -key server.key -new Common Nameでgui.10.165.8.86.nip.ioを入力する。ここではUIのドメイン名を入力する
SAN.txt ファイルを作成
subjectAltName = DNS:gui.10.165.8.86.nip.io openssl x509 -req -days 3650 -signkey server.key -in server.csr -out server.crt -extfile SAN.txt
k8sのSecret作成。secret名はgui-tls。
kubectl create secret tls gui-tls --key server.key --cert server.crt
マニフェストファイルにtlsのせくしょを追加(★の箇所)
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
meta.helm.sh/release-name: gui-frontend
meta.helm.sh/release-namespace: default
labels:
app.kubernetes.io/managed-by: Helm
name: gui-frontend
namespace: default
spec:
tls: ★
- hosts: ★
- gui.10.165.8.86.nip.io ★ドメイン名
secretName: gui-tls ★ secret名を入力
rules:
- host: gui.10.165.8.86.nip.io
http:
paths:
- backend:
service:
name:
port:
number: 80
path: /
pathType: Prefix
Uninstall/Deployを実施する。
Conda
Conda環境の作成・環境の確認
conda create -n [環境名] python=3.5
- 環境の確認
conda info -e
*がついている箇所が現在の環境
base /home/ubuntu/miniconda3 sinetplus39 * /home/ubuntu/miniconda3/envs/test2 test /home/ubuntu/miniconda3/envs/test
- 環境をActivateする
conda activate [環境名]
仮想環境の削除
conda remove -n 環境名 --all
ライブラリInstall
- ライブラリの検索
ここで表示されるライブラリはInstallが可能です。
conda search ライブラリ名
- ライブラリのInstall
conda install ライブラリ名
ライブラリの確認
conda list
Redis
Redisの概要について
概要
- In-Mmoeryのデータベース
- cache, vector database, document database, streaming engineなどで利用されるNoSQLの のDB。
- Key-Value型のDB
型
複数の型がありますが、代表的なものを記載します。
- String型
KeyとValueが1対1の関係で管理されるデータ型です - Hash型
親Key、子Key、Valueにより管理されるデータ型です。 - List型
- Set型
- SortedSet型
- Streaming型
Redisストリームは、Redis用に構築された新しいデータ構造で、時系列データを扱います。
Redisリストに似ていますが、以下の2点において異なります。
オリジナルインデックスではなく、タイムスタンプを使用
各ストリームは、Redisハッシュに似た複数フィールドを持つことが可能
redis-cli
ログイン
redisにログインする場合は、以下のコマンドを利用します。
redis-cli -p 6382 -h localhost
-pはredisサーバが動作しているポート、-hはホスト名です。
共通操作
keyの確認
登録されているKeyの一覧が表示されます。
> KEYS * 1) "data2" 2) "data1" 3) "test"
もしくは、SCANで登録されているKeyを確認します。
localhost:6381> SCAN 0 1) "0" 2) 1) "data3" 2) "data2" 3) "data1" 4) "test"
Keyの型の確認
keyの型を確認します。
TYPE key
Keyの型のTTLの確認
以下のコマンドで、各KeyのTTLが確認できます。
ttl Key
- 0以上:残り秒数
- -1:TTLの指定がない、または指定したキーが既に存在しない
Hash型のCLI操作
- HGET
keyのfieldに登録されているValueを表示します 。 ワイルドカードなどは利用不可。
HGET key field
- HKEYS Keyに登録されているフィールドをすべて返します。
HKEYS key
- HGETALL keyに登録されているすべてのfieldとValueを返します。
HGEALL key
- HLEN keyに登録されているフィールドの個数を返します。
HLEN key
Stream型のCLI操作
- 特定の範囲内のエントリを取得。XRANGEコマンド
XRANGE stream-name start end [COUNT count]
ストリーム名 mystream から、すべてのエントリを取得する場合は、以下のように- +をつけます。
XRANGE mystream - +
- 逆順にエントリを取得する。XREVRANGE コマンド
XREVRANGE stream-name end start [COUNT count]
こちらは、すべてのエントリを取得する場合は+、- をつけます。
XREVRANGE mystream + - COUNT 5
nerdctlのBuild環境構築手順
以下の手順で、nerdctlのBuild環境構築を構築できます。 手順は、ubuntu20.04で実施しています。
nerdctlのBinaryを入手。
以下からnerdctlのBinaryを入手できます。
この時にnerdctl-full-1.7.3-linux-amd64.tar.gz のようにnerdctl-full-xxx のBinaryを取得します。
rootlesskitのシェルなどが含まれているためです。
Releases · containerd/nerdctl · GitHub/usr/local/binに展開します。
#sudo tar Cxzvvf /usr/local/bin nerdctl-0.18.0-linux-amd64.tar.gz
- rootlessモードでInstallします。
containerd-rootless-setuptool.sh install
この時、以下のエラーが出たら、uidmapをInstallします。
INFO] Checking RootlessKit functionality [rootlesskit:parent] error: failed to setup UID/GID map: newuidmap 1747 [0 1000 1 1 100000 65536] failed: : exec: "newuidmap": executable file not found in $PATH [ERROR] RootlessKit failed, see the error messages and https://rootlesscontaine.rs/getting-started/common/ .
sudo apt install uidmap
- DockerfileをBuildする場合は、以下の手順でBuildkitを有効かします。
CONTAINERD_NAMESPACE=default containerd-rootless-setuptool.sh install-buildkit-containerd
./buildkitdでもよいです。
以上で、手順は完了です。
nerdctl build . でBuildできるはずです。