Blog Archives

Application Recovery and Restart (ARR) – zadnja linija odbrane


Ovaj naslov predstavlja III dio u seriji postova oko .NET i Windows 7. Prvi i drugi dio govore o windows taskbaru odnosno podršci za senzore.

Kao software developer nerijetko ste suočeni sa situacijom kada se aplikacija sruši ili zaglavi iz nepoznatog razloga,i ne možete je nikakvim konvencijonalnim metodama ubjediti da sačuva podatke ili da se zatvori. U situacijama kada se iz nepoznatog razloga ovo desi, najviše stradaju podatci koje obrađuje aplikacija i oni se nepovratno izgube.

Šta uraditi i takvim situacijama? Imamo dvije opcije:

1. Moliti se da do toga ne dođe.

2. Koristiti novo proširenje Windows 7 ARR, (koje u stvari se pojavilo izlaskom Viste).

ARR proširenje uključeno je u API Code Pack, i na vrlo jednostavan način ga možemo koristiti na našim aplikacijama. Procedura korištenja ARR je sljedeća:

1. Registracija na ARR

2. Implementacija Recovery metode

3. Skidanje sa ARR

Ova tri koraka dovoljna su za potpunu implementaciju ARR sistema.

Registrirati se na ARR, jednostavna je operacija i potrebno ju je postaviti na samom početku životnog vijeka aplikacije, odnosno tamo gdje prije toga se ne bi terebala desiti nikakva ne očekivana situacija da nam aplikacija padne. To su uglavnom metode inicijalizacije mainwindow objekta. Registracija se vrši posebno na Recovery a posebno na Restart.

private static void RegisterApplicationRecoveryAndRestart()
{
    if (!CoreHelpers.RunningOnVista && !CoreHelpers.RunningOnWin7)
        return;

    // register for Application Restart
    RestartSettings restartSettings =
        new RestartSettings(string.Empty, RestartRestrictions.None);
    ApplicationRestartRecoveryManager.RegisterForApplicationRestart(restartSettings);

    // register for Application Recovery
    RecoverySettings recoverySettings =
        new RecoverySettings(new RecoveryData(PerformRecovery, null), 0);
    ApplicationRestartRecoveryManager.RegisterForApplicationRecovery(recoverySettings);
}

Gornja metoda predstavlja registraciju na Restart, odnosno tražimo od ARR da naša aplikacija izvrši restartovanje u svim slučajevima neželjenog pada, osim u slučajevima kada se vrši reboot sistema ili kada se instalira određeni patch (zakrpa). Situacije u kojima želimo specificirati kad izvršiti restart definišemo enumeracijom RestartRestrictions, koja ima sljedeće vrijednosti:

Restrikcija Značenje
None bez restrikcija
NotOnCrash ne restartuj proces u koliko se radi o neobrađenom izuzetku.
NotOnHang ne restartuj proces u koliko se radi o nereagovanju aplikacija (no responding).
NotOnPatch ne restartuj proces u koliko se radi o instalaciji updejta.
NotOnReboot ne restartuj proces u koliko se radi o restartovanju OS-a uslijed instalacije updejta

Registracija na Recovery definiše metodu za procesuiranje u neočekivanim situacijama (PerformRecovery) te vremenski interval. U biti ako aplikacija treba restart potrebno je definisati metodu koja će poslije restarta aplikaciji izvršiti postavke u priješnje stanje.

Recovery metoda

private static int PerformRecovery(object parameter)
{
    try
    {
        ApplicationRestartRecoveryManager.ApplicationRecoveryInProgress();
        // Save your work here for recovery
        Console.WriteLine("Spasavanje podataka");
        ApplicationRestartRecoveryManager.ApplicationRecoveryFinished(true);
    }
    catch
    {
        ApplicationRestartRecoveryManager.ApplicationRecoveryFinished(false);
    }

    return 0;
}

