Rómeó és Júlia

Vajon hogyan kerül elő a Rómeó és Júlia az it-tanfolyam.hu szakmai blogban témaként? Hiszen mégiscsak egy Shakespeare színműről/tragédiáról van szó. Vajon mit programozhatunk Java nyelven ehhez kötődően épp Valentin-napon? Mindjárt kiderül.

Tegyünk fel egy kérdést és próbáljunk rá válaszolni! Vajon ki szereti jobban a másikat? Rómeó vagy Júlia?

Induljunk el az adatforrásból, amihez alkalmazkodnunk kell. A színmű angol nyelven publikusan elérhető XML formátumban: The Tragedy of Romeo and Juliet. Az XML fájlok könnyen feldolgozhatók Java nyelven. Részletek a fájlból (görgethető):

Az XML fájl felépítését tanulmányozva (1-5 alapján) megállapíthatóak az alábbiak:

  • A színmű öt felvonásból áll, ezeket <ACT></ACT> csomópontok jelölik.
  • Egy „adagnyi” beszédet a <SPEECH></SPEECH> csomópont fog össze.
  • A csomópontban található, hogy ki beszél: ez a <SPEAKER></SPEAKER> elem. A mesélő, kar esetén ez az elem üres, és a null-t nem szabad feldolgozni.
  • A csomópontban találhatók a szabadvers kimondott sorai: ezek a <LINE></LINE> elemek. Legalább egy sor minden beszédben van, és nem tudjuk előre a számukat.
  • Nem következetes helyen a DOM-ban, többféleképpen beágyazva és önállóan is előfordulhatnak <STAGEDIR></STAGEDIR> elemek. Ezek a színmű Kosztolányi-féle magyar fordításában dőlt betűvel megjelenő – cselekvésre utaló – színpadi utasítások. Van köztük csók is, amit az XML-ből nem szabad feldolgozni, bár erősen ráutaló magatartás. 🙂
  • Nem tudjuk előre, hogy hány csomópont található a fájlban.

A Java program készítése, tesztelése közben – mintegy mellékesen – megtudhatjuk, hogy Rómeó 612 sorban 24075 betűnyi, Júlia 544 sorban 21855 betűnyi szöveget mond. Persze nem mindet egymásnak mondják. Eközben vajon hányszor mondják ki a szeret, szeretem, szeretlek szavakat? A ragoktól, toldalékoktól, kis- és nagybetűket nem megkülönböztetve és attól is eltekintve, hogy éppen kinek/kiknek mondják amit éppen mondanak, egy becsléshez elegendő, ha a love szóra fókuszálunk (számíthatna a loving alak is).

Az alábbi Java forráskód betölti az XML fájlt a memóriába. Ezután kiválogatja a beszédeket. Ha a beszélő élő ember (szereplő), akkor érdekes, hogy mit/miket mond. Ha ROMEO vagy JULIET mondja az adott sort, akkor azt a program kiválogatja két generikus listába ( romeoLineList és julietLineList) beszédnyi adagokban. Ez nem szétválogatás programozási tétel, mert nem minden beszéd minden sora kerül valahová. A kivételkezelés nem kidolgozott.

Könnyen megkaphatjuk, hogy Rómeó hány darab olyan sort mond, amely tartalmazza a love szót. Például ennek a lambda kifejezésnek kiíratva az eredményét a konzolra:

Könnyen megkaphatjuk Rómeótól a 53 sornyi szöveget is így:

Íme Rómeó kiválogatott sorai (az 5. sorban kétszer is előfordul a love, de ez most nem számít):

Hasonlóan megkaphatjuk Júlia 38 kiválogatott sorát is:

Próbáljunk válaszolni a fentiek alapján a feltett kérdésre! Következtethetünk arra, hogy Rómeó jobban szereti Júliát. Legalábbis többször említi. 53>38. Persze tudjuk, hogy mindez nem ilyen egyszerű. 🙂

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

A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 21-24. óra: Objektumorientált programozás 2. rész, 25-28. óra: Objektumorientált programozás 3. rész, valamint a Java EE szoftverfejlesztő tanfolyam szakmai moduljának 9-12. óra: XML feldolgozás alkalmaihoz kötődik.

