Sunday, December 24, 2006

Besplatan SMS!

Pre par meseci sam otkrio da google calendar ima opciju za besplatno slanje SMS notifikacija. Može se podesiti da šalje SMS kao podsetnik za događaj iz kalendara ili kao obaveštenje da vas je neko pozvao da prisustvujete nekom događaju.
Ova opcija me je baš obradovala, naročito kad sam video da među zemljama koje su podržane za slanje SMS poruka ima i Srbija.
Nešto posle ovog otkrića sam naleteo na google-calendar-data-api. Pomoću tog API-ja možete napisati aplikaciju za pristupanje google calendar-u. Za igranje sa događajima. Za dodavanje, brisanje, pregled i sl.
Čim sam video na ovaj api, sinula mi je ideja da možda mogu napisati aplikaciju koja će, koristeći isti i gore pomenutu opciju google calendara da služi za besplatno slanje SMSova. I posle malo eksperimentisanja uspeo sam (u nekoj meri) u tome.
Aplikaciju možete preuzeti ovde.
Da biste je mogli koristiti potrebno je da uradite par stvari.
Za slanje poruka potrebno je da imate GMail nalog i kreiran google calendar.
Da biste mogli da primate poruke, potrebno je u podešavanjima google calendar-a da ostavite vaš broj telefona i otkačite opciju za slanje SMS notifikacije za "New invitations".
Što se tiče broja poruka koje mogu da se prime, google ga je ograničio na max 20 dnevno, odnosno 150 mesečno po jednom nalogu. Možete poslati beskonačno mnogo poruka.
Format poruke je malo problematičan, jer ne može iz aplikacije da se utiče na njega. Pošto google šalje poruku ona je oblika: "Damjan Tomic invites you to: TEKST VASE PORUKE @vreme i datum" (ako sa mog naloga nekom šaljem), što znači da ne može svih 160 karaktera da se iskoristi za tekst poruke. Veličina zavisi od duzine imena i prezimena onoga ko šalje poruku. Ja sam stavio da default veličina poruke bude 60 karaktera, ali to svako može promeniti u aplikaciji u zavisnosti od dužine imena i prezimena. Ukoliko je poruka koju želite poslati veća od pomenute dužine, program će je izdeliti na više manjih poruka.
Aplikacija je trenutno u verziji 1.0 :) tako da nema neke od realno potrebnih opcija, kao što su snimanje podešavanja ili spiska kontakata. To će nadam se uskoro biti ubačeno.

Aplikacija je pisana u javi. Potrebno je da imate jre 5.0 na vašem računaru. Ukoliko nemate, možete je skinuti odavde

Source će uskoro biti postavljen na http://gnu.fon.bg.ac.yu/subversion/ pa će svako ko želi moći da se igra sa ovim.

Očekujem komentare sa utiscima i novim predlozima.

Friday, September 22, 2006

bez alata nema zanata : aptana - The Web IDE

Oduvek su me narodne poslovice oduševljavale.
Toliko mudrosti u samo par reči! Mudrosti koja traje večno. Mudrosti koja može da se primeni na veliki broj problema sa kojima se ljudi sreću, bez obzira na trenutak u kome se ljudi i problemi nalaze.
Iako znam da su te poslovice primenljive na dosta situacija iz prostog razloga što su jako apstraktne, ta rima im nekako daje dušu i čini ih večnim.
Elem.
Verovatno Vam se desilo da treba da pišete neki JavaScript kood.
U principu bilo ko, ko je ikada pravio neku web stranicu imao je potrebu da napiše, ako ništa drugo onda nekakav validator za unos e-maila i sl. U takvim situacijama za pisanje tog JavaScripta se naravno koristi okruženje u kome pravite i ostatak sajta.. dreamweaver, zend, visual studio, notepad... I to je OK.
Ali šta sa situacijom kada stranica treba da ima dosta klijentskog kooda. Dosta ~ 1000 linija ili nekoliko hiljada linija..!? Tada dolazi do izražaja činjenica da ni jedno od pomenutih okruženja nema dobru podršku za pisanje JavaScripta.
Nekako mi se čini da su svi ti alati , pošto su pravljeni za html + php,asp,jsp...(ili šta već) , JavaScript shvatili kao nužno zlo, i pravili samo neke osnovne stvari vezane za to nužno zlo...

Sa razvojem Web 2.0 priče naglo je porasla potreba za okruženjem koje je napravljeno za JavaScript. Moram priznati da sam se oduševio kada sam naleteo na Aptana-u.
To je IDE zasnovan na Eclipse platformi. Postoji standalone varijanta, kao i plugin za Eclipse, ukoliko ga već imate na računaru.
Ne bih sada da nabrajam opcije koje poseduje Aptana, jer postoji dokumentacija na zvaničnom sajtu, samo bih napomenuo da ima jako dobar Code Assist ili Intelli Sense (ako tako neko više voli ;) )


Neke od stvari koje uskoro planiraju da dodaju okruženju su:
  • Internationalization
  • PHP Colorizing
  • PHP Code Assist
  • JavaScript Debugging
  • Refactoring
  • ....
Sve u svemu, ozbiljno preporučujem da probate Aptana-u, jer će Vam sigurno uštedeti dosta vremena u radu.

Tuesday, June 27, 2006

sudoku


Verovatno ste svi čuli za igru Sudoku.
Pravila su vrlo jednostavna:
Dobijete matricu dimenzija 9x9, koja je dodatno izdeljena na 9 manjih matrica (3x3), u neka polja su upisani brojevi od 1 do 9 i vi treba da popunite celu matricu tako da se u svakom redu i koloni, ali i u unutrašnjoj matrici od 3 x 3 polja, nađu brojevi od 1 do 9, pri čemu se oni ne smeju ponavljati.
Jedan nemački matematičar izračunao je da je ukupan broj kombinacija u ovoj igri 6.670.903.752.021.072.936.960, što, kako negde pročitah, odgovara broju mikrona do najbliže zvezde.
Više o igri naravno možete pročitati na: http://en.wikipedia.org/wiki/Sudoku

Imao sam priliku da se igram malo sa ovim, i ono što sam napravio možete videti ovde.
U pitanju je JAVA aplet koji rešava bilo koji sudoku zadatak (koji ima rešenje, naravno). Ukoliko ima više rešenja, prikazaće prvo na koje naiđe.
Što se algoritma tiče, program prvo pokušava da na "pametan" način dođe do rešenja, znači gleda da li je vrednost nekog polja očigledna, zatim za sva ostala polja računa kandidate za vrednosti, pa na osnovu pravila (da u 1 vrsti, koloni ili maloj matrici svi elementi moraju biti različiti) poljima koja imaju samo 1 kandidata fiksira vrednost. I to se tako vrti dok ne dođe do trenutka u kome sva ne rešena polja imaju više kandidata, tako da ne postoji način da se utvrdi koje vrednosti treba fiksirati.
U tom trenutku u priču se uključuje backtracking algoritam, koji rekurzivno pokušava da pronađe prave vrednosti.
On radi tako što uzme prvo ne rešeno polje i fiksira mu prvog kandidata, zatim za takvu matricu pokušava da nadje rešenje. Ukoliko u nekom trenutku, posle primene svih gore pomenutih pravila bilo koje ne rešeno polje ostane bez kandidata, to je signal da nešto ne valja, i rekurzivna funkcija se vraća nazad i uzima prvog sledećeg kandidata.
Ukoliko neko želi, okačiću source , pa da ga zajedno prodiskutujemo. (naravno, pošto nisam koristio nikakav obfuscator, oni sa malo više znanja mogu i sami da vide source :))

Sunday, June 11, 2006

world cup

Počelo je!
Sećam se Italije '90... To je bilo moje prvo svetsko prvenstvo. Imao sam 8 godina i toliko sam upijao utakmice da se i danas sećam dosta detalja..
Prošli smo grupu... Mateus nam zagorčao život, al ipak Kolumbija i Emirati nisu toliko jaki..
Onda Španija... Dva predivna gola Piksija Stojkovića... Ne sećam se da sam posle ikad video da je neki naš igrač dao lepše golove od tih.
Onda Argentina. I čuveni penali. Šta reći.. Valjda nismo imali sreće. Nisu ni Argentinci u finalu protiv Švaba. A mnogo bi bilo da jesu :) . Penal im je došao glave.

Ameriku '94 pamtim po Bebetu i Romariju i naravno po Robertu Bađu i čuvenom promašenom penalu u finalu. I ništa više. Valjda zbog toga što je bio rat, pa su mi sećanja iz tog perioda malo čudna..

Onda dolazi Francuska '98.
Gledao sam sve utakmice do polufinala. I onda se razbolim. Dobijem mononukleozu i završim u bolnici. A tamo nema televizora. Aaaaaaaaaa. Strašno. Sećam se da sam pitao doktora kad je ujutru došao da me obiđe.. i da mi je rekao za Francuze. Bilo mi je žao Brazila. Njih sam oduvek voleo. Naši standardno dobri :) Mijatova prečka iz penala i gol Davidsa u 93 minutu su bili dovoljni za povratak kući.

Koreje i Japana '02 skoro da se i ne sećam.. Znam se da su Senegalci dobili Francuze, da su Korejanci daleko dogurali, Turci isto, da su Brazilci dobili Švabe u finalu i da je Ronaldo bio najbolji. i to je to.

