Mini Case Study rozhovor s Lumírem Ludvíkem
Eva Kanisová
2/23/2023 - 4 min read
Full-stack developer Lumír Ludvík pracuje s kolegou Janem Janeczkem čtvrtým měsícem na projektu pro lesnický sektor. Vzal nás na exkurzi jejich prací a dokonce nám prozradil pár svých triků z praxe.
Lumíre, můžeš nám prosím popsat projekt, na kterém zrovna pracuješ?
Ve spolupráci s kolegou Honzou vyvíjíme aplikaci, která se zabývá správou lesů a nabízí uživatelům naprostou kontrolu nad svým pozemkem z pohodlí domova.
Jaké jsou funkce a přednosti této aplikace?
Nejdůležitější vlastností naší aplikace je možnost vysadit, pokácet a následně odvézt dřevo ze svých pozemků. Další důležitou funkcionalitou je možnost zaznamenávat veškeré výdaje spojené s danou prací včetně zpracování daní z pozemků a služeb.
Uživatel si také může své pozemky virtuálně prohlédnout pomocí přídavné aplikace napsané v unity, která je součástí webu včetně responzivní mobilní verze.
Aplikace je současně úložištěm všech uzavřených a budoucích smluv, které jsou zpracovávány tzv. “forest experts” prostřednictvím zabudovaného messengeru. Navíc má uživatel možnost veškeré své finance libovolně přenášet mezi aplikací a svou bankou.
V neposlední řadě také umožňujeme zažádat a nechat si vystavit PEFC certifikát pro uživatelem vlastněné pozemky.
PEFC je celosvětově nejrozšířenější systém certifikace lesů. Standardy se snaží změnit způsob, jakým jsou lesy spravovány na lokální i globální úrovni. Cílem je zachování a rozšiřování lesů pro trvale udržitelné hospodaření v lesnictví, zdroj: https://www.pefc.cz/pefc/.
Jaká je tvoje dev role? V jakých technologiích pracujete?
Jsem čistě frontend vývojář a pracuji s těmito technologiemi:
frontend: TypeScript, React.js 18 s vlastním frameworkem, Bootstrap, PrimeReact, vlastní UI knihovnu,
backend: Java 11, MS SQL,
DevOps: Docker, Nginx, Jenkins, Git.
Co se Ti zatím povedlo implementovat?
Největší změnou je přechod ze staré server side rendering verze aplikace psané v JSF na single page application v React.js. Došlo k 1:1 přepisu všech starých “vychytávek” do nového rychlého kabátku s jednodušší údržbou a vylepšenou responzivitou na přenosných zařízeních.
Na čem právě teď pracujete?
Nyní se zabýváme re-designem celé aplikace do moderního vzhledu a upgradem naší UI knihovny.
Co Tě na tomto projektu nejvíce baví dělat?
Osobně nejraději pracuji na optimalizaci stávajícího řešení, kdy se snažím balancovat na velmi úzké hranici paměťové a časové náročnosti našich komponent, což je právě tento případ.
Častokrát je to nevděčná práce, kde člověk stráví hodiny i pouhým argumentováním, zda určitá část výkonu stojí za vyšší paměťovou náročnost a jak často je daná část kódu vlastně spuštěna. Ale výsledný pocit, kdy aplikace naplno využívá veškerý svůj dostupný potenciál, je k nezaplacení.
Co byla zatím největší překážka?
Na tuhle otázku je de facto totožná odpověď jako na tu předchozí, a tedy optimalizace. :)
Stává se, že člověk narazí na asi největší neduh Reactu, což je zbytečné re-renderování stránek, i když se nic v našich datech kromě referencí v paměti nezmění.
V těchto situacích je někdy i nezbytné zpochybnit celou svou architekturu a přepsat větší část aplikace. Avšak zde nastává otázka, zda je tento krok nutný. I když architektura po technické stránce není ideální, nutně to neznamená horší výkon aplikace a user experience pro koncového uživatele. Mohlo by tak dojít až k zbytečnému odložení vydání aplikace kvůli úpravám, které ocení pouze programátoři.
Máš nějaký tip, kterým bys mohl inspirovat další vývojáře?
Co se týče frontendu můžu doporučit knihovnu CASL na zprávu práv uživatelů. Knihovna má velké kouzlo ve své jednoduchosti. Stačí definovat pár TypeScript modelů a klíčových slov pro rozeznání daných práv a nakonec zaobalit náš JSX kód do jednoduché konstrukce, která už zbytek logiky provede za nás.
<Can I=”<use/view>” a=”<permissionName>” >
<MyLittleSecretComponent />
</Can>
Pro ty, co ještě neobjevili krásu Dockeru a CI/CD, vězte, že spustit jeden script a mít své změny během pár chvil nasazené na Vašem prostředí, ušetří spoustu vytrhaných vlasů a porodních bolestí s testováním Vaší aplikace.
Všimla jsem si, že máš na stole chilli omáčku a Nutellu. Co máš radši? :)
Mám rád obojí, ale poslední dobou mám větší spotřebu Nutelly. Každý čtvrtek ráno totiž připravuji nám Rakeťákům palačinky k snídani. :)
Díky moc za rozhovor i výborné palačinky :).
Ať se daří!