Find a file
Pavel "LEdoian" Turinsky af6628367f Testy: Schováváme si databázi napříč běhy
Při běžení testů nejdéle trvá namigrovat (prázdnou) databázi. Toto tento
krok přeskočí.

By default django pro testy používá in-memory SQLite3 databázi, která se
schovat přirozeně nedá. Používání souborů trvá déle (data níž), ale
další běhy už jsou rychlé.

Zatím nevím, jestli se někde nemůže omylem schovávat nějaký nežádoucí
stav, ale testy mi i opakovaně běží, takže se to asi nerozbíjí úplně
moc. Na první pohled je uložená databáze prázdná.

Pro produkci a CI bych klidně běžel testy od nuly, tam nevadí čekat pár
desítek sekund až jednotky minut na výsledek. Tato optimalizace je
důležitá jen pro lokální vývoj, kde je žádoucí mít testy co
nejrychlejší.

V .gitignore už přesně toto jméno souboru je. Nevím proč, ale možná to
tak bylo by default v některém dávném Djangu.

Data
---
Spouštěl jsem příkaz `time ./manage.py test [--keepdb] api`. Běhy byly
relativně konzistentní (±1 s) a trvaly u mě:
- In memory SQLite (default): 26 s
- První spuštění s db na disku (HDD): 44 s
- Následná spuštění: 7.7 s
Data jsou nejspíš zkreslena tím, že všechno je nejspíš nacachované v
systému, ale i tak je vidět zřetelné zrychlení.

Původní motivace: úplně triviální a nedatabázový test na starém
notebooku běžel kolem 3:14, což je zoufale nepoužitelné když si chci
napsat testy jako pomůcku pro vývoj.
2023-01-04 01:51:02 +01:00
_git_hooks Flake8: oprava nekontrolování migrací v pre-commit 2016-11-08 10:54:00 +01:00
aesop První dokumentace 2022-02-15 17:48:16 +01:00
api fix: řešitelé mají být vidět jen ti, kteří neodmaturovali 2022-12-20 12:40:55 +01:00
data http -> https 2022-12-19 23:04:28 +01:00
deploy_v2 Model pro deadline 2022-10-01 11:25:53 +02:00
docs Merge branch 'dokumentace' 2023-01-02 22:33:33 +01:00
galerie První dokumentace 2022-02-15 17:48:16 +01:00
header_fotky Odsazení pomocí tabulátorů [NOT CHECKED] 2022-11-29 00:40:18 +01:00
ilustrace_odmeny Obrazky kolem odmen 2021-09-02 18:23:49 +02:00
korektury Merge remote-tracking branch 'gitea/master' into neirelevantni 2022-12-16 23:57:15 +01:00
make Testy: Schováváme si databázi napříč běhy 2023-01-04 01:51:02 +01:00
mamweb Testy: Schováváme si databázi napříč běhy 2023-01-04 01:51:02 +01:00
odevzdavatko fix: ….objects.get(…) -> get_or_404 2023-01-02 21:52:19 +01:00
personalni fix: řazení řešitelů v adminu podle příjmení 2023-01-02 20:46:05 +01:00
prednasky Fix: #1331 2022-11-07 22:53:08 +01:00
seminar fix: ….objects.get(…) -> get_or_404 2023-01-02 21:52:19 +01:00
setup Přesunutí uwsgi configu v systemd službě 2021-11-07 12:20:45 +01:00
soustredeni Odsazení pomocí tabulátorů [NOT CHECKED] 2022-11-29 00:40:18 +01:00
treenode fix: tohle předělání mezer na taby vypadalo podezřele, tak jsem to upravil 2022-12-06 01:02:38 +01:00
various Odsazení pomocí tabulátorů [NOT CHECKED] 2022-11-29 00:40:18 +01:00
vue_frontend Oprava URLs v celém gitu 2021-03-09 22:44:42 +01:00
vysledkovky add: typová anotace 2023-01-02 21:40:07 +01:00
.editorconfig Komentáře česky 2022-11-16 21:20:09 +01:00
.gitignore Pár prvních pokusů 2022-02-10 14:01:03 +01:00
checklinks.sh checklinks: zobrazit i jediný rozbitý odkaz 2021-11-26 05:33:24 +01:00
constraints.txt Constrainty pro nový web nemáme, a staré fakt nechceme :-) 2021-09-06 04:48:30 +02:00
convert_spaces_to_tabs.sh Změna mezer na tabulátory 2019-05-11 01:15:05 +02:00
diff_db_backup.sh Update diff tool 2015-07-29 12:06:08 +02:00
fix_json.py Pridan skript na jednoznacnejsi razeni jsonu. 2021-01-26 20:21:18 +01:00
Makefile Make: výchozí target se jmenuje default 2022-11-20 04:13:15 +01:00
manage.py Nový Makefile. Bude vyžadovat změny uWSGi configu. 2019-04-23 22:34:05 +02:00
README.md Předěláno Readme 2022-11-20 15:38:41 +01:00
requirements.txt Merge pull request 'Fix: #910' (!5) from django_cleanup into master 2022-11-21 22:04:37 +01:00

