Izomból megy a visszaszámlálás

Rövid összefoglaló a legutóbbi post óta

A rendszer magjának UML terve a megvalósítási szakasz előtti állapotban van - gyakorlatilag apróbb hibákat szemezgettünk benne az elmúlt nagyjából 2 hétben, illetve jómagam most nézem át a véglegesítés előtt utoljára, utolsóként. Terveink szerint március első hetére a rendszermag 0.1a jelzésű verziója elkészül, amelynek - úgyszólván - képzeletbeli popsiján még rajta lesz a tojáshéj: azaz még csak a fejlesztés alatti tesztelése fog megtörténni. A verziószámok tekintetében reményeim szerint a következő lépcsőfok a 0.1b egy már alaposabban tesztelt változat lesz, dokumentált hiányosságokkal és hibákkal, amelyeket az első megtekinthető változatig, a 0.1-rc1 jelűig záros időn belül orvosolni fogok. Magát a rendszert jelenlegi állapotában nem nevezném eltúlzottnak - habár idestova legkevesebb három évnyi történet van mögötte:

  • Pontosan 16 osztályt számlál a rendszer szíve - és ez a szám csak akkor fog változni holnap reggelig, ha valamilyen tervezési hiba ezt indokolttá teszi.
  • Magát az UML-t (szigorúan a rendelkezésre álló szabadidőmben) nagyjából az elmúlt 2 hónap formálta azzá, ami most is.
  • Összesen egy alkalommal kellett mindeközben jelentős változtatást eszközölni a szerkezetben (ez az események kezelését megvalósító és kiszolgáló osztályokban történt), amely bonyolultsága ellenére is fél óra alatt történt meg a gyakorlatban.

Mit nyújt az alaprendszer?

A kérdés adja magát, sőt megszüli a "mit nyújthat összesen 16 osztály?" kérdést. Ez egy nagyon kicsi szám, figyelembevéve más OO webrendszereket. Tudatosan ennyire kicsi a szám, hiszen főcélkitűzés volt a minimalizálás. Szemelőtt kell tartani, hogy a webes rendszerek esetében, közel sem olyan korlátlan a rendelkezésreálló erőforrás, mint egy asztali alkalmazás esetében (összehasonlításként: egy egyszeri asztali alkalmazás megehet 128Mb vagy több memóriát, egy webalkalmazás optimális maximuma viszont ennek a negyede, vagy inkább a nyolcada - de lehetőleg ennél is kevesebb) a szerver kímélése itt elemi érdek a rendelkezésreállás fokozása végett.

Tehát csak a legszükségesebb szolgáltatások kerültek a rendszer magjába - ezek az alábbiak:

  • Osztály információs rekordok (verziószám, leírás, kik csinálták és mik az elérhetőségeik nekik)
  • Dinamikus hozzárendelés - factory minta szép támogatása
  • Bővítmény kezelés az egyes osztályok funkcionalitásának kiterjeszthetősége, kiszélesíthetősége céljából
  • MVC megvalósításhoz szükséges alapvető megoldások
  • Többszörös oldal támogatás biztosítása arra az ismert esetre, ha ugyanazon kódbázison több - akár teljesen eltérő funkcionalitással bíró - weboldalt szeretnénk megvalósítani
  • Eseményvezérelt programozási felület biztosítása, amely támogatja az N:N alapú eseménykezelést (bármely objektum lekezelheti egy másik objektum eseményeit, és bármely eseményhez több eseménykezelő is rendelhető, melyek meghatározott prioritásuk szerinti sorban hajtódnak végre)
  • XML alapú sablonozás támogatása
  • Böngésző azonosítót megkülönböztető CSS gyorstár generálása a minden tekintetben böngészőfüggetlenné tétel minél hatékonyabb megvalósítása érdekében
  • Komponens-orientált szemléletmód támogatása az MVC elv szélesebbé tétele érdekében

