• No results found

Cloud computing with Google App Engine

N/A
N/A
Protected

Academic year: 2021

Share "Cloud computing with Google App Engine"

Copied!
37
0
0

Loading.... (view fulltext now)

Full text

(1)Niko Kovačič. RAČUNALNIŠTVO V OBLAKU Z GOOGLE APP ENGINE Diplomsko delo. Maribor, september 2012.

(2) Diplomsko delo univerzitetnega študijskega programa. RAČUNALNIŠTVO V OBLAKU Z GOOGLE APP ENGINE. Študent:. Niko Kovačič. Študijski program:. UN ŠP Računalništvo in informacijske tehnologije. Smer:. Računalništvo. Mentor:. izr. prof. dr. Milan Ojsteršek, univ.dipl.inž. el.. Maribor, september 2012. II.

(3) III.

(4) ZAHVALA Zahvaljujem se mentorju izr. prof. dr. Milan Ojsteršku za nasvete in strokovno pomoč pri izdelavi diplomskega dela. Zahvaljujem se tudi družini in prijateljem za podporo v času študija.. IV.

(5) Računalništvo v oblaku z Google App Engine Ključne besede: računalništvo v oblaku, Google App Engine, spletni urejevalnik besedila. UDK: 004.45:004.777(043.2). Povzetek V diplomskem delu smo predstavili delovanje računalništva v oblaku ter njegov vpliv na razvoj in izdelovanje spletnih aplikacij. Opisali smo še osnovne tehnologije izdelave spletne strani, katere smo uporabili pri izdelovanju spletne aplikacije. V nadaljevanju smo se osredotočili na Google App Engine, platformo za izdelovanje in poganjanje spletnih aplikacij v oblaku. Znanje, ki smo ga pridobili smo uporabili za izdelavo bogatega urejevalnika besedila, ki podpira urejanje dokumenta večjemu številu uporabnikov naenkrat.. V.

(6) Cloud computing with Google App Engine Keywords: cloud computing, Google App Engine, online text editor. UDK: 004.45:004.777(043.2). Abstract. In this diploma thesis we present the functioning of cloud computing and its impact on development as well as on the production of web applications. We describe the basic technologies, which are used in the development of web applications. Furthermore, we focus on Google App Engine, which is a platform for creating and running web application in the cloud. The acquired knowledge is then used to create a rich text editor with support for simultaneous editing of the same document by multiple users.. VI.

(7) KAZALO. 1.. UVOD ........................................................................................................................................ 2. 2.. RAČUNALNIŠTVO V OBLAKU ............................................................................................ 3 2.1. Oblak .................................................................................................................................. 3. 2.2. Komponente oblaka............................................................................................................ 3. 2.2.1. Odjemalci ................................................................................................................... 4. 2.2.2. Podatkovni strežnik .................................................................................................... 4. 2.2.3. Porazdeljeni strežniki ................................................................................................. 4. 2.3. 2.3.1. Programska oprema kot storitev ................................................................................. 5. 2.3.2. Platforma kot storitev ................................................................................................. 5. 2.3.3. Strojna oprema kot storitev ........................................................................................ 6. 2.4. Mrežno računalništvo ................................................................................................. 6. 2.4.2. Polna virtualizacija ..................................................................................................... 7. 2.4.3. Delna virtualizacija .................................................................................................... 7. Varnost v računalniškem oblaku ........................................................................................ 8. GOOGLE APP ENGINE ........................................................................................................... 9 3.1. Izvajalno okolje .................................................................................................................. 9. 3.2. Strežniki za statično vsebino ............................................................................................ 10. 3.3. Datastore .......................................................................................................................... 10. 3.3.1. Entitete ..................................................................................................................... 11. 3.3.2. Poizvedbe in indeksi................................................................................................. 11. 3.3.3. Transakcije ............................................................................................................... 12. 3.4 4.. Infrastruktura oblaka .......................................................................................................... 6. 2.4.1. 2.5 3.. Storitve v oblaku ................................................................................................................ 4. Servisi ............................................................................................................................... 12. IMPLEMENTACIJA UREJEVALNIKA BESEDIL V GOOGLE APP ENGINE ................. 13. VII.

(8) 5.. 4.1. Načini implementacije spletnega urejevalnika besedil..................................................... 13. 4.2. Uporabljene tehnologije ................................................................................................... 15. 4.2.1. HTML ...................................................................................................................... 15. 4.2.2. CSS ........................................................................................................................... 15. 4.2.3. JavaScript ................................................................................................................. 15. 4.2.4. WebSocket ............................................................................................................... 16. 4.2.5. jQuery ....................................................................................................................... 16. 4.2.6. SVG .......................................................................................................................... 17. 4.3. Implementacija spletnega urejevalnika besedil na odjemalcu.......................................... 17. 4.4. Implementacija spletnega urejevalnika besedil na strežniku............................................ 19. UPORABA SPLETNE APLIKACIJE ..................................................................................... 21 5.1. Urejevalna površina.......................................................................................................... 21. 5.2. Prostoročno risanje ........................................................................................................... 22. 5.3. Sočasno urejanje dokumenta. ........................................................................................... 22. 6.. ZAKLJUČEK ........................................................................................................................... 24. 7.. VIRI.......................................................................................................................................... 25. VIII.

(9) KAZALO SLIK Slika 2.1: Komponente oblaka[4]....................................................................................................... 3 Slika 3.1: Podrobno predstavljene komponente Google App Engine-a[2] ........................................ 9 Slika 4.1: Implementacija spletnega urejevalnika besedil z uporabo HTML elementa iframe ....................................................................................................... Napaka! Zaznamek ni definiran. Slika 4.3: Odstavek generiran z JavaScript spletnim urejevalnikom besedil [13]. .......................... 14 Slika 4.2: Implementacija spletnega urejevalnika besedil s pomočjo atributa contenteditable ........ 14 Slika 4.4: Iframe element z onload dogodkom ................................................................................ 17 Slika 4.5: Del kode objekta channel................................................................................................. 18 Slika 4.6: Funkcija za pošiljanje posodobitev na strežnik................................................................ 18 Slika 4.7: Del kode objekta draw ..................................................................................................... 19 Slika 4.8: Ustvarjanje JSON objekta glede na parametre zahteve ................................................... 20 Slika 5.1: Urejevalna površina ......................................................................................................... 21 Slika 5.2: Prostoročno risanje........................................................................................................... 22 Slika 5.3: Urejanje besedila na prvem uporabniškem računu .......................................................... 22 Slika 5.4: Urejanje besedila na drugem uporabniškem računu ........................................................ 23 Slika 5.6: Risanje na drugem uporabniškem računu ........................................................................ 23 Slika 5.5: Risanje na prvem uporabniškem računu .......................................................................... 23. KAZALO TABEL Tabela 1: Primerjava polne in delne virtualizacije [3] ...................................................................... 8. IX.

(10) Seznam uporabljenih kratic HTML – HyperText Markup Languge XML – Extensible Markup Language CSS – Cascading Style Sheet JVM - Java Virtual Machine JSP - JavaServer Pages API - Application Programming Interface URL - Uniform Resource Locator XMPP - Extensible Messaging and Presence Protocol TCP - Transmission Control Protocol SVG - Scalable Vector Graphics JSON - JavaScript Object Notation WYSIWYG - What You See Is What You Get W3C - World Wide Web Consortium. 1.

