Szakdolgozat. Klusóczki Dávid BO5YD Dr. Vincze Dávid. Miskolci Egyetem Gépészmérnöki és Informatikai Kar Intézmény azonosító: FI 87515

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Szakdolgozat. Klusóczki Dávid BO5YD Dr. Vincze Dávid. Miskolci Egyetem Gépészmérnöki és Informatikai Kar Intézmény azonosító: FI 87515"

Átírás

1 Szakdolgozat Miskolci Egyetem Gépészmérnöki és Informatikai Kar Intézmény azonosító: FI Általános Informatikai Tanszék 3515 Miskolc-Egyetemváros Feladat címe: Elosztott közösségi alkalmazás, a Google maps API felhasználással. Témavezető: Dr. Vincze Dávid Készítette: Klusóczki Dávid BO5YD

2 Tartalom 1. Feladat bemutatása Háttértörténet - Million Dollar Webpage Szakdolgozat ötlete Project Maps, mint egy mini Cloud Használt programozási nyelvek és rendszerek bemutatása HTML PHP PHP - FPM JavaScript Google maps JQuery Bootstrap MySQL GIT Rendszerkövetelmények Google maps API v3 bemutatása Bemutatás Kezdeti lépések API bemutatása Map Types Custom Style Projection Eventek Hátrányok, megszorítások Fejlesztési ütemterv Rendszer áttekintés Backend Áttekintő Szerverek DNS, IP-k, Rendszertérkép Webszerver - Nginx PHP Felhasználó kezelés

3 riport Adatbázis Hálózati adattár Képgenerálás Frontend Saját funkciók GUI Interakció a térképpel Helyi felhasználó Facebook felhasználó Terlület foglalása További fejlesztési tervek Paypal, kártyás fizetés Google+ felhasználók Design Kép linkről beszúrása Facebook kép importálás Rajzolás 256x256 pixelen CacheFS Daemon működése Multi Language Teljes cloud befejezése, PHP, SQL párhuzamosítás Összefoglalás Summery

4 1. Feladat bemutatása 1.1. Háttértörténet - Million Dollar Webpage A szakdolgozat témája, illetve ötlet adója, már több mint egy évtizedes, mégis ötletességben és megvalósításban akár mai weboldal is lehetne. Akkoriban szinte egy időben jelentek meg cikkek az oldalról, miszerint az alkotója, Alex Tew, az egyetemi tandíjának finanszírozására létrehozott egy oldalt, ahol is olyan merész célt tűzött ki, hogy ő bizony 1 millió dollárt fog keresni. 1 Az elgondolás a következő volt: Egy 1000 x 1000 pixeles képet rakott ki, kezdetben teljesen fehér színben. A szponzorok ezeket a pixeleket vásárolhatták meg, négyzetenként $1-ért. Cserébe beszínezhették az adott pixeleket, és linkké alakíthatták. A később megjelent újságcikkek, híroldalak hatására, megugrott az oldal látogatottsága, és harc indult a szabadon maradt hirdetési felületekért, amik hónapokon belül elfogytak, így készítője elérte a célját, megkereste az első millióját dollárban. Ironikusan a milliondollarhomepage.com domain címet választotta oldalának, ami szintén segíthetett sikerének Szakdolgozat ötlete Voltak további próbálkozások, amik az Alex által kreált érdeklődés szelét próbálták meglovagolni. De egy az egybe másolták az eredeti ötletet, hozzáadott új érték, vagy ötlet nélkül pedig a sikereik nagyságrendekkel elmaradtak az eredetitől. A koncepció mindnél ugyan az volt, adott négyzeteket lehet megvásárolni, más-más designal. Az ötletem kicsit kreatívabb környezetbe helyezi a dolgot. Mégpedig, hogy felosztjuk a Google mapset egységnyi négyzetekre, majd ezeket lehet lefoglalni. és saját képet helyezni, az eredeti térképre Project Maps, mint egy mini Cloud Minden weboldalnál kulcs az egyszerűség, arra kell rávenni a felhasználókat, hogy a lehető legtöbb időt töltsenek el az oldalon, ezért érdekes tartalmat kell elérhetővé tenni rajta. 1 Alex Tew bemutatás, interjú Forrás: 4

5 A legegyszerűbb tartalomgenerálás pedig az, hogy ha a felhasználók saját maguknak, szórakoztatásból készítik el az oldal tartalmát. Ezzel a gondolattal indultam neki magának az oldalnak, hogy milyen funkciókat kéne megvalósítania. Még a fejlesztés korai szakaszában a Project Maps nevet kapta. Hogy az ötlet sikeres legyen, a marketing részét arra hegyezném ki, hogy bárki a Google Maps-en megváltoztathatja a lakását, vagy ismert emberek házát veheti meg, csupán $1-ért. A megvásárolt egységek végül pedig egy nagy montázst alkotnak a föld felszínén, érdekes lehet majd több hónap után megnézni, hogy miket rajzolnak ki így a feltöltött képek. Az alábbi funkciókat terveztem a rendszerbe: Bárki ingyen, publikusan hozzáférhessen az egész oldalhoz és annak tartalmához. Kattintásra lehessen megvenni egy egységnyi négyzetet a térképen, ahova a felhasználó felülírhatja milyen kép jelenjen meg. Ez ne legyen konkrét regisztrációhoz kötve, plusz adatok megadása nélkül lehetséges legyen. Ne csak fizetős része legyen, lehessen időkorláttal, pl. 2 hétre lefoglalni ingyen is egy négyzetet. Lehető legegyszerűbb megosztási lehetőséget facebookon. Ezzel az ötlettel vágtam bele a weboldalba, ami hamar túlnőtte magát ezen. Egy olyan cloud-szerű rendszert szerettem volna készíteni, ami hasonló felépítésű, mint maga a Google Maps, több szerver közösen dolgozva osztja meg a terhelés, és gyorsítja a kiszolgálást. 5

6 2. Használt programozási nyelvek és rendszerek bemutatása 2.1. HTML 2 A web szabványos xml alapú leíró nyelve. Jelenleg az 1. ábra Forrás: wikipedia.org 5-ös verziójú szabványa a legújabb, és szélesen támogatott. A szabványokat a W3C (World Wide Web Consortium) szervezet állítja össze, nagy cégekkel közösen karöltve együtt tervezik az aktuálisan megjelenő webes tartalmakhoz elérhető opciókat. Jelen HTML 5-ös verziója a korábbi hiányosságait pótolja, mint például a multimédiás tartalmak külső pluginek nélküli támogatása, mobil eszközök támogatása, vagy gyakrabban használt adattípusok (dátum, szám, stb) natív használata. Maga a HTML egy statikus weboldal, amely betöltéskor a böngészőbe megjelenik, onnantól programozható logika nincs mögötte, sem pedig lehetőség a HTML szabványon belül a tartalmak dinamikus változtatására. Ezen feladatokra a JavaScript hivatott a webes tartalmaknál. A megjelenítési stílusok pedig CSS-el valósíthatók meg, ezzel lehet olyan stílusbeli szabályokat megadni, amiket a böngésző végrehajtva a végső renderelési folyamatban legenerálja a tartalmat. Futásidőben ezt is csak szintén JavaScript-el lehet változtatni. 2 HTML szabvány bemutatása Forrás: 6

7 2.2. PHP 3 A PHP az egyik jelenleg legelterjedtebb nyelv a dinamikus honlapok körében. Egy szerver oldali szkriptnyelv, amit egyszerű használni, és mivel széles körben használatos, tömérdek dokumentáció és példakód áll a rendelkezésünkre. Elsősorban szerver oldali weboldalakhoz fejlesztették ki, kisebb körben viszont általános programozásban is használják. Elterjedtsége a következő ábrán is megtekinthető: PHP - FPM 2. ábra (2013) USA fejlesztői állások programozási-nyelvek szerint Forrás: A PHP-FPM relatíve egy rövid múltra tekinthet vissza a PHP értelmezők között, lényegében egy minimalizált erőforrás igényű CGI-ről van szó, amiben maga a PHP interpreter elkülönül a webszervertől, és olyan plusz funkciókat ad az adminisztrátorok kezébe, mint a teljesen elkülöníthető PHP processek, vagy a menet közbeni konfiguráció újratöltés. 4 3 PHP bemutatása Forrás: 4 PHP-FPM bemutatása. Forrás: 7

8 2.4. Google maps 6 A Google Maps 2005-ben debütált, mint 2.3. JavaScript 5 Elsősorban a weboldalak dinamikus tartalmának megjelenítésére, kliens oldali kódok futtatására, aszinkron kérésküldésekre használják, de manapság már megjelentek a szerver oldali JavaScript futtatására alkalmas rendszerek is. Előfordítatlan nyelv, futásidőben a böngészőbe épített parancsértelmező hajtja végre a kódunkat, soronként haladva. Elvégezhetjük vele például a felhasználók által megadott adatok validálását, 3. ábra Forrás: programozhatjuk benne. dinamikusan jeleníthetünk meg objektumokat, vagy akár az egész oldal logikáját is 4. ábra Forrás: térkép szoftver, azóta a cég nagyon sok energiát, pénzt és munkaórát fektetett a projektbe. Saját és külső forrású műholdakkal az egész földről készített képeit, utcatérképeit tekinthetjük be, sőt a legújabb fejlesztéseikben akár, mintha az utcákat járnánk, megtekinthetjük a korábban, autókkal, gyalogosan készített panoráma képeket. Sokoldalúságát lehetetlen lenne kifejteni pár sorban, útvonaltervezőtől, domborzattérképen keresztül, az általunk készített mini-térképekig szinte bármit megtehetünk, ami csak igényként felmerülhet egy térkép szoftverben. Szerencsére a Google olyan fejlesztői lehetőségeket is biztosít nekünk, amiben komplett saját alkalmazást írhatunk az övékét kiegészítve, testre szabva. 5 JavaScript Forrás: 6 Google Maps Forrás: 8

9 JQuery 7 A jquery egy olyan JavaScript könyvtár, ami arra hivatott, hogy a weboldalakon gyakran használt funkciókat, vagy a JavaScript natív hiányosságait pótolja. Felhasználói szemszögből nem nyúlt pluszt, viszont programozó szempontból nagyon kényelmes a használata, gyorsabban lehet benne fejleszteni, és a kiegészítő könyvtárai szinte kifogyhatatlanok. Eseményvezérlésekben gazdag, rövidített kódot, funkciógazdagabb objektumokat kapunk használatával, viszont, ha csak töredékét használjuk ezeknek a funkcióknak, megérheti natív JavaScript kódot alkalmazni. Ennek részletezését későbbiekben bővebben kifejtem Bootstrap A Bootstrap egy manapság elterjedt keretrendszer, a webes rendszerekhez. Előre összeállított JavaScript könyvtárral és CSS-el rendelkezik, amivel szintén arra hivatott, hogy a manapság elterjedt responsive weboldalakat, viszonylag könnyen készíthessünk. Beépített ikonjait, weboldal szerkezeteit egyszerűen, a html tagjeit osztályokhoz rendelve használhatjuk MySQL 8 A MySQL jelenleg az Oracle tulajdonában lévő több felhasználós relációs adatbázis kezelő program. Nyílt forráskódú, és a webes világban az egyik legelterjedtebb az adatbázisok között. 5. ábra Forrás: A projekt szempontjából eleinte ez, és a PostgreSQL voltak versenyben az adatbázis betöltésének szerepéért, de végül az Oracle adatbázis kezelő szoftvere miatt, a MySQL Workbench miatt döntötte el a kérdést, mert sokkal felhasználóbarátabb volt a fejlesztése benne, mint a PostgreSQL szoftverei. 7 Hivatalos weboldal Forrás: 8 Hivatalos weboldal forrás: 9

