pytestのfixtureを使ってPostgreSQLに依存するテストコードを書く

この記事は、ソフトウェアテスト Advent Calendar 2023 の13日目の記事です。

ソフトウェアテスト Advent Calendar 2023
https://qiita.com/advent-calendar/2023/softwaretesting

このエントリでは、
pytestのfixtureを使ったPostgreSQLに依存するテストコードの書き方を示します。

DBに対してクエリを実行する処理が含まれるコードは、
単体テストの実行環境を準備するのが面倒になりがちですが、
このエント …

WindowsにMultipassを入れてCloud-initの動作確認環境を用意する

このエントリでは、Cloud-initの設定ファイルを作成する時、
手軽に手元の環境で動作確認をできるよう、WindowsにMultipassを入れて環境を作ってみます。

Multipass
https://multipass.run/

Cloud-init
https://canonical-cloud-init.readthedocs-hosted.com/en/latest/index.html

Multipassをインストールする。

PS> winget install multipass …

CeleryでFastAPIのバックグラウンドジョブを動かす手順

このエントリでは、
CeleryでFastAPIのバックグラウンドジョブを動かす手順をまとめています。

また、動かすプロセスがいくつかあり面倒なので、
Supservisorでまとめて起動できるようにしています。

各プロセスは、次の役割を担います。

  • FastAPI: ジョブを受け付ける
  • Redis: ジョブのキューを管理する
  • Celery: ジョブを起動する

各ツールのドキュメントは以下を参照してください。

FastAPI
https://fastapi.tiangolo.com/ja/

Celery …

AWS Batch(Fargate)で、PrivateSubnet上のComputingEnvironmentでECRのPrivateRepositoryからimageをpullして実行する手順

AWS Batch(Fargate)で、
Subnet外にアクセスできないPrivateSubnet上の
ComputingEnvironmentでECRのPrivateRepositoryからimageをpullして実行する手順をまとめておきます。

作成するシステムの構成は、次の図のとおりです。

awsbatch-1

Subnet外のAmazonECRのRepositoryにアクセスするため、
VPC Endpointを利用する構成とします。

右側のAWS Batchの部分を「AWS Batchの環境とJobの準備」の章で

AWS Secrets Manager emulatorを使う手順

このエントリでは、
AWSのSecretsManagerから情報を取得するアプリケーションを、
ローカルPCで開発する際に便利な、
AWS Secrets Manager emulatorの使い方手順をまとめています。

AWS Secrets Manager emulator
https://github.com/skarpdev/hapi-aws-secrets-manager-emulator

AWS Secrets Manager emulatorの起動から、
Pythonのアプリケーションから情報を …

AWS Lambdaに対応したLangServeアプリケーションの作成手順

以下のエントリでLangServeを動かしたので、
次はAWS Lambdaに対応したLangServeアプリケーションの作成を考えたいと思います。

LangChainで作ったChainをLangServeでAPI化する手順
https://takemikami.com/2023/11/18/LangChainChainLangServerAPI.html

AWS Lambdaのひな形アプリケーションの作成

AWS SAM CLIでAWS Lambdaアプリケーションのひな形を用意します。

sam init …

LangChainで作ったChainをLangServeでAPI化する手順

LangChainで作ったChainをLangServeでAPI化する手順をまとめておきます。
Chainが出来ていれば、add_routeで追加するだけです。

LangServe
https://python.langchain.com/docs/langserve

Chainを用意する

まずは、LangChainのChainを用意します。
チャットで会話するだけの簡単なChainです。

conversation_sample.py

from langchain.chat_models import …

DooD(Docker outside of Docker)でDockerコンテナ内からdocker composeを使う

DooD(Docker outside of Docker)という方法を使うと、
Dockerホストで行っていた処理を、Dockerコンテナ内で行うことが出来ます。

但し、Dockerコンテナ内から、Docker Composeを使う場合は、
そのままでは使用することは出来ません。

Docker ComposeがDockerホストのパスを前提に動作するので、
DockerホストとDooDコンテナのパスを合わせる必要があります。

ファイル構成

結論から書くと、以下のような構成で実現できます。

# Docker …

Hyper-Vに開発用UbuntuLinux22.04環境を作るときに参考にしたサイトのメモ