(11) 1.. UVOD. Računalništvo v oblaku nudi posameznikom in podjetjem alternativo nakupu klasičnih namiznih aplikacij. Namesto da jih poganjamo na svojem lastnem računalniku, lahko do njih dostopamo preko strežnikov, ki so nameščeni v oblaku. Tako podjetjem ni potrebno skrbeti za njihovo računalništvo infrastrukturo, saj za dostop do aplikacij v oblaku potrebujemo le računalnik z brskalnikom ali katerim drugim vmesnikom. Tudi vsi podatki se shranjujejo na strežnikih, tako da ni skrbi za izgubo podatkov.. Google App Engine (znan tudi pod akronimom GAE ali pa tudi preprosto App Engine) je del plasti »platforma kot storitev« (PaaS) računalniškega oblaka s katero lahko razvijamo in gostujemo spletne aplikacije v Googlovih računalniških centrih. Gostovanje poteka preko več strežnikov in se tako lahko prilagaja številu dodeljenih računalniških virov glede na obisk spletne strani. Razvoj aplikacije lahko poteka v Pythonu, Javi ali programskem jeziku Go. V tem diplomskem delu se bomo osredotočili le na Javo. Gostovanje na strežnikih Google App Engine je zastonj do določenega števila zahtev na strežniku in tudi prostor, ki ga lahko uporabljamo je omejen na 6GB, kar pa je še vedno dovolj za normalno delovanje srednje obiskane spletne aplikacije. V prvem delu diplomske naloge se bomo osredotočili na malo bolj obširen opis računalništva v oblaku, njegovega delovanja in vpliv na splet. V drugem delu se bomo osredotočili na Google App Engine in tehnologije, ki bodo uporabljene pri spletni aplikaciji. Na koncu bomo razvili še spletni urejevalnik besedil na platformi Google App Engine. Podprto bo sodelovanje med več uporabniki in takojšnje shranjevanje rezultatov dela v računalniški oblak.. 2.

(12) 2. RAČUNALNIŠTVO V OBLAKU 2.1 Oblak Izraz oblak se je skozi zgodovino uporabljal kot prispodoba za internet sam. Uporaba izraza je izhajala iz diagramov, ki so prikazovali delovanje omrežja v katerem so bili podatki prikazani v obliki oblaka, ki potuje skozi od začetne točke pa do končne lokacije na drugi strani oblaka. Ta koncept je bil omenjen že leta 1961, ko je prof. John McCarthy predlagal, da bi se lahko procesorska moč računalnikov in tudi specifične aplikacije prodajale preko poslovnega modela plačila po uporabi[2]. Ideja je bila za tiste čase preveč napredna in ni bila izvedljiva, saj je bila računalniška moč takrat preprosto premajhna. Danes je koncept ponovno oživel in je znan kot računalništvu v oblaku. Definicije le-tega se razlikujejo in obstaja veliko zmede katera bi bila prava. Tehnološka podjetja rada uporabljajo opredelitev kot virtualni strežniki, ki so dostopni drugim uporabnikom interneta. Drugi so mnenja, da je vse kar je za požarnim zidom oblak. Za najbolj primerno definicijo se izkaže, da je računalništvo v oblaku dostava računalniških virov od lokacije, ki ni enaka tisti v kateri trenutno uporabljamo računalnik.[2]. 2.2 Komponente oblaka Računalništvo v oblaku je sestavljeno iz odjemalcev, podatkovnih strežnikov in porazdeljenih strežnikov.. Slika 2.1: Komponente oblaka[4] 3.

(13) 2.2.1 Odjemalci Odjemalci so v računalniškem oblaku popolnoma enaka stvar kot so v preprostem lokalnem omrežju. Navadno so to računalniki, ki so prisotni v pisarnah in delovnih prostorih. S temi napravami lahko končni uporabnik upravlja in spreminja informacije v računalniškem oblaku. Poznamo mobilne, lahke in debele odjemalce. Mobilne odjemalce navadno sestavljajo pametni telefoni, dlančniki, danes pa tudi tablični računalniki. Lahki odjemalci so računalniki, ki nimajo notranjega trdega diska in tako lahko prepustijo večino dela strežnikom ter samo prikažejo rezultate izračunov oz. operacij. Debeli odjemalec je navaden računalnik, ki uporablja spletni brskalnik, da lahko dostopa do računalniškega oblaka.. 2.2.2 Podatkovni strežnik Podatkovni strežnik je gruča strežnikov, ki gostujejo aplikacije, na katero so uporabniki prijavljeni[3]. Popularna je postala virtualizacija strežnikov. Tako lahko gostujemo večje število virtualni strežnikov na enem samem fizičnem strežniku.. 2.2.3 Porazdeljeni strežniki Spletni strežniki večinoma niso nameščeni na enaki lokaciji. Navadno so postavljeni razpršeno po svetu. Ampak za uporabnika računalniškega oblaka, strežniki dajejo občutek, da so vsi na enem mestu. To daje ponudniku storitev veliko fleksibilnosti. V primeru da strežniki na eni lokaciji odpovejo, lahko do storitev še vedno dostopamo preko drugih strežnikov. Če hočemo povečati zmogljivost oblaka lahko dodamo strežnike na lokaciji, ki ni nujno enaka tisti, kjer imamo večino strežnikov, saj lahko nove preprosto priključimo v računalniški oblak in tako povečamo zmogljivost le-tega.. 2.3 Storitve v oblaku Izraz storitev v računalniškem oblaku označuje koncept uporabe manjših, ponovno uporabnih komponent preko omrežja ponudnika storitev[3]. Prednosti takšnega sistema so: velika razširljivost, veliko število sočasnih uporabnikov, dostop do storitve iz različnih naprav. Storitve v oblaku ločimo na programsko opremo kot storitev, platformo kot storitev, strojno opremo kot storitev.. 4.

(14) 2.3.1 Programska oprema kot storitev Programska oprema kot storitev (Software as a Service ali SaaS) je model poslovanja, kjer aplikacija gostuje kot storitev, ki je dostopna uporabnikom preko interneta[3]. Ker programska oprema gostuje na ponudnikovih strežnikih, uporabnik nima težav z vzdrževanjem ali posodabljanjem. Na drugi strani pa uporabnik nima vpliva na delovanje storitve v primeru, da se ponudnik odloči le-to spremeniti. Cena v primerjavi z klasično namizno programsko opremo je lahko manjša, saj storitev plačujemo glede na to koliko virov od ponudnika uporabljamo. To je odličen poslovni model za manjša podjetja, vendar pa lahko za večja mednarodna podjetja to postane težava zaradi velike porabe virov in posledično temu primerne cene storitve. Za ponudnike je ta tip storitve privlačen, saj ponuja veliko zaščito pred krajo njihove intelektualne lastnine in tudi konstantni pritok dohodkov. Aplikacije, ki delujejo kot storitev so bile razvite posebej za uporabo v brskalniku in imajo zato že privzeto dobro podporo za delovanje na internetu.. Nekatere prednosti modela aplikacija kot storitev: . Večina uporabnikov pozna svetovni splet in jim zato učenje delovanja aplikacije ne predstavlja večjih težav.. . Podjetja ne potrebujejo osebja za administracijo in vzdrževanje, saj je večina strojne opreme pri ponudniku storitev.. . Aplikacije je možno hitro in poceni prilagoditi željam uporabnika.. . Ciljni trg je zelo velik, saj lahko računalniški oblak deluje na kateri koli lokaciji na Zemlji, ki ima dostop do interneta.. . Ponudnik storitev zagotavlja 99,9% zanesljivost delovanja, kar je v primerjavi z drugimi rešitvami precej dobro.. . Z uporabo SSL tehnologije je dostop do aplikacij varen in obenem preprost.. 2.3.2 Platforma kot storitev Platforma kot storitev (Platform as a Service ali PaaS) je še en model s katerim lahko dostavimo aplikacijo uporabnikom. Ta storitev ponuja vse vire, ki so potrebni za izdelavo aplikacij in spletnih servisov neposredno iz interneta. Kot del storitev je ponujena zasnova aplikacij, razvoj, testiranje in gostovanje. Podatkovna baza, varnost, spletni servisi in velika razširljivost je del paketa, ki ga dobimo, če uporabljamo platformo kot storitev.. 5.

