Alkalmazás környezet kialakítása.
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
■ 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
Keretrendszerek
Köszönöm.
Köszönöm
s_volenszki
tervezési minták
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:
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
Tervezési minták.
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