-Ìóçûêà

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

 

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

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

 -Ñòàòèñòèêà

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

Îòïðàâêà ïî÷òû èç Windows Azure

Äíåâíèê

Âòîðíèê, 28 Èþíÿ 2011 ã. 12:36 + â öèòàòíèê
 Èíäóññêîì Windows Azure åñòü ìíîãî ïðîáëåì. È îäíà èç ïåðâûõ, ñ êîòîðîé âû ñòîëêíåòåñü - íåâîçìîæíîñòü îòïðàâèòü ïðîñòîå ïèñüìî âî âíå. Äà ýòî ëîãè÷íîå îãðàíè÷åíèå íàñòðîéêàìè áåçîïàñíîñòè ôàåðâîëà íà âñåõ ñèñòåìàõ, íî òàê êàê ýòî íå îäíà ìàøèíà, à îáëàêî - ó âàñ íåò âîçìîæíîñòè åå îáîéòè. Äàæå ÷åðåç ïîèñê íàõîäÿòñÿ äóðàöêèå ðåøåíèÿ, â êîòîðûõ ïðåäëàãàåòñÿ ëèáî 1) êóïèòü ñòîðîííèé ðåëàé âî âíå è îòïðàâëÿòü ïî÷òó ÷åðåç íåãî 2) ñòàòü ïîäïèñ÷èêîì Exchange ñåðâèñîâ ìèêðîñîôòà.

Íî íà ñàìîì äåëå, åñòü âîçìîæíîñòü îòïðàâêè ïî÷òû ÷åðåç Ãóãë, ðàáîòàþùèé ÷åðåç SSL è íà íåáëîêèðîâàííîì 587 ïîðòó. Òî åñòü äåëàåì,
Copy Source | Copy HTML
  1. var client = new SmtpClient(props["SmtpServer"])
  2.                              {
  3.                                  DeliveryMethod = SmtpDeliveryMethod.Network,
  4.                                  Credentials = new NetworkCredential(props["SmtpLogin"], props["SmtpPwd"]),
  5.                                  Port = int.Parse(props["SmtpPort"]),
  6.                                  EnableSsl = true,
  7.                              };
  8.  
  9.             what = what + @"
    Ñ Óâàæåíèåì, Ïî÷òîâàÿ ñëóæáà " + props["HostAddress"];
  10.  
  11.             try
  12.             {
  13. #if !DEBUG
  14.                 client.Send(props["SmtpLogin"],
  15.                     to,
  16.                     "Subj",
  17.                     string.Format(what, pars));
  18. #endif
  19.             }
  20.             catch (SmtpFailedRecipientsException)
  21.             {
  22.  
  23.             }


è ñîîòâåòñòâåííî íàñòðîéêè
Copy Source | Copy HTML
  1. <add key="SmtpServer" value="smtp.gmail.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  2. <add key="SmtpLogin" value="mail@gmail.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  3. <add key="SmtpPwd" value="password" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  4. <add key="SmtpPort" value="587" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />

Òàêæå, íà âñÿêèé ñëó÷àé, äîáàâëÿåì â íàñòðîéêè ðàçðåøåíèå íà âûïîëíåíèå native êîäà -

PS: Ñ èþëÿ ýòîãî ãîäà Azure âðîäå îáúÿâèëî î áåñïëàòíîñòè âñåãî âõîäÿùåãî òðàôèêà.

Ìåòêè:  

WCF Proxy tunnel

Äíåâíèê

Ñðåäà, 15 Èþíÿ 2011 ã. 16:37 + â öèòàòíèê
Íèæå ðàññêàæó î ðåàëèçàöèè ïðîáðîñà WCF çàïðîñîâ îò îäíîãî ñåðâåðà ÷åðåç íåñêîëüêî ïðîìåæóòî÷íûõ, òàê íàçûâàåìûé wcf tunneling, âîïðîñ î ðåàëèçàöèè êîòîðîãî óæå ïîäíèìàëñÿ íà gotdotnet.ru. Òàì àâòîð ïðåäëàãàë èñïîëüçîâàòü Castle.DynamicProxy äëÿ äèíàìè÷åñêîé ãåíåðàöèè ïðîêñè-êëàññîâ äëÿ ñîçäàíèÿ êàíàëà. Îäíàêî êîììåíòàòîðû îòìåòèëè, ÷òî ïîëó÷åííûé ôóíêöèîíàë äóáëèðóåò ëèøü ñòàíäàðòíûå âîçìîæíîñòè ïðè ïðÿìîì âçàèìîäåéñòâèè òî÷êà-òî÷êà.
Àêòóàëüíîñòü ïðèîáðåòàåòñÿ, êîãäà äîáàâëÿåòñÿ íàáîð ïðîìåæóòî÷íûõ òî÷åê. Ïðè ýòîì íà êëèåíòå èäåò ïåðåõâàò âûçîâà ïðîèçâîëüíîé óäàëåííîé ôóíêöèè FuncName íà âûçîâ àáñòðàêòíîé ôóíêöèè object _DataTransfer(HeaderAuthen auth, object ServiceLink, object FuncName, object[] param); Äàëåå îáðàùåíèå òðàíñëèðóåòñÿ ÷åðåç ñåðèþ ïðîìåæóòî÷íûõ ìàøèí è â èòîãå îáðàùåíèå ïåðåäàåòñÿ íà ServiceLink, ãäå îáðàáàòûâàåòñÿ. Òàêæå âîçâðàùàåòñÿ ðåçóëüòàò. Ãðóáî ãîâîðÿ ïðèìèòèâíûé ôóíêöèîíàë Biztalk ñâîèìè ðóêàìè ïî ïåðåäà÷è soap ñîîáùåíèé â ìíîãîñâÿçíîé ñåòè. Êðîìå òîãî ìû áåç âåäîìà ïîëüçîâàòåëÿ íàêëàäûâàåì íà êàíàë çàùèòó ÷åðåç HeaderAuthen auth.
Îòäåëüíî âûêëàäûâàþ ðåàëèçàöèþ êëàññ DynamicServiceProxy è ServiceChannelManagerInterceptor, ïîäìåíÿþùèå âûçîâ, à òàêæå ñàì âûçîâ â ServiceChannelManager. Ñîîòâåòñòâåííî âñå çàêëàäûâàåòñÿ â áèáëèîòåêó, êîòîðàÿ äîëæíà áûòü íà âñåõ òî÷êàõ, à íà òóííåëüíûõ-ïðîìåæóòî÷íûõ òî÷êàõ åùå è ðåàëèçóåòñÿ Êîíòðàíêò, â êîòîðîì âàæíî îïèñàòü ïåðåäàòî÷íóþ ôóíêöèþ _DataTransfer, âñå ôóíêöèè íà êîíå÷íûõ òî÷êàõ, à òàêæå âñå êëàññû è òèïû ÷åðåç KnownTypeContainer. Òàêæå âàæíî âêëþ÷èòü ñåðèàëèçàòîð XmlSerializerFormat, òàê êàê ïî óìîë÷àíèþ â WCF èñïîëüçóåòñÿ DataContractSerializer, êîòîðûõ íå ïîçâîëÿåò ïåðåäàâàòü object. Òî åñòü âûçîâû ïðîõîäèòü áóäóò, à äàííûå - íåò. Êðîìå òîãî ó XmlSerializerFormat òîæå åñòü îñîáåííîñòü, êòî íåëüçÿ ïåðåäàòü íåêîòîðûå ñòàíäàðòíûå òèïû, íàïðèìåð, DataSet êàê ïàðàìåòð, òàê êàê â íèõ èñïîëüçóåòñÿ íåòèïèçèðîâàííûé ArrayList. Âîò ïîæàëóé è âñå, ÷òî íóæíî çíàòü.

