cl-bbs: 用Common Lisp重写的类schemeBBS文本公告板
摘要
cl-bbs 是一个用 Common Lisp 编写的高性能匿名文本公告板引擎,忠实复刻了原始 SchemeBBS 的风格。它提供格式化支持、图片预览以及零 JavaScript 渲染等功能。
<p>我非常喜欢文本公告板,我认为它们比像 Reddit 这样的贴图公告板更优越。我非常喜欢无认证的应用,因为它们简单且注重隐私,没有像强密码学那样复杂的问题。</p>
<p>过去两年里,我一直托管着一个 SchemeBBS 实例,但 MIT Scheme 并不是我最喜欢的 Lisp,而且我认为其生态系统相当有限,无法让应用程序随着我所需的功能而成长。与 schemeBBS 的主要不同特性包括:</p>
<ul>
<li>持久化偏好设置,例如主题和默认板块</li>
<li>图片 URL 预览(这有点跨越文本公告板的概念,但非常实用——反正没有图片托管)</li>
<li>用于内容审核的管理页面</li>
<li>搜索系统</li>
</ul>
<p>我希望得到任何形式的反馈,感谢您的关注。</p>
<p><a href="https://lobste.rs/s/wgpa6x/cl_bbs_schemebbs_like_textboard">评论</a></p>
查看缓存全文
缓存时间: 2026/06/22 01:29
区块。
- 帖子引用:
>>7会被动态超链接到线程页面内的锚点。 - 图片直链预览: 指向图片的直接链接(
.png、.jpg、.jpeg、.gif、.webp、.bmp)会自动转换为优雅的可点击图片预览。 - 标准URL: 标准URL会自动格式化为标准超链接。
- 动态版面头部: 居中或左对齐的版面列表头部(例如
[ foo | prog ])会被扫描并动态显示在每个页面的顶部。 - 主题偏好(Cookies): 在
/board/preferences页面可选择多个主题(default、classic、dark、mona、no)。选择结果存储在浏览器 Cookie(theme)中,并持久保留。 - 零 JavaScript 要求: 应用完全由服务器端渲染。
- 本地 Qlot 沙箱: 通过
qlfile锁定沙箱依赖,确保跨环境的向后兼容性。 - 29 断言测试套件: 全面的测试覆盖,验证 Cookie、路由管道和格式化规则。
快速开始
前置条件
您必须已安装 Roswell 和 Qlot:
# 安装 Roswell
# (按照 Roswell 平台说明操作)
# 安装 Qlot
ros install qlot
安装
克隆仓库并在本地安装依赖:
# 在本地获取并锁定依赖
qlot install
运行服务器
启动 Hunchentoot/Clack 服务器:
make server
服务器将启动并在本地监听端口 8222。
运行测试
执行自动化的 Parachute 测试套件:
make check
配置
您可以通过环境变量配置服务器:
SBBS_DATADIR:数据目录,用于存储版面的 S 表达式数据库文件(默认:data/)。SBBS_LOCKED_BOARDS:以逗号分隔的版面列表,这些版面将被锁定为只读模式。在这些版面上无法创建新主题,也无法发表评论/回复(例如:SBBS_LOCKED_BOARDS=foo,bar)。这些版面前端的发帖表单也会被隐藏。SBBS_ADMIN_USER:管理面板的用户名(默认:admin)。SBBS_ADMIN_PASSWORD:管理面板的密码(默认:superchanner)。
技术栈
- Lisp: 通过 Roswell 加载的 Common Lisp(SBCL)。
- Web 服务器: Hunchentoot、Clack、Lack。
- HTML 模板:
cl-who(HTML 生成)。 - 数据存储: 以 S 表达式文件形式保存,存储在
data/sexp/目录下的纯文本文件中。
相似文章
LispBM 是一种面向微控制器的并发Lisp,支持消息传递。
LispBM 是一个开源的并发Lisp实现,专为微控制器设计,支持消息传递和WebAssembly,可用于在线测试。
SBCL: 终极汇编代码面包板 (2014)
一篇技术博客文章,探讨如何使用SBCL作为汇编代码的面包板,重点介绍基于堆栈的虚拟机技术,如旋转堆栈和高效的原语操作分发,并引用了F18处理器和x87堆栈。
关于构建论坛软件的思考
作者反思使用AI编码工具构建论坛软件bsBB的经历。作为一名非专业程序员,他们分享了利用LLM处理底层细节同时专注于系统设计的经验。
Biff.core: 用于Clojure Web应用的系统组成
Biff.core是一个新库,为Biff项目提供系统组成和接口,允许将样板代码干净地提取到带有init函数的模块中。
Clamiga: 用于 Amiga 的 Common Lisp
Clamiga 是一个用于 Amiga 系统和其他平台的 Common Lisp 实现,具有字节码虚拟机和交互式开发功能。