Pregled objekata ugradjenih u JavaScript

Uvod

js this

U sklopu samog JavaScript-a postoje ugradjeni objekti sa svojim svojstvima i metodama, namenjeni da olakšaju programiranje.

  • Array
  • Math
  • Date
  • Function

Pored navedenih objekata postoje još i objekti čija imena su ista kao imena prostih primitiva (samo sa velikim početnim slovom):

  • String
  • Number

Ovi objekti sa „opremljeni“ metodama potrebnim za rad sa odgovarajućim tipom podataka i zamišljeni su da olakšaju rad sa primitivnim tipovima. Kada se pojavi potreba za operacijom nad takvim primitivnim tipom, kompajler automatski „obmotava“ prost tip u njegov „parnjak“ objekat nakon čega su dostupne sve metode ugradjenog objekta.

U ovom članku sam želeo da pregledno okupim na jednom mestu sve metode i svojstva objekata ugradjenih u javascript-u.

Read more

Strukturno obeležavanje
(Structured Data)

Šta je strukturno obeležavanje?

slika

slika ×

Strukturno obeležavanje (eng.„Structured data markup“) je dodatni način obeležavanja sadržaja web stranice. Omogućava mašinama (čitaj: pretraživačima) da bolje razumeju sadržaj web stranice, a samim tim i da bolje prikažu rezultate pretrage vezane za tu stranicu (pogledaj sliku).

Strukturno obeležavanje sadržaja se implementira koristeći saznanje da razne vrste sadržaja imaju svoje specifične osobine. Te specifične osobine sadržaja su skupljene na jedno mesto u vidu rečnika (eng.vocabaulary). Rečnici su skupovi parova osobina/vrednost kojima se detaljnije opisuje sadržaj. Najveći pretraživači Google, Microsoft i Yahoo su se dogovorili da standardizuju osobine u jedan rečnik koji se zove shema.org. Svaki specifični tip sadržaja ima svoj skup parova, pa je tako sadržaj vezan za restoran opisan sledećim osobinama:

  • radno vreme
  • adresa
  • rezervacije
  • meni

dok je sadržaj vezan za pojam knjige opisan sledećim osobinama:

  • broj strana
  • ISBN broj knjige
  • ko je ilustrator

Nazivi osobina standardizovani u okviru rečnika schema.org se mogu ubaciti u web stranice preko tri različite syntax-e:

  • Microdata
  • RDFa
  • JSON-LD

Izbor syntaxe je ostavljen programeru i njegovim ličnom izboru.

Read more

Git naredbe

.gitignore

Pre aktiviranja Git-a potrebno je sprečiti čuvanje i praćenje izmena nepotrebih fajlova. Najčešće su to fajlovi koje koristi editor ili fajlovi koji nastaju kompajliranjem i sl. Fajlove ili cele direktorijume koje ne želimo da pratimo definišemo u okviru .gitignore. .gitignore fajl se smešta u okviru projektnog foldera.
Ovaj fajl se popunjava odgovarajućim naredbama uz čiju pomoć Git saznaje koje fajlove ne treba da prati. Princip obeležavanja fajlova i foldera koje ne želimo da pratimo unutar .gitignore je sledeći:

  • Upišemo ekstenzije fajlova sa razmakom koje ne želimo da pratimo kao npr.

    .swo .swp

  • Upišemo foldere koje ne želimo da pratimo:

    ime_foldera

    U slučaju da unutar foldera postoji fajl koji ipak treba da se prati upišemo:

    !nekiFajl.txt

  • Upišemo folder i njegove podfoldere koje ne želimo da pratimo:

    ime_foldera/ime_podfoldera

    Pregled grana

  • Upišemo folder i sve njegove podfoldere koje ne želimo da pratimo:

    ime_foldera/*

  • Upišemo sve objekate i arhive koje želimo da ignorišemo:

    *.[oa]

Postoji na internetu veliki broj primera .gitignore u zavisnosti kakav je projekat u pitanju (WordPress, Android….), a odličan sajt za nalaženje adekvatnog možete naći na sledećem linku: toptal/.gitignore.

Prekid praćenja

Veoma je bitno napraviti .gitignore file pre iniciranja Git-a jer ukoliko Git već započene praćenje odredjenog fajla on neće prestati da ga prati čak i ako taj neželjeni fajl naknadno ubacimo u .gitignore. U nastavku su opisane potrebne radnje za prekid prećenja nekog fajla.

a) Prekid praćenja bez fizičkog brisanja

Ukoliko su greškom commit-ovani neki nebitni fajlovi za projekat, čije promene ne želimo da čuvamo, ali ne želimo ni da ih fizički obrišemo iz radnog direktorijuma, potrebno je da naredimo git-u da prestane da ih prati (tj. da ih izbaci iz repozitorijuma) sa naredbom:

Naredba za prestanak praćenja direktorijuma je:

gde -r govori Git-u da stane da prati sve podirektorijume i fajlove unutar njega.

Nakon naredbe za prekid praćenja, fajl se nalazi u prostoru pripreme (index). Da bi sprečili da fajlovi na sledećem commit-u ponovo ne udju u repozitorijum, potrebno je te fajlove pre commit-ovanja, ubaciti u .gitignore fajl.

NAPOMENA:
Obratiti pažnju da ukoliko naziv fajla sadrži razmak izmedju reči, neophodno je staviti ga u znake navoda, kao na sledećem primeru:
git rm "neki naziv fajla sa razmacima.ekstenzija"

b) Prekid praćenja sa fizičkim brisanjem

Ukoliko postoji potreba da se fajl pored izbacivanja iz repozitorijuma i obriše iz radnog direktorijuma koristimo naredbu:

Ukoliko je u pitanju direktorijum koristimo naredbu:

gde -r govori Git-u da stane da prati sve podirektorijume i fajlove unutar njega. Nakon naredbe za brisanja fajlova je takodje neophodno uraditi commit (bez prethodnog slanja u index).

Više o ovoj naredbi pogledajte na oficijelnoj stranici

Lokalni repozitorijum

Kada želimo da aktiviramo Git tj. da počnemo da pratimo izmene u projektu, potrebno je da unutar projektnog folder-a iniciramo pravljenje „radnog git repozitorijuma“ koji se vrši na sledeći način:

Ova naredba unutar našeg projekta kreira novi folder .git (tzv. „repozitorijum“) i u njemu će se nalaziti celokupna baza o našem projektu. Od tog trenutka Git prati projekat i radi snapshot-ove stanja kad uradimo commit. Ukoliko želimo da Git više ne prati naš projekat dovoljno je da obrišemo ovaj folder.

pregled grana nakon kloniranja

Lokalni repozitorijum je u specifičnoj vezi sa udaljenim jer je on „svestan“ postojanja udaljenog repozitorijuma. U okviru lokalnog repozitorijuma uvek postoje minimum dve grane (vidi sliku):

  1. Grana pod nazivom „origin/master“ koja je lokalna verzija (kopija) udaljenog repozitorijuma. Na ovu granu se ne mogu slati naše izmene, već ona služi da sa nje uzmemo izmene (merge) jer je ona praktično posrednik tj. medjukorak za dobijanje izmena sa udaljenog repozitorijuma.
  2. Grana pod nazivom „master“ je naša lokalna grana direktno povezana za projekat (u kojoj pravimo commit-e).

Read more

Domen i hosting

Zakup domena Zakup domena je jedan od prvih koraka neophodnih za web prezentaciju. Kupovina se vrši preko ovlašćenih prodavaca (registara). Registri domena su kompanije koje prodaju domene. One moraju imati sertifikat odobren od strane ICANN, Internet Corporation for Assigned Names and Numbers (Internet Korporacija za Pripisana Imena i Brojeve). Spisak ovalašćenih registra u Srbiji možete … Read more

CSS selektori

Tipovi selektora

CSS selektori su deo CSS synatax-e, koji odredjuju HTML elemente na koje će se primeniti CSS pravila.

Univerzalni selektor

Univerzalni selektor se obeležava * (zvezdom), i njegova osobina je da selektuje sve elemente. Ovaj selektor se obično koristi kada se radi resetovanje stilova.

Primer

Definisani sa tipom HTML elementa

Ovo su najjednostavniji selektori i definišu se nazivom HTML elementa koji targetiraju.

Primer

ili

Definisani sa klasom elementa

Ovi selektori „gadjaju“ HTML elemente koji sadrže odredjenu klasu.

Primer

Selektor koji targetira klasu se obeležava sa . (tačkom) ispred imena klase.

Definisani sa ID-om elementa

Ovi selektori „gadjaju“ HTML elemente koji sadrže odredjeni ID. Obeležavaju se # znakom ispred naziva ID.

Primer

Selektor koji targetira element sa odredjenim ID-om se obeležava sa znakom # ispred ID-a.

Read more

Grunt

Uvod Grunt je alat napisan u Node.js, stoga je pre instaliranja Grunt-a potrebno instalirati Node.js i njegov package manager npm. Ukoliko su već instalirani potrebno je proveriti da li su ažurne verzije i ako je potrebno uraditi njihov update. Pošto je jedano od čestih zadataka Grunt-a kompajliranje SASS-a u CSS, potrebno je imati instaliran SASS. … Read more

JSON (format za razmenu podataka)

JSON opšte

JSON (JavaScript Object Notation) je jedan od lakših tekstualnih otvorenih standarda dizajniran za čitljivu razmenu podataka. Ekstenzija datoteke s podacima u JSON-ovom formatu je .json, dok je meta oznaka (MIME format) application/json.

JSON je format koji polako zamenjuje XML jer ima nekolicinu prednosti u odnosu na XML. JSON ne koristi tagove pa stoga ima kraći kod koji je lakši za pisanje i razumljiviji za čitanje. Mada je najbitnija prednost JSON-a u odnosu na XML je ta što se JSON parsira kroz standardnu JavaScript funkciju dok se XML parsira kroz XML parser.

Read more

Web servisi (osnove)

Šta su web servisi?

Web servis je aplikacija smeštena na nekom serveru, koja je pored osnovne namene dizajnirana da podrži interakciju izmedju dve mašine preko mreže i omogući razmenu informacija izmedju njih. Smatra se da je svaki servis i web servis ako je:

  • Dostupan preko interneta ili (interne mreže)
  • Koristi stadndardizovan sistem poruka
  • Prepoznatiljv je od strane mehanizma za pretragu
  • Nije vezan za operativni sistem ili programski jezik
Pretraga web servisa

Web Servisi se objavljuju na jedinstvenoj lokaciji gde se nude kao usluge. UDDI (Universal Description, Discovery and Integration) predstavlja centralizoanu lokaciju koja obezbeđuje mehanizam za registrovanje i pronalaženje Web servisa. UDDI koristi SOAP za komunikaciju i omogućava klijentima da pronađu servis, kao i serveru da ga objavi.

Servisi mogu biti zatvoreni (privatni) ali i javno dostupni. Listu javno dostupnih servisa možete pogledati na više sajtova:

Opis web servisa

Web servisi imaju mogućnost da opišu sebe, a za opis servisa se koristi WSDL (eng. Web Service Description Language). WSDL je napisan XML-om i sadrži informacije gde se web servis nalazi i koji protokol za komunkaciju koristi.

Saradnja sa GUI aplikacijom

Web servisi u saradnji sa GUI aplikacijom su nešto izmedju web i desktop aplikacije. Web servis na serveru daje funkcionalnost i podatke a desktop aplikacija samo daje prilagodljivi grafički interfejs koji popunjava sa dobijenim podacima od servisa. Web servis u saradnji sa GUI aplikacijom je fleksibilniji od web aplikacije jer korisnik može da prilagodi izgled aplikacije na klijentu dok korisnik web aplikaciie mora da koristi web browser i nema uticaja na to kako će aplikacija izgledati na ekranu.

Prednosti u odnosu na web aplikaciju:
  • Štedljiviji su po pitanju opterećenja mreže i resursa servera jer pri komunikaciji šalju samo odgovor dok web aplikacije pored odgovora šalju i HTML sa formom i opisom kako ogovor treba da bude prikazan. Web servisi su idealni su za „male“ uredjaje koji nisu PC tj. mobilne Pocet PC… jer je na takvom uredjaju instalirana samo front-end aplikacija a teži deo se odradjuje na serveru.
  • Lakši su za razvoj, testiranje i održavanje. Kod Web aplikacije pored neophodne funkcionalnosti je potrebno istestirati i dizajn na svim browserima i platformama dok kod web servisa autor brine samo o funkciji dok o prikazu brine klijentska aplikacija.

klijent server

Kod servisa se komunikacija odvija izmedju klijenta i servera tako što klijent pošalje zahtev serveru koji onda server taj zahtev primi i obradi ga pa u odnosu na njega formira odgovor koji zatim pošalje nazad klijentu. Klijent-server stil arhitekture odvaja problematiku dve strane komunikacijskog kanala, što znači da klijentsku stranu uopšte ne zanima način čuvanja informacija na serveru jer uvijek postoji uniforman način pristupa tim resursima. S druge strane, server je nezavisan od klijenta i ne zanima ga kako je implementirano korisnički interfejs niti u kojem je stanju pojedini klijent, čime je serverska strana znatno pojednostavljena. Ovime je postignuta njihov nezavisnost i lakše razdvojeno razvijanje obe strane, odnosno moguće je npr. unaprediti serversku stranu ili potpuno izmeniti njegovu logiku, a da klijent to uopšte ne primieti dok god je način pristupa resursima isti.

Šta je API?

Da bi se ostvarila komnikacija izmedju dva sistema potrebno je da imaju „tačku“ za kontakt, tzv. interfejs. Interfejs je posrednik (veza) pri komunikaciji izmedju dva odvojena sistema koji zajedno rade i može biti:

  • Hardverski interfejs (npr. volan, gas i menjač su „tačke pristupa vozilu“ i predstavlju posrednika između automobila i osobe koja upravlja sa njim)
  • Programski interfejs tzv. „API“ koje predstavlja „tačke pristupa“ pri komunikaciju izmedju dva programa

Rad sa servisima podrazumeva da se resursima pristupa na udaljenom serveru (pristup je putem interenet mreže), ovakva mrežna komunikacija sa sobom donosi problem pristupa i prenosa složenih struktura podataka kao i same organizacije resursa na serveru. Programeri su tokom vremena kreirali komunikaciju izmedju dva programa na razne načine tj. pravli različite tipove API-ja ali su u jednom trenutku standardizovali način komunikacije tj. napravili su skup pravila koja mrežne aplikacije trebaju pratiti pri medjusobnoj komunikaciji (npr. jedan od takvih standardizovanih api-ja je „REST API“).
Ono na šta moramo obratiti pažnju je da kada se jednom definiše API i pusti u „promet“, u slučaju da je nakon nekog vremena potrebno napraviti izmene, nije pametno menjati do sada postavljene „end point-e“ jer bi bilo u najmanju ruku neljubazno prisiljavati potrošače API-ja da menjaju već izradjene programe da bi se prilagodili na promenu. Kada se napravi promena uvek treba težiti da nastavite s podrškom za postojeća svojstva (end point-e), a da za promene dodate nova svojstva umesto menjanja postojećih.

Read more

Mrežni protokoli (osnove)

OSI referentni model

OSI referentni model (eng. Open Systems Interconnection Basic Reference Model) je apstraktni opis arhitekture mreže. OSI referentni model se sastoji od sedam različitih nivoa apstrakcije.

Slojevi Jedinica Protokoli
Aplikacija
Mrežni procesi vezani za aplikaciju
Podatak HTTP, HTTPS, FTP, SSH, DNS, SMTP
Prezentacija
Enkripcija i kodiranje podataka
Podatak MIME SSL TLS
Sesija
Uspostavljanje sesije krajnjih korisnika
Podatak RPC, PAP, SCP
Transport
Veza, pouzdanost, transport
Segment
Datagram
TCP, UDP
Mreža
Logičko adresiranje i rutiranje
Paket IP, ICMP, ARP, RARP
Sloj veze
Fizičko adresiranje, pristup medijumu
Frejm (Okvir) PPP, HDLC, Frame Relay
Fizički sloj
Transmisija signala
Bit Token Ring
IEEE 802.11

Read more

Emmet plugin

Uvod

Emmet je sjajan plugin za ubrzano pisanje koda koji može da se doda mnogim poznatim text editorima i IDE. Poseduje određene skraćenice koje, kada se kombinuju, daju gotov kod koji je mnogo duži i kompleksniji. Instalira se kao dodatak (plugin) a instalacija zavisi od IDE aplikacije u koju se implementira. Opisao sam kako se Emmet plugin instalira u sklopu PHP Storm-a na stranici „Instalacija alata za web development“. Koristi se tako što se u editoru ispiše skraćenica (eng. abbreviation) nakon čega se pritisne „okidač dugme“, default-no dugme je TAB.

Read more