category: intermediate

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 »

01Nov

Laravel 5.0 - Request és Response

Az előző részekben átvettük hogy is épül fel egy átlagos laravel alkalmazás könyvtárstruktúrája, hogy lehet route-okat definiálni, valamint szóba kerültek a controllerek és middleware-ek. Mivel többségében ezeket az alkalmazásokat webre tervezzük és használjuk, ezért most térjünk kicsit vissza a protokoll alapjaihoz. Amikor a böngészőbe bepötyögünk egy URL-t és rátalál a böngészőnk a megfelelő IP-re, akkor egy HTTP requestet küld el a szervernek, amit az feldolgozva egy HTTP response-al "jutalmaz". Ugye ezeknek a requesteknek van headerje és body-ja, (ahogy ez a response-ra is igaz) POST, GET paraméterek, stb. A response-nak statuscode, statusmessage, body, header, stb. Ezt a request-response dolgot megvalósítja a laravel is, mégpedig objektumok mentén. Tehát amikor befut a kérés a controllerünk adott metódusába, akkor a service containerünkben már ott csücsül egy az aktuális bejövő kérés adataival feltöltött Request objektum.

Tovább »

30Aug

Command Pattern és a pénzügy/számvitel

Most, hogy a mai napi orbitális szívás programozási kihívásokon túlestem, ideje megosztani az infót valami másról, hogy mások is szívjanak annyit, mint én.

raf_fighter_command

"Nézd csak, oda kéne egy swipe-olható lightbox-os slider. Te programozó vagy, neked az öt perc!" - Ügyfél

A Command tervezési minta egy az adat-vezérelt minták közül és viselkedési minták közé tartozik. Lényege annyi, hogy a kérés egy objektumba van csomagolva, ilyen formában kerül átadásra az ún. invoker objektum karmai közé. Az utána megkeresi az illetékes ojjektumot ami képes ennek a "parancsnak" a teljesítésére és átadja annak, ami ezek után jó katonához híven teljesíti is azt.

Tovább »

25Aug

Controller és middleware a két jóbarát

Most, hogy a routingot tisztába tettük, nézzünk egy kicsit bele abba, hogy azokat a route-okat, amiket belőttünk miféle controllerekbe tudjuk belevezetni? Hiszen nem gondolhatjuk komolyan, hogy a kérések kezelésének logikáját a routes.php-ban írjuk meg, nemde? Főleg, hogy az MVC-ben ez lenne a controllerek dolga. Ezek általánosan az app/Http/Controllers mappába kerülnek.Xbox-360-S-Controller

Tovább »

17Aug

Nyelvtani alapok.. Lara-val..Laravel

laravel-for-web-artisans-1-638Igen, eljutottunk ide is, mainstream keretrendszerekről is írok. Múltkor felmerült a kérdés a Zendes cikkem kapcsán, hogy miért pont Zend? Nos, habár sem magyar, sem világ viszonylatban nem egy elterjedt keretrendszerről van szó, a magyar nyelvű leírások száma igencsak csekély, az angol nyelvűek pedig nem feltétlenül írják le, hogy miért és hogyan, hanem csak copy pastere szánt kódokat kínálnak fel. (ellenben aki olvasta a szolid 1300 oldalas official doksit, annak respect és tisztelet) Na de mielőtt lázadást szítanék, amiért eltértem a témától, beszéljünk egy kicsit a laravelről.

Tovább »

27Mar

Git 3 - Under the hood

Szedd össze, amid van...
Aki ismeri a fenti 30Y számot, annak se lesz világos, hogy miről lesz most szó, úgyhogy ne is foglalkozzunk vele, hanem rántsuk le a leplet a hőn áhított git merge-ről! Az előző részben  szó esett arról, hogy is lehet a különböző branch-eket létrehozni, azok logikai működése, viszont hiába emlegettük azt a bizonyos merge szócskát, arra nem derült fény, hogy ez mi is lehet?
Git merge
Tegyük fel, hogy jófiúk lévén egy development branch-ből leágazva fejlesztünk egy ún. feature branch-et. Ahhoz, hogy ezt a feature-t logikailag beleépítsük a kódbázisunkba az szükséges, hogy eljuttassuk a production(jelen esetben master) ágra. Ezt több módon tudjuk megtenni. Az egyik ilyen módszer az, hogy gyere velem kislány meggyet szedni a cherry pick. Ez arról szól, hogy egy adott branch-re csak az "érett" patch-eket húzzuk be. Ezt majd részletesen is kitárgyalom, most jöjjön a másik módszer, a merge. A merge arra hivatott, hogy két (local/remote) branch-et egyesítsen. Ez az egyesítés a commit-ok összefűzését jelenti.

Tovább »

03Mar

Anulu élete Pongo-MongoDB szigetén

Aki látta már a Kincs, ami nincs című szuperprodukciót találkozott már a MongoDB szócskával, demindeddig halvány gőze se volt arról, hogy ez pontosan mi is és mire való, azt leszámítva, hogy benne van a sokat sejtető DB szócska (lsd: darab)... na pont nekik szól ez a cikk! Megnézzük hogy is kell telepíteni, hogy kell használni PHP oldalon, miként tárolja az adatokat és még sok mást! Aki pedig nem érti és elakadna, az ne feledje: "Csak a puffin ad nekem erőt és mindent lebíró akaratot!"127020_galeria_kincs_ami_nincs_02

Tovább »

24Feb

De jegyezd meg jól, míg a Föld kerek, mindig lesznek névterek!

Tudom, hogy tartozom még mindenféle cikkel, ezért rangsorolnom kell őket, aszerint, hogy épp DiscontinuousNamespacemennyire nagy a baj az adott területen vagy épp mennyire sürgető lenne megismerni olyan dolgokat, amik így 2015-ben a "zalapműveltséghez" tartoznak bizonyos körökben. A címből gondolom már mindenki rájött, hogy most a Pokolgép zenekar tündöklése és bukása névterek kerülnek terítékre és mindaz, amit használatukkal és bevezetésükkel elérhetünk.

Tovább »

22Feb

A git (t)egylet

Aki sokat nézegeti a programozói álláshirdetéseket, annak bizonyára ismerős lehet a verziókövető pufrendszer kifejezés, ami vagy a követelmények vagy az "előnyt jelent" kategóriában, de igen gyakran szerepelnek az ilyen hirdetésekben. Ezek működéséről, használatáról lesz szó az alábbi cikkben, mégpedig a (szerintem) legelterjedtebb, a gitt példáin át. A sorozat során szó lesz verziókezelési modellekről, valamint arról, hogy tudtok remote repository-t létrehozni a VPS-eteken és konfigurálni azt, hogy automatikusan frissítse az oldalatok forráskódját push-oláskor, de ne ugorjunk ennyire előre!

Tovább »

14Feb

Kérésre: SessionManager

Az egyik előző cikkemben felmerült a kérdés, hogy mégis hogy néz ki egy ilyen sessionkezelés a gyakorlatban és mivel ez egy hozzászólás keretein belül nem kivitelezhető, úgy gondoltam akkor egy posztot megérne a dolog.657252372d6d4d5e9e228618497663ca526a59f9 Álljon itt hát egy komplett implementációja egy sessionmanager osztálynak:

Tovább »

13Feb

It's a kind of __magic()!

A PHP nyelvben objektumainknak akadnak olyan metódusai, melyeket nem tudunk direkt módon hivatkozással elérni, hanem egy bizonyos működéshez kötődnek. Ezeket a függvényeket mágikus metódusoknak (igen, magic method) nevezzük és minden esetben __ -el (dupla alsóvonás) kezdődnek. Álljon itt egy lista róluk és arról, hogy mikor és hogy is hívódnak meg:Its_a_kind_of_magic_by_MindStep Kezdjük az egyik legalapvetőbbel, amivel bárki összefutott már, aki példányosított objektumot:

Tovább »

05Feb

Cache, avagy a dugikészletek.

Ahhoz, hogy igényesen elmélyüljünk a gyorsítótárazás mikéntjében, első körben tisztáznunk kellene azt, hogy pontosan mit is értünk cache alatt.

Gyorsítótárazásnak nevezzük azt az átmeneti információ tároló elemet, aminek az információ elérés gyorsítása a cél. Ez a gyorsítás lényegében azon alapul, hogy a gyorsítótár elérése gyorsabb, mint a hozzá tartozó gyorsítandó elemé, így ha az adott információ már jelen van a gyorsítótárban (mert már valaki korábban hivatkozott rá és odakerült), akkor innen nyerjük ki, nem pedig a lassabb gyorsítandó területről.
Hogy egy egyszerű példával éljek. Főzünk egy kávét és azt beleöntjük egy nagy bögrébe, majd odavisszük a számítógépünk mellé és leülünk. Amikor kávéra van szükségünk nem kell kigyalogolni a konyhába, csak kinyújtani a kezünket. A kávé elérési idejét jelentősen lecsökkentettük azzal, hogy egy gyorsabb elérésű átmeneti tárolóba helyeztük azt. Real life caching! :)

Tovább »

01Feb

Keresőoptimalizálás másképp - OPcache

Aki valaha elmélyült a keresőoptimalizálásban az tudja, hogy rengeteg buktatója van a dolognak és a kedves Google valamikor úgy döntött, hogy ezt az optimalizálási folyamatot egy újabb tényezővel megfejeli: immáron a találatok súlyozásába az oldal betöltődési sebessége is beleszámít.speedlimit  

Figyelmeztetés: A cikk ( mint ahogy a címéből is kiderülhet) PHP oldalról közelíti meg a problémát, így a JSP, C# fanoknak nem sok örömet fog okozni :)

Tovább »

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