C++ a vnější svět. David Bednárek Jakub Yaghob Filip Zavoral



Podobné dokumenty
Paralelní programování

Obsah. Úvodem 15. Zaměření knihy 15 Co v knize najdete 15 Doprovodné CD 17 Poděkování 18

Síťové programování. Berkeley sockets Zdroje. Wikipedia Google Jan Kubr

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

IT ESS II. 1. Operating Systém Fundamentals

C++ a vnitřní svět. David Bednárek Jakub Yaghob Filip Zavoral

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

FIREBIRD relační databázový systém. Tomáš Svoboda

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Matematika v programovacích

Procesy a vlákna (Processes and Threads)

NPRG051 Pokročilé programování v C /17 Úkol 2

Linux Teorie operačních systémů a realita

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

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

Operační systémy. Přednáška 1: Úvod

PB071 Programování v jazyce C

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Stavba operačního systému

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Tabulka základních vlastností nástroje C++Builder dle edice

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

4. lekce Přístup k databázi z vyššího programovacího jazyka

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Použití databází na Webu

OS řady Microsoft Windows

Komunikační sokety. teorie a implementace v C#, C++ a Javě. Aleš Keprt Katedra informatiky UP duben 2006, revize květen 2007

Vláknové programování část I

VirtualBox desktopová virtualizace. Zdeněk Merta

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

a co je operační systém?

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Systémová administrace portálu Liferay

Základní typy struktur výpočetních systémů

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

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

Vlákna Co je to vlákno?

Josef Hajas.

IPv6. RNDr. Ing. Vladimir Smotlacha, Ph.D.

Počítačové sítě Systém pro přenos souborů protokol FTP

Databázové a informační systémy

Analýza protokolů rodiny TCP/IP, NAT

Databázové systémy. Cvičení 6: SQL

Projekt JetConf REST API pro vzdálenou správu

11 Návrh programového vybavení

MATLAB a Simulink R2015b

Historie UNIXu a Linuxu. Bohdan Milar bohdan.milar@liberix.cz

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

ProjectWise V8 XM Edition

Paralelizace datových přenosů

Compatibility List. GORDIC spol. s r. o. Verze

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Principy operačních systémů. Lekce 1: Úvod

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

Ukládání a vyhledávání XML dat

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Rozhraní Sockets Java a C (BSD)

Informační technologie. Název oboru: Školní rok: jarní i podzimní zkušební období 2017/2018

Korporátní identita - nejcennější aktivum

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

D R U P A L V O J T Ě C H K U S W O J T H A

OPERAČNÍ SYSTÉM ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

11. Přehled prog. jazyků

Definice OS. Operační systém je základní programové vybavení počítače, nezbytné pro jeho provoz.

Databázové systémy trocha teorie

WCF. IW5 - Programování v.net a C# WCF

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Stručný obsah. K2118.indd :15:27

Formy komunikace s knihovnami

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Algoritmizace a programování

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Rozdělení operačních systémů

SYBASE ADAPTIVE SERVER JAVA V DATABÁZI

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.

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

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

DNS, DHCP DNS, Richard Biječek

Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb služby pro systémové aplikace, služby pro uživatelské aplikace DNS

Datová vrstva informačního systému. Miroslav Beneš

Aplikovaná informatika

Windows a real-time. Windows Embedded

Když se Linux nevejde. Jiné operační systémy Lenka Kosková Třísková, LinuxDays2018

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Principy počítačů a operačních systémů

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Vývoj SW aplikací. Unix, POSIX, WinAPI, programování komunikace s periferními zařízeními, ovladače zařízení

Úvod do operačního systému Linux Mgr. Josef Horálek

Moderní privátní cloud pro město na platformě OpenStack a Kubernetes

O projektu Nasazení OpenOffice.org v praxi

Paralelní programování

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Open Source řešení pro Mission critical systémy. Software Defined Networks v praxi , Praha

Transkript:

C++ a vnější svět David Bednárek Jakub Yaghob Filip Zavoral

Databáze Připojení klienta Aplikace DB DB.LIB

Databáze výběr a rozhraní Oracle OCI MS Server ODBC, OLE DB Sybase Open client PostgreSQL Vlastní MySQL Vlastní

Databáze jak vybrat rozhraní Nativní knihovny Větší rychlost Dostupnost specifických vlastností Nepřenositelnost (někdy) Svázanost s konkrétní DB Obecné nadstavby (ODBC, OLE DB) Implementovány pomocí nativních knihoven Snížení výkonu přidáním mezivrstvy Nemožnost využít specifické vlastnosti Nesvázanost s konkrétní DB?

Databáze programové rozhraní ISO 9075:2008 Většina rozhraní zhruba odpovídá Kromě MySQL Definuje hierarchii programových entit Definuje rozhraní pro manipulaci s programovými entitami

Databáze programové entity Environment Celkové chování klientské knihovny v aplikaci Definuje memory-management Session Spojení s jedním serverem Vlastnosti session, uživatel Odvozen z environmentu Statement Stavový prostor zpracování jednoho dotazu Prepared statement Svázání parametrů Statické/dynamické, vstupní/výstupní Odvozen ze session

Databáze programové entity Result-set Kontejner výsledků Odvozen od statementu Result Výsledek dotazu Svázání dat Statické/dynamické Odvozen od result-setu Transaction Odvozen od session

