<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://proggen.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://proggen.org/feed.php">
        <title>tutorial.proggen.org</title>
        <description></description>
        <link>http://proggen.org/</link>
        <image rdf:resource="http://proggen.org/lib/images/favicon.ico" />
       <dc:date>2010-09-09T03:19:38+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:implementation&amp;rev=1283940709"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:linux&amp;rev=1283895983"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:mac&amp;rev=1283895787"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:project&amp;rev=1283893532"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=c:lib:string:strtok&amp;rev=1283800035"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:start&amp;rev=1283551121"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:why&amp;rev=1283547981"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=cpp:cppunit:planing&amp;rev=1283545776"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=todo&amp;rev=1283525193"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=theory:start&amp;rev=1283525151"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=c:lib:stdlib:atoi&amp;rev=1283461665"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=mac:start&amp;rev=1283288498"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=mac:tools:port&amp;rev=1283288480"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=gui:start&amp;rev=1283199955"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=c:lib:sys:stat&amp;rev=1283188625"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=gui:gtk:advanced:start&amp;rev=1282933028"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=gui:gtk:start&amp;rev=1282932403"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=bash:sudo&amp;rev=1282852232"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=start:bashcmd&amp;rev=1282849636"/>
                <rdf:li rdf:resource="http://proggen.org/doku.php?id=c:lib:errno:errno&amp;rev=1282638069"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://proggen.org/lib/images/favicon.ico">
        <title>tutorial.proggen.org</title>
        <link>http://proggen.org/</link>
        <url>http://proggen.org/lib/images/favicon.ico</url>
    </image>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:implementation&amp;rev=1283940709">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-08T12:11:49+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:implementation</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:implementation&amp;rev=1283940709</link>
        <description>Ein Unit-Test besteht normalerweise nicht aus einer einzelnen Überprüfung, sondern aus einer Vielzahl von Szenarien, die abgetestet werden. Hierfür wird üblicherweise eine Test-Klasse geschrieben, die eine Reihe von Funktionen bietet.

Grundfunktionalität

Header


Zum Einstieg testen wir Grundfunktionalität ab. Hierfür schreiben wir zunächst die Testklasse, die wir von der Klasse CppUnit::TextFixture ableiten. Ein Fixture ist ein „Stammkunde“, also etwas, was in diesem Zusammenhang immer wieder…</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:linux&amp;rev=1283895983">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-07T23:46:23+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:linux - Installation aus den Quellen hinzugefügt</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:linux&amp;rev=1283895983</link>
        <description>CPPUnit ist üblicherweise in der Paketverwaltung vorhanden.

Installation unter Debian

aptitude install libcppunit-dev

Installation unter Ubuntu

sudo aptitude install libcppunit-dev

Installation aus den Quellen


Grundsätzlich lässt sich CPPUnit natürlich auch aus den Quellen installieren. Dies funktioniert ebenso, wie beim beim Macintosh und ist genauso durchzuführen.
Sollte Deine Distribution den Befehl sudo nicht von Haus unterstützen, kannst Du bei der Installation statt sudo make instal…</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:mac&amp;rev=1283895787">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-07T23:43:07+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:mac</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:mac&amp;rev=1283895787</link>
        <description>Installation


Zunächst muss das erforderliche Archiv aus dem Internet geladen werden. Derzeit ist die Version 1.12.1 aktuell. Der Download findet sich auf dieser Seite: &lt;http://sourceforge.net/projects/cppunit/files/&gt;.

Das TAR-Archiv speichern wir in einem beliebigen Verzeichnis und wechseln mit einem Terminal ins Verzeichnis und entpacken das Archiv:</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:project&amp;rev=1283893532">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-07T23:05:32+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:project</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:project&amp;rev=1283893532</link>
        <description>Wie in der Einleitung beschrieben, wollen wir einen kleinen Stack implementieren und testen.

Stack-Header

Hier nochmals der Header:



class Stack
{
  unsigned int * Buffer;
  unsigned int   Size;
  unsigned int   Position; 
 
  public:
    Stack( unsigned int size );
    ~Stack();
 
