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álek
blog: http://geor...
Something about me ;-)
Content

Node.js
  V8, Node bindings
Gui
  QT, FLTK, FLUID, wxWidgets
Special HW
  Android NDK, Arduino
Patterns ACE
Tools
Clone examples


                 Available at GitHub:
  https://github.com/georgik/fimuni-c-cpp-examples



git clone git...
http://nodejs.org/
Architecture of Node.js
V8




4x4 Ford V8 engine
V8




Google's open source JavaScript engine
     http://code.google.com/p/v8/
V8 in context of Chrome
GYP




http://code.google.com/p/gyp/
GYP example
libuv – event loop




Call callbacks   Sleep
Sample server in JS
Node.js wraps
Knižnica




ClanLib game Simple Development Kit
http://www.clanlib.org
Knižnica

Mesa




  http://mesa3d.sourceforge.net
Dino
GUI




Graphic User Interface
Vhodné knižnice



      QT

     FLTK

   wxWidgets
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
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
wxWidget




http://www.wxwidgets.org/
wxGlade
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://...
Arduino




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


          debugging a profiling

               memcheck

helgrind - race condition, thread profiling
Modes debugger


   Local application

 Attach to local process

Attach to remote process

     Post-mortem
Application crashed




    Post-mortem analysis

Image from memory: coredump
Quick analysis of coredump
Strace
Mutextrace

mutextrace ./mutex-tester-app param1 param2
  lock #1, free -> thread 1
  init #2
  lock #2, free -> thread 1
...
Maven pre C++

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

rýchla kontrola po commite
Jenkins CI – príklad:
  http://ci.sinusgear.com
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...
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
...
Project
GitHub
  http://www.github.com
Google Code
  http://code.google.com/opensource
SourceForge
  http://sourceforge.ne...
Atomic Tanks as open source




         Open source it.
 Somebody can continue in your work
        http://atanks.sf.net
Ohloh


Compare open source projects
   http://www.ohloh.net
se-radio.net




http://www.se-radio.net
A je tu záver




Otázky?
EOF



       FI MUNI, Brno 2012
          Juraj Michálek


blog: http://georgik.sinusgear.com
twitter: http://twitter.com...
Upcoming SlideShare
Loading in …5
×

of

Libraries and tools for C++ Slide 1 Libraries and tools for C++ Slide 2 Libraries and tools for C++ Slide 3 Libraries and tools for C++ Slide 4 Libraries and tools for C++ Slide 5 Libraries and tools for C++ Slide 6 Libraries and tools for C++ Slide 7 Libraries and tools for C++ Slide 8 Libraries and tools for C++ Slide 9 Libraries and tools for C++ Slide 10 Libraries and tools for C++ Slide 11 Libraries and tools for C++ Slide 12 Libraries and tools for C++ Slide 13 Libraries and tools for C++ Slide 14 Libraries and tools for C++ Slide 15 Libraries and tools for C++ Slide 16 Libraries and tools for C++ Slide 17 Libraries and tools for C++ Slide 18 Libraries and tools for C++ Slide 19 Libraries and tools for C++ Slide 20 Libraries and tools for C++ Slide 21 Libraries and tools for C++ Slide 22 Libraries and tools for C++ Slide 23 Libraries and tools for C++ Slide 24 Libraries and tools for C++ Slide 25 Libraries and tools for C++ Slide 26 Libraries and tools for C++ Slide 27 Libraries and tools for C++ Slide 28 Libraries and tools for C++ Slide 29 Libraries and tools for C++ Slide 30 Libraries and tools for C++ Slide 31 Libraries and tools for C++ Slide 32 Libraries and tools for C++ Slide 33 Libraries and tools for C++ Slide 34 Libraries and tools for C++ Slide 35 Libraries and tools for C++ Slide 36 Libraries and tools for C++ Slide 37 Libraries and tools for C++ Slide 38 Libraries and tools for C++ Slide 39 Libraries and tools for C++ Slide 40 Libraries and tools for C++ Slide 41 Libraries and tools for C++ Slide 42 Libraries and tools for C++ Slide 43 Libraries and tools for C++ Slide 44 Libraries and tools for C++ Slide 45 Libraries and tools for C++ Slide 46 Libraries and tools for C++ Slide 47 Libraries and tools for C++ Slide 48 Libraries and tools for C++ Slide 49 Libraries and tools for C++ Slide 50 Libraries and tools for C++ Slide 51 Libraries and tools for C++ Slide 52 Libraries and tools for C++ Slide 53 Libraries and tools for C++ Slide 54 Libraries and tools for C++ Slide 55 Libraries and tools for C++ Slide 56 Libraries and tools for C++ Slide 57 Libraries and tools for C++ Slide 58 Libraries and tools for C++ Slide 59 Libraries and tools for C++ Slide 60 Libraries and tools for C++ Slide 61 Libraries and tools for C++ Slide 62 Libraries and tools for C++ Slide 63 Libraries and tools for C++ Slide 64
Upcoming SlideShare
There is more to C
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

Libraries and tools for C++

Download to read offline

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

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