Metodu za recovery porebno je pozivati konstantno u određenom periodu da bi ARR sistem bio svjestan da treba upravljati aplikacijom. Ovo se dešava kada se poziva: ApplicationRecoveryInProgress(); dok je na kraju potrebno zuavršiti recovery proces. U koliko bi se desila nekakva neočekivana situacija potrebno je uvijek je dobro postaviti ove raqdnje u try catch blok, te u catch završavati proces za fals argumentom koji ARR sistemu daje do znanja da recovery proces nije završio uspješno.

Deregistracija ili isključivanje sa ARR sistema je potrebno kada se aplikacija zatvara da bi se oslobodili resursi. Ovo postižemo sljedećim kodom:

ApplicationRestartRecoveryManager.UnregisterApplicationRestart();
ApplicationRestartRecoveryManager.UnregisterApplicationRecovery();

U narednom dijelu prikazat ćemo demo sa prezentiranim svojstvima ARR sistema.

1. Otvorite VS2010 formirajte novi WindowsForms projekat.
2. Referencirate API Code pack (vidi prethodne blog postove)
3. Postavite jedno dugme na formu i definišite Click događaj.

Klik događaj implementiramo sljedećim kodom:

/// Rusenje aplikacije
///<span style="color: #222222; font-family: 'Courier 10 Pitch', Courier, monospace; line-height: 21px;"> </span>private void button1_Click(object sender, EventArgs e)
{
    Environment.FailFast("ARR Demo intentional crash.");
}

Sada je potrebno implemetirati ARR sistem. Kao što je prezentirano u prvom dijelu posta.

1. U Form1 konstruktoru registrujte ARR

2. U Closed događaju isključite se sa ARR događaja.

Implementacija recovery metode je prikazana na gornjim listingom.

Kada aplikacja padne, ARR sistem pokušava da izvrši recovery, pozivajući metodu PerformRecovery. Ova metoda pokušava da spasi sve relevantne podatke.

Kada smo sve implementirali Buildajte aplikaciju, te je locirate na disku. Pokrenite aplikaciju sa diska i kliknite na dugme za rušenje. Poslije izvjesnog vremena pojavljuje se poruke koju smo implementirali u recovery metodi da su naši podaci spašeni. U koliko sacekamo minutu i kliknemo na dugme nasa aplikacija ce se restartovati.

Recovery aplikacije

Restart aplikacije

 

Source code za ovaj primjer možete skinuti sa ovog linka.

Windows 7 i .NET4 – TaskBar II dio


U prethodnom postu govorili smo o Senzorima i Lokaciji kao novim proširenjima u Windows 7. Ovim postom želimo govoriti o redizaniranom i proširenom Windows Taskbar-u, koji u najnovijoj verziji Windows OS čini najznačajniju novost sa aspekta UI. Još u prethodnoj verziji (Windows Vista) vidjeli smo određeni pomak u odnosu na XP u pogledu dizajna i funkcionalnosti TaskBar-a. Naime, Taskbar ima nekoliko funkcija, a vezane su za navigaciju među otvorenim aplikacijama, QuickBar traku sa brzim pristupom određenim programima koji se često koriste, kao i trenutno otvorenim servisima poput antivirus i antyspyware i sl. Taskbar u ovoj verziji prvi put se pojavljuje u Windows 95 verziji, a to je i prva 32bitna verzija OS-a. Task bar ranijih verzija poput 3.11 i starijih nije bio u ovom obliku, kakav je sada.

Historija Windows OS kroz 9 slika

Na samom početku napravimo vrlo kratki pregled verzija Windowsa od 1985-2009. godine. Kao što je već poznato prva verzija Windows OS pojavila se u Novebru 1985. godine, koja nije bila potpuna. Dok sam pripremo ovaj post na internetu sam pronašao dosta linkova s kojih se mogu skinuti stare verzije windowsa, i malo se podsjetiti kako je bilo nekad.