10 2.6. GIT 9 A GIT egy olyan nyílt forráskódú szoftver, 6. ábra Forrás: ami nagy projektek fejlesztéskori verziókövetését teszi lehetővé. Magát a forráskódot tárolja minden projekt esetében, és támogatja azt, hogy egy időben több fejlesztő dolgozhasson ugyan azon a feladaton, és a végén az egyedi verziókat összesítve könnyen és gyorsan publikálható a program. Az üres fájloktól kezdve folyamatosan elmenti a sorok változásait, hogy később bármilyen állapotra vissza tudjon állni a projekt, illetve minden verzió forráskódja maradéktalanul meg legyen. Habár én egyedül dolgoztam a szoftveren, mégis úgy gondoltam, hogy belekóstolok abba a környezetbe, amiben a nagy projekteket fejlesztik, ha már úgyis nagy rendszert tervezek, valamint, hogy nagyobb rálátást és rutint szerezzek ebben. A legfőbb nyílt forrású projektek, amik szintén GIT-et használnak: Linux-rendszermag GNOME Samba X.org VLC media player Android platform A forráskódom további külső felhasználását más fejlesztők által nem terveztem elérhetővé tenni, ezért saját GIT szervert állítottam be. Különleges beállításokat nem követel, felinstalláljuk a GIT servert, egy új repositoryt létrehozunk a projektnek, és Linuxos authentikációval már használhatjuk is GIT kliensekből. Mellékhatásként egy olyan historyt is kaptam a szakdolgozatból, amiben szépen visszakövethetők a nagyobb lépések, mérföldkövek. 9 GIT bemutatása Forrás: 10

11 Két dolog nincs mentve a GIT repositoryban: Adatbázis szerkezet és azok adatai Szerver konfigurációs fájlok Egy érdekességként megfigyeltem a szakdolgozat dokumentációját készítve, mégpedig, hogy az Office állományokat, docx kiterjesztésű dokumentumot nem bináris állományként kezeli, hanem ezt is felismeri, mint szöveges állományt, és képes detektálni a sorok változását. 7. ábra Git, példa a mentett változtatásokról, Sourcetree programban 11

12 3. Rendszerkövetelmények Operációs rendszer tekintetében, csak a weboldal üzemeltetését nézve lényegtelen, hogy Windows-t, vagy Linux-ot használunk, de a projektem megvalósításához Linux rendszerre van szükség, különböző probléma megoldásaim, skálázhatóság, párhuzamosítás és jövőbeli fejlesztési tervek miatt a Linux tűnt optimális választásnak. Két, már productionben lévő szervert vettem igénybe, ahol: Debian disztribúciók futnak x64 kernellel. A további részletezés majd a Backend részletezéséből derül ki. A böngészőkből érkező kérést a webszerver fogja megválaszolni. Ez lehet az egyik legelterjedtebb Apache, de választásom egy újabb fejlesztésre esett: NGINX A dinamikus tartalomért a PHP a felelős, alapértelmezetten Linuxon tartalmaz egy képkezelő libraryt, amit használok, Windowson külön telepítést igényel Apache-hoz, illetve IIS-hez is. php5-fpm deb7u1 Image Magick library Adatbázis közül MySQL-re esett a választás: MySQL wheezy1 12

13 4. Google maps API v3 bemutatása 4.1. Bemutatás A Google egyik legnépszerűbb alkalmazásához, a Google Maps-hez elérhető egy olyan függvénykönyvtár, amivel Build highly customisable maps with your own content and imagery, 10 azaz készíthetünk saját képekkel, tartalommal olyan térképet, amit úgy szabhatunk testre, ahogy mi szeretnénk. Legalább is, ahogy az a függvénykönyvtárukban meg van engedve funkcióik által. Lévén, hogy egy térképről beszélünk, kezdem az alapoknál. A térképen minden egyes pozíciót a koordinátája jelképez, ha kiterítjük a földet síkba, akkor egy körbeérő koordináta rendszert kapunk, amelyben az X tengely a szélesség, Y tengely pedig a hosszúságot mutatja. A földet tekintve egy gömbről beszélünk, ami pedig 360 fokos, így tehát a szélesség koordinátákat egy 360 fokos skálára osztották fel, signed float értékre, ami a -180 és 180 intervallumon vehet fel értéket. Ezzel azt is megoldották, hogy egy egyszerű lépéssel sikerült keleti-nyugati részre felosztani a földet, ami a mínusz tartományban van, az a keleti, utóbbi a nyugati része a földnek. A hosszúsági koordináták hasonlóképp működnek, csak a -85 és 85 skála között vehetnek fel értékeket. Szintén igaz, hogy ezzel az egyenlítő alatti, illetve feletti részeket jelölik. Ezek a koordináták a World Geodetic System hivatalos szabványa szerint lettek kialakítva. Ezeket a koordinátákat a Gall-Peters 11 féle vetületi koordinátákra kell alakítani, hogy ezekből végül pozitív float típusú koordinátákat kapjunk, használhatjuk a dokumentációban szereplő funkciókat. Ez lesz az úgynevezett World Coordinate, itt már mind az x, mind az y kordináták 0 és 256 közötti skálán mozognak. A távolból, a lehető legrészletesebb képekig való zoomolást úgy oldották meg, hogy a műholdakkal a lehető legtávolabbtól kezdve fokozatosan egyre közelítve elmentették az összes képet a földről. A kapott képeket felosztották 256 x 256 pixelesével, és így mentették el őket. Végül a Pixel koordinátáknak abban van szerepe, hogy pixelre pontosan megmondhassuk, melyik pixelre kattintott a felhasználó. Az alap 0 zoomnál ez megegyezik a World Coordinate-ekkel, mivel a megjelenő képek összessége 10 Google Maps developrt forium alapján Forrás: 11 Gall Peters féle koordináta rendszer: 13

14 256x256 pixel. Ahogy viszont zoomolunk, minden kép négyzetesen lesz egyre részletesebb, így a World Coordinate értékeit 2 zoom hatvánnyal kell szorozni. Hogy be tudjuk azonosítani pontosan melyik kép az, amelyiket nézi, illetve szeretné módosítani a felhasználó, Tile Coordinate-eket vezettem be. Észak-Amerikától észak nyugatra van az abszolút [x:0, y:0] koordináta, majd Az Antarktisznál, Ausztráliától jóval dél-keletebbre pedig az [x:max, y:max]. Amit úgy kaphatunk meg, hogy a Pixel Coortinate / 256, mivel a pixel koordináta pixeleket reprezentál, és egy kép 256 pixel széles illetve hosszú, így megkapjuk a pontos sorszámát a képnek. Maga a Google is így tartja nyilván a képeit, ha a böngészőben megfigyeljük a http kéréseket, láthatjuk, hogy a képek betöltésekor hasonló linkeket nyit meg: US&x=38606&y=49247&z=17&token=94909 Ahol a hl és a token paraméter elhagyható. Ez a kép már egy mondhatni részletes képet mutat New York Central Parkjáról. Így külön, az API-n kívülről direkt hivatkozásként viszont nem lehet használni a képeket, csak szemléltetésképp mutattam be a működését. Példa koordinátaszámítás: 8. ábra Miskolci Egyetem Főépóletének képe 18-as zoom szinten. Forrás: maps.google.com 14

15 4.2. Kezdeti lépések Mielőtt neki kezdenénk, szükségünk van egy Google API hozzáférési kulcsra, hogy ellenőrzött körülmények között, biztonságosan lehessen a Google szolgáltatásait használni. Ez nem csak a térkép szoftverére igaz, bármilyen szolgáltatást igénybe vehetünk a Google tárházából, csak egy egyedi kulcsot kell hozzá generáltatnunk. Nagy általánosságban ezeket ingyen szolgáltatják nekünk, viszont cserébe megszorításokat szab, hogy ne használjunk korlátlan erőforrásokat. A következő Google dokumentációból származó példában egy működő térképet hozhatunk létre: <script type="text/javascript" src=" function initialize() { var mapoptions = { center: { lat: , lng: }, zoom: 8}; var map = new google.maps.map(document.getelementbyid('map-canvas'), mapoptions);} google.maps.event.adddomlistener(window, 'load', initialize); </script> <div id="map-canvas"></div> A map-canvas azonosítójú div-be fogjuk betölteni a google.maps.map objektumot, ami, mikor már az oldal betöltése befejeződött fog lefutni. 9. ábra Google Developer Console API kulcs igénylés A mapoptions-ben adhatóak meg az inicializáláskor szükséges alapadatok. A center a korábban említett koordináták közül a legelső, szélességi-hosszúsági koordináták A zoom pedig a betöltéskor alkalmazott nagyítási szint. Ezekről bővebben és az általam használt direktívákról a későbbiekben lesz szó. 15

16 4.3. API bemutatása Szinte végtelen lehetőséget ad a Google a saját projektjeinek testre szabásában, ez nem csak a maps alkalmazásukra igaz, hanem tényleg szinte minden projektjükre. Elmondható, hogy jó dokumentációkkal rendelkeznek és mivel széles körben használják, developer fórumokon is bőven található információ működésük megértéséhez, hogy optimális módon használhassuk az APIjaikat. A következőkben bemutatnám az API kulcs beállításait, amik fontosak voltak a projekt szempontjából Map Types Olyan konstansokat tartalmaz, amellyel megadhatjuk, milyen típusú térképet szeretnénk megjeleníteni, inicializáláskor adható meg, van lehetőség a későbbi váltásra is, de csak az API-n belüli funkció meghívásával. Használhatunk: Útvonal térképet Szatelit térképet Földrajzi térképet Ezek egyvelegét A legtetszetősebb hatás kedvéért a szatelit képet használtam Custom Style A projektben nem volt szükség az alap megjelenítés felüldefiniálására, de a dokumentáció nagy hangsúlyt fektet rá, hogy tényleg bármilyen kinézetű térképet készíthetünk, mert minden elem, ami megjelenik a térképen, testre szabható. Érdekesség lehet például, hogy az útvonal térképen szinte bármi, utcák, utak, főútvonalak, épületek, a városokat jelölő szövegek, ikonok, folyók megjelenése módosítható. 16

