category: advanced

28Oct

Inversion of layered architecture

Hosszú ideje nem volt már technikai jellegű bejegyzés a blogon, épp itt az ideje kicsit változtatni ezen. A cikket az egyik stackoverflow kérdésre adott válaszom ihlette, ahol megkaptam, hogy a kedvenc UML-emről igazán írhatnék valami cikket, ezt pedig megfogadom :) A legtöbben ismerjük az úgynevezett layered architektúrát, aminek a lényege az, hogy alkalmazásunkat több különböző rétegre bontjuk. Ezek a rétegek egymásra épülnek és a felhasználó, legyen az egy tényleges felhasználó vagy valami egyéb kliens, mindig a tetejével lép kapcsolatba. Na most a dependency inversion elve nem csak osztályokra értelmezhető, hanem ilyen modulokra is. Na de mégis hogyan?

Tovább »

30Mar

A microservice hype

Már egy jó ideje a csapból is az folyik (szerencsére már megunták), hogy a microservice architektúra mennyire cool és hogy a monolit alkalmazások fejlesztése buzis. A cikkben arról lesz szó, hogy is kell kivitelezni egy ilyet, mitől is microservice, miért ősrégi maga a fogalom, mik a hátulütői, és még sok más! micro-service-architecture

Tovább »

19Mar

Vagrant és Rio de Janeiro

A webfejlesztők életének sok-sok fázisa van. Legtöbbünk úgy kezdi, hogy valahol látja/hallja, megtetszik neki, utána tutorialokat olvas, utánajár, majd felpatkol otthon egy AMP stack-et és azon barbárkodik.

Ekkor hisszük azt, hogy a miénk a világ amíg valaki rommáhackeli az első oldalunkat.

60344920

Reméljük nem itt kötünk ki a végére

Tovább »

12Mar

Composer - A PHP fejlesztők kedvenc zeneszerzője

Van egy mondás, miszerint az okos/rutinos programozó nem fogja újra és újra feltalálni a kereket, hiszen az teljesen felesleges időpocséklás lenne, hanem leakaszt egy már meglévő library-t a polcról és azt használja, megkímélve magát a sok vesződségtől (vagy épp ezzel generálva azt, de most nem személyeskedünk, igaz?). ludwig-van-beethoven-a-great-composer1 Ha így járunk el, akkor a program, amit készítünk, függ ettől a leakasztott libtől. Ezt nevezik dependenciának, hogy egy kellően gusztustalan idegen eredetű szóval éljek. Ha netán open-source dolgokba bonyolódunk, akkor ezt a külső libet nem fogjuk projektünkhöz mellékelni, hanem a dokumentáció elejébe beírjuk, hogy bizony az e-mail küldéshez kell a PHPMailer 5.2.x vagy újabb, mert mi azzal összeteszteltük és funktzioniert.

Tovább »

16Feb

Builder Pattern és a 7 hardveres

Mai cikkemben a Builder Pattern kerül terítékre, hogy egy újabbat leleplezzünk a létrehozási minták közül. Mielőtt azonban beleugranánk abba, hogy mit is csinálunk ezen mintában, előtte valamit át kell beszélnünk, ami az objektumaink interfészével és működésével kapcsolatos.inception-trailer-movie-leonardo-de-caprio1 Vegyünk egy konkrét példát: Van egy controllerosztályunk, legyen pl. AjaxController, amivel az oldalunkra érkező ajax lekéréseinket szeretnénk kezelni.

Tovább »

29Jan

Tervezési minták - Adapter pattern

Kicsit megtörjük most a sort és a létrehozási minták helyett (amik közül a jómunkásember Builder következne) egy másik csoportból fogunk elővenni egyet, mégpedig a struktúrális minták közül, az adapter pattern-t. Ezen mintának a lényege, hogy két inkompatibilis interfész között hidat képez. Minderre egy különálló osztályt fogunk használni, aminek az a feladata, hogy a két független vagy éppen inkompatibilis osztály funkcionalitását kombinálja.1280px-Notebook-Computer-AC-Adapter A fenti kép is jó például szolgálhat. A laptopunk akkumulátorát és a konnektort egy adapter köti össze, ami a két összeférhetetlen "interfészt" fogja működőképessé tenni. Ellenben írjunk egy példát, az mindig segít. Tegyük fel, hogy oldalunk egy külső API-t használ és ez a szolgáltatás lassú/netán nem mindig elérhető, így a tartalmát szeretnénk gyorsítótárazni, na meg az API kulcsunkat se akarjuk mindenáron pörgetni, nehogy túllépjük a limitet. Ezt a gyorsítótárazást először balga módon a fájlrendszerbe tesszük.

Tovább »

21Jan

OOP's I DI'd it again!, avagy dependency injection praktikák

49734Mielőtt bármibe is belekezdenénk, először is tisztáznunk kell mi is az a dependency injection ( függőség injektálás, magyarul elég morbidul hangzik). Az objektumorientált programozásban az osztályaink egymással közreműködnek és legtöbb osztályunk (nem mind, hiszen az lehetetlen) explicit módon igényli egy másik használatát. Ha használtunk már pl. PDO-t egy osztályunkban, akkor is pont ezt tettük. Anélkül az osztály nélkül a miénk sehogyse működne, függ tőle (depends on). Ha még most sem világos, akkor vegyünk egy konkrét példát.

A programozó, mint osztály

class Programozo {
    public function __construct(KaveAutomata $kaveautomata, Eclipse $ide) {
          $kaveautomata->rugdos()->iszik();
          $ide->ujraInditMertMarBelassult();
    }
}
A fenti példa kicsit unortodoxnak tűnhet, de mindjárt elmagyarázom. A dependency injection egyik legegyszerűbb módja az, hogyha a konstruktoron át, a meghíváskor adjuk át a szükséges osztályok példányait (constructor injection). A programozónak ugye szüksége van egy fejlesztői környezetre, amin dolgozik, valamint esetünkben kávéra, ahhoz hogy működni tudjon. Ha ezek nincsenek meg, akkor bizony nem tudjuk munkára fogni az illetőt. A fenti példában explicit módon kikötöttük, hogy automatás kávét iszunk és Eclipse-t használunk. Ez szép és jó, ellenben a kódunkat (és vele együtt a programozót is) bebetonoztuk a kódunkba. Ugyanis mi van akkor, ha elmegyünk egy másik helyre, ahol kotyogós kávéfőző van, netán PhpStorm vagy épp NetBeans? Nos a mi programozónk ezt nem fogja elfogadni és hibaüzenettel elszáll, mert neki bizony elvei vannak.

Tovább »

06Jan

Unit test meg amit akartok

A szoftverek tesztelésének több fajtája van, amik közül néhányról azok is hallhattak már, akik igazából nem foglalkoznak fejlesztéssel ( Ilyen például a béta-tesztelés). Ellenben van egy tesztelési forma, ami szoros kapcsolatban áll a konkrét fejlesztéssel és végigköveti annak életciklusát.

Ez pedig a unit testing.

Mi az a Unit?

Unit testing esetében a unit ( magyarul egység) az a legkisebb darabja a programnak, ami valami konkrét feladatot lát el. Esetünkben ez egy függvény/metódus. Minden egyes teszt egy ilyen kis darab működését (visszatérési érték, dobott kivételek) teszteli le különböző körülmények (paraméterek, stb.) között. Unit testing során függetleníteni kell a többi, külső tényezőtől a tesztelni kívánt részletünket, ezért használunk ún. mock object-eket és hasonlókat, de erről majd később.

Tovább »

29Dec

Daemon idézés PHP-ben - 2. rész

Előző cikkemben végigvettünk pár alapfogalmat, ami a daemonokkal és a processekkel kapcsolatos, de mindeddig nem derült fény arra, miért is érdemes PHP nyelven ebbe belefogni. Rengetegen programoznak PHP nyelven, sokkal többen, mint C nyelven, amiben az ilyen programok egyébként íródnak. Egy webfejlesztéssel foglalkozó cégnek egyszerűbb egy backend fejlesztőjének kicsit utánajárni a dolognak, mintsem C nyelven megtanulnia.

Tovább »

24Dec

Daemon idézés PHP-ben

A daemon, a mitológiákban az istenek és az emberek között állnak és   a multitask rendszerekben használatos elnevezés azokra a programokra, amik a háttérben futnak, ahelyett, hogy direkt kapcsolatban lennének a felhasználóval. Ilyen daemon például az sshd is, ami az SSH protokollt felügyeli a háttérben. Na de hogy jön ide a PHP, amit a legtöbben egy szerveroldali szkriptnyelvként ismernek, dinamikus weblapok készítésére? Nos, a PHP nem csak a böngészőben futhat, hanem telepíthető parancssori alkalmazások futtatására is. Ez azonban még mindig nem daemon, hiszen elindítjuk, lefut és visszakapjuk a parancssort, tehát nem a háttérben fut.

Tovább »

2014-2018 © Letscode.hu. Minden jog fenntartva. Build verzió: