Buch Review: Clean Architecture von Robert C. Martin

Der neue Klassiker von Uncle Bob beschäftigt sich mit Software Architektur: Was ist eine gute Softeware Arcjtektur und wozu braucht man Sie überhaupt.

Die wichtigsten Aussagen habe ich zusammengefasst im folgenden:

Wozu benötugt man eine gute Architektur? Es ist einfach ein Programm zu schreiben, das etwas bestimmtes tut, selbst Schulkinder schreiben Programme. Aber schwierig ist es ein Programm zu schreiben, was auch in Zukunft erweiterbar und felxibel ist, ohne große Kosten und Aufwand zu verursachen. Deswegen bracht es von Anfang an gute Architektur.

Die Evolution der Programmiersprachen besteht darin, dem Programmierer weniger Möglichkeiten zu geben, schlechten Code zu schreiben.

Man sollte nicht in die Falle tappen: Wir programmieren schnell das Projekt zu Ende um schnell am Markt zu sein und später räumen wir den Code auf. Das wird nie passieren.

Das User Interface (UI), die Datenbank und die Business Rules sollten unabhängig von einander über Interfaces mit einander verbunden und austauschbar sein (Plugin Architektur). Dies ermöglicht ein

  • unabhängiges Deployment der 3 Komponenten und
  • unabhängige Entwicklung in verschiedenen Teams

Funktionale Programmierung löst das Problem von Deadlocks und Multi-Threading Problematiken, da keine richtigen Variablen vorhanden sind. weiterlesen…

Zertifizierung zum Zend Certified Engineer erfolgreich bestanden

Am 1. März habe ich die Prüfung erfolgreich abgelegt für die ich die letzten Monate gelernt habe. Wie zu erwarten war, waren die Fragen sehr, sehr kniffelig, aber die Vorbereitung hat sich bezahlt gemacht.

zce-2017-php-80x80

Vorbereitung

Ich kann jedem empfehlen sich vorher merhmals das Buch PHP7 Zend Certification Study Guide durchzulesen:

Außerdem sollte man alle Tests auf der Seite zendexam.com zu 80% erfolgreich beantworten können, dann ist man bereit für die Prüfung.

Anmeldung für die Prüfung

Man kann sich auf der zend.com Seite anmelden für die Prüfung , die man dann in der Nähe in einem Testcenter seiner Wahl absolvieren kann unter strengsten Bedingungen.

Einmal im Jahr gibt es einen Gutschein für die Prüfung auf retailmenot.com, wenn man Glück hat.

Projekt: baby-taschenrechner.de

Das gerade fertiggestellt Projekt baby-taschenrechner.de beschäftigt sich mit den Fragestellungen rund um die Entwicklung des eigenen Kindes:

  • Wie groß wird mein Kind werden in x-Jahren
  • Wie schwer wird mein Kind in x-Jahren
  • Ist mein Kind zu schwer/zu dünn
  • Welche Kleidergröße wird es wann tragen?

Die Webseite soll Eltern dabei helfen herauszufinden, wann sie welche Kleidergröße kaufen müssen, um im nahenden Winter/Sommer das passende zu Hause zu haben.

Eltern können so einschätzne, ob das Kind zu dünn oder zu dick ist  für ihr Alter/Größe/Gewicht-Verhältnis.

Für die Realiserung wurden folgende Technologien verwendet:

Symfony 3, Docker, MySQL, PHP, GIT, Google Material Design, Amazon AWS

Die REST Webservice Architur – ein Überblick mit PHP

Wenn man heutzutage einen Webservice bauen will, kommt man um REST nicht mehr herum. Als quasi Standard erfüllt es die Bedürfnisse an eine moderne Schnittstelle am besten, im Gegensatz zu den Alternativen aus der grauen Vergangenheit: RPC, DCOM, CORBA, RMI und SOAP.

Was sind die Vorteile von REST?

1. Lose Kopplung

REST Schnittstellen können theoretisch gegeneinander ausgetauscht werden.

2. Interoperabilität

REST über HTTP ist in jeder Umgebung verfügbar und sehr einfach anzusprechen im Gegensatz zu den komplizierteren Ansätzen wie SOAP und CORBA.

3. Performance und Skalierbarkeit

Durch die Zustandslosigkeit können viele Anfragen aus dem Cache beantwortet werden und aufeinander folgende Anfragen müssen nicht von demselben System beantwortet werden (Skalierbarkeit)

Grundprinzipien von REST weiterlesen…

Projekt: Elasticsearch für XT-Commerce Shop Suche

Das letzte Projekt war sehr spannend, es handelte sich um eine Erweiterung des PHP Shop-Systems namens XT-Commerce bzw. des Derivats SEO-Commerce um eine Suche aktuellem Standards für Zeedee Berlin.

