SSE What Why How

如何使用 GitHub 和 Docker 进行自动部署

前置知识 会简单用一下 docker 以及 docker-compose 知道 github actions 以及会用 以及一点点 linux 操作的基础,可以 这里 了解下 背景 作为一个前端er,大多数场景下交付的都是纯静态的东西(html, js, css),可能对于服务部署自动化这块不是特别敏感,随便找个环境 build 下,拿到 dist 文件夹丢到服务器上就完事了。再高级一点的,可能有用到各种 SSX 的,或者还有点 serverless 的,还有个 vercel 这个特别好用的平台供我们使用,简直太强大,纯前端的常规操作,或者配合一些调用第三方数据接口的操作,vercel 一把梭,最多加个 serverless 函数转发下避免跨域之类的问题。比如 ChatGPT 的各种套壳,部署在 vercel 上占大多数。 但是,如果你是一个后端er,或者是一个全栈,那么你可能会有一些服务端的东西需要部署,比如一些数据库,中间件等,这些似乎在 vercel 上就不能直接搞定了,虽然他们目前也有在计划 Storage 这个东西,尤其对于版本帝的 nodejs 应用来说,可能不用项目需要的基础环境不一样,按照常规的做法可能需要不同的服务器去做这种环境隔离的事情了。其实对于预算充足的来说,这都不是问题,那么现在要介绍的一种就是如何在极限环境下,去做这种多应用部署,方便自己实验。 介绍 对于文中实验场景,唯一可能需要付钱的部份是一台低配的服务器,毕竟 github 的 action 不能和本地通信?(如果你有固定 ip 其实也可以)比如本文中使用的是一台腾讯云上的【标准型SA2 - 2核 2G】的服务器,买了三年千把块,算是很便宜了,装的系统是【 TencentOS Server 3.1 (TK4)】,默认自带了 docker,还做了一些镜像源上的配置,其实自己去安装个也很方便,记得改下镜像源。 需要准备的所有东西包括: 一台云服务器 一个镜像仓库 一个 github 仓库 为什么需要一个镜像仓库,目前很多基础仓库其实都在公开的镜像仓库上,比如 dockerhub,但是对于自己应用的镜像制品,不适合放到公开仓库里。网上也有很多搭建的教程比如 How To Set Up a Private Docker Registry on Ubuntu 22....

六月 8, 2023 · 3 分钟 · genffy

📒是什么一直束缚你在社会底层?

家庭束缚 父母社会经验的可参考性 对子女爱的定位(天然的债权人 ) 家庭地位平等独立的人 How 解除思想束缚 平等 走向分离 解除现实束缚 靠自己,摒弃「等靠要」 寻找指路人 情绪束缚 生活中的 10%,是由发生在你身上的事情组成,而另外的 90%,则是由你对所发生的事情,如何反应决定。— 费斯汀格 问自己: 这是你的想法和情绪,还是事实? name desc 不自信 客观真实世界 悲观 主观精神世界 敏感 主观精神世界 自我否定 主观精神世界 抱怨 客观精神世界 不会拒绝 客观精神世界 长期内耗 主观精神世界 在意别人的眼光 主观精神世界 How 分清哪些是事实,哪些是情绪 内观 第三视角观看,不要思考 建立正反馈机制 做好一件事 🎧 先做成一件事情,是打开世界大门的钥匙 经济束缚 基本的经济运行规律 机会成本 通货膨胀 📺 经济机器是怎样运行的 (时长30分钟) Ray Dalio 什么是投资 两要素 风险 回报率 How 第一阶段 了解经济的运行规律 把自己当前主要收入来源的工作做好 顶尖 压缩时间 -> 提高效率 好工作 - 行业内最高端的工作 第二阶段...

四月 5, 2023 · 1 分钟 · genffy
SSE What Why How

SSE What Why How

Server-Sent Event 是什么 Server-Sent Event (SSE) 是一种用于在 Web 应用程序中向客户端发送实时事件的技术,它允许服务器向客户端推送数据,而无需客户端不断地轮询服务器。 为了解决什么问题 SSE 是为了解决传统的轮询技术所面临的问题而引入的。在传统的轮询中,客户端不断地向服务器发送请求以检查数据是否可用。这种方式会占用大量带宽和服务器资源,同时也会导致响应延迟。SSE 则完全颠覆了这种方式,客户端只需要向服务器发送一个请求并保持长连接,服务器在有数据更新时即可通过这个连接向客户端推送数据。这种方式减少了不必要的请求和响应,从而提高了性能和效率。SSE 通常用于实时数据更新、通知和聊天应用程序等场景。 – from @chatGPT 数据流规范以及注意事项 数据流规范如下 数据流以 data: 开头,表示接下来是数据内容。 数据内容可以是任意文本格式的数据,通常是 JSON 或纯文本。 数据内容必须以 \n\n 结尾,表示这是一个完整的数据块。 可以包含一个或多个事件标识符 (event ID),以 event: 开头。事件标识符可以用于标识服务器发送的数据类型。 可以包含一个或多个注释,以 : 开头。 可以包含一个可选的重试时间 (retry time),以 retry: 开头,表示客户端在连接断开后应该等待多长时间后重试连接。重试时间必须是以毫秒为单位的整数。 – from @chatGPT 注意事项 当不使用 HTTP/2 时,SSE 存在打开连接数的限制,这个限制对于打开多个选项卡的情况尤其痛苦,因为每个浏览器都有一个非常低的限制数量 (6)。在 Chrome 和 Firefox 中,这个问题被标记为 “不会修复”。这个限制是针对每个浏览器 + 域名的,这意味着您可以在所有选项卡中打开 6 个 SSE 连接到 www.example1.com,以及另外 6 个 SSE 连接到 www.example2.com(根据 Stackoverflow 的说法)。在使用 HTTP/2 时,最大并发 HTTP 流的数量是服务器和客户端协商的(默认为 100)。 – from MDN...

三月 13, 2023 · 2 分钟 · genffy

为不同的 git repo 配置 ssh key、gitconfig

对不同的邮箱生成不同的 ssh key 生成密钥对 # 设置公司的 ssh-keygen -t rsa -C "zhengfei.li@orgname.com" -f ~/.ssh/gitlab_rsa # 设置默认的,一般都是给 gitlab 用的 ssh-keygen -t rsa -C "genffyl@gmail.com" # 查看生成的密钥对 ls -la ~/.ssh # -rw------- 1 genffy staff 2610 Feb 15 17:48 gitlab_rsa # -rw-r--r-- 1 genffy staff 578 Feb 15 17:48 gitlab_rsa.pub # -rw------- 1 genffy staff 2602 Feb 15 17:51 id_rsa # -rw-r--r-- 1 genffy staff 571 Feb 15 17:51 id_rsa.pub 创建配置文件 vim .ssh/config 填入以下内容...

三月 8, 2023 · 2 分钟 · genffy