Kategorien
Server Administration vagrant Webdeveloper Tools

puphpet.com – vagrant Boxen mittels GUI erstellen für die Entwicklung

Mit dem kostenlosen online Tool auf www.puphpet.com kann man ganz einfach Entwicklungsumgebungen in vagrant erstellen mit gewümnschten Kompoennenten wie MySQL, Elasticsearch, RabbitMQ, Redis und allem was man braucht. Es werden CentOS und Ubuntu unterstützt.

Kategorien
Buch Empfehlungen

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.

Kategorien
PHP PHP 7 Projekte

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.

Kategorien
Webdeveloper Tools

Robert C. Martin über Programmierer und gute Architektur von IT-Projekten

Ich stimme Ihm in allem zu, was Oncle Bob zu sagen hat:

Über Architektur:

Über Programmierer und IT im Allgemeinem:

Kategorien
PHP 7 PHPUnit

PHPUnit returnCallback Beispiel

Mit dem PHPUnit returnCallback() Methode kann man dynamisch den Rückgabewert eines Mocks definieren.

Beispiel:

public function testCallback()
{
    $globalObject = [];
    $this->mock
        ->expects($this->any())
        ->method('method')
        ->will(
            $this->returnCallback(
                function($param) use ($globalObject) {
                     return globalObject;
                }
            )
        );
}
Kategorien
PHPUnit Server Administration

Travis CI: No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

Bei der sehr kryptischen Fehlermeldung in Travis CI:

No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

handlet es sich um ein Problem mit falschen Einrückungen im travis.yml File:

matrix:
  include:
    - php: 5.6
      env:
        - SYMFONY_VERSION='3.4.*'

Ein Leerzeichen zu wenig in der Zeile – SYMFONY_VERSION=’3.4.*‘ und es kommt zu diesem wenig aufschlussreichen Fehler.

Kategorien
PHP PHP 7

PHP: Parse Error: syntax error, unexpected ‚:‘, expecting ‚;‘ or ‚{‚

Bei der sehr kryptischen  Fehlermeldung

Parse Error: syntax error, unexpected ':', expecting ';' or '{'

handelt es sich in den meisten Fällen um eine PHP7 Inkompatibilität.

Der auszuführende Code enthält ein Sprach-Feature, was erst unter PHP7 verfügbar ist:

Return Type Definitions (Definition des Rückgabewertes). Beispiel:

function myFuntion($input): array
{
    return ['foo'];
}

Damit kann man festelegen, dass die Funktion ein Array zurückgeben muss, sonst wird ein TypeErrror ausgelöst.

Um den Code in einer niedrigeren PHP Version zum Laufen zu bringen, muss man die Return Type Definition entfernen:

function myFuntion($input)
{
    return ['foo'];
}

Spezialfall: composer

Kategorien
Server Administration Webdeveloper Tools

Eine Datei über den Namen suchen auf Linux

Um irgendeine Datei in einem beliebigen Verzeichnis zu finden, kann man den find-Befehl verwenden:

sudo find / -name 'datei.php'
Kategorien
PHP PHPUnit Testing

PHP Unit Testing Präsentation

Diese Präsentation habe ich im Rahmen meiner Arbeit bei Air Berlin zum Thema Unit und Integration Testing gehalten.

Da es Air Berlin nun nicht mehr gibt, stelle ich gern diese Informationen allen zur Verfügung.

Download Testing Powerpoint Präsentation

Kategorien
PHP Server Administration

PHPLdap Extension installieren unter Linux

Um die Ldap PHP Extension zu installieren, kann man unter Linux / Ubuntu einfach den Befehl:

sudo apt-get install php-ldap