PB161 Programování v jazyce C++ Přednáška 12

Podobné dokumenty
Profilová část maturitní zkoušky 2013/2014

Řízení reálných projektů, agilní metodiky

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

Profilová část maturitní zkoušky 2017/2018

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MBI - technologická realizace modelu

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

Business Intelligence

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Nové jazykové brány do Caché. Daniel Kutáč

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Instalace a konfigurace web serveru. WA1 Martin Klíma

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Projekt do předmětu PAS. Textový editor

Přijímací zkouška - informatika

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Návrh softwarových systémů - úvod, motivace

Název prezentace 1. Poskytovatel garantovaných služeb NDC včetně kybernetické bezpečnosti ve státní správě

Autor. Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech

Maturitní otázky z předmětu PROGRAMOVÁNÍ

PŘÍLOHA C Požadavky na Dokumentaci

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Základy programování Zdrojový kód, dokumentace, týmová práce

SYLABUS IT V. Jiří Kubica. Ostrava 2011

TÉMATICKÝ OKRUH Softwarové inženýrství

OPS Paralelní systémy, seznam pojmů, klasifikace

Název DUM: VY_32_INOVACE_5A_8_Zaklady_prezentace_v_powerpointu Vyučovací předmět: Informatika

Windows Server 2003 Active Directory

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Máte to? Summon jako základní vyhledávací nástroj NTK

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

4. Úvod do paralelismu, metody paralelizace

Návrh softwarových systém. Návrh softwarových systémů

PRŮVODCE STUDIEM PRO PREZENČNÍ FORMU STUDIA MODULU IT V PODNIKU DÍLČÍ ČÁST PROGRAMOVÁNÍ BUSINESS APLIKACÍ

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

1 Nejkratší cesta grafem

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

DISTRIBUCE GNU/LINUXU

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Elektronická evidence tržeb Seminář pro vývojáře pokladních systémů

Vzdělávací obsah vyučovacího předmětu

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Nové funkce a technologie v současných a budoucích verzích Invenia. Jiří Kunčar

Obsah ČÁST I JAK SE UCHÁZET O ZÁKAZNÍKY NA WEBU KAPITOLA 1

Jak funguje GNU/Linux

Dozvíte se mimo jiné, jak přinutit internetový vyhledávač, aby našel přesně to, co potřebujete.

1. Databázové systémy (MP leden 2010)

Vývoj software pro Linuxové distribuce. Installfest Praha,

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

Použití databází na Webu

Nový Node Monitor. 13. prosince Lukáš Turek Praha12.Net

Zadání soutěžních úloh

Formy komunikace s knihovnami

Evropská digitální knihovna. < Prezentace k eseji pro předmět PV070 Digitální knihovny. Tomáš Drusa

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

Archivace relačních databází

Teorie a praxe SW inženýrství

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Datová věda (Data Science) akademický navazující magisterský program

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Tiskové služby v sítích Microsoft. PDF created with pdffactory trial version

Cílem seminární práce je aplikace teoretických znalostí z přednášky na konkrétní úlohy. Podstatu algoritmu totiž

Vysvětlete funkci a popište parametry jednotlivých komponent počítače a periferních zařízení.

Konfigurace DHCP serveru a překladu adres na směrovačích Cisco

Testování operačního systému Windows Phone 8

Co je to SCRUM! FRAMEWORK vs METODIKA. Ken Schwaber a Jeff Sutherland ho mají za framework Kde hledat detaily?

Dynamicky vázané metody. Pozdní vazba, virtuální metody

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

Programování v jazyce C a C++

Maturitní témata Školní rok: 2015/2016

Šumperský efekt rozmnožení případů užití

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

Vyhledávání na Internetu

6. Tahy / Kostry / Nejkratší cesty

Architektura počítačů Agenda

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Publikujeme web. "Kam s ním?!"

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY

Olga Rudikova 2. ročník APIN

