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

DEMO Apps recently implemented

Drumato
August 08, 2021

DEMO Apps recently implemented

あるcommunityで発表した雑LT.

Drumato

August 08, 2021
Tweet

More Decks by Drumato

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. Controller-runtime
    Code reading & understanding

    View Slide

  6. 本題

    View Slide

  7. 最近趣味codingしてない

    View Slide

  8. なまっているか心配

    View Slide

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

    View Slide

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

    View Slide

  11. おもちゃ1

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. 実装イメージ

    View Slide

  16. Original behavior

    View Slide

  17. tinetd behavior

    View Slide

  18. 作る

    View Slide

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

    View Slide

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

    View Slide

  21. DEMO

    View Slide

  22. View Slide

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

    View Slide

  24. おもちゃ2

    View Slide

  25. eBPF disassembler

    View Slide

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

    View Slide