Hello World! másképpen

Hello World! - Piet programozási nyelvenA programozási nyelvek tanulásának első lépése a „Hello World!” szintaktikájának megismerése, és egyben teszt arra is, hogy megfelelő-e a fejlesztői környezet telepítése, konfigurálása. Megjelenik-e a „Hello World!” a konzolon, felbukkanó ablakban, önálló ablakban, weblapon, üzenetben? Mit kell ezért tenni? Néhány Java példát nézünk erre.

1. Konzolos megoldás

Ez a kiinduló állapot. Futtatva a programot, a konzolon jelenik meg a szöveg.

2. Swing 1. megoldás

Itt felbukkanó párbeszédablakban jelenik meg a szöveg. A JOptionPane ablaka itt önálló, így nincs olyan szülője/tulajdonosa ( null), ahonnan elveheti a fókuszt.

3. Swing 2. megoldás

Itt egy testre szabott JFrame utód készül, alapvető beállításokkal. Az ablak címsorában jelenik meg a szöveg. Az ablak saját magát példányosítja és főablakként viselkedik, vagyis gondoskodik saját maga láthatóságáról, fókusz- és eseménykezeléséről (utóbbi 2 most nincs).

4. JavaFX megoldás

Itt egy testre szabott  Application utód készül, minimál beállításokkal. Az ablak címsorában jelenik meg a szöveg. Az ablak saját magát példányosítja és főablakként viselkedik.

5. Applet megoldás

Böngészőben fut a testre szabott JApplet utód. A weblapon elfoglalt téglalap alakú területen vízszintesen balra és függőlegesen középen jelenik meg a címke komponensben a szöveg.

6. JSP 1. megoldás

Ez egy JSP weboldal automatikusan generált forráskódja. Böngészőben jelenik meg a szöveg.

7. JSP 2. megoldás

Ez egy JSP weboldal egyszerű direktívával a h1 címsorban.

8. Servlet megoldás

Itt egy szervlet által generált weboldal, amely fixen tartalmazza a szöveget.

9. Atipikus 1. megoldás

„Adatbázisból is lekérdezhető” a szöveg.

10. Atipikus 2. megoldás

Ebben az esetben a Java nyelv által biztosított véletlenszám generáló osztályra támaszkodva állítjuk elő a szöveget. Mivel a random objektum által előállított számok csupán a véletlenség látszatát keltik, de valójában egy algoritmus szerint készülnek, ezért előre teljes pontossággal megjósolható a kimenet. Csupán meg kell találni azt a kezdőértéket, ami után „véletlenül” pont a h, e, l, l, o betűk fognak következni. Megismételve a folyamatot egy másik kezdőértékkel, megkapjuk a w, o, r, l, d  betűket is.

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

A példák a Java SE szoftverfejlesztő tanfolyam, a Java EE szoftverfejlesztő tanfolyam és a Java adatbázis-kezelő tanfolyam több alkalmához is kötődnek (kivéve 4. és 5.).

Hivatkozások a témakörben, amelyek más programozási nyelvek példáit is tartalmazzák:

Multimédia az oktatásban 2019

MMO logoA Neumann János Számítógép-tudományi Társaság (NJSZT) „Multimédia az oktatásban” Szakosztály által – évente – szervezett XXV. Multimédia az oktatásban című nemzetközi konferencia az Ericsson Magyarország Kft. K+F Központjában került megrendezésre 2019. június 6-7-én.

A konferencia célja

  • elősegítse az oktatás, a kutatás és a fejlesztés különböző területein dolgozó szakemberek tapasztalatcseréjét és találkozását,
  • bemutatkozási lehetőséget adjon az oktatóknak, kutatóknak és PhD hallgatóknak az új kutatási eredmények széleskörű szakmai megismertetésére és megvitatására előadások, kiállítások és kiadványok segítségével.

21 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ő

  • multimédia alkalmazása,
  • mLearning/eLearning és környezete,
  • felhőalapú szolgáltatások,
  • multimédia és a tudományos kutatás összefonódása,
  • multimédiafejlesztések, eredmények, alkalmazások.

Letölthető a konferencia programja.

A plenáris előadásokról

Ez a 25. jubileumi rendezvény áttekintette a szakosztály eddigi tevékenységeit például a plenáris ülésen Dr. Berke József alapító tag, első szakosztályelnök „Multimédia az oktatásban szakosztály története” fényképes előadásával. Dr. Magyar Miklós professzor alapító tag, alelnök „Egy Baby Boomer rendhagyó gondolatai a multimédiáról”, című Skype-on keresztül tartott előadásával képet adott arról, hogy a „kortárs szemtanú az egymást követő generációkkal, nemzedékekkel együttműködve tapasztalhatta meg a változásokat, a fejlődés átalakulási szakaszainak történéseit”. Majd az elmúlt év kutatásairól, a szakma irányvonalairól, gyakorlati eredményeiről szóló előadások következtek két napon két-két szekcióban. Kerekasztal beszélgetés keretében a közeljövőben megvalósítandó felnőttkori kötetlen, önálló tanulásra szolgáló (multimédia) tananyagok minősítésének kidolgozandó rendszeréről beszélgettünk Dr. Elsayed Hassan, Dr. Gerő Péter, Dr. Seres György és Sulyok Tamás moderálásával.

MMO2019 résztvevők

A szekció-előadásokról

Már számos alkalommal részt vettem előadóként a nyár eleji MMO konferenciákon szakmai előadással, magyar és/vagy angol nyelvű cikkel, poszterrel az oktatói csapat tagjaival, illetve mentorált hallgatóimmal együtt. Legutóbb tavaly is, lásd Multimédia az oktatásban 2018.

2019-ben „A magyarországi felsőoktatásban oktatók és hallgatók e-eszközhasználati attitűdje – Egy félig strukturált interjús mintakutatás eredményei” címmel tartottam előadást 20 percben, amely a konferencia „Multimédia-fejlesztések, eredmények, alkalmazások bemutatása / mLearning, eLearning és környezete” szekciójába került.

Ahogy absztraktomban írtam, „Az előadásban a tanár–hallgató interjúalanyok e-learning attitűdjébe kapunk bepillantást annak kapcsán, hogy mit jelent számukra az e-learning, hogyan értelmezik, mi tartozik az elearning kifejezés ernyője alá? Tanítási/tanulási munkájuk során milyen arányban használnak e-eszközöket? Milyen e-eszközöket és miért, hogyan használnak? Hogyan fejlesztik e-eszköztárukat? Az e-elemek tanításba bevonása hogyan hat a hallgatói motivációra és eredményekre a tanárok és a hallgatók szerint? Ha nem lennének e-eszközök, mi hiányozna számukra a leginkább? Melyik, miért és mennyire fontos a hallgatók és a tanárok számára a következők közül: tananyag, tanári magyarázat, tudományos alapok, trendiség? A kutatás alapja lehet egy széleskörű, nagy létszámú magyarországi és határon túli tanári–hallgatói populációkat vizsgáló kvantitatív kutatásnak.”

Mentorált hallgatóim/volt hallgatóim kiváló előadásokat tartottak. Öt díjat nyertek el a már második évben meghirdetett szakdolgozatok és TDK-dolgozatok versenyben, illetve szekcióikban tartott előadásukkal, a konferencia-kiadványban megjelent cikkükkel.

Vidovenyecz Zsolt, volt konzultáltam, barátom idén is elhozta „utazó kiállítás” keretében gyűjteménye egy részét, amelyhez kapcsolódva „A magyar számítástechnika hőskorának „leg”-jei” címmel tartott tárlatvezetést. Virtuális múzeuma a https://www.holdcomputers.com/-on tekinthető meg.

MMO2019 Régi magyar számítógépek kiállítás, Hungarian Old Computers kiállítás

Kaczur Sándor kolléga minden résztvevő számára érdekes multimédiás előadást tartott az MMO 2019 konferencián „Térképek dinamikus ábrázolása Google Charts, Java és JavaScript eszközökkel” címmel. Ez az előadás a „Multimédia és a tudományos kutatás összefonódása/ Multimédiafejlesztések, eredmények, alkalmazások bemutatása” szekcióba került.

„A Google Charts egy weblapokba beágyazható, JavaScript-re épülő keretrendszer/példatár, amely kiválóan használható az oktatásban úgy, hogy különféle adatforrásból származó – vagy dinamikusan előállított – adatokból egyszerű, látványos, weblapokon könnyen megjeleníthető grafikus objektumokat hozunk létre. A hozzá kapcsolódó felhő alapú szolgáltatások ingyenes és fizetős formában is rendelkezésre állnak. Az ismertetett esettanulmány egy hálózatos Java projekt, amely webről összegyűjtött adatok alapján, többféle Google Charts objektumot állít elő. A termék JavaScript-re épülő weboldalak sokasága, amely tipikus felhasználói igényeket/követelményeket kielégíthet. A megvalósítás kivételkezelést alkalmaz, HTML és JSON tartalmat olvas és generál, valamint elvégzi/elvégezteti az adatok térképen való megjelenítéséhez szükséges geokódolást. Az előadás ismerteti a specifikáció és a tervezés lépéseit, az implementációt, a tesztelést, valamint továbbfejlesztési javaslatokat is ad.” – írja Sándor absztraktjában.

Sándor előadásának prezentációját ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Sándor előadásának témája a Java EE szoftverfejlesztő tanfolyam 1–4. óra: Elosztott alkalmazások, webszolgáltatások és 13–16. óra: JSON feldolgozás alkalmaihoz kapcsolódik.

A fotópályázatról

Az MMO Szakosztály által meghirdetett fotópályázaton Táj kategóriában Szűcs Tibor különdíjban részesült Pirkadat című pályamunkájával:

Az MMO Szakosztály által meghirdetett fotópályázaton Táj kategóriában Szűcs Tibor különdíjban részesült Pirkadat című pályamunkájával

„A fotó 2018. július 2-án készült, Japán legmagasabb hegyén/vulkánján a Fujin. Július elején a napfelkelte nagyjából 4 órára esik, ám már fél órával korábban elkezd világosodni az égbolt alja, és a napfelkelte nagyjából egy órán át nyújt számunkra fényekben gazdag izgalmakat. A Fujiról fontos megemlíteni, hogy sok esetben mágnesként vonzza a felhőket. Nekünk mázlink volt. Nem is kicsi, ugyanis végig csillagos ég alatt másztunk, a napfelkelte felhőmentes volt, ám miután leértünk a hegy lábához, az egész vulkán felhőbe öltözött.

A terv az volt, hogy éjszaka felmászunk a vulkán peremére, majd a keleti oldalon megvárjuk a napfelkeltét, hiszen a felkelő nap országának legmagasabb pontjáról megnézni a felkelő napot meglehetősen vagányul hangzik. De ott fent lenni nem csak egy menő gondolat beteljesedése, hanem olyan élmény, melyet mindenkinek látnia kellene. Egyetlen baj van vele: elkezd a nap felkelni, aztán a következő pillanatban huss, már magasan jár. Természetesen ha nem is a szó szoros értelmében vett pillanatról van szó, de azért a kb. 10 percnyi páratlanul csodás élményért – amíg a nap felbukkan a horizonton – megéri hat órán keresztül hegyet mászni – a metsző szélben és közel zéró fokos hőmérsékletben fagyoskodni -, valamint kihagyni az éjszakai alvást, és másnap kókadozni.

Ebbe a kb. 10 percbe kell belezsúfolni mindent, az egyszerű emlékfotót, a pillanatról készült kiváló képeket, és természetesen a napfelkeltében elmerengeni. Nem egyszerű, mindenesetre mozgalmas, izgalmas, lenyűgöző, szívbe markoló és legfőképpen egy életre szóló élmény.” – írja a fényképről Tibor.

Grafikont készítünk

grafikonXML formátumban megkapott adatokat grafikonon jelenítünk meg. 5 összetartozó adat/tulajdonság sorozatát dolgozzuk fel: JOB_TITLE, EMPLOYEE_COUNT, MIN_SALARY, AVG_SALARY, MAX_SALARY. Az adatforrásban egyszerű életpálya modell szerint munkakörönként meghatározott az adható minimális és maximális fizetés (ez a 3 adat közvetlenül rendelkezésre áll). Minden alkalmazottra teljesül, hogy a fizetése beletartozik ebbe a zárt intervallumba. Az adatforrás feldolgozása során COUNT és AVG aggregáló függvényekkel előállítjuk – munkakörönként csoportosítva – az alkalmazottak létszámát és átlagfizetését (ez a további 2 adat). Az Oracle HR sémából lekérdezve 19 munkakört kapunk, így az XML fába is ennyi <JOB_STAT> csomópont kerül. A megfelelő pillanatban rendelkezésre álló 5 összetartozó adat exportálható XML formátumba az alábbiak szerint:

Az elkészült grafikon így jelenik meg:

JFreeChart-grafikon

A JFreeChart típusú grafikont az alábbi forráskóddal készítettük el:

A grafikon rendelkezik vizuális komponens mögötti adatmodellel, hiszen MVC szerkezetű komponens. Ez egy CategoryDataset típusú objektum. Ennek factory metódusa három paramétert vár: a jelmagyarázatot (rowKeys – legends), az Y tengelyen megjelenő feliratokat (columnKeys – jobTitleCountEmployees) és az adatokat (data – datas). Az első 3 elemű String[]: "Maximum fizetés", "Átlagfizetés", "Minimum fizetés". A második 19 elemű szöveges tömb: "Accountant (5 fő)", "Accounting Manager (1 fő)", …, "Stock Manager (5 fő)". A harmadik 3*19-es méretű kétdimenziós double típusú tömb, a megjelenítendő értékekkel: {{9000, 7920, 4200}, {16000, 12000, 8200}, , {8500, 7280, 5500}}.

A szükséges adatok megadását követően meg kell adni a grafikon megjelenítését meghatározó adatokat. Ezt egy CategoryPlot típusú objektum teszi lehetővé, amely konstruktora négy paramétert vár. Az első az adatforrás ( cd), a második az Y tengely felirata ( "Munkakör és létszám"), a harmadik az X tengely – alapértelmezetten felül megjelenő – felirata ( "Fizetés"), a negyedik a diagramtípushoz tartozó megjelenítő funkcióra utaló interfész képességeivel rendelkező névtelen objektum. Ez a 3D oszlopdiagram fekvő és egymást részben átfedő/eltakaró oszlopokkal jelenik meg.

Végül az elkészült ChartPanel típusú objektumra helyezett JFreeChart típusú diagramot hozzá kell adni a JFrame típusú GUI tartalompaneljének egy BorderLayout elrendezésmenedzserű paneljéhez.

Az elkészült grafikon többféle szakterületen is hasznos lehet. Értelmezése során összefüggéseket fogalmazhatunk meg és következtethetünk is.

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

A feladat adatfeldolgozó része a Java EE szoftverfejlesztő tanfolyam 9-12. óra: XML feldolgozás, a grafikont megjelenítő része a Java SE szoftverfejlesztő tanfolyam 29-36. óra: Grafikus felhasználói felület alkalmához kapcsolódik.

Rólunk mondták, rólunk írták

VéleményekRendszeresen megkérdezzük hallgatóink véleményét tananyagunkról, tematikáról, módszertanról, oktatóinkról, szervezésünkről, helyszínről (és persze minden egyébről is). A visszajelzések fontosak számunkra, és figyelembe is vesszük ezeket munkafolyamataink és kommunikációnk során.

Előfordult, hogy továbbfejlesztettünk egy korábbi feladatot (adtunk újabb specifikációt és másik megoldást is), hivatkoztunk további tutorial-okra, a csoport kérésére változtattunk az időrenden, a Skype konzultációk és/vagy a tesztek időpontjain, tantermet cseréltünk…

Az alábbiakban idéztem néhány véleményt, visszajelzést: rólunk mondták, rólunk írták. Próbáltam csoportosítani, kategorizálni – amennyire lehetett:

  • „A képzés szakmai színvonalát megfelelőnek találom. A gyakorló feladatok és a házi feladatok között is van mindenféle, könnyebb és nehezebb is. Tág határok között mozognak a lehetőségek. Ha kérdeztem, mindig olyan választ kaptam, ami releváns volt és az adott feladat megoldásához hasznos volt.”
  • „Először nem értettem, hogy miért oldjuk meg többször is ugyanazt a feladatot. Aztán rájöttem, hogy valami mindig megváltozott: paraméter, konkrét és általános megoldás, módszer, adatszerkezet, feldolgozás módja, konvertálás. Szembesültem azzal is, hogy mennyire figyelmesen kell értelmezni a specifikációt.”
  • „A képzés könyve jól felépített és az alapoktól magyaráz. A legjobban az tetszett benne, hogy fokozatosan haladt és mindig csak az addigi fejezetekben lévő tudást feltételezve jöttek a gyakorló feladatok. Ha valamit nem értettem, mindig kiderült, hol és mi maradt ki. (Megjegyzés: az említett könyv a Java SE szoftverfejlesztő tanfolyam tankönyve: Programozás Java nyelven).”
  • „Látszik, hogy sok-sok korábbi visszajelzés (is) beépült a tanfolyamba. Ütemezés, helyszín, új ötletek, példák. Hasznos a karriermenedzsmentes és soft skill anyag is.”
  • „Hasznos, hogy a tananyag magyar és angol nyelvű dolgokat is tartalmaz, hivatkozik kezdő (áttekintő jellegű) anyagokra és haladó BSc/MSc tankönyvek idevágó fejezeteire, szabványokra, ajánlásokra, tutorialokra is.”

  • „Olyan újdonságról is beszéltünk a képzésen, ami 3 héttel korábban került bele a JDK-ba.”
  • „Aki összerakta az anyagot, képben van azzal, milyen tudással vesznek fel a cégek junior fejlesztőket.”
  • „Korszerű a tematika. Sok újdonság van benne az újabb Java verziókról is.”
  • „A Java EE tematika kulcsszavai visszaköszönnek az álláshirdetések elvárásainak listájában.”
  • „Az elmélet és gyakorlat aránya megfelelő. Nincsenek hosszú ppt-k (illetve vannak, de több körben adagolva) és sok-sok feladatmegoldás van, különböző szinten: szintaktika, elemzés, OO modellezés, eltérő algoritmusok és adatszerkezetek.”

  • „Hasznos, hogy a házikhoz van videós megoldás, mert meg tudom nézni, hol akadtam el. Olyan is volt, hogy a videóban elhangzott, hogy ezt-azt többféleképpen is meg lehet oldani: a, b, c. Ha az a-t választod, akkor két lépés múlva akadsz el. Ha a b-t, akkor atipikus megoldást csinálsz, de működni fog. Ha a c-t, akkor az Oracle ajánlása szerint dolgozol. Persze ösztönösen az a-t akartam csinálni, de ellenőriztem és így nem dolgoztam feleslegesen, hanem áttértem a c-re.”
  • „Volt a csoportban olyan, aki már tanult régebben Pascalt. Sándor elmondta, hogy előzetes tapasztalat esetén mindig csinál összehasonlításokat és ad kereszthivatkozásokat, ami mindenkinek hasznos. Akinek most új a téma, annak világos lesz, hogy másképp is lehet, aki már tanult ilyet, az egy kulcsszóból vagy félszavakból is megerősítést kap. Milyen jó lett volna így tanulni korábban is!”
  • „Mindig tudtuk, hogy mit, miért, hogyan és miért éppen úgy csinálunk.”
  • „Elkaptam a fonalat és már tudok úgy gondolkodni, ahogyan ehhez a szakmához kell. Nem volt könnyű, de úgy érzem sikerült.”
  • „Elmondtátok, hogy közös kódolás közben miért nem lineárisan írjátok a forráskódot. Értékes infó volt, mert addig önállóan nem jutottam el a felismerésig, hogy ez a módszer milyen praktikus.”
  • „A tananyag elemei úgy épülnek egymásra, hogy mindenből minden logikusan következik és lehet visszafelé is hivatkozni. Én is tanár vagyok – igaz fizika szakos –, így ráéreztem a módszertan elemeire a tematikában és ez a tudatosság a mintafeladatoknál és a gyakorló feladatoknál is jelen van. Sőt még a Pólya-féle modellre is ráismertem a problémamegoldás során.”

  • „Az oktatók nagyon tudatosak. Jól tudják, mit és hogyan akarnak elérni és mi lesz majd később hasznos az állásinterjún, ill. az életben.”
  • „Az oktatók (Sándor és Borisz) nagyon felkészültek, magabiztosak. Érződött a sok éves szakmai tapasztalat és a rutin.”
  • „Sokszor kérdeztünk az órákon és láttam, hogy Sándor szinte előre tudja, hogy mit fogunk kérdezni.”
  • „Én a 32. csoportban voltam, mégis türelmes hozzáállást tapasztaltam.”
  • „Minden alkalmat kérdésekkel kezdtünk. Ebből jól látszott, hogy ki hol tart és mire kell visszatérni. A vége felé már rá is játszottunk: vajon tudunk olyat kérdezni, amire Borisz vagy Sándor kapásból nem tudja a választ. Nem tudtunk.”
  • „Sándort idézve: „egy informatikus/szoftverfejlesztő sosem adja fel”. Olyan nincs. Legfeljebb holnap helyett holnaputánra készül el a szoftver, de elkészül és működik.”
  • „A legütősebb mondat egy összetettebb UML ábra elemzésénél hangzott el: „el kell igazodnunk az általunk teremtett világban”. Ekkor értettem meg, hogy mi döntjük el, hogy valamiről milyen adatokat tárolunk és azokkal mi fog történni.”
  • „Hihetetlen a lelkesedésük, pedig tizenéve csinálják.”

  • „Hosszú OKJ képzésre nincs időm, mert dolgozom. Mindenképpen munka mellett elvégezhető tanfolyamot kerestem, ezért választottalak benneteket.”
  • „Azért jelentkeztem a Java SE képzésre, mert kutató vagyok, és így sok-sok adatot kell elemeznem. Jönnek mindenfelől: mérek műszerekkel, letöltök referenciaadatokat, hasonlítom szabványokhoz és sokféle file-t fel kell dolgoznom. Megismertük az adatfeldolgozó algoritmusokat, a szöveges file-okat, XLS-t is. Írtam ezekhez értelmezőt, konvertálót és a csoportban másnak is jól jött.”
  • „Ausztriából ingáztam vissza Java-t tanulni, de úgy érzem megérte.”
  • „Jogászként dolgozom és írni szeretnék magamnak egy nyilvántartó szoftvert.”
  • „Közgazdászként karriert váltok és banki informatikai rendszer karbantartását, továbbfejlesztését szeretném végezni a jövőben szoftverfejlesztőként, projektmenedzserként.”
  • „Könyvelőként 15 év után kiégtem és karriert váltanék. Úgy érzem, a fejlesztés nekem való.”
  • „Elértem a célomat. 4 hónap alatt kaptam egy külföldön is használható, konvertálható tudást és így a nyáron költözünk is a párommal Kanadába. Tanítói végzettséggel ott nem tudnék érvényesülni. Mivel az angol jól megy, így bátran jelentkezem majd junior programozói pozícióba.”
  • „Szuper volt, de tőlem ez nagyon távol áll. Bele akartam látni egy kicsit, miről is szól a programozás. Inkább CMS alapú weblapok szerkesztésével fogok foglalkozni a jövőben. Most már érteni fogom, hogy miről beszél majd a fejlesztő, ha marketingesként feladatot adok neki.”
  • „Tetszett az SE tanfolyam, ezért jelentkeztem az EE-re is. Még nincs vége, de már érzem, hogy már mennyi mindent tudok és persze mennyi mindent még nem.”

  • „Rugalmasak voltatok a szervezésnél. Jópofa volt, hogy egyszer előre megkaptunk 3 pici feladatot, ami a vasárnapi harangozás időtartamára készült, mert éppen nem volt másik szabad terem. Jó volt, hogy mindig előre egyeztettük az órák, Skype, tesztek időpontjait és nem volt gond egy-egy ünnep vagy ledolgozós szombat.”
  • „Először úgy gondoltuk (meg is szavaztuk), hogy jó lesz a csoportnak a heti két alkalom, keddenként és szerdánként. A 3. hét után átszerveztük, mert többen is szóltak, hogy „nem kapnak levegőt”. Ki is hagytunk egy hetet. Jó volt ez a rugalmasság és nem volt kőbe vésve az órarend.”
  • „Jó, hogy tudtunk hétvégén délelőttre is Skype időpontokat tenni, mert én például nem tudtam volna már koncentrálni, ha hétköznapon munka után este lett volna.”
  • „A korábbi tanfolyamon Dropbox mappát használtatok. Az új tanfolyamon sokkal jobb az ILIAS.”
  • „Mindig minden úgy történik, ahogyan megbeszéljük.”
  • „Jó hangulatúak voltak az órák. Mintha nem is tanfolyamon, hanem egy munkahelyen dolgoztunk volna kis csoportban. Ötleteltünk, megbeszéltük, közösen terveztünk.”

  • „A helyszín jól megközelíthető, de parkolni izgalmas a környéken. Érdemes figyelni, mert valami útfelújítás, építkezés, lezárás, terelés állandóan van valahol „epszilon sugarú környezetben, ahol epszilon alig nagyobb 3,14 méternél”. :-)”
  • „Olyan rendesek voltak a tantermesek, hogy a szombati felvonulás közben (megjegyzés: a Váci utca igen zajos volt) az ebédszünetben adtak egy másik termet az épület belső, csendes részében.”
  • „Az SE tanfolyamon még a Piarista Gimnáziumban voltak az órák és ott macerás volt a WiFi. Az EE képzés már átkerült a Pannon Kincstárba, ami sokkal jobb hely.”

  • „A Java SE tanfolyam után az EE jóval nehezebb volt. Olyan, mintha az A jogsi után az összes többi kategóriát is megszereztük volna.”
  • „Örülök, hogy elindítottátok a blogon az interjúsorozatot IT karrier témában. Ránézek majd minden hónapban.”
  • „A weboldal, a blog, az ILIAS-os tananyag mind-mind igényes és profi munka.”
  • „Sokat kell az órákon kívül is foglalkozni az anyaggal. Sok időt vesz igénybe a felkészülés két alkalom között a tesztre, illetve megoldani a kódolási feladatokat. A sikerélmény csak sok gyakorlással jön el.”
  • „A mikroközösségemben én vagyok a kocka. Az Agymenőkben Leonard azt mondja: „Sheldon, nem is vagy annyira kocka, inkább téglatest”. A csoportban voltak még nálam is kockábbak. Nem is egy. :-)”
  • „Könnyebb annak a programozás, aki jobb volt matekból, de azért nekem is ment.”
  • „Ravasz ez az ILIAS. Ha kitöltök egy tesztet, utólag mindig megmutatja, mi volt a helyes (mit kellett volna), de ezt is időkorlátosan teszi.”
  • „Korábban azt gondoltam, hogy a programozás one-men-show. A SCRUM tréningen és a vizsgafeladat megoldásánál tapasztaltam meg, hogy a programozók mennyire csapatjátékosok.”
  • „Hasznos, hogy a FB csoportban értesítést küldtök IT-s rendezvényekről. Elkezdtem járni a HWSW eseményeire.”

 

(A blog bejegyzést frissítettem, kiegészítettem a következő időpontokban:
2019. március 9., június 4.)

Télapó probléma

Télapó-problémaAz operációs rendszerek tervezésének fontos része az ütemezési, erőforrás- és szálkezelési feladatok problémamentes, holtpontmentes megoldása, szinkronizálása, amiről sok ismert szerző publikált már, néhányan közülük angol nyelven: W. Stallings, A. B. Downey, A. S. Tanenbaum, A. S. Woodhull., és magyarul is: Galambos Gábor, Knapp Gábor és Adamis Gusztáv. Ehhez a szakterülethez tartozik több népszerű probléma/esettanulmány, például a vacsorázó bölcsek problémája, illetve a Santa Claus Problem, vagyis a Télapó probléma.

A Télapó probléma specifikációját és megoldását a konkurens programozás eszközeire építve J. A. Trono készítette el (szemaforokkal), amire építve is – és kritizálva is azt – több Java implementáció is elkészült (például: P. Steiner), valamint több programozási nyelv szálkezelési lehetőségeinek összehasonlításáról is publikált J. Hurt és J. B. Pedersen és kliens-szerver elosztott környezetben is áttekintette a lehetőségeket D. Marchant és J. Kerridge. Ismert Haskell, Erlang, Polyphonic C# implementáció is.

