Slide 1

Slide 1 text

最近作ったもの紹介 Drumato

Slide 2

Slide 2 text

雑談 最近やっていること

Slide 3

Slide 3 text

Scrapboxになんでもない技術メモ

Slide 4

Slide 4 text

scrapboxは脳のL1 cacheに良さそう

Slide 5

Slide 5 text

Controller-runtime Code reading & understanding

Slide 6

Slide 6 text

本題

Slide 7

Slide 7 text

最近趣味codingしてない

Slide 8

Slide 8 text

なまっているか心配

Slide 9

Slide 9 text

LTのためになんか作る

Slide 10

Slide 10 text

即席で作ったもの2つ紹介

Slide 11

Slide 11 text

おもちゃ1

Slide 12

Slide 12 text

tinetdみたいなのを作る 所要時間: 2~3時間ぐらい

Slide 13

Slide 13 text

tinet,使わせてもらっています ● よくわかっていなくても使える ○ 適当にREADME読んだら使えました(便利! ○ Examplesに要件を満たすものが落ちてれば新たに設定書くこともない ● Scrap and Buildがサクサクできる -> 検証に最適! ○ いちいちVM image落としてきて, confして, FRR installして...とやるのは大変 ○ Localで動いてすぐ消せる

Slide 14

Slide 14 text

以下のようなものを作ってみたくなった ● なんとなく以下ができたら"楽しそう" ○ 実行するとup - confを実行 ○ Signal投げたら勝手にdownする ○ 設定追加したら自動で反映してくれる...? ■ fileを監視するcodeを書いたことがないので,やってみたい ○ testが断続的に動いてくれる ● 結果的に本家tinetのほうが全然便利,だけど楽しかったのでよし

Slide 15

Slide 15 text

実装イメージ

Slide 16

Slide 16 text

Original behavior

Slide 17

Slide 17 text

tinetd behavior

Slide 18

Slide 18 text

作る

Slide 19

Slide 19 text

作り方 ● tinet資源は利用せず,1から作る ○ 理由1: コードが小さくわかりやすかったので十分理解できた ○ 理由2: 一方でtinetの多機能に全部追従するのは大変そう ○ 結論: コードを読んで最低限の機能を移植すれば良さそう ● fsnotifyとかsignalの使い方は勉強 ● あとは頑張って作る

Slide 20

Slide 20 text

結果 ● Goで400行くらいで出来た ○ fsnotify/signal/tickerは使い方はかんたん ● 設定とstateの差分でcommand execは意外と大変 ○ 同じnode nameはあるが中身は異なるかも -> reflect.DeepEqual() ○ Nodeが減ってるかも -> map - mapにして差分はdownを実行すればできそう ■ とりあえず無視

Slide 21

Slide 21 text

DEMO

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

tinetdから学んだこと ● fsnotifyの仕組みはちゃんと知りたいな ○ まずはinotifyとかから勉強することになるのかな ● fsnotifyの用途はなんだろう ○ "時々fileを開いて読む"で十分なことも多そうなイメージ ○ Controller-runtimeはtls certificateの監視に使っている ● tinetは便利 ● それよりnetworkの勉強自体をしなきゃ

Slide 24

Slide 24 text

おもちゃ2

Slide 25

Slide 25 text

eBPF disassembler

Slide 26

Slide 26 text

ありがとうございました