Entries for month: December 2009

HTML5: Erste Gehversuche

XHTML / CSS No Comments »

Die Fusionality Website wurde heute erfolgreich auf HTML5 umgestellt. An sich kein Hexenwerk, denn im Prinzip ist jedes valide HTML 4.01 oder XHTML 1.0 Dokument auch valides HTML5. Es gab allerdings zwei Überraschungen.

Die erste Überraschung war leider negativ, denn in HTML5 gibt es kein profile-Attribut im head-Element. Dadurch lassen sich microformats wie die hCard derzeit nicht sinnvoll nutzen. Für die Nutzung von semantischen Erweiterungen empfehle ich sonst das profile-Attribut http://purl.org/uF/2008/03/ , da dieses Profil sowohl die microformats als auch die XHMTL Friend Network Attribute unterstützt.

Die positive Überraschung war, dass der W3C Validator bei der Verwendung von WAI-ARIA Landmark Roles nicht mehr meckert.

Nach dem also das bisherige XHTML 1.0 Dokument erfolgreich mit neuem Doctype validiert wurde, begann ich einige DIVs durch neue HTML5 Elemente auszutauschen. Das Logo und die Navigation befinden sich nun in einem header-Element, die Navigations-DIV wurde durch ein nav-Element ersetzt. Der Inhalt wurde in ein section-Element gepackt und dort weiter unterteilt. Der Hauptinhalt befindet sich in einem article-Element, die Bilder in einem aside-Element und der Footer ist nun auch wirklich ein footer-Element.

Zum Abschluss wurden noch entsprechende WAI-ARIA Rollen vergeben.

Mal sehen was 2010 auf uns Webworker zukommen wird. In diesem Sinne wünsche ich allen Lesern ein erfolgreiches neues Jahr!

MySQL: Table is marked as crashed and should be repaired

MySQL No Comments »

Eigentlich wollte ich heute nur 1 Feld zu einer MySQL Tabelle hinzufügen. Also wie immer phpMyAdmin aufgerufen und die entsprechende Tabelle ausgewählt.
Und BANG! Table xyz is marked as crashed and should be repaired

Im phpMyAdmin unter Operationen nachgesehen, doch die dort üblicherweise Verfügbaren Hilfsmittel standen nicht zur Auswahl. Was tun also, wenn's brennt?

Man wendet sich an Ruth, den Ruth darf alles ;)

Terminal auf, SSH Verbindung zum Server und los geht's:

[root@host ~]# mysqlcheck -A  -r -uBenutzer -pPasswort

Das -A sorgt dafür dass alle Tabellen überprüft werden, das -r sorgt dafür dass versucht wird die Tabellen zu reparieren.

Sollte das nicht ausreichen, sollte man die MySQL Dokumentation konsultieren. Hier findet man ein weiteres Tool "myisamchk".

ColdFusion: jQuery Uploadify & Sessions

AJAX / Javascript , ColdFusion 1 Comment »

Diese Woche sollte ich für ein Projekt einen Datei-Upload realisieren. Eine Anforderung war, dass während dem Upload ein Statusbalken erscheint, möglichst mit Dateigröße und dem Fortschritt in Prozent.

Da man ja nicht immer das Rad neu erfinden muss, suchte ich nach einer bestehenden Lösung und fand jQuery Uploadify. Das mitgelieferte Beispiel von PHP auf ColdFusion zu portieren war kein großes Problem. Einfache Uploads funktionierten auf anhieb.

Allerdings sollten nach dem Upload einige Dateiinformationen in der Session gespeichert werden. Also habe ich innerhalb der Session ein neues Struct angelegt und wollte dieses befüllen. Auf der Folgeseite habe ich also mit <cfdump> die Session ausgegeben. Doch was ist das? Das Struct war leer! Es existeierte aber eine Session, cftoken und cfid waren vorhanden. Da ich eine in der Session gespeicherte UUID als Ordnername verwende, sah ich, das dort zwar ein Ordner angelegt wurde, aber unter einer anderen UUID.

Was war also nun passiert. Mein Aufruf der Seite hatte eine Session gestartet. Aber der Upload via Flash hatte eine separate Session gestartet, da Flash die Session nicht übergeben hatte.

Also musste ich Uploadify irgendwie dazu bringen, die Session zu übergeben. Dazu habe ich die Initialisierung des Uploadify Scripts angepasst:

<script type="text/javascript"><!--
$(document).ready(function() {
                  

   $("##uploadify").uploadify({
      'uploader' : 'uploadify/scripts/uploadify.swf',
      'script' : 'uploadify/scripts/uploadify.cfm&cfid=#session.CFID#&cftoken=#session.cftoken#',
      'cancelImg' : 'uploadify/cancel.png',
      'folder' : 'uploads',
      'queueID' : 'fileQueue',
      'buttonText'   :   'Dateien hochladen',
      'fileDesc'   :   'Nur Bilder und PDF',
      'fileExt'   :'*.jpg;*.pdf;*.jpeg;*.jpe;*.tiff;*.tif;*.png',
      'auto' : true,
      'wmode':'transparent',
      'multi' : true

   });
});
// -->
</script>

Die Dokumentation bietet keine Option, zusätzliche Parameter zu übergeben. Aber wenn wann an einen Parameter weiter mit & anhängt werden diese trotzdem übernommen.

So, nun hatte ich im Quellcode also folgendes Object:

<object id="uploadifyUploader" style="visibility: visible;" width="110" height="30" type="application/x-shockwave-flash" data="uploadify/scripts/uploadify.swf">
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="flashvars" value="uploadifyID=uploadify&pagepath=/&buttonText=Dateien%20hochladen&script=uploadify/scripts/uploadify.cfm&cfid=10759524&cftoken=19289335&folder=uploads&width=110&height=30&wmode=transparent&method=POST&queueSizeLimit=999&simUploadLimit=1&fileDesc=Nur Bilder und PDF&fileExt=*.jpg;*.pdf;*.jpeg;*.jpe;*.tiff;*.tif;*.png&multi=true&auto=true&fileDataName=Filedata&queueID=fileQueue" />
</object>

Jetzt musste ich also Flash nur noch mitteilen, was mit den zusätzlichen Parametern anzustellen ist. Da die FLA-Datei mitgeliefert wird ist das auch kein Problem:

Zeile 338 in der uploadify.fla:

if (param.script.substr(0,1) != '/' && param.script.substr(0,4) != 'http') param.script = param.pagepath + param.script+'?cfid='+param.cfid+'&cftoken='+param.cftoken;

Somit bekommt die uploadify.cfm, welche den eigentlichen Upload regelt, alle benötigten Parameter übergeben.

Powered by Mango Blog. ©2012 Patrick Heppler. Design inspired by the GlossyBlue Theme © N.Design Studio.
RSS Feeds