プログラミング
CL-BBS: Common Lispで書き直されたSchemeBBS風テキスト掲示板
CL-BBS: the schemeBBS-like textboard rewritten in Common Lisp (github.com)
要約
CL-BBSは、Common Lispで書かれた高性能な匿名テキスト掲示板エンジンです。これは、オリジナルのMIT SchemeBBSのモダンなクローンであり、シームレスなレイアウト、多様な書式設定、画像プレビューなどの機能を備えています。JavaScript不要のサーバーサイドレンダリングで動作し、堅牢なテストスイートと環境変数による簡単な設定オプションを提供します。
全文翻訳
cl-bbsは、Common Lispで書かれた匿名テキスト掲示板(BBS)エンジンです。オリジナルのMIT Scheme SchemeBBS(dis.4chan.orgとworld4ch /prog/のバックエンドで動作していた)の高性能でモダンなクローンです。
**機能**
* **シームレスなSchemeBBSレイアウト**: スレッド、インデックスリスト、投稿を定義リスト(<dl>、<dt>、<dd>)内に表示し、オリジナルのSchemeBBSスタイルに完全に準拠しています。
* **単一の末尾フォーム**: 1つの投稿フォームがスレッドの最後にレンダリングされるという、オリジナルのテキスト掲示板のパラダイムに準拠しています(投稿ごとのフォームはありません)。
* **包括的な書式設定サポート**:
* **太字**: **text** -> <b>text</b>
* **斜体**: __text__ -> <i>text</i>
* **等幅フォント**: `text` -> <code>text</code> (標準のバッククォート記法を使用)
* **ネタバレ**: ~~text~~ -> <del>text</del>
* **引用**: >で始まる行は<blockquote>ブロックとしてレンダリングされます。
* **投稿参照**: >>7はスレッドページ内のジャンプアンカーに動的にハイパーリンクされます。
* **直接画像リンクプレビュー**: 画像(.png, .jpg, .jpeg, .gif, .webp, .bmp)への直接リンクは、自動的にクリック可能なエレガントな画像プレビューに変換されます。
* **標準URL**: 標準URLは自動的に標準ハイパーリンクとしてフォーマットされます。
* **動的なボードヘッダー**: 中央揃えおよび左揃えのボードリストヘッダー(例:[ foo | prog ])はスキャンされ、すべてのページ上部に動的に表示されます。
* **テーマ設定(Cookie)**: /board/preferencesページで複数のテーマ(default, classic, dark, mona, no)から選択できます。選択内容はブラウザのCookie(theme)に保存され、永続化されます。
* **JavaScript不要**: アプリケーションは完全にサーバーサイドレンダリングされます。
* **ローカルQlotサンドボックス**: 環境間の後方互換性を保証するために、qlfileを介して固定されたqlotサンドボックス依存関係。
* **29アサーションのテストスイート**: Cookie、ルーティングパイプライン、書式設定ルールを検証する包括的なテストカバレッジ。
**はじめに**
**前提条件**
RoswellとQlotがインストールされている必要があります。
```
# Install Roswell
# (Follow Roswell platform instructions)
# Install Qlot
ros install qlot
```
**インストール**
リポジトリをクローンし、ローカルに依存関係をインストールします。
```
# Fetch and lock dependencies locally
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生成)。
* **データストア**: data/sexp/下のプレーンテキストファイルに保存されるS式ファイル。