Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Programovanie v C++

on

  • 2,678 views

Vývoj v C++. Vývoj interaktívnych aplikácií: Allegro, SDL, Clanlib. Kontinuálna integrácia a nástroje na ladenie a profiling C++

Vývoj v C++. Vývoj interaktívnych aplikácií: Allegro, SDL, Clanlib. Kontinuálna integrácia a nástroje na ladenie a profiling C++

Statistics

Views

Total Views
2,678
Views on SlideShare
2,377
Embed Views
301

Actions

Likes
0
Downloads
1
Comments
0

2 Embeds 301

http://georgik.sinusgear.com 300
http://translate.googleusercontent.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programovanie v C++ Programovanie v C++ Presentation Transcript

    • Vývoj v C++ FI MUNI, Brno 2010 Juraj Michálekweb: http://georgik.sinusgear.comtwitter: http://twitter.com/georgiksk
    • ObsahVyvíjame STL, Allegro, SDL, ClanLib, LUA, Mesa3D...Ladíme Eclipse a debuggerKontinuálna integrácia Boost, Hudson CI, MavenNástrojeIné jazyky
    • Program programátora1. programátor dostane skvelý nápad2. naprogramuje dokonalý program3. všetko si naprogramuje sám4. zistí, že program je nepoužiteľný
    • Na vlastných nohách5. 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.
    • Vývoj
    • STL I.základ pre C++práca s reťazcami #include <string>operácie nad zoznamami #include <list> #include <deque>
    • 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/
    • OtázkaVystačíme so štandardnými funkciami STL?
    • Odpoveď
    • Interaktívne aplikácie
    • Interaktívne aplikácierý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
    • Vhodné knižnice Allegro Simple Direct Media LayerClanlib Simple Development Kit
    • AllegroAllegro Low Level Game Routines
    • Allegro - aplikáciaspracovanie klávesnice, myši, joystickuspracovanie obrazu, zvukujednoduché GUIovládanie časovačovpoužívanie dátových súborovuvedené príklady z Allegro
    • Allegro 5nová architektúrapodpora pre bežné OSpodpora pre iPhone/iPadpodstatne vyššia rýchlosť
    • Programovanie I.inicializácia Allegra al_init();
    • Inicializácia grafikyinicializácia grafického prostredia al_create_display(int w, int h)
    • ALLEGRO_BITMAPštruktúra na uloženie obrazuvytvorenie obrazovej pamäte ALLEGRO_BITMAP *bmp = create_bitmap(x,y);
    • Grafikavykreslenie 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);
    • GrafikaUvoľnenie obrazovej pamäte al_destroy_bitmap(bmp);
    • Klávesnicazavedenie ovládača klávesnice al_install_keyboard()odstránenie ovládača klávesnice al_uninstall_keyboard()načítanie klávesy event.keyboard.keycode
    • Myšinštalácia a odstránenie ovládača al_install_mouse() al_uninstall_mouse()
    • Ďalšie vlastnostiprehrávanie samplov a MIDIukladanie súborov do datafilejednoduchá 3D grafika - polygonyjednoduché GUI
    • Knižnice nad AllegromAllegro má pomerne veľa funkciiAllegttf - práca s True Type fontamiAllegGL - práca GL grafikouDUMB - práca sa audiom (Vorbis/Ogg)
    • KompiláciaKonfiguračný skript allegro-configLinux, Unix, BeOS, QNX, MacOS, Windows: g++ foo.cc -o foo `allegro-config --libs`iPhone/iPad vyžaduje Xcode
    • Zdrojevývoj knižnice http://alleg.sourceforge.net
    • Allegro.ccGame development community networkMattew J. Leverton http://www.allegro.cc
    • KnižnicaSimple Direct Media Layer
    • Programovanieinicializácia systému SDL_init(flags)ukončenie systému SDL_quit()
    • Grafika I.inicializácia grafického prostredia SDL_SetVideoMode(width, height, video_bpp, videoflags)obrazové dáta v pamäti SDL_SWSURFACEobrazové dáta vo video pamäti SDL_HWSURFACE
    • Grafika II.štruktúra na uloženie obrazu SDL_Surfacevytvorenie obrazovej pamäte surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, rmask, gmask, bmask, amask);
    • 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);
    • Klávesnicastlačenie klávesy vyvolá udalosť SDL_PollEvent(SDL_Event *event)test na stlačenie konkrétne klávesy event.key.keysym.sym
    • Časovaččasovač implementovaný ako počítadlo static int counter;inštalácia funkcie volenej v pravidelnýchintervaloch SDL_SetTimer(interval, tick);
    • Myšzistenie stavu myši SDL_GetMouseState(*x, *y);
    • Textjednoduchý výpis textu nie je
    • Ďalšie vlastnostipriama podpora GL knižníczabudovaný mechanizmus pre vláknaspolupráca s jazykmi Ada, Eiffel, Java, Lua, Perl, PHP, Pike, Python, Ruby176 rozširujúcich knižníc
    • KnižniceSDL je samo o sebe pomerne ťažkopoužiteľnéSDL_mixer - multikanálový mixérSDL_image - spracovanie obrazovýchformátovSDL_net - práca so sieťou
    • Zdrojevývoj http://www.libsdl.orgportál s hrami http://www.lgames.org
    • Kompiláciakonfiguračný skript sdl-configLinux, Windows, BeOS, Mac OS g++ foo.cc -o foo `sdl-config --libs`
    • KnižnicaClanLib game Simple Development Kithttp://www.clanlib.org
    • LUAsilný skriptovací nástrojvolanie skriptov z programuvolanie programu zo skriptovjednoduchá syntax jazyka http://www.lua.org
    • KnižnicaMesa http://mesa3d.sourceforge.net
    • Dino
    • Games for Linuxpodpora hier pre Linuxport a code, save the gamearchív 208 hier, 35 knižníc http://games.linux.sk
    • GUIGraphic User Interface
    • Vhodné knižnice QT FLTK GTK
    • QT Trolltech:http://www.trolltech.com
    • QTprodukt firmy Trolltechlicencie: open source aj komrčnéknižnica vznikla v roku 1996podporuje C++ a Javu
    • PlatformyMS/WindowsUnix/X11 - Linux, Sun Solaris, HP-UX,Compaq Tru64 UNIX, IBM AIX, IRIX, MacOS XEmbedded - Linux platforms with framebuffersupport.
    • Designernástroj na tvorbu GUIrozvrhnutú plochu ukladá do XML súboruz XML definície sa generuje kód programu
    • Kompiláciauloženie projektuvytvorenie Makefile z projektu qmake -o Makefile test.prokompilácia make
    • Linguistnástroj na preklad aplikáciiumožňuje oddeliť kód od textovprekladateľ a programátor pracujúsamostatne
    • Amélia
    • KDE
    • Google Earth
    • FLTKhttp://www.fltk.org
    • Knižnica FLTKThe Fast Light Tool KitAutor: Bill Spitzakvenoval sa vývoju rozhraní pre SunMicrosystemsveľa myšlienok zjednodušil a vložil do kitunízko-úrovňová kompatibilita - 10% odlišnosti
    • PlatformyUnix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT
    • FLUIDFast Light User-Interface Designerjednoduchý designer na tvorbu GUI
    • Knižnicahttp://www.gtk.org
    • GTKGIMP ToolKitPeter Mattis, Spencer Kimball, JoshMacDonaldGNU Network Object Model Environment(GNOME) C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffelkomplexne riešená knižnica
    • Glade 3http://glade.gnome.org design GUI - www.srobick.com
    • Adobe AlchemyC/C++ kód skompilovaný pre FlashPlayervýhody Flash Platformyprenositeľnosťpodpora na väčšine platforiem príklad: Doom http://labs.adobe.com
    • ACEThe ADAPTIVE Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.htmlOpen source C++ framework reactor, proactor acceptor, connector
    • LadímeKdyž něco rozeberem, tak leda debuggerem
    • výkonné multiplatformové IDE http://www.eclipse.orgC/C++ - CDT plugin http://www.eclipse.org/cdt
    • Break point
    • Naštartujeme Debugger
    • A zastavíme
    • Prechádzka po stacku
    • Ladíme lokálnu aplikáciu Možnosti: Aplikácia vrámci workspacu. (videli sme) Aplikácia mimo workspace. (ukážeme si)
    • Import binárky
    • Toto ešte zvládneme
    • A teraz príde trik – bez medzier! Nesprávne!Správne
    • Drobnosti pred štartom
    • Debug – lokálna aplikácia
    • Čo z bežiacimi aplikáciami? Pripojíme sa na aplikáciu.
    • Pripojenie k bežiacenu procesu
    • Čo s aplikáciami na serveri? Väčšina debuggerov podporuje vzdialené pripojenie.
    • Aplikácia to neprežila Post-mortem analýzaZostal len jej obraz: coredump
    • Rýchla analýza coredumpu
    • Módy debuggera Spustenie lokálnej aplikácie. Pripojenie k lokálnemu procesu.Pripojenie k vzdialenému procesu. Post-mortem.
    • Valgrinddebugging a profilingmemcheck memory leakyhelgrind race condition, thread profiling
    • Kontinuálna integrácia Od chaosu k štruktúre
    • Modely vývojaAgilné metódyScrumExtreme ProgrammingTest Driven Developmenthttp://www.agilnikonsorcium.cz
    • http://www.boost.org “...one of the most highly regarded and expertly designed C++ library projects in the world.” Herb Sutter and Andrei Alexandrescu
    • Boost – 2010
    • Boost Test LibraryTest everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľný programbjam integruje spúšťanie testov
    • TestCaseusing 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" );}
    • Jamnáhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU overheadbuild obrovských projektovškálovateľné(pozn. citlivé na medzery)
    • jam + TestCaseJamfile (Jamroot) import testing ; run tests/testServerQuery.cpp server ;Shell $ bjam ...patience... ...found 2 targets... ...updating 2 targets... *** test passed ***
    • Maven pre C++web: http://maven.apache.org mvn [parametre|ciele]súbor s definíciou projekt pom.xmlplugin pre C++ native-maven-plugin
    • Obsah pom.xmlArtifactsDependenciesPluginsRepositories
    • Kontinuálna integráciaprojekt tvorený zo zdrojových kódovrýchlo kontrola po commiteHudson CI – príklad:http://hudson.sinusgear.com
    • NástrojeProfesionál vie používať správne nástroje na správny účel.
    • Subversion - SVNverzovací nástrojjednoduchý na používanie http://subversion.tigris.orgrepository, check-out, commit, merge http://www.asinus.org/wiki/VideoTutorialSubversion
    • SVN klient pre Windows http://tortoisesvn.tigris.org
    • GIToproti SVN možnosť lokálných commitovSocial Coding http://www.github.com
    • Source Control & Project Management http://trac.edgewall.org http://trac-hacks.org/
    • GNU a WindowsMinimalist GNU For Windows http://www.mingw.orgCygwin http://www.cygwin.com http://cygwinports.dotsrc.org/
    • Doxygengenerovanie dokumentácie pre C, C++, Java, Python PHP, C#, Dpoužitie doxygen -g project.config doxygen project.config
    • C#, .NET a Monoopen source implementácia .NETRozhranie napr. GTK# http://www.mono-project.com Silverlight pre Linux - Moonlight
    • Pythonsilný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++ http://www.python.org http://www.py.cz
    • Twistedudalosť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/
    • PyGamekombinácia sily Pythonua rýchlosti SDL (kód v C) http://www.pygame.org
    • ProjektGoogle Code http://code.google.com/opensourceSourceForge http://sourceforge.netFreshMeat http://freshmeat.net
    • Ohlohporovnanie projektovrôzne metriky http://www.ohloh.net
    • Open Source projektotvoriť program svetu - Open Sourceniekto môže vo vašej práci pokračovať http://atanks.sf.net
    • se-radio.netSoftware engineering radiozaujímavý a kvalitný podcast http://www.se-radio.net
    • A je tu záverOtázky?
    • Ďakujem za pozornosť FI MUNI, Brno 2010 Juraj Michálekweb: http://georgik.sinusgear.comtwitter: http://twitter.com/georgiksk