From a0a76fc61f3ba006eaa8728f801bff739e4433b5 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Mon, 9 Jan 2023 15:11:00 +0800 Subject: [PATCH 1/6] optimzie config describe documents --- README.md | 4 +- docs/deploy/core/001-配置文件说明.md | 65 ++++++++++++++++++++-- features-status.md | 4 +- 3 files changed, 64 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 11a0be12..271b115d 100644 --- a/README.md +++ b/README.md @@ -353,9 +353,9 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r |`LoggerFile` | 日志 | 稳定 | 使用文件写日志 | |`LoggerZinc` | 日志 | 稳定(推荐) | 使用[Zinc](https://github.com/zinclabs/zinc)写日志 | |`LoggerMeili` | 日志 | 内测 | 使用[Meilisearch](https://github.com/meilisearch/meilisearch)写日志 | -|`Friendship` | 关系模式 | 内测(默认) | 弱关系好友模式,类似微信朋友圈 | +|`Friendship` | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | |`Followship` | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | -|`Lightship` | 关系模式 | 内测 | 开放模式,所有推文都公开可见 | +|`Lightship` | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | |`Alipay` | 支付 | 稳定 | 开启基于[支付宝开放平台](https://open.alipay.com/)的钱包功能 | |`Sms` | 短信验证 | 稳定 | 开启短信验证码功能,用于手机绑定验证手机是否注册者的;功能如果没有开启,手机绑定时任意短信验证码都可以绑定手机 | |`Docs:OpenAPI` | 开发文档 | 稳定 | 开启openapi文档功能,提供web api文档说明(visit http://127.0.0.1:8008/docs/openapi) | diff --git a/docs/deploy/core/001-配置文件说明.md b/docs/deploy/core/001-配置文件说明.md index b1af7e2b..42bcc9bb 100644 --- a/docs/deploy/core/001-配置文件说明.md +++ b/docs/deploy/core/001-配置文件说明.md @@ -56,13 +56,15 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r 目前支持的功能集合: | 功能项 | 类别 | 状态 | 备注 | | ----- | ----- | ----- | ----- | -|`OldWeb` | 子服务 | 稳定(默认) | 开启旧的Web服务 | -|`Web` | 子服务 | WIP | 开启Web服务| +|`Web` | 子服务 | 内测 | 开启Web服务| |`Admin` | 子服务 | WIP | 开启Admin后台运维服务| |`SpaceX` | 子服务 | WIP | 开启SpaceX服务| |`Bot` | 子服务 | WIP | 开启Bot服务| |`NativeOBS` | 子服务 | WIP | 开启NativeOBS服务| -|`Deprecated:Web` | 子服务 | 稳定 | Deprecated(关闭) OldWeb服务| +|`Docs` | 子服务 | WIP | 开启开发者文档服务| +|`Frontend:Web` | 子服务 | 稳定 | 开启独立前端服务| +|`Frontend:EmbedWeb` | 子服务 | 稳定 | 开启内嵌于后端Web API服务中的前端服务| +|`Deprecated:Web` | 子服务 | 稳定 | 开启旧的Web服务| |`Gorm` | 数据库 | 稳定(默认) | 使用[gorm](https://github.com/go-gorm/gorm)作为数据库的ORM,默认使用 `Gorm` + `MySQL`组合| |`Sqlx`| 数据库 | WIP | 使用[sqlx](https://github.com/jmoiron/sqlx)作为数据库的ORM| |`MySQL`| 数据库 | 稳定(默认) | 使用MySQL作为数据库| @@ -77,7 +79,7 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r |`OSS:Retention` | 对象存储 | 内测 |基于对象存储系统的对象过期自动删除特性实现 先创建临时对象再持久化的功能| |`OSS:TempDir` | 对象存储 | 内测 |基于对象存储系统的对象拷贝/移动特性实现 先创建临时对象再持久化的功能| |`Redis` | 缓存 | 稳定 | Redis缓存功能 | -|`SimpleCacheIndex` | 缓存 | 稳定 | 提供简单的 广场推文列表 的缓存功能 | +|`SimpleCacheIndex` | 缓存 | Deprecated | 提供简单的 广场推文列表 的缓存功能 | |`BigCacheIndex` | 缓存 | 稳定(推荐) | 使用[BigCache](https://github.com/allegro/bigcache)缓存 广场推文列表,缓存每个用户每一页,简单做到千人千面 | |`Zinc` | 搜索 | 稳定(推荐) | 基于[Zinc](https://github.com/zinclabs/zinc)搜索引擎提供推文搜索服务 | |`Meili` | 搜索 | 稳定(推荐) | 基于[Meilisearch](https://github.com/meilisearch/meilisearch)搜索引擎提供推文搜索服务 | @@ -85,11 +87,64 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r |`LoggerFile` | 日志 | 稳定 | 使用文件写日志 | |`LoggerZinc` | 日志 | 稳定(推荐) | 使用[Zinc](https://github.com/zinclabs/zinc)写日志 | |`LoggerMeili` | 日志 | 内测 | 使用[Meilisearch](https://github.com/meilisearch/meilisearch)写日志 | -|`Friendship` | 关系模式 | 内测(默认) | 弱关系好友模式,类似微信朋友圈 | +|`Friendship` | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | |`Followship` | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | +|`Lightship` | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | |`Alipay` | 支付 | 稳定 | 开启基于[支付宝开放平台](https://open.alipay.com/)的钱包功能 | |`Sms` | 短信验证 | 稳定 | 开启短信验证码功能,用于手机绑定验证手机是否注册者的;功能如果没有开启,手机绑定时任意短信验证码都可以绑定手机 | |`Docs:OpenAPI` | 开发文档 | 稳定 | 开启openapi文档功能,提供web api文档说明(visit http://127.0.0.1:8008/docs/openapi) | |`PhoneBind` | 其他 | 稳定 | 手机绑定功能 | > 功能项状态详情参考 [features-status](../../../features-status.md). + +### 按需添加自定义配置 +paopao-ce提供了按需添加配置的机制,paopao-ce在internal/conf/config.yaml中内嵌了一份完整的默认配置,内嵌的默认配置与自定义配置config.yaml在paopao-ce启动时自动进行了配置项合并,自定义的配置(./config.yaml或者./custom/config.yaml)中只需要自定义 运行时 声明Features 的相应配置即可。比如只运行Web 子服务,config.yaml可以只包含如下配置(其他配置使用默认值): +```yaml +# file: config.yaml + +Features: + Default: ["Sqlite3", "Zinc", "LocalOSS", "BigCacheIndex", "Web"] +WebServer: # Web服务 + HttpIp: 0.0.0.0 + HttpPort: 8010 + ReadTimeout: 60 + WriteTimeout: 60 +LocalOSS: # 本地文件OSS存储配置 + SavePath: data/paopao-ce/oss + Secure: True + Bucket: paopao + Domain: api.paopao.info +Zinc: # Zinc搜索配置 + Host: 127.0.0.1:4080 + Index: paopao-data + User: admin + Password: admin + Secure: False +``` +部署paopao-ce实例时,可以按需自定义配置运行时所需的配置项, 多个实例部署可以使用不同配置项组合,运行不同的子服务,再通过一个统一的 Proxy(Nginx或云端proxy) 将请求桥接到具体的paopao-ce部署实例。 + +### 多服务同端口运行 +paopao-ce提供的机制是各个子服务(gRPC/RESTful API服务)可以在一个独立端口提供业务服务,也可以多个同类型的子服务(RESTful API服务 或者 gRPC 服务)共享同一个端口提供服务,比如 Web/Admin/Bot 三个子服务在8010端口提供服务, 只需要配置三个子服务的HttpIp/HttpPort为相同值即可: +```yaml +# file: config.yaml + +Features: + Default: ["Sqlite3", "Zinc", "LocalOSS", "BigCacheIndex", "Web", "Admin", "Bot"] +WebServer: # Web服务 + HttpIp: 0.0.0.0 + HttpPort: 8010 + ReadTimeout: 60 + WriteTimeout: 60 +AdminServer: # Admin后台运维服务 + HttpIp: 0.0.0.0 + HttpPort: 8010 + ReadTimeout: 60 + WriteTimeout: 60 +BotServer: # Bot服务 + HttpIp: 0.0.0.0 + HttpPort: 8010 + ReadTimeout: 60 + WriteTimeout: 60 + +... +``` diff --git a/features-status.md b/features-status.md index c2ac559b..e2ece4f6 100644 --- a/features-status.md +++ b/features-status.md @@ -134,7 +134,7 @@ * [x] 业务逻辑实现 #### 关系模式: -* `Friendship` 弱关系好友模式,类似微信朋友圈(目前状态: 开发阶段); +* `Friendship` 弱关系好友模式,类似微信朋友圈(目前状态: 内测); * [x] 提按文档 * [x] 接口定义 * [x] 业务逻辑实现 @@ -142,7 +142,7 @@ * [ ] 提按文档 * [ ] 接口定义 * [ ] 业务逻辑实现 -* `Lightship` 开放模式,所有推文都公开可见(目前状态: WIP); +* `Lightship` 开放模式,所有推文都公开可见(目前状态: 内测、默认); * [x] 提按文档 * [x] 接口定义 * [x] 业务逻辑实现 From ca677bf7ce44c5d16ac05a1c29d153500fd32ce3 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Fri, 13 Jan 2023 12:51:14 +0800 Subject: [PATCH 2/6] add internal/timeline internal/xds module as stub help internal system for tweets message flow --- internal/timeline/README.md | 2 ++ internal/timeline/timeline.go | 5 +++++ internal/xds/README.md | 2 ++ internal/xds/xds.go | 5 +++++ 4 files changed, 14 insertions(+) create mode 100644 internal/timeline/README.md create mode 100644 internal/timeline/timeline.go create mode 100644 internal/xds/README.md create mode 100644 internal/xds/xds.go diff --git a/internal/timeline/README.md b/internal/timeline/README.md new file mode 100644 index 00000000..fd1f55fe --- /dev/null +++ b/internal/timeline/README.md @@ -0,0 +1,2 @@ +### Timeline(Timeline Message Flow System +广场时间线消息流系统模块, 目前还没实现,先占个位置~ diff --git a/internal/timeline/timeline.go b/internal/timeline/timeline.go new file mode 100644 index 00000000..13663547 --- /dev/null +++ b/internal/timeline/timeline.go @@ -0,0 +1,5 @@ +// Copyright 2023 ROC. All rights reserved. +// Use of this source code is governed by a MIT style +// license that can be found in the LICENSE file. + +package timeline diff --git a/internal/xds/README.md b/internal/xds/README.md new file mode 100644 index 00000000..8ea9592e --- /dev/null +++ b/internal/xds/README.md @@ -0,0 +1,2 @@ +### xDS(Recommended Discovery System) +推荐发现系统模块,目前还没实现,先占个位置~ diff --git a/internal/xds/xds.go b/internal/xds/xds.go new file mode 100644 index 00000000..3f0f20b5 --- /dev/null +++ b/internal/xds/xds.go @@ -0,0 +1,5 @@ +// Copyright 2023 ROC. All rights reserved. +// Use of this source code is governed by a MIT style +// license that can be found in the LICENSE file. + +package xds From a43245377cd17017da5716d2e5147de81777b829 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Fri, 13 Jan 2023 14:14:24 +0800 Subject: [PATCH 3/6] update docs/proposal documents --- README.md | 16 +++++++++++++--- .../001-关于paopao-ce的设计定位.md | 9 ++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 271b115d..083066b9 100644 --- a/README.md +++ b/README.md @@ -246,8 +246,18 @@ docker compose up --build > 注意:默认提供的 docker-compose.yaml 初衷是搭建本机开发调试环境,如果需要产品部署供外网访问,请自行调优配置参数或使用其他方式部署。 -### API 文档 -* `config.yaml` 添加 `Docs:OpenAPI` 功能项: +### 开发文档 +#### Docs文档说明 +`docs`目录提供了各种开发文档,包括: +* [deploy](docs/deploy/) - paopao-ce部署文档 +* [discuss](docs/discuss/) - 开发相关的问题交流论述文档 +* [openapi](docs/openapi/) - paopao-ce后端导出API文档 +* [proposal](docs/proposal/) - paopao-ce功能特性提按文档 +> 比如,关于paopao-ce的设计定位,可以参考[docs/proposal/001-关于paopao-ce的设计定位](docs/proposal/001-关于paopao-ce的设计定位.md),简要阐述了paopao-ce是如何定位自身的。 + +#### API文档 +开发者可以在本地开启`Docs`服务,浏览后端导出的API服务接口文档。 +* `config.yaml` 添加 `Docs` 功能项: ```yaml ... Features: @@ -260,7 +270,7 @@ Features: ```sh make run TAGS='docs' -# visit http://127.0.0.1:8008/docs/openapi +# visit http://127.0.0.1:8011/docs/openapi ``` ### 配置说明 diff --git a/docs/proposal/001-关于paopao-ce的设计定位.md b/docs/proposal/001-关于paopao-ce的设计定位.md index 8d11911f..9176f8b5 100644 --- a/docs/proposal/001-关于paopao-ce的设计定位.md +++ b/docs/proposal/001-关于paopao-ce的设计定位.md @@ -1,6 +1,6 @@ | 编号 | 作者 | 发表时间 | 变更时间 | 版本 | 状态 | | ----- | ----- | ----- | ----- | ----- | ----- | -| 001| 北野 | 2022-11-04 | 2022-12-19 | v1.0 | 提议 | +| 001| 北野 | 2022-11-04 | 2023-01-13 | v1.1 | 提议 | ## 概述 paopao-ce是一个清新文艺的微社区,提供类似Twiter/微博的推文分享服务。paopao-ce的运营形态有点类似WordPress,只不过WordPress是使用PHP语言开发的博客平台,提供的是博客服务,而paopao-ce提供的是类似Twitter的推文分享服务。paopao-ce 让 **个人或小组织** 可以快速、方便的部署一个提供**推文分享服务**的小站点,在有限范围内形成一个友善的社交小圈子微社区。 @@ -37,6 +37,10 @@ paopao-ce目前支持Redis作为缓存存储引擎提供缓存服务,请参考 paopao-ce在代码实现上采用 **单体架构模式、分层设计、功能模块化**,架构设计上可能略显保守,但是在使用新技术上却非常积极,比如搜索引擎就采用了近来新星[Zinc](https://github.com/zinclabs/zinc) /[Meilisearch](https://github.com/meilisearch/meilisearch),同时也不排斥各种云端服务,包括阿里云、腾讯云、华为云的对象存储服务、关系数据库服务等。paopao-ce始终秉持着 **包容并蓄、能用就上、去繁就简** 的架构思维,努力打造一个能 **稳定运行、代码清晰、功能可扩展** 的开源项目。 ![](.assets/006-01.png) +## 从技术探索角度思考 +IT世界是非常精彩的,新技术层出不穷,在各自领域大展身手、大放异彩。作为开发者的我们首要目标当然是以产品为核心,不断的优化服务体验,也不吝啬于新技术的采用以达到更好的产品服务质量。新技术或者某种技术本身,是需要一个环境来支撑其运行、演进,脱离实际环境的技术演进,犹如纸上谈兵,实际效果是存疑的。开发者在研究一项(新)技术时,首先当然是知其然,了解其功能特性、适用场景;再而知其所以然,深入了解其设计原理、知悉其存在的局限等;进而知其不以为然,通过实践,找到技术的最适合场景、知悉其不适合的场景,或与其他技术配合使用,扬长避短,发挥各自的最佳效力以解决具体的事务。这些都是技术探索的通用流程,可以看出,一项技术的探索从陌生到一知半解再到了如指掌,需要一个漫长的过程以及一个技术探索的环境。有些技术的探索,确实需要一个具体的环境,才能更好的研究与实践,比如OBS、Search、Recommended discovery亦或各种云服务的使用、k8s的服务部署等,都需要一个具体的环境来进行技术探索。可以说以需求驱动的技术探索,也更能推进技术本身的不断演进。 +说这么多,这就引出了本节所要说的一个观点了,paopao-ce不仅仅是作为一个提供推文分享服务的产品,也能作为一些(新)技术的探索环境。比如OBS(对象存储服务)、推文搜索服务、推文/用户推荐发现服务、广场推文消息流服务等,都可以作为相应技术领域的技术探索环境,从实践中去检验技术的有效性,更好的推进技术的学习、实践、演进。作为开发者/学习者,也能在理论学习与实际环境中实践(新)技术找到一个平衡,更好、更快的掌握一项(新)技术,这也是paopao-ce的另一价值所在。**路漫漫其修远兮,吾将上下而求索**,用我们开发者的话来说,带着 **上下文(环境/需求)** 去探索(新)技术,或能事半功倍、得心应手。 + ## 从人文角度思考 现在的互联网世界已经非常精彩,各种社交媒体平台琳琅满目,使用体验也非常友好。每个社交平台都有自己的运营方式,都有自己的核心用户群体,也有自己的产品灵魂,都在不断的进行生态演进。比如Twitter、微博都已经从最初的推文分享服务演进到一个成熟的传媒平台,注册用户非常庞大,日均访问PV也是一个惊人的数字,这就注定了平台的运营思维是多维度考量均衡的结果,只能做到让用户群体的大多数人用户体验友好,并不能满足所有人的需求。大平台有大平台的运营模式,小站点有小站点的维系空间。对于类似Twitter这样的推文分享服务,paopao-ce提供一种小站点部署模式,采用类似WordPress的运维模式,让 **个人/小组织** 能快速、便捷的拥有一个提供推文分享服务的小站点,以填补那些在大平台下难以享受到的用户体验,享受小圈子内的自由空间。 @@ -71,3 +75,6 @@ paopao-ce在代码实现上采用 **单体架构模式、分层设计、功能 #### v1.0(2022-12-19) - 北野 * 补充部分内容 + +#### v1.1(2023-01-13) - 北野 +* 补充 从技术探索角度思考 描述 From 209acdd0afa86a261216db03191f7fe8236d906a Mon Sep 17 00:00:00 2001 From: Michael Li Date: Fri, 13 Jan 2023 14:48:12 +0800 Subject: [PATCH 4/6] update README.md --- README.md | 6 +++--- docs/deploy/core/001-配置文件说明.md | 6 +++--- docs/proposal/001-关于paopao-ce的设计定位.md | 2 +- features-status.md | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 083066b9..3835bd88 100644 --- a/README.md +++ b/README.md @@ -363,9 +363,9 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r |`LoggerFile` | 日志 | 稳定 | 使用文件写日志 | |`LoggerZinc` | 日志 | 稳定(推荐) | 使用[Zinc](https://github.com/zinclabs/zinc)写日志 | |`LoggerMeili` | 日志 | 内测 | 使用[Meilisearch](https://github.com/meilisearch/meilisearch)写日志 | -|`Friendship` | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | -|`Followship` | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | -|`Lightship` | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | +|[`Friendship`](docs/proposal/002-关于Friendship功能项的设计.md) | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | +|[`Followship`](docs/proposal/003-关于Followship功能项的设计.md) | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | +|[`Lightship`](docs/proposal/011-关于Lightship功能项的设计.md) | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | |`Alipay` | 支付 | 稳定 | 开启基于[支付宝开放平台](https://open.alipay.com/)的钱包功能 | |`Sms` | 短信验证 | 稳定 | 开启短信验证码功能,用于手机绑定验证手机是否注册者的;功能如果没有开启,手机绑定时任意短信验证码都可以绑定手机 | |`Docs:OpenAPI` | 开发文档 | 稳定 | 开启openapi文档功能,提供web api文档说明(visit http://127.0.0.1:8008/docs/openapi) | diff --git a/docs/deploy/core/001-配置文件说明.md b/docs/deploy/core/001-配置文件说明.md index 42bcc9bb..aa3cc526 100644 --- a/docs/deploy/core/001-配置文件说明.md +++ b/docs/deploy/core/001-配置文件说明.md @@ -87,9 +87,9 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r |`LoggerFile` | 日志 | 稳定 | 使用文件写日志 | |`LoggerZinc` | 日志 | 稳定(推荐) | 使用[Zinc](https://github.com/zinclabs/zinc)写日志 | |`LoggerMeili` | 日志 | 内测 | 使用[Meilisearch](https://github.com/meilisearch/meilisearch)写日志 | -|`Friendship` | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | -|`Followship` | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | -|`Lightship` | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | +|[`Friendship`](../../docs/proposal/002-关于Friendship功能项的设计.md) | 关系模式 | 内测 | 弱关系好友模式,类似微信朋友圈 | +|[`Followship`](../../docs/proposal/003-关于Followship功能项的设计.md) | 关系模式 | WIP | 关注者模式,类似Twitter的Follow模式 | +|[`Lightship`](../../docs/proposal/011-关于Lightship功能项的设计.md) | 关系模式 | 内测(默认) | 开放模式,所有推文都公开可见 | |`Alipay` | 支付 | 稳定 | 开启基于[支付宝开放平台](https://open.alipay.com/)的钱包功能 | |`Sms` | 短信验证 | 稳定 | 开启短信验证码功能,用于手机绑定验证手机是否注册者的;功能如果没有开启,手机绑定时任意短信验证码都可以绑定手机 | |`Docs:OpenAPI` | 开发文档 | 稳定 | 开启openapi文档功能,提供web api文档说明(visit http://127.0.0.1:8008/docs/openapi) | diff --git a/docs/proposal/001-关于paopao-ce的设计定位.md b/docs/proposal/001-关于paopao-ce的设计定位.md index 9176f8b5..005feb0d 100644 --- a/docs/proposal/001-关于paopao-ce的设计定位.md +++ b/docs/proposal/001-关于paopao-ce的设计定位.md @@ -38,7 +38,7 @@ paopao-ce在代码实现上采用 **单体架构模式、分层设计、功能 ![](.assets/006-01.png) ## 从技术探索角度思考 -IT世界是非常精彩的,新技术层出不穷,在各自领域大展身手、大放异彩。作为开发者的我们首要目标当然是以产品为核心,不断的优化服务体验,也不吝啬于新技术的采用以达到更好的产品服务质量。新技术或者某种技术本身,是需要一个环境来支撑其运行、演进,脱离实际环境的技术演进,犹如纸上谈兵,实际效果是存疑的。开发者在研究一项(新)技术时,首先当然是知其然,了解其功能特性、适用场景;再而知其所以然,深入了解其设计原理、知悉其存在的局限等;进而知其不以为然,通过实践,找到技术的最适合场景、知悉其不适合的场景,或与其他技术配合使用,扬长避短,发挥各自的最佳效力以解决具体的事务。这些都是技术探索的通用流程,可以看出,一项技术的探索从陌生到一知半解再到了如指掌,需要一个漫长的过程以及一个技术探索的环境。有些技术的探索,确实需要一个具体的环境,才能更好的研究与实践,比如OBS、Search、Recommended discovery亦或各种云服务的使用、k8s的服务部署等,都需要一个具体的环境来进行技术探索。可以说以需求驱动的技术探索,也更能推进技术本身的不断演进。 +IT世界是非常激动人心的,新技术层出不穷,在各自领域大展身手、大放异彩。作为开发者的我们首要目标当然是以产品为核心,不断的优化服务体验,也不吝啬于新技术的采用以达到更好的产品服务质量。新技术或者某种技术本身,是需要一个环境来支撑其运行、演进,脱离实际环境的技术演进,犹如纸上谈兵,实际效果是存疑的。开发者在研究一项(新)技术时,首先当然是知其然,了解其功能特性、适用场景;再而知其所以然,深入了解其设计原理、知悉其存在的局限等;进而知其不以为然,通过实践,找到技术的最适合场景、知悉其不适合的场景,或与其他技术配合使用,扬长避短,发挥各自的最佳效力以解决具体的事务。这些都是技术探索的通用流程,可以看出,一项技术的探索从陌生到一知半解再到了如指掌,需要一个漫长的过程以及一个技术探索的环境。有些技术的探索,确实需要一个具体的环境,才能更好的研究与实践,比如OBS、Search、Recommended discovery亦或各种云服务的使用、k8s的服务部署等,都需要一个具体的环境来进行技术探索。可以说以需求驱动的技术探索,也更能推进技术本身的不断演进。 说这么多,这就引出了本节所要说的一个观点了,paopao-ce不仅仅是作为一个提供推文分享服务的产品,也能作为一些(新)技术的探索环境。比如OBS(对象存储服务)、推文搜索服务、推文/用户推荐发现服务、广场推文消息流服务等,都可以作为相应技术领域的技术探索环境,从实践中去检验技术的有效性,更好的推进技术的学习、实践、演进。作为开发者/学习者,也能在理论学习与实际环境中实践(新)技术找到一个平衡,更好、更快的掌握一项(新)技术,这也是paopao-ce的另一价值所在。**路漫漫其修远兮,吾将上下而求索**,用我们开发者的话来说,带着 **上下文(环境/需求)** 去探索(新)技术,或能事半功倍、得心应手。 ## 从人文角度思考 diff --git a/features-status.md b/features-status.md index e2ece4f6..a1432069 100644 --- a/features-status.md +++ b/features-status.md @@ -135,15 +135,15 @@ #### 关系模式: * `Friendship` 弱关系好友模式,类似微信朋友圈(目前状态: 内测); - * [x] 提按文档 + * [x] [提按文档](docs/proposal/002-关于Friendship功能项的设计.md) * [x] 接口定义 * [x] 业务逻辑实现 * `Followship` 关注者模式,类似Twitter的Follow模式(目前状态: WIP); - * [ ] 提按文档 + * [ ] [提按文档](docs/proposal/003-关于Followship功能项的设计.md) * [ ] 接口定义 * [ ] 业务逻辑实现 * `Lightship` 开放模式,所有推文都公开可见(目前状态: 内测、默认); - * [x] 提按文档 + * [x] [提按文档](docs/proposal/011-关于Lightship功能项的设计.md) * [x] 接口定义 * [x] 业务逻辑实现 From b52e70a98c781b18ea00613cb096c55d62ecc68b Mon Sep 17 00:00:00 2001 From: Michael Li Date: Fri, 13 Jan 2023 15:56:12 +0800 Subject: [PATCH 5/6] add i18n feature proposal --- .../006-关于paopao-ce的结构设计.md | 2 ++ .../011-关于Lightship功能项的设计.md | 1 + ...端运行时配置获取机制的设计.md | 28 +++++++++++++++++++ ...aopao-ce前后端国际化i18n的设计.md | 21 ++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 docs/proposal/012-优化前端运行时配置获取机制的设计.md create mode 100644 docs/proposal/013-优化paopao-ce前后端国际化i18n的设计.md diff --git a/docs/proposal/006-关于paopao-ce的结构设计.md b/docs/proposal/006-关于paopao-ce的结构设计.md index 3f3c8ed8..61ee3b54 100644 --- a/docs/proposal/006-关于paopao-ce的结构设计.md +++ b/docs/proposal/006-关于paopao-ce的结构设计.md @@ -63,7 +63,9 @@ RESTful服务与gRPC服务各自有擅长的场景,在合适的场景使用最 ### 更新记录 #### v0.0(2022-11-23) - 北野 * 初始文档, 先占个位置 + #### v0.1(2022-12-23) - 北野 * 添加部分内容 + #### v1.0(2023-01-01) - 北野 * 添加部分内容 diff --git a/docs/proposal/011-关于Lightship功能项的设计.md b/docs/proposal/011-关于Lightship功能项的设计.md index ac6c2ee6..b7426d6d 100644 --- a/docs/proposal/011-关于Lightship功能项的设计.md +++ b/docs/proposal/011-关于Lightship功能项的设计.md @@ -42,5 +42,6 @@ Features: ### 更新记录 #### v1.0(2022-12-14) - 北野 * 初始文档 + #### v1.1(2022-01-09) - 北野 * 添加参考实现PR信息 diff --git a/docs/proposal/012-优化前端运行时配置获取机制的设计.md b/docs/proposal/012-优化前端运行时配置获取机制的设计.md new file mode 100644 index 00000000..cf60291f --- /dev/null +++ b/docs/proposal/012-优化前端运行时配置获取机制的设计.md @@ -0,0 +1,28 @@ +| 编号 | 作者 | 发表时间 | 变更时间 | 版本 | 状态 | +| ----- | ----- | ----- | ----- | ----- | ----- | +| 012| 北野 | 2023-01-13 | 2023-01-13 | v0.0 | 提议 | + +### 概述 +目前的Web前端运行时配置是通过编译时配置[.env](../../web/.env)进行静态配置,虽然能满足简单的功能需求,但是非常不灵活。本提按提议一种由paopao-ce后端服务控制的前端运行时配置获取机制,让前端更灵活的依据运行时配置提供产品服务。 + +### 场景 +前端依据paopao-ce后端服务提供的运行时配置按需提供产品服务,也可以扩展到按用户喜好自定义的配置提供产品服务,比如用户设置的语言、Theme、功能特性等。 + +### 需求 +* 前端依据运行时配置提供业务服务 - 前端 +* 前端在启动时从paopao-ce后端服务获取运行时配置 - 前端/后端 +* 用户可以自定义前端运行时配置,如语言、Theme、功能特性等 - 前端/后端 +* 用户自定义的前端运行时配置可以 创建/更新 - 前端/后端 +* 后端服务提供默认前端运行时配置 - 后端 + +### 方案 +TODO; + +### 疑问 + +1. 为什么要提供这种机制? +TODO; + +### 更新记录 +#### v0.0(2023-01-13) - 北野 +* 初始文档, 先占个位置 diff --git a/docs/proposal/013-优化paopao-ce前后端国际化i18n的设计.md b/docs/proposal/013-优化paopao-ce前后端国际化i18n的设计.md new file mode 100644 index 00000000..570634c0 --- /dev/null +++ b/docs/proposal/013-优化paopao-ce前后端国际化i18n的设计.md @@ -0,0 +1,21 @@ +| 编号 | 作者 | 发表时间 | 变更时间 | 版本 | 状态 | +| ----- | ----- | ----- | ----- | ----- | ----- | +| 013| 北野 | 2023-01-13 | 2023-01-13 | v0.0 | 提议 | + +### 概述 +目前paopao-ce前端/后端 都使用中文提供业务服务,暂时还没有提供国际化i18n机制提供国际化的业务服务。本提按提议提过在前端/后端中引入i8n机制,以提供国际化业务服务。 本提按建立在[012-优化前端运行时配置获取机制的设计](012-优化前端运行时配置获取机制的设计.md)基础之上。 + +### 需求 +* 提供i18n机制以实现业务服务的国际化 - 前端/后端 + +### 方案 +TODO; + +### 疑问 + +1. 为什么要提供这种机制? +TODO; + +### 更新记录 +#### v0.0(2023-01-13) - 北野 +* 初始文档, 先占个位置 From c1f497696c160aebf12381ae3216e6bdb56ef787 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Tue, 17 Jan 2023 20:21:20 +0800 Subject: [PATCH 6/6] upgrade github.com/alimy/mir/v3 => v3.0.1 --- Makefile | 2 +- auto/api/m/v1/user.go | 2 ++ auto/api/r/v1/user.go | 2 ++ auto/api/s/v1/user.go | 2 ++ auto/api/v1/admin.go | 2 ++ auto/api/v1/alipay_priv.go | 2 ++ auto/api/v1/alipay_pub.go | 2 ++ auto/api/v1/core.go | 2 ++ auto/api/v1/followship.go | 2 ++ auto/api/v1/friendship.go | 2 ++ auto/api/v1/loose.go | 2 ++ auto/api/v1/priv.go | 2 ++ auto/api/v1/pub.go | 2 ++ auto/api/x/v1/user.go | 2 ++ go.mod | 2 +- go.sum | 4 ++-- mirc/{main.go => gen.go} | 5 ++++- 17 files changed, 34 insertions(+), 5 deletions(-) rename mirc/{main.go => gen.go} (91%) diff --git a/Makefile b/Makefile index 3104045c..948185a3 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ generate: gen-mir gen-grpc .PHONY: gen-mir gen-mir: - @go generate mirc/main.go + @go generate mirc/gen.go @go fmt ./auto/api/... .PHONY: gen-grpc diff --git a/auto/api/m/v1/user.go b/auto/api/m/v1/user.go index 431343e7..58c6fcae 100644 --- a/auto/api/m/v1/user.go +++ b/auto/api/m/v1/user.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/r/v1/user.go b/auto/api/r/v1/user.go index 1850b157..8f1a81a0 100644 --- a/auto/api/r/v1/user.go +++ b/auto/api/r/v1/user.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/s/v1/user.go b/auto/api/s/v1/user.go index ef2c855b..6b1de404 100644 --- a/auto/api/s/v1/user.go +++ b/auto/api/s/v1/user.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/admin.go b/auto/api/v1/admin.go index 6872d123..277993fa 100644 --- a/auto/api/v1/admin.go +++ b/auto/api/v1/admin.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/alipay_priv.go b/auto/api/v1/alipay_priv.go index 4cb3fe0a..60347ef6 100644 --- a/auto/api/v1/alipay_priv.go +++ b/auto/api/v1/alipay_priv.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/alipay_pub.go b/auto/api/v1/alipay_pub.go index 3119119e..ebfee808 100644 --- a/auto/api/v1/alipay_pub.go +++ b/auto/api/v1/alipay_pub.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/core.go b/auto/api/v1/core.go index 8e633c53..c29c9140 100644 --- a/auto/api/v1/core.go +++ b/auto/api/v1/core.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/followship.go b/auto/api/v1/followship.go index 7e83efc9..cd87c7ad 100644 --- a/auto/api/v1/followship.go +++ b/auto/api/v1/followship.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/friendship.go b/auto/api/v1/friendship.go index fbec2417..47f50632 100644 --- a/auto/api/v1/friendship.go +++ b/auto/api/v1/friendship.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/loose.go b/auto/api/v1/loose.go index 7d4d1046..da634068 100644 --- a/auto/api/v1/loose.go +++ b/auto/api/v1/loose.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/priv.go b/auto/api/v1/priv.go index 42c88ade..9e6f0b04 100644 --- a/auto/api/v1/priv.go +++ b/auto/api/v1/priv.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/v1/pub.go b/auto/api/v1/pub.go index 7fe417e7..8b7b7845 100644 --- a/auto/api/v1/pub.go +++ b/auto/api/v1/pub.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/auto/api/x/v1/user.go b/auto/api/x/v1/user.go index 89a3b086..fa8a47c5 100644 --- a/auto/api/x/v1/user.go +++ b/auto/api/x/v1/user.go @@ -1,4 +1,6 @@ // Code generated by go-mir. DO NOT EDIT. +// versions: +// - mir v3.0.1 package v1 diff --git a/go.mod b/go.mod index 4be05e53..d8d4272e 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Masterminds/semver/v3 v3.1.1 github.com/afocus/captcha v0.0.0-20191010092841-4bd1f21c8868 github.com/alimy/cfg v0.3.0 - github.com/alimy/mir/v3 v3.0.0 + github.com/alimy/mir/v3 v3.0.1 github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible github.com/allegro/bigcache/v3 v3.0.2 github.com/bytedance/sonic v1.5.0 diff --git a/go.sum b/go.sum index f009c99f..62851846 100644 --- a/go.sum +++ b/go.sum @@ -147,8 +147,8 @@ github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:C github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/alimy/cfg v0.3.0 h1:9xgA0QWVCPSq9fFNRcYahVCAX22IL9ts2wrTQPfAStY= github.com/alimy/cfg v0.3.0/go.mod h1:rOxbasTH2srl6StAjNF5Vyi8bfrdkl3fLGmOYtSw81c= -github.com/alimy/mir/v3 v3.0.0 h1:bUcT+SLs/BYHIuHzTCbYnxnEwbYDSCDJULU5a1YZDes= -github.com/alimy/mir/v3 v3.0.0/go.mod h1:ybhT2ijOiDn0lLwWzIY6vXdv+uzZrctS7VFfczcXBWU= +github.com/alimy/mir/v3 v3.0.1 h1:70J/KMiEUDjpXfE2myqJ9aw408rshHdTKcN5yH74xqM= +github.com/alimy/mir/v3 v3.0.1/go.mod h1:ybhT2ijOiDn0lLwWzIY6vXdv+uzZrctS7VFfczcXBWU= github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible h1:9gWa46nstkJ9miBReJcN8Gq34cBFbzSpQZVVT9N09TM= github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= diff --git a/mirc/main.go b/mirc/gen.go similarity index 91% rename from mirc/main.go rename to mirc/gen.go index 1ec56e76..15574b06 100644 --- a/mirc/main.go +++ b/mirc/gen.go @@ -2,6 +2,9 @@ // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file. +//go:build generate +// +build generate + package main import ( @@ -17,7 +20,7 @@ import ( _ "github.com/rocboss/paopao-ce/mirc/web/v1" ) -//go:generate go run main.go +//go:generate go run $GOFILE func main() { log.Println("generate code start") opts := Options{