↓こんな感じに実行すると、before/after のようにピンポイントでいい感じに修正されたコードが出てくる。みたいな感じに使える。
# -d を外すと元のファイルが修正される
bunx jscodeshift -t modify-video-provider.ts sample.js -d -p
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){ |
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 |
#!/bin/bash | |
# コピペで使えてシンプルなやつ (動的なファイルディスクリプタ) | |
# 2重起動防止 | |
exec {lock}<"$0"; flock -n "$lock" || { | |
echo "this script is already running" >&2 | |
exit 1 | |
} | |
echo "なにかの処理" |
#!/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 |
// 日本語の声をランダムに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 |
#!/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]}") |
graph TD;
subgraph 結果
R0[何もなし]
R1[強化値ダウン]
R2[銀剥がし]
R3[メッキ印消し]
R4[印消し]
end
/** | |
* React等が利用されているサイトでは value プロパティに値をセットしてもWEBアプリに変更が伝わらないことがあるが、それを上手くやる。 | |
* valueやcheckedプロパティを変更する際はフレームワーク側で差し替えられてるケースの対応として、ネイティブパーツのsetterを直接使って値を書き換えるのが確実 | |
* | |
* @param {string | Element | Array<string | Element>} target - 値を設定する対象の要素。文字列(セレクタ)、Element、またはそれらの配列 | |
* @param {string | boolean} value - 設定する値。input/textareaの場合は文字列、checkboxの場合は真偽値でもOK | |
* @param {boolean} [immediate=false] - trueの場合は即座に値を更新、falseの場合は次のイベントループで更新(特別な理由がない限りはfalseでOK) | |
*/ | |
function setValue( | |
target, |
# ローカルで発生したメールを全部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 |