tag: php

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 »

24Jan

Tervezési minták - Singleton és a hét törpe

Elérkeztünk hát a tervezési minták taglalásához, így hát vegyük is át pontosan mit is értünk ez alatt.

Az informatikában programtervezési mintáknak (angolul Software Design Patterns) nevezik a gyakran előforduló programozási feladatokra adható általános, újrafelhasználható megoldásokat. Egy programtervezési minta rendszerint egymással együttműködő objektumok és osztályok leírása. - Wikipedia
A tervezési mintákat az informatikába Christopher Alexander építész ötlete nyomán hozta be egy programozókból álló négyes, az ún. Gang of Four a 90-es évek végén. Összegyűjtöttek 23 ilyen gyakran előforduló mintát és a Design Patterns c. könyvben forradalmasították az objektumorientált programozást. Három csoportra tagolhatók, melyek közül mi most az első csoportból emelnénk ki a legegyszerűbbet, mégpedig a singleton-t.

Tovább »

22Jan

Önvédelmi gyakorlatok - 1. rész

Aki már helyezett ki kódot éles környezetbe (és volt némi felelősségérzete persze :D) abban bizonyára felmerült többször is, hogy "vajon mindent megtettem a szerverem biztonsága érdekében?". Nos a PHP, mint mondtam egy olyan nyelv, amin viszonylag korán el tudunk érni sikereket és ettől felbátorodva idő előtt éles környezetbe helyezzük a kódunkat, akár csak haveri alapon, saját célra valami kis oldalra. A gondot viszont az jelenti, ha valaki fizetett azért a "lukas" kódért, ami ott várja a neten a mókás kedvű arra tévedő 5. osztályosokat. Persze ez a probléma nem csak kezdőket érinthet, hiszen egy nagy, nehezen átlátható rendszerben is ( a kellő tervezés nélkül ) becsúszhat egy hiba és máris kész a baj.

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 »

19Jan

PHP OOP - Absztrakt osztályok és interfészek

Az előző OOP részben átvettük hogyan is kell osztályokat definiálni, példányosítani, valamint az access modifier kulcsszavakat. Mostani részünkben az absztrakt osztályokat és interfészeket vesszük górcső alá és vizsgáljuk meg, hogy mi célt is szolgálnak, példákon keresztül. A példák ismét PHP nyelven keresztül lesznek bemutatva. Ellenben mielőtt belevetnénk magunkat e két téma taglalásába, előtte tisztáznunk kell pár dolgot.

Öröklődés

Az előző cikkben szó volt a protected access modifier-ről, ahol említettem, hogy az osztály ön maga és a "gyermekosztályok" férnek hozzá az adott property-hez. Okkal merül fel a kérdés, hogy
Mi a ****** az a gyermekosztály? Utoljára tíz éve jártam ott, vakbélműtét után!
Nos itt nem erről van szó, hanem arról, hogy az osztályok közt szülő-gyermek viszonyt tudunk kialakítani és a mendeli genetika szerint az F1 nemzedék  így a szülő függvényeit/változóit (természetesen ha nem private) tovább tudjuk örökölni a gyermek osztályunkba. Ezeket már nem szükséges definiálnunk. Jön az újabb kérdés, hogy ez mégis mire jó mindez?

Tovább »

09Jan

PHP Model-View-Controller

Annyira divatos kifejezés az MVC manapság, ellenben amikor valaki megpróbálja elmagyarázni, akkor eszembe jut, hogy ezt talán lehetne másképp is értelmezni. Az MVC a címben is szereplő hármast, a model-view-controller triumvirátusát jelenti, amiből a kliens minden esetben egy-egy view-al találkozik. A lényege ennek, hogy a kódunkat feldaraboljuk három nagyobb különálló részre, melyek egymással állnak kapcsolatban. A controller feladatát roppant egyszerűen tudnánk leírni, a kliens kéréseit lefordítja a model nyelvére és amit a model visszaad, azt pedig beletölti a hozzá tartozó view-ba.

Tovább »

08Jan

PHP OOP - mielőtt bármibe kezdenénk

Rövidke PHP-s fórumokon lebzselő pályafutásom alatt a legtöbb kérdés az objektum-orientált programozás témaköréből került ki és, habár száznál is több oldalt lehet találni az interneten, talán ez a cikk lesz az, amelyik átlendíti az illetőt a palánkon és felnyitja a szemét, hogy mindez nem is akkora ördöngősség. Először is szeretném leszögezni, hogy nem attól lesz valami objektum-orientált, mert vannak csináltunk egy adatbazis (szeretjük a magyar elnevezéseket, ugye?) osztályt, azt példányosítottuk és ezen keresztül meghívjuk a mysqli függvényeket, viszont aki teljesen új a témában, azok számára muszáj mindent az elejéről kezdeni.

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 »

21Dec

Autoload megoldások akkor és most

Az objektumorientáltság a PHP nyelvben is magával hordozta azt a tényt, hogy webalkalmazásaink egyre nagyobbra nőnek, és ahogy több és több könyvtárat használunk programunkhoz, az

require(), include()
blokkok is gyarapodnak.

Ennek orvoslására

a PHP nyelvben az 5.0-ás verzió hozta magával az __autoload() mágikus függvényt.

Tovább »

20Dec

PHP - A kezdetek

A PHP egy általános szerveroldali szkriptnyelv, ami tökéletes dinamikus weboldalak készítéséhez.

Miért pont a PHP?

Ha valaki a webfejlesztés sötét bugyraiba kíván ereszkedni, akkor több eszköz is rendelkezésére áll-e célra. Ezen eszközök egyike a PHP, mely viszonylag könnyen megtanulható, ezáltal komolyabb előképzettség nélkül is lehet benne korán eredményeket elérni.

A kérdés az, hogy milyet.

A legtöbb, nem PHP fejlesztő igencsak megveti a PHP nyelvet, ugyanis ez a lazaság sok olyan kódot eredményezett, ami sokak szemét sérti. Biztonsági szempontból az internet a programnyelvek Mordorja, mivel rengeteg ponton elbukhat a történet és az unatkozó tizenévesek sem restek, hogy random módon teszteljék a lehetséges biztonsági réseket. A probléma ott volt, hogy ebbe a veszélyekkel teli környezetbe kerültek ki olyan kódok, amiket még bőven egy sandboxban kellett volna próbálgatni. Félreértés ne essék, senkit nem akarok lebeszélni a nyelv elsajátításáról, csupán szeretném felhívni a figyelmet arra, hogy az interneten ólálkodók nem válogatnak.

Tovább »

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