关于笔记系统和博客

目录:杂谈  |  发表于:2023-12-25 23:30:00

经过一段时间的努力,新的博客系统终于上线啦😎~ 目前我的小站Gacfox's Blog包含博文笔记知识库两大主要版块以及其它杂项内容。这里简单介绍一下本站搭建过程中的曲折经历。

原始时代

很久很久以前的某天,我突发奇想要搭建网站。经过一番“技术调研”后,我决定用免费的000webhost虚拟主机搭建博客网站。当时费了不少功夫,用Dreamweaver 8“画”了一个现在看起来UI设计不堪入目的静态页面,之后又折腾了一番FTP,总算是把网页上传到了主机上。不过由于技术水平有限,加上免费虚拟主机极不靠谱,小站没运行一个月就不再维护了。

几年后,我稍微掌握了一些“信息技术”,了解了PHP这门编程语言,于是采用了一个稍微靠谱的方案:WordPress + OpenShift。当年OpenShift简直就是开发者的福利,不仅提供永久免费的云主机,还支持ssh连接(尽管没有root权限),而且平台本身也相当稳定。可惜后来平台改版,不再提供这些服务了。那段时间我没少折腾WordPress,各种插件、主题装了又卸,但正文内容却不知道要写什么,所以后来失去兴趣后就又渐渐不维护了。之后很长时间都没有正式重建博客网站。期间学习了一些Java,用SpringMVC/Spring/Hibernate写了一个博客系统Demo并部署到了OpenShift上,但因为内容匮乏也没能持续运行太久。

各种笔记软件

在那之后,我开始养成学习新知识后写笔记的习惯。最开始我的笔记就是一堆Word、PDF文档,这种记法缺点很明显,因为很难从几十个文档中迅速找到所需内容。

后来我开始研究各种笔记软件,最开始是用EverNote,后来又陆续尝试了OneNote、为知笔记、有道云笔记等。这些都是商业软件,而且几乎每个都有巨大的坑点,没有一个完全靠谱。被坑了一圈后,我尝试过CherryTree、Joplin等开源软件,也尝试过Logseq等新型笔记软件,但还是不符合我的期望。这些笔记软件最大的问题是它们存储内容底层使用的是不太通用的格式,即使有导出功能,导出的文档格式也会破损甚至丢失内容😱。

转战Markdown

经过几次痛苦的迁移后,我决定Markdown纯文本文件是唯一选择,不再考虑其它。于是很长一段时间内,我的笔记系统就是Markdown + Atom + Git,至今除了Atom被迫换成了VSCode,其他依然没变🥰。

note2blog

有了大量Markdown笔记后,做一个博客网站至少不会再缺内容了,我开始琢磨如何把这些笔记转换成博客页面部署在互联网上。经过一番尝试,我写了一个名为note2blog的系统,它能够加载一个约定格式的Markdown笔记库目录,总而言之它类似于如今流行的Hexo。不同之处在于note2blog的Markdown编译阶段发生在浏览器里,它是个纯静态的网站,因此可以部署在Github Pages上。那个网站运行了挺长一段时间,直到我发现我的Github Pages仓库被下载下来出现在了CSDN上😡(下载还要积分囧),于是那个Repo立刻被我删除了,并逐步联系客服删除被散播到其他平台的内容。

之后我把程序架构改成了带服务端的版本,后端用PHP编译Markdown后再输出,这样别人就不会轻易拿到原文件了。但这个PHP版的note2blog又犯了一个错误:大概是编写代码的时候带着怨气,我把PHP、HTML、JavaScript、SQL全写在了一个文件里,它的代码很快就难看到无法维护了。

新的博客系统

在那之后又过了很长时间,我终于下定决心重新开发一个博客系统。为什么不用现成的博客系统呢?因为我的需求有点特殊,除了一般的博客文章,我还需要从Git仓库加载一个特定目录结构的笔记库。如果使用WordPress等系统也仍然需要二次开发,不如从头写一个。

本站的架构比单纯的WordPress复杂一点,简单来说,服务端是基于Django和DRF编写的,一些AI功能使用了LangChain,AI后端则是调用Gemini和Cohere的免费API。而网站前端使用了NextJS,这是一个能充分利用SSR/SSG的现代化前端框架,页面样式用了NextUI组件库(Bug多,后悔,不推荐)和TailwindCSS方案。至于管理后台,最初版本是基于Django Admin的,目前则已经按计划迭代,完全更新到了采用TypeScript/Umi/Antd编写的新后台。至于后续,将采用随缘开发模式,面向心情编程,不定时停机维护和更新🤣。

本站源码不会开源(因为代码质量不高😝,而且功能都是定制化的不够通用)不过依然希望这段经历能对你有所启发,也欢迎大家多多访问和交流❤️!

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap