A 2012. március havi bejegyzésekhez jó szórakozást kíván Marty McFly!


Hű, de szép ez a kártya!

És tényleg:

MKB SZÉP-kártya

Tök jó, hogy van egy ilyen, az viszont vicces, hogy az MKB-s változatot csak áprilistól fogadják el az OTP-s kártyát elfogadó helyeken, emiatt ott van rajta a pénz, de néhány egységet leszámítva nem sok lehetőség van a költekezésre. A NetPincéren már megy (habár egy nem biztonságos oldalra dob át, és kicsit még bizonytalannak tűnik a dolog). Holnaptól elvileg minden OTP-s terminál megeszi majd, de a Mekiben például azt mondták, hogy nem hallottak erről.

Egyetlen hátrányát láttuk eddig, mégpedig a közös rendeléseknél. Eddig ugye ha több ember étkezési utalvánnyal fizetett volna, összerakták amijük volt, aztán az ment a futárnak. Most viszont a netes felületen csak egy kártyával lehet fizetni, vagy ha kijön a futár, és nála van a terminál, akkor tételenként lehúzva, ami nem praktikus.

Szóval a szervezése a dolognak annyira nem sikerült jól a’ zállam részirűl, de egyébként nincs probléma. Sok helyen nagyon rugalmasak, az iroda közelében lévő étteremben például egy netes felületen pötyögik be az adatokat, mert termináljuk még nincs. (Az mondjuk vicces, hogy a bizonylaton a kártya minden adata szerepel, amivel így a neten lehet vásárolni.) PIN-kód nincs, csak aláírni kell.


PHP 5.4

Még októberben egy másik blogba volt szerencsém egy hosszabb bejegyzést írni az akkor még elég brékingnek számító PHP 5.4 újdonságairól. Az a blog zártkörű, de a bejegyzést most itt is közölhetem, illetve, azóta foglalkoztam is jó pár órát az 5.4-gyel, és gondoltam összeírom a tapasztalatokat.

Március elsején jelent meg a PHP 5.4.0, amely a PHP hivatalos oldalán letölthető és kipróbálható, Windowsra van kész változat, illetve például OS X-re is lehet ilyesmit találni, ha az ember nem akar maga fordítani (én nem szeretek). Az új verzió főként nyelvi változtatásokat, hibajavításokat és tucatnyi elavult, deprecated funkció takarítását hozta. Lássuk, mik ezek az újdonságok.

Traitek

A trait voltaképpen egy viselkedésminta, amely a horizontális újrahasznosítást segíti elő. Ez így egy nagyon tudományosan megfogalmazott mondat, de mit is jelent vaójában? A trait voltaképpen egy osztály és egy interfész keveréke. Viselkedésmintát (akár komplett metódusokat és osztályváltozókat) írhatunk le benne, majd egy osztály vagy akár maga egy trait felhasználhat több ilyet. Fontos megjegyezni, hogy az instanceof segítségével nem tudjuk ellenőrizni, hogy egy osztály rendelkezik-e valamelyik viselkedésmintával, azonban a ReflectionClass::getTraitNames(); metódusa egy tömbbel tér vissza, amely a megvalósított viselkedésminták megnevezéseit tartalmazza. Itt jegyezném meg, hogy nem árt kerülni, mivel – mint ahogyan azt láthattuk korábban – a ReflectionClass elég költséges mutatvány.

A viselkedésmintákról további információk itt olvashatók.

Tömbök

Persze, nem a tömbök megjelenése jelenti az újdonságot, hanem néhány hasznos változtatás ezen a területen. Talán a legfontosabb, hogy mostmár a metódushívásból érkező tömbök elemeire közvetlenül is hivatkozhatunk. A deklarálás és feltöltés is sokkal egyszerűbb lett; az array(); meghívása nélkül, szögletes zárójelben felsorolva is inicializálhatjuk a tömböt.

Callback metódusok kényelmesebben hívhatók

Nem kell a call_user_func(); metódushoz nyúlnunk, ha valami hasonlót szeretnénk:

Feltöltés adatai, megszakítása

