Kategorien
Allgemein

Hallo Welt!

Willkommen zur neuen Version meiner Webseite!

Auf Grund von Hosting Problemen konnte ich nur eine Auswahl der alten Beiträge ohne Kommentare migrieren.

Beim Design habe ich mich für das WordPress 2020 Theme entschieden, weil es dem alten Theme ähnelt, jedoch für mobiles optimiert ist.

Die Kommentare für die alten Artikel sind gesperrt, um Spam zu vermeiden.

Kritiken und Verbesserungsvorschläge sind gerne willkommen.

Kategorien
PHP

Ein Blick hinter die Kulissen der Webseite von Alma de Rua Capoeira

Alma de Rua Capoeira Logo

Nach intensiver Vorbereitung präsentiere ich stolz die Alma de Rua Capoeira Webseite.

Ohne die Hilfe von Freunden wäre das Ergebnis nicht ganz so elegant. Harry hat das Logo entworfen, Gerrit hat die Seite designt, Julia hat die Bilder bearbeitet und ich habe die Planung und Umsetzung übernommen.

Verwendete Frameworks & Bibliotheken

Das Front-End wurde mit HTML, CSS3 & JavaScript entwickelt:

Das Back-End wurde komplett in PHP mit dem Design Pattern MVC im Hinterkopf implementiert:

Ausblick

Die Webseite von Alma de Rua wird stetig weiterentwickelt. Als nächstes steht die Anpassung an Handys und Tablets mittels Media Queries(Responsive Design) an. Danach wird die Seite, um eine Karaoke-Web-App erweitert, die es erleichtert, neue Capoeira-Lieder zu lernen. Die Prototypen stehen schon, doch das Feintuning und die Tests dauern noch an.

Bei Fragen, Kritik und Anregungen stehe ich gerne zur Verfügung.

Kategorien
PHP

Datei Downloads mit dem PHP Framework Slim

Ich verwende gerade das PHP Microframework Slim in der Version 1.5 für ein aktuelles Projekt. Um Downloads zu protokollieren, will ich sie über Slim laufen lassen.

Die folgenden Schritte sollten auch mit der Version 1.6.2 funktionieren:

  1. Die Datei, in meinem Fall ein PDF, wird mit Hilfe der PHP-Funktion readfile in den Speicher geladen.
  2. Der Content-Type wird mit der Methode header() des Slim Response-Objekts auf „application/pdf“ gesetzt. Das Setzen des Content-Types ist wichtig, da ansonsten die Datei vom Browser wie eine Textdatei behandelt wird.
  3. Die Datei wird via body()des Slim Response-Objektes als Antwort geschrieben.
$app = new Slim();
$app->get('/exam.pdf', function () use ( $app ) {
    $downloadFile = readfile('./public/downloads/exam.pdf');
    $response = $app->response();
    $response->header("Content-Type", "application/pdf");
    $response->body($downloadFile);
});

Somit ist die Datei unter http://localhost/exam.pdf verfügbar*.
* Soweit die index.php von Slim unter http://localhost/ verfügbar ist.

Die Protokollierung habe ich hier rausgelassen und mich nur auf den Download konzentriert.

Vorsicht: Diese Umsetzung sollte nur mit kleinen Dateien verwendet werde, weil man bei größeren Dateien Gefahr läuft die PHP Speichergrenze zu sprengen.



Kategorien
Javascript Testen

Jasmine Tests vor jedem Git Commit ausführen

In meinem aktuellen Backbone.js Projekt verwende ich Jasmine für die Tests. Ich habe dazu das Jasmine Ruby Gem installiert.

Die Tests liefen erst als ich

require 'rubygems'

in die Rakefile eingefügt habe.

Bisher habe ich die Tests nur im Browser ausgeführt mit:

rake jasmine

Das ganze ist auch schön und gut, aber manchmal vergesse ich die Tests auszuführen und committe etwas, obwohl die Tests fehlschlagen.

Um die Tests laufen zu lassen, wenn ich commit-en will, habe ich einen pre-commit Hook geschrieben:

  • Erstelle die Datei .git/hooks/pre-commit
  • Folgendes in pre-commit kopiert:
rake jasmine:ci
exit $?
  • Den Hook ausführbar machen:
