-Ìóçûêà

 -Ïîäïèñêà ïî e-mail

 

 -Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â Flashr

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 26.02.2007
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 6574

json for .net

Äíåâíèê

×åòâåðã, 16 Ñåíòÿáðÿ 2010 ã. 23:50 + â öèòàòíèê
Âñåãäà íå ëþáèë âûäà÷ó JSON çà òî, ÷òî îíà ïîäðàçóìåâàåò îáðàáîòêó â JS íà ñòîðîíå êëèåíòà, à çíà÷èò ìíîãî ãåìîðà äëÿ ïðîãðàììèñòà. Íî îêàçûâàåòñÿ ñóùåñòâóåò óæå è ïîëíîöåííîå ðåøåíèå äåëàþùåå JSON íå ñëîæíåå îáû÷íîé XML ñåðèàëèçàöèè. Ðå÷ü ïðî newtonjson.dll, íàïèñàííóþ íà .Net è íåïëîõî äîêóìåíòèðîâàííóþ. Îòäåëüíî ïîðàäîâàëà âîçìîæíîñòü êîíâåðòàöèè êîíå÷íîãî ëèñòà äåðåâà â ïðîèçâîëüíûé òèï ïóòåì ïðîñòîãî âûçîâà òèïà cursor["leafname"].Value();. Âîò áû âñå çíà÷åíèÿ ÿ÷ååê äëÿ äàòàãðèäîâ òîæå èìåëè òàêîé øàáëîíèçàòîð, ÷òîáû íå ïðîïèñûâàòü êàæäûé ðàç ïðèâåäåíèå òèïà.

Ïðèìåð JSON ñåðèàëèçàòîðà â .Net äëÿ ðåçóëüòàòîâ âûäàâàåìûõ ãóãëîì ïðè ïîèñêîâûõ çàïðîñàõ ÷åðåç AJAX API - ìîæíî íàéòè â ïîñëåäíèõ èçìåíåíèÿõ blogsapi

PS: îòäåëüíî îòìå÷ó, ÷òî ãîòîâ âçÿòü ïðîãðàììèñòà íà ÷àñòè÷íóþ çàíÿòîñòü äëÿ ïîääåðæàíèÿ ìîèõ õîááè ïðîåêòîâ è ðàçâèòèÿ íåêîòîðûõ èäåé.

Ìåòêè:  

Twitter OAuth 2.0 by login-password

Äíåâíèê

×åòâåðã, 02 Ñåíòÿáðÿ 2010 ã. 16:22 + â öèòàòíèê
Ñåãîäíÿ ðàññêàæó êàê ðåàëèçîâûâàåòñÿ ðàáîòà ïðèëîæåíèÿ ÷åðåç OAuth, åñëè ïîëüçîâàòåëü ïåðåäàåò ïðîñòî ëîãèí è ïàðîëü. Ïðåæäå âñåãî ïîòðåáóåòñÿ êëàññ OAuthUtility, êîä êîòîðîãî åñòü â blogsapi.

Íà ïåðâîì ýòàïå ìû ïðîâåðÿåì ïðîèçâîäèëè ëè ìû àóòåíòèôèêàöèþ ïîëüçîâàòåëÿ ðàíåå. Åñëè íåò, òî îáðàùàåìñÿ ê òâèòòåðó ñ ëîãèíîì è ïàðîëåì, ñîîòâåòñòâóþùåìó íàøåìó ïðèëîæåíèþ (tokens.ConsumerKey,tokens.ConsumerSecret). Ïîëó÷àåì íàçàä êëþ÷(response.Token), ïî êîòîðîìó ìû ìîæåì ïîñòðîèòü çàïðîñ (OAuthUtility.BuildAuthorizationUri(response.Token)) íà ïîëó÷åíèå óíèêàëüíûõ ëîãèíà è ïàðîëÿ äëÿ ïîëüçîâàòåëÿ íàøåãî ïðèëîæåíèÿ. Íàçàä âîçâðàùàåòñÿ ñòðàíèöà, íà êîòîðîé ïîëüçîâàòåëþ ïðåäëàãàåòñÿ ââåñòè ëîãèí è ïàðîëü, íî òàê êàê ìû íå õîòèì òðåâîæèòü ïîëüçîâàòåëÿ, òî ââîäèì èõ çà íåãî, íåçàáûâàÿ èçâëå÷ü ñî ñòðàíèöû authenticity_token. Åñëè ëîãèí è ïàðîëü ïðàâèëüíû, òî íàì âîçâðàùàåòñÿ óíèêàëüíûé PIN, êîòîðûé ïîëüçîâàòåëü äîëæåí ïîòîì ïåðåäàòü íàøåìó ïðèëîæåíèþ, â êà÷åñòâå åäèíîðàçîâîãî ïàðîëÿ äëÿ ïîëó÷åíèÿ ïîñòîÿííîãî ïàðîëÿ. Îïÿòü æå ïàðñèì ñòðàíèöó âðó÷íóþ, ÷òîáû íå òðåâîæèòü ïîëüçîâàòåëÿ. È â çàâåðøåíèå äåëàåì çàïðîñ OAuthUtility.GetAccessToken, ÷òîáû ïî ðàçîâîìó ïàðîëþ íàøå ïðèëîæåíèå ïîëó÷èëî ïîñòîÿííûé ïàðîëü. È ñîõðàíÿåì ðåçóëüòàò, ÷òîáû áîëüøå íå ïîâòîðÿòü ýòèõ äåéñòâèé.

 èòîãå íàøå ïðèëîæåíèå, ÷òîáû ñäåëàòü çàïðîñ îò ëèöà ïîëüçîâàòåëÿ ïåðåäàåò íå ëîãèí è ïàðîëü, à àæ 4 ñòðî÷êè, ñîîòâåòñòâóþùèå 2ì ëîãèíàì è ïàðîëÿì îò íèõ. Îñíîâíàÿ âûãîäà - áåçîïàñòíîñòü, è òî, ÷òî ýòè ñòðî÷êè íàìíîãî ñëîæíåå ÷åì ïåðâîíà÷àëüíûå ëîãèí è ïàðîëü ïîëüçîâàòåëÿ, ÷òî ãàðàíòèðóåò ñëîæíîñòü èõ ïîäáîðà. Íî ñ äðóãîé ñòîðîíû, îíè íå èìåþò ñðîêà äàâíîñòè, ïîýòîìó çíàÿ èõ ñ ëåãêîñòüþ ìîæíî âûïîëíèòü äåéñòâèÿ îò ëèöà ïîëüçîâàòåëÿ-ïðèëîæåíèÿ, â îòëè÷èè îò êóêîâ èëè ñåññèé äëÿ àâòîðèçîâàííûõ êëèåíòîâ ñàéòîâ.

