ugrás a tartalomhoz

Alkalmazás környezet kialakítása.

s_volenszki · 2008. Aug. 31. (V), 12.44
Sziasztok!

Megosztok veletek egy gondolatot, ami a fejemben kavarog már hetek óta, de nem akar egyenesbe állni. Remélem a hozzászólásaitok majd segítenek (tapasztalatom szerint már az is segít, hogy leírom)...

Középiskolában és főiskolán is tanultam programozást, de az elmúlt öt év távlatában rá kellett jönnöm, hogy az iskolában tanult „lexikális” tudás önmagában elég gyenge fegyver az üzleti életben.

Sokkal nagyobb hasznát veszem az autodidakta módon elsajátított UML tudásomnak, és az elkészített (web)alkalmazásokban ejtett klasszikus hibáknak. Rájöttem, hogy egy ügyfél szemében nem akkor leszek jó programozó, ha megvalósítom betűről-betűre azt amit mond, hanem ha megkapja a problémájára a megoldást. Ezért aztán minden egyes alkalmazás megvalósítását úgy kezdem, hogy elemzem és megtanulom szereplőként átélni a megbízó helyzetét, szembesülve így a problémájával, amire megoldást keres.

Innen igazából már egyenes lenne az út, megszületnek a forgatókönyvek, kialakulnak a folyamatok, a folyamatokkal megszületnek a függvények, függőségek és épül az adatmodell (többnyire adatbázis kezelő alkalmazásokat készítettem).

MySQL Workbench segítségével összeállítom az adatbázist és a főbb lekérdezéseket, majd Komodo Edit segítségével elkezdem a projektet építeni.

Na itt kezdődik a probléma! Mert míg egy cron-nal időzített html hírlevelező rendszert elkészítek viszonylag zökkenő mentesen, a nagyobb projektek felőrölnek. Úgy gondolom, a hiba abban van, hogy nincs tudásom, hogyan kell egy programstruktúrát felépíteni.

Miközben ezen agyaltam, arra gondoltam meg kellene terveznem egy alkalmazás környezetet, szerver-kliens modellre. Hetek óta tervezgetem és kódolgatom szabadidőmben, van is egy verzió amit tesztelek, de az a probléma, hogy nem érzem könnyebbnek a munkát.

Leírom, hogyan működik a jelenlegi verzió, de még ez előtt leírom az elvárásomat:

Olyan alkalmazás környezetet akarok kialakítani, amiben a a programtervezés során kialakult „egységek” és azok függvényei tökéletesen önálló alkalmazásokként léteznek, de bármikor részt tudnak venni egy másik ugyanilyen alkalmazásban, programrészként:

...ha egy új ügyfél rögzítése egy alkalmazásban egy önálló programrész, ami bekéri az input adatokat és azzal dolgozva létrejön az adatbázisban az új ügyfél,

akkor ugyan ez a program elindítható legyen akkor is, amikor mondjuk az ügyfél lenne input adat egy másik programrésznek, de az ügyfelünk még nem létezik...

A jelenlegi alkalmazás környezetem úgy néz ki, hogy írtam javascript-ben egy „dialógus” konstruktort, így minden egyes programrész egy dialógus ablakban töltődik AJAX-szal. Aazaz, ha indul az alkalmazás, már keletkezik is egy dialógus, ami a fő programrészt képviseli. Ha itt végbemegy egy esemény, az nyit egy új dialógust, és abban fut az alprogram:

Főprogram: Ügyfelek listája
Alprogram: Új ügyfél
A dialógusnak a megjelenésén kívül van néhány visszatérési függvénye, úgy mint onSucces, onFail, onClose stb.

Ha az új ügyfél rögzítése az ügyfelek listája főprogramból indul, akkor a visszatérési függvény siker esetén egy jóváhagyó dialógus, ami azt kérdezi, hogy az ügyfelek listáját töltse újra, vagy nyissa meg az új ügyfél adatlapját.

Ha egy másik (a példában említett) alprogram indítja az új ügyfél programot, akkor a visszatérési függvények teljesen másképp alakulnak (lehet, hogy egy input mezőbe bekerül az ügyfél neve és azonosítója).

A dialógusokba töltődő programok php-ben készülnek és az alkalmazásnak megfelelően egy saját nevére keresztelt könyvtárban csücsül egy programrészeket gyűjtő könyvtárban pl.:

/web_root/app/ugyfelek/uj_ugyfel.php

Ugyan ezen a néven, csak egy „js_” prefixel található a javascript kódállomány a programrészhez, amit a php include-ol és az AJAX-os dialógus betöltés után a dialógus eval()-ol.

Ez most működik és elkezdtem vele egy alkalmazást építeni, de valahogy nem érzem azt amit kellene (mint pl. amit egy favágó érez, ha a fejszéje helyett kap egy motorfűrészt...)! Sőt, éppen úgy elveszek a függvények és dialógusok közötti relációkba, mint amíg „csak úgy kódoltam”...

Őszintén mondjátok meg, jó úton járok egyáltalán? A célom, hogy legyen egy tuti jó eszközöm, amitől mindig csak egy programocskával kell foglalkozni, ami ha elkészül, egy nagy rendszer teljes értékű része lehet!

s_volenszki
 
1

Keretrendszerek

fchris82 · 2008. Aug. 31. (V), 14.05
Sztem neked egy keretrendszerre van szükséged. Symfony, CakePHP, CodeIgniter, Zend Framework, ... Én egy projekthez anno a symfony-t választottam, már nem is tudom, miért. Bevált, írtam is már hozzá saját plugineket, szűrőket, amiket más munkákban is fel-fel használok. Pl saját jogosultságkezelő plugint. Nézd meg őket, a Symfony-hoz van letölthető könyv is. Vannak összehasonlító cikkek, tesztek. Megtanulhatsz többet is, próbálkozzál. Én mondjuk most PHP-ról beszélek, más programnyelvekhez is vannak keretrendszerek, amikhez aztán könnyen írhatók kiegészítések, amiket újra felhasználhatsz más programokban. Csak a keretrendszer egy csomó problémát levesz a válladról (pl adatbázis kapcsolat kezelése), így sokkal kevesebb saját "programrészletet" kell neked létrehozni.
2

Köszönöm.

s_volenszki · 2008. Aug. 31. (V), 19.22
Köszönöm a hozzászólásodat, megnézem azokat a keretrendszereket amiket felsoroltál. Egyenlőre nagyon idegennek tűnik, de híve vagyok a változásnak, és ha már egyszer nálam sokkal okosabb emberek kifejlesztettek egy ilyen keretrendszert, akkor lényegesen egyszerűbb tanulni, hogy könnyebb legyen az életem, mint fejleszteni vakon.

Köszönöm

s_volenszki
3

tervezési minták

toxin · 2008. Szep. 1. (H), 08.15
-at kéne beseggelni :), ami neked valószínűleg most kell az a http://ajaxpatterns.org/Distributed_Events minta, de ha a helyedben lennék átnézném még, kezdésnek amelyik prgozási nyelven a legjobban tudsz tehát vagy teszem azt php akkor:

architect's Guide to PHP Design Patterns -t

ha javascript akkor :

Pro JavaScript Design Patterns
-t

azután a nyelvfüggetlen alapmű, amiből a fenti kettő stb. van konkretizálva : Programtervezési minták következne http://www.animakonyv.hu/index.php?BODY=BookInfo&OP=details&ID=54259 , de lehet ezzel is kezdeni, bár az ismert nyelven jobban át fog jönni a koncepció szvsz, nekem legalább is aki utóbbival kezdte jobb lett volna az előbbiekkel kezdeni, ha tudtam volna, hogy vannak :) . Ami a http://ajaxpatterns.org/ -on van az a fenti minták és az Ajax mint technológia kapcsolatát mutajta be. Előbbiekkel érdemes kezdeni mert ilyenkor:

...Keep objects synchronised with an event mechanism. This is a classic software pattern applied to Ajax, related to the "Observer" (Gamma et al.) and "Publisher-Subscribe" (Buschmann et al.) patterns, and also a key feature in the classic "Model-View-Controller" architecture. DHTML already provides a mechanism for low-level events, but the events discussed here are more semantic in nature, i.e. related to business and application concepts such as "account deleted". Note that the term "event" is used in a broad manner, to mean any subscription-based approach that alleviates the need for direct calls from source to destination. Any publish-subscribe messaging mechanism falls under this definition...
- Distributed Events

pl. pontosan ill. magadtól is fogod tudni miről van szó, ill. hogyan s milyen elvek alapján kell egy ilyen alkalmazást megtervezni


üdv Csaba
4

Tervezési minták.

s_volenszki · 2008. Szep. 1. (H), 09.23
Szia!

Köszönöm a hozzászólásodat, a megadott hivatkozásokat olvasgatva találtam néhány olyan mondatot, amiből tökéletesen felismertem a helyzetemet.

Ez egy elég nagy témakör, úgy gondolom, az első és legfontosabb lépés az lesz, hogy egyáltalán megtaláljam az utat...

Köszönöm:

s_volenszki