image
Windows 1.0 iz 1985 godine

Druga verzija pojavila se dvije godine kasnije (1987. godine), koja je u to vrijeme vrlo dobro ocjenjena.

clip_image002Windows 2.0 – lansirana u jesen 1987 godine.

Pravu revoluciju i početak Microsoftove slave napravila je verzija Windows 3.11. Objavljena je 1990. godine. Legendarni Minesweeper tada je bio vrlo popularan. Moji prvi ozbiljniji dodiri sa kompjuterima mogu se vezati sa ovim OS-om, ne ubrajajući ranije srednjoškolsko obrazovanje iz informatike.

clip_image004Windows 3.11

Krajem 1994. godine izlazi Windows 95 i to prvi OS koji je mogao vrtiti 32bitne aplikacije.

clip_image006Windows 95

Poslije dolaze verzije 98 (1997) i Me(1999), odnosno NT(1995) i Win2000(1999), kao serverski sistemi.

clip_image008Windows 98

clip_image010Windows ME

A poslije njih 2001. godine pojavljuje se Windows XP, koji do SP2, nije doživio puno pohvala. Druga zakrpa ili SP2 Windowsu XP donosi veliku stabilnost i mnogo veću sigurnost. Zato je i do danas (skoro 10 godina poslije) najviše koiršten OS. Još u to vrijeme Microsoft vrši planove da razvije OS koji će promjeniti koncept na kojem su se bazirali prethodni OS-ovi, a koji je većim dijelom ostvaren kroz Windows 7.

clip_image012Windows XP

2006. godine lansira se Windows Vista koja, rekao bi poput Windows 1.0, ne doživljava preveliku znatiželju korisnika.

clip_image014Windows Vista

Kada se pogleda unazad 25 godina svaki OS prvenstveno pamtimo po njegovom Desktopu, valjda to fotografsko pamćenje prvo dolazi na pamet kada se pokušavamo sjetiti. Desktop je, laički gvoreći, slika u pozadini, preko nje sličice, te standardno na donjoj strani Taskbar. Svaka od verzija imala je nekakvu promjenu na Taskbaru. Prve 3 verzije (95,98,Me), manje više, kod TaskBar-a se mjenjao samo izgled sličice na startnom dugmetu, da bi pojavom XP-a, počela evolucija Taskbara.

Konačnu evoluciju Taskbar doživljava dolaskom Windows7, koji je od jednostavne trake sa prikazom sličica, evoluirao u moćnu komponentu grafički nabildanu i multifunkcijonalnu.

clip_image016Windows 7

Windows 7 Taskbar

Razvijati aplikacije pod Windows 7, ne predstavljaja problem kompatibilnost i stabilnost, obzirom da razvojni alati to već obezbjeđuju, već u stapanju iste u Windows 7 okruženje. Ovo se prvenstveno misli na iskorištavanje osobina novog redizajniranog Taskbara, koji će aplikaciju učiniti sastavnom komponentom OS-a, a krajnji korisnik neće oskudjevati u mogućnostima koje TaskBar nudi u Windows 7.

clip_image017

Kada se govori o Taskbar komponenti u Windows 7, potrebno je spomenuti njegove osobine i sastavne dijelove, koji se na prvi pogled i ne mogu uočiti.

clip_image019

Thumbnail Preview prozorčić

U koliko je određena aplikacija pokrenuta, na Taskbar-u se pojavljuje sličica aplikacije. U prethodnim verzijama pojavljivala se sličica (ikona) i naslov aplikacije koja je nepotrebno zauzimala prostor. Sa Windows 7, naslov aplikacije je isključen, mada postoji opcija za prikaza i naslova. Gornja slika pokazuje Internet Explorer koji je pokrenut i minimiziran. Ukoliko odvučemo miša na korespodentnu sličici na Taskbar-u, pojavljuje se tzv. Thumbnail Preview prozorčić(i), koji prikazuje tekući sadržaj aplikacije. To nije ništa novo jer i Windows Vista ima tu istu osobinu. Međutim, za razliku od Viste ovaj preview je interaktivan, i može sadržavati određene akcije koje korisnik može koristiti. Sljedeća slika prikazuje Windows Media player na isti način kao i prethodna. Ovaj preview ima pored ostalog i Thumb Buttons za manipulaciju sa media datotekom.