Web M&M

Tohle je repozitář s kódem M&Mího webu. Pokud zde hledáte web samotný nebo informace o semináři, najdete je na https://mam.matfyz.cz (a upřímně nechápu, jak jste se dostali k tomuhle textu :-D)

Pokud jste tu zůstali, tak vás beztak zajímá vývoj webu (a jestli ne, tak budeme rádi, když začne :-)).

Co je M&Mweb uvnitř

Celý náš web je napsaný v Pythonu ve frameworku Django. Web běží na serveru zvaném Gimli, jako databázi používá PostgreSQL (pro lokální vývoj naopak SQLite) a všechen náš kód je uložený v Gitu na téhle gitee. Pro dokumentaci používáme Sphinx.

Jak si web pořídit

Prosím přečti si podrobnější návod v <docs/vyvoj.rst> (tady by bylo zbytečné ho duplikovat).

Jak web vyvíjet

Na webu je mnoho věcí k dělání, některé ani nevyžadují kódění (třeba uhánění orgů, aby si psali medailonky, aktualizace fotek, …), některé se naopak týkají infrastruktury pod kódem (Gitea, Gimli, …). Je proto těžké mít na to úplně obecný návod, tak tady je zhruba návod na úpravy kódu a pokud se něco z toho nedá aplikovat, tak to prostě zkus nějak udělat jinak, po svém. (Omlouvám se neinformatikům, ale líp to teď nesepíšu :-))

  1. Nejprve si stáhni repozitář a rozběhni si lokální web u sebe (viz <docs/vyvoj.rst>).
  2. Najdi si problém v Kanboardu (klikni na „Issues“ na Gitee) a/nebo se domluv s webaři, na čem bys tak mohl/a pracovat.
  3. Najdi místo, kde se to dá opravit a zkus to tam opravit. Uznávám, že tenhle bod je otravně obecný, pokud tápeš, zkus se zeptat zkušenějších webařů nebo podívat do dokumentace.
  4. Vyzkoušej, že ti to lokálně funguje tak, jak má.
  5. Zvládneš-li a máš-li čas, zkus to i zdokumentovat a/nebo napsat testy (TODO: chybí návod)
  6. Po dohodě s webaři to vyzkoušej na testwebu
  7. Pošli pull-request a případně zkus reagovat na komentáře
  8. Až se změna začlení do hlavní větve (master) a nasadí se web na produkci, můžeš mít radost, že se web bude používat lépe Tobě i ostatním orgům :-)

Proč pull-requesty?

Účelů pull-requestů je několik. Jednak doufáme, že pomůže webařům se orientovat v kódu, jednak tím umožňujeme dělat experimenty a dávat si zpětnou vazbu. V neposlední řadě pomáhají držet aspoň trochu konzistentní kód, což má pomoci pohodě při programování… (A asi jsem na něco zapomněl :-))