Könnyedén kinyerhetünk egy feltöltéssel kapcsolatos minden információt, így sokkal egyszerűbb például a feltöltést állapotát százalékban, vagy mondjuk a hátralévő időt egy AJAX-szkript segítségével jelezni.

Beépített webszerver

Tesztelésre kiváló lehet, illetve ha csak gyorsan szeretnénk megnézni valamit, Apache vagy bármely más webszerver telepítése nélkül:

php -S localhost:8080 -t /var/www

A -S (ne keverjük a kisbetűs változatával) kapcsolóval kérhetjük, hogy szerverként fusson a PHP, majd a hosztot és portot megadva a -t kapcsolóval még a home könyvtárat is beállíthatjuk.

A webszerverrel játszottam a legtöbbet, az a személyes tapasztalatom, hogy nagyon jó ötlet, hosszú távon, ha nem hanyagolják el a fejlesztést, praktikus lehet, és amennyire meg tudom ítélni, terheléselosztás tekintetében nagyon praktikus ez a felállás, lásd a »Play! Framewor« példáját.

Mire jó? Tesztelni. Kipróbálni gyorsan valamit, lefuttatni gyorsan valamit, belőni egy gyorsan elérhető PHP-t, ami fut. Konkrét webes projektjeimet nagyon nehézkesen bírtam működésre, látszik, hogy sokkal inkább az Apache-hoz szocializálódtunk.

Mire lehet jó még? Személy szerint egy fájlfeltöltő rendszert terveznék alá, egészen konkrétan egy képkezelőt. Akármilyen img.valami.tld, szépen beállítva, hogy az oda érkező kéréseket egy PHP 5.4-es szerver szolgálja ki, és könnyedén megtudhatunk a feltöltésről minden információt (hol tart, mi a státusza, akármi), a PHP 5.4-re frissítése nélkül. (Ami persze jó lenne, ha kötelező lenne, de a gyakorlatban tudjuk és látjuk, hogy sokszor még az 5.2-t sem lehet eldobni.)

Egyéb, nem elhanyagolható apróságok

Bináris számformátum

A 0b prefixszel már közvetlenül dolgozhatunk bináris számokkal.

Jobban támogatott multibájt

A multibájt funkciók engedélyezéséhez már elegendő a php.ini fájlban módosítani a zend.multibyte opciót.

Hibajavítások, optimalizálások

Gyorsabb, szebb és okosabb a PHP 5.4, rengeteg hibajavítást és optimalizálást hajtottak végre. Nem mértem, de tervezem.

Csendesebb @csendes operátor

Valószínűleg ennek is rengetegen örülnek: a @ operátor működése sokkal gyorsabb lett. Ennek oka egyszerű: nem két ini_set() fut le a háttérben, illetve a generált opkód mérete is sokkal kisebb.

JIT-alapú lett a $GLOBALS
A változó már csak akkor kerül inicializálásra, ha hivatkozunk arra. Teljesítményjavításnak kiváló, azonban érdemes odafigyelni a különböző PHP accelerator megoldásokra, ezeknek lehet vele problémájuk.

Viszlát, register_globals!

A vonatkozó ini-beállítások megszűntek, hasonlóképpen a register_long_arrays, a „csökkentett mód“ és a magic quotes is erre a sorsra jutott. Érdekesség továbbá, hogy az E_STRICT is megszűnik, beolvasztották az E_ALL-ba.

Végezetül

Rengeteg hasznos újdonságot, kényelmes módosítást és a még tökéletesebb működést elősegítő fejlesztést tartalmaz a PHP 5.4. Mostantól kezdjünk el csúnyán nézni azokra, akik megkérdezik tőlünk, hogy PHP 5.2 elegendő-e egy szerveren. Nem, nem elegendő, hajtani és küzdeni kell, hogy a régi PHP 5.2-es kódok legalább az 5.3-as szintet elérjék (onnan egyébként kis lépcső az 5.4). A migrálás nem nehéz, egy általános symfony 1.4-ben készült kód például zökkenőmentesen megy tovább 5.4 alatt, érzésre gyorsabban is (de erre mérget nem veszek, mert minimálisan sem jártam utána, hogy tényleg így van-e).

Szóval ezek vannak, érdemes kísérletezgetni. A traitekre sokan csúnyán néznek, mondván az OOP elmélet kiherélése, de rengeteg példát tudok, amikor hasznos lehet.

Töltsétek, nézzétek, írjátok, használjátok, szeressétek. Megéri, jó móka.


Print is Dead

Ezt mondogatják régóta, és persze mindenki legyint rá, hogy ugyan, a papír sosem hal meg. Aztán amikor néhány napja az Encyclopedia Britannica bejelentette, hogy 244 év (1771-ban jelent meg az első) befejezik a nyomtatást, a 2010-es változat az utolsó, ami még ebben a formában elérhető, az összes többit ezután pedig digitális formában értékesítik majd.

Arra leszek az egészből kíváncsi, hogy mikor jön elő egy nagyobb könyvkiadó az ötlettel, hogy mostantól csak elektronikus olvasókra dolgoznak, vesszen a papír.

Persze, ha a papírnak olyan lenne a minősége, mint a polcomon a régi könyveknek, amit a nagymamám óta a családban három ember olvasott el legalább háromszor, és még mindig jó minőségű, ellenben a mostanában gyártott színes-szagos, ragasztott könyvekkel, amiket két olvasás után már lehet foltozgatni, akkor máshogy lennének a dolgok.

Magamon mindig furcsálltam, hogy a filmeket sosem lemezeken szerettem volna gyűjteni (bár tetszene a gyűjtemény a polcon), inkább virtuális formában, azonban a könyvekkel az a helyzet, hogy kell a fizikai érintésük. Mindamellett, hogy szeretek e-bookot is olvasni.

Néhány év, talán egy-két évtized, és a papír formátumú könyv valami nörd retró móka lesz.


Apró gondolat a motiválásról

Vannak emberek, akikre különböző okokból kifolyólag felnézünk (és ezeket az okokat nagyon ritkán, valószínűleg sosem a behódolás vagy bármi hasonló emberi tényezők alkotják). Sokszor észre sem vesszük, de várunk a körülöttünk lévő – főként ilyen – emberek visszajelzésére, támogatására. Ha pedig egy-egy alkalommal ez megtörténik, tovább megyek: ha bizonyos alkalmak során ezek a személyek konkrétan támogatásukról vagy velünk kapcsolatos elégedettségükről, belénk vetett bizalmukról győznek meg minket – akkor azt lehet tökéletes motivációnak nevezni.

Ennél több pedig nem kell.


Doktor Plagizátor

Dr. Schmitt Pál, országunk köztársasági elnöke plágiumot követett el, doktori címét mégis megtarthatja.

Ezzel az egésszel (és persze azzal, hogy egyesek úgy, mint én most, felháborodnak) lehet elérni, hogy a magyar felsőoktatásban szerzett papír a Zewa higiéniai termékeivel egyenértékű legyen, csak kicsit durvább anyagú.

Bárhol máshol nyugatra ez az egész a következőképpen nézett volna ki: Schmitt Pál másnap kiáll ország-világ elé, elnézést kér a létező összes magyartól, tanártól, tanulótól és mindenkitől, majd fél órával később Schmitt Pálként, doktori jelzés nélkül aláírja a lemondó nyilatkozatát, majd eltűnik a nyilvánosság elől gondolkodni azon, amit tett. Tőlünk keletre az utóbbi rész úgy alakulna, hogy az esti showműsorban kardjába dőlne.

Az indoklás még ennél is nevetségesebb, mondván, hogy a felelősség nem az övé, hanem azoké, akik nem ismerték meg a plágiumot. Holnapi tervem, hogy kirabolok egy bankot és az éles webszerverekről letörlök véletlenszerűen fájlokat, aztán majd mondom a rendőröknek meg a főnökeimnek, hogy ja bocs, nem szóltatok, hogy ezt így nem lehet.

Politikai, nemi, vallási és mindenféle egyéb beállítottságtól függetlenül, amit ez az ember művel, szánalmas és megvetendő. Nem szabad, hogy egy országot vagy egy népet ilyen ember képviseljen, mert azzal saját magunkat tesszük nevetségessé, és ezekkel az elvekkel azonosulunk magunk is.

Szomorú, hogy ilyen dolgok manapság megtörténhetnek.