Katama do znanja – mojih prvih 12 unit testova [en]

Već duže vreme sam imao želju da svoje programerske veštine ojačam sa znanjem pisanja unit testova i da TDD (Test driven development) primenim u praksi. Čitao sam dokumentaciju, napisao neke probne testove ali nisam išao dalje od toga. Nažalost firme kod nas nisu spremne da potroše više novca i vremena na TDD jer po mom mišljenju nema ni sluha ni znanja o ovoj programerskoj tehnici.

Katama do znanja

Kata do znanja – slika preuzeta sa travel67.wordpress.com

Juhn Cleary je objavio blog post u kojem najavljuje da će 12 dana objavljivati i raditi po jednu TDD katu i poziva programere da mu se pridruže. Bio sam oduševljen idejom jer sam znao da je to idelan način ulaska u novu tehnologiju. Jer kako kaže John nećete se probuditi jednog dana i reći sebi “Od danas ću početi da primenjujem TDD u razvoju aplikacija”. Prihvatio sam ovaj izazov kao i mnogi drugi programeri širom sveta.

Tviter je bio mesto na kojem sam pratio sva dešavanja u vezi ovog izazova. Svi smo se okupljali oko hashtaga #12tdds gde su programeri razmenjivali mišljenja i svoja rešenja zadataka/kata.

Inspiracija ovog izazova jeste syber-dojo, online alat koji vam omogućava da radite postavljene zadatake u nekom od popularnih programskih jezika koristeći TDD. Alat se može koristi sa bilo kog mesta: posla, kuće ili kafića. Za pokretanje ovog alata nije potrebno da podešavate razvojno okruženje na svom računaru.

Učenje katama je sjajan način koji će vas motivisati da učite korak po korak, tempom koji vama odgovara. Kata vam neće oduzeti previše vremena. Svaka uspešno završena kata doneće vam parče znanja i bićete bliži svom cilju.

Osećaj kada posle refaktoringa (izmene koda) pustim testove koji mi daju signal da je kod ostao funkcionalan, jeste potvrda da je TDD tehnika koja može da obezbedi stabilnost aplikacije. Kada pogledam iza sebe vidim da mi je ovaj izazov pružio mogućnost da bolje vidim prednosti razvoja vođenog testovima i da ga sprovedem na praktičnim primerima.

Kada sam završio svih 12 kata preko twitera sam zamolio John-a da pogleda moje testove i kod kako bih bio siguran da sam testirao prave stvari na pravi način. Iznenadio sam se kada sam dobio opširan odgovor u kojem mi John daje savete za poboljšanje koda i bolje imenovanje test metoda, ali i pohvale za određene kate i rešenja. Zahvalan sam John-u na vrednim savetima koji će mi pomoći da moj kod bude još bolji.

Moje kate sa rešenjima i testovima su dostupne na gihubu – https://github.com/Djuki/tdd12

Travis je platforma koja se lako integriše sa github servisom, a na svaki vaš push koda Travis će pustiti automatizovane testove u okruženju koje ste vi definisali. U slućaju da testovi ne prođu travis će vas obavestiti o tome. Ovo može biti veoma korisno za timove sa više programera. Moji prvi unit testovi su postavljeni i na travis, gde možete videti kako izgledaju testovi kada se pokrenu.

Osim boljeg razumevanja unit testova ovaj izazov mi je doneo i ponudu za posao u Londonu. Ovo je samo dokaz da se svaki trud i svaki korak ka znanju uvek isplati, kao i da entuzijazam ne može ostati neprimećen. Continue reading

Zašto ste morali biti na WebCamp-u u Zagrebu [en]

Ovog vikenda u Zagrebu održao se prvi Web Camp koji je okupio open source zajednice iz Hrvatske. Šest korisničkih grupa i organizacija zajedno su organizovale ovu jednodnevnu konferenciju namenjenu web programerima. ZgPHP, Python HR, HrOpen, CodeAtSix, Flash.hr i Hujak (User grupa Java programera) potpomognuti Microsoft zajednicom.

Pravac – Zagreb

 

Veliko interesovanje na WebCamp-u u Zagrebu

Veliko interesovanje na WebCamp-u u Zagrebu