    bool Push( unsigned int   value );
    bool Pop ( unsigned int &amp; value );
 
    inline unsigned int * GetBuffer() { return Buffer; }
    inline unsigned int   GetSize()   { return Size; }
    inline unsigned i…</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=c:lib:string:strtok&amp;rev=1283800035">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T21:07:15+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>c:lib:string:strtok</title>
        <link>http://proggen.org/doku.php?id=c:lib:string:strtok&amp;rev=1283800035</link>
        <description>strtok ist definiert in der string, die in C über string.h, bzw. in C++ über cstring eingebunden wird.

Funktion

strtok() wird ein veränderbarer String übergeben und eine Zeichenkette von Trennzeichen (Delimiters). Die Aufgabe von strtok ist nun, alle Trennzeichen durch Null-Bytes zu ersetzen, so dass sie eigenständiger als String verwendbar sind, da jeder Teilstring am Ende ein Nullbyte trägt.
Beim ersten Aufruf von strtok() wird der Funktion der zu zerlegende String übergeben. strtok() merkt …</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:start&amp;rev=1283551121">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-03T23:58:41+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:start</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:start&amp;rev=1283551121</link>
        <description>Einführung

	*  Warum CPPUnit verwenden?

	*  Installation
		*  Macintosh
		*  Linux
		*  Windows   


Ein Beispielprojekt testen

	*  Das Beispielprojekt
	*  Testplanung
	*  Implementation: Grundlagentests
	*  Ausnahmen testen: Schwerwiegende Fehler testen</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:why&amp;rev=1283547981">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-03T23:06:21+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:why</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:why&amp;rev=1283547981</link>
        <description>Wenn man ein C++-Programm geschrieben hat und es kompiliert kann man es einfach ausprobieren, um es zu testen.
Der Nachteil solcher manueller Tests ist, dass sie prinzipiel nach jedem Compilerlauf neu ausgeführt werden müssten.

Sobald ein Programm mehrere Funktionen anbietet, steigt der Testaufwand entsprechend. Dies ist durch einen Benutzer schnell nicht mehr zu leisten. Also müssen Tests automatisiert werden.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=cpp:cppunit:planing&amp;rev=1283545776">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-03T22:29:36+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>cpp:cppunit:planing - angelegt</title>
        <link>http://proggen.org/doku.php?id=cpp:cppunit:planing&amp;rev=1283545776</link>
        <description>Bekannte Fehler testen


Im [fehlerhaften Projekt] wissen wir von einem Fehler. Das bedeutet, dass wir bereits einen Soll-Zustand kennen, den wir mit der bisherigen Implementierung nicht erreichen.
Schauen wir uns das Hauptprogramm an:

int main( void )
{
  Stack stack(10);
 
  stack.Push( 1 );
  stack.Push( 2 );
  stack.Push( 3 );
 
  for( unsigned int value; stack.Pop( value ); )
    printf( &quot;Wert: %d\n&quot;, value );
 
  return 0;
}</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=todo&amp;rev=1283525193">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-03T16:46:33+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>todo</title>
        <link>http://proggen.org/doku.php?id=todo&amp;rev=1283525193</link>
        <description>Diese Seite verwaltet die Dinge, die im Wiki aktuell zu tun sind und sofern möglich auch die Person, die sich dazu bereit erklärt.
Unterteilt nach Autor-&gt;Aufgabe.
Diese Seite gilt für alle Seiten im proggen.org-Wiki. Bei Links müssen also die vollen Namensräume angegeben werden.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=theory:start&amp;rev=1283525151">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-03T16:45:51+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>theory:start</title>
        <link>http://proggen.org/doku.php?id=theory:start&amp;rev=1283525151</link>
        <description>Zahlensysteme

	*  Binär
	*  Oktal
	*  Hexadezimal
	*  Beliebiges Zahlensystem ins Dezimalsystem konvertieren
	*  Dezimalsystem in ein beliebiges Zahlensystem konvertieren
	*  Grundrechnungsarten

Mathematik

