Wilkening-Online Logo

C++ User-Treffen in Aachen am 12.5.2016



Von Detlef Wilkening

Das diesmalige C++ User-Treffen in Aachen fand bei der Inform statt, und trotz schönen Wetters hatten sich 33 C++ Interessierte eingefunden.

C++ User-Treffen Aachen 12.05.2016 - Bild 1
Foto 01: C++ User-Treffen Aachen 12.5.2016

Danke an Inform, die uns mit Essen und Trinken versorgt und verwöhnt haben. Gerade die Getränke waren bei der Wärme hochwillkommen - und da einige direkt von der Arbeit kamen zum Teil auch das Essen - nochmal "Danke".

C++ User-Treffen Aachen 12.05.2016 - Bild 2
Foto 02: C++ User-Treffen Aachen 12.5.2016

C++ User-Treffen Aachen 12.05.2016 - Bild 3
Foto 03: C++ User-Treffen Aachen 12.5.2016

Der Abend began - wie eigentlich immer - mit einer kurzen Begrüßung und Einführung von mir. Wie immer ging es um die Themen des Abends, die aktuelle Vorschau auf das nächste Treffen und die Frage nach Beteiligung in Form von Vorträgen und anderen Events für die nächsten Treffen.

C++ User-Treffen Aachen 12.05.2016 - Bild 4
Foto 04: Detlef Wilkening bei der Begrüßung

Den eigentlichen Abend eröffnete dann Daniel Frey mit einem kleinen Vortrag über "Probe-Pointer". Dieser Vortrag hatte sich aus den Diskussionen nach dem Vortrag über Hazard-Pointer von Max Neunhöffer beim C++ User-Treffen in Aachen am 14.01.2016 ergeben. Daniel und Max hatten an dem Abend noch lange diskutiert und sich auch später noch per Mail ausgetauscht.

C++ User-Treffen Aachen 12.05.2016 - Bild 5
Foto 06: Daniel Frey mit "Probe-Pointern"

Daniel stellte diesmal seine "Probe-Pointer" vor, die auf thread-lokalen Shared-Pointer basieren. Großer Vorteil der Probe-Pointer ist, dass sie im Normalfall nur "Lesen" und nicht "Schreiben" - dadurch gibt es keine Cache-Mismatches und sie können sehr schnell sein.

C++ User-Treffen Aachen 12.05.2016 - Bild 6
Foto 06: "Probe-Pointer"

Wenn das Problem paßt, dann sind Probe-Pointer einiges scheller als Hazard-Pointer. Aber Achtung - dies betrifft natürlich nur den Zugriff über den Zeiger - alle weiteren Operationen sind hiervon natürlich nicht betroffen. Den Vortrag findet man hier als PDF.

Den zweiten Vortrag bestritt dann Georg Hellack mit einem Vortrag über das Tool "PlantUML". Mit PlantUML kann man UML Diagramme erstellen - im Gegensatz zu anderen Tools aber nicht grafisch, sondern textuell mit einer UML-Beschreibungssprache.

C++ User-Treffen Aachen 12.05.2016 - Bild 7
Foto 07: C++ User-Treffen Aachen 12.5.2016

PlantUML gibt es z.B. als Template für Word, wird aber auch direkt von "doxygen" und vielen anderen Programmen unterstützt. Mit PlantUML lassen sich einfach UML Diagramme in Dokumente einbetten oder können direkt als Teil der C++ API-Dokumentation genutzt werden.

C++ User-Treffen Aachen 12.05.2016 - Bild 8
Foto 08: C++ User-Treffen Aachen 12.5.2016

Der Vortrag von Georg machte viel Lust auf mehr. Man merkte an den vielen interessierten Fragen der Teilnehmer das Dokumentation und UML-Diagramme ein Thema sind, was viele betrifft und wo es noch keine wirklich überzeugende Lösung gibt. PlantUML ist sicher für viele Problemfälle eine interessante und hilfreiche Lösung. Den Vortrag findet man hier als PDF.

Den dritten kleinen Vortrag übernahm dann Werner Clemens mit "Living in a box - Teil 1". Wir hatten uns natürlich alle im Vorfeld gefragt, was "Living in a box" wohl bedeutet und was das "Leben in einem Kasten" mit C++ zu tun hat. Werner stellte unsere Neugierde nicht lange auf die Folter, sondern zeigte direkt was es mit dem Leben und den Boxen auf sich hat.

Man kann 2- und 3-dimensionale Strukturen (Landkarten, Skulpturen, Polygone, Fragmente,...) in Boxen einschließen. Der Trick dabei ist, nicht eine große Box für das Gesamt-Element zu nutzen, sondern schon die Teil-Elemente in kleinere Boxen einzuschließen, und diese dann wie einen Baum aufzubauen. Damit lassen sich z.B. Maus-Klicks innerhalb einer Landkarte einfach und sehr schnell lokalisieren.

C++ User-Treffen Aachen 12.05.2016 - Bild 9
Foto 09: Werner Clemens mit "living in a box"

Werner zeigte einfachen C++ Template-Code, der eine allgemeine Box-Klasse darstellt, die sich 2- als auch 3-dimensional mit verschiedensten Typen nutzen und mit einfachen Hilfs-Funktionen anpassen läßt. So lassen sich sogar Hasen sehr schnell zum Leben in einer Box verdammen...

C++ User-Treffen Aachen 12.05.2016 - Bild 10
Foto 10: Werner Clemens mit "living in a box"