Ìåòêè:  

Windows Azure for free

Äíåâíèê

Ñðåäà, 01 Èþíÿ 2011 ã. 17:31 + â öèòàòíèê
Áóêâàëüíî íà äíÿõ ïîñëå ìîèõ ïîñòîâ î íåóäà÷íîì èñïîëüçîâàíèè Windows Azure ïîÿâèëàñü ñïåöèàëüíàÿ àêöèÿ äëÿ ðîññèéñêèõ ïîëüçîâàòåëåé, êîòîðàÿ ïîçâîëÿåò ïîòåñòèðîâàòü ñåðâèñ áåç èñïîëüçîâàíèÿ êðåäèòíîé êàðòû è êàê ñëåäñòâèå áåç óãðîçû ñïèñàíèÿ ñðåäñòâ. Âîñïîëüçóþñü âîçìîæíîñòüþ.

À ïîêà, âûÿñíèëîñü, ÷òî äëÿ þðèäè÷åñêèõ ëèö åñòü âîçìîæíîñòü èñïîëüçîâàòü Àçóðå â Ðîññèè, íåñìîòðÿ íà îôèöèàëüíî ÍÅ ïðåäîñòàâëÿåìûé ñåðâèñ. Äëÿ ýòîãî íàäî çàêëþ÷èòü äîãîâîð ñ ðåáÿòàìè èç ñîôòëàéíà - azure.softline.ru, êîòîðûå ìíå ÷åñòíî è ïðèçíàëèñü, ÷òî ïðèäåòñÿ ïëàòèòü ñ íåáîëüøîé äîïëàòîé çà èõ ïîñðåäíè÷åñêèå óñëóãè.

×òî êàñàåòñÿ ñàìîãî èñïîëüçîâàíèÿ Windows Azure, òî ïîêà îáíàðóæèë îêîëî 5 ñêðûòûõ êàìíåé, î êîòîðûõ îôèöèàëüíî íå ãîâîðÿò, íî ñ êîòîðûìè ïðèäåòñÿ ñòàëêèâàòüñÿ âñåì. Áóäåò âðåìÿ - ðàñïèøó ïîäðîáíî.

Ìåòêè:  

Ïðî êýøèðîâàíèå

Äíåâíèê

Ïÿòíèöà, 22 Àïðåëÿ 2011 ã. 15:54 + â öèòàòíèê
Íåäàâíî ïèñàë ïðî îïòèìèçàöèþ ñàéòà äëÿ âñÿêèõ ñïèäòåñòîâ. Íî âñå îíè áåñïîëåçíû, åñëè ñàì ñàéò ðàáîòàåò ìåäëåííî, à ÷òîáû åãî óñêîðèòü íóæíî íå òîëüêî âñòðîåííîå êýøèðîâàíèå íà óðîâíå ñòðàíèö - @OutputCache, íî è êýøèðîâàíèå íà óðîâíå îáúåêòîâ ìîäåëè. Êýøèðîâàíèå íà óðîâíå áàçû, âñÿêèå memcache àêòóàëüíî ëèøü êîãäà åñòü êó÷à FrontEnd'îâ è îíè òîæå ãåíåðÿò íåìàëî çàïðîñîâ íåñìîòðÿ íà ñâîå êýøèðîâàíèå.

Òàê âîò, äëÿ êýøèðîâàíèÿ îáúåêòîâ â asp.net äåëàåòñÿ ïðîñòîé êëàññ, íàïðèìåð:
×èòàòü äàëåå...

Ìåòêè:  

asp.net optimization

Äíåâíèê

Âòîðíèê, 19 Àïðåëÿ 2011 ã. 11:45 + â öèòàòíèê
 ñåòè ïîÿâèëñÿ äîêëàä Mad'a íà êîíôåðåíöèè Mix11 â ËàñÀíæåëåñå, ñìîòðåòü òóò.  íåì ðàññêàçûâàåòñÿ ïðåæäå âñåãî êàê ñ ïîìîùüþ íàñòðîéêè asp.net ñàéòà äîáèòüñÿ ïîêàçàòåëåé íà òåñòàõ ñêîðîñòè YSLOW è PageSpeed áëèçêèõ â 100. Êàê íåòðóäíî äîãàäàòüñÿ â ðåçóëüòàòå ïîëó÷àåòñÿ ñàéò, êîãäà áðàóçåð âîîáùå íå äåëàåò çàïðîñ ê ñåðâåðó, òàê êàê âñþäó ïðîñòàâëåí Expired. Åäèíñòâåííàÿ ñëîæíîñòü êðîìå âñÿêèõ ñæàòèé, áûëà â óìåíüøåíèè ÷èñëà çàïðîñîâ ê ñåðâåðó. È êîãäà ýòà ïðîáëåìà áûëà ðåøåíà áûëî âåðíî çàìå÷åíî, ÷òî åñëè áû èñïîëüçîâàëñÿ CDN äëÿ ñòàòèêè, òî òàêîé ïðîáëåìû áû è íå âîçíèêëî.

Ìåòêè:  

Ýñòîíñêîå ñîîáùåñòâî ðóññêèõ ðàçðàáîò÷èêîâ

Äíåâíèê

Âòîðíèê, 05 Àïðåëÿ 2011 ã. 23:57 + â öèòàòíèê
Îòêðûë äëÿ ñåáÿ î÷åíü äðóæíîå ñîîáùåñòâî ýñòîíñêèõ ðóññêîÿçû÷íûõ ðàçðàáîò÷èêîâ. Âîò ïàðî÷êà ïðîñòî çàìå÷àòåëüíûõ äîêëàäîâ, êîòîðûå âñåì ðåêîìåíäóþ.



WTF Code.




ÁÎÒû è Àâòîìàòèçàöèÿ ïðîöåññîâ - Àëåêñàíäð ßñòðåìñêèé.


Ìåòêè:  

Microsoft.Office.Interop

Äíåâíèê

