EN /HU | Belépés

Scriptorium BBS

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

Áttekintés

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:

  • Modern: ANSI-színek, ablakok, menük és egér (SyncTERM, NetRunner, PuTTY, bbsweb). Polcok, könyvek és fejezetek kétpaneles ablakokban, és egy olvasóablak, amely a fejezetet a saját szélességére tördeli.
  • Commodore 64: PETSCII 40×25-ön, C64-es terminálprogramhoz (CCGMS, Novaterm, UltimateTerm) WiFi-modem mögött. Egybillentyűs menü, számozott listák és 38 oszlopos oldalak, amelyek RETURN-re várnak.

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.

A könyvek

  • A katalógus a Project Gutenberg sajátja, a 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.
  • A Classics polc a board saját válogatása 36 ismert könyvből (config/classics.yml); már az első katalógusimport előtt is működik.
  • Egy könyv szövegét a board akkor tölti le a gutenberg.org-ról, amikor először megnyitják; megtisztítja (le a Project Gutenberg fej- és lábléce, a prózai sorok bekezdésekké fűzve), és a címsorai szerint fejezetekre vágja (CHAPTER, BOOK, PART, ACT, STAVE, LETTER, CANTO, római számok…), a tartalomjegyzéket kihagyva. A nagyon hosszú fejezetet részekre bontja, a címsor nélküli könyvet kb. 16 KB-os szakaszokra. A tisztított szöveg és a fejezetindex lemezes gyorsítótárban marad (300 MB, a legrégebben olvasott megy ki elsőként), a memóriába csak a képernyőn lévő fejezet kerül.
  • A Most read a boardon megnyitott könyveket számolja, hívásonként egyszer.

Minden könyvoldal feltünteti a forrást: eBook #N from Project Gutenberg, gutenberg.org/ebooks/N — public domain in the USA.

Olvasás

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.

Beállítások és adatok

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 motorháztető alatt

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.