2014. augusztus 21., csütörtök

Web alkalmazás Hibernate + Vaadin segítségével

Diplomamunkám témája a Jáva objektumok perzisztens kezelése volt, mely kapcsán a Hibernate keretrendszert tanulmányoztam és alkalmaztam.
Röviden a perzisztenciáról annyit mondanék, hogy egy Java program futása közben létrejövő objektumokat a perzisztencia kezelő keretrendszer segítségével nagyon egyszerűen tárolhatók, kezelhetők adatbázisokban. Ezzel gyakorlatilag leveszi a programozó válláról azt a terhet hogy az adatbáziskezelés aprólékos feladatával foglalkozzon. Így sokkal inkább a probléma megoldásra koncentrálhatunk. XML fájlok segítségével vagy @nnotációk használatával konfigurálható hogy az objektumok adatmezői melyik adatbázis, melyik táblájában tárolódjanak.
Több keretrendszer létezik erre a feladatra, melyeket objektum-relációs leképező (Object Relation Mapping, ORM) rendszereknek nevezünk. Az egyik ilyen rendszer a Hibernate, melyet széles körben használnak.
Magáról a Hibernate-ről most részletesen nem szándékoztam írni, talán majd egy későbbi alkalommal indítok egy ilyen cikksorozatot.

A jelen jegyzet oka csupán annyi hogy hogyan hoztam létre az első Vaadin - Hibernate háromrétegű alkalmazást.

Természetesen a Hibernate is JAR fájlok formájában érhető el. Ezeket a JAR-okat kell a projektünkhöz kapcsolni és már használhatjuk is a rendszert. Ezt a WAR fájlok definíciója szerinti helyre kell tenni. Ha EE projektben dolgozunk akkor a WEB-INF/Lib alá kell importálni a Hibernate JAR-okat, hogy az alkalmazásszerver (AS, mint pl a Tomcat) használni tudja.
Ezt két módon tehetjük meg. Az első módszer szerint a projekt WEB-INF/Lib mappájába importáljuk a fájlrendszerből a szükséges JAR fájlokat. Ez a Hibernate lib könyvtárában lévő JAR-ok és a használt adatbáziskezelő JDBC elérését biztosító JAR.



A másik módszer szerint a projekt Properties-t indítva a Deployment Assembly opción belül az Add.. gombbal tudjuk a megfelelő helyről betölteni.


Én a példámban létrehoztam egy Vaadin projektet, majd a kis demó programot átírtam úgy hogy a gomb kattintásra generál egy egyedi azonosítót (osztályváltozóba), majd egy üzleti logikának felfogható másik osztályból példányosít egy objektumot ami felépíti a Hibernate kapcsolatot, illetve ennek az addNewRecord nevű metódusa letárolja a generált azonosítóval az objektumot.


2014. augusztus 15., péntek

Vaadin framework és Apache Tomcat 8 telepítése Eclipse Luna alá

