今年有一个目标是用 Go 语言写几个应用,并且这几个应用一定要放到线上去,订了一个小目标,每一个应用帮 10 万人,我以前是写 C 的,也写过 php,后来负责大数据的时候,也用过 java,scala 之类的,Go 语言没有完整的学习过,只是看了一下 A Tour of Go,发现 Go 语言有 C 语言的一些影子,我就开始用 Go 来写我的第一个应用,实现一个格式化的 Google 服务翻译,工作量全部加起来不超过 3 天,到目前为止,使用人数已经超过 1 万人。
翻译服务
为什么要写这个翻译服务,我是没能力去实现整个翻译引擎的,一是没这么多语料,二是也没这个算法和工程能力,认清这一点就非常重要了,我主要是解决我经常遇到的两个问题:
- 长文翻译
- 有格式的翻译(markdown、HTML)
在 Google 或者 DeepL 是不能翻译长文的,也不支持 markdown 之类的富文本翻译,我就解决这两个问题。
功能点
- 前端实现一个 markdown 编辑器
- 后端提供一个 api 的封装,可以调用 google translate 等翻译服务。
- 防止机器人来滥用 api,要加一个防止机器人策略。
- 超过某一个额度,要求用户认证(google sign)。
技术栈
- 语言选择 Go lang
- web 框架选择 Gin
- 机器人验证 recaptcha
- 用户认证 google oauth2
- 配置文件 multiconfig
- 日志 zerolog
- session 用的是 gin sessions
- 统计 google analytics
- 前端构架 bootstrap
- 编辑器 Stacks Editor (stackoverflow.design)
依赖服务
- Google translate
复制代码
做任何一件事情,都可以拆分成很小的点,这些小的点肯定很多人实现过了,我要做的是把我要实现的功能拆分成这些小的点,看看有没有人实现过,如果有人实现过,我就参考他们的实现,自己只要做集成就可以了。
Github
github 里面有各种代码,但是很多是不能跑的,我找代码的首选站点。
davidleitw/gin-oauth2-example: a simple example use gin to login with oauth2. (github.com)
hotexamples
这个网站可以查找各种 demo,非常好用,比如我查找 sessions 的使用,就给出了 30 多个 example。
medium
这个网站的质量相对来说比较高,我也会从这种地方找例子。
How To Manage Your Sessions in Golang using Gin Framework And Redis ? | by Bikash dulal | wesionaryTEAM | Medium
OAuth2 with Google Account (gmail) in GO — GoLang | by Balakrishnan Nalin Prashanth | Medium