Skip to main content

Posts

Showing posts from May, 2011

Eveniment pentru dezvoltatorii .NET din Cluj-Napoca - 15 iunie 2011

Update after event: Mulțumim tuturor pentru participare. Am avut 20 de participanți, cea ce este destul de bine pentru un eveniment de acest gen. Maine o sa public un post despre tema prezentării mele, iar în zilele următoare o sa apară materialele din prezentări și pe codecamp. Speram sa ne revedem și la alte prezentări.
Un post pe aceasta tema puteți sa găsiți aici http://vunvulearadu.blogspot.com/2011/06/fluent-interface-pattern.html

What: Un eveniment organizat de către comunitatea dezvoltatorilor .NET din Cluj-Napoca, pentru comunitatea dezvoltatorilor .NET și nu numai.
When: 15 iunie 2011, începând de la ora 18:30.
Where: Strada Republicii 24, Cluj-Napoca, la sediul firmei Small Footprint http://maps.google.ro/maps/place?cid=5064880879805823729
Content: Doi dezvoltatori din Cluj-Napoca o sa prezinte doua probleme cu care au avut de-a face în viata de zi cu zi:
Performanță în Silverlight și Experiență Utilizator (Daniel Andreş)Fluent Pattern in .NET (Radu Vunvulea)Descriere conținut:
Pe…

Delegates from .NET 1.0 to .NET 4.0

Mai mult ca sigur ati folosit delegate. Sunt utili cand trebuie sa specificam un comportament la runtime si nu la compile time. Prin acest mecanism putem sa scapam de mostenire in locurile unde aceasta a fost folosita pentru a definii un comportament specific.
Exista mai multe tipuri de delegates definite core-ul de .NET:
PredicateActionFuncO sa incerc sa descriu pe scurt fiecare tip de delegate:
Action reprezinta o actiune care nu returneaza nici un rezultat. Header-ul la metoda ar fi de forma urmatoare
void fx(T)
Exista mai multe implementari de Action, se pot definii pana la maxim 16 parametrii. In cazul in care avem nevoie de mai mult de 16 parametri, ne putem definii noi propile actiuni, dar nu cred ca este sanatos sa avem o actiune cu 16 parametrii sau mai multi.
Predicate reprezinta o conditie care se ruleaza si care returneaza TRUE sau FALSE
bool fx(T)
Atat Action cat si Predicate apar odata cu .NET 2.0, dar ajung sa fie folosite la adevarata lor valoare abia in .NET 3.5 cand apare si…

Opt greseli de design care ne pot afecta aplicatia

Am inceput sa studiez design patterns si am inceput cu o carte de a celor de la Gof (Gang of Four). In aceasta carte am gasit opt greseli de design care ne pot afecta aplicatia:
Crearea unui obiect folosind numele unei clase explicit. In acest fel ajungem sa fim legati direct de o anumita implementare. Pentru a evita acest lucru putem sa folosim o interfata, iar instanta sa o cream in mod indirect, de exemplu printr-un factory.Dependinte directe fata de sistemul hardware sau software. In cazul in care aplicatia noastra depinde in mod direct de anumite resurse ale sistemului portabilitatea scade in mod direct. Pentru aceaste cazuri putem sa incercam sa folosim un patern precum bridge, pentru a scadea dependintele.Dependintele fata de o anumita operatie. Cand specificam o anumita operatie, limitam ca lucrurile sa se intample intr-o singura varianta si numai una. Modificările care o sa apara in viitor o sa necesite mai mult timp, deoarece totul este hard-codat.Dependinta fata de algoritm.…

Could not load file or assembly or one of its dependencies. An attempt was made to load a program with an incorrect format wcf on iis.

Cat de cunoscuta vi se pare eroarea aceasta? Prima parte din eroare mi s-a parut foarte cunoscuta in prima faza dar totusi e usor enigmatica.
Problema cea mai mare la acest tip de eroare este ca nu ne spune exact care este cauza. Mai jos o sa gasit trei cazuri comune cand aceasta eroare apare
Assembly-ul nu poate fi gasit in locatia data. In funcție de setarile proiectului unu sau mai multe assembly-uri nu se gasesc in locațiile specificate.Unu din assembly-uri este compilat pentru o alta arhitectura de procesor. De exemplu incercam sa rulam 3 proiecte care se refera intre ele. Unul din ele este compilat pentru x86, iar restul proiectelor sunt compilate pe o arhitectura de tip x64.Sunt compilate pe versiuni diferite de .NET. Un assembly este compilat pentru .NET 2.0, iar altul pentru .NET 4.0.Desii toate cazurile au soluții simple, din cauza ca rulam aplicatia din IIS, o parte din erori sunt vagi si apar doar la runtime.
De exemplu daca avem un assembly care contine un serviciu WCF ce re…

