WordPress immer zu aktualisieren ist irgendwie ätzend. Ich kann voll und ganz verstehen warum viele Leute ihre (nicht-privaten) Seiten nie aktualisieren. Diese Seite hier ist keine große Installation. Eine Seite, etwa ein halbes Duzend Plugins, ein Theme, fertig. Und trotzdem, heute habe ich mir den Aufwand gegönnt alle Daten und die Datenbank zu sichern und alles zu aktualisieren. Zwei Plugins haben nach dem Update nicht richtig funktioniert. Es hat mich geschlagene zwei Stunden gekostet bis wieder alles lief. Die großen Fehler waren aber nicht bei den Plugins selbst, sondern in der Art und Weise wie ich sie benutzt hatte. Sprich, es war ganz allein mein Fehler. Trotzdem, ätzend.

Sehr geehrte Damen und Herren von

Deutsche Lufthansa AG
Germanwings
Vereinigung Cockpit e.V.

ich muss nicht sehr häufig fliegen. In der letzten Zeit war jedoch ausnahmslos jeder einzelne meiner Flüge in der einen oder anderen Art durch einen Streik gefährdet oder betroffen. Daher hier mein ernst gemeinter Ratschlag:

Kriegen Sie endlich ihren Scheiß in den Griff! Diese Kindergartenstreitereien sind ja peinlich. Und schieben Sie nicht die Schuld irgendwem zu. Sie alle sind schuld. Mitleid hat keiner von Ihnen verdient. Also, reißen Sie sich endlich zusammen.

Mit freundlichen Grüßen
S. Grottel

 

Vor ein paar Wochen hatte ich über meine Erfahrung mit VirtualBox und hardwarebeschleunigtem OpenGL unter einem Gast Ubuntu geschrieben. Das hier ist eine Richtigstellung.

Das Downgrade der GuestAdditions hat zur Folge, dass der Treiber der virtualisierten Graphikkarte kein hardware-beschleunigtes OpenGL mehr nutzt, sondern nur noch den Software-Rasterisierer. Das ist also schlicht und ergreifend gar keine Lösung.

Mit den aktuellen GuestAdditions funktioniert OpenGL auch so irgendwie. Allerdings nicht besonders gut. Offensichtlich muss man nur etwas im Code sich in „Grauzonen“ bewegen und schon Platz alles (inklusive VirtualBox). Beispielsweise ist die als Paket verfügbare Freeglut in der Version 2.8 nicht benutzbar. Die macht irgendwas und stürzt dann ab. Der Release-Candidat der Freeglut in Version 3 funktioniert.

Ehrlich gesagt hab ich keine Ahnung, ob das ganze jetzt überhaupt funktioniert. Die Frameraten sind alles andere als Überzeugend. Mein Fazit: das Ganze ist einfach keine Lösung und kein Ersatz für einen echten Rechner mit echter GPU und echter Installation. Schade.

Die ESF-geförderte Nachwuchsforschergruppe VICCI beschäftigte sich von 2012 bis Ende 2014 an der Fakultät Informatik der Technischen Universität Dresden mit der Entwicklung, Steuerung und Integration von cyber-physikalischen Systemen (CPS). Der Anwendungsbereich umfasst Smart Home-Umgebungen und die Unterstützung von Menschen im Ambient Assisted Living.

Heute schreibe ich über Visualisierung in heterogener, verteilter Infrastruktur. Naja, das klingt jetzt spannender als es wirklich ist. Es geht schlicht und ergreifend um Remote-Visualisierung.

Ein erster Prototype für die komprimierte Bildübertragung wurde bereits in einem Kooperationsprojekt (gemeinsame Studentenbetreuung) mit dem HZDR Dresden erfolgreich eingesetzt und auf den internationalen Konferenzen SuperComputing 2013 (Denver) und 2014 (New Orleans) präsentiert (im Rahmen des Forschungsprojekts PIConGPU des HZDR, ACM Gordon Bell Finalists SC2013). Dieser Test zeigte deutlich die Funktionstüchtigkeit des Ansatzes.

Die Übertragungsstrecke der Video-Übertragung, als zentraler Aspekt des Ansatzes, wurde durch mehrere Kompressionsverfahren verbessert. Besonders hervorzuheben ist die Bachelorarbeit von Christoph Träger in welcher die Latenzmaskierung mittels Bildinterpolation und -extrapolation auf der Seite des darstellenden Endgeräts realisiert und untersucht wurde.

ba_traeger_idee

Grundidee der client-seitigen Bildinterpolation zur Latenzmaskierung. Ausgehend von dem Original-Bild (links), soll das Ziel-Bild (mitte) angenähert werden. Durch Re-Projektion kann die Geometrie angenähert werden (rechts).

