Count Down for OSDC 2019

Only two more weeks to go until OSDC 2019! Your guide to happiness:

Mark the date. Grab your ticket. And start with getting excited!

To be fully prepared, here is your OSDC to do list:

  1. Grab your conference ticket – hurry, it’s already the last tickets call!
  2. Check out the conference agenda and create your very own conference program.
  3. Sign up for our “2019 Extra”: the free workshop on May 13 with James Shubin.
  4. See what we have planned for this year’s Dinner & Drinks event – Just this much: it’s getting wet …
  5. For the ultimate OSDC mood: take a glance at last year’s photos and start dreaming.

Well, there’s a lot for you to do – you better start right away! See you in Berlin!

Pamela Drescher
Pamela Drescher
Head of Marketing

Pamela hat im Dezember 2015 das Marketing bei NETWAYS übernommen. Sie ist für die Corporate Identity unserer Veranstaltungen sowie von NETWAYS insgesamt verantwortlich. Die enge Zusammenarbeit mit Events ergibt sich aus dem Umstand heraus, dass sie vor ein paar Jahren mit Markus zusammen die Eventsabteilung geleitet hat und diese äußerst vorzügliche Zusammenarbeit nun auch die Bereiche Events und Marketing noch enger verknüpft. Privat ist sie Anführerin einer vier Mitglieder starken Katzenhorde, was ihr den absolut...

Neu im Shop: RackMonitoring Kits von TinkerForge

Ab heute können sich unsere Kunden über einen neuen Hersteller bei uns im Shop freuen: Zur Überwachung von Serverräumen bieten wir nun zwei RackMonitoring Kits aus dem Hause TinkerForge an.

TinkerForge ist ein mittelständisches Unternehmen aus Ostwestfalen-Lippe, das Mikrocontrollerbausteine herstellt, die sogenannten Bricks. Die Idee zu diesen Bricks hatten die beiden Gründer Bastian Nordmeyer und Olaf Lüke, nachdem sie – auf der Suche nach Mikrocontrollermodulen für autonome Fußballroboter – keine offenen, mit verschiedenen Programmiersprachen ansteuerbaren Bauteile gefunden haben. Was 2011 noch mit einer kleinen Produktlinie begann, ist nun ein extensiver Katalog an Controllern und Modulen, die sich in zahlreichen Programmiersprachen ansteuern lassen, und sich durch ihre modulare Bauweise schier endlos verknüpfen lassen.

 

 

In enger Zusammenarbeit wurden nun zwei RackMonitoring Kits erstellt, die vor allem Kunden mit individuellen Ansprüchen gerecht werden. Aufgrund der hohen Modularität der einzelnen Komponenten lassen sich TinkerForge Produkte immer wieder neu zusammensetzen. Des Weiteren zeichnet sich TinkerForge durch offene Schnittstellen für Programmierer aus und fällt damit klar in die Kategorie Open Source. Zu den Kits gibt es natürlich auch ein entsprechendes Monitoring Plugin auf exchange.icinga.com.

Folgende Features erwarten Sie bei unseren RackMonitoring Kits PTC4 und PTC8:

  • Modulare Low-Cost Serverraum-Überwachung
  • Lieferumfang:
    • vormontiertes 1HE-Gehäuse passend für 19″ Racks
    • jeweils ein integrierter Sensor für Temperatur, Luftfeuchtigkeit und Umgebungslicht
    • ein pt100 Temperaturfühler mit 1 m Länge
    • Anschlüsse für 7 weitere pt100 Temperaturfühler (nicht enthalten)
    • Anschlüsse und Adapter für Monitor und Keyboard
    • USB-Netzteil
  • Variante PTC4 erlaubt den Anschluss von bis zu 4 pt100 Temperaturfühlern, Variante PTC8 bis zu 8 pt100 Temperaturfühler
  • Erweiterbar: Weitere Sensoren und Ein-/Ausgabe Module können einfach hinzugesteckt werden
  • Stromversorgung per Ethernet (PoE) oder USB
  • Open Source Soft- und Hardware mit Icinga und Nagios Unterstützung
  • APIs für diverse Programmiersprachen verfügbar:
    • C/C++, C#, Delphi/Lazarus, Go, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, MQTT, Perl, PHP, Python, Ruby, Rust, Shell, Visual Basic .NET