Hadoop a HDFS. Bc. Milan Nikl

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Datové struktury 2: Rozptylovací tabulky

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Algoritmus pro hledání nejkratší cesty orientovaným grafem

programátor vs. vývojář

Programování v jazyce C a C++

10. Složitost a výkon

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Agilní metodiky a vývojové procesy

Vzdělávací obsah předmětu

NOVÁ ZÁVĚREČNÁ ZKOUŠKA

Angličtina program k procvičování slovní zásoby

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Transkript:

PB161 Programování v jazyce C++ Přednáška 12 Vývoj software Jiří Weiser 13. prosince 2016 PB161 přednáška 12: Vývoj software 13. prosince 2016 1 / 29

Úvod Kdo jsem vývojář v Seznamu bývalý cvičící C/C++ předmětů na FI aktuálně pouhý opravující PB161 přednáška 12: Vývoj software 13. prosince 2016 2 / 29

Úvod Co vám dneska povím? jak funguje vývoj ve větším rozměru jaká úskalí na vás mohou čekat při vstupu do firmy pohovorové otázky náčrt achitektury vyhledávače případně i něco jiného PB161 přednáška 12: Vývoj software 13. prosince 2016 3 / 29

Anketa Kdo z pracuje při škole? dobrá věc (doporučuji) když už ne ve firmě, tak aspoň v laboratoři na FI (doporučuji ještě víc) nezanedbávejte školu k titulu se přihlíží PB161 přednáška 12: Vývoj software 13. prosince 2016 4 / 29

Programování v malém snaha o co nejrychlejší vyhotovení žádná (nebo malá) potřeba verzování do první ztráty zdrojových textů žádný požadavek na udržitelnost nikdo jiný nebude kód udržovat/rozvíjet není třeba plánování testy jenom nejnutnější typicky domácí úkoly v podstatě se jedná o skripty PB161 přednáška 12: Vývoj software 13. prosince 2016 5 / 29

Programování ve větším snaha o co nejrychlejší vyhotovení jak u současného projektu, tak u budoucích úpravy kódu s ohledem na předpokládané změny v budoucnu silná potřeba verzování striktní zachování historie změn nutnost verzování binárek (balíčky) testování unit, funkční, integrační, zátěžové, bezpečnostní, přívětivosti metodika vývoje SCRUM (a další agilní metodiky) vodopád velké změny se dějí pomalu PB161 přednáška 12: Vývoj software 13. prosince 2016 6 / 29

Programování ve větším stabilita kódu budete pracovat převážně s cizím kódem budete psát kód, který budou číst další lidé mohou to být cizinci mohou mít různou úroveň znalostí používaných technologií Coding style guides omezení nástrojů jazyka vhodné pojmenování komentáře čitelnost má přednost před výkonem PB161 přednáška 12: Vývoj software 13. prosince 2016 7 / 29

Programování ve větším verzování využívání robustnějších verzovacích nástrojů více komponent systému knihovny, programy zajištění propojení správných verzí více programátorů modifikuje stejné části repozitáře, větve vytváření patchů/commitů menší kousky popisující komentáře změn PB161 přednáška 12: Vývoj software 13. prosince 2016 8 / 29

Programování ve větším robustnost a výkon Malý web jeden server pro CGI jeden server pro databázi Větší web vyšší návštěvnost více dat různé způsoby využití zvládnou to dva servery? NE PB161 přednáška 12: Vývoj software 13. prosince 2016 9 / 29

Programování ve větším robustnost a výkon duplikace jedné aplikace na více serverů duplikace databází master-slave replikace serverům předřadit load balancer logování prováděných akcí v komponentách (jak vůbec debugovat?) mít mechanizmy na restartování pokažených komponent monitoring Bude to stačit? Databáze nebude stačit vydávat obsah PB161 přednáška 12: Vývoj software 13. prosince 2016 10 / 29

