1. FI MUNI, Brno 2010
Juraj Michálek
web: http://georgik.sinusgear.com
twitter: http://twitter.com/georgiksk
Vývoj v C++
2. Vyvíjame
STL, Allegro, SDL, ClanLib, LUA, Mesa3D...
Ladíme
Eclipse a debugger
Kontinuálna integrácia
Boost, Hudson CI, Maven
Nástroje
Iné jazyky
Obsah
3. Program programátora
1. programátor dostane skvelý nápad
2. naprogramuje dokonalý program
3. všetko si naprogramuje sám
4. zistí, že program je nepoužiteľný
4. Na vlastných nohách
5. pokúsi sa program opraviť
6. zistí, že polovicu funkcií naprogramoval zle
7. preprogramuje zlé funkcie
8. zistí, že program je opäť nepoužiteľný
goto 5.
6. STL I.
základ pre C++
práca s reťazcami
#include <string>
operácie nad zoznamami
#include <list>
#include <deque>
7. STL II.
operácie s asociatívnymi poliami
#include <map>
špeciálne algoritmy (triedenie, výpis)
#include <algorithm>
zhrnutie: umožňujú urýchlenie vývoja
http://www.sgi.com/tech/stl/
11. Interaktívne aplikácie
rýchla reagovať na užívateľa
musia sa prispôsobovať jeho potrebám
dobrým príkladom je počítačová hra
ukážeme si konkrétnu implementáciu
14. Allegro - aplikácia
spracovanie klávesnice, myši, joysticku
spracovanie obrazu, zvuku
jednoduché GUI
ovládanie časovačov
používanie dátových súborov
uvedené príklady z Allegro
19. Grafika
vykreslenie bodu do pamäte
al_putpixel(x, y, color)
načítanie obrazu zo súboru
al_load_bitmap(filename);
kopírovanie medzi pamäťami
al_draw_bitmap(bmp, 10, 10, 0);
24. Knižnice nad Allegrom
Allegro má pomerne veľa funkcii
Allegttf - práca s True Type fontami
AllegGL - práca GL grafikou
DUMB - práca sa audiom (Vorbis/Ogg)
30. Grafika I.
inicializácia grafického prostredia
SDL_SetVideoMode(width, height,
video_bpp, videoflags)
obrazové dáta v pamäti
SDL_SWSURFACE
obrazové dáta vo video pamäti
SDL_HWSURFACE
31. Grafika II.
štruktúra na uloženie obrazu
SDL_Surface
vytvorenie obrazovej pamäte
surface =
SDL_CreateRGBSurface(SDL_SWSURFACE,
width, height, 32, rmask, gmask, bmask, amask);
32. Grafika III.
načítanie obrazu zo súboru
SDL_Surface *SDL_LoadBMP(const char
*file)
kopírovanie medzi pamäťami
SDL_BlitSurface(src, srcrect, dst,
dstrect);
34. Časovač
časovač implementovaný ako počítadlo
static int counter;
inštalácia funkcie volenej v pravidelných
intervaloch
SDL_SetTimer(interval, tick);
37. Ďalšie vlastnosti
priama podpora GL knižníc
zabudovaný mechanizmus pre vlákna
spolupráca s jazykmi
Ada, Eiffel, Java, Lua, Perl, PHP, Pike, Python,
Ruby
176 rozširujúcich knižníc
38. Knižnice
SDL je samo o sebe pomerne ťažko
použiteľné
SDL_mixer - multikanálový mixér
SDL_image - spracovanie obrazových
formátov
SDL_net - práca so sieťou
50. Platformy
MS/Windows
Unix/X11 - Linux, Sun Solaris, HP-UX,
Compaq Tru64 UNIX, IBM AIX, IRIX, Mac
OS X
Embedded - Linux platforms with framebuffer
support.
51. Designer
nástroj na tvorbu GUI
rozvrhnutú plochu ukladá do XML súboru
z XML definície sa generuje kód programu
58. Knižnica FLTK
The Fast Light Tool Kit
Autor: Bill Spitzak
venoval sa vývoju rozhraní pre Sun
Microsystems
veľa myšlienok zjednodušil a vložil do kitu
nízko-úrovňová kompatibilita - 10% odlišnosti
64. Adobe Alchemy
C/C++ kód skompilovaný pre FlashPlayer
výhody Flash Platformy
prenositeľnosť
podpora na väčšine platforiem
príklad: Doom
http://labs.adobe.com
65. ACE
The ADAPTIVE Communication Environment
http://www.cs.wustl.edu/~schmidt/ACE.html
Open source C++ framework
reactor, proactor
acceptor, connector
89. Boost Test Library
Test everything that could possibly break
jednoduchá tvorba tescasov
TestSuite – TestCase
test je spustiteľný program
bjam integruje spúšťanie testov
92. jam + TestCase
Jamfile (Jamroot)
import testing ;
run tests/testServerQuery.cpp server ;
Shell
$ bjam
...patience...
...found 2 targets...
...updating 2 targets...
*** test passed ***
93. Maven pre C++
web: http://maven.apache.org
mvn [parametre|ciele]
súbor s definíciou projekt
pom.xml
plugin pre C++
native-maven-plugin
98. Subversion - SVN
verzovací nástroj
jednoduchý na používanie
http://subversion.tigris.org
repository, check-out, commit, merge
http://www.asinus.org/wiki/VideoTutorialSubversion
99. SVN klient pre Windows
http://tortoisesvn.tigris.org
100. GIT
oproti SVN možnosť lokálných commitov
Social Coding
http://www.github.com
101. Source Control & Project Management
http://trac.edgewall.org
http://trac-hacks.org/
102. GNU a Windows
Minimalist GNU For Windows
http://www.mingw.org
Cygwin
http://www.cygwin.com
http://cygwinports.dotsrc.org/
104. C#, .NET a Mono
open source implementácia .NET
Rozhranie napr. GTK#
http://www.mono-project.com
Silverlight pre Linux - Moonlight
105. Python
silný objektovo orientovaný jazyk
platformovo nezávislý
integrovateľný s C a C++
http://www.python.org
http://www.py.cz
113. FI MUNI, Brno 2010
Juraj Michálek
web: http://georgik.sinusgear.com
twitter: http://twitter.com/georgiksk
Ďakujem za pozornosť