Wie in der Feature-Liste breits erwähnt wurde, können die RackMonitoring Kits individuell erweitert werden. Für unsere Kunden heißt das, dass hier bzgl. Bricks, Bricklets und anderen Modulen aus dem Vollen geschöpft werden kann – egal, ob es sich um Sensoren, Netzwerk, Funk, Schalter oder Displays handelt. Gerade im Bereich Sensoren sind TinkerForge hier vorbildlich aufgestellt – von Luftqualität (Staub, CO2), räumliche Wahrnehmung (Distanz, Bewegung), Akustik (Schalldruck), Licht (Helligkeit, UV-Einstrahlung) und mehr.

Bei Fragen zum Produkt oder bzgl. Erweiterungs- oder Umbaumöglichkeiten können Sie sich wie gewohnt per Mail an uns wenden – wir helfen gerne weiter! Und wer gerne noch ein bisschen weiterlesen möchte zum Thema TinkerForge, dem sei unser erster Blogpost dazu empfohlen, in dem es um die Inbetriebnahme einer Wetterstation geht:

TinkerForge-Basteln Teil 1: Auspacken und Einrichten!

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...

Einführung in Redis Streams

Redis
Redis Streams ist ein neues Feature, das Log-ähnliche Datenstrukturen auf abstrakte Weise modelliert und mit Redis 5.0 eingeführt wurde. Einfach gesagt, ist ein Stream in Redis eine Liste, in der Einträge angehängt werden. Jeder Eintrag hat eine eindeutige ID und besteht aus Schlüssel-Werte-Paaren. So können Nachrichten tatsächlich komplexe Strukturen haben, anstatt stringifizierte Versionen von JSON-Objekten zu sein. Im Gegensatz zu Pub/Sub-Nachrichten, die nach dem fire-and-forget Prinzip funktionieren, bewahren Redis-Streams Nachrichten auf Dauer. Das macht Redis Streams ideal um z.B. Chat-Systeme, message broker oder message queues zu implementieren.

Stream Grundlagen

Die grundlegenden Stream-Operationen sind natürlich Lesen und Schreiben. Um Nachrichten in einen Stream zu schreiben, gibt es den XADD-Befehl:

XADD mystream * key1 value1 key2 value2

Dieser Befehl fügt eine Struktur wie die folgende in einen Stream namens “mystream” hinzu:

{
"key1": "value1“,
"key2": "value2"
}

Wie eingangs erwähnt, hat jede hinzufügte Nachricht eine eindeutige ID, die das zweite Argument der XADD-Operation ist. In unserem Fall haben wir * übergeben, damit Redis die ID automatisch generiert. In den meisten Anwendungsfällen reicht das völlig aus. Man könnte die ID aber auch selbst angeben.

Daten aus Streams abrufen

Nachdem wir mit XADD einen Stream erstellt und Nachrichten hinzufügt haben, können wir jetzt Daten aus dem Stream abrufen. Dabei gibt es verschiedene Zugriffsmethoden. Im ersten Beispiel abonnieren wir mit dem XREAD-Befehl einen Stream und warten auf neue Nachrichten:

XREAD BLOCK 0 STREAMS mystream $

Auf den ersten Blick mag das wenig einleuchtend sein, also zerlegen wir den Befehl kurz in seine Komponenten:

  • XREAD ist der Befehl zum Abrufen von Einträgen.
  • BLOCK 0 bedeutet, dass der Client endlos blockiert, wenn keine Einträge vorhanden sind. Geben wir hier anstatt 0 beispielsweise 1000 an, tritt nach 1000 Millisekunden ein Timeout auf, wenn nichts eingeht.
  • STREAMS ist eine Direktive, mit der wir eine Liste von Streams gefolgt von einer Liste von IDs angeben, von denen wir lesen wollen. In unserem Beispiel lesen wir von einem Stream mit der Pseudo ID $, die weiter unten erklärt wird.
  • mystream ist der Name des Streams, von dem wir lesen wollen.
  • $ ist eine Pseudo-ID, die jede neue Nachricht liefert, die ankommt nachdem der Befehl abgeschickt wurde. Das bedeutet, wir möchten alle vorherigen Einträge im Stream ignorieren und konzentrieren uns nur auf Nachrichten, die von nun an eintreffen.

Da wir im Moment keine neuen Nachrichten einliefern, blockiert der Befehl endlos, wenn wir ihn jetzt abschicken.

Wir ändern obigen Befehl nun folgendermaßen ab, um alle Nachrichten aus unserem Stream zu lesen:

XREAD STREAMS mystream 0

Wie wir sehen, müssen wir beim XREAD-Befehl nur die STREAMS Direktive angeben, um Ergebnisse zu erhalten. 0 ist wieder eine Pseudo-ID, die sozusagen den Beginn eines Streams angibt.

