Tankocka – Rövid válasz: Java konstansok

Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban 12 db Java konstans értékét kell megadni, számként. Ez a témakör főként a Java SE szoftverfejlesztő tanfolyamunkhoz kötődik. Hasznos ismerni a JDK-beli konstansokat, mert alapvetően befolyásolják egy adatszerkezet, objektum működését, viselkedését akkor is, ha külön nem adjuk meg a létrehozó konstruktorok meghívásakor minden paramétert.

A konstansok hathatnak a memóriafoglalásra, a grafikus komponensek megjelenésre, Meghatározhatják a hálózati kommunikáció időzítését, paraméterezhetik a fájlkezelés működését. Egy-egy algoritmus (például: rendezés, keverés, véletlenszám-generálás) indítását, működését is befolyásolják a konstansok. Vajon hányat tudsz az alábbi konstansok közül? Hogyan, mire hatnak ezek?

Multimédia az oktatásban 2022

A Neumann János Számítógép-tudományi Társaság (NJSZT) „Multimédia az oktatásban” Szakosztály által – évente – szervezett XXVIII. Multimédia az oktatásban nemzetközi konferencia hibrid (jelenléti és online) formában került megrendezésre 2022. július 6-7-én.

A konferencia célja

A szakmai rendezvény célja, hogy elősegítse az oktatás, valamint a kutatás és fejlesztés különböző területein dolgozó, oktató hazai és külföldi szakemberek, PhD és felsőoktatási hallgatók kapcsolatfelvételét, tapasztalatok és jó gyakorlatok cseréjét, egyes képzési szakterületekhez kapcsolódó kreditek gyűjtését.

28 témakörben hirdették meg az előadóknak a jelentkezési lehetőséget, köztük néhány hozzánk kötődő

  • élethelyzethez igazított tanulás,
  • a multimédia alkalmazása a felsőoktatásban és a felnőttképzésben,
  • mLearning, eLearning és környezete,
  • a tanulási környezet technikai, technológiai változása,
  • felhőalapú szolgáltatások,
  • multimédia és a tudományos kutatás összefonódása,
  • multimédia-fejlesztések, eredmények, alkalmazások bemutatása.

A konferencia programja

Letölthető a konferencia programja. A konferencia az Eszéki Josip Juraj Strossmayer Egyetem Bölcsészettudományi Karáról (University of Osijek) élő közvetítésben zajlott Teams-en. 2 nap alatt 10 szekcióban 30 előadás hangzott el, valamint sor került plenáris előadásokra és műhelymunkára is.

Részt vettünk a konferencián

Oktatóink rendszeresen részt vesznek az MMO konferencián. Szakmai blogunkban több beszámoló is van, lásd MMO címke. Kaczur Sándor oktatónk publikációs listájában szerepelnek a megjelent szakmai cikkek. Jövőre is szívesen csatlakozunk a rendezvényhez.

2022-ben Sándor két előadást tartott előadást tartott 20-20 percben, amelyek a konferencia „Multimédia-fejlesztések, eredmények, alkalmazások bemutatása” című szekciójába kerültek. Az előadások prezentációit ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára. Négy szerző (köztük én is 🙂 ) együttműködésével elkészült egy 5 és egy 7 oldalas szakmai cikk is, amelyek elérhetők a konferencia kiadványban.

Szakmai cikkeink összefoglalói

Kaczur Sándor, Szegedi Kristóf, Bánki Benedek: Variációk egy témára – Szilassi-poliédert megjelenítő grafikus programok fejlesztése

A számítógépes grafika alkalmazásának egyik speciális területe az, amikor saját fejlesztésű, egyedi grafikus objektumokat jelenítünk meg. Ehhez szükséges néhány előismeret, például: modelltér, kü­lönböző koordinátarendszerek, grafikus primitívek, grafikus 2D és 3D leképezések, vetítő algoritmusok, vászontechnika, koordináta- és ponttranszformációk. Ezekre építve a továbblépést a következők megisme­rése biztosítja: adott programozási nyelv(ek) beépített grafikus képességei, korlátai, sajátosságai, osztály­könyvtárai, kiegészítő API-jai, plugin-jai. Természe­tesen a grafikus fejlesztés megvalósítása objektumori­entált megközelítéssel, életciklus modellben, MVC architekturális tervezési mintával, eseménykezelés al­kalmazásával történik – hiszen a korszerű megközelí­tés és az interakció alapkövetelmény.