Ñðåäà, 09 Ôåâðàëÿ 2011 ã. 18:07 + â öèòàòíèê
Äàâíî íå âûêëàäûâàë òåõíè÷åñêèõ ïîñòîâ, à îíè, êàê ïîêàçûâàåò ñòàòèñòèêà, ïðèíîñÿò íàèáîëüøåå ÷èñëî ïðîñìîòðîâ ÷åðåç ïîèñêîâèêè. Ïîýòîìó ñåãîäíÿ îïèøó îáùíî è áåç äåòàëüíûõ êàðòèíîê ïðîáëåìàòèêó âçàèìîäåéñòâèÿ ñ äîêóìåíòàìè MS Office 2007 èç âåá-ñàéòà ïðè ïîìîùè ïîñòàâëÿåìûõ â êîìïëåêòå áèáëèîòåê-ïðîñëîåê Office.Interop. Ýòà èñòîðèÿ èíòåðåñíà òåì, ÷òî åå ðåøåíèå ñîäåðæèò êó÷ó ïðîáëåì, íî íèãäå ÿ íå âèäåë öåëîñòíîãî îïèñàíèÿ èõ ïðåîäîëåíèÿ.
  • Âî-ïåðâûõ, âàì ïîíàäîáèòñÿ óñòàíîâèòü íà ñåðâåð îôèñ. Áåðåì ïèðàòñêóþ ýíòåðïðàéñ. Òàê êàê íåêîòîðûå âåðñèè ìîãóò îòêàçàòüñÿ ñòàâèòñÿ íà ñåðâåðå ÷åðåç òåðìèíàë (RDP).
  • Ïîñëå òîãî êàê â ïðîãðàììå ñäåëàëè Reference, íàïèñàëè íóæíû êîä, ñêîïèðîâàëè íà ñåðâåð ó âàñ ïîÿâèòñÿ: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Ðåøåíèå - çàïóñêàåì DCOMCNFG, âûñòàâëÿåì ïîëüçîâàòåëþ NetworkServices ïðàâà íà çàïóñê êîìïîíåíòîâ MicrosoftOffice(Word/Excel) èëè äëÿ òîãî ïîëüçîâàòåëÿ îò ëèöà êîòîðîãî ðàáîòàåò ApplicationPool.
  • Çàïóñêàåì ïîâòîðíî, âûëåçàåò (0x800A03EC): Microsoft Office cannot open or save any more documents because there is not enough available memory or disk Ðåøåíèå - Ñîçäàòü ñèñòåìíûå ïàïêè
    C:\Windows\SysWOW64\config\systemprofile\Desktop (äëÿ x64) C:\Windows\System32\config\systemprofile\Desktop (äëÿ x86)
    è âûñòàâèòü ïðàâà äëÿ NetworkServices íà ïàïêó - systemprofile.
  • Íà ýòîì êâåñò íå çàêàí÷èâàåò. Ïðè ïîâòîðíîì çàïóñêå ïðîãðàììà âûäàñò (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) http://support.microsoft.com/kb/320369 ×òî ãîâîðèò î ðàçíèöå â ëîêàëèçàöèè âàøåãî êîäà è êîìïîíåíòà. Ðåøàåòñÿ ïåðåêëþ÷åíèåì ëîêàëèçàöèè âûçûâàþùåãî ïîòîêà ïåðåä âûçîâîâ ôóíêöèé COM îáúåêòà
    System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); //âûçîâû Office.Interop

Âîò ïîæàëóé âñå, îäíàêî, íà win2003x64 IIS6 EN äàæå âûøåîïèñàííîå íå ïîìîãëî.

Ìåòêè:  

OpenSource stories

Äíåâíèê

Ñðåäà, 08 Äåêàáðÿ 2010 ã. 12:33 + â öèòàòíèê
Ïîñëåäíèå ìåñÿöû áûëî íåñêîëüêî ãðîìêèõ ñîáûòèé ñ ïîïóëÿðíûå ïðîåêòû ñ îòêðûòûì èñõîäíûì êîäîì. Âåðîÿòíî ýòî ñâÿçàíî ñ òåì, ÷òî âñå íà÷àëè ïîäâîäèòü èòîãè ãîäà è îñòàëèñü íå î÷åíü äîâîëüíû:
1) Lucene.Net - â íîÿáðå îáðàòèëàñü êî âñåìó ñîîáùåñòâó ñ çàãîëîâêîì needs your help (or it will die) è It got forked. Íàïîìíþ, ÷òî ýòî .Net ðåàëèçàöèÿ ñàìîé ïîïóëÿðíîé ïîèñêîâîé áèáëèîòåêè, êîòîðàÿ òàêæå èñïîëüçóåòñÿ â òâèòòåðå. Ñóòü ïðîáëåìû, ÷òî Apache Software Foundation ðåøèëè ïðèáèòü ïðîåêò, èç-çà òîãî, ÷òî íåàêòèâíî ðàçâèâàåòñÿ.
2) OpenSocial - â äåêàáðå îáúÿâèëî, ÷òî èì íóæåí .Net ðàçðàáîò÷èê, à òàêæå îòêðûòî ìåñòî â íàáëþäàòåëüíîì ñîâåòå äëÿ âñåõ æåëàþùèõ. Îïÿòü æå èç-çà íåäîñòàòî÷íîé àêòèâíîñòè ñîîáùåñòâà.
3) GoogleWave - ñîöèàëüíàÿ ñåòü îò ãóãëà, ðàíåå âûëîæåííàÿ â îïåíñîðñ, íå ñìîãëî ñîáðàòü âîêðóã ñåáÿ äîñòàòî÷íîãî ÷èñëà ðàçðàáîò÷èêîâ, ïîýòîìó ðåøàëà ðàçìåñòèòüñÿ âíóòðè åùå æèâóùåãî Apache Foundation ñîîáùåñòâà. Òåïåðü ïðîåêò ñìåëî ìîæíî íàçûâàòü Apache Wave.

 äîãîíêó - êîëè÷åñòâî ïîëüçîâàòåëåé ICQ óïàëî íà òðåòü, ñåðâåðà ýòîé ñèñòåìû ñêîðî ïåðåâåçóò â Ìîñêâó, òàê êàê òîëüêî òóò îñòàëèñü ïîëüçîâàòåëè.

Ìåòêè:  

MSVS2010 + Resharper 5 + Hotkeys

Äíåâíèê

×åòâåðã, 30 Ñåíòÿáðÿ 2010 ã. 12:26 + â öèòàòíèê
Äîñòàòî÷íî äîëãî óæå ðàáîòàþ â Visual Studio 2010, êàê óæå ïèñàë - âñå íðàâèòñÿ. Ýòî íðàâèòñÿ âêëþ÷àåò Resharper 5 ñ êðÿêîì(ïàðîëü íà àðõèâ - yandex, òàê êàê ãëþ÷íûé dr.web ñ÷èòàåò åãî âèðóñîì) è ñïèñîê âñåõ ãîðÿ÷èõ êëàâèø . Ïîëüçóéòåñü.

Ìåòêè:  

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ì ëîãèíàì è ïàðîëÿì îò íèõ. Îñíîâíàÿ âûãîäà - áåçîïàñòíîñòü, è òî, ÷òî ýòè ñòðî÷êè íàìíîãî ñëîæíåå ÷åì ïåðâîíà÷àëüíûå ëîãèí è ïàðîëü ïîëüçîâàòåëÿ, ÷òî ãàðàíòèðóåò ñëîæíîñòü èõ ïîäáîðà. Íî ñ äðóãîé ñòîðîíû, îíè íå èìåþò ñðîêà äàâíîñòè, ïîýòîìó çíàÿ èõ ñ ëåãêîñòüþ ìîæíî âûïîëíèòü äåéñòâèÿ îò ëèöà ïîëüçîâàòåëÿ-ïðèëîæåíèÿ, â îòëè÷èè îò êóêîâ èëè ñåññèé äëÿ àâòîðèçîâàííûõ êëèåíòîâ ñàéòîâ.

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


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

Ìåòêè:  

Barrier .Net 4

Äíåâíèê

×åòâåðã, 26 Àâãóñòà 2010 ã. 12:16 + â öèòàòíèê
Õîðîøàÿ ñòàòüÿ ïî íîâûì ôèøêàì â .Net 4 â îáëàñòè ñèíõðîíèçàöèè ïîòîêîâ.

Ìåòêè:  

IIS7 perfomance

Äíåâíèê

×åòâåðã, 08 Èþëÿ 2010 ã. 15:52 + â öèòàòíèê
Ðåçóëüòàòû íåçàâèñèìîãî ñðàâíåíèÿ ïðîèçâîäèòåëüíîñòè IIS6 è 7-êè â áëîãå ó Ìýäà. Îò ñåáÿ äîáàâëþ, ÷òî òîæå çàìåòèë óëó÷øåíèÿ â ïðîèçâîäèòåëüíîñòè 7êè ïî ñðàâíåíèþ ñ 6é. Åäèíñòâåííûé íàéäåííûé ìèíóñ ó iis7 - ýòî òî, ÷òî íåëüçÿ ïðîñòî ïîëüçîâàòüñÿ url_rewrite ìîäóëåì, ïðèõîäèòñÿ äîñòàâëÿòü ñïåöèàëüíóþ êîìïîíåíòó, âñòðàèâàåìóþ â ñèñòåìó óïðàâëåíèÿ ñåðâåðîì.
Êðîìå òîãî, ãäå-òî ìåñÿö íàçàä ÿ ïèñàë ïèñüìî â ìàñòåðõîñò ñ âîïðîñîì, êîãäà æå òàì íàêîíåö ïîÿâèòñÿ win2008, äà iis7, òèïà ÿ ãîòîâ ïëàòèòü è âñå äåëà. Îíè ïðàâäà îòâåòèëè, ÷òî 7êà ó íèõ äàæå â ïëàíàõ íå çíà÷èòñÿ. Âîò è ïîëó÷àåòñÿ, ÷òî ìàñòåðõîñò ïðè èõ ïëþñàõ èñïîëüçóåò 64-áèòíûå ìàøèíû, êîòîðûå áîëüøå æðóò ïàìÿòè è ñòàðóþ iis6, êîòîðàÿ òîæå ïîòðåáëÿåò áîëüøå ðåñóðñîâ. Ñ ýòîé òî÷êè çðåíèÿ èì äåéñòâèòåëüíî íåò ñìûñëà ÷òî-òî ìåíÿòü.
È ñåãîäíÿ ÷åòâåðã, ÿíäåêñ îïÿòü â 11 óòðà ïåðåñòàë âûäàâàòü íîâûå äàííûå, òàê ÷òî íå óäèâëÿéòåñü êà÷åñòâó òîïà. Ïèñüìî èì ÿ óæå îòïðàâèë.

Ìåòêè:  

Facebook continue

Äíåâíèê

Âòîðíèê, 06 Èþëÿ 2010 ã. 15:18 + â öèòàòíèê
Òî, ÷òî ïîïóëÿðíåéøàÿ çàïàäíàÿ ñîö.ñåòü â íàãëóþ ïëþåò íà áëîãåðîâ, îêàçûâàåòñÿ êðîìå ìåíÿ çàìåòèëî åùå íåñêîëüêî ñîòåí ÷åëîâåê, â ñâÿçè ñ ÷åì äàâíî çàâåäåí òîïèê. Íî ìû êàê âñåãäà ïîéäåì ñâîèì ïóòåì - íèæå èäåò êîä, êîòîðûé ëîãèíèòñÿ íà Facebook è 10 ðàç íàæèìàåò êíîïêó îáíîâèòü RSS, ïîêà ñîöèàëüíàÿ ñåòü íå ñäàñòñÿ è íå èìïîðòèðóåò íîâûå çàïèñè èç áëîãà íà âàøó ñòðàíè÷êó. Âûçûâàåìîé ôóíêöèè íóæíî ëèøü ïåðåäàòü àêêàóíò è íîìåð ïðèñâîåííûå âàøåìó RSS, êîòîðûé ìîæíî ïîëó÷èòü èç êîäà ñòðàíèöû. (Ýòîò êëàññ òàêæå áóäåò âêëþ÷åí â îòêðûòûé BlogsAPI)
×èòàòü äàëåå...

Ìåòêè:  

deep-water.ru

Äíåâíèê

Ïîíåäåëüíèê, 05 Èþëÿ 2010 ã. 19:51 + â öèòàòíèê
Ðåøåíèåì õîñòåðà ñàéò deep-water.ru îñòàíîâëåí. Ïðè÷èíîé ñòàëî âîò ÷òî, à òàêæå íå æåëàíèå ñ ýòèì ðàçáèðàòüñÿ. Ñàéò êîíå÷íî áûë ñêîðåå ìåðòâ, ÷åì æèâ. Òåïåðü âåñü ôóíêöèîíàë ïåðååçæàåò íà topbloger.ru ïîòèõîíüêó, óâåðåí õîñòèíã îò Àãàâû óæå íå ïîçâîëèò òàêîãî ïðîèçâîëà. Ïëàíèðóþ îïóáëèêîâàòü ðàñøèðåííóþ áàçó èç 4 ìëí. àéïè àäðåñîâ ðîññèéñêèõ áëîãåðîâ.

Ìåòêè:  

Serialization.XmlChoiceIdentifierAttribute

Äíåâíèê

Âòîðíèê, 22 Èþíÿ 2010 ã. 14:30 + â öèòàòíèê
Èíîãäà ïîÿâëÿåòñÿ íåîáõîäèìîñòü ñîçäàòü ñåðâèñ, êîòîðûé â SOAP ñåðèàëèçàöèè èìååò íà îäíîì è òîì æå ìåñòå òî îäèí òåã, òî äðóãîé â çàâèñèìîñòè îò ñîñòîÿíèÿ îáúåêòà. Îäíàêî, åñëè ñäåëàòü âñå êàê íàïèñàíî â äîêóìåíòàöèè, êîä ïðèìåðà èäåò íèæå, òî ìîæíî ïîëó÷èòü ñîâñåì íå òî, ÷òî õîòåëîñü áû. Êëàññ äëÿ WCF, ðåàëèçîâàííûé â âèäå:
×èòàòü äàëåå...

