Spaßige Seiteneffekte Wut

05 06 2008

Gerade arbeite ich an einem mehr oder weniger zeitkritischen Projekt, das in Symfony entwickelt wird. Ich habe zwar das Symfony-Buch vor etwa einem Jahr gelesen (statt meine Thesis anzufangen), aber gearbeitet habe ich damit noch nie. Das ändert sich jetzt unter gewissem Druck. Morgen habe ich mittags einen Termin mit meinem Auftraggeber und bin noch nicht wirklich weit gediehen. Warum? Zwei lustige Probleme mit dem halbfertig angelieferten Datenmodell haben mich heute beinahe den ganzen Tag gekostet:

1. VARCHAR-Feldtypen brauchen (zumindest in MySQL) eine definierte Länge. Ich hatte die im Modell vorgegebenen Feldtypen einfach übernommen. Zwar hatte ich mich gewundert über die fehlende Längenangabe, aber hab mir nichts weiter dabei gedacht. Ahnungslos laufe ich also mit Propel los und schaffe es nicht, mein Modell damit umzusetzen, die Fehlermeldungen waren leider auch wenig hilfreich. Irgendwann bin ich dann drauf gekommen. Naja, hätte ich wissen müssen.

2. Man sollte Tabellen nicht order nennen! Um diese Erkenntnis zu erlangen, habe ich quasi den restlichen Tag gebraucht. Propel baut problemlos sein Modell damit auf und MySQL legt eine solche Tabelle auch ohne Murren an, nur scheitert jede Anfrage mit dem Tabellennamen irgendwo im SELECT mit einem SQL-Syntaxfehler. Eigentlich klar, ist ORDER doch ein SQL-Schlüsselwort, weswegen auch die Syntax-Hervorhebung von Notepad++ an solchem SQL-Code scheitert. Dieser Effekt hat mich letztlich auch auf die Lösung gebracht, als ich mir die von Propel generierte lib.model.schema.sql doch noch mal genauer angeguckt habe. Also flugs die Tabelle umbenannt, das Schema neu generiert und zack, das Adminmodul funktioniert endlich ohne Probleme.

Zu meiner Verteidigung muss ich anführen, dass beide Problemursachen nicht auf meinem Mist gewachsen sind, sondern schon mit meiner Modell-Vorlage ins Haus kamen, die allerdings ins Blaue hinein geschrieben waren und nicht validiert. Das habe ich leider gemerkt…

P.S. Symfony ist wirklich genial. Zwar habe ich heute nur mit dem Model-Layer gearbeitet, aber auch hier merkt man schon, wie ausgefeilt das ganze Framework ist. Es wird mir eine Freude sein, tiefer in die Entwicklung einzusteigen.

P.P.S. Sehr hilfreich für häufige Model-Rebuilds ist übrigend dieses Script, das einen Dump der Datenbank macht, das Modell neu aufbaut und die Daten danach wieder einspielt. Das Symfony-Standardverhalten bei einem model-build ist nämlich, alle Tabellen zu löschen und neu anzulegen, was leider die darin enthaltenen Daten entsorgt.


RSS-Feed als E-Mail lesen

04 04 2008

Extra für den Jan, der mich schon zum hundertsten Mal darauf angesprochen hat, habe ich mal kurz recherchiert: RSSFWD aboniert RSS-Feeds von Blogs und anderen Website und schickt einem bei Änderungen die neuen Artikel per E-Mail zu. Find ich etwas irre, denn der Witz an RSS ist ja gerade, dass man sie direkt wie E-Mails abonnieren kann. Aber Outlook vor 2007 kommt damit offenbar nicht ohne weiteres klar und einen Feedreader will nicht jeder extra für einen einzigen Feed benutzen (ich empfehle für den Einstieg die RSS-Funktionen in allen modernen Browsern, also das orangefarbene Icon rechts neben der Adresse).

Für die, die nicht wissen, was ein RSS-Feed ist: Damit kann man Websites, die sowas anbieten, Abonnieren und bekommt eine irgendwie geartete (je nach Programm) Meldung, wenn es neue Beiträge gibt. Bei mir kann man konkret alle Beiträge in einem Feedreader (so heißt das Leseprogramm) komplett lesen, bei anderen Blogs bekommt man mitunter nur einen Hinweis auf neue Nachrichten. Eine Liste von Feedreadern und mehr Infos dazu findet sich auch in der Wikipedia. Ich selbst benutze Opera und Thunderbird für meine umfangreiche Feedsammlung.


Virtueller lokaler Entwicklungsserver

03 03 2008

Für die Entwicklung von Webkram habe ich einen lokalen Ubuntu-Server in einer virtuellen Maschine installiert. Dort läuft auch ein Samba-Server, über den ich auf meine Dateien zugreife. Sehr praktisch das ganze. Mache ich das Ding aus, stört mich nichts, mache ich es an, habe ich eine komplette und realistische Entwicklungs-Umgebung. Soweit nichts besonderes, aber ich wollte auf die Schnelle ein paar kleine Tipps dazu loswerden.

Für den Start der Virtuellen Maschine und die Einbindung der Netzlaufwerke benutze ich eine simple Batch-Datei:

"PFAD\ZU\VBoxManage.exe" startvm "NAMEDERVIRTUELLENMASCHINE"
pause
net use LAUFWERKSBUCHSTABE: \\SERVERNAME\FREIGABE PASSWORT /user:USERNAME /persistent:no
Die Pause ist notwendig, damit das Verbinden zu den Freigaben nicht fehlschlägt, während der Server noch startet. Folgender Code beendet die Verbindungen und hält den Server an:
net use /DELETE LAUFWERKSBUCHSTABE:
"PFAD\ZU\VBoxManage.exe" controlvm "NAMEDERVIRTUELLENMASCHINE" savestate

Durch das Einfrieren gibt es leider ein lästiges Problem: Die Uhr des Servers wird mit eingefroren, so dass nach jedem aufwachen ein sudo ntpdate ntp1.ptb.de nötig ist, um die Uhr neu zu stellen. Ansonsten ist diese Lösung wirklich gut und VirtualBox eine brauchbare und kostenlose Software. Diese Anleitung hat mir beim Einrichten des Ubuntu-Servers übrigens gute Dienste geleistet. Ach ja: Als ich das seinerzeit eingerichtet habe, musste man noch den Server-Kernel via Aptitude von einer Rettungs-CD gegen einen Standardkernel austauschen, weil der Server-Kernel von Ubuntu 7.04 in VirtualBox nicht startet. Vielleicht ist das aber auch inzwischen behoben.

Noch ein weiterer kleiner Trick zur Arbeitserleichterung ist eine Verknüpfung zum Editor der Wahl mit der Hosts-Datei, die man ab und an bearbeiten muss. In Windows ist diese Datei so dämlich tief versteckt, dass sich das schnell lohnt.


YouTube valide einbinden

30 11 2007

Gerade habe ich ein YouTube-Video eingebunden und mich tierisch darüber geärgert, dass dadurch meine Seite vom Validator mit etlichen Fehlern und Warnungen abgestraft wird. So geht das nicht, also habe ich die von mir bevorzugte Methode für die Flash-Einbindung nun auch für Youtube angewendet. Und siehe da, keine Warnungen mehr. Nachteil: Ohne JavaScript kein Video, aber immerhin ein Link auf Youtube als Ersatz für die Feedreader und Web-2.0-Verweigerer ohne JavaScript.

Ich benutze hierfür das grandiose SWFObject 2.0, das via JavaScript den Browser und die Flash-Version erkennt und die entsprechend korrekte Einbindung vornimmt. Falls das nicht klappt, gibt es einen passenden Alternativcontent. Reicht die Flash-Version nicht (wichtig demnächst für H.264-Videos), wird ein Express-Installer aufgerufen, der eine neue Version installiert.

<div id="YouTubeKillerspiele"><p><a href="http://www.youtube.com/watch?v=R9JRm3iQQak">Youtube-Video</a></p></div>
<script type="text/javascript" src="/pfad/zum/swfobject.js"></script>
<script type="text/javascript">
	// <![CDATA[
	var flashvars = {};
	var params = {
		AllowScriptAccess: "always",
		AllowFullScreen: "true"
	};
	var attributes = {};
	swfobject.embedSWF("http://www.youtube.com/v/R9JRm3iQQak", "YouTubeKillerspiele", "425", "355", "8.0.0", "/pfad/zum/expressInstall.swf", flashvars, params, attributes);
	// ]]>
</script>

Für Youtube brauchen wir die flashvars und die attributes nicht, ich habe sie aber der Vollständigkeit halber mitgenommen. Für den Flowplayer etwa trägt man die Einstellungen in die flashvars ein.


Ein kleiner Leitfaden zur Umstellung auf Call&Surf

01 09 2007

So, nachdem ich gerade meinem Ärger über Probleme bei der Umstellung auf Call&Surf von T-Home Luft gemacht habe, folgt hier eine kleine Checkliste zu Umstellung auf diese Tarife:

1. Ist man bisher Kunde bei einem anderen DSL-Provider (1&1, Freenet, AOL, Arcor, Lycos, wasauchimmer), sollte man vor einem Anruf bei T-Home über die dafür gültige Vertragsbindung klar werden. Ist man noch etliche Monate gebunden, bleibt auch der DSL-Port so lange dort und muss auch dort bezahlt werden. Eine Umstellung kommt erst in Frage, wenn da ordentlich gekündigt wurde! Vorsicht: T-Home nimmt meiner Erfahrung nach aber die Veträge trotzdem an und man muss dann so lange doppelt bezahlen.

2. Hatte man vorher Congstar, kündigt T-Home den Tarif dort nicht automatisch und übernimmt auch nicht deren Zugangsdaten, auch wenn Congstar eine Tochter der Telekom ist. Wenn die Hotline etwas anderes behauptet, stimmt das nicht. Also aufpassen und rechtzeitig die Zugangsdaten im Router ändern.

3. Die Telefonflatrate gilt nur für Gespräche zu Festnetzanschlüssen der Telekom! Für Gespräche in alle anderen Festnetze (Alice, VoIP-Anschlüssen, Arcor, wasauchimmer) nimmt T-Home einen geringen Aufpreis. Das ist halb so wild, aber man muss das wissen.

4. Hatte man irgendwann mal T-Online-Zugangsdaten, gelten die für den neuen Vertrag wieder bzw. noch immer. Wer die nicht mehr weiß, sollte das bei der Bestellung oder später sagen und sich neue Zugangsdaten schicken lassen. Das geht nur per Post und dauert entsprechend.

5. In den Router muss als Benutzername folgender Bandwurm eingegeben werden: AAAAAAAAAAAATTTTTTTTTTTTMMMM@t-online.de, wobei die 12 As für die zwölfstellige Anschlusskennung steht, die 12 Ts für die zwölfstellige T-Online-Nummer und die 4 Ms für die vierstellige Mitbenutzernummer, also meistens 0001. Ist eine der Nummern kürzer als 12 Stellen, muss noch eine # vor die Mitbenutzernummer. Glücklich, wer einen Router hat, der T-Online kennt und die Daten einzeln abfragt.

Hat man das alles beachtet, kann es los gehen. Ach ja, Fastpath gibt es bei 16Mbit ADSL2+ Anschlüssen nicht mehr: Die Pings sind auch so sehr kurz.