Kategorien
Allgemein Werkzeuge

Selbstversuch: Agile Family

Wir starten das Experiment “Agile Family”. Dabei werden wir testen wie gut sich das System Kanban in unsere Planung und Alltagsgestaltung integrieren lässt und (viel wichtiger), ob es uns als Tool dort sinnvoll unterstützen kann.

Wir starten dabei mit Flight-Level 1, denn der Zufluss besteht ja in der Familie in der Regel aus Aufgaben, die von außen auf die Familie einprasseln.

Warum Kanban, wenn doch Scrum der heiße Scheiß ist?

Scrum ist ein System zur Produktentwicklung, Kanban steht für eine kontinuierliche Beobachtung und Steuerung von Prozessen. Daher ist Kanban als mögliche Dauerlösung für eine Aufgabenverwaltung innerhalb einer Familie aus meiner Sicht besser geeignet.

Kategorien
Webentwicklung Werkzeuge

“To fix this issue you can simply rename your file to api2.php”

Ich bin ja auch Nutzer von InfiniteWP. Das ist eigentlich ein sehr gutes Tool zum Verwalten von mehreren WordPress-Instanzen.

Nun hatte ich in einem Kundenprojekt eine API entwickelt, die zur Authentifizierung ein WordPress mit einer Nutzerdatenbank verwendet. Dazu habe ich von einem externen Projekt die wp-load.php inkludiert. Das funktionierte auch eine zeitlang auch sehr gut, bis die Agentur, die die Seite betreut, ein paar Änderungen vornahm. Sie installierten unter anderem InfiniteWP. In der datei “api.php” von InfiniteWP ist folgender Code:

if(basename($_SERVER['SCRIPT_FILENAME']) == "api.php"):
    exit;
endif;

Das Ziel dieses Codes ist relativ offensichtlich: Die Datei sollte nicht direkt geladen werden können. Blöd ist: Es wird nur auf den Dateinamen geprüft. Da meine externe Datei, auch api.php heisst, wird aber, sobald ich die wp-load.php include, das exit; ausgeführt.

Ich regte also an, vielleicht nicht nur den Filename zu überprüfen, sondern vielleicht auch den Pfad des aufgerufenen Scripts oder – wie unter WP auch nicht unüblich – auf eine gesetzte Konstante. Auf meine Anfrage beim Support bekam ich folgende Antwort:

Thanks for taking the time to reach out to us on your query. Your patience is greatly appreciated.

We are using api.php in our client plugin to use call back functions for our addons.
To fix this issue you can simply rename your file to api2.php

Are you experiencing any conflict issues with IWP client plugin and other plugins?
Please give us more information so that I can assist you accordingly.

Ich habe dann etwas möglicherweise etwas unhöflich reagiert und gefragt, wie sich das verhält, wenn der nächste dann das gleiche mit proxy.php und jemand anderes dann die index.php seines Plugins so schützt. Und dass ein HTTP Status 200 und eine weiße Seite in dem Fall auch nicht sinnvoll debugbar sind und dass mich das einige Tage Projektverzögerung gekostet hat und ziemlich beschissen ist. Zumal es in WordPress ja auch Beispiele gibt, wie es besser geht.

Erst darauf hin habe ich die Antwort bekommen, dass ein “scope of improvement on our end” vorhanden sei. Da geben sich dann Codequalität und Servicequalität dann echt nichts.

Ich habe mal ein Beispiel geschickt, wie man das sinnvoller lösen kann. Mal sehen, wann ein Update dafür kommt.

Kategorien
Changelog Releases Webentwicklung Werkzeuge

Statischer Seitengenerator: Hugo

Ich bin ja Fan von Hugo, und versuche, viele Probleme mit einem Statischen Tool zu erschlagen, wenn es denn geht.

Im Fall von Hugo sind das in den letzten Versionen ein paar mehr Dinge mehr geworden, die man damit lösen kann.

  1. Multi-Language. Eine ziemlich durchdachte Geschichte, die man da gebaut hat.
  2. Neue Struktur. Alles ist eine Seite. Damit lassen sich auch Index-Seiten als ganz normale Seiten behandeln
  3. Neue Template-Möglichkeiten: block templates

