Když geometrie rozhoduje: jak poznat art deco od secese
Začni měřením. Změř šířku stěny, vzdálenost mezi okny a dveřmi a výšku parapetu. Pak si na podlahu polož papírovou páskou obrys toho, co chceš umístit. Židle potřebuje kolem sebe alespoň 60 cm na posun, pracovní deska aspoň 60 cm hloubky. Pokud se obrys nevejde, řešení není menší nábytek, místo. Malý byt snese jen jedno takové místo, druhé už vytlačí provoz.
Typické chyby: lidé si pletou fluorescenci s fosforescencí, tedy dosvitem po zhasnutí UV světla. Certifikát popisuje pouze fluorescenci, nikoli dosvit. Další častou chybou je domněnka, že fluorescence vždy snižuje cenu. U některých kamenů ji naopak zvyšuje, protože zlepšuje barvu. Někteří prodejci se snaží fluorescenci zatajit a tvrdí, že „certifikát ji neuvádí, takže žádná není". To je nesmysl – neuvádí ji proto, že ji laboratoř neměřila.
Na závěr: optimalizace GraphQL není o jednom triku, ale o disciplíně. Pravidelně kontrolujte, co jednotlivé dotazy vracejí, měřte počet požadavků a dobu odezvy, a hlavně se ptejte, zda každé pole v dotazu má své místo v UI. Jakmile začnete dotazy krátit a slučovat, uvidíte rozdíl nejen na serveru, ale i v plynulosti celé aplikace.
Před objednávkou si v obchodních podmínkách najděte tři věci: kdo je prodávající včetně identifikačního čísla, jaká je lhůta pro odstoupení od smlouvy a kam se posílá reklamace. Pokud jsou tyto údaje schované, neúplné nebo odkazy vedou na neexistující stránky, nakupovat tam nemusíte. Chybějící adresa pro vrácení zboží nebo kontakt jen přes formulář bez telefonu jsou další známky toho, že obchod nemá zájem řešit problémy po zaplacení.
Zubní pasta se dá nahradit tuhou pastou v tabletách nebo domácím práškem z jedlé sody a máty. Deodorant vyřeší tuhý krystal nebo domácí směs z kokosového oleje, sody a škrobu. Odličování zvládne olej a látkový tampon, který se pere. Břitvu nahradí kovová s vyměnitelnou čepelí, kterou stačí občas vyměnit a kov recyklovat. Žádná z těchto změn není složitá, ale každá znamená méně plastu v koši.
Dalším vodítkem je samotný kámen a jeho zasazení. Secese dávala přednost kabošonům, tedy kamenům s hladkým, zaobleným povrchem, které podtrhovaly měkkost celku. Art deco naopak miluje broušené kameny s rovnými fazetami, často v geometrických sestavách. Zasazení bývá těsné, kov tvoří tenké linky mezi kameny a vytváří mřížku. Pokud vidíte kámen obklopený pravidelnými trojúhelníky nebo obdélníky, máte před sebou art deco. Pokud kámen obklopuje kov, který se vlní jako rostlinný úponek, jde o secesi.
Rozlišit art deco od secese podle geometrie je možné, pokud se naučíte číst základní tvary. Secese vznikala kolem přelomu 19. a 20. století a stavěla na plynulých liniích, které napodobovaly rostliny, vlny vlasů nebo stonky. Art deco přišlo ve dvacátých a třicátých letech 20. století a nahradilo organické křivky ostrými úhly, stupňovitými motivy a strojovou přesností. Šperk z obou období může mít stejný kámen i podobnou velikost, ale geometrie prozradí vše.
Další častá chyba je ignorování cache. GraphQL klienti umí cachovat podle ID objektu, ale pouze tehdy, pokud dotaz vrací pole id a pokud se stejná data nenačítají znovu s jinými parametry. Pokud posíláte stejný dotaz s jiným polem pro řazení nebo filtr, cache se mine účinkem. Zkontrolujte, zda vaše komponenty nepřebíjejí cache zbytečnými obnoveními. Někdy stačí nastavit správnou politiku cache a počet požadavků klesne na polovinu.
Hlídejte si hloubku vnoření a rekurzivní vztahy GraphQL neomezuje hloubku dotazu, dokud to sami nenastavíte. Dotaz, který se zanořuje pět nebo šest úrovní, může na serveru způsobit exponenciální nárůst práce, zvláště pokud každá úroveň znamená samostatný dotaz do databáze. To je klasický problém N+1. Řešením je na serveru použít batchování nebo dataloader, který seskupí požadavky na stejnou entitu barvy stěn do obýváku jednoho dotazu. Na klientovi pak zkontrolujte, zda skutečně potřebujete všechna vnoření. Často stačí vnořit o úroveň méně a zbytek dotáhnout lazy loadem až ve chvíli, kdy uživatel rozbalí detail.
Nejčastější příčinou pomalých GraphQL dotazů není server ani databáze, ale sám klient. Vývojáři často posílají jeden velký dotaz, který tahá všechny možné vnořené objekty, i když jich v komponentě vykreslí jen zlomek. GraphQL sice umožňuje přesně specifikovat, co potřebujete, ale tuto výhodu je nutné aktivně využívat. Pokud posíláte dotaz, který vrací desítky polí a několik úrovní vnoření, každý render na klientovi zpracovává data, která vůbec nepoužije. Prvním krokem k optimalizaci je tedy projít si všechny dotazy v projektu a u každého zkontrolovat, zda vrací právě ta pole, která se skutečně spotřebují v UI.