[关闭]
@jikeytang 2023-02-26T22:52:43.000000Z 字数 2110 阅读 367

milu.blog 发布 1.0 版本

2023-blog


随着 http://milu.blog 发布beta 版本过去半年的时间,准备发1.0正式版本了,在原来beta版本的基础上还是新增了一个小的模块特约撰稿人,基础的功能和数据库设计保持了极大的克制和稳定。

先从全局角度总结一下:
虽然前期发的是beta版本,但深感版本规划给管理业余项目带来的众多好处。在“需求阶段做加法,开发阶段做减法”的原则下很好的梳理基础需求,而真正开发的时候,由于投入时间有限,在极少的时间集中精力做无限的事情本身是一项很大的挑战,所以需求分期,拆分任务变得尤为重要,要不然上线遥遥无期。
早上线的好处就不提了,早一步收到用户的反馈,不断的鞭策着用户体验向更好的方向发展,这次比较意外还是收到同学的pr。前期没有任何的沟通,小伙伴凭借着自己的激情和对这个项目的理解,到目前为止发起了两次比较重要的pr,那种突破了时间空间的限制下,被人认可有人主动参与的感觉真的是特别开心。
具体来说是对beta版本的一次优化升级以及bug修复,没有增加新的功能开发,完全诠释了:先上线在优化的这一偷懒技巧。

1. 前台

2. 后台

3. 问题

  1. 日期带T带D的问题

    1. fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
    • 如果配置了parseTime=true,MySQL中的DATE、DATETIME等时间类型字段将自动转换为golang中的time.Time类型。 类似的0000-00-00 00:00:00 ,会被转为time.Time的零值。
    • loc 默认值 UTC,表示解析为UTC时间,一般设置为Local,表示使用当地时间。
      原本这两个是这个意思,但是加上之后时间读取之后出现T,D 删掉即可。
  2. 拆分Usermodel
    主要解决登录时需要password字段进行值的比对,但日常用户信息的获取又不需要password这个字段。这时候就需要拆分

  1. type BaseUser struct {
  2. BaseModel
  3. Nickname string `gorm:"column:nickname;type:varchar(100)" json:"nickname"`
  4. Email string `gorm:"column:email;type:varchar(50)" json:"email"`
  5. Address string `gorm:"column:address;type:varchar(255)" json:"address"`
  6. }
  7. type User struct {
  8. BaseUser
  9. Username string `gorm:"column:username;type:varchar(20);not null " json:"username"`
  10. Password string `gorm:"column:password;type:varchar(500)" json:"password"`
  11. }
  12. // ReqUser 过滤Password的结构体
  13. type ReqUser struct {
  14. BaseUser
  15. Username string `gorm:"column:username;type:varchar(20);not null " json:"username"`
  16. }

在修改和新增时的密码加密分别在 gorm的hooks钩子 BeforeCreate, BeforeUpdate 中进行, 对应文件 elk-blog\app\model\user.go,也可以对单一字段在返回时进行加密,比如:

  1. func (d *Message) AfterFind(tx *gorm.DB) (err error) {
  2. d.Email = utils.Md5(d.Email)
  3. return
  4. }

3.大文本数据类型

类型 长度范围 占用空间
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

低估了一篇文章的长度 TEXT还是不够,已升级为 MEDIUMTEXT 类型。
4. 234234
5. 234234
6. 234234
7. 234234234
8. 234234234

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注