17 Projection Egyik alap pillére a megjelenítésnek a projekciók. A Projection interfésszel valósítható meg a gömb koordinátáinak síkba történő alakítása. Két függvény végzi el a műveletet: frompointtolatlng() fromlatlngtopoint() Ezek pontos leírása a dokumentációban található, matematikai háttere pedig a Gall-Peters féle vetület leírásán alapszik. A kódban e hivatalos képletek alapján számoltam a World Coordinate -eket Eventek Hogy minél pontosabb alkalmazást írhassunk, az API-ba beépített eseménykezelő rendszer van, amikre feliratkozva bekövetkezésükkor futtathatjuk a saját kódunkat. 10. ábra Event listenerek Forrás: 17

18 4.4. Hátrányok, megszorítások Azokkal a megszorításokkal kezdeném, amit magában a licenszben megfogalmazott kritériumok fektetnek le, némelyekre külön fizetős licensz ellenében van megoldás, viszont van olyan is, ami sajnos megkerülhetetlen. A legfontosabb, hogy a weboldalnak mindenki számára publikusan és ingyen elérhetőnek kell lennie, nem lehet olyan funkció az oldalon, ami csak fizetés ellenében jelenik meg a felhasználók egy rétegének, de az olyan extra funkciókért, amiknek mindenki által látható eredménye van pl. egy hirdetés elhelyezése a térképen, ami megjelenik mindenkinek, ez megengedett, tehát ebből a szemszögből nincs akadálya a projektemnek. A második, ami már inkább relevánsabb, az az erőforrás korlátozás, ami pontos számokban napi oldal betöltést takar. A kulcsunkkal pontosan számolható, hogy mennyi a napi látogatók száma az oldalon, és minden alkalommal, amikor egy felhasználó betölti a JavaScript állományukat, ez a számláló nő. Ezen szabály pedig arra késztet minden fejlesztőt, hogy minimalizálja az oldal újratöltését, tehát nekem is az volt a feladat, hogy ha már egyszer betöltődött az oldal, többször ne kelljen elnavigálni az oldalról. Így tehát minden kérést AJAX-szal kellett megoldani, amivel az oldal újratöltése nélkül tudunk tartalmat elhelyezni az oldalon. A háttérben egy aszinkron JavaScript kérést küldünk a web szervernek, majd a visszakapott eredményt megjelenítjük, vagy felhasználjuk az oldalon. Ha mégis túllépné az oldal forgalma 90 napon át folyamatosan ezt a 25 ezres limitet, akkor sem kell aggódni, hogy a Google lekapcsolná az oldalt, ilyenkor a dokumentációjuk szerint felveszik velünk a kapcsolatot és javaslatot tesznek a további teendőket illetően. Két módszer között választhatunk: Havi forgalom utáni számlázás Google API for Work licensz, ami személyre szabható fix havidíjas előfizetés, egyedi elbírálást igényel A következő típusú megszorítások, pedig az API felhasználásakor mutatkoznak. A temérdek lehetőség ellenére akad olyan funkció, ami nincs, hibásan van 18

19 megvalósítva, vagy olyan dologgal is találkoztam, amit nagyon körülményesen lehet csak megoldani, ha lenne befolyásunk az alap térkép kirajzolásához, akkor egy sornyi kóddal helyettesíthető lehetne az a módszer, amivel végül sikerült megoldanom például a kattintott négyzetek jelölését. Van egy érdekes bug a térkép középpontjának átállításakor. Két lépésben adható meg, hogy mit mutasson a térkép. Először megadjuk a helyrajzi-korrdinátákat, majd azt, hogy mennyire zoomoljunk rá a térképre. A dokumentáció szerint 19 a maximum zoom szint, de helyenként, nagyobb városokban készítettek részletesebb képeket is. Viszont amikor gyorsan váltunk koordinátát és zoomszintet is egymás után, akkor oldal betöltés sebességtől függően meglehet, hogy nem érzékeli, hogy a megnyitni kívánt koordinátán van 20-as részletességű szint is, ezért automatikusan a 19-re visszadob minket. A developer forumon többen jelezték a problémát, ami a következő release-ben javításra kerül. Ami egyik oldalról optimalizálás, az a másik oldalról lehet, hogy durva erőforrás pocséklást eredményezhet. A fejlesztők ugyanis úgy írták meg a saját alap térképüket, hogy az a lehető leggyorsabb legyen futásidőben, viszont a testre szabás hiánya nélkül végül csak egy saját workarounddal tudtam megoldani, hogy a négyzetek klikkelésre kijelölhetőek legyenek. Ha egy egyszerű ID-t kaptak volna az eredeti div-ek, amik tartalmazzák a képeket, akkor pont fele annyi objektumot kellene egy időben kezelni, mint most. Úgy volt csak lehetőség az elemeknek azonosítót adni, hogy az új réteg négyzeinek létrehozó függvényét felüldefiniáltam, amiben létrehozok egy azonosítóval ellátott elemet. Ennek hátránya, hogy a Google <div>-jében van egy üres <div>, aminek a plusz információja az azonosító, és az általam rátöltött kép. Utóbbihoz nem lett volna feltétlen szükség erre az új elemre. 19

20 5. Fejlesztési ütemterv A fejlesztésben nagy szerepet kapott a GIT verziókezelő rendszer, úgyhogy a működő Linux rendszer felállítása után ez volt elsőrendű feladata, hogy egy saját működő GIT szervert, hogy a bárhonnan elérhető legyen a forrás, valamint ami fontos, hogy a legfrissebb változata legyen mindig elérhető. Mellékhatásként pontosan visszakövethető, hogy mikor, milyen funkciók készültek el a weboldalból. 51 meghatározó fejlesztési fázis volt, amit végigkövetve eljutunk a szó szerinti semmiből, odáig, hogy egy működő weboldalt kapjunk. Első nagyobb egyedüli fejlesztési projektnél megesik, hogy nem jól tippeljük meg magát a fejlesztés idejét, nagyobb cégeknél, kiadóknál is előfordul, hogy folyamatosan tolják a kiadási határidőket, mert nem tudnák az ígért, vagy elvárt minőséget produkálni. Mikor elsőnek merült fel a projekt megvalósítási idejének a megsaccolása, két hetet mondtam rá, a valóságban pedig mindig eltér a tervtől, mert csak ennyi időbe telt, mire a Google Maps API dokumentációját, funkcióit, és még így is történt olyan, hogy mire befejeztem egy függvényt, találtam meg egy másikat, ami már használatra készen állt a libraryben. Ütemterv: Működő rendszer, Linux, Nginx, Php, MySQL, GIT. Google Maps API megismerése. Adatbázis elkészítése. Google Maps frontend elkezdése, design kialakítása. Regisztráció Login. Területek lefoglalása. Képgenerálás. Tesztelés. Külső tesztelők bevonása. Hálózati adattárolás Hibák javítása. Új funkciók és párhuzamosítás. A szép dolog egy jó rendszerben, weboldalban, hogy kiadása, publikálása után folyamatosan van fejlesztés rajta, hiszen a leginkább a nagy közönség használatakor 20

21 alakulnak ki az igények a valóban hasznos funkciókra. Tehát nagyon kevés projektre mondható el, hogy 100%-ban készek, mivel kiadásuk után is folytatódik életciklusuk. 6. Rendszer áttekintés 6.1. Backend Áttekintő A rendszer áttekintése talán az egyik legfontosabb része a szakdolgozat témájának, ez az, amitől nem csak egy konkrét weboldalt, hanem egy attól komplexebb, egész rendszert kapunk. Maga a Google Maps is egy iszonyatosan nagy projekt, ami direkt úgy lett megtervezve az alapjaitól, hogy nagy felhasználóbázist tudjon egy időben kiszolgálni. Ezen a szinten már nem elég csak az alkalmazást, a weboldalt átgondolni, hanem az egész rendszert fel kell készíteni a feladatra. Azt tűztem ki célul, hogy amennyire engedik a források, egy mini Google Maps-et hozok létre, ami volumenében ugyan elmarad az eredetitől, de próbálom annyira skálázhatóra kialakítani, amennyire csak lehet Szerverek Két, specifikációban megegyező szerveren kezdtem meg munkát. A fő cél a terhelés, és a sávszélesség megosztás. Nyílt forrás, ingyenesség, szervereken való megbízhatósága miatt Linux fut rajtuk, aktuálisan: SMP Debian x HP ProLiant 360 G5, konfigurációban: 2x Intel Xeon X5460 Quad core 32 GB Memory 512 MB Cache RAID card 6x 500GB HDD 21

22 DNS, IP-k, Rendszertérkép A két szervet IP címe: A fő, master szerver másodlagos szerver A projekt jelenleg a következő domain-en érhető el: maps.opx.hu 11. ábra opx.hu Dns konfigurációja forrás: Dotroll.hu Az elképzelés szerint, a fő szerveren fut minden az eddigi és későbbi felsorolások közüli szerverek közül. A másodlagos szerver, terhelés megosztóként funkcionál, jelenlegi állapotban csak képkocka webszerverként üzemel, de további tervek között szerepel, hogy az olvasási kéréseket a PHP és adatbázis is kiszolgálja. Hogy elkerüljem a különböző problémákat, másodlagos konkurens a szerver(ek), csak olvasási műveleteket végeznek. 12. ábra Rendszertérkép 22

23 Webszerver - Nginx Mivel szinte csak statikus fájlokat szolgálunk ki a weben, ezért esett a választás a népszerű Apache helyett az Nginx-re. Több tucat tesztben bizonyított, hogy statikus fájlok kiszolgálására sokkal hatékonyabb az orosz Nginx priojekt. Míg az Apache alapesetben egy daemonként működik, egy bejövő kérésnél fork-ol egy új processt a kiszolgálásnak, az Nginx egy eseménykezelt, aszinkron módon végzi ugyanezt. 13. ábra Apache vs Nginx, dreamhost.com által végzett saját tesztjük Forrás: Az Nginx-nek két különböző fájltípust kell kiszolgálnia: Statikus fájlok, képek, JavaScript-ek Dinamikus fájlok, PHP szkriptek Mivel külön nincs PHP értelmező az Nginx-be, így annak a tartalmát egy az egybe átadja majd a PHP5-FPM-nek, az lefut, a php kimenetét visszaadja az Nginx-nek, és így válaszolja majd meg a kérész a felhasználónak. Külön érdekesség, hogy mennyi plusz lehetőség van az Nginxben apró beállításokra, amikkel javítható a kérés kiszolgálása. 23

24 Én több dologgal is kísérleteztem: fastcgi_buffers. o A fastcgi direktívák, a PHP-nak átadott információkra vonatkozólag adnak lehetőségeket, mivel csak rövid php szripteket használtam, a buffer mérete lehet alacsony. gzip beállításai. o Webszerverek kimenetének tömörítésére szokásos modul, fontos, mivel nem számításigényes maga a projekt, ezért megengedhető, hogy a kimenet tömörítése több processzoridőt vegyen időbe, cserébe csökkentve a hálózati terhelést. open_file_cache direktívák. o Az NGinx által használt statikus fájlok újrabeolvasására vonatkozó cache adatok. Hogy realtime szerű változásokat is tudjunk követni, ezt a cache időt alacsonyra kell venni. worker_processes. o A kulcspont, amiben különbözik az Apachetól, hogy itt külön dedikált processzek futnak, amik egyenként többszáz-ezer kapcsolatot tudnak kezelni, ideálisan annyi worker process futhat, amennyi processzort a webszerverre szeretnénk szánni. 24

