Hackday: Sensoren für den Durchblick

Etwa zwei Mal pro Jahr veranstaltet unser Software-Engineering-Team einen internen Hackday und nimmt sich einen Tag Zeit, um sich gemeinsam neue Technologien anzusehen, an einem tollen Projekt zusammenzuarbeiten oder eben einfach einen Tag lang zu hacken. Dabei stehen Teamgeist, die Begeisterung für neue Technologien und Spass im Vordergrund, es kann allerdings durchaus vorkommen, dass an solchen Events tolle Projekte entstehen, die später tatsächlich «im realen cyon-Leben» genutzt werden.

Hackday: Sensoren für den Durchblick

Vergangene Woche fand ein solcher Hackday zum Thema IoT (Internet of Things) statt. Neben einer Menge Elektronik und Sensoren hatten die Organisatoren auch bereits eine lange Liste von Ideen mitgebracht, was am Hackday umgesetzt werden könnte. Die Grundidee: Im Büro vorhandene Geräte mit Sensoren «aufzubessern». Dazu teilten sich die «Hacker» in drei Teams auf.

Team 1: Kaffeekonsum

Eines der Teams widmete sich dem Lieblingsthema vieler, dem Kaffee. Mithilfe eines MyStrom-Adapters hat sich Team 1 einen Kaffeezähler gebaut. Dazu haben die Team-Mitglieder unsere Offline-Kaffemühle an den Adapter angeschlossen und eine Applikation entwickelt, welche über die HTTP-Schnittstelle des Adapters periodisch die elektrischen Lastspitzen ausliest. Wertet man die Dauer der Last und die konsumierte Leistung aus, kann festgestellt werden, ob sich der Kaffeeliebhaber gerade einen einfachen oder doppelten Kaffee zubereitet.

Über eine dazugehörige Web-Applikation kann die Statistik der konsumierten Menge Kaffee dann dargestellt und auch angezeigt werden, wann der letzte Kaffee getrunken wurde. Entwickelt wurde die Applikation (mit Ausnahme des Frontends, das mit Vue.js entwickelt wurde) mit der uns bisher unbekannten Programmiersprache Crystal. Ein Hackday bietet nämlich auch DIE Gelegenheit, sich auf spielerische Art neuen Sprachen zu nähern.

Das Video zeigt die Applikation während die Kaffeemühle betätigt wird.

Die Gruppe hat bereits weitere Anwendungsfälle im Hinterkopf, zum Beispiel im Zusammenspiel mit der Geschirrspülmaschine, bei der von aussen der Status nicht erkennbar ist. Mittels einer Hue-Lampe könnte der aktuelle Modus der Maschine angezeigt werden, etwa «rot» wenn die Maschine gerade läuft (und sich der Gang zur Maschine somit nicht lohnt), «gelb» wenn die Maschine ausgeräumt werden muss und «grün» wenn der Geschirrspüler darauf wartet, mit dreckigem Geschirr gefüllt zu werden.

Team 2: Slack-Integration für unsere Türklingel

Eine andere Gruppe hat sich unserer Türklingel gewidmet. Was, wenn es an der Tür klingelt? Aufmachen, logisch. Bloss: Was, wenn niemand das Klingeln hört? Mithilfe eines Sensors, den das Team an die LED der Klingel angelötet hat, kann nun erkannt werden, wenn die Türklingel betätigt wird. Über eine Slack-Integration meldet sich die Türklingel nun in ihrem eigenen Channel automatisch, wenn sich jemand an der Tür bemerkbar macht.

Die Türklingel meldet einen klingelnden Besucher.

Die Türklingel meldet einen klingelnden Besucher.

Team 3: Türsensor für den Getränkekühlschrank

Nebst Kaffee und Wasser stehen den cyon-Mitarbeitenden auch kostenlose Süssgetränke zur Verfügung. Das dritte Team, passenderweise inklusive unserem internen Getränkeverantwortlichen, wollte wissen, wann unser Getränkekühlschrank überhaupt benutzt wird, oder besser: Wann Getränke aus dem Kühlschrank konsumiert werden. Im Team kam zudem schnell die Idee auf, diesen Ansatz zu verfeinern und zusätzlich herauszufinden, welches Getränk aus dem Kühlschrank genommen wurde.

