0%

win 的终端一直是我的使用痛点。笔者之前使用过 macos 作为主力机,使用 zsh 进行日常使用。家里有一台win,因此也有使用 win 进行开发的需求。之前试过使用 power shell 和 sysm64 来优化 win 的终端,但是都有问题。
power shell 使用了 oh-my-posh 进行美化,但是使用感受还是跟 zsh 不一样,并且有一定的卡断延迟。
sysm64 使用 zsh + oh-my-zsh 进行美化,延迟非常严重,并且无法适配代码编辑器的终端。
最后发现 wsl 可以比较好地解决问题。

有时候开发的时候用不止用一种语言,goland 的优势就不是很大了,恰到周围有很多同事也在用 vscode 开发 go,就想迁移试试。

谷歌的 Gemini 已对外开放,虽然完全比不上他宣传的那么叼,但不妨碍我们尝试把玩。 本文的目的是能够在本地调通 Gemini 的 api 接口

要换主力机,记录一下换机过程。因为想对自己的电脑掌控度高一点,因此选择重新配置,没有使用苹果的数据导入功能。

工作中遇到一个问题,结构体包含接口类型的成员时,在反序列化的时候会报错。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Task 接口类型
type Task interface {
    Exec() error
}

// TaskA Task接口的实现类A
type TaskA struct {
    A string `json:"a"`
}

func (ta *TaskA) Exec() error {
    fmt.Println("TaskA Exec")
    return nil
}

// TaskB Task接口的实现类B
type TaskB struct {
    B string `json:"b"`
}

func (tb *TaskB) Exec() error {
    fmt.Println("TaskB Exec")
    return nil
}

// MixedStruct 反序列化目标结构体
type MixedStruct struct {
    Id   uint64 `json:"id"`
    Task Task   `json:"task"`
}

小伙看到同事写的Gorm黑魔法,逐渐不淡定了。

开发过程中,看到同事的代码写了这么一段:

1
2
3
4
5
6
7
db = db.Session(&gorm.Session{Context: db.Statement.Context}).FirstOrCreate(&entity)
if db.Error !=nil{
    return components.ErrorDbInsert.WrapPrintf(db.Error, "Insert error, entity:%s", utils.ToJson(entity))
}
if db.RowsAffected == 0 {
    return components.ErrorAlreadyExist
}