5 zásad, které zrychlí SQL dotazy bez změny schématu

From BloomWiki
Revision as of 00:11, 12 October 2026 by 172.69.136.138 (talk) (Created page with "Jazyk a architektura: co si vybrat na začát<br><br>Dalším častým problémem je, že se v monorepu zapomíná na tagy v gitu. Každé vydání by mělo mít tag, který odpovídá názvu a verzi balíčku. Bez tagů se později těžko dohledává, co přesně bylo v jaké verzi. Zároveň je dobré mít v CI nastavené, že se publikuje jen to, co má novou verzi, a že se před publikací spustí testy pro všechny dotčené balíčky. Pokud tohle chybí, můžete...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Jazyk a architektura: co si vybrat na začát

Dalším častým problémem je, že se v monorepu zapomíná na tagy v gitu. Každé vydání by mělo mít tag, který odpovídá názvu a verzi balíčku. Bez tagů se později těžko dohledává, co přesně bylo v jaké verzi. Zároveň je dobré mít v CI nastavené, že se publikuje jen to, co má novou verzi, a že se před publikací spustí testy pro všechny dotčené balíčky. Pokud tohle chybí, můžete snadno publikovat balíček, který projde testy sám za sebe, ale rozbije závislý balíček.

JWT (JSON Web Token) je kompaktní způsob, jak bezstavově ověřovat požadavky na API. Token se skládá ze tří částí oddělených tečkou: hlavičky, payloadu a podpisu. Hlavička určuje algoritmus (např. HS256 nebo RS256), payload nese tzv. claims – obvykle identifikátor uživatele, roli, čas expirace (exp) a případně další metadata. Podpis zajišťuje integritu: pokud se payload změní, podpis přestane platit. Server token při každém požadavku pouze ověří podpisem a zkontroluje expiraci, takže nepotřebuje ukládat session.

Nástroje, které řeší změny a závislosti Pro monorepa se nejčastěji používají nástroje postavené na konvenčních commitech, jako je Changesets, Lerna nebo Nx. Fungují tak, že vývojář při změně přidá krátký soubor s popisem, co se změnilo a jaký typ změny to je – oprava, nová funkce, nebo breaking change. Nástroj pak při vydání sám spočítá nové verze, aktualizuje vzájemné závislosti a vygeneruje changelog. Klíčové je, že se verzování neřeší ručně, ale na základě těchto záznamů. Bez nich se dříve nebo později stane, že někdo zapomene zvýšit verzi u balíčku, který byl nepřímo ovlivněn.

Licenční podmínky nejsou jen paragrafy pro právníky. Určují, co smíte s produktem dělat, kolik lidí ho může používat a co se stane, když se něco pokazí. Kolegům bez právního vzdělání ale nestačí říct „přečtěte si EULA". Potřebují slyšet, co to znamená pro jejich každodenní práci.

Ukládání tokenu na klientovi je častý zdroj problémů. Prohlížečová aplikace by měla přístupový token držet v paměti a obnovovat ho pomocí refresh tokenu v HttpOnly cookie s atributy Secure a SameSite. Vyhněte se localStorage – je zranitelný vůči XSS. U mobilních aplikací použijte bezpečné úložiště (Keychain, Keystore). Při odhlášení nebo změně hesla nezapomeňte invalidovat refresh token na serveru, i když přístupový token still platí do své expirace.

Praktický postup: na začátku projektu věnujte odhadům celý den. Sepište všechny známé úkoly, u každého uveďte rozsah a poznámku o rizicích. Poté odhady projděte s kolegy – jiný pohled často odhalí opomenuté detaily. Během projektu odhady průběžně aktualizujte. Jakmile máte hotovou první třetinu práce, porovnejte skutečný čas s odhadem a upravte zbytek plánu. Tím se vyhnete fixaci na původní čísla, která už neplatí.

Důležité je také vysvětlit, proč na dodržování záleží. Nejde jen o pokutu. Nedodržení podmínek může znamenat, že firma přijde o podporu, o aktualizace nebo o možnost prokázat oprávněné užívání při kontrole. Uveďte reálný scénář: co se stane, když někdo použije licencovaný nástroj pro komerční projekt, na který se licence nevztahuje. Když lidé vidí dopad na svou práci, pravidla si zapamatují mnohem lépe než z výčtu paragrafů.

Mezi typické chyby patří: absence kontroly exp, nbf a iss, příliš dlouhá platnost, podepisování slabým klíčem, ukládání tokenu do URL (dostane se do logů) a chybějící revokace. Dále opomenutí omezení počtu požadavků na obnovení tokenu nebo nezvládnuté souběžné obnovy. Testujte scénáře, kdy token vyprší, je podepsán jiným klíčem nebo obsahuje pozměněné claims. Bezpečnost stojí na správné konfiguraci knihovny, krátké expiraci a obezřetném zacházení s klíči i s úložištěm na klientovi.

Monorepo s více balíčky znamená, že v jednom repozitáři spravujete několik samostatně publikovatelných knihoven nebo služeb. Verzování takového celku je jiné než u jednoho projektu. Nejde jen o to, jaké číslo verze napsat do souboru package.json, ale hlavně o to, jak zajistit, aby se verze jednotlivých balíčků neposouvaly chaoticky a aby na sebe závislosti správně navazovaly. Pokud tohle podceníte, dřív nebo později narazíte na nekonzistentní vydání, kdy jeden balíček vyžaduje verzi druhého, která ještě neexistuje.

Přeložte právní jazyk do běžných vět Většina nedorozumění vzniká kvůli slovům, která mají v právu jiný význam než v běžné řeči. „Nevýhradní licence" neznamená, že ji dostane jen jeden člověk, ale že ji může mít i někdo jiný. „Podlicence" není totéž co „převedení práv". „Oprávněný uživatel" nemusí být každý, kdo má přístup do systému. Vždy uveďte příklad: „Když to řekneme jednoduše, znamená to, že…" a doplňte, co z toho plyne pro tým. Vyhněte se ale zjednodušením, která mění význam — raději přiznejte, že na tuhle část je potřeba se zeptat právníka.