Jak propojit kód s designem: UI/UX základy pro vývojáře
Než začnete psát první skript, ujasněte si, co přesně chcete automatizovat. Rozdělte úkol na malé kroky: co je vstupem, co výstupem a jaké operace se mají provést. Například pokud potřebujete hromadně přejmenovat soubory, zjistěte, v jakém formátu jsou názvy, a napište jednoduchý cyklus, který projde složku a upraví názvy podle vzoru. Python k tomu nabízí moduly jako `os` a `pathlib`, které práci se soubory zjednodušují.
Důležité je také formálně správné uvedení licence v repozitáři. Nestačí jen přidat soubor s textem licence do složky. Měli byste do každého zdrojového souboru uvést hlavičku s odkazem na licenci a autorem. To usnadní budoucí správu a právní průhlednost. Vyhněte se vytváření vlastních licencí – většinou nejsou právně ošetřené a odrazují potenciální přispěvatele. Místo toho zvolte standardní, ověřenou licenci, která má jasně definovaná pravidla.
Při výběru zohledněte i to, jakou komunitu chcete kolem projektu vybudovat. Pokud plánujete, že se na vývoji bude podílet mnoho lidí, permisivní licence snižuje bariéry pro přispění, protože lidé nemusí řešit právní otázky. Naopak copyleft může být vhodný pro nástroje, kde chcete, aby všechny vylepšení zůstaly veřejné. Dobrým zvykem je také zveřejnit licenci hned na začátku projektu, ne až později – změna licence po vydání kódu může být komplikovaná a vyžadovat souhlas všech přispěvatelů.
Základem je rozdělit testování do dvou vrstev: funkční a nefunkční. Funkční testy ověřují, že tlačítka dělají to, co mají, že formuláře ukládají data a že navigace mezi obrazovkami funguje. Nefunkční testy se zaměřují na výdrž baterie, rychlost startu, spotřebu paměti a chování při slabém signálu. Častou chybou začátečníků je, že testují pouze na emulátoru. Emulátor je sice rychlý a levný, ale neodhalí problémy s dotykovou odezvou, s teplotou zařízení nebo s fotoaparátem. byt v panelákuždy si najděte alespoň jedno fyzické zařízení s aktuální verzí systému a jedno starší, aby byl rozdíl vidět.
Testování mobilních aplikací se liší od testování webů hned v několika zásadních ohledech. Přenosná zařízení mají omezený výkon, různou velikost displeje, jiný způsob ovládání a pracují s daty i senzory. Než začnete psát první testovací případy, zkuste si odpovědět na tři otázky: Kdo bude aplikaci používat? Jaké zařízení a verzi systému nejčastěji uvidíte? Co se stane, když uživatel ztratí připojení k internetu? Odpovědi vám pomohou nastavit priority, protože otestovat všechno na všech zařízeních není reálně možné.
Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor nábytek na míru limity – mnoho webů omezuje počet požadavků, takže do pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro malé soubory stačí `csv` modul.
Kromě parametrizace je nutné aplikovat princip nejmenších oprávnění. Databázový uživatel, přes kterého aplikace komunikuje, by neměl mít práva na mazání tabulek nebo na čtení systémových tabulek. Pokud dojde k průniku, útočník získá jen omezený rozsah akcí. Dále je vhodné vypnout zobrazování chybových hlášek databáze přímo v odpovědi serveru. Detailní chyby s SQL syntaxí poskytují útočníkovi mapu schématu a usnadňují mu ladění útoku. Místo toho logujte chyby do souboru a uživateli zobrazte obecnou hlášku.
Nakonec, komunikace s designérem je klíčová. Pokud narazíte na problém – třeba že návrh vyžaduje zbytečně složité CSS nebo nefunguje na některém zařízení – řekněte to. Navrhněte alternativu, která zachová vizuální kvalitu, ale bude technicky čistší. Dobrý designér ocení, když mu vysvětlíte technická omezení. A pamatujte: UI/UX není jen o tom, jak to vypadá, ale jak se to používá. Testujte s reálnými uživateli, sledujte, kde tápou, a upravujte. Iterace je normální.
Typické chyby, které otevírají dveře útočníkům Nejčastější chybou je konstrukce dotazu pomocí konkatenace řetězců, například napsat „SELECT * FROM uzivatele WHERE jmeno = '" . $_GET['jmeno'] . "'". Stačí pak zadat do pole jména hodnotu jako „' OR '1'='1" a podmínka je vždy pravdivá. Podobně nebezpečné je použití funkce mysql_real_escape_string, která sice odfiltruje část znaků, ale při vícebajtových kódováních nebo v kombinaci s jinými kontexty selhává. Dalším častým prohřeškem je přímé vkládání čísel z URL bez ověření, že jde skutečně o číslo – i to lze zneužít.