clip_image020

Na slici su označeni osnovni dijelovi novog Thumbnail preview prozorčića.

Jump List – Iskačića Lista

U koliko kliknemo desnom tipkom miša na sličicu na Taskbaru pojavljuje se Jup List (Iskačuća lista), koja za razliku od prethodnih verzija nije obični kontekstni meni.

clip_image021

Iskačuća lista inicijalno sadrži određene akcije, poput Close Window, Pin This to TaskBar. Ostale akcije se mogu dizajnirati zavisno od namjene, a koje će biti demonstrirane kasnije.

Pored Jup liste i Thumbnail preview prozorčića, te Thumb Buttons,  Windows 7 sadrži osobine Icon Overlay, iscrtavanje preko sličice na Taskbaru zavisno od određenih aktivnosti same aplikacije. Sličica nema samo funkciju predstavljanja aplikacije u Windows OS, ona je u Windows 7 dobila još jednu funkciju, a to je da se ponaša i kao progress kontrola. Da se primjetili da prilikom skidanja sadržaja sa interneta ili kopiranja datoteka, izgled sličice u Taskbaru se mijenja, odnosno preko sličice se iscrtava progress.

Pored nabrojanog sa sličicom se mogu raditi i druge stvari poput, promjene izgleda u odnosu na određena stanja u aplikaciji i sl.

Win7 TaskBarDemo

Koristiti Visual Studio 2010 pri razvoju aplikacija koje iskorištavju osobine Windws 7 Taskbara možemo postići na dva načina. Prvi način je korištenje već spomenutog API Code Pack open source projekta. Ovom bibliotekom moguće je razvijati kako Windows Forms tako i WPF aplikacije. Medjutim WPF aplikacije možemo razvijati i bez API Code Pack u koliko želimo ostati samo na funkcionalnostima Taskbar-a, a da ne koristimo ostale osobine popult Libraries, Known Folder, Sensors i sl.

Demo koji će biti prezentiran će biti WindowsForms aplikacija koja će koristiti API Code Pack, u nekom od narednih postova biće prikazan demo sa WPF aplikacijom uz korištenje novih proširenja .NET 4.0 koji je preko priljepljenih osobina (Attached properties) omogućuje korištenje Windows 7 TaskBar-a, u WPF.

TaskBarDemo, je MDI aplikacija, u kojoj se otvoreni dokumenti posebno prikazuju u Thumbnail Preview prozorčiću. Kada pokrenemo aplikaciju te formiramo nekoliko novih dokumenata preko File->New ili File->Open, te odnesemo miša na sličicu u TaskBaru, prikazuju se otvoreni dokumenti u aplikaciji.

clip_image023

U koliko kliknemo na određeni Thumbnail Preview prozorčić, u aplikaciji se aktivira korespodentni dokument. Na ovaj način smo sihronizirali aktivaciju dokumenata u MDI aplikaciji. Na isti način u koliko odaberemo dugme clip_image024, zatvoriće nam se korespodentni dokument. Analogno, ako se dokument zatvori na standardan način preko sistemskog menia, zatvoreće se i korespodentni pregled u taskbaru.Zbog obimnosti članka, nije obrađena Jump Lista, koja se na sličan način može implementirati.

Kompletan sourcecode se može skinuti sa ovog linka.

Windows 7 i .NET4