Ìåòêè:  

.Net Copy Protection

Äíåâíèê

Âòîðíèê, 27 Àïðåëÿ 2010 ã. 01:38 + â öèòàòíèê
Ïðîáëåìà áûñòðîãî ðîñòà òîððåíòîâ íå òîëüêî â òîì, ÷òî çàùèòèòü ïðîãðàììíîå îáåñïå÷åíèå îò êîïèðîâàíèÿ íåâîçìîæíî, íî åùå è â òîì, ÷òî ìíîãèå ïðîãðàììèñòû äàæå íå çàäóìûâàþòñÿ î çàùèòå, îñîáåííî, åñëè ïèøåøü íåáîëüøóþ ïðîãðàììó, ïðåäíàçíà÷åííóþ äëÿ îãðàíè÷åííîãî ÷èñëà ïîëüçîâàòåëåé. Ìíîãèå äóìàþò, ÷òî çàùèòà êîïèðîâàíèÿ - ýòî ñëîæíî, ëèáî çàðàíåå ñ÷èòàþò, ÷òî èõ ïðèëîæåíèå íå ñòàíåò ñâåðõ-ïîïóëÿðíûì, à ìíîãèå äàæå è íå çàäóìûâàþòñÿ, ÷òî ìîãóò çàðàáîòàòü íà ñîçäàíèè ïðîñòåíüêîãî ïðèëîæåíèÿ. Óäèâèòåëüíûé ôàêò â ìèðå ïðîãðàììèñòîâ çàêëþ÷àåòñÿ â òîì, ÷òî äëÿ òîãî, ÷òîáû ñîçäàòü ïîïóëÿðíîå ïðèëîæåíèå, äîñòàòî÷íî ñäåëàòü áîëåå ïðîñòîé àíàëîã ñî ñëîæíîãî êîììåð÷åñêîãî ïðèëîæåíèÿ, ðåøàÿ äëÿ ïîëüçîâàòåëÿ õîòü è ìàëåíüêóþ, çàòî ÷àñòóþ ïðîáëåìó.

Èòàê, â ýòîì ïîñòå ÿ ðàññêàæó ïðî ëó÷øóþ çàùèòó äëÿ .Net ïðîãðàìì, â òîì ïëàíå, ÷òî ïðîñòî íàñòðîèòü, - ïðî ïîïóëÿðíûé DeployLX. Îòêðûâ èõ ñàéò âû îáíàðóæèòå äðóãóþ íåïðèÿòíóþ íîâîñòü, ÷òî ýêñïðåññ âåðñèÿ ýòîãî ïðîäóêòà ñòîèò ïîðÿäêà 200ó.å.,à ñòàíäàðò òàê âîîáùå ïîä 1000ó.å. Ëè÷íî ÿ áû íå ïîñêóïèëñÿ íà 200ó.å. çà ñòàíäàðò, è âû âåðîÿòíî òîæå õîòèòå ñòàíäàðò, òàê êàê òîëüêî â íåì åñòü óäàëåííûé ìîíèòîðèíã çàïóñêîâ ïðîãðàììû. Íî ïëàòèòü 1000ó.å. - ýòî äëÿ íàñ ÷åðåç ÷óð. Ïîýòîìó âîò ïîëíàÿ áåñïëàòíàÿ âåðñèÿ, ïðàâäà óñòàðåâøàÿ. Ýòî âûðàæàåòñÿ òåì, ÷òî ãåíåðàòîð êëþ÷åé íå ïîéäåò íà Vista, w7, w2k8, ïîýòîìó ó ìåíÿ óñòàíîâëåíà îäíà âèðòóàëüíàÿ ìàøèíà ñ winXP. À òàêæå ãåíåðàòîð ðàáîòàåò òîëüêî â 32õ áèòíîé ñðåäå, íî è ýòî ëåãêî ðåøàåòñÿ. Òà áèáëèîòåêà, ÷òî äîëæíà èäòè âìåñòå ñ âàøèì ÏÎ è îáåñïå÷èâàòü ïðîâåðêó ëèöåíçèé ìîæíî âçÿòü ïîñëå óñòàíîâêè â ïàïêå redistributable è èäåò êàê Any CPU.
×èòàòü äàëåå...

Ìåòêè:  

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. }

Ìåòêè:  

icom - part 2

Äíåâíèê

Ïÿòíèöà, 05 Ìàðòà 2010 ã. 16:24 + â öèòàòíèê
Íà â÷åðàøíåé êîíôåðåíöèè I-community2010.ru ÷èòàë äîêëàä. Ïðåçåíòàöèþ Äîêëàäà ñ ìîèìè æå êîììåíòàðèÿìè ìîæíî ñêà÷àòü è ïî÷èòàòü. Òåìà: "Êîíöåïöèÿ åäèíîãî ïðîãðàììíîãî èíòåðôåéñà ïî âçàèìîäåéñòâèþ ñ ðóññêîÿçû÷íûìè áëîã-ïëàòôîðìàìè" áûëà ïðèçâàíà ðàññêàçàòü âñåì, ÷òî íà ïðîáëåìó ïðîãðàììíîãî âçàèìîäåéñòâèÿ ñåðâèñîâ â èíòåðíåòå ïî ðàçíîìó ñìîòðÿò ñàìè ñîçäàòåëè ñîö.ñåòè, ïîëüçîâàòåëè è ðàçðàáîò÷èêè. Òàêæå ÿ ïðåäëàãàþ îáúåäèíèòü óñèëèÿ ðàçðàáîò÷èêîâ íàä îòêðûòûì êîäîì, ÷òîáû óïðîñòèòü äðóã äðóãó æèçíü è çàñòàâèòü ñîçäàòåëåé ñîö.ñåòåé äåëàòü íîðìàëüíûå èíòåðôåéñû äëÿ áàçîâîãî ôóíêöèîíàëà, êîòîðûé ÿ îïèñàë.
Ê ñîæàëåíèþ, ãëóáèíó ìîåé ìûñëè îöåíèëè íå ìíîãèå, çàòî ìîé äîêëàä ñèëüíî îòëè÷àëñÿ îò äðóãèõ "ïðåäñòàâèòåëåé êîìïàíèé", êîòîðûå ïðèøëè íà êîíôåðåíöèþ òîëüêî ðàäè ðåêëàìû ñåáÿ è ñâîèõ ïðîäóêòîâ. Îñîáî âñòàâëÿëà öåíòðàëüíàÿ ñåêöèÿ, ãäå ó äîêëàä÷èêîâ íå áûëî äîêëàäîâ è âñå âðåìÿ íà ýêðàíå êðóòèëàñü ðåêëàìà ïàðòíåðîâ.

