PHP

Speciális tesztkörnyezet, avagy SNMP a Dockerdőben

Nyomtató kép a pixabay.com-ról

Minden szoftvernek biztosítani kell egy tesztkörnyezetet. Ez néha nagyon egyszerű, néha pedig igazán elgondolkodtató. Mi van, ha a tesztelendő szoftvernek egy olyan eszközzel kell kommunikálnia, amit nem lehet minden sarkon beszerezni, ráadásul helyhez kötött, a fejlesztés viszont nem? Ebben a cikkben nyomtatókkal történő SNMP kommunikációról fogok mesélni Docker környezetben. Mivel tud segíteni és mi okoz némi fejtörést a konténerek világában.

Megosztás/Mentés

Composer helyes használata Dockerrel

composer logo a getcomposer.com-ról

A Composer a PHP függőségkezelője, ami szintén PHP nyelven lett megírva, és jellemzően egy composer.phar nevű fájl telepítésével használjuk a projekt gyökeréből vagy rendszermappából. Éles környezetben nem szükséges a webszerveren lennie, csak a függőségek letöltéséhez szükséges. De akkor miért is kérdés egyáltalán a Dockerrel használata? Ha tovább olvasod a cikket, hamarosan megtudod.

Megosztás/Mentés

PHP alkalmazás fejlesztése Docker konténerekkel

php elefánt kép pixabay.com-ról

Az előző részben megmutattam, hogyan lehet statikus tartalmakat, kliensoldali webes alkalmazásokat fejleszteni és közzétenni Docker konténerben, most viszont a szerveroldali programokon a sor. Ebben az esetben az komplikálja a feladatot, hogy már nem elég a kliensnek odaadni a programfájlokat, azokat szerveroldalon kell értelmezni. Ez persze nem feltétlen jelentene önmagában problémát, mivel az értelmező és a szerver lehet egy konténerben is. PHP alkalmazásnál viszont érdemes külön konténerben futtatni a PHP értelmezőt és a webszervert. Az alábbiakban ennek mikéntjéről fogok írni.

Megosztás/Mentés

BB kód youtube videókhoz

Youtube videóra utaló borító kép

A napokban kérdezte tőlem egy ismerősöm, hogy hol talál youtube linket értelmező BB kódot. Nyilván, ma már mindenhez írtak ezerféle megoldást, de egy gyors Google kereséssel nem találtam megbízhatónak tűnőt, ezért kis gyakorlásként írtam egyet. Ezen azért nyilván lehetne még optimalizálni, de ha valakinek hiányzik egy függvény, amivel Youtube videók linkjét vagy csak azonosítóját alakíthatja lejátszható videóvá, akkor használja bátran.

Megosztás/Mentés

Absztrakt osztály, interfész és trait-ek közti különbségek

cikk borítókép

Tegye fel a kezét, aki még nem bizonytalanodott el abban, hogy mikor nyúljon absztrakt osztályhoz és mikor interfészhez! Annak ellenére, hogy a különbséget általában mindenki érti vagy érteni véli, mégis néha felcserélhetőnek tűnik a kettő. És ez pedig csak bonyolódott PHP-ben, mióta megjelentek a trait-ek, amik sok esetben nagyon vonzónak tűnnek. Ezekről mind írtam 2011-ben egy összefoglaló cikkben, amit szintén érdemes elolvasni, de vajon mikor, melyiket kell alkalmazni a gyakorlatban? Ezt igyekszem tisztázni ebben a cikkben.

Megosztás/Mentés

Processzkezelőkkel szemtől szemben: HTTPD MPM és PHP FPM változatok linux környezetben

cikk borítókép

Webszerverek beállításánál az MPM konfigurálása egy nem elhanyagolható kérdés. Nem az üzemeltetett weblapokhoz optimalizált értékekkel ugyanis előfordulhat, hogy az oldal belassul vagy a látogatók hibaüzenetekkel találkoznak, mert a szerver nem képes több kérést kiszolgálni egyszerre, vagy éppen erőforrást pazarolsz a webszerverre, miközben máshol nagyobb szükség lenne rá. Az Apache HTTPD-nél ismert MPM-hez hasonló a PHP-nél az FPM, ami szintén a processzek kezelését végzi a PHP értelmező esetén, amikor az nem a HTTPD moduljaként működik, hanem külső szolgáltatásként. Mivel a "rimelek.hu" egy időben rendszeresen megállt, akkor megelégeltem tudatlanságom és benéztem a színfalak mögé. Ebben a cikkben összegzem a tanultakat.

Megosztás/Mentés

Phar fájlok, avagy PHP archívumok

A Phar egy mozaik szó, ami a PHP Archive, azaz a PHP Archívum szavakból jött létre és egyben az archívum fájlok kiterjesztése is. Java programozók a JAR-hoz, illetve WAR-hoz hasonlíthatják. Bár bizonyos tekintetben a Windows DLL fájljaival is párhuzamot vonhatnánk, hiszen egy fájlba csomagolt programkönyvtárról beszélünk. A DLL-ekkel ellentétben viszont a PHAR fájlok futtathatók is, mint egy exe. Természetesen attól távol áll, mivel továbbra is a PHP értelmező lesz az, ami az értelmezést, futtatást végzi.

A PHAR kicsit mostoha gyerek, mert el is terjedt és nem is. Míg a JAR gyakorlatilag kéz a kézben jár a Java-val, a PHP archívumok nem ennyire általánosak és bizony gondolkodni kell rajta, hogy mikor, mire is érdemes használni, ha egyáltalán érdemes.

A PHP, fájlkiterjesztések és kódszervezés című cikkben kihagytam ezt a formátumot, ami lehetett volna szándékos, de szimplán elfelejtettem. Most viszont alaposabban körbejárom a témát. Igyekszem választ adni néhány potenciális kérdésre, illetve mutatok példákat és felhívom a figyelmet a buktatókra.

Abból, amit ez a formátum ígér, nem sikerült mindent kipróbálnom. A dokumentáció gyakran hiányos, és nem is beszélnek róla mások sem. Ettől függetlenül összeállítottam egy példasorozatot a főbb funkciók bemutatására a teljesség igénye nélkül. A példák elérhetők github-on vagy letölthetők Docker image-ként is "1.0" tag-et megadva.

Megosztás/Mentés

PHP, fájlkiterjesztések és kódszervezés

A fájlkiterjesztések kérdéséről azt gondolhatja mindenki, hogy ez egyértelmű, pedig nem az. Legalábbis sokaknak valószínűleg nem. Megpróbálom tehát tisztázni, hogy egyáltalán mi a jelentősége a témának, főként PHP programozás esetén, de általában véve is. Kitérek arra, hogy mikor, milyen kiterjesztést érdemes választani, illetve mikor, milyent nem. Ha pedig nem javasolt egy megoldás, akkor mi az, ami a követendő út.

Megosztás/Mentés

Operator overloading: Operátor túlterhelés PHP -ben

Ma egy érdekességgel készültem. Mégpedig a címben szereplő operátor túlterhelés bemutatásával. Azért csak érdekességnek és nem "hasznosságnak" hívom, mert a hozzá szükséges pecl kiterjesztés még nagyon is beta. Annyira, hogy csak erőszakkal lehet feltelepíteni. És 5.5-ös PHP-vel még nem kompatibilis.

Aki mondjuk programozott már C++ -ban vagy C#-ban, annak nem idegen a fogalom. A többiek kedvéért annyit, hogy ez egy lehetőség arra, hogy a nyelv beépített operátoraival megismertessük a saját, egyedi típusainkat, osztályainkat is. Így össze lehet adni egy Number típusú objektumot egy egész számmal például. Vagy az összeadás speciális jelentéssel bírhat, és hatására akár egy halmazt is bővíthetünk.

Megosztás/Mentés

XDebug és NetBeans távoli hibakereséshez

Még 2009 októberében írtam cikket Hibakeresés PHP-ban címmel. Ott főként elvi megoldásokról és a forráskód megváltoztatásával történő hibafelderítésről volt szó. Kézi beavatkozást igényelt és azt, hogy el ne felejtsük a végén törölni a módosításokat.

Van azonban egy jóval hatékonyabb módszer is, amit ugyan megemlítettem már akkor is, de ebben a fejezetben konkrétan az XDebug telepítését, konfigurálását és használatát mutatom be a jelenleg általam preferált NetBeans segítségével.

Megosztás/Mentés