Jako příležitost k menšímu team buildingu jsme si vybrali tematicky blízkou exkurzi na letiště Václava Havla v Praze. Viděli jsme z blízka startovat Boeing 777 a vyzkoušeli si únikovou skluzavku ve výcvikovém centru. (A pak si dali pivo v Libockém dvoře.)
Pre reportovanie chyb používáme sentry. Next.js od verze 10.0 obsahuje podporu pro sentry. Toto umožnuje logovanie chýb na klientovi aj na serveru. Súčastou popisu reportované chyby je i ukázka kodu, kde chyba vznikla. Na inštaláciu sentry existuje manuál, ktorý v sebe má už automatizovaný skript, ktorý nastaví sentry po krocích. Prípadne je stále možné jít manuální cestou 😉.
Na prvních pár licencích testujeme, co pro nás může dělat Github Copilot. Množí se historky, kdy "zázračně" pomohl a kdy naopak "ostudně" selhal. Mezi nejlepší patří, když správně doplnil konfigurační json pro tureckou liru. Kdyby to udělal programátor sám a přesně podle nedokonalého zadání, byla by tam chyba.
Již je tomu rok, co jsme zavedli pravidelné QA chapter meetingy. Cíle, které jsme si před rokem dali a většinou se nám je daří i plnit :) jsou: retrospektiva, prezentace nových funkcionalit, vylepšování procesů a společné vzdělávání. Současně také vznikaly nové dokumenty, mimo jíné například QA mission či Klíčová slova, která pomůžou k rychlejší orientaci v našich lozích.
Kromě lambdy nasazované frameworkem serverless používáme i kontainery v Elastic container service spravované službou Fargate a nasazované pomocí AWS Cloud Development Kit. CDK umožňuje definovat strukturu AWS komponent pomocí tříd a funkcí některého z podporovaných jazyků (python, typescript, java...). Z takové definice CDK vygeneruje cloudformation předpis, kterým aplikuje rozdíly proti stávajícímu stavu v AWS.
Pro serializaci dat z objektů a deserializaci dat do objektů používáme komponentu Serializer ze Symphony frameworku. Hodí se nám především pro generování odpovědí z našeho JSON API. Výhodou je, že s použitím základních a několika vlastních normalizérů můžeme serializovat poměrně složité struktury.
Také letos jsme se spolu s našimi kolegy, zákazníky, rodinami a přáteli zapojili do akce TERIBEAR hýbe Prahou. Každý rok patříme jako Travelport i mezi partnery akce. Některým kolegům se podařilo za sedm dní nasbírat více než 100km.
Začali jsme používat Mermaid pro různé vývojové diagramy. Líbí se nám jednoduchá syntaxe, díky které je úprava dokumentace rychlá a snadná pro každého člena týmu. mít přímo v repozitáři a aktuálnost dokumentace můžeme kontrolovat v rámci implementace issue v Gitlabu.
Michal se pochlubil jak vypadá jeho pracovní počítač z pohledu softwarové výbavy.
S kolegy z C++ teamu jsme se zamýšleli nad tím, jak se vypořádat s enumy, které mají mít pár funkcionalit navíc.
Kolega Zdeněk vyprávěl pro podcast Komora+ o tom, co dělá náš produkt TripGate. Jeho jádro tvoří GOL IBE D4 a GOL API. Samostatný tým pak vytváří v AWS další komponentu, která TripGate dotváři.
Co dělat, když už vývojáře nebaví vyvíjet na serveru s textovým terminálem?
Kolega Lukáš připravil krátkou prezentaci, co bychom pro sebe mohli během dne udělat, aby naše tělesné schránky tolik netrpěly extrémní povahou naší vývojářské práce (= sezením).
Vylepšování procesu celého vývojového cyklu, nebo zavádění nových nástrojů a jiných činností vycházejících například i z teorie omezení. A samozřejmě hledáním nových testerů :).
Náš QA Libor prezentoval minulý rok používání nástroje Postman pro [pro:]Test! komunitu a záznam přednášky měl největší sledovanost :)
Přejme veselé Vánoce a šťastný nový rok 2022. Ani letošní rok nebyl pro letectví jednoduchý. Přesto nezahálíme a pilně vyvíjíme naše produkty.
Pracujete vzdáleně přes OpenVPN? Jestli ano, Štěpán má pro vás malý tip na užitecnou konfiguraci.
Pro dynamickou analýzu kódu v C++ používáme Valgrind. Štěpán v následujícím článku připravil malou ukázku. Pokud Valgrind používáte, možná jste se s ní taky setkali. Pokud Valgrind nepoužíváte, můžete se aspoň podívat, s čím by vám mohl pomoci.
Pár slidů na téma Dědičnost v db modelu - dekompozice tabulek podle 3. normální formy není nutně způsobem, který používat vždy. Krátká LodTod přednáška s živou diskusí proběhla v rámci pravidelného středečního meetingu.
S narůstajícím počtem variant naší mobilní aplikace GOL Mobile bylo potřeba zautomatizovat vydávání do příslušných obchodů (Google Play a Apple App Store). Martina v následujícím článku popsala důvody, které nás vedly k volbě jednotlivých technologií a detaily celého deployment procesu, který nově začíná pushnutím do produkční větve a končí automatickým upgradem všech variant Android a iOS aplikací patřícím různým zákazníkům.
Sem tam každý z nás potřebuje převést JSON na Yaml a zpět, rozkódovat nějaký ten Base64 řetězec z logů. Takových udělátek je na internetu spousta. Ovšem v JSONu a Yamlu je typicky konfigurace aplikace, v Base64 bývají tokeny, prostě citlivá data, která by neměla nikde uniknout. My jsme paranoidní a máme i paranoidní utility, u kterých je riziko ztráty výrazně menší, protože převody se dějí pouze na straně internetového prohlížeče. Dostupné jsou na níže uvedené adrese včetně zdrojových kódu.
Postman toho umí opravdu hodně a o pár funkcionalitách vyprávěl i náš QA Libor pro [pro:]Test! komunitu.
Včera se náš QA Libor Šimo účastnil webináře o CI/CD, který pořádala společnost Tesena. Jan Egermaier popisoval, jak nastavit automatizované testy pomocí nástroje GitLab. Závěr je pozitivní: přesně tak probíhá continues integration i u nás :)
V našich zadáních často využíváme Use Case - strukturovaný postup, jak bude probíhat požadovaná akce. UC podporuje i nacházení a řešení různých nečekaných situací. Mise připravil stručný návod, na co si dát při psaní UC pozor.
Vyvíjíme rezervační systém, kterému říkame GOL. Zkratka IBE znamená Internet booking (= rezervační) engine. Rezervujeme primárně letenky. Označení D4 značí čtvrtou generaci, vyvinutou v javascriptovém frameworku Next.js, postaveném na Reactu. Z původního Flow jsme přešli na Typescript. Testujeme v Jestu a Cypressu. Aplikace má i verzi určenou pro korporátní zákazníky - TripGate a s využitím React Native i verzi mobilní.
Uvnitř GOLu se skrývá C++ jádro staré více než 10 let. Historicky podporovalo několik zdrojů letenkových a hotelových dat, rezervace aut a pojištění. Stále je v něm co zlepšovat. Při vývoji si pomáháme mockováním všech externích zdrojů dat, se kterými spolupracujeme. To nám umožňuje psát automatické testy. Nový kód píšeme v C14 a když je to potřeba, využíváme Boost.
Vyvíjíme také rezervační systém pro dodatečné služby k letenkám Trip Manager. K již zakoupené letence umožňuje dokoupit služby, jako jsou konkrétní sedadlo, check-in, dodatečná zavazadla nebo jídlo na palubě. Backend je v PHP 8.0 (využíváme PHPStan) a frontend v Next.js (React, Typescript). Trip Managera najdete v historii zpráv pod starším názvem Trawys.
Starší verze GOLu. Systém stále intenzivně vyvíjíme a zároveň udržujeme v provozu přes 10 let. To znamená, že v začátcích GOLu vypadal webový vývoj úplně jinak než dnes. Ale neznamená to, že bychom ho dělali celou dobu stejně. Jsme na PHP 8.0, využíváme PHPStan (na nižších levelech), testy píšeme v Codeception a PHPUnit.
Využíváme různá API z cestovního ruchu. Nejvíce používáme API k systému Galileo, které využívají i největší hráči v oboru. V ČR jsou to například Kiwi.com, StudentAgency, nebo Pelikan. Obdobné je to s API Travelfusion.