Die prototypische Softwarekomponente zur Video-Übertragung trägt den Namen RIV. Der aktuelle Stand dieser Arbeit kann von der VICCI-Webseite heruntergeladen werden.

Die Implementierung der Bildinterpolation zur Latenzmaskierung ist auf der Webseite der Bachelorarbeit von Christoph Träger verfügbar. Achtung: die Rechte am Quellcode dieser Implementierung liegen vollständig bei Christoph Träger! Der hier präsentierte Quelltext darf nur zu Lehr- und Forschungszwecken einsetzt werden. Weitere Verwendungsarten erfordern das Einverständnis des Urhebers. Die TU Dresden hat das Nutzungsrecht des Quellcodes.

Die ESF-geförderte Nachwuchsforschergruppe VICCI beschäftigte sich von 2012 bis Ende 2014 an der Fakultät Informatik der Technischen Universität Dresden mit der Entwicklung, Steuerung und Integration von cyber-physikalischen Systemen (CPS). Der Anwendungsbereich umfasst Smart Home-Umgebungen und die Unterstützung von Menschen im Ambient Assisted Living.

Mein Arbeitspaket für Visualisierung und visuelle Analyse hatte im Rahmen des Projekts drei wesentliche Aspekte untersucht und entsprechende Lösungen erarbeitet:

  • die visuelle Analyse komplexer, multi-dimensionaler, multimodaler,  dynamischer Raumzeit-Daten,
  • die Visualisierung in heterogener, mobiler und verteilter IT-Infrastruktur und
  • die Realisierung von Visualisierungssystemen und -Komponenten.

Heute schreibe ich über die visuelle Analyse komplexer Raumzeit-Daten.

teaser

Die visuelle Analyse dient der administrativen Übersicht über eines laufenden CPS aus Gründen der Sicherheit, als Hilfestellung während Entwicklung und des Betrieb des Systems. Im Besonderen sind außergewöhnliches (Fehl-)Verhalten und das Entstehen von emergenten Systemeigenschaften hierbei von Bedeutung. Da hierfür eine visuelle Exploration notwendig ist, dürfen nur minimal wenige vorherige Annahmen getroffen und einschränkende Darstellungsmetaphern genutzt werden. Beispielsweise, können bestimmte Daten, wie auf die Gelenke eines Roboterarms wirkenden Kräfte, effektiver Visualisiert werden, wenn diese im geometrischen Kontext dargestellt werden. Diese Annahme jedoch verringert die Allgemeingültigkeit der Visualisierung.

Ausgehend von einer entsprechenden Anforderungsanalyse wurde daher eine grundlegende Visualisierung erarbeitet, welche koordinierten Ansichten, zeit-kontinuierlichen Scatterplot-Matrizen, zeit-kontinuierlichen parallelen-Koordinaten-Plots und zeitliche Heatmaps nutzt um die im CPS erhobenen Daten direkt darstellt. Diese Anwendung ist in der Lage generische multidimensionale Daten in Echtzeit interaktiv darzustellen und bietet somit eine hervorragende Möglichkeit für erste visuelle Analyseschritte. Das erarbeitete System wurde in der Fachzeitschrift Computer Graphics Forum, dem führenden europäischen Visualisierungsjournal, veröffentlicht. Im Rahmen der Evaluierung wurden die Daten des CPS live dargestellt und in Diskussion mit dem Publikum diskutiert. Das CPS wurde durch die weiteren direkt vor Ort und in entfernten Laboren betriebenen Demonstratoren und Sensoren gebildet.

  • [DOI] S. Grottel, J. Heinrich, D. Weiskopf, and S. Gumhold, „Visual Analysis of Trajectories in Multi-Dimensional State Spaces,“ Computer Graphics Forum, vol. 33, iss. 6, pp. 310-321, 2014.
    [Bibtex]
    @article {Grottel2014HDTraj,
      author = {Grottel, Sebastian and Heinrich, Julian and Weiskopf, Daniel and Gumhold, Stefan},
      title = {{Visual Analysis of Trajectories in Multi-Dimensional State Spaces}},
      year = {2014},
      journal = {Computer Graphics Forum},
    volume = {33},
    number = {6},
    pages = {310--321},
      doi = {10.1111/cgf.12352}
    }

DOI: 10.1111/cgf.12352

Diese Visualisierung wurde als Plugin für das Visualisierungssystem MegaMol realisiert. Der Quellcode dieses Plugins kann frei hier heruntergeladen und entsprechend der beigelegten Lizenz verwendet werden:

