Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
There is much more to C++



        FI MUNI, Brno 2011
        Mgr. Juraj Michálek


 blog: http://georgik.sinusgear.com
...
Niečo o mne
Obsah

Vyvíjame
  STL, Allegro, SDL, ClanLib, LUA, Mesa3D...
C a jemu podobné
  robot kit, Arundino
Ladíme
  Eclipse a deb...
Program programátora


1. programátor dostane skvelý nápad
2. naprogramuje dokonalý program
3. všetko si naprogramuje sám
...
Na vlastných nohách


5. pokúsi sa program opraviť
6. zistí, že polovicu funkcií naprogramoval zle
7. preprogramuje zlé fu...
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>
z...
Otázka



Vystačíme so štandardnými funkciami STL?
Odpoveď
Interaktívne aplikácie
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á h...
Knižnice



           Allegro

  Simple Direct Media Layer

Clanlib Simple Development Kit
Allegro




Allegro Low Level Game Routines
Allegro - aplikácia

spracovanie klávesnice, myši, joysticku
spracovanie obrazu, zvuku
jednoduché GUI
ovládanie časovačov
...
Allegro 5

podpora pre bežné OS
podpora pre iPhone
udalosti
http://alleg.sourceforge.net/a5docs/5.0.5/
Programovanie I.

inicializácia Allegra
  al_init();
Inicializácia grafiky

inicializácia grafického prostredia
  al_create_display(int w, int h)
ALLEGRO_BITMAP
štruktúra na uloženie obrazu


vytvorenie obrazovej pamäte
  ALLEGRO_BITMAP *bmp = create_bitmap(x,y);
Grafika

vykreslenie bodu do pamäte
  al_putpixel(x, y, color)
načítanie obrazu zo súboru
  al_load_bitmap(filename);
kopí...
Grafika

Uvoľnenie obrazovej pamäte
  al_destroy_bitmap(bmp);
Klávesnica
zavedenie ovládača klávesnice
  al_install_keyboard()
odstránenie ovládača klávesnice
  al_uninstall_keyboard()...
Myš

inštalácia a odstránenie ovládača
  al_install_mouse()
  al_get_mouse_state(&msestate);
  al_uninstall_mouse()
Ďalšie vlastnosti

prehrávanie samplov a MIDI
ukladanie súborov do datafile
jednoduchá 3D grafika - polygony
jednoduché GUI
Knižnice nad Allegrom

Allegro má pomerne veľa funkcii
Allegttf - práca s True Type fontami
AllegGL - práca GL grafikou
DU...
Kompilácia

Konfiguračný skript
  allegro-config
