jReflectServer 2.0

New version released | 1/4/2017
jReflectServer (formerly jReflect) has been updated. Version 2.0 allows distributed code execution on a cluster of server nodes. The "master server" randomly forwards requests to the cluster. No special code is needed.
 

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!


jReflect: lightweight java web-server & -framework

3/7/2014

jReflect is a very small & lightweight java web-server and -framework for creating (distributed) pure java web applications.

It has been released as open source under the MIT license.

Go to the project page, or download diretlcy from sourceforge.


RoadReader

Get webpage contents with high-speed despite low bandwidth connection | 2/23/2014

RoadReader is an online proxy HTML-Reader with the goal of tranferring a minimal amount of data with high-speed while preserving most of the readable information. It can be used to surf the web using ultra-low bandwidth connections (e.g. bad mobile connections).

Features

  • Requested webpages are read out on the RoadReader server using an HTTP client
  • Processing
    •  HTML is cleaned from any junk & media
    • Useful information is extracted & content is reformatted (optimized for common news pages)
    • All hyperlinks are adjusted to refer back to the RoadReader server
  • The final HTTP response is compressed using gzip with respect to RFC 2616
Screenshots
 

Link

The server has been shut down for the time being.

 

jSomaPlayer

100% Java player for the soma fm web radio | 1/4/2014

jSomaPlayer has been released: it is an open source pure java player for the soma fm web radio.

I wrote it to build a WiFi radio using a Raspberry Pi, so the player software needed to be able to run in command-line mode. The plan was to get the radio casing a kind of retro look. Since a display (showing stream and title info) would just have looked bad, jSomaPlayer can be queried and controlled remotely from anywhere in the network - with a GUI of course.

If you like to know more about jSomaPlayer, click hereOr go directly to the sourceforge page.

 

Pictures of the WiFi radio

Link to soma fm

SomaFM commercial free internet radio

SimpleRAII

Tiny C++ garbage collection helper library | 1/5/2014

SharedRAII is a tiny garbage collection helper class that eases the use of the RAII idiom (Resource Acquisition Is Initialization). Furthermore, it allows the sharing of resources behind the boundaries of class instances by using reference counting.

I released it some time ago, find out more!

 

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:


Coffeearc Archiver

11/23/2010

Technologien: Java, Swing, XML, Datenkompression, AES Verschlüsselung, Multithreading

Coffeearc ist ein Multiformat Archiver, der im Rahmen eines privaten Projekts enstand, um experimentelle Kommandozeilen Kompressionstools sehr einfach als Plugins einzubinden und damit mehr Funktionalität und Benutzerfreundlichkeit im Sinne eines vollwertigen Archivertools zu schaffen. Experimentelle Kompressionstools können häufig nur einzelne Dateien packen und entpacken. In Verbindung mit Coffeearc bieten sich jedoch ohne größeren Aufwand viele weitere Features, sobald das Tool eingebunden ist. Dies geschieht durch erstellen einer sehr einfachen XML Spezifikation.

Mehr Information gibt es hier.

Coffeearc ist ein Open-Source Projekt und wurde unter GPL Lizenz veröffentlicht. Mehr Infos unter: http://forge.camijo.de/projects/show/coffeearc


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):


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