Diese letzten beiden Releases haben gezeigt, dass Hugo einen deutlichen Innovationsvorsprung gegenüber Jekyll und teilweise sogar WordPress hat. Im Forum von Hugo findet man sehr viele hilfsbereite User und Entwickler, die teilweise auch mal eigene Ideen vorstellen, die man super adaptieren kann.

Beispiel gefällig? Das Tutorial mit dem “Simple JSON site index” eignet sich auch hervorragend als Grundlage für das erstellen einer JSON-API für Apps oder ähnliches.

Kategorien
Changelog Releases Webentwicklung Werkzeuge

pimcore 4.4.x

Ich hatte ja schon vor einer Weile mal Artikel zum Thema pimcore veröffentlicht. Damals habe ich, ganz besonders unter “Was ist pimcore und wofür brauche ich das?” an einigen Stellen kein gutes Haar gelassen.

Die Erfahrungen, die ich mit den frühen Versionen von pimcore gesammelt habe, was das Thema Anpassung des Datenmodells bei einer Weiterentwicklung eines Projekts in verschiedenen Entwicklungsstufen angeht, habe ich damals stark kritisiert.

Innerhalb dieser 1,5 Jahre seit Erscheinen des Artikels hat sich einiges verändert, eigentlich ziemlich konstant zum Guten hin.

Unter diesen Umständen habe ich pimcore neu evaluiert und bin zu dem Entschluss gekommen, dass das ganze durchaus eine neue Chance verdient hat und sicher bei dem einen oder anderen Projekt in Zukunft zum Einsatz kommen wird.

Kategorien
Webentwicklung Werkzeuge

REST-Api mit dem Caddyserver simulieren

Ja, ich bin ein Fanboy. Ja, der bin ich gerne, wenn das “Produkt” oder Projekt sinnvoll und inspirierend ist. Ich arbeite zum Beispiel in Teams, bei denen jeder Entwickler eigener Herr seiner Maschine ist und ich exakt nichts voraussetzen kann, was jemand auf seinem Rechner installiert hat, wo er es hat und wie es konfiguriert ist.

Wenn man SPAs entwickelt, kann man natürlich für eine reine Frontend-Entwicklung eine komplette Vagrant-Box aufsetzen. Das ergibt für das Backend-Team einfach mehr Sinn. Da nicht jeder über eine generische Umgebung für den Apachen verfügt und das unter Windows z.B. auch eher suboptimal läuft, war ich total begeistert als ich über den Caddyserver gestolpert bin: “Serve the web like it’s 2016”. Caddy hat Binaries für Windows, Linux und OSX und braucht nur ein ziemlich einfaches Konfig-File.

Damit ist ein zweiter Entwickler ohne viel Stress in der Lage, ein SPA-Projekt zu übernehmen. Er braucht die Entwicklungs-Tools und den Caddyserver. Unsere aktuellen SPA-Projekte haben diese Datei schon von mir verpasst bekommen, in der Regel mit Proxy-Rewrites. die auf die Maschine mit dem Backend zeigen.

Aber man kann in den frühen Phasen des Projekts auch eine API und die entsprechenden REST-Requests mit lokalen JSON-Dateien simulieren, damit kann auch ein Abzug einer API lokal statisch genutzt werden. Das ist z.B. bei der Entwicklung von SPAs mit AngularJS oder EmberJS praktisch.

Ein GET-Request an /api/test/eintest  wird damit auf die Datei /data/get_test_eintest.json umgeleitet. Auch Antworten eines Post-Requests lassen sich mit /data/post_test.json simulieren.

Weitere Doku:

Code für einen lokalen API-Abzug in JSON-Files

:9090
gzip
rewrite /api {
	r ^/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)(/|)$
	to /data/{method}_{1}_{2}_{3}_{4}_{5}.json
}
rewrite /api {
	r ^/(.*?)/(.*?)/(.*?)/(.*?)(/|)$
	to /data/{method}_{1}_{2}_{3}_{4}.json
}
 
rewrite /api {
	r ^/(.*?)/(.*?)/(.*?)(/|)$
	to /data/{method}_{1}_{2}_{3}.json
}
 
rewrite /api {
	r ^/(.*?)/(.*?)(/|)$
	to /data/{method}_{1}_{2}.json
}
 
rewrite /api {
	r ^/(.*?)(/|)$
	to /data/{method}_{1}.json
}

Das ganze kann ich auch gerne noch mal als .htaccess-Datei für den Apachen zur Verfügung stellen.