Blog Archives

Markdown Editor

This Applikation is a small markdown Editor with a live preview… I hope this helps you to write your README.md on GitHub ;)
If any designer see this App and want make design YOU ARE WELCOME! :D

Big thx to Lennart for porting the C markdown parser to ActionScript 3.0 with Alchemy…

Download SWC

Download AIR App

Source Code of Markdown Editor

Download AIR Runtime AIR Beta 2

Features:


· Drag Drop of Markdown Files

· Live preview in HTML

· Save HTML

· Save Markdown files

· Open Markdown files

Open links in AIR

WoW that’s a nice bug/failure or what ever… But u can’t open a link from a AIR Application…

Example  u have a html file and their is link: “<a href=’www.google.com’ target=’_blank’ />”

So if u click on that use see nothing because AIR blocked this… So i have find a workarround and seperated it in a class… Have fun ;)

Google Wave AIR Client

Hi habe mal den Waver von Jash Sayani mal nachprogrammiert mit einem PDF Export :) … Hier das Orginal auf der Adobe Marketplace

Screenshots:

Waver von Jash Sayani

Waver

Mein Wave Client:

Francis Wave Client

Wie Ihr sehen koennt hat mein Client Ein Button mehr :) “Export to PDF” dadurch das nicht jeder einen Google Wave account hat aber trotzdem Ergebnisse zeigen moechte Exportiert man es einfach als PDF und kann es dann als eMail verschicken…

Ihr Browser kann leider keine eingebetteten Frames anzeigen

Ich habe es nur unter Windows 7 getestet mit Adminrechte… AIR hat manchmal Probleme mit rechten… Aber eingentlich sollte es ohne Probleme klappen… Wenn es doch Probleme geben sollte, gebt mir ein Feedback…

[Update AIR 2.0]

Ihr Browser kann leider keine eingebetteten Frames anzeigen

[Download AIR SDK 2.0]

Ich wuerde mich freuen wenn ihr mir Feedback gebt wegen der AIR 2.0 Beta… Da ich es nur neu kompiliert habe :) … Und beim starten ist mir nicht wirklich was aufgefallen ;)

[Update 11/25/2009]

Source Code sry for the delay time…

Flash Cocomo

This is a very nice video about the new service from acrobat… Check that out… I will develop a AIR Application… I will share it later on my blog…

Convert Bytes to XMLOBJ

Holy Shit what that… I will load a XML from the FileSystem with FileStream… So i get from FileStream with:

myFileStream.byteAvilable;

uint convert to:

var myXML : XML = XML(myFileStream.readUTFBytes(myFileStream.bytesAvailable));

that’s what saved in myXML is fucking bullshit!!!!!!!!! There was only elements and i cant’t parse it… It’s BULLSHIT!!!!

So what must i do???

var xmlString : String = String(_contentLoader.readUTFBytes(_contentLoader.bytesAvailable));
var xmlDocument : XMLDocument = new XMLDocument(xmlString);
var decoder : SimpleXMLDecoder = new SimpleXMLDecoder(true);
var xmlObj : Object = decoder.decodeXML(xmlDocument);

and in xmlObj is nothing with XMLList and annother nice things… FUCK!!! I will get a XML when i load a XML!!!

@ADOBE PLS. FIX IT!!!!!!

Garbage Collector of Flash

Wie ich hier schon geschrieben habe [Link] Programmiere ich z.Z eine AIR Applikation… Mein jetziges Problem liegt daran das meien Memory andauernd über 1GB bei über 300 Bildern hinnausläuft… Nach mehreren minuten von Suchen in Google fand ich herraus das man einfluss auf den GBC nehmen kann, was sich als ziemlich hilfreich erweißt…

Folgendes muß beachtet werden:

  • nach jeden erstellen von einem Bild setze ich ALLE Variablen auf null die für das erstellen des Bildes benötigt werden
  • useWeakReferences bei addEventlistener auf true gesetzt oder gleich inline functionen erstellen
    • var _onComplete:Function = function(event:Event):void{doSomething();}
      
      _loader.loaderInfo.addEventListener(Event.Complete, _onComplete);
  • und ich habe ein Timer im Hintergrund laufen der alle 3 Minuten den GBC anspricht
    • System.gc();
  • Bei Klassen die mit loading arbeiten IMMER den loader auf null wieder zurückstellen
  • Bei Eventlistener ist es sehr sehr sehr wichtig WENN die Handlerfunktion danach nicht mehr ausgeführt wird, dann sollte man den removen!!!!
  • Das wichtigste ist mit bedacht Programmieren besonders bei Flex und AIR und Componenten unheimlich viel Memory Speicher
  • Das null PLUSULTRA wenn mann schon so ein tool nutzt PROFILING
    • Flaschenhälse (Bottleneck) herrausfinden
    • Lokalisieren
    • Fixen ;)
  • Es gibt seit ActionScript 3 die Klasee Dictionary, damit kann man via Hashtags auf ein Element zugreifen durch iterieren tut man mit foreach und vor allendingen ist es schneller als das Array

Fazit:

Es reicht eigentlich wenn man bei große Prozesse wie Laden von Files danach immer den Loader auf null setzt bzw. bei dynamischen Inhalten kann man auch delete anwenden… Und einen Timer der bei einem bestimmten Zeitinterval den GBC anhaut das er sich mal bewegen soll… Und bei Eventlistener bevorzuge ich inline Functions da diese wenn die Funktion ausgeführt wurde eigentlich sich selbst ‘deleten’…

[UPDATE 11/16/2009]

AIR Application speed tuning

Ich wollte mir ein Photo Manager/Backup AIR Programmieren was ganz simpel Bilder in einer Datenbank speichert… Sonst eigentlich nichts vielleicht noch einbisschen Retuschierung via Pixel Bender [Link] und so… Das was ich wollte war ganz Simpel 1 x Thumbnail zum visualisieren eines Bildes in einem Overview, 1 x Editable Image was ich jederzeit verändern kann und auch darraus verschiedene Bilder generieren lassen kann und 1x RAW/Original File… Alles so aufzubauen das er 1:N File via. Drag and Drop in meine App lädt war kein Problem… Das nächste Problem war aber wie erstelle ich jetzt die anderen beiden Files habe mir gedacht der JPEGEncoder von Flash kann das… Das zu implementieren war kein Problem… Aber die bearbeitung von dem JPEGEncoder war soooo langsam das ich mir gedacht habe wie mache ich das denn wenn ich meine 19GB Bilder damit verwalten will das wird nicht funktionieren… Also muß da was schnelleres und besseres her…

badworkflow

Da fand ich auf Adobe Labs Alchemy [Link], und siehe da WOW C/C++ Code in Flash na super das muß ja rennen wie nichts gutes… Laut den Benchmarks soll es wesentlich schneller sein [Link1] [Link2]

betterworkflow

Habe es dann mal implementiert und siehe da es IST wesentlich schneller… Da ich sowieso schon bei Finetuning bin habe ich mir gleich gedacht dann machst du das mal RICHTIG, WIE bekomm ich meine AIR NOCH schneller??? Man gut es sowas wie Tour De Flex gibt :) da fand ich dann diese beschreibung [Link] zum REDUZIEREN der CPU auslastung… Das war perfekt für meine App ich muß es nur umgekehrt machen anstatt meine FPS zu reduzieren habe ich diese einfach auf 100 Gesetzt und siehe da schneller geht es gar :D … Doch nicht vergessen eure FPS wieder runterzu schrauben… Wo hohe Rechenleistung gebraucht wird einfach [Flex: stage.framerate = 100] setzen und da wo es nicht mehr gebraucht wird wieder auf [Flex: stage.framerate = 33] setzen…

Oder via mxml:

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/halo"

frameRate="80"

xmlns:fc="http://www.adobe.com/2006/fc"

creationComplete="windowedapplication1_creationCompleteHandler(event)">

protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void

{

trace('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

trace('Init Applications');

trace('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

}

</s:WindowedApplication>

Die erhöhung der FPS gab meiner Applikation einen Nitro schub :) … Klappt wunderbar und bisher ist mir meine App noch nicht angestürzt :) … Die FPS erhöhung klappt NUR SOLANGE wenn man keine Animation hat ansonsten würde die Annimation viel zu schnell ablaufen…

Sourcecode folgt…

Adobe Max 2009 – RIA Enterprise Application – Fedex

Adobe Max 2009 – Adobe Rome

Short Version:

Long Version:

Cairngorm Links

Here some links for Cairngorm How To’s:

http://nwebb.co.uk/blog/?p=58

http://www.davidtucker.net/category/cairngorm/