über mich

Hallo, mein Name ist Heiko Dreyer. Ich arbeite freiberuflich als

Webdesigner und Entwickler mit Schwerpunkt Flash/Flex, PHP und Cocoa Touch.



Brauchen Sie Hilfe bei Ihrem Webdesign oder suchen Sie einen Entwickler? Ich stehe Ihnen jederzeit mit meinen Fähigkeiten zur Verfügung.

über boxedfolder

Mein Blog bieten Überblick über sämtliche Neuigkeiten und Workflows mit denen ich mich beschäftige.

Aktuell bin ich vermehrt im Bereich Webentwicklung, sprich Flash/Flex und PHP tätig. Darüber hinaus blogge ich auch über Anwendungsentwicklung mit AIR für den Desktop und Cocoa Touch für die Mobile Plattform.

tinyBlog: Mini PHP Blog auf github

Vor Kurzem habe ich angefangen einen mini Blog auf PHP Basis zu schreiben. Das Ergebnis hab ich nun unter MIT-Lizenz als github Repository zur Verfügung gestellt.

Der Fokus des tinyBlogs liegt vorallem im Arbeiten mit ActionController Instanzen, welche gute Erweiterungsmöglichkeiten bieten. Die Datenbank-Schnittstelle wird aktuell in MySQL bereitgestellt, kann aber leicht erweitert werden indem man einen eigenen konkreten DatabaseConnector schreibt.

Link zum tinyBlog.

AIR und die Klasse EncryptedLocalStore

Im Prinzip gibt es mehrere Wege in einer AIR-Anwendung Daten permanent zu speichern. Neben SQLite-Datenbanken lässt AIR es jederzeit zu (mit Einschränkungen) auf das lokale Dateisystem bzw. auf den Anwendungsordner zuzugreifen und dort neue Dateien zu schreiben. Dies ist eine schöne Methode um eine große Anzahl von Nutzdaten zu speichern und weiterzuverarbeiten. Möchte man innerhalb seiner Anwendung allerdings mit sensiblen Daten wie Passwörter oder Benutzernamen arbeiten, trifft man schnell auf das Problem der Verschlüsselung.

Adobe hat für diesen Fall vorgesorgt und stellt dem Entwickler die Klasse EncryptedLocalStore zur Verfügung. Hiermit kann man jederzeit auf einen der Anwendung eindeutig zugeordneten verschlüsselten Speicher zugreifen. AIR verwendet in diesem Fall DPAPI respektive den Keychain auf dem Mac und speichert Daten mit AES-CBC-128Bit Verschlüsselung.

Das schöne an dieser Speicherart ist aber, dass man “schnell mal eben” Zugriff auf Daten bekommt und genauso schnell neue Daten schreiben kann.
Folgendes Beispiel schreibt einen String “value” mit dem Namen “key” in den Speicher:

var stringByteArray:ByteArray = new ByteArray();
stringByteArray.writeUTFBytes("value");
EncryptedLocalStore.setItem("key", stringByteArray);

Die zu schreibenden Daten sind vom Typ ByteArray, sprich man kann im Prinzip jede Art von Daten dort Speichern. Wichtig ist hier dass der Speicher im besten Fall 10MB nicht übersteigt.

EncryptedLocalStore muss also weder initialisiert noch eingestellt werden. Jede AIR-Anwendung verfügt automatisch über eine solche Speichermöglichkeit.
Um die Daten z.B. in der nächsten Sitzung wiederherzustellen bedienen wir uns einfach der statischen Methode getItem(name:String):

var stringByteArray:ByteArray = EncryptedLocalStore.getItem("key");
var value:String = stringByteArray.readUTFBytes(stringByteArray.length);

Link zu EncryptedLocalStore.

Milky: Remember the Milk AS3 API Kit

Ich möchte in einem kurzen Blogeintrag auf ein Remember the Milk AS3 API Kit hinweisen, welches ich vor ein paar Tagen auf Github geladen habe. Mit Milky lässt sich auf die gesamte verfügbare API von rememberthemilk.com zugreifen. Daten werden wahlweise per VO oder XML verarbeitet. Ich habe das Ganze aktuell noch relativ undokumentiert bereitgestellt, bin aber der Meinung dass man mit Hilfe der asdocs relativ schnell an die passende Schnittstelle kommt und damit produktiv arbeiten kann. Ich denke für Leute die eine AIR-Anwendung oder ein RTM Flash-Widget planen ist das sicher eine Erleichterung.

Die Autorisierung innerhalb der RTM-API ist anfänglich etwas verwirrend. Ähnlich wie es bei Flickr gehandhabt wird, ist auch RTM abhängig von einem Token. Eventuell werde ich im nächsten Artikel etwas genauer auf das Login bzw. die Autorisierung eingehen. Weitere Informationen dazu gibt es allerdings auch auf der offiziellen API Dokumentation.

Link zu Milky.
Link zur Remember the Milk API.

Die Flash-Plattform & das iPhone

Ich wollte das neue Jahr gleich mal dazu nutzen einen kleinen Beitrag über das iPhone, Flash und meine Einschätzung zur ganzen Sache zu schreiben. Wie wir alle wissen sollte es Ende des Jahres eine (public) Beta von Flash CS5 geben, welche den Export-To-iPhone erlaubt. Diese Beta ist nun abgeblasen worden. Das ganze hat für vielerlei Aufregung gesorgt, weil natürlich ein Haufen Leute unheimlich gierig sind in den Mobilen-Markt (das iPhone in diesem Fall) zu drängen.

Ich schätze die gesamte Lage etwas verhaltener ein. Zum einen erkenne  ich noch nicht wie sich Flash CS5 dazu eignet wirkliche Anwendungen mit mobilem Interface zu dispatchen. Hier fehlt es schlichtweg an passenden (nativen) Komponenten. Zum anderen bin ich mir unsicher ob Performance und Qualität solcher Anwendungen für den erwarteten Erfolg ausreichen. Bisher hörte ich nur, dass aus CS5 veröffentlichte iPhone Apps verhältnismäßig größer sind als die native Konkurrenz.

Persönlich bin ich vielmehr gespannt auf das mobile Flex-Framework mit dem Codenamen “Slider”. Dieses soll das dispatchen einer Anwendung auf die gängigen mobilen Plattformen erlauben. Es bietet neben einer leichtgewichtigen Struktur auch UI-Komponenten die für die mobile Plattform entwickelt werden. Das ganze soll, so wird gemunkelt, im Laufe des Jahres benutzbar sein.

Ich möchte an dieser Stelle auch noch auf einen Artikel von Florian Plag aufmerksam machen. Dieser listet die teilweise bereits erhältlichen Flash und nicht-Flash Alternativen zur iPhone-Entwicklung auf. Ich würde allerdings jedem ans Herz legen sich eventuell ein gutes Objective-C Buch zu schnappen, bevor man sich auf Scriptsprachen wie z.B. Lua fixiert. Was ich bisher gesehen habe, kann Objektive-C in vielen Bereichen eine durchaus elegante Sprache sein.

Link zu Flex-”Slider”.

navigateToUrl und Popup-Blocker

Vielleicht wird der Eine oder Andere das leidige Thema navigateToUrl und Popup-Blocker schmerzlich selber erlebt haben. Denn einige mehr oder weniger moderne Browser, wie der Internet Explorer 8, meinen einfach alles blockieren zu müssen was nicht im Fenster “_self” aufgerufen wird. Das gilt auch wenn kein weiteres Argument angegeben wird, also z.B. auch navigateToURL(“http://www.google.de”).

Eine gute Methode um dieses Verhalten auszuhebeln, ist es, die Javascript Schnittstelle des Browsers anzusprechen und dementsprechend ein neues Fenster zu generieren. In diesem Zusammenhang kann ich auf eine tolle und kompakte Klasse verweisen, die genau das tut:

(mehr…)

Composite & Command: Undo-Funktion noch flexibler

In dem vorherigen Artikel über das Command-Pattern, hab ich eine kleine Beispielanwendung vorgestellt. Diese demonstriert wie man mit Hilfe des Command-Entwurfmusters ganz leicht eine Undo-Funktion entwerfen kann. Wie bereits angekündigt, möchte ich in diesem Eintrag noch einmal kurz in die besprochene Anwendung schauen und das ganze mit dem Composite-Pattern strukturell etwas erweitern um sie noch einmal in ihrer Flexibilität aufzubessern.

In der überarbeiteten Version unserer Anwendung geht es nun darum, dass es die Möglichkeit gibt den Kreis nicht nur in x- und y-Richtung zu bewegen, sondern auch dessen Alpha-Wert anzupassen.
(mehr…)

Actionscript 3 und MVC: Artikelserie

Hiermit möchte ich auf eine interessante Artikelserie aufmerksam machen, welche sich mit MVC-Strukturen innerhalb von Actionscript 3 und Flash-Anwendungen beschäftigt. Die Serie besteht aus insgesamt vier Artikeln. Die Strukturen werden anhand einer Beispielanwendung hinreichend praktisch erläutert.

Ich kann jedem empfehlen, dort mal einen Blick reinzuwerfen. Alternativ ist natürlich immer ein MVC-Framework eine gute Wahl. Für Flash/Flex gibt es eine recht große Auswahl. Ich benutze aktuell PureMVC für diverse Projekte, weitere sind z.B. Mate, Swiz, Cairngorm oder Parsley. Die einzelnen Frameworks unterscheiden sich häufig in Art und Anzahl der benutzten Patterns.

Zum Thema Flex-Frameworks hat auch David Tucker kürzlich einen interessanten Blogeintrag geschrieben. Dieser behandelt einige Probleme diverser Frameworks und zeigt Alternativen auf.

Link zum Artikel von David Tucker.
Link zum  Artikel Truckin´ Through ActionScript 3.0 MVC: Part 2
Link zum  Artikel Truckin´ Through ActionScript 3.0 MVC: Part 2
Link zum  Artikel Truckin´ Through ActionScript 3.0 MVC: Part 3
Link zum  Artikel Truckin´ Through ActionScript 3.0 MVC: Part 4

UPDATE:
Link zum  Artikel Truckin´ Through ActionScript 3.0 MVC: Part 5

AS3: Undo-Funktion mit dem Command Pattern

Wenn man eine Flash Anwendung entwickelt, in welcher der Benutzer vieles falsch machen kann, ist es oft ratsam eine Funktion bereitzustellen die es ihm ermöglichst verschiedene Arbeitsschritte rückgängig zu machen. Doch wie implementiert man so eine Undo-Funktion genau? In diesem Artikel möchte ich mit einem kleinen Beispiel zeigen wie sich ein solches Problem unter Einsatz des Command Patterns sauber lösen lässt.
(mehr…)

Late Static Binding in PHP 5.3

Etliche neue Features sind in PHP 5.3 hinzugekommen. Jedem wird wahrscheinlich dieses ominöse “Late Static Binding” sofort ins Auge gesprungen sein. Natürlich fragt man sich was es damit auf sich hat bzw. wo man die Funktionalität potentiell integrieren kann. Ein Beispiel hierfür, ist das abstrakte Singleton. Warum? Gehen wir mal davon aus wir haben ein klassisches Singleton:
(mehr…)

15. September 2009 - php, web nach oben | Kommentare (0)

Facade & Composite Pattern bei PHP hates me

In letzter Zeit versuch ich vermehrt auf Entwurfsmuster einzugehen, da ich das ganze sowohl in PHP als auch in Actionscript 3 für sehr spannend und nützlich halte. Ich besuche daher etliche Blogs und Magazine um neue Infos über Muster und deren Implementierungen aufzusaugen. PHP hates me ist so ein Blog. Dort gibts immer eine Vielzahl von neuen Ideen und Patterns rund um PHP. Deshalb möchte ich hiermit auf zwei aktuelle Artikel hinweisen. Zum einen, der Artikel über Facades. Hier wird ganz rudimentär demonstriert wie man das Facade einsetzen kann um Zugriffe zu delegieren und Funktionalitäten zu kapseln.

Ein weiter schöner Artikel ist über das Composite Pattern veröffentlicht worden. Dort lohnt sich vorallem das konkrete Beispiel. Beim Composite Pattern fallen mir sonst immer nur Tree-Strukturen ein.

PHP hates me  bringt die Dinge immer schön auf den Punkt, die praktischen Beispiele kommen gelegentlich mal zu kurz.

Link zum Artikel über das Composite-Pattern.
Link zum Artikel über das Facade-Pattern.