Nagyon különböző megoldásokat készíthetünk és szerteágazóan gyakorolhatunk, ha:

  • az XML fájlt kézzel mentjük a webről és utána a helyi fájlrendszerből dolgozzuk fel,
  • az XML fájlt közvetlenül a webről, dinamikusan olvassuk,
  • csak beépített XML-feldolgozást használunk,
  • külső XML API-t használunk,
  • DOM, SAX, XSL, van-e DTD,
  • XPath kifejezésekkel adunk választ a kérdésre,
  • a fenti didaktikusan egyszerű megoldás helyett haladóbb eszközöket (például: Stream API-t) használunk.

IT történet – februárban történt

IT történet blog bejegyzés sorozatunkban válogatunk a februárban történt események közül – bármikortól napjainkig. A főbb témakörök: IT általában, számítástudomány, hardver, szoftver, platform, szoftverfejlesztés, játékprogramok, híres informatikusok, kibernetikusok, feltalálók, IT hírek, technológiai mérföldkövek. Természetesen nem törekedhetünk a teljességre, pusztán érdekességeket említünk röviden, tömören, amit illik tudni a szakterület iránt érdeklődőknek.


1995. február 1-jén, 26 éve történt:
Megalakul a kanadai BioWare játékfejlesztő vállalat. Népszerű szerepjátékokat, 3D-s játékokat készítenek, például: a Dragon Age és a Mass effect.


1966. február 3-án, 55 éve történt:
A Luna-9 szovjet holdautomata első űreszközként, sima leszállást hajtott végre egy idegen égitesten. A Hold felszínéről elkészítette az első helyszíni panorámafelvételeket.


2004. február 4-én, 17 éve történt:
Elindult a Facebook amerikai alapítású közösségi hálózat. Eredetileg Thefacebook-nak hívták. Mark Zuckerberg alapította iskolatársaival együtt.


1946. február 6-án, 75 éve történt:
Bay Zoltán és csoportja saját fejlesztésű radarberendezéssel kimutatta a Holdra sugárzott rádióhullámok visszaverődését az égitest felszínéről. A kutatók érdeme a jelösszegzés eljárásának (long-time integration) kifejlesztése és gyakorlati alkalmazása.


1957. február 8-án, 64 éve történt:
Elhunyt Neumann János magyar születésű matematikus. Kvantummechanikai elméleti kutatásai mellett a digitális számítógép elvi alapjainak lefektetésével vált ismertté.


2005. február 8-án, 16 éve történt:
Megjelent a Google Térkép (Google Maps). A Google által fejlesztett ingyenes internetes térképszolgáltatásban elérhető térképek és műholdfelvételek az egész Földet lefedik.


1980. február 13-án, 41 éve történt:
Megalapítják az Apollo Computer nevű vállalatot, amely egészen 1987-ig a hálózati munkaállomások legnagyobb gyártója volt. 1989-ben felvásárolta a HP.


1962. február 14-én, 59 éve történt:
Megjelent a Spacewar!, amely a MIT-n, az egyetem PDP-1 típusú számítógépén működött. Ez volt az első videójáték.


1953. február 16-án, 68 éve történt:
Megszületett Roberta Williams, a világ első női játékfejlesztője és dizájnere. Munkássága a Sierra Entertainment céghez kötődik, ahol elkészült az első grafikus kalandjáték.


1991. február 20-án, 30 éve történt:
Megjelent a Python – interpreteres, objektumorientált, általános célú – programozási nyelv.


1455. február 23-án, 566 éve történt:
Johannes Gutenberg német feltaláló – a mozgatható betűelemekkel való könyvnyomtatás atyja – nyomtatni kezdte az emberiség első nyomtatott könyvét, a Bibliát.


1955. február 24-én, 66 éve történt:
Megszületett Steven Paul „Steve” Jobs, amerikai feltaláló és üzletember. Irányítása alatt fejlesztette ki az Apple Computer a cég népszerű termékeit: Macintosh számítógép, iPod médialejátszó, iPhone okostelefon, iPad táblagép.