Iza nas je već više pola godine od kad je posljednji mircosoftov OS – Windows 7 lansiran. Povratne informacije od korisnika govore da je novi OS uspio u svojoj namjeri da pruži korisnicima pravi ugođaj u korištenju. Ono što ovaj OS čini posebnim od prethodnih verzija je bogato korisničko iskustvo koje korisnicima daje lakoću rada. Pored tona novih i usavršenja postojećih osobina Windows 7 za prosječnog korisnika je prava revolucija u korisničkom interfejsu koji ovaj sistem daje. Prvenstveno se misli na nekoliko stvari:

1. Podrška za Senzore i Lokacije

2. Novi redizajnirani TaskBar

3. Libraries

4. Podrška za MultiTouch

Senzors and Location Platform (SLP)

Senzori u Windows 7 smislu su uređaji koji su sposobni mjeriti određene fizičke veličine okoline. Npr. Senzor može detektovati temparaturu, intenzitet svjetlosti u okolini i sl. Također, senzori imaju mogućnost preko GPS sitema izračunavati trenutni položaj. Senzori i Lokacija je nova platforma u Windows 7, koja na jednistven način obuhvata i tretira ove uređaje, i kroz jedinstven API pruža kontrolu i iskorištavanje ovih uređaja u razvoju i korištenju aplikacija koje koriste ove uređaje. Prije Windows 7, svaki od uređaja se tretirao posebno i imao je poseban API s kojim se kontrolisao. Windows 7 pruža jedinstven API preko kojeg se mogu razvijati aplikacije za svaki uređaj koji je označen kao Windows 7 SLP Compatibile.

image

Gornja slika pokazuje novi Windows 7 Control Panel Aplet za prikaz i manupulaciju sa senzorima i lokacijom podržavanih uređaja. API koji je razvijen pod Windows 7 za senzore i lokacije, naravno je „native“ i direktono se ne može koristiti u razvoju .NET aplikacija.

U koliko nemate fizički senzorski uređaj, a još uvijek želite da razvijete aplikacije potpomognute sa ovim uređajima moguće je instalirati virtualni senzor koji oponaša fizički uređaj. Da bi mogli da koristite virtualni senzor potrebno je da instalirate zadnji Windows 7 SDK, te zavisno od tipa OS (32bit ili 64bit) instalirate virtualne senzore.

Instalacija Windows 7 SDK i podrška za virtualne senzore

U nekoliko koraka biće opisan način na koji se istalira podrška za virtualni senzor

1. Pokrenite web instalaciju Windows 7 SDK, sa ovog linka. Instalacija Windows 7 SDK može se skinuti u ISO verziji ili web instalaciji. ISO vrezija je oko 4 GB, pa se preporuča da se koristi web instalacija preko koje možete izabrati one komponente koje su vam interesantne.

2. Nakon pokretanja winsdk_web.exe, pokreće se instalacijski čarobnjak preko kojeg se mogu ozačiti one komponente koje su za vas interesantne. Naredni prozor pokazuje komponente koje se trebaju instalirati u koliko želite imati podršku za visturalne senzore i aplikaciju za manipulaciju senzora svjetlosti.

image

3. Nakon instalacije SDK-a, sada je potrebno instalirati driver za senzor. Otvorite Device Manager i dodajte novi hardware, kao na slici.

image

U narednom koraku odaberite sljedeće opcije kao na slikama:

image

image

image

image

Putanja na kojoj se nalazi driver za virtualni senzor zavisi od tipa OS. Kod Win64 driver se nalazi kao na slici dolje, dok se za Win32 driver nalaizi u Bin folderu (jedan nivo više).

image

Nakon instalacije potrebno je Senzor uključiti:

image

5. Kad je driver instaliran sada je moguće pokrenuti aplikaciju VirtualLightSensor.exe za senzor svjetlosti koja se nalazi u Bin odnosno Bin/x64 folder za win32 ili win64 OS respektivno.

image

Razvoj .NET aplikacija koje podržavaju senzore

Razvoj .NET aplikacija koje podržavaju senzore i lokaciju, moguće je preko .NET 4.0 koji ulazi u release fazu ili koristiti .NET3.5. U oba slučaja potrebno je još koristiti određene biblioteke za podršku. S toga je Microsoft je pokrenuo Open Source projekat Windows API Code Pack, koji predstavlja ne samo wraper oko windows 7 dll-a, nego i OO platformu za razvoj aplikacija koje crpe osobine Windows 7 OS. Postiji čitav niz novih Windows 7 osobina koje su ugrađene u API Code Pack, koje će biti spomenute kasnije. Pored toga API Code Pack sadrži i podršku određenih osobina od starijih OS-ova poput Viste i XP, a koje nisu bile podržane sa .NET-om. API Code Pack sa prvom verzijom 1.0 pojavio se na ljeto 2009, dok je verzija 1.1.0 obznanjena na PDC2009 u oktobru 2009. Planovi su da će ovaj projekat u dogledno vrijeme biti sastavni dio .NET Frameworka.

LightSensorDemo

U okviru ovog posta implementiraćemo mali demo koji se bazira na senzoru svjetlosti. Aplikacija će detektovati senzore svjetlosti instalirane na PC-u (naravno virtualne). Detekcija svjetlosti registrovaće se sa progress bar controlom koja će prikazivati intenzitet svjetlosti. Za vrijeme promjene intenziteta svjetlosti u RichEdit koje će također biti povezana sa senzorom svjetlosti, mijenjaće svoju pozadinu u odnosu na intenzitet svjetlosti.

image

Da bi se mogao ovaj demo implementirati potrebno je, pored Windows 7 SDK, kojeg smo opisali, instalirati Windows API Code Pack.Koji će detaljnije biti opisan u narednom postu.

Nakon skidanja API Code Pack-a, potrebno je buildati biblioteku da bi se mogli referecirati njeni dll-ovi.

1. Otvorite Visual Studio 2010 (ili 2008), te formirajte novi Windows Forms Projekat LightSensorDEMO.

2. Nakon formiranja projekta potrebno je referencirati dll-ove od API Code Pack-a:

image

Odaberemo putanju u koju smo formirali dll-ove, te ih učitamo, kao na sljedećoj slici:

image

1. Nakon toga u Forms1.cs potrebno je deklarisati prostore imena:

image

Sada je jos potrebno implementirati logiku aplilacije. Da bi manipulisali sa senzorima koristimo statičku klasu: SensorManager čija je deklaracija prikazana u sljedećem kodu:

public static class SensorManager
    {
        public static event SensorsChangedEventHandler SensorsChanged;

        public static SensorList<Sensor> GetAllSensors();
        public static S GetSensorBySensorId<S>(Guid sensorId) where S : Sensor;
        public static SensorList<Sensor> GetSensorsByCategoryId(Guid category);
        public static SensorList<S> GetSensorsByTypeId<S>() where S : Sensor;
        public static SensorList<Sensor> GetSensorsByTypeId(Guid typeId);
        public static void RequestPermission(IntPtr parentWindowHandle, bool modal, SensorList<Sensor> sensors);
    }

Ova klasa sadrži statičke metode koje koristimo da dobijemo sve senzore instalirane na PC-u, secifične senzore filtrirane po kategoriji, ID, i sl. Pored ovih metoda postoji i event koji se okida kada god PC detektuje novi instaliran senzor. Ovom klasom u stanju smo potpuno manipulisati sa svim senzorima, kao i ad hock dobijati informacije o novoinstaliranom senzoru.

Na samom početku definisćemo event SensorsChanged, da u slučaju kada na aplikacija radi, imamo mogućnost detektovanja novoinstaliranog senzora.

U konstruktor klase Forms1 definišimo SensorsChanged,i implementirajmo metodu:

public Form1()
{
    InitializeComponent();
    SensorManager.SensorsChanged += new SensorsChangedEventHandler(SensorManager_SensorsChanged);
}

