Write the Code. Change the World.

10月 27

https://developer.mozilla.org/zh-CN/docs/Web/API/EventSource

https://juejin.cn/post/7206261082452721722

https://juejin.cn/post/7036313010142609421

laravel 使用 EventSource

为什么当今Web应用不都采用WebSocket形式进行数据交互?

之前,写到小程序扫码授权登录后台的功能。在这个场景下,EventSource 真的比较有用。这个对比轮询和 websocket,在当前场景下,的确是有优势的哈。

阅读全文 >>

10月 25

windows 安装 wsl 时,遇到错误: 0x80072ee7,修改下 dns 就可以。

按照上图,将网络的 dns 设置下就可以。

wsl --list --online

wsl --install -d Ubuntu

阅读全文 >>

10月 13

很久很久以前,第三方授权登录就开始流行。比如 qq、微博、github、微信这些。如果有一个大的平台来做这个服务的确是很方便的一个事情。在这些授权后都会有一个回调页面,就是从自己的网页跳转到授权页面,再跳转回来。但是,小程序是没提供这个服务的。但是自己可以构造类似的方式。
整个环节,代码都是由自己控制,可以很灵活的视线需求。仅仅是生成小程序码和扫码登录上小程序是腾讯那边做的。

示例:https://www.zeipan.com/admin

步骤

关键点:这里以 jwt 的认证方式来实现授权登录。

  • 登录页获取并展示生成携带参数的小程序码
  • 登录页面轮询获取登录状态(这里是 token)
  • 手机微信扫描小程序码并授权同意登录

阅读全文 >>

9月 18

不能只让 go 在本地跑,得让 go 编译后,在服务器上跑。

好,那就这么干

  • 编译。
  • 放到服务端,使用守护进程的方式启动它。比如可以用 nohub、supervisord、systemctl 等。
  • 使用 nginx 做重定向或代理,配置域名访问。

编译

先看看我的服务器信息。

lsb_release -a

LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description:    Alibaba Cloud Linux release 3 (Soaring Falcon)
Release:    3
Codename:   SoaringFalcon

hack/config.yaml 中,增加编译的配置信息

  build:
    name:     "main"
    arch:     "amd64"
    system:   "linux"
    mod:      "none"
    packSrc:  "resource,manifest"
    version:  "v1.0.0"
    output:   "./out"
    cgo:      0
    extra:    ""

注意,manifest/config 下的 mysql,redis 等配置,一定要和服务端一致。好了,可以打包了。

gf build

阅读全文 >>

9月 17

安装

https://docs.docker.com/get-docker/

选择对应的系统,进行安装。如果是 mac ,还得区分 intel 芯片和 apple 的。

我自己是 mac ,就选择 mac 的安装。先下载。

传统方式安装 。

  • Double-click Docker.dmg to open the installer, then drag the Docker icon to the Applications folder.
  • Double-click Docker.app in the Applications folder to start Docker.
  • The Docker menu ( whale menu ) displays the Docker Subscription Service Agreement.
  • Select Accept to continue.
  • From the installation window, select either
  • Select Finish

阅读全文 >>

9月 11

返回数据这块已经处理了。现在对跨域进行处理。

# 默认跨域
r.Response.CORSDefault()

允许所有跨域是不安全的。所以得对允许的域名进行跨域,或干脆不跨域。跨域中间件完善。

func (s *sMiddleware) CORS(r *ghttp.Request) {
    corsOptions := r.Response.DefaultCORSOptions()
    corsOptions.AllowDomain = []string{"localhost:5173"}
    corsOptions.AllowOrigin = "http://localhost:5173"
    corsOptions.AllowCredentials = "false"
    corsOptions.AllowMethods = "POST,GET,OPTIONS,PUT,PATCH,DELETE"
    corsOptions.AllowHeaders = "Accept,Content-Type,Referer,User-Agent,Origin,X-Requested-With,X-XSRF-TOKEN,X-CSRF-TOKEN,Authorization,Time"
    r.Response.CORS(corsOptions)

    r.Middleware.Next()
}

这样就够了,主要设置的是允许跨的域,允许跨的请求方式,允许 header 中携带的值以及是否使用 Credentials。主要就这几个的定义。

阅读全文 >>