111
FI MUNI, Brno 2011 Mgr. Juraj Michálek blog: http://georgik.sinusgear.com twitter: http://twitter.com/sinusgear There is much more to C++

There is much more to C

Embed Size (px)

DESCRIPTION

Slovak version only. Prednáška o vývoji v C++, prenose aplikácií medzi rôznymi OS a postupmi pre C++

Citation preview

Page 1: There is much more to C

FI MUNI, Brno 2011Mgr. Juraj Michálek

blog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear

There is much more to C++

Page 2: There is much more to C

Niečo o mne

Page 3: There is much more to C

VyvíjameSTL, Allegro, SDL, ClanLib, LUA, Mesa3D...

C a jemu podobnérobot kit, Arundino

LadímeEclipse a debugger

Kontinuálna integráciaBoost, Jenkins CI, Maven

Nástroje

Obsah

Page 4: There is much more to C

Program programátora

1. programátor dostane skvelý nápad2. naprogramuje dokonalý program3. všetko si naprogramuje sám4. zistí, že program je nepoužiteľný

Page 5: There is much more to C

Na vlastných nohách

5. pokúsi sa program opraviť6. zistí, že polovicu funkcií naprogramoval zle7. preprogramuje zlé funkcie8. zistí, že program je opäť nepoužiteľnýgoto 5.

Page 6: There is much more to C

Vývoj

Page 7: There is much more to C

STL I.

základ pre C++práca s reťazcami

#include <string>operácie nad zoznamami

#include <list> #include <deque>

Page 8: There is much more to C

STL II.

operácie s asociatívnymi poliami#include <map>

špeciálne algoritmy (triedenie, výpis)#include <algorithm>

zhrnutie: umožňujú urýchlenie vývojahttp://www.sgi.com/tech/stl/

Page 9: There is much more to C

Otázka

Vystačíme so štandardnými funkciami STL?

Page 10: There is much more to C

Odpoveď

Page 11: There is much more to C

Interaktívne aplikácie

Page 12: There is much more to C

Interaktívne aplikácie

rýchla reagovať na užívateľamusia sa prispôsobovať jeho potrebámdobrým príkladom je počítačová hraukážeme si konkrétnu implementáciu

Page 13: There is much more to C

Knižnice

Allegro

Simple Direct Media Layer

Clanlib Simple Development Kit

Page 14: There is much more to C

Allegro

Allegro Low Level Game Routines

Page 15: There is much more to C

Allegro - aplikácia

spracovanie klávesnice, myši, joystickuspracovanie obrazu, zvukujednoduché GUIovládanie časovačovpoužívanie dátových súborovuvedené príklady z Allegro

Page 16: There is much more to C

Allegro 5

podpora pre bežné OSpodpora pre iPhoneudalostihttp://alleg.sourceforge.net/a5docs/5.0.5/

Page 17: There is much more to C

Programovanie I.

inicializácia Allegraal_init();

Page 18: There is much more to C

Inicializácia grafiky

inicializácia grafického prostrediaal_create_display(int w, int h)

Page 19: There is much more to C

ALLEGRO_BITMAP

štruktúra na uloženie obrazu

vytvorenie obrazovej pamäteALLEGRO_BITMAP *bmp = create_bitmap(x,y);

Page 20: There is much more to C

Grafika

vykreslenie bodu do pamäteal_putpixel(x, y, color)

načítanie obrazu zo súborual_load_bitmap(filename);

kopírovanie medzi pamäťamial_draw_bitmap(bmp, 10, 10, 0);

Page 21: There is much more to C

Grafika

Uvoľnenie obrazovej pamäteal_destroy_bitmap(bmp);

Page 22: There is much more to C

Klávesnica

zavedenie ovládača klávesniceal_install_keyboard()

odstránenie ovládača klávesniceal_uninstall_keyboard()

načítanie klávesyevent.keyboard.keycode

Page 23: There is much more to C

Myš

inštalácia a odstránenie ovládačaal_install_mouse()al_get_mouse_state(&msestate);al_uninstall_mouse()

Page 24: There is much more to C

Ďalšie vlastnosti

prehrávanie samplov a MIDIukladanie súborov do datafilejednoduchá 3D grafika - polygonyjednoduché GUI

Page 25: There is much more to C

Knižnice nad Allegrom

Allegro má pomerne veľa funkciiAllegttf - práca s True Type fontamiAllegGL - práca GL grafikouDUMB - práca sa audiom (Vorbis/Ogg)

