BLCL的博客小馆

首页

关于

归档

stdout

“分封制” 代替RBAC权限管理模型

作为开发狗,手上堆的系统和任务多了,开权限就变成了一件麻烦的事。 一开始做一个功能X,给甲用,就做一个简单的权限关联表:功能key,人员id就完事大吉 后来人员调整流动,换人换得勤快,得考虑一个功能给一个团队使用,于是引入 RBAC,基于角色的鉴权控制。说到底就是个三元组 功能key,角色,成员id。 我也一度迷信这样的设计。用了这么久还是麻烦了。在一个正常官僚程度的大中型组织里,压根没人知道自己角色是啥。 你说他是管理人员吧,他也就管一部分;你说他负责这事吧,也就负责一阵。该给他放到哪个角色呢? 如果做一个自动化角色申请审批流程,他会跑来问你,该申请哪个角色啊? 所以问题又回到了原点。因此我琢磨出来一套具有大汉封建主义特色的,「分封制」权限控制体系。 系统超管:普天之下,莫非王土;率土之宾,莫非王臣。..

更多
loading..
爬虫大模型

一日一技:使用大模型实现全自动爬虫(一)

在文章一日一技:图文结合,大模型自动抓取列表页中,我提到可以使用大模型实现一个全自动爬虫。只需要输入起始URL加上需求,就可以借助模拟浏览器自动完成所有的抓取任务。在实现的过程中,我发现涉及到的知识点可能一篇文章讲不完,因此拆分成了多篇文章。爬虫演示今天是第一部分,我们暂时不依赖模拟浏览器,而是使用httpx(你也可以使用requests)实现全自动爬虫,传入我博客文章列表页,爬虫会自动抓取前三页所有博客文章的标题、正文、作者、发布时间。爬取结果如下图所示:运行过程如下图所示:爬虫首先会进入起始列表页,抓取上面的所有文章。然后进入列表页第二页,再抓取所有文章,最后进入第三页,再抓取所有文章。整个过程都是全自动的。不需要写任何XPath,也不需要告诉爬虫哪里是翻页按钮,文章的标题在哪里,发布时间在哪里,正文..

更多
loading..
RTOS

RTOS对比

Foreword 总结一下嵌入式的小型RTOS,对比一下异同和近年的发展情况 NuttX https://nuttx.apache.org/ 这里的Vela是小米基于NuttX的改进版本 NuttX的系统架构,从纵向看,NuttX和传统操作系统一样由调度子系统、文件子系统、网络子系统、图形子系统和驱动子系统组成。从横向看,NuttX向上给应用程序提供了POSIX和ANSI定义的标准C/C++接口。对于没有标准化的组件(比如各种外设),NuttX通常会提供兼容Linux的API。向下NuttX定义了Arch API、块设备驱动接口、网卡驱动接口、display驱动接口,以及各种总线和外设的lower half驱动接口,使得芯片厂商能够规范、快速地完成移植工作。上图中数量众多的蓝..

更多
loading..
VPSV2ray

2024可用的V2ray配置