È îáùàÿ ñõåìà, äåìîíñòðèðóþùàÿ âåñü óæàñ òîãî, âî ÷òî ïðåâðàùàåòñÿ ïðîñòàÿ ðàíåå îïåðàöèÿ ïî âûïîëíåíèþ äåéñòâèé ïðè ïîìîùè ëîãèíà è ïàðîëÿ:


Êîä ñàìîé ôóíêöèè "çàëîãèíèâàíèÿ" â òâèòòåð.
×èòàòü äàëåå...

Ìåòêè:  

ïðî ïèçäåöû

Äíåâíèê

Âòîðíèê, 31 Àâãóñòà 2010 ã. 16:10 + â öèòàòíèê
Êàê ïîêàçûâàåò ïðàêòèêà - ïèçäåöû ïðèõîäÿò íåçàìåòíî. Êòî ñ ýòèì íåñîãëàñåí ìîæåò ïî÷èòàòü ïðî â÷åðàøíþþ íåäîñòóïíîñòü ñåðâèñîâ Google äëÿ Ðîññèè. Áëàãîäàðÿ ýòîìó íà âòîðîé ïëàí îòîøåë âòîðîé ïèçäåö, êîòîðûé íàñòóïèë ñåãîäíÿ - íàñòóïèë oauthapocolypse, çàáëîêèðîâàâøèé âñå ôóíêöèè òâèòòåðà ÷åðåç Basic àóòåíòèôèêàöèþ. Ðàíåå ýòî áûëî ïëàíèðîâàëîñü ñäåëàòü â ñåðåäèíå ëåòà, ïîòîì ïåðåíåñëè íà 31 àâãóñòà.  áëèæàéøåå âðåìÿ îáíîâëþ áèáëèîòåêó BlogsAPI òàê, ÷òîáû ôóíêöèè òâèòòåðà â íåé îïÿòü çàðàáîòàëè.

È ïîñëåäíåå, ÷åãî íèêòî íå îæèäàë - íàñòóïëåíèå ïîñëåäíåãî äíÿ ëåòà è çàìåòíîãî ïîõîëîäàíèÿ.

Ìåòêè:  

Tr.im RIP

Äíåâíèê

×åòâåðã, 25 Ìàðòà 2010 ã. 13:48 + â öèòàòíèê
Ñêîí÷àëñÿ îäèí èç ïåðâîïðîõîäöåâ ñîêðàùåíèÿ ññûëîê â èíòåðíåòå - Tr.im. Î åãî ñêîðîé ñìåðòè áûëî èçâåñòíî äàâíî, åùå êîãäà òâèòòåð ïåðåêëþ÷èëñÿ ïî óìîë÷àíèþ ñ íåãî íà Bit.ly, íî òîëüêî íà äíÿõ ñåðâèñ îêîí÷àòåëüíî ïåðåñòàë ôóíêöèîíèðîâàòü è îïóáëèêîâàë ñïèñîê íåêîòîðûõ äðóãèõ ïîïóëÿðíûõ ñîêðàùàòåëåé. Ïî ýòîìó ñëó÷àþ îáíîâèë áèáëèîòåêó BlogsAPI, äîáàâèâ ñëåäóþùèå êëàññû ñîêðàùåíèÿ:

Copy Source | Copy HTML
  1. [TestFixture]
  2. public class Shorteners
  3. {
  4.     private void RunTest(Shortener oServer)
  5.     {
  6.         String sRet = oServer.ConvertDataTo("http://s-c.me", ItemType.FullUrl, ItemType.ShortUrl);
  7.         Assert.AreEqual(false,String.IsNullOrEmpty(sRet));
  8.         Debug.WriteLine("Returns: " + sRet);
  9.         sRet = oServer.ConvertDataTo(sRet, ItemType.ShortUrl, ItemType.FullUrl);
  10.         if(!String.IsNullOrEmpty(sRet))
  11.         {
  12.             Debug.WriteLine("BackTrace: "+sRet);
  13.         }
  14.     }
  15.  
  16.     [Test]
  17.     public void Bitly()
  18.     {
  19.         RunTest(new BitLy());
  20.     }
  21.  
  22.     [Test]
  23.     public void Cligs()
  24.     {
  25.         RunTest(new Cligs());
  26.     }
  27.  
  28.  
  29.     [Test]
  30.     public void Isgd()
  31.     {
  32.         RunTest(new Isgd());
  33.     }
  34. }

Ìåòêè:  

 Ñòðàíèöû: [1]