Wenn wir nur eine bestimmte maximale Anzahl von Nachrichten lesen wollen, erweitern wir obigen Befehl um die COUNT Option:

XREAD COUNT 2 STREAMS mystream 0

Das sind auch schon die Grundlagen um mit XADD Nachrichten in einen Stream zu schreiben und mit XREAD Nachrichten aus Streams zu lesen.

In einem folgenden Blogpost werden wir uns anschauen, wie man Clients schreibt, die alle Nachrichten lesen können. Auch wenn diese nicht verbunden waren, als die Nachrichten im Stream ankamen. Und weitere Features wie den XRANGE-Befehl und Consumer Groups.

Eric Lippmann
Eric Lippmann
Lead Senior Developer

Eric kam während seines ersten Lehrjahres zu NETWAYS und hat seine Ausbildung bereits 2011 sehr erfolgreich abgeschlossen. Seit Beginn arbeitet er in der Softwareentwicklung und dort an den unterschiedlichen NETWAYS Open Source Lösungen, insbesondere inGraph und im Icinga Team an Icinga Web. Darüber hinaus zeichnet er für viele Kundenentwicklungen in der Finanz- und Automobilbranche verantwortlich.

PHP-Frameworks – Was sie sind und für warum sie gebraucht werden.

Im Rahmen eines Projekts woran ich selber arbeiten darf, bin ich oftmals auf den Begriff Framework gestoßen und habe mir dann erklären lassen für was wir eigentlich genau dieses Framework benutzen und warum kein anderes.
Daher möchte ich ein paar Frameworks aufführen, sie zusammenfassen und natürlich Kund darüber geben, was sie machen.
Zu allererst möchte ich mit der allgemeinen Defintion von „Framework“ anfangen. Let‘s google it.
Ein Programm-Code besteht aus vielen kleinen Bausteinen. Um das Programmieren zu erleichtern und Zeit zu sparen, gibt es sogenannte Frameworks. Sie sind keine eigenständigen Programme, sondern stellen ein Programmiergerüst für den Entwickler.

Nun kommen wir zum Smart Framework.
Hierbei handelt es sich um ein Open-Source-Produkt, welches dem Model-View-Controller-Datenmodell folgt. Dieses Projekt wurde 2009-2011, von einem Software-Unternehmen, das bereits 15 Jahre Erfahrung im Web hat, gestartet. Der Release-Termin war im Februar 2012 und es wird bis dato noch relativ oft aktualisiert. Der letzte Stand der Aktualisierung ist der 25. April 2018 mit der Version 3.7.5. Zu den wichtigsten Funktionen gehört die reichhaltige Unterstützung verschiedener Typen von Datenbanken wie MySQL, SQLite, MongoDB, PostgreSql sowie andere JavaScript-Komponenten, integrierte Map-Handler(Google Maps und Bing Maps) und Redis für das Caching.
Unter anderem meint der Ersteller des Frameworks, dass dieses um einiges schneller ist als andere Frameworks wie Laravel und Zend. Ein Grund es mehr auszuprobieren.

 

wurde 2005 von Fabien Potencies, CEO bei SensioLabs und Blackfire.io, gestartet. Symfony besteht aus mehreren PHP-Komponenten, mehr als 30, die ein Framework bilden. All diese Komponenten hier aufzulisten, wäre einfach zu viel aber unter diesen 30 erweisen sich ein paar als interessant und es lohnt sich diese hier zu erwähnen. Dazu gehört unter anderem die Cache-Komponente, die ein erweitertes PSR-6 und PSR-16 zum Hinzufügen von Cache zu den Anwendungen bereitstellt. Konsolenkomponenten, die selbsterklärend sind, und eine PHPUnit Bridge, welche Legacy-Tests und veralteten Code meldet. Zuletzt noch Sicherheits-, Übersetzungs-, Routing- und Validierungskomponenten. Ebenfalls einzigartig ist die Dokumentation. Diese ist von dem Ersteller des Projekts sehr detailliert ausgeführt und es wird jede einzelne Komponente erklärt.
 