I sada konačno Nemačka '06. Lepo je počelo. Od 7 utakmica gledao sam 4 cele, ostale po malo. Od naših očekujem da pobede Holandiju sutra. Ako njih ne dobijemo mislim da nemamo šta da tražimo dalje. Realno smo bolji. Sa Argentinom će biti gusto, ako izvučemo remi biće ok. Obale Slonovače se najviše bojim. Jesu izgubili danas od Argentine, ali su pokazali da znaju jaako dobro da igraju.
Drago mi je da ovaj put nemamo neke velike zvezde u timu kao ranije. Čini mi se da su momci složni. Da znaju da igraju su pokazali u kvalifikacijama. Sad je samo bitno da budu hladnih glava. Bez ikakvog straha da udju u duele. I sve će doći na svoje mesto. Petko je strašan lik. Verujem u njega da ih je dobro pripremio.

I jedan link za kraj :)
http://www.largestonlinestadium.com/fan/damjan
oduvek su me kreativni ljudi oduševljavali. Likovi koji su pravili ovaj sajt su mnoogo dobri. Svaka im čast.

Pridružite se ljudi. Da navijamo :)

Wednesday, June 07, 2006

google - web office

Google nastavlja svoj put unapred.
Nova stvarčica iz njihove kuhinje se nalazi na http://spreadsheets.google.com/ . Ne znam da li su se do sada palile crvene alarmne lampe u Redmondu, ali mi se čini da je sad krajnje vreme za to. Kupovinom writely-a i izbacivanjem nove gore pomenute usluge MS dobija žestoku konkurenciju za svoja dva najbolja programa.




Realno, mogućnosti pomenutih googleovih web usluga teško da mogu da dostignu Word i Excel u nekim zahtevnijim radnjama, ali mislim da će bar 80% korisnika biti potpuno zadovoljno njima. Ja hoću :)
Jedva čekam da vidim šta će biti odgovor ekipe iz Redmonda, mada mi se čini da neće uspeti da odgovore na ovo. Bar ne sa ovoliko različitom filozofijom od one koju fura google. MS, kao tipična kapitalistička firma, ako želi da vlada i u narednih 20 godina, mora polako da menja strategiju. Da se što više otvori. To je, čini mi se, neminovnost.
Postali su jako tromi. Poput svake velike organizacije. Nisu spremni na promene koje se dešavaju mnooogo brzo.
Već 5 godina nisu izbacili novu verziju Internet Explorer-a!!! Sve se svodi na krpljenje postojećih stvari.

Saturday, March 04, 2006

ajax revolucija - deo drugi

Pošto ljudi, generalno, ne vole baš mnogo nove stvari, bar ne vole da ih probaju na svojoj koži, trebalo je dosta vremena da prođe od pojave IE5.0 koji je prvi ponudio mogućnost korišćenja ajax-a do toga da široke web developerske mase počnu da koriste isti.

Poslednjih meseci na svim iole posećenijim forumima ili blogovima ljudi koji se bave web developing-om, skoro svaka druga napisana reč je ajax. Naravno kao i u svakoj priči, postoje ljudi koji se oduševljavaju, i oni koji na sve gledaju sa rezervom, zatim oni koji pljuju ove prve, i neki sasvim treći koji uzvraćaju , braneći prve...
Sve u svemu mnogo se priča o ovome. I mislim da je to dobro.

Kao i posle svake revolucije , web developeri će , ukoliko uvide dobre strane ajax-a, početi da ga upotrebljavaju u svim situacijama. Gde je to moguće i gde je nemoguće, gde je potrebno i gde nije potrebno. Bar je tako do sada bilo sa svim novim stvarima.
Ono što mene lično nervira u ovakvim situacijama, je to što će , iako se zna u ovakvoj klijent-server (web browser – web server) arhitekturi šta treba da budu odgovornosti klijenta, a šta servera da nastane totalna zbrka, u kojoj se ne zna ko šta radi. Kad kažem „da se znaju odgovornosti“, naravno da mislim na postojeće design pattern-e. Kad kažem da će “da nastane zbrka”, naravno da mislim na to da će mnogi ponovo da izmišljaju toplu vodu, i da neće uspeti da je izmisle.
Posledica toga će biti da će više od pola započetih projekata (web aplikacija) opet da propadne, pola ostatka da se završi sa gomilom bug-ova i probijenim terminima, pola preostalog dela ostatka da se završi „uspešno” ... naravno , ne kažem da je do sada situacija u softverskom poslu bila bolja što se izvršenja zadataka tiče, već da to da je spisak tehničkih razloga za propadanje sw projekata verovatno dobio još jednog velikog člana.

