<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>C on syno blog</title><link>https://synodriver.github.io/tags/c/</link><description>Recent content in C on syno blog</description><generator>Hugo</generator><language>locale</language><lastBuildDate>Sat, 23 May 2026 12:39:09 +0800</lastBuildDate><atom:link href="https://synodriver.github.io/tags/c/index.xml" rel="self" type="application/rss+xml"/><item><title>NGINX Unit 架构与 Python 模块深度剖析：从 WSGI 到 ASGI 的 C 语言实现</title><link>https://synodriver.github.io/post/nginx-unit-architecture/</link><pubDate>Sat, 23 May 2026 12:39:09 +0800</pubDate><guid>https://synodriver.github.io/post/nginx-unit-architecture/</guid><description>&lt;p&gt;&lt;del&gt;虽然NGINX Unit已经archive了，但它是少有的用C实现异步python调用对象的例子，这个验尸还是有意义的&lt;/del&gt;&lt;/p&gt;
&lt;h2 id="1-nginx-unit-整体架构"&gt;1. NGINX Unit 整体架构&lt;/h2&gt;
&lt;p&gt;NGINX Unit 是一个开源的多语言应用服务器，由 NGINX Inc. 开发。与传统的 NGINX 不同，Unit 不仅支持静态文件服务和反向代理，还内建了多种语言运行时的直接支持，包括 Python、Go、Java、Node.js、Perl、Ruby 和 WebAssembly。&lt;/p&gt;</description></item><item><title>lua-nginx-module 设计思路与架构深度剖析</title><link>https://synodriver.github.io/post/lua-nginx-module-architecture/</link><pubDate>Fri, 15 May 2026 00:26:40 +0800</pubDate><guid>https://synodriver.github.io/post/lua-nginx-module-architecture/</guid><description>&lt;h1 id="lua-nginx-module-设计思路与架构深度剖析"&gt;lua-nginx-module 设计思路与架构深度剖析&lt;/h1&gt;
&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/openresty/lua-nginx-module"&gt;lua-nginx-module&lt;/a&gt;（又称 &lt;code&gt;ngx_lua&lt;/code&gt;）是一个将 LuaJIT 嵌入 Nginx HTTP 服务器的 C 语言模块，是 &lt;a href="https://openresty.org"&gt;OpenResty&lt;/a&gt; 的核心组件。它通过将 Lua 协程与 Nginx 事件模型深度融合，实现了 &lt;strong&gt;100% 非阻塞&lt;/strong&gt; 的网络 I/O 操作，使得在 Nginx 中编写高性能 Web 应用成为可能。本文基于模块源码（v0.10.29），从设计哲学、核心架构、关键机制等多个维度进行深入剖析。&lt;/p&gt;</description></item><item><title>PEP 7 – C 代码风格指南</title><link>https://synodriver.github.io/post/pep7/</link><pubDate>Mon, 04 May 2026 22:39:16 +0800</pubDate><guid>https://synodriver.github.io/post/pep7/</guid><description>&lt;h1 id="pep-7--c-代码风格指南"&gt;PEP 7 – C 代码风格指南&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;字段&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;作者&lt;/td&gt;
 &lt;td&gt;Guido van Rossum &amp;lt;guido at python.org&amp;gt;, Barry Warsaw &amp;lt;barry at python.org&amp;gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;状态&lt;/td&gt;
 &lt;td&gt;活跃（Active）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;类型&lt;/td&gt;
 &lt;td&gt;流程（Process）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;创建日期&lt;/td&gt;
 &lt;td&gt;2001-07-05&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E5%BC%95%E8%A8%80"&gt;引言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#c-%E6%A0%87%E5%87%86"&gt;C 标准&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E9%80%9A%E7%94%A8-c-%E4%BB%A3%E7%A0%81%E7%BA%A6%E5%AE%9A"&gt;通用 C 代码约定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%BB%A3%E7%A0%81%E6%8E%92%E7%89%88"&gt;代码排版&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%91%BD%E5%90%8D%E7%BA%A6%E5%AE%9A"&gt;命名约定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E6%96%87%E6%A1%A3%E5%AD%97%E7%AC%A6%E4%B8%B2"&gt;文档字符串&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E7%89%88%E6%9D%83"&gt;版权&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;本文档为构成 Python C 实现的 C 代码提供了编码规范。请参阅描述 Python 代码风格指南的配套信息性 PEP。&lt;/p&gt;</description></item><item><title>ESPHOME ai 教程</title><link>https://synodriver.github.io/post/esphome-instructions-zh/</link><pubDate>Tue, 28 Apr 2026 22:10:28 +0800</pubDate><guid>https://synodriver.github.io/post/esphome-instructions-zh/</guid><description>&lt;h1 id="esphome-ai-协作指南"&gt;ESPHome AI 协作指南&lt;/h1&gt;
&lt;p&gt;本文档为与本项目交互的 AI 模型提供必要的上下文。遵循这些指南将确保一致性并维护代码质量。&lt;/p&gt;
&lt;h2 id="1-项目概述与目标"&gt;1. 项目概述与目标&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主要目标：&lt;/strong&gt; ESPHome 是一个使用简单而强大的 YAML 配置文件来配置微控制器（如 ESP32、ESP8266、RP2040 以及基于 LibreTiny 的芯片）的系统。它生成可被编译并烧录到这些设备的 C++ 固件，允许用户通过家庭自动化系统远程控制它们。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务领域：&lt;/strong&gt; 物联网（IoT）、家庭自动化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-核心技术栈"&gt;2. 核心技术栈&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语言：&lt;/strong&gt; Python（&amp;gt;=3.11）、C++（gnu++20）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;框架与运行时：&lt;/strong&gt; PlatformIO、Arduino、ESP-IDF。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;构建系统：&lt;/strong&gt; PlatformIO 是主要构建系统，CMake 作为替代方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置：&lt;/strong&gt; YAML。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键库/依赖：&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python：&lt;/strong&gt; &lt;code&gt;voluptuous&lt;/code&gt;（配置验证）、&lt;code&gt;PyYAML&lt;/code&gt;（解析配置文件）、&lt;code&gt;paho-mqtt&lt;/code&gt;（MQTT 通信）、&lt;code&gt;tornado&lt;/code&gt;（Web 服务器）、&lt;code&gt;aioesphomeapi&lt;/code&gt;（原生 API）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C++：&lt;/strong&gt; &lt;code&gt;ArduinoJson&lt;/code&gt;（JSON 序列化/反序列化）、&lt;code&gt;AsyncMqttClient-esphome&lt;/code&gt;（MQTT）、&lt;code&gt;ESPAsyncWebServer&lt;/code&gt;（Web 服务器）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;包管理器：&lt;/strong&gt; &lt;code&gt;pip&lt;/code&gt;（Python 依赖）、&lt;code&gt;platformio&lt;/code&gt;（C++/PlatformIO 依赖）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通信协议：&lt;/strong&gt; Protobuf（原生 API）、MQTT、HTTP。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-架构模式"&gt;3. 架构模式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;整体架构：&lt;/strong&gt; 本项目采用代码生成架构。Python 代码解析用户定义的 YAML 配置文件，并生成 C++ 源代码。随后，该 C++ 代码通过 PlatformIO 被编译并烧录到目标微控制器。&lt;/p&gt;</description></item></channel></rss>