Skip to content

Instantly share code, notes, and snippets.

@nyaocat
nyaocat / w-make
Last active September 20, 2020 01:22
make を継続的に実行するコマンド
#!/bin/bash
# w-make コマンド
# このファイルを PATH の通った場所に実行属性付きで w-make として保存し、
# `make xxx` の代わりに `w-make xxx` を実行すると必要な依存ファイルの変更を監視して継続的に make をたたく
# 要: make, inotifywait, perl
while :
do
make "$@"
@nyaocat
nyaocat / type-safe-builder.ts
Created November 30, 2020 10:05
Typescriptでタイプセーフなビルダーパターン
type WidthDefined = {width: number};
type HeightDefined = {height:number};
type TitleDefined = {title:string};
type AllDefined = WidthDefined & HeightDefined & TitleDefined;
class WidgetBuilder<T>{
constructor(private params: T){}
width<D>(this:WidgetBuilder<D extends WidthDefined ? never : D>, width: number):WidgetBuilder<D & WidthDefined> {
return new WidgetBuilder(Object.assign(this.params, {width}));
}
@nyaocat
nyaocat / run-in-nonet
Created May 8, 2021 08:00
指定コマンドをネットワーク接続不可環境下で実行させるスクリプト
#!/bin/bash
set -eu
readonly NSNAME="ns${RANDOM}"
sudo ip netns add "$NSNAME"
trap "sudo ip netns delete '$NSNAME'" 0
sudo ip netns exec "$NSNAME" sudo -u "$USER" "$@"