Jak zorganizovat vícejazyčný projekt bez chaosu

Aus MeinWiki
Wechseln zu: Navigation, Suche

Podmínky a logika: Aplikace, která reaguje Pojďme do programu přidat jednoduchou logiku. Po načtení věku použijeme podmínku if-else, abychom uživateli napsali, zda je plnoletý. Například: pokud je věk větší nebo roven 18, vypíšeme „Jste plnoletí", jinak „Ještě vám to nevyšlo". Důležité je správně porovnávat hodnoty – použijte operátor >= pro větší nebo rovno. Při psaní podmínek dávejte pozor na středníky a závorky, které musí být párové. Častou chybou je zaměnit srovnávací operátor == (rovná se) za přiřazovací = (přiřazení hodnoty). Tím byste změnili hodnotu proměnné a podmínka by se chovala neočekávaně.

Dalším krokem může být přidání cyklu, který umožní opakovat dotaz, dokud uživatel nezadá platnou hodnotu. Použijeme cyklus do-while, který garantuje, že se tělo cyklu vykoná alespoň jednou. Například budete chtít, aby uživatel zadal věk větší než 0 a menší než 120. Pokud zadá neplatný údaj, program mu to oznámí a zeptá se znovu. Tím se vyhnete situaci, kdy program spadne kvůli špatnému převodu řetězce na číslo. Pro převod použijte int.TryParse(), který vrací true nebo false a do proměnné uloží výsledek, pokud je převod úspěšný. Tím se vyhnete výjimce FormatException.

Důležité je také udržovat databázový systém a knihovny aktuální. Dodavatelé opravují známé zranitelnosti, a pokud používáte starou verzi, vystavujete se riziku, které už je veřejně známé. Zavedení těchto opatření – parametrizace, validace, omezení práv, bezpečné chybové hlášky a pravidelné aktualizace – výrazně snižuje pravděpodobnost úspěšného útoku. SQL injection není problém, který by se dal vyřešit jednou provždy, ale kombinací správných návyků a nástrojů ji můžete efektivně eliminovat.

Časté chyby a jak je odstranit Jednou z typických chyb je dynamické sestavování dotazů pomocí řetězců, zejména když potřebujete řadit podle sloupce zvoleného uživatelem. Pokud uživatel může ovlivnit název sloupce nebo směr řazení, parametrizace nepomůže. V takovém případě vždy použijte seznam povolených hodnot, který ověří, že zadaný řetězec odpovídá skutečnému názvu sloupce. Druhou častou chybou je zapomínání na vstupy vstupující do LIKE, IN nebo ORDER BY klauzulí. I zde platí, že místo přímého vkládání vstupu použijte placeholder a pro dynamické části aplikujte whitelist.

Až budete mít základní program hotový, zkuste ho rozšířit: přidejte podmínky (if), cykly (for) a funkce. Například program, který opakovaně vypisuje uživatelem zadaný text, dokud nezadá prázdný řádek. Tím se seznámíte s řídicími strukturami a logikou. Nebojte se experimentovat – chyby jsou přirozenou součástí učení. Kompilátor vám vždy řekne, kde je problém, a vy se z toho poučíte. Konzolová aplikace je bezpečné hřiště, kde nemůžete nic rozbít.

Dalším častým problémem je kódování a speciální znaky. Pokud používáte soubory s překlady, vždy je ukládejte v UTF-8, jinak se diakritika rozsype. Stejně tak si dejte pozor na apostrofy a uvozovky — v některých formátech se musí escapovat, a pokud to uděláte špatně, aplikace spadne. Před nasazením si vždy spusťte automatizovaný test, který ověří, že všechny klíče existují ve všech jazycích a že žádný soubor neobsahuje syntaktickou chybu. Tím odhalíte problém dřív, než se dostane k uživatelům.

Nakonec si vytvořte dokumentaci, která popisuje, jak přidat nový jazyk do projektu. Tento postup by měl být natolik jednoduchý, že ho zvládne i nový člen týmu bez zkušeností s lokalizací. Ideální je mít připravený šablonový soubor, který obsahuje všechny klíče s ukázkovými hodnotami. Pak stačí soubor zkopírovat, přeložit a přidat do konfigurace. Pokud se držíte těchto zásad, vícejazyčný projekt se stane přehledným a snadno udržovatelným, místo aby se stal zdrojem frustrace a chyb.

Při verzování pamatujte, že překlady jsou součástí zdrojového kódu a měly by procházet stejným review procesem jako ostatní změny. Nikdy nepřekládejte přímo v produkčním prostředí, ale vždy v rámci vývojové větve. Užitečné je také nastavit si pravidlo, že každý překladatel pracuje s vlastním jazykem a nemá přístup k ostatním, aby nedošlo k vzájemnému ovlivnění. Pokud používáte externí nástroje, exportujte a importujte soubory vždy ve stejné struktuře, jakou má projekt – to usnadní automatizaci a snižuje riziko chyb při přenosu.

SQL injection patří mezi nejčastější a nejnebezpečnější zranitelnosti webových aplikací. Útočník díky ní může číst, měnit nebo mazat data v databázi, obejít přihlášení nebo v krajním případě převzít kontrolu nad celým serverem. Příčinou je téměř vždy nedostatečné ošetření vstupů od uživatele a jejich nekritické vkládání do SQL dotazů. Tento článek se zaměřuje na praktickou obranu, kterou můžete implementovat bez ohledu na použitý jazyk či framework.