U petak smo se smestili u voz i uputili ka Zagrebu kako bismo se družili sa kolegama iz regiona a vratili smo se puni pozitivnih utisaka. Predavanja su bila organizovana u dve sale pa smo uvek morali birati između dva predavanja koje ćemo da slušamo a koje ćemo propustiti. Često odluka nije bila laka, jer su predavanja bila veoma kvalitetna, a teme veoma privlačne.

Konferencije su mesta na kojima ćete se povezati sa ljudima, imati priliku da popričate sa njima i pitate ih šta god da vas zanima, a to je značajnije od samih predavanja. Predavači dolaze na ovakva predavanja jer žele da podele i svoja iskustva i svoje znanje, koje su stekli kroz praktičan rad, i biće im zadovoljstvo da odvoje vreme za vas na druženjima pre i posle same konferencije.

Vaše znanje i interesovanja treba da širite, a konferencije će vam u tome pomoći, što znači da treba da slušate i predavanja koja nisu usko vezana za vaš posao i vaša trenutna interesovanja. Zato sam se i odlučio da čujem nešto više o Erlang jeziku o kojem nisam znao apsolutno ništa. Predavač Saša Jurić je predstavio priogramski jezik Erlang tako što je “zaronio” u samu dubinu ovog jezika i predstavio sve njegove prednosti koje mogu iskoristiti sistemi kojima je skalabilnost prioritet.

Highlight predavanja

Ilija Studen

Ilija Studen govori o tome kako se “zakopao” sa verzijom 3

Tomislav Capan i Luka Kladarić pričali su o svojim iskustvima u radu distribuiranog tima, gde smo moglu da čujemo nešto o tome kako treba organizovati tim koji se širi i čiji su članovi dislocirani. Tomislav Caplan je predstavio prednost i jednostavnost Trello aplikacije i KanBan metodologije rada, koju je u poređenju sa SCRUM metodologijom fleksibilnija i manje striktna, pa je pogodnija za samoorganizovane timove. Zanimljivo je napomenuti da je KanBan korišćen u Toyoti koja je poznata po svojoj inventivnosti kada je u pitanju organizacija proizvodnje. Luka Kladarić radi u timu koji stoji iza veoma popularnog i posećenog web sajta deviantart.com tako da smo imali priliku da čujemo kako izgleda organizacija tako velikog i uspešnog tima.

Continue reading

Nije programer svako ko kodira [en]

Svi znaju da ako se bavite informacionim tehnologijama morate stalno da učite kako vas vreme i nove tehnologije ne bi “pregazile”. Lako možete pretpostaviti da su programeri ljudi koji stalno uče i rade na sebi i svom profesionalnom usavršavanju. Ne, to zapravo nije tako kao što se čini na prvi pogled. Mali je broj onih koji napreduju i uče dovoljno brzo da bi mogli da kažu za sebe da jesu programeri.

Šljaker ili Programer

Slika preuzeta sa http://codesoftly.com/2010/03/ha-code-entropy-explained.html

Programeri koji rade u firmama, pritisnuti rokovima, i konstantnim nedostatkom vremena zapravo nazaduju, jer tehologija nema vremena njih da čeka. Njima je zapravo dobro, oni su zadovoljni svojim znanjem, oni uspešno ispunjavaju zahteve koji se postavljaju ispred njih, klijenti će dobiti željenu funkcionalnost, a da li je to dovojno ?

Situacija u praksi sa kojom sam se ja susreo je zapravo takva da firme ne ulažu u znanje svojih programera, a programeri ne mogu da vide koliko je zapravo njihovo neznanje, i koliko je veliki spektar znanja koje čeka na njih.

Ono što nedostaje programerima jesu predavanja, posećivanje konferencija, međusobna razmena znanja. Konferencije i predavanja ljudima će dati usmerenje, ideje i osnovne informacije. Najvažnije od svega “otvoriće im oči” i nove horizonte. Benefit za firmu premašuje uložen novac, kvalitetni ljudi gladni znanja su neprocenjiv resurs.

Razmena znanja među članovima tima je odličan početak i dobar put do boljeg tima i kvalitetnijeg koda. Važno je razumeti da dobar kod znači brži razvoj, lakše reagovanje na promene i u krajnjem ishodu bolji proizvod za klijenta.

Mrzim svoj kod !

Pogledajte prethodni projekat koji ste radili, pogledajte kod koji ste pisali pre godinu dana. Da li vam se dopada kod koji ste vi pisali ?

