嵌入式内存溢出检测
Foreword 内存溢出,非常常见的错误,但是对于嵌入式软件而言稍微有点麻烦,因为出问题的时候不一定能被调试,能被追踪到,条件十分严苛。 借鉴前人的经验,做一次实践 内存溢出 笨方法 这个方法比较笨,但是可以防止程序产生更严重的问题,比如在做内存copy或者调用指针的时候,都做一次内存范围检测,如果发现范围溢出了,那么此时就记录一下具体溢出的位置,触发函数等等。 这种方式可以维持一个长期稳定,但是溯源上还是差一些,同时也会影响效率,特别是一些高频操作或者是时间敏感的操作。 canary 最简单的思路,在觉得可能会溢出的地方加上一个溢出标志,那么当溢出的时候就可以直接记录溢出点,然后就能追踪了 这样追踪到的是溢出点,但是如果是哪个地方溢出了,写到了别的内存的位置,这种办法就无法直接溯源,..
更多

AI模型生成对比
Foreword 研究一下如何把AI相关的AI设计产品融合到目前的艺术设计的工作流中,对比了一下当前模型生成相关的AI,发现区别还是挺大的 图片生成 Stable Diffusion https://github.com/AUTOMATIC1111/stable-diffusion-webui Stable Diffusion是一种图像模型,他背后是Stability AI Midjounery https://www.midjourney.com/ 模型生成 提示词,猫和老鼠中的老鼠,拿着一个烤串 # Core requirements Jerry from Tom and Jerry cartoon, holding a barbecue skewer, # Sty..
更多

如何写一个MCP Server
Foreword 看一下如何写一个MCP服务 FastMCP 翻了一下看到了MCP有一个快速的模式,这种方式不需要写那么多前置代码 # server.py from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP("Demo") # 通过注解快速加入一个工具命令 # Add an addition tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b # 这里还通过注解,加入了有一部分资源 # 这里的资源可以理解为一个文件或者一段信息,或者说一个特定的内容,这个可..
更多ComfyUI的操作与使用
简单起见,又或者是没有N卡或者显卡的配置比较低,可以使用腾讯云HAI直接搭建ComfyUI服务。入门使用可以先clear掉当前的workflow,之后右键新建模块。首先需要新建一个采样器(KSampler),采样器的配置如下:参数值说明seed0随机种子,控制生成结果的随机性。相同种子会产生相同结果control_after_generaterandomize生成后种子控制方式:randomize(随机化)、increment(递增)、decrement(递减)、fixed(固定)steps20采样步数,通常15-30步较为合适。步数越多质量越好但耗时更长cfg8.000CFG引导强度,控制AI对提示词的遵循程度。范围1-20,推荐7-12sampler_nameeuler采样算法:euler、euler..
更多ComfyUI简介
ComfyUI 是一个基于节点工作流的现代化 Stable Diffusion 图形用户界面。与传统的WebUI不同,ComfyUI采用节点连接的方式来构建图像生成工作流,让用户能够更精确地控制整个生成过程。Stable Diffusion 是一款开源的 AI 图像生成技术,基于扩散模型构建。用户可以通过 Stable Diffusion WebUI 或 ComfyUI 等开源工具来运行它,只需下载相应的模型文件(通常为 .ckpt 或 .safetensors 格式)即可开始使用。核心概念ComfyUI中的图像生成涉及三个关键组件,在CheckpointLoader中进行设置:CLIP:将文本提示转化为主模型可以理解的向量形式主模型(Main MODEL):执行实际的图像生成计算 VAE(变分自编码器..
更多

聊聊大模型推理加速:从数据到系统的技术概要
随着 LLMs 在各行各业的应用,如何在保证模型性能的前提下实现高效推理已成为重点挑战之一。前言主流的 LLMs 在算法架构上基于 transformer 的 decoder-only 架构,核心任务是 next token prediction,在推理过程中,模型需要依次生成每个 token,这种自回归生成的特点会增加推理延迟。并且从参数量上模型可分为不同规模,即使是小模型,其对计算资源和内存资源也有较高要求。为了应对这些挑战,学术界和工业界提出了多种优化方案。本文将介绍了若干 LLMs 的推理加速相关的关键技术。如有错误或不准确之处,欢迎指正。正文推理阶段概述推理阶段是模型接收输入并产生输出的过程。与训练阶段不同,推理阶段不需要计算梯度和更新参数,只需要完成前向传播计算。在推理过程中,由于自回归生成的..
更多用裸 git 仓库管理点文件的最佳方式
前些天在 Atlassian 的文档中看到一篇关于管理点文件(即.bashrc 之类以点开头的文件)的文章《Dotfiles: Best way to store in a bare git repository》,感觉很有参考价值,遂决定翻译出来,希望能帮到更多的人。 以下内容除特别注明外,皆翻译自原文。我亦不对内容做任何的担保,并不对任何可能产生的后果(包括但不限于文件丢失)负责。 免责声明:标题有些夸大其词了,而且针对这个问题也有其他好用的解决方案。但我确实觉得这也是一个优雅的技巧。 最近我在 Hacker News 中看到一篇帖子,是讨论人们怎么管理他们的点文件的。在这篇帖子中,用户 StreakyCobra 分享了一个他的很优雅的配置,而且我觉得非常的靠谱。正巧我也在开始用同样的技巧来管理..
更多在 TypeScript 的 catch 代码块中获取错误信息
最近在试着用 TypeScript 写点东西,在用 catch (error) {} 代码块处理异常的时候,看到了一个很难理解的错误 TS18046: error is of type unknown。网上一顿冲浪之后,看到了 Kent C. Dodds 的一篇博客 Get a catch block error message with TypeScript。我跟着文章的内容成功解决了这个问题,并且解答了我的疑惑,所以想要翻译出来帮助到更多的人。 以下内容除特别注明外,皆翻译自原文。我亦不对内容做任何的担保,并不对任何可能产生的后果(包括但不限于文件丢失或功能异常)负责。 好吧,咱们看看这个代码: 12345678910const reportError = ({ message }) =>..
更多

MCP下一代软件接口
Foreword MCP下一代软件接口,他可能是未来AI或者大模型发展所必须的一个中间件了 MCP https://github.com/modelcontextprotocol https://modelcontextprotocol.io/introduction MCP简单说就是一个开发的标准协议,他主要是约定了如何让普通程序把自己的内容或者接口暴露给LLM,从而可以让AI使用这个程序。 简单说之前遇到的Cursor读不了PDF,其实如果他会用转换工具,把PDF转换成网页或者txt之类的内容,他就又能重新读懂了,而MCP干的就是这个标准接口,告诉LLM通过什么方式可以达成什么结果。 有了MCP就可以做什么呢? 让AI去数据库帮我修改某个字段的信息,而不是让他给我..
更多

点阵字体合集
Foreword 曾几何时找个点阵字体还是非常麻烦的,如果只是平常LCD或者小屏幕上用的那种粗糙的点阵字体,那没问题。但是如果要追求一点美感,要精修过的点阵字体就有点费劲了。几年没关注,发现现在已经有不少商业化或者在自己宣传的点阵字体了,看起来还不错,比以前代代相传的字库强多了。 BitmapFont https://github.com/aguegu/BitmapFont 历史很久的点阵字库了,很多单片机或者嵌入式中手手相传的老子库, 但是这个字库字体有限,而且大小都设定的比较死,里面的字时高时低的,有些时候很别扭。 凤凰点阵体 https://timothyqiu.itch.io/vonwaon-bitmap 凤凰点阵字体是基于BitmapFont进行了..
更多