Misc

MacOSで画面収録したmovをアニメーションGIFに変換する

January 23, 2021
Misc
ffmpeg, Docker, MacOS, one liner

MacOS では shift(⇧) + command(⌘) + 5 から画面収録できるわけだが、それが QuickTime ムービー形式なわけでブログとかにペシっと載せるにはちょっと不都合。なのでアニメーションGIFに変換する簡単な方法ないものかと調べたところffmpegを使えばできる。というわけでワンライナーができた。 ffmpeg を MacOS にインストールしてもいいが Docker Hub にイメージがあったのでそいつを使う。 docker run -v $(pwd):/tmp -w /tmp jrottenberg/ffmpeg -i 画面収録\ 2021-01-23\ 16.12.46.mov -r 24 -vf scale=320:-1 converted.gif サイズを指定しないとそこそこ大きいサイズのGIFが作成され、オリジナルのmovファイルより容量がデカくなってしまうっていう。

Node.js で MySQL の AES_ENCRYPT 互換の暗号化

September 28, 2020
Misc
MySQL, Node.js, Encryption

MySQL の AES_ENCRYPT 関数 # https://dev.mysql.com/doc/refman/5.6/ja/encryption-functions.html#function_aes-encrypt key_str にプレーンテキストを指定する場合 # HEX 表現で以下の値が得られる。 mysql> SELECT HEX(AES_ENCRYPT('my_value', 'my_secret')); +-------------------------------------------+ | HEX(AES_ENCRYPT('my_value', 'my_secret')) | +-------------------------------------------+ | 6A6C5170A935FA5A70B8B1721EDAC3B7 | +-------------------------------------------+ 1 row in set (0.00 sec) Node.js で同様の結果を得るロジックは以下の通り。 const crypto = require('crypto'); function convertCryptKey(strKey) { let newKey = Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]); strKey = Buffer.from(strKey); for(let i=0; i < strKey.length; i++) newKey[i%16] ^= strKey[i]; return newKey; } const crypt_key = 'my_secret'; const c = crypto.createCipheriv("aes-128-ecb", convertCryptKey(crypt_key), ""); const b = c. ...

AWS CLI で S3 ファイル削除

September 9, 2020
Misc
AWS, S3, Bash

DockerHub の amazon/aws-cli イメージで実行するシェルスクリプトを書いてみた。 if [ -n "${DELETE}" ]; then DRY_RUN= fi S3PATH=s3://your-bucket/your-folder/ for file in $(docker run --rm -ti --env=AWS_ACCESS_KEY_ID --env=AWS_SECRET_ACCESS_KEY amazon/aws-cli s3 ls $S3PATH | awk '{print $4}' | egrep -e '\.'); do docker run --rm -ti --env=AWS_ACCESS_KEY_ID --env=AWS_SECRET_ACCESS_KEY amazon/aws-cli s3 rm $DRY_RUN ${S3PATH}${file} done

Docker Hub の PHP イメージ

August 22, 2020
Misc
Docker, PHP

ポータブルな PHP 実行環境が欲しくて Docker Hub の PHP イメージを眺めるメモ。 https://hub.docker.com/_/php CLI で実行するサンプル # docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php my-script.php my-script.php は以下の通り。 <?php echo "hello\n"; 実行結果。 $ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php my-script.php hello インストール済みのモジュールや phpinfo() を確認する # php -m php -i Extensions をインストールするには以下らへんが利用できるらしい。必要になった時のためにメモだけ。 docker-php-ext-configure docker-php-ext-install docker-php-ext-enable 例えば GD extension をインストールしたイメージを用意するには以下のような Dockerfile を用意すれば良いと。 FROM php:7.4-fpm RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd PECL extensions をインストールする場合はこう。 ...

Dockerをクリーンアップ

August 4, 2020
Misc
Docker

TL;DR # 以下コピペで実行。 for i in $(docker ps -a --format '{{ .ID }}'); do docker rm $i; done for i in $(docker volume ls --format '{{ .Name }}'); do docker volume rm $i; done for i in $(docker network ls --format '{{ .Name }}'); do docker network rm $i; done ユースケース # ローカルでDocker利用していて、ふと docker ps -a とか見るとゴミが大量に出てきてクリーンアップしたい!という話。 docker ps の CONTAINER ID だけ列挙したい # --format を使う。 $ docker ps --help | grep format --format string Pretty-print containers using a Go template Go template で書式設定できると。 {{ . ...

GitHubで複数SSHキー使い分け

July 28, 2020
Misc
GitHub, SSH

GitHubのリポジトリ毎で異なるアカウントを利用する方法。 SSHキーの作成とGitHubへの登録 # 公式ドキュメントを見ながらやる。 SSHキーをssh-addする # User A のキーが id_rsa_key_a 、User B のキーが id_rsa_key_b とする。 $ ssh-add ~/.ssh/id_rsa_key_a $ ssh-add ~/.ssh/id_rsa_key_b キャッシュを削除しておいた方が良い。 $ ssh-add -D 追加済みのキーを確認。 $ ssh-add -l ssh configファイルに振り分け設定 # Host github.com-user-a HostName github.com User git IdentityFile ~/.ssh/id_rsa_key_a Host github.com-user-b HostName github.com User git IdentityFile ~/.ssh/id_rsa_key_b それぞれのプロジェクトで git config 設定 # $ git config user.name "user-a" $ git config user.email "user-a@gmail.com" $ git config user. ...

Hugo 使い方〜基礎編〜

July 13, 2020
Misc
hugo

ドキュメント見ながら Hugo の使い方をメモ。 https://gohugo.io/getting-started/ post を追加する # $ hugo new posts/hugo-getting-started.md content 以下に新しいファイルが出力される。 $ tree content content └── posts └── hugo-getting-started.md 1 directory, 1 file サーバー起動して確認 # $ hugo server -D http://localhost:1313 で確認できる。 静的ページの出力 # $ hugo -D public 以下に出力される。このファイル群をサーバーにアップすればデプロイ完了。