Libraries and tools for C++

  1. 1. Libraries and tools for C++ FI MUNI 26.11. 2012 Juraj Michálek blog: http://georgik.sinusgear.com twitter: http://twitter.com/sinusgear
  2. 2. Something about me ;-)
  3. 3. Content Node.js V8, Node bindings Gui QT, FLTK, FLUID, wxWidgets Special HW Android NDK, Arduino Patterns ACE Tools
  4. 4. Clone examples Available at GitHub: https://github.com/georgik/fimuni-c-cpp-examples git clone git://github.com/georgik/fimuni-c-cpp-examples.git
  5. 5. http://nodejs.org/
  6. 6. Architecture of Node.js
  7. 7. V8 4x4 Ford V8 engine
  8. 8. V8 Google's open source JavaScript engine http://code.google.com/p/v8/
  9. 9. V8 in context of Chrome
  10. 10. GYP http://code.google.com/p/gyp/
  11. 11. GYP example
  12. 12. libuv – event loop Call callbacks Sleep
  13. 13. Sample server in JS
  14. 14. Node.js wraps
  15. 15. Knižnica ClanLib game Simple Development Kit http://www.clanlib.org
  16. 16. Knižnica Mesa http://mesa3d.sourceforge.net
  17. 17. Dino
  18. 18. GUI Graphic User Interface
  19. 19. Vhodné knižnice QT FLTK wxWidgets
  20. 20. QT Nokia: http://qt.nokia.com
  21. 21. QT produkt firmy Trolltech, neskôr Nokia licencie: open source aj komrčné knižnica vznikla v roku 1996 podporuje C++ a Javu
  22. 22. 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.
  23. 23. QT Creator IDE nástroj na tvorbu GUI rozvrhnutú plochu ukladá do XML súboru z XML definície sa generuje kód programu
  24. 24. Kompilácia uloženie projektu vytvorenie Makefile z projektu qmake -o Makefile test.pro kompilácia make
  25. 25. Linguist nástroj na preklad aplikácii umožňuje oddeliť kód od textov prekladateľ a programátor pracujú samostatne
  26. 26. Amélia
  27. 27. KDE
  28. 28. FLTK http://www.fltk.org
  29. 29. 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
  30. 30. Platformy Unix, Linux Microsoft Windows MacOS s podporou OpenGL a GLUT
  31. 31. FLUID Fast Light User-Interface Designer jednoduchý designer na tvorbu GUI
  32. 32. wxWidget http://www.wxwidgets.org/
  33. 33. wxGlade
  34. 34. Android – Native Development Kit http://developer.android.com/sdk/ndk/ Pozor! App nemusí byť optimálnejšia než napísaná v Jave
  35. 35. 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
  36. 36. Adobe Alchemy zaujímavý experiment C/C++ kód skompilovaný pre FlashPlayer AVM2 prenositeľnosť príklad: Doom http://labs.adobe.com
  37. 37. Arduino http://www.arduino.cc/playground/Interfacing/CPPWindows
  38. 38. ACE The ADAPTIVE Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.html Open source C++ framework reactor, proactor acceptor, connector
  39. 39. Java Native Interface - JNI public 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 Library Test everything that could possibly break jednoduchá tvorba tescasov TestSuite – TestCase test je spustiteľný program bjam integruje spúšťanie testov
  43. 43. 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" ); }
  44. 44. 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é
  45. 45. jam + TestCase Jamfile (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 memcheck helgrind - race condition, thread profiling
  47. 47. Modes debugger Local application Attach to local process Attach to remote process Post-mortem
  48. 48. Application crashed Post-mortem analysis Image from memory: coredump
  49. 49. Quick analysis of coredump
  50. 50. Strace
  51. 51. 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
  52. 52. 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
  53. 53. Kontinuálna integrácia rýchla kontrola po commite Jenkins CI – príklad: http://ci.sinusgear.com
  54. 54. GIT oproti SVN možnosť lokálných commitov Social Coding http://www.github.com
  55. 55. Source Control & Project Management http://trac.edgewall.org http://trac-hacks.org/
  56. 56. GNU a Windows Minimalist GNU For Windows http://www.mingw.org Cygwin http://www.cygwin.com http://cygwinports.dotsrc.org/
  57. 57. Python silný objektovo orientovaný jazyk platformovo nezávislý integrovateľný s C a C++ http://www.python.org http://www.py.cz
  58. 58. 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/
  59. 59. Project GitHub http://www.github.com Google Code http://code.google.com/opensource SourceForge http://sourceforge.net FreeCode http://freecode.com CodePlex – 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. Ohloh Compare open source projects http://www.ohloh.net
  62. 62. se-radio.net http://www.se-radio.net
  63. 63. A je tu záver Otázky?
  64. 64. EOF FI MUNI, Brno 2012 Juraj Michálek blog: http://georgik.sinusgear.com twitter: http://twitter.com/sinusgear

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

Views

Total views

2,406

On Slideshare

0

From embeds

0

Number of embeds

1,211

Actions

Downloads

18

Shares

0

Comments

0

Likes

0

×