TwistPHP
Dieses Framework wurde zuerst als privates Projekt entworfen und hat sich dann während der Verbesserung, im Juli 2014 als Repository im GitHub wieder gefunden. Die erste offizielle Freigabe war aber wiederum im November 2014.
TwistPHP macht die Benutzerfreundlichkeit zu seinem Markenzeichen, da es ein kleines Framework ist. Hierbei handelt es sich auch wieder um ein Open-Source-Framework, welches unter der GNU-Lizenz angeboten wird.
Im Laufe der Zeit hat sich die Software weiterentwickelt und hat letztendlich mit der Version (3.0.5) eine vollständige MVC-Architektur, ein objektorientiertes Design, eine brandneue Methode zur Verbindung mit der Datenbank und zur Erstellung von MySQL-Abfragen, wobei die Art und Weise, wie es aufgebaut wurde, die Erweiterbarkeit und Zuverlässigkeit verbessert.


Fangen wir am Ursprung an. TYPO3 ist ein open-source-entwickeltes CMS, welches 1998 veröffentlicht wurde. TYPO3 wird genutzt um Websiten zu erstellen und wurde von mehr als 300 Mitwirkenden verbessert und aktuell wurde es mehr als 500.000 Mal installiert (Stand Januar 2019). Das Team von TYPO3 wollte ein modernes Produkt schaffen, welches unabhängig von TYPO3 sein sollte. Im August 2011 folgte dann die erste Beta von TYPO3 Flow sowie ein Open-Source-Produkt. Das Prinzip des Codings, vom neuen Framework, richtet sich nach dem MVS-Paradigma, Aspect Oriented Programming, Domain Driven Desgin und den Test Driven Development. Fluid, ein Template, ist ein weiteres Feature von TYPO3 Flow. Fluid unterstützt alle logischen Strukturen einer Programmiersprache wie zum Beispiel Iterationen und Schleifen usw., indem es eine einfache Syntax bietet und PHP in den Template-Dateien vermeidet.

Zu guter Letzt eines der beliebtesten Frameworks das:
Der Beliebtheitsgrad lässt sich anhand der hohen Installationszahl (mehr als 379 Millionen) festhalten, obwohl es einige Streitigkeiten über Zend gibt. Das Open-Source-Projekt wurde im März 2006 erstmals veröffentlicht und hat eine BSD-Lizenz (Freie Verwendung der Software). Nach Version 2.5 beschlossen die Entwickler ein modulares Produkt zu entwerfen, sie so in mehrere Komponenten aufzuteilen und dadurch es zu einer Sammlung von PHP-Paketen wurde. Mehr als 60 Komponenten und ein Plug-in stehen zur Auswahl. Darunter gehört die Authentifizierung, Grypt, Json, Mail, Math, Paginator, Serializer und Validator. Ein weiterer Vorteil der Verwendung von Zend ist die Prädisposition für das Test Driven Development. Zend implementiert Zend_test, was PHPUnit verwendet. Es erlaubt einem Controller, Modelle und Bibliotheken zu verwenden. Um PHPUnit in das Projekt zu implementieren, braucht man Zend_tool, das standardisierte Scaffolding Utility von Zend.

Fazit
Auf die Frage „Und welches ist jetzt das beste PHP-Framework?“ gibt es keine Antwort aber wenn man vor der Auswahl steht und nicht weiß welches Framework man nun benutzen soll helfen folgende Fragen.

  • Was will ich entwickeln?
  • Wann ist meine Deadline?
  • Wie schnell soll mein Projekt verfügbar sein?
  • Wie viel Zeit bleibt mir, um die neue Syntax zu erlernen?
  • Gibt es eine gute Dokumentation, aus der ich lernen kann?

Hilfreich ist es diese Fragen sich vor jedem Projekt zu stellen und dann zu schauen welches Framework den nun den gestellten Fragen Antwort leistet.

Niko Martini
Niko Martini
Junior Developer

Egal ob zu Hause oder bei NETWAYS, Niko hockt gern vor dem PC. Ab und zu fährt er auch mal mit seinem Dad auf eine Fahrradtour quer durch Deutschland. Nach seinen ersten Tagen bei uns, in denen er NETWAYS, die Kollegen und Tools näher kennengelernt hat, freut er sich besonders auf die kommenden Jahre.

ncurses – TUI für Unix-Derivate

Mit ncurses (Abk. für new curses) können wir uns eine TUI (=text-based user interface) in den verschiedensten Textterminals oder Terminalemulatoren darstellen lassen. Als freie C-Programmbibliothek unter der MIT-Lizenz, fällt ncurses als Open Source Software auch mit in das GNU-Projekt.

Ich habe mich ein wenig mit ncurses beschäftigt und einige hilfreiche Anwendungen gefunden, die zusätzlich sehr schön in TUI angezeigt werden. Dazu muss ich euch jedoch erst durch die Installation von ncurses führen:
(Debian/Ubuntu Linux)
$ apt install ncurses-base

