Vladimir Milovanović

moj mali svet

Subscribe to RSS feed

Toliko za sada

,

Upravo sam kreirao nov blog na www.tetraedar.net/mmwlada , što znači da će ovaj blog do daljnjeg biti neaktivan.

P.S.
Kreirao sam i blog na engleskom

I have also created english version of blog

Smederevska jesen 2008

, , , ...

Kao i svake godine, Smederevo će opet biti domaćin čuvene manifestacije Smederevska jesen. Program možete pogledati na sajtu turističke organizacije opštine Smederevo. Ono što je meni zapalo za oko, su koncerti koji će se održati na trgu. U petak, koncert će održati Dejan Cukić i spori ritam bend i Raul Alberto Dias sa So Sabi bendom a u subotu ćemo čuti Divlje jagode.

Sa druge strane za pozornicu u malom gradu su imali drugačiju ideju.

petak:

koncert - "Pesme o ljubavi i vinu": Predrag Cune Gojković,Ivana Jordan, Katarina Gojković, Zinaida Dadakina, Srđan Stanković klavir i voditelj: Milan Kalinić

subota

koncert narodne muzike: Miroslav Ilić, Jelena Broćić, Orkestar Bobana Kopunovića

nedelja

koncert etno muzike: „Vesna i koreni“

Ako uzmemo u obzir da je prošle godine gostovala ceca, onda moram reći da su ove godine napravili savršenu kombinaciju. Program koji se danas nalazi na njihovom sajtu još uvek nije konačan, tako da možemo očekivati još neke aktivnosti. Samo da muzika koja se pušta pored ringišpila, autodroma i ostalih vašarskih zezalica ne bude kao i svih prethodnih godina. Buka koju stvaraju svi oni zvučnici je nepodnošljiva već na 50 metara.

Potrudiću se da napravim neke dobre slike, ali ništa ne obećavam.

Mikro arhitektura – GoF uzori

, , ,

GoF(Gang of Four) uzori su se prvi put pojavili u knjizi „Design Patterns – Elements of Reusable Object-Oriented software“ koju su napisali Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides. Oni su u toj knjizi predstavili neke od najčešće korišćenih uzora i klasifikovali ih prema nameni na uzore kreiranja, strukture i ponašanja i prema domenu na uzore klasa i objekata. Postoje i drugi načini da se klasifikuju uzori. Neki uzori se često koriste zajedno. Na primer, sastavnica(composite) se često koristi uz Iterator ili Posetioca(Visitor). Neki uzori su alternative: Prototip je često alternativa apstraktnoj fabrici, kao i builder.

Uzori kreiranja

Uzori kreiranja apstrahuju proces instanciranja. Pomoću njih sistem postaje nezavisan od načina pravljenja, sastavljanja i predstavljanja objekata. Uzor za pavljenje sa domenom klase koristi nasleđivanje za menjanje klase koja se instancira, dok uzori za pravljenje sa domenom objekta delegira instanciranje nekom drugom objektu.

Uzori kreiranja postaju važni kada sistemi dođu u fazu da više zavise od sastavljanja objekata nego od nasleđivanja. U takvoj situaciji, naglasak sa fiksnog kodiranja fiksnog skupa ponašanja prelazi na definisanje manjeg skupa osnovnih ponašanja koja se mogu sastavljati u veći broj složenijih. Prema tome, pravljenje objekata sa nekim određenim ponašanjem zahteva više od pukog instanciranja klase.

Kod ovih uzora postoje dve teme koje se stalno ponavljaju. Prvo, svi uzori enkapsuliraju znanje o tome koje konkretne klase sistem koristi. Drugo, oni kriju kako se prave konkretni objekti ovih klasa i kako se sastavljaju. U celom sistemu se o objektima zna jedino za njihove interfejse, na osnovu toga kako su definisani u apstraktnim klasama.

Uzori strukture

Strukturni uzori se bave načinom na koji se klase i objekti sastavljaju u veće strukture. Strukturni uzori klasa koriste nasleđivanje za sastavljanje interfejsa ili implementacija. Strukturni uzori sa domenom objekata opisuju načine za postizanje nove funkcionalnosti kombinovanjem objekata umesto sastavljanjem interfejsa ili implementacija. Dodatna fleksibilnost sastavljanja objekata potiče od mogućnosti da se sastav menja u vreme izvršavanja, što je nemoguće kod statičkog sastavljanja klasa.

Uzori ponašanja

Uzori ponašanja se bave algoritmima i raspodelom odgovornosti među objektima. Uzori ponašanja ne opisuju samo uzore objekata ili klasa, već i uzore njihove međusobne komunikacije. Ovi uzori opisuju prirodu složenog toka kontrole koji se teško prati u vreme izvršavanja. Pažnja prelazi sa samoga toka kontrole na način međusobnog povezivanja objekata.