(15) Težava se lahko pojavijo pri kompatibilnosti in prenosljivosti aplikacije med ponudniki storitev. Navadno je ta skoraj nemogoča oz. je lahko zelo draga. Nevšečnosti lahko nastanejo tudi, kadar ponudnik propade, saj s tem lahko zgubimo podatke in celotno aplikacijo.. 2.3.3 Strojna oprema kot storitev Strojna oprema kot storitev (Hardware as a Service ali HaaS) je naslednja oblika storitve, ki jo omogoča računalništvo v oblaku. Prejšnje storitve so ponujale aplikacije za uporabnike, ta pa nudi samo strojno opremo katero lahko uporabnik uporabi za kateri koli tip spletnih aplikacij ali spletnih servisov. Računalniški viri, ki jih lahko najamemo so pomnilnik, diskovni prostor, procesorski cikli, omrežna oprema in prostor na strežniku. Vsi ti viri so razširljivi glede na potrebe uporabnika.. 2.4 Infrastruktura oblaka Obstaja več načinov kako razporediti infrastrukturo računalniškega oblaka. Infrastruktura bo odvisna od tipa aplikacije in kako se je ponudnik odločil zgraditi oblak. Potrebe uporabnika so lahko tako visoke, da presegajo njegov proračun ali pa bi bilo težko vzdrževati veliko število strežnikov. Mogoče potrebuje visoko zmogljivost samo kadar poganja procesorsko zahtevna opravila in za to se stroškovno ne splača postavljati gruče strežnikov. Računalništvo v oblaku ponuja rešitev za oba problema.. 2.4.1 Mrežno računalništvo Mrežno računalništvo uporabi računalniške vire preko omrežja, da procesirajo en sam problem v časovni enoti[3]. Večinoma se tak način procesiranja podatkov uporablja za reševanje znanstvenih problemov. Znan primer. je Search for Extraterrestial Intelligence (SETI)@Home, kjer se je. uporabljala procesorska moč osebnih računalnikov ljudi, ki je iskala znake življenja v posnetkih radijskih signalov iz vesolja. Prednosti mrežnega računalništva so: . Stroškovno učinkovito uporaba računalniških virov.. . Predstavlja način s katerim lahko rešimo probleme, ki potrebujejo veliko računalniško moč.. . Viri računalnikov se lahko medsebojno uporabljajo, brez da bi vsak računalnik v mreži nadziral drugega.. Mnogi zamenjujejo mrežno računalništvo z računalništvom v oblaku, čeprav je njuno delovanje v osnovi popolnoma drugačno. V mrežnem računalništvu je velik problem razdeljen med mnogo računalnikov, kar omogoča paralelno uporabo njihovih virov za procesiranje problema. V 6.

(16) računalništvu v oblaku pa se lahko več manjših aplikacij izvaja ob istem času, kar je popolnoma drug koncept delovanja kot v mrežnem računalništvu.. 2.4.2 Polna virtualizacija Izraz polna virtualizacija označuje tehniko, kjer se celotna programska oprema računalnika poganja na drugem računalniku. Rezultat tega je sistem v katerem vsa programska oprema deluje znotraj virtualnega okolja[3]. V takšnem okolju lahko poganjamo več operacijskih sistemov z različnimi aplikacijami. Z virtualizacijo v oblaku lahko uporabnikom le-tega nudimo storitve, ki prej niso bile mogoče zaradi strojnih ali programskih omejitev. Prednosti polne virtualizacije so: . Več uporabnikov lahko dostopa do računalniškega sistema.. . Uporabniki so izolirani drug od drugega in tudi od glavnega sistema.. . Emulacija strojne opreme na drugem računalniku.. 2.4.3 Delna virtualizacija Delna virtualizacija (ang. Paravirtualization) omogoča sočasno delovanje več operacijskih sistemov na eni napravi z boljšo izrabo sistemskih virov. Medtem ko se v polni virtualizaciji emulira celotni sistem, se v delni virtualizaciji uporablja poseben modul za upravljanje, ki upravlja operacijski sistem, modificiran za delovanje na navideznem stroju. Delna virtualizacija je navadno hitrejša od polne virtualizacije, ampak hitrost se plačuje z manjšo varnostjo in prilagodljivostjo[3].. Prilagodljivost se izgubi, ker nekateri operacijski sistemi niso bili zasnovani za delovanje v navideznem stroju. Varnost je manjša, ker imajo gostujoči operacijski sistemi več kontrole nad strojno opremo in lahko tako vplivajo na delovanje celotnega sistema. Delna virtualizacija je najprimernejša za naslednje primere: . V primeru večje napake ali popolne odpovedi sistemov, lahko gostujoče operacijske sisteme prestavijo na drugo strojno opremo.. . Prehod na novi sistem je lažji in hitrejši, saj gostujoči operacijski sistemi niso vezani na strojno opremo.. . Ker so selitve lažje, je tudi bolj preprosto upravljati zmogljivost sistema. Tako lahko dodajamo procesorsko moč, pomnilnik ali dodatne trde diske, saj vemo da to ne bo porušilo našega sistema.. 7.

(17) Tabela 1: Primerjava polne in delne virtualizacije [3] Tip virtualiziacije. Število gostujočih. Izgube virtualizacije. Potrebe sistemskega procesiranja. Skupno. sistemov Polna virtualizacija. 5. 10% (50% skupno). 10% (50% skupno). 100%. Delna virtualizacija. 8. 2% (16% skupno). 10% (50% skupno). 96%. 2.5 Varnost v računalniškem oblaku Varnost v spletnih aplikacijah, ki upravljajo s podatki je vedno na prvem mestu. Aplikacije v računalniškem oblaku so z varnostnega vidika še toliko bolj zaskrbljujoče, saj smo odvisni od ponudnika, da poskrbi za varnost naših podatkov. Ena izmed največjih prednosti računalništva v oblaku je, da so vsi podatki na enem mestu. Veliko podjetij ima težave s varovanjem podatkov, saj so ti lahko shranjeni na prenosnih ali osebnih računalnikih uslužbencev, kjer ne moremo preverjati in beležiti dostopa do podatkov. Ko so vse informacije na enem mestu, takšnih težav ni več. Najbolj varen način dostopanja do podatkov v računalniškem oblaku je preko lahkega odjemalca, saj ta ne prenaša datotek, ampak jih le prikazuje, kar zmanjša možnost uhajanja podatkov.. Dodatna prednost lahko postane, da podjetjem samim ni potrebno skrbeti za varnost podatkov. Večina podjetij nima dovolj denarja, da bi si priskrbela kakovostno varovanje podatkov. Večinoma lahko ponudnik poskrbi za boljšo zaščito kot podjetja sama, saj imajo več izkušenj na področju varovanja podatkov svojih strank. Več kot jih imajo, več denarja lahko porabijo za varnost in si s tem lahko zelo izboljšajo zaupanje strank do njihovih storitev. Dostop do podatkov, njihovo spreminjanje ali brisanje moramo beležiti v dnevnike. Računalništvo v oblaku je za to zelo primerno, saj ima neskončno količino prostora, kjer lahko to shranimo.. 8.

