SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ţ D I N

Size: px
Start display at page:

Download "SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ţ D I N"

Transcription

1 SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ţ D I N Senko Pušec ZODB ZAVRŠNI RAD Varaţdin, 2016.

2 SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ţ D I N Senko Pušec Matični broj: 39216/11 I Studij: Poslovni sustavi ZODB ZAVRŠNI RAD Mentor: Doc.dr.sc Markus Schatten Varaţdin, rujan 2016.

3 Sadrţaj 1. Uvod Objektne baze podataka Povijesni razvoj objektno-orijentiranih baza Osnovni koncepti Usporedba OID-a sa Vanjskim ključem Objektno-orijentirana baza podataka Usporedba sa relacijskim bazama podataka Objektno-relacijske baze podataka ZODB Svojstva ZODB-a Vrste pohrane u ZODB-u Pickling Binarna stabla Buckets Pohrana kao atribut/pohrana kao BTree BinaryLargeOBject Phone Book aplikacija Dijagram klasa za bazu Klasa User Klasa Contact Klasa PersonalContact Prijava i rad u aplikaciji Upiti prema bazi te rad s listama Zaključak Literatura Prilog - programski kod

4 1. Uvod Objektno-orijentirane baze iako već dugo postoje nisu u često spominjane, barem ne čisto objektno-orijentirane baze podataka. Iako smo se za vrijeme obrazovanja često sretali s principima objektno-orijentirane paradigme u programskim jezicima, rješenja koja smo razvijali često su za spremanje podataka imale obične relacijske baze podataka. Prvo susretanje s objektno-orijentiranim bazama podataka zapravo su bili ORM alati bilo u Javi (Persistence) ili u C# (Entity Framework) koje su nam pokazali kako je puno lakše razvijati aplikaciju bez SQL upita već putem LINQ-a i sl. MeĎutim ORM nije isto što i objektno-orijentirana baza podataka jer ORM zapravo sakriva relacijsku bazu podataka i jednostavno mapira tablice u bazi podataka u klase u programskom jeziku, dakle sve je ipak u pozadini SQL upit. Stoga smo odlučili provjeriti čistu objektno-orijentiranu bazu podataka, a to je bio nativna python objektno-orijentirana baza podataka ZODB, koja je nastala iz Zope Web Framework-a i koja omogućuje spremanje čistih objekata u bazu. Postoji velik broj komercijalnih i besplatnih sustava za upravljanje objektno-orijentiranim bazama meďutim ZODB se čini najjednostavnijim i najlakšim za korištenje zbog manjka dodatnog koda za integraciju u aplikacije. 2

5 2. Objektne baze podataka Objektna baza (eng. object database) ili objektno orijentirana baza podataka, je sustav upravljanja bazama podataka u kojoj su informacije predstavljene u obliku objekata. Relacijske baze podataka koje predstavljaju jedan od stupova informatike su jedno vrijeme bile dostatne za tradicionalne aplikativne domene kao što je procesiranje administrativnih podataka itd, meďutim daljnjim razvojem informatike u mnogim drugim aplikativnim domenama dolazi do obrade puno kompleksnijih vrsta podataka. Takvi podaci su uglavnom bili pohranjivani u podatkovnom podsustavu operacijskog sustava ili i u specijaliziranim podatkovnim strukturama prije nego u relacijskim bazama podataka. Jedan od primjera kompleksnih podataka koji su se na takav ili sličan način obraďivali je CAD/CAM sustav (eng. computer aided modeling / design). Porastom količine podataka, mnoge značajke DBMS sustava su postajale sve zanimljive je i štoviše potrebne. MeĎutim kako bi se te značajke DBMS sustava mogle upotrebljavati u gore navedenim slučajevima korištenja bilo je potrebito uvesti podršku kompleksnih tipova podataka u DBMS-ove. Koncepti objektnoorijentiranog programiranja su uvelike utjecali na zahtjev DBMS podrške kompleksnih tipova podataka i eventualno dovele do stvaranja objektno orijentiranih baza podataka odnosno sustava za upravljanje objektno orijentiranim bazama podataka. Objektne baze podataka su se kasnije razvijale u dva različita smjera: objektno-orijentirane baze te objektno-relacijske baze.[2] 2.1. Povijesni razvoj objektno-orijentiranih baza Objektne baze podataka ili objektno-orijentirane baze podataka su nastale na temelju istraživanja za unutrašnju podršku strukturiranih podataka (graf) u sustavima za upravljanje bazama podataka. Od tih istraživanja najvažnije je spomenuti sljedeća koja su imali utjecaj na razvoj objektno orijentiranih baza: IRIS (Hewlett-Packard), ODE (Bell Labs), ORION (MCC - Microelectronics and Computer Technology Corporation) i Zeitgeist (TI - Texas Instruments). Rani komercijalni proizvodi su bili Gemstone (Gemstone Systems), Gbase (Graphael) i VBase (Ontologic). Na razvoj objektno-orijentiranih baza za vrijeme 80-ih godina 20. stoljeća veliki utjecaj je imala sve veća zainteresiranost u objektno-orijentirane programske jezike. Objektno-orijentirani programski jezici kao što su C++ i Simula su se tek pojavili na programskoj sceni i pružali su potpuno novi pristup razvoju software-a koji je naglašavao korištenje objekata, te enkapsulacije objektne strukture i ponašanja korištenjem 3

6 apstraktnih tipova podataka. Spajanje perzistentnih, na objektima temeljenih, podataka sa objektno orijentiranim programskim jezicima obećavalo je novu paradigmu za baze podataka koja bi zajedno sa fleksibilnošću objektno orijentiranih programskih jezika omogućila efikasnu reprezentaciju velikih i kompleksnih setova podataka. Najveća prednost paradigme objektno orijentiranih baza podataka je bilo rješenje impendance mismatch problema što joj je omogućavalo jednostavnu integraciju baze podataka sa programskim jezikom. Impendance mismatch problem je problem koji se odnosi na razlike izmeďu deklarativnog pristupa bazama podataka i relacijskog, imperativnog odnosno pristupa programskih jezika prema podacima.[] 2.2. Osnovni koncepti Jedan od glavnih ciljeva objektnih baza podataka je podrška za perzistentnost objekata zajedno značajkama koje se uobičajeno očekuju od sustava baza podataka, a neke od tih značajki su: učinkovito upravljanje perzistentnim podacima, transakcije, istodobnost (eng. concurrency) i kontrola oporavka. Izazov za objektno orijentirane baze podataka je podrška gore navedenih značajki u kontekstu objektno orijentiranog programiranja i njegove složenosti. Sljedeći koncepti objektno orijentiranog programiranja su tipično vezani uz objektno orijentirane baze podataka (Dietrich i Urban, 2014) : složeni odnosno kompleksni objekti identitet objekta enkapsulacija ili učahurivanje ekstenzibilnost hijerarhija klasa i nasljeďivanje preopterećenje (overloading), polimorfizam, i late binding Mogućnost definiranja kompleksnih objekata iz jednostavnijih je važno svojstvo objektno-orijentiranog pristupa. Kompleksni objekti su definirani korištenje konstruktora, kao što je npr. tuple (par) konstruktor koji kombinira jednostavne objekte kako bi napravio kompleksniji objekt. Jedan od primjera gore navedene značajke objektno-orijentiranog pristupa bi bio avion, za koji se može reći da je kompleksni objekt koji se sastoji od drugih jednostavnijih objekata kao što krila, trup i motori.[1] 4

