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.
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,264 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

×