Mit einem Sensor, welcher registriert, wann die Kühlschranktür geöffnet (und wieder geschlossen) wird, war der erste Teil der Aufgabe ziemlich schnell gelöst. Um aber automatisiert zu registrieren, welche Flaschen entfernt wurden, war mehr Aufwand notwendig.

Die Kamera registriert das herausgenommene Getränk

Die Kamera registriert das herausgenommene Getränk.

Mithilfe einer auf einem Stativ stehenden Kamera wurden Bilder vor und nach der Entnahme gemacht und zu erkennen versucht, welche Flasche entfernt wurde. Mit Google AutoML hat Team 3 anschliessend einen Algorithmus trainiert, der die Flaschenerkennung automatisierte. Dafür mussten eine ganze Menge an Fotos der Flaschen gemacht und manuell klassifiziert werden.

Der Algorithmus wird mit einer Menge Fotos trainiert

Der Algorithmus wird mit einer Menge Fotos trainiert.

Auch dieses Vorhaben konnten unsere Hackday-Teilnehmer mit Erfolg abschliessen. Einzig das etwas aufwendige Kamerasetup müsste für einen dauerhaften Einsatz noch angepasst werden.

Die Animation zeigt, wie die «Flaschenerkennung» funktioniert.

Die Animation zeigt, wie die «Flaschenerkennung» funktioniert.

PHP 7.3 im Anmarsch: Das gibt’s Neues

PHP 7.3 steht in den Startlöchern. Die neueste PHP-Version ist gespickt mit Funktionalitäten, die das Webentwickler-Leben einfacher machen. Wir zeigen, welche Neuerungen und Änderungen PHP 7.3 mitbringt.

PHP 7.3 im Anmarsch: Das gibt's Neues

Gelockerte Syntax für Heredoc und Nowdoc

Heredoc und Nowdoc sind Möglichkeiten um Strings zu definieren. Die Syntax-Vorgaben für die beiden Methoden sind mit PHP 7.3 weniger streng. Neben Heredoc und Nowdoc dürften einfache und doppelte Anführungszeichen die bei PHP-Entwicklern bekanntesten Methoden sein, um Strings zu definieren.

Heredoc funktionieren wie doppelte Anführungszeichen. Im Text vorkommende Variablen werden also vom PHP-Interpreter in den entsprechenden Wert umgewandelt. Ausserdem müssen Anführungszeichen nicht maskiert werden. Was Heredoc und doppelte Anführungszeichen verbindet, verbindet Nowdoc und einfache Anführungszeichen. In Nowdoc müssen Anführungszeichen maskiert werden. Ausserdem werden Variablen 1:1 ausgegeben und nicht deren Wert.

Bis PHP 7.2 mussten die abschliessenden Markierungen für Heredoc und Nowdoc auf einer neuen Zeile zu Beginn erscheinen. Ab PHP 7.3 dürfen diese Markierungen nun auch eingerückt sein:

$foo = <<<HALLO
  HALLO_WELT <-- Beendet das Heredoc-Literal nicht.
  HALLOWELT  <-- Beendet das Heredoc-Literal ebenfalls nicht. 
  HALLO WELT <-- Beendet das Heredoc-Literal neu mit PHP 7.3
HALLO;

Während in früheren Versionen der Heredoc mit HALLO; auf der letzten Zeile geendet hätte, wird HALLO auf Zeile 4 ab PHP 7.3 nun als Ende des Literals interpretiert.

Abschliessendes Komma in Funktions- und Methodenaufrufen

Aufrufe von Funktionen und Methoden dürfen nun ein abschliessendes Komma enthalten. So ist neu folgender Code valide:

// regular functions.
foo('bar', 'baz',); // Neu ist in Funktions- und Methodenaufrufen ein abschliessendes Komma erlaubt.

Das macht den Umgang mit Funktionen und Methoden in vielen Fällen einfacher, weil nicht darauf geachtet werden muss, ob ein abschliessendes Komma vorhanden sein darf.

