category: php

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 »

13May

Logfájlok pokla 2. - MDC keretrendszer alatt

Az előző cikkben arról volt szó, hogy is tudjuk elszeparálni az egyes logbejegyzéseket az apache loggerével. Mint kiderült, van hasonló funkcionalitás a monologban is, csak ott még nem volt ekkora ráhatása Martin Fowlernek és társainak, mert nem MDC néven, hanem processor néven tudunk belenyúlni és plusz információkkal kiegészíteni az egyes bejegyzéseket. Első körben a Laravelt fogjuk megvizsgálni ezen szempontból, mégpedig az 5.4-es verzióját.

Tovább »

11May

Mit tegyünk ha már elvesztünk a logfájlokban?

Ismert a mondás, hogy a fejlesztők idejük 90%-ában debuggolnak, a másik 10%-ban pedig bugokat írnak. Ez utóbbi egy lokális/remote alkalmazás esetében még a nyelvspecifikus debuggerrel megoldható, lépegethetünk soronként, megnézhetjük hogy mi is történt pontosan egy/egy request/thread mentén. Viszont amikor mindez éles, netán tesztkörnyezetbe került, akkor ez az opció elveszett, így marad az, hogy a hibakeresés szempontjából lényeges információkról logbejegyzéseket hagyunk hátra és reménykedünk hogy sosem kell belenézzünk.

Tovább »

18Feb

Circuit breaker, avagy mi van akkor, ha nem megy?

Amikor szoftvert írunk, akkor törekszünk arra, hogy bolondbiztos legyen. Amikor webre fejlesztünk sem történik ez másként. Minden tőlünk telhetőt megteszünk annak érdekében, hogy bizony a felhasználó mindig megkapja, amit akar, hiszen nekünk közvetve belőlük van pénzünk. Azonban akadnak olyan esetek, mikor külső tényezők is befolyásolhatják a szolgáltatást, amit nyújtunk? Akkor bizony tudni kell esni. Ahogy manapság egyre nő a microservice hype, egyre gyakrabban fogunk találkozni azzal, hogy bizony, ki kell hívni egy külső service felé, ami nem mindig végződik egy boldog 200-as válasszal. Cikkünkben a Circuit breaker patternről lesz szó és arról, hogy is segíthet ez nekünk, ha külső szolgáltatásokra épül az oldalunk.

Tovább »

23Jan

SOAP, avagy 'Run you fools!'

Az eddigi cikkekben főleg a RESTful irányába mentünk el, ami mostanában elterjedőben van, viszont óhatatlan, hogy az ember belefusson a jó öreg SOAP-ba. Már volt róla szó, hogy hogy is néz ki mindez, viszont az még nem derült ki, hogy is tudunk ilyet létrehozni, valamint egy kliens se ártana, mert "jó" esetben mi inkább használni fogjuk ezeket, nem pedig szervert írni rá PHP-ben. Mindenesetre mindkét opcióról szót ejtünk majd. Na de zuhanjunk is neki, mert semmi se lesz belőle!

Tovább »

31Dec

PHP Docker mögé bújva

Ígértem korábban a Passportos verzióját a REST API-nk authentikációjához és ennek az első lépése az, hogy 5.3-as Laravel kell hozzá, ahol bele is futottam a hibába, miszerint lokálisan csak 5.6.3-as PHP-m volt, neki pedig 5.6.4-es kellett volna. Persze mi sem egyszerűbb egy lokális környezetnél, updateljük és ennyi. Sajnos production környezetben nem így szokott mindez történni, no meg jó lenne, ha már a 7-est használnánk, így gondoltam mixelem a kellemest a hasznossal és megnézem mennyire bonyolult bepakolni ezeket dockerbe, úgy hogy működjenek is. A példák, habár Laravel alapúak, a legtöbb PHP keretrendszerre igazak lesznek, ahol a Document Root a public mappára mutat.

Tovább »

27Dec

Pushbreaker - Az élet CI szerver nélkül

Ha körbenézünk, hogy milyen/mekkora projekteken dolgozunk nap, mint nap (és itt főleg a kisebb projektekre gondolok), akkor számunkra is világos lesz, hogy bizony nem minden projekt érdemli meg azt, hogy pl. Jenkins job-ot rendeljünk hozzá és a .gitlab.yml fájl is hiánycikk, netán nem is bevált gyakorlat a CI szerver a cégnél, ahol dolgozunk, mert csak KKV-knek szórjuk ki az apróbb oldalakat. Ami viszont természetesen továbbra is fontos, az az hogy verziókövetve legyenek ezek a kódbázisok is, betartsunk bizonyos konvenciókat, ha írtunk teszteket, azokat ne törjük össze az egyes commitok során és lehetőleg a PHP mess detector se akadjon ki fájljaink láttán.  Mindezt azért, hogy a kódunk megbízható legyen, mások által átlátható és az esetleges utódunk se fakadjon sírva, ha megnyitja a projektet (ez utóbbit főleg akkor értékeljük majd, ha átvettünk egy rendesen karbantartott kódot a sok legacy borzalom után). A cikkünkben a git kliensoldali hookjait fogjuk igénybe venni és megnézzük, hogy is tudunk bizonyos teszteket és ellenőrzéseket automatizálni a gépünkön, hogy csak olyan kódot engedjünk ki a kezünk közül, amihez jó esetben bátran adjuk a nevünket is a commit authorban.

Tovább »

22Dec

OAuth 2.0 Apigility módra

Habár legutóbbi cikkemben a Laraveles Passportot ígértem, gondoltam teszek egy próbát az Apigility átlal biztosított OAuth2.0-ás authentikációval is, részben azért, mert a B. Shaffer féle Oauth2 csomagot használja, amivel már korábban volt dolgom. Akkor überszívás volt mindezt rendesen életre lehelni, vagy legalábbis a rendszer nem éppen illett bele az egészbe, sok helyen kellett átszabni a protokollt (sokan ezért is szidják az OAuth 2.0-t a SAML-al szemben, ugyanis nagyon sok lyuk van a specifikációban, ahol többféle implementáció fordulhat elő, ami miatt lehet, hogy két fél megfelel a protokoll minden követelményének, mégis inkompatibilisek lesznek), így hát kiváncsi voltam, lehetséges-e mindezt úgymond összekattintgatni. Előljáróban annyit, hogy azért nem volt olyan egyszerű, mint hittem :)

Tovább »

26Aug

Konstruáljunk Web API-t!

Amikor a legtöbben meghallják azt a rövidítést, hogy API, rendkívül különféle dolgokra asszociálnak. Van akinek a Java Persistence API jut eszébe, van akinek a Facebook API, míg másoknak valami teljesen más...api

Tovább »

27Jun

A szilárd alapok

Sok minden szóbakerült már a blogon, viszont egy igen fontos részt kihagytam, vagy csak érintőlegesen volt szó róla. Nem is biztos, hogy valaha direktben megkérdezik azt valakitől, hogy pontosan mit is takar a S.O.L.I.D., vagy éppen mit jelentenek az egyes rövidítések, ellenben előbb-utóbb az ember maga is elkezdi alkalmazni a legtöbb szabályt, amiről a cikkben szó lesz.contentItem-3770797-22619864-m2hitxryp7wup-or

Tovább »

08May

Repository-k a verziókövetésen is túl

Amikor az ember kódolásba kezd, akkor gyakorta törekszik arra, hogy a kódja egyes részeit újra tudja hasznosítani, hogy azok modulárisak legyenek, át tudjuk vinni őket A projektből B projektbe, anélkül, hogy reflectionnel megerőszakolnánk az egészet fejfájást okoznánk magunknak vagy másoknak és ugyanolyan könnyedén használható maradjon mindez, mint az A projekt esetében. Azonban mi a helyzet, ha pl. különböző adatforrások között szeretnénk váltani?IC340233

Tovább »

28Apr

Díszítsük fel a wrappert!

A decorator pattern a struktúrális minták közé tartozik, és a célja roppant egyszerű: magába foglal egy másik osztályt és plusz funkcionalitással látja el azt, így az eredeti osztály metódusai érintetlenek maradnak. Nézzük meg hogy is történik mindez!  

Forrás: foodnetwork.com

Forrás: foodnetwork.com

Tovább »

04Apr

Facade pattern

Az elmúlt időszakban kissé eltávolodtunk a kódtól, pedig nem csak rendszerszinten lehet tekinteni itt a dolgokra, így most kicsit visszatérünk a hétköznapi kóder életbe, a tervezési minták világába. Cikkünk témája a facade pattern, aminek célja az, hogy a kliensek számára egy letisztult, egyszerűen használható interfészt biztosítson egy komplex objektumhálózat/modul használatához, miközben elburkolja annak működését. Besorálását tekintve a struktúrális minták közé tartozik, viselkedésében pedig kb. az Adapter ellentéte lesz.

atm140120_20140120_202328_l

Az ATM is egy facade

Tovább »

24Mar

Refactoring a javából

Elképesztő módon elmaradtam az írásokkal, amire semmilyen (még az ivás se) lehet mentségemre. Ezért most ha tudom, akkor megpróbálom pótolni, de már inkább nem is ígérek semmit, mert eddig nem úgy tűnt, hogy be tudom tartani :) A kódminőség a fejlesztők életében elég kritikus téma. Ha szóba kerül a refaktorálás szó, akkor mindenki valami szörnyű, 10 éves kódbázisra asszociál, aminél ha bekapcsoljuk a deprecated hibák kiírását, százával kezdi kihányni két kiíratás közben, hogy bizony az mysql_connect már öregebb, mint az iOS7.. így le kéne cserélni. A refaktorálás mikéntjéről, példákról és magáról a folyamat szellemiségéről lesz szó az alábbi cikkünkben:

Hat-Design

Design hat, a gányer-kipa ellentéte

Tovább »

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