25 PHP A dinamikus tartalom kiszolgálásért a PHP értelmező fogja végrehajtani a kódot. Köztes réteget képez a webszerver és az adatbázis között, valamint ellenőrző feladatokat hajt végre, a bekért adatok helyességéért. Főbb műveletek: Regisztráció Login Kép feltöltés Összes zoomszinten képkockák legenerálása Saját képek lekérdezése riport Ahol adatbázis művelet van, a bevitt adatok helyessége, injection tekintetében le van ellenőrizve, lekérdezésekre is mindig prepared-statementeket deklaráltam. Jelenleg csak a fő szerveren van a projekt szempontjából futtatható PHP kód, a párhuzamosítás még nem lett megoldva ezen a szinten. Ami gyorsítja a végrehajtást, hogy PHP szinten a SESSION változók a merevelemez helyett a memóriában vannak, a memcached kiegészítő végzi ezen műveleteket. Előnye, hogy vele könnyen szinkronba hozható több szerveren futó PHP interpreterek session adatai Felhasználó kezelés Alapvetően kétféleképp tudnak a felhasználók regisztrálni: Regisztrációs formal Facebook loginnal Csak egy mechanizmus más, de alapvetően mindkettő ugyan arra az oldalra küldi el végső soron az adatokat riport riportozási lehetőség arról, ha a képkocka elvesztésének ideje közeleg. Cronba időzített PHP szkript végzi ezt a feladatot. 25

26 Adatbázis Már korábbi fejezetben felmerült az adatbázis kezelő, ebben a részben a működő és használatban lévő adatbázist mutatnám be, a konkrét táblákat, mezőket, relációjukat, és magyarázatuk. 14. ábra Adatbázis szerkezet User tábla: o Csak a legfontosabb adatok, felhasználónév, jelszó, cím és a felhasználó választott nyelve. Többnyelvűség még nincs a projektben, de az adatbázis fel van készítve rá. 26

27 Purchase tábla: o 1-1 külön lefoglalást jelképez, user-hez van kötve, egy lefoglalás tartalmazhat több képkockát is. Külön felkészítettem az adatbázist a későbbi fizetős lehetőségre, ahol neves szervezeteket is lehet majd támogatni. Az unique_link mező egy olyan terv része, melyben regisztráció nélkül elérhetők a a képkockák szerkesztésre, így akár másnak is ajándékképp lehet ilyen képkockákat vásárolni. Language tábla: o Külön nyelvi támogatásért, még ki kell egészíteni egy új táblával, ahol a több nyelvű stringeket tárolom. Purchased blocks: o Ez az a tábla, amiben nyilván vannak tartva a képkockák, amik tartalmazzák azokat az információkat, hogy milyen x és y koordinátán, milyen képkockának kell megjelenni. Ezt a hatékonyság növelése végett megjelenítéskor nem innen olvassuk, hanem a már legenerált képekkel szolgáljuk ki a felhasználókat. A foglalt képkockák lekérdezése viszont erősen olvas ebből a táblából [x,y] koordináta párokat, így terhelés növekedésére elképzelhető, hogy egy memory táblába tükrözöm a tartalmát, és triggerekkel frissítem azt. Maga a lekérdezések pedig a memory táblából keresnének Hálózati adattár A legenerált képkockák a fő szerveren vannak helyileg, viszont hálózati adattárként fel vannak csatolva a másik gépre, így egy élő mirrorként működik. A hálózati terhelés megosztást úgy gondoltam, hogy az aktív szerverek közül lapbetöltésekként kiválasztunk egyet, és a weboldal használatakor már csak attól kérjük le a képkockákat. Működő hálózati meghajtó telepítésének leírása az alábbi forráson tekinthető meg: 27

28 Az egész projekt megtalálható az adattárolón, így a statikus képek, és a dinamikusan generált PHP szkriptek is megtalálhatók mindkét szerveren, viszont jelenleg a projekt csak a statikus adatokat tudja kiszolgálni terhelésmegosztottan Képgenerálás A tervek szerint a feltöltött képek 256x256 pixel méretűek, viszont képet feltölteni csak a maximum, 20-as zoom szintre lehet, a többi kép az ettől kisebbi zoom szinten a feltöltött képek montázsa lesz, tehát szükség van egy olyan programra, ami legenerálja az összes többi képet. Futásidőben a képek előállítása borzalmasan sok időt venne igénybe, ezért jobb, ha már előre le vannak generálva, és statikusan a háttértárról elérhetőek, így bár több helyet foglalnak, cachelhetők lesznek, és kiszolgálásuk nem kerül csak töredék CPU időbe. Annak a megvalósítása, hogy egy cloud-beli képfeldolgozó daemont csináljunk, bonyolultabb feladat, így az lett a koncepció, hogy a rendszerben egy fő szerver lesz, amelyik a képek generálja. Jelenleg ez a funkció hibásan működik, helyette PHP szkript generálja a képeket, ami bár működő megoldás, de erőforrás igényesebb Frontend Saját funkciók Ebben a részben részletezném azokat a funkciókat, amik esetleg külön magyarázatra szorulnának, illetve a kód kommentjeiből nem derülne ki működésük. Megírásakor inkább a frontendre kellett koncentrálni, mert a logika nagy része a felhasználó oldalon kell, hogy jól működjön. A jquery bővebb, és gyorsabb fejlesztői lehetőségeket ad, viszont jelentősen lassabb, mint a natív JavaScript kód. Ha hozzávesszük, hogy már a Google Maps is jelentősen erőforrás igényes, optimális, hogy ha a kódot is natív javasciptben írjuk, hogy minél gyorsabb legyen a weboldal működése. Ezért, ahol csak lehetett, a külső library-ket leszámítva JavaScript kódot írtam, nem pedig jqueryt használtam. 28

29 15. ábra Javacsript vs jquery performance Forrás: "jquery vs JS JavaScript is faster obviously, but it s a lot faster. getelementbyid( test ) had an average speed of million operations per second. The faster jquery operation, $( #test ), maxed out at 1 million ops/sec. That s a huge performance difference. 12 Az előző oldal tesztjében csak az objektum kiválasztás szerepel, de az AJAX kéréseket is az egysoros egyszerű jquery helyett a JavaScript beépített xmlhttp objektumán keresztül valósítottam meg. Kódban több sor, viszont futásidőben gyorsabb. Mivel csak a legrészletesebb, 20-as zoomszintű négyzetek foglalhatók le, ezért valahogy meg kellett oldani, hogy távolabb zoomolva is azonosítani lehessen 1-1 négyzetet, amikor ezt a Google Maps API-ja nem teszi elérhetővé. Az ötlet az volt, hogy ezt egy rekurzív függvény fogja majd kirajzolni, ami majd legenerálja a maximum szintig az összes div-et. 12 jquery és JavaScript teljesítmény összehasonlítása Forrás: 29

30 16. ábra Rekurzív createalldiv függvény sorrendi kimenete Hátránya, hogy ilyenkor 4^n-ediken darab div-et rajzolunk pluszba a térképre (ahol n = {20 aktuális zoomszint}), és ezeket folyamatosan, a térképen haladva frissítünk. Ez hirtelen nagyon sok objektum kirajzolását eredményezi a kisebb zoom szinteken, ezért, hogy a weboldalt régebbi számítógépeket használók is meg tudják tekinteni, úgy állítottam be, hogy legalább 18-es zoom szint, vagy e-felett fusson le a kirajzoló függvény, tehát csak ekkor lehet kijelölni egy négyzetet, és lefoglalni. Nagy általánosságban úgy találtam, hogy a lakott területeken ezen a részletességen már található kép a szatellit térképükön. A leghosszabb, és legbonyolultabb function a térképet inicializáláskor fut le. Itt kap helyet a tényleges térkép objektum létrehozása, annak alap beállításai, ami mind működés, mind GUI szempontjából fontos. Hogy néhány dolgot kiemeljek: Térkép középpontjának megadása 30

31 Saját elemek elhelyezése a google.maps.controlposition helyeken Google térképen kereső box inicializálása Maps eseménykezelők hozzáadása Az eseménykezelők közül is a legfontosabb, ami kattintáskor fut le, ugyanis ez fogja majd ellenőrizni, hogy az adott négyzet már lefoglalt-e, illetve ha nem, akkor a kosárba helyezi és egyéb CSS-ben szükséges dolgokat végez, ami ennek a jelzésére szolgál. A kód alján találhatók azok a listenerek, amik akkor hajtódnak végre, mikor már az oldalt betöltötte a böngésző. Ezekben olyan alap beállítások találhatók, amik szükségesek az oldal működéséhez, eseményekre feliratkozások, illetve futásidőben történő inicializálások vannak. A felugró modal ablakok definiálása, vagy a választómenü felkészítése is itt hajtódik végre. Mind annak az érdekében, hogy minimalizáljuk az oldal újratöltését, hogy a Google licenszben foglalt napi 25 ezres limitet optimálisan kihasználjuk. Egy másik érdekes megoldás a foglalt képkockák lekérdezésekor keletkezett. A Google Eventlistenerjei között nem találtam olyat, ami nekem kellett volna, ezért egy saját egyedi megoldást kellett keresnem. A probléma a következő volt: Amikor a felhasználó halad a térképen, folyamatosan le kell kérdezni a már foglalt koordinátájú képeket, és ezeket tiltani, hogy ne lehessen újra lefoglalni őket. Egy AJAX kérést küldönk az aktuális középponttal, és a zoom szintünkkel, amit majd a PHP adatbázisból lekérdezi azon a területen található foglalt képek koordinátáit. A következő eventeknél kell újra lekérni a foglalt kockákat: center_changed zoom_changed Viszont a Google Maps használatakor megesik, hogy folyamatosan haladunk egyik helyről a másik felé, keresve az úti célunkat, az ilyen esetekre lett beleépítve egy timer, ami azt figyeli, hogy az elmúlt fél másodpercben volt-e változás a középpontban, ha nem, csak akkor kérdezi le a foglalt koordinátákat. Lefutása után egyből megszűnik, és csak, ha újra interakcióba lépünk a térképpel, akkor jön létre. 31