Page 26: There is much more to C

Kompilácia

Konfiguračný skriptallegro-config

Linux, Unix, BeOS, QNX, MacOS, Windows:g++ foo.cc -o foo `allegro-config --libs`

iPhonevyžaduje Xcode

Page 27: There is much more to C

CMake – Cross Platform Make

generuje build súbory pre IDEhttp://www.cmake.org

Page 28: There is much more to C

Allegro – CMake – MSVC 2010

Page 29: There is much more to C

Allegro – CMake - KDevelop4

Page 30: There is much more to C

Zdroje

vývoj knižnicehttp://alleg.sourceforge.net

Wikihttp://wiki.allegro.cc/

Page 31: There is much more to C

Allegro.cc

Game development community networkMattew J. Leverton

http://www.allegro.cc

Page 32: There is much more to C

Knižnica

Simple Direct Media Layer

Page 33: There is much more to C

Programovanie

inicializácia systémuSDL_init(flags)

ukončenie systémuSDL_quit()

Page 34: There is much more to C

Grafika I.

inicializácia grafického prostrediaSDL_SetVideoMode(width, height, video_bpp, videoflags)

obrazové dáta v pamätiSDL_SWSURFACE

obrazové dáta vo video pamätiSDL_HWSURFACE

Page 35: There is much more to C

Grafika II.

štruktúra na uloženie obrazuSDL_Surface

vytvorenie obrazovej pamätesurface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, rmask, gmask, bmask, amask);

Page 36: There is much more to C

Grafika III.

načítanie obrazu zo súboruSDL_Surface *SDL_LoadBMP(const char *file)

kopírovanie medzi pamäťamiSDL_BlitSurface(src, srcrect, dst, dstrect);

Page 37: There is much more to C

Klávesnica

stlačenie klávesy vyvolá udalosťSDL_PollEvent(SDL_Event *event)

test na stlačenie konkrétne klávesyevent.key.keysym.sym

Page 38: There is much more to C

Časovač

časovač implementovaný ako počítadlostatic int counter;

inštalácia funkcie volenej v pravidelných intervaloch

SDL_SetTimer(interval, tick);

Page 39: There is much more to C

Myš

zistenie stavu myšiSDL_GetMouseState(*x, *y);

Page 40: There is much more to C

Text

jednoduchý výpis textu nie je

Page 41: There is much more to C

Ďalšie vlastnosti

priama podpora GL knižníczabudovaný mechanizmus pre vláknaspolupráca s jazykmi

Ada, Eiffel, Java, Lua, Perl, PHP, Pike, Python, Ruby

176 rozširujúcich knižníc

Page 42: There is much more to C

Knižnice

SDL je samo o sebe pomerne ťažko použiteľnéSDL_mixer - multikanálový mixérSDL_image - spracovanie obrazových formátovSDL_net - práca so sieťou

Page 43: There is much more to C

Zdroje

vývojhttp://www.libsdl.org

portál s hramihttp://www.lgames.org

Page 44: There is much more to C

Kompilácia

konfiguračný skriptsdl-config

Linux, Windows, BeOS, Mac OSg++ foo.cc -o foo `sdl-config --libs`

Page 45: There is much more to C

Knižnica

ClanLib game Simple Development Kithttp://www.clanlib.org

Page 46: There is much more to C

LUA

silný skriptovací nástrojvolanie skriptov z programuvolanie programu zo skriptovjednoduchá syntax jazyka

http://www.lua.org

Page 47: There is much more to C

Knižnica

Mesa

http://mesa3d.sourceforge.net

Page 48: There is much more to C

Dino

Page 49: There is much more to C

Games for Linux

podpora hier pre Linuxport a code, save the gamearchív 208 hier, 35 knižníc

http://games.linux.sk

Page 50: There is much more to C

GUI

Graphic User Interface

Page 51: There is much more to C

Vhodné knižnice

QT

FLTK

GTK

Page 52: There is much more to C

QT

Nokia:http://qt.nokia.com

Page 53: There is much more to C

QT

produkt firmy Trolltech, neskôr Nokialicencie: open source aj komrčnéknižnica vznikla v roku 1996podporuje C++ a Javu

Page 54: There is much more to C

Platformy

MS/WindowsUnix/X11 - Linux, Sun Solaris, HP-UX, Compaq Tru64 UNIX, IBM AIX, IRIX, Mac OS XEmbedded - Linux platforms with framebuffer support.

