@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Go: if err := expr; err != nil { } // initialization statement

戻り値が error 一つの関数を呼び出してエラーチェックする際、以下の二種類の書き方がある。

  1. err := expr で受け、改行し、 if err != nil { } でエラーチェックする
  2. if err := expr; err != nil { } とワンライナーでエラーチェックする

このうち 2 のやり方の呼び方が知りたかった*1

if err := expr; の部分は initialization statement と呼ぶらしいので、 2 のエラーチェック方法は if with initialization statement と呼ぶことにした。

package main

import "os"

func main() {
    err := os.Chdir("/tmp")
    if err != nil {
        return
    }
 
    if err := os.Chdir("/tmp"); err != nil {
        return 
    }
}

でも、 When Should I Use One Liner if...else Statements in Go? - Calhoun.io に倣って? one liner if statement と呼ぶのでも良いかもしれない。

*1:1 から 2 に書き方を変更する際のコミットログメッセージとして

iPhone のストレージ容量が再びおかしくなった

iPhone のストレージ容量がおかしくなった - @kyanny's blog

iPhone のストレージ容量おかしい問題が解決した - @kyanny's blog

iPhone を初期化して iCloud バックアップから復元した。

初期化前の iPhone を Mac に接続した状態

f:id:a666666:20200914134501p:plain

初期化・復元後の iPhone を Mac に接続した状態

f:id:a666666:20200914225854p:plain

初期化前の iPhone ストレージ

f:id:a666666:20200914225352j:plain

初期化・復元後の iPhone ストレージ

f:id:a666666:20200914225410p:plain

Go: golang.org/x/time/rate の burst について

golang.org/x/time/rate については以下の記事に詳しい。

blog.lufia.org

NewLimiter の第二引数の burst 値について調べたメモ。

burst は「一度に消費できるトークン数の最大値」。「貯められるトークンの最大値」と考えても良いが、やや不正確(「溜まっているトークンは一度に全部利用する」という前提を踏まえれば真)

rate=10/sec, burst=1

https://play.golang.org/p/pFDkrz8MX63

  • トークンは一度に1個消費できる
    • ≒トークンは最大1まで貯められる
  • 起動直後にトークンを1消費する(000 2009-11-10 23:00:00 +0000 UTC m=+0.000000001)
  • 以後0.1秒毎にトークンが1貯まる
  • 50回処理し終わるまでに4.9秒かかる
    • (起動直後に1消費して残り49回、0.1秒で1回なので*49で4.9秒)

rate=10/sec, burst=10

https://play.golang.org/p/hSaoHpVx8AO

  • トークンは一度に10個消費できる
    • ≒トークンは最大10まで貯められる
  • 起動直後にトークンを10消費する(000 ~ 009 2009-11-10 23:00:00 +0000 UTC m=+0.000000001)
  • 以後0.1秒毎にトークンが1貯まる
  • 50回処理し終わるまでに4秒かかる
    • (起動直後に10消費して残り40回、0.1秒で1回なので*40で4.0秒)

rate=10/sec, burst=100

https://play.golang.org/p/aYpZQqOp8cM

  • トークンは一度に100個消費できる
    • ≒トークンは最大100まで貯められる
  • 起動直後にトークンを50消費する(000 ~ 049 2009-11-10 23:00:00 +0000 UTC m=+0.000000001)
  • 50回処理し終わるまでに0秒かかる
    • (起動直後に50消費して残り0回なので)

エジソンズ・ゲーム

ウェスティングハウスのことを知らなかったし直流と交流の違いも忘れていたけど面白かった。歴史を知っていればなお楽しめただろう。音楽がまた良かった。テスラモーターズはニコラ・テスラから名前をとったのだろうか。

エジソンズ・ゲーム(字幕版)

エジソンズ・ゲーム(字幕版)

  • 発売日: 2020/08/07
  • メディア: Prime Video