Kategorie-Archiv: Sprachen

JavaScript: var vs. let

Ich muss gestehen, dass ich bis heute das Schlüsselwort let unter JavaScript noch nie gehört habe. Wie ich jetzt dazu komme? Ich lerne gerade ein wenig Swift und dort gibt es das Schlüsselwort auch – verhält sich aber komplett anders. Ich bin nur über die JavaScript-Lösung gestolpert, als ich Google danach bemüht hatte.

Aber nun zum eigentlichen Thema: Wie unterscheidet sich var von let? Mit beiden Schlüsselworten kann man neue Variablen deklarieren. Weiterlesen…

MAMP: Lokal mit SSL-Zertifikaten / https arbeiten

Nun habe ich in der Vergangenheit ja schon einige Beiträge über die lokale Entwicklungsumgebung geschrieben – insbesondere mit MAMP. Ein wichtiges Thema fehlt allerdings noch: SSL / HTTPS lokal nutzen.

Als erstes muss man dazu ein Key-File erstellen.

Wenn man nach einem Passwort gefragt wird, muss man dieses hier vergeben. Die Mindestlänge beträgt 4 Zeichen. In meinem Fall habe ich einfach einmal 1234 gewählt. Das kann man sich wenigstens gut merken – ist ja nur für die lokalen Verbindungen und somit unkritisch.

Bei der Erstellung des Zertifikates muss man dieses Passwort dann direkt wieder eingeben. Außerdem muss man ein paar Fragen beantworten.

Hier meine Beispielantworten:

Als nächstes erstellen wir das eigentliche Zertifikat:

Mit einem Trick entfernen wir das Passwort vom Server-Key:

So weit, so gut. Nun etwas aufräumen, und die Dateien in das MAMP-Verzeichnis schieben (geht natürlich auch per Finder):

Als nächstes müssen wir MAMP beibringen, dass wir dieses Zertifikat nutzen möchten.

Ich für meinen Teil, habe bereits eine vhosts.conf im apache-Verzeichnis angelegt. Diese enthält Domains für die lokale Entwicklung (local.dev, magento.localhost, …), da man unter localhost sonst keine Cookies ablegen kann. Weiterlesen…

PHP: SoapClient Request modifizieren

Vor ein paar Tagen stand ich vor dem Problem, dass ich an einen Service mehrere XML-Nodes mit dem gleichen Element-Namen übergeben musste. Im XML ja auch kein Problem, nur leider etwas blöd, wenn man ein Array an den Soap-Client übergibt. In diesem Fall steht man etwas doof dar, weil man Array-Keys ja schlecht doppelt und dreifach vergeben kann.

Also dachte ich mir: Einfach den XML-Request des Clients modifizieren. Das ist aber leichter gesagt als getan. Ich habe zumindest keine Funktion gefunden, welche man überschreiben könnte um sich in den Serialisierungsprozess zu hängen. Also musste ich am Ende

  • doRequest überschreiben,
  • das Ganze Zeug wieder in ein Objekt wandeln,
  • mit xPath die XML-Node rausziehen,
  • die neuen Elemente einfügen
  • und alles wieder zusammenpacken.

Weiterlesen…

Was man alles wissen muss…

Vor kurzem ist mir erstmals aufgefallen, mit welchen Technologien, Sprachen und Konfigurationen man sich als Webentwickler eigentlich (grundlegend) auskennen sollte. Die Liste ist wirklich lang geworden – und ich bin mir sicher, dass sie nichtmal vollständig ist. Je länger man nachdenkt, desto mehr fällt einem einfach ein.

Basics

  • Dateiformate / Encodings

Sprachen / Formate

  • PHP + Extensions (PEAR, PECL, …)
  • (demnächst Hack)
  • JavaScript (jQuery, Prototype, CoffeeScript, nodejs, …)
  • CSS (SCSS, LESS, Media Queries…)
  • HTML 4 & 5
  • XML (XSLT, XSD, xpath)
  • JSON
  • CSV
  • (evtl. noch ruby, perl, python)