	*  Trigonometrie (Dreiecke und Winkel)
	*  Zahlentheorie
	*  Softwaregetriebene Integer
	*  Vektorrechnung
	*  Wahrscheinlichkeitsreichnung</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=c:lib:stdlib:atoi&amp;rev=1283461665">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-02T23:07:45+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>c:lib:stdlib:atoi</title>
        <link>http://proggen.org/doku.php?id=c:lib:stdlib:atoi&amp;rev=1283461665</link>
        <description>atoi ist definiert in der stdlib, die in C über stdlib.h, bzw. in C++ über cstdlib eingebunden wird.

Funktion


atoi konvertiert einen ASCII-String in eine (vorzeichenbehaftete) Integerzahl (ASCII to integer - atoi).

Zunächst werden sämtliche Whitespaces (Leerzeichen, Tabs) übersprungen, bis die ersten Ziffern gefunden werden. Es darf ein + bzw. - der Zahl vorangestellt sein.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=mac:start&amp;rev=1283288498">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-31T23:01:38+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>mac:start</title>
        <link>http://proggen.org/doku.php?id=mac:start&amp;rev=1283288498</link>
        <description>Wichtige Tools

	*  MacPorts</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=mac:tools:port&amp;rev=1283288480">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-31T23:01:20+02:00</dc:date>
        <dc:creator>Sascha Atrops</dc:creator>
        <title>mac:tools:port - angelegt</title>
        <link>http://proggen.org/doku.php?id=mac:tools:port&amp;rev=1283288480</link>
        <description>MacPorts erlaubt auf dem Macintosh Zugriff auf bekannte Linux-Programme, wie zum Beispiel den Midnight-Commander, den Multiuser Editor Gobby und viele tausend weitere Softwareprodukte. Als Paketverwaltung ist es vergleichbar mit aptitude. Über Installationsskripte werden die Quellcodes des gewünschten Programms, wie alle Abhängigkeiten aus dem Internet geladen und lokal kompiliert und installiert.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=gui:start&amp;rev=1283199955">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-30T22:25:55+02:00</dc:date>
        <dc:creator>Sven Thieme</dc:creator>
        <title>gui:start - wxWidgets Logo hinzu gefügt</title>
        <link>http://proggen.org/doku.php?id=gui:start&amp;rev=1283199955</link>
        <description>GUI ist die Abkürzung für (engl.) „Graphical User Interface“ und bedeutet übersetzt „grafische Benutzeroberfläche“. Sie dient als Schnittstelle zwischen Benutzer und Programm und hat in vielen Bereichen die Textkonsolen oder Terminals abgelöst. Konsolen sind jedoch immer noch mehr oder weniger in aktuellen Betriebssystemen enthalten (Terminal bei Linux/Unix, cmd.exe unter Windows).

Dabei werden grafische Oberflächen auf Grund ihrer einfachen Bedienbarkeit der Kommandozeile meist vorgezogen. Für…</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=c:lib:sys:stat&amp;rev=1283188625">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-30T19:17:05+02:00</dc:date>
        <dc:creator>Max Hofmann</dc:creator>
        <title>c:lib:sys:stat - angelegt</title>
        <link>http://proggen.org/doku.php?id=c:lib:sys:stat&amp;rev=1283188625</link>
        <description>sys/stat.h liefert eine Struktur und drei Funktionen, welche der Ermittlung von Dateiinformationen dienen. Dabei ist es egal, ob es sich um ein Verzeichnis, eine „echte“ Datei oder einen symbolischen Link handelt.

Verfügbarkeit

POSIX


sys/stat.h gehört zum POSIX-Standard. Somit ist sys/stat.h auf POSIX-konformen Betriebssystem verfügbar, womit es mit den meisten unixartigen Systemen keine Probleme machen müsste.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=gui:gtk:advanced:start&amp;rev=1282933028">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-27T20:17:08+02:00</dc:date>
        <dc:creator>Max Hofmann</dc:creator>
        <title>gui:gtk:advanced:start - angelegt</title>
        <link>http://proggen.org/doku.php?id=gui:gtk:advanced:start&amp;rev=1282933028</link>
        <description>Die bis jetzt in diesem Tutorial erwähnten Fähigkeiten GTK`s zeigen die meist verwendenten Widgets, doch bietet das Toolkit mehr!



Darum geht es in diesem (letzten) Kapitel des Tutorials. Die einzelnen Seiten beschreiben weiterführunde Themen im Zusammhang mit GTK. Sie geben allerdings nur einen groben Überblick und sollten als voneinander unabhängige Artikel verstanden werden.



Also, einfach mal hineinschauen!=)
FIXME: Links, Index...




PS.: Natürlich können Fragen weiterhin im proggen.or…</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=gui:gtk:start&amp;rev=1282932403">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-27T20:06:43+02:00</dc:date>
        <dc:creator>Max Hofmann</dc:creator>
        <title>gui:gtk:start</title>
        <link>http://proggen.org/doku.php?id=gui:gtk:start&amp;rev=1282932403</link>
        <description>GTK+ ist eine Komponentenbibliothek zum Erstellen von grafischen Benutzeroberflächen. Viele Desktop-Umgebungen benutzen GTK+ als Grundlage, wie GNOME oder Xfce. GTK+ zählt zu den beliebtesten Toolkits für das X-Window System.

Über GTK+

	*  Lizenz: LGPL
	*  Programmiersprachen: C, Bindings für C++, Python, Ruby, C# u.a.
	*  Plattformen: Linux/Unix, Windows und MacOS
	*  Aktuelle Version (stable): 2.20 (1. April 2010)</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=bash:sudo&amp;rev=1282852232">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-26T21:50:32+02:00</dc:date>
        <dc:creator>Sven Thieme</dc:creator>
        <title>bash:sudo</title>
        <link>http://proggen.org/doku.php?id=bash:sudo&amp;rev=1282852232</link>
        <description>Verwendungszweck

sudo führt ein Kommando mit Root-Rechten aus.

Verwendung


Mit sudo können Benutzer administrative Aufgaben übernehmen ohne das Root-Password zu kennen. Voraussetzung ist der Eintrag des Benutzers in der Datei /etc/sudoers mit den entsprechenden Rechten.</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=start:bashcmd&amp;rev=1282849636">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-26T21:07:16+02:00</dc:date>
        <dc:creator>Sven Thieme</dc:creator>
        <title>start:bashcmd - Erweiterung der Befehlsliste</title>
        <link>http://proggen.org/doku.php?id=start:bashcmd&amp;rev=1282849636</link>
        <description>Dateiverwaltung

	*  cd [Ziel] = Change Directory (z.B. cd ..)
	*  chmod [User, Gruppe, Andere] = Zugriffsrechte ändern (z.B. chmod 777), wobei read = 4, write = 2 und ausführbar = 1
	*  cp [Datei Ziel] = Copy (z.B. cp profile Documents)
	*  ls = Ordnerinhalt auflisten
	*  mkdir = Make Directory
	*  mv = verschieben, move
	*  rm = Datei löschen
	*  rmdir = das leere Verzeichnis löschen
	*  ln = Link, Verknüpfung
	*  touch = erzeugt die leere Datei</description>
    </item>
    <item rdf:about="http://proggen.org/doku.php?id=c:lib:errno:errno&amp;rev=1282638069">
        <dc:format>text/html</dc:format>
        <dc:date>2010-08-24T10:21:09+02:00</dc:date>
        <dc:creator>Alexander Korsunsky</dc:creator>
        <title>c:lib:errno:errno</title>
        <link>http://proggen.org/doku.php?id=c:lib:errno:errno&amp;rev=1282638069</link>
        <description>errno ist definiert in der errno, die in C über errno.h, bzw. in C++ über cerrno eingebunden wird.

Makro

errno ist in der Regel als Makro implementiert und gibt den Fehlercode der zuletzt gerufenen Standard-Library Funktion wieder. Grundsätlich kann man den Fehlercode auch in eigenen Funktionen setzen, üblicherweise haben andere Libraries jedoch eigene Methoden zur Fehlerbehandlung.</description>
    </item>
</rdf:RDF>