1997. február 28-án, 24 éve történt:
Megjelent a Grand Theft Auto videójáték, amelyet a Rockstar North (akkori nevén DMA Design) és a Tarantula Studios fejlesztett. Ez volt a népszerű franshise első része.


1860. február 29-én, 161 éve történt:
Megszületett Herman Hollerith német származású amerikai statisztikus, feltaláló, üzletember, aki lyukkártya-feldolgozó gépet fejlesztett és szabadalmaztatott.


2012. február 29-én, 9 éve történt:
Forgalomba került a Raspberry Pi, bankkártya méretű, egyetlen áramköri lapra/kártyára integrált BCM2835 alapú egykártyás számítógép, amelyet az Egyesült Királyságban fejlesztettek oktatási célokra.


Organogram készítése

Organogram

OrganogramAz Oracle HR sémából építünk organogramot, amivel megjeleníthető a szervezeti hierarchia. Személyenként készítünk csomópontokat. (Másképpen is lehetne: például részlegenként.) A megvalósítás során kétszer konvertálunk A-ból B-be. Először az adatbázisból/adatforrásból SQL lekérdezéssel jutunk hozzá a szükséges adatokhoz, amelyeket generikus listába képezzük le. Ezután a listát feldolgozva generálunk HTML fájlt, amely tartalmaz egy Organization Chart diagramot.

Hasonló feladat: Ki kinek a vezetője?, rekurzív lekérdezéssel. Érdemes összehasonlítani a kétféle szemléletmódot.

Tervezés

Most pedig azt használjuk fel, hogy az Oracle HR sémában az EMPLOYEES táblában reflexió van, amelyet az EMPLOYEE_ID és a MANAGER_ID mezők biztosítanak.

Az Organization Chartnál három adatsor adható meg. Ezek most testre szabva (mindegyik szöveges): 'Employee lastname', 'Job ID', valamint jelmagyarázatként további három mező összefűzve: 'Employee name, Department name, Job title'. Az organogramon megjelenő adatok például: "Raphaely", "PU_MAN", valamint a csomópontra fókuszálva megjelenő tooltip: "Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager". A DEPARTMENTS táblából – az EMPLOYEES-zel a DEPARTMENT_ID-vel összekötve – megkapjuk a DEPARTMENT_NAME-t. A JOBS táblából pedig – az EMPLOYEES-zel a JOB_ID-vel összekötve – megkapjuk a JOB_TITLE-t.

A lekérdező parancs

SQL-organogram

Az EMPLOYEE_ID elsődleges kulcs, vagyis kötelező. A MANAGER_ID nem kötelező, a hierarchia tetején álló vezetőnél ez a mező null értékű. Mivel a MANAGER_ID nem kötelező, így külön lekérdező parancsban kell előállítani a 15 középvezetőt együtt a 2 felső vezetővel, valamint az egyetlen felső vezetőt, akinek a MANAGER_ID-ja null. Ezt a két részeredményt össze kell fűzni ( UNION).

Az eredménytábla

SQL-eredménytábla

Az adatfeldolgozás lépései

Java programozási nyelven kötelező a kivételkezelés a JDBC kapcsolatfelvétel, SQL parancs futtatása, valamint a fájlkezelés során. A JDBCConnection interfészben definiált szöveges konstansok: DRIVER, URL, USER, PASSWORD (az adatbázis-szerverrel való kommunikációhoz), SQL (a lefuttatandó lekérdező parancs). Az OrganizationChart interfészbe került a HTML_FILE_PATH (a generálandó HTML fájl Path útvonala) és a HTML (konstans váz az organogram testre szabott HTML+JavaScript forráskódja). Az SQL parancs ResultSet eredménytáblájának feldolgozása során áll elő az orgChartDataList generikus lista. A HTML konstans szövegben lévő #OrgChartData# elemet ki kell cserélni a generikus listából Stream API-val dinamikusan összefűzött adatokra. A fenti példa ide kapcsolódó része: "[{'v':'Raphaely', 'f':'Raphaely<div style="color:red; font-style:bold">PU_MAN</div>'}, 'King', 'Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager']". Ezt követően a java.nio csomag Files osztályának write() metódusával fájlba menthető az előállított fájltartalom. A konkrét Java forráskódot most nem részletezem.

