Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DEMO Apps recently implemented

Ec9465c5a5f2ea26a80db56f9d2f99b0?s=47 Drumato
August 08, 2021

DEMO Apps recently implemented

あるcommunityで発表した雑LT.

Ec9465c5a5f2ea26a80db56f9d2f99b0?s=128

Drumato

August 08, 2021
Tweet

More Decks by Drumato

Other Decks in Programming

Transcript

  1. 最近作ったもの紹介 Drumato

  2. 雑談 最近やっていること

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

  4. scrapboxは脳のL1 cacheに良さそう

  5. Controller-runtime Code reading & understanding

  6. 本題

  7. 最近趣味codingしてない

  8. なまっているか心配

  9. LTのためになんか作る

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

  11. おもちゃ1

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

  13. tinet,使わせてもらっています • よくわかっていなくても使える ◦ 適当にREADME読んだら使えました(便利! ◦ Examplesに要件を満たすものが落ちてれば新たに設定書くこともない • Scrap and

    Buildがサクサクできる -> 検証に最適! ◦ いちいちVM image落としてきて, confして, FRR installして...とやるのは大変 ◦ Localで動いてすぐ消せる
  14. 以下のようなものを作ってみたくなった • なんとなく以下ができたら"楽しそう" ◦ 実行するとup - confを実行 ◦ Signal投げたら勝手にdownする ◦

    設定追加したら自動で反映してくれる...? ▪ fileを監視するcodeを書いたことがないので,やってみたい ◦ testが断続的に動いてくれる • 結果的に本家tinetのほうが全然便利,だけど楽しかったのでよし
  15. 実装イメージ

  16. Original behavior

  17. tinetd behavior

  18. 作る

  19. 作り方 • tinet資源は利用せず,1から作る ◦ 理由1: コードが小さくわかりやすかったので十分理解できた ◦ 理由2: 一方でtinetの多機能に全部追従するのは大変そう ◦

    結論: コードを読んで最低限の機能を移植すれば良さそう • fsnotifyとかsignalの使い方は勉強 • あとは頑張って作る
  20. 結果 • Goで400行くらいで出来た ◦ fsnotify/signal/tickerは使い方はかんたん • 設定とstateの差分でcommand execは意外と大変 ◦ 同じnode

    nameはあるが中身は異なるかも -> reflect.DeepEqual() ◦ Nodeが減ってるかも -> map - mapにして差分はdownを実行すればできそう ▪ とりあえず無視
  21. DEMO

  22. None
  23. tinetdから学んだこと • fsnotifyの仕組みはちゃんと知りたいな ◦ まずはinotifyとかから勉強することになるのかな • fsnotifyの用途はなんだろう ◦ "時々fileを開いて読む"で十分なことも多そうなイメージ ◦

    Controller-runtimeはtls certificateの監視に使っている • tinetは便利 • それよりnetworkの勉強自体をしなきゃ
  24. おもちゃ2

  25. eBPF disassembler

  26. ありがとうございました