E-learning rendszer fejlesztése Oltványi Gábor József diplomaterv bemutató Konzulens: Jaskó Szilárd 2012.07.04., PPKE-ITK Elektronikus oktatás szakirányú továbbképzés
1. Feladatkiírás Egy tetszőlegesen választott e-learning rendszer továbbfejlesztése Válasszon egy létező (nyílt forráskódú) e-learning rendszert! Ismerkedjen meg az alapelveivel, a benne használt technológiákkal (programkód, adatbázis)! Üzemeltesse a rendszert a saját gépén vagy egy szerveren! Nézzen utána a rendszer eddigi fejlesztésének! Pl. fejlesztői közösség, fő verziók, verziókövető rendszer. Részletezze, hogyan támogatja a SCORM szabványt az adott e-learning rendszer! Egy tetszőleges modult fejlesszen tovább az elektronikus oktatás szemszögéből hasznos módon! Esetleg fogadtassa el változtatását a fejlesztő szervezettel! 2
2. Fogalmak, előzmények Távoktatás, elektronikus oktatás, e-learning, LMS, CMS, LCMS, VLE, Virtual School Tanulásigény (LLL), képzésigény (cégek) Szereplők: rendszergazda, adminisztrátor, oktatásszervező, tananyagfejlesztő, kurzuskészítő, oktató, hallgató Egységesítés => szabványok, pl. SCORM Újrafelhasználhatóság => LO-k: Képzés, kurzus, tanóra/teszt, oldal, média-elem Előzmények/egyéb E-learning rendszerek: Oktatásban: ingyenes (WebCT, Atutor, Moodle) Cégeknél: IT-multik (Oracle, ilearning, IBM L.Space) Előzmények/Moodle fejlesztéséről jól dokumentált: moodle.org 3
3. Szoftver (LMS/CMS/VLE); Moodle Pty Ltd.; Moodle Partner hálózat; Moodle Community (moodle.org) Modular Object-Oriented Dynamic Learning Environment Felhasználók (e-learning szerepek szerint), kurzusok, tanórák, tesztek, hallgatók előrehaladásának nyomonkövetése, chat, címkék, wiki, fórumok, hírek, belső levelezés, értesítők, kérdőívek, stb Technológiai alapok: nyílt forráskódú, ingyenes, PHP-alapú keretrendszer Keretrendszer: PHP (kódkönyvtár + adatkönyvtár moduláris!) Adatbázis: választható (MySQL, PostgreSQL, MSSQL, Oracle, SQLite) JavaScript: YUI, de elvileg JS nélkül is futnia kell, modularitás! Verziókövetés: git (verzió-branch-ek ) 4
4. Verziók és SCORM 1999, Martin Dougiamas, 2002: 1.0, 2012: 2.3. főverzió/major/release, alverzió/minor; stable/unstable, alpha, beta, RC, heti release-ek SCORM anyagot nem lehet létrehozni a Moodle-ben, de importálni és megjeleníteni lehet, vannak letölthető demó SCORM-anyagok is a Moodle egyik oldalán. Kurzus, szerkesztési mód Tananyag hozzáadása SCORM-csomag => egy link jelenik meg a kurzusunkban Példa: egy teszt csomag, médiaelemekkel tarkítva 5
4. Verziók és SCORM 1999, Martin Dougiamas, 2002: 1.0, 2012: 2.3. főverzió/major/release, alverzió/minor; stable/unstable, alpha, beta, RC, heti release-ek SCORM anyagot nem lehet létrehozni a Moodle-ben, de importálni és megjeleníteni lehet, vannak letölthető demó SCORM-anyagok is a Moodle egyik oldalán. Kurzus, szerkesztési mód Tananyag hozzáadása SCORM-csomag => egy link jelenik meg a kurzusunkban Példa: egy teszt csomag, médiaelemekkel tarkítva 6
5. Fejlesztői modell, telepítés és üzemeltetés Cél: elérni a Moodle legújabb frissítéseit egy éles és egy teszt Moodle rendszert üzemeltetni Ide saját módosításokat is fejleszteni a saját gépünkről esetleg egy kolléga is tudjon hasonlóan fejleszteni. Telepítés: Szerver-oldal: apache, php, mysql, git moodle.git klónozása saját origin, éles és teszt környezetek létrehozása újabb klónozással üres adatbázis létrehozása, moodle-telepítés követése Fejlesztői gépen (lehet akár Windows is!): EasyPHP phpmyadmin, adatbázis dump, local alias git klón a szerverünkről, moodle: config.php Üzemeltetés, karbantartás, frissítés, saját fejlesztések: git remote update, git pull,, git checkout, git commit, git push, git rebase/merge 7
5. Fejlesztői modell, telepítés és üzemeltetés Cél: elérni a Moodle legújabb frissítéseit Official MyMachine Moodle egy éles és egy teszt Moodle rendszert üzemeltetni OurServer git Ide repo saját módosításokat Our Moodle is fejleszteni a saját gépünkről esetleg egy (git://git.moodle.org/ kolléga is tudjon hasonlóan git repo origin fejleszteni. My Moodle dev git repo moodle.git) Telepítés: Szerver-oldal: apache, php, mysql, git moodle.git klónozása saját origin, éles és teszt környezetek létrehozása újabb klónozással Our Moodle site (moodle.ourserver.com) Moodle OtherMachine üres adatbázis létrehozása, moodle-telepítés követése test site OtherMoodle Fejlesztői gépen (lehet akár Windows is!): dev git repo EasyPHP phpmyadmin, adatbázis dump, local alias git klón a szerverünkről, moodle: config.php Üzemeltetés, karbantartás, frissítés, saját fejlesztések: git remote update, git pull,, git checkout, git commit, git push, git rebase/merge http://gabrosz.szentjanosbogar.hu/mdl2/ 8
6. Tracker, kontribúció, fejleszthető komponensek Tracker: a Moodle teendő-listája, feladatok: issue -k. Projektek: Moodle; Community Sites; Mobile; QA; Testing; Non-core contributed modules Kontribúció: közreműködés a Moodle fejlesztésében Ehhez meg kell felelni a coding standards -nek Fő verzióhoz Moodle projekt-beli issue-nak kell lennie, a sajátok a contrib -ba mennek, ami a bővítménykönyvtárban jelenik meg (plugins) Saját github létrehozása, issue a Trackerben (contrib + QA/Test), dokumentáció, fórumtémák. A Moodle bővítése: pluginok (komponensek, bővítmények) docs.moodle.org/dev/plugins, meglévők: moodle.org/plugins Egy komponens: modularitás => adott mappa almappája meghatározott elnevezések, kötelező fájlok, osztály-öröklődés pl.: /blocks/conversations/ versions.php, (edit_form.php), blocks_conversations.php, lang/en/block_conversations.php class block_conversations extends block_base { 9
6. Tracker, kontribúció, fejleszthető komponensek Tracker: a Moodle teendő-listája, feladatok: issue -k. Projektek: Moodle; Community Sites; Mobile; QA; Testing; Non-core contributed modules Kontribúció: közreműködés a Moodle fejlesztésében Ehhez meg kell felelni a coding standards -nek Fő verzióhoz Moodle projekt-beli issue-nak kell lennie, a sajátok a contrib -ba mennek, ami a bővítménykönyvtárban jelenik meg (plugins) Saját github létrehozása, issue a Trackerben (contrib + QA/Test), dokumentáció, fórumtémák. A Moodle bővítése: pluginok (komponensek, bővítmények) docs.moodle.org/dev/plugins, meglévők: moodle.org/plugins Egy komponens: modularitás => adott mappa almappája meghatározott elnevezések, kötelező fájlok, osztály-öröklődés pl.: /blocks/conversations/ versions.php, (edit_form.php), blocks_conversations.php, lang/en/block_conversations.php class block_conversations extends block_base { 10
6. Tracker, kontribúció, fejleszthető komponensek Tracker: a Moodle teendő-listája, feladatok: issue -k. Projektek: Moodle; Community Sites; Mobile; QA; Testing; Non-core contributed modules Kontribúció: közreműködés a Moodle fejlesztésében Ehhez meg kell felelni a coding standards -nek Fő verzióhoz Moodle projekt-beli issue-nak kell lennie, a sajátok a contrib -ba mennek, ami a bővítménykönyvtárban jelenik meg (plugins) Saját github létrehozása, issue a Trackerben (contrib + QA/Test), dokumentáció, fórumtémák. A Moodle bővítése: pluginok (komponensek, bővítmények) docs.moodle.org/dev/plugins, meglévők: moodle.org/plugins Egy komponens: modularitás => adott mappa almappája meghatározott elnevezések, kötelező fájlok, osztály-öröklődés pl.: /blocks/conversations/ versions.php, (edit_form.php), blocks_conversations.php, lang/en/block_conversations.php class block_conversations extends block_base { 11
7. Fejlesztői megjegyzések PHP: config.php vs. install.php; lib/setup.php, lib/ osztály-öröklődés modulonként business logic és a template nem különül el régi, elavulós PHP-s stílus fellelhető (var, global) Adatbázis: nincs objektum-relációs leképezés (ORM) (=> adatbázis-szerver függő is lehet a lekérdezés) nagyjából logikus, de van redundancia JavaScript: YUI ~ nem használtam, helyette jqueryt a YUI gyorsabb, könnyebb súlyú, és modulárisabb, szigorúbb elvekkel, a jqueryt gyorsan lehet fejleszteni Fejlesztőeszközök: Linux/Windows?, Virtualbox? Eclipse/Netbeans?; Notepad++ EasyPHP phpmyadmin/mysql WorkBrench; PuTTY git GitK, GitGUI, Git Bash (~linux shell), KDiff3 böngészők: Firefox, Chrome, + fejlesztésre: Inspector-ok, FireBug 12
8. Conversations Block Ötlet, motiváció: interaktív, felhasználóbarát, intelligens kommunikációs felület (chat+messaging) nincs még hasonló plugin Specifikáció: block+modul integrált chat és levelezéssel, auto-frissítés, paraméterezhetőség listázás: online felhasználók (vagy egyéb szűrés) rájuk kattintva cset vagy levél-oldal üzenetlistázás: felhasználónként, önfrissülő új üzenet jelzése, olvasatlan-számláló, stb. Implementáció: egy központi AJAX-hívásra épül, aminek egy paraméter-listjától függő funkciók hajtódnak végre szerverés kliens-oldalon is egy-egy handle függvény kontrollálásával. listák betöltése: késleltetve, utána már csak frissítés levélfolyam: korábbiak betöltése csak kérésre Publikáció / hátra van: a modul csak a blokkon dolgoztam eddig blokk funkciók, pl. chat egyesítése, chat elérhetőség jquery helyett YUI fordítások 13
5. Conversations Block demo 14
9. Demó 15
10. Összefoglalás E-learning rendszerek alapfogalmai Moodle vizsgálata fejlesztésre alkalmas telepítési és üzemeltetetési modell és ennek kivitelezése SCORM: megjeleníthető, de nem fejleszthető fejlesztői közösség, verziók, tracker (feladattár), kontribúció feltételei fejleszthető bővítmények, bővítménytár Conversations block: saját fejlesztés ötlet, specifikáció, elkészült részek és tervek 16