Sonntag, 28. Februar 2010

PHP von MAMP in AppleScript nutzen

Viele Entwickler am Mac nutzen AppleScript für kleine wie größere Aufgaben. Manche Vorgänge können allerdings mit AppleScript aufwendiger sein als in anderen Programmiersprachen - wie zum Beispiel PHP. Ein gutes Beispiel dafür ist das Suchen und Ersetzen einer Zeichenkette in einer anderen Zeichenkette. Mit AppleScript etwas kompliziert, mit PHP ein Einzeiler.

Wollen wir uns nun also mal ansehen, wie man die beiden Programmiersprachen AppleScript und PHP zusammenbringen kann. Fangen wir dazu mit einem einfachen Beispiel an: Die PHP-Version über AppleScript ausgeben.

Hinweise:
  • Für alle, die noch nie etwas mit AppleScript zu tun hatten: AppleScripts schreibt man im AppleScript Editor. Dieses Programm wird standardmäßig bei jedem Mac OS X mitgeliefert und befindet sich hier: /Programme/Dienstprogramme/AppleScript Editor.app
  • Je nachdem, ob man PHP4 oder PHP 5 von MAMP nutzen möchte, muss man einen anderen Pfad angeben.
  • Die MAMP-Server müssen zum Ausführen von PHP über AppleScript nicht gestartet werden.
Mit PHP4
set myCmd to "/Applications/MAMP/bin/php4/bin/php -r \"echo PHP_VERSION;\""
set myResult to do shell script myCmd
-- Ergebnis: "4.4.9"

Mit PHP5
set myCmd to "/Applications/MAMP/bin/php5/bin/php -r \"echo PHP_VERSION;\""
set myResult to do shell script myCmd
-- Ergebnis: "5.2.11"

Kommen wir nun zu dem bereits am Anfang genannten Beispiel für das Suchen und Ersetzen. Mit PHP kann man diese Aufgabe über die Funktion str_replace() erledigen. Um es etwas übersichtlicher zu gestalten, speichern wir beim nächsten Beispiel den PHP-Code in eine separate Variable.

Suchen und Ersetzen (mit PHP5):
set myPHP to "echo str_replace('ist', 'war', 'Das ist ein Test.');"
set myCmd to "/Applications/MAMP/bin/php5/bin/php -r \"" & myPHP & "\""
set myResult to do shell script myCmd
-- Ergebnis: "Das war ein Test."

Ein weiteres nützliches Anwendungsbeispiel ist die URL-Kodierung einer Zeichenkette nach RFC 1738:

Variante A:
set myPHP to "echo rawurlencode('Das ist ein Test.');"
set myCmd to "/Applications/MAMP/bin/php5/bin/php -r \"" & myPHP & "\""
set myResult to do shell script myCmd
-- Ergebnis: "Das%20ist%20ein%20Test."

Variante B:
set myQuotedString to quoted form of "Das ist ein Test."
set myCmd to "/Applications/MAMP/bin/php5/bin/php -r \"echo rawurlencode(" & myQuotedString & ");\""
set myResult to do shell script myCmd
-- Ergebnis: "Das%20ist%20ein%20Test."

Share/Save/Bookmark

Freitag, 26. Februar 2010

Default Storage Engine von MySQL beim MAMP setzen

Beim MySQL-Server von MAMP beziehungsweise MAMP PRO ist (wie bei jedem anderen MySQL-Server) die Default Storage Engine MyISAM. Möchte man dies ändern, muss man dazu die Konfigurationsdatei des MySQL-Servers erweitern. Im Folgenden möchte ich zeigen, wie man dies für den MAMP und den MAMP PRO erledigen kann. Als Default Storage Engine setzen wird dabei InnoDB ein.

MAMP:
  1. Server vom MAMP stoppen (falls sie gestartet wurden).
  2. Erstellen Sie mit einem Texteditor eine Datei mit dem Dateinamen "my.cnf" im Verzeichnis "/Programme/MAMP/conf/".
  3. Fügen Sie in diese Datei folgenden Inhalt ein:


    [mysqld]
    default-storage-engine = InnoDB

  4. Speichern Sie die Datei "my.cnf" und schließen Sie den Texteditor.
  5. Starten Sie die Server von MAMP.
MAMP PRO:
  1. MAMP PRO starten
  2. Server stoppen (falls sie bereits gestartet wurden)
  3. Aus dem Menü "Ablage -> Vorlage editieren" den Eintrag "MySQL my.cnf" auswählen
  4. Es wird die Datei "my.cnf" in einem Editorfenster geöffnet.
  5. Falls ein Dialog "Warnung" erscheint, diesen mit einem Klick auf den "OK"-Button bestätigen.
  6. Den Abschnitt "[mysqld]" suchen.
  7. Unter die letzte Zeile dieses Abschnitts folgende neue Zeile einfügen:


    default-storage-engine = InnoDB

  8. Der Abschnitt "[mysqld]" sieht nun so aus:




  9. Die Änderungen an der Datei "my.cnf" über das Menü "Ablage -> Speichern" (oder über die Tastenkombination "Apfel + S") sichern.
  10. Das Editorfenster über das Menü "Ablage -> Schließen" (oder über die Tastenkombination "Apfel + W") schließen.
  11. Starten Sie die Server von MAMP PRO.

Wenn man nun noch überprüfen möchte, ob die Änderungen erfolgreich waren, kann man dies wie folgt tun. Die Server von MAMP beziehungsweise MAMP PRO müssen dazu gestartet sein.
  1. Terminal (Programme -> Dienstprogramme) öffnen.
  2. Folgenden Befehl eingeben und mit Enter-Taste bestätigen:


    /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot

  3. In der Eingabeaufforderung von MySQL (mysql>) folgenden Befehl eingeben und mit der Enter-Taste bestätigen:

    USE information_schema;

  4. In der Eingabeaufforderung von MySQL folgenden Befehl eingeben und mit der Enter-Taste bestätigen:

    
SELECT * FROM engines;

  5. Es wird eine Tabelle mit den Storage Engines des MySQL-Servers angezeigt. In der Spalte "SUPPORT" steht nun bei "InnoDB" der Wert "DEFAULT". InnoDB ist nun also die Default Storage Engine des MySQL-Servers.
  6. In der Eingabeaufforderung von MySQL folgenden Befehl eingaben und mit der Enter-Taste bestätigen:


    exit;
Wenn die Standard Storage Engine wieder "MyISAM" sein soll, führen Sie die o. g. Schritte aus und ersetzen "InnoDB" durch "MyISAM".

Share/Save/Bookmark

MAMP Icon nicht im Dock anzeigen

Möchte man das Icon vom MAMP beziehungsweise MAMP PRO nicht im Dock haben, wenn das Programm gestartet wurde, kann man es durch einen einfachen Eintrag in der Info.plist Datei ausblenden. Und so funktionier es:

Hinweise:
  • Es wird das Programm "Property List Editor" benötigt. Dieser ist Teil der Developer-Tools von Mac OS X und befindet sich im Verzeichnis "/Developer/Applications/Utilities/".
  • Die Änderungen gehen mit einem Update von MAMP bzw. MAMP PRO wieder verloren und man muss die Änderung wiederholen.
  • MAMP bzw. MAMP PRO werden nach der Änderung auch nicht mehr über die Tastenkombination Apfel + Tab erreichbar sein. Nur noch über das Exposé (F3).
MAMP:
  • MAMP beenden (falls bereits gestartet).
  • Den Finder öffnen und zum Verzeichnis "/Programme/MAMP" gehen.
  • Einen Rechtsklick auf das Programm "MAMP.app" machen.
  • Aus dem Kontextmenü den Eintrag "Paketinhalt zeihen" auswählen.
  • Es öffnet sich ein neues Finder-Fenster mit dem Ordner "Contents".
  • Den Ordner "Contents" durch einen Doppelklick öffnen.
  • Die Datei "Info.plist" mit dem Property List Editor durch einen Doppelklick öffnen.
  • Der Liste einen neuen Eintrag hinzufügen - entweder über das Menü "Edit -> Add Item" oder über das Icon "Add Item" in der Symbolleiste.
  • In der Spalte "Key" als Wert "LSUIElement" (ohne Anführungszeichen) eintragen und mit der Enter-Taste bestätigen. Der Wert wird dann automatisch in "Application is agent (UIElement)" umgeschrieben.
  • In der Spalte "Value" die Checkbox aktivieren.

  • Die Datei speichern und schließen.
  • Das Programm "Property List Editor" schließen.

MAMP PRO:
  • MAMP PRO beenden (falls bereits gestartet).
  • Den Finder öffnen und zum Verzeichnis "/Programme/MAMP PRO 1.8.4" (Versionsnummer kann sich unterscheiden) gehen.
  • Einen Rechtsklick auf das Programm "MAMP PRO.app" machen.
  • Aus dem Kontextmenü den Eintrag "Paketinhalt zeihen" auswählen.
  • Es öffnet sich ein neues Finder-Fenster mit dem Ordner "Contents".
  • Den Ordner "Contents" durch einen Doppelklick öffnen.
  • Die Datei "Info.plist" mit dem Property List Editor durch einen Doppelklick öffnen.
  • Der Liste einen neuen Eintrag hinzufügen - entweder über das Menü "Edit -> Add Item" oder über das Icon "Add Item" in der Symbolleiste.
  • In der Spalte "Key" als Wert "LSUIElement" (ohne Anführungszeichen) eintragen und mit der Enter-Taste bestätigen. Der Wert wird dann automatisch in "Application is agent (UIElement)" umgeschrieben.
  • In der Spalte "Value" die Checkbox aktivieren.


  • Die Datei speichern und schließen.
  • Das Programm "Property List Editor" schließen.