A Télapó probléma meghatározása

A Télapó alszik az északi-sarki boltjában és csak akkor ébredhet fel, ha mind a 9 rénszarvas visszatér a dél-csendes-óceáni trópusi szigetén töltött rendes évi nyaralásukról, illetve ha akad néhány manó, akiknek nehézségei vannak az ajándékkészítés során. A 10 manó közül 1 manó problémája nem elég komoly ahhoz, hogy felébressze a Télapót (egyébként sosem aludna), így 3 manó megy egyszerre a Télapóhoz. Amikor a 3 manó problémáit közösen megoldották, akkor mind a 3 manónak vissza kell térnie a többi manóhoz, mielőtt egy újabb manólátogatás megtörténne. Ha a Télapó úgy ébred, hogy 3 manó várja őt a bolt ajtajánál és az utolsó rénszarvas is visszatért a trópusokról, akkor a Télapónak fontosabb, hogy olyan gyorsan elinduljon a szánnal, amilyen gyorsan csak lehetséges – így a manóknak várniuk kell karácsony utánig. Feltételezzük, hogy a rénszarvasok nem akarják elhagyni a trópusokat, ezért az utolsó pillanatig maradnak, amíg csak lehetséges. Lehet, hogy egyáltalán nem is jönnének vissza, ameddig a Télapó fizeti a számlát a paradicsomban… Ez is megmagyarázhatja az ajándékok kiszállításának gyorsaságát, hiszen a rénszarvasok alig várják, hogy visszatérhessenek oda, ahol meleg van. Az utolsóként érkező rénszarvas büntetést kap a Télapótól, mialatt a többi rénszarvas a meleg kunyhóban várja, hogy befogják őket a szán elé.

A Télapó probléma – egyik – megoldása

Találtam egy kb. 10 perces kiváló YouTube videót/animációt (The Santa Claus Problem – Thread Synchronization), amely lépésenként felépíti a feladatot, érzékelteti a közben felmerülő problémákat, és megoldást is mutat. Ezt ajánlom december 6-án minden érdeklődő figyelmébe:

A feladatot részletekbe menően és komplex módon gondolkodva kell megtervezni, és implementációi komoly nyelvi eszköztárat igényelnek. Érdemes P. Steiner Java megoldását részletesen átnézni, újragondolva – újabb nyelvi eszköztárral – implementálni.

A feladat a Java EE szoftverfejlesztő tanfolyam 1-4. óra: Elosztott alkalmazások, webszolgáltatások, illetve 5-8. óra: Szálkezelés, párhuzamosság alkalmaihoz kapcsolódik.