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 / jpg2pdf.pl
Created October 9, 2012 14:19
複数のjpeg ファイルをpdfに変換するPerlスクリプトです。オリジナルに対し、コマンドラインオプションを受けとるよう改修しています。
#!/usr/bin/perl
# ******************************************************
# Software name :convert jpeg to pdf (複数のjpeg ファイルをpdfに変換)
# jpg2pdf.pl
# version 0.1 (2010/December/07)
# version 0.2 (2012/March/10)
# version 0.3 (2012/October/09)
#
# Copyright (C) 2010-2012, INOUE Hirokazu
@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 / epub2mp4.sh
Last active January 9, 2024 01:05
EPUB を mp4 に変換するやつ
#!/bin/bash -ve
set -o pipefail
# EPUB ファイルをチャプター毎の mp4 ファイルに変換するシェルスクリプト
## 依存関係
# brew install w3m が必要
# unzip で、EPUBファイルからコンテンツ抽出
# find, sort で、EPUBファイル内にあるXHTMLファイルをリストアップ
# w3m で、XHTMLファイルからHTMLタグを除去し txt に変換
# say コマンドで txt から mp4 ファイルに変換
@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」が実際にロックを掴んでる。