hdtraj.mmplugin.ziphdtraj.mmplugin.zip Multi-Dimensional Trajectory Visualization MegaMol Plugin
[99.7 KB; MD5: 0a6eaf465318b0f256ecfdf8a8b4ad50; Mehr Info]

Um das MegaMol-System und das Plugin zu kompilieren, nutzen Sie die entsprechenden Anleitungen auf der MegaMol-Webseite.

Als Multi-Plattform-C++-Entwickler hat man es nicht leicht. Das war ja der Grund für die Projekte VISlib und die inzwischen begrabene TheLib. Aber die Zeiten sind besser geworden. Der C++11-Standard bringt viele schöne und praktische Klassen mit. Das vielleicht einzige was gerade wirklich fehlt sind IPC, RPC und fundamentalerweise Sockets. Was aber z.B. sehr schön und praktisch ist sind die ganzen neuen Threading-Klassen, allen voran std::thread.

Nun bin ich meines Zeichens eigentlich Entwickler unter Windows und portiere meine Codes regelmäßig auf die anderen Plattformen (Linuxe und manchmal OS X). Entsprechend gibt es immer mal wieder kleine Startschwierigkeiten. Beispielsweise als ich mit meinem ersten Test-Programm zu std::thread zum ersten Mal unter Ubuntu kompilieren wollte bekam ich die std::exception:

Operation not permitted

Nun, offensichtlich habe ich pthread reingelinkt, weil ich sonst das Binary gar nicht gelinkt gekriegt hätte. Aber irgendwas lief trotzdem schief. Also hieß es das allmächtige Internet fragen (und natürlich bei StackOverflow raus kommen): http://stackoverflow.com/questions/9945391/stdthread-creation-throws-exception

Als Quintessenz: Mal wieder ist es eine Reihenfolge-Frage der Parameter des Gcc, ein ständiges Ärgernis in meinen Augen:

Funktioniert nicht:

g++ -std=c++0x -lpthread -o test ./test.cpp

Funktioniert:

g++ -std=c++0x -o test ./test.cpp -lpthread

Benutzer user405725 hat es schön in seinem Kommentar zusammengefasst:

You generally have to specify libraries AFTER object files or they are not pulled in.

Ok. Soweit, so gut. Und wie sieht es mit CMake aus? StackOverflow: http://stackoverflow.com/questions/1620918/cmake-and-libpthread

Die Unterschiedlichen Lösungen können sich auch hier unterschiedlich auf die Reihenfolge der Parameter im Gcc-Aufruf auswirken. Macht man es ganz formal mit find_package:

cmake_minimum_required (VERSION 2.6)
find_package (Threads)
add_executable (myapp main.cpp ...)
target_link_libraries (myapp ${CMAKE_THREAD_LIBS_INIT})

dann funktioniert alles und macht einfach alles Richtig.

Sucht man stattdessen den kurzen Dienstweg und gibt einfach die Parameter selbst an, z.B.:

SET(CMAKE_CXX_FLAGS_DEBUG "... -lpthread")
SET(CMAKE_CXX_FLAGS_RELEASE "... -lpthread")

dann hat zumindest auf meiner Installation mein Gcc wieder die Parameter in der falschen Reihenfolge bekommen und das Testprogramm hat nicht funktioniert.

Ich mag CMake. Es tut einfach was es soll. Aber man darf nicht versuchen die eigenen Ideen gegen die Strukturen und Standards von CMake durchzudrücken. Das kann zwar zu einem gewissen Grad funktionieren, aber man handelt sich jede Menge Ärger ein. Folgt man aber einfach den Vorgaben von CMake, die praktisch immer ausreichen, dann funktioniert alles wunderbar.

Ich bin zurück in Dresden. Das war jetzt die mit Abstand anstrengendste Dienstreise die ich je unternommen habe. Die Siggraph Asia 2014 war eine gute Konferenz, aber die hat die Tage in der chinesischen Zeitzone gut gefüllt. Die Arbeit in der deutschen Zeitzone war mit der Arbeit einer Einreichung zur EuroVis 2015, dem Schreiben eines Förderantrags, eines Projektabschlussberichts und dem Korrekturlesen einer Dissertation eines Freundes ausgefüllt. Da blieb kaum noch Zeit zum Schlafen, geschweige denn für irgendetwas anderes. Und das ganze gestrichene sieben Tage lang. Heute, am Sonntag, war mein Rückflug von morgens 4 Uhr Ortszeit Shenzhen bis jetzt ca. 20:00 Uhr Ortszeit in Dresden. Und morgen Vormittag stehe ich wieder im Hörsaal und geb‘ eine Vorlesung zu besten. Wie ich mich freue.