Foreword 好久没有折腾V2ray了,总结一下当前可用方式 协议 V2ray 目前来说vmess+ws+tls+nginx或者caddy,活不久,经常被封端口,如果是有企业背书另说,正规企业背书的节点完全不会管的 同理如果是裸奔vmess+ws+tls动态端口其实也不太稳定,经常需要换端口 但是目前看到别人用vmess+ws+一点点简单的伪装,竟然就可以特别稳定,协议使用如下的即可 { "inbounds": [ { "listen": "0.0.0.0", "port": 80, "protocol": "vmess", "settings": { ..

更多
loading..
爬虫大模型

一日一技:图文结合,大模型自动抓取列表页

熟悉我的同学都知道,GNE可以自动化提取任意文章页面的正文,专业版GnePro的准确率更是在13万个网站中达到了90%。但GNE一直不支持列表页的自动抓取。这是因为列表页的列表位置很难定义。例如下面这张图片:对人来说,要找到文章列表很简单,红色方框框住的部分就是我们需要的文章列表。但如果让程序自动根据HTML格式相似的规律来寻找列表页,它可能会提取出蓝色方框的位置、绿色方框的位置、灰色方框的位置,甚至导航栏。之前我也试过使用ChatGPT来提取文章列表,但效果并不理想。因为传给大模型HTML以后,他也不能知道这里面某个元素在浏览器打开以后,会出现什么位置。因此它本质上还是通过HTML找元素相似的规律来提取列表项目。那么其实没有解决我的根本问题,上图中的蓝色、绿色、灰色位置还是经常会提取到。前两天使用GLM..

更多
loading..
UAVGuinnessWorldRecords

三破吉尼斯世界纪录

Foreword 螳螂捕蝉,黄雀在后,这不,黄雀就来了。 吉尼斯 这次就冲着万架级别破记录了 The largest aerial image formed by multirotor/drones,最多无人机在空中呈现的图案 The most multirotor/drones airborne simultaneously form a single computer(outdoors),单地面站最多控制的无人机数量 单地面站控制以前只有一条室内的记录,才一百多架飞机,这次这条记录是我新提出来的,但是吉尼斯方面依然嘴犟之前有这条记录(实际根本搜不到),不和其他人记录冲突,同时也能彰显技术实力。 万架其实对各方面都提出了更高的要求,但是这次还是硬是推了一个新版本上去,强..

更多
stdin

“中庸”的艺术 - 如跟需求方讨价还价

翻到一个神贴 How to make Product give a shit about your architecture proposal ,标题直译就是《如何让沙雕产品经理接受技术改造》 具体故事,原文非常值得一看。搞了这么多研发,产品经理各种水平的都遇到过一堆,最大的烦恼就是“我有个想法”,“今天就要”而全然不顾你当前技术架构的问题。到底是技术优先,还是业务优先?开发人员和销售非常普遍的冲突怎么处理? 产品经理,老板,甲方,销售,实际上是研发的衣食父母。他们所有的诉求: 产品不管你的技术问题,他们也不懂。他们只关心 产品 本身 产品需要的是一个 结果,而不是一个白板上巨复杂的分布式系统架构图 产品是人,产品为人服务。他们也能理解有工程方面的顾虑,这也是他们找开发的原因。他们是来“讨价还价”的! ..

更多
Linux攻玉计划Nginx

维护 Nginx 时,什么时候应该用 reload,什么时候应该用 restart?

本文是“攻玉计划”的一部分,翻译自 https://stackoverflow.com/questions/13525465/when-to-restart-and-not-reload-nginx/20215497问题描述使用 Nginx 时,什么情况下 reload 无法满足需求,而必须要使用 restart 命令呢?如果 Nginx 进程占用了过多内存,是不是应该用 restart 来重启?如果修改了 Nginx 的核心配置,或者某些插件的配置,是不是也需要使用 restart 命令?修改 Nginx 配置后,用户既可以使用 restart 也可以使用 reload 来使配置生效,见 Ubuntu 上 /etc/init.d/nginx -h 的输出。那么,哪种方案更优呢?回答 1reload 比 ..

更多
stdout

Install mosh for macOS arm64 with Miniconda3

I always hate compiling and building. It's an error-prone path filled with riddles and unknowns. mosh is a great tool replacing ssh in many cases, sadly it does not provide an arm64 binary download or installer for M1/M2/M3 MacBooks. Moreover I dont like XCode and protected /usr/bin shit so I prefer isolated envs like miniconda3. Anyway, for such a detour..

更多
loading..
stdout

javascript 节拍器

娃学琴,节奏感糊成一坨了。老师让抖腿打节拍,显然不work。码农特有的穷B气质让我舍不得买个实体的;去找个节拍器app,结果各大市场都是各种广告,怕给娃用不正经;甚至找了很多公众号版的,小程序版的,网页版的,普遍都是各种跳转诱导点击。 失望之余,想起来上次JS播放DTMF对 WebAudio 有点感觉,要不这次自己干脆再手搓一个。调研了一圈发现这玩意没那么容易,主要就是javascript在浏览器里 setInterval 是有时间抖动(jitter)的,不能保证节奏精确。如何才能做到精准采样打节拍呢?连续精心编排 AudioContext 时间轴! 搜了一圈发现一位叫 Grant James 已经写好放在 github 了。那还等什么直接拿来~~针对性的改进了: 无广告 去掉 .js .css 依赖,..

更多
12377