Az előadás/cikk ismerteti a feladatspecifikációt, majd egy közös koncepcionális tervet mutat be. A cél a Szilassi-poliéder megjelenítése saját fejlesztésű, egyedi grafikus objektumként. Elkészült többféle fejlesztői környezetben és többféle programozási nyelven né­hány implementáció Java és Unity alapon. Az előadás/cikk bemutatja az elkészült esettanulmányokat, elem­zi, teszteli, össze is hasonlítja azokat és megfogalmaz néhány továbbfejlesztési lehetőséget.

Kaczur Sándor, Kiss Balázs: Tankockák – Java szoftverfejlesztésben használt interaktív tanulási környezet

A 20. századig három jellegzetes pedagó­giai paradigma és ezeknek megfelelő didaktikai rendszer alakult ki: ismeretátadás, szemléltetés és cselekedtetés. Két kérdés merül fel: milyen szerepük van a tanításban ezeknek, illetve milyen a tanítási-tanulási folyamatban a tanár és tanuló szerepe.
A 21. században megjelenő folyamatok – a résztvevők együttműködve közös tudásobjektumot alkotnak és a megosztásra alapozva a hálózatiság élményét kapják – következménye a negyedik didaktikai paradigma, amelynek kulcsszavai: hálózatalapú tanulási formák, konnektivizmus, hipertanulás, e-learning.

Nahalka szerint a „tanítási – tanulási folyamat terve, az értékelési technikái, az elképzelt tanulási folyamat elképzelt logikája, koncepcionális háttere, a munka megszervezésének körülményei, azok a speciális eljá­rások, amelyeket az elképzelt folyamatban fel kívá­nunk használni, a gyermekek közötti, valamint a pe­dagógus – gyermek interakciók jellege, lehetőségei, a felhasznált információhordozók és más eszközök egy rendszert alkotnak”. Ez a negyedik paradigma tanu­lási környezete, amelynek biztosíthatnak egyéni és csoportos, offline és online tanulást, számítógéppel se­gített tanulást vagy kommunikációt, valamint aszink­ron és szinkron kommunikációt. Prensky megalkotta a „digitális bennszülött” és „digitális bevándorló” fo­galmait. Jukes és Dosaj ezekre alapozva meghatározta a „született digitális tanuló” és az „emigráns digitális tanár” jellemzőit.

Az előadás és a cikk egyrészt ismerteti a fenti folyamat tipikus mérföldköveit. Másrészt pozicionálja, hol tart ebben a folyamatban az it-tanfolyam.hu oktatói csa­pata az e-learning tananyagaik és online tartalmaik tekintetében. Harmadrészt bemutatásra kerül 12 db tankocka – interaktív tanulási környezetként –, ame­lyek elérhetőek az it-tanfolyam.hu szakmai blogban. Ezek élményszerű tanulást biztosító gamifikációs ele­mek, interaktív, weboldalakba ágyazható kisalkalma­zások, amelyek kiválóan használhatók gyakorlásra, rendszerező összefoglalásra Java szoftverfejlesztés, Java programozás témában.

Letöltés szimuláció

letöltés logó

letöltés logóLetöltési folyamatot szimulálunk. A paraméterek rugalmasan beállíthatóak. Előre beállított mennyiségű adatot, párhuzamos szálakon/folyamatokon keresztül töltünk le, miközben mérjük az eltelt időt. A folyamatok állapota lehet inaktív, aktív és befejezett. Az aktív folyamatok esetében megjelenő százalék fejezi ki, hogy a folyamat hol tart a rá jutó részfeladat végrehajtásával. Összesített formában követhetjük a hiányzó és a letöltött adat mennyiségét MB-onként és százalékosan is. A folyamat szimulációjához grafikus felületű Java kliensprogram készült, egyszerű GUI komponensekkel (nyomógomb, címke, folyamatindikátor, másképpen JButton, JLabel, JProgressBar swing komponensek).