In der Deklaration von Funktionen und Methoden ist ein abschliessendes Komma jedoch weiterhin nicht erlaubt:

function foo($bar, $baz, ) { // Ein abschliessendes Komma in Deklarationen ist weiterhin nicht erlaubt
}

Referenzzuweisung in list()

Bisher waren Referenzzuweisungen in der Funktion list() nicht möglich. Ab PHP 7.3 ist nun aber folgender Code valide:

$array = [1, 2];
list($a, &$b) = $array;

Damit wird der Variable $b der zweite Wert des Arrays $array zugewiesen. Mit der neuen Funktion ist nun das gleichzeitige Zuweisen mehrerer Referenzwerte zu mehreren Variablen möglich.

Arrays einfacher auslesen

Arrays sind mächtigen Datenkonstrukte. Bisher fehlte allerdings ein Bordmittel, den ersten oder letzten Schlüssel eines Arrays auszugeben. Mit den neuen Funktionen array_key_first() und array_key_last() sind diese beiden Operationen nun von Haus aus möglich. Im entsprechenden RFC wurden ausserdem die beiden neuen Funktionen array_value_first() und array_value_last() vorgeschlagen, die das Auslesen des ersten und letzten Werts eines Arrays vereinfacht hätten. In der Entscheidungsabstimmung sprach sich jedoch eine Mehrheit gegen eine Einführung aus.

Objekt zählbar?

Mit PHP 7.2 wurde bereits eine Warnung eingeführt, wenn count() auf ein Objekt angewendet wird, das die Funktion nicht unterstützt. Bislang musste man sich eine entsprechende Prüfungsfunktion allerdings selbst bauen:

if (is_array($foo) || $foo instanceof Countable) {
    return count($foo);
}

Mit PHP 7.3 und der neu eingeführten Funktion is_countable() kann man sich dieses Konstrukt sparen. Die Funktion liefert zurück, ob ein Objekt zählbar ist.

Sinnvolle Fehlermeldungen für JSON

Mit json_encode() und json_decode() kann PHP seit Version 5.2 mit Daten im verbreiteten JSON-Format umgehen. Bislang wurde bei einem Fehler der Wert null zurückgeliefert. Der Haken an der Sache: null kann in JSON ein gewünschter Wert sein. Ob es sich bei null also um einen Fehler oder doch den in der Tat zugewiesenen Wert handelt, war bisher nur schwer herauszufinden. Mit der neu geschaffenen Option JSON_THROW_ON_ERROR lässt sich nun das Verhalten der beiden JSON-Funktionen im Fehlerfall verändern, um eine klarere Rückmeldung zur Fehlerquelle zu erhalten.

Veraltete Funktionalitäten in PHP 7.3

Mit einer neuen PHP-Version werden nicht nur neue Funktionalitäten eingeführt, sondern auch alte Zöpfe abgeschnitten. Zu jeder guten Software-Version gehört schliesslich auch, dass Altlasten aufgeräumt werden. Als veraltet markierte Funktionalitäten werden spätestens mit Version 8.0 aus dem PHP-Code verschwinden.

Mit der Grafikerweiterung GD und deren Funktion image2wbmp() können Bilder im Wireless-Bitmap-Format (WBMP) erzeugt werden. Die Schwester-Funktion imagewbmp() verhält sich seit PHP 5.0 praktisch identisch, weshalb image2wbmp() spätestens mit PHP 8.0 verschwinden wird. Sollten Sie die Funktion in Ihrem Code im Einsatz haben, können Sie die entsprechenden Stellen einfach mit imagewbmp() ersetzen.

Bisher war es möglich, Konstanten zu definieren und sie dabei «case-insensitive» zu machen. Für den Aufruf der Konstante musste damit nicht zwischen Gross- und Kleinschreibung unterschieden werden. Mit PHP 7.3 liefert sowohl die Definition als auch der Aufruf einer Konstante eine Deprecation-Warnung, wenn die Option «case-insesitive» für die Konstante gesetzt ist. Nach gängiger Konvention werden Konstanten sowieso immer in Grossbuchstaben geschrieben.

