使用电脑端体验更佳
如何从0搭建一个博客:漫长的结尾
发布于:
## 前导 在完成了Http2后(已经是一年前的事情了),这个博客已经基本可用了! 当然也只是基本,考虑到博客诞生之初的目的可能就是文字的互联网展板,那就是够用的 于是我开始在这一年里尝试加上一些有用的features ## 1. 评论区 评论区是一个很复杂的东西.. 它为什么复杂呢..因为不仅要给数据库多一张表,还要多几个管理后台页面,然后可能还要处理一些奇奇怪怪的事情,比如如何通知到评论者,如何防止评论者干坏事,如何在前端页面上表面评论的从属关系....等等等等 我不是很想去做这些脏活...特别是前端方面的 我觉得[Artalk](https://artalk.js.org/)就很好 独立于网站的单Go服务器,使用的也是SqlLite3,还有反垃圾评论的机制,同时内存占用低,棒极了 除了有几点不太好 - 前端可能要自己改一下来适配前端的风格,服务离线的时候也需要改一下... ## 2. 站长统计 我一直漏了这块,因为曾经我以为很简单 我做了个简单的网站浏览数据记录,还有博客点击数据记录 结果发现数据统计原来不止这些 referrers统计,能知道用户从哪里跳转过来的 浏览器/浏览设备/系统统计 - 做更好的前端优化! 这块可选项很多,我选择了[GoatCounter](https://www.goatcounter.com/),依然是Sqlite3+Go的本地部署组合,轻量且舒适 这些站长统计工具都要求你在网页中内嵌一些元素来达到追踪的效果,GoatCounter是通过嵌入一张图片标签做到的,猜测是后端派发图片的时候顺手把请求信息记录下来了吧~ ## 3. RSS rss是今天的重头戏,首先是RSS是如何运作,干什么的 RSS(Really Simple Syndication,简易信息聚合)是一种能够让你主动订阅网站更新的内容聚合协议。 网站生成一个自动更新的 XML 格式文件,这个文件里包含了所有文章的简介信息,可供其他人抓取。 这部分必须要在后端实现了 我的做法是每次在一篇新文章加入的时候,重新构建这个rss.xml,缓存。 xml的格式差不多是这样 ``` xml <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <!-- channel 标签代表这个 RSS 源(Feed)的整体信息 --> <channel> <title>我的技术博客</title> <link>https://example.com</link> <description>关注 Graphics Engineering 与 Rust / Go / C++ 开发</description> <language>zh-cn</language> <lastBuildDate>Mon, 24 Aug 2026 10:00:00 +0000</lastBuildDate> <!-- 单篇文章 1 --> <item> <title>这个就是标题呀</title> <link>https://feiqi3.cn</link> <description><![CDATA[<p>这个就是介绍呀...</p>]]></description> <pubDate>Mon, 24 Aug 2026 08:30:00 +0000</pubDate> <guid isPermaLink="true">https://example.com/posts/vulkan-deferred-shading</guid> </item> </channel> </rss> ...... ``` 用inja建立模板,然后把他们渲染出来就好了惹 ## 后记 这个系列攥写于去年的年中,结束于今天。 我不是很想回忆第一行代码写下的时候,在ai仅仅存在于聊天框的时候,写代码还是一件很有成就感的事情,成就感来源于写代码时Debug的痛苦,当AI帮我承担了这份痛苦后,写代码就像吃燕麦片的时候不配牛奶或者水,我在为了生存努力咽下索然无味的食物。 嗯,在ai的帮助下,好像再也没有什么需要长篇大论的东西了,我想我未来也不会再写出第二个超过万行的项目了... 做博客的过程中,我最大的成就感来源于Https的实现:打开网站的时候不用再点击什么无视风险了!还有Http2的实现:和未来接轨 看到这里的人,你们是不是也经历过一样的痛苦呢。 但是这些痛苦再也不重要,不再有意义 AI的出现使我们关注事物本身的价值,而非纠结于完成事物的路径 也迫使我审视自己做的一切的意义 但无论如何,我还有这个博客 真是一个漫长的结尾 <audio controls> <source src="https://pic.feiqi3.cn/media/Upside%20Down.mp3" type="audio/mpeg"> 您的浏览器不支持音频播放。 </audio>