Category Archives: Programiranje

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…

Matematika i programiranje?

Dva događaja su me motivisala da napišem nešto na ovu temu. Naivno pitanje svežeg studenta elektrotehnike da li mu je potrebno da zna logaritme i trigonometrijske funkcije da bi bio dobar programer. Nešto posle tog incidenta, na predavanju o ms sql-u, predavač je pitao da li znamo šta je faktor grupa, gde se slušaoci, profesionalni programeri, nisu baš proslavili. Kao programer, koji je dogurao do zvanja diplomirani matematičar, pronalazim se u ovoj temi. Koliko je znanje matematike potrebno profesionalnom programeru, ako je uopšte potrebno?
dalje…

.NET Enumeration Types & WPF

U prethodnom postu smo se bavili osnovama enuma u C# .NET okruženju. Za efektnu prezentaciju najzahvalnije je napraviti primer koji ima dopadljiv korisnički interfejs, rešio sam da zakačim naše enume na WPF formu. Za ovu akciju je bilo potrebno malo više truda nego što sam se u prvi mah nadao, ali sam sasvim zadovoljan postignutim, što bi rekli ameri: „No pain, no gain“.

Ideja

Želimo da zakačimo (bind) vrednost enuma na grupu chekbox-ova koji omogućavaju prikaz i ažuriranje vrednosti na elegantan način. Enumom smo definisali dane u nedelji, a naša promenljiva predstavlja dane kojima se održava sastanak razvojnog tima. Pa da definišemo naš enum (Enum.cs):

   [Flags]
   public enum Days : byte
   {
      None = 0x0,
      Sunday = 0x1,
      Monday = 0x2,
      Tuesday = 0x4,
      Wednesday = 0x8,
      Thursday = 0x10,
      Friday = 0x20,
      Saturday = 0x40,
      WorkingDays = Monday | Tuesday | Wednesday | Thursday | Friday,
      All = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday
   }

dalje…

.NET Enumeration Types

Nabrojivi tipovi ili Enumeration Types su jedan od osnovnih pojmova u .NET jezicima. Iako se relativno često koriste, dešava se da previdimo neke njihove mogućnosti. Rešio sam da malo detaljnije ispitam šta sve može da nam ponudi ovaj poznati koncept.

Enumi su tipovi podataka koji nam omogućavaju da, praktično, dodelimo nazive skupu celobrojnih vrednosti (preciznije vrednostima integralnog tipa). Cilj je brži i jednostavniji razvoj i kasnije održavanje, odnosno čitljivost i jasnoća koda koju dobijamo korišćenjem enum tipova umesto konstanti. Korišćenjem enuma definisali smo listu dozvoljenih vrednosti, dobili IntelliSense podršku i još neke prednosti u odnosu na korišćenje numeričkih konstanti.

dalje…

.NET String

Među prvim pojmovima sa kojima se susreće programer početnik su osnovni tipovi podataka: celi brojevi, brojevi u pokretnom zarezu i nizovi karaktera, tj. stringovi. Kako već imamo jasne predstave o ovim tipovima podataka, uglavnom ih prihvatamo zdravo za gotovo. Uobičajeno je da se u literaturi i na kursevima koji obrađuju uvod u programiranje posvećuje vreme opisu kako računari barataju brojevima. Stringovi često ostaju nepravedno zapostavljeni, dešava se da čak i programeri sa iskustvom ne poznaju potpuno kako je u njihovom omiljenom programskom jeziku implementiran ovaj osnovni tip podataka. Ovo je izraženo u .NET framework-u kojim ću se baviti u ovom postu, koristiću c# za primere.

dalje…