graph TD;
subgraph 結果
R0[何もなし]
R1[強化値ダウン]
R2[銀剥がし]
R3[メッキ印消し]
R4[印消し]
end
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ローカルで発生したメールを全部SESにリレーして送信する | |
sender_canonical_maps=regexp:/etc/postfix/sender_canonical_maps.regexp | |
sender_dependent_relayhost_maps=hash:/etc/postfix/sender_dependent_relayhost_maps regexp:/etc/postfix/sender_dependent_relayhost_maps.regexp | |
smtp_sasl_auth_enable=yes | |
smtp_sasl_password_maps=hash:/etc/postfix/smtp_sasl_password_maps regexp:/etc/postfix/smtp_sasl_password_maps.regexp | |
smtp_sasl_security_options=noanonymous | |
smtp_sender_dependent_authentication=yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// React等が利用されているサイトでは value プロパティに値をセットしてもWEBアプリに変更が伝わらないことがあるが、それを上手くやる。 | |
const setValue = (target, value, immediate=false) => { | |
const f = ()=>{ | |
// valueプロパティがフレームワーク側で差し替えられてるケースの対応として、ネイティブパーツのsetterを直接使って値を書き換えるのが確実 | |
const valueDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), "value") | |
if(valueDescriptor && valueDescriptor.set) { | |
valueDescriptor.set.call(target, value) | |
} else { | |
target.value = value | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# テンプレート変数を用意 | |
declare -A TEMPLATE_KV=() | |
while read -r k v; do | |
k=${k//-/_}; k=${k//:/}; k=${k^^} | |
TEMPLATE_KV["$k"]="$v" | |
done < <(ec2-metadata -i -t -h -o -z -p -v) | |
TEMPLATE_KV[REGION]=$(perl -pe's/[a-z]$//' <<< "${TEMPLATE_KV[PLACEMENT]}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 日本語の声をランダムに1つ選ぶ | |
const voices = speechSynthesis.getVoices().filter(v=>/^ja-/.test(v.lang)) | |
const voice = voices[Math.floor(voices.length*100000*Math.random())%voices.length] | |
const ssu = new SpeechSynthesisUtterance() | |
ssu.lang = 'ja-JP' // 言語 | |
ssu.voice = voice // 発話に使用する音声(未設定の場合lang設定を見て適切な音声が選ばれる | |
ssu.volume = 1 // 発話の音量 0~1、default=1 | |
ssu.rate = 1 // 発話の速度 0.1~10、default=1 | |
ssu.pitch = 1 // 発話の音程 0~2、default=1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e -o pipefail | |
# HostedZone[].Id を保存 | |
aws route53 list-hosted-zones | jq .HostedZones[].Id -r | tee HostedZoneIds.txt | |
# 全HostedZoneのRecordSetを取得 | |
while read id; do | |
aws route53 list-resource-record-sets --hosted-zone-id "$id" | |
done <HostedZoneIds.txt | tee rs.json.tmp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# コピペで使えてシンプルなやつ (動的なファイルディスクリプタ) | |
# 2重起動防止 | |
exec {lock}<"$0"; flock -n "$lock" || { | |
echo "this script is already running" >&2 | |
exit 1 | |
} | |
echo "なにかの処理" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const movingAverageFilter = (ws=3) => { | |
if(!Number.isInteger(ws) || ws < 1) { | |
throw new Error(`Invalid window size. ws must be >=1. You entered: ws=${ws}.`) | |
} | |
let win = [] | |
let sum = 0 | |
let pos = 0 | |
let tail = 0 | |
return (head) => { | |
sum = sum + head - tail |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const beep = (duration=200, frequency=440, gain=1.0) => new Promise((resolve, reject) => { | |
try { | |
const audioCtx = new AudioContext() | |
const oscNode = new OscillatorNode(audioCtx, {frequency, type:"square"}) | |
const gainNode = new GainNode(audioCtx, {gain}) | |
oscNode.onended = resolve | |
oscNode.connect(gainNode).connect(audioCtx.destination) | |
oscNode.start(audioCtx.currentTime) | |
oscNode.stop(audioCtx.currentTime + duration / 1000) | |
} catch(err){ |
NewerOlder