Dez 042020
 

Mit Code Coverage kann geprüft werden, welche Zeilen in einem Programm wie häufig aufgerufen werden. Das hat im Wesentlichen zwei Vorteile:

  1. Man kann toten Code entdecken
  2. Man kann durch die sog. Testabdeckung feststellen, ob wirklich alle Code-Teile beim Test durchlaufen werden.

Gerade der letzte Punkt ist wichtig, da man mit der angestrebten Testabdeckung von 100% jeden erdenklichen Testfall – auch im Fehlerfall – durchlaufen hat. Man kann dadurch (theoretisch) vollständig testen, ob sich der geprüfte Code wie gewünscht verhält.

Continue reading »
Apr 132020
 

Qt erlaubt es, durch hierarchische Anordnung von Layouts das Aussehen zu optimieren. Beim Anlegen der Layout-Hierarchie geht man Bottom-up vor. Dabei werden erst alle GUI Elemente wie Push-Buttons, Radio-Buttons, Checkboxes, etc. auf die Dialogfläche grob angeordnet. Speziell bei Radio-Buttons gibt es noch zusätzlich die Gruppierung zu beachten. Innerhalb einer Gruppierung kann nur ein Radio-Button aktiviert sein. Es natürlich möglich, mehrere Radio-Groups anzulegen.

Continue reading »
Mai 172016
 

OpenJDK 7 kam ohne Probleme mit 4 KBit breiten Diffie-Hellman-Schlüsselaustausch klar. Aus unbekannten Gründen ist das in OpenJDK 8 nicht mehr der Fall. Da Apache 2.4 die DH-Schlüsselbreite aus der Schlüsselbreite des SSL-Zertifikats übernimmt, kann man mit OpenJDK 8 keinen Kontakt mit Webservern aufnehmen, die eine entsprechend hohe SSL-Sicherheit bieten.

Continue reading »
Mrz 052016
 

YAKINDU statechart tools are a pretty nice tool to model statemachines. You can generate code for C/C++ and Java out of the model. Further you can validate and simulate your statemachine to verify the behaviour. If you want to integrate your statemachine into a Qt application the concept of signals and slots fits perfectly into the in and out events of the statechart definition language of the YAKINDU SCT. My new custom Qt generator links both concepts together. It generates a C++ class which links between the C++ class generated from the C++ generator of YAKINDU SCT and the custom implementation code which must be implemented for custom behaviour of your application.

Continue reading »
Sep 182014
 

Der SSL-Server-Test bei den Qualys SSL Labs hat sich als de facto Standard zum Testen der SSL-Verschlüsselung entwickelt. Es werden vier prozentuale Ratings ermittelt und eine abschließende Qualitätsstufe. Die vier Ratings lauten:

  1. Güte des Zertifikats
  2. Protokoll-Support, je neuer desto besser und je weniger alte Protokolle, desto besser.
  3. Art des Schlüsselaustauschs
  4. Güte der Verschlüsselung
Continue reading »
Aug 312014
 

Um einen möglichst hohen Performance Gewinn unter MySQL zu erzielen, sollte die Größe der Buffer Pools mindestens die Größe der Datenmenge umfassen. So funktioniert MySQL wie eine in-Memory-Datenbank. Für die Default Storage Engine InnoDB ist dafür der Parameter innodb_buffer_pool_size verantwortlich. Mit dem Tool mysqltuner kann man noch Hinweise bekommen, wie man noch weitere Parameter anpassen sollte.

Continue reading »
Mrz 192014
 

Seit geraumer Zeit entwickele ich mit meinem Kollegen Dominik Pieper an einem JEE-Generator, mit dem es auf einfache Art und Weise möglich ist, eine CRUD-Webanwendung zu generieren. In einem kleinen Einführungsvideo stelle ich einen kleinen Einstieg in den Generator dar.

Der generierte Code ist eine JEE7-Applikation basierend auf JSF 2.0 und EJB 3.1. Alle Masken können vollständig generiert werden. Zusätzlich kann eigener Code zusätzlich hinzugefügt werden. Somit wird eine maximale Flexibilität gewährleistet. Weitere Features sind:

  • Rollenbaseierte Sicherheit mit JAAS
  • Lokalisierung und Internationalisierung
  • Vollständige Eclipse-Integration
  • Deployment in JBoss ab Version 7 bis aktuell
  • Content Assist und Quick Fixes
  • EMail Support
  • File Upload Support
  • u.v.a

Die Dateien für den XHTML-Presentation Layer werden nur generiert, wenn die dazu benötigte Dateien noch nicht vorhanden sind. Bestehende Dateien werden durch den Generator nicht überschrieben. Die Action Handler und DAOs werden gemäß dem sog. Generation Gap Pattern generiert. Die abstrakten Basisklassen werden bei jedem Generatorlauf neu generiert, während die konkreten Klassen für die Implementierung der Business Logik nur einmal bei Fehlen generiert werden. In der abstrakten Basisklasse der DAOs werden z.B. die konfigurierten Persistenzkontexte untergebracht.

