Manchmal macht es Sinn, den vollständigen Startup aus der Applikation dem systemd zu melden. Das ist besonders dann sinnvoll, wenn die Initialisierung der Applikation eine gewisse Weile dauert. Dazu wird der Service Type entsprechend umgestellt und aus der Applikation über das systemd-API eine Notification gemeldet, wenn die Initialisierung durchgeführt wurde.
Continue reading »Mit Code Coverage kann geprüft werden, welche Zeilen in einem Programm wie häufig aufgerufen werden. Das hat im Wesentlichen zwei Vorteile:
- Man kann toten Code entdecken
- 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 »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 »Um kurze Reaktionszeiten zu gewährleisten, macht der Gebrauch von Threads Sinn. Unter Qt kann mit der Klasse QThread die Methode QThread::run()
überladen werden. In dieser Methode wird der Thread-Code ausgeführt.
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 »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 »Nach neuesten Erkenntnissen [2] und [3] ist die NSA nicht nur an HTTPS-Verkehr, sondern auch an SSH interessiert. Es ist aber nicht so, dass SSH grundsätzlich geknackt ist, sondern dass SSH-Verkehr nur unter gewissen Umständen entziffert werden kann. Werden entsprechend gute Cipher verwendet, ist auch für die NSA eine Entschlüsselung derzeit nicht möglich. Wie bei HTTPS sollten bei SSH nur die Cipher eingestellt werden, die derzeit als sicher gelten. Das ist auch nötig, da selbst in aktuellen Betriebssystemversionen (z.B. Ubuntu 12.04 LTS und 14.04 LTS) unter anderem auch RC4 möglich ist, was inzwischen als hinreichend unsicher gilt.
Continue reading »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:
- Güte des Zertifikats
- Protokoll-Support, je neuer desto besser und je weniger alte Protokolle, desto besser.
- Art des Schlüsselaustauschs
- Güte der Verschlüsselung
Es kommt häufig vor, dass man beim Apache nicht gegen eine htpasswd-Datei authentifizieren möchte, sondern das gegen eine MySQL-Datenbank erledigen möchte. Unter Ubuntu muss zu diesem Zweck das Paket libaprutil1-dbd-mysql installiert werden:
sudo apt-get install libaprutil1-dbd-mysql
Danach müssen die passenden Module aktiviert werden. Der Restart kann erfolgen, wenn die Konfiguration angepasst wurde:
sudo a2enmod authn_dbdContinue reading »
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 »MySQL lässt den verschlüsselten Zugriff mit SSL zu. Dazu sollte das passende Zertifikat im Ordner /etc/ssl hinterlegt werden.
Continue reading »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.
Die neuesten Nachrichten aus den USA über das Mitlauschen der NSA des nahezu gesamten Internet-Verkehrs haben gezeigt, dass es heißt mit Daten sehr sensibel umzugehen. Es hat sich aber auch gezeigt, dass die bloße Verschlüsselung z.B. über HTTPS alleine nicht ausreicht, da häufig Verschlüsselungsalgorithmen (z.B. RC4) eingesetzt werden, von denen man vermutet, dass die erzeugten verschlüsselten Daten von der NSA in Echtzeit mitgelesen werden können. Insbesondere Sparkassen und Banken in Deutschland bevorzugen leider immer noch RC4. Hier kann man sich z.B. bei Benutzung des Firefox dagegen schützen, indem man hier RC4 ausschaltet. Die Banken bieten häufig genug andere, bessere Verschlüsselungsalgorithmen an, sodass die Seiten weiterhin uneingeschränkt benutzt werden können. Bei itemis habe ich mit meinem Kollegen Dominik Kupschke sämtliche verschlüsselten Dienste auf sichere Algorithmen gehärtet, sodass sie z.B. gar nicht erst RC4 anbieten. Dieser Artikel soll eine Zusammenfassung dieser Ergebnisse liefern und Aufschluss über gute Verschlüsselungsverfahren bieten. Es soll hier nicht auf deren Funktionsweise eingegangen werden, hierfür gibt es genug Quellen im Internet.
Continue reading »Unter Linux bietet sich die Möglichkeit, als Virtualisierungsplattform KVM/qemu/libvirt zu verwenden. Diese Form der Virtualisierung – hier einfach nur kurz KVM genannt – ist äußerst performant und bietet hohe Flixibilität gerade im Rahmen von Software-Entwickungsumgebungen.
Continue reading »O&K-Radlader L25 als Modell
Vor ein paar Tagen war ich bei meinem Freund Tobias Braeker. Er hat sich als Dipl. Ing. (Maschinenbau) einen Kindheitstraum verwirklicht und einen Radlader im Maßstab 1:12 nachgebaut. Der O&K L25 ist aus Edelstahl gefertigt, wiegt stattliche 12 kg und kann bis zu 9 kg heben. Das Modell ist sehr detailliert gearbeitet. Jedes Rad wird durch einen eigenen Glockenankermotor (Faulhaber) angetrieben, die Schaufel wird hydraulisch betätigt. Ein Soundmodul sorgt für Hörgenuss, denn das Motorengeräusch passt zu den gesteuerten Fahrkommandos. Natürlich ist das Modell auch vorbildlich mit Leuchten (Blinker, Rückfahrscheinwerfer, etc.) ausgestattet. Übrigens kann die Schaufel hydraulisch durch ein anderes Anbaugerät ausgewechselt werden.
Die Steuerung ist ein waschechtes Embedded System. Sie beinhaltet den Empfänger, die Motorensteuerung, die Sound- und Lichtsteuerung. Der linke Steuerhebel bedient das Fahrzeug selbst, der rechte Steuerhebel bedient die Schaufel. Die Bedienung braucht natürlich Übung, denn meistens ist man es gewöhnt, mit links die Geschwindigkeit und mit rechts die Lenkung zu bedienen. Es macht aber in jedem Fall viel Spaß, Sand und Steine durch das Gelände zu transportieren.
Tobias verkauft das Modell als Bausatz oder als Fertigmodell. Die Preise können über seine Homepage erfragt werden. Auf YouTube können weitere interessante Filme mit dem L25 betrachtet werden. Für die Zukunft plant er die Konstruktion eines Kippers. Ich bin mal gespannt 🙂
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 »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ß!
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ß!
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 »Auf dem Yakindu-Tag wurde die modell(-bau-)getriebene Eisenbahnsteuerung vorgestellt. Dabei wurde der Gleisplan schon modellgetrieben generiert. Bisher war die Firmware der CAN-Knoten als Referenzimplementierung noch klassisch implementiert. Die Kommandoverarbeitung in der Firmware der CAN-Knoten war ein unschönes Stück Spaghetti-Code. Aus diesem Grund wurde ein Zustandsdiagramm gefertigt, das die Betriebszustände der CAN-Knoten enthält. Die eingehenden Kommandos sind als Zustandsübergänge modelliert. Aus diesem Diagramm wird mit Hilfe von openArchitectureWare der Code für die Kommandoauswertung generiert.
Der generierte Code enthält zwar relativ viele Callbacks und switch/case-Anweisungen und bläht den Binärcode um ca. 1,5 KByte auf. Das ist aber nicht weiter schlimm, da jetzt noch Platz für ca. 18 KByte im Flash des ATmega32 vorhanden ist. Ein weiterer Vorteil ist, dass der generierte Code wesentlich übersichtlicher aussieht. Änderungen und Erweiterungen der Steuerkommandos lassen sich jetzt viel leichter einpflegen. Die Integration des generierten Codes in den bestehenden Firmware-Rahmen gestaltete sich als unproblematisch, da der restliche klassisch implementierte Teil nur aus Service-Methoden zur Ansteuerung der Hardware dient.
Im Januar 2004 hat George W. Bush verkündet, dass die Vereinigten Staaten bis 2018 wieder zum Mond fliegen würden. Die Meldung hat nicht unbedingt Schlagzeilen gemacht, aber man muss sich die Frage stellen, was ein solch komplexes Unternehmen bringen soll. Dazu muss man zu den Ursprüngen der bemannten Raumfahrt Anfang der 60er des letzten Jahrhunderts gehen. Auch damals hat Präsident Kennedy die Absicht samt Termin vor dem Kongress bekanntgegeben. Anlass war der kalte Krieg und der Wettlauf mit der Sowjetunion. Diese war im Raumfahrtprogramm klar vor den Amerikanern. Wir wissen, dass Amerika die Mondlandung erfolgreich absolviert hat. Die Aufwände waren für damalige Verhältnisse unvorstellbar. Fast 400.000 Menschen waren direkt und indirekt daran beteiligt, dass gerademal 12 Astronauten den Mond betreten haben. Welcher Nutzen soll so ein krasses Missverhältnis für die Menschheit bringen?
Continue reading »Was nützen die smartmontools?
Jede Festplatte besitzt einen eingebauten Standard, der vielleicht Jemandem beim Booten als BIOS-Meldung aufgefallen ist, aber noch nicht aktiv genutzt hat: Das S.M.A.R.T. Es ist eine Abkürzung für Self-Monitoring, Analysis and Reporting Technology. Es handelt sich dabei um die Möglichkeit, den Zustand der Festplatte zu überwachen. Hier werden Werte wie Start/Stop-Zyklen, Betriebssystunden und Fehlerzähler verwaltet. Da heutzutage jede Festplatte über diesen Standard verfügt, macht es gerade in IT-Infrastrukturen Sinn, diese Werte permanent zu überprüfen. Selbst bei Desktop-Rechnern oder Laptops macht es Sinn, von Zeit zu Zeit über diesen Standard den Zustand der Festplatte abzufragen.
Continue reading »Prototypen der CAN-Controller
Nach der Entwicklung der CAN-Controller, wird jetzt als nächster Schritt das Bauen der Prototypen angegangen. An ihnen kann man das erste Mal testen, wie sich mehrere CAN-Controller an einem Bus verhalten. Erwartungsgemäß funktioniert der CAN-Bus mit mehreren Teilnehmern gemäß Spezifikation. Auch das Flashen einer neuen Firmware funktioniert einwandfrei. Dabei wird ein Bootloader verwendet, der die Firmware über den CAN-Bus entgegennimmt.
Auf dem Bild kann man vier CAN-Teilnehmer erkennen. Man kann inzwischen auch von den itemis Hardware Labs Lünen sprechen.
Als nächster Schritt wird ein Platinen-Layout entwickelt, um die endgültigen CAN-Controller zu erhalten. Desweiteren werden jetzt die Schaltungen für die Leistungselektronik entwickelt. Schließlich sollen die CAN-Controller ja eine Modellbahn steuern.
Subversion im Alltag
Subversion wird seit acht Jahren entwickelt und hat im Februar 2004 die erste stabile Version 1.0 erreicht. In dieser Zeit wurden viele Entwickler von den Vorzügen von Subversion überzeugt. Wer CVS kennt, wird sich als Entwickler nicht wensentlich umgewöhnen müssen, da das Konzept Copy-Modify-Merge gleich geblieben ist. Administrativ hat sich allerdings Einiges geändert. Die Versionsdaten werden wie in einer Datenbank gespeichert. Die Backend-Schnittstelle ermöglicht es, verschiedene Backends zu verwenden. Der Vorteil gegenüber CVS ist hier, dass die Dateien nicht direkt manipuliert werden können, da sie nur als Binärdaten vorliegen. Bei CVS werden in einer ASCII-Datei Diffs gespeichert, sodass Manipulationen möglich sind.
Continue reading »Mehr Komfort mit C++
In der Elektronikpraxis ist ein Artikel von mir erschienen, der sich mit der Verwendung von C++ im Embedded Systems beschäftigt. Obwohl mit C++ schon seit über 20 Jahren entwickelt wird, hält diese Sprache nur langsam in die Mikrocontroller-Programmierung Einzug. Sie enthält aber viele Sprachkonstrukte die die Qualität der Firmware erheblich verbessern kann und dem Entwickler die Arbeit vereinfacht. Ein Grund für die zögerliche Nutzung liegt im höheren Ressourcen-Bedarf. Viele moderne Mikrocontroller haben diese Hürde aber nicht mehr.
Der gesamte Artikel kann hier eingesehen werden: http://www.elektronikpraxis.vogel.de/themen/embeddedsoftwareengineering/implementierung/articles/120537/