Elasticsearch wurde auf einer eigene Amatzon MWS EC2 Instanz gehostet mit 1GB Ram und 1 CPU (sehr kostengünstig).

Die folgende Funktionalität kann ganz einfach wieder deaktiviert werden an zentraler Stelle, wenn es Probleme mit Elasticsearch gibt und die alte MySQL Suche tritt wieder in Kraft.

1. Autocomplete / Suggest Funktion beim Befüllen der Suche

Beim Eintippen des Suchwortes werden schon Vorschläge gegeben im Millisekundenbereich. Dadurch kann der Kunde viel Zeit sparen und bei der Rechtschreibung wird auch geholfen. suggest_zeedee

weiterlesen…

Raspberry Pi SD card holder broken – 10 seconds fast repair

 

IMG_5496

The problem: the sd card holder stopped working

When your Raspberry Pi 2 is does not hold the integrated sd-card anymore, than your one of many people who face the same problem.

I have found an easy way to repair the sd card holder without fire and iron and explosions:

You can use an elastci strap and you will only loose 2 of your 4 USB-slots with this method.

 

A small and strong elastic strap can hold the sd cartd in the sd card slot and fixes the problem easily and smooth.

IMG_5497

an elstic strap helps to hold the sd card in the slot

 

The Result

Your Raspberry Pi works again without any problems.

IMG_5495

you will loose 2 usb slots but 2 other ones are waiting for you

IMG_5494

works like a charme

Alternative repair

If you want to repair your sd-card slot like a pro, you should watch this youtube video:

Last alternative

Buy a new Raspberry 3 model:

Amazon automatische Preisanpassung Tool

Für einen Kunden habe ich gerade ein Tool entwickelt, mit dem man die Preise der eigenen Waren bei Amazon automatisch anpassen kann.Dabei werden die Angote der Konkurrenz analysiert nach Zustand der Ware und nach Seller Seriösität und dadurch ein fairer Preis bestimmt für die Ware. Es werden alle Daten, die über die API verfügbar sind für die Preisbestimmung mit herangezogen, wie z.B. Seller Feedback (Bewertungen des Händlers), ob Amazon selber verschickt, Versanddauer und vieles mehr.

Das Tool vergleicht optional die Preise zwischen den verschiedenen Amazon Plattformen in Europa (DE, UK, IT, ES, FR) aber auch Plattformen außerhalb Europas, wie Japan oder Amerika und händelt die unterschiedlichen Währungen.

Das Ergebnis kann direkt zu Amazon mittels der API geschickt werden und die Preise werden sofort geupdatet.

Amazon Preisanpassung

Screenshot Preisanpassungs Tool

 

Die Anwendung ist in PHP mit Symfony 3 geschrieben und hat ein Frontend mit Twitter Bootstrap 3 und eine MySQL Datenbank. Außerdem gibt es eine Vagrant Umgebung für die Entwicklung mit PHP7.1 und nginx. Ausgeführt werden kann das ganze mit einer einfachen Xampp Umgebung oder Vagrant Virtual Box beim Kunden lokal auf einem PC.

Falls sie auch Interesse an einem solchen Tool haben, könnne sie gern Kontakt aufnehmen.

NAS / externe Festplatte selbst retten und reparieren

Wenn einem mal wieder die Festplatte ohne Backup abgeschmiert ist oder das NAS einfach nicht mehr die Verbindung aufnehmen will zum eigenen Rechner, interessiert man sich für die Datenrettung von Festplatten.

Mit ein paar einfachen Schritten und Gadgets lässt sich das schnell von zu Hause aus machen.

1. Schritt: Externe Festplatte entkernen, NAS zerlegen

Dabei geht es genauso brutal zu, wie es sich anhört: Die modernen Verpackungen sind schwer zu knacken. Die Bergung der Festplatte aus dem Gehäuse ist oftmals schwieriger als gedacht, aber mit ein wenig Gewalt und Köpfchen möglch. Am wichtigsten ist, das Verstecke der kleinen Mini-Schraube zu finden, die hinter einem Aufkleber in der hintersten Ecke des Gehäuses zufällig platziert wurde, damit man sein Gerät auf jeden Fall nie wieder zusammen bauen kann.

Wenn man fertig ist mit seinem NAS sieht das in etwa so aus:

IMG_4954

Mein stark beschädigtes und garantiert nie mehr funktionsfähiges NAS, oben links ist die ausgebaute Festplatte zu sehen, die im nächsten Schritt ausgelesen wird. 3 Jahre hat es gehalten das Miststück, danke Samsung für den Müll

2. Schritt: Auslesen der Festplatte mit dem Kloner weiterlesen…