<?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>Hide In My Shell &#187; IT</title>
	<atom:link href="http://blog.koles.hu/category/it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.koles.hu</link>
	<description>Web, fotó, meg ami még az eszembe jut</description>
	<lastBuildDate>Sat, 21 Jan 2012 22:27:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Archiválás&#8230;</title>
		<link>http://blog.koles.hu/2012/01/22/archivalas/</link>
		<comments>http://blog.koles.hu/2012/01/22/archivalas/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 22:18:25 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[kis világom]]></category>
		<category><![CDATA[archivlás]]></category>
		<category><![CDATA[dvd]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=342</guid>
		<description><![CDATA[Év végén mindig elkap a vágy, hogy egy picit rendbe rakjam a dolgaimat. Most egy kissé megcsúsztam, így csak januárban láttam neki a gigászi feladatnak. Először kicsit nosztalgiázni támadt kedvem, ezért előszedtem a régi képeket. Amikor elkezdtem archiválni őket azt a logikát követtem, hogy kiírok mindent DVD-re duplán. Remélve, hogy ha tönkre is megy valamelyik lemez, ott [...]]]></description>
			<content:encoded><![CDATA[<p>Év végén mindig elkap a vágy, hogy egy picit rendbe rakjam a dolgaimat. Most egy kissé megcsúsztam, így csak januárban láttam neki a gigászi feladatnak.</p>
<p>Először kicsit nosztalgiázni támadt kedvem, ezért előszedtem a régi képeket. Amikor elkezdtem archiválni őket azt a logikát követtem, hogy kiírok mindent DVD-re duplán. Remélve, hogy ha tönkre is megy valamelyik lemez, ott a másolat.</p>
<p>Az első DVD még 2003-ban készült, szóval lassan 9 éve. Épp ideje volt ellenőrizni az adathordozókat.</p>
<p>Az első lemezt még csont nélkül másoltam a gépre, de a másodiknál már olvasási hibát kaptam. Szerencsére itt a másolat segített, azt hiba nélkül sikerült lementenem. A harmadiknál viszont összedőlt minden.</p>
<p>Azt a DVD-t 2005 elején írtam ki, szóval csak 7 éves, a bűvös hetes&#8230; Philips gyártmányú korong. A lemez eleje simán átment a gépre, de az utolsó pár mappával már nem boldogult az olvasó. Ekkor még úgy gondoltam, hogy semmi gond, ott a másik lemez, egy Ritek gyártmányú nevenincs tajvani csoda. Persze nem sikerült a mutatvány, az olvasó már fel sem ismerte azt a lemezt. Másik gépen is néztem, ő sem látta. Előástam egy külső meghajtót, az sem látta. Még egy kibelezett Pioneer íróm volt talonban. Az már megnyitotta, de pontosan ugyanazoknál a mappáknál, mint a másik lemez esetében, ez is elakadt. Itt elszomorodtam, de gondoltam, mást már nem tudok tenni, egy lendülettel lepörgetem a maradék 15 lemezt is a gépemre, jöjjön, aminek jönnie kell&#8230;</p>
<p>Szerencsére a többi lemeznél már simábban ment minden. Úgyhogy a végére egy kicsit megnyugodtam.</p>
<p>Így végül a veszteségem nem lett nagy, de a helyzet rémisztő, hiszen mindkét lemeznél pontosan ugyanott jelentkezett a hiba. Az eredeti elképzelésem hibás volt, a duplikálás nem segít, sőt! Úgy tűnik nem csak a média fáradhat el, hanem az író is. (Már nem tudom mivel írtam ki 2005-ben azt a két lemezt.)</p>
<p>A következőkre jutottam:</p>
<ul>
<li>Nem szabad DVD-re archiválni.</li>
<li>Ha mégis erre kényszerülök, akkor sem nyugtathatom magam azzal, hogy duplikálással kivédem a meghibásodásokat.</li>
<li>Az írható DVD mint technológia egy rakás szemét.</li>
<li>Mivel a merevlemez kapacitás ára rendkívül alacsony, de a technológia megbízhatóbb (SMART-tal akár előre is képes jelezni a meghibásodást), ezért a jövőben ezt használom elsődleges médiumnak archiváláshoz.</li>
<li>Kell valami még&#8230;</li>
</ul>
<p>Pont aznap láttam meg, hogy nagy lendülettel elindult a Bitcasa béta tesztje. Végtelen tárhelyet ígérnek (most még) ingyen! Rögtön le is csaptam a lehetőségre és a megmentett képeimet fel is toltam a felhőjükbe. 75GB nem kevés, Bitcasa amerikai cég, így aztán eltartott pár napig mire minden felért. Most egy picit megnyugodtam.</p>
<p>A jelenlegi állapot:</p>
<ol>
<li>Mivel a gépemben van 750GB-nyi tárhely, ezért marad minden a vinyón, ez az elsődleges hely.</li>
<li>Time Machine mentés külső 1TB-os lemezre. Ez az első védelmi vonal.</li>
<li>Bitcasa felhő a harmadik.</li>
<li>Céges ASUS Ion szerver, hogy jól aludjak. (Ezt majd csak hétfőn lépem meg.)</li>
</ol>
<p>Szóval én most olcsón megúsztam, csak pár napnyi kép veszett oda.</p>
<p>Következik a rezsiszámlák elemzése, stay tuned! <img src='http://blog.koles.hu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2012/01/22/archivalas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac-es Chromium Bookmark Manager első jelek</title>
		<link>http://blog.koles.hu/2010/01/08/mac-es-chromium-bookmark-manager-elso-jelek/</link>
		<comments>http://blog.koles.hu/2010/01/08/mac-es-chromium-bookmark-manager-elso-jelek/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:54:31 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=290</guid>
		<description><![CDATA[Lassan elérkezik a pillanat, hogy a MacOSX-es Chromium-ba is bekerül végre a bookmark manager. A mai napig az Xmarks segítségével tudtam csak kezelni a bookmarkjaimat, de felcsillant a remény, a 35779-es build-be bekerült a &#8220;Bookmark manager&#8221; menüpont. Igaz még csak listázni tud, de már ez is valami. Innen letölthető a fent említett verzió, itt pedig [...]]]></description>
			<content:encoded><![CDATA[<p>Lassan elérkezik a pillanat, hogy a MacOSX-es <a href="http://www.chromium.org/" target="_blank">Chromium</a>-ba is bekerül végre a bookmark manager. A mai napig az Xmarks segítségével tudtam csak kezelni a bookmarkjaimat, de felcsillant a remény, a 35779-es build-be bekerült a &#8220;Bookmark manager&#8221; menüpont. Igaz még csak listázni tud, de már ez is valami.</p>
<p><a href="http://build.chromium.org/buildbot/continuous/mac/2010-01-07/35779/" target="_blank">Innen</a> letölthető a fent említett verzió, <a href="http://build.chromium.org/buildbot/waterfall/console" target="_blank">itt</a> pedig nyomon lehet követni a különböző Chromium buildeket.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2010/01/08/mac-es-chromium-bookmark-manager-elso-jelek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Furcsa hiba MacOSX indításkor</title>
		<link>http://blog.koles.hu/2009/11/10/furcsa-hiba-macosx-inditaskor/</link>
		<comments>http://blog.koles.hu/2009/11/10/furcsa-hiba-macosx-inditaskor/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 02:49:00 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=287</guid>
		<description><![CDATA[Már jó ideje szenvedünk az immár több, mint három éves, fehér macbook-kal. Először valami szoftveres hibára gyanakodtam, aztán hardveresre, mivel hiába takarítottam le a merevlemezt nullára (szó szerint) és raktam fel Snow Leopard-ot, illetve Tiger-t, csak nem akart elindulni az op.rendszer, amikor ki/bekapcsoltam a gépet (sima leállítás és fagyás utáni újraindításkor sem). Már ott tartottam, [...]]]></description>
			<content:encoded><![CDATA[<p>Már jó ideje szenvedünk az immár több, mint három éves, fehér macbook-kal. Először valami szoftveres hibára gyanakodtam, aztán hardveresre, mivel hiába takarítottam le a merevlemezt nullára (szó szerint) és raktam fel Snow Leopard-ot, illetve Tiger-t, csak nem akart elindulni az op.rendszer, amikor ki/bekapcsoltam a gépet (sima leállítás és fagyás utáni újraindításkor sem).</p>
<p>Már ott tartottam, hogy utolsó elkeseredett próbálkozásra berakok még egy új merevlemezt, de ha az sem jön össze, akkor alaplap csere lesz.</p>
<p>A történelmi hűség miatt és, hogy érzékeltessem micsoda mágiával sikerült csak elindítani a gépet:</p>
<ol>
<li>Indításkor CMD + S, így single-user módban elindult az OSX (konzol van csak).</li>
<li>/sbin/fsck -fy</li>
<li>Kiírta, hogy rendben van a fájlrendszer.</li>
<li>exit</li>
<li>Ezután megrekedt a boot folyamat, kikapcs.</li>
<li>Indításkor megint CMD + S és a promptnál: reboot</li>
<li>Jó esetben elindult, ha nem, akkor előlről&#8230; goto 1</li>
</ol>
<p>Remélem érződik mennyire fájdalmas ez az egész. Egy kapaszkodóm volt, de azzal jó ideig nem tudtam mit kezdeni, egy visszatérő hibaüzenet a fájlrendszer naplózására panaszkodott:</p>
<pre>jnl: replay_journal: bad block list header @ ...
jnl: journal_open: Error replaying the journal!</pre>
<p>Ebből a hibaüzenetből indultam ki végül és ráakadtam erre az oldalra: <a href="http://ycode.blogspot.com/2008/01/mac-os-x-1051-jnl-replayjournal-bad.html" target="_blank">http://ycode.blogspot.com/2008/01/mac-os-x-1051-jnl-replayjournal-bad.html</a></p>
<p>Csodák csodájára bevált a módszer:</p>
<ol>
<li>A fenti mágiával életre hívott MacOSX-ben terminált indítottam.</li>
<li>Kikapcsoltam a naplózást: sudo diskutil disableJournal /dev/disk0s2</li>
<li>Reboot</li>
<li>Aktiváltam Disk Utility-ben megint a naplózást.</li>
</ol>
<p>Egyszerűen nem értem a dolgot, mi ronthatja el a naplózást&#8230; A géphez adott Tiger install után (upgrade-ek nélkül) is ugyanezt tapasztaltam, pedig értelemszerűen azzal már jól működött a gép.</p>
<p>Most örvendek ennek a felfedezésnek, remélem hosszú időre megoldottam a problémát.</p>
<p>(Zárójelben: meggyötört burkolatú nem unibody macbook pro-k lakatos munkálatait vállalom! <img src='http://blog.koles.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2009/11/10/furcsa-hiba-macosx-inditaskor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Rádiózás&#8221; OSX alatt</title>
		<link>http://blog.koles.hu/2009/10/16/radiozas-osx-alatt/</link>
		<comments>http://blog.koles.hu/2009/10/16/radiozas-osx-alatt/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 07:59:40 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[csakúgy]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=284</guid>
		<description><![CDATA[A saját &#8220;online web rádió&#8221; megoldásom OSX-re: A http://listen.grooveshark.com cimet megnyitom Safariban, ingyenes regelés után, belépek a useremmel. Csinálok pár playlistet. Safariban a File/Open in Dashboard menüvel kivágom csak a lejátszót és kirakom dashboard-ra. A jobb alsó &#8220;i&#8221; betűnél kikapcsolom a &#8220;play audio in dashboard only&#8221;-t. Elindítom a lejátszást. Ennyi, kész, reklám mentesen, teljesen faszán [...]]]></description>
			<content:encoded><![CDATA[<p>A saját &#8220;online web rádió&#8221; megoldásom OSX-re:</p>
<ol>
<li> A <a href="http://listen.grooveshark.com" target="_blank">http://listen.grooveshark.com</a> cimet megnyitom Safariban, ingyenes regelés után, belépek a useremmel.</li>
<li>Csinálok pár playlistet.</li>
<li>Safariban a File/Open in Dashboard menüvel kivágom csak a lejátszót és kirakom dashboard-ra.</li>
<li>A jobb alsó &#8220;i&#8221; betűnél kikapcsolom a &#8220;play audio in dashboard only&#8221;-t.</li>
<li>Elindítom a lejátszást.</li>
</ol>
<p>Ennyi, kész, reklám mentesen, teljesen faszán működik és nem kell hozzá nyitva lennie böngészőnek (ha lefagyna, nem kell újra mindent előlről kezdeni, nem csukom be az ablakát véletlenül, stb&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2009/10/16/radiozas-osx-alatt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X Snow Leopard 2. felvonás</title>
		<link>http://blog.koles.hu/2009/08/31/mac-os-x-snow-leopard-2-felvonas/</link>
		<comments>http://blog.koles.hu/2009/08/31/mac-os-x-snow-leopard-2-felvonas/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 20:34:14 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[szoftver]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=282</guid>
		<description><![CDATA[Egy napja van fönt a SL: Minden hibátlanul működik, semmit nem kellett állítgatnom, mindent hibátlanul átvett a leo-tól. A gép gördülékenyebben hajtja végre a feladatokat, tényleg érződik az a sebességelőny amiről annyit írtak a marketingesek. Annak ellenére, hogy a processzek több mint fele 64 biten fut, több szabad memória marad! Egyébként ilyet még eddigi kb [...]]]></description>
			<content:encoded><![CDATA[<p>Egy napja van fönt a SL:</p>
<ul>
<li> Minden hibátlanul működik, semmit nem kellett állítgatnom, mindent hibátlanul átvett a leo-tól.</li>
<li>A gép gördülékenyebben hajtja végre a feladatokat, tényleg érződik az a sebességelőny amiről annyit írtak a marketingesek.</li>
<li>Annak ellenére, hogy a processzek több mint fele 64 biten fut, több szabad memória marad!</li>
</ul>
<p>Egyébként ilyet még eddigi kb 20 éves számítástechnikai előéletem alatt nem tapasztaltam. Mármint, hogy egy új oprendszer telepítőjét a régire ráeresztve: kapok 6 Gb szabad helyet (tényleg!), gyorsul a rendszer (legalábbis a reakcióideje &#8211; nincsenek érthetetlen homokórázások, zökkenések, beragadások), minden flottul működik nem kellett semmit sem &#8220;utánhackelni&#8221;.</p>
<p>Ezt az oprendszert tényleg összerakták, kár azért a majd&#8217; két évért, amit vártunk rá. <img src='http://blog.koles.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2009/08/31/mac-os-x-snow-leopard-2-felvonas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallels Desktop vs. VirtualBox</title>
		<link>http://blog.koles.hu/2009/04/23/parallels-desktop-vs-virtualbox/</link>
		<comments>http://blog.koles.hu/2009/04/23/parallels-desktop-vs-virtualbox/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 19:53:01 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[csakúgy]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=252</guid>
		<description><![CDATA[Mi történik, ha egyszerre fut egy-egy virtuális gép Parallels Desktop-ban és VirtualBox-ban? Összefossa magát a MacOSX.]]></description>
			<content:encoded><![CDATA[<p>Mi történik, ha egyszerre fut egy-egy virtuális gép Parallels Desktop-ban és VirtualBox-ban?</p>
<p>Összefossa magát a MacOSX. <img src='http://blog.koles.hu/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-264" title="macosx panic screen" src="http://blog.koles.hu/wp-content/uploads/2009/04/panic_3.jpg" alt="macosx panic screen" width="474" height="256" /></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2009/04/23/parallels-desktop-vs-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jelszó beviteli mező YUI DataTable-höz</title>
		<link>http://blog.koles.hu/2009/02/11/jelszo-beviteli-mezo-yui-datatable-hoz/</link>
		<comments>http://blog.koles.hu/2009/02/11/jelszo-beviteli-mezo-yui-datatable-hoz/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 23:43:31 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[prog]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=225</guid>
		<description><![CDATA[Az utóbbi időben egyre többet foglalkozom a YAHOO User Interface-szel, annak is főként a DataTable komponensével. Hogy egy pici kedvet csináljak másoknak is a YUI-val való ismerkedéshez, bemutatok egy egyszerű módszert a DataTable cella-szerkesztőinek bővítésére. A DataTable valójában a YUI grid view megoldása. Mindenféle adatforrásból képes felépíteni magát, legyen az HTML tábla, XML vagy JSON. [...]]]></description>
			<content:encoded><![CDATA[<p>Az utóbbi időben egyre többet foglalkozom a <a href="http://developer.yahoo.com/yui/" target="_blank">YAHOO User Interface</a>-szel, annak is főként a <a href="http://developer.yahoo.com/yui/datatable/" target="_blank">DataTable</a> komponensével. Hogy egy pici kedvet csináljak másoknak is a YUI-val való ismerkedéshez, bemutatok egy egyszerű módszert a DataTable cella-szerkesztőinek bővítésére.</p>
<p><span id="more-225"></span></p>
<p>A DataTable valójában a YUI <a href="http://en.wikipedia.org/wiki/Grid_view" target="_blank">grid view</a> megoldása. Mindenféle adatforrásból képes felépíteni magát, legyen az HTML tábla, XML vagy JSON. A cellák tartalmának módosításához már eleve minden alap szerkesztőt tartalmaz: sima szöveg, pipák, választók (radio-buttons), lenyíló lista. Ami nekem hiányzott az a jelszó szerkesztő, amit így saját magam raktam össze, ezt fogom most röviden bemutatni.</p>
<p>A cella-szerkesztők alapjában véve a YAHOO.widget.BaseCellEditor osztály leszármazottai. Ahogy a neve is mutatja ebben az osztályban valósítottak meg néhány alapvető metódust: save és cancel gombok kirajzolása, a beviteli mezőket tartalmazó alap &lt;div&gt; létrehozása, eseménykezelők, stb&#8230; Ha belenéz valaki a datatable.js-be, akkor rögtön látszódik is, hogy milyen metódusokat kell egy cella-szerkesztő objektumnak megvalósítania, ezeknek csak a fejléce szerepel a BaseCellEditor-ban, a törzsükben csak egy megjegyzés van. Ugorjunk is fejest a közepébe, nagy előképzettség nem szükséges.</p>
<p>Első lépésként megadok pár hivatkozást, hogy ne kelljen mindig kiírni a YAHOO objektumot.</p>
<pre>var Ev = YAHOO.util.Event,
   lang = YAHOO.lang,
   widget = YAHOO.widget,
   ua = YAHOO.env.ua;</pre>
<p>Ezek után definiálom az új widget prototípusát, illetve gyakorlatilag csak a konstruktort, amiben megadok egy egyedi azonosítót minden újonnan létrehozott objektumnak és meghívom a BaseCellEditor konstruktorát.</p>
<pre>widget.PasswordCellEditor = function(oConfigs) {
    this._sId = "yui-passwordceditor" +
        YAHOO.widget.BaseCellEditor._nCount++;
    widget.PasswordCellEditor.superclass
        .constructor.call(this, "textbox", oConfigs);
};</pre>
<p>Most következik a fenti prototípus objektum &#8220;tartalommal&#8221; való feltöltése. Ehhez a YAHOO.lang.extend metódusát használom, mivel ezzel egyszerűen létrehozhatok minden szükséges metódus és változó prototípust olyan módon, hogy azok használhatóak legyenek &#8220;példányosításkor&#8221; &#8211; vagyis akkor, amikor a &#8220;new&#8221; paranccsal új objektumot hozok létre.</p>
<p>Először három változót deklarálok, amikbe majd HTML objektumokat rakok: a két jelszó beviteli mezőt és az ellenőrzés eredményének visszajelésére használt HTML elemet.</p>
<pre>lang.extend(widget.PasswordCellEditor, widget.BaseCellEditor, {
    textbox0 : null,
    textbox1 : null,
    msgEl : null,</pre>
<p>Most következik a a renderForm metódus, ami a szerkesztő űrlap elemeit készíti el. A kódban van néhány &#8220;workaround&#8221;, amit a TextboxCellEditor-ból vettem át. Az érdekesebb dolgok a metódus törzsének második felétől kezdődnek, ott definiálok két eseménykezelőt. A két beviteli mező &#8220;keyup&#8221; eseményére kötöm őket, tehát ha a felhasználó pötyög valamit akkor először ellenőrzöm mindkét mezőt a checkPasswords() metódussal. Ha rendben van minden és ráadásul még &#8220;enter&#8221;-t is nyomott a felhasználó, akkor jöhet a BaseCellEditor-tól örökölt save() metódus futtatása.</p>
<p>A metódus utolsó eleme annak a konfigurációs paraméternek a megvalósítása, amikor inicializálásnál azt kérem, hogy a cella szerkesztőben ne jelenjenek meg a &#8220;save&#8221; és &#8220;cancel&#8221; gombok. Itt igazándiból csak annyi történik, hogy a &#8211; későbbiekben definiált &#8211; handleDisabledBtns() eljárást meghívom, amiben bekötök egy eseménykezelőt a cella-szerkesztőn értelmezett blur eseményre. Ami azt eredményezi majd, hogy ha a felhasználó a cella-szerkesztőn kívülre kattint, akkor lefut a korábban már említett save() metódus, de csak abban az esetben, ha a jelszó ellenőrzés rendben volt.</p>
<pre>    renderForm : function() {
        var elTextbox0, elTextbox1, elForm;
        // Bug 1802582: SF3/Mac needs a form element wrapping the input
        if(ua.webkit&gt;420) {
            elForm = this.getContainerEl().appendChild(
                document.createElement("form"));
        }
        else {
            elForm = this.getContainerEl();
        }
        elForm.style.textAlign="right";
        elForm.appendChild(document.createElement("label"))
            .innerHTML="Password:";
        elTextbox0= document.createElement("input");
        elTextbox0.type = "password";
        elForm.appendChild(elTextbox0);
        elForm.appendChild(document.createElement("br"));
        elForm.appendChild(document.createElement("label"))
            .innerHTML="Confirm:";
        elTextbox1= document.createElement("input");
        elTextbox1.type = "password";
        elForm.appendChild(elTextbox1);
        elForm.appendChild(document.createElement("br"));
        this.msgEl=elForm.appendChild(document.createElement("span"));

        this.textbox0 = elTextbox0;
        this.textbox1 = elTextbox1;

        // Save on enter by default
        // Bug: 1802582 Set up a listener on each textbox to track on keypress
        // since SF/OP can't preventDefault on keydown
        Ev.addListener(elTextbox0, "keyup", function(v){
            if (this.checkPasswords())
            {
                if((v.keyCode === 13)) {
                    // Prevent form submit
                    YAHOO.util.Event.preventDefault(v);
                    this.save();
                }
            }
        }, this, true);

        Ev.addListener(elTextbox1, "keyup", function(v){
            if (this.checkPasswords())
            {
                if((v.keyCode === 13)) {
                    // Prevent form submit
                    YAHOO.util.Event.preventDefault(v);
                    this.save();
                }
            }
        }, this, true);

        if(this.disableBtns) {
            // By default this is no-op since enter saves by default
            this.handleDisabledBtns();
        }
    },</pre>
<p>A checkPasswords() metódus ellenőrzi, hogy mindkét beviteli mezőben azonos-e a beírt szöveg. Csak akkor tér vissza &#8220;true&#8221;-val, ha egyik sem üres és megegyezik az értékük. Ahol van értelme, ott ki is íratom az ellenőrzés eredményét a &#8220;msgEl&#8221;-ben tárolt HTML objektumban.</p>
<pre>    checkPasswords : function()
    {
        if (this.textbox0.value==null
            || this.textbox0.value==""
            || this.textbox1.value==null
            || this.textbox1.value=="")
        {
            this.msgEl.innerHTML="";
            return false;
        }
        else {
            if (this.textbox0.value == this.textbox1.value) {
                this.msgEl.innerHTML="New password is confirmed.";
                this.msgEl.style.color="#008000";
                return true;
            }
            else {
                this.msgEl.innerHTML="Password don't match!";
                this.msgEl.style.color="#800000";
                return false;
            }
        }
    },</pre>
<p>Ez csak egy pici segítség ahhoz, hogy a cella szerkesztőt jó méretben rakja ki a BaseCellEditor.move().</p>
<pre>    move : function() {
        this.textbox0.style.width = this.getTdEl().offsetWidth + "px";
        this.textbox1.style.width = this.getTdEl().offsetWidth + "px";
        widget.PasswordCellEditor.superclass.move.call(this);
    },</pre>
<p>A mezők alapértékre állítása (inicializáláskor hívja meg a BaseCellEditor).</p>
<pre>    resetForm : function() {
        this.textbox0.value = lang.isValue(this.value) ?
            this.value.toString() : "";
        this.textbox1.value = lang.isValue(this.value) ?
            this.value.toString() : "";
    },</pre>
<p>Nevében a működése: berakja a kurzort és kijelöli az első beviteli mező tartalmát, amikor inicializálása során fókuszt kap a cella-szerkesztő.</p>
<pre>    focus : function() {
        this.textbox0.focus();
        this.textbox0.select();
    },</pre>
<p>A renderForm()-nál leírt handleDisabledBtns() metódus, ami egy eseménykezelőt köt be &#8220;blur&#8221;-re. Azt érdemes még megjegyezni, hogy a BaseCellEditor értlemszerűen ezt a metódust nem implementálja, csak azt az esetet amikor kirakja a &#8220;save&#8221; és &#8220;cancel&#8221; gombokat, amikhez a save() és close() metódusokat köti. Érdemes még megfigyelni azt is, hogy itt nem a YAHOO.util.Event.addListener() metódust használom, hanem a saját subscribe() metódust, ami azt jelenti, hogy a &#8220;blurEvent&#8221; nem egy W3C által megadott esemény, hanem ezt speciálisan a BaseCellEditor képes generálni. A subscribe() pedig, mint ahogy a neve is mutatja, a megadott függvényt beköti az eseménykor lefutó függvényhívások láncolatába.</p>
<pre>    handleDisabledBtns : function() {
        this.subscribe("blurEvent", function(v){
            if (this.checkPasswords()) {
                // Save on blur
                this.save();
            }
        }, this, true);
    },</pre>
<p>Az alábbi metódus kell a save() számára. Gyakorlatilag innen kapja meg a BaseCellEditor, hogy milyen értéket írjon vissza a DataTable megfelelő mezőjébe. Fontos: a save() a DataTable-ből elérhető RecordSet objektumot használja, tehát nem a látható táblázatba ír bele közvetlenül, azt a DataTable oszlopához megadott &#8220;formatter&#8221; metódus végzi, erről még lesz szó.</p>
<pre>    getInputValue : function() {
        if (this.checkPasswords()) return this.textbox0.value;
        else return "";
    }
});</pre>
<p>Kész a prototípus, most még át kell emelni pár static elemet a BaseCellEditor-ból, mivel ezeket az extend() nem végezte el:</p>
<pre>lang.augmentObject(widget.PasswordCellEditor, widget.BaseCellEditor);</pre>
<p>A végére még egy &#8220;apróság&#8221; maradt, a cella formázását végző kis függvény. Ezt ugyanúgy mint a fenti PasswordCellEditor objektumot, a DataTable cella-definíciós objektumában kell megadni. A feladat egyszerű, csillagokat kell rajzolni.</p>
<pre>DataTableUtils={
   PasswordFormatter:function(el,oRecord,oColumn,oData){
      if (oData==null || oData=='') oData='xxxxxxxx';
      {
         el.innerHTML='';
         var oStr = new String(oData);
         for (var i=0; i&lt;oStr.length; i++)
         el.innerHTML+="*";
      }
   }
}</pre>
<p>Most már minden adott, hogy összerakjam a példát. A DataTable inicializálásához két dolog kell, az egyik az oszlopok (azonosító, fejléc szöveg, szerkesztő és formázó objektumok, átméretezhetőség, stb&#8230;), a másik pedig az adatforrás definiálása:</p>
<ul>
<li>Megadok három oszlop definíciót: felhasználó név, jelszó, email. Ebből a jelszón kívül mindgyikhez megadom a TextboxCellEditor-t, mint cella-szerkesztőt. Mindegyik oszlop átméretezhető, tartalom alapján sorba rendezhető. A jelszó mezőhöz megadom a PasswordFormatter-t, mint tartalom formázót.</li>
<li>Adatforrásként egy előre elkészített JSON formázású szimpla javascript fájlt adok meg.</li>
</ul>
<p>A példa alkalmazásban a fenti PasswordCellEditor és a PasswordFormatter a <a href="http://koles.hu/sandbox/yui_datatable_password/YUI_DataTable_PasswordCellEditor.js" target="_blank">YUI_DataTable_PasswordCellEditor.js</a>-ben található, amit <a href="http://koles.hu/sandbox/yui_datatable_password/YUI_DataTable_PasswordCellEditor.js" target="_blank">innen</a> le is tölthetsz és szabadon felhasználhatsz.</p>
<p>A példa erre a <a href="http://koles.hu/sandbox/yui_datatable_password/" target="_blank">linkre</a> kattintva érhető el. A forráskódba beírtam a fontosabb lépések magyarázatát, de a YUI saját weboldalán is sok egyszerű és jól dokumentált példa van, amiket nézegetve teljesen megérthető, hogy pontosan mi mit jelent.</p>
<p>Ha bármilyen észrevételed vagy javaslatod van, akkor nyugodtan kommentáld itt helyben.</p>
<p>Érekes linkek, ahonnan én is sok infót szereztem YUI-val való ismerkedésem során:</p>
<ul>
<li><a href="http://www.satyam.com.ar/yui/" target="_blank">http://www.satyam.com.ar/yui/</a></li>
<li><a href="http://developer.yahoo.com/yui/" target="_blank">http://developer.yahoo.com/yui/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2009/02/11/jelszo-beviteli-mezo-yui-datatable-hoz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OSX okosságok, 2. rész</title>
		<link>http://blog.koles.hu/2008/11/09/mac-osx-okossagok-2-resz/</link>
		<comments>http://blog.koles.hu/2008/11/09/mac-osx-okossagok-2-resz/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 16:06:29 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=105</guid>
		<description><![CDATA[Ma egy pirinyó, de annál bosszantóbb hibára/elírásra és a megoldására szeretnék rávilágítani. Minden consumer Apple géphez jár egy infravörös távirányító, viszont mindegyik Apple gépben van infravörös vevő, tehát (mint nekem is) ha van egy távirányítód, akkor azzal vezérelheted bármelyik macedet. A dolog működik is szépen, az összes távirányító funkciót elértem a Macbook Pro-n, egy dolgot [...]]]></description>
			<content:encoded><![CDATA[<p>Ma egy pirinyó, de annál bosszantóbb hibára/elírásra és a megoldására szeretnék rávilágítani.</p>
<p>Minden consumer Apple géphez jár egy infravörös távirányító, viszont mindegyik Apple gépben van infravörös vevő, tehát (mint nekem is) ha van egy távirányítód, akkor azzal vezérelheted bármelyik macedet.</p>
<p>A dolog működik is szépen, az összes távirányító funkciót elértem a Macbook Pro-n, egy dolgot nem tudtam megcsinálni: nem sikerült sehogy sem összepárosítani a gépet a távirányítóval. Ami azért nem rossz dolog lenne, tekintve, hogy ha az egyik gép felé irányítva nyomkodom a távirányítót, akkor mindkét gépet vezérlem vele. (Persze kikapcsolhatnám az infravörös vevőt a másik gépen, de hát izé&#8230; nem éppen ez a legszebb megoldás.)</p>
<p>Meglestem a System Preferences/Security-ben az idevonatkozó leírást. Tegyük közel a távirányítót a gép vevőjéhez és nyomjuk le kb. 5mp-ig a Next + Menu gombokat. Semmi&#8230;</p>
<p>Jah, hogy nem a Macbook Pro-hoz való távirányítót vettem meg, oh&#8230; Apple üzletpolitika már megint, ennyire piti ügyben is?.</p>
<p>Egy kis google támogatta keresgélés után ráakadtam a megoldásra: a Play + Menu gombokat kell lenyomni egyszerre. Természetesen rögtön működött is. Viszont mindenféle hivatalos forrás a fenti, nem működő megoldást szajkózta, tehát kedves Apple, tessék kiírni az oldalra, hogy mi a helyzet.</p>
<p>Mondjuk elgondolkodtató, hogy 2008 áprilisa óta nem változott az idevonatkozó bejegyzés&#8230; lehet senki nem használja ezt a lehetőséget?</p>
<p>Itt van az Apple hivatalos leírása a nem működő megoldással: <a href="http://www.macosxhints.com/article.php?story=20060308130231850" target="_blank">http://docs.info.apple.com/article.html?path=Mac/10.5/en/8993.html</a></p>
<p>Itt pedig a működő: <a href="http://www.macosxhints.com/article.php?story=20060308130231850" target="_blank">http://www.macosxhints.com/article.php?story=20060308130231850</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2008/11/09/mac-osx-okossagok-2-resz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script.aculo.us slider mod</title>
		<link>http://blog.koles.hu/2008/08/29/scriptaculous-slider-mod/</link>
		<comments>http://blog.koles.hu/2008/08/29/scriptaculous-slider-mod/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 22:51:28 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[prog]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[script.aculo.us]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=85</guid>
		<description><![CDATA[Egész jóra sikerült a script.aculo.us-os slider control, annyi a baj vele, hogy nem tudja kezelni azt az esetet, amikor két &#8220;pöcök&#8221; van a &#8220;pályán&#8221; és az egyiket rátolom a másikra. Ilyenkor az első probléma az, hogy átfedésbe kerülnek, emiatt az egyik &#8220;pöcök&#8221; elérhetetlenné válik. Ha ezt sikerül kiküszöbölni, akkor meg az a gond, hogy találkozáskor [...]]]></description>
			<content:encoded><![CDATA[<p>Egész jóra sikerült a script.aculo.us-os slider control, annyi a baj vele, hogy nem tudja kezelni azt az esetet, amikor két &#8220;pöcök&#8221; van a &#8220;pályán&#8221; és az egyiket rátolom a másikra. Ilyenkor az első probléma az, hogy átfedésbe kerülnek, emiatt az egyik &#8220;pöcök&#8221; elérhetetlenné válik. Ha ezt sikerül kiküszöbölni, akkor meg az a gond, hogy találkozáskor nem ugyanazt az értéket fogják visszaadni.</p>
<p>Ez így nehezen érthető, de itt egy példa, ami az eredeti slider control-t használja: <a href="http://koles.hu/sandbox/script.aculo.us_sliders/normal/slider_test.html" target="_blank">PÉLDA</a>. Ezen jól látható, hogy egzmásra tolható a két pöcök, ugyanazt az értéket adják, de ilyenkor az alul levőt nem lehet közvetlenül elérni, el kell cibálni a fölül levőt.</p>
<p>A módosított verzióban a két pöcök már csak egymás mellé képes beállni, ilyenkor a visszaadott értékük azonos. Ez már jól használható intervallum megadásokra: <a href="http://koles.hu/sandbox/script.aculo.us_sliders/hacked/slider_test.html" target="_blank">PÉLDA</a></p>
<p>A módosított slider control letölthető <a href="http://blog.koles.hu/wp-content/uploads/2008/08/slidernonoverlapping.js" target="_blank">innen</a>. Az 1.8.1-es script.aculo.us lib-et használtam fel alapnak, ebbe hackeltem bele <a title="Gerd Riesselmann: Notes From the Bog" href="http://www.gerd-riesselmann.net/" target="_blank">Gerd Riesselmann</a> módosítását, amit <a href="http://www.gerd-riesselmann.net/archives/2006/05/using-scriptaculous-slider-with-two-handles" target="_blank">itt tett közzé</a> még az 1.6-os script.aculo.us lib-hez.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2008/08/29/scriptaculous-slider-mod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OSX okosságok, 1. rész</title>
		<link>http://blog.koles.hu/2008/08/04/mac-osx-okossagok-1-resz/</link>
		<comments>http://blog.koles.hu/2008/08/04/mac-osx-okossagok-1-resz/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:29:25 +0000</pubDate>
		<dc:creator>nyu</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[szoftver]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.koles.hu/?p=83</guid>
		<description><![CDATA[Mai két apró, de felettébb hasznos okosságot szeretnék megosztani: Az első az AppCleaner nevű kis program. MacOSX alatt pofonegyszerű egy alkalmazást telepíteni/leszedni. Akkor van gond, ha a letörölt program belekotorászott más mappákba is. Ilyenkor törlés után azok a fájlok ott is maradnak. Emiatt néha elég komoly mennyiségű &#8220;szemetet&#8221; hagyva a mindig szűkös merevlemezen. Na ekkor [...]]]></description>
			<content:encoded><![CDATA[<p>Mai két apró, de felettébb hasznos okosságot szeretnék megosztani:</p>
<p><strong>Az első az <a href="http://www.freemacsoft.net/AppCleaner/index.php" target="_blank">AppCleaner</a> nevű kis program.</strong></p>
<p>MacOSX alatt pofonegyszerű egy alkalmazást telepíteni/leszedni. Akkor van gond, ha a letörölt program belekotorászott más mappákba is. Ilyenkor törlés után azok a fájlok ott is maradnak. Emiatt néha elég komoly mennyiségű &#8220;szemetet&#8221; hagyva a mindig szűkös merevlemezen.</p>
<p>Na ekkor jön az AppCleaner: kikeresi a letörlendő alkamazás kapcsolódó fájljait és azokat is kidobja a kukába. Viszont ezt nagyon kényelmesen csinálja, ha bekapcsolom a SmartDelete-et. Ekkor elindít egy háttérben futó kis daemon-t, ami minden törlést ellenőriz. Ha alkalmazást fedez fel, akkor feldob egy ablakot, hogy: &#8220;Helló, ezeket találtam még, töröljem?&#8221;. Szóval nem kell minden egyes alkalmazás törléskor elindítani az AppCleaner-t, hogy azon keresztül töröljem le azt a &#8211; gyakran egy darab &#8211; alkalmazást, automatikusan megoldja a dolgot. Igencsak ötletes és kényelmes. Tetszik!</p>
<p><strong>A második okosság a Screen Sharing.</strong></p>
<p>Ez már régóta benne van az OSX-ben, de Tiger alatt csak megosztani lehet a képernyőt, kliens alkalmazást nem tartalmaz a rendszer. (Külön megvehető Apple alkalmazás kell: <a href="http://www.apple.com/remotedesktop/">Apple Remote Desktop</a>. Nem is értem miért&#8230; mondjuk az is igaz, hogy mivel VNC alapú az egész, ezért egy VNC kliens is megteszi.) Leopard óta van &#8220;beépített&#8221; kliens is, mégpedig igencsak kényelmes módon, rögtön a Finder-ből elérhető. Én azt a kombinációt próbáltam, hogy a Tiger-t futtató MacBook-on bekapcsoltam az ott még Apple Remote Desktop-nak hívott Screen Sharing-et (System Preferences/Sharing) és megadtam milyen authentikációval lehessen rákapcsolódni. Ezek után Leopard alatt a Finderben a Shared listában meg is jelent a gép, kiválasztva pedig ott virított a Screen Sharing gomb is, amire bökve már bent is voltam a MacBook-omban. ÍÍÍzi!</p>
<p>(Zárójelben: A Screen Sharing kliens alkalmazás Leopard alatt külön is futtatható a /System/Library/CoreServices mappából. Ez akkor jön jól, ha a másik Mac nem látható a belső hálón, de IP alapján elérhető.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.koles.hu/2008/08/04/mac-osx-okossagok-1-resz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

