Skip to content

Instantly share code, notes, and snippets.

View sasasin's full-sized avatar

Shinnosuke Suzuki sasasin

View GitHub Profile
@sasasin
sasasin / get_asin_from_windows_kindle_xml.sh
Created April 20, 2024 10:53
Windows版KindleアプリのXMLから購入年月日順にASINを抜き出すやつ
#!/bin/bash -e
# Windows版Kindleアプリは、購入済みKindle蔵書一覧をXMLファイルとしてローカルに置く。
# XML から JSON に簡易に変換できる CLI ツールとして dasel を利用している。
# https://daseldocs.tomwright.me/
# dasel は凝ったクエリは未だ jq ほどには記述できないので、 dasel からの出を jq で加工している。
# 依存ツールは scoop でインストールできる。
# sort,tr,awk,tailなどUNIXコマンドは Git Bash で入れることにしている。趣味に合わせて好きにしたらよい。
@sasasin
sasasin / dmarc-change-monitor.js
Created February 3, 2024 06:45
Gmail の DMARC レコードの変化を検知する New Relic Synthetics Monitoring Scripted API 用 JS コード
/**
* Feel free to explore, or check out the full documentation
* https://docs.newrelic.com/docs/synthetics/new-relic-synthetics/scripting-monitors/writing-api-tests
* for details.
*/
var assert = require('assert');
// Google Public DNS の API エンドポイントに投げると JSON で DNS レコードを返してくれる
// https://developers.google.com/speed/public-dns/docs/doh/json
@sasasin
sasasin / get_dmarc_policy.sh
Last active January 11, 2024 04:05
指定したドメインの DMARC のポリシーだけ取ってくるやつ
#!/bin/bash
## how to use;
## get 1 domein;
# $ get_dmarc_policy.sh sasasin.net
# "_dmarc.sasasin.net.","reject"
## bulk get;
# $ cat domain_list.txt | xargs -L1 get_dmarc_policy.sh
# "_dmarc.example.com."
# "_dmarc.example.net.","none"
# "_dmarc.example.org.","reject"
@sasasin
sasasin / summerize-mp3-book.sh
Last active November 12, 2023 13:40
mp3から要約テキストを得るまでの一連の作業をまとめたシェルスクリプト
#!/bin/bash -v
BOOK_NAME=$1
# 1ファイルに結合する
ls *.mp3 \
| sort -u \
| awk '{print "file " $0 "" }' \
> ${BOOK_NAME}.mp3-list.txt
ffmpeg \
-f concat \
@sasasin
sasasin / summerize-stdin-by-bedrock.py
Last active November 11, 2023 16:53
AWS Bedrock の Claude で標準入力の文章を15分の1の文字数に要約するPythonスクリプト
# AWS Bedrock の Claude で標準入力の文章を15分の1の文字数に要約するPythonスクリプト
# つかいかた;
# pip3 install -u boto3
## デフォの15以外の割合に設定したければ
# export SUMMERIZE_RATE=10
## デフォの anthropic.claude-v2 以外のモデルを使うなら
# export MODEL_NAME="xxxxxxxxxx"
# cat hoge.txt | python3 ./summerize-stdin-by-bedrock.py
import os
@sasasin
sasasin / summerize-stdin-by-openai.py
Last active November 9, 2023 15:46
OpenAI GPT-4 で標準入力の文章を15分の1の文字数に要約するPythonスクリプト
# OpenAI GPT-4 で標準入力の文章を15分の1の文字数に要約するPythonスクリプト
# つかいかた;
# pip3 install -u OpenAI
# export OPENAI_API_KEY="......."
## デフォの15以外の割合に設定したければ
# export SUMMERIZE_RATE=10
## デフォの gpt-4-1106-preview 以外のモデルを使うなら
# export MODEL_NAME="gpt-3.5-turbo-1106"
# cat hoge.txt | python3 ./summerize-stdin-by-openai.py
@sasasin
sasasin / logging_aws_lambda.py
Created August 17, 2023 11:28
Lambda の Python ランタイムで環境変数でログレベルを変化させる雑なサンプルコード
# 環境変数 LOG_LEVEL のログレベルでロギングできる。無指定のデフォは WARNING となる
# 参考; https://docs.python.org/ja/3/howto/logging.html
# 参考; https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-logging.html
# Lambdaランタイムでは LambdaLoggerHandler が挟まってるため、
# ローカルで動いてたのがLambdaランタイムではウンともスンともならないことがある
# 参考; https://www.google.com/search?q=LambdaLoggerHandler
import os
import logging
def lambda_handler(event, context):
@sasasin
sasasin / metadata_lock_processlist_id.sql
Last active August 11, 2023 10:55
MySQL で Waiting for table metadata lock の原因となってるプロセスを特定するSQL
# MySQL で Waiting for table metadata lock の原因となってるプロセスを特定するSQL
select pl.*
, ml.*
from information_schema.processlist as pl
inner join performance_schema.threads as th
on pl.id = th.processlist_id
inner join performance_schema.metadata_locks as ml
on th.thread_id = ml.owner_thread_id
where
# 「GRANTED」が実際にロックを掴んでる。
@sasasin
sasasin / LambdaMemoryUsageByCloudWatchLogs
Created August 8, 2023 04:08
AWS Lambda Fn のメモリ使用量を CloudWatch Logs Insight で調べるやつ
# CloudWatch Logs Insights で調べたいロググループと時間範囲を選んで、以下クエリを実行する。
# bin(24h) は 24h 単位に集約して集計しろという指定。調べたい期間に書き換えて実行する。5m とか 8h とか 2d とか
# https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-Stats.html
fields @timestamp, @message, @logStream, @log
| filter @type = "REPORT"
| stats min(@maxMemoryUsed), avg(@maxMemoryUsed), max(@maxMemoryUsed) by bin(24h)
@sasasin
sasasin / VpcSubnetMetricsCollector.py
Created August 3, 2023 10:07
Amazon VPC サブネットの総/使用済/残 IP アドレス数を CloudWatch に投稿する Lambda Fn
import boto3
from datetime import datetime
def lambda_handler(event, context):
# CloudWatch Metrics に付与するタイムスタンプとして使う
timestamp = datetime.utcnow()
client = boto3.client('ec2')
responses = []
next_token = None