背景作为程序员经常需要画各种图纸,什么流程图、状态图、时序图、ER图等等,那有通常都是用什么工具来画呢?
draw.io 在线工具
PlantUML 用代码来画
AI帮你画
没错,现在都是AI时代了,自然是要用AI来画,毕竟AI比你更懂UML 。 以前我们让AI画流程,它会花城这样
现在可以换新的插件啦
使用github.com/cathrynlavery/diagram-design 这是一个开源的画设计图纸插件,用这个技能可以画出很多不同类型的图纸
基础图表 / 结构类
01 Architecture(架构图)
02 Flowchart(流程图)
03 Sequence(时序图)
04 State(状态图)
05 ER(实体关系图)
06 Timeline(时间线图)
07 Swimlane(泳道图)
08 Quadrant(象限图)
09 Nested(嵌套图)
10 Tree(树状图)
11 Org chart(组织结构图)
12 Layers(分层图)
13 Venn(韦恩图)
14 Pyramid(金字塔图)
17 Loop(循环图)
35 Sankey( ...
背景之前拿到了CNB的天才程序员认证,每月就有1166 credits 免费的AI额度(基础的500 + 认证后的666),想着这个羊毛必须薅。
启动云原生开发CNB给每个账号提供每月1600 核时的云原生开发额度。
如果按照1核2G的内存来进行开发,一个月可以使用1600小时,约等于66天,也就是即便每天不关机,你也可以一直用。
如果按照2核4G的内存来进行开发,一个月可以使用800小时,约等于33天,依旧是每天不关机也足够一直用。
所以从这点来开,云原生开发环境的使用是完全不必担心需要付费的。
点击项目右上角的“云原生开发”按钮就可以进入云原生开发环境了。
等待启动完成后会进入一个选择界面,用于选择是普通的云开发环境还是需要AI助手。
注意右上角有显示本次启动的云原生开发环境的配置,图里可以看到是一个2核4G的环境。初次使用时会发现,是一个8核16G的环境,这是因为CNB给云原生开发环境默认配的资源就是这个。那要如何调整呢?需要我们在项目中编辑 .cnb.yml 文件 (没有就创建它)
123456789101112$: vscode: clouddev: ...
背景最近一直在使用CNB构建一些网站小工具,突然发现CNB中有一个“天才程序员”的身份认证,看任务蛮简单的,就去做了一下,顺便记录了下来。
只要一步一步照着做,你也可以拿到的。
教程入口
访问身份认证页面
点击天才程序员右侧的去完成任务
点击去完成任务,会跳转到官方的代码仓库 cnb/tutorial/hello-cnb
正式参加
新建组织 — 如果你是 CNB 新手,还没有自己的组织,点击右上角「+」→「新建组织」,按照指引创建一个组织。Fork 仓库需要归属到一个组织或个人空间下
点击右上角 Fork 按钮,将仓库 fork 到你的个人空间
任务1:个人信息
修改默认用户名:
CNB 注册后会分配一个默认用户名(如 cnb.cwH7BL2BwHA),前往 账号设置 修改为一个有辨识度的用户名.
设置个人签名:
个人签名(Bio)会展示在你的主页上,让其他开发者快速了解你。进入 个人设置 填写即可
设置个人仓库墙
在个人主页上设置你的仓库墙,需要注意的是只有空开的仓库才可以设置哦
关注其他开发者
如果没有关注的开发者,可以关注我哦
关注指定仓 ...
简介最近发现了一个免费的服务器资源——DGNCloud,只需要邮箱即可注册,注册就送60美金,可用于开通云服务器。服务器位于香港,不需要备案即可部署网站。
配置与价格2核2G的服务器用于做一些小网站完全足够了,有独立的IP,60美金可以免费使用4~5个月。
流量是额外购买的流量包,依旧可以使用免费送的60美金:1.5美元1T,有效期一年,小网站根本用不完。
部署开通完成之后就可以用SSH连接到服务器部署网站了。
注册方式注册也比较简单,访问下面这个链接:
👉 https://app.dgnlinks.com/console/signup?ref=JGX4L88LBFU53TPB
填写完基本信息之后,从邮箱中收取验证码即可注册成功。
注意事项
目前活动比较火爆,邮箱验证码可能有延迟,需要多试几次。
4~5个月之后额度用完了怎么办?如果注册规则没有变化,可以换个邮箱重新注册一个;也可以趁着现在多注册几个账号,每个账号都会赠送60美金。
起因最近入手了一个小型音乐播放设备,把收藏多年的 mp3 文件都拷了进去。本来期待着享受高品质音乐,结果发现了一个让人抓狂的问题:歌单顺序播放时,有些歌曲声音震耳欲聋,下一首却轻得几乎听不见,每次都要手忙脚乱地去拧音量旋钮。
这个问题其实由来已久——不同来源、不同年代的音乐文件,录制时的响度标准完全不同。90年代的专辑有的很保守,现代流行音乐为了”更响更有冲击力”则往往压缩得很厉害,两相对比之下差距可以有十几个 dB。
在网上搜索了一圈,有一些图形化工具可以处理,但批量处理几百首歌的体验并不好。于是决定自己动手,用 Claude Code + OpenSpec 来做一个命令行批处理工具。
什么是 LUFS 响度标准在动手之前,先要搞清楚”响度归一化”到底是什么。
音量有很多种衡量方式:峰值(Peak)、均方根(RMS)、以及 LUFS(Loudness Units Full Scale)。前两种都有明显缺陷——峰值归一化只保证最响的瞬间不超限,RMS 也不能很好地反映人耳的主观感受。
LUFS 基于 EBU R128 标准,更贴近人耳对响度的实际感知。Spotify、YouTube、A ...
程序人生
未读思源笔记是一款优秀的本地优先知识管理工具,支持块级编辑、双向链接、属性视图等高级功能。随着使用时间增长,笔记数量不断增加,整理维护成为一项耗时的工作。
传统方式下,整理笔记需要手动逐一打开文档、阅读内容、添加标签或调整分类。对于拥有数百篇笔记的用户,这个过程可能需要数小时甚至数天。
这里正好利用最近很火的 AI (Claude Code) 通过 MCP 协议直接操作思源笔记,实现智能化的批量整理。
1. 什么是 MCPMCP (Model Context Protocol) 是 Anthropic 推出的开放协议,让 AI 模型能够安全地与外部工具和数据源交互。它定义了一套标准化的接口,使得:
AI 可以读取文件、查询数据库、调用 API
工具开发者可以编写一次,被多种 AI 客户端使用
用户可以精确控制 AI 的访问权限和操作范围
对于思源笔记,社区已经开发了完善的 MCP Server,提供了笔记本、文档、块、搜索等全方位的操作能力。
2. 思源笔记 MCP 工具介绍
思源 MCP Server 提供了以下核心工具:
2.1 notebook - 笔记本操作
操作
说明
...
程序人生
未读背景OpenClaw 是一款开源 AI 助手,能够 24*7 执行电脑操作任务,能够通过飞书等通讯平台接入,直接通过通讯软件和它交流,指挥它干活。最近也准备搭建一套试试看效果。
准备工作1. 服务器要求
已安装 1Panel 面板的服务器
Docker 和 Docker Compose 已安装
开放 18789 和 18790 端口
2. AI 模型准备OpenClaw 需要配置 AI 模型才能工作,支持 OpenAI 和 Claude 两种协议:
OpenAI 协议:适用于 OpenAI、Gemini 等模型
Claude 协议:适用于 Claude 模型
由于我已经有智谱的coding套餐,所以直接使用glm-4.7模型,省钱是主要的。
1Panel 部署 OpenClaw1. 创建模型账号
这里由于我有自己的AI代理,所以就配置了自定义,模型就填写上面提到的glm-4.7
2. 创建智能体
这里需要选择上面创建的模型账号
3. 配置反向代理
4. 访问控制台
第一次访问先配置令牌,并点击链接,之后在同一个浏览器里就不需要再次填写了。
5. 测试接着我们可以在聊天界面中和它 ...
背景最近AI越来越火,本身自己也炒股,所以有点想试试。AI炒股也不是最近才出现的,只是感觉经过这几年发展,可能会有一些进展,于是想尝试尝试。
搭建在github上挑选了一个AI炒股的项目:AlphaBot
部署步骤
克隆仓库
12git clone https://github.com/x-pai/alphabot.gitcd alphabot
运行部署脚本1./deploy.sh
脚本会自动构建docker镜像,然后运行部署,配置文件是:backend/.env , 其中需要配置一些大模型的url和token 。
一般会有这4个docker容器运行,由于我已经有了redis,所以没有共用一个redis就可以了。
进入之后就可以搜索和收藏一些股票,然后进行分析
当然,真正做到AI炒股,还需要很多内容,这只是非常简单的第一步,尝试用AI分析一下,具体的效果还要再观察一段时间,仅能作为参考使用。
未来未来打算使用AI分析并盯盘,当分析比较好的股票和时机时,采用通知提醒的方式告知我,再人工判断是否操作买入卖出。
程序人生
未读背景一直想做一个个人的账本,用于管理短期理财的,例如购买的一些基金、顾投,短则几个月,长则2、3年。想看看哪些是比较赚钱的,哪些是投入了很多成本并没有怎么赚钱的。
需求
希望是可以在有网的PC端打开、查看和更新就行。这就要求是BS结构或者有同步功能。可以比较自定义的展示一些统计信息和统计图。之所以需要一些自定义的统计信息,是因为想知道每年投入了多少钱,如果只是简单的求和,会出现严重的偏差。例如一年内购买了很多次短期理财,周期都不超过2个月,每次投入10万元,如果只是简单的求和,会显示当年投入了上百万元,实际上来来回回就那10万元,相差1个数量级。
尝试
最初在网上找了找有没有开源的软件可以直接用的,但是几乎没什么满意的。大部分软件都是记账使用,并不适合短期理财管理。后来只能转到WPS上,通过表格来管理这些短期理财,再通过WPS的JS脚本来计算复杂的公式。WPS的同步功能也能满足只要有网就能用PC打开查看和更新的需求。
低代码平台
也想过使用低代码平台快速完成一个表单的增删改查,但是搭建低代码平台本身就是非常麻烦的,尝试了自建2个低代码平台都没有成功,而且复杂的计算条件如果不 ...
程序人生
未读背景最近越来越多的人使用AI编程了,有些人使用简单的代码提示工具,来辅助完成几行之内的代码生成。而另外一些人则使用AI分析项目,根据需求设计方案,最后生成代码,并生成单元测试。这次就尝试一下使用Claude Code
安装支持的操作系统macOS 10.15+ (推荐 macOS 12+)Linux Ubuntu 18.04+, CentOS 7+, 或其他现代发行版Windows Windows 10+ (通过 WSL2 推荐)
必要依赖:
Node.js 16+ (用于某些 MCP 服务器)
Git 2.20+ (版本控制集成)
安装步骤官方安装脚本(推荐)
macOS/Linux
curl -fsSL https://claude.ai/install.sh | sh
验证安装claude --version
配置
第一次运行会自动引导配置claude
手动配置claude config set api-key YOUR_API_KEY
验证配置claude config list
使用分析整个项目
分析一下整个项目结构
总体来说分析的还不错,对于一个新手来 ...
背景由于博客采用hexo搭建,所以整理一下hexo常用的命令
常用命令
命令
格式
作用
init
hexo init [folder]
新建一个网站
new
hexo new [layout] <title>
新建一篇文章
generate
hexo generate
生成静态文件
publish
hexo publish [layout] <filename>
发表草稿
server
hexo server
启动服务器
deploy
hexo deploy
部署网站
render
hexo render <file1> [file2] ...
渲染文件
migrate
hexo migrate <type>
从其他博客迁移
clean
hexo clean
清理缓存
list
hexo list <type>
列出路由
version
hexo version
显示版本信息
config
hexo config [key] [value]
列出网站的配置
使 ...
程序人生
未读最近发现阿里云ESA边缘安全服务在搞活动,http://s.tb.cn/e6.0Fu67m,可以免费试用它的加速功能。
想着博客已静态资源为主,所以就尝试一下,先看看效果。
ESA还支持免费的SSL证书,直接一键申请,自动配置搞定。
除此之外,ESA还支持各种安全、缓存、转发等规则配置,效果非常好。
每个月50G的流量足够个人博客使用了,配合流量封顶配置,完全不用担心天价流量费。
背景腾讯退出了云原生(cnb.cool),给个人用户提供了不少免费的额度。包含100G代码仓库、160核时的构建和1600核时的云开发。云开发可以用来加速docker拉取,而160核时的构建资源可以用来自动化部署博客,所以打算从gitee迁移至cnb.cool了。
迁移新建代码仓库新建代码仓库比较简单,和其他代码托管服务没什么太大的区别。
公开性有3种选择,其中秘钥仓库是为存储秘钥而准备的,在之后的自动构建、部署、通知上会使用一些秘钥,例如服务器证书、通知token等等
git本地管理一开始卡在了这一步,cnb.cool的代码仓库只有https访问方式,地址就是浏览器上的地址1https://cnb.cool/[组织名]/[仓库名]
问题在于没有传统的SSH私钥访问方式。
那就只能使用账密的方式访问了,但cnb.cool采用微信扫码方式登录,也没有设置密码的地方。为了这个问题一路找到了官网的issue上,发现不少人问了相同的问题。原来git访问的方式是采用token的方式,用户名固定位cnb,密码就是创建的令牌。
push代码迁移也遇到了一点问题,原本以为只要把代码搬过来,然后p ...
程序人生
未读背景在阿里云DMS上执行了一个DDL语句,本意是将value1和value2增加联合唯一索引,并将value1的字段从可空表更为不可空。
12ALTER TABLE TABLE ADD CONSTRAINT uk_value1_value2 UNIQUE KEY (value1,value2);ALTER TABLE TABLE MODIFY COLUMN value1 varchar(20) NOT NULL;
执行之后导致原表丢失上千条数据,突然比较好奇,为啥ALTER语句会造成数据删除呢?
复现初始准备123456789CREATE TABLE test ( id bigint auto_increment NOT NULL, value1 varchar(20) NULL, value2 varchar(20) NULL, CONSTRAINT primaryKey PRIMARY KEY (id))ENGINE=InnoDBDEFAULT CHARSET=utf8mb4COLLATE=utf8mb4_general_ci;
再初始化几条测试数据
123456INSERT I ...
背景6月11日,项目原开发者 Xhofe 在其 Alist News 订阅频道发布消息证实项目已交由公司运营,接下来 Xhofe 会帮忙审查开源版本仓库的代码,并且确保 release 的分支由 CI 自动构建。
OpenList 开源项目介绍显示,这一个更可信、可持续的 AList 开源替代方案,防范未来可能的闭源、黑箱或不可信变更。该项目正在进行原作者闭源 API 替代,移除所有不可信链接。
部署openList采用docker部署
12345678910111213141516171819version: "3"services: openlist: container_name: openlist image: "openlistteam/openlist:latest" restart: "unless-stopped" networks: - 1panel-network ports: - "127.0.0.1:5244:5244" ...
问题现象在MySQL中使用limit分页查询时,有时候第一页的数据在第二页中又会出现,而有部分数据又会被遗漏。
举个例子我们先构建一个表
12345678CREATE TABLE IF NOT EXISTS `test` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `a` int NOT NULL, `b` int NOT NULL, `c` int NOT NULL, PRIMARY KEY (`id`), KEY `idx_b` (`b`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
其中字段id为主键,字段b有一个普通索引。
然后插入一些数据,数据需要多一些,数据量过少时,无法复现。
表数据如下:
接着我们执行分页sql12select * from test order by c desc limit 0,10;select * from test order by c desc limit 10,10 ...
程序人生
未读背景系统简介公司有个权限系统,管理着员工的所有权限。其中有个数据权限的模块,管理着员工可以看到哪些数据,不能看到哪些数据。这次出现问题的是数据鉴权接口,业务系统调用该接口来鉴定用户能否操作某个数据。B端系统特性就是并发量不是很大,但其业务复杂度非常高。以数据鉴权接口为例,需要计算当前登录用户的组织和父组织、职务等信息,同时也要计算权限的继承关系、优先级等信息。举个例子:授权员工张三所在的组织拥有A订单的读写权限,即便没有直接授权张三,张三也能操作这个A订单。再举个例子:授权员工张三拥有销售1组下所有订单的读写权限,即便没有直接授权订单B(挂在销售1组下),张三也能操作这个B订单。
问题背景由于坐席接入了权限系统,导致原本并发量不大的系统需要额外承接15倍左右的流量。至此,我们需要对接口进行压测,用来评估当流量翻15倍之后是否能够通过横向扩展pod来保证服务可用,以及需要横向扩展多少pod来支撑这些流量。
测试软硬件环境
pod服务:2C4G 4pod
数据库:4C16G (和其他数据库共用一个实例)
软件:JDK8
压测并发数:30 -> 120
压测结果
性能 ...
快过春节了,自然就涉及到了年终奖。今天人力薪酬的同事给我发了一个信息,问我是否要将年终奖拆分成2部分,其中一部分并入1月薪资,以避免“年终奖1元陷阱”。虽然结果很容易得到,既然拆分之后个税会变少,那自然是拆分处理。但依旧有以下几个疑问:
为什么会出现年终奖1元陷阱?
为什么将年终奖的一部分拆分到月薪后能避免“年终奖1元陷阱”?
既然将年终奖并入月薪后能避免“年终奖1元陷阱”,为什么不全部并入?
既然无法全部并入,那肯定是因为有取舍,而这个取舍肯定和月薪多少有关。那在新的一年中(即未来12个月)还是变数的情况下,为什么能做出精确的拆分已避免“年终奖1元陷阱”?
为了解决这4个问题,需要了解一下薪资和年终奖计算个税的一些规定和逻辑
薪资个税规则全年薪资
全年税前薪资(不包含年终奖)减去五险一金
减去起征点
减去专项扣除
通过1、2、3步骤后得到应奶水所得额,按照以下表格进行缴纳个税
级数
应纳税所得额
税率
1
不超过36000元的
3%
2
超过36000元至144000元的部分
10%
3
超过144000元至300000元的部分
20%
4 ...
程序人生
未读最近在改造一个单点登录系统,由于其中涉及到很多不同的协议、不同的授权方式,所以整理了一下相关的知识
名词什么是单点登录单点登录(SSO)是一种身份验证机制,它允许用户使用单一的凭据(如用户名和密码)访问多个相互关联的应用程序或系统。在没有单点登录的情况下,用户可能需要为每个应用程序分别记住不同的用户名和密码,这不仅麻烦,而且增加了用户管理凭据的负担和安全风险(如使用简单或重复的密码)。
在企业内部尤为明显,通常企业内部会有许多系统(例如OA系统、库存系统、销售系统、作业系统、审批系统、邮件系统、财务系统等等),如果让员工在每个系统上使用独立的账号密码登录显然不现实。所以就会需要单点登录。用户只要登录一次,就可以在所有系统上工作,无需重复登录。
协议IdP经常会使用OAuth、OIDC、SAML协议来实现单点登录功能,那这3种协议又有什么区别呢?
OAuthOAuth(开放授权)是一个开放标准的授权协议,它允许用户在不向第三方应用提供用户名和密码的情况下,授权第三方应用访问其存储在另外一个服务提供商(如社交网络平台、云存储服务等)上的受保护资源。
所以OAuth并不是一种身份认证的协议, ...
背景之前给自己的服务器搭建了一个服务器监控的程序,采用的是哪吒监控 具体可以看下面这篇文章
引用站外地址
自建服务器监控
自建服务器监控
最近发现哪吒监控升级到v1版本了,界面变得更加好看了,需要的端口也从2个减少为1个(不再区分dashboard和agent的端口了),并且可以套上https,共用443端口来接入了
更换v1步骤由于更换了agent的端口,自己的服务器监控也不用保留监控数据,就打算推翻重来
删除旧的dashboard和agent,在服务器上执行nezha.sh,选择卸载即可
安装v1的dashboard,curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezh ...

































