Monthly Archives: február 2010

Viszlát Origo, hello Arkon!

Twitteren már decemberben megírtam, a blogomra most sikerült összehoznom csak ezt a bejegyzést: január elejétől az Arkon Zrt-nél, közismertebb nevén az ingatlan.com-nál dolgozom. Időközben magánéletemben is jelentőségteljes változások történtek: december 16-án megszületett Nóra Anna névre hallgató kislányom.

Az Origos, konkrétabban iWiW Developer Supportos munkát tavaly 2008. decemberében kezdtem meg, így bő egy évet töltöttem ezen a poszton, s úgy érzem hogy a feladatomat több-kevesebb sikerrel, rengeteg energiát beletéve sikerült jól végeznem. Az iWiW-ben még rengeteg lehetőség van, s bízom benne, hogy az új (Origo) vezetőséggel ezeket még hatékonyabban is kihasználja majd a társaság. A poszt otthagyása nem saját döntésem volt, de tekintettel arra, hogy a kezdeti újdonságdömping, illetve kommunikálandó lehetőségek száma az idő során csökkent, logikus lépésnek gondolom az Origo részéről az együttműködés lezárását.

Az Arkonnál egy igen érdekes munkakörbe, egy jó társaságba, és a válság ellenére is prosperáló, hazánk egyik legjobban működő, kizárólag magyar tulajdonú vállalkozásába csöppentem bele pár hete. A munkám nagyrészt az IT osztályon zajlik, de ezen felül több érdekes feladattal és lehetőséggel is kiegészül. Az egyik ilyen, hogy jobban láthatóvá tehetem az Arkont a hazai fejlesztői közösség számára (a dinamikus növekedés, számos új projektterv további fejlesztők csatlakozását igényli – most is éppen keresünk programozókat, rendszergazdákat), de heti szintű szakmai előadások tartásával, beszélgetésekkel a belső oktatás is új lendületet kapott. A cég már érkezésem előtt bevezette a fejlesztésben a “scrum” metodológiát, melybe én is belerázódhattam pár nap alatt (egész hatékonynak tűnik). Hazánkban eddig más cégnél általam még nem látott, a Google által ismertté vált 80-20%-os munkabeosztásra is lehetőségem van, vagyis 20%-át egy hétnek a saját projektjeimre fordíthatom. Az ingatlan.com csoport részét képezi a linkcenter.hu, utcakereso.hu, telepuleskereso.hu, koponyeg.hu, alaprajz.com és a blogol.hu is, s a Miner is kicsit közeledni fog jellemzően leginkább apróságokkal (a linkcenter.hu keresőjét például pár hónapja már a Miner keresőmotorja szolgálja ki), így bőven van mivel ismerkedni egy ideig.

HipHop, avagy gyors PHP a Facebooktól

A napokban be lett harangozva (bár még nem jelent meg a cég nyílt forrású projektjei között, de dolgoznak rajta), hogy a Facebooktól egy a PHP sebességét megsokszorozó fejlesztést fogunk kapni. A HipHop for PHP nevű projektnek bár vannak viszonylagosan komoly kötöttségei, de egyrészt ezzel együtt is nagyon hasznosnak tűnik, márészt a PHP-nak bármilyen jellegű frissítés, új vérvonal csak jót tehet.

hiphop-php

A HipHop for PHP a gyakorlatban egy C++ fordító, illetve webszerver funkciót lát el. A Facebook azért fejlesztette ki, mert sem a PHP memóriafoglalásával, sebességével, sem a kódok más nyelvi környezetben felhasználhatóságával, s a kiterjesztések programozhatóságával nem voltak túl elégedettek, másfelől viszont már van egy hatalmas PHP-ben írt kódbázisuk, és a tanulhatósága is jó a nyelvnek.

Érdemes megnézni a prezentációjukat:

Illetve én is megpróbáltam összeszedni, hogy milyen gyakorlati különbségek vannak a HipHop és az eddig megszokott, Zend Engine-es PHP között:

C++-ra fordít