Installation

Die JEE-Generatoren sind in Java implementiert, daher muss die Java Runtime Environment installiert sein.

Es gibt zwei einfache Wege, die JEE-Generatoren ans Laufen zu bringen. Eine vorkonfigurierte Eclipse-Distribution ist bereits mit allen notwendigen Plugins vorinstalliert verfügbar. Alternativ kann über eine Update Site ein Eclipse mit allen notwendigen Plugins nachinstalliert werden.

Vorkonfiguriertes Eclipse

  • Download der Distribution zum passenden Betriebssystem.
  • Das Archiv muss im Verzeichnis Ihrer Wahl ausgepackt werden. Windows Benutzer sollten ein Verzeichnis möglichst in der Nähe des Wurzelverzeichnisses wählen, da Windows nur komplette Pfade mit maximal 256 Zeichen akzeptiert und Eclipse eine tiefe Verzeichnisstruktur benutzt.
  • Danach kann Eclipse gestartet werden und der gewünschte Workspace ausgewählt werden.

JEE-Generatoren von der Update Site installieren

Wenn Eclipse läuft:

  • Im Menüpunkt Help -> Install New Software… aus der Menüleiste und Add… kann die Update Site angegeben werden. Diese Site fasst alle benötigten Komponenten und Abhängigkeiten für die JEE-Generatoren zusammen.
  • Der passende JEE-Generator kann aus der Kategorie JEE-Generators ausgewählt werden und durch wiederholtes Klicken von Next und einem abschließenden Finish kann die Installation abgeschlossen werden.
  • Nach einem kurzen Download und Restart des Eclipse stehen die JEE-Generatoren zum Gebrauch zur Verfügung.
Feb 092011
 

Linux bietet auf x86-Architekturen die Möglichkeit, statt der normalerweise 4K großen Memory Pages auch 2M große Pages zu nutzen. Der Vorteil hierbei ist, dass die MMU der CPU deutlich seltener ein Address Mapping von virtuellem Speicher auf die physikalische Adresse durchführen muss. Dieser Vorgang wird auch Table Walk genannt. Er hat den Nachteil, dass der Zugriff auf diese Mapping-Tabellen am Cache vorbei durchgeführt werden muss und somit sehr langsam ist. Das Ergebnis des Table Walks landet seinerseits in einem speziellem Cache, dem sog. TLB. Es bietet sich unter Linux an, Software mit hohem Speicherverbrauch diese Huge Pages oder Huge Tables nutzen zu lassen. Gerade Server-Prozesse wie JBoss fallen da schnell ins Auge.

Continue reading »
Jul 092010
 

Die oAW-Tools sind ab sofort auf SourceForge als Open Source verfügbar. Die oAW-Tools beinhalten eine Reihe kleiner Komponenten und Beautifier. Die Startseite ist unter http://sourceforge.net/apps/trac/oaw/ erreichbar. Der Quellcode kann aus dem Subversion-Repository heruntergeladen werden. Ferner gibt es noch eine Update-Site, die direkt aus dem Eclipse benutzt werden kann.

Viel Spaß!


Eisenbahnsteuerung jetzt Open Source

 ATmega, CAN-Bus, Eclipse, Eingebettete Systeme, Linux, MDSD, Modellbau, Software  Kommentare deaktiviert für Eisenbahnsteuerung jetzt Open Source
Jul 072010
 

Das Projekt der modell(-bau-)basierten Eisenbahnsteuerung ist ab sofort auf SourceForge als Open Source verfügbar. Die Startseite ist unter http://sourceforge.net/p/mrw/wiki/Home/ erreichbar. Der Quellcode und die Schaltungen können aus dem Subversion-Repository heruntergeladen werden.

Viel Spaß!

Apr 012010
 

Seit der Veröffentlichung von EJB3.0 ist der Umgang mit Persistenz erheblich vereinfacht worden. Hintergrund ist die Verwendung sog. POJOs (Plain Old Java Object), die den Entwicklungsvorgang erheblich vereinfachen. Völlig in den Hintergrund ist dabei die Verwendung sog. POPOs (Plain Old Paper Object) geraten. Gerade diese Variante wurde schon von den alten Ägyptern eingesetzt. Es ist der Nachweis gelungen, dass die Persistenz über mehrere tausend Jahre erhalten bleibt. Den Beweis, die Persistenz über diesen Zeitraum aufrecht erhalten zu können, müssen die POJOs noch erbringen, ist die damit einhergehende Technologie erst ein paar Jahrzehnte alt.

Continue reading »