7 Objekti isto tako imaju objektni identitet putem interno dodijeljenog objektnog identifikatora (oid). Za razliku od ključeva u relacijskom modelu, oid je nepromjenjiv (immutable) što znači da kada je objekt jednom kreiran oid ostaje isti za vrijeme trajanja objekta. Usporedno s tim stanje objekta je promjenjivo (mutable) što znači da se vrijednosti svojstava (eng. property) mogu mijenjati. Sustav baze podataka koristi oid kao referencu izmeďu objekata kako bi stvorio kompleksne objekte. Vrijednosti svojstava se stoga ne koriste kao jedinstveni identifikatori za objekt u bazi podataka. To je zasebnost po kojoj se razlikuj objektno-orijentirani model od modela relacijskih baza podataka, koji koristi vrijednosti atributa (primarni - vanjski ključ).[2] Enkapsulacija ili učahurivanje se odnosi na mogućnost stvaranja klase kao apstraktnog tipa podatka, koji ima sučelje i implementaciju. Sučelje definira ponašanje apstraktnog tipa podatka na konceptualnoj razini dok implementacija definira realizaciju tog ponašanja na razini programskog jezika. Korištenjem koncepta učahurivanja, implementacija klase se može promijeniti bez utjecanja na sučelje koje klasa pruža ostatku aplikacije. Objektno-orijentirane baze podataka podržavaju učahurivanje specificiranjem tipova definiranih od strane korisnika. Sa ekstenzibilnošću nema razlike izmeďu korištenje tipova koji su definirani od strane sustava i onih koje definira korisnik. Odnosno korisnik može stvoriti nove tipove koji odgovaraju semantici aplikacije i koristiti ih na isti način kao i tipove koje je definirao sustav Usporedba OID-a sa Vanjskim ključem Kao što je gore navedeno, korištenje oid kao referencu za objekt je vrlo slično korištenju vanjskog ključa za referencu para (eng. tuple) ali s mali i bitnim razlikama. OID može pokazivati na objekt koji je spremljen bilo gdje u bazi podataka, čak i ako se nalazi u polju, dok je vanjski ključ ograničen na pokazivanje objekta koji se nalazi u specifično referenciranoj relaciji. (Ramakrishnan Gehrke, 2003) 2.3. Objektno-orijentirane baze podataka Objektno-orijentirane baze podataka ili sustavi za upravljanje objektno-orijentiranim bazama podataka su baze podataka u kojima se spremaju objekti umjesto podataka kao što su integeri ili string-ovi itd. Radi lakšeg pojašnjenja koncepta objektno-orijentiranih baza podataka ukratko ćemo objasniti objekte. Objekti se prema konceptima objektno-orijentiranog pristupa sastoje od atributa i metoda. Atributi su podaci koji odreďuju karakteristike objekta, 5

8 oni mogu biti jednostavni tipovi podataka (integer, string) ili reference na složenije tipove podataka. Metode odreďuju ponašanje objekta odnosno to su procedure i funkcije Usporedba sa relacijskim bazama podataka Relacijske baze podataka spremaju podatke u tablice koje su dvodimenzionalne. Tablice imaju stupce i retke i normalizirane su kako se podaci sadržani u njima ne ponavljaju više nego što je potrebno. Svi stupci u tablici ovise o primarnom ključu, koji je jedinstvena vrijednost u stupcu, radi identifikacije. Kada je specifični stupac identificiran, podaci iz jednog ili više redaka povezanih s tim stupcem, mogu se dohvatiti ili izmijeniti. Kompleksni tipovi podataka se ne mogu lagano spremati u relacijske baze podataka jer to zahtijeva razbijanje kompleksnih informacija u jednostavne podatke i zahtjeva puno vremena i u većini slučajeva puno koda. Prednosti objektno-orijentiranih baza podataka naspram relacijskih baza podataka su: Objekti se ne moraju sastavljati i rastavljati time štedeći vrijeme implementacije tj kodiranja i izvršavanja smanjeno straničenje lakša navigacija Bolja kontrola istodobnosti (eng. concurrency) Model podataka se temelji na stvarnoj pojavi tj stvarnom svijetu Dobro funkcionira za distribuirane arhitekture Manje programskog koda ako se aplikacije pridržavaju objektno-orijentiranog pristupa MeĎutim u nekim slučajevima su objektno-orijentirane baze loš odabir. Ukoliko se radi o jednostavnim aplikacijama učinkovitost te brzina pristupa su bolje u relacijskim bazama podataka.[1] Stoga možemo reći da objektno-orijentirane baze podataka funkcioniraju bolje sa: CAS aplikacijama (CASE - computer aided software engineering, CAD - computer aided design, CAM - computer aided manufacture) Multimedijskim aplikacijama Trgovinske aplikacije (eng. commerce) 6

9 2.4. Objektno-relacijske baze podataka Objektno-relacijske baze podataka su vrlo slične relacijskim bazama podataka ali sadrže objektno-orijentirani model baze podataka. Objekti, klase i nasljeďivanje su direktno podržane i shemama baze podataka i jeziku za upite. Za objektno-relacijske baze podataka se može reći kako predstavljaju kompromis izmeďu objektno-orijentiranih baza i relacijskih.[1] 3. ZODB ZODB ili Zope Object DataBase je nativna objektno-orijentirana baza podataka za python programski jezik. jedne od glavnih značajki koje razlikuju ovu objektno-orijentiranu bazu podataka od ostalih rješenja su: za operacije na bazi podataka se koristi python a ne neki zasebni programski jezik, potrebne su jako male promjene koda kako bi se objekti napravili perzistentnima, nepostojanje mapper-a za mapiranja baze podataka koji zapravo samo skriva jedan dio baze (ORM nije isto što objektno-orijentirana baza podataka iako se na prvi pogled možda čini tako), nije potrebna velika količina dodatnog koda za integraciju s bazom.[6] 3.1. Svojstva ZODB-a Jedno od glavnih svojstava koje najviše privlači developere ZODB-u je njegov minimalizam. On je zapravo ogoljena baza podataka koji sadrži samo osnovne značajke kao što je perzistentnost i podršku za transakcije, ali to ga ne čini slabijim ili lošijim od ostalih objektno-orijentiranih baza podataka jer, kao i većina modula u python ekosustavu, postoji pregršt ekstenzija za nj. Jezgru samog ZODB-a čine sljedeće značajke: familijarnost - kao što je prethodno rečeno, ne koristi se zasebni programski jezik za operacije na bazi podataka, u bazu se spremaju nativni python objekti te se koristi pickle modul koji je većini python developera poznat. Budući da je cijelio ZODB pisan u pythonu moguće je vidjeti unutrašnje mehanizme i operacije samog ZODB-a te, iako vrlo rijetko, napraviti preinake na njemu. Jednostavnost ZODB-a je isto tako vrlo bitna značajka. Sama baza podataka je hijerarhijska baza podataka što znači da imam korijenski object ili root koji se inicijalizira prilikom stvaranje same baze. Taj se objekt potom koristi na isti način kao i dictionary u pythonu te može sadržavati druge objekte koji i sami mogu biti dictionary tipa, iako postoje neke stvari koje se trebaju uzeti u obzir i koje su kasnije opisane. Transparentnost - da bismo napravili instancu klase perzistentnom potreban nam je modul persistence odnosno njegov dio a to je 7

