Dlouhá police do úzké mezery: změřená lavice rozhoduje
Pro běžné podhledy stačí kovový rošt z CD profilů zavěšených na nosných profilech. Závěsy umísťujte maximálně po 900 mm, u těžších skladeb nebo většího zatížení izolací hustěji. Nepoužívejte přímé závěsy tam, kde je potřeba překonat více než několik centimetrů – šroubování do stropu v délce přesahující únosnost držáku vede k tomu, že se konstrukce prohne. Pro větší rozdíly použijte stavitelné závěsy s tyčí, které umožní přesné doladění.
Před nákupem si připravte tři čísla: vnitřní šířku, vnitřní délku a maximální tloušťku, kterou čelo připustí. Pak porovnejte, zda matrace sedne bez vůle. U čalouněného čela dávejte pozor na ostré hrany a spoje — mohou potah matrace prodřít. Po dodání matraci nechte rozvinout a provětrejte, teprve potom ji položte do rámu. Když sedí rozměrově i tvrdostí, postel vydrží roky bez posunování a bez bolesti zad.
Rezervní účet drž oddělený od běžného. Když jsou peníze na stejném účtu, snadno se stanou součástí každodenního zůstatku a utratí se dřív, než si všimneš. Samostatný účet bez platební karty je praktičtější, protože k penězům nemáš okamžitý přístup. Zároveň si nastav pravidlo, kdy rezervu použiješ – ideálně jen na skutečné mimořádné výdaje, ne na dovolenou nebo nákup elektroniky.
Plejtvák obrovský patří mezi kosticovce a jeho tlama neobsahuje jediný funkční zub. Místo toho má v horní čelisti dvě řady kostěných lamel, kterým se říká kostičky nebo filtrace. Tyto lamely nejsou na okraji čelisti vidět jen jako hřeben — jsou to vlastně rohovinové ploténky s třásněmi, které fungují jako jemné síto. Klíčové je, že plejtvák při krmení polyká vodu s obrovským množstvím potravy najednou a pak ji musí zase vypustit. Právě tady lamely rozhodují: drží v tlamě kril a drobné ryby, zatímco voda odtéká ven.
Druhá věc, kterou většina týmů podcení, je hloubka a šířka dotazu. GraphQL sám o sobě neomezuje, kolik polí klient požaduje. Bez limitu se dá jedním dotazem položit server. Zaveďte analýzu złożitosti ještě před spuštěním resolverů: spočítejte náklady podle hloubky a násobků u seznamů a nastavte tvrdý strop. Odmítněte dotaz s chybou, ne až po minutě práce. Do stejné kontroly dejte i maximální počet aliasů a fragmentů, protože cyklické fragmenty jsou klasická past.
Začněte metrem s pevným tělem, ne krejčovským. Změřte šířku mezery ve třech výškách: u podlahy, ve výšce budoucí police a asi deset centimetrů nad ní. Stejně tak třikrát změřte hloubku, a to vlevo, uprostřed a vpravo. Rozdíly dva až tři milimetry nejsou chyba měření, ale vlastnost zdi. Do poznámek pište vždy nejmenší naměřenou hodnotu, nikdy tu největší.
Nakonec měřte. Bez trasování jednotlivých resolverů nepoznáte, které pole dělá problém, a budete optimalizovat naslepo. Zapněte si logování doby trvání resolverů a dotazů, sledujte počet volání databáze na jeden GraphQL požadavek a porovnávejte před a po změně. Častá chyba je optimalizovat podle pocitu a přitom nechat v produkci otevřené introspekci a podrobné chyby – ty sice nezpůsobí pomalost, ale prozradí strukturu schématu a usnadní zneužití. Omezte je ve veřejném prostředí a nechte je jen tam, kde je skutečně potřebujete.
U stránkování se vyhněte offsetům u velkých a často měněných kolekcí. Kurzorová stránkování podle stabilního klíče je předvídatelnější a lépe se s ním cachuje. Zároveň omezte maximální velikost stránky na serveru; spoléhat na to, že klient pošle rozumný limit, je riskantní. Pokud používáte perzistované dotazy, můžete klientovi posílat jen hash a server tak dopředu ví, jaký tvar dotazu má povolit – to zjednodušuje whitelisting i analýzu złożitosti.
Do šířky vždy odečtěte vůli. Pro pevnou polici stačí dva až tři milimetry na každé straně, u zasouvací police potřebujete dva až tři centimetry, aby se dala vyjmout bez vyklopení. Pokud je mezera v rozích užší než uprostřed, neřežte polici na střední míru, ale na tu nejmenší a rohy přebruste. Typická chyba je změřit jen jednou a spoléhat na to, že zeď je rovná; u starších stěn to neplatí téměř nikdy.
Cache na úrovni pole, ne jen celé odpovědi Odpověď jako celek se mění podle toho, co klient požaduje, takže cachovat celý výsledek má smysl jen u identických dotazů. Větší přínos má cachování jednotlivých resolverů podle klíče entity a parametrů. Pozor na kontext: data závislá na přihlášeném uživateli nebo oprávněních nesmí sdílet stejný klíč jako veřejná data. Typická chyba je cachovat seznam na základě filtru, ale zapomenout na stránkování a řazení – pak klient dostane špatnou stránku a nikdo neví proč.