A HipHop a PHP forráskódot egy optimalizált C++ kódra írja át, melyet aztán a G++ fordítóval lehet futtatható kóddá alakítani. A nyelvi elemek, a teljes PHP-ben a programozó számára elérhető kódkörnyezet egy jól optimalizált C++ kódban testesül meg az átírás végére, melynek a PHP kódjához ezután nem sok köze van. Néhány – általában ritkán használt – funkció (legfőképpen a PHP kódból dinamikusan új kód előállítását megcélzóak): eval(), create_function(), a preg_replace “e” kapcsolója be lett áldozva a teljesítmény oltárán, mindazonáltal pár dolog, mint a call_user_func(), dinamikus változók, extract() megmaradtak. A hiányzó függvények miatt pár népszerű framework (konkrétan a Symfony felől hallottam ilyen véleményeket) várhatóan nem fog működni HipHoppal. Kérdés, hogy ki alkalmazkodik majd kihez, mennyit jelent majd a gyakorlatban a HipHop sebességnövekedése, s mennyire lesz kényelmesen használható – ezek majd a kód közzététele, és a lehetőségek pontos megismerése után derülnek ki.

Ami a sebesség növekedést illeti, a Facebook webes forgalmánál 50%-kal kevesebb processzor használatot tapasztaltak ugyanakkora, az API-nál 30%-kal kevesebb processzor használatot dupla forgalom mellett. Ezek nem feltétlenül tűnnek hatalmas számoknak, de ha belegondolunk, hogy több, mint 30.000 szerverük van (2009 októberi adat), akkor mindjárt komoly spórolásról beszélhetünk.

Fejlesztőkörnyezet

A fordítás a kód méretétől függően várhatóan nem tizedmásodperces, másodperces sebességű lesz, így leginkább egy deploy folyamatba lesz beilleszthető. Ez így nehézkes lenne fejlesztés közben, így elkészült egy HPHPi névre hallgató interpreter is, ahol kimarad a fordítgatás, így a fejlesztés könnyebbé válik. Ez a megoldás eval() függvényt is megvalósítja, de a HipHophoz közel áll.

Deployment

A deployment során nem PHP kódot kell a szerverekre eljuttatni, hanem egy darab lefordított, “hatalmas” bináris fájlt. Egy HipHop szerver egy processzként, threadek segítségével fog futni, leállás nélkül lehet új verzióra átállni vele.

PHP kiterjesztések

A Facebook programozók saját bevallásuk szerint jópár PHP kiterjesztést használnak. Nem túl tiszta számomra, hogy pontosan mely kiterjesztések lesznek a HipHoppal is használhatóak, de a fenti prezentációban 100.000 sornyi kiterjesztés függvényről beszélnek, mely a HipHop részét képezi – ezzel gondolom jópár kiterjesztés le van fedve.

Beépített webszerver

A HipHop saját webszerverrel rendelkezik, ami az én meglátásomban hatalmas előnyként jelentkezik, mindazonáltal a hoszting cégek dolgát ezzel sem könnyíti meg. Gondolom a webszerver a statikus fájlok kiszolgálására nincsen felkészítve, illetve nem feltétlenül támogatja a rewrite rule-okat, és más hasonló tipikus általános webszerver funkciókat sem, így várhatóan egy nginx/lighttpd felhúzása proxyként a HipHop elé lehet a legcélszerűbb felállás.

Roadmap

A HipHop PHP jelenleg az 5.2-es PHP verzióval kompatibilis, de szeretnék az 5.3-as verziót mielőbb beérni. További cél az Apache támogatása is.

Kinek jó, kinek nem?

Aki néhány nyílt forrású programot futtat egy hoszting cég szerverén, az várhatóan semmit sem fog profitálni a HipHop megjelenésével, sem a hoszting cégek, sem a nyílt forráskódú projekteket fejlesztők várhatóan nem fognak rövid távon átállni rá. A célcsoport sokkal inkább azok a saját nagyobb projekteket kivitelező fejlesztők, melyek jópár szerverre dolgoznak, API-t fejlesztenek, ahol a PHP kódokra jelentős terhelés jut. Ezekből adódóan a HipHop célja nem a Zend Engine lecserélése, ez egy párhuzamos vonal lesz.

Még több olvasnivaló

Ha valaki egy jó kis tech olvasnivalóra vágyik, akkor ajánlom neki Terry Chay írását, jó sok részletről lehet nála olvasni egy hosszú-hosszú blogbejegyzés keretében.