地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2025-01-01から1年間の記事一覧

【Python】ElastiCache for RedisのFOに対応する

import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('mykey', 'Hello, Redis!') value = r.get('mykey') print(value.decode('utf-8')) # 出力: Hello, Redis! 何もしないとこんな感じのコードになる。exponential_backoff_retryを仕込…

【Azure】Azure SQLは30分でアイドルコネクションが閉じられる

techcommunity.microsoft.com Azure SQLの接続ポリシーをデフォルトで作るとそういった設定になる。TCP KeepAliveだけでは接続を維持できないのでコネクションをプールするならなんかしらのクエリを実行してあげる必要がある。または接続ポリシーをリダイレ…

【Python】タプルを作るのはカンマであり、丸括弧ではありません

docs.python.org 今日のハマり。15分くらい溶かした。 >>> t = (10) >>> type(t) <class 'int'> >>> t = (10,) >>> type(t) <class 'tuple'></class></class>

【Python】Parquetファイルを作ってパースして

これでcsvを変換する import pandas as pd import pyarrow as pa import pyarrow.parquet as pq df = pd.read_csv('test.csv') table = pa.Table.from_pandas(df) pq.write_table(table, 'test.parquet') パースする # parquetファイルのパースを行う import…

【eBPF】clone(2)のフラグとかPIDとかTIDとかを取りたい

どのPythonのコードの行で clone(2) が呼ばれたかをbpftraceで追えるんか...?— RyuichiWatanabe@gurasan (@ryuichi_1208) 2025年5月13日 というのをやりたかった過程で調べたメモ。これはちょっと便利そう。 bpftrace -e ' tracepoint:syscalls:sys_enter_cl…

【Python】非同期環境で同期IOを発行する方法

概要 Python × 非同期IOなアプリケーションで色々あったので調査メモ 本編 非同期IO環境で同期IOを発行する場合、asyncio.to_thread または loop.run_in_executor を使用することで、イベントループをブロックせずに同期処理を実行できます。asyncio.to_thre…

【Docker】cache-toで指定できるもの

docs.docker.com docker buildx build コマンドの --cache-to オプションは、ビルドキャッシュを保存する方法を指定します。 --cache-to: ビルドキャッシュを保存する場所を指定します。キャッシュはビルドプロセスの高速化に役立ちます。 キャッシュの保存…

【Python】async IOでセマフォ

httpリクエストの同時実行数制御しつつ色々やりたい時に便利 asyncio.create_task()+semaphore.acquire()/release() で明示的に並列数を制御 async_timeout を使い 5 秒でタイムアウト 例外が起きても最後まで走らせ、結果を URL ごとに保持 import asyncio…

【ポエム】エンジニアとして理想の職場ってなんだろう

なんだろう。今はとても楽しいし周りにも優秀なメンバーも多くて日々楽しい。それだけでもだいぶ理想的な職場な気がする。何かあるとしたら割り込みが増えてきていて今後も増え続けていくのが見えていてこのままだとまずいなみたいな感覚はある。 みたいなこ…

【AWS】CloudWatch Database Insightsが楽しい

docs.aws.amazon.com 楽しい。データベースのo11yって割と職人技的に色々テクニックありきでトラブルシュートが進みがちでOSのプロセスの状態とかスロークエリとかそういったものの組み合わせが必要だったりした。その中で登場したCloudWatch Database Insig…

【Python】キュー

PythonでQueueを実装するには、標準ライブラリのqueueモジュールを使うのが一般的です。queue.Queueはスレッドセーフなキューの実装です。 以下は、基本的な使い方の例です: import queue # Queueの作成(デフォルトではFIFO) q = queue.Queue() # アイテ…

DeepWikが便利

deepwiki.com リポジトリ単位でWikiをソースから生成してくれるサービスでDevinの会社がやっている。 これまでのコードリーディンがは cloneしてctagsして読む cloneして不明なコードをChatGPTとかに貼って聞く cloneして不明なコードをCopilotChatとかで聞…

【Nginx】1.28.0が出ていた

nginx.org nginx-1.28.0 stable version has been released, incorporating new features and bug fixes from the 1.27.x mainline branch — including memory usage and CPU usage optimizations in complex SSL configurations, automatic re‑resolution o…

【ECS】ECS Service Connect

ECS Service Connectは、AWSのECS環境でサービス間通信を簡単かつセキュアに管理するための機能。 サービス間の通信の簡略化 ECS Service Connectは、ECSクラスター内のコンテナ間での通信を簡素化します。これにより、サービスディスカバリーやロードバラン…

RubyKaigiへ行ってきた

愛媛県松山市で開催された RubyKaigi 2025 に参加してきました。その参加レポートです。 はじめてのRubyKaigi インフラやSRE、Go関連のイベントにはこれまで何度か参加してきましたが、言語そのものにフォーカスしたカンファレンスは初めてでした。「自分に…

【Go】go-sipで遊んだ