Az elkészült organogram

HR-organogram

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

A feladat a Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 13-16. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 1. rész, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalomhoz kapcsolódik.

IT történet – januárban történt

IT történet blog bejegyzés sorozatunkban válogatunk a januárban történt események közül – bármikortól napjainkig. A főbb témakörök: IT általában, számítástudomány, hardver, szoftver, platform, szoftverfejlesztés, játékprogramok, híres informatikusok, kibernetikusok, feltalálók, IT hírek, technológiai mérföldkövek. Természetesen nem törekedhetünk a teljességre, pusztán érdekességeket említünk röviden, tömören, amit illik tudni a szakterület iránt érdeklődőknek.


1939. január 1-jén, 82 éve történt:
Bill Hewlett és Dave Packard megalapította az amerikai Hewlett-Packard Company (HP) IT vállalatot, amely a PC-iről és nyomtatóiról lett világhírű.


1979. január 2-án, 42 éve történt:
Dan Bricklin és Bob Frankston megalapítja az amerikai Software Arts nevű vállalkozást. Elkezdték a VisiCalc nevű számítógépes program fejlesztését, amely az első mikroszámítógépekre kifejlesztett táblázatkezelő volt.


1977. január 3-án, 44 éve történt:
A Steve Jobs, Steve Wozniak és Ronald Wayne által alapított Apple Inc. bejegyzett részvénytársaság lett.


1983. január 3-án, 38 éve történt:
A Time magazin a személyi számítógépet választotta ‘Az év emberévé’. Az 1927 óta minden évben kiosztott cím történetében először fordult elő, hogy nem embernek ítélték oda.


2009. január 3-án, 12 éve történt:
Egy ismeretlen (fórumos nevén Satoshi Nakamoto) kibocsátotta a Bitcoin nyílt forráskódú digitális fizetőeszközt. Ez volt az első kriptovaluta. Az elnevezés vonatkozik a nyílt forráskódú szoftverrel létrehozott elosztott hálózatra is.


1972. január 4-én, 49 éve történt:
A Hewlett Packard vállalat bemutatta az első tudományos célú zsebszámológépet, a HP-35-öt. Az eszköz később óriási siker lett.


1995. január 5-én, 26 éve történt:
Bill Gates bemutatta a Microsoft Bob nevű, Windows 3.1-re és Windows 95-re szánt grafikus felületet. Ez a vállalat egyik legnagyobb bukásának bizonyult. Több szaklap is beválogatta minden idők legrosszabb szoftverei közé.


2000. január 6-án, 21 éve történt:
A San Francisco-i MacWorld Expo-n az Apple Inc. bemutatta a Mac OS X operációs rendszert.


1943. január 7-én, 78 éve történt:
Elhunyt Nikola Tesla, aki a világ egyik legjelentősebb és leghíresebb, szerb származású tudósa és feltalálója volt, tevékenységét elsősorban az elektromosság, mágnesség és gépészet területén fejtette ki.


1982. január 7-én, 39 éve történt:
A Consumer Electronics Show (CES) alkalmával a Commodore Business Machines amerikai, elektronikai cég bemutatta a Commondore 64-et, amely az 1980-as évek kultikus személyi számítógép-típusa volt.


1889. január 8-án, 132 éve történt:
Herman Hollerith német származású amerikai statisztikus, feltaláló, üzletember megkapta a szabadalmat az általa kifejlesztett lyukkártya-feldolgozó gépre, amivel néhány hónap alatt feldolgozta az 1890-es amerikai népszámlálás adatait.


2007. január 9-én, 14 éve történt:
Az Apple Inc. bejelentette az iPhone-t, amely az iPhone-széria első okostelefonja volt.


1946. január 10-én, 75 éve történt:
Megtörtént az első sikeres visszhangfelismerés az amerikai hadsereg Diana kísérleti projektjében, amelynek célja volt a Holdról visszavert radarjelek fogadása. Ez volt az első radarcsillagászati kísérlet egy másik égitest vizsgálatára.