WP7 - Asocial Insulting Movie Organizer and Verifier

So everybody today is social: you give ratings, share them, look for other shared ratings. But where is an old fashion database? We made an app. for a Windows Phone 7. On the server, we have built from a free open online database( http://www.freebase.com/), a rating system, based upon the current ratings for producers, actors, directors and so on. So, we will predict what will be the rating of future movies, by only seeing the crew. It's a typical old school "maths" approach, on a radical new Metro UI theme. The only drawback we have has with Silverlight on WP7 because it is "half implemented".
We implement from scratch an OAuth API and YMessenger API for .NET. The OAuth API don't require a web popup( all the magic is made from code).

Sistem stateless si sisteme stateful

Citeam un articol ce descria paraller programing. Si am ajuns la doi termeni care desi imi pareau cunoscuti nu imi erau foarte clar definiti.
Cei doi termeni sunt
stateless system; stateful system;Un sistem stateless este un sistem inchis, unde output-ul depinde doar de input si atata. Rezultatul obtinut nu este deloc influentat deloc de alte valori pe care sistemul le poate stoca intr-o forma sau alta.
In cazul acesta un exemplu ar putea sa fie:
Console.WriteLine(DateTime.UtcNow.ToString());
Oriunde pe glob ne-am afla si orice setare am aveam la masina( regional settings), valoarea returnata o sa fie aceiasi in orice locatie de pe glob. Acest sistem poate sa fie numit stateless din punct de vedere a regional settings.
Un sistem stateful este un sistem deschis, unde outpu-ul nu depinde doar de input. Pentru calcularea output-ului se i-au in considerare si alte valori. Poate fi vazut intr-o oarecare masura ca o masina de stari, care poate sa isi pastreze ultima stare.
Un bun exemplu es…

Message queue - cum sa oprim consumul de message dintr-un queue

Pornim de la următorul caz:
Avem o aplicatie ce ruleaza 24h pe zi, 7 zile pe saptamana. Aceasta consuma mesaje din mai multe queue. Pentru a putea asculta la queue avem următorul cod:
System.Messaging.MessageQueue msmq = new MessageQueue(".\\private$\\exemplu");
msmq .ReceiveCompleted += m_ReceiveCompleted;
msmq .BeginReceive();
...
void m_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
{
Console.WriteLine(DateTime.Now.ToString());

MessageQueue msmq = (MessageQueue) sender;
msmq.BeginReceive();
}
Intr-un anumit moment, dorim sa oprim consumul de mesaje din queue. Pentru acest lucru apelam
msmq.Close()
Dar avem o surpriza. Mesajele sunt în continuare consuma de către aplicație. Orice am face sau apela acestea sunt în continuare consumate. Pe msdn dacă citim cu atenție pagina care descrie metoda Close() o sa gasim
Close does not always free the read and write handles to a queue, because they might be shared.
Deși pare ciudat la prima…

Cum putem sa importam/exportam un volum mare de date pe SQL Azure

Intr-un post anterior am discutat despre "SQL Azure Data Sync" - "Microsoft Sync Framework". Isi face treaba foarte bine dar este o solutie putin mai complicata. Parca as vrea o solutie mai simpla, care sa nu necesite cunostinte de programare.
Mai jos o sa va propun 3 variante:
Generare scripturiBCP utilityData-tier Application Component Packages( DACPAC)(solutiile date necisita SQL Server 2008 R2)

1. Generare scripturi
In prima varianta este nevoie sa generam scripturile de mana prin SQL Management Studio. Pentru a putea face acest lucru trebuie sa selectam baza de date la care vrem sa facem back-up, click dreapta pe ea, iar apoi Task-Generate Scripts. Atentia, este foarte important sa schimbam valoarea campului "Script for the database engine" din meniul "Advanced Scripting Option". Valoarea pe care trebuie sa o selectam este "SQL Azure Database". Aceasta optiune ne permite sa generam scripturi compatibile cu SQL Azure.
Odata ce avem fis…