Èç âñåãî îáñóæäåíèÿ ïðî òâèòòåð ìîæíî áûëî âûíåñòè ðåïëèêè #ded 'ka, êîòîðûé îò ëèöà âñåõ ñëóøàòåëåé çàäàâàë âåäóùèì êàâåðçíûå âîïðîñû, â òî âðåìÿ êàê îñòàëüíûì áûëî ëåíü ïûòàòüñÿ ñêàçàòü âåäóùèì, ÷òî òî, ÷òî îíè ðàññêàçûâàþò óæå íå èíòåðåñíî è áûëî îçâó÷åíî ðàíåå. Èç ïîëåçíîãî, ýòî çàìå÷àíèå, ÷òî ÷èñëî çàíåñåíèÿ â ëèñòû íà òâèòòåðå áîëåå ãîâîðèò î ÷èòàåìîñòè ÷åëîâåêà íåæåëè åãî êîëè÷åñòâî ôðåíäîâ. Äà, ýòî ñåé÷àñ òàê, è íîðìà â ñðåäíåì 600 çàíåñåíèé â ëèñòû íà 10 òûñ. ïîñëåäîâàòåëåé. Íî è ýòî ÷èñëî ïðè æåëàíèè ìîæíî ëåãêî íàêðóòèòü, ïîýòîìó î÷åâèäíî, ÷òî ñàìûé ãëàâíûé ïîêàçàòåëü - ÷èñëî ïåðåõîäîâ ñî ññûëêè.

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

Ìåòêè:  

CSS HighLight at s-c.me

Äíåâíèê

Ñóááîòà, 30 ßíâàðÿ 2010 ã. 15:06 + â öèòàòíèê
Äîáàâèë ôèøêó, êîòîðóþ ó ìåíÿ êîãäà-òî ïðîñèëè - ïîäñâåòêó ôàéëîâ ñòèëåé CSS â âèäå html äëÿ âñòàâêè â ïîñòû. Ïîäñâåòêà êîäà êàê âñåãäà íàõîäèòñÿ íà ñàéòå SourceCode for Me. Íèæå ïðèâåäó ïðèìåð ïîäñâå÷åííîãî ôàéëà ñòèëåé.
×èòàòü äàëåå...

Ìåòêè:  

ie6 - never die - âîïðîñ html âåðñòêè

Äíåâíèê

Ïîíåäåëüíèê, 28 Äåêàáðÿ 2009 ã. 11:40 + â öèòàòíèê
Âñåãäà çíàë, ÷òî èç ìåíÿ ôèãîâûé âåðñòàëüùèê, íî íèêîãäà íå äóìàë, ÷òî óäàñòñÿ ñäåëàòü ñàéò, êîòîðûé áóäåò êîððåêòíî îòîáðàæàòüñÿ ëèøü â ñàìîì ëó÷øåì áðàóçåðå âñåõ âðåìåí è íàðîäîâ - Internet Explorer'e 6. Ðå÷ü èäåò î âåðñòêå ñòðàíèöû, ãäå íåïðàâèëüíî îòîáðàæàþòñÿ óãîëêè ó ðàçíîöâåòíûõ êíîïîê. Åñëè ãëÿíóòü êîä, òî âñå äîëæíî áûòü òàê êàê ïîêàçûâàåò ie6:


Íî íà ïðàêòèêå ñîâðåìåííûå áðàóçåðû ïîêàçûâàþò ñëåäóþùåå:


Ìîæåò êîìó íå ëåíü ïîäñêàçàòü êàê èñïðàâèòü òàêîå íåäîðàçóìåíèå?

Ìåòêè:  

Îòëîâ óòå÷êè ïàìÿòè

Äíåâíèê

×åòâåðã, 24 Äåêàáðÿ 2009 ã. 12:16 + â öèòàòíèê
Íà äíÿõ äîëãî è óïîðíî çàíèìàëñÿ îòëîâîì óòå÷êè ïàìÿòè â ïîñòîÿííî ðàáîòàþùåì win-ñåðâèñå.  ïîìîùü ñåáå ÿ óñòàíîâèë ïðîôàéëåð ïàìÿòè ïðîöåññîâ îò ìèêðîñîôòà - CRL Profiler. Îí ðèñóåò êðàñèâûå êàðòèíêè, íî èíîãäà è ïðîñòî âûëåòàåò.  îáùåì ïîìîùè îò íåãî íå óäàëîñü ïîëó÷èòü. Äàëåå èç ãóãëà íà÷àë âûòàñêèâàòü äðóãèå ïðîôàéëåðû è îñòàíîâèëñÿ íà memprofiler, êîòîðûé òðèàëüíûé òîëüêî íà 14 äíåé, à äàëüøå ïðèäåòñÿ ïëàòèòü. ïîíðàâèëàñü âîçìîæíîñòü äåëàòü ñíèìêè îáúåêòîâ â ïàìÿòè â ðàçíîå âðåìÿ è ñðàâíèâàòü èõ êîëè÷åñòâî è îáúåìû. Ïîèñê êðÿêà èëè ëèöåíçèè íå ïðèâåëè ê óñïåõó, à î÷åíü áû õîòåëîñü ìîæåò ó êîãî åñòü?

 öåëîì íè îäèí èç ïðîôàéëåðîâ ïàìÿòè ìíå íå ïîìîã. Ïðîáëåìó ëîêàëèçèðîâàë òîëüêî áëàãîäàðÿ òîìó, ÷òî çà âðåìÿ ìîíèòîðèíãà âðó÷íóþ ïðîñìîòðåë êîä ðàáîòû ñî âñåìè ñòàòè÷åñêèìè êëàññàìè ïðîãðàììû.

Ìåòêè:  

Source Code Highlight

Äíåâíèê

Âîñêðåñåíüå, 13 Äåêàáðÿ 2009 ã. 22:00 + â öèòàòíèê
Î÷åðåäíàÿ ñòàòüÿ íà õàáðå, îïóáëèêîâàííàÿ íåèçâåñòíûì ïðîãðàììèñòîì, ïðî ïîäñâåòêó êîäà âûíóäèëà ìåíÿ âíåñòè íåêîòîðûå óëó÷øåíèÿ â ìîé ïðîåêò s-c.me - ïî ïîäñâåòêå êîäà. Èçìåíåíèå êàñàòåëüíî ïîäñâåòêè ñòðîêîâûõ êîíñòàíò. Ýòà, êàê îêàçûâàåòñÿ, âåñüìà íåïðîñòàÿ çàäà÷à òåïåðü ðåøàåòñÿ åùå áîëåå ñëîæíûì ðåãóëÿðíûì âûðàæåíèåì:
Copy Source | Copy HTML
get
            {
                return @"@(?:"".*?"")+|"".*?(?<![^\\](?:\\\\)*?\\)""|''|'.*?(?<![^\\](?:\\\\)*\\)'|\b\d+?(?=\b|$)%?|‘’|‘.*?(?!\\).’";
            }

Óáåäèòüñÿ â òîì, ÷òî âñå íîðìàëüíî ïîäñâå÷èâàåòñÿ, ìîæíî íà ïîäãîòîâëåííîì òåñòîâîì êîäå ïî ññûëêå. Êîíå÷íî óëó÷øàòü ìîæíî è äàëüøå, íî ïîêà è òàê ñîéäåò.
ÇÛ: íàäî íå çàáûòü ïðîäëèòü ðåãèñòðàöèþ äîìåíà... áëèí, 800ð çà ãîä â çîíå .me - êàêîé óæàñ...

Ìåòêè:  

Ðåéòèíã áëîãîñôåðû - ïîñò 5 (àëãîðèòì ñîðòèðîâêè)

Äíåâíèê

Ïîíåäåëüíèê, 30 Íîÿáðÿ 2009 ã. 16:45 + â öèòàòíèê
Çà ïðîøåäøóþ íåäåëþ ÿ óñïåë ïîîáùàòüñÿ ñ íàøèì ïàòåíòíûì âåäîìñòâîì, êîòîðîå ñêàçàëî ìíå, ÷òî àëãîðèòìû íå ïàòåíòóþò, ïàòåíòóþò ãîòîâûå ïðîòîòèïû. Ïðåäëîæèëè ïîäîãíàòü ìîþ çàÿâêó ïîä "Ïðîãðàììó äëÿ áàçû äàííûõ äëÿ ÝÂÌ", íî ÿ íå ñòàë òðàòèòü âðåìÿ. Òàêèì îáðàçîì ïðîäîëæàþ ñåðèþ ïîñòîâ, êðàòêî ðàññêàçûâàþùèõ êàê ôîðìèðóåòñÿ ÒÎÏ30.
Ñîäåðæàíèå óæå îïóáëèêîâàííûõ çàìåòîê


Ñåãîäíÿ ÿ ïðèâåäó àëãîðèòì ïåðâè÷íîé ñîðòèðîâêè è îáúÿñíþ íåêîòîðûå ìîìåíòû. Åñëè Âû ÷èòàëè ïðåäûäóùèå çàìåòêè, òî äîëæíû çíàòü, ÷òî àëãîðèòì ïåðâè÷íîé ñîðòèðîâêè íóæåí òîëüêî äëÿ òîãî, ÷òîáû âûáðàòü ïîðÿäîê â êîòîðîì çàïèñè áóäóò àíàëèçèðîâàòüñÿ íà ïðåäìåò ïðîõîæäåíèÿ ÷åðåç ôèëüòðû. Ñîáñòâåííî ñàì package ïåðâè÷íîé ñîðòèðîâêè:
×èòàòü äàëåå...

Ìåòêè:  

Go Code

Äíåâíèê

Ñóááîòà, 14 Íîÿáðÿ 2009 ã. 03:55 + â öèòàòíèê
Ñâåæàÿ íàêëåéêà íà íîóòå ñ íàäïèñüþ "Go Code" çàñòàâèëà ìåíÿ ïîðàçìûøëÿòü î íîâîì ÿçûêå ïðîãðàììèðîâàíèÿ, êîòîðûé ïðåäëàãàåò Google. Âî-ïåðâûõ, óæå ïîëíî ÿçûêîâ ïðîãðàììèðîâàíèÿ è òðóäíî ïðèäóìàòü ÷òî-òî, ÷òîáû âñåõ çàñòàâèëî ðàçîì ïåðåéòè íà íåãî. Âî-âòîðûõ, ïîøëà øóòêà, ÷òî " îòâåò Yahoo çàïóñòèë ÿçûê ïðîãðàììèðîâàíèÿ YO! À ìû òåïåðü æäåì ÿçûêà YA!". Íî åñëè ïîäóìàòü, òî ìîæíî âñïîìíèòü, ÷òî ñåé÷àñ èäåò áåòà òåñòèðîâàíèå GoogleWave, êîòîðîå â ñëåäóþùåì ãîäó ñòàíåò äîñòóïíî âñåì, à òàêæå ïîÿâèòñÿ ìàðêåò, íà ïîäîáèè AppStore, ãäå äåâåëîïåðû ñìîãóò ïðîäàâàòü, íàïèñàííûå èìè ñíèïåòû äëÿ GoogleWave. Ýòî ïðîãðàììû, ñ ïîìîùüþ êîòîðûõ ïîëüçîâàòåëè ñìîãóò âçàèìîäåéñòâîâàòü äðóã ñ äðóãîì, íàïðèìåð, èãðû â ñîöèàëüíûõ ñåòÿõ. Íî åñëè ìû âîçüìåì OpenSocial ïëàòôîðìó, òî äàæå â íåé äëÿ ñîçäàíèÿ êàêîé-òî ïðîñòîé èãðû ïîòðåáóåòñÿ äîïîëíèòåëüíî èçó÷àòü ôîðìàòû ñîîáùåíèé, ïðåäñòàâëåíèÿ äàííûõ, ïî÷òè êàê èçó÷èòü íîâûé ÿçûê. Íå èñêëþ÷åíî, ÷òî Ãóãë çàõî÷åò çàñòàâèòü ïðîãåðîâ ïèñàòü ñíèïåòû, à òàêæå ôåäåðàòèâíûå ñåðâåðà, äëÿ GoogleWave íà ñîáñòâåííîì ÿçûêå.

Ìåòêè:  

Url Shorteners API

Äíåâíèê

Ïÿòíèöà, 23 Îêòÿáðÿ 2009 ã. 00:56 + â öèòàòíèê
Äîáàâèë â áèáëèîòåêó BlogsAPI(òîëüêî â èñõîäíèêè, íå â ðåëèç) êëàññ äëÿ ðàáîòû ñ Bit.ly API. Ïî óìîë÷àíèþ èñïîëüçóåò ìîé äåâåëîïåðñêèé êëþ÷, íî ìîæíî â êîíñòðóêòîðå çàäàòü è ñâîé. Ïîçâîëÿåò ïîëó÷èòü ñîêðàùåííóþ ññûëêó ïî äëèííîé ñëåäóþùèì êîäîì. Òàêæå åñòü âîçìîæíîñòü èçâëå÷åíèÿ ÷èñëà ïåðåõîäîâ ïî ññûëêå:

Copy Source | Copy HTML
  1. [TestFixture]
  2. public class Shorteners
  3. {
  4.     [Test]
  5.     public void Bitly()
  6.     {
  7.         BitLy shortener = new BitLy();
  8.         String sRet = shortener.ConvertDataTo("http://s-c.me", ItemType.FullUrl, ItemType.ShortUrl);
  9.         Assert.AreEqual(false,String.IsNullOrEmpty(sRet));
  10.     }
  11. }

Ìåòêè:  

Capitalize first symbol of each word

Äíåâíèê

×åòâåðã, 15 Îêòÿáðÿ 2009 ã. 14:19 + â öèòàòíèê
Èíòåðåñíóþ ôèøêó îáíàðóæèë â .Net, îêàçûâàåòñÿ, ÷òîáû â òåêñòå ñäåëàòü êàæäûé ñèìâîë çàãëàâíûì, íå íóæíî ïðèäóìûâàòü íèêàêèõ ñëîæíûõ ðåãóëÿðíûõ âûðàæåíèé, êàê ýòî ïðåäëàãàëîñü íà õàáðå äëÿ ïðîãðàììèñòîâ Java. Äîñòàòî÷íî âîñïîëüçîâàòüñÿ óñëóæëèâî íàïèñàííîé äëÿ íàñâ Ìèêðîñîôòå ôóíêöèåé:
Copy Source | Copy HTML
  1. using System.Globalization;
  2.  
  3. string capitalized = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("asp.net simply rocks!!!");
  4. //yelds "Asp.Net Simply Rocks!!!" 

