作者
novlan1
2026.07.08
openspec
2026-09-10
Draft Proposal:起草变更提案
Review & Align:审查与对齐,打磨规范和任务
Implement Tasks:按任务清单实现代码和测试
Archive & Update:归档并更新主规范
Vue3 [Boolean String] Props
2026-09-03
静态无冒号属性:
[Boolean, String](Boolean 在前,开启布尔规则):只要写了属性(disabled/disabled=""),一律解析为true[String, Boolean](String 在前,关闭布尔规则):写disabled=""得到空字符串"",写disabled也得到""
仅限不带
:静态 attribute;:value动态绑定不受这套规则。
对照文档 4 种情况:
<MyComponent disabled />+[Boolean, String]→true<MyComponent disabled="" />+[Boolean, String]→true<MyComponent disabled />+[String, Boolean]→""<MyComponent disabled="" />+[String, Boolean]→""
Stackblitz 中体验链接
Vue 官方文档
服务器启动 rabbitmq
2026-09-03
逐行解析这条 RabbitMQ 的 docker run 命令
docker run -d --name rabbitmq \
-p 127.0.0.1:5672:5672 \
-p 127.0.0.1:15672:15672 \
--restart unless-stopped \
-e RABBITMQ_DEFAULT_USER=blog \
-e RABBITMQ_DEFAULT_PASS=xxx \
rabbitmq:3.13-alpine
\只是换行续行符,作用是把一条长命令拆成多行方便阅读,没有实际功能。
docker run核心命令:创建并启动一个新的docker容器。-d全称--detach,后台守护进程运行。 容器启动后放到后台,不会占用当前ssh终端窗口;不加-d会直接把rabbitmq日志输出在前台,关掉ssh窗口容器就停止。--name rabbitmq给这个容器起名字叫rabbitmq。 后续操作可以直接用名字,不用容器ID:docker stop rabbitmq/docker logs rabbitmq。-p 127.0.0.1:5672:5672端口映射,格式:宿主机地址:宿主机端口:容器内端口
- 容器内部rabbitmqAMQP协议端口是
5672(业务程序收发消息用) 127.0.0.1= 宿主机回环地址 ✅ 含义:只允许这台服务器本机内部程序访问5672端口,外网其他机器完全连不上(正好是你想要的,禁止公网访问)
-p 127.0.0.1:15672:15672同样端口映射:
15672是 RabbitMQ Web管理后台端口- 同样绑定
127.0.0.1,只能在这台服务器内部浏览器/curl访问web后台,外部无法访问
端口映射规则小结:
-p 宿主机IP:宿主机端口:容器端口如果写-p 5672:5672(不写127.0.0.1),会绑定到服务器所有网卡,公网就能访问。
--restart unless-stopped容器重启策略:
- 只要不是手动执行docker stop把容器关掉,其他情况自动重启
- 服务器重启 → 容器自动启动
- rabbitmq进程崩溃异常退出 → 自动重启
- 对比:
always:就算手动stop,宿主机重启也会起来unless-stopped:最适合生产,推荐
-e RABBITMQ_DEFAULT_USER=blog-e=--env设置环境变量。 RabbitMQ启动时自动创建默认管理员账号,用户名:blog
镜像自带的环境变量,容器第一次启动生效,容器建好之后再改这个环境变量没用。
-e RABBITMQ_DEFAULT_PASS=xxx配套环境变量,设置上面blog账号的密码。rabbitmq:3.13-alpine指定使用的镜像:
rabbitmq:镜像名3.13:rabbitmq版本号alpine:基于alpine极简Linux,镜像体积小
⚠️注意:
rabbitmq:3.13-alpine镜像默认不带web管理插件,容器启动成功后,你需要手动进容器执行:bashdocker exec -it rabbitmq sh rabbitmq-plugins enable rabbitmq_management启用web后台,否则
15672网页打不开。
Redis 设置密码和连接
2026-09-03
- 设置密码
- 临时命令(重启失效):
CONFIG SET requirepass "密码";CONFIG REWRITE写入配置持久化 - 永久配置:编辑
/etc/redis.conf,取消注释requirepass 你的密码,重启redis生效
- 客户端连接
redis-cli:每次执行都新建独立连接;进入交互终端可连续执行多条Redis命令redis-cli -a mypassword:连接时直接带密码(长参数--auth;⚠️密码会暴露在进程列表,生产不推荐)- 安全写法:
redis-cli连上后,再执行AUTH mypassword认证
- 后台启动
redis-server --daemonize yes:以守护进程后台启动,Mac、Linux都支持,Windows不支持;仅本次启动生效,不修改配置文件。
优雅停止:
redis-cli shutdown
- 补充:Linux生产一般用
systemctl start redis托管;Mac brew可brew services start redis
容器镜像与 docker compose 知识点
2026-09-02
通用叫法对照表
| 简称 | 全称 | 对应设备 |
|---|---|---|
| amd64 | x86_64 | Intel/AMD CPU(云服务器、Intel Mac、台式机) |
| arm64 | aarch64 | Apple M 系列 Mac、树莓派、ARM 轻量服务器 |
怎么查看自己本机是什么架构
Linux 服务器(SSH 登录执行)
uname -m- 输出
x86_64→ amd64 架构 - 输出
aarch64→ arm64 架构
登录腾讯云容器镜像服务 Docker Registry
docker login ccr.ccs.tencentyun.com --username=100002611076从 Registry 拉取镜像
docker pull ccr.ccs.tencentyun.com/ygw-agent/github-monitor:[tag]其中 [tag] 请根据您需要拉取镜像的具体版本镜像替换,如 latest。更多命令说明,请参看官方文档:docker pull
向 Registry 中推送镜像
docker tag [imageId] ccr.ccs.tencentyun.com/ygw-agent/github-monitor:[tag]docker push ccr.ccs.tencentyun.com/ygw-agent/github-monitor:[tag]其中 [imageId] 请替换为您所要推送的实际镜像ID,或使用本地镜像的完整路径,[tag] 请替换为您期待的镜像版本。更多命令说明,请参看官方文档:docker tag, docker push
制品类型(重点解释)
OCI-Image-v1
1) OCI 是什么
OCI = Open Container Initiative(开放容器规范) 是 Docker、containerd、K8s 共同遵守的国际容器标准,由 Linux 基金会维护。
2) OCI-Image-v1 含义
OCI-Image:代表这是符合 OCI 标准的容器镜像,不是 Docker 私有的老式格式;v1:OCI 镜像规范第 1 版本。
通俗理解
- 早期只有 Docker 自己的镜像格式,兼容性差;
- 后来行业统一制定 OCI 标准,现在所有云厂商(腾讯 TCR、阿里云 ACR、Harbor、Docker Hub)存储的镜像默认都是 OCI 格式;
OCI-Image-v1= 标准通用容器镜像,Docker、K8s、nerdctl、containerd 全都能完美解析运行,没有任何兼容性问题。
补充两种常见制品类型对照
OCI-Image-v1:普通容器镜像(你当前前端 Nginx 镜像)OCI-Index:多架构镜像(同时包含 amd64+arm64,一个 Tag 自动适配不同 CPU)
docker compose up 同时存在 build 和 image 两个字段时的规则
- 优先执行本地构建镜像
- 构建完成后,会给新构建出来的本地镜像打上
image定义的标签 - 最后再用这个标签启动容器
举个直观例子
services:
backend:
image: ccr.ccs.tencentyun.com/xxx/backend:1.0.0
build: ./backend执行 docker compose up -d 完整流程:
- 进入
./backend目录,用 Dockerfile 本地 build 打包 - 自动给刚打包好的镜像打上 tag:
ccr.ccs.tencentyun.com/xxx/backend:1.0.0 - 基于本地这个新镜像启动容器
关键坑点(对你现在场景非常重要)
- 它不会去远程仓库 pull 镜像 哪怕远程 TCR 仓库已经存在
1.0.0版本,compose 也会无视远程,自己在服务器本地重新构建一版,覆盖本地同名镜像标签。 - 版本完全失控 服务器本地构建的镜像 ≠ 你本地推送到 TCR 的镜像,代码、产物不一致,极易出现线上 BUG。
两条命令行为差异
docker compose up -d同时有 build + image → 本地构建,不走远程拉取docker compose pull backend只执行拉取操作时,只会读取 image 地址去拉远程镜像,不会触发 build 构建
最终给你的最佳实践
1) 生产部部署文件(服务器用)
彻底删掉 build: 整行,只保留 image,保证永远远程 TCR 已发布镜像
backend:
image: ${TCR_REGISTRY}/${TCR_NAMESPACE}/github-monitor-backend:${BACKEND_TAG}
# build: ./backend 删掉2) 本地开发调试文件(可以分开)
新建 docker-compose.dev.yml,本地开发用,只在自己电脑运行:
# docker-compose.dev.yml 本地调试专用
backend:
build: ./backend
# image 可以注释掉启动命令:
docker compose -f docker-compose.dev.yml up --build一句话总结:
- 线上部署只留 image,删掉 build;本地调试单独配置带 build 的 compose 文件。
最大似然估计(MLE)流程
2026-09-02
先人为选定模型服从的概率分布(伯努利 / 高斯 / 多项式 / 混合高斯等);
写出该分布的概率表达式,里面带待求参数 w,\mu,\sigma,\alpha 等;
利用已知训练样本,构造「样本联合发生概率=似然函数」;
求一组参数,让这批真实训练数据出现的概率最大,这组参数就是最优解。
怎么看docker是否已经登录
2026-09-02
方式:查看凭据配置文件。docker 登录信息保存在配置文件,Linux/macOS:
cat ~/.docker/config.json- 文件内有
auth字段,说明已经登录过对应仓库; - 如果只有
credsStore(凭据管理器),代表密码交给系统保管,不能直接看到明文 token,但说明执行过 login。
Bash 必知
2026-09-02
看多少核
nproc 全称:number of processors 作用:输出当前系统可用的逻辑 CPU 核心数(云主机里直接对应你买的 2 核配额)
nproc
# 正常你这台机器会直接输出 2查 IP
内网 IP(云服务器内网地址,主机内部网卡地址)
# 最简简写(推荐,主流系统都自带)
ip a
# 或者直接干净输出所有内网ip
hostname -I云厂商控制台显示的内网 IP,就和这里的
inet后面地址对上
✅ 2. 公网 IP(对外的 IP,别人访问你服务器用的,重点!)
需要服务器能联网:
curl ifconfig.me
# 备选(ifconfig.me访问不通时用)
curl shturl.cc/yb这个结果就是云厂商分配给你这台机器的公网 IP,和控制台里的公网 IP 核对
新服务器
2026-09-02
- 安装 git、nginx、docker
- git 公钥填到网站上
- 部署
koa-blog-end/packages/bump-go,部署方式cd deploy; ./deploy.sh
image-manager 服务部署
- 安装 node、nvm、pnpm、pm2
- 迁移 mysql 数据
- 部署
koa-blog-end/packages/server,部署方式pnpm i; cd deploy; ./deploy.sh --restart
前端部署
- 本地
cd packages/web; npm run build; npm run deploy
login-notify 服务部署
cd koa-blog-end/packages/server; pm2 start ecosystem.config.js --only login-notify
pm2 startup 和 pm2 save
# 第一步:先把你的项目 pm2 start 启动好
pm2 start app.js --name api
# 第二步:pm2 startup(生成开机服务,会输出sudo命令,复制执行)
pm2 startup
# 复制输出的sudo xxx那一条执行!
# 第三步:保存当前运行的项目列表
pm2 save后续如果你新增 / 删除 / 重启了项目,一定要重新执行 pm2 save,不然重启服务器不会更新
git 安装
生成公钥
ssh-keygen -t ed25519 -C "xxx@qq.com"测试连通
ssh -T git@github.comdocker 安装
- 安装yum工具
yum install -y yum-utils- 添加docker官方yum源(国内用阿里云镜像源)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo- 安装docker社区版(包含 docker、docker‑cli、buildx)
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin- 启动docker并开机自启
systemctl enable --now docker- 验证是否装好
docker -vStep Tree Step Data
2026-09-02
[decryptWxData result] {
stepInfoList: [
{ timestamp: 1785254400, step: 12356 },
{ timestamp: 1785340800, step: 13079 },
{ timestamp: 1785427200, step: 11336 },
{ timestamp: 1785513600, step: 16482 },
{ timestamp: 1785600000, step: 7795 },
{ timestamp: 1785686400, step: 10934 },
{ timestamp: 1785772800, step: 19662 },
{ timestamp: 1785859200, step: 9891 },
{ timestamp: 1785945600, step: 12665 },
{ timestamp: 1786032000, step: 19513 },
{ timestamp: 1786118400, step: 7008 },
{ timestamp: 1786204800, step: 13494 },
{ timestamp: 1786291200, step: 18749 },
{ timestamp: 1786377600, step: 20896 },
{ timestamp: 1786464000, step: 11225 },
{ timestamp: 1786550400, step: 12888 },
{ timestamp: 1786636800, step: 21479 },
{ timestamp: 1786723200, step: 5965 },
{ timestamp: 1786809600, step: 20256 },
{ timestamp: 1786896000, step: 16116 },
{ timestamp: 1786982400, step: 12201 },
{ timestamp: 1787068800, step: 19889 },
{ timestamp: 1787155200, step: 9794 },
{ timestamp: 1787241600, step: 12163 },
{ timestamp: 1787328000, step: 10518 },
{ timestamp: 1787414400, step: 18630 },
{ timestamp: 1787500800, step: 7023 },
{ timestamp: 1787587200, step: 7365 },
{ timestamp: 1787673600, step: 6854 },
{ timestamp: 1787760000, step: 5712 },
{ timestamp: 1787846400, step: 4257 }
],
watermark: { timestamp: 1787900213, appid: 'wx4825739f58878bdc' }
}Step Tree Release V1.0
2026-09-02
新增玩法:
1、核心养成循环:微信运动步数兑换虚拟粮食,喂养专属小树,见证 5 个成长阶段(种子→嫩芽→小树→繁茂→果树),每升一级解锁全新造型 2、18 枚勋章成就系统:覆盖步数累计、连续打卡、成长里程碑等维度,作为长期荣誉收集 3、7 种树种图鉴:叶色、干色、果形、冠形自由组合,多样化收集乐趣 4、阳光与连签:每日连签产出阳光倍率,用于解锁新树种 5、天气加成机制:清晨 /白天 / 黄昏 / 夜晚 4 时段喂食效果不同,引导健康作息 6、隐私保护:首次启动独立展示《隐私政策》,授权后才同步微信运动步数
Copy Selection as Markdown 快捷键
2026-09-02
在浏览器地址栏直接打开:
- chrome://extensions/shortcuts
修改扩展 Copy Selection as Markdown 的快捷键
- Mac:
Command + Shift + E
HDMI、DP、USB-A
2026-08-24
VGA、DVI、HDMI(High Definition Multimedia Interface,高清多媒体接口)、 DP(DisplayPort,显示端口),显示器不同的接口,越来越好
主题与注释
2026-07-14
AI写代码多了后,看注释更重要了,AI每次都会变更注释。
主题切换
2026-07-14

command K,然后 command T,快速切换主题。这个“Atom One Dark Pro UI”还可以,注释看的清楚,也柔和点。
Publishing Director
2026-07-10
- Publishing Director:发行总监(对外市场、渠道、投放)
- Product Director:产品总监(游戏内容、玩法迭代)
- Operations Director:运营总监(服务器、活动、玩家运维)
微信小游戏的游戏分类
2026-07-08
- 休闲类
- 消除
- 塔防
- 益智
- 教育
- 养成
- 模拟经营
- 答题解谜
- 动作类
- 跑酷
- 体育
- 音乐舞蹈
- 射击
- 动作角色扮演
- 竞技类
- 竞速
- 桌游
- 对战
- 弹射
- 棋牌类
- 棋类
- 牌类
- 角色类
- 卡牌
- 回合
- 策略