Az alábbi animáció bemutatja a letöltés szimulációját:

letölés szimuláció

A konkrét paraméterek: 128 MB-nyi adatot töltünk le 256 párhuzamos szálon/folyamaton keresztül, így egy-egy részfeladat 0,5 MB-nyi adat letöltését jelenti. Minden értéket/mérőszámot egész számként ábrázolunk, akár százalékhoz tartozik, akár mértékegységként MB vagy s. A változások – és egyben a frissítés is – 5 ezredmásodpercként történnek a GUI-n.

A Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni. A Java EE szoftverfejlesztő tanfolyamunkon, a szakmai modul 5-8. óra Szálkezelés, párhuzamosság alkalommal többféle elosztott stratégiát ismertetünk, és a 17-24. óra Socket és RMI alapú kommunikáció alkalommal pedig megvalósíthatjuk többféle protokoll szerint a hálózati kapcsolatot, letöltést/feltöltést.

Elosztott alkalmazások esetén többféleképpen is modellezhető és kialakítható a rendszer architektúrája. Elosztott lehet maga a hálózat, a számítási folyamat, az algoritmus. Elosztott objektumok kommunikálhatnak egyenrangúnak tekinthető P2P szerepkörben vagy szerver/kliens oldalon, és több dolog/elem/hardver/szoftver/komponens együttműködéseként is megvalósulhat elosztott alkalmazás. A hálózati kommunikáció folyamatát valamilyen protokoll határozza meg, amit minden komponens ismer és így meghatározott szabályrendszer szerint működik.

Hardver szinten elosztottak a többprocesszoros rendszerek. Szoftveresen elosztott például egy moduláris vállalatirányítási rendszer, illetve a mobilalkalmazások többsége. Tipikus háromrétegű webalkalmazás esetén külön szerver nyújtja az adatbázishoz kapcsolódó szolgáltatásokat, a felhasználó számítógépén található a böngészőben futó/megjelenő kliensprogram/weboldal és a kettő között a felhő rétegben lehet a funkcionálisan elosztott alkalmazáslogika (például validálás, titkosítás, tömörítés, autentikáció, autorizáció).

A vezérlést megvalósító részlet a Java forráskódból:

 A szimuláció elvi szinten:

  • a folyamatok generikus listában vannak,
  • időzítő által meghatározottan, gyorsan és ismétlődve történnek az időzített lépések,
  • ha egy folyamat befejeződik, akkor kikerül a generikus listából,
  • ha a folyamatok generikus listája kiürült, akkor vége a szimulációnak,
  • ki kell választani véletlenszerűen egy folyamatot, léptetni kell véletlenszerűen, amíg be nem fejeződik,
  • folyamatosan nyilván kell tartani a szükséges adatokat a háttérben,
  • folyamatosan frissíteni kell a felhasználói felületet.

Haladóbb megközelítésben másképp is lehetne: a számítási műveletek redukálhatóak lennének, ha lenne egy – minden olyan adat karbantartásáért felelős – modellobjektum, amelynek adatai hozzá lennének rendelve a GUI komponensekhez. Aki már sejti, annak megerősítem, hogy igen, ez observer (megfigyelő) tervezési minta.

