Your SlideShare is downloading. ×
There is much more to C
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

There is much more to C

1,165
views

Published on

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

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

Published in: Technology, Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,165
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. There is much more to C++ FI MUNI, Brno 2011 Mgr. Juraj Michálek blog: http://georgik.sinusgear.com twitter: http://twitter.com/sinusgear
  • 2. Niečo o mne
  • 3. ObsahVyvíjame STL, Allegro, SDL, ClanLib, LUA, Mesa3D...C a jemu podobné robot kit, ArundinoLadíme Eclipse a debuggerKontinuálna integrácia Boost, Jenkins CI, MavenNástroje
  • 4. 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ý
  • 5. 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.
  • 6. Vývoj
  • 7. STL I.základ pre C++práca s reťazcami #include <string>operácie nad zoznamami #include <list> #include <deque>
  • 8. 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/
  • 9. OtázkaVystačíme so štandardnými funkciami STL?
  • 10. Odpoveď
  • 11. Interaktívne aplikácie
  • 12. 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
  • 13. Knižnice Allegro Simple Direct Media LayerClanlib Simple Development Kit
  • 14. AllegroAllegro Low Level Game Routines
  • 15. Allegro - aplikáciaspracovanie klávesnice, myši, joystickuspracovanie obrazu, zvukujednoduché GUIovládanie časovačovpoužívanie dátových súborovuvedené príklady z Allegro
  • 16. Allegro 5podpora pre bežné OSpodpora pre iPhoneudalostihttp://alleg.sourceforge.net/a5docs/5.0.5/
  • 17. Programovanie I.inicializácia Allegra al_init();
  • 18. Inicializácia grafikyinicializácia grafického prostredia al_create_display(int w, int h)
  • 19. ALLEGRO_BITMAPštruktúra na uloženie obrazuvytvorenie obrazovej pamäte ALLEGRO_BITMAP *bmp = create_bitmap(x,y);
  • 20. 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);
  • 21. GrafikaUvoľnenie obrazovej pamäte al_destroy_bitmap(bmp);
  • 22. 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
  • 23. Myšinštalácia a odstránenie ovládača al_install_mouse() al_get_mouse_state(&msestate); al_uninstall_mouse()
  • 24. Ďalšie vlastnostiprehrávanie samplov a MIDIukladanie súborov do datafilejednoduchá 3D grafika - polygonyjednoduché GUI
  • 25. 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)
  • 26. KompiláciaKonfiguračný skript allegro-configLinux, Unix, BeOS, QNX, MacOS, Windows: g++ foo.cc -o foo `allegro-config --libs`iPhone vyžaduje Xcode
  • 27. CMake – Cross Platform Make generuje build súbory pre IDE http://www.cmake.org
  • 28. Allegro – CMake – MSVC 2010
  • 29. Allegro – CMake - KDevelop4
  • 30. Zdrojevývoj knižnice http://alleg.sourceforge.netWiki http://wiki.allegro.cc/
  • 31. Allegro.ccGame development community networkMattew J. Leverton http://www.allegro.cc
  • 32. KnižnicaSimple Direct Media Layer
  • 33. Programovanieinicializácia systému SDL_init(flags)ukončenie systému SDL_quit()
  • 34. 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
  • 35. 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);
  • 36. 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);
  • 37. Klávesnicastlačenie klávesy vyvolá udalosť SDL_PollEvent(SDL_Event *event)test na stlačenie konkrétne klávesy event.key.keysym.sym
  • 38. Časovaččasovač implementovaný ako počítadlo static int counter;inštalácia funkcie volenej v pravidelnýchintervaloch SDL_SetTimer(interval, tick);
  • 39. Myšzistenie stavu myši SDL_GetMouseState(*x, *y);
  • 40. Textjednoduchý výpis textu nie je
  • 41. Ď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
  • 42. 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
  • 43. Zdrojevývoj http://www.libsdl.orgportál s hrami http://www.lgames.org
  • 44. Kompiláciakonfiguračný skript sdl-configLinux, Windows, BeOS, Mac OS g++ foo.cc -o foo `sdl-config --libs`
  • 45. KnižnicaClanLib game Simple Development Kithttp://www.clanlib.org
  • 46. LUAsilný skriptovací nástrojvolanie skriptov z programuvolanie programu zo skriptovjednoduchá syntax jazyka http://www.lua.org
  • 47. KnižnicaMesa http://mesa3d.sourceforge.net
  • 48. Dino
  • 49. Games for Linuxpodpora hier pre Linuxport a code, save the gamearchív 208 hier, 35 knižníc http://games.linux.sk
  • 50. GUIGraphic User Interface
  • 51. Vhodné knižnice QT FLTK GTK
  • 52. QT Nokia:http://qt.nokia.com
  • 53. QTprodukt firmy Trolltech, neskôr Nokialicencie: open source aj komrčnéknižnica vznikla v roku 1996podporuje C++ a Javu
  • 54. PlatformyMS/WindowsUnix/X11 - Linux, Sun Solaris, HP-UX,Compaq Tru64 UNIX, IBM AIX, IRIX, Mac OSXEmbedded - Linux platforms with framebuffersupport.
  • 55. QT Creator IDEnástroj na tvorbu GUIrozvrhnutú plochu ukladá do XML súboruz XML definície sa generuje kód programu
  • 56. Kompiláciauloženie projektuvytvorenie Makefile z projektu qmake -o Makefile test.prokompilácia make
  • 57. Linguistnástroj na preklad aplikáciiumožňuje oddeliť kód od textovprekladateľ a programátor pracujúsamostatne
  • 58. Amélia
  • 59. KDE
  • 60. Google Earth
  • 61. FLTKhttp://www.fltk.org
  • 62. 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
  • 63. PlatformyUnix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT
  • 64. FLUIDFast Light User-Interface Designerjednoduchý designer na tvorbu GUI
  • 65. Knižnicahttp://www.gtk.org
  • 66. 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
  • 67. Glade 3http://glade.gnome.org design GUI - www.srobick.com
  • 68. Android – Native Development Kithttp://developer.android.com/sdk/ndk/Pozor! App nemusí byť optimálnejšia než napísaná v Jave
  • 69. NDKstiahnuť SDK a NDKexport PATH=$PATH:/cesta/sdk/tools:/ceta/ndkcd /cesta/ndk/samples/hello-jniandroid update project -p . -sndk-buildant debug
  • 70. Adobe Alchemyzaujímavý experimentC/C++ kód skompilovaný pre FlashPlayer AVM2prenositeľnosť príklad: Doom http://labs.adobe.com
  • 71. Interactive C - RobotHandyboardMotorola 68AX11Odvodené od Chttp://www.kipr.orghttp://www.boatball.org
  • 72. Arundinohttp://www.arduino.cc/playground/Interfacing/CPPWindows
  • 73. ACEThe ADAPTIVE Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.htmlOpen source C++ framework reactor, proactor acceptor, connector
  • 74. Java Native Interface - JNIpublic class HelloWorld { private native void sayHello(); public static void main(String[] args) { System.loadLibrary("library"); new HelloWorld().sayHello(); }}
  • 75. NodeJSV8 JavaScript engineasynchrónny prístupudalostihttp://www.nodejs.org
  • 76. výkonné multiplatformové IDE http://www.eclipse.orgC/C++ - CDT plugin http://www.eclipse.org/cdt
  • 77. Aplikácia to neprežila Post-mortem analýzaZostal len jej obraz: coredump
  • 78. Rýchla analýza coredumpu
  • 79. Módy debuggera Spustenie lokálnej aplikácie. Pripojenie k lokálnemu procesu.Pripojenie k vzdialenému procesu. Post-mortem.
  • 80. Valgrinddebugging a profilingmemcheck memory leakyhelgrind race condition, thread profiling
  • 81. Stracestrace ls -l execve("/bin/ls", ["ls"], [/* 29 vars */]) = 0 brk(0) = 0x95d0000 access("/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) = 0xb773c000 access("/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)
  • 82. Mutextracemutextrace ./mutex-tester-app param1 param2 lock #1, free -> thread 1 init #2 lock #2, free -> thread 1 unlock #1 lock #1, free -> thread 1 init #3 lock #3, free -> thread 1 unlock #1
  • 83. PortabilitaLinux – Windows – Mac – BSDprenos C/C++ nie je vždy jednoduchýUnix/Windows Porting Dictionary http://suacommunity.com/
  • 84. Kontinuálna integrácia Od chaosu k štruktúre
  • 85. http://www.boost.org “...one of the most highly regarded and expertly designed C++ library projects in the world.” Herb Sutter and Andrei Alexandrescu
  • 86. Boost
  • 87. Boost Test LibraryTest everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľný programbjam integruje spúšťanie testov
  • 88. 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" );}
  • 89. Jamnáhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU overheadbuild obrovských projektovškálovateľné
  • 90. jam + TestCaseJamfile (Jamroot) import testing ; run tests/testServerQuery.cpp server ;Shell $ bjam ...patience... ...found 2 targets... ...updating 2 targets... *** test passed ***
  • 91. Maven pre C++web: http://maven.apache.org mvn [parametre|ciele]súbor s definíciou projekt pom.xmlplugin pre C++ native-maven-plugin
  • 92. Obsah pom.xmlArtifactsDependenciesPluginsRepositories
  • 93. Kontinuálna integráciarýchla kontrola po commiteJenkins CI – príklad: http://ci.sinusgear.com
  • 94. NástrojeProfesionál vie používať správne nástroje na správny účel.
  • 95. Subversion - SVNverzovací nástrojjednoduchý na používanie http://subversion.tigris.orgrepository, check-out, commit, merge http://www.asinus.org/wiki/VideoTutorialSubversion
  • 96. SVN klient pre Windows http://tortoisesvn.tigris.org
  • 97. GIToproti SVN možnosť lokálných commitovSocial Coding http://www.github.com
  • 98. Source Control & Project Management http://trac.edgewall.org http://trac-hacks.org/
  • 99. GNU a WindowsMinimalist GNU For Windows http://www.mingw.orgCygwin http://www.cygwin.com http://cygwinports.dotsrc.org/
  • 100. Doxygengenerovanie dokumentácie pre C, C++, Java, Python PHP, C#, Dpoužitie doxygen -g project.config doxygen project.config
  • 101. C#, .NET a Monoopen source implementácia .NETRozhranie napr. GTK# http://www.mono-project.com Silverlight pre Linux - Moonlight
  • 102. Pythonsilný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++ http://www.python.org http://www.py.cz
  • 103. 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/
  • 104. PyGamekombinácia sily Pythonua rýchlosti SDL (kód v C) http://www.pygame.org
  • 105. ProjektGitHub http://www.github.comGoogle Code http://code.google.com/opensourceSourceForge http://sourceforge.netFreshMeat http://freshmeat.netCodePlex – MS Platforma http://codeplex.com
  • 106. Ohlohporovnanie projektovrôzne metriky http://www.ohloh.net
  • 107. Open Source projektotvoriť program svetu - Open Sourceniekto môže vo vašej práci pokračovať http://atanks.sf.net
  • 108. se-radio.netSoftware engineering radiozaujímavý a kvalitný podcast http://www.se-radio.net
  • 109. A je tu záverOtázky?
  • 110. Ďakujem za pozornosť FI MUNI, Brno 2011 Juraj Michálekblog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear