Digging up hidden information for a scavenge hunt?

Since today is Ascension Day – which is a public holiday here in Germany – I figured, why not write a post that is also relevant to our readers who have the day off?

So what could be relevant and fun?
Most of the people here who read this blog probably work in tech. And a trait, that I found that a lot of people working in tech have, is enjoying solving puzzles – be it on the computer or in the outside world. I got introduced into something that appeals to me in exactly that way: Geocaching – Mystery caches (yes, yes, I know, geocaching is sooooo 2015 – but solving puzzles is always going to be cool!)

Map of Nuremberg with about 200 caches marked on it

Map of Nuremberg with caches marked on it – each icon is a hidden treasure

A little explanation what that even is (stolen from Wikipedia):
Geocaching is an outdoor recreational activity, in which participants use a GPS receiver or mobile device and other navigational techniques to hide and seek containers, called “geocaches” or “caches”, at specific locations marked by coordinates all over the world.
Mystery/puzzle caches require one to discover information or solve a puzzle to find the cache. Some mystery caches provide a false set of coordinates with a puzzle that must be solved to determine the final cache location. In other cases, the given location is accurate, but the name of the location or other features are themselves a puzzle leading to the final cache. Alternatively, additional information is necessary to complete the find, such as a padlock combination to access the cache.

 

text: Ugh? Ugh. Ugh? Ugh. Ugh? Ugh. Ugh? Ugh. Ugh? Ugh. Ugh! Ugh! Ugh? Ugh! Ugh. Ugh? Ugh! Ugh! Ugh! Ugh! Ugh! Ugh. Ugh. Ugh? Ugh! Ugh! Ugh! Ugh! Ugh! Ugh! Ugh! Ugh. Ugh. Ugh? Ugh. Ugh. Ugh. Ugh. Ugh! Ugh. Ugh. Ugh? Ugh. Ugh. Ugh. Ugh. Ugh. Ugh. Ugh! Ugh. Ugh! Ugh! Ugh! Ugh! Ugh!

Or about 100 lines that look something like this

So what does that have to do with the tech world?
Well, it’s the way people hide the coordinates.

 

The difficulty of the riddle and the reachability of the box is measured with a scale from 1 – 5 stars. If you’re looking for a real challenge in solving riddles, you want to go for caches with the rating D3 – D5 (D stands for difficulty here).

Sometimes you just get a cryptic cache description with pretty much only “[Coordinates]: 0e9bfe8f349ed4b75d480743d1ab55e6e83c8176” as a hint

Others just consist of an image. Images can hold a lot of information – if you know where to look.
Steganography – the practice of concealing a file, message, image, or video within another file, message, image, or video – is also often used to hide coordinates from plain view!

I really enjoy geocaching because it’s a nicely balanced pastime. I get to use both my brain and my legs! (A lot of the caches are also wheelchair accessible too though)
Sometimes you even get to see some really cool new places you would have never gone to!

If this sounds like something you could enjoy – just check your area at geocaching.com or the open source alternative opencaching.de where you can select your preferred language and country in the header. Both are using OpenStreetMap for their maps.

My preferred app for caching is c:geo which is an open source app for Android – check out their project on github.

Look for the little  '?' icon  icons for mystery caches

 

Caches I hinted in my post:
1: Password Swordfish
2: Ugh! Ugh?
3: Nano
4: The series: How Do I Solve These #@&%$ Puzzles?!!

Feu Mourek
Feu Mourek
Developer

Feu verbrachte ihre Kindheit im schönen Steigerwald und kämpfte sich bis zum Abitur durch die Schule. Seit September 2016 unterstützt sie nun im Rahmen ihrer Ausbildung zum Fachinformatiker die Development Abteilung bei Netways und widmet sich dort dem Web Development. Ihre Freizeit verbringt sie hauptsächlich in den virtuellen Welten von 'Dota 2' und diversen anderen Games, an der Kletterwand in der Boulderhalle oder damit ihren Freunden und Kollegen auf die Nerven zu gehen.

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 sich 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.