Frameworks

  • Zend (2)
  • Symfony 2
  • Smarty, Twig
  • phpUnit
  • Behat

Entwicklungstools

  • git
  • phpStorm
  • docker
  • SVN
  • composer / phing / bower
  • modman
  • grunt / gulp
  • vagrant
  • ci (travis ci, …)
  • node / npm
  • brew
  • Selenium

Protokolle

  • HTTP / HTTPS (get, post, put, head, XHR, Ajax)
  • SSL / TLS
  • TCP/IP
  • POP / IMAP / SMTP
  • FTP / SFTP / SCP
  • SSH

Server & Tools

  • bash basics
  • vi / nano
  • apt
  • Berechtigungen
  • Apache (Virtual hosts, htaccess, …) / nginx / HHVM
  • Netzwerke (Klassen, Subnetze, Ports, Routing, VPN, …)
  • SSH (inkl. key management RSA / DSA) / known_hosts / authorized_keys
  • Postfix
  • mysql / mysqldump
  • Remote Desktop / Teamviewer / VNC / …

Datenbanken & Tools

  • mySQL, MSSQL, Oracle (Tabellen, Constraints, Trigger, …)
  • elasticsearch
  • mongoDB
  • postgresql
  • phpMyAdmin

Natürlich kann man nicht auf jedem Gebiet alles können. Aber man sollte doch irgendwie jedes Thema einordnen können und grundlegend wissen worum es geht. Die (in meinen Augen) weniger wichtigen Themen habe ich kursiv gekennzeichnet. Ich habe ganz sicher noch viel vergessen.

Anmerkungen gerne in den Kommentaren.

phpcs: Code-Sniffer für PHP

Gerade wenn man in größeren Projekten arbeitet, müssen sich Menschen an Standards halten, da ansonsten Chaos entsteht. Ein Standard wäre hier zum Beispiel PSR (ich berichtete). Aber wie stellt man nun sicher, dass man sich auch immer daran hält? Die Antwort lautet hier: phpcs.

Sofern man seine Entwicklungsumgebung korrekt eingerichtet hat, geht die Installation recht einfach von der Hand:

Falls man seine Path-Variable nun richtig konfiguriert hat, steht einem der Befehl nun überall zur Verfügung. Soweit, so gut.

phpcs und phpStorm

Jetzt könnte man natürlich immer alle Befehlt per Hand ausführen. Da das aber nervt, nutzt man seine geliebte IDE dafür. Dazu öffnet man die Projekt-Settings eines beliebigen Projektes. Hier findet man in den Projekteinstellungen unter PHP den Punkt „Code-Sniffer“ (oder einfach die Suche bemühen). Dort gibt man nun einfach den absoluten Pfad zu phpcs an und klickt „validate“ um die Einstellungen zu prüfen. Sieht man die Ausgabe der Versionsnummer, läuft alles.

Das macht das Ganze nun aber noch nicht sonderlich spektakulär. Als nächstes öffnet man in den Projekteinstellungen den Punkt „Inspections“ und sucht ebenfalls nach „Code Sniffer“. Hier hakt man den entsprechenden Menu-Punkt an.

phpStorm-phpcs-Inspections

Danach wählt man, etwas weiter unten, den Coding-Standard aus. Falls hier nur „Custom“ angeboten wird, muss man einmal den Aktualisieren-Button betätigen. Danach kann man sich zwischen vielen Standards entscheiden. Meine Wahl fällt hier auf PSR2. Danach bekommt man (je nach eingestelltem Error-Level), die Probleme farbig in den Dateien präsentiert. Das sieht dann z.B. so aus:

phpStorm-phpcs

Weitere Einstellungen

Damit man sich das Leben etwas leichter macht, kann man natürlich noch in den Projekt-Einstellungen den entsprechenden Code-Style für PHP pflegen. Mit einem „Reformat Code“ ist man dann auf Wunsch schon PSR-Konform. Um das Ganze dann immer auszuführen, kann man noch im Commit-Dialog den Haken bei „Reformat Code“ setzen. Dann kann man unterwegs soviel vergessen wie man möchte – vorm Commit wird alles in PSR2 gerückt.

phpStorm-reformatCode

Herzlichen Glückwunsch – ab jetzt wird immer alles korrekt abgeliefert. Ohne Ausnahmen!

PHP: Coding Style Guides & Standards

Wer kennt das nicht? Man öffnet fremden Quellcode und alles fühlt sich unschön an – die Klammern sind ganz wo anders, plötzlich schleichen sich Leerzeichen wo ein, wo man selbst keine macht, die Parameter sind anders aufgeführt, oder zwischen den Funktionen ist komisch viel Platz.

Spätestens wenn man gemeinsam an Projekten arbeitet, ist es unglaublich sinnvoll, wenn man sich auf deinen Coding-Standard einigt. Für genau dieses Problem wurde der „PHP Specification Request“ (kurz PSR) ins Leben gerufen. Hier wird sehr genau festgehalten, wie man zu Entwickeln hat. Also nicht nur, wo Klammern gesetzt werden etc., sondern beispielsweise auch:

  • welches Encoding die Dateien aufzuweisen haben
  • wie viele Klassen pro Datei erlaubt sind
  • dass keine Short-Open-Tags genutzt werden dürfen
  • wie man Namespaces zu verwenden hat
  • wie das Dateisystem / die Ordnerstruktur auszusehen hat
  • wie Methoden und Attribute benannt werden dürfen

und vieles mehr. Aus meiner Sicht sollte sich jeder Entwickler einmal diese Standards durchlesen. Natürlich hat man sich eventuell über Jahre schon seine Ticks angesammelt und es fällt schwer sich umzugewöhnen. Das macht aber in jedem Fall Sinn. Immerhin folgt jedes größere Framework diesem Standard und somit fällt es auch viel einfacher, sich in bestehende Frameworks einzulesen und zu orientieren.

Was aber noch viel wichtiger ist: Andere Menschen sind nicht genervt von eurem Code. Dank phpStorm und anderen Tools ist es zwar nur eine Tastenkombination, welche mich vom einhalten des Codingstandards trennt, aber spätestens wenn jemand an eurem GitHub-Projekt mitarbeiten möchte, wird hier jemand entweder genervt sein, oder aber ein riesen Commit mit der Message „Reformat Code“ pushen.

Der PSR ist dabei in mehrere Teile gegliedert:

Also, nicht länger drücken, sondern lesen und anwenden. Und vergrabt eure bisherigen Erfindungen. Bitte.

OpenSSL unter MAMP nutzen

Wenn man über PHP gerne SSH nutzen möchte, braucht man die OpenSSL-Extension. Diese lässt sich nicht so einfach laden, sondern muss eben für die genaue PHP-Version gebaut werden. Dafür muss man sich die entsprechenden PHP-Quellen laden und diese dann bauen. Wie das geht, habe ich bereits in diesem Artikel beschrieben.

Danach muss man eigentlich nur noch folgende Kommandos in der Shell ausführen:

Das dauert natürlich eine Weile. Keine Sorge, das macht erstmal nichts an der bestehenden PHP-Installation kaputt. Um alles weiterhin unter Kontrolle zu haben, kopieren wir danach auch nur eine einzelne Datei in unsere laufende PHP-Installation.

Dann noch der Eintrag in der php.ini (am besten nach den anderen Extensions):

Und den Apache neustarten. Nun sollte er in der folgenden Liste auftauchen:

Soll das nicht klappen, löscht man einfach die Zeile aus der php.ini oder kommentiert diese aus, und startet danach den Apache neu. Dann ist alles beim Alten.