Skip to main content

Posts

MSTEST - CollectionAssert

In orice proiect ar trebuii sa existe unit teste. In general, pentru validare, fiecare test poate sa contina Assert-uri de forma: Assert.IsNotNull(result); Assert.AreEqual(1,result.Count); ... In cazul in care este nevoie sa validam o lista, folosim un foreach sau orice mod de a itera o lista: foreach(var item in result.Items) { Assert.IsTrue(baseResult.Contains(item)); } .NET ne pune la dispoztie pe langa Assert si clasa CollectionAssert, prin intermediul careia putem sa validam o colectie. Mai jos o sa trec peste cateva metode care mi s-au parut mai importante: CollectionAssert.AreNotNull - verifica ca toate elementele din colectie sa nu fie NULL CollectionAssert.AllItemsAreInstancesOfType - verifica daca toate elementele din colectie sunt de un anumit tip( tipul poate sa fie si o interfata) CollectionAssert.AllItemsAreUnique - verifica daca toate elementele din colectie sunt diferite( fiecare element din colectie se compara cu restul folosind metoda Equal). Optional s...

Microsoft Live - Live Connect

Windows LIVE series: Introducere Web Authentication Live Connect Basic Operations SkyDrive Si am ajuns la lucruri mai interesante. O sa incep azi sa povestim despre Live Connect. Ce putem sa facem cu Live Connect? Un user conectat la aplicatia noastra se poate conecta la email, SkyDrive, messeaging sau orice alt serviciu folosind un Live ID. Cum il folosim? Partea buna in toata nebunia asta este ca API-ul de Live Connect este conform standardului OAuth 2.0 si suporta atat JSON cat si protocolul XMPP. Acesta poate sa fie integrat in orice fel de aplicatie, indiferent de limbaj sau platforma. Daca e prima data cand auziti de XMPP, trebuie sa stiti ca acesta este un standard de comunicare pentru aplicatiile de chat, care permite ca sa ne integram aplicatiile proprii de chat cu Messenger-ul de la Microsoft faca nici o problema. In urmatorul exemplu o sa vedem ce trebuie sa facem ca un utilizator sa se autentifice prin apeluri de tip REST: - redirectam userul spre urmatoarea pagin...

Windows Live - Web Authentication

Windows LIVE series: Introducere Web Authentication Live Connect Basic Operations SkyDrive Live ID se poate folosii pentru doua lucruri: autentificarea userilor in aplicatia noastra folosind contul de Live ID accesul aplicatiei noastre la servicii pe care un user de LIVE ID are access( photo sharing, agenda, calendar, etc) Astazi o sa discutam despre cum poate un utilizator sa se autentifice in aplicatia noastra folosind contul de de Live ID. Mai jos o sa prezint vechiul mod de autentificare, care a devenit absolute, odata cu lansarea "Live Connect", despre care o sa povestim cat de curand. Prefer sa prezint si acest mecanism in cazul in care lucrati cu aplicatii deja facute care folosesc vechiul mecanism de autentificare. Acest mecanism de autentificare a fost denumit de cei de la Microsoft "Windows Live ID Web Authetification", dar nu are nimic mai special. In momentul in care userul doreste sa se autentifice, acesta este redirectat spre pagina Windows Live ID, ...

Code Retreat Sibiu

Sambata, 28 ianuarie 2012 , sunteti invitati la birourile iQuest din Sibiu la o sesiune de Code Retreat . Code Retreat este o oportunitate ca pe parcursul unei intregi zile sa scrieti cod doar de fun, fara presiunea deadline-urilor. Chiar daca nu reusesti sa termini decat cateva linii de cod, daca sunt “perfecte”, te consideram totusi “de-al nostru.” Este o ocazie in plus sa practicam ceea ce, ca dezvoltatori profesionisti de software, predicam: conceperea de cod minunat Idea este simpla: se gaseste cate un partener de TDD pentru o problema de programare (tema) pentru 2×3 sesiuni de cate 45 de minute in orice limbaj doriti. Daca nu ati mai folosit TDD sau daca nu ati mai programat in echipa sa nu va fie teama: suntem prietenosi si nu va mancam de vii pentru asa ceva Dupa fiecare sesiune perechile vor imparti pareri si cunostinte dobandite. Pentru mai multe informatii: http://www.iquest.ro/blog/2012/01/26/iquest-code-retreat-sibiu/#.TyEYVvlactk Update: Dupa acest...

Web application end - how to determine why has stopped

Sa spunem ca avem o aplicatie web care se afla pe IIS. Observam ca aplicatia uneori moare si nu reusimg sa ne dam seama din ce cauza. Din anumite motive "exceptia" care se intampla in aplicatie nu poate sa fie prinsa si aplicația moare fără sa logeze nici o informație. De ce spun "exceptie", deoarece uneori poate sa fie vorba de un pool recycle care sa genereze acest comportament( cauza nu este mereu o exceptie in adevaratul sens al cuvântului). Ce putem face? O solutie este ca in Global.asax.cs, in metoda Application_End sa obtinem date despre motivul pentru care aplicatie se termina si sa scriem aceste date in trace sau sa le logam undeva. Aceasta metoda o sa fie apelata de fiecare data cand aplicatia este oprita. Din pacate informatiile pentru care aplicatia este oprita se pot obtine doar prin intermedul reflection. Nu avem o alta modalitate sa obtinem aceste date. Daca aplicatia primeste un semnal din exterior ca trebuie sa se opreasca metoda Application_Error ...

Office document and custom properties in .NET 3.5

In documentele Office( Excel, Word, ..) putem sa stocam meta-propietati. Aceste meta-propietati sunt denumite custom properties. O parte din ele sunt definite de catre fiecare utilizator in parte, iar altele exista by default. Informatii precum "Last Saved Time" sau "Last Author" sunt setate automat de catre Office in momentul in care lucram cu un document. In cazul in care dorim sa accesam aceste informatii din .NET 4.0 este destul de simplu, dynamic types isi face perfect treaba aici. Partea interesanta este cand este nevoie sa accesam aceste date din .NET 3.5 de exemplu, unde dynamic types exista, dar nu ne permite sa il folosim asa cum am dorii. Pentru a putea sa accesam custom properties dintr-un document Office, in .NET 3.5 trebuie sa ne reintoarcem putin in timp. Orice incercare de a accesa aceste propietati direct, o sa termine cu o eroare de COM la runtime. ((DocumentProperties)docWorkbook.BuiltinDocumentProperties)["Last Author"] ((DocumentProper...

KeyedByTypeCollection

Cati dintre voi ati folosit pana acuma KeyedByTypeCollection ? Sa va spun sincer, pana nu de mult nici nu stiam ca exista. Aceasta colectie este un dictionar unde cheile acesteia sunt reprezentate de tipul valorii adaugate in colectie. KeyedByTypeCollection<object> collection = new KeyedByTypeCollection<object>(); collection.Add("Car"); collection.Add(1); collection.Add(1.1); collection.Add("Dog"); // Aceasta linie o sa arunce exceptie. Ultima linie o sa arunce exceptie deoarece avem deja in colectie un element de tip string. La prima vedere aceasta colectie pare destul de ciudata si poate genera urmatoarea intrebare: La ce este folositoare? Un scenariu in care aceasta colectie poate sa foarte folositoare este cand vrem sa avem un factory care sa pastreze obiectele ca si singleton. Folosind aceasta colectie implementarea factory poate sa aibe urmatoarea forma: public class SingletonFactory<T> { private readonly KeyedByTypeCollection...