Fixní rovnátka versus snímací: co rozhoduje o hygieně
Stůl postavte bokem k oknu, ne přímo proti němu. Přímé světlo do očí unavuje a na obrazovce dělá odlesky. Doplněk tvoří stolní lampa s teplým světlem, kterou nasměrujete na desku, ne do očí. Kabely řešte hned na začátku, jinak se z nich stane trvalý chaos. Použijte lištu připevněnou pod stolem, pásky na suchý zip a jednu prodlužovací zásuvku s vypínačem. Nabíječky a disky uložte do krabice nebo zásuvky, kterou po práci zavřete.
Keramická rovnátka vypadají nenápadně, ale jejich povrch je náchylnější k zachycování pigmentů než kov. Záleží tedy méně na tom, jak často si je čistíte, a více na tom, co na ně pouštíte. Zubní pasta s modrými a červenými barvivy, silné čaje, káva, červené víno nebo kurkuma se do mikroskopických rýh dostanou během několika dnů a zbělit je pak zpátky nejde. První pravidlo zní: keramiku nebarvěte. Druhé: čistěte ji tak, abyste nepoškrábali její leštěný povrch, protože ten je jediná ochrana proti usazování.
Typické chyby se opakují. Lidé koupí levný rošt s tenkými latěmi a diví se, že matrace po roce vrže. Jiní položí měkkou pěnovou matraci na rošt s velkými rozestupy a stěžují se na bolesti zad. Časté je i to, že se rošt postaví na kovovou postel bez středové podpory, takže se časem ohne rám, ne latě. A pozor na univerzální rošty „na všechno" — univerzální znamená kompromis, který nesedí nikomu.
Tuhost matrace se odvíjí od toho, jak spíte. Na boku potřebujete měkčí povrch, který se prohne v rameni a kyčli, jinak vám brní ruka. Na zádech a na břichu naopak potřebujete pevnější podporu, aby páteř zůstala v rovině. U loftu je pod matrací tvrdá deska, takže matrace nemá kam ustoupit – pocitově se vám bude zdát tvrdší než stejný kus na lamelovém roštu. Vyzkoušejte ji proto přímo v posteli, ne v obchodě na zkušebním rámu. Lehněte si na pět minut na bok i na záda a všímejte si, jestli se tlak soustředí do jednoho místa.
Falešný e-shop nepoznáte podle toho, že by vypadal očividně špatně. Většina podvodných stránek dnes používá hotovou šablonu, která vypadá stejně jako e-shopy běžných prodejců. Rozdíl je jinde: v tom, jaké informace o sobě obchod zveřejňuje, jak komunikuje a jaké platební metody nabízí. Právě tyhle tři oblasti odhalí podvod dřív, než pošlete peníze.
Pátý návyk spočívá v tom, že omezíte, co klient může žádat v jednom dotazu. Zakažte divoké kombinace filtrů, které nutí databázi skenovat celé tabulky. Zaveďte stránkování u každého seznamu a vynuťte maximální velikost stránky. Pokud klient pošle dotaz bez stránkování, odmítněte ho. Zároveň sledujte, jaké dotazy se opakují — pokud se stejný tvar dotazu vrací pořád dokola, je to signál, že by mohl být součástí stabilního rozhraní s vlastní optimalizací. A nakonec: testujte s reálným objemem dat, ne s deseti záznamy. Optimalizace, která funguje na malé databázi, se v produkci často rozpadne.
Batchování a data loadery nejsou volitelné Třetí návyk se týká takzvaného N+1 problému. Pokud pro každou položku seznamu voláte samostatný dotaz do databáze, počet dotazů roste lineárně s velikostí výsledku. Řešením je dávkování: posbírejte klíče za krátký časový úsek a pošlete jeden dotaz pro všechny. V GraphQL k tomu slouží nástroje pro odložené načítání, které seskupí požadavky ve stejném cyklu zpracování. Dbejte na to, aby dávkování fungovalo i napříč vnořenými resolvery. Častá chyba je, že dávkování zapnete jen na nejvyšší úrovni a hlouběji už ne.
Rošt se mění častěji než matrace. Jakmile latě prasknou, vyhnou se nebo se uvolní spoje, oprava nemá smysl. Dobře zvolený rošt vydrží několik matrací, špatně zvolený zničí i tu nejdražší během jedné sezony.
Druhým návykem je omezit hloubku a šířku dotazů. GraphQL sám o sobě nebrání klientovi poslat dotaz, který rekurzivně projde celý graf. Nastavte maximální hloubku vrstvení a maximální počet polí, která lze v jednom dotazu vyžádat. Typická chyba je, že vývojář povolí hloubku podle sebe a zapomene na to, že klient si může vyžádat spojení přes několik entit. Limit nastavte konzervativně a při jeho překročení vracejte srozumitelnou chybu, ne timeout.
Čtvrtý návyk je ukládání do mezipaměti na úrovni polí a dotazů. Ne každý dotaz je vhodné cachovat, ale ta část, která se nemění, ano. Rozlišujte, co je vázané na konkrétního uživatele, a co je veřejné. U osobních dat používejte krátké platnosti a klíč, který zahrnuje identitu. U veřejných dat naopak delší platnosti. Pozor na to, že pokud vrátíte data z mezipaměti, musíte je zároveň umět invalidovat při změně. Bez invalidace dostanete zastaralá data a těžko se to dohledává.