Ìåòêè:  

BlogsAPI published-FOAF-parser

Äíåâíèê

Ñóááîòà, 10 Îêòÿáðÿ 2009 ã. 21:05 + â öèòàòíèê
Ïîñëå íåêîòîðûõ ðàçäóìèé âûëîæèë èñõîäíèêè BlogsAPI â îïåí ñîðñ. Ìíå íå æàëêî, åñëè êòî áóäåò èõ èñïîëüçîâàòü äëÿ ñâîèõ ïðîåêòîâ, âåäü ãëàâíîå, ÷òî îíè áóäóò íàïèñàíû íà .Net.
Áîëüøóþ ÷àñòü Þíèò-òåñòîâ ÿ èñêëþ÷èë èç ïðîåêòà, ÷òîáû íå ïàëèòü ïàðîëè îò ðåàëüíûõ àêêàóíòîâ.

Îòäåëüíî îáðàùàþ âíèìàíèå íà òî, êàê ñ ïîìîùüþ áèáëèîòåêè ïàðñèòü FOAF ôàéëû:

×èòàòü äàëåå...

Ìåòêè:  

Regex for String

Äíåâíèê

×åòâåðã, 17 Ñåíòÿáðÿ 2009 ã. 18:20 + â öèòàòíèê
Íà äíÿõ áûëà îáíàðóæåíà îøèáêà ïðè ïîäñâåòêå ñòðîêîâûõ êîíñòàíò íà ñàéòå Source Code for Me. Ïðîáëåìà áûëà êîãäà â êîäå âñòðå÷àëîñü ýêðàíèðîâàíèå îáðàòíîãî ñëýøà ïåðåä çàêðûâàþùåé êàâû÷êîé - (\\"). Âñâÿçè ñ ýòèì ÿ äîðàáîòàë ðåãóëÿðíîå âûðàæåíèå ïî èçâëå÷åíèþ ñòðîêîâûõ êîíñòàíò. Íàäåþñü îíî êîìó-íèòü ïðèãîäèòñÿ. Âûðàæåíèå âûãëÿäèò ñëåäóþùèì îáðàçîì:
Copy Source | Copy HTML
  1. Regex rString = new Regex(@"@?""""|@?"".*?((?!\\).|(?:\\\\)+)""|''|'.*?(?!\\).'|\b\d+?(?=\b|$)%?|‘’|‘.*?(?!\\).’");

Ìåòêè:  

Open or Close project's code

Äíåâíèê

Âòîðíèê, 15 Ñåíòÿáðÿ 2009 ã. 14:11 + â öèòàòíèê
Âñå íàñëûøàíû ïðî open source ïðîåêòû, íî íàâåðíî íèêòî èç Âàñ íå ïðèíèìàåò ó÷àñòèå â èõ íàïèñàíèè. Íåêîòîðîå ìîãóò íåãàòèâíî îòíîñèòñÿ ê òàêèì ïðîåêòàì, à íåêîòîðûå áîãîòâîðÿò, äóìàÿ, ÷òî òîëüêî òàê ñîçäàåòñÿ íàñòîÿùèé ïðîäóêò. Íî ôàêòû åñòü ôàêòû, ÷òî äàæå â ðàçðàáîòêå îòêðûòîãî Linux âêëàä â ðàçðàáîòêó îò "ñëó÷àéíûõ ðàçðàáîò÷èêîâ" íå ïðåâûøàåò 30%. Îñòàëüíîå áûëî ñäåëàíî êîðïîðàòèâíîé ðàçðàáîòêîé ïîä íóæäû êëèåíòîâ.
Åñëè ïîéòè äàëåå, òî ìîæíî íàéòè îïèñàíèå òîãî, èç ÷åãî ñîñòîèò âêëàä "ñëó÷àéíûõ" ðàçðàáîò÷èêîâ â open source ïðîåêò è ìû óâèäèì, ÷òî îíè äàæå ïðîãðàìíûé êîä íå ïèøóò. È èòîãå ÿ ïðèõîæó ê âûâîäó, ÷òî âûêëàäûâàòü èñõîäíèêè ïðîäóêòà - ïîëåçíî, à âîò ïðèíèìàòü ñòîðîííèå èçìåíåíèÿ èëè òðàòèòü âðåìÿ íà ðàçáîð ñòîðîííèõ ïðåäëîæåíèé ïî èçìåíåíèþ êîäà - áåñïîëåçíî.
Òàê ÷òî æå èç ñåáÿ ïðåäñòàâëÿþò ýòè 30%:
1) Îáðàòíàÿ ñâÿçü ñ ïîëüçîâàòåëÿìè - ïðîãðàììèñò, îòêðûâøèé open source ïðîåêò, ïðåäñòàâëÿåò èç ñåáÿ îïûòíîãî ïîëüçîâàòåëÿ, êîòîðûé, â îòëè÷èè îò ïðîñòîãî ïîëüçîâàòåëÿ, ñ îõîòîé ñîîáùàåò ðàçðàáîò÷èêàì î ïðîáëåìàõ â ðàáîòå ïðîãðàììû èëè ñâîèõ ïîæåëàíèÿõ íà áóäóùèå âåðñèè ïðîäóêòà.
2) Ïîìîùü äðóãèì - ïîëüçîâàòåëü, ïîñòàâèâøèé open source ïðîåêò ïîíèìàåò, ÷òî ïîääåðæêó åìó íèêòî íå ãàðàíòèðóåò, ïîýòîìó çà ïîìîùüþ îáðàùàåòñÿ ê áîëåå îïûòíûì çíàêîìûì è ñàì áîëåå àêòèâíî ïîìîãàåò äðóãèì, áåñïëàòíî êîíñóëüòèðóÿ î ðàáîòå ïðîäóêòà.
3) Íàïèñàíèå äîêóìåíòàöèè - ÷àñòî "ïîìîùü äðóãèì" âûðàæàåòñÿ â íàïèñàíèè äîêóìåíòàöèè èëè ðåäàêòèðîâàíèè äîêóìåíòàöèè, ñîçäàííîé îñíîâíûìè ðàçðàáîò÷èêàìè ïðîäóêòà.
4) Ïîæåðòâîâàíèÿ äåíåã - òóò âñå ÿñíî. 5) Ïðî÷åå - îðãàíèçàöèÿ ôàí ñàéòîâ, þçåð ãðóïï, ôîðóìîâ è ò.ä., òîæå ÿâëÿåòñÿ íåîòúåìëåìîé ÷àñòüþ êîíå÷íîãî ïðîäóêòà.

Ìåòêè:  

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