<?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>schumacherzsolt.com</title>
	<atom:link href="http://www.schumacherzsolt.com/blogom/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.schumacherzsolt.com/blogom</link>
	<description>... egy újabb WordPress honlap...</description>
	<lastBuildDate>Mon, 21 Feb 2011 21:03:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Hello Yii framework!</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=189</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=189#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:26:20 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[webfejlesztés]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[DAO]]></category>
		<category><![CDATA[database access objects]]></category>
		<category><![CDATA[gii]]></category>
		<category><![CDATA[model view controller]]></category>
		<category><![CDATA[object relational mapping]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[php framework]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[yii framework]]></category>
		<category><![CDATA[yii keretrendszer]]></category>

		<guid isPermaLink="false">http://schumacherzsolt.com/blogom/?p=189</guid>
		<description><![CDATA[Néhány hónapja úgy döntöttem, hogy közelebbi barátságot kötök a <strong>Yii</strong> frameworkkel. A yii egy nagy teljesítményű, komponens alapú php keretrendszer, melyet szeretnék most -az eddig szerzett ismereteim alapján- nagy vonalakban megismertetni az olvasóval.  <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=189">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>
Néhány hónapja úgy döntöttem, hogy közelebbi barátságot kötök a <strong>Yii</strong> frameworkkel. A yii egy nagy teljesítményű, komponens alapú php keretrendszer, melyet szeretnék most -az eddig szerzett ismereteim alapján- nagy vonalakban megismertetni az olvasóval.
</p>
<div id="attachment_306" class="wp-caption aligncenter" style="width: 489px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/02/yii_logo.jpg" alt="yii logo" title="yii_dirtree" width="225" height="49" class="size-full wp-image-306" /><p class="wp-caption-text">Yii logo</p></div>
<p>
Eddigi munkáim során nem éreztem igazán szükségét keretrendszer használatának.<br />
A kívánt funkcionalitások megvalósításához vagy száz százalékig saját kódot, vagy valamely egyszerű cms megvalósítást használtam.<br />
Tervezett, portál jellegű projektjeim megvalósítását azonban szerettem volna egy jól felszerelt, nagy teljesítményű<br />
keretrendszerre alapozni.
</p>
<p>
A 2010-es év során rengeteg jót olvastam a yii-ről.<br />
Kezdve attól, hogy a keretrendszert eleve nagy terhelésű webhelyek fejlesztésére tervezték, egészen addig, hogy több különálló technológia legjobb gyakorlatát valósítja meg.
</p>
<h4>Egy kis yii történet&#8230;</h4>
<p>
Egy meglehetősen fiatal keretrendszerrel van dolgunk, melynek első, 1.0-ás verziója 2008 decemberében látott napvilágot.
</p>
<p>
A yii atyja, <em>Qiang Xue</em> korábban a prado fejlesztőjeként dolgozott, így nem véletlen, hogy a két eszköz között rengeteg a<br />
hasonlóság. A yii a prado-tól örökölte például a moduláris alkalmazás felépítést, a komponens alapú, esemény vezérelt programozási paradigmát, az adatbázis absztrakciós rétegeket, valamint jónéhány egyéb szolgáltatást is.
</p>
<p>
Mint azt a bevezetőben már említettem a yii bátran válogatott különböző, jól bevált technológiai megoldások közül.<br />
A RubyOnRails-hez hasonlóan active record mintát használ az ORM (object relational mapping) megvalósításához. A jquery javascript könyvtár egy az egyben beépítésre került. A filtereket és a plugin architektúrát pedig a symfonytól lesték el a készítők.
</p>
<p>
Végső soron a yii személyében egy pehelysúlyú, jól dokumentált, kiválóan konfigurálható keretrendszert kapunk kezeink közé.<br />
A telepítés rövid leírása után ismerkedjünk hát meg részletesebben a yii alapú alkalmazások felépítésével!
</p>
<h4>Telepítés</h4>
<p>A yii telepítéséhez csupán a legfrissebb verziót szükséges letöltenünk és kicsomagolnunk webszerverünkre a<br />
<a href="http://www.yiiframework.com/download" onclick="target='newwindow'">http://www.yiiframework.com/download</a><br />
címről és indulhat is a móka!<br />
Új alkalmazás létrehozásához nem kell mást tennünk, mint a parancssorból futtatni a következő &#8216;yiic shell&#8217; parancsot:</p>
<p>[cc lang="css"]<br />
% YiiRoot/framework/yiic webapp webroot/testdrive<br />
[/cc]</p>
<p>
Ezzel a yii létre is hozza nekünk a <em>&#8216;testdrive&#8217;</em> névre hallgató alkalmazásunk vázát a szerverünkön.
</p>
<div id="attachment_311" class="wp-caption aligncenter" style="width: 489px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/02/yii_app.jpg" alt="yii application" title="yii_app" width="479" height="223" class="size-full wp-image-311" /><p class="wp-caption-text">Elkészült első yii alkalmazásunk</p></div>
<p>
(Ha esetleg WAMP környezet esetén hibába botlanánk a parancs futtatásakor, vegyük fel a yiic.bat és a php.exe fájlok elérési útját a környezeti változók közé).<br />
Ha ezen túljutottunk, vizsgáljuk meg az alkalmazások felépítését egy kicsit tüzetesebben!
</p>
<h4>Egy átlagos yii alkalmazás felépítése</h4>
<p>
A yii egy teljes mértékben objektum orientált keretrendszer, amely felépítésében a<br />
<a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" onclick="target='newwindow'"><strong>DRY</strong><em>(don&#8217;t repeat yourself)</em></a> fejlesztési módszert alkalmazza.
</p>
<p>
Yii alkalmazásaink a széles körben használt <a href="http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller" onclick="target='newwindow'"><strong>MVC architektúra</strong></a> alapján épülnek fel, ezzel megvalósítva az üzleti logika és a grafikus megjelenítés különválasztását.
</p>
<p>
Az MVC mellett azonban alkalmaz egy ún. <strong>front-controllert</strong> is, melyet kissé zavaró módon <em>alkalmazásnak(application)</em> hív.<br />
Ez valójában egy singleton objektum, melyet a belépési script <em>(index.php)</em> a konfigurációs fájl<br />
<em>(testdrive/protected/config/main.php)</em> beállításai alapján hoz létre és futtat a keretrendszer könyvtárában található<br />
<strong>CWebApplication</strong> osztályból.
</p>
<p>
A front-controller hívatott kezelni a felhasználói kéréseket és tovább adni azokat a megfelelő controllernek.
</p>
<p>
Külön említést érdemel, hogy a main.php <em>&#8216;components&#8217;</em> tömbjének konfigurálásával tudjuk változtatni az alkalmazásunkban használt komponensek tulajdonságainak értékeit. Ezért az application szolgál az alkalmazás-szintű konfigurációs változtatások eszközéül is.
</p>
<p>
Alapkönyvtára (base directory) a projektünk könyvtárszerkezetében található <em>&#8220;protected&#8221;</em> nevű mappa, melyen belül az érzékeny  adatok (komponensek, modellek, controllerek, view-k) könyvtárai kapnak helyet.
</p>
<div id="attachment_306" class="wp-caption aligncenter" style="width: 489px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/02/yii_dirtree1.jpg" alt="yii könyvtárszerkezet" title="yii_dirtree" width="479" height="521" class="size-full wp-image-306" /><p class="wp-caption-text">Yii project könyvtárszerkezete (az alkalmazás mappája külön kiemelve)</p></div>
<p>
A dokumentáció tartalmaz egy nagyon szemléletes ábrát az alkalmazás struktúrájáról, mely a<br />
következőképpen néz ki:
</p>
<div id="attachment_313" class="wp-caption aligncenter" style="width: 489px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/02/yii_structure.jpg" alt="yii stucture" title="yii_structure" width="479" height="300" class="size-full wp-image-313" /><p class="wp-caption-text">Yii alkalmazás struktúra</p></div>
<h4>Adatbázisok elérése</h4>
<p>
A yii több lehetőséget is biztosít adatbázisaink elérésére és a velük való munkára:
</p>
<p>
A <strong>DAO</strong> <em>(database access objects)</em> egy általános adatbázis elérési felületet nyújt (a php <em>PDO</em> kiegészítőjére alapozva), melynek segítségével egységes nyelvet teremt több relációs adatbázis használatához.<br />
Így könnyen válthatunk közöttük anélkül, hogy alkalmazásunk nagyobb átalakítására kényszerülnénk.
</p>
<p>
A DAO által támogatott RDBMS-ek a következők:
</p>
<ul>
<li> -SQLite</li>
<li> -MySQL</li>
<li> -PostgreSQL</li>
<li> -SQL Server</li>
<li> -Oracle</li>
</ul>
<p>
Lekérdezéseink megírásához a yii biztosít számunkra egy ún. query buildert, mellyel objektum orientált módon írhatunk adatbázis lekérdezéseket.
</p>
<p>
Bár a DAO nem a legegyszerűbb módja adatbázisaink elérésének, bonyolultabb adatbázisműveletek csak ezen keresztül </p>
<p>megvalósíthatók.<br />
Továbbá kihasználhatjuk a PDO nyújtotta lehetőségeket: a parameter binding-ot és a tranzakciókat (ez utóbbiról az active record használata esetén sem kell lemondanunk).
</p>
<p>
Az egyszerű CRUD műveletek programozása azonban sokkal könnyebben megvalósítható <strong>AR</strong> <em>(active record)</em> osztályokkal, melyeket a yii az <strong>ORM</strong><em> (object relational mapping)</em> megvalósítására használ, azaz minden AR osztály egy-egy adatbázis táblát képvisel, minden AR objektumpéldány a tábla egy-egy sorának, az AR osztály tulajdonságai pedig az oszlopoknak feleltethetők meg.
</p>
<p>
Természetesen a lehetőségeink így sokkal korlátozottabbak, mint DAO esetén (ezért bonyolultabb műveleteknél nem fogjuk megúszni annak használatát), azonban az AR esetén is használhatunk tranzakciókat utasítások csoportos futtatásához.
</p>
<h4>Kód generálás, scaffolding </h4>
<p>Cikkem első részének végére hagytam a varázspálca bemutatását.</p>
<p>A yii rendelkezik egy <strong>Gii</strong> névre hallgató, rendkívül egyszerűen használható, konfigurálható és bővíthető kódgeneráló platformmal.<br />
Ahhoz, hogy használhassuk a gii-t először fel kell vennünk a konfigurációs fájlban a modulok közé (csak távolítsuk el az előtte<br />
található kommenteket).</p>
<p>[cc lang="php"]</p>
<p>return array(<br />
    &#8230;&#8230;<br />
    &#8216;modules&#8217;=>array(<br />
        &#8216;gii&#8217;=>array(<br />
            &#8216;class&#8217;=>&#8217;system.gii.GiiModule&#8217;,<br />
            &#8216;password&#8217;=>&#8217;pick up a password here&#8217;,<br />
            // &#8216;ipFilters&#8217;=>array(&#8230;a list of IPs&#8230;),<br />
            // &#8216;newFileMode&#8217;=>0666,<br />
            // &#8216;newDirMode&#8217;=>0777,<br />
        ),<br />
    ),<br />
);<br />
[/cc]</p>
<p>A jelszó beállítása után a <br /> <em>http://localhost/projekt_mappa/index.php?r=gii</em> url-en tudunk belépni a felületre.<br />
Innen már néhány mező kitöltésével egyszerűen létrehozhatunk modelleket, controllereket, modulokat, view-kat (form), illetve CRUD controllereket is.</p>
<div id="attachment_315" class="wp-caption aligncenter" style="width: 489px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/02/yii_gii.jpg" alt="gii" title="yii_gii" width="479" height="369" class="size-full wp-image-315" /><p class="wp-caption-text">Egy model létrehozása a gii használatával</p></div>
<p>Egy model létrehozásához például elég csak a <em>Model generator</em> oldal &#8220;table name&#8221; input mezőjébe beírni a használt adatbázis nevét és a gii legenerálja nekünk az azonos nevű model osztályt a protected/models mappába.</p>
<h4>Befejezésül</h4>
<p>
Írásom első részében igyekeztem nagy vonalakban bamutatni a yii php keretrendszer alapvető szerkezeti felépítését, az általa használt technikákat, kapcsolatát az adatbázisokkal, valamint a gii által nyújtott kódgeneráló szolgáltatásait.
</p>
<p>
A cikk következő részében bemutatásra kerülnek a yii további szolgáltatásai, mint a <em>TDD</em> támogatása, a többrétegű caching,<br />
az <em>i18n (internationalization)</em> és az <em>l10n (localization)</em>, sminkek témák és egyéb finomságok, természetesen a teljesség igénye nélkül.
</p>
<p>
Azok számára, akiknek sikerült felkeltenem az érdeklődését a keretrendszer iránt íme néhány hasznos link:
</p>
<ul>
<li><a href="http://yiiframework.com" onclick="target='newwindow'">yiiframework.com</a> &#8211; hivatalos weboldal</li>
<li><a href="http://yiihun.blogspot.com" onclick="target='newwindow'">yiihun.blogspot.com</a> &#8211; magyar nyelvű yii blog</li>
<li><a href="http://yiiradiio.mehesz.net/" onclick="target='newwindow'">yiiradiio.mehesz.net</a> &#8211; a yii radiio weboldala</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=189</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS sprite-ok és használatuk a webszerkesztési folyamat során</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=181</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=181#comments</comments>
		<pubDate>Tue, 18 Jan 2011 21:48:23 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[webfejlesztés]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[sitebuild]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[teljesítményfokozás]]></category>

		<guid isPermaLink="false">http://schumacherzsolt.com/blogom/?p=181</guid>
		<description><![CDATA[Webhelyünk letöltési sebességének növelése még napjaink szélessávú internetkapcsolatai mellett is fontos szempont. Ebben 
lehetnek segítségünkre a sprite-ok (kombinált képek), melyek használata egyszerű és hatékony módja weboldalunk 
teljesítményfokozásának. <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=181">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>Webhelyünk letöltési sebességének növelése még napjaink szélessávú internetkapcsolatai mellett is fontos szempont. Ebben<br />
lehetnek segítségünkre a sprite-ok (kombinált képek), melyek használata egyszerű és hatékony módja weboldalunk<br />
teljesítményfokozásának.</p>
<h4>Mi is az a sprite?</h4>
<p>A sprite-ok gyakorlatilag olyan képfájlok, amelyek egységbe olvasztva tartalmazzák oldalunk különböző grafikai elemeit.<br />
Célszerű az állandó, vagy gyakran visszatérő elemeket logót, menü hátteret, vagy ikonsort (akár &#8220;hover&#8221;-állapottal együtt)<br />
belevenni.</p>
<div id="attachment_259" class="wp-caption aligncenter" style="width: 279px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/01/sprite2.jpg" alt="schumacherzsolt.com - sprite" title="schumacherzsolt.com - sprite" width="269" height="396" class="size-full wp-image-259" /><p class="wp-caption-text">Saját oldalam sprite képe.</p></div>
<p>Sokan azt gondolhatják, hogy nem is kell többé design-tervet szeletelni.<br />
Természetesen ez nem így van! Sprite-jaink méretét is ésszerű keretek közt kell tartanunk. Nem járható út, hogy<br />
weboldalunk egész grafikáját egy képként kezeljük.</p>
<h4>Miért érdemes spriteokat használni?</h4>
<p>A régi időkben bevett gyakorlat volt a weboldal design-ját minnél apróbb képekre szétvagdosni, ezzel biztosítva a gyors<br />
oldalbetöltés illúzióját a megjelenítéskor.<br />
A fent említett módszer valójában a teljes letöltési idő nagymértékű növekedését eredményezte, a következő okokból<br />
kifolyólag:</p>
<p>- A weboldal teljesítményét nagyban befolyásolja a klienstől a szerver felé intézett http kérések száma. Ebben az esetben<br />
minden egyes kép letöltése egy-egy újabb kérés elküldésével járt. Napjaink böngészői általában 4-6 párhuzamos http<br />
kapcsolatot létesíthetnek egyszerre (a régebbiek csak kettőt tudtak), ez azt jelenti, hogy tíz kép esetén az első 6/4/2 töltődik<br />
le (böngészőtől függően), majd ezek után következhet csak a képek fennmaradó része. Az így összeadódó válaszidők<br />
nagymértékben növelik az oldal letöltési idejét.</p>
<p>- A sprite-ok mérete kisebb, mint a sok kisebb kép összesített mérete. Ez annak köszönhető, hogy csak egyszer kell<br />
elküldeni, bizonyos képenként ismétlődő adatokat (színtáblákat, formázási információkat).</p>
<h4>Egy egyszerű példa:</h4>
<p>A sprite-ok hatékonyságát legegyszerűbb egy példán keresztül bemutatni. Az alábbiakban egy ikonsort állítunk be egy vízszintes lista elemeinek háttereként. Ez meglehetősen életszerűtlen igaz, de a célnak megfelel.</p>
<h5>Egyszerű ikonsor külön-külön háttérképekkel:</h5>
<p>(a kép csupán szemléltetés céljából szerepel, nem a példa valódi megvalósítása)</p>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/01/ikonsor.jpg" alt="egyszerű ikonsor" title="ikonsor" width="216" height="40" class="aligncenter size-full wp-image-271" /></p>
<p><strong>HTTP kérések száma:</strong> 5</p>
<p><strong>Képek összesített mérete:</strong> 9,58 KB</p>
<p><strong>CSS kód:</strong></p>
<p>[cc lang="css"]<br />
#icon_list li { float: left; width: 40px; height: 40px;}</p>
<p>#icon_one { background-image: url(&#8220;ikonsor1.jpg&#8221;); }<br />
#icon_two { background-image: url(&#8220;ikonsor2.jpg&#8221;); }<br />
#icon_three { background-image: url(&#8220;ikonsor3.jpg&#8221;); }<br />
#icon_four { background-image: url(&#8220;ikonsor4.jpg&#8221;); }<br />
#icon_five { background-image: url(&#8220;ikonsor5.jpg&#8221;); }<br />
[/cc]</p>
<h5>Egyszerű ikonsor sprite használatával:</h5>
<p>Ebben az esetben elegendő csak egyetlen háttérképet beállítani és azt a background-position tulajdonság segítségével pozícionálni.</p>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/01/ikonsor.jpg" alt="egyszerű ikonsor" title="ikonsor" width="216" height="40" class="aligncenter size-full wp-image-271" /></p>
<p><strong>HTTP kérések száma:</strong> 1</p>
<p><strong>Kép mérete:</strong> 7,48 KB</p>
<p><strong>CSS kód:</strong></p>
<p>[cc lang="css"]<br />
#icon_list li { background-image: url(&#8220;ikonsor.jpg&#8221;); float: left ; width: 40px; height: 40px; }</p>
<p>#icon_one { background-position: 0px 0px; }<br />
#icon_two { background-position: -40px 0px; }<br />
#icon_three { background-position: -80px 0px; }<br />
#icon_four { background-position: -120px 0px; }<br />
#icon_five { background-position: -160px 0px; }<br />
[/cc]</p>
<p>
Példánkban a http lekérések száma 4-gyel, a kép(ek) mérete pedig 2KB-tal csökkent a sprite használatával (és még nem is állítottam be hover állapotot, ami plusz 5 lekérés lett volna az első példában).</p>
<p>Láthatjuk, hogy már egy ilyen egyszerű esetben is milyen számottevő a javulás mértéke, így azt is el tudjuk képzelni mekkora lehet a teljesítménynövekedés egy teljes weboldal esetén.<br />
Érdemes lehet legalább saját weboldalunkon kipróbálni, nem fogunk csalódni!
</p>
<h4>Mások is használják!</h4>
<p>Szinte minden, nagy terhelésnek kitett weboldal esetén találkozunk spriteokkal, íme néhány példa:</p>
<div id="attachment_263" class="wp-caption aligncenter" style="width: 490px"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2011/01/big_css_sprites.jpg" alt="Css sprite-ok a nagy óriások oldalain" title="Css sprite-ok a nagy óriások oldalain" width="480" height="400" class="size-full wp-image-263" /><p class="wp-caption-text">Css sprite-ok a nagy óriások oldalain</p></div>
<h4>Változások a fejlesztés menetében</h4>
<p>Használatuk természetesen bizonyos többletmunkával jár és kisebb-nagyobb változtatásokat követel jól megszokott fejlesztési módszerünkön is.</p>
<p>Egyesek azt tanácsolják, hogy először építsük fel az oldalunkat hagyományos módon, majd valamilyen külső eszközzel (mint<br />
például a SpriteMe -spriteme.org- ) készítsünk sprite-ot az arra alkalmas képekből és ezek után dolgozzuk át a teljes oldalt.</p>
<p>Mások a sprite alapú sitebuildet ajánlják, már a fejlesztés kezdetétől.</p>
<p>Munkáim során volt &#8220;szerencsém&#8221; mindkét módszert kipróbálni és jómagam is a második megoldás mellett teszem le a<br />
voksomat. Egy kis tervezéssel sok többletmunkától kímélhetjük meg magunkat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=181</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kiberháború &#8211; Mit használnak a WikiLeaks &#8220;katonái&#8221;?</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=175</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=175#comments</comments>
		<pubDate>Fri, 10 Dec 2010 19:21:31 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[személyes]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[JS LOIC]]></category>
		<category><![CDATA[Julian Assange]]></category>
		<category><![CDATA[kiberháború]]></category>
		<category><![CDATA[wikileaks]]></category>

		<guid isPermaLink="false">http://schumacherzsolt.com/blogom/?p=175</guid>
		<description><![CDATA[Nem szeretnék politikailag állást foglalni a <em>wikileaks</em> ügyben, az viszont tény, hogy a botrány kirobbanása óta kiberháború dúl Assange szimpatizánsai és az amerikai kormányzat támogatói között.<br />
A szerepek tényleg hollywoodot meghazudtoló módon körvonalazódnak... <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=175">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>
Nem szeretnék politikailag állást foglalni a <em>wikileaks</em> ügyben, az viszont tény, hogy a botrány kirobbanása óta kiberháború dúl Assange szimpatizánsai és az amerikai kormányzat támogatói között.</p>
<p>Az elmúlt napokban kibertámadások következtében sorra omlottak össze olyan nagy cégek szerverei mint a PostFinance, a PayPal, a Mastercard, vagy a Visa (utóbbinak magam is szemtanúja voltam tegnap este), de hasonló sorsra jutott Sarah Palin republikánus politikusnő és az ügy számos egyéb érintettjének weboldala is.
</p>
<p>
Érdekes ügy ez, melynek forgatókönyve már-már egy sci-fiére kezd emlékeztetni. A &#8220;miértek&#8221; meglehetősen tisztázatlanok, a &#8220;hogyan&#8221;-ok viszont annál látványosabbak. A szerepek tényleg hollywoodot meghazudtoló módon körvonalazódnak&#8230;
</p>
<h4>A Gerillák:</h4>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/12/wikileaks1.jpg" alt="wikileaks" title="wikileaks" width="150" height="150" class="alignleft size-full wp-image-241" /></p>
<p>Történetünk lázadói a magukat rendkívül fantáziadús módon <em>Anonymousnak</em> nevező csoport, amely laza kötelékekből áll és folyamatosan, szabadon szerveződik újra és újra.</p>
<p>Hadműveleteiket az <em>&#8220;Operation payback&#8221;</em> fedőnevet viselő akciósorozat égisze alatt hajtják végre.</p>
<p>A vicc az egészben annyi, hogy minden hírcsatornán félelmetes hacker-ként aposztrofálják őket (ezt a valódi hackerek rendkívüli módon sérelmezik is), pedig ahhoz amit csinálnak semmilyen magas szintű informatikai képzettségre, extra számítógépes ismeretre nincs szükség.<br />
<br /> Pont ez jelenti a mozgalom erejét, hogy bárki, akinek kedve szottyan beállhat néhány órára online Che Guevarásat játszani, de erről még majd később&#8230; <br />Most nézzük a szemben álló felet!</p>
<h4>A Hatalom:</h4>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/12/wikileaks_assange1.jpg" alt="Assange" title="wikileaks_assange" width="150" height="145" class="alignleft size-full wp-image-246" /></p>
<p>Mint az a híradásokból is kiderül, a hatalom legfőbb megtestesítője<br />
- ez esetben is &#8211; maga az Egyesült Államok kormánya. A harcszíntéren azonban itt sem ők vannak leginkább a porondon, hanem a hozzájuk lojális &#8220;szövetséges&#8221; multicégek.<br /> <br />
Elsőként itt van például az árulónak kikiáltott amazon.com, amely kormányzati intésre &#8220;kihúzta&#8221; a szerverparkot a wikileaks alól, valamint az ismert kártyatársaságok, melyek megtagadták az oldalnak szánt adományok átutalását. Ne felejtsük ki a sorból a szervezet számláját befagyasztó svájci PostFinance bankot sem!
</p>
<p>
Természetesen az elsőre hezitáló, a szólásszabadság zászlaját lobogtató közösségi oldalak is kihátráltak, engedve a felülről érkező erősödő nyomásnak.
</p>
<h4>A Harcmodor:</h4>
<p>Mint már említettem az Anonymous sikere abban áll, hogy egy rendkívül primitív támadásfajtát valósítottak meg, meglehetősen &#8220;felhasználóbarát&#8221; módon.
</p>
<p>
A technika neve <strong>DDoS (Distributed Denial of Service)</strong>, azaz elosztott szolgáltatás-megtagadás, amely az ún. <em>flooding (elárasztás)</em> típusú támadások közé tartozik.<br />
Röviden annyiról szól, hogy távoli gépekről egy időben kezdik tömeges HTTP kérésekkel, vagy TCP/UDP csomagok küldésével túlterhelni a célpont szervereit, így azok megfelelően nagy támadás esetén megtagadják a szolgáltatást, magyarul összeomlanak.
</p>
<p>A <em>DDoS</em> ilyen formában történő alkalmazása ugyanakkor az egyik legkevésbé kártékony támadástípus. Nem irányul közvetlenül információszerzésre, vagy a pénzügyi szolgáltatások akadályozására, csupán a weboldalak ellen használják.<br />
Így megnyugodhatnak azok is, akik banki átutalásaik biztonságáért kezdenének aggódni!
</p>
<p>Ne higgyük azonban, hogy csak az Anonymous él a fent említett eszközökkel!  Több hírforrás beszámolói szerint az amerikai kormányzat ugyanilyen módszerekkel blokkolta a wikileaks által nyilvánosságra hozott adatok hozzáférhetőségét az előző hetekben. Ezt persze tovább erősítette az is, hogy a botrány hatására rengetegen akarták letölteni a dokumentumokat.<br />
Magam is megpróbáltam, de a letöltési linkre kattintva a rendszer nálam is túlterheltségre hivatkozott.</p>
<h4>A Csodafegyver:</h4>
<p>Végére hagytam magát a &#8220;csodafegyvert&#8221;, amely elengedhetetlen a támadások végrahajtásához.</p>
<p>Az eszköz a LOIC <em>(Low Orbit Ion Cannon &#8211; Alacsony Röppályás Ion Ágyú) </em>névre hallgat<br /> (ez aztán tényleg leveri a biztosítékot minden sci-fi rajongónál) és hivatalosan hálózatok terhelés-tesztelésére fejlesztették ki.</p>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/12/wikileaks_loic.jpg" alt="JS LOIC" title="wikileaks_loic" width="480" height="224" class="aligncenter size-full wp-image-248" /></p>
<p>
Forráskódja C# nyelven íródott és bárki számára nyilvánosan elérhető, letölthető például a Github, vagy a Sourceforge kódmegosztó oldalairól is.<br />
A telepítést követően megadhatjuk a kívánt terhelés típusát, intenzitását és természetesen a &#8220;tesztelni&#8221; kívánt webhely URL-jét.
</p>
<p>
Az igazán ördögi és már-már ijesztő megvalósítás azonban a <strong>JS LOIC</strong> nevű változat (nevében a JS a JavaScriptet jelenti).<br />
 Ez gyakorlatilag egy webalkalmazás, amely mindenféle telepítés nélkül, online elérhető és szinte egyetlen kattintással aktiválható. <br />
Egy kisiskolás is könnyű szerrel tudja kezelni,<br />
azonban <strong>használatára senkit sem biztatnék!</strong>
</p>
<h4>A következő epizódból&#8230;</h4>
<p>A cikk írása során folyamatosan érkeznek hírolvasómra azok az üzenetek, melyek egy OpenLeaks nevű ellenoldal tervezett elindításáról számolnak be.<br />
 Az oldal folytatni kívánja a wikileaks &#8220;hagyományokat&#8221;, viszont<br />
elmondásuk szerint, az eredetileg tervezett, felelős formában.<br />
A website alapítói Assange volt munkatársai, akik úgy gondolták, hogy vezérük vezetési stílusa nem szolgálja a webhely eredeti céljait.
</p>
<p>Tudatos ellenintézkedésről van szó, vagy csak meg szeretnék lovagolni a témát övező felhajtást? &#8211; mindenki döntse el maga.<br />
Én mindenesetre kíváncsian várom a fejleményeket!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RockMelt beta &#8211; kipróbáltam a facebook böngészőjét</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=163</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=163#comments</comments>
		<pubDate>Sun, 28 Nov 2010 06:48:49 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[webfejlesztés]]></category>
		<category><![CDATA[böngésző]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium 7]]></category>
		<category><![CDATA[RockMelt]]></category>

		<guid isPermaLink="false">http://schumacherzsolt.com/blogom/?p=163</guid>
		<description><![CDATA[Két hét után végre megkaptam a linket a RockMelt letölthető bétájához, melyet azonnal ki is próbáltam. Finoman fogalmazva vegyes érzelmeket keltett bennem. <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=163">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>Két hét után végre megkaptam a linket a RockMelt letölthető bétájához, melyet azonnal ki is próbáltam. Finoman fogalmazva vegyes érzelmeket keltett bennem.</p>
<h4>Első benyomás&#8230;</h4>
<p>Első pillantásra.., várjunk csak!<br />
 Először még be kell jelentkeznünk a facebook fiókunkba, hogy elinduljon!<br />
Ha ezzel megvagyunk, első pillantásra olyan, mintha egy felturbózott google Chrome-ot kaptunk volna, pluginokkal telepakolva a képernyő két oldalán.</p>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/rockmelt1.jpg" alt="RockMelt böngésző ablak" title="RockMelt böngésző ablak" width="479" height="344" class="size-full wp-image-200" /></p>
<p> Nem véletlenül, a RockMelt ugyanis a google Chromium 7-es böngészőprojektjére épül. Kíváncsi vagyok, hogy a külcsínyen változtatnak-e a végleges változatban, vagy marad a chrome életérzés.<br />
Azért bevallom, nekem ez az egész megjelenés így összességében kissé olcsónak hatott.
</p>
<h4>Mi lehet a cél?</h4>
<p>Az emberben akaratlanul is felmerül a kérdés, hogy mennyire gondolják komolyan ezt a dolgot. Valóban részt kívánnak majd venni a böngészők között dúló, amúgy is kiélezett harcban, vagy &#8220;csupán&#8221; azokat fanatikus felhasználókat kívánják megszólítani, akik a neten töltött idejük 90%-ában a facebookon lógnak.<br />
Esetleg még mindig az oldalt övező (már-már csillapodni látszó) felhajtásban bíznak, &#8220;félmilliárd felhasználó nem tévedhet&#8221; alapon.</p>
<h4>Instant facebook?</h4>
<p>Mint már említettem a RockMelt beépítve megvalósítja az anyaoldal (érdekes ezt így leírni) legfőbb, nélkülözhetetlen funkcióit. A baj csak az, hogy egyenlőre elég döcögősen.
<p/>
<p><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/rockmelt_details1.jpg" alt="RockMelt részletek" title="RockMelt részletek" width="490" height="344" class="size-full wp-image-202" /></p>
<p>A baloldali oldalsávon sorakoznak bejelentkezett ismerőseink profilképei, majd alattuk az offline lévők abc sorrendben.<br />
Legfelül található saját képünk, melyre kattintva a chat-ablakot hívhatjuk elő.<br />
Jobboldalon pedig az üzenőfal, profil oldalunk és egy külsős funkció a twitter csatorna érhető el. Valamint bővíthető egyéb hírcsatornákkal is, de erről még majd később.<br />
A harmadik fontos tartozék az állapotsor és a meglehetősen nagyra sikerült keresősáv között elhelyezkedő megosztás gomb, melynek segítségével egyetlen gombnyomással közzétehetjük az éppen böngészett oldal url-jét üzenőfalunkon.
</p>
<p>
Mindez szép és jó, de a megvalósítás azért kívánni valókat hagy maga után. Legfőbbképp a szinkron hiányzik a böngésző és maga a facebook között.<br />
Meglehetősen nagy csúszásban van az oldal üzenőfalához képest a RockMelt üzenőfal csatornája (amely természetesen minden &#8220;fontos&#8221; történésről beszámol nekünk).<br />
A kijelentkezés is problémás, külön-külön valósul meg az oldalon és a böngészőben. Ez még nem is lenne annyira zavaró, de ha a böngészőn belül váltunk offline-ra, akkor bezárja az összes megnyitott oldalunkat.
</p>
<p>
Az egyik hírportál leírásában olvastam, hogy a RockMelt szakít a Chrome által használt &#8220;egy ablak, két funkció rendszerrel&#8221;, vagyis nem az állapotsort használja beépített keresősávként. Tapasztalataim szerint ez nem teljesen így van.<br />
Bár az állapotsorba történő begépelésnél az autosuggest először az ismerőseink között keres (kb. az első két betűig), az enter lenyomása után, amennyiben nem létező url-t adtunk meg, automatikusan a google találati oldalára repít minket. Ugyanez történik a keresősáv használatakor is. Utóbbinál azonban jópofa megoldás, hogy a keresési eredmények egy keskeny felugró ablakban jelennek meg és nem nyit automatikusan új lapot nekik
</p>
<p>
Biztos lehetne még érdekességeket felfedezni a RockMelt közösségi funkcióinak működésében, de ezt meghagyom azoknak, akik nálam sokkal otthonosabban mozognak a fent említett oldalon.
</p>
<h4>Like-ok és dislike-ok:</h4>
<p>Természetesen a böngésző, tartalmaz apró újításokat a facebook integráción kívül is. Ezek között léteznek szerethetőbb és kissé zavaróbb megvalósítások is.
<p/>
<p>Jó ötletnek tartom például a jobb oldali sáv kihasználását rss hírcsatornák számára. Különösen tetszik, hogy automatikusan felajánlja a könyvjelzőinkben szereplő oldalak csatornáit megnyitásra.<br />
Az oldalsávok eltüntetésének módját azonban tehették volna  egyértelműbbé is, mivel 1024&#215;768-as felbontás esetén (az oldalsávokkal csökkentett szélesség miatt) gyakran vízszintesen is kell görgetnünk.<br />
Sz.v.sz. használhattak volna valamilyen automatikus megjelenés funkciót is alapértelmezettként. Így azonban marad a főmenü, vagy a jobbklikk menü a kikapcsoláshoz.
</p>
<p>Valamint meglehetősen idegesítő, hogy minden oldal megnyitásakor felugrik a nyelvválasztó ablak. Igaz ez a &#8220;never translate hungarian&#8221; gombbal kikapcsolható, így nem is sorolnám a tényleges negatívumok közé. Másik apróság, amit már a Chrome esetében sem értettem, hogy miért nem lehet a könyvjelző eszköztáron fordított időrendi sorrendben feltüntetni a könyvjelzőket? Én így gondolnám logikusabbnak.
</p>
<h4>Teljesítmény.</h4>
<p>Nem vetettem alá a RockMelt-et tüzetesebb tesztelésnek, csak néhány sunspider tesztet futtattam rajta, majd ugyanezt elvégeztem egy mezei google chrome-on is.<br />
A tesztek eredménye nem volt túl  meglepő. Egyszer egyik, másszor a másik teljesített hajszálnyival jobban, de nagyságrendileg hasonló időket produkáltak.</p>
<h4>Összegzés</h4>
<p>Összességében elmondhatom, hogy kissé többet vártam a facebook böngészőjétől.<br />
Különösen az alapján, hogy a projekt mögött a legendás mosaic és netscape böngészők atyja Marc Andreessen áll.<br />
 Bevallom naiv módon valamilyen kreatív megjelenésben, kezelőfelület megvalósításban reménykedtem, így kissé csalódott vagyok a látottak alapján.<br />
Ugyanakkor, még ha személyesen nem is éreztem késztetést, hogy alapértelmezett böngészőnek állítsam be, biztos vagyok benne, hogy amennyiben kijavítják az apró buktatókat és sikerül tényleg szinkronizálni a site-tal, akkor a facebook célközönségének nagy részét<br />
tehetik elkötelezett felhasználóikká.
</p>
<p>Végső soron pedig ne felejtsük el, hogy egyenlőre csak egy bétával van dolgunk, így még rengeteg dolog megváltozhat a végleges kiadásig. Mindenesetre kíváncsian várom a folyatatást!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=163</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verziókezelés és a Git</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=54</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=54#comments</comments>
		<pubDate>Fri, 05 Nov 2010 20:51:38 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[webfejlesztés]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[VCS]]></category>
		<category><![CDATA[verziókezelés]]></category>

		<guid isPermaLink="false">http://localhost/sajatoldal2010/blogom/?p=54</guid>
		<description><![CDATA[Nem is olyan rég arra az elhatározásra jutottam, hogy szeretném meglévő kódjaimat és projektjeimet olyan formában tárolni, hogy azok könnyen karbantarthatók, újrahasznosíthatók és továbbfejleszthetők legyenek.
Nyilvánvalóvá vált, hogy itt az ideje közelebbről megismerkednem valamelyik verziókezelő rendszerrel. <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=54">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>Nem is olyan rég arra az elhatározásra jutottam, hogy szeretném meglévő kódjaimat és projektjeimet olyan formában tárolni, hogy azok könnyen karbantarthatók, újrahasznosíthatók és továbbfejleszthetők legyenek.<br />
Nyilvánvalóvá vált, itt az ideje közelebbről megismerkedni valamelyik verziókezelő rendszerrel.</p>
<p>Korábban már többször olvastam különböző írásokat a verziókezelésről (sőt, próbálkoztam is a Tortoise SVN-el), de úgy gondoltam, hogy erre csak azoknak a fejlesztőknek van szükségük akik nagy projekteken, vagy komplett szoftverek fejlesztésén munkálkodnak, általában egy fejlesztői csapat tagjaként. Tévedtem.<br />
Visszatekintve látom, hogy mennyi fejtöréstől és másolgatástól kímélhettem volna meg magam, ha már a kezdetektől fogva egy ilyen rendszert használok.</p>
<p>A verziókövetésre rengeteg kiváló megoldás létezik. Az én választásom a Git-re esett, melyet a későbbiekben egy cikksorozat formájában bővebben is bemutatni szándékozom.<br />
Jelen írásomat mintegy kedvcsinálóul szánom azoknak, akik szeretnék könnyen és átláthatóan kezelni kódállományukat és még nem kötöttek közelebbi barátságot egyik VCS-sel sem.</p>
<h4>Mi is az a verziókezelés?</h4>
<p>A név magáért beszél. A wikipédia leírása szerint:<br />
<em>&#8220;Verziókezelés alatt több verzióval rendelkező adatok kezelését értjük.&#8221;</em><br />
A cél gyakorlatilag az, hogy lehetővé tegyük a programunk korábbi verzióihoz való visszatérést és elejét vegyük a csapatban történő fejlesztés során adódó fejetlenségeknek.
</p>
<p>A legegyszerűbb és egyben legkevésbé hatékony verziókezelési technika (melyet bevallom sokáig én is használtam) az, ha kódjainkat minden nagyobb változtatás előtt egy-egy külön mappába mentjük és ezeket próbáljuk megfelelően megkülönböztetni.</p>
<p>
Hamar rá kellett döbbennem, hogy ez az út csak addig járható amíg csupán egy-két dédelgetett projektünk van.<br />
Idővel, nehézkessé vált megjegyezni a tartalmi különbségeket az egyes verziók között, nem is beszélve a hatalmas tárterület használatról.
</p>
<p>Természetesen a verziókezelő rendszerek többek közt a fent említett problémákat hivatottak orvosolni.</p>
<h4>A koncepció dióhéjban:</h4>
<p>Napjaink verziókövető szoftverei különböző megvalósításokat alkalmaznak az verzió-előzmények hatékony tárolása és a munkafolyamatok zökkenőmentességének biztosítása érdekében.<br />
Az alapkoncepció viszont mindegyiknél hasonló. Az alábbiakban a verziókezeléssel kapcsolatos alapfogalmakat tekintem át:
</p>
<h5>A tároló (repository):</h5>
<p>A verziókezelők projektünk aktuális verzióját és annak előzményeit külön erre a célra használt tárolókban (repository) raktározzák el.</p>
<h5>A munkamásolat (working copy):</h5>
<p>A kód egy részének (általában egy adott) példánya, amelyen a fejlesztő éppen dolgozik a saját gépén.<br />
A munka befejeztével ennek állapota kommitok formájában tárolásra kerül a repositoryban.   </p>
<h5>Kommitok:</h5>
<p>A kódunkon történt legfrissebb változtatásokat úgynevezett <strong>kommitok</strong> formájában érvényesíthetjük a tárolókon belül, melyek mintegy pillanatképként tartalmazzák azokat, illetve projektünk aktuális állapotát.</p>
<p>Ha zsákutcába futnánk fejlesztés közben, akkor ezek alapján kereshetjük vissza kódunk korábbi verzióját. Ezért célszerű minden nagyobb módosítást követően kommitolnunk.  </p>
<h5>A fejlesztési történet (development history):</h5>
<p>Az adott projekt kommitjainak összességét értjük alatta, az első (initial commit) kommittól kezdve az utolsóig (head commit).</p>
<h5>Checkout:</h5>
<p>A módosítani kívánt fájlok lekérése a repositoryból ún. checkoutok formájában megy végbe. Ezekre még a későbbiekben visszatérek.</p>
<h5>Pushing:</h5>
<p>Adatok feltöltése a központi repository-ba.</p>
<h5>Fetching:</h5>
<p>Adatok lekérése a központi repository-ból.</p>
<h5>Fejlesztési ágak (branch-ek):</h5>
<p>Lehetőségünk van ún. fejlesztési ágak<br />
létrehozására is, ha projektünket esetleg a tervezettől eltérő irányban is szeretnénk továbbfejleszteni. Valamint az eredeti verziót érintetlenül hagyva tudunk kísérletezni.</p>
<h5>Összefésülés (merging):</h5>
<p>A fejlesztési ágak létrehozása mellett lehetőségünk van ezek egyesítésére is. Ennek folyamatát összefésülésnek <em>(angolul: merging)</em>nevezik.</p>
<h5>Rendszerek közti eltérések:</h5>
<p>Természetesen az egyes rendszerek más-más módon valósítják meg a fent említett komponenseket és eljárásokat.<br />
Léteznek központosított és elosztott verziókövető rendszerek. Az alábbiakban megkísérlem nagy vonalakban bemutatni ezek működésbeli sajátosságait.</p>
<h4>Központosított verziókövető rendszerek:</h4>
<p>A centralizált rendszerek, mint pédául a Subversion egy központi tárolóban (repository), valamilyen adatbázis segítségével (a Subversion esetében ez BerkeleyDB vagy FSFS) tárolják valamennyi kódunk történetét.</p>
<p>A tároló lehet egy távoli szerveren, vagy akár a saját gépünkön is.<br />
Amennyiben csapatban fejlesztünk az első  eset  gyakoribb.</p>
<p><a href="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/svn_workflow1.jpg"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/svn_workflow1.jpg" alt="központosított workflow" title="központosított workflow" width="490" height="300" class="alignnone size-full wp-image-156" /></a></p>
<p>A központosított rendszerekre jellemző munkafolyamat, hogy a teljes kódállomány csak a repositoryban található  meg<br />
(centralizált workflow). A fejlesztők innen kérik le (checkout) a módosítandó fájlokat. Majd a munka végeztével összefésülik a munkapéldányt a tárolón belül találhatóval. Ez az ún. lemásolás – módosítás – összefésülés ciklus.<br />
A subversion leellenőrzi, hogy nem áll-e fent konfliktusveszély a pusholni kívánt munkapéldány és a tárolóban található adatok között. Azaz, hogy az adott fájlt nem módosította-e valaki más, miután mi lekértük. Ebben az esetben ugyanis felülírnánk az ő módosításait a sajátunkkal. Ilyen helyzetekben jelentkezik a verziókezelők csoportmunkát koordináló szerepe.
</p>
<p>Sajnos tárterület használat szempontjából ez a módszer sem túl hatékony (egyes mérések szerint 30x több merevlemezt használ a projektek tárolására mint a Git), ugyanakkor megvan az az előnye, hogy részleges lekéréseket (ún. partial checkout) folytathatunk. Azaz ha például csak egyetlen fájlon kívánunk módosításokat végezni, nem kell letöltenünk az egész repository-t, elég csak az aktuális fájlt tartalmazó almappát. Itt gyorsan szeretném azt is megjegyezni, hogy egy teljes Git repository mérete gyakran kisebb mint egyetlen svn checkout-é.</p>
<h4>Elosztott verziókövető rendszerek:</h4>
<p>A fent említett rendszerek nagyban különböznek központosított társaiktól.
<p>Az elosztott szerkezet alapján itt minden fejlesztő rendelkezik a repository egy-egy teljes másolatával, amely a munkapéldánnyal azonos mappában helyezkedik el. Ez jelenti ezen rendszerek igazi erejét. </p>
<p><a href="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/elosztott_workflow.jpg"><img src="http://schumacherzsolt.com/blogom/wp-content/uploads/2010/11/elosztott_workflow.jpg" alt="elosztott workflow" title="elosztott_workflow" width="480" height="300" class="alignnone size-full wp-image-158" /></a></p>
<p>Nagyban növeli a műveletek végrehajtásának sebességét, mivel szinte mindegyik (a push és a fetch kivételével) csak a lokális repositoryval kell, hogy kommunikáljon.<br />
Valamint megszűnteti a központi meghibásodás veszélyét, mivel a központi repository meghibásodás esetén bármely lokális munkapéldánnyal egyszerűen pótolható.
</p>
<p>
Elosztott verziókezelő használatával a munkafolyamatok felépítése is számos formát ölthet.<br />
A központosított munkafolyamaton kívül felállíthatunk fejlesztői hierarchiákat is a csapaton belül.<br />
Ilyen például az integrációs menedzser workflow, ahol egyetlen fejlesztőnek (ő lesz az int. menedzser) van csak joga a központi repository-ba kommitolni. A többiek mind a saját különálló tárolójukba pusholnak, innen húzza át az integrációs menedzser a kommitjaikat a központi repóba.
</p>
<h4>Egy kis Git történet&#8230;</h4>
<p>A Git Linus Torvalds, a Linux atyjának nevéhez fűződik, melyet eredetileg a linux kernel verzióinak kezeléséhez fejlesztettek ki.</p>
<p>Eredetileg BitKeepert használtak erre a célra, de mivel az időközben fizetőssé vált Linus egyéb, ingyenes alternatívák után kezdett kutatni. Azonban az akkori megoldások közül egyik sem felelt meg az elvárásainak, így saját verziókezelő fejlesztésébe fogott.</p>
<p>Így született meg a Git, ami gyors, elosztott rendszerben történő verziókövetést tett lehetővé, különös figyelmet fordítva a nem lineáris fejlesztés (branchek) támogatására.</p>
<h4>Miért pont a Git??</h4>
<p>Hazudnék, ha azt állítanám, hogy választásom során nem játszott szerepet az a nemzetközi hájp, ami a Git körül kialakult az utóbbi időkben (azt hiszem ez nem csak nekem tűnt fel). Nem szoktam ész nélkül &#8220;divatot&#8221; követni, valamint nem szeretnék ítélkezni egyik vagy másik rendszer felett sem (már csak azért sem mert nem rendelkezem igazán releváns tapasztalattal használatuk során), egyszerűen csak úgy éreztem, hogy tényleg a Git a legmegfelelőbb választás számomra.</p>
<p>Emellett rengeteg kiváló tulajdonsága van, nem csak a központosított verziókezelőkkel , hanem elosztott társaival szemben is.
</p>
<p>
A cikksorozat következő részében ezen tulajdonságokról fogok bővebben szót ejteni, hogy miért is érdemes igazán a Git-et választani.<br />
Elöljáróban szerepeljen itt néhány fontos szempont:
</p>
<ul>
<li>- Rendkívül gyors</li>
<li>- Minden lokákis</li>
<li>- Helytakarékos</li>
<li>- Staging area a kommitok összeállításához</li>
<li>- Tetszőlegesen szervezhető workflow</li>
</ul>
<p>Természetesen a lista koránt sem teljes, de erről majd a következőkben&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=54</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Első személyes poszt.</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=52</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=52#comments</comments>
		<pubDate>Fri, 05 Nov 2010 20:40:18 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[személyes]]></category>

		<guid isPermaLink="false">http://localhost/sajatoldal2010/blogom/?p=52</guid>
		<description><![CDATA[Ebbe a kategóriába kerülnek majd azok a bejegyzések, melyek nem tartoznak a webfejlesztés témakörébe, de mégsem bírom őket magamban tartani!:)]]></description>
			<content:encoded><![CDATA[<p>Ebbe a kategóriába kerülnek majd azok a bejegyzések, melyek nem tartoznak a webfejlesztés témakörébe, de mégsem bírom őket magamban tartani!:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=52</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Helló Világ!</title>
		<link>http://www.schumacherzsolt.com/blogom/?p=1</link>
		<comments>http://www.schumacherzsolt.com/blogom/?p=1#comments</comments>
		<pubDate>Wed, 08 Sep 2010 12:03:43 +0000</pubDate>
		<dc:creator>schumizs</dc:creator>
				<category><![CDATA[webfejlesztés]]></category>
		<category><![CDATA[helló világ]]></category>

		<guid isPermaLink="false">http://localhost/sajatoldal2010/blogom/?p=1</guid>
		<description><![CDATA[Hosszas készülődés után végre elkészült  weboldalam legfrissebb kiadása! A fél évnyi "hiperminimál" designt követően egy jól felszerelt, gazdag oldallal szerettem volna előrukkolni.
Jómagam és referenciáim bemutatása mellett régóta dédelgetett tervem valósul meg saját fejlesztői blogom elindításával. <a class="continue" href="http://www.schumacherzsolt.com/blogom/?p=1">Folytatás...</a>]]></description>
			<content:encoded><![CDATA[<p>Hosszas készülődés után végre elkészült  weboldalam legfrissebb kiadása! A fél évnyi &#8220;hiperminimál&#8221; designt követően egy jól felszerelt, gazdag oldallal szerettem volna előrukkolni.</p>
<p>Magam és referenciáim bemutatása mellett régóta dédelgetett tervem valósul meg saját fejlesztői blogom elindításával.<br />
Ennek keretein belül, heti egy (esetleg több rövid) bejegyzés beküldését tervezem. </p>
<p>A szakmai írások mellett egy személyes kategória is helyet kapott a blogban, ide kerül majd minden egyéb dolog amit érdemesnek tartok megosztani a világgal. <img src='http://www.schumacherzsolt.com/blogom/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A webhelyen belül külön oldalt szenteltem a Gyakran Ismétlődő Kérdéseknek(Gy.I.K.), melyek újra és újra felvetődnek munkáim során. Valamint helyet kapott a szokásos &#8220;kapcsolat&#8221; és &#8220;magamról&#8221; oldalak mellett egy kis fotógaléria, és az általam olvasott könyvek listája (&#8220;könyvespolc&#8221;) is.</p>
<p>Kellemes böngészést kívánok mindenkinek!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schumacherzsolt.com/blogom/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

