@jikeytang
2023-02-26T22:52:43.000000Z
字数 2110
阅读 402
2023-blog
随着 http://milu.blog 发布beta 版本过去半年的时间,准备发1.0
正式版本了,在原来beta版本的基础上还是新增了一个小的模块特约撰稿人
,基础的功能和数据库设计保持了极大的克制和稳定。
先从全局角度总结一下:
虽然前期发的是beta版本,但深感版本规划给管理业余项目带来的众多好处。在“需求阶段做加法,开发阶段做减法”的原则下很好的梳理基础需求,而真正开发的时候,由于投入时间有限,在极少的时间集中精力做无限的事情本身是一项很大的挑战,所以需求分期,拆分任务变得尤为重要,要不然上线遥遥无期。
早上线的好处就不提了,早一步收到用户的反馈,不断的鞭策着用户体验向更好的方向发展,这次比较意外还是收到同学的pr。前期没有任何的沟通,小伙伴凭借着自己的激情和对这个项目的理解,到目前为止发起了两次比较重要的pr,那种突破了时间空间的限制下,被人认可有人主动参与的感觉真的是特别开心。
具体来说是对beta版本的一次优化升级以及bug
修复,没有增加新的功能开发,完全诠释了:先上线在优化的这一偷懒技巧。
首页
文章增加了用户头像的显示
留言板
增加了分页选项,是的没错,beta版本没有分页。
特约撰稿人
是一个新增的模块,读取后台的用户列表,点击用户跳转到用户相关文章列表。
分类、归档、友链
这些增加了Icon CSS3动画交互,显得更为细腻。
docker
的部署方式。日期带T带D的问题
fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
拆分User
model
主要解决登录时需要password字段进行值的比对,但日常用户信息的获取又不需要password这个字段。这时候就需要拆分
type BaseUser struct {
BaseModel
Nickname string `gorm:"column:nickname;type:varchar(100)" json:"nickname"`
Email string `gorm:"column:email;type:varchar(50)" json:"email"`
Address string `gorm:"column:address;type:varchar(255)" json:"address"`
}
type User struct {
BaseUser
Username string `gorm:"column:username;type:varchar(20);not null " json:"username"`
Password string `gorm:"column:password;type:varchar(500)" json:"password"`
}
// ReqUser 过滤Password的结构体
type ReqUser struct {
BaseUser
Username string `gorm:"column:username;type:varchar(20);not null " json:"username"`
}
在修改和新增时的密码加密分别在 gorm的hooks钩子 BeforeCreate, BeforeUpdate
中进行, 对应文件 elk-blog\app\model\user.go
,也可以对单一字段在返回时进行加密,比如:
func (d *Message) AfterFind(tx *gorm.DB) (err error) {
d.Email = utils.Md5(d.Email)
return
}
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