Category Archives: Programiranje

Windows Unversal App Invaders

Bojan je prikazao kako napraviti jednostavnu igru za Windows u prethodnom postu. Sledeći korak je aplikacija za Windows Phone, ili još bolje, jedna aplikacija koja bi radila i na klasičnom Windows i Windows Phone 8.1 operativnom sistemu. Na našu sreću Microsoft nam je omogućio da delimo kôd između windows i windows phone aplikacija koristeći “universal app” templejt u Visual Studio-u. Ukratko ću predstaviti proširenje naših “modernih” invadera u univerzalnu aplikaciju, što bi značilo da iz jednog solution-a možemo da bildujemo i windows i win phone aplikaciju oslanjajući se na isti kôd odgovoran za logiku igre.

dalje…

Windows modern application na primeru jednostavne igre

Nakon dugo godina vladavine windows forms aplikacija sa pojavom Windows 8 i 8.1 sa novim korisničim interfejsom pod kodnim imenom metro design, zvanični naziv je Modern UI. U razgovoru sa Branimirom došli smo na ideju da napravimo jednu windows 8.1 aplikaciju i kroz jednostavan primer istražimo i upoznamo tehnologiju. Ideja je bila da napravimo jednostavnu igru koja bi radila na windows 8 operativnom sistemu. U pitanju je pojednostavljena verzija klasika Space Invaders. Cilj nam je bio upoznavanje sa novom tehnologijom i njenim mogućnostima, tako da nam nemojte zameriti što igra nije bolja.

dalje…

Korisne JavaScript biblioteke za poslovni software u nas Srba

2378867408_4cc90791d6Prilikom razvoja softvera za poslovnu upotrebu posebna pažnja se obraća na validiranje podataka prilikom unosa. Kako je web sve prisutnija platforma za razvoj ovakvog tipa softvera jedan od načina za validaciju unosa je svakako javascript, odnosno client-side validacija. Ovakav vid validacije je brži i „jeftiniji“ obzirom da nema slanja suvišnih zahteva ka web serveru, no ne treba se u potpunosti osloniti na ovakav vid validacije i zapostaviti serversku stranu ali o tome možda neki drugi put.
dalje…

Asinhroni C# (async / await)

Multi-core processorRazvojni tim je dobio zahtev za doradu aplikacije koja automatizuje zaprimanje robe i štampu deklaracija u magacinu. Posle inicijalnih podešavanja, aplikacija dobija ulaz sa bar kod čitača, a kao izlaz, osim što u bazi označava da je artikal zaprimljen, šalje deklaraciju artikla na štampu. Ideja je da po jedan bar kod skener i štampač budu vezani na jedan računar. Inicijalno je projekat bio složeniji, ali je promenom poslovnih procesa, ostala potreba samo za ovim delom funkcionalnosti. Uzeli smo parče koda sa serverskog dela, c# .net web servisa, koji je komunicirao sa bazom i štampačima, dodali u klijentsku Winforms aplikaciju kao biblioteku i to je proradilo.

Dobili smo desktop aplikaciju koja je imala svu logiku na klijentu, instaliranje softvera smo sveli na copy/paste i instalaciju drajvera za štampače, sve je idealno. Postavili smo test verziju, i dobili odgovor od korisnika da aplikacija funkcioniše ali je spora i koči. Gde je greška? Pri migraciji koda za štampu sa servisa na lokalni računar pozivi ka štampaču su postali sinhroni, što znači da aplikacija nije prihvatala ulaz sa bar kod čitača sve dok traje štampa. U praksi, ako imate četiri artikla jedan ispod drugog i pročitate sva četiri bar koda u nekoliko sekundi štampač će za to vreme stići da izbaci jednu ili dve deklaracije i samo će ti artikli biti zaprimljeni. Pored samih asinhronih poziva potrebno je vratiti i prikazati rezultat na korisničkom interfejsu.
dalje…

Polimorfizam ili Switch?

U poslovnim aplikacijama često se javlja potreba za sličnom funkcionalnošću nad entitetima različite vrste u sistemu. Na primer, u trgovini postoje različiti tipovi dokumenata, kalkulacije (ulaz robe), transferi (izlaz robe), nivelacije (promena cena), koji su po podacima koje sadrže vrlo slični. Nad ovim dokumentima se izvršavaju i istoimene akcije: import, eksport, knjiženje, posledice akcija zavise od tipa dokumenta. Kada se knjiži ulaz robe, pored kreiranja odgovarajućeg dokumenta, menjaju se količine robe na stanju, kada se knjiži promena cena, jasno je da se ne menjaju količine robe, ali se zato ažurira cenovnik. Verovatno u glavi već imate primer iz industrije kojom se trenutno bavite.

Cilj je rešenje poslovnog problema ovog tipa, ali i kôd organizovan tako tako da bude što lakši za održavanje i proširivanje. Idealno je rešenje koje dozvoljava da se doda novi slučaj, tj. u našem primeru novi tip dokumenta, ali i nova akcija, na primer izvoz u excel, bez ili sa što manje izmena na postojećem izvornom kôdu. Ovaj problem je poznat i dovoljno čest da je dobio i ime The Expression Problem.

Prikazaću primer rešenja u strukturnom, uz pomoć jedne klase i switch strukture, i objektno orijentisanom pristupu, koristeći polimorfizam i neku vrstu naivnog factory pattern-a. Da bi kôd bio jednostavniji neću koristiti inicijalni primer iz trgovine, već standardne kuce i mace. Dakle, pravimo softverski model koji ce opisati životinje, dovoljne su nam dve vrste Cat i Dog, koje imaju ime Name, i dve funkcije Walk i Talk.

Ukoliko želite da pratite priču kroz kôd, solution sa primerima u C# možete skinuti ovdesadrži četiri projekta, svaki je samostalna konzolna aplikacija sa primerom. Potrebno je da na računaru imate instaliran Visual Studio 2010. 
dalje…