Page 55: There is much more to C

QT Creator IDE

nástroj na tvorbu GUIrozvrhnutú plochu ukladá do XML súboruz XML definície sa generuje kód programu

Page 56: There is much more to C

Kompilácia

uloženie projektuvytvorenie Makefile z projektu

qmake -o Makefile test.prokompilácia

make

Page 57: There is much more to C

Linguist

nástroj na preklad aplikáciiumožňuje oddeliť kód od textovprekladateľ a programátor pracujú samostatne

Page 58: There is much more to C

Amélia

Page 59: There is much more to C

KDE

Page 60: There is much more to C

Google Earth

Page 61: There is much more to C

FLTK

http://www.fltk.org

Page 62: There is much more to C

Knižnica FLTK

The Fast Light Tool KitAutor: Bill Spitzakvenoval sa vývoju rozhraní pre Sun Microsystemsveľa myšlienok zjednodušil a vložil do kitunízko-úrovňová kompatibilita - 10% odlišnosti

Page 63: There is much more to C

Platformy

Unix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT

Page 64: There is much more to C

FLUID

Fast Light User-Interface Designerjednoduchý designer na tvorbu GUI

Page 65: There is much more to C

Knižnica

http://www.gtk.org

Page 66: There is much more to C

GTK

GIMP ToolKitPeter Mattis, Spencer Kimball, Josh MacDonaldGNU Network Object Model Environment (GNOME)

C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffel

komplexne riešená knižnica

Page 67: There is much more to C

Glade 3

http://glade.gnome.orgdesign GUI - www.srobick.com

Page 68: There is much more to C

Android – Native Development Kit

http://developer.android.com/sdk/ndk/Pozor!

App nemusí byť optimálnejšia než napísaná v Jave

Page 69: There is much more to C

NDK

stiahnuť SDK a NDKexport PATH=$PATH:/cesta/sdk/tools:/ceta/ndkcd /cesta/ndk/samples/hello-jniandroid update project -p . -sndk-buildant debug

Page 70: There is much more to C

Adobe Alchemy

zaujímavý experimentC/C++ kód skompilovaný pre FlashPlayer

AVM2prenositeľnosť

príklad: Doomhttp://labs.adobe.com

Page 71: There is much more to C

Interactive C - Robot

HandyboardMotorola 68AX11Odvodené od Chttp://www.kipr.orghttp://www.boatball.org

Page 72: There is much more to C

Arundino

http://www.arduino.cc/playground/Interfacing/CPPWindows

Page 73: There is much more to C

ACE

The ADAPTIVE Communication Environmenthttp://www.cs.wustl.edu/~schmidt/ACE.html

Open source C++ framework

reactor, proactoracceptor, connector

Page 74: There is much more to C

Java Native Interface - JNI

public class HelloWorld { private native void sayHello(); public static void main(String[] args) { System.loadLibrary("library"); new HelloWorld().sayHello(); }}

Page 75: There is much more to C

NodeJS

V8 JavaScript engineasynchrónny prístupudalostihttp://www.nodejs.org

Page 76: There is much more to C

výkonné multiplatformové IDEhttp://www.eclipse.org

C/C++ - CDT pluginhttp://www.eclipse.org/cdt

Page 77: There is much more to C

Aplikácia to neprežila

Post-mortem analýza

Zostal len jej obraz: coredump

Page 78: There is much more to C

Rýchla analýza coredumpu

Page 79: There is much more to C

Módy debuggera

Spustenie lokálnej aplikácie.

Pripojenie k lokálnemu procesu.

Pripojenie k vzdialenému procesu.

Post-mortem.

Page 80: There is much more to C

Valgrind

debugging a profilingmemcheck

memory leakyhelgrind

race condition, thread profiling

Page 81: There is much more to C

Strace

