Když chcete spustit stejnou aplikaci na libovolném počítači
Jak pracovat s minulými zkušenostmi Využívejte historii svých odhadů. Vracejte se k dokončeným úkolům a porovnejte odhad se skutečností. Zjistíte, které typy činností pravidelně podhodnocujete – třeba testování, integrace nebo řešení chyb v existujícím kódu. Tyto poznatky pak aplikujte při plánování nových úkolů. Pokud historicky trvala podobná funkce dvakrát déle, než jste tipovali, nepoužívejte optimistický odhad, ale raději realistický – ten, který vychází z dat.
Častou chybou je spoléhat se na to, že podpora vyřeší všechno automaticky. Dodavatel vám většinou pomůže s obnovou dat, ale už neporadí, proč se záloha nepovedla, pokud jste špatně nastavili plán úloh. Před nasazením nové verze databáze si proto ověřte, že podpora umí pracovat s vaší konkrétní konfigurací, včetně použitých pluginů nebo rozšíření. Mnoho poskytovatelů standardně podporuje jen čistou instalaci, a jakmile přidáte vlastní úpravy, garance přestávají platit.
Spread operátor ... vypadá nenápadně, ale má obrovskou sílu. Pomocí [...arr1, ...arr2] spojíte pole, http://wiki.philipphudek.de pomocí ...obj1, ...obj2 sloučíte objekty. Klíčové je pořadí: vlastnosti z pozdějších objektů přepisují dřívější. To se hodí pro nastavení výchozích hodnot, ale pamatujte, že jde o mělkou kopii. Vnořené objekty se stále sdílejí referencí, takže pokud změníte vnitřní strukturu, If you have any inquiries relating to wherever and how to use úPrava Interiéru, you can make contact with us at the webpage. ovlivníte i originál. Pro hluboké klonování musíte použít něco robustnějšího, ne jen spread.
Když už máte obraz hotový, neuškodí ho zmenšit. Základní obrazy jako node nebo python obsahují spoustu nástrojů, které k běhu nepotřebujete. Použijte variantu s příponou -alpine, která je výrazně menší. Jen pozor, že některé balíčky vyžadují kompilaci a v Alpine chybí standardní knihovny, takže občas musíte doinstalovat build-essential. Dále se vyplatí spojovat více příkazů do jednoho RUN a na konci odstranit dočasné soubory, aby se nezvyšovala velikost vrstvy. Například: RUN apt-get update && apt-get install -y nějaký-balík && rm -rf /var/lib/apt/lists/*.
Začněte tím, že úkol rozdělíte na menší části. Pokud máte naplánovat funkci, rozložte ji na jednotlivé kroky – příprava dat, logika, UI, testy, dokumentace. U každého kroku odhadněte čas zvlášť a poté je sečtěte. Tím získáte přesnější obrázek, protože malé úkoly se odhadují snadněji než velký celek. Vyhnete se také efektu „všeho se týká" – když odhadujete velký balík, máte tendenci ho podhodnotit. Drobné části navíc umožní rychleji identifikovat, kde odhad selhal.
Proč se vyplatí revidovat strukturu dotazu před psaním dalšího indexu Než začnete přidávat indexy, podívejte se na samotný dotaz. Často zjistíte, že problém není v chybějícím indexu, ale v zbytečném spojování tabulek nebo v nadbytečném načítání dat. Typická chyba je použití SELECT * místo vyjmenování potřebných sloupců. Přenesete pak zbytečně velké množství dat mezi databází a aplikací. Další častou chybou je použití LEFT JOIN tam, kde stačí vnitřní spojení, nebo naopak použití subdotazu, který lze přepsat na efektivnější JOIN.
Když se stránka přestane chovat podle očekávání, první zastávka míří do vývojářských nástrojů prohlížeče. Většina lidí otevře konzoli, ale málokdo umí pracovat s tím, co jim nabízí. Přitom stačí pár kliknutí a místo bezradného zírání do kódu získáte přesnou zprávu o tom, co selhalo a kde. Naučte se číst chybové hlášky a používat nástroje, které máte přímo v prohlížeči, a ladění se stane srozumitelným procesem.
Dalším častým problémem jsou pojmenované svazky. Když spustíte kontejner bez svazku, všechna data, která aplikace vytvoří, zmizí s jeho smazáním. Pro databáze nebo uploadované soubory to není přijatelné. Použijte -v a připojte pojmenovaný svazek nebo adresář z hostitele: docker run -v /cesta/k/slozce:/data. Na to ale pozor – pokud se liší práva mezi hostitelem a kontejnerem, může aplikace dostat chybu o nedostatečném oprávnění. Řešením je nastavit uživatele v Dockerfile pomocí USER a případně použít parametr --user při spuštění.
Moderní JavaScript už dávno není o ručním skládání řetězců a opakování cyklů. Syntaxe ECMAScript 6 a novějších verzí přináší nástroje, které zásadně mění způsob, jakým píšete logiku. Místo abyste si pamatovali deset různých způsobů, jak něco napsat, stačí zvládnout pár klíčových konstrukcí a zbytek se odvodí sám. Tento článek se zaměří na to, co skutečně využijete v každodenní práci, a upozorní na místa, kde se snadno střelíte do vlastní nohy.
Co vám ušetří nejvíc času: template literály a spread operátor Template literály, tedy zpětné uvozovky, umožňují vkládat proměnné přímo do řetězce: `Ahoj, $name!`. Konec s lepením plusů a escapováním mezer. Uvnitř ${} můžete provádět i výrazy, ale pozor na přílišnou složitost – když tam začnete psát vnořené podmínky nebo volání funkcí, kód se stává nečitelným. V takovém případě si výpočet uložte předem do proměnné. Další výhodou template literálů jsou víceřádkové řetězce bez
– ale jen pokud nenecháte v textu bílé znaky, které se zachovají doslova.