chmod +x .git/hooks/pre-commit
  • Tada! Bei jedem Aufruf von git commit -am ‚was geändert‘ werden zuerst die Tests ausgeführt, wenn sie fehlschlagen, wird auch nichts committet.

So sah es als ich git commit gestartet habe.

So sieht es aus, wenn die Tests fehlschlagen und der commit nicht durchgeführt wurde.

Das ganze dauert zwar ein bisschen, aber ich fühle mich sicherer, dass ich beim commit nichts zerstöre.

Kategorien
Javascript

JavaScript: Problem mit this

tl;dr http://howtonode.org/what-is-this hat mir this in JavaScript klar gemacht.

Vor kurzem habe ich angefangen, einen Memory-Klon in JavaScript zu entwickeln.

Zuerst verwendete ich nur prozedurales JS mit Underscore und jQuery. Nach über 500 Zeilen Spagetti-Code, habe ich nach Frameworks gesucht, um den Code zu organisieren und bin bei Backbone.js auf was Einfaches und Solides gestoßen.

Doch Code wie

_.delay(game.nextLevel, 500)

funktionierte nicht mehr. Das Problem ist JavaScripts this, das in verschiedenen Kontexten verschiedene Objekte referenziert. Das this in game.nextLevel referenziert nicht mehr game, sondern window.

Die Lösung zum Problem ist:

_.delay(_.bind(game.nextLevel, game), 500)

Somit wird game als Kontext der Funktion game.nextLevel gesetzt. Somit referenziert das this in der Funktion wieder das game Objekt.

Tim Caswells Artikel auf howtonode.org hat mir geholfen das Ganze besser zu verstehen.

Kategorien
Javascript Open Source PHP

Mein erster Open Source Beitrag

Version 1.0.4 von WPide wurde veröffentlicht und ich werde als Contributor gelistet 🙂

Kategorien
Javascript Open Source PHP

UPDATE: Ajax.org Code Editor(ACE) & WordPress

Nachdem ich den Ajax.org Code Editor entdeckt habe, dachte ich mir, dass es ganz nett wäre, das Ganze in WordPress einzubinden. Die Plugin-Suche führte mich zu WPide. Das Plugin ersetzt den Theme & Plugin Editor durch ACE. Leider unterstützt es nur PHP-Highlighting. Deshalb habe ich beschlossen, es um JS- & CSS Highlighting zu erweitern. Während ich dabei war habe ich die große PHP-Klasse auseinander genommen und das JavaScript in separate Dateien ausgelagert.

Ich habe im Plugin Forum angefragt, wie ich den Code zum eigentlichen Plugin beitragen kann und warte noch auf die Antwort. Wer mal einen Blick auf die Erweiterungen nehmen möchte, kann Sie hier finden.

Update

Mein Code ist in das Plugin eingeflossen. Jetzt muss ich nur noch warten, bis die Änderungen in das WP Plugin-Repository geschoben werden.

Kategorien
Allgemein

Für Open Source zahlen? Ja!

Open Source Software unter fast jeder Lizenz ist kostenlos. Ich habe mich schon oft gefragt, wie jemand so lange Motivation haben kann, ohne manchmal ein Dankeschön zu hören und bin einfach zu der Antwort gekommen, dass die meisten davon gute Menschen sind.

Jeff Atwood hat mich schon vor Jahren überzeugt für Open Source und Freeware zu zahlen und Zed Shaw hat mich wieder überzeugt. Letztes Jahr habe ich 10$ an Doctrine gespendet. Auch wenn heute nicht der 1. Dezember ist, folgt eine Spende an das WordPress Addin Google(XML) Sitemaps Generator. Aus der Beschreibung

This plugin generates a XML-Sitemap compliant sitemap of your WordPress blog. This format is supported by Ask.com, Google, YAHOO and MSN Search.

Ja! Es generiert mir nach jedem Post Sitemaps für alle Seiten, sagt Google, Yahoo, usw. Bescheid und ich muss nichts machen, außer es zu installieren! Und ich kriege in den Einstellungen noch einen Link zum spenden!

Danke, Arne Brachhold! Ein „Hurra!“ auf dich! Du hast mir einen PayPal Link gegeben und ich konnte zumindest ein kleine Spende machen. Meine 5$ hast du 😉

Für wen stimmt ihr mit eurem Geldbeutel oder denkt ihr, dass es sinnlos ist für Open Source und Freeware zu „zahlen“?