Skip to content

Instantly share code, notes, and snippets.

View kawaz's full-sized avatar
🏠
Working from home

Yoshiaki Kawazu kawaz

🏠
Working from home
View GitHub Profile
@kawaz
kawaz / flock-example1.sh
Created September 19, 2023 05:04
シェルスクリプトでflockを使って2重起動防止をする方法(sh,bash,zsh,lock,)
#!/bin/bash
# コピペで使えてシンプルなやつ (動的なファイルディスクリプタ)
# 2重起動防止
exec {lock}<"$0"; flock -n "$lock" || {
echo "this script is already running" >&2
exit 1
}
echo "なにかの処理"
@kawaz
kawaz / movingAverageFilter.js
Last active August 31, 2024 04:42
データ列に対してmapすると移動平均が得られるフィルタ関数。chartjs が移動平均線の描画に対応してないっぽいが、これを噛ましてやれば自力で移動平均用のデータ列が作れる。
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
@kawaz
kawaz / beep.js
Last active September 5, 2023 02:44
Web Audio API を使って beep 音を鳴らすサンプル。
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){
@kawaz
kawaz / base64-cffunctions.js
Last active March 24, 2023 05:42
CloudFront Functions 内でコピペで使えるBASE64実装
// CloudFront Functions 内で利用可能なBASE64実装
function b64enc(b) {
var b64codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split("").map(s=>s.charCodeAt(0))
var pad = [0, 2, 1][b.length % 3]
// 入力バイト列(本来は 0xFF を超える charCode が含まれていたらエラーにすべきだが省略
var bCodes = (b + '\0'.repeat(pad)).split("").map(s=>s.charCodeAt(0))
// 出力用バイト列
var aCodes = new Uint8Array(bCodes.length / 3 * 4)
for(var i=0,j=0; i<b.length; i+=3,j+=4){
@kawaz
kawaz / select-finder-items.swift
Created February 8, 2023 06:47
Finderでファイルを選択状態にするスクリプト。複数も可。
#!/usr/bin/swift
import AppKit
let urls = CommandLine.arguments.dropFirst(1).map { URL(fileURLWithPath: $0) }
NSWorkspace.shared.activateFileViewerSelecting(urls)
@kawaz
kawaz / noerror.js
Created March 3, 2022 03:23
ムシャクシャしてやった。今は反省している(午前の進捗ぅううう…)
    // おまじない
ᡸ=ᡸᡸ=>ᡸ
    // SyntaxErrorはもちろん、ランタイムエラーすら出さずに実行可能
ᡸ```
ᡸhi
ᡸ```
@kawaz
kawaz / install-awscliv2.sh
Last active March 2, 2022 18:21
install aws-cli v2 with oneline
#!/bin/bash
( set -ex -o pipefail && \
d="$(mktemp -d)" && \
cd "$d" && \
trap "$(printf "rm -rf %q" "$d")" EXIT && \
curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o awscliv2.zip && \
unzip awscliv2.zip && \
sudo ./aws/install --update )
@kawaz
kawaz / volume-ctl.sh
Last active February 22, 2022 07:55
Adjusting the volume on macOS with CLI
#!/bin/bash
# https://gist.github.com/kawaz/5aa9d792798ba49aace14d17b4e68b3e
set -eo pipefail
usage() {
echo "Usage: $0 subcommand [args]"
echo " $0 get [output|input|alert|mute] get volume settings"
echo " $0 set [output|input|alert] 0-100 set volume"
echo " $0 set mute [true|false] set mute status"
echo " $0 help show this help"
// ==UserScript==
// @name Twitter search default to live
// @namespace http://tampermonkey.net/
// @version 0.6
// @description Twitter検索のデフォルトタブを「話題のツイート」から「最新」に変更する
// @author kawaz
// @supportURL https://twitter.com/kawaz
// @updateURL https://gist.github.com/kawaz/33e60bd3fbba4e5cc1615d30b97f8ad4/raw/twitter-search-default-to-live.user.js
// @downloadURL https://gist.github.com/kawaz/33e60bd3fbba4e5cc1615d30b97f8ad4/raw/twitter-search-default-to-live.user.js
// @match https://twitter.com/*
@kawaz
kawaz / README.md
Last active October 20, 2021 04:12
docker/docker-compose を nerdctl に置き換えるラッパースクリプト。Mac環境での lima のセットアップ補助も兼ねてる。

Introduction

Docker Desktop は有料化云々については元々リポジトリとして便利に使わせて貰ってて課金済みだったしどうでもよくて。それよりも Docker Desktop for Mac が重くて消費電力馬鹿食いするのに辟易したので、この機に lima を試してみることにした。

そしたら導入は簡単だし Docker Desktop に比べてかなり負荷も軽い(アイドル時にアクティブモニタで見るとCPU3%程度)し、面倒かなと思ってたポートフォワードについても lima が勝手に自動ポートフォワードしてくれるので QEMU 内で動いてるコンテナ内のサーバプロセスへのポート開けとかの作業は一切不要で普通に localhost でアクセス出来ちゃうし超便利だった。て事でまだ30分くらいしかさわってないけど気に入ったので Docker Desktop はサクサク消す事にした。

更に最初は nerdctl って打つのに慣れない(明日には忘れてるはず)ので今まで通り docker/docker-compose のコマンドで lime nerdctl がたたけるようにするラッパーコマンドを作っておいた。これは未来の自分が lima や nerdctl の導入や使い方について忘れたときの備忘録も兼ねている。

lima の細かい設定についてはここでは書いてない。というか何もしてない状態で今のところ特に不満は無い。ホストのリソースをどれくらい使って良いかとか変えたくなったら ~/.lima/ 内の設定を弄ったりすれば良いと思うが必要になったときにググればよい。

Setup