1934. január 11-én, 87 éve történt:
Megszületett Tony Hoare, teljes nevén Sir Charles Antony Richard Hoare. A Turing-díjas, tudományos és oktatási tevékenységéért lorddá avatott brit számítógéptudós nevéhez fűződik a Quicksort (gyorsrendezés) algoritmus.


1968. január 12-én, 53 éve történt:
Az AT&T amerikai telekommunikációs vállalat bejelentette, hogy a 911-es számot egyetemes segélyhívó számként jelölte meg.


2020. január 14-én, tavaly történt:
A Microsoft Corporation megszüntette a Windows 7 kiterjesztett támogatását, hogy újabb technológiák és nagyszerű, új szolgáltatások támogatására tudja összpontosítani befektetéseit.


2001. január 15-én, 20 éve történt:
Elindult a Wikipédia projekt angol nyelvű változata. Ez minden idők legnagyobb, szabadon szerkeszthető internetes enciklopédikus gyűjteménye. 2020-ban már 6 millió szócikket tartalmazott. 2002-től a Wikipédia napja.


1986. január 19-én, 35 éve történt:
Megjelent az első IBM PC-re írott rezidens, flopin terjedő bootvírus, a Brain. Szerzői azért hozták létre, hogy büntessék az illegális szoftvermásolást.


1999. január 19-én, 22 éve történt:
A Research in Motion (RIM) szoftverfejlesztéssel és IoT technológiával foglalkozó kanadai cég megjelentette a BlackBerry terméksorozat első eszközét. Ez a BlackBerry 850 hordozható, valósidőben e-mailt küldő/fogadó személyhívó volt.


1999. január 20-án, 22 éve történt:
Először jelent meg a Happy99 féreg, amely az első e-mailben terjedő számítógépvírus volt.


1959. január 21-én, 62 éve történt:
Az Esti Hírlap beszámolt az első magyar elektronikus számítógép (korabeli szóhasználattal: ‘számológép’), az M-3 elkészültéről. Ez a magyar informatika születésnapja.


1984. január 22-én, 37 éve történt:
A XVIII. Super Bowl harmadik negyedében bemutatták az azóta kultikussá vált Apple Inc. ‘1984’ televíziós reklámjának nevezett, amely útjára indította a Macintosh személyi számítógépet.


1996. január 23-án, 25 éve történt:
A Sun Microsystems félvezetőket, számítógépeket, szoftvereket gyártó amerikai cég kiadta a Java fejlesztői környezet első változatát Oak néven (Java Development Kit 1.0).


1984. január 24-én, 37 éve történt:
Apple Inc. bemutatta második személyi számítógépét, a Macintosh-t, amelynek Mac OS nevű grafikus felhasználói felületű operációs rendszere volt.


1926. január 26-án, 95 éve történt:
Londonban bemutatták az első, hagyományos katódsugárcsöves képernyővel rendelkező, működőképes televíziót.


2010. január 27-én, 11 éve történt:
Steve Jobs, az Apple Inc. alapító-vezérigazgatója a San Franciscó-i Yerba Buena Arts Centerben bemutatta a cég új termékét, az iPad táblagépet.


2007. január 28-án, 14 éve történt:
Az adatvédelem nemzetközi napja. Az Európa Tanács (ET) kezdeményezésére 2007-ben, az ET adatvédelmi konvenciója elfogadásának 25. évfordulóján rendezték meg először az Európai Bizottság támogatásával.


1925. január 30-án, 96 éve történt:
Megszületett Douglas Engelbart amerikai feltaláló, aki 1963-ban megalkotta a számítógépes beviteli eszközt. Ez lett a PC korszakban az egér.


2007. január 30-án, 14 éve történt:
A Microsoft Corporation piacra dobja a Windows Vista operációs rendszerét és az Office 2007 irodai programcsomagot is.


1956. január 31-én, 65 éve történt:
Megszületett Guido van Rossum holland programozó, a Python programozási nyelv megalkotója.


1997. január 31-én, 24 éve történt:
A Sony Computer Entertainment (SIE) japán multinacionális videójáték- és digitális szórakoztató-ipari vállalat megjelentette a Final Fantasy VII videószerepjátékot PlayStation-re. A szériában ez volt az első játék, amely 3D-s technológiákat használt.