Šta je u stvari problem?
Pa problem je u tome kako naći pravu meru izmedju dve krajnosti. Između toga da se sve dešava na serveru (klijent samo prikazuje od jednom dobijeni sadržaj) i toga da je klijent toliko pametan da zna šta mu treba i kada mu to treba i da se u tim situacijama obrati serveru i zatraži to od njega.
Prva varijanta je ona od koje se krenulo. Ona koja se koristila na početku web priče. Vremenom su se odredjene odgovornosti prebacivale na stranu klijenta. JavaScript je postao idealna stvar za skoro svaku vrstu validacije, kao i za druge klijentske poslove vezane za prikaz sadržaja. Ubrzani rast sposobnosti klijentske strane da obradjuje podatke, vrši validacije, prikazuje podatke, vuče web priču ka gore pomenutoj , drugoj varijanti.
Druga varijanta na prvu loptu zvuči super, ali se u njoj krije dosta toga.
Prvo, ne možete biti sigurni da svaki browser podržava vaš pametni klijentski kood iz onog ili ovog razloga, i drugo, bitnije, je to što ovakav pristup može da dovede do narušavanja osnovnih principa klijent-server arhitekture i da bude uvod u propast.

Saturday, January 28, 2006

ajax revolucija!

Mnogo prašine se diglo oko stvari zvane AJAX u poslednje vreme. Na žalost ljubitelja fudbalskog kluba iz Amsterdama, ne ponavlja se uspešna serija njihovih ljubimaca iz 60ih i 70ih godina prošlog veka kada su harali evropom na čelu sa našim Veliborom Vasovićem. Iako google na reč "ajax" odgovara sa http://www.ajax.nl/ na prvom mestu, jedan drugi ajax opasno preti da potisne holandjane.
Ja lično ne volim mnogo nove reči, tj. ne volim kad ljudi olako daju imena stvarima. Na pitanje drugara "šta je to ajax?" od pre par meseci sam naravno odgovorio sa FC, iako sam pretpostavio da su opet smislili novo ime za staru stvar. I naravno da sam bio u pravu. Ali ovoga puta je to bilo malo drugačije.
Ovaj AJAX je akronim od Asinhroni JavaScript i XML (Asynchronous JavaScript and XML). U stvari to je tehnika kojom se HTML strana koja se nalazi u browseru može osvežiti novim podacima bez osvežavanja cele strane. Ništa novo, rekli bi neki (da li su u pravu!?).
Ovo je moguće ostvariti na dva načina. Prvi je umetanjem u HTML stranu nevidljivog iframe taga u kome bi bila odredjena stranica koja bi se osvežavala posle određenog vremena, i koja bi na onLoad događaj pozivala neku JavaScript funkciju koja bi mogla nešto pametno da uradi. Svako ko se razume u web programiranje zna da ono što sam napisao u rečenici iznad iako zvuči prosto i nije baš tako lako izvodljivo.
Druga varijanta je u stvari i ona prava.
Ona se svodi na korišćenje XMLHttpRequest objekta.
Ovaj objekat je po prvi put video svetlo dana kao ActiveX kontrola u verziji
5.0. Microsoft Internet Explorer-a. Veoma brzo, pošto su uočene izvanredne mogućnosti i ostali browser-i dobijaju podršku za njega.
Trenutno XMLHttpRequest podržavaju svi aktuelni browser-i, bar u novijim verzijama.

E sad, pitanje je šta je to toliko pametno, važno, dobro, loše, kako god hoćete, vezano za taj
XMLHttpRequest? I zašto su ljudi koji se ne razumeju u fudbal od jednom počeli toliko da pričaju o ajaxu?
Odgovor je, naravno, svima koji su ikada napisali (ili napravili ako više volite) par html strana koje se generišu na serveru pomoću asp-a, php-a, jsp-a ili čega već, jako prost.
Mene interesuje samo jedna stvar. Zašto tek sad?!!!
Zašto nešto tako očigledno korisno nije ranije uvedeno u web priču?
Pa, odgovor je opet vrlo prost. Moralo je da se desi nešto veliko. To "nešto veliko" je google !!!
Google je medju prvima u svim svojim servisima počeo da koristi ajax.
Da li zbog toga što je to
nešto "novo i fancy"? Sumnjam.
LJudi su, jednostavno, uvideli (kao što mnogi sada uvidjaju) da je, ukoliko želite da sa serverom razmenite malu količinu podataka dovoljno da pošaljete zahtev za tim podacima i dobijete ih, bez ponovnog generisanja kilobajta i kilobajta HTML kooda koji je već na klijentskoj strani.

Znači standardna priča. Mora neko da bude prvi.