10 klasa Persistence. Nakon što definiramo klasu koja nasljeďuje od klase Persistence ostali dio spremanja objekata i ažuriranja istih, ukoliko doďe do njihove promjene, obavlja ZODB. Isto tako mogu se spremati objekti koji nisu perzistentni kao što je običan dictionary ili list meďutim tada ZODB ne može detektirati promjene na njima i potrebno ga je obavijestiti kada doďe do promjene. ZODB podržava ACID odnosno svoja ACID-a. Transakcijski sustavi se brinu o stanju baze podataka odnosno sprječavaju da baza podataka doďe u nekonzistentno stanje, a to uspijevaju podrškom četiri svojstva koji se poznatiji pod akronimom ACID. ACID akronim predstavlja: Atomičnost (eng. atomicity) - ili će se sve izmjene u transakciji izvršiti odnosno zapisati na bazu podataka ili ukoliko doďe do pogreške i sl. cijela transakcija će biti otkazana. Upravo to omogućuje održavanja konzistentnog stanja baze podataka u slučaju hardverske greške ili greške pisanja. Konzistentnost (eng. consistency) - nijedna transakcija koja zapisuje podatke na bazu neće biti dozvoljena ukoliko bi ona ostavila bazu podataka u nekonzistentnom stanju, transakcija koja čita odnosno dohvaća podatke će vidjeti bazu podataka u konzistentnom stanju u kojem je bila na početku transakcije bez obzira na druge transakcije koje se istovremeno izvršavaju. Izoliranost (eng. isolation) - prilikom izvršavanje promjena na bazi podataka od strane dva različita programa, nijedan od njih neće moći vidjeti transakcije od drugoga dok ne izvrše vlastite transakcije (eng. commit) Postojanost (eng. durability) - podaci će biti spremljeni nakon što je transakcija izvršena. Softverski ili hardverski kvar neće uzrokovati gubitak podataka nakon što je transakcija izvršena.[7] U slučaju velikih promjena na bazi, odnosno u slučaju izvršavanje jedne transakcije kojim se modificira veliki broj objekata istovremeno dolazi do velikog zauzeća memorije koje usporava rad, a razlog usporavanje leži u načinu funkcioniranja ZODB-a, naime sve promjene koje se izvršavaju u jednoj transakciji se zadržavaju u memoriji dok se transakcija ne izvrši. Kako bi se poboljšale performanse i smanjilo zauzeće memorije, ZODB sadrži svojstvo Save Point koje omogućuje developeru da izvrši jedan dio transakcije prije nego je transakcija gotova kako bi se zapisale promjene na bazi podataka i oslobodio dio memorije koju je transakcija zauzela. Ukoliko transakcija koja je izvršena nije trebala biti izvršena ili se greškom prebrisao dio baze ZODB sadrži jednostavan mehanizam za vraćanje baze u prethodno stanje odnosno za poništavanje (eng. roll back) transakcije koji se zove Undo. Ova značajka postoji i funkcionira zato što ZODB pamti stanje baze podataka prije i poslije svake transakcije. Upravo to omogućava poništavanje bilo koje transakcije tj. promjena koje je 8

11 transakcija izvela na bazi. Treba uzeti u obzir kako je ovo jako jednostavan mehanizam te ukoliko je objekt nakon transakcije koju želimo poništiti ponovno promijenjen od strane druge transakcije, poništavanje neće biti moguće zbog gore navedenih ACID svojstava odnosno zbog konzistentnosti. S obzirom da, kao što je gore navedeno, ZODB pamti svaku promjenu na bazi odnosno pamti svaku transakciju, moguće je vidjeti stanje objekta prije i poslije promjene (transakcije) te ih usporediti što omogućuje implementaciju jednostavnog verzioniranja. ZODB dakle može spremati skoro pa sve vrste objekata koji postoje u python programskom jeziku, meďutim ukoliko želimo spremiti posebne vrste podataka kao što su multimedijski podaci itd. potrebno je koristiti ZODB-ov Blob. Veliki binarni objekti kao što su slike i dokumenti bi se trebali spremati u Blob objekt jer bi njihovo spremanje kao običnih svojstava objekta znatno usporilo bazu podataka te značajno povećalo veličinu baze. ZODB potom ima specijalnu vrstu Storage-a koje se zove Blob Storage pomoću kojeg je moguće lako rukovati velikim datotekama bez degradiranja performansi. [7] 3.2. Vrste pohrane u ZODB-u Vrste različitih pohrana (storing backends) u ZODB: Pickling Binarna stabla (engl. Binarytrees) Buckets Pohrana kao atribut / pohrana kao BTree BLOBs (BinaryLargeOBject) U nastavku je objašnjeno kako se podatci spremaju u ZODB što je bitno za razumijevanje ponašanja i optimizacije Plone baze podataka Pickling ZODB je objektno orijentirana baza podataka. Svi podaci u ZODB se pohranjuju kao pickled Python objekti. Pickle je objektni serializacijski modul Python standardne biblioteke. 9

12 Svaki put kada je objekt pročitan i nije spremljen u meďuspremnik (not cached), objekt se čita iz ZODB baze podataka i unpickled je Svaki put kad je objekt napisan, on je pickled i pomoću sustava za transakcije ga se dodaje na ZODB bazu podataka Pickle format je niz bajtova. Na donjem primjeru možemo vidjeti kako to izgleda: >>> import pickle >>>data = { "key" : "value" } >>>pickled = pickle.dumps(data) >>>printpickled (dp0 S'key' p1 S'value' p2 s. To nije format optimalan za čitanje. Čak i ako koristimo SQL temeljeni RealStorage ZODB backend, objekti su i dalje pickled na bazu podataka, SQL ne podržava varirajući tabličnu shemu po redu i Python objekti nemaju fiksnu shmenu za format Binarna stabla Podatci su obično organizirani u binarna stabla ili Bstabla (engl. BTrees). Točnije, podatci se obično pohranjuju kao objektno orijentirana binarna stabla (engl. OOBtree) koja daju Python objekt kao ključ i Python object value mapping. Ključ je objekt id u parentcontainer-u kao string, a vrijednost je bilo koji pickleable Python objekt ili primitive koju spremamo u bazu podataka.[7] Buckets BTree pophranjuje podatke u buckets (OOBucket). Bucket je najmanja jedinica podataka koje se jednom upisuje u bazu podataka. Buckets se pune sporo: BTree učitava jedino bucket-e koji spremaju vrijednosti ključeva kojima se pristupa. BTree pokušava staviti što je više moguće podataka u jedan bucket. Kada se jedna vrijednost u bucket-u promijeni, cijeli bucket mora biti prepisan na disk. Zadana veličina bucket-a je 30 objekata.[7] 10

13 Pohrana kao atribut / pohrana kao BTree Plone ima dva temeljna načina za pohranu podataka: Attributestorage (pohranjuje vrijednosti direktno u pickled objekte) Annotationstorage (OOBTreebased) plone objekti imaju atribut _annotations_ koji je OOBTree za pohranu objekata bez konflikta prilikom imenovanja. Kada su objekti pohranjeni u annotation storage obliku, čitanje vrijednosti objekta zahtjeva barem jedan dodatni upit u bazi podataka, za učitavanje prvog bucket-a iz OOBTree. Ako će se vrijednost koristiti često, posebice ako se čita kod pregleda sadržaja objekta, pohranjivanje u attribute je efikasnije nego pohranjivanje u annotation. Razlog tome je što BTree _annotation_ je zasebni perzistentni objekt koji mora biti učitan u memoriju i može izbaciti nešto drugo iz ZODB meďuspremnika (engl.zodb cache). Ako je u atributu pohranjena velika vrijednost povećati će se upotreba memorije, jer će se učitati u memoriju svaki put kada je objekt dohvaćen iz ZODB.[7] BinaryLargeOBject BLOBs su veliki binarni objekti poput datoteka ili slika. Podržani su od verzije ZODB 3.8.x. Kada koristimo BLOB sučelje za pohranu i dohvaćanje podataka, oni su spremljeni fizički kao datoteke na datotečnom sustavu. Datotečni sustav, kao što mu ime govori, je osmišljen kako bi upravljao podatcima i ima daleko bolje performanse sa velikim binarnim podatcima nego pohranjivanje podataka u ZODB. BLOBs su streamable što znači da možemo početi posluživati datoteku od početka te datoteke na HTTP, bez potrebe da se učita cijela datoteka u memoriju(što je sporo).[7] 11

14 4. Phone Book aplikacija Primjer korištenja ZODB-a u napravljen za ovaj završni rad je jednostavna aplikacija za upravljanje kontaktima. Korišteni su sljedeći moduli: tkinter - GUI za aplikaciju flask_bcrypt - za enkripciju lozinke ZODB - objektno-orijentirana baza podataka persistent - generička implementacija perzistentnosti ZEO - Zope Enterprise Objects, client-server sistem za dijeljenje spremnika (storage) izmeďu više klijenata transaction - generička implementacija transakcija logging - standardni mehanizam za logiranje Jedan od uvjeta postavljenih za ovu temu je bilo korištenje Client Storage-a odosno mrežnog spremnika i zbog toga je korišten modul ZEO koji unutar sebe sadrži runzeo.py skriptu koja pokreće mrežnog poslužitelja na kojem se nalazi spremnik i koji se potom dijeli izmeďu korisnika 12

15 4.1. Dijagram klasa za bazu Class diagram koji je korišten u ovoj aplikaciji je vrlo jednostavan i sastoji se od klase user,contact te personalcontact. Klasa user sadrži svojstva (eng. property) username ili korisničko ime, password ili lozinka te PersistenList object Contacts u koji se spremaju kontakti nakon što se pozove funkcija add_contacts(). 1. Dijagram klasa koje se spremaju u bazu Sve klase koje se nalaze na dijagramu nasljeďuju klasu Persistent koja je implementacija generičke perzistencije za python. Korisnik može imati više osobnih kontakata ali kontakt može imati samo jednog autora koji je objekt tipa User. Budući da sve klase nasljeďuju baznu klasu Persistent, ZODB može detektirati promjene na njima i tako obavijestiti ostale klijente koje koriste istu bazu odnosno Client Storage. 13

16 Klasa user Klasa user kao što je vidljivo na dijagramu klasa ima svojstva USERNAME, PASSWORD te CONTACTS. 2. Isječak koda koji prikazuje implementaciju klase user Prilikom instanciranja klase odnosno poziva se ugraďena python funkcija init () odnosno u slučaju pythona konstruktor. On prihvaća dva argumenta, username i password, password se pomoću modula flask_bcrypt hashira radi sigurnosti jer spremanje lozinki u bazi u obliku čistog texta je primjer loše prakse. Drugi zanimljivi dio je dodavanje kontakata pomoću funkcije add_contact() koja instancira klasu PersonalContact koja nasljeďuje klasu Contact. Kao parametre prima name, contact_number te nasljeďivanjem i parametar autor gdje se stavlja trenutni user koji instancira klasu Klasa Contact Sadrži svojstva: NAME - ime kontakta koji se dodaje CONTACT-NUMBER - telefonski broj/mobitel kontakta AUTOR - korisnik koji je kreirao ovaj kontakt 14

17 3. Isječak koda koji prikazuje implementaciju klase Contact Klasa PersonalContact NasljeĎuje sva svoja svojstva od klase Contact. 4. Isječak koda koji prikazuje implementaciju klase PersonalContact 4.2. Prijava i rad u aplikaciji Aplikacija je vrlo jednostavna i sastoji se od samo dva prozora, prvi prozor je logiranje korisnika odnosno provjera njegovih podataka u bazi podataka. 5. Prozor za prijavu korisnika Nakon uspješne prijave korisnika, korisniku se otvara prozor tk2 koji predstavlja sve njegove kontakte i omogućuje mu CRUD nad svojim kontaktima. Korisnik vidi isključivo kontakte 15

18 koje je on kreirao i ne druge. Dakle nakon uspješne prijava na sustav se pokreće upit koji dohvaća sve kontakte kojima je svojstvo autor jednako autoru koji se uspješno prijavio na sustav. 6. Prozor za rad sa kontaktima U listbox-u se nalaze svi kontakti koje je napravio trenutno prijavljeni korisnik. Klikom na neki od njih te pritiskom na tipku Load dohvaćaju se dodatni podaci o trenutno odabranom kontaktu i ispisuju se u textbox-ove. Za brisanje kontakta opet se mora odabrati jedan kontakt iz listobox te potom pritisnuti dugme Delete. Za dodavanje novog korisnika potrebno je upisati podatke u polja name i phone te potom pritisnuti na tipku Add. Za ažuriranje korisnika potrebno je odabrati korisnika iz listbox-a te potom obaviti promjene u poljima name i/ili phone te stisnuti dugme Update Upiti prema bazi te rad s listama Većina upita dolje opisana i prikazana su vrlo jednostavna i zahvaljujući jednostavnosti pythona vrlo kratka. Slični upiti u drugim programskim jezicima bi vjerojatno zahtijevali veći broj iteracija i veću količinu koda. Inicijalizacija baze te dodavanje početnih korisnika se izvršava u tri koraka, prvi korak je samo spajanje na ClientStorage, otvaranje konekcije te dohvaćanje root elementa iz baze. Potom se dodaju dva nova ključa 'korisnici' te 'kontakti' koji su tipa persistent.persistentlist(). Nakon dodavanja ključeva dolazi do instanciranje user klase gdje dodajemo par probnih korisnika te probnih kontakata koji se potom dodaju u bazu. 16

19 7. Isječak koda koji prikazuje implementaciju klase database 8. Isječak koda koji prikazuje dodavanje početnih korisnika i njihovih kontakata 9. Isječak koda koji prikazuje pražnjenje tablice sa korisnicima Nakon početnog postavljanja baze podataka, možemo početi raditi sa Persistent listama kod kojih su operacije u načelu jednake kao i operacije kod običnih python listi. Dakle elementi u listi imaju svoje indekse i sl Dohvaćanje korisnika putem aplikacije funkcionira na sljedeći način: 17

20 [x for x in root['kontakti'] if x.autor.name == 'senko'] Nakon što je upit izvršen vraća nam se lista koja ovisno o tome postoji li kontakt kojeg je kreirao autor 'senko' vraća jedan ili više elemenata, ako ne postoje kontakti koje je kreirao korisnik 'senko' vraća se prazna lista. Ukoliko želimo dobiti samo jednog korisnika iz liste tada koristimo standardnu python sintaksu za liste: [x for x in root['kontakti'] if x.autor.name == 'senko'][0] Iako je ovo tehnički loš primjer s obzirom da će dohvatiti prvog korisnika u listi, meďutim možemo još dodatno sačuvati gornju listu u varijabli i onda po njoj na isti način izvršiti upit: [x for x in rezultat if x.name == 'marko'][0] S ovim upitom vraća nam se prvi element u listi koji odgovara argumentima postavljenima u upitu. Dakle glavni predložak za rad s listama izgleda sljedeće: [predlozak for varijabla in lista if uvjet] I uvijek kao rezultat vraća objekt tipa lista, osim ako ne odredimo indeksu koji želimo vratiti kao što je opisano gore.[8] Možemo se još dodatno poigrati s listama i tražiti vraćanje isključivo imena kontakata koji odgovoraju upitu: [x.name for x in root['kontakti'] if x.autor.name == 'senko'] Dakle u ovom slučaju upit vraća listu korisničkih imena koji su povezani s autorom 'senko'. Brisanje podataka iz liste je isto tako jednostavno: del root['kontakti'][index_zapisa] del root['kontakti'][:] del root['kontakti'][:3] Prva operacija briše specifični indeks u listi, druga operacija briše sve elemente u listi, treća operacije briše sve elemente u listi do elementa s indeksom tri.[8] 18

21 5. Zaključak Zope Object DataBase je jedan od boljih primjera jednostavnosti i lakoće rada s objektnimbazama. Pisana u potpunosti u python programskom jeziku, omogućuje lako korištenje svih python operacija nad objektima i time omogućuje lako izvršavanje programske logike te brzo dohvaćanje podataka iz baze. MeĎutim za osobe koje dolaze bez predznanja o opčenitom načinu rada s objektnim bazama može predstavljati poneke poteškoće, usprkos tome možemo reći kako je rad sa ZODB-om te njegova integracija bilo u desktop aplikacije ili web aplikacije vrlo jednostavna. ZODB je vrlo jednostavna i zbog toga moćna objektno-orijentirana baza podataka ali kao i svaka objektno-orijentirana baza podataka i on je namijenjen za posebne aplikativne domene iako se može koristi u svakoj domeni. ZODB je prvenstveno namijenjen aplikacijama u kojima nema velikog broja upisivanja u bazu, ali ima dohvaćanja podataka te pretraga po bazi. Najbolji primjeri korištenja ZODB-a su wiki sustav izgraďen uz pomoć Pyramid pythona, te zodb-browser, koji su sve aplikacije u kojima nema velikog broj upisa. Stoga možemo reći kako je ZODB, iako jako jednostavan i zbog toga privlačan, namijenjen za veće aplikacije, distribuirane aplikacije dok je za jednostavne aplikacije kao što je gore opisana aplikacija jednostavno neiskorišten do svog punog potencijala. Najbolji primjeri prave aplikativne primjene ZODB-a se nalaze u plone CMS-u te Zope Web Frameworku gdje ZODB dolazi do svog punog potencijala. 19

22 6. Literatura [1] Suzanne W D,Susan D U (2011) Fundamentals of Object Databases:Object-Oriented and Object-Relational Design San Rafael: Morgan & Claypool. [2] Ramakrishnan R, Gehrke J (2001) Database Management Systems (3. izd.). Boston: McGraw-Hill. [3] Weitershausen P (2009) Web Component Development with Zope (3. izd.). Boston: Springer. [4] Grinberg M (2013) Flask Web Development (2. izd.). Sebastopol: O'Reilly. [5] Chaudhary B (2015)Tkinter GUI Application Development Blueprints(1. izd.). Birmingham: Packt Publishing. [6] Lott F S (2015) Mastering Object-oriented Python (2. izd.). Birmingham: Packt Publishing. [7] ZODB - Native object database for python - Documentation. (2016). Preuzeto 2. rujna s [8] Schatten Markus, Objektno-orijentirane baze podataka prezentacija (2015) 20

23 7. Prilog - programski kod import transaction from ZEO import ClientStorage from ZODB import DB import tkinter from flask_bcrypt import check_password_hash ADDRESS = ((' ', 8090)) ZODB = {} TRENUTNI = None def create_connection(): global root ZODB['storage'] = ClientStorage.ClientStorage(ADDRESS) ZODB['db'] = DB(ZODB['storage']) ZODB['connection'] = ZODB['db'].open() root = ZODB['connection'].root() def close_connection(): ZODB['connection'].close() ZODB['db'].close() ZODB['storage'].close() def commit(thing): try: root['korisnici'].extend(thing) transaction.commit() except Exception as ex: print ex.message def get_korisnic(): print root['korisnici'] def callback(user,passw): global tr try: a = [x for x in root['korisnici'] if x.username == user][0] if check_password_hash(a.password, passw): tr = a create_gui2() else: return None except IndexError: return None 21

24 ########################################################################### ############################################ #### LOGIN ########################################################################### ############################################ def create_gui(): window = tkinter.tk() window.title("python Games Login") window.geometry("270x210") window.configure(bg="#39d972") title1 = tkinter.label(window, text="--log in to play the Python Games--\n", bg="#39d972") usertitle = tkinter.label(window, text="---username---", bg="#39d972") passtitle = tkinter.label(window, text="---password---", bg="#39d972") message = tkinter.label(window, bg="#39d972") user = tkinter.entry(window) passw = tkinter.entry(window, show='*') go = tkinter.button(window, text="log in!",command=lambda: callback(user.get(),passw.get()), bg="#93ff00") title1.pack() usertitle.pack() user.pack() passtitle.pack() passw.pack() go.pack() message.pack() window.mainloop() ########################################################################### ############################################ #### LOGIN ########################################################################### ############################################ ########################################################################### ############################################ #### PBOOK ########################################################################### ############################################ def whichselected () : print "At %s of %d" % (select.curselection(), len(phonelist)) return int(select.curselection()[0]) 22

25 def addentry () : s = tr.add_contact(name.get(),phone.get()) root['kontakti'].extend([s]) transaction.commit() setselect() def updateentry() : rez = [x for x in root['kontakti'] if x.name == select.get(select.curselection()[0])][0] ind = root['kontakti'].index(rez) rez.name = name.get() rez.contact_number = phone.get() root['kontakti'][ind] = rez transaction.commit() setselect() def deleteentry() : rm = [x for x in root['kontakti'] if x.name == select.get(select.curselection()) ][0] print rm.name root['kontakti'].remove(rm) transaction.commit() setselect() def loadentry () : name.delete(0, tkinter.end) phone.delete(0,tkinter.end) rez = [x for x in root['kontakti'] if x.name == select.get(select.curselection()[0])][0] name.insert(tkinter.end,rez.name) phone.insert(tkinter.end, rez.contact_number) def makewindow () : global name,namevar,phonevar, select, phone win = tkinter.tk() namevar = tkinter.stringvar() frame1 = tkinter.frame(win) frame1.pack() phonevar = tkinter.stringvar() tkinter.label(frame1, text="name").grid(row=0, column=0, sticky=tkinter.w) name = tkinter.entry(frame1, textvariable=namevar) name.grid(row=0, column=1, sticky=tkinter.w) tkinter.label(frame1, text="phone").grid(row=1, column=0, sticky=tkinter.w) phone= tkinter.entry(frame1, textvariable=phonevar) phone.grid(row=1, column=1, sticky=tkinter.w) frame2 = tkinter.frame(win) frame2.pack() # Row of buttons 23

26 b1 = tkinter.button(frame2, text=" Add ", command=addentry) b2 = tkinter.button(frame2, text="update", command=updateentry) b3 = tkinter.button(frame2, text="delete", command=deleteentry) b4 = tkinter.button(frame2, text=" Load ", command=loadentry) b1.pack(side=tkinter.left); b2.pack(side=tkinter.left) b3.pack(side=tkinter.left); b4.pack(side=tkinter.left) frame3 = tkinter.frame(win) # select of names frame3.pack() scroll = tkinter.scrollbar(frame3, orient=tkinter.vertical) select = tkinter.listbox(frame3, yscrollcommand=scroll.set, height=6) scroll.config (command=select.yview) scroll.pack(side=tkinter.right, fill=tkinter.y) select.pack(side=tkinter.left, fill=tkinter.both, expand=1) return win def setselect () : select.delete(0,tkinter.end) rezultat = [x for x in root['kontakti'] if x.autor.username == tr.username] print rezultat for x in rezultat: select.insert(tkinter.end, x.name) def create_gui2(): win = makewindow() setselect () win.mainloop() if name == ' main ': create_connection() create_gui() from persistent import Persistent from flask_bcrypt import generate_password_hash from persistent.list import PersistentList class user(persistent): USERNAME = None PASSWORD = None CONTACTS = [] def init (self,username,password): self.username = username self.password = generate_password_hash(password=password) self.contacts = PersistentList() 24

27 def add_contact(self,name,contact_number): contact = PersonalContact(name=name,contact_number=contact_number,autor=self) self.contacts.append(contact) return contact class Contact(Persistent): NAME = None CONTACT_NUMBER = None AUTOR = None def init (self,name, contact_number,autor): self.name = name self.contact_number = contact_number self.autor = autor class PersonalContact(Contact): def init (self,name,contact_number,autor): Contact. init (self,name,contact_number,autor) class Singleton: """ A non-thread-safe helper class to ease implementing singletons. This should be used as a decorator -- not a metaclass -- to the class that should be a singleton. The decorated class can define one ` init ` function that takes only the `self` argument. Other than that, there are no restrictions that apply to the decorated class. To get the singleton instance, use the `Instance` method. Trying to use ` call ` will result in a `TypeError` being raised. Limitations: The decorated class cannot be inherited from. """ def init (self, decorated): self._decorated = decorated def Instance(self): """ Returns the singleton instance. Upon its first call, it creates a new instance of the decorated class and calls its ` init ` method. On all subsequent calls, the already created instance is returned. """ try: return self._instance 25

28 except AttributeError: self._instance = self._decorated() return self._instance def call (self): raise TypeError('Singletons must be accessed through `Instance()`.') def instancecheck (self, inst): return isinstance(inst, self._decorated) 26

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

PKI Applet Desktop Application Uputa za instalaciju programske potpore

PKI Applet Desktop Application Uputa za instalaciju programske potpore 1 SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE POTPORE 3 4. INSTALACIJA PROGRAMSKE POTPORE 3 5. DEINSTALACIJA PROGRAMSKE POTPORE 6 2 1. Uvod PKI

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Objektno orjentirano programiranje. Predavanje 9 Postojani objekti, serijalizacija, marshaling, relacijske baze podataka

Objektno orjentirano programiranje. Predavanje 9 Postojani objekti, serijalizacija, marshaling, relacijske baze podataka Objektno orjentirano programiranje Predavanje 9 Postojani objekti, serijalizacija, marshaling, relacijske baze podataka Postojani objekti - osnove eng. persistent objects Bez obzira na veličinu poslovne

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Stipe Gorenjak, Kineziološki fakultet Sveučilišta u Zagrebu e-mail: stipe.gorenjak@kif.hr Sponzori Ugasite mobitele. Hvala.

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije Iskustva u razvoju i implementaciji ADF aplikacije Sadržaj Opis aplikacije za AZ Mirovinski Fond Internacionalizacija aplikacije Integracija sa Oracle Reports Iskorištenje postojeće PL/SQL logike Kreiranje

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17 OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Objektno orjentirano programiranje

Objektno orjentirano programiranje Objektno orjentirano programiranje Predavanje 4 Objektno orijentirani koncepti Konstruktori Metoda koja se poziva prilikom stvaranja novog objekta Svojstveni su OO programiranju Imaju isto ime kao i klasa

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES

OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES POLYTECHNIC & DESIGN OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES Aleksandar Stojanović Tehničko veleučilište u Zagrebu Vol. 4, No. 1, 2016.

More information

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe,

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb,

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, Case Study Hrvatska pošta: Korisničko iskustvo iz snova Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, 27.12.2018. Sadržaj Hrvatska pošta prije projekta Izazovi projekta Tehnologije korištene

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

vježbe. Slobodan Jelić

vježbe. Slobodan Jelić Web programiranje i primjene My SQL Rad s MySQL ovom bazom podataka 9. vježbe Slobodan Jelić 1. Unošenje podataka u bazu 2. Učitavanje podataka iz baze 3. Ažuriranje zapisa u bazi podataka 4. Naknadne

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Pametna komunikacija na Internetu preko REST protokola

Pametna komunikacija na Internetu preko REST protokola Pametna komunikacija na Internetu preko REST protokola Davor Lozić, dr. sc. Alen Šimec Tehničko veleučilište u Zagrebu, Vrbik 8, 10000 Zagreb, Hrvatska, dlozic@tvz.hr, alen@tvz.hr Abstract - REST protokol

More information

Hybrid Cloud najbolje od oba svijeta

Hybrid Cloud najbolje od oba svijeta Partneri: Hybrid Cloud najbolje od oba svijeta Drazen.Bzik@COMBIS.HR Cloud okolina Hybrid infrastruktura Gartner & Hyperconverged Infrastruktura Source: Gartner, Magic Quadrant for Hyperconverged Infrastructure,

More information

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce)

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) Geant2 - JRA1 Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) 21.11.2007, CUC2007, Rijeka Što je to JRA1? Glavni zadatak JRA1 (Performance

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Rad sa MySQL bazom podataka

Rad sa MySQL bazom podataka 13. PHP 4.dio Rad sa MySQL bazom podataka M. Zekić-Sušac 1 Što je MySQL? MySQL je relacijska baza podataka. Relacijski model podrazumijeva određenu strukturu podataka, pohranjenu u tablice. Jedna baza

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

OPTIMIZACIJA SQL UPITA BEZ IZMJENE PROGRAMSKOG KODA

OPTIMIZACIJA SQL UPITA BEZ IZMJENE PROGRAMSKOG KODA OPTIMIZACIJA SQL UPITA BEZ IZMJENE PROGRAMSKOG KODA Josip Pojatina (Agrokor ICT) josip.pojatina@agrokor.hr Sadržaj Ø O tvrtki mstart Ø Uvod Ø Odnos krajnjeg korisnika i kupljenog SW-a Ø Tipovi procesa

More information

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme INFOTEH-JAHORINA Vol. 12, March 2013. Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme Igor Dujlović Elektrotehnički fakultet Banja Luka Banja Luka, BiH dujlovic@gmail.com Zoran Đurić Elektrotehnički

More information

NOSQL BAZA PODATAKA RAČUNALNIH KOMPONENTI

NOSQL BAZA PODATAKA RAČUNALNIH KOMPONENTI SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Sveučilišni studij NOSQL BAZA PODATAKA RAČUNALNIH KOMPONENTI Završni rad Vladimir Anić Osijek, 2016 Obrazac Z1P - Obrazac za ocjenu

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

9. RAD S DATOTEKAMA PODATAKA

9. RAD S DATOTEKAMA PODATAKA Rad s datotekama 7-1 9. RAD S DATOTEKAMA PODATAKA U programiranju se često radi sa skupovima podataka koji se čuvaju na jedinicama perfernih memorija, a koji se organizuju u posebne cjeline koje nazivamo

More information

MEHANIZMI AGREGACIJE U OBJEKTNO- ORIJENTIRANIM PROGRAMSKIM JEZICIMA

MEHANIZMI AGREGACIJE U OBJEKTNO- ORIJENTIRANIM PROGRAMSKIM JEZICIMA SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Davor Vučina MEHANIZMI AGREGACIJE U OBJEKTNO- ORIJENTIRANIM PROGRAMSKIM JEZICIMA ZAVRŠNI RAD Varaždin, 2014. SVEUČILIŠTE U ZAGREBU

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Sveučililište J.J. Strossmayera u Osijeku Odjel za matematiku. Davor Kolarević JavaScript na poslužiteljskoj strani. Diplomski rad

Sveučililište J.J. Strossmayera u Osijeku Odjel za matematiku. Davor Kolarević JavaScript na poslužiteljskoj strani. Diplomski rad Sveučililište J.J. Strossmayera u Osijeku Odjel za matematiku Davor Kolarević JavaScript na poslužiteljskoj strani Diplomski rad Osijek, 2018. Sveučililište J.J. Strossmayera u Osijeku Odjel za matematiku

More information

DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA

DA LI POSTOJI SAMO JEDNA ISPRAVNA ARHITEKTURA WEB POSLOVNIH APLIKACIJA DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA Zlatko Sirotić, univ.spec.inf. Istra informatički inženjering d.o.o. Pula Stranica 1 Malo marketinga Stranica 2 Autor je (bar neko

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom U ovoj vježbi trebate dodati sljedeće view-ove u OnlineVrijednosnice aplikaciju: Details view za Graf model objekte ovaj view će prikazivati

More information

Backup i Restore C particije ili Windowsa sa NORTON-om

Backup i Restore C particije ili Windowsa sa NORTON-om BRZO KOPIRANJE I RESTAURIRANJE DISKOVA (programski paket Norton SystemWorks) OBJAŠNJENJE Backup i Restore C particije ili Windowsa sa NORTON-om Je li vam se nekada srušio operativni sustav ili pokvario

More information

Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis

Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis Započeto Četvrtak, 27 Listopad 2016, 22:34 Stanje završen Završeno

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

ILM implementacija DWH baza u T-mobile

ILM implementacija DWH baza u T-mobile ILM implementacija DWH baza u T-mobile Bojan Šumljak, PS Consultant Hrvoje Dubravica, PS Head Consultant www.snt-world.com 1 Što je ILM? - information Lifecycle Management praksa primjenjivanja pravila

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3 Lab. vježba 6 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) CSS3 P R O G R A M I R A N J E Z A I N T E R N E T Općenito Posljednja verzija Cascading Style Sheetsa, verzija

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

MICROSOFT LINQ. INFOTEH-JAHORINA Vol. 9, Ref. F-9, p , March Ognjen Borovina, Elektrotehnički fakultet, Istočno Sarajevo

MICROSOFT LINQ. INFOTEH-JAHORINA Vol. 9, Ref. F-9, p , March Ognjen Borovina, Elektrotehnički fakultet, Istočno Sarajevo INFOTEH-JAHORINA Vol. 9, Ref. F-9, p. 1032-1036, March 2010. MICROSOFT LINQ Ognjen Borovina, Elektrotehnički fakultet, Istočno Sarajevo Sadržaj: U ovom radu uveli smo LINQ i pokazali osnove njegovog rada.

More information

DBMS, modeli podataka, tipovi DBMS-ova

DBMS, modeli podataka, tipovi DBMS-ova DBMS, modeli podataka, tipovi DBMS-ova 2. tjedan T. Carić, T. Erdelić Zavod za inteligentne transportne sustave Fakultet prometnih znanosti Sveučilište u Zagrebu Baze podataka T. Carić, T. Erdelić ITS::Baze

More information

KURSORI BAZE PODATAKA U ORACLE 11g

KURSORI BAZE PODATAKA U ORACLE 11g KURSORI BAZE PODATAKA U ORACLE 11g SAŽETAK Kursor baze podataka je privatno SQL područje u kojem se čuvaju informacije za procesiranje određene SQL naredbe. Oracle PLSQL jezik koristi implicitne i eksplicitne

More information

Numeričke metode i praktikum

Numeričke metode i praktikum Numeričke metode i praktikum Aleksandar Maksimović IRB / 23/03/2006 / Str. 1 vektori Vektor u 3D prostoru. C: int v1[3]; v1[0]=a;v1[1]=b;v1[2]=c; Fortran: INTEGER V1(3) V1(1)=a V1(2)=b V1(3)=c Skalarni

More information

IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU

IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU SVEUČILIŠTE U SPLITU PRIRODOSLOVNO-MATEMATIČKI FAKULTET ZAVRŠNI RAD IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU Student: Krešimir Sudar Mentor: doc.dr.sc. Ani Grubišić Split, rujan 2016. Sadržaj 1.

More information

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB 10 th International Scientific Conference on Production Engineering DEVELOPMENT AND MODERNIZATION OF PRODUCTION KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

More information

BLAZE MODUL. Seminar iz kolegija Uporaba računala u nastavi. Ana Ledić U Zagrebu, 22. Svibnja 2014.

BLAZE MODUL. Seminar iz kolegija Uporaba računala u nastavi. Ana Ledić U Zagrebu, 22. Svibnja 2014. BLAZE MODUL Seminar iz kolegija Uporaba računala u nastavi U Zagrebu, 22. Svibnja 2014. Ana Ledić ana.ledic@studentpartner.com Sadržaj Čemu služi Blaze?... 2 Što je Blaze?... 3 Grafovi... 4 Datashapes...

More information

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom Priručnik za korištenje i brzu instalaciju Sadržaj ŠTO JE TP-LINK TL-WPA4220... 3 KAKO KORISITI TP-LINK TL-WPA4220...

More information

Sigurnost Java aplikacija CCERT-PUBDOC

Sigurnost Java aplikacija CCERT-PUBDOC Sigurnost Java aplikacija CCERT-PUBDOC-2006-07-163 Sigurnosni problemi u računalnim programima i operativnim sustavima područje je na kojem CARNet CERT kontinuirano radi. Rezultat toga rada ovaj je dokument,

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

OUR KNOWLEDGE FOR YOUR SUCCESS. Optimizacija Oracle baze podataka u kontekstu data warehouse sustava

OUR KNOWLEDGE FOR YOUR SUCCESS. Optimizacija Oracle baze podataka u kontekstu data warehouse sustava Optimizacija Oracle baze podataka u kontekstu data warehouse sustava Sadržaj 1. Uvod 2. Postavke parametara kod instalacije baze podataka 3. Optimizacija I/O operacija 4. Utjecaj na cost-based optimizer

More information

JAVA DESKTOP APLIKACIJA ZA PREGLED I VOĐENJE FINANCIJA

JAVA DESKTOP APLIKACIJA ZA PREGLED I VOĐENJE FINANCIJA SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA OSIJEK Sveučilišni studij računarstva JAVA DESKTOP APLIKACIJA ZA PREGLED I VOĐENJE FINANCIJA

More information

Optimiziranje MySQL baze i Laravela za rad s vrlo velikim bazama podataka. Nenad Crnko Sveučilišni računski centar

Optimiziranje MySQL baze i Laravela za rad s vrlo velikim bazama podataka. Nenad Crnko Sveučilišni računski centar Optimiziranje MySQL baze i Laravela za rad s vrlo velikim bazama podataka Nenad Crnko Sveučilišni računski centar Sadržaj Uvod Optimizacija sustava za upravljanje bazom podataka (MySQL) Optimizacija logičkog

More information

Uvod, varijable, naredbe, petlje

Uvod, varijable, naredbe, petlje 8. JavaScript Uvod, varijable, naredbe, petlje M. Zekić-Sušac 1 Što je JavaScript? JavaScript je najpopularniji skriptni jezik na Internetu kojeg podržavaju svi poznatiji preglednici (Internet Explorer,

More information

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-mingw32/x64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY.

More information

Oracle 10gR2 Backup & Recovery

Oracle 10gR2 Backup & Recovery Oracle 10gR2 Backup & Recovery Dubravko Jurina, inf. djurina@infosistem.hr UVOD Raspoloživost baze podataka najvažnija nija je karakteristika modernog poslovanja! 1 Vrste problema i Oracle rješenja enja

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5 Lab. vježba 5 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) HTML5 P R O G R A M I R A N J E Z A I N T E R N E T Općenito HTML5 je posljednja verzija HyperText Markup

More information

Microsoftova productivity vizija

Microsoftova productivity vizija Office 365 Microsoftova productivity vizija Hybrid On Premises Online Isto iskustvo na raznim uređajima Lokalno ili cloud Messaging Voice & Video Content Management Enterprise Social Reporting & Analytics

More information

WEB APLIKACIJA ZA REZERVACIJU PACIJENATA

WEB APLIKACIJA ZA REZERVACIJU PACIJENATA SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Sveučilišni studij računarstva WEB APLIKACIJA ZA REZERVACIJU PACIJENATA Diplomski rad Dino

More information

PRETRAŽIVANJE PODATAKA U OBJEKTNIM WEB APLIKACIJAMA

PRETRAŽIVANJE PODATAKA U OBJEKTNIM WEB APLIKACIJAMA Sveučilište Josipa Jurja Strossmayera u Osijeku Ekonomski fakultet u Osijeku Diplomski studij Poslovna informatika Amanda Draganjac PRETRAŽIVANJE PODATAKA U OBJEKTNIM WEB APLIKACIJAMA Diplomski rad Osijek,

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera 6 8 Cloud usluge 6 9 Aktivni servisi koji nijesu u

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

DATOTEČNI SUSTAVI HFS+

DATOTEČNI SUSTAVI HFS+ SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DATOTEČNI SUSTAVI HFS+ Računalna forenzika Zagreb, Siječanj 2017 Sadržaj 1. UVOD... 1 2. Metapodatci... 2 3. Datotečni sustavi MFS i HFS... 3

More information

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom. tog (tack) tog je posebna vrsta liste: od svih operacija dozvoljeno je ubacivanje, brisanje i gledanje sadržaja elementa samo na jednom kraju liste koji zovemo vrh stoga. tog zovemo i lifo last in first

More information