(18) 3. GOOGLE APP ENGINE Google App Engine je servis za gostovanje spletnih aplikacij. Spletna aplikacija je tukaj mišljena kot aplikacija ali servis do katerega lahko dostopamo preko spleta s pomočjo spletnega brskalnika. Primeri takšnih aplikacij so socialne mreže, spletne trgovine, spletne igre, mobilne aplikacije in še mnogo drugih. App Engine še vedno lahko gostuje statične strani, vendar je primarno namenjen bogatim dinamičnih aplikacijam. Zasnovan je tako, da omogoča veliko število sočasnih uporabnikov. Spletni aplikacijam, ki jih lahko uporablja tako veliko število ljudi, pravimo razširljive spletne aplikacije. Proces uravnoteženja prihajajočih zahtev na več strežnikov Google App Engine opravi samodejno. Več uporabnikov kot uporablja spletno aplikacijo, več virov ji App Engine dodeli. Za razliko od klasičnih ponudnikov gostovanja pri Google App Engine-u plačamo samo vire, ki jih potrebujemo. Viri, ki jih moramo plačati so uporaba procesorskih ciklov, shramba podatkov, pasovna širina in še nekaj drugih specifičnih virov za ta servis. Do neke meje je gostovanje zastonj, kar pa lahko zadostuje za spletno aplikacijo srednje velikosti. Google App Engine je sestavljen iz izvajalnega okolja, posebne podatkovne baze imenovane Datastore in raznih servisov. Podrobno predstavitev komponent App Engine-a vidimo na sliki 3.1.. Slika 3.1: Podrobno predstavljene komponente Google App Engine-a[2]. 3.1 Izvajalno okolje Aplikacija App Engine-a delujejo po principu zahteva-odgovor. Vsaka zahteva se začne v brskalniku, ta pa jo pošlje strežniku v obdelavo. App Engine izbere najbolj primeren strežnik glede na hitrost odgovora. V naslednjem koraku aplikacija dobi zahtevo, jo procesira in vrne rezultate nazaj do odjemalca.. 9.

(19) Izvajalno okolje se začne, ko se pojavi zahteva in konča, ko se odgovor pošlje nazaj k odjemalcu. Ker se stanje aplikacije ne shranjuje, lahko App Engine porazdeli zahteve na več strežnikov, saj ni pomembno kje se zahteva procesira. Tako vsaka zahteva domuje v svojem t.i. »peskovniku«, kar omogoča gostovanje več spletnih aplikacij na enem strežniku brez konfliktov med njimi.. Google App Engine ponuja izvajalna okolja za jezike: Python, Java in Go!. Okolje Java poganja aplikacije z Java 6 Virtual Machine (JVM). Aplikacija je lahko razvita z Java programskim jezikom ali z jezikom, ki se lahko prevede oz. poganja v okolju JVM. Za dostop do okolja aplikacija uporablja spletne standarde kot so Java Servlets in Java Persistance API. Okolje Python poganja aplikacije napisane v programskem jeziku Python 2.5 in uporablja posebno verzijo CPython interpreterja. Aplikacija lahko uporablja Python-ove standardne knjižnice, knjižnice za obdelavo podatkov in dostop do servisov. Podpora za programski jezik Go! je v preizkusni dobi, vendar obstajajo ustrezni primeri in vodiči. Izvajalno okolje Go uporablja Go version 1 v katerega je vključen Go prevajalnik in standardne knjižnice.. 3.2 Strežniki za statično vsebino Večina spletnih strani ima datoteke, ki jih prenašajo k uporabniku in se ne spreminjajo oz. so statične. Primeri takšnih datotek so CSS datoteke, JavaScript koda , slike, statične HTML strani. Ker se za procesiranje in dostavo takšnih datotek ne uporabljajo spletne aplikacije, bi jih bilo neučinkovito dostavljati iz strežnikov namenjenim procesiranju aplikacijske kode. App Engine tako zagotavlja posebne strežnike, namenjene samo za gostovanje statičnih datotek. Te datoteke se po prenosu shranijo v predpomnilnik brskalnika in jih tako ni potrebno vedno ponovno zahtevati od strežnika. 3.3 Datastore Večina spletnih aplikacij pridobljene informacije iz zahtev shranjuje v podatkovno bazo z namenom ponovne uporabe v prihodnosti. Struktura razporeditve strežnikov spletne aplikacije je navadno strežnik s podatkovno bazo in nato eden ali več strežnikov, ki se povezujejo s podatkovno bazo. Prednost takšnega sistema je enostavnost vzdrževanja usklajenosti podatkov za vse uporabnike, ki se povezujejo do njih iz različnih strežnikov. Težava nastane pri razširljivosti spletne aplikacije, ko strežnik doseže maksimalno število sočasnih povezav.. 10.

(20) Poznamo več vrst podatkovnih baz. Že nekaj časa je najbolj popularna relacijska podatkovna baza, ki se uporabniku kaže kot množica tabel. Vsaka tabela ima čelno vrstico, ki jo imenujemo relacijska shema in podatkovne vrstice, ki jih imenujemo relacije[1]. S pomočjo indeksov lahko izvajamo učinkovite poizvedbe s pomočjo jezika SQL. Druge oblike podatkovnih shramb so hierarhične, mrežne in objektne podatkovne baze. Podatkovna baza App Engine-a je še najbolj podobna objektni podatkovni bazi. V njej ne moremo ustvariti poizvedb združevanja (join) in zato morajo vsi, ki prihajajo iz sveta relacijskih podatkovnih baz spremeniti svoj način razmišljanja, kako dostopajo do podatkov v spletni aplikaciji.. 3.3.1 Entitete App Engine aplikacija shranjuje svoje podatke v eno ali več entitet. Entiteta ima lahko eno ali več lastnosti, ki imajo ime in vrednost podatkovnega tipa (Integer, String, ipd.). Vsaka entiteta ima ključ, ki ga enolično določuje. Ključ je sestavljen iz tipa entitete in identifikatorja, ki je lahko niz (tip String) ali število (tip Integer). Če ima entiteta predhodnika, je v ključ dodan tudi njegov identifikator.. Struktura podatkovne baze je na prvi pogled podobna relacijski. Entitete so kot vrstice in lastnosti kot stolpci v tabeli. Po natančnejšem pregledu vidimo nekaj razlik. Entiteta istega tipa nima nujno enakih lastnosti. Entiteta ima lahko enako ime lastnosti kot jo ima druga entiteta, vendar je podatkovni tip vrednosti lahko različen. Tako vidimo, da entitete ne sledijo nobeni shemi. Vsaka lastnost ima lahko več različnih vrednosti, kar je lahko uporabno v določenih primerih, a obenem predstavlja težave, saj takšnega načina shranjevanja podatkov nismo vajeni iz relacijskih podatkovnih baz.. 3.3.2 Poizvedbe in indeksi Poizvedba po App Engine podatkovni bazi lahko vrne nič ali več enititet istega tipa. Poizvedbi lahko dodamo pogoje s pomočjo filtrov, ki primerjajo vrednost lastnosti entitete in vrnejo rezultate razvrščene po vrednostih. V relacijskih podatkovnih bazah se poizvedbe izvajajo v realnem času na podatkovnih tabelah. Na tabelah se lahko ustvarijo tudi indeksi, kar pospeši izvajanje nekaterih poizvedb.. Google App Engine ima popolnoma drug sistem izvajanja poizvedb, saj ima vsaka svoj indeks shranjen v podatkovni bazi. Ko se poizvedba izvede, aplikacija najde njen indeks in poišče prvo. 11.

