Příliš obecné zadání, které zabíjí každý prompt

Aus test

Ohranič prostor, ne nábyt

V malém bytě neodděluj koutek zdí nebo novou příčkou, ale třemi jednoduchými signály: podlahou, světlem a orientací sedačky. Kobereček menšího rozměru vymezí plochu líp než velký kus nábytku. Nízká police nebo stolek po straně drží hranici, aniž by bránily výhledu. Světlo nasměruj na konkrétní místo – stojací lampa s úzkým kuželem vytvoří večer pocit samostatného prostoru i v jednom pokoji. Pokud sedačku otočíš ke zdi nebo k oknu a ne do středu místnosti, získá koutek jasný směr a přestane působit jako náhodná židle.

Zásadní je také hloubka a složitost dotazu. Klient může poslat dotaz, který rekurzivně prochází vztahy do deseti úrovní a položí databázi. Zaveďte limit hloubky a váhu jednotlivých polí. GraphQL specifikace sice řeší validaci, ale ne ochranu proti nákladným dotazům – to musíte přidat sami. Běžná praxe je přiřadit každému poli cenu a požadavek odmítnout, když součet překročí rozpočet.

Kombinace moderního nábytku s retro kusy funguje nejlépe, když mezi nimi vznikne napětí, ne když spolu soutěží. Retro kousek má v místnosti působit jako vědomá vsuvka, ne jako náhodná pozůstalost po předcích. Základ je zvolit jeden výrazný retro kus a k němu postavit zbytek zařízení v klidnějším, současném duchu. Jakmile začnete retro doplňky vršit na sebe, prostor se změní ve skanzen a moderní nábytek v něm ztratí smysl.

N+1 problém se nevyřeší sám Nejčastější chyba je načítání souvisejících entit uvnitř cyklu. Resolver pro seznam objednávek zavolá databázi pro každou objednávku zvlášť a při stovce záznamů máte stovku dotazů. Řešením je batchování přes DataLoader nebo ekvivalentní механизм, který sesbírá klíče za jeden tik a pošle jeden dotaz s klauzulí IN. Pozor na dvě věci: DataLoader musí být vytvořen pro každý požadavek zvlášť, ne globálně, jinak si mezi uživateli předáváte data. A cache v něm musí mít jasnou politiku – bez ní se vám vrátí zastaralé hodnoty po mutaci.

Druhý zdroj zpoždění je příliš široký výběr sloupců. GraphQL schéma slibuje jen to, co klient požaduje, ale ORM často načte celý řádek. Použijte projekci: sestavte seznam polí z pole selection set a předejte ho do dotazu. U větších tabulek to znamená rozdíl mezi přenosem několika kilobajtů a stovek kilobajtů na jeden požadavek.

Nakonec měřte znovu po každé změně. Optimalizace bez porovnání před a po je jen dohad. Sledujte p95 a p99 latence, ne průměr – průměr schovává nejhorší případy, které uživatele skutečně obtěžují.

Nejčastější past při psaní promptů není složitá syntaxe ani chybějící trik. Je to příliš široké zadání. Když napíšete „napiš mi něco o marketingu", model nemá jak poznat, co potřebujete. Dostanete obecný text, který se podobá stovkám jiných. Řešení je jednoduché: než prompt odešlete, zkuste vlastními slovy říct, jaký konkrétní výstup očekáváte. Místo „něco o marketingu" napište „tři konkrétní kroky, jak získat první zákazníky pro malý e-shop s keramikou". Čím užší zadání, tím použitelnější odpověď.

Většina pomalých GraphQL dotazů nevzniká kvůli samotnému jazyku, ale kvůli tomu, jak resolver vrátí data. Než začnete cokoliv optimalizovat, změřte, které pole je skutečně drahé. Apollo Studio, GraphQL Yoga s tracingem nebo jednoduchý middleware s časovačem kolem každého resolveru vám během hodiny ukážou, kde utrácíte milisekundy. Bez tohoto kroku ladíte slepě a často přepíšete to, co už bylo v pořádku.

Persistované dotazy a správné HTTP cacheování sníží zátěž ještě víc. Pokud klient posílá stále stejný dokument, uložte ho pod hash a posílejte jen identifikátor. Na úrovni odpovědí používejte hlavičky pro cacheování u veřejných dat a rozlišujte je podle typu uživatele. U mutací cache nikdy nezneužívejte, jinak se dostanete do stavu, kdy dvě zařízení vidí něco jiného.

Valenda v dětském pokoji snese víc než postel pro dospělé. Děti na ni skáčou, věší přes ni deky, staví na ní bunkry a občas do ní kopnou nohou. Osvětlení, které na valendě vydrží roky, musí počítat s tím, že s ním bude zacházeno jako s hračkou. Nejde o to vybrat co nejdražší lampu, ale vybrat řešení, které přežije náraz, pád i občasné vytržení ze zdi.

Základem je mechanické upevnění. Lampa na příchytce nebo na obyčejném háčku v sádrokartonu povolí po prvním zatahání. Pokud má dítě na valendě spát, světlo musí být připevněné ke konstrukci postele nebo ke zdi tak, aby ho nešlo snadno strhnout. U kovových konstrukcí se vyplatí šroubovat přímo do rámu, u dřevěných postelí používat vruty delší než tloušťka materiálu. Vždycky zkontrolujte, že za zdí nevedou rozvody.