Klasni uzori ponašanja koriste nasleđivanje za distribuiranje ponašanja među klasama. Objektni uzori ponašanja koriste sastavljanje objekata, a ne nasleđivanje. Neki od njih opisuju kako grupa objekata ortaka sarađuje na zadatku koji nijedan od njih ne može sam da obavi. Ovde je važno kako ti objekti saznaju jedan za drugoga. Oni bi mogli da čuvaju međusobne eksplicitne reference, ali bi to pojačalo njihovo vezivanje. U krajnjem slučaju bi svaki objekat znao za sve ostale.

Kod svih GoF uzora se može primetiti struktura koja se sastoji od klijenta, apstraktnog servera i konkretnih servera. To se može prikazati sledećim UML dijagramom.

GoF uzor

Arhitekturni uzori i MVC

, , , ...

Pre nego što počnem o ovome, mislim da treba da razgraničimo šta su nivoi a šta slojevi.
Sloj (En. Layer)
Nivo (En. Tier)

Koja je razlika između ova dva? Iako na prvi pogled deluju kao sinonimi, razlika je ogromna. Kada se govori o slojevima, prvo se misli na logičkom nivou, dok se kod nivoa misli na fizičkom. Šta to znači u programiranju? S obzirom da ću se koncentrisati na .NET framework, koristiću termine koji su tamo standardni, ali verujem da će se i poklonici ostalih jezika snaći. Ako kažemo da imamo dve klase koje pripadaju različitim slojevima, to znači da su one u istom projektu, ali u okviru različitih namespace-ova. Dok ako kažemo da dve klase pripadaju različitim nivoima, to znači da pripadaju različitim projektima, pa čak i da su na različitim računarima nakon instalacije.

Uzori arhitekture izražavaju fundamentalnu strukturnu organizaciju ili šemu sistema. Oni pružaju set predefinisanih podsistema, opisuju njihove odgovornosti i uključuju pravila i smernice za organizaciju odnosa između datih podsistema. Ono što je bitno kod arhitekturnih uzora, to je da oni nisu previše konkretni. Oni predstavljaju jednu ogromnu apstrakciju sistema, koja se može tumačiti i implementirati na više načina.

Postoji više uzora arhitekture. MVC je samo jedan od njih. IBM je skupio neke ahtitekturne uzore koji se odnose na e-poslovanje. Možete ih pogledati ovde: http://www-128.ibm.com/developerworks/patterns/
Ako želite da saznate više o arhitekturnim uzorima pogledajte http://wi.wu-wien.ac.at/home/uzdun/publications/ArchPatterns.pdf i http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science) , a ja ću se zadržati MVC uzoru

MVC (Model - View - Controller) uzor je arhitekturni uzor koji organizuje aplikaciju u tri odvojena sloja: jedan za aplikacioni model sa prikazom podataka i biznis logikom, drugi za prezentaciju podatala korisniku i unos podataka i treći za kontroler koji prosleđuje zahteve i izvršava tok. Imajte na umu da arhitekturni uzori uzimaju olako termine kao što su sloj i nivo, jer im je svejedno da li će se MVC na primer implementirati u okviru jednog projekta ili više.

Postoji više implementacija MVC uzora, ali dva najčešća imaju oblike kao na slikama

 image image

Pune linije predstavljaju direktne asocijacije, dok su isprekidane indirektne. Isprekidane linije se mogu implementirati preko događaja, ali je najpoželjnije da se implementira preko observer uzora, o kome ću malo kasnije kada budem pisao o GoF uzorima.

Šta radi Kontroler:
Upravlja tokom programa
Odlučuje koji view da prikaže
Odlučuje koji model da menja
Upravlja izuzecima

Šta radi View:
Renderuje UI (HTML, GUI...)
Omogućava prikaz korisnicima
Prihvata i proverava da li su podaci validni

Šta radi model:
Sadrži poslovnu logiku
Ima pristup nižim servisima
Sadrži perzistentne objekte (iako je model sam po sebi tranzijentan)

Uzori u projektovanju programa - uvod

, , ,

Šta je zapravo softverska arhitektura? Odgovor na to pitanje se nalazi na više nivoa. Na najvišem nivou, nalaze se arhitekturni uzori koji definišu sveukupan oblik i strukturu aplikacije. Na nižem nivou je arhitektura koja je specifična za aplikaciju koju razvijamo. Na još nižem niovu je arhitektura modula, klasa i njihovih veza. To je zapravo nivo mikro arhitekture. Dok se na još nižem nivou nalaze idiomi.

Značaj uzora u proizvodnji složenih sistema je odavno priznat u drugim disciplinama. Konkretno, Kristofer Aleksander i njegove kolege su prvi predložili da se jezik uzora upotrebi u arhitekturi zgrada i gradova. Njegove ideje i doprinosi sada su ukorenjeni u zajednici objektno orijentisanog softvera.
Sve dobro strukturirane objektno orijentisane arhitekture su pune uzora. Ako se prilikom razvoja sistema usresredi na pravilno korišćenje uzora dobija se manja, jednostavnija i razumljivija arhitektura nego ako se ignorišu.