32 GUI Első lépés a Google térkép testre szabása volt. A mapoptions -ben megadható az összes beépített elem megjelenése, működésük felüldefiniálása, illetve megszorítások a működésével kapcsolatban. Ezeket részletezve a projekt szempontjából fontos volt, hogy csak az alap 2D-s térképet tudják használni a felhasználók, az úgynevezett tilt nézet, ami a kép megdöntését eredményezi, azt ne. Tesztekből kiderült, hogy más-más nézőpontból ugyanarra a képpontra kattintva más-más koordinátákat adott vissza a térkép, dokumentáció hiányában nem lehetett rájönni, hogy mi ennek az oka, ezért el lett távolítva ez a lehetőség. Megjelenítésre impozáns megoldás, de felhasználói beavatkozásokkor már nem működött helyesen. A következő beépített pozíciók érhetők el az API-ban: 17. ábra Beépített pozíciók a Google maps API-ban Forrás: Google maps developer forum Ezezek közül csak a TOP_RIGHT van használatban a projektben, arra a pozícióra került a jobb oldali container, ami a jobb oldalt lévő tabokat tartalmazza. Eleinte a térkép mellett volt található, azért került rá, hogy elrejtve a tab-okat, nagyobb területet láthassunk scrollozás nélkül. 32

33 Interakció a térképpel Az alap működésén a térképnek nem változtattam, kezelése teljesen egyenértékű a Google Maps-ével. Egér gomb nyomva tartással tudunk navigálni az aktuális zoom szinten, görgővel, vagy a beépített control panel segítségével tudunk közelíteni, illetve távolítani. A kezelési eseményfigyelők közül csak a sima egérklikk eseménynek van kihatása a projektemre, mégpedig, hogy ha ez bekövetkezik, akkor kijelöljük az aktuális négyzetet lefoglalásra, feltéve, ha már nem foglalt. Ekkor a jobb oldali tabok közül a kosárba kerül. A kosárba helyezett négyzetek, a térképen egy átlátszó png képpel vannak jelölve. A kosárba szerettem volna megjeleníteni a konkrét négyzet képét a Google Maps-ről, de sajnos a licenszelési feltételek miatt külsőleg nem használhatom a tile-ok képét. Erre egy külön API-t lehetne használni, de felhasználási feltételeikben szintén található egy napi limit, amit átlépve fizetni kell a szolgáltatásért. Mivel egy oldal betöltést követően több négyzet is a kosárba kerülhet, ennek használata kritikusabb lett volna, ezért csak egy CSS-ben definiált class-t használtam a kosár tartalmának megjelenítésére. Hogy a térkép bármelyik területe linkelhető legyen, HTML hashmarkot használtam, ahol csak a koordinátákat, és a zoom szintet kell azonosítani, a következő példa jól mutatja, milyen formátumban kell elképzelni: 18. ábra Bármely koordináta linkelése Helyi felhasználó A lehető leggyorsabb módszert kerestem arra, hogy a felhasználók be tudjanak regisztrálni. Maga a bejelentkezés és regisztráció egy közös formba került. Amikor az cím mezőt kitöltjük, a háttérben elmegy egy http kérés, ami leellenőrzi, hogy a megadott felhasználó szerepel-e már az adatbázisban. Ha 33

34 szerepel, akkor a bejelentkezési funkciót vesszük igénybe, ha nem, akkor előugrik még egy ellenőrző beviteli mező a jelszó újbóli beírására. Ekkor a regisztrációs szkript fog lefutni Facebook felhasználó Aki facebookon keresztül szeretne regisztrálni, egyszer kell megtennie, a facebook API-ját vettem segítségül, kész könyvtárukkal percek alatt integrálható a bejelentkezési és azonosítási funkciói. Egy fontos lépés van, mielőtt használhatnánk a szolgáltatásait, a developer oldaljukon, csak úgy, mint a Google Maps API esetében, itt is regisztrálnunk kell egy kulcsot, ami majd azonosítja az applikációnkat. Ez után, már követve a dokumentációban leírtakat egyszerű megvalósítani a funkciót. Annyi érdekesség még van benne, hogy azonosítás után JavaScript-el még elküldöm az adatokat a saját projektemnek, hogy saját adatbázisban is nyilván legyenek tartva Terlület foglalása A térképen megjelenő 256x256 pixeles képkockákat kattintással lehet a kosárba rakni. Ekkor egy átlátszó png képpel jelöltem azt, hogy ki van jelölve az adott képkocka. Ebből a kosárból szedem ki a megrendeléskori koordinátákat, amit majd PHP-ben egy tárolt eljárás fog lefoglalni. 34

35 7. További fejlesztési tervek 7.1. Paypal, kártyás fizetés Jelenleg csak az ingyenes képek lefoglalása lehetséges, ezzel a lehetőséggel, időkorláttal lehet igénybe venni a szolgáltatásokat, két hét után automatikusan felszabadul a lefoglalt képkocka. A Paypal által elérhető fizetési szolgáltatásokhoz írtam példa kódot, a teszt developer szerverüktől helyes fizetési feltételek mellett jó választ is kaptam, viszont később találtam hozzá egy programozó-barátabb SDK-t, amivel nem kell konkrét socketeket létrehozni a művelethez, hanem csak előre definiált függvényeket hívogatni. Használata egyszerűbb és biztonságosabb, mint a saját socketes megoldás, lévén, hogy egy fizetési opció elég kényes biztonságtechnikából, végül későbbre halasztottam az implementálását. Adatbázisban is külön táblákat kell létrehozni ezen műveletek követésére Google+ felhasználók Hasonló APIja van a Google-nek is, mint a Facebooknak, szintén egy gombbal való bejelentkezést tesz lehetővé, csak Google+ felhasználásával, a developer oldalán kész kódot is találunk, amit csak a saját adatbázisommal kell összekötni és használható is a login funkció. Az API dokumentáció: 35

36 7.3. Design Az egyik legfontosabb a weboldalaknál, hogy milyen GUI tartozik hozzájuk, mennyire megkapóak a színek, és mennyire ötletes, eredeti a dizájnjuk. A fejlesztés során alakultak ki azok a színek, amik most használatban vannak az oldalon, de talán túl szürkére, egyhangúra sikerült. Később választható témák segítik majd a felhasználóknak a legimpozánsabb színek megtalálását Kép linkről beszúrása Javítva a felhasználói élményt olyan tervek vannak még, amiben további kép feltöltési módszereket implementálok a rendszerbe. Egyik ezek közül, hogy ne csak a helyi gépről lehessen feltölteni képet, hanem linkként megadott külső képet töltsön be a JavaScript library, ami a mostani képvágást kezeli. A függvénykönyvtár, amit erre a célra találtam, licenszében nem zárja ki, hogy tovább fejlesszük, átírjuk a kódot, így megoldható, hogy erre a célra ne kelljen komplett új képszerkesztőt keresni, illetve írni Facebook kép importálás Ha a felhasználó nem szeretne bajlódni se a képfeltöltésével, se linkek keresésével, és már egy a facebookon megosztott képét szeretné felhasználni, a legegyszerűbb, ha egy az egyben a facebook API-n keresztül vesszük ezt igénybe. Részletes dokumentáció található a developer weboldalukon: 36

37 7.6. Rajzolás 256x256 pixelen Későbbi fejlesztés, hogy ne csak már kész képeket lehessen elhelyezni, hanem kreatív rajzokat is, ehhez a jelenlegi állapot szerint elég csak egy JavaScript könyvtár, magához egy canvasban rajzoláshoz. 19. ábra Open-source rajzpad Javascriptben Forrás: CacheFS A CacheFS egy olyan kiegészítés a hálózati fájlrendszerekhez, ami lehetővé teszi azt, hogy a hálózaton megosztott fájlokat ne csak a RAM-ban lehessen elcachelni, hanem konkrétan a kiszolgáló gépek helyi fájlrendszerit használja gyorsító tárnak. Kiszolgáláskor ugyan úgy le kell ellenőriznie, hogy változott-e a fájl, mióta legutóbb használatban volt, viszont ha nem történt változás, és a RAM-ból már kikerült, akkor sem kell a hálózatot terhelni az újbóli lekéréshez, hanem a helyi merevlemezről ki lehet szolgálni a kérést. Hasonlót használ a Google is a világszerte elhelyezett cache szerverein. Az adott területen leggyakrabban keresett, vagy használt tartalmakat nem csak RAM-ban, hanem merevlemezen is tárolja. Én is hasonlót terveztem, arra az esetre, ha megnő az oldal forgalma, ezzel jelentős hálózati erőforrásokat lehet megtakarítani. 37

38 20. ábra CacheFS működési ábrája Forrás: Daemon működése A képgenerálást a jelenlegi PHP helyett, a kezdeti elképzelés szerint egy Linuxon futó szolgáltatás, daemon végezte volna. A PHP kiegészítésként használt Imagemagick projekt nyílt forrású, és szinte az összes programozási nyelvre elérhető a forrása, így tehát az algoritmus is megegyezik. Viszont sajnos a példakódok fordításakor nem várt hibák következtek be, ellentétben a PHP-vel, ami talán a háttérben más függvényeket használhat. Debugolása több időt vett volna igénybe, ezért a működés szempontjából a PHP maradt a projektben, később az erőforrás hatékonyság végett mindenféleképpen működésre kell bírni Multi Language Több dolog kell, hogy többnyelvű legyen az oldal. Már korábban felmerült, hogy a Google licensz feltételei miatt minimalizálni kell a lap újratöltéseket, ezért JavaScript oldalon kell ezt a műveletet is megvalósítani. Az ötlet szerint egy olyan tömböt hozok létre, amibe az értékek maguk a szövegek referenciái. Oldalbetöltéskor automatikusan ezek feltöltődnek az alapértelmezett nyelvvel, az angollal, vagy ha a felhasználó már járt az oldalon, akkor az általa kiválasztottal. Nyelv váltáskor csak egy PHP szkriptet kell meghívni, ami JSON szerializált tömbben visszaadja az összes stringet, majd a korábbi tömbünkön végigmenve a referenciák értékeit frissítjük. Talán ez a funkció az, amelyik a leggyorsabban megvalósítható a tervezettek közül. 38

39 7.10. Teljes cloud befejezése, PHP, SQL párhuzamosítás Legfőképp ez a pont volt a projektem fő célja, hogy egy Google Maps szerű párhuzamosított webes rendszert építsek. Nem sok hiányzik ahhoz, hogy ez tényleg maradéktalanul teljesüljön, viszont annál több tesztelést igényel még. A memcached beállításait annyiban kell módosítani, hogy ne az alapértelmezett IP-n figyeljen, hanem a szerver publikus IP-jén. Majd a allow_failover-t 1-es értékre és session_redundancy direktívát annyira állítani, ahány szerveren használjuk plusz 1. Jelen esetben 3-ra állítanám. A PHP beállításait módosítani kell, a php.ini-ben a session.save_path direktívában minden cloudba kapcsolt szerveren megadni az összes szerver ipcímét és a portot, amit a memcached használ. Ezek után úgy működik mindkét gépen PHP sessionje, mintha egy RAID1 diszk volna, tükrözve vannak hálózaton az adatok, annyi különbséggel, hogy ugye a memcached miatt nem a merevlemezen, hanem direkt a RAM-ban tároljuk őket. Így akár egy szerver leállása esetén az is elkerülhető, hogy a session adataink eltűnjenek, mert a többi szerver memóriájában még megtalálhatóak a session adatok. A kiesett szerver helyreállításakor pedig automatikusan leszinkronizálódnak az adatok. Ez után már az azonosítási információk minden gépen elérhetőek, mindegy melyik gépen lép be a felhasználó, ha később másik szolgálná ki, akkor is mentve marad a munkamenete. A hálózati adattár miatt a PHP kódok összessége megtalálható a 2. szerveren is, viszont jelenleg azok nincsenek használatban, működésükhöz további tevékenységek szükségesek. A terv szerint mindenképpen megmaradna a fő szerver funkciója, miszerint adatot csak az rögzíthet, a többi pedig csak olvas, így elkerülve az adatok inkonzisztenciáját, és egyéb szinkronizációs problémákat. A két szerver adatbázisa már most is így van konfigurálva, Master-Slave működéssel, amihez útmutatót az alábbi weboldalon lehet megtekinteni: 39

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Rich Internet Applications RIA Vékony-kliens generált (statikus) HTML megjelenítése szerver oldali feldolgozással szinkron oldal megjelenítéssel RIA desktop alkalmazások funkcionalitása

Részletesebben

Webes alkalmazások fejlesztése

Webes alkalmazások fejlesztése Webes alkalmazások fejlesztése 3. gyakorlat Authentikáció, adatok feltöltése Szabó Tamás (sztrabi@inf.elte.hu) - sztrabi.web.elte.hu Authentikáció Manapság már elvárás, hogy a felhasználó regisztrálni

Részletesebben

PHP-MySQL. Adatbázisok gyakorlat

PHP-MySQL. Adatbázisok gyakorlat PHP-MySQL Adatbázisok gyakorlat Weboldalak és adatbázisok Az eddigiek során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat készíteni. A dinamikus weboldalak az esetek többségében valamilyen

Részletesebben

Hiba bejelentés azonnal a helyszínről elvégezhető. Egységes bejelentési forma jön létre Követhető, dokumentált folyamat. Regisztráció.

Hiba bejelentés azonnal a helyszínről elvégezhető. Egységes bejelentési forma jön létre Követhető, dokumentált folyamat. Regisztráció. Ingyenes Mobil helpdesk megoldás A Mobil helpdesk egy olyan androidos felületen futó hibabejelentő, amelynek néhány alapbeállítását megadva saját mobil hibabejelentő rendszere lehet, vagy partnereinek

Részletesebben

Internet alkamazások Készítette: Methos L. Müller Készült: 2010

Internet alkamazások Készítette: Methos L. Müller Készült: 2010 Internet alkamazások Készítette: Methos L. Müller Készült: 2010 Tartalomjegyzék - Tartalomkezelő rendszerek Miért jó a CMS alapú website? CMS rendszerek - Mi szükséges ezen CMS-ekhez? - Információ építészet

Részletesebben

Web harvesztelés. Automatikus módszerekkel

Web harvesztelés. Automatikus módszerekkel Országos Széchényi Könyvtár Miről lesz szó? Mi is az a web harvesztelés? Mire és hol használjuk? Miért hasznos? Saját megvalósításaink Mi a web harvesztelés? Interneten található weboldalak begyűjtése,

Részletesebben

Földmérési és Távérzékelési Intézet

Földmérési és Távérzékelési Intézet Ta p a s z ta l a to k é s g ya ko r l a t i m e g o l d á s o k a W M S s zo l gá l tatá s b a n Földmérési és Távérzékelési Intézet 2011.03.13. WMS Szolgáltatások célja A technikai fejlődéshez igazodva

Részletesebben

Ustream.tv Bepillantás egy közösségi élővideo site működésébe

Ustream.tv Bepillantás egy közösségi élővideo site működésébe Ustream.tv Bepillantás egy közösségi élővideo site működésébe Tolmács Márk Pillantás bele... Facebook-clean, YouTube simple......so you get the drill Mivel kell szembenéznünk... Web front-end 30 000 kérés

Részletesebben

WordPress segédlet. Bevezető. Letöltés. Telepítés

WordPress segédlet. Bevezető. Letöltés. Telepítés WordPress segédlet Bevezető A WordPress egy ingyenes tartalomkezelő rendszer (Content Management System - CMS), amely legnagyobb előnye az egyszerű telepítés és a letisztult kezelhetőség és a változatos

Részletesebben

Webtárhely létrehozása a WWW.freeweb.hu helyen. Lépések Teendő 1. Böngészőbe beírni: www.freeweb.hu. 2. Jobb oldalon regisztrálni (tárhelyigénylés).

Webtárhely létrehozása a WWW.freeweb.hu helyen. Lépések Teendő 1. Böngészőbe beírni: www.freeweb.hu. 2. Jobb oldalon regisztrálni (tárhelyigénylés). Lépések Teendő 1. Böngészőbe beírni: www.freeweb.hu Kép 2. Jobb oldalon regisztrálni (tárhelyigénylés). 3. 4. Értelemszerűen kitölteni a regisztrációs lapot, és elküldeni. 5. Postafiókomra érkező levélben

Részletesebben

KnowledgeTree dokumentumkezelő rendszer

KnowledgeTree dokumentumkezelő rendszer KnowledgeTree dokumentumkezelő rendszer Budapest, 2011. január 11. Tartalomjegyzék Tartalomjegyzék... 2 Dokumentum információ... 3 Változások... 3 Bevezetés... 4 Funkciók... 5 Felhasználói felület... 5

Részletesebben

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com Google App Engine az Oktatásban Kis 1.0 Gergely ügyvezető MattaKis Consulting http://www.mattakis.com Bemutatkozás 1998-2002 között LME aktivista 2004-2007 Siemens PSE mobiltelefon szoftverfejlesztés,

Részletesebben

BaBér bérügyviteli rendszer telepítési segédlete 2011. év

BaBér bérügyviteli rendszer telepítési segédlete 2011. év BaBér bérügyviteli rendszer telepítési segédlete 2011. év Ajánlott konfiguráció A program hardverigénye: Konfiguráció: 2800 MHz processzor 512 Mbyte memória (RAM) / Szerver gépen 1G memória (RAM) Lézernyomtató

Részletesebben

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft Flash és PHP kommunikáció Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft A lehetőségek FlashVars External Interface Loadvars XML SOAP Socket AMF AMFphp PHPObject Flash Vars Flash verziótól függetlenül

Részletesebben

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) OCSP Stapling Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. OCSP Stapling támogatással rendelkező webszerverek...

Részletesebben

Internet programozása. 1. előadás

Internet programozása. 1. előadás Internet programozása 1. előadás Áttekintés 1. Mi a PHP? 2. A PHP fejlődése 3. A PHP 4 újdonságai 4. Miért pont PHP? 5. A programfejlesztés eszközei 1. Mi a PHP? Egy makrókészlet volt, amely személyes

Részletesebben

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és

Részletesebben

ServiceTray program Leírás

ServiceTray program Leírás ServiceTray program Leírás Budapest 2015 Bevezetés szerviz munkalapok státuszai a Törölve és Lezárva státuszt leszámítva a munkalap különböző nyitott állapotát jelzik, melyek valamilyen tevékenységet jeleznek.

Részletesebben

ContractTray program Leírás

ContractTray program Leírás ContractTray program Leírás Budapest 2015 Bevezetés Egy-egy szerződéshez tartozó határidő elmulasztásának komoly gazdasági következménye lehet. Éppen ezért a Szerződés kezelő program főmenü ablakában a

Részletesebben

A Java EE 5 plattform

A Java EE 5 plattform A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 13. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési

Részletesebben

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014.

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014. BaBér Bérügyviteli rendszer Telepítési segédlet 2014. Tartalom 1. Ajánlott konfiguráció... 3 2. A BaBér és az SQL2005 szerver telepítése... 5 3. A BaBér program és az SQL2005-ös adatbázis kezelő telepítése...

Részletesebben

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Felhasználói leírás a DimNAV Server segédprogramhoz ( ) Felhasználói leírás a DimNAV Server segédprogramhoz (1.1.0.3) Tartalomjegyzék Bevezetés...3 1. Telepítés...3 2. Eltávolítás...4 Program használata...5 1. Kezdeti beállítások...5 2. Licenc megadása...6

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. május 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2. Telefon: Fax: E-mail: (+36-1) 269-1642 (+36-1) 331 8479 info@ex-lh.hu www.ex-lh.hu Eötvös József Főiskola 6500 Baja, Szegedi út 2. MŰSZAKI DOKUMENTÁCIÓ Aleph WebOPAC elérhetővé tétele okostelefonon Pályázati

Részletesebben

Kezdő lépések Microsoft Outlook

Kezdő lépések Microsoft Outlook Kezdő lépések Microsoft Outlook A Central Europe On-Demand Zrt. által, a Telenor Magyarország Zrt. részére nyújtott szolgáltatások rövid kezelési útmutatója 1 Tartalom Áttekintés... 3 MAPI mailbox konfiguráció

Részletesebben

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group COMET webalkalmazás fejlesztés Tóth Ádám Jasmin Media Group Az előadás tartalmából Alapproblémák, fundamentális kérdések Az eseményvezérelt architektúra alapjai HTTP-streaming megoldások AJAX Polling COMET

Részletesebben

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor Integrált fejlesztő környezet Egységes (vizuális) fejlesztési lehetőségek Bőséges segítség (help) Hibakeresési, nyomkövetési

Részletesebben

DebitTray program Leírás

DebitTray program Leírás DebitTray program Leírás Budapest 2015 Bevezetés Egy-egy kintlévőséghez tartozó határidő elmulasztásának komoly következménye lehet. Éppen ezért a Kintlévőség kezelő program főmenü ablakában a program

Részletesebben

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Adatbázis-kezelő rendszerek. dr. Siki Zoltán Adatbázis-kezelő rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati

Részletesebben

A CCL program használatbavétele

A CCL program használatbavétele A CCL program használatbavétele Tartalomjegyzék 1.1 Hardver és szoftverkövetelmények... 2 1.2 CCL program telepítése hálózatba. Telepítés szerver számítógépre... 2 1.3 Cégek... 6 1.3.1 Egy céges felhasználás....

Részletesebben

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció H - 1161 Budapest Rákóczi út 76. Tel./Fax.: +36-1-4010159 http://www.pageos.hu toni@pageos.hu DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció A program használható a TOPOBASE

Részletesebben

EgroupWare: A csoportmunka megoldás

EgroupWare: A csoportmunka megoldás EgroupWare: A csoportmunka megoldás Bemutatás Az egroupware egy üzleti szintű, PHP alapú, szabad csoportmunka szerver megoldás, a Stylite AG terméke. A közösségi verzió szabadon letölthető és ingyenesen

Részletesebben

Információs technológiák 2. Gy: CSS, JS alapok

Információs technológiák 2. Gy: CSS, JS alapok Információs technológiák 2. Gy: CSS, JS alapok 1/69 B ITv: MAN 2017.10.01 Ismétlés Van egy Web nevű mappánk, ebben vannak az eddig elkészített weboldalak (htm, html) képek (jpg, png). Logikai felépítés

Részletesebben

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk. JSON tutorial Készítette: Cyber Zero Web: www.cyberzero.tk E-mail: cyberzero@freemail.hu Msn: cyberzero@mailpont.hu Skype: cyberzero_cz Fb: https://www.facebook.com/cyberzero.cz BEVEZETÉS: A JSON (JavaScript

Részletesebben

Microsoft SQL Server telepítése

Microsoft SQL Server telepítése Microsoft SQL Server telepítése Az SQL Server a Microsoft adatbázis kiszolgáló megoldása Windows operációs rendszerekre. Az SQL Server 1.0 verziója 1989-ben jelent meg, amelyet tizenegy további verzió

Részletesebben

Opensuse automatikus telepítése

Opensuse automatikus telepítése Leírás www.npsh.hu Opensuse automatikus telepítése Tartalomjegyzék I. Automatikus telepítés indokai... 3 II. Automatikus telepítés lehetőségei opensuse rendszerrel...3 III. Automatikus telepítés előkészítése...

Részletesebben

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán Mozgásvizsgálati mérések internetes megjelenítése Zemkó Szonja - Dr. Siki Zoltán Áttekintés Az ötlet megszületése Nyílt szabványok és nyílforrású szoftverek A rendszer komponensei Bemutató Az ötlet megszületése

Részletesebben

PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról

PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról Az Informatikai Igazgatóság minden aktív egyetemi hallgató és munkaviszonnyal rendelkező egyetemi dolgozó részére úgynevezett proxy

Részletesebben

2009.04.29. 2009. április 24. INFO Savaria 2009 2. 2009. április 24. INFO Savaria 2009 4. 2009. április 24. INFO Savaria 2009 3

2009.04.29. 2009. április 24. INFO Savaria 2009 2. 2009. április 24. INFO Savaria 2009 4. 2009. április 24. INFO Savaria 2009 3 Négy adatbázis-kezelı rendszer összehasonlítása webes környezetben Sterbinszky Nóra snorav@gmail.com Áttekintés Növekvı igény hatékony adatbázis- kezelıkre a világhálón Hogyan mérhetı ezek teljesítménye

Részletesebben

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés Nagyon fontos, hogy az adatbázis tervezések folyamán is, ugyan úgy mint a megvalósítandó programhoz, legyenek modelljeink, dokumentációk, diagramok, képek, stb.., ezek segítségével könnyebben átlátjuk

Részletesebben

Parlagfű Bejelentő Rendszer

Parlagfű Bejelentő Rendszer Parlagfű Bejelentő Rendszer felhasználói útmutató A rendszer elérése: Elérési cím: www.govcenter.hu/pbr Felhasználói funkciók: 1. Regisztráció Új felhasználói fiókot az oldalsó menüben a [Regisztráció]-ra

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010. június 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

Felhasználói dokumentáció a teljesítményadó állományok letöltéséhez v1.0

Felhasználói dokumentáció a teljesítményadó állományok letöltéséhez v1.0 Felhasználói dokumentáció a teljesítményadó állományok letöltéséhez v1.0 www.kekkh.gov.hu Státusz: Verzió Cím Dátum SzerzőFolyamatban Változások Verzió Dátum Vállalat Verzió: 1.0 Szerző: Lénárd Norbert

Részletesebben

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék NAGY TELJESÍTM TMÉNYŰ WEBALKALMAZÁSOK KÉSZÍTÉSE SE JAVA TECHNOLÓGI GIÁVAL Szerzők Dévai István Automatizálási és s Alkalmazott Informatikai Tanszék Az előad adás s tartalma Elméleti áttekintés Nagy teljesítményű

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

Zimbra levelező rendszer

Zimbra levelező rendszer Zimbra levelező rendszer Budapest, 2011. január 11. Tartalomjegyzék Tartalomjegyzék... 2 Dokumentum információ... 3 Változások... 3 Bevezetés... 4 Funkciók... 5 Email... 5 Társalgás, nézetek, és keresés...

Részletesebben

Thermo1 Graph. Felhasználói segédlet

Thermo1 Graph. Felhasználói segédlet Thermo1 Graph Felhasználói segédlet A Thermo Graph program a GIPEN Thermo eszközök Windows operációs rendszeren működő grafikus monitorozó programja. A program a telepítést követően azonnal használható.

Részletesebben

Dropbox - online fájltárolás és megosztás

Dropbox - online fájltárolás és megosztás Dropbox - online fájltárolás és megosztás web: https://www.dropbox.com A Dropbox egy felhő-alapú fájltároló és megosztó eszköz, melynek lényege, hogy a különböző fájlokat nem egy konkrét számítógéphez

Részletesebben

A NetBeans IDE Ubuntu Linux operációs rendszeren

A NetBeans IDE Ubuntu Linux operációs rendszeren A NetBeans IDE Ubuntu Linux operációs rendszeren Készítette: Török Viktor (Kapitány) E-mail: kapitany@lidercfeny.hu 1/10 A NetBeans IDE Linux operációs rendszeren Bevezető A NetBeans IDE egy Java-ban írt,

Részletesebben

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez CareLink Personal telepítési útmutató Első lépések a CareLink Personal adatfeltöltéshez A CareLink USB illesztőprogram telepítése A CareLink USB illesztőprogramot telepíteni kell. Ez az illesztőprogram

Részletesebben

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával TeIR Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Felhasználói útmutató Budapest, 2015. április 1 BEVEZETÉS Az útmutató célja

Részletesebben

CAMLAND Beruházás-megfigyelő

CAMLAND Beruházás-megfigyelő 2016 CAMLAND Beruházás-megfigyelő Felhasználói útmutató Készítette: GeoVision Hungária Kft. Tartalomjegyzék Bevezető... 2 Bejelentkezés... 2 Vezérlőpult... 3 Kamera adatlap... 4 Nézetek kezelése... 6 Felhasználók...

Részletesebben

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén Tartalomjegyzék 1. Az Internet Explorer 9 megfelelősségének

Részletesebben

DMS One Oktatási Portál Felhasználói segédlet. DMS One Zrt

DMS One Oktatási Portál Felhasználói segédlet. DMS One Zrt DMS One Oktatási Portál Felhasználói segédlet DMS One Zrt. 2019. 1 Bevezetés A dokumentumban bemutatjuk a DMS One Oktatási Portál használatát. Regisztráció és bejelentkezés A DMS One Oktatási Portált a

Részletesebben

Partner. kezelési útmutató

Partner. kezelési útmutató Partner kezelési útmutató A P&T Partner mobil alkalmazás minden Android operációsrendszerrel mûködô mobileszközön ingyenesen elérhetô a Google Play áruházból. Keresd: P&T Partner. Az alkalmazást a telepítés

Részletesebben

VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV

VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV www.eset.hu support@sicontact.hu 1. oldal Tartalomjegyzék Alaprendszer installálása 3 Szükséges alapfeltételek 3 A rendszer installálása 3 ESET Remote

Részletesebben

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák https://www.vik.bme.hu/kepzes/targyak/vimiav89/ Koncepció Ha megfelel, hogy azonos

Részletesebben

JavaScript Web AppBuilder használata

JavaScript Web AppBuilder használata JavaScript Web AppBuilder használata Kiss András Esri Magyarország Kft. 2015. október 8. Az ArcGIS Platform lehetővé teszi a Web GIS-t Térinformatika elérése bárhonnan Desktop Web Eszköz Egyszerű Egységes

Részletesebben

A webáruház kezdőlapján háromféle diavetítés beállítására van lehetőség:

A webáruház kezdőlapján háromféle diavetítés beállítására van lehetőség: KRYPTON sablon Részletes leírás a sablonhoz kapcsoló új beállításokról Diavetítés a kezdőlapon A webáruház kezdőlapján háromféle diavetítés beállítására van lehetőség: Képes diavetítés Termékes diavetítés

Részletesebben

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Mi az IMDG? Nem memóriában futó relációs adatbázis NoSQL hagyományos relációs adatbázis Más fajta adat tárolás Az összes adat RAM-ban van, osztott

Részletesebben

Nyilvántartási Rendszer

Nyilvántartási Rendszer Nyilvántartási Rendszer Veszprém Megyei Levéltár 2011.04.14. Készítette: Juszt Miklós Honnan indultunk? Rövid történeti áttekintés 2003 2007 2008-2011 Access alapú raktári topográfia Adatbázis optimalizálás,

Részletesebben

IP150 frissítés 4.20-ra

IP150 frissítés 4.20-ra IP150 frissítés 4.20-ra Bevezető Ez a dokumentum az IP150 modul legfrissebb, v.4.20.008-ra történő frissítéséhez nyújt útmutatást. Kérjük, figyelmesen olvassa végig a sikeres frissítés érdekében. A 4.20.008

Részletesebben

Nyílt forráskódú online térképi szolgáltatások fejlesztése a FÖMI-ben

Nyílt forráskódú online térképi szolgáltatások fejlesztése a FÖMI-ben Nyílt forráskódú online térképi szolgáltatások fejlesztése a FÖMI-ben Kolesár András Olasz Angéla 4. HUNAGI Budapest, 2013. április 4. Földmérési és Távérzékelési Intézet Térinformatikai Igazgatóság Áttekintés

Részletesebben

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 04. 17. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési

Részletesebben

GeoServer, OpenLayers és WFS. Dolleschall János 2009. 08. 17.

GeoServer, OpenLayers és WFS. Dolleschall János 2009. 08. 17. GeoServer, OpenLayers és WFS Dolleschall János 2009. 08. 17. A GeoServer A GeoServer egy nyílt forráskódú szerver szoftver, ami lehetővé teszi térbeli adatok megosztását. Java-ban íródott, így platformfüggetlen.

Részletesebben

Szakdolgozati, TDK témajavaslatok

Szakdolgozati, TDK témajavaslatok Kiadta: IB Controll Kft. Összeállította: Nagy Imre Dokumentum verzió: v1.0 Utolsó frissítés dátuma: 2015. 03. 30. Tartalomjegyzék 1. Bevezetés...3 2. Témajavaslatok...4 2.1.1. OpenWrt / Linux szerver admin

Részletesebben

TERC V.I.P. hardverkulcs regisztráció

TERC V.I.P. hardverkulcs regisztráció TERC V.I.P. hardverkulcs regisztráció 2014. második félévétől kezdődően a TERC V.I.P. költségvetés-készítő program hardverkulcsát regisztrálniuk kell a felhasználóknak azon a számítógépen, melyeken futtatni

Részletesebben

E-Freight beállítási segédlet

E-Freight beállítási segédlet E-Freight beállítási segédlet Az E-Freight rendszer működéséhez szükséges programok és beállítások v08 A legújabb verzióért kérjük, olvassa be az alábbi kódot: 1. Támogatott böngészők Az E-Freight az Internet

Részletesebben

Online adatszolgáltatás beállítása a Számlázás-házipénztár programban (SZAMLA)

Online adatszolgáltatás beállítása a Számlázás-házipénztár programban (SZAMLA) Online adatszolgáltatás beállítása a Számlázás-házipénztár programban (SZAMLA) 1. Menüpontok A Számlázás-házipénztár programban az online adatszolgáltatáshoz kapcsolódó beállítások, funkciók egy új menüpontba

Részletesebben

PwC EKAER Tool felhasználói leírás. 2015. május

PwC EKAER Tool felhasználói leírás. 2015. május www.pwc.com/hu/ekaer PwC EKAER Tool felhasználói leírás 2015. május Tartalom Bejelentések létrehozása 3 1. A forrás Excel állomány kitöltése 3 2. A forrás Excel állomány mentése 4 A szükséges mezők kitöltését

Részletesebben

Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén

Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén Hallgatói felhasználói segédlet ELTE TTK Biológiai Intézet 2017. Készült az ELTE Felsőoktatási

Részletesebben

Sú gó az ASIR/PA IR Públikús felú lethez

Sú gó az ASIR/PA IR Públikús felú lethez Sú gó az ASIR/PA IR Públikús felú lethez Súgó a magyarországi központi Agrárstatisztikai és Piaci Árinformációs rendszer publikus moduljához. 1 Publikus felhasználói regisztráció A publikus felület Regisztráció

Részletesebben

minic studio Melinda Steel Weboldal kivitelezési árajánlat 2013.03.01.

minic studio Melinda Steel Weboldal kivitelezési árajánlat 2013.03.01. minic studio Melinda Steel Weboldal kivitelezési árajánlat 2013.03.01. Weboldal 1. Előkészítés 1.1. Anyaggyűjtés 1.2. Kutatás 2. Tervezés 3. Kivitelezés 3.1. Drótváz 3.2. Grafikus tervezés 3.3. Programozás

Részletesebben

Oktatási cloud használata

Oktatási cloud használata Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnikai és Információs Rendszerek Tanszék Oktatási cloud használata Készítette: Tóth Áron (BME MIT), 2013. A segédlet célja a tanszéki oktatási cloud

Részletesebben

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 a TávTagTár programhoz Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 Tartalomjegyzék Futási feltételek... 3 Telepítés... 3 Indítás... 3 Főablak... 4 Új személy felvétele...

Részletesebben

Felhasználói kézikönyv a WEB EDInet rendszer használatához

Felhasználói kézikönyv a WEB EDInet rendszer használatához Felhasználói kézikönyv a WEB EDInet rendszer használatához A WEB EDInet rendszer használatához internet kapcsolat, valamint egy internet böngésző program szükséges (Mozilla Firefox, Internet Explorer).

Részletesebben

Hálózatos beállítás. A Novitax ügyviteli programrendszerek hálózatos beállítása a következők alapján történhet:

Hálózatos beállítás. A Novitax ügyviteli programrendszerek hálózatos beállítása a következők alapján történhet: WIN-TAX programrendszerek hálózatos beállítása A Novitax ügyviteli programrendszerek hálózatos beállítása a következők alapján történhet: Hálózatos beállítás Szerver és kliens gépre telepítendő programok

Részletesebben

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Ön letölthető fájl tartalmazza az Evolut Főkönyv 2013. program telepítőjét. A jelen leírás olyan telepítésre vonatkozik, amikor Ön

Részletesebben

Apple ID készítése és vásárlás az AppStore áruházban

Apple ID készítése és vásárlás az AppStore áruházban Apple ID készítése és vásárlás az AppStore áruházban Ahhoz, hogy bármilyen ios-t használó eszközt tudjunk, rendeltetésszerűen használni szükségünk van egy úgynevezett Apple ID-re. Ennek segítségével jogosultságot

Részletesebben

Gyakorlati vizsgatevékenység A

Gyakorlati vizsgatevékenység A Gyakorlati vizsgatevékenység A Szakképesítés azonosító száma, megnevezése: 481 04 0000 00 00 Web-programozó Vizsgarészhez rendelt követelménymodul azonosítója, megnevezése: 1189-06 Web-alkalmazás fejlesztés

Részletesebben

JAVA webes alkalmazások

JAVA webes alkalmazások JAVA webes alkalmazások Java Enterprise Edition a JEE-t egy specifikáció definiálja, ami de facto szabványnak tekinthető, egy ennek megfelelő Java EE alkalmazásszerver kezeli a telepített komponensek tranzakcióit,

Részletesebben

r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED

r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED HUSK 1101/1.5.1/0105 Szoftver Telepítési Útmutató A program a Magyarország-Szlovákia Határon Átnyúló Együttműködési Program

Részletesebben

Csavarda mobil áruház

Csavarda mobil áruház Csavarda mobil áruház Használati útmutató Kérjük, hogy mielőtt elkezdené használni a Csavarda mobil áruház alkalmazást, gondosan olvassa végig ezt a segédletet. TARTALOMJEGYZÉK 1. Letöltés 2. oldal 2.

Részletesebben

1. Szolgáltatásaink. Adatok feltöltése és elemzése. Digitális feltöltés. Analóg korong feltöltés

1. Szolgáltatásaink. Adatok feltöltése és elemzése. Digitális feltöltés. Analóg korong feltöltés v 1.1 1. Szolgáltatásaink Adatok feltöltése és elemzése A Tacho-X rendszer képes a digitális, valamint analóg tachográfból korongokból származó adatokat beolvasni, és elemezni azokat. Az beolvasott adatokat,

Részletesebben

ALKALMAZÁS KERETRENDSZER

ALKALMAZÁS KERETRENDSZER JUDO ALKALMAZÁS KERETRENDSZER 2014 1 FELHASZNÁLÓK A cégvezetők többsége a dobozos termékek bevezetésével összehasonlítva az egyedi informatikai alkalmazások kialakítását költséges és időigényes beruházásnak

Részletesebben

Hozzávalók keresése és csatolása

Hozzávalók keresése és csatolása Hozzávalók keresése és csatolása VUE támogatja digitális tartalmak hozzáadását saját gépről, WEB-ről, távoli rendszerekből, mint az FTP oldalak, digitális forrásokból és Google szerverekről. A tartalmak

Részletesebben

MŰSZAKI KÖVETELMÉNYEK, A KÖRKERESŐ SZOFTVER SPECIFIKÁCIÓJA, KÖLTSÉGVETÉS. A) Műszaki követelmények

MŰSZAKI KÖVETELMÉNYEK, A KÖRKERESŐ SZOFTVER SPECIFIKÁCIÓJA, KÖLTSÉGVETÉS. A) Műszaki követelmények 1. sz. melléklet MŰSZAKI KÖVETELMÉNYEK, A KÖRKERESŐ SZOFTVER SPECIFIKÁCIÓJA, KÖLTSÉGVETÉS A) Műszaki követelmények A körkereső szoftvernek (a továbbiakban Szoftver) az alábbi követelményeknek kell megfelelnie

Részletesebben

Digitális aláíró program telepítése az ERA rendszeren

Digitális aláíró program telepítése az ERA rendszeren Digitális aláíró program telepítése az ERA rendszeren Az ERA felületen a digitális aláírásokat a Ponte webes digitális aláíró program (Ponte WDAP) segítségével lehet létrehozni, amely egy ActiveX alapú,

Részletesebben

Szathmáry László Debreceni Egyetem Informatikai Kar

Szathmáry László Debreceni Egyetem Informatikai Kar Szathmáry László Debreceni Egyetem Informatikai Kar 1. Gyakorlat bevezető JSON telepítés (utolsó módosítás: 2018. szept. 12.) 2018-2019, 1. félév MongoDB https://www.mongodb.com/ A MongoDB egy nem-relációs,

Részletesebben

Flex: csak rugalmasan!

Flex: csak rugalmasan! Flex: csak rugalmasan! Kiss-Tóth Marcell http://kiss-toth.hu marcell@kiss-toth.hu Magyarországi Web Konferencia 2006 2006. március 18. tartalom bevezető Adobe Flex alternatív technológiák bevezető az Internetnek

Részletesebben

Cikktípusok készítése a Xarayában

Cikktípusok készítése a Xarayában Cikktípusok készítése a Xarayában A Xaraya legfontosabb tulajdonsága az egyedi cikktípusok egyszerű készítésének lehetősége. Ezzel kiküszöbölhető egyedi modulok készítése, hiszen néhány kattintással tetszőleges

Részletesebben

Belépés a GroupWise levelező rendszerbe az Internet felől

Belépés a GroupWise levelező rendszerbe az Internet felől 1 Belépés a GroupWise levelező rendszerbe az Internet felől A GroupWise levelező szolgáltatás web felelületről, az Internet felől az Egyetem honlapjáról is elérhető, az alábbi linken: www.uni-nke.hu WEBMAIL-NKE

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

OE-NIK 2010/11 ősz OE-NIK. 2010. ősz

OE-NIK 2010/11 ősz OE-NIK. 2010. ősz 2010/11 ősz 1. Word / Excel 2. Solver 3. ZH 4. Windows 5. Windows 6. ZH 7. HTML 8. HTML 9. ZH 10. Adatszerkezetek, változók, tömbök 11. Számábrázolási kérdések 12. ZH 13. Pótlás A Windows felhasználói

Részletesebben

Vectory telepítési útmutató

Vectory telepítési útmutató Vectory telepítési útmutató A vectory kliens programja egy vyw.exe valamint egy bejelentkezes.ini nevű fájlból áll. A vyw.exe-nek és a bejelentkezes.ini-nek egy közös könyvtárba kell kerülniük. Könyvtárak,

Részletesebben

epos - Felhasználói leírás (MOBIL egyenleg feltöltés, Web áruházban történő vásárlás)

epos - Felhasználói leírás (MOBIL egyenleg feltöltés, Web áruházban történő vásárlás) epos - Felhasználói leírás (MOBIL egyenleg feltöltés, Web áruházban történő vásárlás) Verzió: 2.1.0 Tartalomjegyzék 1. Bevezető... 3 2. epos - MOBIL egyenleg feltöltés... 4 2.1. Az epos MOBIL egyenleg

Részletesebben

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt segédlet A Szilipet programok az adatok tárolásához Firebird adatbázis szervert használnak. Hálózatos

Részletesebben

GeriSoft Stúdió Kft J Á T S Z Ó H Á Z M A X I JÁTSZÓHÁZI BELÉPTETŐ RENDSZER

GeriSoft Stúdió Kft J Á T S Z Ó H Á Z M A X I JÁTSZÓHÁZI BELÉPTETŐ RENDSZER GeriSoft Stúdió Kft J Á T S Z Ó H Á Z M A X I JÁTSZÓHÁZI BELÉPTETŐ RENDSZER Köszönjük, hogy érdeklődik szoftverünk iránt! Engedje meg, hogy bemutassuk a rendszer működését. A rendszer kifejlesztésében

Részletesebben

Multimédiás adatbázisok

Multimédiás adatbázisok Multimédiás adatbázisok Multimédiás adatbázis kezelő Olyan adatbázis kezelő, mely támogatja multimédiás adatok (dokumentum, kép, hang, videó) tárolását, módosítását és visszakeresését Minimális elvárás

Részletesebben