git diff und patch

Mit dem Befehl git diff lassen sich Quellcode-Änderung als Patch-Datei ausgeben:

git diff > patchfile

Der Inhalt von patchfile sieht dann ungefähr so aus:

diff --git a/library/Nimohy/Application/Resource/View.php b/library/Nimohy/Application/Resource/View.php
index e3c28c9..e59e144 100644
--- a/library/Nimohy/Application/Resource/View.php
+++ b/library/Nimohy/Application/Resource/View.php
@@ -26,6 +26,7 @@ class Nimohy_Application_Resource_View
         $view->headLink(array('rel' => 'favicon', 'href' => '/favicon.ico'));
         $view->headScript()->appendFile('/javascripts/vendor/jquery.js', 'text/javascript');
         $view->headScript()->appendFile('/javascripts/vendor/jquery.json.js', 'text/javascript');
+        $view->headScript()->appendFile('/javascripts/vendor/jquery.form.js', 'text/javascript');
         $view->headScript()->appendFile('/javascripts/vendor/jquery.livequery.js', 'text/javascript');
         $view->headScript()->appendFile('/javascripts/vendor/jquery.core.js', 'text/javascript');
         $view->headScript()->appendFile('/javascripts/plugins.js', 'text/javascript');

Um dann den Patch korrekt einspielen zu können, muss patch die Git-spezifischen “virtuellen Verzeichnisse” (a/ und b/) ignorieren. Dazu nutzen wir einfach den den Parameter -p1:

patch -p1 < patchfile

Das Ergebnis ist dann z.B. eine Ausgabe wie diese hier:

patching file library/Nimohy/Application/Resource/View.php
Veröffentlicht unter Git, Linux, Software-Entwicklung | 1 Kommentar

Testen von Datei-Uploads mit cURL

Ich habe vor kurzem einen Zend Action-Helper geschrieben, der Datei-Uploads entgegen nimmt und den Controllern diese dann als File-Objekte zur Verfügung stellt.

Der einfachste Weg, ein oder mehrere Dateien an den Controller zu senden, ging über curl auf der Bash:

curl -F upload=@file.pdf http://localhost/upload

Der Parameter -F steht für File. upload kennzeichnet den Index unter der dann später die Datei im $_FILES-Array zu finden ist. Sollen mehrere Dateien hochgeladen werden, so müssen lediglich mehrere -F-Parameter angegeben werden:

curl -F upload[]=@file.pdf -F upload[]=@file2.pdf http://localhost/upload

Wie im Beispiel zu sehen, kann auch Array-Notation benutzt werden.

@file.pdf entspricht dem Namen (ohne das @-Zeichen) der hochzuladenden Datei.

Veröffentlicht unter Linux, Software-Entwicklung, Tipps & Tricks | Hinterlasse einen Kommentar

Generierung von zufälligen Gutschein-Codes

Auf der Suche nach einer schnellen Möglichkeit, möglichst viele – in meinem Falle 500.000 – eindeutige Codes für Gutscheine zu erzeugen, kam ich auf die Idee, /dev/(u)random zu verwenden. Die “Datei” /dev/urandom liefert unter Linux unbegrenzt viele zufällige Zeichen zurück, die mittels des Linux-Befehls tr (charater translation) in alphanumerische Zeichen “übersetzt” werden können. Damit aus den zunächst unleserlichen Zeichen brauchbare Zeichen entstehen, übergebe ich den den Output von /dev/urandom an tr, der Zeichen für Zeichen ersetzt. Angegeben können einzelne Zeichen oder auch Zeichengruppen (A-Z 0-9). In meinem Falle habe ich die Zeichen 0, O, 1, l und I ausgelassen, da diese u.U. für Verwechslung sorgen könnten. Mittels fold -w 8 breche ich dann die Endlos-Zeichenkette nach jeweils 8 Zeichen um. head -n 500000 sorgt dafür, dass mir exakt 500.000 Kombinationen geliefert werden und anschließend das Script beendet wird.

Nachfolgend der vollständige Aufruf:

cat /dev/urandom | tr -dc "a-km-zA-HJ-NP-Z1-9" | fold -w 8 | head -n 500000 > ~/codes.txt

Inhalt der Datei codes.txt:

x3p91PZE
dtZ5RAVN
TQjiK7MN
wCF6aVDi
Zvuu3jCA
rBrFm62V
GDoGyW6c
LxNaMbQP
Md3yReDZ

Das Ergebnis lässt sich mittels sort, uniq und wc auch überprüfen. Zunächst wird die Datei codes.txt sortiert, anschließend nur die einmalig vorhanden Zeilen angezeigt (uniq -u), die dann dann wc zählt und am Ende die Summe der eindeutigen Zeilen ausgibt (wc -l).

sort ~/codes.txt | uniq -u | wc -l
Veröffentlicht unter Linux, Software-Entwicklung, Tipps & Tricks | Verschlagwortet mit , | Hinterlasse einen Kommentar

Hallo Welt! ;-)

Ab sofort werde ich diesen Blog dafür nutzen, um über die alltäglichen Probleme und Lösungen als Software-Entwickler zu berichten. Wünsche viel Spaß beim Lesen!

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar