MySQL mit Ruby unter Mac OS X

Möchte man eine MySQL-Datenbank mit Ruby ansprechen, muss unter UNIX-artigen Betriebsystemen den Datenbanktreiber manuell kompilieren.
Dazu genügt es die jeweils aktuelle Version von http://www.tmtm.org/downloads/mysql/ruby/ zu laden und zu kompilieren. Derzeit aktuell ist Version 2.7.3 .

Das Archiv ist mit tar xzvf mysql-ruby-2.7.3.tar.gz schnell entpackt. Danach wechseln wir ins Verzeichnis mysql-ruby-2.7.3 konfigurieren das Modul:

sudo ruby extconf.rb --with-mysql-include=/usr/local/mysql/include --with-mysql-lib=/usr/local/mysql/lib --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

Ich habe MySQL unter /usr/local/mysql installiert - der Pfad muss unter Umständen angepasst werden. Wo MySQL installiert ist, lässt sich z.B. mit einem which mysql in Erfahrung bringen.

Der bekannte Einzeiler sudo make && make install erledigen den Rest.

Mit einem kleinen Script lässt sich die Installation testen:

RUBY:
  1. require "mysql"
  2. begin
  3.   Mysql.new("localhost","dbuser","geheim")
  4.   puts "Klappt! :) "
  5. rescue StandardError
  6.   puts "Klappt nicht. :( "   
  7. end

Mr Wong codes wrong

Mich erschreckt immer mehr, wie dilletantisch proffessionelle Websites mit hohen Bekanntheitsgrad und Besucherzahl implementiert sind. Heute Morgen zum Beispiel hat der Social-Bookmarking-Dienst Mr Wong einen Totalausfall:

Mr Wong Fehlermeldung

Das kann passieren, auch bei Profis. Die Frage ist nur, wie man mit solchen Fehlern umgeht. PHP-Fehlermeldungen in einem Produktivsystem über den Browser auszugeben, ist eine schlechte Idee. Oftmals geben diese Fehlermeldungen Auskunft über Implementierungsdetails aus, die einem potentiellen Angreifer Sicherheitslücken offenbaren können. Normale Benutzer können mit Fehlermeldungen des PHP-Interpreters gar nichts anfangen, darum sollten sie in verständlichen Worten darüber informiert werden, warum der Dienst momentan nicht funktioniert. Etwa in der Form von: "Unsere Datenbank ist ausgefallen. Unser Administrator wurde informiert. In Kürze wird der Dienst wieder zur Verfügung stehen. Wir bitten den Ausfall zu entschuldigen." Und bevor solche Meldungen überhaupt ausgegeben werden, sollte der Administrator benachrichtigt werden. Mit Exceptions wäre das alles kein Problem:

PHP:
  1. try {
  2.     // Hier kann was schiefgehen!
  3. } catch (Exception $fehler)
  4. {
  5.     // Gib was sinnvolles aus, informiere den Sysadmin, don't panic!
  6. }

Um keinen Code duplizieren zu müssen und Exceptions gezielter behandeln zu können, lassen sich in PHP5 sogar eigene Exceptions implementieren. Außerdem bringt die PHP-SPL vordefinierte Exceptionklassen mit. Doch dazu wann anders mehr.

Ironischerweise hat die Agentur hinter Mr Wong vor kurzem eine Stelle für PHP-Entwickler ausgeschrieben. ;)

Professionelle Softwareentwicklung mit PHP5

Professionelle Softwareentwicklung mit PHP5Der Code der meisten in PHP implementierten Anwendungen ist schlecht. Schlecht bedeutet nicht etwa, dass er nicht funktionieren würde. Aber er ist schlecht zu warten, kaum wiederverwendbar und anfällig für Fehler. Die Objektorientierung bietet Paradigmen und Patterns, die konsequent angewandt zu guten Code führen, doch bis zu Version 4 wurde ein objektorientierter Ansatz in PHP gar nicht oder nur nominell unterstützt. Seit Version 5 beginnt die populäre Scriptsprache sich zu professionalisieren, allerdings können nur wenige Entwicklern einen Nutzen daraus ziehen. Denn viele, wenn nicht die meisten PHP-Programmierer lernten PHP als erste Programmiersprache und sind nicht mit professionellen Entwurfs- und Implementierungstechniken vertraut. Abhilfe schafft das Buch Professionelle Softwareentwicklung mit PHP5 von Sebastian Bergmann: Der Autor richtet sich an den fortgeschrittenen PHP-Entwickler und erläutert ihm Objektorientierung, Entwurfsmuster und Modellierung mit UML aufs Wesentliche reduziert, abstrakt und doch praxisnah. Wer professionell in PHP entwickeln möchte, meistert mit diesem Buch den bequemen Einstieg.

Die erste Auflage des Buchs stellt der Autor auf seiner Website als HTML-Version kostenlos zur Verfügung.

Zeichensätze bequem konvertieren

Eine bequeme Möglichkeit Zeichensätze zu konvertieren kommt natürlich aus der UNIX-Welt: iconv

Kürzlich wurde ich mit der Migration eines CRM beauftragt. Das alte CRM speicherte die Daten ISO 8859-1 codiert ab, das neue in UTF-8.

Hier die Lösung:

iconv -f iso-8859-1 -t utf-8 crm8859-1.sql > crmUTF-8.sql

Das SQL-Dump war übrigens > 2 GB, iconv eignet sich im Gegensatz zu vielen anderen Tools auch für umfangreichere Datenmengen.
Iconv lässt sich übrigens auch über viele Scriptsprachen wie etwa PHP, Perl oder Ruby benutzen.

Rubybuch für lau

Ruby ist eine sehr mächtige objektorientierte Programmiersprache, die aufgrund des ihr innewohnenden Prinzips der geringsten Überraschung im direkten Vergleich mit ähnlich leistungsfähigen Sprachen leicht erlernbar ist. Wem dazu die exzellente Dokumentation nicht genügt, erhält mit Mr. Neighborly’s Humble Little Ruby Book gegen eine kostenlose Registrierung ein didaktisch gut aufgebautes Lehrbuch.

Wer lieber auf toten Bäume liest, kann das Buch übrigens auch kaufen.