Programování ve větším robustnost a výkon některá data je potřeba předpočítávat je třeba držet ta samá data v různých datových úložištích relační databáze vyhledávací engine Cassandra HBase a další nutnost udržovat konzistentní data migrační/exportní skripty samostatné servery PB161 přednáška 12: Vývoj software 13. prosince 2016 11 / 29

Komunikace s databázemi použije se poskytnuté API vlastní komponenty mezi servery v rámci jednoho serveru Nápady, jak realizovat komunikaci? (v prostředí primárně C++) PB161 přednáška 12: Vývoj software 13. prosince 2016 12 / 29

Komunikace mezi servery Json velká podpora napříč jazyky lidsky čitelné volná struktura serializace/deserializace Jaké to má výhody? Má to nevýhody? volná struktura jde proti udržení rozhraní drahá serializace/deserializace ukecaný formát nekomprimovaná data PB161 přednáška 12: Vývoj software 13. prosince 2016 13 / 29

Komunikace mezi servery pevný předpis dat generované rozhraní pro rozličné jazyky binární komprimovaný formát Protobuffers technologie prověřená léty vyvíjí a používá Google Cap n Proto novější serializace/deserializace zadarmo volba závisí na použití velké projekty vyžadují stabilitu menší mohou být dravější PB161 přednáška 12: Vývoj software 13. prosince 2016 14 / 29

Komunikace v rámci serveru možnost použít json/proto/ datově bezpečné zbytečně pomalé volání přímo metod, používání tříd riziko porušení binární kompatibility Jaké změny mohou rozbít binární kompatibilitu? PB161 přednáška 12: Vývoj software 13. prosince 2016 15 / 29

Komunikace v rámci serveru Nebezpečné změny přidání nebo odebrání virtuální metody změna atributů pořadí, typ použití různých překladačů různých verzí standardní knihovny změna hlavičky funkce přidání parametru s defaultní hodnotou také PB161 přednáška 12: Vývoj software 13. prosince 2016 16 / 29

Komunikace v rámci serveru Jak zabránit porušení binární kompatibility? vydat knihovnu s jiným názvem používané v Seznamu používání inline namespace pro aktuální verzi použito v rámci libc++ používat čisté C struktury a velikostí určovat verzi použito ve Win32 API překompilovat všechno, co závisí na změněné knihovně potřeba continuous integration potenciálně velmi drahé PB161 přednáška 12: Vývoj software 13. prosince 2016 17 / 29

Hurá do práce Co vás čeká, když budete chtít pracovat PB161 přednáška 12: Vývoj software 13. prosince 2016 18 / 29

Pohovor na co se připravit budou po vás chtít napsat kus kódu analogie se zápočtovým testem bude to pravděpodobně na papír/tabuli budete muset komentovat vaše řešení výhody, nevýhody, korektnost jak byste to otestovali budou vás zkoušet ze všeobecných znalostí směs zkoušky C++/Java/Python, operačních systémů, sítí, databází, paralelizmu, SWE důraz na praktické věci doporučuji vyzkoušet si práci budou vás zkoušet z algoritmů rozsahem předmětu Návrh algoritmů II PB161 přednáška 12: Vývoj software 13. prosince 2016 19 / 29

Pohovor jak se připravit čerstvě po škole máte obstojné znalosti teorie obvykle chybí praxe spojte učení na zkoušky alespoň trochu s praxí naprogramujte si něco síťového pohrajte si s databázemi vyzkoušejte si paralelní vykonávání použijte přímo rozhraní OS ve svém programu není třeba být odborníkem ve všech jazycích je ale dobré mít jeden jazyk jako mateřský obvykle se není třeba bát dotazů na technologie firmy si zaměstnance zaškolí samy PB161 přednáška 12: Vývoj software 13. prosince 2016 20 / 29

