<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.1">Jekyll</generator><link href="https://keszeitheone.github.io/atom.xml" rel="self" type="application/atom+xml" /><link href="https://keszeitheone.github.io/" rel="alternate" type="text/html" /><updated>2022-11-16T19:41:03+01:00</updated><id>https://keszeitheone.github.io/atom.xml</id><title type="html">Keszei Blog</title><entry><title type="html">Dolgozz hobbi projekten!</title><link href="https://keszeitheone.github.io/discussion/dolgozz-hobbi-projekten/" rel="alternate" type="text/html" title="Dolgozz hobbi projekten!" /><published>2022-11-16T00:00:00+01:00</published><updated>2022-11-16T00:00:00+01:00</updated><id>https://keszeitheone.github.io/discussion/dolgozz-hobbi-projekten</id><content type="html" xml:base="https://keszeitheone.github.io/discussion/dolgozz-hobbi-projekten/"><![CDATA[<p>Kifejezetten a programozás részére gondolok. Ha vannak a szakmán kívül hobbijaid az kiváló, csak így tovább.  Azért még maradj,lehet, hogy téged is érdekelhet ez a bejegyzés.</p>

<p>Már milliónyi hobbi projekt van a hátam mögött. Ezért merem ajánlani, hogy kezdj bele te is. Nem kell félni attól, hogy hülyeség az ötleted, nem éri meg a bele szánt idő Indítok majd egy sorozatot azokról a hobbi projektjeimről, amiket nem fejeztem be, de másoknak lehet, hogy jó ihlet forrás.</p>

<h2 id="sosem-hülyeség-elkezdeni">Sosem hülyeség elkezdeni</h2>

<p>Ha van egy ötleted, kezd el össze írni! Például hogy hogyan működjön, miket szeretnél bele pakolni, milyen módszerekkel szeretnél rajta dolgozni.</p>

<p>Van egy érdekes keretrendszer, amit szívesen kipróbálnál? Tedd bele. Ne habozz, ha később nem is tetszik majd kipróbálsz egy másikat. Fontos, hogy kihívásokat is tegyél bele a projektbe, hogy tudd magad fejleszteni. Oda kell figyelni viszont, hogy ne vállald túl magad. Azt javaslom, hogy maximum 2-3 új dolgot tegyél bele, mert a végén belegabalyodsz és feladod. Vannak azért súlyozások is, pl.: Ha új nyelvben akarsz dolgozni, az egy elég combos tanulási folyamatot igényel. Nem feltétlen dolgoznék mellette még egy másik új technológiával is.</p>

<p>Az aktuális ismereteiden túl próbálj többet belerakni.</p>

<h2 id="mindig-megéri-a-beletett-idő">Mindig megéri a beletett idő</h2>

<p class="text-center">
		<img src="/assets/images/posts/hobbiprojekt/much-to-learn.gif" alt="Much to learn, you still have" style="width: 100%;max-width: 520px;" />
</p>

<p>Felmerülhet benned a kérdés, hogy tök jó új technológiákat tanulhatok meg, de ha nem lesz belőle semmi, akkor az időmet másra is fordíthattam volna.</p>

<p>Egyrészt, a tanulásra szánt idő sosem megy pocsékba. Másrészt,véleményem szerint nem szabadna elsődleges célnak lennie, hogy tudd publikálni. Magadnak készíted. Ha elég jó és használható, csak akkor, a későbbiekben fájjon a fejed amiatt, hogy hogyan is publikáld.</p>

<h2 id="mi-legyen-az-ötlet">Mi legyen az ötlet?</h2>

<p class="text-center"><img src="/assets/images/posts/hobbiprojekt/idea.gif" alt="This is idea!" /></p>

<p>Közhely, de igazából lehet bármi. Van egy szoftveres akadály az életedben, ami mindig is bosszantott? Próbálj írni egy scriptett/alkalmazást, ami ezt megkönnyíti.</p>

<p>Lehet nagyszabású az ötlet, így van rengeteg területe,amivel tudsz foglalkozni. Érdekel a felhasználókezelés? Regisztráció, bejelentkezés, security? Tökéletes, kezdj el egy alap tűzfalat építeni a projekted köré. Többjátékos kártyajátékot akarsz írni? Tanulmányozd, hogy hogyan lehet realtime meccseket csinálni.</p>

<p>Rengeteg lehetőség van. Csak el kell kezdened.</p>

