<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://jak.mazovia.edu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CameronNagle13</id>
	<title>Mazovia - Wkład użytkownika [pl]</title>
	<link rel="self" type="application/atom+xml" href="https://jak.mazovia.edu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CameronNagle13"/>
	<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php/Specjalna:Wk%C5%82ad/CameronNagle13"/>
	<updated>2026-11-06T04:41:56Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=GraphQL_dotazy_zbyte%C4%8Dn%C4%9B_brzd%C3%AD,_kdy%C5%BE_ignoruje%C5%A1_N_1&amp;diff=1233763</id>
		<title>GraphQL dotazy zbytečně brzdí, když ignoruješ N 1</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=GraphQL_dotazy_zbyte%C4%8Dn%C4%9B_brzd%C3%AD,_kdy%C5%BE_ignoruje%C5%A1_N_1&amp;diff=1233763"/>
		<updated>2026-10-31T15:21:42Z</updated>

		<summary type="html">&lt;p&gt;CameronNagle13: Utworzono nową stronę &amp;quot;Analýza provozu často ukáže, že většina polí se vrací, ale klient je nikdy nezobrazí. Zbytečně nafouknuté odpovědi zpomalují serializaci i přenos. Projdi reálné dotazy z logů a najdi pole, která se posílají jen kvůli tomu, že je někdo kdysi přidal do fragmentu. Odstraňuj je po domluvě s klientem, ne naslepo – fragment může být sdílený napříč obrazovkami.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak poznat, co vám sedne na ru&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Typická chyba je tlačit po…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Analýza provozu často ukáže, že většina polí se vrací, ale klient je nikdy nezobrazí. Zbytečně nafouknuté odpovědi zpomalují serializaci i přenos. Projdi reálné dotazy z logů a najdi pole, která se posílají jen kvůli tomu, že je někdo kdysi přidal do fragmentu. Odstraňuj je po domluvě s klientem, ne naslepo – fragment může být sdílený napříč obrazovkami.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak poznat, co vám sedne na ru&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Typická chyba je tlačit postel co nejvíc do kouta a pak ji obestavět nočními stolky a policemi. Vznikne mrtvý prostor, do kterého se nedostanete s vysavačem ani s povlečením. Místo dvou stolků po stranách použijte jeden úzký stolek na volné straně a na druhé straně nástěnnou poličku. Pokud potřebujete úložný prostor, volte zásuvky přímo v konstrukci valendy, ne samostatné boxy, které ukrajují průchod.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pátým signálem je nepříjemný pocit z vlastního hlasu. Pokud se při telefonování nebo nahrávání v obýváku slyšíte ostře a plechově, místnost klade zvuku přílišný odpor. Zkuste krátký test: nahrajte si na telefon krátkou větu vsedě na gauči a potom v jiné místnosti. Porovnání vám ukáže, zda je problém v místnosti, nebo v mikrofonu. Při úpravách postupujte po malých krocích a každou změnu vyzkoušejte při běžném poslechu. Akustika se neřeší najednou, ale postupným laděním, dokud místnost nezačne znít přirozeně a bez únavy.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Kam valendu postavit, aby neuzavřela ces&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Než cokoli objednáte, projděte si cestu od vchodu do ložnice. Změřte šířku dveří, světlou výšku chodby, zákruty a schodiště. U rozkládacích a montovaných postelí se pt ejte, zda je možné je složit až v ložnici. U pevných rámů je rozhodující, zda projde největší díl. Pokud má dům úzké dveře nebo ostré zatáčky, může být řešením postel, která se montuje z menších částí, nebo matrace, která se ohne. Vždy si nechte potvrdit rozměry jednotlivých dílů v balení, ne jen celkovou velikost postele.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Persistované dotazy a pole, která nikdo nepoužívá V produkci nemá smysl parsovat a validovat stále stejné dotazy dokola. Persistované dotazy (persisted queries) odstraní z požadavku celý text dotazu a pošlou jen identifikátor. Ušetříš šířku pásma, snížíš riziko zneužití ad-hoc dotazů a získáš lepší přehled o tom, co klienti skutečně posílají. Zavedení vyžaduje krok navíc v build pipeline – klient musí dotazy zaregistrovat předem. Frequent chyba je zapnout povinné persistované dotazy naráz pro všechny klienty; starší verze aplikací v terénu pak přestanou fungovat. Přecházej postupně a měj po ruce fallback.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na straně serveru se vyplatí omezit to, co resolver vůbec dělá. Pokud pole vrací jen přepočet z jiných polí, přesuň ho do rodičovského resolveru a spočítej jednou. U vzdálených volání nastav timeouty a circuit breaker; bez nich se pomalá závislost podepíše na celém dotazu. Kešování řeš na úrovni dotazu nebo entity, ne globálně, a vždy s klíčem, který obsahuje kontext oprávnění – jinak vrátíš data, na která uživatel nemá nárok.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Druhá věc, která se snadno podcení, je hloubka a tvar dotazu. GraphQL umožňuje klientovi sáhnout libovolně hluboko, a pokud to neomezíš, jeden dotaz může vygenerovat stovky resolver volání. Zaveď limit hloubky a limit složitosti (complexity score), který se počítá z počtu polí a násobí se podle vnoření. Oba limity nastav před nasazením, ne až po prvním incidentu. Pozor na chybu: limit hloubky sám o sobě nestačí, protože plochý dotaz s tisíci aliasy projde, aniž by byl hluboký.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec měř. Sleduj počet resolver volání na požadavek, dobu trvání jednotlivých polí a počet databázových dotazů. Bez těchto metrik optimalizuješ podle dojmů a snadno zpomalíš něco jiného. Zaměř se nejdřív na resolvery s nejvyšším počtem volání, ne na ty s nejdelším jednotlivým časem – součet bývá překvapivý.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejčastější příčina pomalých GraphQL dotazů není v samotném dotazu, ale v tom, co se děje pod ním. Resolver, který pro každou položku seznamu zavolá databázi nebo vzdálené API, vytvoří takzvaný N+1 problém: jedno pole vrátí dvacet položek a místo jednoho dotazu na databázi jich odejde dvacet jedna. Řešení je koncepční – sloučit požadavky do jednoho volání. V praxi to znamená zavést dávkování (batch loading) s mezipamětí per request, typicky přes DataLoader nebo jeho ekvivalent v tvém frameworku. Klíčové je, že dávkování musí být vázané na kontext jednoho požadavku, ne na globální stav aplikace, jinak si poděláš data mezi uživateli.&lt;/div&gt;</summary>
		<author><name>CameronNagle13</name></author>
	</entry>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=U%C5%BCytkownik:CameronNagle13&amp;diff=1233761</id>
		<title>Użytkownik:CameronNagle13</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=U%C5%BCytkownik:CameronNagle13&amp;diff=1233761"/>
		<updated>2026-10-31T15:21:41Z</updated>

		<summary type="html">&lt;p&gt;CameronNagle13: Utworzono nową stronę &amp;quot;Váš průvodce praktickým bydlením žije už dlouho. Píšu o tom, jak si poradit v malém bytě. Nejvíc mě baví ukazovat chytrá řešení, která zvládne každý.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Váš průvodce praktickým bydlením žije už dlouho. Píšu o tom, jak si poradit v malém bytě. Nejvíc mě baví ukazovat chytrá řešení, která zvládne každý.&lt;/div&gt;</summary>
		<author><name>CameronNagle13</name></author>
	</entry>
</feed>