Hyper-Vに開発用UbuntuLinux22.04環境を作るときに参考にしたサイトのメモです。
想定OSは、Windows11Proです。

このエントリでは、以下の点についてメモを残しています。

  • Hyper-V・UbuntuLinuxのセットアップ
  • Windowsとの運用環境
    • ネットワーク
    • WSLとの接続
    • Windows TerminalからのSSH接続
    • XServer(VcXsrv)の導入
    • 日本語環境
    • Windowsショートカット
  • ファイル共有
    • Windows ← Ubuntu …

PolyCoderでコード生成を試してみたメモ

PolyCoderというプログラミング言語の大規模言語モデルを動かして、
コード生成を試してみたので、その手順メモを残しておきます。

Large Models of Source Code | GitHub
https://github.com/VHellendoorn/Code-LMs

PolyCoderが何なのかは、次の記事を見てもらえば、なんとなく分かると思います。

新たなオープンソースのAIコード生成モデル「PolyCoder」–カーネギーメロン大 | ZDNET …

日本語Wikipediaのデータで言語モデル(KenLM, RNNLM)を学習させる手順メモ

日本語Wikipediaのデータで言語モデル(KenLM, RNNLM)を学習させる手順のメモです。

kenlm | GitHub
https://github.com/kpu/kenlm

Faster RNNLM (HS/NCE) toolkit | GitHub
https://github.com/yandex/faster-rnnlm

動作確認環境は、次のとおり。

  • Ubuntu Linux 20.04 / WSL2
  • Python 3.10.11

Wikipediaデータの準備

日本 …

Docker Composeを使ってテストを動かすためのノウハウ

このエントリでは、
Docker Composeを使って、
テスト対象の起動からテスト実行までをまとめて実行したい時に、
必要になりそうなノウハウを取り上げます。

ここでは、次のような要件があると考えました。

  • 開発環境構築用docker-compose.yamlはそのまま変更せず、テスト実行用のコンテナを追加したい
  • テストの成否によってDocker Compose実行後の終了コードを変えたい
  • 異常系テストのために一部コンテナを停止するなど、コンテナをテストコードから制御したい
  • Docker Compose …

IntelliJ IDEAとWSLで開発する時の構成パターンの整理メモ

IntelliJ IDEAとWSLで開発したい時、
開発環境の構成パターンはいくつかあるので、
それぞれについて整理したメモを、このエントリに残しておきます。

UI、IDE、実行環境をWindows側・WSL側(Linux)のどちらで動かすかで整理すると、
以下のような構成パターンがあります。
他にもあるかも知れないですが

パターンUIIDE実行環境
1. WSLは使わないWindowsWindowsWindows
2. リモートデバッグWindowsWindowsWSL
3. JetBrains …

GoogleCloudPlatformのローカルエミュレータ(bigtable,pubsub,storage)の使い方メモ

GoogleCloudPlatformのエミュレータを
ローカルPC上でdockerを使って動かす時のメモです。
エミュレータを起動して、Pythonのコードでアクセスしてみます。

ここでは、以下3サービスを動かしてみます。

  • bigtable
  • pubsub
  • storage

datastore, firestore, spanner も同様の手順で利用できると思います。

エミュレータの起動

ここでは、docker composeを使って動かします。
次のようなdocker-compose.ymlを用意しま …

Process Composeを使ってみた(Railsを例に)

docker-composeは決まった形式でプロセスの起動方法を書けるので便利ですが、
手元のPCに開発環境を作る場合など、
プロセスの起動管理をしたいだけの時は、docker前提だとtoo-muchで扱いにくい事も多いです。

調べてみるとdocker前提で無くdocker-composeライクに起動管理するツールがありました。

Process Compose | GitHub
https://github.com/F1bonacc1/process-compose

本エントリでは、このツールの使い方 …

Author
takemikami
データエンジニア
・データ分析基盤の開発運用
・マーケティングデータ分析
研究履歴 / 執筆履歴 / プロダクト
facebook
X(twitter)
BlueSky
Instagram
LinkedIn
Hatena::Bookmark
YouTube
GitHub
SpeakerDeck
slideshare
GoogleScholar
読書メーター
Books
takemikami's shop
Recent Posts
    [PR]
    PlayStation
    Steam
    About