Libraries and tools for C++             FI MUNI            26.11. 2012            Juraj Michálekblog: http://georgik.sinus...
Something about me ;-)
ContentNode.js  V8, Node bindingsGui  QT, FLTK, FLUID, wxWidgetsSpecial HW  Android NDK, ArduinoPatterns ACETools
Clone examples                 Available at GitHub:  https://github.com/georgik/fimuni-c-cpp-examplesgit clone git://githu...
http://nodejs.org/
Architecture of Node.js
V84x4 Ford V8 engine
V8Googles open source JavaScript engine     http://code.google.com/p/v8/
V8 in context of Chrome
GYPhttp://code.google.com/p/gyp/
GYP example
libuv – event loopCall callbacks   Sleep
Sample server in JS
Node.js wraps
KnižnicaClanLib game Simple Development Kithttp://www.clanlib.org
KnižnicaMesa  http://mesa3d.sourceforge.net
Dino
GUIGraphic User Interface
Vhodné knižnice      QT     FLTK   wxWidgets
QT       Nokia:http://qt.nokia.com
QTprodukt firmy Trolltech, neskôr Nokialicencie: 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, Mac OSXEmbedded - Linux platform...
QT Creator IDEná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
FLTKhttp://www.fltk.org
Knižnica FLTKThe Fast Light Tool KitAutor: Bill Spitzakvenoval sa vývoju rozhraní pre SunMicrosystemsveľa myšlienok zjedno...
PlatformyUnix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT
FLUIDFast Light User-Interface Designerjednoduchý designer na tvorbu GUI
wxWidgethttp://www.wxwidgets.org/
wxGlade
Android – Native Development Kithttp://developer.android.com/sdk/ndk/Pozor!  App nemusí byť optimálnejšia než napísaná v J...
NDKstiahnuť SDK a NDKexport PATH=$PATH:/cesta/sdk/tools:/ceta/ndkcd /cesta/ndk/samples/hello-jniandroid update project -p ...
Adobe Alchemyzaujímavý experimentC/C++ kód skompilovaný pre FlashPlayer  AVM2prenositeľnosť  príklad: Doom  http://labs.ad...
Arduinohttp://www.arduino.cc/playground/Interfacing/CPPWindows
ACEThe ADAPTIVE Communication Environment  http://www.cs.wustl.edu/~schmidt/ACE.htmlOpen source C++ framework  reactor, pr...
Java Native Interface - JNIpublic class HelloWorld { private native void sayHello();    public static void main(String[] a...
http://www.boost.org “...one of the most highly regarded and expertly designed C++ library projects in the world.”    Herb...
Boost
Boost Test LibraryTest everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľ...
TestCaseusing namespace boost::unit_test_framework;/** * Test basic marshaller functionality */void testServerQuery(){    ...
Jamnáhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU over...
jam + TestCaseJamfile (Jamroot)  import testing ;  run tests/testServerQuery.cpp server ;Shell  $ bjam  ...patience...  .....
Valgrind          debugging a profiling               memcheckhelgrind - race condition, thread profiling
Modes debugger   Local application Attach to local processAttach to remote process     Post-mortem
Application crashed    Post-mortem analysisImage from memory: coredump
Quick analysis of coredump
Strace
Mutextracemutextrace ./mutex-tester-app param1 param2  lock #1, free -> thread 1  init #2  lock #2, free -> thread 1  unlo...
Maven pre C++web: http://maven.apache.org  mvn [parametre|ciele]súbor s definíciou projekt  pom.xmlplugin pre C++  native-...
Kontinuálna integráciarýchla kontrola po commiteJenkins CI – príklad:  http://ci.sinusgear.com
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/
Pythonsilný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++  http://www.python.org  http://www.py...
Twistedudalosťami riadený sieťový frameworkpodpora TCP, UDP, SSL/TLS, multicastUnix socketsveľké množstvo protokolov  HTTP...
ProjectGitHub  http://www.github.comGoogle Code  http://code.google.com/opensourceSourceForge  http://sourceforge.netFreeC...
Atomic Tanks as open source         Open source it. Somebody can continue in your work        http://atanks.sf.net
OhlohCompare open source projects   http://www.ohloh.net
se-radio.nethttp://www.se-radio.net
A je tu záverOtázky?
EOF       FI MUNI, Brno 2012          Juraj Michálekblog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear
Upcoming SlideShare
Loading in …5
×

Libraries and tools for C++

2,209 views

Published on

Slides from talk at FI MUNI 2012 - course C++ development. Libraries and continouous integration with Jenkins

  • Be the first to comment

  • Be the first to like this

Libraries and tools for C++

  1. 1. Libraries and tools for C++ FI MUNI 26.11. 2012 Juraj Michálekblog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear
  2. 2. Something about me ;-)
  3. 3. ContentNode.js V8, Node bindingsGui QT, FLTK, FLUID, wxWidgetsSpecial HW Android NDK, ArduinoPatterns ACETools
  4. 4. Clone examples Available at GitHub: https://github.com/georgik/fimuni-c-cpp-examplesgit clone git://github.com/georgik/fimuni-c-cpp-examples.git
  5. 5. http://nodejs.org/
  6. 6. Architecture of Node.js
  7. 7. V84x4 Ford V8 engine
  8. 8. V8Googles open source JavaScript engine http://code.google.com/p/v8/
  9. 9. V8 in context of Chrome
  10. 10. GYPhttp://code.google.com/p/gyp/
  11. 11. GYP example
  12. 12. libuv – event loopCall callbacks Sleep
  13. 13. Sample server in JS
  14. 14. Node.js wraps
  15. 15. KnižnicaClanLib game Simple Development Kithttp://www.clanlib.org
  16. 16. KnižnicaMesa http://mesa3d.sourceforge.net
  17. 17. Dino
  18. 18. GUIGraphic User Interface
  19. 19. Vhodné knižnice QT FLTK wxWidgets
  20. 20. QT Nokia:http://qt.nokia.com
  21. 21. QTprodukt firmy Trolltech, neskôr Nokialicencie: open source aj komrčnéknižnica vznikla v roku 1996podporuje C++ a Javu
  22. 22. PlatformyMS/WindowsUnix/X11 - Linux, Sun Solaris, HP-UX,Compaq Tru64 UNIX, IBM AIX, IRIX, Mac OSXEmbedded - Linux platforms with framebuffersupport.
  23. 23. QT Creator IDEnástroj na tvorbu GUIrozvrhnutú plochu ukladá do XML súboruz XML definície sa generuje kód programu
  24. 24. Kompiláciauloženie projektuvytvorenie Makefile z projektu qmake -o Makefile test.prokompilácia make
  25. 25. Linguistnástroj na preklad aplikáciiumožňuje oddeliť kód od textovprekladateľ a programátor pracujúsamostatne
  26. 26. Amélia
  27. 27. KDE
  28. 28. FLTKhttp://www.fltk.org
  29. 29. 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
  30. 30. PlatformyUnix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT
  31. 31. FLUIDFast Light User-Interface Designerjednoduchý designer na tvorbu GUI
  32. 32. wxWidgethttp://www.wxwidgets.org/
  33. 33. wxGlade
  34. 34. Android – Native Development Kithttp://developer.android.com/sdk/ndk/Pozor! App nemusí byť optimálnejšia než napísaná v Jave
  35. 35. NDKstiahnuť SDK a NDKexport PATH=$PATH:/cesta/sdk/tools:/ceta/ndkcd /cesta/ndk/samples/hello-jniandroid update project -p . -sndk-buildant debug
  36. 36. Adobe Alchemyzaujímavý experimentC/C++ kód skompilovaný pre FlashPlayer AVM2prenositeľnosť príklad: Doom http://labs.adobe.com
  37. 37. Arduinohttp://www.arduino.cc/playground/Interfacing/CPPWindows
  38. 38. ACEThe ADAPTIVE Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.htmlOpen source C++ framework reactor, proactor acceptor, connector
  39. 39. Java Native Interface - JNIpublic class HelloWorld { private native void sayHello(); public static void main(String[] args) { System.loadLibrary("library"); new HelloWorld().sayHello(); }}
  40. 40. http://www.boost.org “...one of the most highly regarded and expertly designed C++ library projects in the world.” Herb Sutter and Andrei Alexandrescu
  41. 41. Boost
  42. 42. Boost Test LibraryTest everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľný programbjam integruje spúšťanie testov
  43. 43. 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" );}
  44. 44. Jamnáhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU overheadbuild obrovských projektovškálovateľné
  45. 45. jam + TestCaseJamfile (Jamroot) import testing ; run tests/testServerQuery.cpp server ;Shell $ bjam ...patience... ...found 2 targets... ...updating 2 targets... *** test passed ***
  46. 46. Valgrind debugging a profiling memcheckhelgrind - race condition, thread profiling
  47. 47. Modes debugger Local application Attach to local processAttach to remote process Post-mortem
  48. 48. Application crashed Post-mortem analysisImage from memory: coredump
  49. 49. Quick analysis of coredump
  50. 50. Strace
  51. 51. 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
  52. 52. Maven pre C++web: http://maven.apache.org mvn [parametre|ciele]súbor s definíciou projekt pom.xmlplugin pre C++ native-maven-plugin
  53. 53. Kontinuálna integráciarýchla kontrola po commiteJenkins CI – príklad: http://ci.sinusgear.com
  54. 54. GIToproti SVN možnosť lokálných commitovSocial Coding http://www.github.com
  55. 55. Source Control & Project Management http://trac.edgewall.org http://trac-hacks.org/
  56. 56. GNU a WindowsMinimalist GNU For Windows http://www.mingw.orgCygwin http://www.cygwin.com http://cygwinports.dotsrc.org/
  57. 57. Pythonsilný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++ http://www.python.org http://www.py.cz
  58. 58. 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/
  59. 59. ProjectGitHub http://www.github.comGoogle Code http://code.google.com/opensourceSourceForge http://sourceforge.netFreeCode http://freecode.comCodePlex – MS Platforma http://codeplex.com
  60. 60. Atomic Tanks as open source Open source it. Somebody can continue in your work http://atanks.sf.net
  61. 61. OhlohCompare open source projects http://www.ohloh.net
  62. 62. se-radio.nethttp://www.se-radio.net
  63. 63. A je tu záverOtázky?
  64. 64. EOF FI MUNI, Brno 2012 Juraj Michálekblog: http://georgik.sinusgear.comtwitter: http://twitter.com/sinusgear

×