PHP 7.3 jetzt schon testen

Nebst den oben erwähnten Neuerungen und Änderungen bietet PHP 7.3 weitere kleinere Verbesserungen. Ausführliche Informationen zum Hintergrund aller Änderungen finden Sie in den offiziellen sogenannten «Requests for Comments», kurz RFCs.

PHP 7.3.0, also die erste Version die auch für produktive Applikationen geeignet ist, soll am 06. Dezember 2018 erscheinen. Die Vorabversion, den sogenannten «Release Candidate», können Sie bei uns jetzt schon testen. Wählen Sie dazu PHP 7.3 einfach in Ihrem my.cyon-Konto für die gewünschten Verzeichnisse aus: Wie kann ich die PHP-Version eines Verzeichnisses ändern?

Wechselhürden ade: Wir ziehen Websites und E-Mails jetzt kostenlos um

Der Umzug einer Website ist einfach nur «en Chrampf». Meist ist dafür mehr als nur oberflächliches technisches Wissen notwendig, so dass der Wechsel zu einem neuen Webhosting-Provider für viele eine fast unüberwindliche Wechselhürde darstellt. Bis jetzt. Mit dem neuen Website-Umzugsservice ist damit nun endgültig Schluss.

Wechselhürden ade: Wir ziehen Websites und E-Mails jetzt kostenlos um

Künftig übernehmen wir nämlich auf Wunsch den kompletten Umzug einer Website zu uns. Egal, ob es sich um eine WordPress-, Joomla!-, oder eine andere PHP-Installation handelt. Doch ein Umzug ohne E-Mails wäre nur die halbe Miete. Darum sorgen wir zudem dafür, dass auch Ihre E-Mail-Postfächer mitsamt Inhalt den Weg auf unsere Server finden und Sie ausserdem Ihre E-Mail-Programme im Nullkommanichts umgestellt haben.

Umzug von einer Website und drei E-Mail-Konten inklusive

Apropos Miete: Als wär der Umzugsservice noch nicht gut genug, rechnen wir sogar die Restlaufzeit Ihres Vertrages beim bisherigen Anbieter mit an. Läuft der Vertrag beim bisherigen Anbieter also noch sechs Monate, offerieren wir das Hosting bei uns für die nächsten sechs Monate kostenlos. Damit gibt es nun wirklich keinen Grund mehr, nicht zu cyon zu wechseln.

Ein Umzugsservice-Paket beinhaltet jeweils den Umzug einer Website und drei E-Mail-Adressen und ist ab sofort bei jedem neu abgeschlossenen Webhosting-Paket von cyon innerhalb der ersten 30 Tagen inklusive. Zusätzliche E-Mail-Umzüge können für CHF 10.- pro E-Mail-Adresse dazugekauft werden. Und wer weitere Websites umziehen lassen will, kommt mit CHF 149.- pro Website auf seine Kosten.

Mehr über den neuen Umzugsservice erfahren

«Apps»: Viel mehr als nur One-Click-Apps

Mit «Apps», unserem «App Store» für Webapplikationen, lassen sich die verschiedensten Applikationen auf einem Webhosting installieren, verwalten, aktualisieren und sogar sichern. Die Möglichkeit, Applikationen auf diese Art per Knopfdruck zu installieren, ist bei unseren Kunden beliebt: Knapp 10’000 Kunden verwenden «Apps» derzeit und haben darüber insgesamt über 20’000 Applikationen installiert.

«Apps»: Mehr als nur One-Click-Apps

«Apps» kann mehr als nur Applikationen per Knopfdruck installieren und besitzt viele nützliche Features, die Sie vielleicht noch gar nicht kennen. In diesem Blogpost stellen wir Ihnen einige dieser Funktionen genauer vor.

Versuchskaninchen: «Staging»-Umgebung einrichten

