Jakub Vrána - životopis
Kontakt
Vzdělání
- Matematicko-fyzikální fakulta Univerzity Karlovy, sekce informatiky (MFF UK) - absolvent
9/1999 Bakalářský titul
2/2003 Magisterský titul, specializace: databázové systémy, lingvistika
- Diplomová práce: Obnovení diakritiky v českém textu (C, PHP, VBA Word), 2003
Obnovení diakritiky v českém textu není jednoduché hlavně kvůli řadě nejednoznačností. Pro obnovení diakritiky jsem použil EM algoritmus pro vyvážení vah unigramů, bigramů a trigramů a Viterbiho algoritmus pro nalezení co nejvyšší pravděpodobnosti celé věty. Výsledky jsou dobře použitelné a webové rozhraní aktivně pomáhá s opravováním chyb. Jádro programu je kvůli rychlosti napsáno v jazyce C, webové rozhraní v PHP a jednodušší verze je k dispozici také pro MS Word.
Praxe
- Google - vývojář, seniorní vývojář (povýšen 10/2016), 8/2013 - nyní
Gmail Security (Java, JavaScript)
Information Security Engineering - Security Enhancements and Mitigations (Java, JavaScript)
- Gigwalk - seniorní vývojář (PHP, MySQL, ElasticSearch), 4/2013 - 7/2013
- Facebook - vývojář, 10/2011 - 3/2013
Fotky a videa - nový prohlížeč fotek (PHP, JavaScript)
Vývojářské nástroje - Phabricator (PHP, MySQL)
Řada vylepšení nástroje pro spolupráci na kódu: neprolomitelná obrana proti XSS, infrastruktura pro lokalizaci, asynchronní a relativní SQL dotazy, detekce zkopírovaného kódu, otvírání souborů v editoru, podpora statické kontroly a testování na pozadí, kešování statické kontroly, vylepšení Mercurialu a git-svn, ElasticSearch.
- Centrum Holdings - Python a PHP programátor Sítko.cz (Django, OpenSocial - Shindig), Amplión.cz (Nette Framework, NotORM), 4/2008 - 8/2011
- Athos Travel - prezentace, administrační rozhraní a objednávkový systém incomingové cestovní kanceláře pro několik měst (vícejazyčné stránky, optimalizace pro vyhledávače, HTMLtmpl, PHP, MySQL+replikace), spolupráce s Booking.com přes XML rozhraní (webové služby), 12/2004 - 3/2008
- European Network Company - člen týmu vyvíjejícího webové aplikace (PHP, MySQL) - např. Návštěvnost.cz (podrobné sledování návštěvnosti stránek) a RegistrujWeb (poloautomatická registrace do vyhledávačů, automatická kontrola přístupnosti stránek z pohledu vyhledávačů, zdravotně postižených a alternativních prohlížečů), 3/2003 - 11/2004
- Přednášky a pedagogická činnost:
Kiwi.com meetup - Provable Safety (6/2018, anglicky)
Devel - Dokazatelná bezpečnost (6/2018)
WebExpo - Code Reviews with Phabricator (9/2013, anglicky)
Devel - Zkušenosti z vývoje ve Facebooku (7/2012)
WebExpo - Ajaxizace (9/2011)
O'Reilly MySQL Conference - Vyměňte phpMyAdmin za něco lepšího (4/2011, anglicky)
OSI Days - Prezentace NotORM, Prezentace Adminer Editor, Panel Open Source Databases (9/2010, anglicky)
WebExpo - Škálování, optimalizace a zálohování databáze MySQL (10/2008)
Mistrovství v MySQL 5 - odborná korektura českého překladu (11/2006)
Konference IT Underground - Basics of PHP Security (2/2006, přednáška v angličtině)
MFF UK - praktika z HTML a PHP s několika přednáškami (2000 - 2004), předmět Internet (2004 - 2008)
VOŠIS - semestrální přednáška Tvorba webových aplikací (2004 - 2005)
- Školení: (4/2006 - 9/2011)
Bezpečnost PHP aplikací (vlastní školení)
Návrh a používání MySQL databáze (vlastní školení)
JavaScript a AJAX (vlastní školení)
Knihovna jQuery a AJAX prakticky (vlastní školení)
Výkonnost webových aplikací (vlastní školení)
Konfigurace a výkonnost MySQL (vlastní školení)
Úvod do PHP (Akademie Root.cz)
Programování v PHP 5 (Akademie Root.cz)
PHP pro pokročilé (TrainTime)
Mezi klienty patří: Internet BillBoard, Telefónica O2, PricewaterhouseCoopers, Vltava-Labe-Press, ČVUT, Univerzita Karlova, Kasa.cz, Seznam.cz, Volksbank, AutoCont, Kerio, NetCentrum, Patro.cz, GTS Novera, Vojenská akademie, Fortuna, Symbio, Česká televize, Český rozhlas, Pojišťovna Kooperativa, GE Money, LMC a další.
Vlastní projekty
- Adminer - správa databáze v jednom PHP souboru (PHP, MySQL), 2007 - nyní
Webová konzole pro správu databáze s řadou funkcí uložená v jednom kompaktním souboru (dříve phpMinAdmin). Finalista soutěže SourceForge.net 2008 Community Choice Awards, nominace v anketě Czech Open Source v kategorii Software roku 2008.
- NotORM (PHP), 2010 - 2014
Knihovna pro snadné načítání dat z databáze s vynikající podporou vztahů mezi tabulkami.
- JUSH - JavaScript Syntax Highlighter (JavaScript), 2007 - 2014
Vzledem k tomu, že zvýrazňování syntaxe do HTML kódu vytváří velice dlouhý výstup, tak je lepší ho provádět na straně klienta. Zvýrazňování syntaxe zdrojového kódu webových aplikací je velice komplexní úkol, protože se do sebe vkládá pět jazyků (HTML, CSS, JS, PHP and SQL). JUSH podporuje toto vkládání jedinečným způsobem a navíc doplňuje odkazy do dokumentace všech jazyků.
- PHP triky - weblog o elegantním programování v PHP pro mírně pokročilé (PHP, MySQL), 2/2005 - nyní
Programovací jazyk PHP je velice jednoduchý na naučení, proto v něm programuje i spousta nezkušených začátečníků. Více než 500 článků o PHP na tomto serveru se snaží šířit osvětu v tom, jak v PHP programovat správně s ohledem na specifika webových aplikací a odhaluje mnohdy netušená zákoutí jazyka. Vítěz ankety Czech Open Source v kategorii Blog roku 2008 a 2009.
- MySMS.cz - webové rozhraní pro placené posílání SMS zpráv (C, PHP, MySQL, GSM, bezpečnost), 2003 - 2006
Když někteří mobilní operátoři zrušili v roce 2003 webové rozhraní pro posílání SMS zpráv, tak jsem se rozhodl vytvořit vlastní. Koupil jsem GSM modem, upravil nízkoúrovňové rozhraní mého kamaráda pro komunikaci s ním, zřídil účet v bance a napsal webové rozhraní. Nebylo moc času, takže vše muselo být hotové asi za tři týdny. Protože se operuje s penězi, byla velice důležitá bezpečnost - použil jsem HTTPS, klientské certifikáty a vytvořil bezpečné přihlašování i přes HTTP (výzva - odpověď).
- Matfyz.cz - webové a e-mailové aliasy pro studenty MFF UK (PHP, MySQL, qmail, Apache), 2001 - 2014
Když jsem přišel na školu, získal jsem "pěknou" e-mailovou adresu jvra6670@barbora.ms.mff.cuni.cz a webové stránky na adrese http://www.ms.mff.cuni.cz/~jvra6670/. Protože si to nikdo nedokázal zapamatovat, tak jsem se rozhodl vytvořit server na e-mailové a webové aliasy pro všechny studenty MFF UK. Server je poměrně oblíbený a nyní spravuje přes 2000 aliasů (na škole je asi 3000 studentů).
- Čtyřka - mariáš pro čtyři hráče (Delphi), 1998 - 2000
Původně se jednalo o ročníkový projekt a já jsem se rozhodl na něm zapracovat trochu víc, aby bylo možné program prodávat. Nejzajímavější část je herní algoritmus založený na strategii používané i lidmi, takže se nejedná o obvyklý přístup hledání tahu hrubou silou. Důležitou součástí je i kvalitní přizpůsobitelné herní prostředí a síťová hra. Jedná se o shareware se zhruba 10 000 instalacemi a více než 600 platícími zákazníky.
Účast na otevřených projektech
- PHP manuál - jsem veden jako jeden z osmi současných autorů anglické dokumentace, pracuji i na české verzi dokumentace (Docbook), 12/2003 - 5/2013
- Nette Framework - příspěvky do databázové vrstvy, bezpečnosti, šablon a testování (PHP), 3/2009 - 8/2011
- SciTE - řada vylepšení do open-source editoru (C++), překlad do češtiny, 12/2001 - 12/2004
Znalosti
- JavaScript, Java
- PHP, Nette Framework, bezpečnost
- SQL, návrh databází, replikace
- Git, code review
- Cizí jazyky: angličtina (slovem i písmem), ruština (částečně)
Publikované knihy a články
- Kniha 1001 tipů a triků pro PHP - 456 tištěných stran mých znalostí o vývoji webových aplikací, 2010
- the Month of PHP Security (anglicky): Variable initialization in PHP (5/2010), Context-aware HTML escaping (5/2010)
- php|architect (anglicky): Architecture of Adminer (8/2009), Storing Multilingual Records in the MySQL Database (4/2009)
- Zdroják: Doctrine 2 a NotORM - videotutoriál (1/2011), Databáze v PHP elegantně s NotORM (5/2010), phpMyAdmin VS Adminer (1/2010)
- Root.cz: Export do Open XML v PHP (2/2007), Vyhledávání OpenSearch (11/2006), Bezpečné přihlašování uživatelů (4/2006), AJAX (10/2005), Seriál PHP okénko (3/2005 - 8/2007), Jak zobrazit banner na zabezpečené stránce (12/2003), Využití databázových indexů (7/2003)
- Interval.cz: Ukládání vícejazyčných záznamů s MySQL (5/2009), Vícestránkový formulář v PHP a JavaScriptu (8/2007), Alternativa ke GNU Gettext (5/2005)
- Ostatní:
Seriál Google Code Jam 2008 (Programujte.com, 8/2008),
Bezpečnost PHP aplikací (Crypto-World, 6/2008),
Recenze Delphi for PHP (Connect, 6/2007)
English version