Ich bin nicht wirklich das Parade-Beispiel von jemanden der alle möglichen News-Quellen, Zeitungsartikel, Trend-Berichte liest. ich versuche jedes Gefühl von Das gab’s doch schon mal
oder Das hätt’ ich auch gern gemacht
von mir fern zu halten und will euch von daher meine Dauerbrenner-Blogs im Zuge der von meinem Namensvetter uarrr.org wieder ins Leben gerufenen Ein Herz für Blogs
-Aktion vorstellen:
@TheKeyboard Das Blog des Programmierers Chris Hartjes ist immer wieder eine Erleuchtung wenn es um das große ganze beim Programmieren geht.
CodingHorror Die gleiche Qualität wie bei @TheKeyboard, nur eine andere Person. Auch eine absolute Empfehlung und Must-Read für jeden Programmierer!
HighScalability ist ein Blog für die Leute die gerne mal eine große Website betreiben. Den Tipp zu dem Blog bekam ich von Ugur von StudentSN und mittlerweile les’ ich, wenn ich Zeit hab viele Beiträge von dort um von den Großen zu lernen.
Wie manche von euch wissen betreibe ich seit einiger Zeit ja ein kleines aber mittlerweile echt ganz gut erfolgreiches Blog über Horror- und Fantasyfilme. Bei dem dritten Gewinnspiel haben über 150 Leute mitgemacht und mir eine Email geschickt. Leider etwas viele um per Losverfahren Gewinner auszuwählen. Das folgende Beispiel wird für erfahrene Programmierer nichts neues sein oder total langweilig. Eventuell hilft’s aber dem einen oder anderen weiter ;-)
Einfach mit OSX Mail die Mails extrahieren, die das richtige Lösungswort enthalten, oder die man untersuchen möchte. Dabei erstellt Mail einfach eine Datei mit allen Email-Quelltexten untereinander in einer Textdatei. Diese kann man super mit der Bash maltretieren und die Absenderadresse extrahieren:
grep -Z -P '^From:s(.+)' mail_export.txt | uniq
Wenn man dann noch zwei Gewinner auswählen möchte, braucht man nur doch die Anzahl der Zeilen in der Datei und wählt dann einfach zwei aus. Das ganze Shell-Script sieht dann so aus:
#!/bin/bash
##########################################################
# Extract n radom emails from a file
#
# Usage:
# winner.sh [filename] [count]
#
# Author: Marcel Eichner // Ephigenia <love@ephigenia.de>
# Date: 2009-03-30
##########################################################
TMPFILE=`mktemp -t emails` || exit 1
grep -Z -P '^From:s(.+)' "$1" | uniq > $TMPFILE
# select random line from file
LCOUNT=`wc -l "${TMPFILE}" | awk ' { print $1; }'`
echo "Choosing ${2:-1} winners from ${LCOUNT} emails"
for (( i = 0 ; i < ${2:-1}; i++ ))
do
LINENUMBER=$((($RANDOM % $LCOUNT) + 1))
sed -n ${LINENUMBER}p ${TMPFILE}
done
Das Script kann wenn es ganz doof kommt auch zwei mal die gleichen Absender auswählen. Wenn das passiert kann man das Bash-Script ja gleich noch mal laufen lassen. Danke an Caspar der noch weitere hilfreiche Anregungen gegeben hat!
Ich hab ja in letzter Zeit mal sporadisch mit dem wunderbaren Wordpress zu tun gehabt und konnte mich eine Weile damit beschäftigen. Viele Sachen gefallen mir nicht, unter anderem die Tatsache das Wordpress URLs immer komplett haben muss. Wie soll ich bitte lokal entwickeln wenn alle URLs komplett sind?
Dem lässt sich zum Glück relativ einfach abhelfen. Man legt sich einfach eine wp-config.php Datei an die man nur benutzt wenn man lokal entwickelt. Das kann man zum Beispiel am username im System festmachen:
$envUsername = strtolower(get_current_user());
$envConfigFilename = dirname(__FILE__).'/wp-config-'.$envUsername.'.php';
if (file_exists($envConfigFilename)) {
require $envConfigFilename;
}
Und dann kann man in der lokalen Konfigurations-Datei einfach den Wordpress-Installationspfad überschreiben:
define('WP_HOME','http://'.$_SERVER['HTTP_HOST'].'/wordpress/path/');
define('WP_SITEURL', WP_HOME);
So hat man zumindest damit keinen Stress mehr. Wie man die Bilder lokal verlinkt weiss ich allerdings auch noch nicht …
Letzte Woche Freitag Nacht wurde von Google der Source Code aka Quellcode zu deren Online-Betriebssystem Chrome OS released. Ein paar Videos und noch mehr Infos gibt’s in dem dazugehörigen Blog-Post im Chrome-Blog.
Wer es drauf hatte auf Ubuntu seinen eigene Version zu compilieren kann sich glücklich schätzen und kennt sich wahrscheinlich gut damit aus. Ich musste mich mit dem Versuch begnügen das ganze mit einem Festplatten-Image von GDGT in Virtual Box (3.0.12 r54655) auf Snow Leopard (10.6.2) zum Laufen zu bekommen. Nachdem ich den Netzwerkadapter auf Desktop umgestellt habe, Linux - Ubuntu - Other Linux wie in der Anleitung angegeben hatte zeigte sich auch endlich der Login-Screen! So, jetzt noch die Tücken der englischen Tastatur besiegen und nachdem das "z" im Passwort auch hübsch als "y" auf der Tastatur eingegeben wurde komm ich auch mit meinem Google Account rein! (Manchmal geht das wohl nicht weil die Server überlastet waren?)
Ja, wie ist es? Ganz nett - es kann noch nich’ viel, alles läuft quasi im "Browser". Das Schachspiel das man schon gesehen hat vielleicht läuft in Flash und ich glaube nativ installiert, auf einem Netbook, ist Chrome OS superschnell! Frisch hochgefahren mit 3 Fensterchen offen, verbrauchte Chrome OS nur ca. 50MB!
Ich bin gespannt wie das fertige System aussehen wird. In einem Jahr wird sich ja hoffentlich noch viel Ändern und noch mehr "Programme" geboten werden. Zum Websites-Testen braucht man Chromium auf jeden Fall nicht - da reicht auch der Chrome-Browser.
Erst vor zwei Wochen etwa hatte ich das Vergnügen und konnte den Layar-Browser auf einem der neuen IPhones 3Gs ausprobieren und war schlichtweg begeistert!
Dort kann man einfach den Bildschirm wie ein Fenster in einer andere Welt benutzen. Man schwenkt das Handy hin und her und sieht an welcher Stelle im Raum (in 3D dargestellt) sich zum Beispiel Wikipedia Einträge befinden. Ganz praktisch wenn man sich verlaufen hat und den Fernsehturm gerade nicht sehen kann um sich zu orientieren. Erst eine Spielerei - die aber durchaus imenses Potential hat das Leben der Menschen zu erleichtern. Die intuitive Art wie man das Handy bewegt hilft dabei nur ungemein.
In Layar kann man so gut wie alle Daten die einen Ort haben anzeigen lassen, vorausgesetzt es gibt dort einen Stream dafür. Neu dazu gekommen sind heute die Jungs und Mädels mit ihren Reisetips von Spotted by Locals. Wer sich nicht so richtig vorstellen kann wie das genau abläuft guckt sich am besten eines der Videos an die es bei Youtube gibt.
Also nur noch eine Frage der Zeit, bis alle Leute mit dem Handy vor dem Gesicht durch die Straßen rennen und sich niemand mehr verläuft! Es sei denn, der Akku is’ leer ;-)
Ich hab mir letztens für meine kleine Bibliothek Zuwachs besorgt und mir die englische Originalausgabe von Clean Code
(Amazon-Affiliate Link) von Uncle Bob
aka. Robert C. Martin besorgt.
Nach Code Complete
, Code Craft
die ca 300 Seiten dicker sind, ist das das dritte Buch das sich mit Quellcode-Qualität beschäftigt.
Anders als in den zwei anderen Büchern gibt es in Clean Code
genauere konkrete Code Beispiele und weniger Statistiken. Was überzeugender ist kommt ganz auf den persönlichen Geschmack an. Statistiken sind super Argumente für Projektmanager oder Chefs um ihre Pläne durchzubringen wohingegen die konkreten Beispiele den einzelnen Programmierer ansprechen. Besonders die zwei wirklich konkreten und auch nachvollziehbaren Kapitel weiter hinten im Buch geben ein Beispiel daran.
Wunderbar finde ich auch, dass anders als in den anderen beiden Büchern das Thema Respekt angesprochen wird. So ist es weder falsch sondern eher richtig den Quellcode von jemand anderen zu analysieren und zu kritisieren denn nur dadurch kommt ein Dialog zu Stande und die Qualität verbessert sich.
Am Ende von Clean Code
welches nur Java Beispiel beinhaltet - was aber nicht wirlich stört - werden alle "Regeln" noch einmal aufgezählt und viele kennt man schon aus anderen Büchern. Für mich war das eine schöne Auffrischung für mich und ein Ansporn noch länger über den richtigen Namen der nächsten Variablen nachzudenken!
Programmierung ist kein Service sondern ein Handwerk das es gilt zu beherrschen!
Wow, dass wusste ich jetzt auch noch nicht - hab ich wiedermal nur durch Zufall entdeckt. Wenn man in Textmate CTRL+SHIFT+T drückt sucht Textmate im aktuellen Projekt nach //TODO tags und listet diese übersichtlich auf. Die //TODO Tags kenne ich ursprünglich aus Eclipse und das diese jetzt auch in Textmate gehen entzückt mich total :D
Manchmal lege ich mir für Projekte extra Todo-Listen an. Things benutze ich irgendwie nicht mehr besonders, da die Trial abgelaufen ist und irgendwie ist das auch zu statisch naja. Für Leute die Textmate benutzen gibt es schon voll Lange ein Bundle das Todo-Listen unterstützt: Tasks bundle für Textmate
Der Firefox meiner Freundin hatte enorme Probleme sich mit Facebook anzufreunden und da hab’ ich mich in die Untiefen von Windows Vista begeben müssen. Doofe Sache das. Dann hat sich rausgestellt, dass man einfach nur das Skype Addon (was macht das eigentlich!?) deinstallieren muss. (Das soll btw. auch bei GMail helfen!)
Wem’s hilft kann sich ja in den Kommentaren bedanken!