Webentwickler arbeiten meistens nicht direkt an einer Website, sondern erstellen eine Entwicklungsumgebung, eine sogenannte Staging-Installation. Mit einem neuen Feature macht unser «Apps» das Erstellen und Zurückspielen von Änderungen in einer solchen Staging-Umgebung zum Kinderspiel. Jede Applikation erhält neben dem «Klonen»-Icon neu ein Symbol für das Erstellen einer Staging-Installation:

Erstellen einer Staging-Umgebung

Erstellen einer Staging-Umgebung

Im Hintergrund funktioniert das Erstellen der Staging-Umgebung ähnlich wie das Klonen einer Installation, mit dem Unterschied, dass bei einer Staging-Installation per Klick alle Änderungen auf die Live-Website gespielt werden können:

Staging-Installation

Staging-Installation

Alle Änderungen werden bei einer Veröffentlichung auf die gekoppelte Live-Seite geschrieben, ohne dort vorhandene Inhalte zu löschen.

Auch wenn keine Webapplikation von Grund auf entwickelt wird, ist Staging hilfreich. Etwa vor einem grossen Update, wo die neue Version zuerst auf der Staging-Umgebung getestet werden kann. Oder beim Redesign einer Website, die auf der Staging-Installation vorgenommen werden kann, während die bisherige Website wie gewohnt erreichbar bleibt.

Eine ausführliche Anleitung zum Staging-Feature von «Apps» finden Sie auch in unserem Supportcenter: Staging-Umgebung über Apps einrichten

Daten extern sichern: Backups per FTP oder auf Dropbox und Google Drive ablegen

Mit «Apps» ist es ganz einfach, Sicherungen von Installationen anzulegen, herunterzuladen oder zurückzuspielen. «Apps» kann aber nicht nur Backups lokal ablegen, sondern auch extern via FTP, SFTP oder auf einem Cloud-Speicher wie Google Drive und Dropbox:

Dazu kann in den Einstellungen ein neuer Backup-Ort hinzufügt werden, welcher dann bei manuellen Datensicherungen oder beim Aktivieren von automatischen Backups ausgewählt werden kann. Wir empfehlen, regelmässig Backups auf externen Servern abzulegen.

Wie Backups via «Apps» erstellt und zurückgespielt werden können, zeigt der entsprechende Beitrag in unserem Supportcenter: Sicherungen unter Apps erstellen und zurückspielen

Umzug leicht gemacht: Applikationen von externem Server importieren

Der Umzug einer Website ist immer eine etwas mühselige Angelegenheit. Daten müssen heruntergeladen und Datenbanken exportiert und dann die Daten an den richtigen Ort hochgeladen werden, die Datenbanken wieder erstellt und dann importiert und zuletzt noch korrekt mit dem CMS verknüpft werden.

Schön wäre doch ein einfacherer Weg, nicht? Diesen Weg gibt es tatsächlich, denn «Apps» erlaubt es, die Daten von Applikationen auf externen Servern automatisiert herunterzuladen und in die lokale Applikation zu importieren. Dabei werden sämtliche Daten vom externen Host direkt in die Applikation bei cyon kopiert und entsprechend angepasst.

Externe WordPress-Installation importieren

Einstellungen WordPress-Import

Der Import von einem externen Server wird von den gängigsten CMS (zum Beispiel WordPress, Joomla, Drupal, modX) unterstützt und verläuft ähnlich wie der Import einer lokalen Installation, mit dem Unterschied, dass zusätzlich die Verbindungsdaten zum externen Server eingegeben werden können, damit sich «Apps» dort alle benötigen Daten beschaffen kann.

Neue Apps: Ihre Meinung ist gefragt

Sie sehen also, «Apps» bietet eine Menge Funktionen, die ansonsten mühselige Aufgaben mit Applikationen wie WordPress und Co. zum Kinderspiel werden lassen. Ist Ihre favorisierte Applikation noch nicht in «Apps» verfügbar? Lassen Sie uns Ihre Wünsche entweder per E-Mail oder gleich hier als Kommentar zukommen.

Lehrstellen 2019 – Mach mit uns das Internet zu einem besseren Ort!

Wir wollen das Internet zu einem besseren Ort machen. Du auch? Zwei Jahre ist es her, seit wir zum ersten Mal eine Lehrstelle ausgeschrieben hatten. Und wir waren so begeistert von den tollen Bewerbungen, dass vergangenen Sommer statt einem gleich zwei Lernende ihre Ausbildung bei uns antreten durften. Umso mehr freuen wir uns, dass wir per August 2019 wieder zwei Lernenden einen Platz anbieten können. Auf diesen Zeitpunkt bieten wir je eine Lehrstelle als Informatiker/in EFZ Applikationsentwicklung und als Informatiker/in EFZ Systemtechnik bei uns in Basel an.

Lehrstellen 2019: Mach mit uns das Internet zu einem besseren Ort!

Mittendrin statt nur dabei

Eines ist klar: Langweilig wird es Dir bei uns garantiert nicht, denn wir sind für den Betrieb eines beträchtlichen Teils des Schweizer Internets verantwortlich. Läuft es trotz aller Vorkehrungen für einmal nicht ganz so reibungslos, kann das schnell zu spürbaren Problemen führen. Und das gilt es, mit guter Planung, viel Teamwork und ausserordentlichem Know-How zu verhindern. Schön, wenn wir dabei ab August 2019 auch auf Deine Unterstützung zählen dürfen.

Beide Ausbildungen dauern jeweils vier Jahre, während denen Du alles lernen wirst, was für ein erfolgreiches Berufsleben notwendig ist. Klar bieten wir Dir während Deiner Lehre auch Einblick in andere Abteilungen, wie zum Beispiel den Customer Support, oder Du schaust unseren Software- bzw. System-Engineering-Teams über die Schultern.

Was Dich erwartet

Als Mitglied im Software-Engineering-Team (Informatiker/in EFZ Applikationsentwicklung) planst, entwickelst und betreust Du unsere Kundenplattform my.cyon sowie unser internes Kundenverwaltungssystem froox. Du hilfst mit, alltägliche Arbeitsabläufe zu automatisieren und trägst dazu bei, dass neue Features unserer Produkte einfach zu bedienen sind. Du hilfst dabei, den täglichen Betrieb unserer Software sicherzustellen und behebst Fehler und andere Ungereimtheiten.

Ich war gleich von Tag 1 an ein vollwertiges cyon-Mitglied und meine Meinung und Ideen konnte ich von Anfang an mit einbringen. Und das macht bei der tollen Atmosphäre und der offenen Kommunikation, die bei cyon herrschen, umso mehr Spass.

Avatar Henning
Henning Dahlheim
Lernender Applikationsentwicklung

Im System-Engineering-Team (Informatiker/in EFZ Systemtechnik) kümmerst Du Dich vor allem um unsere Infrastruktur und realisierst, auch zusammen mit anderen Teams, spannende Projekte. Den täglichen Betrieb unserer Infrastruktur aufrechtzuerhalten, Fehler oder Ungereimtheiten auf den Grund zu gehen oder auch Sicherheitslücken zu schliessen, gehört mitunter zu Deinen Aufgaben. Dabei unterstützt Du uns auch, regelmässige Abläufe zu optimieren und zu automatisieren. Zudem setzt du Dich immer wieder mit neuen Technologien auseinander.

Für beide Ausbildungsrichtungen besuchst Du an jeweils zwei Tagen pro Woche die Berufsfachschulen in Muttenz und Pratteln. Dazu kommen während der gesamten Ausbildung Überbetriebliche Kurse (ÜK), welche Dir weitere Praxiskenntnisse vermitteln.

Wen wir suchen

Wir suchen für beide Lehrstellen je eine aufgestellte Person, die gerne in einem belebten Umfeld und mit uns im Team arbeiten möchte. Freude und Respekt sind die beiden wichtigsten Werte in unserer Firma. Wenn Du Dich für Computer ganz allgemein und fürs Internet im Speziellen interessierst, würden wir Dich gerne kennenlernen.

Los gehts!

Bist Du an der Stelle interessiert? Unter cyon.ch/jobs haben wir sämtliche Informationen zur Lehrstelle und zum Bewerbungsverfahren für Dich zusammengestellt. Wir freuen uns auf Deine Bewerbung!