Pripadajuća metoda SensorManager_SensorsChanged poziva se iz radne niti (working thread) pa se direktono ne može manipulisati GUI kontrolama forme. S toga se pomoću BeginInvoke pristupa kontrolama na sljedeći način:

void SensorManager_SensorsChanged(SensorsChangedEventArgs change)
{

    BeginInvoke(new MethodInvoker(delegate
    {
        InitSensors();
    }));
}

Preko BeginInvoke pristupamo metodi InitSensors(); u kojoj definišemo i incijaliziramo event za promjenu intenziteta senzora svjetlosti.

Implementacija metode je sljedeća:

private void InitSensors()
{
    SensorList<AmbientLightSensor> alsList = SensorManager.GetSensorsByTypeId<AmbientLightSensor>();
    if (alsList.Count < 1)
    {
        MessageBox.Show("Ne postoji instaliran Senzor svjetlosti!");
        return;
    }

    alsList[0].DataReportChanged += new DataReportChangedEventHandler(Form1_DataReportChanged);
    alsList[0].UpdateData();
}

Ova metoda radi sljedeće:

1. Pohranjuje u listu sve instalirane senzore

2. U koliko lista nije prazna uzimamo prvi senzor iz liste i pretplaćujemo se na event DataReportChanged, koji će pratiti promjenu svjetlosti.

3. Metoda Form1_DataReportChanged uzima trenutnu vrijednost svjetlosti koju senzor registrira, na osvnovu te vrijednosti podešava se progress bar kontrola, a rich edit kontroli mijenja boju pozadine. Ova implementacije je prikazana na sljedećem listingu:

void Form1_DataReportChanged(Sensor sender, EventArgs e)
{
    AmbientLightSensor sensor = sender as AmbientLightSensor;
    // Seznor promjene svjetlosti dolazi iz radne niti stoga je potreno
    // preko BeginInvoke promjenu prosljediti u UI nit
    BeginInvoke(new MethodInvoker(delegate
    {
        int lightVal= (int)sensor.CurrentLuminousIntensity.Intensity;
        progressBar1.Value =lightVal;

        if (lightVal < 5)
            richTextBox1.BackColor = Color.Gray;
        else if(lightVal<10)
            richTextBox1.BackColor = Color.Goldenrod;
        else if (lightVal < 20)
            richTextBox1.BackColor = Color.LawnGreen;
        else if (lightVal < 100)
            richTextBox1.BackColor = Color.Green;
        else if (lightVal < 500)
            richTextBox1.BackColor = Color.Red;
        else if (lightVal < 1000)
            richTextBox1.BackColor = Color.Blue;
        else if (lightVal < 5000)
            richTextBox1.BackColor = Color.Yellow;
        else if (lightVal < 50000)
            richTextBox1.BackColor = Color.SaddleBrown;

    }));
}

LightSensorDEMO aplikacija demonstrira upotrebu novih mogućnosti Windows 7 OS, za razvoj .NET aplikacija korištenjem Windows API Code Pack. Cjelokupan sourcecode aplikacije možete preuzeti sa ovog linka.

Windows 7 Beta ugledao svjetlo dana


clip-image002

Izlazak Windows 7 Beta zasigurno će obilježiti početak nove 2009 godine. Kako najaljuju iz Microsofta ovaj OS ponudiće puno novina, a već neke su ugledale svjetlo dana izlaskom prve oficijelne beta verzije. Preuzimanje prve bete omogućeno je pretplatnicima već 7 januara a javni download dva dana poslije. Obzirom da sam već 8 januara imao mogućnost preuzimanja ove verzije koja zauzima 2.5 GB disk prostora, trebalo mi je nekoliko dana da je pohranim na svoj disk prostor. Instalaciju Windows 7 Beta planirao sam na Virtualnoj mašini iz razloga sigurnog istraživanja, a sdruge strane i praktičnog zbog paralelnog podizanja Viste na kojoj radim i Windows 7 preko Virtualne mašine.

