Ein Weblog über Technik

Um auch größere Projekte mit NetBeans programmieren zu können, ist es sinnvoll, den für NetBeans verfügbaren Speicher zu erhöhen. Die hier beschriebene Methode habe ich unter OS-X Leopard ausprobiert. Mit anderen Betriebssystemen ist die Vorgehensweise wahrscheinlich ähnlich. In dem Verzeichnis /Applications/NetBeans/NetBeans 6.5.app/Contents/Resources/NetBeans/etc findet man die Datei “netbeans.conf“, in der auch Parameter der Java-Laufzeitumgebung konfiguriert werden [...]

Wenn man in CakePHP einen Controller erstellt, ohne, dass man die zugehörige Datenbanktabelle anlegt, bekommt man die Fehlermeldung ”Database table for model was not found”. Um diese Fehlermeldung zu umgehen und einen Controller zu erstellen, der kein direktes Model nutzt, ist es jedoch möglich, wie im nachfolgenden Code-Schnipsel gezeigt, den Klassenparameter $uses auf null zu setzen.  class [...]

CakePHP kann zwar mit UTF-8 umgehen, allerdings werden die Daten nicht als UTF-8 in der MySQL-Datenbank gespeichert. Datensätze sehen dann beispielsweise so aus: “Bündnis 90 Die Grünen”. Im Konstruktor des AppModel (“/app/app_model.php”) kann man dieses Problem aber beheben, indem man “SET NAMES ‘UTF8′” ausführen lässt, bevor andere Abfragen an die Datenbank gestellt werden. class AppModel [...]

Grob gesagt ist CakePHP ein MVC-Framework in PHP. Es unterstützt Validierung, Internationalisierung und bietet eine automatischer Objektserialisierung in die Datenbank. Mit CakePHP kann man Model, Controller und Views generieren backen. Besonders praktisch ist, dass man mit CakePHP die notwendigen Objekte und Seiten für ein voll funktionstüchtiges CRUD (Change Read Update Delete) inklusive Admin-Interface erstellen kann.  Seit ich [...]

In Python ist so einiges nützliches eingebaut. Wir finden in Python beispielsweise einen kleinen HTTP-Server und auch einen SMTP-Server. Auf Systemen mit installiertem Python lassen sich so Dateien schnell und unproblematisch zum Download durch andere Computer freigeben oder man kann mal eben einen Mail-Server zum Testen der selbst programmierten E-Mail-Versende-Funktion starten. Mit dem HTTP-Server Verzeichnisse [...]

Bei der Erstellung von JSPs entstehen im generierten HTML oft viele sinnlose Leerzeichen und leere Zeilen. Ab Tomcat 5.5 kann man diesen überflüssigen Whitespace automatisch per Konfiguration heraus filtern. Dazu kann, wie in folgendem Code-Ausschnitt gezeigt, in der $CATALINA_HOME/conf/web.xml dem “jsp”-Servlet der init-param “trimSpaces”, hinzugefügt werden. <init-param> <param-name>trimSpaces</param-name> <param-value>true</param-value> </init-param> Das Resultat ist kompakteres HTML. Etwas [...]

Mit zwei einfachen Zeilen in der .htaccess lässt sich der Inhalt von PHP-Seiten bei der Auslieferung automatisch gzippen, was zu einer Reduzierung der Seitengröße um bis zu 90% führen kann. php_value output_buffering On php_value output_handler ob_gzhandler Diese Konfiguration lässt sich auch mit folgenden Zeilen in der php.ini durchführen. output_buffering = On; output_handler = ob_gzhandler; …oder direkt [...]

Wenn Hibernate mit MySQL und MySQLDialect oder MySQL5Dialect genutzt wird, kann es sein, dass der Datentyp Boolean nicht richtig funktioniert. Und zwar legt Hibernate ein Boolean-Feld in MySQL als BIT(1) an, womit scheinbar der JDBC-Treiber nicht klarkommt. Damit Boolean-Felder mit Hibernate/MySQL richtig funktionieren, kann und sollte man den Datentyp des Feldes auf TINYINT(1) setzen. Mit Annotations geht das beispielsweise so: [...]

Die 1.3er Version von jQuery ist, zumindest unter OS-X mit Firefox, wesentlich schneller als die Vorgänger-Version 1.2. Kurz nach dem Laden einer HTML-Seite entsteht nun nicht mehr diese ärgerliche Rechenpause bei der der Browser kurz hing. Ein Upgrade lohnt sich.

Jeder, der Web-Anwendungen erstellt oder betreibt, kennt es. Wenn ein Web-Formular nach 2 Sekunden noch nicht verarbeitet ist, klickt der Benutzer gerne ein weiteres mal auf den “Senden”-Button und erzeugt so einen weiteren Request. Da HTTP asynchron und verbindungslos ist, ist es gar nicht so einfach eine solche doppelte Formularversendung zu erkennen. Session synchronisieren und [...]