Uzori sadrže rešenja koja su se vremenom razvijala i proširivala. To nisu rešenja koja se prave iz prve, već su prošla dosta iterativnih poboljšanja.
Postoji više definicija šta je uzor. Najjednostavnija je „uzor je provereno rešenje za problem u datom kontekstu“. Međutim, mnogi smatraju da je ovo isuviše pojednostavljeno. Čak je i Richard Gabriel rekao „Alexander je mogao da napiše definiciju uzora u jednoj rečenici, ili esej, ali je umesto toga napisao knjigu od 550 stranica, zato što je koncept težak za razumevanje“.


Ovo je samo mali uvod u ono o čemu planiram da pišem. Stoga se može smatrati kao prvi od više članaka na tu temu.

Windows Live Writer i My Opera

, ,

Izgleda da Windows Live Writer podržava My Opera. Upravo ga koristim kako bih napisao ovaj blog. Nisam primetio da je Opera negde izdala saopštenje o tome, ali sam našao na Opera forumu. Baš me interesuje da li će sve ispasti kako treba, jer zaista deluje kao sjajan alat za pisanje blogova.

Šah

,

Verujem da je šah prva igra koju sam naučio. Verovatno sam zato i izabrao baš šah za projektni zadatak u okviru ispita "Distribuirani informacioni sistemi" na FON-u. Ispit je gotov, ocena najviša, ali ja bih da nastavim da radim na ovoj ideji. Svi koji su zainteresovani da učestvuju, mogu mi se obratiti. Projekat je naravno, open source i može se naći na ovoj adresi.

Završen je Microsoft Imagine Cup 2007

,

Počelo je sa preko 100.000 studenata iz preko 100 zemalja sveta. U finale je ušlo 344 studenta iz 59 zemalja.
U kategoriji Software Design
Prvo mesto je osvojila ekipa iz Tajlanda.
Drugo mesto Koreja i treće Jamajka.

Među ostalim finalistima iz ove kategorije nalaze se timovi iz Austrije, Irske i Srbije.

Sve čestitke finalistima.

Primena ključne reči partial u C#

, , ,

Jedno od poboljšanja koje je uvedeno u .NET 2.0 je korišćenje "partial" klasa. Radi se zapravo o tome da se dodavanjem ključne reči partial ispred class, jedna klasa može držati u više fizičkih fajlova. prednosti ovakvog rada su ogromne. Ako se sećate formi iz visual studija 2003, onda se sećate da je kod koji je VS automatski generisao bio odmah pored vaših metoda i atributa. Sada u VS 2005 se sve to nalazi u fajlu mojaForma.designer.cs, kao partial klasa klase mojaForma.cs.
Jedan od glavnih razloga zašto treba koristiti partial klase je taj što ako radite u velikom timu, onda svako može u isto vreme raditi na različitim delovima klase, bez straha da će neko u isto vreme raditi na istom fajlu.
Drugi bitan razlog je što se velike klase mogu podeliti na logične delove i na taj način dobiti na preglednosti i lakšem snalaženju.
Primer upotrebe partial klasa:
    //mojaKlasa.cs
    public partial class mojaKlasa
    {
        public mojaKlasa()
        {

        }
    }
    
    //mojaKlasa.Logika.cs
    partial class mojaKlasa
    {

    } 

Kada ovako kreiramo klase, fajlovi će u Solution Exploreru stojati jedan do drugoga kao dva potpuno ravnopravna fajla. međutim, mi želimo da se fajl mojaKlasa.Logika.cs nalazi kao deo mojaKlasa.cs fajla. Nažalost VS za sada nema mogućnost da direktno primeni ovo svojstvo. To se za sada mora raditi ručno, tako što se edituje fajl imeProjekta.csproj.
Tu treba naći sledeći blok i malo ga izmeniti:
 <ItemGroup>
...
    <Compile Include="mojaKlasa.cs">
      <SubType>mojaKlasa</SubType>
    </Compile>
    <Compile Include="mojaKlasa.Logika.cs" >
      <DependentUpon>mojaKlasa.cs</DependentUpon>
      <SubType>mojaKlasa</SubType>
    </Compile>
...

<DependentUpon>mojaKlasa.cs</DependentUpon>
deo koji je označen crvenom bojom treba dodati.

Ovo je odličan način skrivanja delova klasa. Međutim, očigledno je da je Microsoft ovo planirao uglavnom za internu upotrebu u VS-u. Još jedan dokaz za to je da ako imamo formu i fajlove koji je definišu: mojaForma.cs i mojaForma.designer.cs, i ako dodamo npr. mojaForma.Eventi.cs, kada dva puta kliknemo na mojaForma.eventi.cs, VS automatski otvara praznu formu !? Možemo samo da se nadamo da će se ovo ispraviti u sledećoj verziji (ko je rekao VS 2008).

Gennit

, , , ...

Web aplikacija koja generiše gotove klase i sql baze podataka. Kao pozadinu koristi NHibernate i Castle ActiveRecord. Nije loš, možda čak i originalan na neki način. Za više informacija - link
February 2012
M T W T F S S
January 2012March 2012
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29