ical フォーマットのファイルのコンポーネントや、行をコマンドラインでフィルタする

github.com

どうしてもこの ical ファイルからこのコンポーネントやこの行をコマンドラインから削除したいという場合に使えます。

$ cat /path/to/ical | icalfilter -filter-component "..." -filter-component "..." -filter-line "..."

こんな感じで正規表現を登録して使います。

ical のパースは ical フォーマットを go でパースする - soh335 memo これを使って、同じ flag を slice にまとめるのには go で同じ flag を slice で受け取る - soh335 memo これを使ってます。

go で同じ flag を slice で受け取る

たまに go で同じ flag を slice で受け取りたくなるので書いた

github.com

こんな感じで使う。

var (
       strs = sliceflag.String(flag.CommandLine, "str", []string{}, "str")
)

func main() {
    flag.Parse()
    log.Println(*strs)
}
$ go run main.go ---str aaa --str bbb

flag package には Value という interface があって、Set(string) errorString() string を実装されてれば良いので、slice のポインタを返して、中では その slice に append するという感じになっている。 bool 以外の flag で提供されてるやつをひとまず実装した。

四季 冬 Black Winter

ようやく四季冬まで到達。おすすめされてから大分経ってたけど、ドラマとかアニメとかあったので冷たい密室と博士たちを読み始めて半年ぐらいかかった。 半年ぐらいずっと殺人事件起きててすごかった。

「そうです。一人一人の人間の存在が、その周辺に影響を与えます。その一人がもしいなくなれば、周辺の者は、困ったり、悲しんだり、あるときは喜んだり、あるときは生活に大きな変化さえ起こることがあります。ですけれど、その一人は、それらの人たちのために存在していたのではありません。つい、誰かのためになりたい、皆の役に立ちたい、そうして、それを自分の存在の理由にしたい、と人は考えがちなのです。存在の理由を、わからないままにしておけないのね。常に答を欲しがる。それが人間という動物の習性です」 「欲しがってはいけないのですか?」 「いいえ、欲しがることは間違いではありません。しかし、答はないのです。完全なる答などありません。それは、貴女が、あの月へ向かって歩き続けることと同じ。月は目標にはなるけれど、あそこに到達することはできないでしょう? それはわかりますね? 存在の理由をいくら問うても、答はないのです。でも、それを問い続けることは、とても大事なことですよ」

「すべてがわかってしまったら、なにも試すことができません。なにも試さなければ、新しいことはなにも起こらない。神が試さなければ、この世はなかったでしょう。人も、わからないことの答を知りたいと思って追い求める。そこに、優しさや、懐かしさ、そして、喜び、楽しみが生まれるのです」

「遠くへ飛ばない者は、新しい価値を見つけられない。これは真だ。だけど、遠くへ飛べば必ず新しい価値が見つけられるわけではない。突然変異の種は残れば正。しかし、多くは死滅して、すべてが消える」