Jak uspořádat malou předsíň, aby se v ní dalo skutečně žít
Výběr barvy stěn v ložnici je něco jiného než v obývacím pokoji. Zatímco v obýváku chceme barvu, která podpoří konverzaci a energii, ložnice má jediný hlavní úkol: připravit tělo i mysl na spánek. Agresivní červená, sytě oranžová nebo výrazná žlutá tomu jdou přímo proti sobě. Červená zvyšuje tepovou frekvenci a podvědomě signalizuje nebezpečí, oranžová a žlutá zase povzbuzují mozek k aktivitě. Pokud máte ložnici v těchto odstínech, není divu, že se večer převalujete a ráno vstáváte rozbití. První krok tedy je: vybírejte z chladnějších a tlumenějších tónů.<br>
<br>
<br>
<br>
Hotový růžový olej použijte jako základ pro pleťové sérum. Stačí pár kapek vmasírovat do čisté pleti, nejlépe večer. Hodí se i na suchá místa na těle, na ruce nebo na zádíčky po koupeli. Přidejte ho do domácího peelingového scrubu – smíchejte hrubou sůl nebo cukr s trochou oleje a vznikne jemný peeling, který pokožku nepodráždí. Několik kapek můžete přidat i do koupele, ale pozor, olej se ve vodě nerozpouští, takže se chce nejprve rozmíchat v troše smetany nebo medu.<br>
<br>
<br>
<br>
Malá předsíň se nejrychleji změní v nepořádek, když do ní nastěhujete nábytek dřív, než změříte, co se do prostoru vejde. První krok proto nejsou regály, ale metr a papír. Změřte šířku stěn, vzdálenost mezi protilehlými stěnami, výšku podlahy ke stropu i hloubku místa, kde se otevírají dveře. Zapište si také, kolik lidí předsíň používá, kolik párů bot se tu denně ocitne a co z toho musí být po ruce při odchodu. Teprve z těchto čísel vzniká smysluplný plán.<br>
<br>
<br>
<br>
Poslední pravidlo: omezujte, co klient může napsat. Zakázat introspekci v produkci je základ, ale samo to nestačí. Nastavte maximální hloubku, maximální počet polí a maximální velikost stránky. Tyto limity nejsou nepřátelské vůči vývojářům, chrání server před dotazy, které by jinak nikdo nezastavil. Dobře navržené schéma a rozumné výchozí hodnoty udělají pro výkon víc než jakákoliv dodatečná optimalizace.<br>
<br>
<br>
<br>
Praktické je rozdělit prostor na menší části. Velká jednolitá dutina svádí k tomu naházet vše na jednu hromadu, a pak už nikdy nenajdete to, co hledáte. Použijte nízké plastové bedny, koše nebo látkové organizéry, které přesně vyplní šířku. Pokud sedák nemá vlastní dno, položte na spodní konstrukci tenkou desku nebo pevný karton, aby menší předměty nepropadávaly. Na víko zevnitř připevněte suchý zip nebo háček na klíče a drobnosti, které tak zůstanou po ruce.<br>
<br>
<br>
<br>
Nezapomínejte na měření. Optimalizace bez dat je jen hádání. Zaznamenávejte dobu trvání jednotlivých resolverů, počet databázových dotazů na jeden požadavek a velikost odpovědi. Až potom se rozhodujte, co přepsat. Mnoho týmů stráví týdny optimalizací místa, které v profilech vůbec není vidět, a skutečný problém zůstane stranou. Sledujte také chování v produkci, protože vzorce dotazů se liší od těch, které generuje testovací sada.<br>
<br>
<br>
<br>
Úložný prostor řešte svisle, ne do stran V malém bytě rozhoduje vertikála. Nad stolem veďte jednu nebo dvě police v délce desky, ne hluboké skříně. Na ně patří dokumenty, knihy a krabice s víkem, které zakryjí nepořádek. Pod stolem použijte nízký vozík na kolečkách místo pevných šuplíků – můžete ho odsunout, když potřebujete místo na nohy. Kabely veďte v liště po zdi nebo v ohebném chrániči, nikdy je nenechávejte volně na podlaze. Přepěťová ochrana má být připevněná zezadu na desce, ne položená na zemi, kde se do ní kopá.<br>
<br>
<br>
<br>
Cache na úrovni polí místo celých odpovědí Sdílená cache celých odpovědí funguje jen do chvíle, než si každý klient vyžádá jinou kombinaci polí. Mnohem lepší je cachovat jednotlivá pole nebo entity podle jejich identifikátoru. Když se stejná entita objeví ve více dotazech, server ji vrátí z paměti a nezatěžuje databázi. Klíčem je konzistentní identifikace objektů a krátká expirace, která odpovídá tomu, jak často se data skutečně mění. Pozor na to, že cache musí respektovat oprávnění uživatele. Pokud ji sdílíte mezi uživateli bez ohledu na jejich práva, dostanete se k datům, která vidět nemají.<br>
<br>
<br>
<br>
Druhým místem, kde se výkon ztrácí, je hloubka dotazu. GraphQL dovoluje klientovi napsat cokoliv, a tak se snadno stane, že si aplikace vyžádá strom dat do deseti úrovní. Nestačí jen omezit počet položek v seznamu. Je potřeba zavést analýzu dotazu před jeho vykonáním a spočítat jeho složitost. Každému poli přiřaďte váhu a nastavte strop, po jehož překročení dotaz odmítnete. Tím zabráníte jak neúmyslným chybám ve frontendu, tak útokům, kdy se někdo snaží server položit jediným požadavkem.<br>
<br>
<br>
<br>
Nejčastější chyba při optimalizaci GraphQL nespočívá v samotném dotazu, ale v tom, jak resolver načítá data. Když pole vrací seznam a každý prvek si sám dotahuje související záznam z databáze, vzniká takzvaný N+1 problém. Uživatel pošle jeden dotaz, ale server vykoná stovky SQL dotazů. Výsledek je pomalý a zatížení databáze roste lineárně s velikostí odpovědi. Řešení je přitom známé: dávkové načítání. Místo jednoho dotazu na prvek sesbírejte klíče a načtěte je jedním dotazem s podmínkou IN. Většina moderních knihoven pro GraphQL už dávkování podporuje, stačí ho správně nakonfigurovat a nepředávat resolverům vlastní databázové spojení místo kontextu s dávkovačem.