(CentOS/Fedora)
$ dnf install ncurses-devel

Nun habe ich mir einige Tools installiert die ich euch unbedingt zeigen möchte.

Glances

Mit Glances ist es möglich, Systeminformationen auszulesen. Dateisystem, Netzwerk, Hardware-Komponenten und mehr, können hier im Vergleich zu top und htop in Echtzeit ausgelesen und angezeigt werden.

$ apt install glances

 

Midnight Commander

Der Midnight Commander ist ein freier Klon des Norton Commander (DOS-Tool). Er ist einer der bekanntesten Konsolenprogramme für Linux und zeigt eine zweispaltige Ansicht unserer Archive. Auch ein Zugriff auf Netzwerkserver ist möglich.

$ apt install mc

NCDU

Ein Festplatten-Dienstprogramm für Unix-Systeme. Hat die gleichen Funktionen wie das Dienstprogramm du, verwendet aber eine Textbasierte Benutzeroberfläche.

$ apt install ncdu

Bastet

Für alle Gamer gibt es hier noch einen Tetris-Klon. Freie Tastaturbelegung sowie ein easy/hard mode.

$ apt install bastet

 

Aleksander Arsenovic
Aleksander Arsenovic
Junior Consultant

Aleksander macht eine Ausbildung zum Fachinformatiker für Systemintegration in unserem Professional Service. Wenn er nicht bei NETWAYS ist, schraubt er an seinem Desktop-PC rum und übertaktet seine Hardware. Er ist immer für eine gute Konversation zu haben.

Und, was gibts heute zu Mittag?

Kurz vor 10:00 an der Kaffeemaschine, die Leute beginnen langsam ein kleines Hüngerchen zu verspüren und es wird diskutiert was denn heute in den Lunchshop kommt.
… Lunchshop?

Wir hier bei Netways haben ein cooles System entwickelt, das es für uns erleichtert zusammen Essen zu bestellen.
Wir haben nämlich als eher mittelgroßes Unternehmen nicht den Luxus einer Kantine wie so manch andere.
Stattdessen haben wir uns selbst geholfen und ein kleines Tool zusammengebastelt, das ich heute vorstellen möchte:

Der Lunchshop!

Grundsätzlich handelt es sich dabei um ein Webinterface, das helfen soll die Arbeitsabläufe beim Essen bestellen zu automatisiere.
Die “Händler” können einen Laden anbieten, bei dem sie bestellen wollen und die restlichen Mitarbeitenden können sich dann in die Bestellung einklinken.
Das spart Lieferkosten und schont die Umwelt (zumindest ein bisschen mehr als wenn ein Jeder für sich bestellt).
Und wir faulen IT-ler müssen uns nicht irgendwo hin bewegen um an Futter zu kommen!

Ursprünglich entwickelt und administriert von einem unserer ehemaligen Kollegen wird der Shop nun von einem Grüppchen von Freiwilligen weiter geführt.
Ich selbst bin einer der Admins und Händler. Ich versuche ein bis zwei mal die Woche einen Laden aus unserer Liste in den anzubieten, wir haben Pizza, Fitness-Food, Pasta, Asiatisch, Burger, Mexikanisch, Indisch und vieles mehr!

Die Bank!

Alle Geldbewegungen die durch das gemeinsame Bestellen entstehen sind automatisiert und laufen über unser internes Banksystem ab.
Die im System registrierten haben ein eigenes Konto, auf das sie einzahlen, von dem sie auszahlen und mit dem sie (gesetzt sie haben genug guthaben) auch bestellen können.
Das Geld wird wird von allen Bestellern automatisch abgezogen und dem Händler gut geschrieben. Dieser kann dann entweder das Geld auszahlen um damit für die Bestellung zu bezahlen, oder es als Guthaben behalten.

Der Bestellablauf!

Die App zum Anfassen!

Natürlich gibts das ganze Open Source, zum anschauen, forken und selbst verwenden!
https://github.com/gunnarbeutner/shop-app

 

Feu Mourek
Feu Mourek
Developer

Feu verbrachte seine Kindheit im schönen Steigerwald und kämpfte sich bis zum Abitur durch die Schule. Seit September 2016 unterstützt es die Development Abteilung bei NETWAYS als Developer und UX Designer und widmet sich dort dem Web Development. Seine Freizeit verbringt es hauptsächlich in den virtuellen Welten von 'Dota 2' und diversen anderen Games, an der Kletterwand in der Boulderhalle, oder damit, mit Freunden und Kollegen Brett- und Pen and Paper Rollenspiele zu spielen.