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

#phpUpBG probudio uspavanu PHP zajednicu u Srbiji [en]

PHP zajednica u Srbiji se konačno probudila, spremna da okupi sve nas koji se na bilo koji način bavimo ovim popularnim programskim jezikom. Potreba da se  zajednica okupi je više nego očigledna, a sama ideja se rodila u jednom od lokalnih novobeogradskih kafića.

PHP UP BGNakon što se ideja proširila putem društvenih mreža i foruma i zarazila još entuzijasta okupili smo u pivnici Kazina na Terazijam na prvom #phpUpBG-u. Razmenili smo sjajne ideje i utvrdili zajedničke ciljeve uz dobro druženje i energične sagovornike. Ovo je samo jedan u nizu ovakvih okupljanja, tako da vam preporučujem da zapratite @phpupbg na tviteru kako bi ste bili na vreme obavešteni o sledećim okupljanjima koje sigurno ne želite da propustite.

Desetak ljudi spremnih naoružanih entuzijazmom, okupili su se u pivnici gde su razmenili ideje i napravili planove za budućnost. Sastav ekipe koja se družila na prvom okupljanju je: Milan Popović aka @komita1981, Nemanja Čedomirović aka @cedomirovic, Aleksandar Varničić aka @tasmaniski na DPT forumu, Nebojša Dolaš, Sanja Drakulović aka @sindyoke, Miloš Đekić aka @milos_djekic i ja (Ivan Đurđevac) aka @djuki. Sve vas koji čitate očekujemo na sledećem okupljanju. Detaljniji izveštaj sa okupljanja pročitajte na viewsource blogu.

Zašto smo pokrenuli phpUpBG ?

Zato što želimo da širimo znanje i promovišemo dobru programersku praksu. Organizovaćemo okupljanja na kojima ćemo se družiti i razmenjivati znanja uz kvalitetna predavanja koja su u vezi sa najnovijim tehnologijama i dešavanjima na PHP sceni. Ljudima koji se bave webom i Internet tehnologijama potrebna je razmena ideja i konstantno širenje znanja, a svi zajedno ćemo jedni drugima pomoći da se informacije šire brže i da svi zajedno brže napredujemo u osvajanju znanja kroz dobru zabavu i druženje.

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

Hakeri mi ponovo idu na nerve [en]

Nažalost, Đukijev blog je još jednom pretrpeo manju štetu posle napada hakera.  Juče je baza podataka, oštećena tako da je WordPress nije prepoznavao kao svoju i nudio je ponovnu instalaciju blog sistema. Posle oporavka MySQL baze podataka, blog je oživeo ali to nije bilo dovoljno da se blog povrati na pređašnje stanje.

Stranice (Pages), bile su obrisane, a bila je dodata nova stranica About Me, sa standardnim tekstom koji se generipe pri instalaciji WordPress blog sistema. Kako Google pretraživač čuva keš svih stranica na web-u lako sam povratio HTML, stranice Portfolio i kreirao novu Kontakt stranicu.

Bilo je potrebno i obrisati nekoliko generisanih postova, i blog je već počeo da liči na sebe. Svi generisani postivi imali su isti sadržaj, a to je sadržaj koji WordPress geniše u novom postu i novoj AboutMe stranici.

Duplirani sadržaj

Blog je imao duplirani sadržaj između svojih postova ali i sa velikim brojem blogova na web-u koji nisu obrisali ili izmenili prvi post i About Me stranicu, što je dovoljan razlog da blog bude slabije rangiran na Google pretraživaču i da se diskredituje vrednost domena, ukoliko se ovaj nered ne ispravi i pobriše.

Posle pregleda bloga, bekapovao sam bazu podataka, i podigao WordPress sistem na najnoviju verziju 2.7. Iako je ova verzije već duže vreme aktuelna, a čuo sam da je stari WordPress ranjiv i da treba preći na verziju 2.7, ja to nisam blagovremeno učinio, a ovaj napad mi je još jednom pokazao da treba slušati savete i uvek ažurirati WordPress na najnoviju verziju. Posle verzije 2.7 to neže biti problem, jer će WordPress moži da se automatski ažurira.

Izvinjenje

Izvinjavam se svim blog agregatorima, DevProTalk forumu i svim ostalim RSS pretplatnicima, koji su primili postove koje ja nisam objavio, već WordPress koji je bio izložen hakerskom napadu. Continue reading

Blogging Idol 2 je otvoren za prijave [en]

Vreme je za Blogging Idol 2 ! Takmičenje je ideja DailyBlogTips bloga, a nagradni fond je $4 500 u nagradama. Ovakva takmičenja su idelana da učesnici poboljšaju svoje blogove, povećaju broj RSS čitaoca, a ne zaboravimo organizatora koji računa na povećanu posećenost.

Blogging Idol 2

Blogging Idol 2

Nagrade:

Da biste učestvovali na Blogging Idolu morate da ispunite sledeće uslove: Continue reading

Kako pripremiti blog za web avanturu ? [en]

Ovih dana sam pokrenuo blog o programiranju, na engleskom jeziku, i ako mislite da je dovoljno instalirati WordPress ili neku drugu blog alatku i da ste već spremni da vaš entuzijazam pretočite u blog postove, razmislite još jednom.

Pokušaću da sastavim listu “Kako pripremiti blog za web avanturu”. Ako i napravim neki propust, budite slobodni da predložite vašu listu. Continue reading

Čovek kojeg želim videti na BlogOpenu [en]

Gary VaynerchukListajući blogosferu preko Google Reader-a, naleteo sam na nastup Gary Vaynerchuk-a na Web2.0 Expo-u koji je održan ovog meseca u NewYork-u. Na ovom nastupu Gery je objasnio kako da iskoristite Social Media sajtove za kreiranje sopstvenog brenda. Brilijantan nastup posle kojeg će vam biti jasno zašto je Gary Vaynerchuk čovek kojeg nominuem za BO.

Gary je iskoristio svoje znanje koje ima o vinu, a koje je stekao baveći se porodičnim biznisom. Njegova porodica je u Ameriku došla iz Rusije, i vlasnici su Vinarije, ali je Gery rešio da prekine da radi ono što ne voli i što ga ne ispunjava, i što jeste njegova glavna poruka – prekinite da radite ono što ne volite!!

Otvorio je svoj TV blog o vinu u kojem na neposredan način i veoma jednostavnim jezikom predstavlja svet vina. On će vam objasniti da cena ne govori o vinu, tako da vino od 18 dolara može da bude kvalitetnije i ukusnije od vina plaćenog 60 dolara, a ukus vina će vam dočarati na poseban način. Continue reading