Go PHP 5 - a vezető nyílt forrású szoftverek összefognak
Go PHP 5!
Azóta sok eszmecsere zajlott erről a Drupal fejlesztői listán, és a nyilvánvaló konklúzió az volt, hogy ha csak egyes szoftverek váltanak PHP 5-re, akkor a hoszting cégek PHP 4 mellett maradásával abszurd módon helyzeti előnybe kerülhetnek azok, akik nem váltottak, hiszen ők továbbra is mindenhol futtathatóak lesznek. Ezt Robert Douglass és Larry Garfield a Drupal fejlesztői közösségéből olyan komolyan vette, hogy egy társadalmi mozgalmat kezdtek szervezni. Lényegében az egyenlet mindkét oldaláról megkerestek számos szereplőt: vezető nyílt forrású szoftverek fejlesztőit és hoszting cégeket, menet közben bevonva phpMyAdmin és Joomla fejlesztőket is a szervezésbe.
A nemrég nyilvánosságra hozott Go PHP 5 kezdeményezés lényege, hogy jól ismert, nagy nevű nyílt forrású szoftverek (mint a phpMyAdmin, Typo3, Drupal, stb) megegyezzenek egy céldátumban (ez 2008. február ötödike lett), amely után a PHP 4 kompatibilitást nem tartják célnak. Az ezt követően megjelenő újabb verziók már csak PHP 5.2-vel működnek majd együtt. Minél több projektet megnyerve ennek, a hoszting cégek is nyomás alá kerülnek, ráadásul a mozgalomhoz kapcsolódó hoszting cégeknek plusz reklámot is jelent a részvétel.
Így a szervezők reményei szerint a most indult mozgalom folyamatos erősödésével végre tényleg alapvetőnek tekinthetjük a PHP 5 használatát, ráadásul segíthetjük a technológia előrelépését azzal, hogy a PHP nyelv fejlesztőinek nem kell egy régi változatot karbantartaniuk, az újabb kiadások bővítésével és hibajavításával tölthetik idejüket.
végre
lol?
aha
akkor csak opera
Tetszik
Főleg itthon...
És ha csak 5-öst szolgáltat?
5-ös alapból
Olyan alapszoftverek, mint a phpMyAdmin, amit a hoszting cégek az adatbázis irányítópultokban alapvetően használnak, nagyon tudják segíteni a váltást, hiszen legalábbis az irányítópult alatt 5.2-es PHP lesz, ha a szoftver másképp nem fut, így a cégnek lesz ezzel tapasztalata, és következésképpen a kliensek is tudják majd használni remélhetőleg.
Nem macerás
A szerveremen azonnal volt 5.x amikor kijött. És van 4.x-is, ha valakinek az kell.
Az php4 program 5 alatti inkompatibiliásról meg azt tapasztaltam, hogy a bénán megírt kódók nem futottak csak php5 alatt. Minimális dolgot kell átírni ahhoz, hogy fusson php5-ön egy program.
Mintha nem ártottak volna eddig is eleget
Picit megnyugodva, de azért még vörös fejjel pár példa:
Frissítek PHP 5.2.2-ről PHP 5.2.3-ra. Nem nagy dolog. Nem várná azt az ember, hogy a hosztolt oldalak fele azután igen furcsán működik majd. Ahogy kis nyomozás után kiderül: a substr függvény működése picit megváltozott. A substr ('Hello', -3) az utolsó 3 karaktert adja vissza. A probléma ott kezdődik, ha a negatív szám nagyobb a string hosszánál. Pl substr ('Hello', -100)
Az 5.2.2-ben az eredmény az egész string (értelem szerűen, konzisztensen a függvény viselkedésével más hasonló esetekben). Az új verzóban viszont egyszerűen semmi, egy üres string.
Én szerencsés helyzetben vagyok, mivel főleg saját oldalaimat hostolom, miután kinyomoztam a hibát (munkaórák, amiket senki nem fog kifizetni), módosítottam a legtöbb helyen ahol hasonlókat találtam, egyszerűen orvosolható a dolog: substr ($s, max (strlen ($s), -100)) De mi van azokkal, amiket nem találtam meg, csak valamikor, valahol majd előjön egy újabb furcsa hiba? Vagy ha netán más oldalait hostolom, szóljak nekik, hogy "gyorsan beszéljenek a programozójukkal, mert addig nem működik az oldaluk". A kiesett bevételt pedig majd Rasmus Lerndorf állja.
Logikus megoldás a downgrade, visszarakom az előző változatot, ezt viszont sok disztribúció nem támogatja. Max telepítem "kézzel" a forrásból ami hasonló katasztrofális eredményekkel járna (configure paraméterek stb...) biztos nem ugyanaz a php lenne, amit azelőtt bejárattam (a disztribúcióban bekonfigolt változat).
Újabb csodás ajándék: a beépített DateTime osztály. Van egy keretrendszerem. Természetesen van benne DateTime nevű osztály. Talán a PHP5.2-től került bele a kódba ez a beépített osztály. Innentől kezdve nem működött a kódom, mert PHP5-ben nem lehet felülírni a már deklarált dolgokat (nincs dupla deklaráció). Vagy néhány újabb munkaóra árán megpróbálom átnevezni az osztályomat és az összes rá való hivatkozást, ami jó esetben egy egyszerű "replace in files" lenne, de mint tudjuk az életben ritkák a jó esetek. Inkább csináltam egy patch-et, ami a beépített osztály nevét átírja DateTimePHP -re.
Melelsleg, csak hogy átadjak frusztrációmból egy keveset eme elkeseredett hozzászólás olvasójának: a legnagyobb fintor a dologban az, hogy ezt az osztályt nem kézzel kell kézzel példányosítani, tehát nem fogsz olyat írni, hogy $xy = new DateTime (); . Nem fogsz, mert az objektumot egyszerűen a date_create függvénnyel kell létrehozni, tehát: $xy = date_create (); .
Elképzelem a beszélgetést a PHP jó humorral megáldott készítői között:
- Te, csinálni fogunk egy osztályt, aminek a nevét igazából senki sem fogja látni. Minek hívjuk? Legyen PHPInternalDateTime? Vagy PHPClass813? Vagy __DateTime?
- Ugyan sokkal viccesebb lenne, ha valami olyan nevet lőnénk ki, aminek értelme is van, és valószínűleg használja már a közösség fele.
- Remek ötlet, Rasmus! Legyen símán DateTime... Már előre sajnálom azokat a szerencsétleneket.
[mindketten nevetnek]
Lehet szomorúnak lenni, hogy nem terjednek az új verziók, de nem a hosting cégek háza táján kéne keresni a problémát. Mi lenne mondjuk egy egyszerű kompatibilitási .ini beállítással? Milyen csodás lenne egy htaccessben:
nem Rasmus
szerk:
Igazábol csak most gondoltam át a konkrétan az említett példát, és hát ez erősen user error: nem is lenne logikus az ahogy múködött, ráadásul egy nem dokumentált működésre alapoztál, ami mindig eléggé meggondolatlanság/ingoványos talaj, és mint az eset bizonyítja nem csak a "nagykönyv" aggodalma, hanem ténylegesen szívni lehet vele.
Viszont nem hiszem, hogy ebben alapvetően Rasmusnak lenne döntő szerepe, sokkal inkább az elsietett Zend lépéseknek. Jópár olyan vitát láttam már a belső fejlesztői listán, ahol xz felvetett egy-egy változtatással kapcsolatban aggályokat, aztán végül ezek szőnyeg alá lettek söpörve, mert túl lassú lett volna megcsinálni, inkább kijöttek hamarabb egy újdonsággal, aztán egy csomó váltás árán jutottunk el a végső megoldáshoz. Sok apró átgondolatlanság van a PHP körül.
Üdv,
Felhő
Tudom... tudom
Ha a függvény paramétereit nézzük, akkor valóban az újabb (false) a logikus lépés, mivel "out of bounds" pozíciót adtam meg, de én ha már "magasszintű" nyelvről van szó több teret várnék a paraszti észnek:
első max 100 karakter: substr ($s, 0, 100);
utolsó max 100 karakter: substr ($s, -100);
persze helyesen
utolsó max 100 karakter: substr ($s, max (- strlen ($s), -100));
amivel avalahogy a "magaszintű" logikám vonakodva barátkozik meg, de teljesen igaz, hogy ha az apróbetűs részt :) elolvasom, én csináltam rosszul.
Én is tudom, hogy a patch nem a legszebb megoldás, és amikor frissítek PHP-t (mert saját magam ellensége vagyok), meg kell nézni, hogy jó-e még a patch. (Eddig még mindig jó volt az eredeti változat). Mentségemre annyit tudok felhozni, hogy a PHP firssítés általában egy nagyobb tatarozás része, ami amúgy is egy nagy megrázkódtatás, bele sem akartam gondolni, hogy most az összes oldalt kigyomláljam. Hosszú távon természetesen a klassznév átírása a jó megoldás, de az teszteléssel meg hasonlókkal jár, amihez sehogy sem fűlik a fogam. Aztán hónapokig DateTime-ra fog úgy is állni a kezem. Egyáltalán milyen új nevet adjak neki? :)
A függvények verziózása viszont annyira pofonegyszerű megoldás lenne, hogy már szinte csalásnak számít. Mindig amikor megváltoztatnak egy függvényt a végén egyel növelik a számot. Amikor kiadnak egy PHP release-t letárolják, hogy mik az aktuális változatok. Ha "kompatibilitási módban" vagyunk egyszerűen csak a régi változatot (mondjuk substr7 a substr9 helyett) képezzük le a PHP hívásokra.
Persze kell egy bugfix policy, esetleg egy STRICT verziózás, ami nem veszi figyelembe a bugfixeket sem (azoknak akik nem olvassák el az apróbetűt :)
Teljesen igazad van
A függvény nevek konzisztens elnevezése sem ártana a php-nek (mysq* vs pgsql* függvények).
Mondjuk, a fenti DateTime() -re nem tudom mit kellene kitalálni... A nyelvnek fejlődnie kell, így valahogy el kell nevezni egy osztályt nekik is. Talán ideje lenne a névtereket bevezetni? :P
Mondjuk, szerencsére, én már minden rutint egy saját class-ba teszek, és static-ként hívom őket (majdnem névtér), a saját class-okat is előtaggal jelölöm. De ennek ellenére bármikor összeakadhat majd egy későbbi php kiadással az én általam készített cucc. :(
nem tudom, miért húzzák
Prefix
Prefixelés
És hány betűs a jó prefix? Elég a 2 vagy inkább 3 legyen? Konstansok legyenek ize_konstans_neve osztályok meg IzeClassNeve? Manapság egyre gyakrabban kell használjam eme kifejezést: agyrém :)
A névtér hiánya az ő saruk. De ha egyszer ilyenre tervezték a nyelvet, akkor legyenek konzisztensek, és prefixeljenek mindent (lásd mysql_* és pgsql_*) ahelyett, hogy szivatják a saját táborukat.
Prefix
Régi oldalak
lehet PHP 4 is!
php4+php5=php9?
Szoval valami jo kis leiras kellene linuxra, hogyan lehet futtatni a kettot egymas mellett, ugy, ahogy mondod.
hihetetlen
Üdv,
Felhő
hm
Egy nagy rakás ember munkáját keserítik, bonyolítják meg, s okoznak momentán felesleges kiadást.
opensource közösség
Persze ha lesz, aki megfizesse, nyílt forrású szoftverről van szó, úgyhogy *mások* kiadhatnak újabb hibajavításokat, fejlesztéseket akár magából a PHP-ből, akármelyik GoPHP5-ben résztvevő nyílt forrású szoftverből. Ezeket a felhasználók vagy elfogadgák, vagy nem. Ez hasonlóan történt a PHP 3-mal is egy ideig.
Ezer éves verziók
Az újításokról meg annyit, hogy örvendetes például, hogy van destruktor, de úgy általában egy lyukas garast nem adnék értük.
destruktor
nem érted
Lehet propagálni, lehet reklámozni, lehet tolni mindenki képébe "Vegyen" ön is PHP5-t. Ezzel semmi gond. A gond akkor van, amikor nyomást gyakorolnak elterjedt, erőfölényben lévő szoftverekkel, olyanokkal, mint pl. a PhpMyAdmin. Mindig igaz, hogy akinek N%-nál nagyobb a piaci részesedése, az bármit megtehet.
Szóval nem a céllal van a gond, hanem az eszközökkel.
de itt pont a közösség fogott össze
Üdv,
Felhő
szolgaltatot is kerdeztel ?
Ez ugyanaz, csak másik irányból
Szóval lehet mondani, hogy "fújfúj köcsög m$, gyújcsukfe'", viszont ott legalább látni új technológiákat és fejlődést. Itt meg legszívesebben mindenki leragadna egy szép kis álomvilágban.
gyújtsukfe
M$ - Májkrémszoft - Májkroszar - kérem kapcsolja ki!
Saját szerény véleményem és koránt sem mérvadó meglátásom szerint:
- A Microsoft a Vista megjelenéséig képtelen volt komoly előre lépéseket tenni, mert úgy érezte, muszáj visszafele kompatibilisnek maradnia. Az XP éppen emiatt csomó olyan lyukat, rést, kiskaput tartalmaz, ami olykor potenciális veszélyt és sebezhetőséget jelent, csakhogy olyan bugos és rendszerszempontból akár veszélyesnek is minősíthető - mondjuk ki - tákolmányokat engedjen futni, mint mondjuk egy VGA driver (pl az IRQ kezelés), vagy mint a legtöbb nem Microsoft termék (többnyire a memória kezelés). Rájött végre, hogy ez az út nem járható. Igenis a programozók, akik a Windows alá írnak programokat / drivereket, lesznek szívesek betartani a szabályokat, és nem kiskapuk révén eredményeket elérni. Ezért szídják a Vistát most pl. De ezzel egyedül van a Microsof? Szerintem nem.
- Láttam én már Linuxon programot beszólni, hogy nem fog futni, mert régebbi kernel kell neki, mert az újban olyan javítás van, ami miatt nem fog menni. KISKAPU! Igaz itt a program szólt be, de nem tartom kizártnak, hogy a kernel fejlesztői olykor nagyívben tesznek a visszafele kompatibilitásra.
- OSX-en is láttam hasonlókat.
Szóval mindenhol jelen van a support vége. (Jóhogy nem a MOL meg nyitva tartotta volna az utolsó ÁFOR kutat, hogy a Ladások ott tankoljanak, mert ahhoz szoktak...) És ha ráadásul ennek szükségességét maga a közösség mondja ki, mégjobb. Hajrá!
A Go PHP5 kezdeményezéssel pedig teljesen egyetértek. Ahelyett, hogy itt (vagy akárhol máshol) vitáznak az emberek, már rég el kellett volna kezdeni átírni/újraírni a kódokat. A PHP4 szép és jó volt, amikor a csúcson volt, de vannak utódok, trónkövetelők, akik jogosan várják, hogy előreléphessenek.
Igazság szerint én már a PHP6-ot várom és a névtereket. Már most próbálom úgy írni a saját (privát) kódjaimat, hogy az az eddig megismert PHP6-os újításoknak megfeleljen (pl. a referenciák terén), de legalábbis majd nagyon kis munkával lehessen átállni. Szolgáltatót/Szervert meg majd keresek. Pedig még a PHP5 jóságait sem használom ki teljesen (pl. a Reflection Object-tel is csak most ismerkedek).
De mint írottam volt, ez mind csak privát vélemény, nem feltétlenül pontos vagy helyes minden állításom (főleg az IRQ-k kapcsán). E szerint kéretik kezelni. Akinek nem inge, ne vegye magára.
Ja és ez NEM saxus hozzászólása ellen lett megírva, hanem inkább helyeslő bólogatásként... mielőtt félreértené valaki... :)
Üdv,
Gixx