GPdotNET with new chart control


Blog post about new upcoming features of GPdotNET has posted here, but there is more. By releasing the new version of Visual Studio 2010 as well as the new windows forms chart control, I decided to replace existing ZedChart with one in the Visual Studio 2010. I wrote about the chart control in this post, and you can see how new chart control can be bind to database. In GPdotNET chart control is the main components for algorithm simulation, and you can see different usage of the control.  The picture below show chart control in action:

The first chart on the picture presents fitness simulation by simulating the best fitness as well as average fitness in the population. Another chart (below first one) is simulation of  training data (experimental data) and currently the best found GP model. GPdotNET simulation is very data intensive so it is necessary to have a chart control which is very fast and stable, like one in VS 2010.

Advertisements

GPdotNET – Memory issue with point decimal symbol


Few days ago GPdotNET beta was released, and received some mails that the program is consuming a lot of memory and its stuck. I tried to reproduce this issue but unfortunately I didn’t success. Analyzing  my code I realized that the localization should be a problem, cause there are some texts which need to be converted in to floating number like probability of reproduction, crossover and mutation. After correction, the issue is gone and program functions normally.

Regarding localization and different decimal symbol format  I published SampleData with point decimal symbol, to allow users to get initial sample for testing.

GPdotNET on .NET 4.0 Client Profile


Finlay, I found some time to convert GPdotNET on Visual Studio 2010 solution, and make beta release with .NET 4.0 Client Profile.  The new version is the same as previous, and you no longer need ParallelFX CTP for running GPdotNET.

For running GPdotNETv0.9 you need to install only:

Just go to http://gpdotnet.codeplex.com and download the new version.

P.S: The next version of GPdotNET is still in development processes so be patient.

DevDays Banja Luka – Windows 7 for developers


Jučer je u kinu Palas u Banjaluci održan DevDays  Bosne i Hercegovine i prezentirane nove verzije Visual Studia 2010 i SQL Server 2008 R2. Prezentacijska datoteka i demo programi sa teme Windows 7 for Developers mogu se skinuti sa ovog linka.

Svima se zahvaljujem na posjeti i ocjenama prezentacije. Snimak prezentacije se može pogledati na ovom linku: http://channel9.msdn.com/posts/panjkov/DevDays-2010-Developing-for-Windows-7-Bahrudin-Hrnjica/ .

P.S. U koliko ima još  neko pitanje vezano za ovu temu moze postaviti kao komentar.

ENGLISH:

Yesterday in Cinema Palas Banja Luka was held DevDays of Bosnia and Herzegovina and presented a new versions of Visual Studio 2010 and SQL Server 2008 R2.

Powerpoint  file and demos of “ Windows 7 for Developers” presentation can be downloaded from this link.

I thank everyone for visiting and evaluations of the presentation.

If there is still some questions regarding this topic it can be posted as  a comment, and I will try to give answer on it.

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.