U koliko želite naći više informacije kako Windows 7 Beta instalirati na Vistual PC 2007 možete pogledati na ovom linku.

Prvi utisci

Sljedeći upute sa prethodnog linka instalacija je trajala preko 8 sati. Pokušao sam pronaći na internetu da li ima informacija oko vremena instalacije na VM ali ništa.Bilo kako bilo instalacija je prošla i pojavio se početni ekran na kojem su već vidljive promjene u odnosu na Vistu. Redizajnirani TaskBar kao i Windows LOGO dugme izgledaju obećavajuće. Na internetu sam pronašao jedan screen cast koji govori o novim mogućnostima Task bara i Windows LOGO dugmeta pa ga možete pogledati, a na ovom linku nse nalaze svi objavljeni screencastovi oko Windows 7. U ovom posto imao sam namjeru da napišem nešto oko standardnih programa koje dolaze uz instalaciju Windowsa a to su : Calculator, WordPad, Paint,kao i novi alati koji dolaze uz Windos 7 a to su: StickyNote i Snipping Tool.

Calculator

Kalkulator koji dolazi uz Windowse nije doživio značajne promjene (koliko je meni poznato) još od Windows 95. Ali Windows 7 donosi totalno redizajnirani kalkulator sa više mogućnosti i novim matematičkim operacijama. Novi kalkulator donosi 2 nova moda Programerski i Statistički, dok su zadržani postojeća dva standardni i prošireni (scientific)

clip-image004

Pored modula na kalkulatoru postoje i operacije konverzije odredjenih mjernih jedinica i valuta i vremena.

clip-image006

WordPad i Paint

Ova dva programa standardna za text i grafiku takodjer su redizajnirana i uskladjena sa novim microsoftovim korisničkim interfejsom „Ribbon“.

clip-image008

Paint je dobio nekoliko opcija za lakše manipulisanje grafikom poput lenjira, i rešetke s kojim se postiže bolja preciznos prilikom editovanja slike. Bez obzira što je ovaj program jedan od najjednostavijih za grafičko oblikovanje ipak je najprikladniji za brzu manipulaciju sa slikama poput ovog bloga čije slike su urađene preko painta. Pored ovog u paintu su dodane opcije za lakše razvlačenje i pomjeranje selektovanih objekata. Na statusnoj traci nalazi se klizač za zumiranje koji je standarni dio svaog korisničkog interfejsa koji koristi Ribbon. WordPad osim grafičke kozmetike i prelaska na Ribbon nije dobio dodatna proširenja onoliko koliko sam uspio da istražim, osim što postoji opcija za učitavanje slike sa diska, koja je u prethodnim verzijama bile pod opcijom Insert Object.

clip-image010

SnippingTool

SnippingTool je novi alat koji dolazi uz Windows 7 a prvenstveno služi za hvatanje slika poput standardnih programa ScreenCapture. Ovaj alat nudi nešto naprednije opcije prilikom hvatanje slika sa vašeg desktopa, poput slobodnog hvatanja, pravougaonog, hvatanja prozora i hvatanja cijelog vašeg desktopa. Pored ovog postoje opcije koje vam nude gdje i kako ćete uhvaćenu sliku pohraniti.

clip-image012

clip-image014

Slika uhvaćena sa slobodnom formom.

StickeyNotes

Vrijeme ljepljena stikija na vaš monitor je prošlo, novim Windowsom ćete moći svoje podsjetnike zaljepiti unutar vašeg desktopa. Vrlo korisan alat za one koji pišu a ne pamte.

clip-image016

Kada se tiče igara koje dolaze uz standardnu instalaciju Windowsa nisam primjetio da se je fond igara promijenio, osim što je postojećim nabačeno nešto više šminke. Novi OS nosi i nove izazove kako IT profesionalcima tako i developerima.