Ako vam kod koji ste pisali pre godinu dana deluje dovoljno dobar, možda i savršen, onda ne samo niste napredovali, vi ste zapravo nazadovali. Svaki kod je prepun nedostataka i u svakom kodu ima mesta za refaktoring. Dobar programer prosto mrzi kod koji je pisao prošle nedelje, jer kod je loš niste vi loši, ne shvatajte vaš kod suviše lično.

Continue reading

Da li MySQL odlazi u istoriju ? [en]

Da li je došlo vreme da MySQL okači patike o klin i tiho se povuče u zasluženu penziju?

Mnogim web programerima ova baza podataka predstavlja nezaobilazni alat za razvoj web aplikacija i upravo je ova baza podataka zadužena za čuvenje podataka na najvećem broju sajtova. Uprkos ovim činjenicama, ova baza podataka nema svetlu budućnost.

Razvoj Interneta i socijalnih mreža koje okupljaju ogroman broj korisnika, među kojima prednjači Facebook sa preko 500 miliona korisnika, uticao je da se uzdrma MySQL i potraže alternativna i inovativna rešenja. Sam Facebook je doprineo razvoju i unapređenju InnoDB endžina, ali kako bi postigli skalabilnost morali su da pokrenu razvoj sopstvenih rešenja (Cassandra).

Skalabilnost

Skalabilnost je mogućnost aplikacije da ponese povećanje zahteva i broja korisnika a da sama aplikacija ne mora da se menja. Što je aplikacija skalabilnija ona će lakše podneti povećan protok podataka. Cilj kojim teže svi projektanti sistema jeste da se postigne linearnost u brzini odgovora na zahtev i količine podataka sa kojima se manipuliše.

Postoji horizontalna skalabilnost i vertikalna skalabilnost kada govorimo o samom hardveru.

Vertikalna skalabilnost je kada se je aplikacija smeštena na jedom serveru, a na povećan protok reagujemo tako što serveru dodajemo memoriju, jači procesor, nova jezgra ili dodatni hard disk.

Horizontalna skalabilnost je idealnije rešenje, posebno za velike sisteme. Dodavanjem novih nodova sistem nastavlja da radi kao do sada samo sa novim igračem(nodom) u timu. Nod predstavlja jedan server.

Kada web aplikacija dođe do stadijuma da povećan broj podataka sa kojima se manipuliše utiče na brzinu odgovora na zahtev, tj na učitavanje stranica, možemo reagovati na više načina:

  • Uložiti gomilu novca u kupovinu hardvera koji će moći da se nosi sa novonastalom situacijom.
  • Misliti na vreme i dizajnirati samu aplikaciju tako da bude skalabilna, a to ćemo postići tako što ćemo na probleme odgvarati rešenjima koja podižu performanse. Ne postoji univerzalan odgovor već svaki scenario i svaka situacija zahtevaju posebno rešenje. Ukoliko sama aplikacija nije skalabila, treba pronaći usko grlo i na za njega odgovarajuće rešenje. U relacionim bazama podataka čest odgovor na probleme jeste denormalizacija. U školama ste učili da treba koristiti normalizaciju, ali sada ne pravimo anketu koju će popuniti vaše kolege sa klase, ovo je realnan svet sa 500 miliona korisnika i nekoliko milijardi otvorenih stranica dnevno.

Continue reading

My dev goals for 2012 [en]

newyeargoals

newyeargoals

Inspirisan člankom 11 Things every Software Developer should be doing in 2012. koji je podelio moj prijatelj Goran, odlučio sam da zapišem i podelim sa vama svoju listu ciljeva za 2012 godinu.

Osvrnuću se na prethodni period, od godinu ili čak dve koliko sam bio manje aktivan na blogu, ali svakako aktivan kao web programer. Predhodni period je bio veoma uspešan za mene, i sada kada se na trenutak osvrnem iza sebe ne mogu da ne budem zadovoljan svojim radom, projektima na kojima sam radio, alatima i tehnologijama koje sam savladao. Ali još važnije je da sam uživao u tom ponekad previše napornom i stresnom procesu učenja.

Uvođenje Codeigniter frejmvorka i razvoj custom CMS-a je obeležilo početak putovanja. Istraživanje Kohana i Yii frejmvorka, su bili samo put do jednog od najuticajnijih fremvorka u PHP zajednici – Zend fremvork-a.

