Random Number Generators in virtuellen Maschinen

Blockierendes /dev/random

Benötigt ein Prozess auf einem Linux Server eine Zufallsquelle, dann kann er hierfür auf die unter Linux Betriebssystemen üblichen Quellen /dev/random und /dev/urandom zurückgreifen. Hier gibt es einen wesentlichen Unterschied: random blockiert, wenn es keine hinreichend zufälligen Werte mehr liefern kann. Die Quelle urandom hingegen liefert weiter Werte, jedoch sind diese mit abfallender Entropie weniger zufällig.

Virtualisierte Server verfügen in der Regel nicht über Hardwareresourcen, welche sich eignen würden, um zufällige Startwerte für einen Zufallsgenerator zu bilden (beispielsweise ein Trusted Platform Modul, TPM). Auf Grund dessen erschöpft sich der Entropiepool hier sehr schnell und /dev/random liefert keine Werte mehr. Dies kann dann, wie in JDBC Zugriff auf Oracle-Datenbank scheitert mit I/O-Fehler: Connection reset (1) beschrieben, auch dazu führen, dass zwei Applikationen nicht verschlüsselt miteinander kommunizieren können.

Weiterlesen

JDBC Zugriff auf Oracle-Datenbank scheitert mit I/O-Fehler: Connection reset

Warum komme ich plötzlich nicht mehr an die Datenbank?

Mit einer unserer Java-Anwendungen hatten wir plötzlich ein unerklärliches Zugriffs-Problem auf die darunter liegende Oracle Datenbank. Nach der Installation der Anwendung auf einer neuen Virtuellen Maschine scheiterte jeder JDBC-Zugriff auf die Datenbank mit dem Fehler:

java.sql.SQLRecoverableException: I/O-Fehler: Connection reset

obwohl der Datenbank Server selbst nicht verändert wurde. Wir konnten den Fehler mit einer einfachen Test Klasse repoduzieren und es wurde schnell klar, es liegt weder an der Anwendung, noch am Datenbank-Server.

Weiterlesen

Von der Persönlichkeit eines (erfolgreichen) Projektleiters

Dieser Beitrag erscheint im Rahmen der Blogparade zur PM Welt 2017: „Klassisch, agil oder egal: Ist ein guter Projektleiter mit jeder Methode erfolgreich?

Selten war ich so hin und her gerissen, wie bei der Suche nach der Antwort auf diese Frage. Je mehr ich über ein Ja nachdachte, so öfter hatte ich Erinnerungen an Erlebnisse, die genau das Gegenteil bedeuteten. Auch bei einem Nein kamen mir sofort unzählige Beispiele in den Sinn, die eindeutig mit Ja zu beantworten sind. Ich wollte mich aber nicht damit abfinden, dass die Antwort lautet: „it depends“.

Dann kam ich zu dem Punkt, an dem ich mich selber fragte: Sind die Soft-Skills (ein Teil der Persönlichkeit) eines Projektleiters nicht auch ein Bestandteil seines individuellen Methodenkoffers?

Ich denke ja. Wer Persönlichkeit hat, geht mit sozialer Kompetenz und methodisch vor!

Weiterlesen

Von der Lösung zum Problem – Impact Mapping mal anders herum

Als Projektmanager bin ich täglich mit den Anforderungen unserer Auftraggeber konfrontiert. Diese werden interessanterweise sehr oft in Form von Lösungen formuliert. Der Bezug zum eigentlichen Problem ist nicht (mehr) transparent.

Der Auftraggeber könnte sehr davon profitieren, wenn der Dienstleister in seinem Sinne mitdenkt und damit zum Projekterfolg beiträgt. Dazu gehört auch die Beurteilung und der Vergleich von zwei Lösungen miteinander. Dies ist die Basis für eine richtige – effektive und effiziente – Wahl.

Vor Kurzem bin ich auf die Methode namens Impact Mapping gestoßen. Das Impact Mapping ist ein mächtiges Werkzeug, welches eigentlich nur eine Richtung kennt. Als ich sie verstanden hatte, versuchte ich diese einfach mal anders herum anzuwenden. Mit ungeahnten Folgen…

Weiterlesen

Geräteübergreifende User Experience bei Industrie 4.0

Wir begleiten den Service-Techniker Björn S. auf dem Weg zu einem Industriekunden mit einer defekten Produktionsanlage. Die Kontaktdaten wie Ansprechpartner und Anschrift erhält er telefonisch von seiner Zentrale. Händisch gibt er die Adresse in sein Navigationsgerät ein und fährt zum Kunden.

