DocuCast

Instantly backup your files on change | 3/21/2014

DocuCast is a real time file revision and backup system for use in professional and private environments. DocuCast stores important documents and other files quickly after they have changed!

You can read more here!


UIPSnap - Windows Forms "Serialisierung" (C# / .NET)

10/8/2013
Technologien: .NET (C#), Windows Forms, Reflection, XML

UIPSnap (User Interface Property Snap) ist eine Software-Bibliothek zur Speicherung und Wiederherstellung des Zustands von .NET Forms Benutzeroberflächen. Mit nur wenigen Zeilen Code können Eigenschaften sämtlicher in einer Form befindlichen Controls (z.B. Position, Größe aber auch Selektionen und vieles mehr) in ein XML-Format übertragen und z.B. in einer Datei oder Datenbank gespeichert werden.

Besonders umfangreiche Benutzeroberflächen, die aus vielen einfachen Elementen zusammengesetzt sind, eignen sich hierfür hervorragend. Durch das Festlegen der Reihenfolge und spezieller Eigenschaften-Filter lässt sich der Serialisierungs-Vorgang beliebig anpassen.

 

Zur Produktseite

 

Beispiel-Code:

UIPSnap snap = new UIPSnap();
string xml = snap.toXML(this);
File.WriteAllText("uistate.xml", xml);

 

Beispiel-GUI:

 

 

Einfache Windows Zeiterfassung für das vTiger CRM

4/9/2012

Technologien: .NET (C#), REST-basierter Webservice-Client

Mit Hilfe des „Timecontrol“-Moduls lässt sich das bekannte Open-Source-CRM (http://www.vtiger.com/) System leicht um die Möglichkeit erweitern, Arbeitszeiten zu erfassen und beliebigen Objekten im CRM zuzuordnen. Leider ist das Modul umständlich zu bedienen und in seiner Funktionalität unausgereift. Zudem erfolgt die Bedienung im Browser und erfordert einen Loginvorgang.

Auf Basis der bereits zuvor entwickelten vTiger Client Library und nach dem Vorbild des Anuko Trackers (http://www.anuko.com/) wurde von mir der Windows „Timetracker“ für vTiger entworfen. Dieser läuft unauffällig und dauerhaft während der Arbeitszeit, kann bei Bedarf in die Taskleiste minimiert werden, von wo er gelegentlich über laufende Zeiten oder seinen Status informiert. Einmal mit Anmeldedaten versorgt, entfällt der umständliche Loginvorgang, bzw. wird automatisiert.

Ebenfalls automatisiert ist auch der intelligente Synchronisationsvorgang, welcher Daten bei fehlender Internetverbindung (z.B. arbeiten auf Reisen) Offline zur Verfügung stellt, Einträge zwischenspeichert und später überträgt. Ein Datenabgleich bei Änderungen an Datenbeständen auf dem Server (vTiger) oder dem Client (Tracker) ist in beide Richtungen problemlos möglich. Der Tracker bietet viele weitere Funktionen (z.B. Warnmeldungen bei Überschreiten von Zeitkontingenten), die einfach zu bedienen und komplett konfigurierbar sind.

Eine Produktvariante ist erhältich bei der Open Source Modules Downloads UG.

Weitere Software der Kategorie vTiger siehe Produktliste.


Genetischer Algorithmus zur Positionsbestimmung bei einer Parallelkinematik

4/9/2012

Technologien: .NET (C#), C++

Die Position und Orientierung eines Endeffektors in Bezug auf die Roboterbasis aufzufinden, bezeichnet man in der Robotik als „Direktes Kinematisches Problem“ (DKP). Während dies bei einer seriellen Kinematik sehr leicht zu bestimmen ist, führen sog. geschlossene kinematische Ketten bei einer parallelen Anordnung der mechanischen Komponenten dazu, das Berechnungen schnell sehr komplex werden. Um dieses Problem zu umgehen, bieten sich Näherungslösungen an, die sich der einfachen Lösbarkeit des umgekehrten, inversen kinematischen Problems (IKP) bedienen. Beschreibung der Funktionen IKP und DKP für diesen Fall:

  • IKP (leicht lösbar)
    • Eingabe: Raumkoordinaten X, Y, Z, Roll, Pitch, Yaw
    • Ausgabe: Antriebspositionen an der Basisplattform
  • DKP (schwer lösbar)
    • Eingabe: Antriebspositionen an der Basisplattform
    • Ausgabe: Raumkoordinaten X, Y, Z, Roll, Pitch, Yaw

Die Berechnung des DKP-Koordinatenvektors (6 Werte) mit Hilfe eines sog. Real-coded genetischen Algorithmus unter Zuhilfenahme des IKPs läuft wie folgt ab:

  • Rate eine Menge an zufälligen Raumkoordinaten unter sinnvoller Eingrenzung des Lösungsraums. Dies ist die Anfangspopulation des genetischen Algorithmus.
  • Die Anfangspopulation bildet zusammen mit einer Bewertungsfunktion (euklidische Distanz zweier Vektoren) die Eingabe für den Ablauf,der solange wiederholt wird, bis die Genauigkeit des besten Kandidaten ausreichend ist, oder eine maximale Iterationszahl erreicht wird:
    • Wähle x-mal zufällig zwei gute Kandidaten (Berechnung IKP, Vergleich mit Antriebspositionen und Bewertung) aus der Population aus, wobei x die Anzahl an Kandidaten ist. Bilde dabei x-mal einen Nachkommen durch Verschmelzen der zwei Kandidaten (Zusammenfügen von 12 Koordinaten zu 6 Koordinaten mit zufälligen Crossover.
    • Mutiere die Werte des Nachkommen (Entscheidung zufällig) und füge diesen in eine neue Kandidatenliste ein.
    • Prüfe das Ergebnis (Abbruchkriterium) und verwende die neue Liste gfs. für die nächste Iteration.

Eine besondere Optimierung ist die unterschiedlich starke Mutation der Koordinaten in jeder Iteration, eine heuristische Technik, die auch als Simulated Annealing („Simulierte Abkühlung“) bekannt ist. Der Algorithmus berechnet einen Koordinatensatz bestehend aus 6 Werten mit einer Genauigkeit von mind. 6 Dezimalstellen (nm) in deutlich unter 100ms (2,5 GHz CPU).


Service Based Assembly Control (SACO)

11/28/2010

Technologien: .NET (C#), GUI, Netzwerkprogrammierug (WCF, UDP Unicast/Multicast), XML

SACO („Service-Based Assembly COntrol“) ist ein verteiltes Softwarepaket, das die Erstellung und Verwendung von Diensten auf Technologie der Windows Communication Foundation (WCF) erleichtert. Für SACO erstellte Dienste haben den Schwerpunkt in der Bereitstellung von Schnittstellen zur Nutzung PC-gesteuerter Gerät oder Maschinen auf unterster Ebene, die an verschiedenen Computern in einem lokalen Netzwerk (LAN) angeschlossen sind. Einfach gesagt: Geräte, die mit einem PC verbunden sind, können von anderen PCs mitgenutzt werden.

SACO wurde mit der Zielsetzung entwickelt, zukünftig einmal die Basis für ein verteiltes Produktionssteuerungsystem zu bilden.

SACO besteht aus drei Komponenten:

  1. Die SACO Plattform verwaltet Dienste, die als Plugins eingebunden werden. 
  2. Die SACO Client Library ermöglicht die einfache Lokalisierung und Instanziierung eines Dienstes.
  3. Die SACO User Auth Library führt eine Autorisierungsprüfung durch um gegen unbefugte Steuerung zu schützen.

Techniken und Features:

  • Vorteile gegenüber WCF
    • Sehr leichte Konfigurierbarkeit der Dienste mit XML: Übliche in WCF benötigte Einstellungen (z.B. Adresse, Verhalten und Bindung) entfallen gänzlich.
    • Automatische Dienstauflösung: Der Ort eines Dienstes kann anhand eines eindeutigen Names aufgelöst werden, ohne dessen IP Adresse zu kennen (Client-Server oder Multicast Modus).
    • Sicherheitsmechanismen zu Benutzerauthentisierung: Es sind keine Windows Credentials nötig und es muss kein Validierer implementiert werden. Es ist möglich, eine Autorisierung auf Methodenebene des Dienstes durchzuführen (Flexibilität).
    • Kontrolliertes Hosting mit übersichtlicher Benutzerschnittstelle.
  • Dynamisches Aktivieren und Deaktivieren der Dienste
  • Einbindung und Austausch von (neuen) Diensten (Plugins) zur Laufzeit des Programms (Erweiterbarkeit).
  • Automatische Versionskontrolle von Client und Dienst.
  • Automatische Synchronsation bei gemeinsamen Clientzugriff (Thread-Mutex)
  • Offene Architektur und modularer Aufbau.
  • Prinzipiell keine Limitierung in der Anzahl gleichzeitig laufender und vernetzter Plattformen (Skalierbarkeit).
  • Sehr hohe Performance durch Nutzung des UDP Netzwerk Protokolls.
  • Dummy-Services zur „Offline“-Nutzung von Diensten: Auch wenn Geräte nicht angeschlossen sind, funktionierten die Dienste und lassen sich so zu Simulationen nutzen.
  • Ausführliches Logging (GUI, File).

SACO wurde unter meiner Leitung am Fraunhofer IPT entwickelt und wird dort in der Abteilung Produktionsmaschinen (Automatisierung) eingesetzt.

Screenshot der SACO Plattform:

Screenshot einer Seite der API Dokumentation eines Dienstes zur Robotersteuerung (erstellt mit Doxygen):


eLearning Plattformen

11/28/2010

Im Rahmen eines Consulting Auftrags ging es darum, innerhalb von kurzer Zeit für ein Kundenprojekt eine Produktempfehlung für ein Learning Content Management System (LCMS) abzugeben, die möglichst genau im Einklang mit den Kundenanforderungen steht. Die Herausforderung bestand darin, dass der Markt für LCMS Systeme generell hart umkämpft und mit einer hohen Anzahl von Produkten sehr unübersichtlich ist.

Da Anforderungen nicht direkt mit Produkteigenschaften verglichen werden können, musste zunächst ein Bewertungssystem mit Kategorien und speziellen Selektionskriterien ausgearbeitet werden. Durch die Verwendung von Gewichtungsfaktoren konnten am Schluss durch Veränderung der Gewichtung verschiedene Szenarien gegenübergestellt werden.

Techniken:

  • Analyse und Vervollständigung der Kundenanforderungen
  • Ausarbeitung einer Kategorieliste mit Selektionskriterien und eines Bewertungssystems
  • Erstellung einer Marktübersicht und einer Grobauswahl von Anbietern
  • Festlegung auf eine Menge von Kandidaten und Bewertung der einzelnen Kriterien
  • Anfertigung eines Projektberichts mit einer Produktempfehlung

Zur ersten Orientierung wurde ein Anwendungsfalldiagramm für LCMS Funktionen und deren Nutzergruppen erstellt:

Ausschnitt der Selektionskriterien-Tabelle (Excel):

Ergebnis mit spezieller Gewichtung: Die Sieger waren die Systeme CLIX und ILIAS:

Das unter GPL stehende System ILIAS (Integriertes Lern-, Informations- und Arbeitskooperations-System) wird seit 1997/1998 von der Universität Köln entwickelt. Das LMS CLIX wird von der IMC AG angeboten (1996 gegründet als Spin-Off der Universität des Saarlandes) und existiert in den Varianten CLIX Enterprise, CLIX Campus und CLIX Start.


Vtiger .NET webservice client library

11/25/2010

Technologien: .NET (C#), HTTP Client, MD5, Json

Nach dem Vorbild der vtiger webservice library (http://forge.vtiger.com/projects/vtwsclib) wurde in diesem Projekt (VTNetClient) eine Bilbliothek zur Kommunikation mit der REST-basierten vtiger-API für .NET entwickelt. Technisch werden dabei Webservice-Methoden über HTTP-POST und -GET Anfragen aufgerufen. Die Übersetzung dieser Methoden in eine übersichtliche und gut strukturierte .NET-API erleichtert das Zusammenführen von .NET Anwendungen mit dem vtiger CRM.

Techniken und Features:

  • Methoden zur Manipulation von Daten in vtiger Modulen (z.B. create, retrieve, update, delete [CRUD], query).
  • Generelle Invoke Methode, mit der alle REST Methoden verwendet werden können (auch zukünftige).
  • Umfangreiche API- und Entwicklerdokumentation mit Beispielen zur Verwendung.

 

Prinzip der Verwendung: Eine Anwendungsklasse (app class) referenziert die VTNetClient Bibliothek, die Methodenaufrufe in HTTP GET/POST Anfragen übersetzt:

 

Screenshot der HTML API Dokumentation (erstellt mit Doxygen):

 

Screenshot einer Seite der Entwicklerdokumentation (Methoden mit Beispiel Quellcode):


PHPBB3 Integration (Symfony)

11/24/2010

Technologien: PHP, phpBB3, Symfony, Datenbanken (MySQL)

Bei diesem kleineren Projekt ging es um die Integration des phpBB3 Forums in eine mit Symfony erstellte Webseite. Symfony (http://www.symfony-project.org) ist ein Open-Source Web Framework, das auf dem Enwurfsmuster Model-View-Control (MVC) basiert und Webentwicklung stark vereinfachen kann.

Hintergrund der Webseite ist ein Mitgliederverzeichnis einer Verbindung. Mit der Zielsetzung, dass sich die Mitglieder in Bezug auf Zugehörigkeiten zu Zirkeln und Mitgliedschaften in Vereinen in entsprechenden Foren austauschen können, sollte sich eben diese Struktur der Mitgliedschaften auch im Forum wiederfinden.

Techniken und Features:

  • Synchronisation der Benutzer- und Mitgliedschaftsdaten zwischen Symfony und phpBB3.
  • Automatisches anlegen von Kategorien und Foren sowie Konfiguration von Benutzerrechten durch Manipulation der phpBB3 Datenbank.
  • Single-Signon (SSO)

phpBB3 Forum mit Kategorien und entsprechenden Foren für Mitgliedschaften in Vereinen bzw. Zirkeln:


Procalysis eTest

11/22/2010

Technologien: Java, JSP/Servlets, XML, HTML/CSS, Javascript, SWT, JFace, Datenbanken (Apache Derby/Java DB, HyperSQL, MySQL, Postgresql)

Auch eTest basiert wie HRV-Lab im Kern auf Procalysis Signal. Statt der Verarbeitung von Signaldaten geht es hierbei jedoch um die Analyse und Verarbeitung psychometrischer Daten aus Fragebögen. Diese Daten werden durch eine Testdurchführung im Web-Browser überhaupt erst erfasst.

Techniken und Features:

  • Anhand einer XML basierten Testdefinition stellt ein Webserver eine Testumgebung bereit, die von unterschiedlichen Clients (Computern) mit Hilfe eines beliebigen Web Bowsers aufgerufen werden kann. Dies funktioniert im lokalen Netzwerk oder im Internet.
  • Damit mehrere Benutzer gleichzeitig Tests durchführen können, werden vom System mehrere Sessions verwaltet. Jede Session erhält eine PIN, die der Benutzer vorab eingeben muss. Hierdurch können später Testergebnisse wieder den Personendaten zugeordnet werden.
  • Alle zu speichernden Datenobjekte werden anhand der Benutzerdaten automatisch strukturiert, verschlüsselt und in einer Datenbank (durch Verwendung des Procalysis Datenportals) abgelegt.
  • Auswertung: Neben einer individuellen Testauswertung mit testeigener Logik werden Übersichtstabellen, Graphen der numerischen Antwortwerte, Reaktionszeiten sowie deskriptive Statistiken (Boxplot) über die gesamten Testungen erstellt.
  • Auswertungsergebnisse können als PDF Report gespeichert werden, der Übersichts- und Ergebnistabellen zu jedem Test enthält.

Procalysis® eTest kam im Rahmen verschiedener wissenschaftlicher Studien zum Einsatz und wird derzeit als marktreifes Produkt von der Simplana GmbH (www.simplana.de) angeboten.

Diagramm zur Ausführung im Netzwerk:

Hauptfenster von eTest als Modul von Procalysis (Dialog: Testauswahl für die nächste Session, hinten: Übersichtstabelle laufender Sessions):

Ansicht eines Tests im Browser (oben rechts: Kontrollpanel zur Navigation):


Procalysis HRV Lab

11/22/2010

Technologien: Java, SWT, JFace, Hardware (Polar, Suunto), digitale Signalverarbeitung (DSP)

Bei dieser Software handelt es sich um eine Produktvariante, die aus Procalysis Signal / Biomed entstand. HRV Lab ist ein kombiniertes Hard- und Softwarepaket zur Analyse der Herzratenvariabilität (engl.: Heart Rate Variability, HRV). Damit ermöglicht die Software eine minimal belastende Diagnostik der Parasympathikus-Sympathikus Interaktion. Als Hardware können Brustgurte von Suunto (Memory Belt) und Polar (Wearlink) verwendet werden, die Daten der zeitlichen Schwankungen der Herzschlagabstände wahlweise für längere Untersuchungen speichern oder für kurze Untersuchungen auch direkt drahtlos übertragen können. HRV Lab bietet die folgenden zentralen Features:

  • Echtzeit-Übertragung und Aufzeichnung der Polar Daten über die Soundkarte eines PCs. Damit ist keine zusätzliche teure Hardware zur analog-digital Wandlung mehr nötig.
  • Auslesen der Suunto Speicherdaten durch Nutzung der Suunto USB Bibliothek.
    Erzeugung der HRV Daten
    • Aus Suunto und Polar Daten können direkt HRV Signale zur weiteren Verarbeitung generiert werden.
    • Auch aus generischen EKG Daten kann durch einen speziellen, hochpräzisen Wavelet Algorithmus ein HRV Signal erzeugt werden.
    • Eine automatische Artefakt Bereinigung der HRV Daten führt zu präzisen Ergebnissen, selbst bei schlechter Signalqualität.
  • HRV Analyse auf „Knopfdruck“
    • Alle klinisch relevanten Kennwerte, sowie zusätzliche komplexe Analysen (z.B. Zeit-Frequenz Verteilung und Recurrence Plot) werden automatisch aus einem bereinigtem HRV Signal berechnet.
    • Es wird ein 4-seitiger PDF Report erzeugt, im dem alle Analyseergebnisse optisch ansprechend dargestellt werden.

Procalysis® HRV Lab kam im Rahmen verschiedener wissenschaftlicher Studien zum Einsatz und wird derzeit als marktreifes Produkt von der Simplana GmbH (www.simplana.de) angeboten.

Hauptfenster von Procalysis HRV Lab: EKG Signal mit markierten R-Zacken (oben links), Wavelet Time-Frequency-Distribution (rechts), Recurrence Plot (unten links)

Erste Seite des PDF Reports:


 


Procalysis Signal und Biomed

11/22/2010

Technologien: Java, SWT, JFace, XML, Datenbanken (Apache Derby/Java DB, HyperSQL, MySQL, Postgresql), digitale Signalverarbeitung (DSP), diverse Bibliotheken

Procalysis® („Process analysis“) ist ein modulares Softwarepaket zur einfachen Signalanalyse mit dem Schwerpunkt der Verarbeitung biomedizinischer Zeitreihen. Nach einem ersten Prototypen während meiner frühen Studienzeit konnte ich die Software im Rahmen meiner Diplomarbeit grundlegend überarbeiten und verbessern. Zu den Highlights gehören:

  • Intuitive Anwendung komplexer DSP Funktionen (z.B. FFT, Filter oder Wavelets) ohne Programmierkenntnisse.
  • Die Verarbeitung sehr großer Datenmengen (z.B. hochauflösende Zeitreihen im Gigabyte Bereich) wird durch zwei Mechanismen unterstützt.
    • Eine effiziente Speicherverwaltung mit extrem einfacher API verwendet randomisiertes Paging und Memory Mapped Files. Es werden nur jeweils kleine Bereiche des Datenobjekts im Speicher gehalten, während sich der Großteil der Daten in Dateien befindet. Die Verwaltung wurde mit der Zielsetzung entwickelt, auch noch bei konkurrierendem Zugriff (Multithreading), möglichst effizient zu arbeiten.
    • Ein spezieller Darstellungsalgorithmus skaliert optimal mit steigender Signalgröße und ermöglicht Echtzeit Zoom- und Scrollfunktionen. Für unterschiedliche Detailgrade werden hierfür zusätzliche Informationen berechnet, auf die dann statt der Originaldaten zugegriffen wird.
  • Makros oder „Click’n’Code“: Benutzer können ohne Programmierung zum Zwecke von Serienanalysen an einem Beispieldatensatz Vorgänge ausführen, die das Programm später bei beliebig vielen Objekten nachahmt. Die einfache Kombination elementarer Funktionen schafft somit höherwertige, komplexe Funktionen. Dessen automatisierte Anwendung führt zu einer imensen Arbeitserleichterung.
  • Skripte: Zur Erweiterung der Software können Skripte programmiert werden, die sich auch fest in das Programm einbinden lassen. Hierfür kam die Skriptsprache Beanshell (www.beanshell.org) zum Einsatz. Zur komfortablen Programmierung wurde ein Skript-Editor mit Syntax-Highlighting und Content Assistant entwickelt.
  • Datenportal: Zur einfachen Datenorganisation können Daten strukturiert in einer internen oder externen Datenbank abgelegt werden. Hierfür wurde ein spezielles Datenbankschema entwickelt, das hierarchische Strukturen zusammen mit Signaldaten und Zusatzinformationen verarbeitet. Eine abstrakte Datenhaltungsschicht ermöglicht die Verwendung unterschiedlicher Datenbank Systeme.

Obwohl Procalysis ca. 40 verschiedene Bibliotheken verwendet, ist ein Großteil der DSP- und Analysefunktionen in Eigenentwicklung entstanden.


Procalysis Signal / Biomed kam im Rahmen verschiedener wissenschaftlicher Studien zum Einsatz und wird derzeit als marktreifes Produkt von der Simplana GmbH (www.simplana.de) angeboten.

Hauptfenster von Procalysis: Signal Tabs (oben), Kennwerte (rechts), Datenportal (unten):

Der Skripteditor:

 


 


Blog

jReflectServer 2.0
New version released | 1/4/2017

jReflectServer (formerly jReflect) has been updated. Version 2.0 allows distributed code ... Read More

DocuCast
Instantly backup your files on change | 3/21/2014

DocuCast is a real time file revision and backup system for use in professional and private ... Read More

jReflect: lightweight java web-server & -framework
3/7/2014

jReflect is a very small & lightweight java web-server and -framework for ... Read More

More Blog Entries