Ein Schwerpunkt seines ersten Vortrags über "Leben in einer Box" waren Performance-Betrachtungen verschiedener Techniken und Algorithmen für die Min-Max Berechnungen für die Boxen. Werner hatte verdammt viele Variationen umgesetzt, ausprobiert und ausgemessen - und es gab einige Überraschungen. Die stellte er in Ruhe vor, und bei jeder vorgestellten Variante gab es Diskussionen mit den anderen Teilnehmern. Manche Ergebnisse waren mehr als überraschend, andere provozierten Nachfragen, andere ließen sich ganz gut erklären. Unterm Strich wäre allein dieses kleine Unter-Thema diesen Vortrag wert gewesen.

C++ User-Treffen Aachen 12.05.2016 - Bild 11
Foto 11: Werner Clemens mit "living in a box"

Nach einer 3/4 Stunde würgten wir Werner dann ab - der Vortrag war eigentlich nur für 20 Minuten vorgesehen gewesen. Aber er hatte soviele interessante Details, und auch die vielen Diskussionen kosteten ihren Zeit-Tribut. Zusammen mit den noch offenen Themen der ersten Teils und den vielen Tipps und Hinweisen aus dem Publikum war klar, dass auch der zweite Teil die 20 Minuten mehr als sprengen würde - Werner wird ihn also im September als Haupt-Vortrag halten. Wir freuen uns darauf, denn "Living in a box" war mehr als spannend.

Bevor Max dann mit dem Haupt-Vortrag beginnen konnte, machten wir eine kleine Pause mit den restlichen Getränken und dem restlichen Essen - Georg kam kaum zum Essen und Trinken sondern mußte PlantUML mehrfach "live" vorführen. Außerdem nutzte ich die Gelegenheit und suchte Vortragende für die nächsten Treffen. Dies war auch wieder mit Erfolg gekrönt - die nächsten C++ User-Treffen in Aachen sind gesichert.

C++ User-Treffen Aachen 12.05.2016 - Bild 12
Foto 12: C++ User-Treffen Aachen 12.5.2016

Dann endlich konnte Max loslegen mit "Scale out: Docker-powered Continuous Integration (mit GitLab CI)". Zuerst stellte Max Docker vor. Viele Anwesende hatten zwar schon von Docker gehört, aber noch nicht damit gearbeitet - andere noch nicht mal davon gehört - und eine ganze Menge setzten Docker schon in ihrer täglichen Arbeit ein. Diese bunte Mischung sorgte wieder mal für viele Diskussionen. Jede Folie von Max sorgte für detailierte Nachfragen, und viele Anwesende unterstützen Max beim Beantworten der vielen Fragen.

C++ User-Treffen Aachen 12.05.2016 - Bild 13
Foto 13: Maximilian Florkowski mit "Scale Out"

Nachdem dann also Docker eingeführt war, stelle Max das eigentliche Anwendungs-Szenario vor. Er hatte ein kleines C++ Projekt, dass er auf sehr vielen unterschiedlichen Linux-Distrubutionen compilieren und testen wollte. Nun möchte nätürlich niemand nach jedem Commit manuell den Code auf viele Plattformen verteilen und dort dann die unterschiedlichsten Build-Jobs anstoßen müssen. Solche Aufgaben müssen automatisiert ablaufen. Max nutzte hierfür GibLab. GitLab kann all dies automatisch ablaufen lassen - es gibt für sehr viele Plattformen entsprechende Runner. Und die Konfiguration von GitLab besteht aus einfachen Yml-Dateien.

C++ User-Treffen Aachen 12.05.2016 - Bild 14
Foto 14: Maximilian Florkowski mit "Scale Out"

Danach wandte sich Max seinem dritten Thema zu: Scale Out. Wer kennt das nicht - zeitweise werden gar keine Build-Rechner gebraucht, und dann wieder Hunderte. In typischen Firmen findet man daher eine kleine Serverfarm an Build-Rechnern. Aber finanziell sinnvoll ist das oft nicht - meist idlen sie vor sich hin, und in Stoßzeiten sind es trotzdem immer noch zu wenige. Was tun? Max verlegte das Bauen kurzerhand in Docker-Container in die Cloud. Wir konnten "live" beobachten, wie in der Cloud immer mehr virtuelle Maschinen anliefen, dort dann die entsprechenden Docker-Container entstanden, und die Builds parallel durchgeführt wurden. Und alles automatisch, konfiguriert mit wenigen einfachen Yml-Dateien. Den Vortrag findet man hier als PDF.

Trotz später Stunde waren alle Anwesenden bis zum Schluß mit viel Aufmerksamkeit dabei, und auch Max Vortrag wurde von vielen Anmerkungen und Diskussionen begleitet.

C++ User-Treffen Aachen 12.05.2016 - Bild 15
Foto 15: C++ User-Treffen Aachen 12.5.2016

Während ein Teil der Anwesenden direkt nach dem letzten Vortrag aufbrachen - es war ja mittlerweile auch schon nach 22:30 - blieb ein harter Kern zurück, räumte auf und diskutierte noch länger über die Vorträge und andere interessante C++ Themen. Wie so oft war es wieder ein gelungener Abend gewesen.



Den nächsten Termin, weitere Berichte und andere Informationen zu den C++ User-Treffen in Aachen finden sich auf meiner "C++ User-Treffen in Aachen" Seite.


C++ User-Treffen: