Javascript sort Object by value

You sometimes need to use Javascript’s Object() as an associative array to store more data? But than you lose that array.sort() function.. If you know what I mean, than here’s the solution.

A small function to sort a Javascript Object() by value. There are a lot of sorting algorithms, like for instance Insertion sort, but we’ll use the simplest one, and that is Bubble sort.

I’m not going to explain how it works, if you’re interested check the link above or catch a video on Algorithm basics on MIT video.

So, the code.

/*
a simple bubble sort algorithm on an object
*/
function bubbleSortObject(object) {

	for (i in object) {

		for (k in object) {

			if (object[i] < object[k]) {

				var temp = object[i];
				object[i] = object[k];
				object[k] = temp;

			}

		}

	}

	return object;

}

var numbers = new Object({'item1': 12345, 'item2': 98765, 'item3': 0.00001});

var result = bubbleSortObject(numbers);

Hope it helps ;)

Posted in A chunk of code | Tagged , , | Leave a comment

Karta kebaba.. na iPhoneu

Ne znam jeste li upoznati sa mojom interaktivnom kartom kebaba u Zagrebu Hrvatskoj, ali ako niste iskoristit ću priliku da nabrzaka pojasnim.

Dakle, interaktivna karta kebaba napravljena je u svrhu lakšeg pronalaženja mjesta gdje se može pojesti kebab u gradu. Napravljena je u jednu večer, sa malim izmjenama dan poslije, ali ubrzo je doživjela malo veće promjene. Dodana je mogućnost ocijenjivanja lokacija itd. Karta je i dalje online i može se naći na slijedećoj adresi:

http://lab.nemojkliknut.com/kebab

Ali ono o čemu bi vam ja sada želio reći je.. o toj istoj karti ali na iPhoneu. Najveći problem karte je bio to što je zahtjevala računala kraj sebe i Internet konekciju. Nije bilo moguće pristupiti karti preko mobitela, tj. cijela stvar je bila katastrofalna. Google Maps API2 je bio katastrofalan što se tiče pinch-to-zooma, a bilo je i drugih stvari koje su bile loše izvedene.

Sada, nakon više od pola godine tehnologija je malo napredovala i imamo Google Maps API v3 sa novim mogućnostima, što mi je također omogućilo da prenesem interaktivnu kartu kebaba na iPhone. Tako da vam predstavljam…

Kebab na iPhoneu

Kebab na iPhoneu je mala web aplikacija prilagođena za iPhone koja ima isti zadatak kao klasična interaktivna karta kebaba – pokazati vam mjesta gdje možete pojesti kebab.

Ono što je korisno kod iPhone verzije je što web aplikacija preuzme vašu trenutnu lokacije, nacrta radius od 500m i izračuna najbližih 5 lokacija.

Trenutno ne podržava neke osnovne funkcionalnosti koje ima klasična interaktivna karta, poput ocijenjivanja i dodavanja novih lokacija, ali u budućnosti vjerojatno bude.

Stranica se može dodati na Home screen i time doživljaj bude još veći :)

Joj da, skoro zaboravih, adresa je:

http://lab.nemojkliknut.com/kebab/i/

EDIT: bugove samo trpajte u komentare, znam da ih ima gro

Posted in Lab | Tagged , , | 2 Comments

Parsing data behind hash with Javascript

A small snippet of code I wrote a few minutes ago. I tried to find a function that would parse the URI so I can load the appropriate content via AJAX.. and well, after a few Google searches I found nothing. Maybe there are some better solutions, but here’s my small contribution.

function parseURI() {

	// get the URI and remove the hash
	var uri = window.location.hash.substring(1);

	// parse the data
	var elements = uri.split('&');

	// the Object that will have the data
	var data = new Object();

	// do a for loop
	for(i = 0; i < elements.length; i++) {

		// split the element to item -> value format
		var cur = elements[i].split('=');

		// append the element to the list
		data[cur[0]] = cur[1];

	}

	// return the result
	return data;

}
Posted in A chunk of code | Tagged , , , | Leave a comment

Opera Mini for iPhone

Prije nego li se upustim u daljnje pisanje morao bih napomenuti da sam veliki fanboy Opere.. stvarno veliki. Koliko god obožavao Operu, ipak vidim neke nedostatke i volio bih proći kroz sve što sam čuo od trenutka pojave Opere u AppStoreu.

Kako je sve počelo (uglavnom ne zanimljiv dio ljudima koji su u toku)

Stari Opera logoAli krenimo prvo od  početka, Opera software Norveška je firma osnovana davne 1995. Razvoj preglednika započeli su dvojica pionira Interneta 1994. godine, a prva verzija preglednika izašla je nekoliko godina kasnije, točnije 1997. Iako se preglednik razvija već preko 10 godina, nije zabilježio veću popularnost. Početkom milenija Opera prihvaća partnerstvo sa Symbianom i tako počinje razvoj mobilog preglednika, Opera Mobile. I to se kasnije pokazalo kao pun pogodak za Operu.

Opera software po zadnjim podacima zapošljava 710 osoba, glavno sjedište se nalazi i dalje u Oslu, a uredi Opere još se mogu naći u Sjedinjenim Američkim Državama, Poljskoj, Švedskoj, Japanu, Češkoj itd. Nedavno je objavljena vijest da je Opera dostigla jednu veliku točku, a to je 100 mil korisnika (doduše, 100 mil korisnika ako zbrojimo računalni i mobilni preglednik zajedno). Sa tom doista velikom brojkom, moje “nije zabilježio veću popularnost” sada više ne djeluje tako.

Logičan slijedeći potez za ovakvu kompaniju je širiti se na što više uređaja, pa se tako pojavljuje Opera Mini for Android, Opera Mini for Windows Mobile, Opera for Wii itd. Jedini mobilni uređaj na kojeg Opera (donedavno) nije uspjela plasirati svoj preglednik jest Apple iPhone. Zbog poznatog stava Applea da odbija sve što može činiti konkurenciju (iako znam da će me sada neki osuditi i reći kako nije zbog toga), Opera je morala proći trnovit put da bi zadovoljila sva pravila i opet se nadati da Apple neće reći ne, čisto zbog “dupliciranja postojeće Opera Mini for iPhone Speed dialfunkcionalnosti”. Glavno ograničenje je bilo to što je Apple odobravao isključivo aplikacije koje koriste Webkit rendering engine (npr. njihov Mobile Safari) dok Opera koristi Presto što čini cijelu situaciju puno kompliciranijom.

Ali na svu sreću, društvo iz Norveške nije željelo odustati i nakon puno razmišljanja, stvorena je Opera Mini for iPhone, mobilni preglednik koji kako development team tvrdi, zaobilazi sva ograničenja koja Apple nameće.

I doista, 20 dana nakon što je mobilni preglednik predan u ruke Applea, odlučeno je da se Opera Mini for iPhone pušta u AppStore.

Tim potezom je Apple učinio nešto čudno, dozvolio prvom ne Webkit pregledniku pristup AppStoreu. Ne mogu reći koliko je ovo važan dan za Opera software, a sada idemo na samu aplikaciju.

Opera Mini for iPhone,  v.5.0

Uredu, da se odmah razjasnimo  — nije savršeno. Čuo sam dosta stvari o aplikaciji pa bih volio malo prokomentirati jednu.

Apple je odobrio Operu Mini samo zato da pokaže koliko je to lošije iskustvo za korisnika.

— Pa možda bih se i složio, moguće je da je to skriveni motiv Applea, jer kako će se preglednik koji ne koristi Webkit rendering engine natjecati sa Mobile Safarijem kada mora preskakati kroz obruče da bi opće bio odobren. Svima je jasno ko’ dan da Apple gura svoje proizvode naprijed i nema šanse da će dozvoliti konkurentu da uzme svoj dio kolača.

Opera Mini for iPhone Context menuTo nije dobro, ali evo već godinama Apple uspjeva sa tom logikom. Dakle, slažem se, nije preglednik dobar kao Mobile Safari, ali za to nije kriv development team Opera softvera.

Uostalom, na iPhoneu nije moguće birati primarni preglednik, što naravno ide u korist Mobile Safariju.

U Operi su napravili nekoliko pogrešaka, ali to su oni klasični početnički fulanci, npr. scroll to top ne postoji. Pinch to zoom nije onaj pravi, već štipkanjem svog ekrana (kako kinky) se prebacuje zoomed in-out mod. Prvi problem se definitivno može riješiti, drugi je pitanje kako će se izaći na zelenu granu, ali opet cijeli taj problem nastaje čisto zbog ograničenja koja Apple nameće.

User interface elementi su čak i meni nejasni, naime Opera Mini for iPhone ne koristi klasični <select> već kreira svoj, a također je ista stvar i sa kopiranjem teksta. Kopiranje teksta još mogu shvatiti jer kroz cijeli iPhone se provlače tri opcije: cut, copy & paste dok Opera želi recimo i search.

Čuo sam još i da dizajn sučelja ne valja, ali ne bih se složio. Uglavnom, da tu previše ne ulazim u raspravu, pogledajte sliku ispod.

Opera Mini na svim platformama

Ne znam primjećuje li se, ali na svim mobilnim platformama Opera Mini je ista, sad recite vi meni je li to stvarno glupo. Istina je da dizajn nije onakav na kakvog su se naviknuli iPhone korisnici, ali da je loš  — nije. Nema ništa loše u tome da se korisniku koji prelazi sa recimo Sony Ericssona (na kojem je koristio Operu) na iPhone olakša snalaženje i lakše pregledavanje.

Ima još nekoliko stvari koje su meni odlične i koje ne mogu izostaviti, a evo ukratko mala lista:

  • Pretraga unutar stranice
  • Brzina (stvarno je munjevito brzo)
  • Opera Link — web servis koji sinkronizira vaše bookmarkse sa desktop verzijom preglednika
  • Tabovi — ozbiljno Safari, čemu sakriti cijelu web stranicu da bi vidjeli kako novi tab nastaje?
  • Brzina još jednom

Još je puno detalja koji se mogu i moraju popraviti u slijedećem updateu, ali polako sa tim. Ljudi reagiraju kao da je riječ o finalnom proizvodu koji neće vidjeti niti jedne izmjene. Najvažnije je to da je Apple odobrio aplikaciju kao takvu, a onda će se i ostali problemčići srediti.

Prije nego završim, Opera Mini for iPhone besplatna je i dostupna u AppStoreu.

Evo, toliko o svemu što trenutno imam za reći u vezi ove teme, a sad oprostite, idem se smijati koliko Opera Mini brže otvara stranice : )

Posted in Uncategorized | Tagged , , , , | 1 Comment