Write the Code. Change the World.

9月 07

从 http 请求到自定义路由,再对应的返回已经跑通了。但是,还没具体的实现业务。那就先从图片验证码开始。从以下几点开始。

  • 先去找一个比较成熟的生成图片验证码的库
  • 写生成逻辑,并加入缓存功能。比如缓存 5 分钟。
  • 添加配置。图片的默认宽高,复杂度等。以及上边说的缓存 5 分钟这些,最好有一个统一配置。
  • 再就是核验验证码(该步骤留到需要使用验证码的地方使用)

redis 配置

在做这些之前,我们先把 redis 配置和使用搞好。就是准备使用 redis 来对图片验证码的值进行缓存。

goframe 官方配置介绍: https://goframe.org/pages/viewpage.action?pageId=1114194

redis 官方介绍: https://goframe.org/display/gf/NoSQL+Redis

配置文件的文件类型就使用 yaml,配置文件就放在 *manifest/config下。

好吧。那么就在 *manifest/config/config.yaml 下补充。

# Redis 配置
redis:
  default:
    address: 192.168.56.56:6379
    db:      1

  cache:
    address:     192.168.56.56:6379
    db:          2

配置好了,那就开始使用测试下看看。

继续阅读

9月 06

做项目。一般都会选择框架。很少会直接从 0 开始撸的。之所以选择框架,是因为框架既帮你做好了架构,又准备好了很多工具,还定制了一些规范。适合快速稳定的做项目。一般一个语言对应的开源框架会比较多,选一个或两个应用到项目中就可以了。准备进入 go 领域,也得选一个框架。初步了解了 gin 和 goframe。这里还是选择 goframe。gin 还是太轻了,项目中需要的一些工具不够多和完善。

官网: https://goframe.org/

安装升级

这里想做一个接口服务项目。仅仅提供接口给到前端使用就好。现在大多业务场景都是前后端分离的。比如app、小程序、管理后台这些。app,小程序是必须分离。管理后台也可以不分离,但分离起来更好写更爽。

按照官网文档,先安装好 gf。当前最新版本是 2.5.2。

创建项目。

gf init goSimpleAdmin

cd goSimpleAdmin

# 查看版本信息
gf -v

GoFrame CLI Tool v2.5.2, https://goframe.org
GoFrame Version: v2.3.1 in current go.mod
CLI Installed At: /Users/vini123/go/bin/gf
CLI Built Detail:
  Go Version:  go1.20.6
  GF Version:  v2.5.2
  Git Commit:  2023-08-18 09:57:25 cf299273c499aafb5d19829809dfb6b8ef280c12
  Build Time:  2023-08-18 16:23:18

发现 goframe 版本是 2.3.1。可以对刚创建的项目进行升级。在升级前,先做好版本控制。

git init -b main
git add .
git commit -m 'goframe initialize'

使用 gf up 对项目进行升级。

继续阅读

9月 06

既然 go 的迁移、seeder 等不好用,还是用 laravel 来搞吧。

开始

composer create-project laravel/laravel youme.com --prefer-dist

这样就创建了一个最新的 laravel 项目,项目文件在 youme.com 里。在本地,做了 host 映射。通过 youme.com 就可以打开。

上边就是默认的。

创建 git 版本控制,提交。

git init -b main
git add .
git commit -m 'laravel initialize'

继续阅读

9月 06

使用 goframe 遇到的一些情况

  • 因为 laravel 有 artisan,migrate 等工具。无论用 go 的哪个框架(目前至少了解过 gen 和 goframe),都没有类似比价好用的 cli 工具。 goframe 虽然有 gen,但还是没 laravel 的好用,并且没有数据库迁移,seeder。因为 laravel 熟,可以使用 laravel 来写数据迁移和 seeder。用 goframe 来写项目。在使用 gf gen dao 的时候很有用。 再说一下 gf gen dao 也是真好用。

  • 默认的 validate,错误直接以 200 状态码返回。无论什么返回,都会包上一层。这个有点不太好。一般项目,我只关心成功和失败。失败比如 401 无权限,403 拒绝请求,429 请求频率太高等等。有明确的状态吗,用户也好理解,也不用在返回实体部分包裹一层 code data 啥的。

  • 数据库表的认知。在 laravel 项目中,数据库表名都是复数的,个人也感觉复数更容易描述表的意义。 goframe 这边习惯用单数。还有时间字段。laravel 习惯用 created_at,updated_at。而 goframe 这边习惯 create_at 和 update_at。 这些习惯克服一下不是啥难事。

  • gf gen ctrl 的方式可以更方便的去处理路由(使得整个项目规范起来,命名,调用等等)。laravel 新建路由组,比如 api,比如 web,比如 console 等等。通过 gf gen ctrl 以及 goframe 的路由,也能方便轻松实现。

9月 05

https://github.com/danceyoung/paper-code/blob/master/package-oriented-design/packageorienteddesign.md

本篇内容主要讲解golang项目的面向包设计准则和基础的架构分层。

信息来自原文

内容进行翻译、加工、整合及结合个人的实践经验,并附有一个真实的例子来解释本篇内容。

当然你也可以直接阅读英文原文。

当然高手如云,只是懒得写罢了。

百年太久,只争朝夕,不负韶华,不枉少年,来日怎方长。

继续阅读