Nun erscheint das Icon vom MAMP bzw. MAMP PRO nicht mehr im Dock.

Share/Save/Bookmark

Donnerstag, 25. Februar 2010

MY MAMP DUMP 0.3 veröffentlicht

Wir haben soeben ein kleines Update für MY MAMP DUMP veröffentlicht. Wir haben dem Paket nun auch einen Mac OS X Automator Workflow zum Importieren von SQL-Dateien in eine Datenbank hinzugefügt.

Die neue Version kann ab sofort bei Sourceforge heruntergeladen werden.
Download -> https://sourceforge.net/projects/my-mamp-dump/files/

Share/Save/Bookmark

Mittwoch, 24. Februar 2010

MY MAMP DUMP 0.2 veröffentlicht

Wir haben soeben ein kleines Update für MY MAMP DUMP veröffentlicht.

Verbesserungen
  • MY MAMP DUMP erkennt nun, ob MAMP und/oder MAMP PRO installiert ist
Die neue Version kann ab sofort bei Sourceforge heruntergeladen werden.
Download -> https://sourceforge.net/projects/my-mamp-dump/files/

Share/Save/Bookmark

Dienstag, 23. Februar 2010

MY MAMP DUMP veröffentlicht

Häufig haben wir von Kunden die Frage gestellt bekommen, wie man Dumps von sehr großen MySQL-Datenbank-Tabellen von MAMP beziehungsweise MAMP PRO erstellen kann. Das Problem dabei besteht, dass für diese Aufgabe das mitgelieferte phpMyAdmin in den meisten Fällen nicht das geeignete Werkzeug ist. Auf Grund von PHP-Beschränkungen kommt es recht schnell zu Timeouts. Die Erhöhung der Limits in der php.ini-Datei kann eine Lösung sein. Meist ist dies aber nicht gewünscht. Man möchte ja mit der lokalen Serverumgebung nicht zu sehr von den Gegebenheiten der Provider abweichen.

Eine weitere Möglichkeit zur Erstellung von Datanbank-Dumps ist natürlich die Kommandozeile. Schnell, präzise, wirkungsvoll - doch für viele Benutzer ein Buch mit sieben Siegeln.

Wir haben uns nun also zusammengesetzt und überlegt, wie man auf sehr einfache Weise die unkomplizierte Handhabung von phpMyAdmin mit der Schlagkraft der Kommandozeile kombinieren kann. Die Lösung: ein Automator Workflow. Schnell zu erstellen, einfach zu warten, kleine Dateigröße.

Nun ist es soweit, wir präsentieren: "MY MAMP DUMP" (Download hier)
  • Voraussetzung: min. Mac OS X 10.5 | min. MAMP/MAMP PRO 1.8
    (Mac OS X 10.6 Snow Leopard kompatibel)
  • Plattform: Universal Binary
  • Dateityp: Workflow / Application
  • Größe: 113.3 KB (Workflow) / 253.8 KB (Application)
  • Sprachen: Englisch

Über dieses kleine Tool (als quelloffener Workflow und als Application verfügbar) kann man nun Dumps der MySQL-Datenbanken von MAMP und MAMP erstellen. Dabei kann man über eine Liste auswählen, von welchen Datenbanken man gern einen Dump erstellen möchte. Zusätzlich bietet der Workflow die Möglichkeit zur Auswahl der Zeichensatzes und des Speicherorts.
Wir haben MY MAMP DUMP bei SourceForge als kostenloses Open Source Projekt unter der GPL veröffentlicht. Möchte man also den Workflow anpassen oder erweitern, steht dem nichts im Weg. Auch haben wir im MAMP Forum und der Bugbase bereits neue Rubriken für unser kleines Baby eingerichtet.

Ach ja, MY MAMP DUMP trägt die Versionsnummer 0.1 - zwar nicht Beta, aber in einer sehr frühen Entwicklungsphase. Für die weitere Entwicklung sind wir sind sehr gespannt auf das Feedback der Community. Her mit den Verbesserungsvorschlägen, Wünschen und Bugreports!

Share/Save/Bookmark