ffmpeg: 動画の圧縮・変換

ffmpegを使って動画を軽量化する。 ffmpeg ffmpegは動画や音声を加工するためのツール。 Macの標準の画面収録で作成される.movという形式の動画ファイルは容量が大きいので.mp4に変換することでクラウドにアップロードしたりしている。 特に学会発表とかで動画を用意しておかないといけない時にアップロード上限などに収まらない時に使っていた。 基本的にこれで良い brew install ffmpeg ffmpeg -i original.mov transformed.mp4 original.movが変換前の動画。Macで画面収録した時に生成される。 transformed.mp4が変換後の動画。結構圧縮できることがある。

September 29, 2022 · 1 min · 15 words · mnagaa

Pytest context manager

Pytest Pytestを使用する場合に、テスト用/本番用のデータベースを分離する際に行なった方法などをメモしておく。 Pytest Pytestを使っていて分かったのは、Pytest自体がテスト関数に対して暗黙的にdecoratorなどを使っているため、自分で実装したdecoratorがぶつかってしまうことがあった。 decoratorをPytestと一緒に使うことはあまり好ましいとは思えなかった。 decoratorに渡さないといけない引数などが把握しにくかったり、勝手にPytestから引数を意図せず渡してしまうことになる。 代わりにcontext.managerを活用して、テスト時にテスト用のデータベースに切り替えるという実装をした。 関係するツールなど SQLite Pytest まず、データベースのテストのためのfixtureを作成する。擬似コードは以下のよう。 import pytest @pytest.fixture def fixture_prepare_records(): with sqlite.session_manager(use_test=True) as session: # (1) データベースへのinsert # (2) テスト関数の実行 yield with sqlite.session_manager(use_test=True) as session: # (3) データベースからのdelete def test_slot_dialog_repo(fixture_prepare_records): with sqlite.session_manager(use_test=True) as session: # (4) selectなどを使ったテスト 必要なデータのinsert test関数の実行 使用したデータのdelete fixtureで用意したデータを使ってselectなどのテスト(引数としてfixture_prepare_recordsを渡しているところがポイント) context.managerで実装したsqliteの向き先の変更は以下のよう。デフォルトでは本番DBのパスを向けるようにしている。 import contextlib @contextlib.contextmanager def session_manager(use_test: bool = False): if use_test: # (1)テスト用のパスをセットする Params.set_test_env() # (2)SQLiteとの接続用のClient sqlc = SQLiteClient() session = sqlc....

September 25, 2022 · 1 min · 130 words · mnagaa

Makefile setup

Makefileの基本設定について Makefile ディレクトリにMakefileとしてファイルを作成する。 # 上部に共通で使用する変数を書く。 cd $(TARGET)などのように使う VARIABLE = hoge TARGET = target .PHONY: command-name command-name: ## comment of this command # ここにコマンドを書く cd dir_name .PHONY: help help: ## Display this help screen @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' Usage make helpでコマンド一覧を表示することができる。 make command-nameという方法で実行することができる。 makeのみを入力した場合は、一番上のコマンドが実行される。つまり、上の例だとmake command-nameを実行したときと同じである。

September 19, 2022 · 1 min · 57 words · mnagaa

Github Pages + Hugo

Github PagesとHugoでProfileページを作って公開する。 はじめ方 $ brew install hugo $ hugo new site $(siteName) テンプレートとしてPaperModを使用する。 $ cd $(siteName) $ git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod --depth=1 ─╯ $ git submodule update --init --recursive config.ymlを更新する。 公開方法 Repository home -> Settings -> Pages からデプロイ方法にGithub Actionsを指定する。 config.ymlのbaseURLの下あたりに、publishDir: "public"を追加する。 更新方法 hugo server -Dでローカルでサーバが起動する。 hugo new post/${pageTitle}.mdで新しいページを作成する。 そして、マークダウンファイルを更新する。 公開したい場合はdraft: falseに変更する。 Google search console sitemap.xmlをサイトマップに登録する。

August 7, 2022 · 1 min · 56 words · mnagaa