Programujeme letenky

Vývojáři GOL IBE v C.E.E. Group Travelport
Programátorský web
Background image - Futurama office park
Publikováno 28.2.2024
Testujeme shell skripty ve frameworku BATS

Nedávno jsme se vydali na cestu testování shell skriptů. Volba padla na BATS (Bash Automated Testing System), byla to skvělá jízda plná objevů a o některé z nich bychom se rádi podělili. Protože už delší dobu používáme čistý codestyle pro bash, šlo testování poměrně od ruky. Pro představu nebo inspiraci přinášíme rychlý úvod.

Odkaz na článek

Publikováno 24.1.2024
Posílání kalendářových událostí

Posílání kalendářových událostíK rezervovaným letenkám jsme přidali možnost zaslání kalendářových událostí pro jednotlivé lety ve formátu .ics. Tyto události obsahují detaily jako letiště a terminály, ze kterých a na které se poletí, GPS lokaci letiště odletu a lokální časy příletu a odletu, události jsou při změně nebo zrušení letu v kalendáři aktualizovány/zrušeny.

iCalendar specification

Publikováno 23.12.2023
PF 2024

Přejeme klidné a pohodové Vánoce a úspěšný nový rok.

Přání

Publikováno 29.11.2023
Tesena Fest 2023 konference

Náš QA lead Libor Šimo se zúčastnil Tesena Fest 2023 konference a přinesl si pár poznámek. Jedné se ale stále trochu bojí: Delete the column TESTING in workflow :)

Poznámky z konference

Publikováno 19.10.2023
validování JSON schématem

K vyhledaným letenkám nabízíme doplňkové služby, ty jsou načítány z externích služeb, s těmi si vyměňujeme JSON a příchozí i odchozí zprávy validujeme JSON schématem. K validaci jsme integrovali knihovnu https://github.com/pboettch/json-schema-validator postavenou nad https://github.com/nlohmann/json, ta druhá je v posledních letech v C++ standartem. JSON je čistější a jednodušší než XML a validace přes JSON Schéma je snad o řád čistější a jednodušší než přes DTD nebo YAML. Speciálně DTD bylo/je častým zdrojem problémů v kódu, kde ještě používáme XML.

Co je to JSON schéma?

Publikováno 11.10.2023
8. ročník Týdne inovací

Početnější výpravu jsme vyslali na Týden inovací ČR 2023. Výstavy, která přináší spoustu prezentací, panelových diskusí a seminářů. Tentokráte v atraktivní budově ČSOB.

Stránky Týdne inovací

Publikováno 9.10.2023
Team tmelling

Team tmellingO víkendu jsme si dopřáli histricky první víkendový firemní "tmelling". Došlo na teoretickou i praktickou zkušenost s AI, shrnutí firemních aktivit, venkovní "únikovku" a spoustu dobrého jídla, pití a zábavy.

Equitana Hotel Resort

Publikováno 25.9.2023
TERIBEAR 2023

TERIBEAR 2023Letos jsme už podeváté společně pohybem pomohli opuštěným a ohroženým dětem. I když se Teribear se tentokrát přesunul do virtuálu začali jsme společným posilněním a výběhem ve Stromovce. V následujících dnech jsme nakonec dohromady nasbírali úctyhodných 1 407,2 km.

Výsledek našeho týmu

Publikováno 31.8.2023
pnpm - rychlejší a lepší

pnpm - rychlejší a lepšíV minulosti sa riešilo hlavne npm vs yarn. Teraz sa ponúka nová alternativa pnpm. Poznám prvú myšlienku - daľší nový tool v JS, ako by ich už nebolo moc. Môže byt pnpm iné? [SPOILER ALERT]: yes! Pnpm udáva tri argumenty - rychlejší, efektívnejší a striktnejší. V porovnaní s yarnem je takmer 2x rychlejší(v súlade so zdrojmi na internetu a vlastným meraním v ramci trip manageru). Efektívne šetrí miesto na disku používaním globalneho uložiska pre knihovny - pri viacero projektov, ktoré používajú rovnakú knižnicu, je knižnica na disku uložená jen jednou, a len sa na nu hardlinky odkazujú. Narozdiel od yarnu a npm, pnpm určuje, že kód v aplikaci má prístup len k závislostiam(a nie k podzávislostiam), ktoré sú v package.json(takzvaný problem "flat dependency").

Dokumentace pnpm

Publikováno 9.8.2023
Backendisti #13

Z nabídky vyrazit ve větším počtu na třinácté setkání backendistů bylo nakonec pouze osamělé sledování online přenosu. Ale i tak to za ten čas stálo díky vybraným tématům - přetěžování API postaveném na varnishi, elasticsearchi a postgre, souboj se zaváděním buzzwordů nebo rychlá memory based databáze evitaDB.

YouTube záznam

Publikováno 29.6.2023
QA team building

Náš testerský tým si trochu odpočinul od testování a prošel si jednodenním team tmellingem. Ne že by to nutně potřeboval, ale prohlubovat týmového ducha se vyplatí vždy. Vyzkoušeli jsme si RiskStorming With TestSphere, naše oblíbené párové testování, únikovou hru a nakonec jsme otestovali i různá piva :)

