0 votes
Prvních pár minut v C# rozhoduje o tom, jestli tě programování chytne, nebo odradí. Většina začátečníků zbytečně tráví čas studiem teorie a pak narazí na to, že vlastně neumí spustit ani jednoduchý program. Přitom stačí nainstalovat .NET SDK a jeden editor. Bez SDK tvůj kód nepoběží, i kdybys měl sebelepší vývojové prostředí. Po instalaci si ověř v terminálu příkaz dotnet --version. Když vypíše číslo, máš vyhráno.

Schéma převeďte ručně nebo nástrojem, ale vždy ho pak zkontrolujte. Automatické převodníky často selžou u cizích klíčů, indexů s prefixem a fulltextových indexů. Fulltext v MySQL nemá v PostgreSQL přímý ekvivalent – nahrazuje se buď typem tsvector s GIN indexem, nebo rozšířením pro trigramy. U indexů si dejte pozor na rozdíl mezi LIKE a ILIKE a na to, že PostgreSQL nerozlišuje velikost písmen v identifikátorech, pokud nejsou v uvozovkách.

Migrace z MySQL do PostgreSQL není jen převod schématu. PostgreSQL je striktnější v typech, transakcích a identifikátorech. Než začnete cokoli přenášet, zmapujte si, které tabulky používají nestandardní konstrukce: ENUM, SET, ZEROFILL, UNSIGNED nebo ON UPDATE CURRENT_TIMESTAMP. Tyto prvky v PostgreSQL neexistují a musí se nahradit jinak – obvykle pomocí CHECK omezení, samostatného typu nebo triggeru. Stejně tak si projděte, zda někde nespoléháte na tichou konverzi řetězců na čísla, protože PostgreSQL v tomto hlásí chybu.

Nakonec testujte s někým, kdo projekt nezná. Posaďte ho k obrazovce a mlčte. Sledujte, kde se zasekne, co přehlédne a co ho donutí vracet se zpět. Nemusíte mít deset testerů, stačí dva až tři. Většina vážných chyb v rozhraní se objeví už při prvním takovém pozorování. Opravte je dřív, než přidáte další funkce.

Po migraci ověřte počty řádků, součty a vzorky dat. Nestačí, že import proběhl bez chyby. Spusťte aplikaci proti nové databázi a sledujte logy – chyby se často projeví až za běhu, například u transakcí s SELECT ... FOR UPDATE nebo u auto-incrementu, který v PostgreSQL řeší sekvence. Ty je nutné po importu ručně posunout na správnou hodnotu, jinak dojde ke kolizi primárních klíčů.

Jakmile ti běží výpis textu, zkus proměnnou. Napiš string jmeno = "Karel"; a pod tím Console.WriteLine("Ahoj " + jmeno);. Spusť znovu. Vidíš, že se text spojil. Pak zkus int vek = 25; a vypiš ho. Tady narazíš na první typový problém: číslo a text se nespojí jen tak. Buď použij Console.WriteLine("Je mi " + vek + " let");, nebo modernější zápis Console.WriteLine($"Je mi vek let");. Znak dolaru před uvozovkami znamená, že se do textu vkládají proměnné ve složených závorkách. Tohle je čistší a méně náchylné k chybám.

Poslední oblastí, kde se chyby projeví nejpozději, je správa paměti. Swift používá automatické počítání referencí, ale cyklické reference umí potrápit. Pokud si dva objekty drží silnou referenci navzájem, nikdy se neuvolní. Řešením je slabá reference na jednom z nich. Kontrolujte to hlavně u delegátů a uzávěrů. Uzávěr, který zachytí objekt a zároveň je jím vlastněn, vytvoří smyčku. Pomůže záchytný seznam s slabou referencí. Tento problém se neprojeví hned, ale po delším používání aplikace začne růst spotřeba paměti a aplikace se zpomalí.

Další častou chybou je podcenění asynchronního kódu. Swift nabízí moderní přístup přes async a await, ale i ten má svá úskalí. Pokud zavoláte asynchronní funkci z hlavního vlákna a neoznačíte ji správně, aplikace zamrzne. Platí jednoduché pravidlo: všechny operace, které mohou trvat déle než několik milisekund, patří mimo hlavní vlákno. Návrat do hlavního vlákna pak proveďte explicitně, jinak se rozhraní neaktualizuje. Testujte na skutečném zařízení, ne jen v simulátoru – chování sítě a výkonu je odlišné.

Kurzorové stránkování a filtrování, které se vejde do inde

Začněte tokem, ne barvami. Vezměte papír a napište, co má uživatel na každé obrazovce udělat a co se stane po kliknutí. Pokud v tomto popisu chybí krok, bude chybět i v rozhraní. Teprve potom řešte rozvržení. Platí jednoduché pravidlo: jedna obrazovka, jedna hlavní akce. Když je primárních tlačítek pět, uživatel neudělá žádné.

Repozitář s konfigurací bývá citlivější než ten s kódem. Rozdělte ho podle prostředí, například na větve nebo samostatné složky pro vývoj, staging a produkci. Do repozitáře nepatří hesla, tokeny ani privátní klíče. Ty držte mimo verzovací systém, ideálně v nástroji na správu tajemství nebo v proměnných prostředí, které se vkládají až při nasazení. Pokud už tajemství v historii máte, nestačí je smazat v dalším commitu. Musíte je rotovat a historii přepsat, jinak zůstanou dostupná komukoli, kdo si repozitář naklonuje.
ago by (120 points)

Your answer

Privacy: Your email address will only be used for sending these notifications.
...