Linux, Unix, BeOS, QNX, MacOS, Windows:
  g++ foo.cc -o foo
  `allegro-co...
CMake – Cross Platform Make




  generuje build súbory pre IDE
  http://www.cmake.org
Allegro – CMake – MSVC 2010
Allegro – CMake - KDevelop4
Zdroje

vývoj knižnice
  http://alleg.sourceforge.net
Wiki
  http://wiki.allegro.cc/
Allegro.cc

Game development community network
Mattew J. Leverton
  http://www.allegro.cc
Knižnica




Simple Direct Media Layer
Programovanie

inicializá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...
Grafika II.

štruktúra na uloženie obrazu
  SDL_Surface
vytvorenie obrazovej pamäte
  surface =
  SDL_CreateRGBSurface(SDL...
Grafika III.

načítanie obrazu zo súboru
  SDL_Surface *SDL_LoadBMP(const   char
  *file)
kopírovanie medzi pamäťami
  SDL...
Klávesnica

stlačenie klávesy vyvolá udalosť
  SDL_PollEvent(SDL_Event *event)
test na stlačenie konkrétne klávesy
  event...
Časovač

časovač implementovaný ako počítadlo
  static int counter;
inštalácia funkcie volenej v pravidelných
intervaloch
...
Myš

zistenie stavu myši
  SDL_GetMouseState(*x, *y);
Text

jednoduchý výpis textu nie je
Ďalšie vlastnosti

priama podpora GL knižníc
zabudovaný mechanizmus pre vlákna
spolupráca s jazykmi
  Ada, Eiffel, Java, L...
Knižnice

SDL je samo o sebe pomerne ťažko
použiteľné
SDL_mixer - multikanálový mixér
SDL_image - spracovanie obrazových
f...
Zdroje

vývoj
  http://www.libsdl.org
portál s hrami
  http://www.lgames.org
Kompilácia

konfiguračný skript
  sdl-config
Linux, Windows, BeOS, Mac OS
  g++ foo.cc -o foo
  `sdl-config --libs`
Knižnica




ClanLib game Simple Development Kit
http://www.clanlib.org
LUA

silný skriptovací nástroj
volanie skriptov z programu
volanie programu zo skriptov
jednoduchá syntax jazyka
  http://...
Knižnica

Mesa




       http://mesa3d.sourceforge.net
Dino
Games for Linux

podpora hier pre Linux
port a code, save the game
archív 208 hier, 35 knižníc
  http://games.linux.sk
GUI




Graphic User Interface
Vhodné knižnice



      QT

     FLTK

      GTK
QT




       Nokia:
http://qt.nokia.com
QT

produkt firmy Trolltech, neskôr Nokia
licencie: open source aj komrčné
knižnica vznikla v roku 1996
podporuje C++ a Ja...
Platformy

MS/Windows
Unix/X11 - Linux, Sun Solaris, HP-UX,
Compaq Tru64 UNIX, IBM AIX, IRIX, Mac OS
X
Embedded - Linux pl...
QT Creator IDE

nástroj na tvorbu GUI
rozvrhnutú plochu ukladá do XML súboru
z XML definície sa generuje kód programu
Kompilácia

uloženie projektu
vytvorenie Makefile z projektu
  qmake -o Makefile test.pro
kompilácia
  make
Linguist

nástroj na preklad aplikácii
umožňuje oddeliť kód od textov
prekladateľ a programátor pracujú
samostatne
Amélia
KDE
Google Earth
FLTK




http://www.fltk.org
Knižnica FLTK

The Fast Light Tool Kit
Autor: Bill Spitzak
venoval sa vývoju rozhraní pre Sun
Microsystems
veľa myšlienok ...
Platformy

Unix, Linux
Microsoft Windows
MacOS
s podporou OpenGL a GLUT
FLUID

Fast Light User-Interface Designer
jednoduchý designer na tvorbu GUI
Knižnica




http://www.gtk.org
GTK

GIMP ToolKit
Peter Mattis, Spencer Kimball, Josh
MacDonald
GNU Network Object Model Environment
(GNOME)
  C++, Guile,...
Glade 3




http://glade.gnome.org
   design GUI - www.srobick.com
Android – Native Development Kit




http://developer.android.com/sdk/ndk/
Pozor!
  App nemusí byť optimálnejšia než napís...
NDK

stiahnuť SDK a NDK
export PATH=$PATH:/cesta/sdk/tools:/ceta/ndk
cd /cesta/ndk/samples/hello-jni
android update projec...
Adobe Alchemy

zaujímavý experiment
C/C++ kód skompilovaný pre FlashPlayer
  AVM2
prenositeľnosť
  príklad: Doom
  http://...
Interactive C - Robot




Handyboard
Motorola 68AX11
Odvodené od C
http://www.kipr.org
http://www.boatball.org
Arundino




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

The ADAPTIVE Communication Environment
  http://www.cs.wustl.edu/~schmidt/ACE.html
Open source C++ framework


  reac...
Java Native Interface - JNI

public class HelloWorld {
 private native void sayHello();

    public static void main(Strin...
NodeJS

V8 JavaScript engine
asynchrónny prístup
udalosti
http://www.nodejs.org
výkonné multiplatformové IDE
  http://www.eclipse.org
C/C++ - CDT plugin
  http://www.eclipse.org/cdt
Aplikácia to neprežila




    Post-mortem analýza

Zostal 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.

   ...
Valgrind

debugging a profiling
memcheck
  memory leaky
helgrind
  race condition, thread profiling
Strace

strace ls -l
     execve("/bin/ls", ["ls"], [/* 29 vars */]) = 0
     brk(0)                          = 0x95d0000
...
Mutextrace

mutextrace ./mutex-tester-app param1 param2
  lock #1, free -> thread 1
  init #2
  lock #2, free -> thread 1
...
Portabilita

Linux – Windows – Mac – BSD
prenos C/C++ nie je vždy jednoduchý
Unix/Windows Porting Dictionary
  http://suac...
Kontinuálna integrácia




   Od chaosu k štruktúre
http://www.boost.org
 “...one of the most highly regarded and
 expertly designed C++ library projects in the
 world.”
    ...
Boost
Boost Test Library

Test everything that could possibly break
jednoduchá tvorba tescasov
TestSuite – TestCase
test je spus...
TestCase

using namespace boost::unit_test_framework;

/**
 * Test basic marshaller functionality
 */
void testServerQuery...
Jam

náhrada Makefile
rozšíriteľné fukncie
automatická detekcia header files
prenositeľné: Unix, Windows, VMS, Mac
malý CP...
jam + TestCase

Jamfile (Jamroot)
  import testing ;
  run tests/testServerQuery.cpp server ;
Shell
  $ bjam
  ...patience...
Maven pre C++

web: http://maven.apache.org
  mvn [parametre|ciele]
súbor s definíciou projekt
  pom.xml
plugin pre C++
  ...
Obsah pom.xml

Artifacts
Dependencies
Plugins
Repositories
Kontinuálna integrácia

rýchla kontrola po commite
Jenkins CI – príklad:
  http://ci.sinusgear.com
Nástroje




Profesionál vie používať správne nástroje
            na správny účel.
Subversion - SVN

verzovací nástroj
jednoduchý na používanie
  http://subversion.tigris.org
repository, check-out, commit,...
SVN klient pre Windows
  http://tortoisesvn.tigris.org
GIT

oproti SVN možnosť lokálných commitov
Social Coding
  http://www.github.com
Source Control & Project Management
  http://trac.edgewall.org
  http://trac-hacks.org/
GNU a Windows

Minimalist GNU For Windows
  http://www.mingw.org
Cygwin
  http://www.cygwin.com
  http://cygwinports.dotsr...
Doxygen

generovanie dokumentácie pre
  C, C++, Java, Python
  PHP, C#, D
použitie
  doxygen -g project.config
  doxygen p...
C#, .NET a Mono

open source implementácia .NET
Rozhranie napr. GTK#
  http://www.mono-project.com
  Silverlight pre Linux...
Python


silný objektovo orientovaný jazyk
platformovo nezávislý
integrovateľný s C a C++
  http://www.python.org
  http:/...
Twisted

udalosťami riadený sieťový framework
podpora TCP, UDP, SSL/TLS, multicast
Unix sockets
veľké množstvo protokolov
...
PyGame
kombinácia sily Pythonu
a rýchlosti SDL (kód v C)
  http://www.pygame.org
Projekt
GitHub
  http://www.github.com
Google Code
  http://code.google.com/opensource
SourceForge
  http://sourceforge.ne...
Ohloh

porovnanie projektov
rôzne metriky
  http://www.ohloh.net
Open Source projekt
otvoriť program svetu - Open Source
niekto môže vo vašej práci pokračovať
  http://atanks.sf.net
se-radio.net
Software engineering radio
zaujímavý a kvalitný podcast
  http://www.se-radio.net
A je tu záver




Otázky?
Ďakujem za pozornosť



       FI MUNI, Brno 2011
          Juraj Michálek


blog: http://georgik.sinusgear.com
twitter: h...
There is much more to C
Upcoming SlideShare
Loading in …5
×

of

There is much more to C Slide 1 There is much more to C Slide 2 There is much more to C Slide 3 There is much more to C Slide 4 There is much more to C Slide 5 There is much more to C Slide 6 There is much more to C Slide 7 There is much more to C Slide 8 There is much more to C Slide 9 There is much more to C Slide 10 There is much more to C Slide 11 There is much more to C Slide 12 There is much more to C Slide 13 There is much more to C Slide 14 There is much more to C Slide 15 There is much more to C Slide 16 There is much more to C Slide 17 There is much more to C Slide 18 There is much more to C Slide 19 There is much more to C Slide 20 There is much more to C Slide 21 There is much more to C Slide 22 There is much more to C Slide 23 There is much more to C Slide 24 There is much more to C Slide 25 There is much more to C Slide 26 There is much more to C Slide 27 There is much more to C Slide 28 There is much more to C Slide 29 There is much more to C Slide 30 There is much more to C Slide 31 There is much more to C Slide 32 There is much more to C Slide 33 There is much more to C Slide 34 There is much more to C Slide 35 There is much more to C Slide 36 There is much more to C Slide 37 There is much more to C Slide 38 There is much more to C Slide 39 There is much more to C Slide 40 There is much more to C Slide 41 There is much more to C Slide 42 There is much more to C Slide 43 There is much more to C Slide 44 There is much more to C Slide 45 There is much more to C Slide 46 There is much more to C Slide 47 There is much more to C Slide 48 There is much more to C Slide 49 There is much more to C Slide 50 There is much more to C Slide 51 There is much more to C Slide 52 There is much more to C Slide 53 There is much more to C Slide 54 There is much more to C Slide 55 There is much more to C Slide 56 There is much more to C Slide 57 There is much more to C Slide 58 There is much more to C Slide 59 There is much more to C Slide 60 There is much more to C Slide 61 There is much more to C Slide 62 There is much more to C Slide 63 There is much more to C Slide 64 There is much more to C Slide 65 There is much more to C Slide 66 There is much more to C Slide 67 There is much more to C Slide 68 There is much more to C Slide 69 There is much more to C Slide 70 There is much more to C Slide 71 There is much more to C Slide 72 There is much more to C Slide 73 There is much more to C Slide 74 There is much more to C Slide 75 There is much more to C Slide 76 There is much more to C Slide 77 There is much more to C Slide 78 There is much more to C Slide 79 There is much more to C Slide 80 There is much more to C Slide 81 There is much more to C Slide 82 There is much more to C Slide 83 There is much more to C Slide 84 There is much more to C Slide 85 There is much more to C Slide 86 There is much more to C Slide 87 There is much more to C Slide 88 There is much more to C Slide 89 There is much more to C Slide 90 There is much more to C Slide 91 There is much more to C Slide 92 There is much more to C Slide 93 There is much more to C Slide 94 There is much more to C Slide 95 There is much more to C Slide 96 There is much more to C Slide 97 There is much more to C Slide 98 There is much more to C Slide 99 There is much more to C Slide 100 There is much more to C Slide 101 There is much more to C Slide 102 There is much more to C Slide 103 There is much more to C Slide 104 There is much more to C Slide 105 There is much more to C Slide 106 There is much more to C Slide 107 There is much more to C Slide 108 There is much more to C Slide 109 There is much more to C Slide 110 There is much more to C Slide 111
Upcoming SlideShare
Základy jQuery
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

There is much more to C

Download to read offline

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

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

There is much more to C

  1. 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. 2. Niečo o mne
  3. 3. Obsah Vyvíjame STL, Allegro, SDL, ClanLib, LUA, Mesa3D... C a jemu podobné robot kit, Arundino Ladíme Eclipse a debugger Kontinuálna integrácia Boost, Jenkins CI, Maven Nástroje
  4. 4. 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ý
  5. 5. 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. 6. Vývoj
  7. 7. STL I. základ pre C++ práca s reťazcami #include <string> operácie nad zoznamami #include <list> #include <deque>
  8. 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. 9. Otázka Vystačíme so štandardnými funkciami STL?
  10. 10. Odpoveď
  11. 11. Interaktívne aplikácie
  12. 12. 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
  13. 13. Knižnice Allegro Simple Direct Media Layer Clanlib Simple Development Kit
  14. 14. Allegro Allegro Low Level Game Routines
  15. 15. 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
  16. 16. Allegro 5 podpora pre bežné OS podpora pre iPhone udalosti http://alleg.sourceforge.net/a5docs/5.0.5/
  17. 17. Programovanie I. inicializácia Allegra al_init();
  18. 18. Inicializácia grafiky inicializácia grafického prostredia al_create_display(int w, int h)
  19. 19. ALLEGRO_BITMAP štruktúra na uloženie obrazu vytvorenie obrazovej pamäte ALLEGRO_BITMAP *bmp = create_bitmap(x,y);
  20. 20. 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);
  21. 21. Grafika Uvoľnenie obrazovej pamäte al_destroy_bitmap(bmp);
  22. 22. Klávesnica zavedenie 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. 23. Myš inštalácia a odstránenie ovládača al_install_mouse() al_get_mouse_state(&msestate); al_uninstall_mouse()
  24. 24. Ďalšie vlastnosti prehrávanie samplov a MIDI ukladanie súborov do datafile jednoduchá 3D grafika - polygony jednoduché GUI
  25. 25. 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)
  26. 26. Kompilácia Konfiguračný skript allegro-config Linux, Unix, BeOS, QNX, MacOS, Windows: g++ foo.cc -o foo `allegro-config --libs` iPhone vyžaduje Xcode
  27. 27. CMake – Cross Platform Make generuje build súbory pre IDE http://www.cmake.org
  28. 28. Allegro – CMake – MSVC 2010
  29. 29. Allegro – CMake - KDevelop4
  30. 30. Zdroje vývoj knižnice http://alleg.sourceforge.net Wiki http://wiki.allegro.cc/
  31. 31. Allegro.cc Game development community network Mattew J. Leverton http://www.allegro.cc
  32. 32. Knižnica Simple Direct Media Layer
  33. 33. Programovanie inicializácia systému SDL_init(flags) ukončenie systému SDL_quit()
  34. 34. 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
  35. 35. 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);
  36. 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. 37. Klávesnica stlačenie klávesy vyvolá udalosť SDL_PollEvent(SDL_Event *event) test na stlačenie konkrétne klávesy event.key.keysym.sym
  38. 38. Časovač časovač implementovaný ako počítadlo static int counter; inštalácia funkcie volenej v pravidelných intervaloch SDL_SetTimer(interval, tick);
  39. 39. Myš zistenie stavu myši SDL_GetMouseState(*x, *y);
  40. 40. Text jednoduchý výpis textu nie je
  41. 41. Ď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
  42. 42. 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
  43. 43. Zdroje vývoj http://www.libsdl.org portál s hrami http://www.lgames.org
  44. 44. Kompilácia konfiguračný skript sdl-config Linux, Windows, BeOS, Mac OS g++ foo.cc -o foo `sdl-config --libs`
  45. 45. Knižnica ClanLib game Simple Development Kit http://www.clanlib.org
  46. 46. LUA silný skriptovací nástroj volanie skriptov z programu volanie programu zo skriptov jednoduchá syntax jazyka http://www.lua.org
  47. 47. Knižnica Mesa http://mesa3d.sourceforge.net
  48. 48. Dino
  49. 49. Games for Linux podpora hier pre Linux port a code, save the game archív 208 hier, 35 knižníc http://games.linux.sk
  50. 50. GUI Graphic User Interface
  51. 51. Vhodné knižnice QT FLTK GTK
  52. 52. QT Nokia: http://qt.nokia.com
  53. 53. QT produkt firmy Trolltech, neskôr Nokia licencie: open source aj komrčné knižnica vznikla v roku 1996 podporuje C++ a Javu
  54. 54. 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.
  55. 55. QT Creator IDE nástroj na tvorbu GUI rozvrhnutú plochu ukladá do XML súboru z XML definície sa generuje kód programu
  56. 56. Kompilácia uloženie projektu vytvorenie Makefile z projektu qmake -o Makefile test.pro kompilácia make
  57. 57. Linguist nástroj na preklad aplikácii umožňuje oddeliť kód od textov prekladateľ a programátor pracujú samostatne
  58. 58. Amélia
  59. 59. KDE
  60. 60. Google Earth
  61. 61. FLTK http://www.fltk.org
  62. 62. 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
  63. 63. Platformy Unix, Linux Microsoft Windows MacOS s podporou OpenGL a GLUT
  64. 64. FLUID Fast Light User-Interface Designer jednoduchý designer na tvorbu GUI
  65. 65. Knižnica http://www.gtk.org
  66. 66. GTK GIMP ToolKit Peter Mattis, Spencer Kimball, Josh MacDonald GNU Network Object Model Environment (GNOME) C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffel komplexne riešená knižnica
  67. 67. Glade 3 http://glade.gnome.org design GUI - www.srobick.com
  68. 68. Android – Native Development Kit http://developer.android.com/sdk/ndk/ Pozor! App nemusí byť optimálnejšia než napísaná v Jave
  69. 69. NDK stiahnuť SDK a NDK export PATH=$PATH:/cesta/sdk/tools:/ceta/ndk cd /cesta/ndk/samples/hello-jni android update project -p . -s ndk-build ant debug
  70. 70. Adobe Alchemy zaujímavý experiment C/C++ kód skompilovaný pre FlashPlayer AVM2 prenositeľnosť príklad: Doom http://labs.adobe.com
  71. 71. Interactive C - Robot Handyboard Motorola 68AX11 Odvodené od C http://www.kipr.org http://www.boatball.org
  72. 72. Arundino http://www.arduino.cc/playground/Interfacing/CPPWindows
  73. 73. ACE The ADAPTIVE Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.html Open source C++ framework reactor, proactor acceptor, connector
  74. 74. Java Native Interface - JNI public class HelloWorld { private native void sayHello(); public static void main(String[] args) { System.loadLibrary("library"); new HelloWorld().sayHello(); } }
  75. 75. NodeJS V8 JavaScript engine asynchrónny prístup udalosti http://www.nodejs.org
  76. 76. výkonné multiplatformové IDE http://www.eclipse.org C/C++ - CDT plugin http://www.eclipse.org/cdt
  77. 77. Aplikácia to neprežila Post-mortem analýza Zostal len jej obraz: coredump
  78. 78. Rýchla analýza coredumpu
  79. 79. Módy debuggera Spustenie lokálnej aplikácie. Pripojenie k lokálnemu procesu. Pripojenie k vzdialenému procesu. Post-mortem.
  80. 80. Valgrind debugging a profiling memcheck memory leaky helgrind race condition, thread profiling
  81. 81. Strace strace 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. 82. Mutextrace mutextrace ./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. 83. Portabilita Linux – Windows – Mac – BSD prenos C/C++ nie je vždy jednoduchý Unix/Windows Porting Dictionary http://suacommunity.com/
  84. 84. Kontinuálna integrácia Od chaosu k štruktúre
  85. 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. 86. Boost
  87. 87. Boost Test Library Test everything that could possibly break jednoduchá tvorba tescasov TestSuite – TestCase test je spustiteľný program bjam integruje spúšťanie testov
  88. 88. 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" ); }
  89. 89. Jam náhrada Makefile rozšíriteľné fukncie automatická detekcia header files prenositeľné: Unix, Windows, VMS, Mac malý CPU overhead build obrovských projektov škálovateľné
  90. 90. jam + TestCase Jamfile (Jamroot) import testing ; run tests/testServerQuery.cpp server ; Shell $ bjam ...patience... ...found 2 targets... ...updating 2 targets... *** test passed ***
  91. 91. 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
  92. 92. Obsah pom.xml Artifacts Dependencies Plugins Repositories
  93. 93. Kontinuálna integrácia rýchla kontrola po commite Jenkins CI – príklad: http://ci.sinusgear.com
  94. 94. Nástroje Profesionál vie používať správne nástroje na správny účel.
  95. 95. Subversion - SVN verzovací nástroj jednoduchý na používanie http://subversion.tigris.org repository, check-out, commit, merge http://www.asinus.org/wiki/VideoTutorialSubversion
  96. 96. SVN klient pre Windows http://tortoisesvn.tigris.org
  97. 97. GIT oproti SVN možnosť lokálných commitov Social Coding http://www.github.com
  98. 98. Source Control & Project Management http://trac.edgewall.org http://trac-hacks.org/
  99. 99. GNU a Windows Minimalist GNU For Windows http://www.mingw.org Cygwin http://www.cygwin.com http://cygwinports.dotsrc.org/
  100. 100. Doxygen generovanie dokumentácie pre C, C++, Java, Python PHP, C#, D použitie doxygen -g project.config doxygen project.config
  101. 101. C#, .NET a Mono open source implementácia .NET Rozhranie napr. GTK# http://www.mono-project.com Silverlight pre Linux - Moonlight
  102. 102. Python silný objektovo orientovaný jazyk platformovo nezávislý integrovateľný s C a C++ http://www.python.org http://www.py.cz
  103. 103. Twisted udalosťami riadený sieťový framework podpora TCP, UDP, SSL/TLS, multicast Unix sockets veľké množstvo protokolov HTTP, NNTP, IMAP, SSH, IRC, FTP... http://twistedmatrix.com/trac/
  104. 104. PyGame kombinácia sily Pythonu a rýchlosti SDL (kód v C) http://www.pygame.org
  105. 105. Projekt GitHub http://www.github.com Google Code http://code.google.com/opensource SourceForge http://sourceforge.net FreshMeat http://freshmeat.net CodePlex – MS Platforma http://codeplex.com
  106. 106. Ohloh porovnanie projektov rôzne metriky http://www.ohloh.net
  107. 107. Open Source projekt otvoriť program svetu - Open Source niekto môže vo vašej práci pokračovať http://atanks.sf.net
  108. 108. se-radio.net Software engineering radio zaujímavý a kvalitný podcast http://www.se-radio.net
  109. 109. A je tu záver Otázky?
  110. 110. Ďakujem za pozornosť FI MUNI, Brno 2011 Juraj Michálek blog: http://georgik.sinusgear.com twitter: http://twitter.com/sinusgear

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

Views

Total views

1,920

On Slideshare

0

From embeds

0

Number of embeds

772

Actions

Downloads

3

Shares

0

Comments

0

Likes

0

×