Windows Mobile Support

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg
Showing posts with label Live Connect. Show all posts
Showing posts with label Live Connect. Show all posts

Monday, 20 February 2012

Windows Live - SkyDrive

Posted on 13:18 by Unknown
Windows LIVE series:
  • Introducere
  • Web Authentication
  • Live Connect
  • Basic Operations
  • SkyDrive
Astazi o sa vorbim despre cum putem accesa SkyDrive.
Pentru a putea avea acces la datele pe care un user le are pe SkyDrive este nevoie ca la logare sa setam scopul "wl.skydrive". Avand setat acest scope o sa putem accesa orice informatie pe care userul o are pe SkyDrive.
WL.init({ client_id: {idClient}, redirect_uri: {ourRedirectUrl} });
WL.login(
{ "scope": "wl.skydrive" },
function (response) {
if (response.status == "connected") {
alert("Utilizator conectat");
}
else {
alert("Autentificare esuata");
}
});
Dupa ce utilizatorul s-a logat tot ce ne-a mai ramas este sa apelam API-ul care il avem la dispozitie. Fiecare element care ne vine dupa o interogare o sa contina date precum tipul ementului( daca e folder sau fisier - ce tip de fisier), nume fisier, id, dimensiune etc. Aceste informatii sunt foarte asemanatoare cu cele pe care le avem cand suntem intr-un director de pe disk-ul local. Din JS pentru a aduce toate elementele din root trebuie sa facem urmatorul apel:
 WL.api({ path: ""/me/skydrive/files", method: "GET" }, onGetRootItemsComplete);
function onGetRootItemsComplete(response) {
if (response.error) {
alert("A aparut o eroare");
return;
}
var items = response.data;
var foundFolder = 0;
for (var i = 0; i < items.length; i++)
{
// item[i].type - tipul fisierului. Valore este "fo-lder" daca elementul este un folder
// daca ar fi un fisier aceast camp ar avea valoarea "file"
// item[i].name - numele la element
// item[i].id - id unic a elementului din SkyDrive
}
}

O sa avem nevoie de id, daca vrem de exemplu sa facem download la continutul unui fisier.
Pentru a putea vedea toate folderele, albumele de poze si fisierele din root a unui user pe de Skydrive e nevoie sa facem un request cu path-ul setat spre: me/skydrive/files
Pentru a accesa fisierele unui folder este nevoie sa apelam urmatorul path: {folderId}/files . Exact la fel se face daca vrem sa aducem pozele dintr-un albul: {album_id}/files.
Dar cum putem sa adaugam un nou folder pe SkyDrive. Pentru acest lucru avem nevoie de numele la folder, o scurta descriere si locatia unde dorim sa il adaugam. Mai jos puteti gasi un exemplu in C#:
Dictionary<string, object> newFolderData = new Dictionary<string, object>();
folderData.Add("NewFolderName", "New folder description");
LiveConnectClient liveConnectClient = new LiveConnectClient(session);
liveConnectClient.PostCompleted +=
new EventHandler<LiveOperationCompletedEventArgs>(CreateFolderPostCompleted);
client.PostAsync("me/skydrive/files/BaseFolder", newFolderData);
...
void CreateFolderPostCompleted(object sender, LiveOperationCompletedEventArgs e)
{
// Daca e.Error este diferit de NULL, atunci actiunea nu s-a terminat cu succes.
}
Daca in al doilea exemplu am vazut cum putem itera printr-un folder, acuma va propun sa download un fisier de pe SkyDrive. Odata ce avem id-ul la fisierul pe care vrem sa il copiem local, e nevoie sa apelam direct metoda download din JS sau DownloadAsync din C#. Pentru exemplul de mai jos am ales tot varianta C#:
client.DownloadCompleted +=
new EventHandler<LiveDownloadCompletedEventArgs>(OnFileDownloadCompleted);
client.DownloadAsync("file.{id_fisier}/content");
...
void OnFileDownloadCompleted(object sender, LiveDownloadCompletedEventArgs e)
{
// e.Result o sa contina fisierul nostru.
// Nu uitati sa faceti close la Result, deoarece este un stream: e.Result.Close();
}
Dupa cum am putut vedea prin intermediul API-ului este foarte simplu sa lucram cu SkyDrive. Nu uitati ca SkyDrive nu permite prin intermediul API-ului upload-ul la orice fel de fisiere. Asigurativa inainte sa faceti upload ca fisierul vostru este suportat. Din interfata web puteti uploada orice fel de fisiere.
Fisierele care se pot copia pe SkyDrive prin intermediul API sunt:
  • PDF, txt + fisiere Office precum Word, Excell, etc
  • poze in orice format supotat de Windows
  • audio doar in format wav
  • video in format wmv sau H.264
Orice tip de fisier poate sa fie adaugat din brower de exemplu. Trebuie tinut cont ca, chiar daca din API manipulam datele unui user( schimba vizibilitatea unui fisier), nu putem sa restrictionam accesul la fisere a.i. userul sa nu le poata accesa.
Read More
Posted in Live Connect, SkyDrive | No comments

Thursday, 2 February 2012

Windows Live - Basic operations

Posted on 07:44 by Unknown
Windows LIVE series:
  • Introducere
  • Web Authentication
  • Live Connect
  • Basic Operations
  • SkyDrive
Astazi o sa incepem sa vorbim despre serviciile de tip CORE care exista pe Windows Live Connect. Nu imi este foarte clar daca sa ofer exemplele in C# sau in JavaScript. Cred ca ar fi mai interesant sa prezint exemplele in JavaScript si din cand in cand o sa prezint si exemple in C#. In .NET avem o librărie, este destul de simplu, iar modul în care totul funcționează este destul de ascuns.
Înainte sa începem trebuie știut ceva foarte importat. Cand un utilizator nou accesează aplicația noastră pentru prima data, iar noi dorim sa accesam anumite servicii ca și cum am fi utilizatorul respectiv, acesta o sa trebuiască sa ne de-a dreptul ca putem sa accesam aceasta informație. In general apare un pop-up, asemănător cu cel de logare, unde userul își da acordul ca aplicația noastră sa acceseze o colecție de servicii în numele sau. In funcție de modul în care facem request-ul acest drept poate sa aibe o durata limitata sau sa fie pe veci. By default dreptul de acces la resursele unui utilizator sunt temporare.
In funcție de platforma, avem la dispoziție diferite librari prin care putem sa accesam mai ușor resursele. Pentru JavaScript avem la dispozitive o librărie cu numele WL.js, iar pentru .NET avem la dispoziție librăria Microsoft.Live. Toate apelurile se pot face și manual prin intermediul apelurilor de tip REST, dar acest lucru consuma timp și este generator de bug-uri.
Oriunde dorim sa folosim librăria WL, este nevoie ca aceasta sa fie inițializata cu id de client pe care l-am primit și url de redirect, care o sa fie apelat de către Live Connect in momentul în care un utilizator se autentifica.
In primul exemplu o sa presupunem ca dorim sa accesam datele de baza a utilizatorului împreuna cu datele de profil. Primul pas este ca utilizatorul sa se logheze:
WL.init({ client_id: {idClient}, redirect_uri: {ourRedirectUrl} });
WL.login(
{ "scope": "wl.basic" },
function (response) {
if (response.status == "connected") {
alert("Utilizator conectat");
}
else {
alert("Autentificare esuata");
}
});
Acuma ca utilizatorul este autentificat, putem sa accesam datele de baza a acestuia. Pentru acest lucru trebuie sa apelam path-ul "me" prin GET. Un obiect în format JSON o sa ne fie returnat si o sa contina toate de profil a acestuia.
WL.api(
"/me", "GET",
function (response) {
if (response.error) {
alert("A aparut o eroare.");
return;
}
// response - o sa conțină toate datele de profil
}
);

In cazul in care sunteti curiosi, iata mai jos un exemplu de răspuns:
{"id":"XXXd9f52e4XXX02X"
"name":"Vunvulea Radu"
"first_name":"Vunvulea"
"last_name":"Radu"
"link":"http://profile.live.com/cid-bb7d9f52e4fdb024/"
"birth_day":null
"birth_month":null
"birth_year":null
"gender":null
"emails":
{
"preferred":"XXX@hotmail.com"
"account":"XXX@hotmail.com"
"personal":null
"business":null
}
"addresses":
{
"personal":
{
"street":null
"street_2":null
"city":null
"state":null
"postal_code":null
"region":null
}
"business":
{
"street":null
"street_2":null
"city":null
"state":null
"postal_code":null
"region":null
}
}
"phones":
{
"personal":null
"business":null
"mobile":null
}
"locale":"ro_RO"
"updated_time":"2012-02-02T06:21:16+0000"
}
Din cate putem sa observam răspunsul este in format JSON, care se poate procesa foarte usor. Odata ce un user este logat cu SCOPE-ul "wl.basic", putem sa accesam orice informatii de baza, precum date de profil, lista de contacte. Ce imi placela acest API este faptul ca, chiar daca ai acces la contacte sau la evenimente din calendar, dreptul de adaugare pe fiecare din ele se obtine printr-un SCOPE separat, a.i. utilizatorul este protejat si stie exact ce poate sa faca o aplicatie cu contul sau.
Sa presupunem ca vrem sa facem retrive la toate evenimentele utilizatorului. In acest caz o sa avem nevoie sa ne logam folosind SCOP-ul "wl.calendars" si sa apelam path-ul "/me/events".
De menționat doua lucruri:
  • cand ne definim scope-ul putem sa avem o lista de genul "scope: "wl.basic wl.calendars"
  • resursele pe care le accesam trebuie sa fie văzute ca și o structura de foldere, organizate ierarhic
In exemplul de mai jos încărcam toate evenimentele utilizatorului:
 WL.api({
path: "/me/events",
method: "GET"
}, onResponseReceive);
function onResponseReceive(response)
{
// response contine lista de evenimente
}
In cazul in care dorim sa adaugam un eveniment este nevoie sa facem request la un nou scope "wl.events_create".
 WL.api({
path: "/me/events",
method: "POST",
body: {
name: "Iesire la bere",
description: "Iesire la bere cu Ghita",
start_time: "1/1/2012 20:00",
end_time: "1/1/2012 22:00",
location: "Cluj-Napoca",
is_all_day_event: false,
availability: "busy",
visibility: "public"
}
}, onResponseReceive);
Cand ne vine raspunsul, trebuie sa verificam doar ca proprietatea error nu conține nici o eroare.
Data următoare o sa povestim despre SkyDrive si Messenger.
Read More
Posted in Live Connect | No comments

Friday, 27 January 2012

Microsoft Live - Live Connect

Posted on 05:22 by Unknown
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 pagina, unde reprezinta id-ul pe care l-am primit cand ne-am inregistrat aplicatia, iar reprezinta url spre care userul o sa fie redirectionat in momentul in care procesul de autentificare s-a terminat cu succes. Despre parametrul vrea sa vorbim putin mai tarziu
https://oauth.live.com/authorize?client_id=<client_id>&scope=<scope>&response_type=code&redirect_uri=<redirect_url>
- dupa ce autentificare sa terminat, userul este redirectionat spre . In url o sa avem un parametru cu numele de 'code', pe baza caruia, putem sa obtinem token-ul de acces a userului. Folosind acest cod putem sa accesam orice serviciu integrat cu Live Connect. Mai jos gasiti modul in care serverul o sa ne apeleze aplicatia:
<redirect_url>?code=<o_cheie_unica>
- token-ul de acces a userului, de care avem nevoie ca sa accesam serviciile dorite se obtine apeland urmatorul url:
https://oauth.live.com/token?client_id=<client_id>&redirect_uri=<redirect_url>&client_secret=<client_secret_key>&code=<code>&grant_type=authorization_code

  • client_secret_key - reprezinta cheia unica pe care am obtinut-o cand am inregistrat aplicatia
  • authorization_code - specifica modul prin care vrem sa obtinem token-ul clientului. In cazul nostru pe baza codului pe care l-am obtinut la pasul precedent
Raspunsul care o sa ne vina in urma ultimului apel o sa contina 5 elemente:
  1. access_token - token-ul de acces la servicii, pe care o sa il folosim cand vrem sa accesam un serviciu
  2. authentification_token - token-ul de autentificare
  3. scope - pentru ce servicii poate sa fie folosit token-ul
  4. token_type - tipul de token obtinut( de obicei o sa fie 'bearer')
  5. expires_in - durata de timp cand token-ul de acces poate sa fie folosit( valoarea este exprimata in secunde).
Mai jos gasiti un exemplu de raspuns in format JSON, pe care il primim in urma apelului:
{    "access_token" : "ExxXCSFCCWEECECE...AA==",    "authentication_token" : "423423-423424-2342342";    "expires_in" : 3600,    "scope" : "wl.signin wl.basic wl.calendars",    "token_type" : "bearer"}
Intr-un alt post o sa revin cu o descriere despre cum consumam serviciile integrate cu Live ID. Ce trebuie sa tinem minte este ca ce trebuie sa facem este sa apelam un url, cu anumiti parametrii in care sa includem si token-ul de acces.
Am ramas dator cu o explicatie. Ce este un SCOPE? Actiune prin care cerem permisiune unui user sa accesam unu sau mai multe servicii in numele acestuia.
Exista trei tipuri de scope:
  • core - sunt serviciile de baza precum: conectare la Live Connect, lista de contacte, acces offline la date, fara ca userul sa mai fie nevoit sa se autentifice in aplicatia noastra
  • extended - cateva servicii auxiliare, care completeaza functionalitatiile de baza( calendar, poze, skydrive, messeger, etc)
  • developer - servici create de catre alti dezvoltatori, care sunt integrate cu Live Connect( orice persoana poate sa scrie o aplicatie si sa fie accesibila de catre orice persoana prin intermediul Live Connect)
Pentru o lista detaliata puteti accesa urmatorul link http://msdn.microsoft.com/en-us/library/hh243646.aspx.
Read More
Posted in Live Connect, Live ID, Open ID | No comments

Thursday, 26 January 2012

Windows Live - Web Authentication

Posted on 06:30 by Unknown
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, unde isi va introduce datele. Dupa acest pas, userul este redirectat inapoi spre aplicatia noastra cu o cheie unica( token) - denumita Cliend ID, pe baza careia putem sa identificam userul. Pe langa aceste informatii, avem access la cateva date de baza a userului precum nume, tara, etc.
Cliend ID este o cheie unica formata din 16 caractere, pe care o sa trasmiteti la servere Windows Live de fiecare data cand un user se autentifica. Toate datele care se trasmit o sa fie encriptate si semntate pe baza unuei chei secrete pe care o primiti in momentul in care va inregistrati aplicatia.
Primul pas pe care trebuie sa il facem este sa ne inregistram aplicatia. Fiecare aplicatie se identifica unic pe baza unei chei. Acest lucru se poate face la urmatorul link: http://go.microsoft.com/fwlink/?LinkID=144070
Odata ce avem aplicatia inregistrata, trebuie sa adaugam in aplicatia noastra un link de autentificare prin Live ID. Acest link o sa contina ca si parametrii:
  • appid - cliend ID( cheia unica a aplicatiei noastre)
  • context -( optional) pagina spre care userul sa fie redirectionat dupa ce autentificarea se finalizeaza( ex. welcome.html)
  • style -( optional) o colectie de atribute folosite prin care se poate personaliza bunoul de sign in
Dupa ce userul isi introduce credentiale o sa fie redirectionat spre pagina noastra. Pe flowul normal, in cookies o sa gasim un token encriptat cu cheia "webauthtoken". Acesta o sa contina urmatoarele date despre user:
  • User.Id – id-ul unic a fiecarui user
  • User.Timestamp – data ultimei autentificari
  • User.Context – contextul care a fost specificat in momentul autentificarii
  • User.Token – token-ul unic a userului curent( dupa o anumita perioada de timp acesta o sa expire)
Trebuie precizat ca datele sunt encriptate este AES128, iar cel de semnare este HMAC-SHA256. Mai jos gasiti un exemplu de cum trebuie facuta decriptatea si extragerea datelor.
public string DecryptResponse(){     const int ivLength = 16;     token = HttpUtility.UrlDecode(token);     byte[] ivAndEncryptedValue = Convert.FromBase64String(token);     var decryptAlg = new RijndaelManaged();     decryptAlg.KeySize = 128;     decryptAlg.Key = cryptKey;     decryptAlg.Padding = PaddingMode.PKCS7;     var memStream = new MemoryStream(ivAndEncryptedValue);     byte[] iv = new byte[ivLength];     memStream.Read(iv, 0, ivLength);     decryptAlg.IV = iv;     cStream = new CryptoStream(memStream, decryptAlg.CreateDecryptor(),                          CryptoStreamMode.Read);     sReader = new StreamReader(cStream, Encoding.ASCII);     return sReader.ReadToEnd();}

In urmatorul post o sa discutam despre Live Connect.
Read More
Posted in Live Connect, Live ID, Microsoft, Open ID | No comments

Monday, 16 January 2012

Windows Live - Introducere

Posted on 05:42 by Unknown
Windows LIVE series:
  • Introducere
  • Web Authentication
  • Live ConnectLink
  • Basic Operations
  • SkyDrive
Acesta este primul post dintr-o serie de posturi in care osa discutam despre Microsoft Live ID. O sa discutam mai ales din perspectivaunui dezvoltator. Inainte sa incepem sa vorbim despre Live ID, cred ca estenecesar sa vedem ce inseamna OpenID.
OpenID is an open standard that describes how users can be authenticated in a decentralized manner, eliminating the need for services to provide their own ad hoc systems and allowing users to consolidate their digital identities.
Sursa: Wikipedia
Pentru noi, ca si dezvoltatori de aplicatii web, mobile saudesktop acest lucru inseamna ca putem sadezvoltam aplicatii care permit utilizatoriilor sa se autentifice cu un user deLive Id, Facebook, Yahoo, Google. Open ID ne ofera mecanismul prin care putemsa verificam identitatea unui user, userul X este perosana care predinte caeste defapt.
Din cei trei de AAA(Authentification, Autorization, Accounting), OpenID ne ajuta sa rezolvam primulA – Authentification. In general, partea de autorizare si de tracking trebuiesa o facem in interiorul aplicatiei noastre. Uneori exista mai multe sistemecare sunt integrate intre ele, a.i. partea de autorizare se face intr-un singurloc, dar acesta este un caz particular.
Exista mai multe moduri prin care un user se poateautententifica in system folosind OpenId( url, token, password, smart cards,amprenta etc). OpenID fiind un standard nu impune modul prin care un usertrebuie sa se autentifice.
In procesul de autentificare folosind OpenID sunt implicate 3sisteme care comunica intre ele:
  • User device – deviceul de pe care userul vrea sa accesezeaplicatia noastra
  • Identify Provider (OpenID provider) - sistemul pe care il folosim pentruautentificare
  • Relying Party – aplicatia noastra
Scenariul este urmatorul:
Un user doreste sa se autentifice in aplicatia noastra. In locsa introduca user si parola, acesta o sa selecteze Identify Provider-ul pe careil foloseste. Identify Provider nu trebuie sa fie neaparat unul cunoscut.Userul poate sa introduca doar un URL si sa predinta ca URL-ul respective estea lui. Relying party trebuie sa contacteze identify provider si sa asociezerequestul facut de user (in general intre indentity provider si relying partyse face un schimb de token-uri). Dupa acest pas relying party o sa faca unrequest de autentificare la idenfity provider, care o sa deschida o fereastrade log-in la end-user. Userul isi va introduce credentialele lui, care urmeazasa fie verificate de catre identify provider. Dupa acest pas identify providero sa raspunda la relying party daca autentificarea a avut loc cu success. Pebaza acestui raspuns userul se va autentifica in sistemul nostru.
Raspunsul care vine de la identify provider nu o sa vina asaimediat. In functie de cat de repede introduce userul credentialele, raspunsulpoate sa vina in 10 secunde sau in 2 minute. Exista diferite implentari pentrumecanismul prin careidentify provider notifica relying party daca autentificareaa avut loc cu success. In implementarea standard, identify provider apeleazarelying party (se face un submit la o anumita adresa) si ii trasmite dacaautentificarea a avut loc cu success.
Mai jos puteti sa gasiti modul in care se schimba informatia in momentul in care se foloseste OpenID.
1. Send user’s URL
2. Redirect user to get token from OP
3. Get token from OP
4. User post credentials to OP
5. Redirect token is send back to the relying partyusing user device
6. Redirect token is send back to the relying partyusing user device

Dupa cum ati putut observa in schema de mai sus, inate saputem folostii un provider de Open ID este necesar sa ne inregistram la acesta.
In general fiecare identify provider ofera diferitefunctionalitati pe langa cele de baza( informatii suplimentare despre user:nume, sex, varsta, language, etc).
Microsoft Live Id-ul este mecanismul de identify provider pecare il foloseste Microsoft. Acesta nu trebuie folosit doar de catreaplicatiile Microsoft, poate sa fie folosit in orice fel de aplicatie. Existamai multe modalitati prin care ne putem creea un count de Live Id, uneori necream unul fara sa ne dam seama. Daca avem un cont de Hotmail, WindowsMessenger sau .NET Passport atunci deja avem si un cont de LiveId.
Din punct de vedere istoric, prima data a aparut Hotmail,urmat de .NET Passport, iar apoi Windows Live ID. Din 2007 Microsoft a lansatSDK-ul de Live ID prin intermediul caruia orice dezvoltator, putea sa integrezeLive ID in aplicatia lui, indiferent de limbajul si/sau platforma. Din 2008, Microsofta anuntat ca suporta standardul OpenID in totalitate.

Read More
Posted in Live Connect, Live ID, Microsoft, Open ID | No comments
Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • E-Learning Vendors Attempt to Morph Mobile
    The sign should read: " Don't touch! Wet Paint !" I had a good chuckle today after receiving my latest emailed copy of the eLe...
  • Content Types - Level 6: Rich Media
    Level 6: Rich Media NOTE: This is part 7 of 7 and the conclusion of this continuing series; please see earlier posts for more background inf...
  • CDN is not the only solution to improve the page speed - Reverse Caching Proxy
    I heard more and more often think like this: “If your website is to slow, you should use a CDN.” Great, CDN is THE solution for any kind of ...
  • Publishing our CellCast Widget for iPad
    The rush has been on this week as our development team worked to design a new version of our CellCast Widget specifically for Apple's up...
  • NetCamp 2012 - Windows 8 development experience
    During this week I participate to NetCamp 2012.  This was the 6th NetCamp event and is organizing by Evensys. NetCamp is a dedicated event f...
  • SQL - UNION and UNION ALL
    I think that all of us used until now UNION in a SQLstatement. Using this operator we can combine the result of 2 queries. For example we wa...
  • Password/Token/PIN definition
    Password, Token, PIN, Passcode… every day we use this items when we need to authenticate in different systems. I observed that there are tim...
  • Shared Access Signature and URL encoding on Windows Azure
    Playing a little with Shared Access Signature was quite nice. In this moment this new functionality has a great potential. Playing a little ...
  • Content Types - Level 4: Reference
    Level 4: Reference Materials & Static Content NOTE: This is part 5 of 7 in a continuing series; please see earlier posts for more backgr...
  • Content Types - Level 5: Courseware
    Level 5: Content and Courseware NOTE: This is part 6 of 7 in a continuing series; please see earlier posts for more background information. ...

Categories

  • .NET
  • .NET nice to have
  • #if DEBUG
  • 15 iunie 2011
  • 15 octombrie 2011
  • 2011
  • abstracta
  • action
  • adaugare
  • ajax
  • Amsterdam
  • Android
  • aplicatii
  • App Fabric
  • Apple iSlate
  • array
  • as
  • ASP.NET
  • AsReadOnly
  • Assembly comun
  • async
  • Asynchronous programming
  • asyncron
  • Autofac
  • AutoMapper
  • az
  • Azure
  • Azure AppFabric Cache
  • Azure backup solution
  • Azure Storage Explorer
  • azure. cloud
  • backup
  • BCP utility
  • bing maps v7
  • BitArray
  • BlackBerry
  • blob
  • BlobContainerPublicAccessType
  • breakpoint
  • bucuresti
  • C#
  • cache
  • CallerMemberName
  • CellCast
  • Certificate
  • CES
  • change
  • ChannelFactory
  • clasa
  • classinitialize
  • clean code
  • click event
  • close
  • Cloud
  • Cluj
  • cluj-napoca
  • Code contracts
  • code retrat
  • codecamp
  • CollectionAssert
  • Compact Edition
  • compara
  • Comparer T .Default
  • CompareTo
  • comparison
  • comunitate
  • concurs
  • Conditional attribute
  • configurare
  • connection string
  • container
  • content type
  • control
  • Convert
  • convertAll
  • convertor
  • cross platform
  • CRUD
  • css
  • custom properties
  • custom request
  • DACPAC
  • Daniel Andres
  • data sync service
  • database
  • date time
  • datetime
  • debug
  • default
  • delegate
  • dependency injection
  • deploy
  • DeploymentItem
  • design patterns
  • Dev de Amsterdam
  • development stoage
  • dictionary
  • diferente
  • digging
  • director
  • Directory.Exist
  • disable
  • dispatcher
  • dispose
  • dropdown
  • dynamic
  • EF
  • email
  • encoding
  • entity framework
  • enum
  • enumerable
  • Environment.NewLine
  • error
  • error 404
  • error handling
  • eveniment
  • event
  • ews
  • excel
  • exception
  • exchange
  • exita
  • explicit
  • export
  • extension
  • field
  • File.Exist
  • finalize
  • fire and forget
  • Fluent interface pattern
  • format
  • func
  • GC.SuppressFinalize
  • generic
  • getdirectoryname
  • globalization
  • gmail
  • hackathon
  • Hadoop
  • handle
  • HTML
  • html 5
  • Html.ActionLink
  • http://www.blogger.com/img/blank.gif
  • HttpModule
  • IComparable
  • IE
  • ienumerable
  • IIS
  • image
  • implicit
  • import
  • int
  • internationalization
  • Internet Explorer
  • interop
  • Ioc
  • IP Filter
  • iPhone
  • iQuest
  • IStructuralEquatable
  • ITCamp
  • itspark
  • java script
  • javascript
  • July 2012
  • KeyedByTypeCollection
  • KeyNotFoundException
  • Kinect SDK
  • lambda expression
  • LightSwitch Microsoft Silverlight
  • linq
  • list
  • lista
  • lista servicii
  • liste
  • Live Connect
  • Live ID
  • load
  • localization
  • lock
  • m-learning
  • MAC
  • Mango
  • map
  • mapare
  • mapare propietati
  • messagequeue
  • meta properties
  • method
  • MethodImpl
  • Metro App
  • Microsoft
  • Microsoft Sync Framework
  • mlearning
  • mlearning devices
  • Mobile Apps
  • mobile in the cloud
  • mobile learning
  • mobile services
  • Mobile Web
  • mongoDb
  • monitorizare
  • msmq
  • multitasking
  • MVC
  • MVC 3
  • MVVM
  • namespace
  • nextpartitionkey
  • nextrowkey
  • Ninject
  • nivel acces
  • no result
  • normalize
  • nosql
  • null expcetion
  • null object pattern
  • NullReferenceException
  • OAuth API
  • office
  • offline
  • Open ID
  • openhackeu2011
  • operations
  • operator
  • optimization
  • option
  • outputcache
  • OutputCacheProvider
  • override
  • paginare
  • pagination
  • path
  • persistare
  • Portable Library tool
  • Post event – CodeCamp Cluj-Napoca
  • predicate
  • predictions
  • prezentare
  • process
  • proiect
  • property
  • propietati
  • query
  • ReadOnlyCollection
  • ReadOnlyDictionary
  • referinta
  • reflection
  • remote
  • reply command
  • request
  • request response
  • resouce
  • REST
  • REST Client
  • RESTSharp
  • ronua
  • rss
  • rulare
  • salvare in fisier
  • sc
  • schimbare timp
  • select
  • select nodes
  • send
  • serializare
  • serialization
  • Server.Transfer. Resposen.Redirect
  • service bus
  • ServiceBase
  • servicecontroller
  • sesiune
  • session
  • Session_End
  • Session_Start
  • setup
  • Sibiu
  • signalR
  • Silverlight
  • sincronizare
  • Single Responsibility Principle
  • SkyDrive
  • skype
  • smartphones
  • smtp
  • Snapguide
  • sniffer
  • socket
  • solid
  • spec#
  • sql
  • Sql Azure
  • SQL CE
  • sql server 2008 RC
  • SRP
  • startuptype
  • stateful
  • stateless
  • static
  • stergere
  • store
  • store procedure
  • stream
  • string
  • string.join
  • struct
  • StructuralEqualityComparer
  • submit
  • switch
  • Symbian
  • Synchronized
  • system
  • tabele
  • table
  • techEd 2012
  • tempdata
  • test
  • testcleanup
  • testinitialize
  • testmethod
  • thread
  • timer
  • ToLower
  • tool
  • tostring
  • Total Cost Calculator
  • trace ASP.NET
  • transcoding
  • tuplu
  • tutorial
  • TWmLearning
  • type
  • unit test
  • unittest
  • UrlParameter.Optional
  • Validate
  • validation
  • verificare
  • video
  • view
  • ViewBag
  • virtual
  • visual studio
  • VM role
  • Vunvulea Radu
  • wallpaper
  • WCF
  • WebBrower
  • WebRequest
  • where clause
  • Windows
  • windows 8
  • Windows Azure
  • Windows Azure Service Management CmdLets
  • windows live messenger
  • Windows Mobile
  • Windows Phone
  • windows service
  • windows store application
  • Windows Task
  • WinRT
  • word
  • workaround
  • XBox
  • xml
  • xmlns
  • XNA
  • xpath
  • YMesseger
  • Yonder
  • Zip

Blog Archive

  • ▼  2013 (139)
    • ▼  November (17)
      • Service Bus - Optimize consumers using prefetch an...
      • Extract relative Uri using MakeRelativeUri method
      • Sync Group - Let's talk about Performance
      • [PostEvent] Slides from MSSummit 2013, Bucharest
      • How to get the instance index of a web role or wor...
      • Sync Group - A good solution to synchronize SQL Da...
      • Throttling and Availability over Windows Azure Ser...
      • How to monitor clients that access your blob storage?
      • Digging through SignalR - Dependency Resolver
      • [Event] Global Day of Coderetreat in Cluj-Napoca! ...
      • Windows Azure Service Bus - What ports are used
      • Debugging in production
      • Simple load balancer for SQL Server Database
      • [PostEvent] MSSummit 2013, Bucharest
      • How to read response time when you run a performan...
      • VM and load balancer, direct server return, availa...
      • Bugs that cover each other
    • ►  October (12)
    • ►  September (10)
    • ►  August (7)
    • ►  July (8)
    • ►  June (15)
    • ►  May (12)
    • ►  April (17)
    • ►  March (16)
    • ►  February (9)
    • ►  January (16)
  • ►  2012 (251)
    • ►  December (9)
    • ►  November (19)
    • ►  October (26)
    • ►  September (13)
    • ►  August (35)
    • ►  July (28)
    • ►  June (27)
    • ►  May (24)
    • ►  April (18)
    • ►  March (17)
    • ►  February (20)
    • ►  January (15)
  • ►  2011 (127)
    • ►  December (11)
    • ►  November (20)
    • ►  October (8)
    • ►  September (8)
    • ►  August (8)
    • ►  July (10)
    • ►  June (5)
    • ►  May (8)
    • ►  April (9)
    • ►  March (14)
    • ►  February (20)
    • ►  January (6)
  • ►  2010 (26)
    • ►  December (1)
    • ►  November (1)
    • ►  October (1)
    • ►  June (2)
    • ►  May (1)
    • ►  April (4)
    • ►  March (1)
    • ►  February (1)
    • ►  January (14)
Powered by Blogger.

About Me

Unknown
View my complete profile