A BBS-hálózat könyvtára: a Project Gutenberg több ezer közkincs könyve, lapozható fejezetekre vágva, modern terminálra vagy Commodore 64-re.
Elérhető:
teletypegames.org:2330, böngészőben a bbsweb-en, és a TTG Gate BBS-en át is
Ruby-alkalmazás a rubbs gemre építve, mint a Teletype BBS, az Alexandria BBS és a Commodex BBS.
Két arca van egy porton:
A hívás a rubbs BBS::Terminal kérdésével indul: a RETURN elfogadja a tippet, az 1 a modern arcot, a 2 a C64-est választja.
pg_catalog.csv.gz (kb. 78 000 szöveg és 400 könyvespolc). A board SQLite-ba importálja, teljes szöveges indexszel a címeken és a szerzőkön, és hetente újraolvassa; az új elkészültéig a régi szolgál ki. Minden keresőszó szókezdetként illeszkedik, az ékezet nem számít (a bronte megtalálja a Brontët), a lang:fr pedig egy nyelvre szűr.config/classics.yml); már az első katalógusimport előtt is működik.Minden könyvoldal feltünteti a forrást: eBook #N from Project Gutenberg, gutenberg.org/ebooks/N — public domain in the USA.
Modern terminálon:
| Billentyű | Művelet |
|---|---|
| F2 | A Classics polc |
| F3 | Keresés cím vagy szerző szerint |
| F4 | A Project Gutenberg könyvespolcai |
| F7 | A boardon legtöbbet olvasottak |
| Enter vagy Alt-R | Könyv megnyitása / fejezet olvasása |
| PgUp, PgDn, Home, End | Lapozás az olvasóban |
| ← → vagy P, N | Előző / következő fejezet |
| F5 vagy Alt-Enter | Teljes képernyő és vissza |
| Alt-X | Kilépés |
Commodore 64-en a menü: 1 a Classics, 2 a könyvespolcok, 3 keresés, 4 a legtöbbet olvasottak, A névjegy, Q kilépés. Egy könyvnek van egy adatlapja és egy számozott fejezetlistája; az olvasóban a RETURN a következő oldalt adja (a fejezet végén a következő fejezetet), a B egy oldalt vissza, az N/P fejezetet vált, a Q vissza a listához. A görbe idézőjeleket, a gondolatjeleket és az ékezetes betűket a board a C64 által megjeleníthető jelekre cseréli.
| Változó | Alapérték | |
|---|---|---|
SCRIPTORIUM_BBS_MIRROR |
https://www.gutenberg.org |
ahonnan a szövegek jönnek; tükör is lehet |
SCRIPTORIUM_BBS_CATALOG_URL |
https://www.gutenberg.org/cache/epub/feeds/pg_catalog.csv.gz |
a katalógus |
SCRIPTORIUM_BBS_CATALOG_TTL |
7 |
ennyi nap után olvassa újra a katalógust |
SCRIPTORIUM_BBS_CLASSICS |
config/classics.yml |
a Classics polc |
SCRIPTORIUM_BBS_DB |
data/catalog.sqlite3 |
az importált katalógus |
SCRIPTORIUM_BBS_CATALOG_FILE |
data/pg_catalog.csv.gz |
a letöltött katalógus |
SCRIPTORIUM_BBS_TEXTS |
data/texts |
a szöveg-gyorsítótár |
SCRIPTORIUM_BBS_CACHE_MB |
300 |
a szöveg-gyorsítótár mérete |
SCRIPTORIUM_BBS_BOOK_MAX |
8388608 |
a legnagyobb letöltött könyv, bájtban |
SCRIPTORIUM_BBS_READS |
data/reads.jsonl |
az olvasások, soronként egy JSON |
A boardnak nincs titka. Ha a fejezetszabályok változnak, ürítsd a data/texts-et, hogy a tárolt könyveket újravágja.
A masterre pusholás a Woodpeckerből élesít (RuboCop, compose-ellenőrzés, ci-deploy scriptorium-bbs); a konténer neve scriptorium-bbs, a helye /srv/stacks/scriptorium-bbs, a data/ megmarad a deployok között. Az entrypoint induláskor frissíti a rubbs-t.
A kód a házi rétegezést követi: a lib/domain (a könyv-, polc-, fejezet- és szövegmodell; a Gutenberg-, katalógus-, classics-, olvasás- és szöveggyorsítótár-repository; ChapterService, LibraryService, ReadingService; a ScriptoriumBBS kompozíciós gyökér) semmit sem tud a telnetről, a lib/ui pedig a UI::Modern-t a ReaderWindow-val és a UI::Petscii-t tartalmazza. A board egyszerre egy könyvet tölt le és vág fel, így egy rakás új könyv sem lépi túl a memóriakorlátot.