strace ls -lexecve("/bin/ls", ["ls"], [/* 29 vars */]) = 0brk(0) = 0x95d0000access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb773c000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)open("tls/i686/sse2/cmov/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

Page 82: There is much more to C

Mutextrace

mutextrace ./mutex-tester-app param1 param2lock #1, free -> thread 1init #2lock #2, free -> thread 1unlock #1lock #1, free -> thread 1init #3lock #3, free -> thread 1unlock #1

Page 83: There is much more to C

Portabilita

Linux – Windows – Mac – BSDprenos C/C++ nie je vždy jednoduchýUnix/Windows Porting Dictionary

http://suacommunity.com/

Page 84: There is much more to C

Kontinuálna integrácia

Od chaosu k štruktúre

Page 85: There is much more to C

http://www.boost.org“...one of the most highly regarded and expertly designed C++ library projects in the world.”

Herb Sutter and Andrei Alexandrescu

Page 86: There is much more to C

Boost

Page 87: There is much more to C

Boost Test Library

Test everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľný programbjam integruje spúšťanie testov

Page 88: There is much more to C

TestCase

using namespace boost::unit_test_framework;

/** * Test basic marshaller functionality */void testServerQuery(){ ServerQuery query = ServerQuery();

query.session = "112"; query.userId = "janko";

BOOST_CHECK_EQUAL( query.sessionAsChar(), "112" ); BOOST_CHECK_EQUAL( query.userIdAsChar(), "janko" );}

Page 89: There is much more to C

Jam

náhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU overheadbuild obrovských projektovškálovateľné

Page 90: There is much more to C

jam + TestCase

Jamfile (Jamroot)import testing ;run tests/testServerQuery.cpp server ;

Shell$ bjam...patience......found 2 targets......updating 2 targets...*** test passed ***

Page 91: There is much more to C

Maven pre C++

web: http://maven.apache.orgmvn [parametre|ciele]

súbor s definíciou projektpom.xml

plugin pre C++native-maven-plugin

Page 92: There is much more to C

Obsah pom.xml

ArtifactsDependenciesPluginsRepositories

Page 93: There is much more to C
Page 94: There is much more to C

Kontinuálna integrácia

rýchla kontrola po commiteJenkins CI – príklad:

http://ci.sinusgear.com

Page 95: There is much more to C

Nástroje

Profesionál vie používať správne nástrojena správny účel.

Page 96: There is much more to C

Subversion - SVN

verzovací nástrojjednoduchý na používanie

http://subversion.tigris.orgrepository, check-out, commit, merge

http://www.asinus.org/wiki/VideoTutorialSubversion

Page 97: There is much more to C

SVN klient pre Windowshttp://tortoisesvn.tigris.org

Page 98: There is much more to C

GIT

oproti SVN možnosť lokálných commitovSocial Coding

http://www.github.com

Page 99: There is much more to C

Source Control & Project Managementhttp://trac.edgewall.orghttp://trac-hacks.org/

Page 100: There is much more to C

GNU a Windows

Minimalist GNU For Windowshttp://www.mingw.org

Cygwin http://www.cygwin.comhttp://cygwinports.dotsrc.org/

Page 101: There is much more to C

Doxygen

generovanie dokumentácie preC, C++, Java, PythonPHP, C#, D

použitiedoxygen -g project.configdoxygen project.config

Page 102: There is much more to C

C#, .NET a Mono

open source implementácia .NETRozhranie napr. GTK#

http://www.mono-project.comSilverlight pre Linux - Moonlight

Page 103: There is much more to C

Python

silný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++

http://www.python.orghttp://www.py.cz

Page 104: There is much more to C

Twisted

udalosťami riadený sieťový frameworkpodpora TCP, UDP, SSL/TLS, multicastUnix socketsveľké množstvo protokolov

HTTP, NNTP, IMAP, SSH, IRC, FTP...http://twistedmatrix.com/trac/

Page 105: There is much more to C

PyGame

kombinácia sily Pythonua rýchlosti SDL (kód v C)

http://www.pygame.org

Page 106: There is much more to C

Projekt

GitHubhttp://www.github.com

Google Codehttp://code.google.com/opensource

SourceForgehttp://sourceforge.net

FreshMeathttp://freshmeat.net

CodePlex – MS Platformahttp://codeplex.com

Page 107: There is much more to C

Ohloh

porovnanie projektovrôzne metriky

http://www.ohloh.net

Page 108: There is much more to C

Open Source projekt

otvoriť program svetu - Open Sourceniekto môže vo vašej práci pokračovať

http://atanks.sf.net

Page 109: There is much more to C

se-radio.net

Software engineering radiozaujímavý a kvalitný podcast

http://www.se-radio.net

Page 110: There is much more to C

A je tu záver

Otázky?

Page 111: There is much more to C

FI MUNI, Brno 2011Juraj Michálek

blog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear

Ďakujem za pozornosť