

Systemd 的 socket activation 机制
Systemd 的 Socket Activation(套接字激活)是一种按需启动服务的机制,其核心原理是:在客户端请求到来时,通过套接字(socket)触发服务的启动,而不需要预先运行服务。这种方式极大地节约了系统资源,同时优化了服务启动的效率。 说是现在 Linux 系统,实际上只研究了 debian 系的,不过其他应该也大差不差吧( 之所以了解到这个机制,是因为最近发现线上使用的 rsyslog 收集日志方案,在某些机器上会出现日志丢失的情况,为了搞清和解决这个问题,我开始研究现代 Linux 系统上 rsyslog 的收集日志的流程。 rsyslog 日志写入流程 应用程序调用 syslog()。 syslog() 函数将消息发送到 /dev/log: syslog() 函数通过 Unix..
更多

下载和使用仿宋GB2312字体
下载和使用仿宋GB2312字体仿宋GB2312字体下载:仿宋_GB2312.ttfMac使用字体方法双击下载好的字体文件,会自动打开系统的字体设置页面也可以看到电脑上所有的字体将Word或者WPS退出再打开,就能看到新增的字体了
更多

一日一技:超简单方法显著提高大模型答案质量
很多人都知道Prompt大神李继刚,他使用Lisp语法来写Prompt,把大模型指挥得服服帖帖。但我们很多时候没有办法把自己业务场景的Prompt改造成伪代码的形式。相信不少人跟我一样,会使用Markdown格式来写Prompt,大部分时候没什么问题,但偶尔总会发现大模型返回的结果跟我们想要的不一样。Markdown的弊端例如下图所示:让大模型给我返回一个JSON,它返回的时候会用Markdown的多行代码格式来包装这个JSON。我后续要解析数据时,还得使用字符串切分功能把开头结尾的三个反引号去掉。即便我把system prompt里面的反引号去掉,改成:1234567你是一个数据提取专家,你能从一段文本中提取出所有结构化数据。并以J50N格式返回。返回格式示例:{"name": "小王","age": ..
更多

一日一技:如何正确对Python第三方库做二次开发
今天,有同学在知识星球上给我提了一个问题:如何在Simplemind中接入Azure的GPT接口。如下图所示。在使用Python时经常会出现这样的情况,某一个第三方库,满足我们99%的需求,但碰巧有一个小需求不满足。遇到这种情况,有些同学会忍痛割爱,换一个库;还有一些同学,会继续使用这个第三方库,但是缺的那个功能,他就完全自己单独写;剩下的同学,可能是把这个第三方库下载下来,放到自己项目的根目录中,然后当做项目的一部分来修改并导入使用。今天我们就来讲一下这个问题。前两个方法不需要多说什么。第三个方法从功能上来说没什么问题,但会给自己的项目引入大量其他代码,导致项目在做安全性检查、静态类型检查、Code Review时变得很麻烦。而且这个第三方库必须放到项目的根目录,否则在导入时,它的导入语句就跟正常pip..
更多

Zephyr build 架构
Foreword Zephyr 工程的整个构建体系是怎样的,这里做一个具体的分析和学习 最近小米的Vele 也开源了,不过由于缺少文档,而且架构非常庞大,光是仓库就传了两三百个,想看明白不太容易,但是基础的CMake、Kconfig等等全都有。 CMake 创建构建目录:保持源代码目录整洁。 使用 CMake 生成构建文件:配置项目并生成适合平台的构建文件。 编译和构建:使用生成的构建文件执行编译和构建。 清理构建文件:删除中间文件和目标文件。 重新配置和构建:处理项目设置的更改。 CMake 推荐使用 “Out-of-source” 构建方式,即将构建文件放在源代码目录之外的独立目录中 CMake例程 一个比较简单的CMake例程 https://g..
更多

配置管理工具之kconfig
Foreword 绕了这么大一圈,似乎只有kconfig是比较成熟的,能与之相媲美的管理工具很少 Kconfig 安装 在windows下使用Kconfig,至少得有python,否则界面等内容无法正常显示 python需要先安装这几个包 python -m pip install windows-curses python -m pip install kconfiglib 测试安装,可以正常显示命令 menuconfig -h 测试 参考工程sample_1 https://github.com/bobwenstudy/test_kconfig_system 编译所有 make all 修改配置 menuconfig 运行main.exe就能看到结果了 ..
更多

一日一技:为什么我很讨厌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,这种最常见的,剩下就是对于整个项目的源码文件、库文件、依赖文件、资源文件的组合,可能不同配..
更多