LinkedIn

Publikováno 5.6.2023
Machine Learning Prague 2023 - konference

Jednočlennou výpravu jsme vypravili na víkendovou konferenci o ML, AI, LLM a spoustě dalších cool zkratek, které slibují změnit podobu budoucnosti. Vesměs šlo o velmi praktické ukázky řešení nějakého konkrétního fuknčního nebo produkčního problému. Příští rok jdeme zas.

Stránka ML Prague

Publikováno 16.5.2023
Exkurze na letiště

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.)

Stránky exkurzí

Publikováno 12.4.2023
Sentry a Next.js

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 😉.

Manuál s realizací

Publikováno 5.4.2023
První pokusy s Github Copilot

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.

Github Copilot

Publikováno 24.2.2023
QA Chapter meeting

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.

QA mission

Publikováno 11.1.2023
AWS-CDK

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.

Dokumentace AWS-CDK

Publikováno 21.12.2022
PF 2023

Přejeme příjemné prožití Vánoc a šťastný nový rok.

Přání

Publikováno 9.11.2022
Symphony Serializer

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.

Dokumentace Symphony Serializer

Publikováno 23.9.2022
TERIBEAR - 555.1 km za týden

TERIBEAR - 555.1 km za týdenTaké 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.

Výsledek našeho týmu

Publikováno 24.8.2022
Vývojové diagramy? Zkuste Mermaid!

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.

Odkaz na Mermaid

Publikováno 1.6.2022
Výbava pracovního počítače

Michal se pochlubil jak vypadá jeho pracovní počítač z pohledu softwarové výbavy.

Odkaz na článek

Publikováno 4.5.2022
Jak zajistit chytřejší C++ enumy?

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.

Odkaz na článek

Publikováno 23.3.2022
TripGate: Jak mít služební cesty pod kontrolou

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.

Odkaz na podcast

Publikováno 10.3.2022
Začínáme dockerizovat

Co dělat, když už vývojáře nebaví vyvíjet na serveru s textovým terminálem?

Odkaz na článek

Publikováno 9.2.2022
Learn or die, teach or die: Kancelářské pohybové minimum

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).

Prezentace v PDF

Publikováno 25.1.2022
Jak u nás bojujeme proti tomu aby se testování nestalo úzkým hrdlem?

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ů :).

YouTube prezentace

Publikováno 31.12.2021
Jak používáme nástroj Postman - nejsledovanější video komunity 2021

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 :)

Odkaz na detail

Publikováno 20.12.2021
Pour Féliciter 2022

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.

Přání PF 2022

Publikováno 9.12.2021
OpenVPN a systemd

Pracujete vzdáleně přes OpenVPN? Jestli ano, Štěpán má pro vás malý tip na užitecnou konfiguraci.

Odkaz na článek

Publikováno 22.11.2021
Valgrind

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.

Odkaz na článek

Publikováno 19.11.2021
Learn or die, teach or die: Dědičnost v db modelu

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.

Odkaz na článek

Publikováno 2.8.2021
Automatický deployment mobilní aplikace pomocí Bitrise CI/CD

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.

Odkaz na článek

Publikováno 19.4.2021
JSON, Yaml a Base64

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.

https://paranoid-development-tools.netlify.app

Publikováno 8.4.2021
Postman pro každodenní testování API

Postman toho umí opravdu hodně a o pár funkcionalitách vyprávěl i náš QA Libor pro [pro:]Test! komunitu.

Odkaz na detail

Publikováno 10.2.2021
Test Automation in DevOps webinar

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 :)

Odkaz na obrázek

Publikováno 15.1.2021
Jak psát Use Case

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.

Odkaz na článek

Archív: 2016 | 2017 | 2018 | 2019 | 2020 | 2021

GOL IBE D4 - Next.js, React native
GOL IBE D4 - Next.js, React native

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í.

GOL API - C++
GOL API - C++

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.

GOL IBE D3 - PHP
GOL IBE D3 - PHP

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.

Co všechno tedy používáme
  • Next.js, React, Typescript
  • PHP 8.0, začínáme s PHPStan
  • PHPUnit, Selenium, VisualCeption, Jest, Cypress
  • C++ (s možností využívat C11 a C14), Boost
  • Git (Gitlab, včetně CI)
  • Mysql, Memcached, Redis
  • Munin, ELK
  • koketujeme s AWS lambda
  • Debian spravovaný pomocí Ansible
  • nějaký ten Shell a trocha toho Pythonu
  • a na mobilní aplikace máme React Native
Externí API

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.

Hledáme kolegy

Podrobnější popis.

Čím je naše práce specifická
Čím je naše práce specifická
  • Vyvíjíme v týdenních cyklech
  • Refaktorujeme, automatizujeme
  • Produktu držíme podporu
  • Takže víme, jak se mu daří...
  • ... u nás, na Slovensku, v Albánii, v Srbsku...
  • ... nebo třeba Keni, Thajsku nebo Surinamu...