рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7.5-8.1 рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рд╕реБрдбреЛрдХреВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдХреБрдЫ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7.1 рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрддрдиреЗ рдЫреЛрдЯреЗ рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдЦ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред



рдЫрд╡рд┐







рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЖрд╡реЗрджрди рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░:



рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдЖрдБрдХрдбрд╝реЗ



рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ 7 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ 30% рд╣реИред рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ 7.1+ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдЦреЗрд▓ рдЕрдВрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рдЖрдк рдЦреЗрд▓ рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдкрд░, рдПрдХ рдирдпрд╛ рдмрд┐рдВрджреБ рдЪреБрдиреЗрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рдмрд┐рдВрджреБ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рд╛рд░ рдЬрд╛рддреЗ рд╣реИрдВред



рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐ рджрд┐рди рдкреНрд░рд╛рдкреНрдд рдЖрдБрдХрдбрд╝реЗ:

рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╡рд┐рддрд░рдг рд╕рд╛рдВрдЦреНрдпрд┐рдХреА

рдбрд┐рдЬрд╝рд╛рдЗрди



рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ ред рдмреНрд▓реЗрдВрдб 2012 рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рд▓реЗрдЖрдЙрдЯред рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 13 рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓рддреЗ рд╕рдордп, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬрдмрд░рди рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЦреЗрд▓ рдореЗрдВ 3 рд╕реНрдХреНрд░реАрди рд╣реИрдВ: рдкреНрд░рд╛рд░рдВрдн (рдпрд╣ рд╕реНрддрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдХреНрд░реАрди рднреА рд╣реИ), рдПрдХ рд╕реНрддрд░ рд╕реНрдХреНрд░реАрди рдФрд░ рдПрдХ рдЕрдВрдд рд╕реНрдХреНрд░реАрдиред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╕реБрдбреЛрдХреВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЦрд┐рд▓рд╛рдбрд╝реА рд░реЗрдЯрд┐рдВрдЧ (рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рддрд┐рди рдХреЛ рдПрдкреАрдЖрдИ (рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЧрдВрднреАрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреМрди рдЬреНрдпрд╛рджрд╛ рдордЬрдмреВрдд рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ!



async



Windows Phone 7 рдореЗрдВ async рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдБ nuget рд╕реЗ рдкреНрд░рдпреБрдХреНрдд рд╕рдВрдХреБрд▓ рдХреА рдореЗрд░реА рд╕реВрдЪреА рд╣реИред



рд╕рдВрдХреБрд▓ рд╕реВрдЪреА
<packages> <package id="Coding4Fun.Toolkit.Controls" version="2.0.7" targetFramework="wp71" /> <package id="GoogleAnalyticsSDK" version="1.2.01" targetFramework="wp71" /> <package id="Microsoft.Bcl" version="1.1.7" targetFramework="wp71" /> <package id="Microsoft.Bcl.Async" version="1.0.16" targetFramework="wp71" /> <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="wp71" /> <package id="Microsoft.Net.Http" version="2.1.10" targetFramework="wp71" /> <package id="Newtonsoft.Json" version="5.0.7" targetFramework="wp71" /> <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp71" /> </packages>
      
      







рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ (httpclient) рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рднрдЯрдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



Http рдХреНрд▓рд╛рдЗрдВрдЯ (async рдЗрдВрддрдЬрд╛рд░)
 using (HttpClientHandler handler = new HttpClientHandler()) { using (HttpClient httpClient = new HttpClient(handler)) { using (HttpRequestMessage message = new HttpRequestMessage()) { message.RequestUri = new Uri(url); message.Method = postData == null ? HttpMethod.Get : HttpMethod.Post; if (postData != null) { message.Content = new StringContent(JsonConvert.SerializeObject(postData)); message.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); } HttpResponseMessage response = await httpClient.SendAsync(message).ConfigureAwait(false); string data = await response.Content.ReadAsStringAsync(); return data; } } }
      
      







Canvas



рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреНрд░реЙрдЗрдВрдЧ рдкреЙрдЗрдВрдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдПрдХ рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдПрдХ Button



рд╣реИред рдбреЙрдЯреНрд╕ рдФрд░ рд░рдВрдЧреЛрдВ рдХреА рдкреАрдврд╝реА рдмрд┐рд▓реНрдХреБрд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИ (рдХрднреА-рдХрднреА рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ 4-5 рдбреЙрдЯреНрд╕ рдмрд╣реБрдд рдХрд░реАрдм рдЖрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрджреЛрдВ рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреАрдврд╝реА рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЙрдЯреНрд╕ рдХреЗ рдЪреМрд░рд╛рд╣реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреАрдврд╝реА рддрдм рддрдХ рд╣реЛрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдРрд╕рд╛ рд╕реНрдерд╛рдиреАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЬрд╣рд╛рдВ рдЕрдиреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЪреМрд░рд╛рд╣рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдпрд╛ рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдЧрд╛)



рдмрд┐рдВрджреБ рдкреАрдврд╝реА
 DotInfo dot = new DotInfo(); dot.Color = Colors[Rand.Next(Colors.Count)]; int testX = 0, testY = 0; bool testOk = true; for (int i = 0; i < 10000; i++) { testX = Rand.Next(Width - ButtonSize); testY = Rand.Next(Heigth - ButtonSize); testOk = true; foreach (DotInfo dotInfo in _dots) { Rectangle intersect = Rectangle.Intersect(new Rectangle(dotInfo.X, dotInfo.Y, ButtonSize, ButtonSize), new Rectangle(testX, testY, ButtonSize, ButtonSize)); if (intersect != Rectangle.Empty) testOk = false; } if (testOk) { dot.X = testX; dot.Y = testY; break; } } if (!testOk) { dot.X = Rand.Next(Width - ButtonSize); dot.Y = Rand.Next(Heigth - ButtonSize); }
      
      







рдкреНрд░рдХрд╛рд╢рдХ Coding4Fun рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рджреНрд╡рд╛рд░рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдирд╛рдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдпрдВрддреНрд░рдг, рдореИрдВ рдЖрдкрдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред ( Coding4Fun рдЯреВрд▓рдХрд┐рдЯ )



рдЗрдирдкреБрдЯ рд╕рдВрд╡рд╛рдж
 InputPrompt input = new InputPrompt(); input.Completed += UserNameInputOK; input.Title = " "; input.Value = UserSettings.Value.UserName; if (string.IsNullOrEmpty(input.Value)) input.Value = " " + randName.Next(Int32.MaxValue / 2); input.Show();
      
      







рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдиреЛрдХрд┐рдпрд╛ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ "рдкрд░рд┐рдЪрдп рдФрд░ IsolatedStorageSettings рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред http://developer.nokia.com/community/wiki/Introduction_and_best_practices_for_IsolatedStorageSettings



рдЕрджреНрдпрддрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ



рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЛрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ)



рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╕реНрдЯреЛрд░



рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ) рдФрд░ рдЗрд╕реЗ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд░реЗрдВред

рдЖрд╡реЗрджрди рд╡рд┐рд╡рд░рдг

рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЙрдкрд╛рдВрдЧ рдореЗрдВ)

рдирд╛рдо рдЖрд░рдХреНрд╖рдг

рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╣реИ:



рдЖрд╡реЗрджрди рдореЗрдВ рдирд╛рдо



рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ + рдПрдХ рдЫреЛрдЯрд╛ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ 20 рдШрдВрдЯреЗ рд▓рдЧ рдЧрдПред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЕрдВрддрд░рд┐рдХреНрд╖-рддреЗрдЬрд╝ (рдХреЗрд╡рд▓ 30 рдорд┐рдирдЯ) рд╣реЛ рдЧрдпрд╛ рд╣реИред Windows Phone 7.5 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ async-wait рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереАрдВред рдПрдХ рдЕрдЬреАрдм FileNotFound рддреНрд░реБрдЯрд┐ рд╣реБрдИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ Microsoft BCL рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрджреНрдпрддрди рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



PS рдореЗрд░рд╛ рд░рд┐рдХреЙрд░реНрдб 24 рдЕрдВрдХ рдХрд╛ рд╣реИ, рдФрд░ рдЖрдк? (рдЖрдк Habr рдореЗрдВ рдирд╛рдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ Habr рдореЗрдВ рдХреМрди рдмреЗрд╣рддрд░ рд╕реНрдореГрддрд┐ рд░рдЦрддрд╛ рд╣реИ)



рдЕрдВрдХ рд░рд┐рдХреЙрд░реНрдб



рдореБрдЭреЗ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЕрдЪреНрдЫреА рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред






All Articles