github.com 時代はSIPです。ハマっています。とりあえずフローとかを把握するためにとりあえず書いてみました。 SIPサーバーは簡易的な実装であり、実際のVoIP通話を確立するためのシグナリングに使用できますが、実際の音声パケットの転送(RTP)は含まれて…

【Nginx】リクエストの処理開始時刻をログに出す

Nginxでリクエストの処理開始時刻をログに出力するためには、ngx_luaモジュールを使用して、リクエストの処理開始時刻を取得し、ログフォーマットに追加することができます。以下はその実現方法の例です。 http { lua_package_path '/path/to/lua/?.lua;;'; …

【Mackerel】MCPサーバを書き始めた

[2025/10/06追記] mackerel.io 公式の方でリリースされたようです(ありがとうございます)。こちらの使用をおすすめします! ※Mackerelアンバサダープログラムに参加しています github.com MCPが話題なので何かやれないかと思っていたので書いてみた。Cursor…

【C】UDPサーバを書き始めた

github.com 最近はVoIPをやってます。TCPだけやってきた(厳密にはDNSとかあたりで学んでいるので再入門)ので正直わからんことが多いですが色々調べながら勉強してます。TCPに比べて覚えることはあまりないとはいえリアルタイムでのやりとりとかが入ってくる…

【sed】置換

-i'' -i '' Ubuntu 正常 '' がsedコマンドに OS X '' が無視される 正常 今日だけで3回くらいミスったw

【Terraform】merge

merge(map1, map2, ...) 2つ以上のmapを結合したmapを返します。keyが重複している場合、対応する値は順に上書きされていきます。 merged_map_1 = "${merge(map("key_1", "val_1"), map("key_2", "val_2"))}" # merged_map_1 = {"key_1": "val_1", "key_2": …

【イベント】Road to SRE NEXT@仙台をやってきた

sre-lounge.connpass.com やってきました。2年連続でやれて良かったです。今年も会場をお貸しくださった楽天さんには大変感謝です SRE NEXT本編まで走り続けます 油揚げに醤油かけるのがマイノリティな飲み会が仙台であって驚いた。— RyuichiWatanabe@gurasa…

【PostgreSQL】HOTとは

PostgreSQLにおけるHOTの解説 PostgreSQLにはHOT(Heap Only Tuples)という機能があります。これは特定の条件下でUPDATEやDELETE処理のパフォーマンスを改善する仕組みです。本記事では、このHOTについて解説します。 PostgreSQLのUPDATE/DELETEの基本動作…

【GAS】Slack APIとか色々

/** * Slack APIにPOSTする * @param {string} apiMethod - 使用するAPI * @param {Object} payload - tokenやパラメータ * @returns {GoogleAppsScript.URL_Fetch.HTTPResponse} */ function postSlackApi(apiMethod, payload) { const PARAMS = { 'method'…

【入門】負荷分散

インターネットを利用する上で、私たちは様々なWebサービスに日々アクセスしています。これらのサービスが常に快適に利用できるのは、裏側で様々な技術が支えられているからです。その中でも特に重要な役割を果たしているのが「負荷分散」という技術です。 …

【LiteLLM】Proxyでfallbackの設定を使う

docs.litellm.ai model_list: - model_name: zephyr-beta litellm_params: model: huggingface/HuggingFaceH4/zephyr-7b-beta api_base: http://0.0.0.0:8001 rpm: 60 tpm: 1000 - model_name: gpt-3.5-turbo litellm_params: model: gpt-3.5-turbo api_key: <my-openai-key></my-openai-key>…

【Go】Slackのグループを任意のユーザーIDで書き換える

任意のスケジュールと組み合わせたいという感じで使える。 package main import ( "fmt" "log" "os" "strings" "github.com/slack-go/slack" // slack-go/slack ライブラリをインポート ) func main() { // --- 設定値 (環境変数から取得することを推奨) ---…

【Ruby】Jitter付きリトライ

github.com require 'timeout' require 'securerandom' def retry_with_jitter(max_retries: 5, initial_delay: 1, multiplier: 2, jitter_factor: 0.5) retries = 0 begin yield rescue => e retries += 1 if retries > max_retries raise # リトライ回数上…

【Azure】GitHub ActionsでACRにPushしてApp Serviceを更新するワークフロー

learn.microsoft.com 意外と公式のActionsが充実していてすごいと思ったがよくよく考えたらMicrosoftとGitHubなのでそれはそうかとなった便利なのが結構多くて良いです。 name: Deploy to Dev ACR on: push: branches: - feature/v1_0_0_deploy_dev workflow…

【Linux】Wolfi OSとは

初見だったのでメモ書き。 bash-5.2# cat /etc/os-release ID=wolfi NAME="Wolfi" PRETTY_NAME="Wolfi" VERSION_ID="20230201" HOME_URL="https://wolfi.dev" BUG_REPORT_URL="https://github.com/wolfi-dev/os/issues" Wolfi OS: 軽量で効率的なLinuxディス…