gitea-actionsandClaude Opus 5 85b6618952 binárka ke stažení a jasné místo pro databázi
Stáhni a spusť: jednosouborová binárka pro Linux, uvnitř Python, Flask,
šablony i styly. Staví se ./build.sh v kontejneru na AlmaLinux 8, protože
binárka slinkovaná proti glibc z Fedory 44 by nešla spustit nikde se
starším systémem.

Databáze tím dostává dvě různá místa. Ze zdrojáků zůstává dice.db
v pracovním adresáři, ať se dá mít víc sad vedle sebe. Z binárky jde do
~/.local/share/kostky/ — binárka se rozbaluje do dočasného adresáře
a pouští se odkudkoli, takže relativní cesta by databázi rozsypala po
disku. DICE_DB přebije obojí.

Server teď cestu k databázi vypisuje při startu, ať se na ni nemusí ptát.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 17:12:25 +02:00

Počitadlo v kostkách

Doprovod k fyzickým kostkám: telefon zapisuje skóre, notebook ukazuje zápisník a hry se pamatují mezi večery.

Hráči se napříč hrami poznávají podle jména — Adam ze středečního večera je ten samý Adam jako z minulého měsíce. Žádné účty, žádná hesla.

Spuštění

Stáhni binárku z releases a spusť ji:

chmod +x kostky
./kostky

Nic se neinstaluje — Python, Flask i šablony jsou uvnitř. Zatím jen pro Linux na x86-64; postavené proti glibc 2.28, takže jede na všem od RHEL 8, Debianu 10 a Ubuntu 20.04 výš.

Ze zdrojáků to je stejně krátké:

uv run web.py

Závislosti si skript nese v hlavičce (PEP 723) a uv je obstará sám.

Server vypíše všechny adresy, na kterých je dostupný:

Počitadlo je dostupné na:
 → http://10.186.234.182:8000     místní síť
   http://100.91.0.24:8000        přes Tailscale
   http://172.17.0.1:8000         virtuální síť

Na notebooku otevři /board, naskenuj QR kód telefonem a hraj. Tabule zobrazuje i zbylé adresy — když jedna nefunguje, zkus další. Zastavuje se Ctrl+C.

Proměnná K čemu je Výchozí
DICE_DB soubor s databází podle způsobu spuštění, viz níž
DICE_PORT port 8000
DICE_HOST pevná adresa; vypne hledání hledá se za běhu

Kde jsou data

Jeden soubor SQLite. Založí se sám při prvním načtení stránky, cestu k němu server vypíše při startu.

Spuštěno Databáze
binárkou ~/.local/share/kostky/dice.db
ze zdrojáků dice.db v pracovním adresáři

Binárka se při každém spuštění rozbaluje do dočasného adresáře a pouští se odkudkoli, takže relativní cesta by databázi rozsypala po disku — proto napevno domovský adresář. Ze zdrojáků zůstává relativní, ať se dá mít víc sad vedle sebe.

Zálohovat i stěhovat jde prostým zkopírováním souboru; DICE_DB si ho najde kdekoli.

Počítá se s domácí sítí — appka nemá přihlašování a kdokoli na stejné WiFi může zapisovat.

Když se telefon nepřipojí

Adresy se hledají při každém načtení tabule, takže přechod z domácí WiFi na hotspot a zpátky si tabule pohlídá sama a načte se znovu.

Zbývají tři důvody, proč se telefon nedostane na notebook:

  • Telefon je na mobilních datech, notebook na WiFi. Různé sítě, nepotkají se. Připoj telefon na stejnou WiFi, nebo notebook na hotspot telefonu — to funguje taky.
  • Zapnutý hotspot na telefonu shodil jeho WiFi. Většina Androidů to dělá. Pak je řešením připojit na ten hotspot i notebook.
  • VPN nebo Tailscale exit node na telefonu posílá veškerý provoz mimo místní síť. V Tailscale to řeší přepínač „Allow local network access"; případně použij tailnet adresu notebooku, ta funguje odkudkoli.

Pravidla

Skóre se zadává ručně po tazích, hází se doopravdy. Tři nulové tahy za sebou vynulují hráči skóre; indikátor x / xx ukazuje, jak blízko k tomu je. Vítěz se vyhlašuje až po dokončeném kole, aby měli všichni stejný počet tahů — při remíze na prvním místě se hraje dál.

Co kde je

Soubor Role
core.py pravidla hry, žádný vstup ani výstup
net.py hledání adres, na kterých je počitadlo dostupné
storage.py SQLite: hráči, hry, tahy
stats.py síň slávy a kariérní statistiky
web.py Flask aplikace
dice.py totéž v terminálu, bez ukládání
build.sh, kostky.spec stavba binárky

Terminálová verze zůstává funkční jako záloha:

uv run dice.py

Bez uv

Když uv po ruce není, jde to postaru:

python -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python web.py

Na Fedoře stačí i systémové balíčky, pak se nemusí řešit vůbec nic:

sudo dnf install python3-flask python3-qrcode python3-tabulate
python3 web.py

Vlastní binárka

./build.sh

Staví se v kontejneru (podman nebo docker) na AlmaLinux 8, ne na hostiteli. Binárka slinkovaná proti glibc z Fedory 44 by nešla spustit nikde se starším systémem — glibc drží zpětnou kompatibilitu, ne dopřednou. Výsledek je v dist/kostky.

Terminálová verze součástí binárky není; ta se pouští ze zdrojáků.

Testy

uv run --with-requirements requirements.txt --no-project pytest

Nebo z připraveného prostředí prostě pytest.

S
Description
No description provided
Readme
515 KiB
0 Stars 1 Watchers 0 Forks
2026-08-23 23:15:56 +02:00
Languages
Python 65.1%
HTML 12.4%
Shell 12.3%
CSS 8.4%
Dockerfile 1.8%