Važnije od alata koje sam koristio jeste primena SOLID principa u svakodnevnom radu, kao i primena dizajn paterna i stalno unapređenje objektno orijentisanog dizajna (OOD).

Razvoj platforme za testiranje studenata u ZF je obeležilo kraj prošle godine, ali i promenu poslovnog okruženja. Napustio sam LINK group, i započeo novo poglavlje u svojoj karijeri.

Vreme je da pređemo na listu ciljeva za 2012 godinu. Continue reading

Rezultati i analiza Evrovizijskog web sajta [en]

U Maju ove godine (2008) u Beogradu je održana Evrovizija. U Beograd su došli gosti iz cele Evrope a mi smo se pokazali kao pravi domaćini. Da bih ispratio dešavanja sa i oko Evrovizije, sa kolegom Milošem Spasićem pokrenuo sam sam sajt Eurosong2008Belgrade.com. Kod nas nije postojao sajt sa svežim Evrovizijskim vestima, čak je i oficijelni sajt RTS-a ostavio veoma bled utisak, pa je upravo ovakav sajt bio potreban ljubiteljima Evropskog pop zvuka.

Pre pokretanja sajta Evrovizije, uz pomoć Google Trends alata, ispitao sam koliko su tražene ključne reči vezane za Evroviziju. Primećujemo da interesovanje raste u toku samog održavanja Eurosonga. Sa grafikona vidimo da je ključna reč “eurosong”, traženija od reči “evrovizija”, i takva je situacija u svim bivšim Jugoslovenskim republikama, koje su ciljno tržište našeg sajta. U Srbiji i Makedonije ključna reč “evrovizija” je tražena 50% manje od reči “eurosong”, dok je situacija u Bosni i Hrvatskoj drugačija, na ovim tržištima “evrovizija” skoro da se i ne traži na Internetu tako da je razlika u korist reči “eurosong” još veća. Ova analiza nam je pokazala da sajt treba optimizovati za ključnu reč “EUROSONG”, i da nalet posete treba očekivati u danima održavanja evrovizije.

Google Trends Tool

Google Trends Tool

Kao što se i vidi na Izveštaju Google Analytics-a u danim održavanja Evrovizije poseta na našem sajtu je značajno porasna ali pik nije visok kao na Google Trends-u. Mi smo se mnogo bolje pozicionirali za ključnu reč “Evrovizija“, za koju smo pozicionirani na prvom mestu na Google pretraživaču.

Najveću posetu imali smo 25. Maja kada nas je posetilo 12067 jedinstvenih posetilaca i tada je otvoreno 35498 stranica. Naš sajt se nalazi na shared hostingu, sa ograničenim resursima, tako da smo usled velike posete počeli da opterečujemo MySQL Server i sam procesor tako da smo morali da brzo reagujemo i keširamo sajt. Posle instalacije plugina za keširanje WordPress-a odahnuli smo, sajt se brzo učitavao i resursi na serveru nisu prelazili dozvoljene granice. Continue reading

Yahoo! Buzz – Treba li nam još jedan DIGG ? [en]

Yahoo Buzz

Yahoo Buzz

Yahoo Buzz – je novi socijalni sajt, koji me u prvi mah podsetio na DIGG i slične sajtove na kojima se glasa za omiljne linkove kao i dobre i kvalitetne priče. Mnogo je DIGG klonova po internetu, ipak Yahoo Buzz ima perspektivu, samim tim što iza njega stoji Yahoo.

Biće zanimljivo videti kakvu će poziciju izboriti Yahoo Buzz s obzirom na to da kasno ulazi u trku sa ostalim konkurentskim sajtovima, koji su već duže vreme na web-u.

Yahoo je blogerima ponudio Buzz dugmiće, koje mogu postaviti na svoje blogove. Moram zameriti što se ovi dugmići mogu iskoristiti za ručno umetanje u svaki post ili vest pojedinačno, jer se link mora ukucati u kod.

Naravno uz malo programerskog znanja lako se mogu implementirati u svaki blog cms, ali još uvek ne postoje pluginovi za WordPress ili Blogger. Ovo je samo početak, očekujem da će se ovaj sajt još razvijati i da će biti daleko bolji i nuditi mnogo više nego u ovom trenutnku.

