<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Listen To Your InnerVoice &#187; Code</title>
	<atom:link href="http://www.innervoice-online.net/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innervoice-online.net</link>
	<description>Web. Coding. Vehicles. Cooking. Me.</description>
	<lastBuildDate>Sat, 04 Sep 2010 18:37:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Den IE per Javascript identifizieren&#8230;</title>
		<link>http://www.innervoice-online.net/2010/01/25/den-ie-per-javascript-identifizieren/</link>
		<comments>http://www.innervoice-online.net/2010/01/25/den-ie-per-javascript-identifizieren/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:59:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.innervoice-online.net/?p=37</guid>
		<description><![CDATA[&#8230; hat schon so manchem weitergeholfen, wenn alle anderen Mittel versagen.
Und gerade als ich selbst dieser Art der Verzweiflung anheim zu fallen drohte fand ich das reduzierteste Stück reduzierten Code, den man überhaupt reduzieren kann. Bevor sich dieses Code-Schnübbel jetzt wieder aus meinem Hirn reduziert:
﻿﻿var IE = /*@cc_on!@*/false;
Geil, wa? Kurz erklärt &#8211; da der IE [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; hat schon so manchem weitergeholfen, wenn alle anderen Mittel versagen.</p>
<p>Und gerade als ich selbst dieser Art der Verzweiflung anheim zu fallen drohte fand ich das reduzierteste Stück reduzierten Code, den man überhaupt reduzieren kann. Bevor sich dieses Code-Schnübbel jetzt wieder aus meinem Hirn reduziert:</p>
<p>﻿﻿<code>var IE = /*@cc_on!@*/false;</code></p>
<p>Geil, wa? Kurz erklärt &#8211; da der IE im Gegensatz zu allen anderen Browsern im bekannten Sonnensystem <a href="http://en.wikipedia.org/wiki/JScript" target="_blank">JScript</a> benutzt und nicht wirklich JavaScript kann er auch Kommentare parsen und versteht daher auf einmal das &#8216;!&#8217; im Kommentar als Negation der false-haftigkeit und das liest sich dann für den InternetExplorer so:</p>
<p><code>var IE = !false;</code></p>
<p>während alle anderen (coolen) Browser korrekterweise erkennen, dass sie ja gar kein IE sind und ein erleichtertes &#8220;FALSE&#8221; in den Code brüllen.</p>
<p>Ich wiederhole: Geil, wa? Noch geiler wäre es zwar wenn ich selber auf den Quatsch gekommen wäre, aber obwohl es <a title="Böser Browser @ Devoracles" href="http://devoracles.com/the-best-method-to-check-for-internet-explorer-in-javascript" target="_blank">Devorakles</a> war &#8211; Geil, wa?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innervoice-online.net/2010/01/25/den-ie-per-javascript-identifizieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Warum nicht mal den Client quälen?</title>
		<link>http://www.innervoice-online.net/2010/01/22/warum-nicht-mal-den-client-qualen/</link>
		<comments>http://www.innervoice-online.net/2010/01/22/warum-nicht-mal-den-client-qualen/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 21:59:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.innervoice-online.net/?p=14</guid>
		<description><![CDATA[Das ist eine Frage, die sich wohl jeder Dienstleister des öfteren stellt, allerdings spreche ich hier nur vom Clientrechner.
Flash bietet ja spätestens seit Version 9 diverse Möglichkeiten, komplexere Operationen vom Server auf den Client auszulagern, wie es vorher eigentlich nur mit Java möglich war, z.B. das erzeugen von PDF-Dateien mittels AlivePDF. Der Nachteil fällt allerdings [...]]]></description>
			<content:encoded><![CDATA[<p>Das ist eine Frage, die sich wohl jeder Dienstleister des öfteren stellt, allerdings spreche ich hier nur vom Clientrechner.</p>
<p>Flash bietet ja spätestens seit Version 9 diverse Möglichkeiten, komplexere Operationen vom Server auf den Client auszulagern, wie es vorher eigentlich nur mit Java möglich war, z.B. das erzeugen von PDF-Dateien mittels AlivePDF. Der Nachteil fällt allerdings spätestens dann auf, wenn man etwas komplexeres als eine kleine Rechnung als PDF erzeugen möchte, in meinem Fall geht es hier um ein PDF im DIN A0-Format mit ca. 4000 geometischen Vektorobjekten, über 1000 Textobjekte und ein paar hochauflösende Grafiken. Wenn man die Daten für die PDF-Generierung als Object oder Array gefüllt mit Objekten vorhält bietet sich eine verschachtelte Schleife an, um das PDF entsprechend zu erzeugen.</p>
<p>Das Problem ist jetzt die Laufzeit dieser Schleife. Wie der geneigte Flashomat sicherlich weiss neigt das Plugin dazu, sich sehr zurückhaltend zu benehmen, während eine Schleife läuft. Im Optimalfall bekommt man davon nicht viel mit, im schlimmsten Fall aktualisiert nicht einmal mehr die Anzeige während des Vorgangs, was für den Benutzer vor dem Bildschirm am Schluß mit hoher Wahrscheinlichkeit wenig erfreulich aussieht, so dass wir ihn zum einen über den Fortschritt informieren wollen, zum Anderen wäre es natürlich schön, wenn auch auf Rechenknechten, die schon während des ersten Weltkriegs im Einsatz waren und entsprechend unter CPU-Schwachbrüstigkeit leiden, nicht das leidige Fenster erscheint, dass vor einer vermeintlichen Endlosschleife warnt.</p>
<p><span id="more-14"></span></p>
<p>Zumindest um den Benutzer auf dem Laufenden zu halten gibt es eine einfache Lösung &#8211; ExternalInterface. Während das Flash-Plugin zwar so eingefrohren scheint wie ein Löwe in der Arktis und daher nicht einmal mehr die Anzeige aktualisieren kann während die Schleife läuft &#8211; ExternalInterface klappt noch. Also schnell irgendwo in der Schleife (am Besten da, wo es Sinn macht) ein ExternalInterface eingebaut, dass eine JS-Funkion aufruft, die wiederum den Status ausserhalb des Flashfilms &#8211; z.B. innerhalb eines Layers, der über dem SWF liegt, aktualisiert &#8211; und der User weiss Bescheid.</p>
<p>Freilich löst das nicht das Problem der Plugin-Auslastung. Hier braucht man ein wenig &#8220;Mut zur Hässlichkeit&#8221; am Code, dann kriegt man allerdings auch das Problem gelöst. Erster Instinkt dürfte sein, die erste Ebene der Schleife aufzudröseln, alles untergeordnete in eine Funktion auszulagern, die man dann jeweils zum Ende der Schleife rekursiv aufruft, bis man Fertig ist. Vor oder nach der Schleifen innerhalb der Funktion müsste sich ja die Anzeige aktualisieren lassen, da man sich nicht mehr in einer Schleife befindet. Falsch. Leider. Die Zeit bis zum Beginn der nächsten Schleife reicht hier nicht aus, um die Anzeige zu aktulisieren, die Änderung findet also ärgerlicherweise nicht statt. Ich nehme an, das ist ein Erbe des zeitleistenbasierten Aufbaus, der ja immer noch existiert und zahlreichen Werbemittelschraubern das Einkommen sichert &#8211; die Zeit reicht nicht aus, einen neuen Frame auszubauen, das wird von der nächsten Schleife einfach unterbunden.</p>
<p>Es hilft: Der Timer. Nach der Aktualisierung gönnt man dem Plugin per Timer-Instanz eine kleine Pause von z.B. 50 ms. Der Benutzer vor dem Bildschirm bekommt das quasi nicht mit, es reicht aber aus aus, damit das Plugin durchatmen kann, gemütlich den nächsten Frame rendert und den Benutzer so auf den aktuellen Stand bringt. Auch die Gefahr der &#8220;Skript-Timeout&#8221;-Warnung wird damit reduziert.</p>
<p>Eigentlich wollte ich jetzt noch ein kleines Codebeispiel bringen, aber ehrlich gesagt werde ich im Krieg auf XboxLive erwartet. Eventuell reiche ich das ein ander mal nach. <img src='http://www.innervoice-online.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.innervoice-online.net/2010/01/22/warum-nicht-mal-den-client-qualen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