Az utóbbi kommentekben a Java EE futtató és fejlesztői környezet kialakításával foglalkoztam. Gyakorlatilag van egy működő Apache Tomcat kiszolgáló ami alá már lehet telepíteni Java EE alkalmazásokat. Ez mellett van egy Eclipse IDE for Java EE developers fejlesztői környezet telepítve, amivel professzionális keretek között lehet Java programokat készíteni.
Az IDE azonban még nincs teljesen felkészítve. Ahhoz hogy igazán hatékonyan tudjunk dolgozni, szerencsés ha magában az IDE-ben is van egy működő webkonténer (pl. Apache Tomcat). Most ugyanis tesztelni úgy tudunk, ha a projektünket kiexportáljuk WAR fájlba, majd a telepített Tomcat adminisztrációs felületén deployoljuk (telepítjük) a projektünket. Ez így döcögős módszer lenne.
Ezért most első lépésben telepítjük a Tomcat-et az Eclipse alá.
(Eclipse Luna és Apache Tomcat 8.0.9 verziókkal, Ubuntu 14.04 Desktop rendszeren dolgozom)

  1. Töltsük le és csomagoljuk ki valahová a Tomcat-et.
  2. Indítsuk el az Eclipse-t.
  3. Telepítsük a Luna update site-ról (http://download.eclipse.org/releases/luna) a JST Server Adapters és JST Server Adapters Extensions modulokat
    Nyissuk meg a Help/Install new softwares... menüt.
    A megjelenő ablakban válasszuk ki az alábbi képen látható módon a telepítendő modulokat

    JST Server Adapter telepítése
    Next, Next, Finish után települnek a modulok.
  4. Ez után a Help/Preferences menüre kattintva az alábbi képek alapján rendeljük hozzá az Eclipse-hez az első pontban kicsomagolt Apache Tomcat-et.

    Server/Runtime Environment kiválasztása, majd Add... gomb

    Apache Tomcat v8.0 kiválasztása, majd Next

    A Browse... gombbal válasszuk ki azt a könyvtárat
    ahová a Tomcat-et kitömörítettük, majd Finish
Ezzel készen van az Eclipse a Server használatára úgy hogy az IDE-n belül tudjuk tesztelni, indítani az EE alkalmazásainkat.

Természetesen a Servers fülön még létre kell hozni egy példányt hogy hivatkozni lehessen rá.
A Servers munkaterületen jobb egérgomb, majd New/Server

Válaszuk ki a Tomcat 8.0 Server-t, majd Finish
Most már tényleg kész a szerverpéldány a futtatásra. El is indíthatjuk a servers fülön ha kijelöljük és megnyomjuk a zöld háromszög (Start server) ikont.

Az igazán hatékony EE fejlesztéshez valamilyen framework használata ajánlott. A neten olvasgattam ezekről és nekem a Vaadin framework tetszett meg a leginkább. Segítségével gyorsan lehet AJAX komponenseket felhasználva tetszetős felhazsnálói felületeket létrehozni. Sok leírás, könyv, tutorial lehető fel az interneten, így könnyen tanulható. A profik azt mondják hogy nem igazán szerencsés, mert gyakorlatilag egy olyan bonyolult oldalakat generál, amit nehéz módosítgatni. Na én most nem szeretném módosítgatni és első frameworknek szerintem nagyon jó. 
Szóval most a Vaadin telepítése következik.
Ez sem túl bonyolult, csupán a már ismert Help/Install new software... menüt választva a Vaadin update site-ot beállítjuk (http://vaadin.com/eclipse) és ott kijelöljük a Vaadin plugin-t. Ezután a végtelenségig bonyolult Next, Next, Finish nyomogatás következik és települ a plugin. A végén az  Eclipse kéri hogy had induljon újra. Hagyjuk jóvá.
Ezek után a File/New/Project.../Vaadin csoportból ki tudjuk választani a nekünk tetsző verziót, ezzel elindítva a egy új Vaadin projektet.
Ha egy üres projektet hozunk létre, akkor Run/Run as.../Run on Server menüvel a létrehozott Tomcat kiszolgálón tudjuk futtatni.

Most már komplett környezetünk van. Semmi nem akadályoz meg bennünket hogy komoly vállalati Java EE alkalmazásokat készítsünk!

2014. augusztus 14., csütörtök

Apache Tomcat 8 telepítése Ubuntu 14.04 alá lépésről-lépésre

Az előzőekben általánosságban írtam a Tomcat telepítéséről. Most a pontos rendszer struktúrába illeszkedő telepítést írom le, a teljes szolgáltatás indítással, és leállítással együtt.

Jelenleg a legfrissebb Tomcat verzió a 8.0.9. Ezzel fogom bemutatni a telepítést.
Természetesen rendelkeznünk kell működő Java-val. Nálam az Oracle Java 8 van telepítve.
(java -version parancs kiadásával ellenőrizhető)

  1. Terminálban dolgozunk, indítsuk el.
  2. Töltsük le a Tomcat-et a /tmp könyvtárba, majd csomagoljuk ki
    sudo cd /tmp
    sudo wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.9/bin/apache-tomcat-8.0.9.tar.gz
    sudo tar -xvf apache-tomcat-8.0.9.tar.gz
  3. Mozgassuk a teljes kicsomagolt könyvtárstruktúrát a /usr/local/ könyvtárba
    sudo mv apache-tomcat-8.0.9 /usr/local
  4. Állítsuk be a Tomcat adminisztrátor felhasználót. Ezt a /usr/local/apache-tomcat-8.0.9/conf/tomcat-user.xml fájlban tehetjük meg. Adjuk hozzá a következő sorokat a fájlhoz, valahol a ... blokkon belül. Az itt megadott felhasználónév/jelszó párossal tudunk majd belépni a webes konfiguráló felületre.


  5. Hozzuk létre a /usr/local/apache-tomcat-8.0.9/bin/setenv.sh parancsfájl. Ebben tudjuk beállítani a szükséges környezeti változókat. A JRE_HOME szükséges és a Java könyvtárára kell hogy mutasson. A CATALINA_PID és a CATALINA_OPTS ahhoz kell hogy távoli debugolást tudjunk végezni a szerver által futtatott komponenseken. Az alábbi legyen a fájl tartalma:
    #!/bin/bash
    JRE_HOME=/usr/lib/jvm/java-8-oracle
    CATALINA_PID="$CATALINA_BASE/tomcat.pid"
    CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8081,server=y,suspend=n"
  6. Állítsuk be a script attributumait
    sudo chmod 755 /usr/local/apache-tomcat-8.0.9/bin/setenv.sh
  7. Hozzuk létre az indító/leállító/újraindító scriptet. Ehhez a /etc/init.d/tomcat809 fájlt hozzuk létre és a tartalma legyen az alábbi:

    #!/bin/bash

    export CATALINA_HOME=/usr/local/apache-tomcat-8.0.9
    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    start() {
        sh $CATALINA_HOME/bin/startup.sh
    }

    stop() {
        sh $CATALINA_HOME/bin/shutdown.sh
    }

    case $1 in
        start|stop) $1;;
        restart) stop; start;;
        *) echo "Run as $0 "; exit 1;;
    esac
  8. Fájl attributumokat állítsuk be 
    sudo chmod 755 /etc/init.d/tomcat809
  9. Ezek után már indíthatjuk/leállíthatjuk/újraindíthatjuk a tomcat-et, a start, stop, restart paraméterekkel meghívva az indító scriptet. Most indítsuk el 
    sudo /etc/init.d/tomcat809 start
  10. Ha azt szeretnénk hogy rendszerindításkor automatikusan induljon akkor frissítsük az rc.d-tsudo update-rc.d tomcat809 defaults
  11. Ezek után a localhost:8080 URL-el bejön a gépünkön futó Tomcat induló oldala. A menedzselő gombok megnyomásakor a tomcat-users.xml-ben megadott felhasználónév/jelszó adatokkal tudunk belépni.