Databáze programové entity v aplikaci Aplikace Environment Session (User/Pwd/Server1) Transaction Statement Result-set Result R2 Statement Session User Pwd Server2 DB1 DB2

Databáze programové entity - příklad environment e; CreateEnvironment(e); session ses; CreateSession(ses, e); ConnectSession(ses, user, pwd, srv ); transaction t; CreateTransaction(t, ses); BeginTransaction(t); statement stm; CreateStatement(stm, ses); int i, j; BindParameter(stm, q, i, IN, C_INT, SQL_DEC); result_set rs = ExecuteStatement(stm, select * from t where c=:q ); result r = rs.first(); BindColumn(r, 1, j, C_INT, SQL_DEC); while(fetch(r)) { } DestroyResult(r);DestroyRS(rs); CommitTransaction(t); DestroyStatement(stm); DestroyTransaction(t); CloseSession(ses); DestroySession(ses); DestroyEnvironment(e);

Síť BSD sockety Winsock 2 Socket Abstraktní koncový bod síťové komunikace Lze svázat s různou rodinou protokolů IPv4, IPv6 Lze svázat s různým typem komunikace Stream, datagram, raw Lze svázat s transportním protokolem TCP, UDP

Síť klient TCP SOCKET sock = socket(inet, STREAM, TCP); struct sockaddr_in soain; soain.sin_family = INET; getaddrinfo( www.nic.cz, SRV_PORT, 0, &soain.sin_addr); connect(sock, soain); send(sock, buf, len); recv(sock, buf, len); shutdown(sock); close(sock);

Síť server TCP SOCKET listensock = socket(inet, STREAM, TCP); struct sockaddr_in soain; soain.sin_family = INET; soain.sin_port = SRV_PORT; soian.sin_addr = ANY; bind(listensock, soain); listen(listensock, queuedepth); for(;;) { } SOCKET sock = accept(listensock); recv(sock, buf, len); send(sock, buf, len); shutdown(sock); close(sock); shutdown(listensock); close(listensock); // blocks

Síť klient UDP SOCKET sock = socket(inet, DGRAM, UDP); struct sockaddr_in soain; soain.sin_family = INET; getaddrinfo( www.nic.cz, SRV_PORT, 0, &soain.sin_addr); sendto(sock, buf, len, &soain); recvfrom(sock, buf, len, &soain); close(sock);

Síť server UDP SOCKET sock = socket(inet, STREAM, TCP); struct sockaddr_in soain; soain.sin_family = INET; soain.sin_port = SRV_PORT; soian.sin_addr = ANY; bind(sock, soain); for(;;) { } struct sockaddr_in soain_cli; int len = recvfrom(sock, buf, maxlen, &soain_cli); sendto(sock, buf, len, &soain_cli); close(sock);

Síť zbylé funkce select Čekání na dokončení více operací nad sockety getaddrinfo Obecný převod z pojmenování uzlu a služby na binární reprezentaci getnameinfo Obecný zpětný převod z binární reprezentace na pojmenování uzlu a služby htons, htonl, ntohs, ntohl Převod z reprezentace hosta na reprezentaci sítě

POSIX Portable Operating System Interface [for Unix] Existuje nativní implementace pro Win NT Single UNIX Specification IEEE standardy API Shell Utility

POSIX verze POSIX.1 API (zahrnuje ANSI C) 1988 POSIX.1b Real-time rozšíření 1993 POSIX.1c Rozšíření o vlákna 1995 POSIX.2 Shell a utility 1992 POSIX:2001 API, shell, utility POSIX:2004 Update a opravy POSIX:2008 API, shell, utility

POSIX kompatibilita Plná AIX, HP-UX, Solaris, Mac OS X, Částečná FreeBSD, GNU/Linux, OpenSolaris, Windows Cygwin částečná kompatibilita MS Windows Services for UNIX 3.5 plná kompatibilita

Boost Přenositelné C++ knihovny Review proces Zdroj návrhů pro ISO Úzce svázán s ISO výborem Velká řada podporovaných OS a překladačů Výborné knihovny, leckdy přehnaná abstrakce

Boost kontejnery Array Pole konstantní velikosti ISO C++ TR1 Bimap Oboustranná mapa Circular buffer Graph Variant Bezpečný union

Boost podpora paralelního programování Interprocess Sdílená paměť Paměťově mapované soubory Mutexy MPI Thread ISO C++ 0x

Boost I/O Asio Asynchronní I/O Format Vylepšené formátování podobné printf Program options Zpracování parametrů programu z příkazové řádky Serialization Serializace dat pro uložení nebo marshalling

Boost matematika a numerika Intervals Multi-array Random ISO C++ TR1

Boost generické programování a šablonové metaprogramování GIL Generic Image Library Static assert ISO C++ 0x Type traits ISO C++ TR1 MPL Obecný framework pro kompilační algoritmy, sekvence a metafunkce

Boost práce s řetězci Lexical cast ISO C++ 0x Regex ISO C++ TR1 Spirit LL parser String algo Tokenizer Rozsekání řetězce na tokeny

Boost nezařazené Shared ptr ISO C++ TR1 Date time Filesystem Práce s cestami, soubory, adresáři

TBB Threading Building Blocks Open source, komerčně od firmy Intel Knihovna pro podporu paralelních aplikací Task-based parallelism Paralelní algoritmy Paralelní kontejnery Přenositelnost

Concurrency runtime ve VS 2010 Framework pro paralelní programy VS 2010 vykradené nápady z TBB