Vor Ort angekommen verkabelt er sein Smartphone mit der Sensor-Einheit der defekten Maschine und liest die benötigten Messwerte aus. Den Fehler kann er nicht direkt beheben und beginnt, auf dem kleinen Bildschirm des Telefons einen Fehlerbericht zu verfassen. Der Bericht wird umfangreicher und so will Björn S. auf das Laptop mit der großen Tastatur wechseln. Weil er den Auftrag nicht in unvollständigem Zustand absenden möchte, versendet er den angefangenen Text per E-Mail an sich selbst. Am Laptop übertragt er den Text aus der E-Mail in das Meldungsprogramm und schreibt den Bericht fertig. Er bemerkt: „Ein Foto von dem Schaden wäre für die Zentrale hilfreich“. Björn S. greift sein Smartphone und nimmt ein Foto auf. Wie sendet er dieses in den fast fertigen Bericht am Laptop? Per Bluetooth, als E-Mail-Anlage, per Online-Speicher? Björn S. kennt viele Alternativen, entscheidet sich aber erneut für eine E-Mail an sich selbst. Am Laptop fügt er das Foto ein und sendet den Auftrag ab. Diese Schadensmeldung ist behoben. Mal sehen, welchen Auftrag die Zentrale jetzt für ihn bereitstellt. Er tippt die Adresse für sein nächstes Ziel in das Navigationsgerät …

Service-Techniker Björn S. benutzt die verschiedenen Endgeräte so, wie sie seine Arbeit aktuell unterstützen. Er merkt, dass er beim Wechsel irgendwie ausgebremst wird. So kann er nur bedingt effizient arbeiten, aber kennt für fast alles einen Workaround.

Doch könnte er auch nahtloser und intuitiver arbeiten?

Weiterlesen

Camunda BPM: Testen von Prozessen mit Java Delegates

Motivation

Das Testen von Prozessdefinitionen ist wichtig und fixiert die Erwartungshaltung an die zu entwickelnde Anwendung. Eine sehr schöne Einführung in das Thema  Testautomatisierung für Camunda BPM basierte Anwendungen gibt das Camunda Webinar: https://network.camunda.org/webinars/24

Ein gängiger Ansatz zum Testen von Prozessdefinitionen ist, dass die Implementierungen von Service Aktivitäten gemockt oder komplett gegen eine eigene für Testzwecke angepasste Implementierung ausgetauscht werden und somit oft ein Prozessdurchlauf im Testkontext erst möglich wird. Für CDI basierte Java Delegates ist dies mit Hilfe von Camunda sehr einfach zu bewerkstelligen.

Wenn jedoch das Projektumfeld es nicht erlaubt auf z.B. die präferierte CDI oder Spring basierte Laufzeitumgebung zurückzugreifen, bleibt oft nur der Weg das Binding zwischen Service Aktivität in der Prozessdefintion und der eigentlichen Implementierung mit Hilfe des konkrete Java Class Namen zu vollziehen. Leider gibt es für diesen Ansatz keine Out-Of-The-Box Unterstützung für Tests.

In diesem Artikel zeigen wir, wie man mit einfachen Mitteln die Camunda Engine erweitern kann, um auch klassische Java Delegates so einfach deren CDI Verwandte testbar zu machen.

Weiterlesen

Maschinensteuerung mit OPC und JBoss Middleware im Browser

Industrie 4.0 wird häufig als die vierte industrielle Revolution bezeichnet. Die Revolution, die sich dahinter verbirgt, bezieht sich auf die Kommunikation von verteilten (industriellen) Systemen. Daher umfasst ein großer Teil von Industrie 4.0 die verteilte Steuerung und Überwachung von Maschinen. In der Regel werden Industrieanlagen heutzutage von einer oder mehreren speicherprogrammierbaren Steuerungen (SPS) kontrolliert. In diesem Artikel zeigen wir, wie man mittels JBOSS EAP Middleware (Java EE) aus einem Webbrowser heraus eine Maschine mit SPS-Controller steuern kann [EAP]. Die SPS wird dabei über das herstellerunabhängige OPC-Protokoll gesteuert [OPC]. Hierzu läuft ein OPC-Server auf einem Rechner, der via Netzwerk mit der Maschine verbunden ist. OPC-Server kommunizieren SPS-spezifisch mit der Maschine und bilden die OPC-Schnittstelle nach außen ab. Um die Brücke in die Java-Welt zu schaffen, wird die Open-Source-Bibliothek Utgard aus dem OpenSCADA-Projekt verwendet, die eine Kommunikation mittels OPC-Schnittstelle ermöglicht.

Vollständiger Artikel: http://www.sigs.de/public/ots/2016/JS_OTS_IoT_2016.pdf/Kropp_Puth_Moeller_JS_OTS_IoT_16.pdf

 

MQTT als Brücke – Ein Technologie-Stack für IoT-Anwendungen

Alle IoT-Anwendungen haben ähnliche Herausforderungen auf dem Weg vom eigentlichen Sensor über Gateways bis hin zur Aggregation, Nutzung und gegebenenfalls Weiterleitung von Sensordaten zu bewältigen. Dieser Artikel stellt eine Architektur und insbesondere einen konkreten Technologie-Stack anhand einer Beispielanwendung vor. Als ein Standardprotokoll für das Internet of Things (IoT) hat sich MQTT etabliert. Daher wird hier das IoT mit standardisierter Middleware über MQTT integriert. Es wird ein kombinierter Temperatur- und Luftfeuchtigkeitssensor mit dem Bosch XDK und einer MICA-Box der Firma Harting eingesetzt. Ein maschinennaher MQTT-Broker und die JBoss-Middleware bringen diese zwei Welten zusammen.

Vollständiger Artikel: http://www.sigs-datacom.de/uploads/tx_dmjournals/kropp_JS_04_16_M7OU.pdf