cl-bbs: 用Common Lisp重写的类schemeBBS文本公告板

Lobsters Hottest 工具

摘要

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/ 目录下的纯文本文件中。

相似文章

SBCL: 终极汇编代码面包板 (2014)

Hacker News Top

一篇技术博客文章,探讨如何使用SBCL作为汇编代码的面包板,重点介绍基于堆栈的虚拟机技术,如旋转堆栈和高效的原语操作分发,并引用了F18处理器和x87堆栈。

关于构建论坛软件的思考

Hacker News Top

作者反思使用AI编码工具构建论坛软件bsBB的经历。作为一名非专业程序员,他们分享了利用LLM处理底层细节同时专注于系统设计的经验。