B.Ú.É.K. – XML, JSON, enumok és lambda kifejezések

Boldog új évet, folytassuk akkor a Java tanulást. Az előző bejegyzés december 23-án íródott, azóta megint sikerült tovább haladni az online programozási tanfolyamon. Még mindig ezen a listán megyek végig: java tanfolyam

Fájlok feldolgozása: XML és JSON

December 26-án az XML fájlok feldolgozásával ismerkedtem egy eléggé részletes StudiCore feladatban, és minden percét élveztem. Az elméleti anyagban elég sok segítséget kaptam, így kisebb Google kutatás után meg is tudtam írni a programot.

A fő feladat az adott XML fájl beolvasása és feldolgozása volt. Ahogy most visszanézem az oktatószoftvert, 14:33-kor sikerült teljesíteni. Épp megettük az előző napi családi karácsonyozásból hazamentett töltött kacsát, és ezerrel pörgött az agyam.

Ezután újabb rész következett az elméletben, a serializáció megértése után újabb feladat következett. Megismerkedtem a Json fájlok feldolgozásával és kezelésével is, ami már jóval nehezebb volt az XML feladatnál. Nem azért, mert a Json bonyolultabb téma az XML-nél. De a StudiCore elméletében a feldolgozásról szóló rész levezette a kódot, de a közepe felé csak három pontot találtam.

A leírásban pedig a szerző, Pasztuhov Dániel elmondta, hogy fontosnak tartja, hogy önállóan is tudjuk használni az angol forrásokat, mivel ez is a programozó feladatainak része. Rajtam nem múlt, a Jackson Json kezelőt kellett használni, amihez részletes dokumentáció is tartozik, így rá is kerestem.

Hogy ezzel mit össze nem szenvedtem 🙂 Nyilván majd mindenki rájön arra, hogy kezdőként baromi nehéz a hivatalos doksikat használni. Mert nincs benne leírva az a pár sor, amire szükséged van, helyette 200 sorban mutatják be az összes lehetőséget. Amelyeknek kb. 0,1%-ra lett volna szükségem.

Az sem segített, hogy az interneten TÚL SOK forrás van. Amint sikerült áttekinteni ezeket, máris megvolt a megoldás. Erre egészen pontosan a január 4-5-i hétvégén került sor, amikor leadtam a határidő munkákat, és EGÉSZ hétvégén ráértem programozni. A feleségem közben jóféle kajákat csinált, a gyerek meg elvolt a játékokkal, és szombaton pár órára még játszóházba is elmentünk. Szerintem én voltam ott az egyetlen szülő, aki laptoppal ült a 200 szülő és gyerek között, és Java-ban programozott. 🙂

Bár megfogadtam, hogy nem árulok el megoldásokat azoknak, akik még csak most tanulják a Java-t, pár linket megosztanék a Json feldolgozásához. (Megint leírom, nem azért nem írok konkrétumokat, mert szemét vagyok, csak ha segít valaki a megoldásban, azzal tutira nem fog rögzülni, rá kell jönni magatoktól.)

Enumok

A StudiCore online programozói tanfolyam témaköreinek 29. pontja az enumok. Ez egy nagyon élvezetes fejezet volt, jól vezették le az elméletet, és nagyon jók voltak a feladatok is. Az első enumos gyakorló feladatok bevezettek ennek a speciális adatszerkezeteknek a világába, és kipróbálhattam a tanultakat.

A második feladat jóval bonyolultabb volt, és programozás közben többször is megszállt a wow-érzés. Nem tudom ezt jobban elmondani, programozol, és egyszer csak megvilágosodik minden. Közben meg azon töprengesz, hogy ki a fene tudta ezeket a teljesen logikus és nagyon használható dolgokat kitalálni?

Az enum fejezethez tartozó nagyfeladatot nagyon élveztem, gyakorlatilag 2 ülésben megcsináltam. Az első alkalommal azért kellett befejeznem, mert már 23:40 volt, és ma folytattam. Ma olyan 19:30 körül sikerült 100%-ra teljesítenem a feladatot, aztán észrevettem a StudiCore kiértékelőjének egyik kommentjét, és rájöttem, hogy megoldottam a feladatot, de kerülőúton.

Két lehetőségem volt, lépek tovább a következő fejezetre, vagy átírom a fél programot. Mivel az enumokról volt szó, és izgatott a kihívás, a második lehetőséget választottam. Nem tudom leírni milyen érzés ez, amikor nem azért csinálsz dolgokat, mert kell, hanem azért, mert meg tudod csinálni.

Nekem is a fejemben volt az átírás terve, aztán csak át kellett gondolnom a program szerkezetet, és máris sikerült. Jól tettem, mivel így még mélyebben megismerkedtem az enum mappal, és a megfelelő felhasználásával. Most már tökéletesen világos ez is, és teljesen más megvilágításba helyezi az ide tartozó elméletet is. Én azt tanácsolom, ha ilyen helyzettel találkoztok, szánjatok rá ti is időt, mert a feladat tökéletes megértése nagyon jól fog kamatozni a továbbiakban.

Beágyazott és névtelen osztályok, lambda kifejezések

Ezzel el is érkeztem a StudiCore témalistáján a 30. ponthoz, mely a Beágyazott és névtelen osztályok, lambda kifejezések nevet kapta. Kb. 1 órával ezelőtt álltam meg, az első feladatnál.

Már megértettem, mit jelentenek a beágyazott és névtelen osztályok, utána jöttek a lambda kifejezések. Az elmélet, mit ne mondjak, brutál volt. Aki majd eljut a lambdákig, érteni fogja, miért lehet ezeket elég bonyolultan leírni.

Aztán következett a StudiCore elméleti tesztje, amin elsőre 33%-kal elhasaltam. Az elméleti tananyag még csak-csak ment, de amikor labda kifejezéseket kellett írni, akkor elhasaltam. Pedig ott volt a tananyag, de azért gyakorlat nélkül ez nehezen emészthető.

Nem volt más lehetőség, megnéztem az elméleti teszt kiértékelését, és a hozzá írt magyarázatot. Összehasonlítottam, amit én írtam, és amit a szoftver írt. Átnéztem a magyarázatokat, és akkor megvilágosodott minden. A megismételt teszten már 85%-ot értem el, amivel tovább haladhattam volna, de érdekelt, mit rontottam el megint. VOLT SZEBB MEGOLDÁS, azt.

Megnéztem, megértettem, miért, és újra nekivágtam a tesztnek. 100%-ra teljesítettem úgy, hogy mindent fejből csináltam. Most már elmondhatom, hogy megértem a Java lambda kifejezése alapjait, és mehetek tovább a gyakorlati feladatokra.

Itt állok most, és ha minden a terveim szerint halad, akkor hétvégén megint belehúzok a tanulásba. A két nap legalább 10-15 órát rászánok a dologra, remélhetőleg közelebb jutok a lambda fejezet befejezéséhez is.

A továbbiak: adatbázisok

A következőkben ezek a fejezetek jönnek majd:

31. Külső library-k használata (Apache Commons, Google Guava)

32. Adatbázisok elmélete röviden (amennyire egy junior programozónak kellhet), táblák, kulcsok, SQL, redundancia, JOIN, GROUP BY, tranzakciók, lockok, külső kulcsok

33. Java és az adatbázisok (JDBC)

34. Objektumok leképezése SQL adatbázisra

Na ez brutál lesz. Rettenetesen kíváncsi vagyok, hogy a StudiCore hogyan adja elő az adatbáziskezelést. A fősulinkon a Java és az analízis mellett az adatbáziskezelés volt a szórótárgy. Ott nagyon utáltam, és emlékszem, hogy a vizsgán papíron kellett megválaszolni a kérdéseket, és SELECT-eket írni. Úgy, hogy sem ellenőrzési, sem visszajelzési lehetőségünk nem volt, baromi érdekes volt.

Aztán amikor évekkel később programozókkal dolgoztam, akkor láttam, hogy a WordPress weboldalak lényege az adatbázis, és milyen jó dolgokat lehet velük létrehozni. Elszórakoztam én is alap lekérdezésekkel a phpMyAdminban, bár ott inkább kattintgatni kellett. Meg a programozók is PHP-ba szúrták bele a lekérdezéseket. Érdekes lesz megnézni, hogy a Java-ban hogyan kezelhetők az adatbázisok.

Még egy apróság: miután tanultam a lambda kifejezéseket, vicces volt visszaolvasni az előző bejegyzésem, ahol a program hosszúságáról írtam. Aki tudja, mi köze van ennek a lambdákhoz, az is viccesnek fogja tartani 🙂 Legközelebb innen folytatjuk.