<h2 id="nincs-abban-semmi-rossz-ha-nem-fejezed-be">Nincs abban semmi rossz, ha nem fejezed be</h2>
<p>Rengeteg projekt van a hátam mögött és egyiket sem fejeztem be. Néhány még mindig a fejemben van, hogy van benne potenciál, de a maradékra sem gondolok úgy, hogy feleslegesen kezdtem bele.</p>

<p>Sok oka lehet annak, hogy félbe hagysz / abba hagysz egy hobbi projektet. Időhiány, elfogy a lendület vagy félúton rájössz, hogy nincs szükséged rá. Ezekben nincs semmi rossz. Ne tekints ezekre, kudarcként. Fontos, hogy  belekezdtél, mert elsődlegesen a tanulás volt cél. A későbbiekben képes leszel majd befejezni őket. De ehhez még tapasztalatot kell gyűjtened, - ahogy nekem is.</p>

<p>Gondolj arra, hogy lehet később újra előveszed és folytatod, esetleg újra írod.  Akár újabb kihívásokkal megtűzdelve.</p>

<p>Végszóként, csak javasolni tudom, hogy bátran kezdj bele egy hobbi projektbe, legyen az világmegváltó ötlet vagy,  akár egy kisebb kis alkalmazás.</p>]]></content><author><name>Keszei Balázs</name></author><category term="discussion" /><category term="develop" /><category term="hobbi" /><category term="ideas" /><category term="talking" /><summary type="html"><![CDATA[Kifejezetten a programozás részére gondolok. Ha vannak a szakmán kívül hobbijaid az kiváló, csak így tovább. Azért még maradj,lehet, hogy téged is érdekelhet ez a bejegyzés.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keszeitheone.github.io/assets/images/posts/hobbiprojekt/heading.png" /><media:content medium="image" url="https://keszeitheone.github.io/assets/images/posts/hobbiprojekt/heading.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Lando, a web fejlesztők legjobb eszköze</title><link href="https://keszeitheone.github.io/development/lando-a-web-fejlesztk-legjobb-eszkoze/" rel="alternate" type="text/html" title="Lando, a web fejlesztők legjobb eszköze" /><published>2022-11-07T00:00:00+01:00</published><updated>2022-11-07T00:00:00+01:00</updated><id>https://keszeitheone.github.io/development/lando-a-web-fejlesztk-legjobb-eszkoze</id><content type="html" xml:base="https://keszeitheone.github.io/development/lando-a-web-fejlesztk-legjobb-eszkoze/"><![CDATA[<p>Folyamatosan kutakodom új technológiák után ami érdekes és hasznos is egyben. Web fejlesztéshez szükséges fejlesztői eszközök tárháza szinte végtelen és nagyon nehéz megtalálni a megfelelőt ami a te fejlesztési folyamataidhoz hozzá kapcsolódik.</p>

<p>Mindig zavart, az hogy különböző projektek miatt váltani kell php, adatbázis valamint nodejs verziókat. Rengeteg idő ment el arra, mert valamit kifelejtettem és már nem úgy működött a rendszer ahogy kellene.</p>

<p>Úgy 1-2 évvel ezelőtt csináltam is magamnak docker segítségével egy jó kis fejlesztői szervert, minden projekthez külön-külön szerver, csak azokkal a beállításokkal ami a projekthez szükséges. Ezzel voltak kis problémák. Nehézkes volt egy új projekt felépítése. Nehéz volt egy kis szerver módosítást végezni rajta, mert minden egyes módositásnal újra le kell buildelni a docker image-et. Éltem ezzel egy ideig, de aztán meg találtam a szent grált miközben kutakodtam a <a href="https://ohmyz.sh/">zsh</a> pluginjai közt (zsh-ról tervezek máskor írni)</p>

<p class="text-center bg-white p-3"><img src="/assets/images/posts/lando/logo.svg" alt="Lando" /></p>

<h2 id="lando">Lando</h2>
<p>Nem, nem a Star Wars Lando-ról van szó, habár én is pont emiatt figyeltem fel annó rá.</p>

<p class="text-center"><img src="/assets/images/posts/lando/not_starwars_lando.gif" alt="Not Star Wars Lando" /></p>

<p>A Lando saját docker image-eket használ, de lehet egyedi saját image-t használni benne. Ez adja a báját, hogy végtelenségig lehet testreszabni. Alapja az, hogy van egy szerver ami futtatja a kódunkat. Lehet az apache, nginx vagy bármi amire szükséged van. Nem kell feltétlenül php specifikusnak lennie szervernek (Erről lesz később példa is).</p>

<p>Kezdjük az elejéről. <a href="https://docs.lando.dev/getting-started/installation.html">Feltelepíted</a> a dokumentáció alapján. Innentől kezdve végig mehetsz egy egész egyszerű <a href="https://docs.lando.dev/getting-started/first-app.html">tutorialon</a> ahol bemutatják az alap működését ennek az eszköznek. Részletesen nem fogok kitérni, hogy hogyan is működik mélységeibe. Nekem most egy ismertető a célom.</p>

<p>Ha a Lando segítségével akarom futtatni a projektemet mindig első körben megadom az feltételeket. A Landonak vannak <a href="https://docs.lando.dev/config/recipes.html">receptjei</a> az olyan alkalmazások futtatására ami elterjedtek, hogy még kényelmesebb legyen egy projekt futtatása. A példánkban nem fogok recepteket használni, mert azok használatával nem lehet belelátni, hogy mégis hogyan is működik ez az eszköz.</p>

<p>Vegyünk egy symfony projektet. Mi kell alap esetben hozzá? Kell egy valamilyen szerver, mint például apache.  Ezt felvesszük  a <code class="language-plaintext highlighter-rouge">._lando.yml</code> fájlunkba a következő képpen:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">name</span><span class="pi">:</span> <span class="s">demo</span>

<span class="na">proxy</span><span class="pi">:</span>
  <span class="na">appserver</span><span class="pi">:</span>
    <span class="pi">-</span> <span class="s">demo.lndo.site</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">appserver</span><span class="pi">:</span>
    <span class="na">type</span><span class="pi">:</span> <span class="s">php:7.4</span>
    <span class="na">webroot</span><span class="pi">:</span> <span class="s">./public</span>
    <span class="na">ssl</span><span class="pi">:</span> <span class="no">true</span>
</code></pre></div></div>

<p>Ez után csak lekell futtatnunk a <code class="language-plaintext highlighter-rouge">lando start</code> parancsot és a folyamat végén el is érhető a projektünk. A Lando csinál local domaint, ssl-t mindent is. A projektünket a <a href="https://demo.lndo.site">https://demo.lndo.site</a> linken fogjuk tudni elérni.</p>

<h2 id="tooling">Tooling</h2>
<p>Ami még nagyon hasznos a Landoban, hogy a projekthez szükséges parancsokat nem kell a host gépeden futtatni, hanem egy egyszerű lépéssel már a docker containerbe futtathatod. Ezzel nem kell feltelepítve lennie semmilyen alkalmazásnak a gazdagépen. Elég ha a container-ben telepítjük fel őket egy direkt specifikus verzión. Tegyük fel én a projektemhez szeretnék <a href="https://yarnpkg.com/">yarn</a> package managert használni, de a gépemre nincs feltelepítve a NodeJS. Csupán ennyit kell módosítanom a konfiguráción:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">name</span><span class="pi">:</span> <span class="s">demo</span>

<span class="na">proxy</span><span class="pi">:</span>
  <span class="na">appserver</span><span class="pi">:</span>
    <span class="pi">-</span> <span class="s">demo.lndo.site</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">appserver</span><span class="pi">:</span>
    <span class="na">type</span><span class="pi">:</span> <span class="s">php:7.4</span>
    <span class="na">webroot</span><span class="pi">:</span> <span class="s">./public</span>
    <span class="na">ssl</span><span class="pi">:</span> <span class="no">true</span>
    <span class="na">build_as_root</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">curl -fsSL https://deb.nodesource.com/setup_18.x | bash -</span>
      <span class="pi">-</span> <span class="s">apt-get install -y nodejs</span>
      <span class="pi">-</span> <span class="s">npm install --global yarn</span>

<span class="na">tooling</span><span class="pi">:</span>
  <span class="na">yarn</span><span class="pi">:</span>
    <span class="na">service</span><span class="pi">:</span> <span class="s">appserver</span>
    <span class="na">cmd</span><span class="pi">:</span> <span class="s">yarn</span>
</code></pre></div></div>

<p>Egy gyors <code class="language-plaintext highlighter-rouge">lando rebuild -y</code> parancs után már rendelkezésre is áll a projektünkben a yarn. Csupán a szokványos yarn parancsaink elé be kell szurnunk a <code class="language-plaintext highlighter-rouge">lando</code> parancsot, és onnantól kezdve a projektünk container-ében futtatja a scriptet amit akartunk, pl.: <code class="language-plaintext highlighter-rouge">lando yarn add vue</code>.</p>

<p>A tooling parancsokat nagyon mélyre menőleg lehet testreszabni, mint ahogy a <a href="https://docs.lando.dev/config/tooling.html">dokumentáció</a> is írja.</p>

<h3 id="végszó">Végszó</h3>

<p>Szerintem alapjába véve ezek miatt nagyon erős tool a Lando. Csapatban még inkább ajánlatos használni, mert mindenkinek ugyan az a fejlesztői környezete lesz és az sokat számíthat. Én ma már ha új projektett kezdek el akkor csak Lando segítségével. Mint ahogy ezt a blogot is Landoval futtatom, mert nem akartam külön rengeteg mindent feltelepíteni, ahhoz hogy használni tudjam a Jekyll-t. Csak lehúztam a docker image-et és elindítottam. Alább meg is osztottam a jelenlegi változatát a blog Lando configjáról.</p>

<p>Nagyon szépen köszönöm, hogy idáig elolvastad. Remélem meghoztam a kedved ennek a remek fejlesztői eszköznek a használatára.</p>

<p>Tscháó! ;)</p>

<p class="text-center"><img src="/assets/images/posts/lando/lando_bye.gif" alt="Lando bye" /></p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">name</span><span class="pi">:</span> <span class="s">keszeiblog</span>

<span class="na">proxy</span><span class="pi">:</span>
  <span class="na">appserver</span><span class="pi">:</span>
    <span class="pi">-</span> <span class="s">keszeiblog.lndo.site:4000</span>

<span class="na">services</span><span class="pi">:</span>

  <span class="na">appserver</span><span class="pi">:</span>
    <span class="na">type</span><span class="pi">:</span> <span class="s">compose</span>
    <span class="na">app_mount</span><span class="pi">:</span> <span class="no">false</span>
    <span class="na">scanner</span><span class="pi">:</span> <span class="no">false</span>
    <span class="na">ssl</span><span class="pi">:</span> <span class="no">true</span>
    <span class="na">moreHttpPorts</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s1">'</span><span class="s">4000'</span>
    <span class="na">build_as_root</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">apk add nodejs npm</span>
      <span class="pi">-</span> <span class="s">npm install --global yarn</span>
    <span class="na">services</span><span class="pi">:</span>
      <span class="na">image</span><span class="pi">:</span> <span class="s">jekyll/jekyll:4</span>
      <span class="na">command</span><span class="pi">:</span> <span class="s">jekyll serve</span>
      <span class="na">ports</span><span class="pi">:</span>
        <span class="pi">-</span> <span class="s1">'</span><span class="s">4000'</span>
      <span class="na">working_dir</span><span class="pi">:</span> <span class="s">/app</span>
      <span class="na">environment</span><span class="pi">:</span>
        <span class="na">JEKYLL_ENV</span><span class="pi">:</span> <span class="s">development</span>
      <span class="na">volumes</span><span class="pi">:</span>
        <span class="pi">-</span> <span class="s">$PWD:/app</span>

<span class="na">tooling</span><span class="pi">:</span>

  <span class="na">jekyll</span><span class="pi">:</span>
    <span class="na">service</span><span class="pi">:</span> <span class="s">appserver</span>
    <span class="na">command</span><span class="pi">:</span> <span class="s">jekyll</span>
    <span class="na">user</span><span class="pi">:</span> <span class="s">jekyll</span>

  <span class="na">yarn</span><span class="pi">:</span>
    <span class="na">service</span><span class="pi">:</span> <span class="s">appserver</span>
    <span class="na">cmd</span><span class="pi">:</span> <span class="s">yarn</span>
    <span class="na">user</span><span class="pi">:</span> <span class="s">jekyll</span>
</code></pre></div></div>]]></content><author><name>Keszei Balázs</name></author><category term="development" /><category term="develop" /><category term="work" /><category term="lando" /><category term="devops" /><category term="tutorial" /><summary type="html"><![CDATA[Folyamatosan kutakodom új technológiák után ami érdekes és hasznos is egyben. Web fejlesztéshez szükséges fejlesztői eszközök tárháza szinte végtelen és nagyon nehéz megtalálni a megfelelőt ami a te fejlesztési folyamataidhoz hozzá kapcsolódik.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keszeitheone.github.io/assets/images/posts/lando/lando_masthead.jpg" /><media:content medium="image" url="https://keszeitheone.github.io/assets/images/posts/lando/lando_masthead.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Initial commit</title><link href="https://keszeitheone.github.io/general/initial-commit/" rel="alternate" type="text/html" title="Initial commit" /><published>2022-11-06T00:00:00+01:00</published><updated>2022-11-06T00:00:00+01:00</updated><id>https://keszeitheone.github.io/general/initial-commit</id><content type="html" xml:base="https://keszeitheone.github.io/general/initial-commit/"><![CDATA[<p>Régebben mindig is próbálkoztam saját blogot írni, több kevesebb sikerrel.</p>

<p>Most egy újjabb próbálkozást láttok, ami lehet, hogy dugába dől mint az előzőek is. Próbálkoztam twitterrel, blog.hu-val, saját bloggal stb.</p>

<p>Mivel web alkalmazás fejlesztő vagyok adott, hogy saját magamnak írjam meg a blogomat. A wordpress túl egyszerű választás lett volna. A wordperss-be az sem tetszik, hogy rá  vagyok kényszerítve a saját működésére. Nehéz a motorház tető alatt dolgozni. Az is lehet, hogy nem igazán értek hozzá, de nem akartam akkora energiát bele tolni.</p>

<p>Végül amit találtam az a <a href="https://jekyllrb.com/">jekyll</a>. Nagyon egyszerű a használata, ismerős template kezelő mechanizmusa van. A végső eredmény pedig egy sima html struktúra ami a legygyorsabb kiszolgálást eredményezi.</p>

<p>Találtam is egy szép témát is hozzá. Kicsit módosítottam rajta, hogy végül csak egy javascript és egy css fájl betöltés legyen, hogy a végén kimaradjanak a cdn betöltések.</p>

<p>Vannak még gondolataim arra, hogy mit szeretnék még írni, deegyenlőre ez a legelső posztom ezen az oldalon.</p>]]></content><author><name>Keszei Balázs</name></author><category term="general" /><category term="jekyll" /><category term="blog" /><summary type="html"><![CDATA[Régebben mindig is próbálkoztam saját blogot írni, több kevesebb sikerrel.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keszeitheone.github.io/assets/images/posts/initial_commit.jpg" /><media:content medium="image" url="https://keszeitheone.github.io/assets/images/posts/initial_commit.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Mi az a TDD?</title><link href="https://keszeitheone.github.io/development/mi-az-a-tdd/" rel="alternate" type="text/html" title="Mi az a TDD?" /><published>2022-11-06T00:00:00+01:00</published><updated>2022-11-06T00:00:00+01:00</updated><id>https://keszeitheone.github.io/development/mi-az-a-tdd</id><content type="html" xml:base="https://keszeitheone.github.io/development/mi-az-a-tdd/"><![CDATA[<h2 id="tdd-mint-test-driven-development">TDD, mint Test Driven Development.</h2>

<p>A jelenlegi munkahelyemen, ez egy fontos fejlesztési eszköz. Nagyon egyszerűen fogalmazva az alapelve, hogy először tesztet írunk és utána csak production kódot.</p>

<p>A TDD fejlesztésnek 3 fő lépése van, ami folyamatosan körbe-körbe “hajtódik” végbe.</p>

<ul>
  <li><span class="text-danger">Red</span></li>
  <li><span class="text-success">Green</span></li>
  <li><span class="text-info">Refactor</span></li>
</ul>

<h3 id="red-lépés"><span class="text-danger">Red</span> lépés</h3>
<p>Először is mikor neki állunk egy algoritmus megírásához írnunk kell egy <span class="text-danger">fail</span>-elő tesztet. A teszt megírása elött meg kell fogalmaznunk magunkban, mit is szeretnénk, hogy csináljon az adott függvény amit megszeretnénk írni. Vegyük egy egyszerű példát.</p>

<p>Azt szeretnénk megírni, hogy a végső eredmény egy adott matematikai műveletett végezzen el. PHP-ban írom a példát, mert azt jobban ismerem. Az első tesztünk az lesz, hogy a függvényünk adjon össze 2 számot.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">public</span> <span class="k">function</span> <span class="n">testSum</span><span class="p">()</span> <span class="p">{</span>
	<span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">assertSame</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">calc</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">));</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Ha lefuttatjuk az általunk kedvelt kód szerkesztőben a teszt futtató környezetünket. PHP-ban például ez a PHPUnit-ot jelenti. A végeredmény az lesz, hogy pirosan fog vírítani a konzolban.</p>

<p>Ez a <span class="text-danger">Red</span> lépés. Hibára futtatuk a tesztünket és csak ekkor javíthatjuk ki a tesztet, úgy, hogy a production kódban a megfelelő eredményt adjuk vissza.</p>

<h3 id="green-lépés"><span class="text-success">Green</span> lépés</h3>
<p>Ebben a részben javítjuk ki a tesztünket, hogy zöld legyen. Az a fontos ebben a lépésben, hogy nem szabad annál többet írni, mint ami a teszt megkíván. A példa kedvéért a kódunkban nem fogjuk ténylegesen össze adni a két értéket, hanem csak egyszerűen vissza adjuk a 7-et.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">public</span> <span class="k">function</span> <span class="n">calc</span><span class="p">(</span><span class="nv">$x</span><span class="p">,</span> <span class="nv">$y</span><span class="p">)</span> <span class="p">{</span>
	<span class="k">return</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Ezek után ha újra lefuttatjuk a tesztünket, már zölden is virít. NIncs más teendőnk ezután csak tovább lépni a következő lépésre.</p>

<h3 id="refactor-lépés"><span class="text-info">Refactor</span> lépés</h3>
<p>A példánkban ennél a lépésnél nagyon nem lehet mit refactorálni, de ennél a lépésnél lehet megtenni azt, hogy amit a production kódban megírtunk azt szépítsük, gyorsabbá vagy újra felhasználhatóvá tegyük. Ennél a lépésnél is nagyon fontos, hogy bármi amit módosítunk a kódunkon, az ne “törje” el a tesztünket. Vagyis mindig <span class="text-success">zöldben</span> kell maradnunk. Ennek a lépésnek a vége, akkor van mikor magunk úgy gondoljuk.</p>

<p>Miután végeztünk folytathatjuk a lépéseket újra az elejétől.</p>

<h3 id="repeat-lépés"><span class="text-warning">Repeat</span> lépés</h3>
<p>A folyamat kezdődik előlről újra a <span class="text-danger">red</span> lépésben vagyunk, vagyis hibás tesztet kell írnunk. A példánkban látszik, hogy nem a megfelelő a számíásunk, mert hát csak egyszerűen 7-est adunk vissza ahelyett, hogy ténylegesen kiszámítanánk. Ezt nagyon egyszerűen tudjuk orvosolni. Írnunk kell egy másik tesztet ami más eredményt vár a függvényünktől.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">public</span> <span class="k">function</span> <span class="n">testSum</span><span class="p">()</span> <span class="p">{</span>
	<span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">assertSame</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">calc</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">));</span>
<span class="p">}</span>

<span class="k">public</span> <span class="k">function</span> <span class="n">testAnotherSum</span><span class="p">()</span> <span class="p">{</span>
	<span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">assertSame</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">calc</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">7</span><span class="p">));</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Lefuttatjuk a tesztünket és hibára is fut, nyílván. A production kódunkat már javíthatjuk azzal a lendülettel, hogy ténylegesen számítjuk az értékeket.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">public</span> <span class="k">function</span> <span class="n">calc</span><span class="p">(</span><span class="nv">$x</span><span class="p">,</span> <span class="nv">$y</span><span class="p">)</span> <span class="p">{</span>
	<span class="k">return</span> <span class="nv">$x</span> <span class="o">+</span> <span class="nv">$y</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Fontos, hogy úgy módosítsuk a kódunkat, hogy minden tesztünknek zöldnek kell lennie. Innen mindent újra meg újra meg újra meg újra.</p>

<p class="text-center"><img src="/assets/images/posts/miazatdd_and_again.gif" alt="And again" /></p>

<p>Majd az egésznek vége is van, hogy ha a végeredmény azt adja vissza amit szeretnénk akkor végeztünk is.</p>

<p>Gratulálok, meg tanultad a TDD alapjait.</p>]]></content><author><name>Keszei Balázs</name></author><category term="development" /><category term="develop" /><category term="work" /><category term="tdd" /><summary type="html"><![CDATA[TDD, mint Test Driven Development. Egy gyors talpaló arról, hogy micsoda is ez.]]></summary></entry></feed>