

一日一技:为什么我很讨厌LangChain
一说到RAG或者Agent,很多人就会想到LangChan或者LlamaIndex,他们似乎觉得这两个东西是大模型应用开发的标配。但对我来说,我特别讨厌这两个东西。因为这两个东西就是过度封装的典型代表。特别是里面大量使用依赖注入,让人使用起来非常难受。什么是依赖注入假设我们要在Python里面模拟出各种动物的声音,那么使用依赖注入可以这样写:12345678910111213141516171819202122def make_sound(animal): sound = animal.bark() print(f'这个动物在{sound}')class Duck: def bark(self): return '嘎嘎叫'class Dog: def bark(sel..
更多

QEMU模拟运行FreeRTOS
Foreword 测试一下QEMU模拟运行FreeRTOS QEMU QEMU安装需要先安装MSYS2 直接下载安装 https://www.msys2.org/ 安装完成以后,QEMU使用pacman包进行安装 https://www.qemu.org/download/#windows pacman -S mingw-w64-x86_64-qemu 添加新的环境变量,把刚才安装的路径加进去 D:\msys64\mingw64\bin 查看版本,显示正确 qemu-system-arm -version QEMU emulator version 9.1.1 Copyright (c) 2003-2024 Fabrice Bellard and the QEM..
更多

宏管理工具之lite-manager
Foreword 体验一下群友的宏管理工具 lite-manager https://gitee.com/li-shan-asked/lite-manager 群友的宏管理工具,主要在gitee上更新,github更新不及时,release文件可能不能用 环境 至少需要一个make和gun c的环境,之前系统里一直有一个MinGW32 13年的版本,gcc大概只有6,编译过不去(后来发现应该不是这个问题) 通过下面的方式在线安装MinGW64 https://github.com/Vuniverse0/mingwInstaller/releases/download/1.2.1/mingwInstaller.exe 安装完成以后添加环境路径 如果环境里没有多的make,可以把..
更多

构建工具之xmake
Foreword 当一套代码兼容了多个软件、硬件,需要面对不同情况下,进行不同的build的时候,就需要额外的工具来辅助完成这一个事情。 通常IDE构建 多数情况下,我们使用的各种IDE都有自己的一套UI或者配置文件来完成这个事情。 以VS为例,一般情况对于一个项目的整体构建的配置大概是这样的 顶级就是Solution 一个解决方案,一个方案下面可能有多个工程共同构成,比如某些工程依赖的库、依赖的测试工程、依赖的一些子应用。解决方案里必然也有一个配置,用来指定各个工程在解决方案级别进行构建时,各个工程适用什么配置来进行组合构建。 单独的工程来说,有一个或者多个配置文件,比如debug和release,这种最常见的,剩下就是对于整个项目的源码文件、库文件、依赖文件、资源文件的组合,可能不同配..
更多ss命令抓linux下偶发端口访问
Linux服务器一直有个TCP连上来发数据,跑到对应的机器上发现连接已经断了,对应的进程也退出了。估计是某种定时任务。 排查代码无果,只能通过命令行来监控。这里直接上ss命令 while true; do pid=$(ss -tanpe state established 'dst 10.11.22.33:4455' | awk 'match($0,/pid=([0-9]+)/,a){print a[1]}'); [[ -n $pid ]] && tr '\0' ' ' </proc/$pid/cmdline ; sleep 0.2; done; 解释下: while true; do ...; sleep 0.2; done;每0.2s反复刷新执行指定命令。 ss -ta..
更多kcp 与 kcp-go 的设计与实现
引言 最近深入研究了 KCP 的实现,通读了 KCP 原版及其 Go 语言实现(kcp-go)的源码。在阅读代码的过程中,还参考了许多优秀的博客文章,十分感谢这些博主的分享。有了这些珠玉在前,我也整理了一些自己对 KCP 的理解,作为学习过程中的记录和总结。 两个核心数据结构 ikcpcb 是 KCP 的控制块(KCP Control Block)数据结构,包含一条 KCP 连接的所有状态信息和参数。作为 KCP 协议的核心数据结构,它负责管理数据传输、重传机制以及流量控制等功能。 segment 是表示 KCP 数据段的结构体,用于描述一个数据包或控制包。每个 segment 都包含数据段的头部信息和数据部分。 这两个数据结构定义了 KCP 使用的所有关键字段。关于它们的具体含义,Luyu Huang ..
更多

Python gRPC
Foreword gRPC example测试 安装gRPC库 pip install grpcio 安装gRPC工具 pip install grpcio-tools 下载官方例程 git clone -b v1.66.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc 演示用例在这里 grpc/examples/python/helloworld 先启动服务端 python greeter_server.py 可以看到已经在监听了 再启动客户端 python greeter_client.py 正常连接到了服务端 源码分析 服务端 from concurrent impor..
更多

ChatGPT-Mirror部署和体验
Foreword cws一直有问题,而且只支持access token,经常要换很麻烦。之前有关注到dairoot的mirror,这次刚好试一下,发现体验还行 ChatGPT-Mirror https://github.com/dairoot/ChatGPT-Mirror 项目很简单 https://chatgpt.dairoot.cn/ 官方体验站,也可以使用免费账号测试,基本都差不多 部署 脚本内是docker,所以机器需要提前安好docker git clone https://github.com/dairoot/ChatGPT-Mirror.git cd ChatGPT-Mirror/ # 修改管理后台账号密码 cp .env.example .env &a..
更多

STM32 MCU移植SSH
Foreword 给MCU移植Crypto、SSL、SSH、SFTP等库,真的找不到一个例子,目前看到的库大部分都是商用的。 比如wolfssh、CycloneSSH、libssh2、TinySSH、microSSH、Dropbear,这些库可能linux使用比较多,但是那边安装移植也方便多了,降到MCU一库难求,更别说详细的移植文档了,基本没有 wolfssh https://www.wolfssl.com/products/wolfssh/ wolfssh移植 wolfssh的库整个集成到了CubeMX中,简单的几个操作就可以把ssh集成进去 系统时钟不要用systick,留给FreeRTOS用 随便加一个input IO作为SD卡的输入检测 再随便加一个串口作为..
更多

用React实现跟随鼠标的3D透视效果
效果展示在下面的图形上移动鼠标即可看到效果 需要用到的知识 CSS perspective,参考MDN CSS transform-style,同样参考MDN 代码部分其实核心的逻辑和React关联性不大,只是我正好用React来做的,直接参考https://jsfiddle.net/yunyuyuan123/ukqstdw6/95/,主要关注这几个部分: 使用requestAnimationFrame来保证动画过度的流畅性。 通过translateZ来控制Z轴的高度,从而实现层次感。 使用CSS新属性will-change来提升性能。
更多