(21) vrstico, ki ustreza filtru. S tem nadaljuje tako dolgo dokler ne najde vseh vrstic iz indeksa, ki ustrezajo parametrom podanim v filtru. Da takšen sistem deluje, mora App Engine vnaprej vedeti katera poizvedba se bo izvedla. Aplikaciji ni potrebno vnaprej vedeti rezultata poizvedbe, vendar pa mora vedeti tip entitete, katere lastnosti bodo filtrirane, operatorje filtrov in smer sortiranja povpraševanja. Za shranjevanje podatkov poizvedbe skrbi konfiguracijska datoteka, ki se generirajo ob testiranju aplikacije. Ustvarjanje novih in posodabljanje obstoječih entitet zahteva tudi posodabljanje njihovih indeksov. Tako so poizvedbe izredno hitre, seveda na strošek mnogih posodabljanj entitet.. 3.3.3 Transakcije Uporabniki spletnih aplikacij shranjujejo in berejo mnogo podatkov naenkrat, zato je njihova konsistentnost zelo pomembna. Uporabnik nikoli ne sme videti podatkov, ki so pokvarjeni ali na pol zapisani.. Tukaj pomagajo transakcije, ki za vsako posodobitev entitete zagotavlja, da se zgodi v celoti ali pa se sploh ne zgodi. Ko aplikacija kliče progamski vmesnik podatkovne baze, da posodobi enititeto, ta ne vrne rezultata dokler se transakcija ne zaključi uspešno ali neuspešno. Če uporabnik poskuša posodobiti entiteto, ki je še v drugi transakciji, posodobitev vrne izjemo in se prekine. Branje podatkov nikoli ne vrne izjeme zaradi transakcij, ki so še v teku, ampak vrne rezultate zadnjega stabilnega stanja entitete.. 3.4 Servisi Google App Engine vsebuje več servisov, ki so uporabni za spletne aplikacije. Eden izmed njih je predpomnilnik (ang. memcache), ki je servis za shranjevanje podatkov tipa ključ-vrednost za kratek čas. Njegova prednost je izjemna hitrost v primerjavi s podatkovno bazo. Podatki se shranjujejo v pomnilniku namesto na disku, zaradi česar lahko hitro vnaša in vrača podatke. Pomanjklivost predpomnilnika je, da podatki v njem niso shranjeni trajno in se lahko ob napaki na strežniku ali izpadu električne energije izbrišejo iz njega. Uporablja se predvsem za shranjevanje podatkov pridobljenih iz pogosto uporabljenih poizvedb, kar zmanjša število povezav do podatkovne baze. Če želimo naložiti vire iz drugih spletnih strani lahko uporabimo URL Fetch servis. Ta ustvari HTTP zahtevo do drugega strežnika in vrne rezultat v obliki HTTP odgovora. Ker je lahko čas za končanje zahteve odvisen od hitrosti zunanjega strežnika, App Engine izvajanje zahteve postavi v nit, ki deluje v ozadju. Aplikacija postavi časovno omejitev, kako dolgo lahka traja zahteva preden vrne izjemo uporabniku. 12.

(22) App Engine lahko tudi pošilja elektronsko pošto s pomočjo Mail servisa. Veliko spletnih aplikacij uporablja elektronsko pošto za obveščanje uporabnikov, potrjevanje uporabnikovih dejanj in potrjevanje registracije novega uporabnika. Google App Engine podpira tudi pošiljanje kratkih sporočil iz servisa za klepet preko XMPP protokola.. 4. IMPLEMENTACIJA. UREJEVALNIKA. BESEDIL. V. GOOGLE APP ENGINE Bogati urejevalnik besedila na spletu (ang. Online rich-text editor) je vmesnik za urejanje besedila na spletu s pomočjo brskalnika. Deluje po principu WYSIWYG (kar vidiš, boš tudi dobil) in tako poskuša poenostaviti uporabniku vnašanje besedila s pomočjo takojšnjega prikazovanja rezultatov njegovega dela.. Zgodnji brskalniki so lahko prikazovali bogato urejen tekst, ampak urejanje je bilo omejeno na preprosta besedilna polja, ki so lahko prikazovala le en tip pisave naenkrat. To se je spremenilo z posebnim »designMode« načinom na iframe HTML elementu, ki ga je uvedel Internet Explorer. Uporabniku je omogočal urejanje delov besedila s pomočjo kurzorja, ki ga je bil vajen iz namiznih urejevalnikov besedil. Sedaj večina brskalnikov podpira ta način urejanja teksta. Ta standard ni nikoli našel poti v W3C specifikacije HTML dokumentov, čeprav velika večina spletnih velikanov uporablja »designMode« tip urejevalnikov kot njihov edini način za bogato urejanja besedila.. 4.1 Načini implementacije spletnega urejevalnika besedil Spletni urejevalnik besedil se da implementirati na tri načine. Prvi način uporablja iframe element za urejevalno površino, katerega primer lahko vidimo na sliki 4.1. Urejanje se aktivira z ukazom designMode, ki omogoči uporabo dodatnih funkcij s katerimi lahko spreminjamo pisavo, vstavljamo HTML elemente, slike in še mnogo drugih. Uporabnik lahko te ukaze proži s klikom na gumbe, ki jih pripravimo na spletni strani, Edina pomankljivost urejanja v iframe elementu je, da je ločen od spletne strani in tako za njega ne veljajo slogovna pravila definirana v CSS datoteki HTML dokumenta. Zato moramo za stil skrbeti ročno ali pa s pomočjo prej omenjenih ukazov.. 13.

(23) 4.1: Implementacija spletnega urejevalnika besedil z uporabo HTML elementa iframe Drugi način uporablja nov atribut contenteditable, ki ga dodamo HTML elementu na spletni strani, kot vidimo na sliki 4.2. S tem lahko uporabnik ureja HTML element na enak način kot iframe element v prejšnjem primeru. Uporaben je predvsem za sprotno urejanje besedila, saj za njega veljajo enaka pravila kot za HTML dokument.. Slika 4.2: Implementacija spletnega urejevalnika besedil s pomočjo atributa contenteditable Tretji način, ki je tudi zahtevnejši, je implementacija s pomočjo JavaScript-a. Vsako akcijo, ki se pričakuje pri urejevalniku besedil moramo ročno ustvariti. Primer težavnosti tega načina lahko ponazorimo s preprostim tipkanjem črk in prikazovanje le-teh na urejevalni površini. Ker sedaj za to več ne skrbi brskalnik je potrebno to funkcionalnost implementirati s pomočjo JavaScript poslušalci dogodkov (event listeners). Na sliki 4.3 lahko vidimo kompleksnost generirane HTML kode Javascript urejevalnika besedil.. Slika 4.3: Odstavek generiran z JavaScript spletnim urejevalnikom besedil [13].. 14.

(24) 4.2 Uporabljene tehnologije 4.2.1 HTML Hyper Text Markup Language (jezik za označevanje nadbesedila, kratica HTML) je označevalni jezik za izdelavo spletnih strani. Predstavlja osnovo spletnega dokumenta. S pomočjo HTML zraven prikaza dokumenta v brskalniku določimo tudi strukturo in semantični pomen delov dokumenta[5]. Izdelamo ga lahko v vsakem urejevalniku besedil (kot npr. beležnici idr.), saj je zapisan v obliki HTML elementov, ki so sestavljeni iz značk, zapisanih znotraj znakov manjše in večje (npr. kot <p>). HTML značke so običajno zapisane v parih, kot npr. <p> in </p>. Prva značka se imenuje začetna značka in druga značka končna značka. Znotraj para značk lahko oblikovalec spletne strani vpiše poljubno besedilo in tudi druge značke (gnezdenje značk)[5].. 4.2.2 CSS Cascading Style Sheets (kaskadne stilske podloge) poznane pod kratico CSS so podloge, predstavljene v obliki preprostega slogovnega jezika, ki skrbi za prikaz spletnih strani. Z njimi definiramo stil HTML oz. XHTML elementov v smislu pravil, kako se naj ti prikažejo na strani. Določamo lahko barve, velikosti, odmike, poravnave, obrobe, pozicije in vrsto drugih atributov, prav tako pa lahko nadziramo aktivnosti, ki jih uporabnik nad elementi strani izvaja (npr. prekritje povezave z miško). Podloge so bile razvite z namenom konsistentnega načina podajanja informacij o stilu spletnim dokumentom[6]. Bistvo uporabe CSS je poleg definiranja pravil, predvsem ločitev strukture strani, ki jo podaja označevalni jezik skupaj z vsebino, od njene predstavitve. S tem omogočimo lažje urejanje in dodajanje stilov ter poskrbimo za večjo preglednost dokumentov temelječih na HTML sintaksi. Prav tako zmanjšamo ponavljanja kode, saj omogočimo množici strani uporabo istih podlog, kar lahko bistveno zmanjša njihovo velikost[6].. 4.2.3 JavaScript JavaScript je objektni skriptni programski jezik, ki ga je razvil Netscape, da bi spletnim programerjem pomagal pri ustvarjanju interaktivnih spletnih strani. Jezik je bil razvit neodvisno od programskega jezika Java, vendar si z njo deli številne lastnosti in strukture. JavaScript lahko sodeluje s HTML-kodo in s tem poživi stran z dinamičnim izvajanjem.. 15.

(25) JavaScript podpirajo velika programska podjetja in kot odprt jezik ga lahko uporablja vsakdo, ne da bi pri tem potreboval licenco. Podpirajo ga vsi novejši spletni brskalniki[7].. Sintaksa jezika JavaScript ohlapno sledi programskemu jeziku C. Prav tako kot C, JavaScript nima vgrajenih vhodno izhodnih funkcij, zato je njihova izvedba odvisna od gostitelja. JavaScript se veliko uporablja za ustvarjanje dinamičnih spletnih strani. Program se vgradi ali pa vključi v HTML, da opravlja naloge, ki niso mogoče samo s statično stranjo (odpiranje novih oken, preverjanje pravilnost vnesenih podatkov, enostavni izračuni ipd). Na žalost različni spletni brskalniki izpostavijo različne objekte za uporabo. Za podporo vseh brskalnikov je zato treba napisati več različic funkcij[7].. 4.2.4 WebSocket WebSocket je spletna tehnologija, ki zagotavlja dvosmerni komunikacijski kanal, preko ene povezave TCP. WebSocket je zasnovan tako, da se izvaja v spletnih brskalnikih in spletnih strežnikih, vendar ga lahko uporabljajo tudi aplikacije na strežniku ali odjemalcu. WebSocket protokol je neodvisen TCP-protokol in njegova edina povezava s HTTP je, da njegovo rokovanje razlaga strežnik kot nadgradnjo zahteve na WebSocket[6]. Protokol WebSocket omogoča večjo interakcijo med brskalnikom in spletno aplikacijo in tako olajša pošiljanje aktualnih podatkov ter ustvarjanje realno-časovnih iger. To je mogoče, ker WebSocket-i ponujajo standardiziran način pošiljanje podatkov od strežnika do brskalnika brez da bi odjemalec to specifično zahteval, kar omogoča pošiljanje sporočil v obe smeri kjer povezava ostane odprta. Do sedaj so takšen učinek poskušali posnemati s pomočjo tehnologij, kot so npr. Comet, toda WebSocket se je izkazal za bolj učinkovito tehnologijo.. 4.2.5 jQuery jQuery je JavaScript ogrodje ali knjižnica, ki vsebuje vnaprej napisane JavaScript funkcije. Filozofija ogrodja jQuery se glasi "Write less, do more" (z manj pisanja naredi več), kar pomeni da je programerjem z uporabo tega ogrodja potrebno napisati bistveno manj, da dosežejo boljše rezultate. Le z nekaj kratkimi klici funkcij lahko s tem ogrodjem na stran dodamo veliko animacij in efektov ter vizualnih učinkov, za katere bi brez ogrodja porabili veliko več časa[11]. jQuery aplikacije lahko razvijamo na vseh operacijskih sistemih. Potrebujemo le spletni strežnik, na katerem bo spletna stran tekla, za pisanje kode pa lahko uporabimo preproste urejevalnike besedil ali posebne programe, ki so namenjeni pisanju kode spletnih strani in nam pri tem tudi 16.

(26) pomagajo. Preden se programer loti uporabe jQuery ogrodja, je dobro da ima vsaj osnovno znanje HTML-ja, CSS-a in JavaScript-a, saj brez teh treh tehnologij jQuery ne more delovati[11].. 4.2.6 SVG Scalable Vector Graphics (kratica SVG, umerljiva vektorska grafika) je označevalni jezik za opis dvorazsežne statične in risane vektorske grafike v XML. SVG specifikacija je odprt standard in je bil v razvoju od World Wide Web Consortium-a (W3C) že od leta 1999 [9]. SVG slike in njihovo obnašanje se definira v XML tekstovnih datotekah. Lahko jih ustvarimo s poljubnim tekstovnim urejevalnikom, vendar jih je bolj priročno ustvarjati z risarskimi programi. Vsi moderni spletni brskalnik (Mozzila Firefox , Internet Explorer 9, Google Chrome, Opera in Safari) do neke mere podpirajo SVG in ga lahko prikažejo brez nameščanja dodatkov[9].. 4.3 Implementacija spletnega urejevalnika besedil na odjemalcu Na odjemalcu je bil uporabljen iframe način implementacije urejevalnika besedila. Uporabljen je bil zato, ker s svojo preprostostjo najbolj ustreza časovnemu okvirju izdelave spletne aplikacije, ki je bil zadan za to diplomsko nalogo. Spodaj na sliki 4.4 vidimo iframe element v HTML dokumentu.. Slika 4.4: Iframe element z onload dogodkom V JavaScript dogodku onload, ki ga vidimo na sliki 4.1, kličemo funkcijo, ki inicializira vse ključne spremenljivke in nastavi vse poslušalce dogodkov na prave elemente. Kot argumenti funkcije najdemo JavaScript objekt, ki ima tri ključe z vrednostmi. Ključ token je identifikacijska številka odjemalca za WebSocket kanal, ključ html je besedilo, ki se naloži v urejevalno površino in ključ rev je zadnja revizija besedila.. Urejanje stila besedila poteka preko gumbov v orodni vrstici urejevalnika besedil. Uporabnik z levim miškinim gumbom izbere spremembo besedila kar sproži klic funkcije urediBesedilo, ki kliče pravo execCommand metodo. Ta v iframe elementu spremeni stil trenutne izbire besedila. Za povezovanje s protokolom WebSocket uporabljamo JavaScript knjižnico Google App Engine-a. V objektu editor ustvarimo nov objekt channel, del katerega lahko vidimo na sliki 4.4, ki bo skrbel za komunikacijo s strežnikom. Funkcija init objekta channel inicializira njegove osnovne lastnosti in nastavi poslušalce dogodkov na objekt WebSocket, ki se bodo aktivirali ob spremembi stanja le17.

(27) tega. Najbolj pomemben dogodek je onmessage, ki se aktivira ob prejemu sporočila od strežnika. Poslušalec tega dogodka omogoči realno-časovno komunikacijo odjemalca s strežnikom.. Slika 4.5: Del kode objekta channel V funkciji init, ki jo lahko vidimo na zgornjem delu slike 4.5, je definiran poslušalec onmessage dogodka, ki dobi kot argument objekt v katerem so podatki o dogodku. Najbolj pomembna lastnost tega objekta je data, ki vsebuje sporočilo strežnika. Ta je v formatu JSON, ki ga pretvorimo v JavaScript objekt s pomočjo knjižnice jQuery in njene funkcije parseJSON. Glede na vrednosti tega objekta lahko potem sprožimo različne funkcionalnosti urejevalnika besedil. Vse kar uporabnik spremeni na urejevalni površini se pošlje na strežnik, da imajo vsi ki pregledujejo dokument vedno najnovejšo verzijo besedila. To storimo s pomočjo funkcije sendMessage, ki jo vidimo na sliki 4.6. Argument message je sporočilo tipa JSON, ki se pošlje na strežnik.. Slika 4.6: Funkcija za pošiljanje posodobitev na strežnik. 18.

(28) Urejevalnik besedila je razširjen z možnostjo prostoročnega risanja s pomočjo SVG tehnologije. Za to je bil ustvarjen poseben JavaScript objekt draw, ki skrbi za nemoteno delovanje risarskega dodatka urejevalniku.. Slika 4.7: Del kode objekta draw V inicializacijski funkciji objekta draw, ki ga vidimo na sliki 4.7, se ustvari element svg, ki je v našem primeru risalna površina. Objekt se ne more ustvariti s knjižnico jQuery, saj ta ne podpira ustvarjanje XML elementov. Na koncu se še pošlje sporočilo na strežnik, da je uporabnik ustvaril novo risalno površino, katera se nato prikaže vsem, ki trenutno pregledujejo dokument. Uporabnik s klikom na risalno površino ustvari nov element polyline, ki je tipa svg. Če z miško povleče po površini medtem, ko je levi gumb še vedno pritisnjen, se ustvarijo točke na mestu, kjer je položaj miške. Ko uporabnik spusti levo miškino tipko, se celoten polyline element pošlje drugim uporabnikom, ki pregledujejo isti dokument.. 4.4 Implementacija spletnega urejevalnika besedil na strežniku Za implementacijo spletnega urejevalnika na strežniku se je uporabilo ogrodje Google App Engine. S pomočjo programskega jezika Java, je bil razvoj strežniškega dela aplikacije preprost. Za procesiranje zahtev odjemalcev so bili uporabljeni Java servleti. Servlet je poseben Java razred, ki razširi zmogljivosti strežnika, da lahko dostopa do zahtev in odgovorov. Spletno stran prikazujemo s pomočjo JavaServer Pages ali na kratko JSP. S pomočjo identifikacijskega niza v parametru spletnega naslova, lahko naložimo dokument s vsemi lastnostmi. Zadnjo revizijo dokumenta prikažemo in shranimo na odjemalcu.. 19.

(29) Za ustvarjanje novega dokumenta se uporablja razred newServlet. Preprosta zahteva na razred ustvari nov dokument in nas preusmeri na njegov spletni naslov. Besedilo, ki ga uporabnik vpisuje v urejevalno površino se pošilja na updateServlet. Kot POST vrednosti se pošljejo identifikacijski niz in JSON objekt, ki vsebuje položaj spremembe besedila, tip spremembe in niz z znaki, ki so bili spremenjeni. JSON nato pretvorimo v Java objekt s pomočjo knjižnice JSON.simple [3]. Objektu preverimo katere ključe vsebuje in vrednosti v njih. Glede na vrednost množica if stavkov poskrbi, da se izvede pravilni del programske kode, kar lahko vidimo na sliki 4.9. Na koncu se še sprememba besedila pošlje vsem na WebSocket povezanim odjemalcem, ki trenutno pregledujejo dokument.. Slika 4.8: Ustvarjanje JSON objekta glede na parametre zahteve. 20.

(30) 5. UPORABA SPLETNE APLIKACIJE V tem poglavju bomo prikazali izgled in uporabo razvite spletne aplikacije. Podanih je tudi nekaj različnih scenarijev uporabe.. 5.1 Urejevalna površina. Slika 5.1: Urejevalna površina Na urejevalni površini lahko uporabnik vnaša besedilo na način, ki ga je vajen iz namiznih urejevalnih aplikacij. Uporabnik lahko spreminja lastnosti besedila s pomočjo gradnikov v orodni vrstici spletnega urejevalnika. Lastnosti pisave, ki jih lahko spremeni so krepko, poševno, podčrtano, velikost in tip.. 21.

(31) 5.2 Prostoročno risanje. Slika 5.2: Prostoročno risanje Uporabnik lahko aktivira prostoročno risanje s klikom na gumb v obliki črke S. Ustvari se risalna površina, na katero lahko rišemo s pomočjo miške. Modra obroba okoli risalne površine označuje, da je le-ta aktivna in pripravljena na uporabnikove akcije. Z levim miškinim klikom začnemo risati, z vlečenjem miške preko risalne površine pa ustvarjamo črto.. 5.3 Sočasno urejanje dokumenta. Dokument urejevalnika besedila lahko sočasno ureja več uporabnikov. Vsaka sprememba besedila se pošlje vsem, ki trenutno urejajo dokument. Tako imajo vsi uporabniki vedno najnovejšo verzijo dokumenta. Na slikah 5.3 in 5.4 lahko vidimo sočasno urejanje besedila.. Slika 5.3: Urejanje besedila na prvem uporabniškem računu. 22.

(32) Slika 5.4: Urejanje besedila na drugem uporabniškem računu Ena izmed zanimivih funkcionalnosti urejevalnika je sočasno risanje. Tako lahko vsi uporabniki, ki trenutno urejajo dokument skupaj sodelujejo v risanju in tako ustvarijo zanimive slike. Na slikah 5.5 in 5.6 vidimo sočasno risanje na urejevalni površini.. Slika 5.5: Risanje na drugem uporabniškem računu. Slika 5.6: Risanje na prvem uporabniškem računu 23.

(33) 6. ZAKLJUČEK V tej diplomski nalogi smo predstavili računalništvo v oblaku in ogrodje Google App Engine za izdelovanje spletnih aplikacij v njem. Spoznali smo se z ogrodjem in z njim izdelali spletno aplikacijo. V prvem delu smo podrobno opisali računalništvo v oblaku. Ugotovili smo, da je ideja računalništva v oblaku prisotna že kar nekaj časa, vendar se bolj aktivno uporablja šele kratek čas. Veliko zmede obstaja okoli pravilne definicije računalništva v oblaku, toda ob pregledu vseh možnih razlag smo ugotovili najbolj primerno. Računalništvo v oblaku je torej dostava virov iz lokacije, ki ni enaka tisti, v kateri trenutno uporabljamo računalnik. Nadalje smo ugotovili, da oblak sestavlja več komponent. Vse smo našteli in podrobno opisali, ter analizirali njihov vpliv na oblak. Računalništvo v oblaku ponuja več vrst storitev, ki jih lahko podjetja uporabljajo. Izraz storitev smo definirali kot koncept uporabe manjših, ponovno uporabnih komponent prek omrežja ponudnika storitev. Bolj podrobno smo opisali programsko opremo kot storitev, platformo kot storitev in strojno opremo kot storitev. Pogledali smo si načine razporeditve infrastrukture računalniškega oblaka. Videli smo, da lahko rešimo veliko problemov uporabnikov oblaka s pravilno razporeditvijo in virtualizacijo računalniških virov. V drugem delu smo se osredotočili na ogrodje Google App Engine. Videli smo, da Google ponuja zastonjsko gostovanje spletnih aplikacij izdelanih z App Engine-om, če le ne presežemo njihovih omejitev. V nadaljevanju smo ugotovili, da je. App Engine sestavljen iz izvajalnega okolja,. podatkovne baze imenovane Datastore in raznih servisov. V praktičnem delu smo implementirali bogati urejevalnik besedila na spletu s pomočjo ogrodja App Engine. Delo smo razdelili med odjemalce in strežnik. Pri izvedbi odjemalcev smo uporabili skriptni jezik JavaScript in knjižnico jQuery. Urejevalnik smo izdelali s pomočjo načina iframe, saj je s preprostostjo bil najbolj ustrezen časovnemu okvirju. Za izdelavo strežniške kode smo uporabili programski jezik Java in ogrodje App Engine. Na koncu lahko ugotovimo, da je uporaba spletnih aplikacij v oblaku vedno bolj priljubljena in lahko rečemo, da predstavlja prihodnost spleta. Večina aplikacij se seli v oblak, saj je veliko bolj cenovno ugoden kot uporaba lastne infrastrukture in njeno vzdrževanje. Pokazali smo, da je izdelovanje aplikacij v Google App Engine preprosto, učinkovito in cenovno ugodno, ter primerljivo v vseh pogledih z drugimi ogrodji za razvoj spletnih aplikacij .. 24.

(34) 7. VIRI [1]. Relacijski podatkovni model. Dostopno na: http://drenovec.tsckr.si/model/relac.htm [26.8.2012].. [2]. Sanderson, D. Programming Google App Engine: Build and Run Scalable Web Apps on Google's Infrastructure. Sebastopol:O’Reilly Media, 2009. [3]. Rittinghouse W., J., Ransome F., J. Cloud computing: Implementation, management, and security, Boca Raton: CRC Press, 2010. [4]. Velte T., A., Velte J., T., Elsenpeter, R. Cloud Computing: A Practical Approach, 2010. [5]. HTML. Dostopno na: http://sl.wikipedia.org/wiki/HTML [26.8.2012].. [6]. CSS. Dostopno na: http://sl.wikipedia.org/wiki/CSS [26.8.2012].. [7]. JavaScript. Dostopno na: http://sl.wikipedia.org/wiki/JavaScript [26.8.2012].. [8]. WebSocket. Dostopno na: http://en.wikipedia.org/wiki/WebSocket [26.8.2012].. [9]. Scalable Vector Graphics. Dostopno na: http://sl.wikipedia.org/wiki/Scalable_Vector_Graphics [27.8.2012].. [10] Online rich-text editor. Dostopno na: http://en.wikipedia.org/wiki/Online_richtext_editor [27.8.2012]. [11] jQuery. Dostopno na: http://im.scv.si/wiki/index.php/Jquery [27.8.2012]. [12] Java toolkit for JSON. Dostopno na: http://code.google.com/p/json-simple/ [28.8.2012]. [13] Google Docs. Dostopno na: https://docs.google.com [14.92012]. [14] Paravirtualization explained. Dostopno na: http://searchservervirtualization.techtarget.com/tip/Paravirtualization-explained [27.8.2012]. [15] Java Virtual Machine. Dostopno na: http://docs.oracle.com/javase/specs/jvms/se7/html/index.html [10.9.2012]. [16] Application programming interface. Dostopno na: http://en.wikipedia.org/wiki/Application_programming_interface [10.9.2012]. [17] Uniform resource locator. Dostopno na: http://en.wikipedia.org/wiki/Uniform_resource_locator [10.9.2012]. [18] Extensible Messaging and Presence Protocol. Dostopno na: http://xmpp.org/about-xmpp/ [10.9.2012]. [19] Transmission control protocol. Dostopno na: http://en.wikipedia.org/wiki/Transmission_Control_Protocol [10.9.2012]. [20] http://www.json.org/, obiskano 10.9.2012 [21] JavaServer Pages. Dostopno na: http://www.oracle.com/technetwork/java/javaee/jsp/index.html [10.9.2012]. 25.

(35) 26.

(36) 27.

(37) 28.

(38)

References

Related documents

Using Chilean manufacturing plants data, we find: (1) the elasticity of substitution between capital and skilled labor is lower than the elasticity of substitution between capital

Hence, the main (business) goal set at operational level was to improve at least 15 percentage points (p.p.) the JGUIAr v1.3’s external quality in the period of 3 months.

From the closing decades of the nineteenth century to the middle of the twentieth, those who governed Sind, a province of British India until 1947 and thereafter of

To evaluate the performance issue, a java web-application deployed to a cloud server (Google App Engine) as below:.. DEPLOY A WEB-APPLICATION ON GOOGLE

In this context, the specific aims of the present study were (1) to identify the nutrient composition profiles of previous MD interventions delivered to Mediterranean and

In terms of the mass absorption cross section (MAC) our ambient EC surprisingly had about half of the MAC value compared to our laboratory standard EC (chimney soot), suggesting a

This paper describes the signifi cance of cloud computing in IT industries with comparative study of diff erent public cloud service providers giants like Google (Google App-engine

Introduction Salesforce.com Google App Engine Amazon Web Services Google Compute Engine Comparison RAMCloud.. Cloud