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…

Hakeri, blogeri i srećna nova 2012

Početkom ove, 2011 godine, krenuo sam sa pisanjem. Nakupilo se 10 tekstova, uglavnom na stručne teme. Ideja ima na pretek, pa ukoliko imate volje i umeća javite se, konkurs je uvek otvoren :)

Tri najčitanija posta u 2011 su, redom:

Pomalo neočekivano na listi nema .NET Stringova, a najposećenija stranica na blogu je about stranica, očigledno vas zanima ko stoji iza Bug-a, nisam siguran da li je to pozitivno ili negativno :)

Ono što je obleležilo 2011 na Bug.Rs, nije ogromna popularnost mojih postova ;), već hakerski napad. Tačnije neko je iskoristio sql inject propust u wordpress-u da izmeni administratorsku lozinku, zatim je zamenio naslovnu stranu nekom svojom porukum, tj. uradio je tzv. deface sajta.
dalje…

Sign .NET Assembly with Strong Name

Znate da .NET omogućava da digitalno potpišete svoj kôd?

Zašto potpisujemo dll-ove?

Želimo da onemogućimo izmenu asemblija, npr. izmenu naziva ili verzije, ili izmeni samog kôda.

U nekim slučajevima je bitno da identifikujemo da je dll koji koristimo baš taj koji očekujemo. Ukoliko je biblioteka koja proverava da li je validna licenca našeg softvera u posebnom dll-u, relativno je lako podmetnuti drugi dll sa istim potpisom (klasama, metodama…) koji bi uvek vraćao da je licenca validna.

Digitalni potpis

Ideja digitalnog potpisa je da omogući primaocu proveru integriteta podataka koji potiču od pošiljaoca. Pošiljaoc, koji je i potpisnik podataka, ima par kriptografskih ključeva, javni ključ i privatni ključ. Primaocu je dostupan samo javni ključ, što je dovoljno da potvrdi da je poruku, tj. podatke koje je poslao pošiljaoc primio u izvornom obliku. Postoje različiti načini da se implementira digitalno potpisivanje, implementacija Strong name .NET Framwork-a se oslanja na RSA algoritam za enkripciju/dekripciju i SHA-1 heš funkciju.

dalje…

Ustupamo prostor

Bug je okrenut profesinalnim  temama, nastao je iz želje da podelim ono što znam sa  drugima, kao i da uvećam i produbim svoje znanje. Odlučio sam da pišem o stručnim temama na  srpskom jeziku, jer mislim da tako mogu najviše da doprinesem svom okruženju, što je cilj, da ne kažem misija :). Sa druge strane, svestan sam šireg okruženja u kome živimo i mislim je ova humanitarna akcija blogera ok, tako da ustupam prostor.

Akciju su pokrenuli blogeri Ivan ĆosićDragana Đermanović i Istok Pavlović

dalje…

Connection Strings – UDL

Konekcioni stringovi sadrže informacije o izvoru podataka, sa idejom da drajveru ili provajderu daju potrebne podatke da bi na kraju došli do podataka. Najčešće ih koristimo za pristup bazama podataka, mada izvor podataka može biti i tekstualni fajl ili excel dokument. Evo primera:

Server=sql_box;Database=Common;User ID=uid;Pwd=password;

Mada na prvi pogled deluje jednostavno, kada se uključe različi izvori podataka, standardi, drajveri za pristup i metodi autentifikacije, priča se komplikuje… Postoji više sajtova posvećenih isključivo konekcionim stringovima, evo dva poznatija sqlstrings.com i connectionstrings.com.  Pravljenje konekcionih stringova zna da bude dosadan posao, pa ću otkriti jedan trik za njihovo generisanje.
dalje…