Příklady pohovorových otázek Napište funkci, která z binárního stromu vytvoří dvojtě spojový seznam. Napište funkci, která vytvoří všechny permutace ze zadaného seznamu seznamů. Napište funkci, která ve dvou seřazených seznamech nalezne N-tý prvek. Napište funkci, která rozhodne, zda se v grafu nachází sink vertex. Vrchol, do kterého vedou hrany ze všech ostatních vrcholů, a ze kterého nevede žádná hrana U každého příkladu si určete časovou i paměťovou složitost a (rámcově) si dokažte korektnost. Cca 50 % uchazečů práce v Seznamu končí na pohovoru na neznalosti Pythagorovy věty. PB161 přednáška 12: Vývoj software 13. prosince 2016 21 / 29

Příchod do firmy zpočátku vás uvedou do organizace práce v týmu objasnění metodiky vysvětlení základních procesů jak publikovat změny jak dělat code-review kdy a kam chodit na porady postupné seznamování kódem začíná se od jednoduchých komponent postupně se vám rozkrývá celý produkt (tato fáze může trvat roky) podle šikovnosti dostane programátor důvěru pracovat bez přímého dozoru PB161 přednáška 12: Vývoj software 13. prosince 2016 22 / 29

Příchod do firmy co by vás nemělo překvapit škaredý kód dlouhé funkce, gigantické třídy původně byly malé a hezké postupným přidáváním funkcionality začaly bobtnat požadavky z vedení mají přednost před mazlením kódu důležité jsou prachy manažera nezajímá krása kódu, ale funkčnost chodit pravidelně do práce může způsobovat depresi dá se na to zvyknout dovolené je málo budete muset mluvit s lidmi kolegové v týmu prezentace různé meetingy PB161 přednáška 12: Vývoj software 13. prosince 2016 23 / 29

Jak může vypadat vyhledávač Potřeba relevantních výsledků stabilních výsledků velkého výkonu Důležité části vyhledávače robot indexer finder agregátor query procesor Každá část se skládá z velké části dalších knihoven, mezi částmi je spousta drobných prográmků, které se starají o komunikaci, vyrovnávání zátěže a mezipaměti. PB161 přednáška 12: Vývoj software 13. prosince 2016 24 / 29

Jak může vypadat vyhledávač Robot cyklicky prochází web a stahuje informace obecně zdrojů hodnotí kvalitu stránek slouží k plnění databází zpracovává různé části stránek lze paralelizovat obrovské farmy úzkým prvkem je síťové připojení a výstupní fronta zápisy do databází lze provádět až se zpožděním PB161 přednáška 12: Vývoj software 13. prosince 2016 25 / 29

Jak může vypadat vyhledávač Indexer vyčítá data z databází tvoří dokumenty základní jednotka při hledání může kompletovat z různých záznamů v databázi vytáhne z dokumentů slova, která zaindexuje dokumenty uloží do speciálního formátu přístup pouze pro čtení optimalizován na hledání slov v dokumentech hledací soubory lze paralelizovat ne tak masivně jako robot úzkým prvkem jsou databáze čtení PB161 přednáška 12: Vývoj software 13. prosince 2016 26 / 29

Jak může vypadat vyhledávač Query procesor převádí dotaz do vhodné formy hodnotí závažnost slov značkuje slova z definičních souborů přiřazuje slovům význam Brno město používají se učící algoritmy opravuje překlepy skloňuje, časuje doplňuje synonyma výsledkem je množina slov ohodnocená dle důležitosti PB161 přednáška 12: Vývoj software 13. prosince 2016 27 / 29

Jak může vypadat vyhledávač Finder na základě množiny slov hledá v hledacích souborech vhodné dokumenty hodnotí dokumenty nastavuje jim relevanci může se lišit dle různých kritérií lze paralelizovat vhodné rozdělení hledacích souborů Agregátor řadí se do stromů uzly stromu jsou další agregátory listy stromu jsou findery jako vstup dostane výsledek z query procesoru stará se o zavolání finderů a sesbírání výsledku vrácené dokumenty řadí podle relevance PB161 přednáška 12: Vývoj software 13. prosince 2016 28 / 29

Závěrem Děkuji za pozornost PB161 přednáška 12: Vývoj software 13. prosince 2016 29 / 29