Hier eine Zusammenstellung von meinen papers.
Raab M. (29.09.2010) A Modular Approach to Configuration Storage
Libraries like Elektra provide access to a shared configuration database across all locally installed applications. Users prefer applications integrated well within the system they use. They are in favour of settings that are always up to date. Users also want their favourite configuration file formats to be supported. They want a guarantee that the system storing their options only accepts a working configuration. The concrete problem is that the specific requirements vary according to the programs and the operating system. Similar or competing possibilities exist to achieve specific tasks.
We address the problem by modifying Elektra in this thesis. A reusable, exchangeable plugin cares for a specific concern. Several plugins together build up the access to a part of the configuration database that deals with the complete users' requirements.
We implemented a number of plugins to verify the approach. We tested the implementations in different use cases. It soon became clear that checking the configuration before storing is much more flexible if the validation of the structure and the values are separated in two phases. It facilitates combinations of several checks. Occasionally these checks are made specifically for an application or plugin. We evaluated and tried different ways in which to implement such plugins. We came to the conclusion that plugins can be realised quickly if the potential of existing plugins and libraries is used. Code needing operating system specific facilities can be easily separated into other plugins. As a result of mounting the plugins, the capabilities and features of the shared configuration database changes. But because of checking contracts exported by plugins, the interplay of plugins is guaranteed even though the system is now much more flexible. It even goes so far that plugins can count on actions taken by other plugins.
Programmbibliotheken wie Elektra ermöglichen allen lokal installierten Programmen den Zugriff auf eine gemeinsame Konfigurationsdatenbank. Benutzer von Applikationen wünschen, dass ihre Programme stärker in das Gesamtsystem integriert sind, dass die Einstellungen -- durch Benachrichtigungen über Änderungen -- immer am neuesten Stand gehalten werden, dass ihre bevorzugten Konfigurationsformate unterstützt werden und dass sie trotzdem die Gewissheit haben, dass beim Speichern der Optionen nur funktionierende Einstellungen in die Konfigurationsdatenbank gelangen. Das konkrete Problem dabei ist, dass die genauen Anforderungen je nach Applikation und Betriebssystem variieren und dass es oftmals gleichwertige oder konkurrierende Möglichkeiten gibt, den Aufgaben gerecht zu werden.
In dieser Diplomarbeit wurde das Problem durch Modifikationen von Elektra gelöst. Die einzelnen Aufgaben werden in austauschbaren, wiederverwendbaren Plugins implementiert. Mehrere solche Plugins zusammen bauen einen Zugriff auf Teile der Konfigurationsdatenbank auf, welche dann gemeinsam die gesamten Anforderungen erfüllen.
Zur Überprüfung dieses Ansatzes wurde eine Reihe von Plugins implementiert und in verschiedenen Szenarien versuchsweise eingesetzt. Dabei zeigt sich, dass sich beim Herausschreiben der Konfiguration Vorteile ergeben, wenn die Überprüfung der Struktur der Optionen und die Validierung der einzelnen Werte in zwei Phasen gegliedert sind. Dadurch wird ermöglicht, verschiedenste Validierungen -- mitunter auch applikations- oder plugin-spezifisch -- zu kombinieren. Es wurden verschiedene Methoden erprobt, wie solche Plugins entwickelt werden können. Dabei stellte sich heraus, dass Plugins auch sehr schnell realisiert werden können, wenn sie das Potential von bereits existierenden Plugins und Bibliotheken nutzen. Es ist zudem elegant möglich, vom Betriebssystem abhängige Teile von unabhängigen zu trennen. Durch das Einhängen der Plugins in die gemeinsame Konfigurationsdatenbank während der Laufzeit werden die Eigenschaften und Funktionalitäten für diese Teile verändert. Aber durch Überprüfung von Kontrakten, welche die Plugins exportieren, kann trotz der zusätzlichen Flexibilität eine reibungslose Zusammenarbeit garantiert werden. Plugins können sich sogar darauf verlassen, dass bestimmte Aktionen bereits vorher durchgeführt wurden.
Das Poster präsentiert den neuen modularen Ansatz in Elektra auf Deutsch.
ftp und http (3,3 MB, Deutsch).
Raab M., Sabin P. (March 7, 2008) Implementation of Multiple Key Databases for Shared Configuration or ps.gz
Registry, libraries and modules have been proposed as well-suited storage for software configuration. Yet so far, there's a dilemma in choosing between a system-wide configuration setting database or a configuration database optimized for the user's needs, not accessible from other software.
We demonstrate that it is possible to share configuration with different backends (i.e. different configuration formats) using the technique of dynamic linking, which fits transparently into the hierarchical key namespace. This takes place by mounting the appropriate backend to a system-wide unique key name.
We also describe how to use multiple databases at once to achieve shared configuration without losing the substantial benefits to the administrator and programmer configuration.
Raab M., Sabin P. (28. März 2008) Soya3D Tutorial
Die folgende Arbeit ist eine Einführung in Soya3D, eine objektorientierte 3D-Engine für die Programmiersprache Python. Soya3D ist nicht nur leistungsfähig, sondern auch einfach zu verwenden. So ist es möglich, dass mit verhältnismäßig geringem Zeitaufwand beeindruckende Ergebnisse erziehlt werden, was auch unter dem Begriff Rapid-Prototyping subsumiert werden kann. Es wird jedoch nicht nur auf Verwendung von Soya3D eingegangen, sondern auch Vorteile und Nachteile zu anderen Engines betrachtet, die Besonderheiten beleuchtet und Einsatzgebiete aufgezeigt. Außerdem werden Technologien und Programme beschrieben, die üblicherweise in Zusammenhang mit Soya3D stehen.
Raab M. (16. Dezember 2008) Dynamic Dispatch in C++
Beim Einsatz objektorientierter Techniken wird oftmals Dispatch mit Virtual Function Tables eingesetzt, um zur Laufzeit die richtige virtuelle Methode zu finden. In diesem Paper will ich der Frage nachgehen, wie- viel dieser Dispatch auf superskalaren Computerarchitekturen kostet, wo Dispatch in C++ mit welchen Aufwand auftritt und in wie weit der Dis- patch in C++ mittels verschiedener Techniken vermeidbar ist. Zudem will ich beleuchten, welche Compileroptimierungen die Situation wesentlich verbessert haben oder gute Ergebnisse versprechen.
"Objektorientierte Programmierung" ist eine Vorlesung mit Laborübung im Umfang von zwei Semesterwochenstunden an der TU Wien. Unter anderem werden folgende Themenbereiche der objektorientierten Programmierung an Hand von C++ behandelt:
Die angebotenen Varianten sind bis auf das Format identisch. Sie können eine davon wählen.
Es gibt auch alle compilierbaren Beispiele zum Download [hashsum].
Obwohl das Skriptum in größter Sorgfalt erstellt wurde, sind Fehler leider unvermeidlich. Im Errata werden diese gesammelt.
Sortiert nach Auftreten im Skriptum: