<?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/"
	>

<channel>
	<title>_nec</title>
	<atom:link href="http://nec.shell8.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://nec.shell8.net</link>
	<description>webfejlesztés, front-end programozás, javascript, css, xhtml, ajax, air</description>
	<pubDate>Sun, 14 Dec 2008 15:18:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse és a Vista 64-bit</title>
		<link>http://nec.shell8.net/2008/12/14/eclipse-es-a-vista-64-bit/</link>
		<comments>http://nec.shell8.net/2008/12/14/eclipse-es-a-vista-64-bit/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 15:18:23 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[HTML]]></category>

		<category><![CDATA[64bit]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[IDE]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[utilities]]></category>

		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=216</guid>
		<description><![CDATA[Ha netán szerettek Ecplise keretek között fejleszteni (Aptana, FlexBuilder meg talán a Zend Studio is) és valamely körülmény 64bites Vista rendszerre szorít, akkor sok, idegesítően érthetetlen problémától menthet meg ha rögtön az Eclipse 3.4.1, azaz Ganymede kódnevű verziójával kezdtek neki, de persze csak 32 bites Java-val (illetve az &#8220;Europa&#8221; nevű Eclipse csak azzal ment, ezt [...]]]></description>
			<content:encoded><![CDATA[<p>Ha netán szerettek Ecplise keretek között fejleszteni (Aptana, FlexBuilder meg talán a Zend Studio is) és valamely körülmény 64bites Vista rendszerre szorít, akkor sok, idegesítően érthetetlen problémától menthet meg ha rögtön az <strong>Eclipse 3.4.1, azaz Ganymede</strong> kódnevű verziójával kezdtek neki, de persze csak 32 bites Java-val (illetve az &#8220;Europa&#8221; nevű Eclipse csak azzal ment, ezt még meg se mertem nézni abbéli örömömből, hogy működik végre)</p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/12/14/eclipse-es-a-vista-64-bit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adobe AIR 1.5</title>
		<link>http://nec.shell8.net/2008/11/18/adobe-air-15/</link>
		<comments>http://nec.shell8.net/2008/11/18/adobe-air-15/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 09:17:23 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[JS]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[update]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=211</guid>
		<description><![CDATA[Megjelent  az újabb AIR verzió, melyet hasonló mérföldkőnek szántak az Adobenál mint az 1.0-át anno. Lássuk mit kapunk ezzel a frissítéssel.

Titkosított helyi adatbázis
Ha eddig - valahol joggal - óczkodtál nagyobb üzleti alkalmazás AIR re portolásától, mert nem tartottad elég biztonságosnak, akkor most már közelebb állhat hozzád az AIR, mivel lehetőség van titkosított adatbázisok - Encrypted Local [...]]]></description>
			<content:encoded><![CDATA[<p>Megjelent  az újabb AIR verzió, melyet hasonló mérföldkőnek szántak az Adobenál mint az 1.0-át anno. Lássuk mit kapunk ezzel a frissítéssel.</p>
<p><span id="more-211"></span></p>
<p><strong>Titkosított helyi adatbázis</strong></p>
<p>Ha eddig - valahol joggal - óczkodtál nagyobb üzleti alkalmazás AIR re portolásától, mert nem tartottad elég biztonságosnak, akkor most már közelebb állhat hozzád az AIR, mivel lehetőség van titkosított adatbázisok - <a href="http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS8AFC5E35-DC79-4082-9AD4-DE1A2B41DAAF.html">Encrypted Local Store (ELS)</a> -  használatára, melyekbe nagyobb mennyiségű adat is belepakolható.</p>
<h3>Flash Player 10</h3>
<p>Az Adobe Flash legújabb üdvöskéje mostmár futhat AIRben is, a 10es verzióval azt remélik, hogy 3D-s flash alkalmazások serege jelenhet meg ebben a környezetben is.</p>
<h3>WebKit update</h3>
<p>Frissítették a beépített webkit motort, legfontosabb itt a Squirrelfish JS motor beemelése, amit a Safarival már megtettek. A tesztek során az Adobenál átlagosan 35%-os sebességnövekedést mértek a fejlesztők, kíváncsian várjuk.</p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/11/18/adobe-air-15/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adobe AIR #6 SQLite JavaScriptből</title>
		<link>http://nec.shell8.net/2008/10/22/adobe-air-sqlite-javascript/</link>
		<comments>http://nec.shell8.net/2008/10/22/adobe-air-sqlite-javascript/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 15:17:17 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[JS]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[js]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=20</guid>
		<description><![CDATA[Szünet után folytatva az Adobe AIR-ről szóló sorozatom, most az AIR beépített SQL adazbázis kezelését igyekszem bemutatni. Pár példával letudjuk az alapvető, az SQL lekérdező nyelvben ismert műveletet, majd kitérek pár optimalizációs megoldásra.

Az AIR futtatókörnyezet tartalmaz egy SQLite adatbázis kezelő osztálycsomagot, melyet nyugodtan használhatunk adatok tárolására, kezelésére és szinkonizálására.  Annak, aki nem ismeri, erről az adatbázis [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nec.shell8.net/wp-content/uploads/2008/10/sqlite.gif"><img src="http://nec.shell8.net/wp-content/uploads/2008/10/sqlite.gif" alt="" title="SQLite logo" width="105" height="105" class="alignleft size-full wp-image-193" /></a>Szünet után folytatva az Adobe AIR-ről szóló sorozatom, most az AIR beépített SQL adazbázis kezelését igyekszem bemutatni. Pár példával letudjuk az alapvető, az SQL lekérdező nyelvben ismert műveletet, majd kitérek pár optimalizációs megoldásra.</p>
<p><span id="more-20"></span></p>
<p>Az AIR futtatókörnyezet tartalmaz egy <a href="http://www.sqlite.org/">SQLite</a> adatbázis kezelő osztálycsomagot, melyet nyugodtan használhatunk adatok tárolására, kezelésére és szinkonizálására.  Annak, aki nem ismeri, erről az adatbázis rendszerről talán a legfontosabb amit érdemes nagy vonalakban elmondani, az az, hogy komplex file és memória struktúrák helyett egyetlen bináris file-ban tárolja az adatbázist. Mivel egy file és bináris, ezt a filet hordozhatjuk bármilyen rendszerre, ahol szintén használható, már ha létezik az adott rendszerre SQLite verzió.</p>
<p>Ennek köszönhető, hogy már rengeteg alkalmazás és operációs rendszer él ezzel a minimalista, de rendes relációs adatbázisrendszerrel, mint pl a Skype vagy a Firefox illetve a Mac OSX, jópár Symbian alapú mobiltelefon és minden iPhone vagy iPod Touch.</p>
<p>AIRben az adatbázishoz JavaScript segítségével férünk hozzá, mely elsőre szürreális élmény lehet azoknak, akik eddig csak <em>rendes </em>szerveroldali nyelvekben tettek hasonlókat.</p>
<h3>Szinkron - aszinkron műveletek</h3>
<p>Mint JS-ben rengeteg minden, az adatbázis műveleteink is lehetnek <strong>szinkron </strong>folyamatok, illetve eseményfüggők, így <strong>aszinkron </strong>lefutású kódok. Mindkettőnek van előnye ill. hátránya, a szinkron műveletek kódolás szempontjából egyszerűbbek, nem kell eseménykezelőkkel babrálni, de amíg lefut, a programunk malmozik/homokórázik használhatatlan csendben. Nem is ajánlott, csak nagyon kicsi adatbázisokkal, kevés adattal használni.</p>
<p>Az aszinkron műveletekre már készülni kell a kódunkban, eseményeket kell elkapni, adatokat mozgatni, de cserébe folyamatos marad a felhasználói élmény, meg valahogy ez közelebb is áll ahhoz a fejlesztési stílushoz, amit manapság az AJAX-al teletűzdelt weboldalak, alkalmazások megkívánnak tőlünk.</p>
<h3>Csatlakozás az adatbázishoz</h3>
<p>Lássuk az elejét, vegye elő alkalmazásunk az adatbázist.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> dbFile <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> air.<span style="color: #660066;">File</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;app:/db/database.db&quot;</span><span style="color: #009900;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> db <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> air.<span style="color: #660066;">SQLConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
db.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>dbFile<span style="color: #009900;">&#41;</span>;</pre></td></tr></table></div>

<p>Meghatározunk egy File pointert ami az SQLite adatbázis filera mutat, az <em>app:/</em> relatív elérési útvonal az alkalmazásunk telepített helye a fájlrendszeren. Majd létrehozzuk a kapcsolatot az adatbázishoz és megnyitjuk azt, SQLite esetén ez az a file amit megadunk neki, egy file - egy adatbázis.</p>
<p>Létrehozunk egy <em>SQLConnection </em>objektumot, majd megnyitjuk vele az adatbázist. Az <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/data/SQLConnection.html">SQLConnection</a>-nek van sok eseménye, amit érdemes figyelni, leginkább talán az <em>air.SQLErrorEvent.ERROR</em> -t, ha hiba van. Az adatbázis megnyitása történhet az <em>open </em>metódussal, ha szinkron, és az <em>openAsync </em>metódussal, ha aszinkron műveletekkel szeretnénk dolgozni.</p>
<p>Aszinkron műveletek során minden lefuttatott kérést figyeltetni kell majd egy a<em>ir.SQLEvent.RESULT</em> eseményre, de most időhiányában nem térek ki az aszinkron műveletekre.</p>
<h3>SQL műveletek</h3>
<p>Miután alkalmazásunk csatlakozott az adatbázishoz, az SQL műveletek nagy része már nem sokban különbözik a más nyelvekben megszokott módoktól. Létrehozunk egy <em>SQLStatement </em>objektumot, megadjuk neki melyik adatbázist használja, és hogy mi a művelet.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4
5
6
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> statement <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> air.<span style="color: #660066;">SQLStatement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>; 
statement.<span style="color: #660066;">sqlConnection</span> <span style="color: #339933;">=</span> db; <span style="color: #006600; font-style: italic;">// az adatbázis</span>
statement.<span style="color: #660066;">text</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;SELECT name, value FROM options&quot;</span>; <span style="color: #006600; font-style: italic;">// a művelet</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">statement.<span style="color: #660066;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>; 
<span style="color: #003366; font-weight: bold;">var</span> results <span style="color: #339933;">=</span> statement.<span style="color: #660066;">getResult</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>; <span style="color: #006600; font-style: italic;">// eredmények kiolvasása az SQLStatement objektumból</span>
<span style="color: #003366; font-weight: bold;">var</span> numResults <span style="color: #339933;">=</span> results.<span style="color: #660066;">data</span>.<span style="color: #660066;">length</span>; 
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> 0; i <span style="color: #339933;">&lt;</span> numResults; i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> row <span style="color: #339933;">=</span> result.<span style="color: #660066;">data</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>;
    row.<span style="color: #000066;">name</span>; <span style="color: #006600; font-style: italic;">// a mezőértékek asszociatív tömbben</span>
    row.<span style="color: #660066;">value</span>;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Aszinkron műveletek során egy <em>air.SQLEvent.RESULT</em> eseményt kell figyeltetni az <em>SQLStatement </em>objektumon, de az eseménykezelőben a kód már ugyanez.<br />
 <br />
INSERT, UPDATE és DELETE műveleteknél nincs különbség, ha a statement.execute(); lefut, illetve van<br />
<em>air.SQLEvent.RESULT</em> esemény, akkor volt sikeres a művelet.</p>
<h3>Hibakezelés</h3>
<p>Aszinkron műveleteknél az <em>air.SQLErrorEvent.ERROR</em> esemény figyelésekor kapott esemény-objektum hordozza a hibaüzenetet, szinkron műveletek esetén használjuk a <em>try-catch</em> szerkezetet, az elkapott kivétel tartalmazza majd a hiba okát.</p>
<h3>Tippek, optimalizálás</h3>
<p><strong>AUTOINCREMENT </strong>- ilyen típusu oszlopoknál INSERT után az eredményobjektum <em>lastInsertRowID </em>paramétere hordozza az új ID-t</p>
<p><strong>Paraméterezett műveletek</strong> - az AIR minden SQL műveletet alacsonyabb szintű műveleti kódra fordít, és úgy tárol, amíg nem változik a művelet szerkezete. Sok, hasonló szerkezetű művelet esetén ezt érdemes kihasználni a művelet paraméterezésével.</p>
<p>Ilyenkor az SQL művelet kódját felkészítjük változók fogadására, s azokat később adhatjuk hozzá vagy módosíthatjuk ahelyett, hogy újraírnánk vagy újra példányosítanánk egy <em>SQLStatement </em>objektumot.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>17
18
19
20
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">statement.<span style="color: #660066;">text</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;INSERT INTO options(name, value)&quot;</span> <span style="color: #339933;">+</span> 
                 <span style="color: #3366CC;">&quot;VALUES (:optionName, :optionValue)&quot;</span>; 
statement.<span style="color: #660066;">parameters</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;:optionName&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;title&quot;</span>;
statement.<span style="color: #660066;">parameters</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;:optionValue&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Adobe AIR #6 SQLite JavaScriptből&quot;</span>;</pre></td></tr></table></div>

<p>Később, ha ugyanerre a műveletere van szükség, csak a már példányosított <em>SQLStatement </em>objektumot kell újra elővenni, és módosítani a paramétereket az <em>execute()</em> előtt. Ennek a módszernek előnye az erőforrás kímélésen és a műveletek gyorsaságán kívül az, hogy védelmet nyújt az esetleges sql-injection sebezhetőségek ellen.</p>
<p><strong>Tranzakciók</strong> - sok, logikailag valamilyen szinten összetartozó műveletet (írás/olvasás) érdemes egy tranzakcióba helyezni, összességében gyorsabb lesz a művelet.</p>
<p>Tranzakciókat az <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/data/SQLConnection.html#begin()">air.SQLConnection.begin()</a> - <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/data/SQLConnection.html#commit()">.commit()</a> - illetve <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/data/SQLConnection.html#rollback()">.rollback()</a> metódusaival tudunk kezelni.</p>
<h3>Előre csomagolt adatbázisok, külső segédeszközök</h3>
<p>Természetesen nem kell minden adatbázist helyben elkészíteni és kezdeti adatokkal, struktúrával feltölteni, lehetséges előre csomagolni az adatbázis állományt a letöltött AIR csomaggal. Csak ügyeljünk arra, hogy updatek esetén ne legyen gond esetleges felülírásból.</p>
<p>Az adatbázis kezeléséhez érdemes valami SQLmanager programot szerezni, vannak kifejezetten SQLitehoz kiadott programok, illetve AIRben is írtak már ilyen eszközt.</p>
<p>Nekem az <a href="http://www.sqlmaestro.com/products/sqlite/maestro/">SQLite Maestro</a> nevű vállt be, igaz csak 30napos verziót néztem, de egész használhatónak bizonyult. </p>
<p><strong>Eddig az Adobe AIR-ről:</strong></p>
<ul>
<li><a href=" http://nec.shell8.net/2008/10/14/eval-adobe-air-ben/">Eval(); Adobe AIR-ben</a></li>
<li><a href="http://nec.shell8.net/2008/07/11/adobe-air-nativ-menukezeles/">#5 Natív menükezelés</a></li>
<li><a href="http://nec.shell8.net/2008/07/05/adobe-air-dragndrop-filefeltoltes/">#4 Drag’n&#8217;Drop és Filefeltöltés</a></li>
<li><a href="http://nec.shell8.net/2008/06/25/adobe-air-esemenyek">#3 Események</a></li>
<li><a href="http://nec.shell8.net/2008/06/23/adobe-air-ablakkezeles">#2 Ablakkezelés</a></li>
<li><a href="http://nec.shell8.net/2008/06/19/adobe-air-alapok">#1 Az alapok</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/10/22/adobe-air-sqlite-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eval() Adobe AIR -ben?</title>
		<link>http://nec.shell8.net/2008/10/14/eval-adobe-air-ben/</link>
		<comments>http://nec.shell8.net/2008/10/14/eval-adobe-air-ben/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 08:15:01 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[JS]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[eval]]></category>

		<category><![CDATA[js]]></category>

		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=125</guid>
		<description><![CDATA[Leggyakrabban talán JSON stringek objektumokká alakításakor jön elő ez a probléma. Az Adobe AIR környezet biztonsági okokból korlátozza az eval() javascript metódust. Ez a szigor erősen indokolt, de nem okoz megoldhatatlan problémát.
Nézzük a megoldást, de előbb az okokat, amiért így lett kialakítva a futtatókörnyezet.
Valamit valamiért, avagy amiért nincs eval().
MIt csinál az eval()? Végrehajt egy string [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-140 noborder" title="air_vent" src="http://nec.shell8.net/wp-content/uploads/2008/10/air_vent.jpg" alt="" width="240" height="130" />Leggyakrabban talán JSON stringek objektumokká alakításakor jön elő ez a probléma. Az Adobe AIR környezet biztonsági okokból korlátozza az <em><a href="http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/eval">eval()</a></em> javascript metódust. Ez a szigor erősen indokolt, de nem okoz megoldhatatlan problémát.</p>
<p>Nézzük a megoldást, de előbb az okokat, amiért így lett kialakítva a futtatókörnyezet.</p>
<p><span id="more-125"></span><strong>Valamit valamiért, avagy amiért nincs eval().</strong></p>
<p>MIt csinál az eval()? Végrehajt egy string formában megadott javascript kódsort, minden előztetes cécó nélkül.</p>
<p>Az AIRből pedig kivették azt a biztonsági szigorítást, hogy AJAX kérések csak azon a domainen futhatnak, ahol az oldal amit látogatunk. Bárhonnan fogadhatunk akármilyen javascript kódokat, akár fileszinten is betáplálva az alkalmazásunkba.</p>
<p>Ez eléggé hasznos, révén így igazi, online forrásokra támaszkodó, nyitott API-kat nyújtó webszolgáltatásokat kihasználó alkalmazást alkothatunk. De veszélyeket is rejt, révén az AIR alkalmazásunk hozzáfér a kliens filerendszeréhez. Nem lenne túl jó, ha egy pl egy chatprogram evalozott JSON stringjeiben tudatlanul kiadnánk személyesebb adatokat tartalmazó fájljainkat.</p>
<p>Az alkalmazásunk egy izolált környezetben fut, angol nevén ez a <em>sandbox</em>. Ezen belül vezették be az Adobe fejlesztői az alábbi szigorításokat:</p>
<ul>
<li><strong>eval() futtatások</strong> csak az onLoad előtt működnek</li>
<li><strong>szinkron XMLHttpRequests</strong> kérések onLoad előtt nem adnak választ, <strong>aszinkron XMLHttpRequests</strong> kéréseket el lehet küldeni onLoad előtt, de azok válasza csak onLoad után érkezhet meg</li>
<li>onLoad után a <strong>document.write()</strong> és a <strong>document.writeln()</strong> függvények nem kerülnek lefutásra</li>
<li>htmlből hivatkozva <strong>scripteket</strong> nem lehet <strong>betölteni </strong>a <em>sandbox</em>-on <strong>kívülről</strong></li>
<li>dinamikusan létrehozott <strong>&lt;script&gt; elemek</strong> nem kerülnek lefutásra.</li>
</ul>
<p> <br />
<strong>Karantén, avagy a non-application sandbox</strong></p>
<p>Lehetőségünk van több ilyen <em>sandbox</em>-ot létrehozni, hogy ne akadjanak össze esetleg a használt rendszerek. Ezekben a &#8220;karanténokban&#8221; ismét visszakapjuk az eval()-t, újra megvan a domainre vonatkozó szigor, de semmit se láthatunk magából az AIR futtatókörnyezetből.</p>
<p>Ezeket például IFRAME -ek segítségével valósíthatjuk meg, az alkalmazás html kódjába helyezve valami hasonlót:</p>

<div class="wp_syntax"><div class="code"><pre class="xml xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;iframe</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;frameId&quot;</span></span>
<span style="color: #009900;">		<span style="color: #000066;">sandboxRoot</span>=<span style="color: #ff0000;">&quot;http://plurk.com/&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">documentRoot</span>=<span style="color: #ff0000;">&quot;app:/&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;nonapp_sandbox.html&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">frameborder</span>=<span style="color: #ff0000;">&quot;0&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;0&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/iframe<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>ID - amivel majd DOMon keresztül hivatkozunk rá<br />
sandboxRoot - az a domain amire a karanténon belül szűkítjük a lekéréseket<br />
documentRoot - amennyiben ez &#8220;app:/&#8221;, akkor kapunk megfelelő <em>non-application sandbox</em> -ot<br />
src - a html amit betöltünk majd az IFRAME-be</p>
<p><img class="alignnone size-full wp-image-136" title="Air Application Sandboxes" src="http://nec.shell8.net/wp-content/uploads/2008/10/air_abra.jpg" alt="" width="500" height="235" /></p>
<p>Most, hogy van egy szeparált környezetünk, ahol működik az <em>eval(),</em> már csak össze kell kötni a két <em>sandbox</em>-ot. Ezt az AIR egy <em><strong>childSandboxBridge </strong></em>nevű interfészen keresztül tudja megvalósítani.</p>
<p>Az IFRAME-be dugott htmlben hozzunk létre pár függvényt. Először definiálni kell mit akarunk az IFRAME-en kívülre adni a childSandboxBridge-en keresztül.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">	<span style="color: #009966; font-style: italic;">/* nonapp_sandbox.html */</span>
	window.<span style="color: #000066;">onLoad</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>		    
		window.<span style="color: #660066;">childSandboxBridge</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'myEval'</span><span style="color: #339933;">:</span> myEval<span style="color: #009900;">&#125;</span>;			
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Majd definiáljuk magát a függvényt amit átadunk.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4
5
6
7
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">	<span style="color: #009966; font-style: italic;">/* nonapp_sandbox.html */</span>
	<span style="color: #003366; font-weight: bold;">function</span> myEval<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span>;
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Tehát maga az eval() ebben a zárt környezetben fut le, a végeredményt adja át az alkalmazásnak. Bármi ártalmas kód ami itt végrehajtódik, próbálhozhat, nem fér hozzá az AIR környezethez, s azon keresztül a rendszerhez.</p>
<p>Az alkalmazásunkban onLoad eseménykor definiáljuk a childSandboxBridge interfészen át kapott függvényt.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">	<span style="color: #009966; font-style: italic;">/* application.html */</span>
	window.<span style="color: #000066;">onLoad</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		window.<span style="color: #660066;">myEval</span> <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'frameId'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">contentWindow</span>.<span style="color: #660066;">childSandboxBridge</span>.<span style="color: #660066;">myEval</span>;		
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>És ennyi, most már használhatjuk eval helyett ezt a saját függvényt. Még kényelmesebb, ha pl az általunk használt javascript keretrendszer érzékenyebb részeit módosítjuk úgy, hogy működjenek ezen az interfészen keresztül, és akkor későbbiekben már észre se vesszük ezt a problémát.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>10
11
</pre></td><td class="code"><pre class="javascript javascript" style="font-family:monospace;">	<span style="color: #009966; font-style: italic;">/* application.html */</span>
	<span style="color: #003366; font-weight: bold;">var</span> evaledCode <span style="color: #339933;">=</span> window.<span style="color: #660066;">myEval</span><span style="color: #009900;">&#40;</span> code_string <span style="color: #009900;">&#41;</span>;</pre></td></tr></table></div>

<p><strong>Eddig az Adobe AIR-ről:</strong></p>
<ul>
<li><a href="http://nec.shell8.net/2008/10/22/adobe-air-sqlite-javascript/">#6 SQLite JavaScriptből</a></li>
<li><a href="http://nec.shell8.net/2008/07/11/adobe-air-nativ-menukezeles/">#5 Natív menükezelés</a></li>
<li><a href="http://nec.shell8.net/2008/07/05/adobe-air-dragndrop-filefeltoltes/">#4 Drag’n&#8217;Drop és Filefeltöltés</a></li>
<li><a href="http://nec.shell8.net/2008/06/25/adobe-air-esemenyek">#3 Események</a></li>
<li><a href="http://nec.shell8.net/2008/06/23/adobe-air-ablakkezeles">#2 Ablakkezelés</a></li>
<li><a href="http://nec.shell8.net/2008/06/19/adobe-air-alapok">#1 Az alapok</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/10/14/eval-adobe-air-ben/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Állás: HTML/CSS/JS fejlesztőt keresünk</title>
		<link>http://nec.shell8.net/2008/09/19/allas-html-css-js-fejlesztot-keresunk/</link>
		<comments>http://nec.shell8.net/2008/09/19/allas-html-css-js-fejlesztot-keresunk/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 15:12:20 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[HTML]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[job]]></category>

		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=108</guid>
		<description><![CDATA[Budapesten, napi 8 órára, irodába keresünk jó képességű HTML/CSS/JS fejlesztőt, junior fejlesztőt.
Követelmények: szabványos html (xhtml) és css kódolás, javascript (DOM, prototype, jquery), smarty-php, photoshop alapok, böngészőfüggetlenség (főleg IE6, IE7, FF2/3)

Plusz jó pont ha ismered a CVS-t, van diszkrét, netán oop javascript gyakorlatod, esetleg flash/actionscript tapasztalataid.
Ha érdekel, dobj egy mailt a részletekért: nec@shell8.net
]]></description>
			<content:encoded><![CDATA[<p>Budapesten, napi 8 órára, irodába keresünk jó képességű HTML/CSS/JS fejlesztőt, junior fejlesztőt.</p>
<p><strong>Követelmények:</strong><span id="maskwindow"><strong></strong> szabványos html (xhtml) és css kódolás, javascript (DOM, prototype, jquery), smarty-php, photoshop alapok, böngészőfüggetlenség (főleg IE6, IE7, FF2/3)<br />
</span></p>
<p><span id="maskwindow">Plusz jó pont ha ismered a CVS-t, van diszkrét, netán oop javascript gyakorlatod, esetleg flash/actionscript tapasztalataid.</span></p>
<p>Ha érdekel, dobj egy mailt a részletekért: <a href="mailto:nec@shell8.net">nec@shell8.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/09/19/allas-html-css-js-fejlesztot-keresunk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oldal pozíció &#8220;Vissza&#8221; gomb után</title>
		<link>http://nec.shell8.net/2008/09/05/oldal-pozicio-vissza-gomb-utan/</link>
		<comments>http://nec.shell8.net/2008/09/05/oldal-pozicio-vissza-gomb-utan/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 13:46:47 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[HTML]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[cache]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[headers]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=97</guid>
		<description><![CDATA[Ma halálra idegesített ez a probléma: különböző oldalakon, ha pl lescrolloztam az oldal aljára és onnan elnavigáltam egy másik oldalra, majd a böngésző vissza gombjával visszatértem az előző oldalra, volt hogy a Firefox az oldal tetejére és volt, hogy oda dobott vissza, ahol kattintottam az oldalon. Eleinte valami ID alapú dologra gondoltam, de egy primitív [...]]]></description>
			<content:encoded><![CDATA[<p>Ma halálra idegesített ez a probléma: különböző oldalakon, ha pl lescrolloztam az oldal aljára és onnan elnavigáltam egy másik oldalra, majd a böngésző vissza gombjával visszatértem az előző oldalra, volt hogy a Firefox az <strong>oldal tetejére</strong> és volt, hogy <strong>oda</strong> dobott vissza, <strong>ahol kattintottam</strong> az oldalon. Eleinte valami ID alapú dologra gondoltam, de egy primitív tesztoldallal ezt sikerült cáfolni.</p>
<p>Explorerben következetesen oda rak vissza hol kattint az ember, ezért is idegesített ez a - látszólag véletlenszerű - viselkedés.</p>
<p><span id="more-97"></span></p>
<p>Ez így valójában egy erős usability hiba az oldalon, hosszabb találati listáknál nagyon frusztráló tud lenni, így nem árt odafigyelni rá. JS és CSS kukázások után végül a HTTP fejlécek vizsgálatába kezdtem, s meg is lett az ok.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;">Cache<span style="color: #339933;">-</span>Control<span style="color: #339933;">:</span> no<span style="color: #339933;">-</span>store<span style="color: #339933;">,</span> no<span style="color: #339933;">-</span>cache</pre></div></div>

<p>Ez a dög valahogy bennemaradt az oldallal küldött fejlécekben, lehet hogy alapértelmezett webszerver beállítás, akkor pedig - hacsak a site szerveroldali részében felül nem bírálják - így marad.<br />
Próbaképp átírva valami értékre, az a működés fogadott amit szerettem volna.</p>

<div class="wp_syntax"><div class="code"><pre class="php php" style="font-family:monospace;"><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: max-age=300&quot;</span><span style="color: #009900;">&#41;</span>;</pre></div></div>

<p>Valószínűleg emiatt a header miatt a FF valóban nem cachelt, s emiatt a Vissza gomb után újratöltötte az oldalt, ami viszont az oldal tetejére ugrott, mint megnyitáskor.</p>
<p>Viszon az, hogy ebbe viselkedésbe a <em>Cache-Control </em>HTTP fejléc hogyhogy nem szól bele IE, safari, opera, chrome böngészőkben&#8230; az más kérdés.</p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/09/05/oldal-pozicio-vissza-gomb-utan/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome</title>
		<link>http://nec.shell8.net/2008/09/02/google-chrome/</link>
		<comments>http://nec.shell8.net/2008/09/02/google-chrome/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:49:04 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[HTML]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[chrome]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=76</guid>
		<description><![CDATA[WebKit alapokra helyezett böngészőt dob ma piacra a Google. Beépített Gears (ami magától érthető tekintve, hogy a google saját terméke), CSS3 ami a webkitből ered, és egy új JavaScript motor a V8 (ez a link perpill 404 nálam, még dolgoznak a srácok&#8230;), ami állítólag 10x gyorsabb mint a firefox új reménye, a TraceMonkey. Eltekintve attól, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="alignleft size-full wp-image-78" style="float:left;" title="Google Chrome Logo" src="http://nec.shell8.net/wp-content/uploads/2008/09/41185_chrome_logo.png" alt="" width="170" height="138" />WebKit alapokra helyezett böngészőt dob ma piacra a Google. Beépített Gears (ami magától érthető tekintve, hogy a google saját terméke), CSS3 ami a webkitből ered, és egy új JavaScript motor a <a href="http://code.google.com/apis/v8/">V8</a> (ez a link perpill 404 nálam, még dolgoznak a srácok&#8230;), ami állítólag 10x gyorsabb mint a firefox új reménye, a <a href="http://ejohn.org/blog/tracemonkey/">TraceMonkey</a>. Eltekintve attól, hogy egy újabb böngésző piacra lépése a webfejlesztőknek általában plusz gondokat jelent, kíváncsian várjuk. Lehet, hogy a végén WebKit felülkerekedik a Gecko fölött? Böngészőfronton <a href="http://www.nytimes.com/2008/09/02/technology/02google.html?_r=1&amp;oref=slogin">csap össze</a> a Microsoft és a Google?</p>
<p><span id="more-76"></span></p>
<p>A Google persze, akárcsak az IE8 beta fejlesztői, rögtön gondol a fejlesztőkre, beépíett JS konzol (<strong>Page</strong> ikon <strong>Developer &gt; JavaScript Console</strong>) JS debugger (kb ugyanott) és Element Inspector is vár ránk majd a Chrome-ban.</p>
<p>Nagy erősségnek a tabonként szeparált processzeket tartják, azaz pontosan azt amit a Firefoxban tarthatunk gyengeségnek, ha egy tabon megjelenitett site nagy terhelést okoz, az összes tab az egész böngészőben lelassuk, behal. Itt ezt kiküszöbölik azzal, hogy minden tab külön processz szál, tehát elméletben ha az egyik lassuk a többi vígan működhet tovább.</p>
<p>Furcsaság a <a href="http://www.google.com/notebook/public/10082229128833698422/BDSIKQgoQ08HkgsIj?hl=en">faq</a> alapján:</p>
<p>új ablak(tab) nyitása emiatt a processz szeparáció miatt kettéválik,</p>
<ul>
<li>az eddig megszokott alapeset, mikor új ablakot nyit a site <em>ugyanabban a processzben maradunk</em>, illetve</li>
<li>lehetőség van az új ablakot/tabot <em>külön processzként</em> indítani, ezt javascriptel a nyitott ablak <em>opener </em>tulajdonságának nullázásával teszik meg a mutatott példában</li>
</ul>
<p>Egyéb extrák:</p>
<ul>
<li>privacy mód - amit sokan csak úgy hívnak, hogy pornómód, azaz az ilyen módon nyitott ablakok nem logolnak semmit</li>
<li>webalkalmazásokat megnyithatunk böngésző kezelőfelület nélkül, olyasféle módon mint ahogy <a href="http://blogoscoped.com/archive/2007-10-26-n61.html">Mozilla Prism</a></li>
<li>frissített feketelista siteokról egyenesen a google-től, adatlopás védelem érdekében</li>
</ul>
<p><strong>update 1</strong></p>
<p><a href="http://nec.shell8.net/wp-content/uploads/2008/09/googlechromeprocessman.jpg"><img class="alignleft size-full wp-image-87" style="float:left;" title="google chrome process manager" src="http://nec.shell8.net/wp-content/uploads/2008/09/googlechromeprocessman.jpg" alt="" width="320" height="240" /></a>tabok közötti processz menedzser, ami nagyonjó, nézzük melyik nyomorult site öli épp a rendszerünk! <br class="clear" /></p>
<p><strong>update 2</strong></p>
<p><a href="http://www.google.com/googlebooks/chrome/">google chrome képregény</a></p>
<p><strong>update 3</strong></p>
<p>a képregény 9. oldala alapján, a google miden verziót kiereszt tesztelésre akár siteok ezreire valamiféle chrome-botokkal, így elsőkézből kapnak információkat ha valami félremegy</p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/09/02/google-chrome/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plurker béta</title>
		<link>http://nec.shell8.net/2008/08/06/plurker-beta/</link>
		<comments>http://nec.shell8.net/2008/08/06/plurker-beta/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 15:03:14 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[JS]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[client]]></category>

		<category><![CDATA[desktop]]></category>

		<category><![CDATA[js]]></category>

		<category><![CDATA[plurk]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=65</guid>
		<description><![CDATA[Lehet tesztelni, valamennyire épkézláb állapotba került a plurk desktop kliens, amit csinálgatok pár napja.
Erősen béta, alapfunkciókat tud már, a többi meg majd szépen fejlődik,
nyáriszünet után.
Augusztus végén folytköv.


]]></description>
			<content:encoded><![CDATA[<p>Lehet tesztelni, valamennyire épkézláb állapotba került a <a href="http://nec.shell8.net/plurker/">plurk desktop kliens</a>, amit csinálgatok pár napja.</p>
<p>Erősen béta, alapfunkciókat tud már, a többi meg majd szépen fejlődik,<br />
nyáriszünet után.</p>
<p>Augusztus végén folytköv.</p>
<p><span id="more-65"></span><br />
<a href="http://nec.shell8.net/plurker/"><img class="size-full wp-image-64" title="Plurker" src="http://nec.shell8.net/wp-content/uploads/2008/08/plurker.gif" alt="Plurker is a desktop client for Plurk, created with Adobe® AIR™." width="500" height="153" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/08/06/plurker-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lightroom 2</title>
		<link>http://nec.shell8.net/2008/07/29/lightroom-2/</link>
		<comments>http://nec.shell8.net/2008/07/29/lightroom-2/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 07:50:54 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[CR2]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[lightroom]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=47</guid>
		<description><![CDATA[Gradiens filterek, külső szerkesztőfelületek bevonása (pl noiseNinja, PTlens !!! ), Camera Raw 4.5, rakatnyi új eszköz &#8230; többek között ezekkel lehet örülni a Lightroom 2-nek,  amiből 30 napos trial is van. Valóra vált álom, hangzásra, most jön majd a próba.
Plusz link:változások a beta release -hez képest 
]]></description>
			<content:encoded><![CDATA[<p>Gradiens filterek, külső szerkesztőfelületek bevonása (pl noiseNinja, PTlens !!! ), Camera Raw 4.5, <a href="http://www.computer-darkroom.com/lr2_review/lr2-review-3.htm">rakatnyi új eszköz</a> &#8230; többek között ezekkel lehet örülni a <a href="http://www.adobe.com/products/photoshoplightroom/">Lightroom 2</a>-nek,  amiből <a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=photoshop_lightroom">30 napos trial is van</a>. Valóra vált álom, hangzásra, most jön majd a próba.</p>
<p>Plusz link:<a href="http://lightroom-news.com/2008/07/29/what-are-the-main-changes-from-the-lightroom-20-beta-to-the-release-version/">változások a beta release -hez képest </a></p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/07/29/lightroom-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plurk desktop kliens AIR-ben - sneak peak</title>
		<link>http://nec.shell8.net/2008/07/25/plurk-desktop-kliens-air-ben-sneak-peak/</link>
		<comments>http://nec.shell8.net/2008/07/25/plurk-desktop-kliens-air-ben-sneak-peak/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 16:18:13 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
		
		<category><![CDATA[JS]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[client]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[desktop]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[js]]></category>

		<category><![CDATA[plurk]]></category>

		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=44</guid>
		<description><![CDATA[Hiánypótló alkalmazás, eddig csak a plurk mobil verziója létezett AIRbe tuszkolt iframe-ben, ami eléggé ronda volt. Még visszavan sok apróság, és egy rendes update motor hozzá. Kép lejjebb&#8230;

Ő lesz az, hamarosan lehet bétateszelni.

]]></description>
			<content:encoded><![CDATA[<p>Hiánypótló alkalmazás, eddig csak a plurk mobil verziója létezett AIRbe tuszkolt iframe-ben, ami eléggé ronda volt. Még visszavan sok apróság, és egy rendes update motor hozzá. Kép lejjebb&#8230;</p>
<p><span id="more-44"></span></p>
<p>Ő lesz az, hamarosan lehet bétateszelni.</p>
<p><img class="alignnone size-full wp-image-45" title="plurk desktop client in Adobe AIR" src="http://nec.shell8.net/wp-content/uploads/2008/07/plurker.jpg" alt="" width="441" height="546" /></p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/07/25/plurk-desktop-kliens-air-ben-sneak-peak/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
