HN 日本語サマリー

← 一覧へ戻る
プログラミング

CL-BBS: Common Lispで書き直されたSchemeBBS風テキスト掲示板

CL-BBS: the schemeBBS-like textboard rewritten in Common Lisp (github.com)

37 pointsby lerax1 コメント

要約

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式ファイル。