Šta mislite da li je web čeznuo za još jednim DIgg like sajtom ?

Predstavljam vam: Google Insight Search [en]

Za sve one koji vole da prate ineresovanja web korisnika, kao i pretrage na google pretraživaču, Google Insight for Search, je alatka koja će im pomoći da proniknu u trendove pretrage na web-u. Ova alatka je namenjena svima koji se bave webom, posebno onima koji na webu žele da zarade novac.

Rezultati se mogu filtrirati po državama, pa čak ako je potrebno i detaljnije po regionima u tim državama, ali moram da napomenem da se Srbija ne nalazi u listi zemalja, što je minus za ovu alatku. Prvo što ćete uraditi, upisaćete listu ključnih reči koje vas zanimaju. Osim ovog omogućeno je i vremensko filtriranje rezultata, za svaku godinu zasebno, počevši od 2004 godine, zatim poslenjih 30 60 ili 90 dana ili vi sami možete zadati vreneski period koji vas zanima.

Google Insight će nam pružiti i grafički prikaz za svaku ključnu reč, na mapi ćemo videti u kojim je regionima veoma tražena kao i gde je manje popularna . Ovo može da bude odlučujuće ako želite da optimizujete web sajt za određeni region. Na ovaj način možete da proverite da li je isplativo ulagati baš u taj region u određenoj niši ili je možda pametnije odlučiti se za neku drugu oblast u istom regionu.

Ispitaćemo Finsko, Američko i Hrvatsko tržište kada je u pitanju pretraga mobilnih telefona. Ključne reči koje smo uključili u pretragu su: nokia, sony ericsson, motorola i samsung , za period u poslednjih godinu dana.

FInsko tržište

Finland search

Finland search

Njatraženija ključna reč je Nokia. Samsung je skoro 4 puta manje tražena ključna reč od nokia-e, dok su ostala dva proizvođača daleko ispod. Najtraženije ključne reči su:

  • nokia n95
  • nokia pc suite
  • gigantti
  • nokia n73
  • nokia e90

Ključne reči u porastu su:

  • nokia ovi
  • nokia n96
  • nokia n95 8bg

Kao što vidimo ni traga ni glasa od ostalih proizvođaća, Nokia i više nego ubedljiva. Region u kojem su ove ključne reči najtraženije jeste provincija zapadne Finske. Continue reading

AdSense Attachment Plugin – Izveštaj [en]

Pre godinu i po dana, objavio sam AdSense Attachment Plugin, koji je preuzet sa web-a 1136 puta. Ovaj plugin je namenjen WordPress platformi, i posle njegove instalacije i jednostavnog podesavanja, sve slike sa web sajta koje su podešene da se otvaraju u novom prozoru, kao WordPress stranica, biće prikazane u novom ruhu okružene reklamama, a ne kao do sada u layout-u vašeg sajta.

Na ovaj način blogeri proširuju mogučnost svoje zarade, posebno ako se radi o sajtu sa mnogo slika velike rezolucije. Ukoliko korisnik ovog plugina koristi adsense reklame, 5% AdSense reklama biće izmenjene tako da pokazuju moj AdSense ID, što znači da će deo zarade otići i u moj džep, ili ti na Google ček.

Sada ću vam predstaviti grafikon zarade po mesecima: Continue reading

FriendFeed – svi web servisi u jednom feed-u [en]

FriendFeedSkoro sam se prijavio na FriendFeed, veoma korisna alatka u ovoj zbrci socijalnih mreza i mini blog platformi kao što je twitter, zatim mnogobrojnih bookmark servisa kao što su digg, delicious, stumbleuppon i drugi, i na kraju flickr servis za galerije slika ali i last.fm za ljubitelje dobrog zvuka.

Svi vaši (web) prijatelji koriste ove servise, pa ako želite da budete u toku bilo bi lepo da možete da na lak i jednostavan način pratite, koje sajtove oni posećuju, šta im je poslednje privuklo pažnju, obavestite se o svežoj galeriji slika sa letovanja, ili nekog okupljanja kao što je blogopen. Ali i saznate za nove korisne servise i sajtove, čujete važnu vest koju ne bi ste smeli da propustite, a svi iz vaše web zajednice već bruje o tome. Continue reading