2014. augusztus 13., szerda

Java EE fejlesztői környezet kialakítása

A Java Enterprise Edition (EE) nem más mint a komoly nagyvállalati szoftverek készítésére szánt fejlesztői környezet.
Mivel a nagyvállalati szoftverek jellemzően valamilyen kliens-szerver architektúrát valósítanak meg, ezért szükségesek olyan komponensek a fejlesztői környezethez, amivel a nagyvállalati architektúrára készített alkalmazásokat futtatni lehet.
A JAVA desktop alkalmazásokhoz nem kell más, mint egy JRE (Java Runtime Environment) ami végülis maga a Java virtuális gép (Java Virtual Machine, JVM). Ez mindenképp szükséges ahhoz hogy a helyi gépen java programok futtassunk.

Példaként említhető talán a mindenki által ismert adóbevallás készítéséhez használt AbevJava nyomtatványkitöltő alkalmazás. Ha ezt futtatni akarjuk ahhoz szükséges a Java telepítése.

Az operációs rendszerünkhöz illeszkedő JRE telepítőt a Java oldaláról tudjuk letölteni, majd telepíteni.
Miután telepítettük a futtatási környezetet akkor rendszerünkben a java -version parancs kiadásával ellenőrizhetjük hogy működőképes-e a rendszerünk, tudunk-e Java programokat futtatni. A parancs kiírja az elérhető Java futtatási környezet verzióját. Amennyiben nincs elérhető java környezet, akkor értelmetlen parancsnak tekinti a rendszer az utasítást.
java -version parancs hatására megtudhatjuk hogy milyen verziójú futtatókörnyezet érhető el a számítógépen
Mint látható az én gépemen a Java SE 1.8 van telepítve. Ez azt jelenti hogy a számítógépemen tudok futtatni java programokat (pl remekül tudok adóbevallást készíteni az AbevJavával :) )

Az első lépés megvan. Igen ám, de mi nemcsak futtatni szeretnénk Java programokat, hanem készíteni is. Általánosságban elmondható hogy, ahhoz hogy egy adott nyelven megírt programot a számítógép számára futtathatóvá tegyünk, szükséges egy úgynevezett fordítóprogram (compiler), amivel a forráskódot át tudjuk alakítani olyan gépi kódú utasításokká, hogy azt a célszámítógép képes legyen végrehajtani.
Esetünkben szükséges egy Java fordító, ami a Java forráskódú programunkat átalakítja olyan kódsorozattá amit a célszámítógép, azaz a Java virtuális gép (JVM, ami a futtatási környezet része) végre tud hajtani. Ez a javac nevű program, ami a Java Development Kit (JDK, Java fejlesztői készlet) része. A JDK-t le lehet tölteni a Java honlapjáról, szintén az operációs rendszerünknek megfelelőt válasszuk.