Ezek után akárki joggal höröghetné, hogy hol van említve itt a felhasználó támogatás, hol van említve az adatbázis elérés támogatása, hol van itt leírva az űrlapok generálása és az adatvalidálás...?! A válaszom - nemes egyszerűséggel: SEHOL, mert ezek nem a rendszermag dolgai. A PHP-Sparcle filozófiájától ez a megszokottá vált szemléletmód fényévnyi távolságra vész el a múlt homályában. Az adatbázis elérését különálló nemvizuális komponenscsoportok fogják megvalósítani (elsőként PDO alapú, később igény szerint AdoDB vagy egyéb alapú elérési komponenseket fogunk kivitelezni). Igencsak nagyfokú függetlenségre és rugalmasságra törekszünk, hiszen aki szereti a PDO-t, azt nem szeretnénk mondjuk AdoDB-re kényszeríteni és fordítva. Az űrlapok generálásáról jelenleg nem adhatok információt, így csak annyit tudok mondani, hogy erre a területre különleges figyelmet fogunk szentelni, és a többség számára kényelmes megoldásokat fogunk felkínálni (igen, többet mint egy). A felhasználó szintén nem látható komponensként lesz jelen a rendszerben, és bár rendelkezni fog az alapvető szolgáltatások nyújtásának lehetőségével, egyszerű és gyors módon lesz megoldható a specializálása anélkül, hogy komolyabb fejlesztési időt kéne beleölnie akárkinek is (sőt).

Nem rázok kezet túlhype-olt rendszerekkel

Ennek a rendszernek nem az a célja, hogy más megoldásait észnélkül majmolja. Mitagadás, ötleteket merítettünk egyes megvalósításokból, felhasználtunk ismert tervezési mintákat, de pontatlanul idézve a klasszikust: a kezdő programozó annak örül, hogy a kódját egymaga írta - a profi annak, hogy más ismereteit és gyakorlatát felhasználva volt képes ugyanerre. Igen komoly megfontolások eredménye az, ami itt mostanra összeállt. Bárki joggal nekem szegezheti a kérdést, hogy miért érzem okosabbnak magamat mint (mondjuk a Drupal esetében) többezer fejlesztő - a válaszom egyszerű: nem érzem magamat okosabbnak, de aki alábecsüli 3 év megfeszített tervezési munkáját, az nem méltó erre a kérdésre, míg aki nem, az eleve nem tesz fel ilyen buta kérdéseket.

Mi nem akarunk mindent máshogyan csinálni. Viszont igenis új perspektíva akarunk lenni, és ezért mindent el is fogunk követni - ahogyan tettük ezt eddig is. Lesznek a rendszerben szokatlan újítások, lesz sehol másutt eddig nem alkalmazott megoldás. Minőségre törekszünk: olyan minőségre, amit a XXI-ik század megérdemel, mert meggyőződésünk, hogy az elöttünk élő kutatók, feltalálók és fejlesztők (mérnökök) munkáját az teszi igazán naggyá, hogy mások is merik ezt a rögös és nehézségekkel teli utat magukra vállalni - ez az igazi elismerés számukra.

Köszönet

Végül de nem utolsósorban szeretnék köszönetet mondani azon kollégáimnak és barátaimnak, akik szellemi munkája nélkül ez a rendszer is csak egy lenne a millió elhajított kő közül:

  • "MaDog" Simon István
  • "SamY" Kövesdi György (s-web.hu)
  • "Ukrán" Pál Balázs
  • Ifj. Rémiás Mihály (akitől egy kevés üzleti szellemet kölcsönöztem)
  • "Secto4" Dániel Pál (cyberserver.hu)
  • "Wirving" Tánczos Zoltán (aki belevitt a PHP-ba még ezer évvel ezelőtt :D)

És sokan mások, akiknek a nevei saját emberi korlátoltságom okán már nem maradtak meg a fejemben - sajnos.