A feladat könnyen általánosítható, például:

  • Egy keresési feladatot oldjunk meg az állományrendszerben! Kereshetünk egy konkrét nevű fájlt, adott kiterjesztésű fájlt, joker karakterekkel paraméterezett nevű fájlt/mappát, adott méretű állományt, adott dátum előtt létrehozott fájlt… Az állományrendszer bejárása rekurzív módon történik. A gyökérben lévő mappánként külön, esetleg második szinten lévő mappánként külön indíthatók szálak, párhuzamos folyamatok. Ha egyetlen találat elegendő, akkor bármelyik szál pozitív visszajelzésére minden szál leállítható. A feladatnál nagy eséllyel nagyon különböző méretű mappákon és eltérő mélységű mappaszerkezeteken kell végighaladni, így erre érdemes lehet optimalizálni, de ez már nagyon más szintje ennek a problémának.
  • Active Directory szerkezetben keressünk elérhető nyomtatókat a hálózaton!
  • Elosztott számítási hálózatként működik/működött a SETI@home. Koncepciójának lényege, hogy egy hatalmas feladatot nem nagyon drága szuperszámítógépeken, hanem olcsó gépek ezrein, százezrein, vagy akár millióin végeztetjük el, amelyek jelentős szabad kapacitással (pl. processzoridővel, átmeneti tárhellyel) rendelkeznek és egyébként is csatlakoznak a világhálóra.
  • Hasonlóan elosztott működésű a torrent protokoll. A kliensek/szálak az állományokat több kisebb darabban/szeletben töltik le, természetesen párhuzamosítva. Minden csomópont megkeresi a hiányzó részhez a lehető leggyorsabb kapcsolatot, miközben saját maga is letöltésre kínálja fel a már letöltött fájldarabokat. A módszer nagyon jól beválik nagyméretű fájloknál, például videók esetében. Minél népszerűbb/keresettebb egy fájl, annál többen vesznek részt az elosztásában, ezáltal a letöltési folyamat gyorsabb, mintha mindenki egy központi szerverről töltené le ugyanazt (hiszen az informatikában minden korlátos, a sávszélesség is).
  • A képtömörítést végző algoritmusok is lehetnek elosztottak, ezáltal párhuzamosíthatóak. Például ha felosztjuk a képet 16*16-os méretű egymást nem átfedő részekre, akkor ezek egymástól függetlenül tömöríthetők.
  • A merevlemezek esetén korábban használatos defragmentáló szoftverek felhasználói felülete emlékeztet a mintafeladat ablakára.

Fontos szem előtt tartani, hogy a grafikus megjelenítés csupán a szimulációhoz tartozó – annak megértéséhez szükséges – reprezentáció, így teljesen független lehet a folyamatok valós működésétől.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Tankocka – Párkereső: csomag, osztály, interfész

Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban 12 összetartozó párt kell megtalálni az ismert Java csomagok, osztályok, interfészek témakörben. Ez a témakör mindhárom tanfolyamunkhoz kötődik: Java SE szoftverfejlesztő tanfolyam, Java EE szoftverfejlesztő tanfolyam, Java adatbázis-kezelő tanfolyam. Ezek egyszerű lexikális ismeretnek tűnhetnek, de jóval túlmutat azon.

Tipikus hibaforrás, ha az osztály és/vagy interfész neve a különböző csomagok esetén megegyezik és megszokásból, rutinból, figyelmetlenségből rossz csomagból importálunk. Nem biztos, hogy rögtön triviális: mi a hiba, miért az a hiba, hogyan oldjuk meg. Például Timer osztály van a java.util és a javax.swing csomagokban is és nagyon nem mindegy, hogy mikor melyiket (és persze mire, hogyan) használjuk.

Tankocka – Párosítós játék: programozás Java nyelven

Ez a Tankockák blog bejegyzés sorozatunk első része. A feladatban meg kell találni a 15 db összetartozó párt a játékban. Ez a témakör mindhárom tanfolyamunkhoz kötődik: Java SE szoftverfejlesztő tanfolyam, Java EE szoftverfejlesztő tanfolyam, Java adatbázis-kezelő tanfolyam.

Át kell gondolni, hogy mi lehet a kapcsolat a párok elemei között. Közös jellemzőt/tulajdonságot kell találni. Észre kell venni az összefüggést. Persze nem árt, ha minél kevesebb lépésbe kerül a játék. 😉 Hajrá!