Miután telepítettük a javac parancs kiadásával ellenőrizhetjük.

javac - version parancs kiadásával a java fordító verziószámát ellenőrizhetjük
Ezek után már tudunk java programot írni, azt le tudjuk fordítani és tudjuk futtatni is.
Próbáljuk is ki ezt a méltán híres "Hello world!" példaprogrammal.
A kedvenc szövegszerkesztőnkkel (ne a Word-el!!!) hozzuk létre a java forrásprogramot.

Én az alábbi példában a példa rövidsége miatt közvetlenül parancssorból fogom begépelni a kódot egy Linux terminálból. Windows alatt az első cat >HelloWorld.java parancs helyett a copy con HelloWorld.java parancsot kell kiadni. Nyilván nagy projekteknél nem ezt a módszert kell alkalmazni.

A híres Hello, Wolrd! program megírása, fordítása és futtatása
A programkészítés menetét is szépen bemutatja a fenti képernyőrészlet:

  • Szerkesztés (edit): először a program forráskódját készítjük el. Ekkor standard ASCII szövegfájlt kell készítenünk, tehát erre a célra nem a Microsoft Word a legjobb megoldás. A példában egy egyszerű terminálparanccsal billentyűzetről közvetlenül a fájlba küldtük a begépelt karaktereket, majd a kód beírása után a CTRL-Z billentyűkombinációval tudjuk a fájl vége karaktert beírni és a szerkesztést befejezni. Ekkor előáll a forráskód, amit a fordítóval lehet tovább kezelni.
  • Fordítás (compile): a fordítási művelet a forráskódot átalakítja a célgép számára értelmezhető utasítássorozattá. Java esetében az úgynevezett bájtkódot kell előállítani, amit a Java virtuális gép (ez a célgép) végre tud hajtani. A fordítást az előzőekben a JDK telepítése után a rendszerünkben elérhetővé vált javac paranccsal tudjuk végrehajtani. Paraméterül a HelloWorld.java fájlt adjuk meg természetesen. A kiadandó parancs: javac HelloWorld.java
    A fordítás eredményeként létrejön a HelloWolrd.class fájl, amit már a JVM végre tud hajtani.
  • Futtatás (run): a fordító által létrehozott programot már tudjuk futtatni mégpedig a JRE telepítése kapcsán rendszerünkben elérhetővé vált java parancs segítségével. Paraméterül kiterjesztés nélkül kell megadni a .class fájlt. Esetünkben a parancs: java HelloWorld
    Eredményül a program kiírja a Hello, World! szöveget, majd kilép.
A cikk címe szerint Enterprise fejlesztői környezet kialakításáról kellene szólni és eddig csak egy desktop parancssori alkalmazást készítettünk. Valójában már most kész a rendszerünk és tudunk Java EE programot készíteni, hiszen a Java futtató és fejlesztői környezet képes erre. Azonban a szerver oldalon picit másképp történik a java szerver oldali programok futtatása. Valójában nem közvetlenül a JVM vezérli a program végrehajtását, hanem egy úgynevezett alkalmazás szerver (AS, Application Server). Ez egy olyan konténer, melyben a szerver oldali java alkalmazások betölthetők, majd a hálózaton keresztül érkező kérésekre reagál. Jellemzően HTTP kérések érkeznek a kliensek felől, amit az AS fogad, majd átad az általunk megírt szerver oldali komponensnek. Ez a komponens elvégzi a kért műveletet, majd egy HTTP üzenetként visszaküldi a kliensnek az eredményt. A kliens fogad és a kliens oldali komponens megjeleníti az eredményt.
Nagyjából ezek a lépések. Ahhoz hogy mindezt fejlesztőként meg tudjuk csinálni szükségünk van egy alkalmazás szerverre (AS) is. Csinálhatnánk úgy is hogy a szerver oldali részt lefordítjuk, majd feltöltjük egy távoli AS-re és a kliensünkkel rácsatlakozunk. Ennél sokkal jobb megoldás, hogy a saját gépre telepítünk egy AS-t és azon futtatjuk a komponensünket. Na ez az ami hiányzik a valódi Java EE fejlesztői környezethez.
Többféle AS létezik ami ki tud szolgálni Java komponenseket. Kettőt említek meg és abból egyet fogunk bekonfigurálni. Az egyik a GlassFish nevű, valóban nagy teljesítményű és professzionális alkalmazás szerver. Az Oracle fejleszti és ez a Java referencia szerver. 
Ennél egyszerűbb, de továbbra is nagy teljesítményű eszköz az Apache webszerver fejlesztőitől az Apache Tomcat nevű alkalmazásszerver. Konfigurálása, futtatása egyszerű, ezt fogom bemutatni a következőkben.

