icon

Golang Playgroundってtime.Now()が"2009-11-10 23:00:00"を固定で返すけど、time.Sleep()time.Timerとかも、細工されてるのかぁ。

クライアントはこのレスポンスを受け取って、 Delay が指定されている場合は、メッセージを遅延して表示するようになっていて、あたかもスリープしているかのような挙動がみえるようになっています。

このように、 faketime を利用することで、バックエンドサーバーでは実際にスリープさせることなく即座にレスポンスを返しながらも、ユーザーに対してはスリープしているかのようにみせています。

Go Playground の仕組みを調べてみた  - AI時代のスキル面接ならHireRoo https://hireroo.io/journal/tech/go-playground-internal

これを解決する為、Go Playgroundサーバーは実際に指定された時間Sleepするのではなく、内部に保持する擬似的な経過時間を進めつつ即座に次にSleepから起きるGoroutineを見つけて実行する、というトリックを使っています。
つまりtime.Sleepやtime.Timer、time.Tickerなどによる待機は無視されて処理がすぐに完了します。

実際にGo Playgroundからtime.Sleepを含んだコードを実行するとちゃんと指定した通りのSleepが実行されている様に見えますが、ここにもトリックがあります。
Go Playgroundサーバーは標準出力や標準エラーへの出力があるとその時点の擬似経過時間を含む "playback header" を付与して出力します。サーバー側で全ての処理が完了してから、フロントでレスポンスのplayback headerを解析して追再生しているのです。

【Go言語】Fake timeつかったら時間のかかるコードのテストが一瞬で終わった - Qiita https://qiita.com/hogedigo/items/c2b6281961c5e21c4907

Web site image
Go Playground の仕組みを調べてみた - AI時代のスキル面接ならHireRoo
Web site image
【Go言語】Fake timeつかったら時間のかかるコードのテストが一瞬で終わった - Qiita
icon

お腹減ってきた様な気もしつつ、そうでない気もする。

icon

んあ、スマートフォンに挿してる128GBのSDカードが、空き容量無くなってる。
漫画1冊100MB未満とはいえ、使い切ってしまったか。
スマートフォンでデータの整理とかしたくないし、大きいSDカードに替えようかなぁ。

icon

珍しくお腹が減っていない。
外で歩いてるとなんか全然減らないってあるけど、家にいるのに減らないは珍しいな。

icon

SaltによるGUIのモックアップを描きます https://plantuml.com/ja-dark/salt

PlantUMLのサブプロジェクトで、GUIのワイヤーフレームを描くSaltというのがあって、良いかもと思ったが、記法が結構ややこしいかもなぁ。

サクッとワイヤーフレームを描くではなく、Saltでうまく図を描くという手段が目的になってしまいそうな気がちょっとする。
やってみてないから分からんけど。

Web site image
SaltによるGUIのモックアップを描きます
icon

Docker Compose Watchのx-initialSync: trueは、このPRで追加された様だ。

Watch initial sync by jhrotko · Pull Request #12047 · docker/compose
https://github.com/docker/compose/pull/12047

このPRと、元のissueに辿り着いた人しか知りえないexperimantalな設定値だなぁ。
PR出した人はDockerの中の人ではないみたいで、特にissueでの議論にも参加してないみたいだけど、いきなりPRで
x-付けた設定項目を出してるの不思議。
Dockerの中の人はPRを承認してるから問題は無いんだろうけど。

Web site image
Watch initial sync by jhrotko · Pull Request #12047 · docker/compose