A Tomcat telepítése nagyon egyszerű. Le kell tölteni a szükséges verziót az Apache honlapról és ki kell csomagolni.
Ezután a Tomcat könyvtár alatt lévő bin könyvtárba létre kell hozni egy setenv.sh (windows alatt setenv.bat) parancsfájlt, amibe csupán ki kell adni néhány környezeti változó beállítására szolgáló parancsot. Linux esetében ezt tartalmazza a fájl:

#!/bin/sh
CATALINA_HOME=/tomcat-elérési-utja/bin
JRE_HOME=/var/lib/jre/java-8-oracle

Ezek után a tomcat könyvtárán belül a bin könyvtárban ki kell adni a ./startup.sh parancsot. Ez elindítja a Tomcat-et:


Apache Tomcat indítása
Ezek után a Tomcat figyeli a 8080-as porton érkező HTTP kéréseket. Ezt ellenőrizhetjük ha a böngészőnkbe behozzuk a http://localhost:8080 URL-t.

Fut a Tomcat és válaszol a 8080-as porton

Amennyiben ezt elértük, akkor készen vagyunk az Enterprise alkalmazások futtatására. Nyilván ha adatbázissal dolgozunk akkor kell valamilyen SQL szerver (MySQL, Postgress) is, de az már alkalmazás specifikus dolog.

Ami még a professzionális fejlesztéshez kell, az egy professzionális integrált fejlesztői környezet (IDE). Erre a célra az Eclipse-t javaslom.
Ennek telepítése sem bonyolult. Le kell tölteni az Eclipse honlapjáról a Java EE developer IDE-t és ki kell csomagolni. Ennyi.

A végén meg kell említenem a http://appdev.bedok.hu/cikk/ECLIPSE_JAVA cikket, ahol rengeteg jó ötletet és gondolatot találtam az EE fejlesztéssel kapcsolatban. Egy részét az ott leírtaknak felhasználtam a cikkben. 


2014. augusztus 12., kedd

Android mentés adb-vel, root nélkül

Az Android 4.x egyik újdonsága, hogy lehetőséget ad a teljes rendszer, vagy annak egyes elemeinek mentésére, úgy hogy nem kell a készüléken root jogosultság.
Az alkalmazások mentésével eddig sem volt probléma. Fájlkezelők is képesek voltak a telepített alkalmazások mentésére és visszaállítására, de ezek a mentések csak a programfájlokról csináltak másolatot, amit egyszerűen vissza lehetett állítani.

A most bemutatásra kerülő módszer az alkalmazásokat és azok adatait is menti. Így pl ha lementünk egy jegyzetelő alkalmazást, akkor a jegyzetekkel együtt menti, visszaállításkor pedig természetesen minden rendelkezésre fog állni, a program maga és az adatok is.

Ehhez a művelethez azonban (egyelőre) nincs grafikus felület, legalábbis nem ismerek. Ez lehet hogy zavaró, vagy elriaszt egyeseket, de igazán egyszerű a dolog és szerintem könnyen elvégezhető.

Amire szükségünk van:

  • Az Android 4.x vagy magasabb rendszerrel rendelkező készülék
  • Működő USB kapcsolat egy számítógép és a készülék között. (Linux-ot javaslok ott nincs probléma)
  • Működő ADB
Nézzük mik is ezek a fentebb felsorolt dolgok.
Működő kapcsolat a számítógép és a készülék között azért szükséges, mert a mentést a számítógépről indítjuk és maga a backup fájl is ott fog keletkezni. A visszatöltés is ugyan így történik majd.
Windows alatt tudom hogy folyton problémák vannak azzal hogy megfelelő driver van-e telepítve, látja-e a számítógép a készüléket. Korábban én is Windows-t használtam és a Galaxy S készülékkel valóban előfordultak kapcsolódási problémák, hogy most mi a helyzet azt nem tudom, ugyanis jópár éve Linux-ot használok. Linux-al sokkal tisztább ez a dolog, ugyanis nincs szükség semmiféle driverre!
Akár windows akár Linux rendszert használunk, szükség lesz még az úgynevezett ADB eszközre. Ez nem más mint egy segédeszköz az Android készülékek számítógépről történő direkt vezérlésére. Teljes nevén Android Debug Bridge.
Az ADB egy parancssori alkalmazás, amit jól beparaméterezve különféle csoda dolgokat lehet elérni az Android készüléken.
Ubuntu Linux alatt az ADB-t telepíthetjük az android-tools csomag telepítésével, vagy az AndroidSDK telepítésével is megkapjuk. Ehhez adjuk ki a következő parancsot:

apt-get install android-tools*

Ezzel települ minden ami szükséges.

A működőképességet és a kapcsolat meglétét ellenőrizhetjük, ha USB kábellel csatlakoztatjuk a készüléket a számítógéphez és kiadjuk a következő parancsot:

adb devices 

A parancs kilistázza a csatlakoztatott készülékeket. Ahhoz hogy kapcsolódni tudjon az adb szükséges, hogy be legyen kapcsolva az USB hibakeresés opció a készüléken (Fejlesztői lehetőségek menüben)


Ha nincs még bekapcsolva az USB hibakeresés az készüléken akkor nem listáz készüléket. Ha bekapcsoljuk az opciót, akkor listázza a készüléket, ahogy a következő képen látható:
Az első parancs kiadásakor nem volt bekapcsolva az USB hibakeresés, majd bekapcsoltam és újból futtattam a parancsot. Ekkor már listázta a készüléket.

Ezek után készen áll minden a mentésre.

Az ADB rengeteg funkcióval bír. A teljes leírás itt található. Most az adb backup és adb restore funkciók bemutatása következik.

Mentésre szolgáló parancs és lehetséges paraméterei:

adb backup [-f ] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] []

-f : így adjuk meg a mentés fájlnevét. A fájl nevének ab kiterjesztésűnek kell lennie.

-apk vagy -noapk: ezzel szabályozhatjuk hogy mentse-e a telepítő fájlokat vagy sem. Alapértelmezésben nem menti.

-shared vagy -noshared : ezzel állítható hogy a külső memóriatár mentére kerüljön-e. Alapértelmezésben nem kerülmentésre.

-all : ezzel az opcióval minden lehetséges dolog mentésre kerül.

-system vagy -nosystem : a rendszer alkalmazások mentését szabályozhatjuk. Alapértelmezésben menti ezeket. Ezt érdemes lehet kikapcsolni, hiszen ha pl másik ROM-ra váltunk akkor összeakadhatnak a rendszer alkalmazások a mentés visszaállításakor.

listában megadhatjuk hogy mik azok a csomagok (alkalmazások) amikről mentést szeretnénk csinálni. Így konkrétan tudjuk paraméterezni hogy mely programok szerepeljenek a mentésben.

Egy jó általánosan használható paraméterezés lehet:

adb backup -noapk -nosystem -all -f ~/adbmentesek/backup.ab

A parancs kiadásakor meg kell erősíteni a mentést a készüléken:

Ezután rövid időn belül megtörténik a mentés és a megadott helyen megtalálható a backup fájl.

A visszaállítás a következő paranccsal történik:

adb restore

ahol a helyére a backupfájlt kell megadni. Én teljes elérési utat adok meg mindig.

adb restore ~/adbmentesek/backup.ab

Szintén megerősítést kér a készülék, majd visszaállítja a mentett adatokat.



2014. augusztus 6., szerda

Fantasy gyüjtögetős kártyajátékok

1995-ben Győrben nyílt egy fantasy és szerepjáték bolt, amit meg is látogattam. Megláttam egy érdekes kis dobozt amiben kártyák voltak. Azt mondta az eladó hogy ez egy újfajta stratégiai játék. Minden csomag más lapokat tartalmaz és a lapoknak vannak ritkasági jellemzője is. Lehet gyűjtögetni és cserélgetni másokkal és a lényeg hogy nagyon jókat lehet vele játszani. Eddig csak angolul volt ilyen játék, de most megjelent két magyar is. A Hatalom Kártyái (HKK) és a Mítosz. Nekem valamiért a Mítosz tetszett meg és vettem belőle két paklit.
Ezt nézegettem aztán az egyik barátommal játszottunk vele jókat. Később mikor megint a boltban jártam, megkérdeztem hogy hol találok játékpartnereket. Mondták az ott lévők, hogy a győri szerepjáték klubban játszanak néhányan, de a HKK-t többen játsszák. Akik ott voltak meséltek a HKK-ról, meg egy példajátékot is lenyomtak. Meg kell mondanom hogy sokkal pörgősebb és szórakoztatóbb volt a HKK-t látni mint a Mítosszal játszani. Egyből vettem két csomag HKK-t is.
Az ottani srácokkal jót dumáltunk és megkérdeztem hogy ők hol szoktak játszani. Mondták hogy mosonmagyaróváriak, csak bejöttek megnézni az új boltot. Ennek nagyon megörültem, hisz én is odavalósi voltam. A lényeg hogy ezután sok évig együtt HKK-ztunk. Versenyekre jártunk, versenyeket szerveztünk.
Aztán megismerkedtem a világ első kártyajátékával a Magic the gathering-el. Ez volt az első fantasy gyüjtögetős kártyajáték, minden hasonló alapja és őse. Meg kell mondanom így utólag is, hogy máig nem találkoztam jobb játékrendszerrel. Végtelenségig egyszerű, gyorsan tanulható és nagyon szórakoztató a Magic.
 

A Magic máig a kedvencem. Mivel igen hamar megjelent számítógépes játékként is így sokat játszottam vele. Aztán megjelentek az online játszható virtuális játékterek is. Ebből is a Magic kiemelkedően jól sikerült. Manapság pl Androidos telefonon is igen színvonalas játék érhető el.

És elérkeztem odáig ami miatt az egész fantasy témát két cikken keresztül elővettem itt a blogban. Ugyanis a napokban találtam rá a Hearthstone nevű játékra.
Ez egy kártyajáték mint a fent említettek, de csak számítógépes megvalósítása létezik. A játék kiadója a Blizzard ami eleve már egyfajta biztosíték a minőségre. A másik az hogy a Word of Warcraft világához kapcsolódó, de attól teljesen független játék. Nem kell ismerni a WOW-ot hogy játszani lehessen vele és ami még fontos hoyg az alapjáték ingyenes és az alapjáték eléggé szórakoztató, szinte teljesértékű, csupán vannak olyan küldetések, játékfajták, amik némi pénzzért (1-2 euróért) érhetők el.
Szóval belekóstoltam és nagyon megragadott. A Magichez hasonlóan pörgős a játékmenet, de picit eltérőek a szabályok.
Van magyar nyelvű honlap, ahol sokmindent leírnak és fórumozni is lehet, versenyeket szerveznek.
Aki érdeklődik a hasonló témák iránt annak ajánlom kipróbálásra. Nem kell hozzá "izomgép" és Linuxon is megy.

A fent említett játékokhoz kapcsolódó linkek:
Mitosz emlékoldal
Hatalom kártyái
Hatalom Kártyái Online játék
Magic the gathering hivatalos oldala
Hearthstone hivatalos oldal, program letöltése

2014. augusztus 5., kedd

Hogyan kerültem kapcsolatba a fantasy szerepjátékokkal

Szóval a honlap mottójában írtam, hogy fantasy és sci-fi is a blog témák között szerepel. Ez idáig még nem írtam ezen témákban. Most ez következik.
Elsőként néhány szót ejtek arról, hogy mi módon találkoztam a fantasy-vel...
Természetesen nekem is alapokat a Star Wars adta. Gyermekkorom meghatározó kultuszfilmje volt és mindenki Jedi lovag akart lenni, Jedi erőt akart magának. Aztán sok-sok évig nem történt semmi különös ezen a vonalon.
1990-ben már nem is tudom milyen indíttatásból elkezdtem olvasni J.R.R Tolkien-nek a Gyűrűk ura trilógiáját, ami azóta már a óriási karriert futott be a mozifilm kapcsán. Bár a könyveket akkor nem olvastam végig, de elkápráztatott az hogy létezik ilyen világ mint Középfölde. Tele különös lényekkel, akik a saját maguk törvényei szerint élnek, ellenségeik és szövetségeseik között. Izgalmas volt ahogy kiderült egy-egy apró részlet a világ történelméből ahogy az ezeréves tündék elmondták meséiket. A sejtelmes mágusok vívódásai, akik a világ sorsának alakításáért felelnek és látszólag a legnagyobb hatalommal bírnak, mégsem olyan könnyű élni azzal a hatalommal és irányítgatni Középfölde népeinek történelmét. Szóval ez volt az első fantasy kapcsolatom, de ekkor még azt sem tudtam hogy létezik efféle irodalom stb...
Aztán bevonultam katonának és ott ráértem olvasni. Egyszer valamelyik vasútállomáson egy könyvárusnál találtam néhány könyvet amik felkeltették az érdeklődésemet. Az egyik a Varázsló-átok a másik a Világok háza címet viselte. Beleolvasgattam és valami megragadott. Felidézték bennem ugyan azt a csodálatot mint amit a Gyűrűk urát olvasva tapasztaltam. De mégis más volt, hisz nem Középföldén történtek a dolgok és nem a hobbitok meg a törpök voltak a főszereplők. A két könyv mindegyike valamilyen másik dimenzióban játszódik ami kapcsolatban van a földi dimenzióval, csakhogy az itteni tudás az a másik dimenzióban varázserőt jelent, szóval izgalmas volt (főként úgy hogy a Varázsló-átokban a varázserőt a C programozás és a UNIX jelentette :) ) Valaki azt mondta a könyvről, olyan mintha a Gyűrűk urából, egy UNIX manuálból és egy matematika könyvből gyúrták volna össze a történetet,,, Valóban irodalmilag nem egy nagy eresztés, silány a fordítás, de engem nem is ez izgatott, hanem maga az ötlet hogy "huhúúúúúú varázsojjuuuuunk" Megvettem a könyveket és izgatottam olvastam a történeteket.
A Világok háza már sokkal jobban fordított és színvonalasabb mű volt. Volt benne egy részlet, ami arról szólt, hogy egy egyetemista társaság Kalandok és sárkányokat játszik. A játékmenetből pár mondat le is volt írva, hogy különös oldalszámú dobókockákkal döntik el a csatákat, vagy hogy ki tudják-e nyitni a 20-as védelmű zárat a 3-as szintű zárnyitás szakértelemmel. Persze a zár védve volt valami csapdával ami ellen a mentőt nem tudta megdobni, mert kicsi volt a csapdaészlelés szakértelme és ezért kisült a csapda és agyonsebezte a fél csapatot... Ez a rész még inkább megragadott, bár nem tudtam hová tenni. Úgy tűnt hogy a könyvben a szerző valamiféle társasjátékról ír, csakhogy itt nem egyszerűen lépkedni kell körbe körbe a játékmezőn primitív szabályok alapján, hanem annál sokkal komplexebb és valamiféle modell alapján történik a különféle események kiértékelése... Na még egy löketet kaptam. Elkezdtem saját játékot gyártani és a barátnőm öccsével játszottunk sakkot a saját magunk által kitalált szabályokkal. A bábuk nem a megszokott módon működtek. Voltak tulajdonságaik, tudtak sebezni, meg volt pajzs értékük és így csatázgattunk. Rohadt büszke voltam, hogy milyen tuti új szabályt alkottam a sakkhoz... :)
Aztán jött a nagy megvilágosodás. 1993-ban már a katonaság után a kedvenc újságárusom bódéját kerülgetve láttam meg egy fura újságot, fura grafikával és még furább címekkel.
A Bíborhold magazin második száma volt ez és az volt ráírva hogy "fantasy és szerepjáték magazin".
A borítón egy sárkány van, amin valami nagyon gonosznak kinéző lovagféleség ül és lengeti a kardját, a másik kezében meg egy pajzsot tart. Vele szemben egy űrsiklóféleségben  maga Luke Skywalker ül és egy lézerpisztollyal támadja a sötét nagyurat... Egyből eszembe jutottak a katonaság alatt olvasott dimenzióvándoros regények. Meg is vettem az újságot.
Aztán beleolvastam és először nem igazán értettem hogy mi az a AD&D. AT&T-ről hallottam már, de itt biztosan elírták. Aztán elkezdett gyanús lenni néhány dolog. Tulajdonságokról, próba dobásokról, meg mindenféle szabályokról írtak a cikkekben....
Döbbenet volt amikor rájöttem hogy az általam kitalált sakk szabálymódosításokkal én nem találtam fel semmi újat, hiszen ez az újság éppen ilyen játékokról szól. A "mély letargiából" úgy tudtam kigyógyulni hogy azzal "vigasztaltam" magamat hogy legalább nem kell marketingkampányokat szervezni arra hogy másokat is ráébresszek milyen jók az ilyen játékok. :) Szóval rádöbbentem, hogy sok ember lehet ebben a földi dimenzióban is aki fogékony ugyan arra a dologra amire én is. Az újság rendszeres vásárlója lettem, és hamarosan vásárolni kezdtem a Beholder Bt által forgalmazott fantasy könyveket.
Első szerepjáték szabályrendszer ami a kezem közé került, az a Középfölde és a M.A.G.U.S szerepjátékok voltak. Kiolvastam szinte az összes MAGUS regényt (akkor havonta jelentek meg újabb regények, regényciklusok). Őrület volt és szerettem a kalandozásokat.
Később az újságban olvasott levelezési rovatból kiderült hogy van egy helyi szerepjáték klub, ahová el is látogattam és jópár évre ott is ragadtam...
[A történetet folyatom egy másik cikkben később, mert látom hogy hosszabb lesz mint képzeltem...]