рдкреБрд╕реНрддрдХ "C # 7 рдФрд░ .NET рдХреЛрд░ред рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ред рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг

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

рд╣рдо рдиреЙрд░реНрдерд╡рд┐рдВрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реВрдЪреА рдкреНрд░рдмрдВрдзрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Android рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдиреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ Android SDK рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдореИрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдХреНрд╕рд░ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред Xamarin.Forms рдХреА рдирд╡реАрдирддрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Android SDK рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Mac рдХреЗ рд▓рд┐рдП Visual Studio рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХрдорд╛рдВрдб Visual Studio рд╕рдореБрджрд╛рдп -> рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ (Visual Studio рд╕рдореБрджрд╛рдп -> рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ) рдЪрд▓рд╛рдПрдБред

рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ тЖТ рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рди рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб 8.0 - рдУрд░реЗрдУ (рдЫрд╡рд┐ред 18.1)ред
рдЫрд╡рд┐

рдПрдХ Xamarin.Forms рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдирд╛


рдХрдорд╛рдВрдб рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдПрдВ тЖТ рдирдпрд╛ рд╕рдорд╛рдзрд╛рдиред

рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдореЗрдВ, рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░ рд╢реНрд░реЗрдгреА (рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕) рдореЗрдВ рдРрдк рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред Xamarin.Forms рд╕реЗрдХреНрд╢рди рдореЗрдВ, рдмреНрд▓реИрдВрдХ рдлреЙрд░реНрдо рдРрдк (рдЪрд┐рддреНрд░ред 18.2) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЫрд╡рд┐

рдиреЗрдХреНрд╕реНрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

App Name рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдиреЙрд░реНрдерд╡рд┐рдВрдбрдореЛрдмрд╛рдЗрд▓ рджрд░реНрдЬ рдХрд░реЗрдВ, рдФрд░ рд╕рдВрдЧрдарди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ, com.packt рджрд░реНрдЬ рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХреЛрдб рд╕реНрд╡рд┐рдЪ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЪреЗрдХ рдмреЙрдХреНрд╕ (рдЪрд┐рддреНрд░ 18.3) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ XAML рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред

рдиреЗрдХреНрд╕реНрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ, Part3Mobile рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдФрд░ рд╕реНрдерд╛рди рдлрд╝реАрд▓реНрдб рдореЗрдВ - рдорд╛рди / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рдЖрдкрдХрд╛_рдирд╛рдо / рдХреЛрдб (рдЪрд┐рддреНрд░ред 18.4)ред Create рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХреБрдЫ рд╣реА рдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдПрдХ рд╕рдорд╛рдзрд╛рди рдФрд░ рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреАред рдореИрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рдХрдорд╛рдВрдб рдмрдирд╛рдПрдБ тЖТ рдмрд┐рд▓реНрдб рдСрд▓ (рдЕрд╕реЗрдВрдмрд▓реА тЖТ рдмрд┐рд▓реНрдб рдСрд▓) рдЪрд▓рд╛рдПрдБ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░ рд▓реЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рди рдХрд░ рд▓реЗ (рдЪрд┐рддреНрд░ред 18.5)ред

Part3Mobile рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЕрджреНрдпрддрди NuGet рд╕рдВрдХреБрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг


рд╣рдо .NET рдорд╛рдирдХ 2.0 рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВрдЧреЗред

рдиреЙрд░реНрдерд╡рд┐рдВрдбрдореЛрдмрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ, Add тЖТ New Folder рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдмрдирд╛рдИ рдЧрдИ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЙрдбрд▓ рдХреЛ рдирд╛рдо рджреЗрдВред

рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдФрд░ рд╢реЙрд░реНрдЯрдХрдЯ рдореЗрдиреВ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЬреЛрдбрд╝реЗрдВ тЖТ рдирдИ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдирдИ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдХрдорд╛рдВрдб рдЬрдирд░рд▓ тЖТ рдЦрд╛рд▓реА рдХреНрд▓рд╛рд╕ (рд╕рд╛рдорд╛рдиреНрдп тЖТ рдЦрд╛рд▓реА рдХреНрд▓рд╛рд╕) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдХреНрд▓рд╛рд╕ рдХрд╕реНрдЯрдорд░ (рдЪрд┐рддреНрд░ред 18.6) рдХреЛ рдирд╛рдо рджреЗрдВ рдФрд░ рдиреНрдпреВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:

using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; namespace NorthwindMobile.Models { public class Customer : INotifyPropertyChanged { 


рдЫрд╡рд┐


 public static IList<Customer> Customers; static Customer() { Customers = new ObservableCollection<Customer>(); } public event PropertyChangedEventHandler PropertyChanged; private string customerID; private string companyName; private string contactName; private string city; private string country; private string phone; public string CustomerID { get { return customerID; } set   { customerID = value;  PropertyChanged?.Invoke(this,  new PropertyChangedEventArgs("CustomerID"));  } } public string CompanyName { get { return companyName; } set  {  companyName = value; PropertyChanged?.Invoke(this,  new PropertyChangedEventArgs("CompanyName")); } } public string ContactName { get { return contactName; } set { contactName = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ContactName"));  } } public string City { get { return city; } set { city = value;   PropertyChanged?.Invoke(this,   new PropertyChangedEventArgs("City"));    }    }    public string Country { get { return country; } set { country = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Country")); } } public string Phone { get { return phone; } set { phone = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Phone")); } }  public string Location { get { return string.Format("{0}, {1}", City, Country); } } //     - public static void SampleData() {   Customers.Clear(); Customers.Add(new Customer { CustomerID = "ALFKI", CompanyName = "Alfreds Futterkiste",  ContactName = "Maria Anders", City = "Berlin", Country = "Germany", Phone = "030-0074321" }); Customers.Add(new Customer { CustomerID = "FRANK",  CompanyName = "Frankenversand",    ContactName = "Peter Franken",   City = "M├╝nchen", Country = "Germany", Phone = "089-0877310"  }); Customers.Add(new Customer  {  CustomerID = "SEVES", CompanyName = "Seven Seas Imports", ContactName = "Hari Kumar", City = "London", Country = "UK", Phone = "(171) 555-1717" });    }  } } 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

  • рд╡рд░реНрдЧ INotifyPropertyChanged рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреНрд╡рд┐рджрд┐рд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдкрд╛рджрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдкреНрд░реЙрдкрд░реНрдЯреАрдЪреЗрдВрдЬ рдШрдЯрдирд╛ рдкрд░ рд╕рдм рдХреБрдЫ рдЖрд░рд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЧреБрдг рдмрджрд▓рддрд╛ рд╣реИред
  • рд╕реЗрд╡рд╛ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдСрдмреНрдЬрд╝рд░реНрд╡реЗрдмрд▓ рдХреЙрд▓реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • REST рд╕реЗрд╡рд╛ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрдЧ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдЧреБрдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рд╕рдореЗрдХрд┐рдд рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдмрдВрдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  • рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрдм REST рд╕реЗрд╡рд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рддреАрди рдбреЗрдореЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдлрд╝реЛрди рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛


рдиреЙрд░реНрдерд╡рд┐рдВрдбрдореЛрдмрд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ тЖТ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдирдИ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп тЖТ рдЦрд╛рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪреБрдиреЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IDialer рдХрд╛ рдирд╛рдо рджреЗрдВ, рдФрд░ рдирдпрд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ IDialer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛрдб рдмрджрд▓реЗрдВ:

 namespace NorthwindMobile { public interface IDialer { bool Dial(string number); } } 

IOS рдХреЗ рд▓рд┐рдП рдлрд╝реЛрди рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛


рдиреЙрд░реНрдерд╡рд┐рдВрдбрдореЛрдмрд╛рдЗрд▓.рдЖрдИрдУрдПрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ, тЖТ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдирдИ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп тЖТ рдЦрд╛рд▓реА рд╡рд░реНрдЧ (рд╕рд╛рдорд╛рдиреНрдп тЖТ рдЦрд╛рд▓реА рд╡рд░реНрдЧ) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдХрдХреНрд╖рд╛ рдХреЛ рдлрд╝реЛрдирдбрд╛рдпрд▓рд░ рдирд╛рдо рджреЗрдВ рдФрд░ рдирдпрд╛ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓реЗрдВ:

 using Foundation; using NorthwindMobile.iOS; using UIKit; using Xamarin.Forms; [assembly: Dependency(typeof(PhoneDialer))] namespace NorthwindMobile.iOS {  public class PhoneDialer : IDialer {    public bool Dial(string number) { return UIApplication.SharedApplication.OpenUrl( new NSUrl("tel:" + number));  }  } } 

Android рдХреЗ рд▓рд┐рдП рдлрд╝реЛрди рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛


рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ NorthwindMobile.Droid рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ-> рдирдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдирдИ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ рдЬрдирд░рд▓-> рдЦрд╛рд▓реА рдХреНрд▓рд╛рд╕ (рд╕рд╛рдорд╛рдиреНрдп-> рдЦрд╛рд▓реА рдХреНрд▓рд╛рд╕), рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рдлреЛрдирдбрд╛рдпрд▓рд░, рдФрд░ рдиреНрдпреВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдореНрди рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:

 using Android.Content; using Android.Telephony; using NorthwindMobile.Droid; using System.Linq; using Xamarin.Forms; using Uri = Android.Net.Uri; [assembly: Dependency(typeof(PhoneDialer))] namespace NorthwindMobile.Droid { public class PhoneDialer : IDialer { public bool Dial(string number) { var context = Forms.Context; if (context == null) return false; var intent = new Intent(Intent.ActionCall); intent.SetData(Uri.Parse("tel:" + number)); if (IsIntentAvailable(context, intent))  {  context.StartActivity(intent); return true; } return false; } public static bool IsIntentAvailable(Context context, Intent intent) { var packageManager = context.PackageManager; var list = packageManager.QueryIntentServices(intent, 0) .Union(packageManager.QueryIntentActivities(intent, 0)); if (list.Any()) return true; var manager = TelephonyManager.FromContext(context); return manager.PhoneType != PhoneType.None; } } } 

NorthwindMobile.Droid рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдЧреБрдг рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВред рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, CallPhone рдЪреЗрдХ рдмреЙрдХреНрд╕ (рдЪрд┐рддреНрд░ 18.7) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЫрд╡рд┐

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдорд╛рд░реНрдХ рдЬреЗред рдореВрд▓реНрдп рдПрдХ Microsoft рдкреНрд░рдорд╛рдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдбреЗрд╡рд▓рдкрд░ (MCSD), Microsoft рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ: C # рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдорд╛рдгрд┐рдд рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ 20 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИред

1993 рдХреЗ рдмрд╛рдж рд╕реЗ, рдорд╛рд░реНрдХ рдиреЗ 80 рд╕реЗ рдЕрдзрд┐рдХ Microsoft рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░реАрдХреНрд╖рд╛рдПрдВ рдЙрддреНрддреАрд░реНрдг рдХреА рд╣реИрдВ рдФрд░ рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорд╛рд╣рд┐рд░ рд╣реИрдВред рдЙрдирдХреЗ рдЫрд╛рддреНрд░ 16-рд╡рд░реНрд╖реАрдп рдмрдЪреНрдЪреЗ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИред рдорд╛рд░реНрдХ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдирд┐рдЧрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд╛рдорд░реНрд╢ рдФрд░ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рд╢реИрдХреНрд╖рд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдХрд░рддрд╛ рд╣реИред

2001 рдФрд░ 2003 рдХреЗ рдмреАрдЪ, рдорд╛рд░реНрдХ рдиреЗ рдЕрдкрдирд╛ рд╕рд╛рд░рд╛ рд╕рдордп рдЕрдореЗрд░рд┐рдХрд╛ рдХреЗ рд░реЗрдбрдордВрдб рд╢рд╣рд░ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдореБрдЦреНрдпрд╛рд▓рдп рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд┐рдпрд╛ред рдЯреАрдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ C # рдореЗрдВ рдкрд╣рд▓рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд╛рдареНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛, рдЬрдм рднрд╛рд╖рд╛ рдХрд╛ рдХреЗрд╡рд▓ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Microsoft рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЛрдВрдиреЗ C # рдФрд░ .NET рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдирд┐рдЧрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрдд рд╢рд┐рдХреНрд╖рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдорд╛рд░реНрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдкрд┐рд╕реЗрд░реНрд╡рд░ рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдПрдХреНрд╕рдкреАрд░рд┐рдпрдВрд╕ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд╛рдареНрдпрдХреНрд░рдо рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рдИ-рдХреЙрдорд░реНрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ .NET рд╕реАрдПрдордПрд╕ рд╣реИред

2010 рдореЗрдВ, рдорд╛рд░реНрдХ рдиреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд╕реНрдирд╛рддрдХреЛрддреНрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЬреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддрд╛ рд╣реИред рд╡рд╣ GCSE рдФрд░ A-Level рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рд▓рдВрджрди рдХреЗ рджреЛ рд╣рд╛рдИ рд╕реНрдХреВрд▓реЛрдВ рдореЗрдВ рд▓рдВрджрди рдореЗрдВ рд╣рд╛рдИ рд╕реНрдХреВрд▓ рдЧрдгрд┐рдд рдкрдврд╝рд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рд░реНрдХ рдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдЗрдВрд╕ рдмреАрдПрд╕рд╕реА рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдСрдирд░реНрд╕ред рдмреНрд░рд┐рд╕реНрдЯрд▓ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп, рдЗрдВрдЧреНрд▓реИрдВрдб рдореЗрдВ рдбрд┐рдЧреНрд░реАред

рд╕рдореАрдХреНрд╖рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдбрд╕реНрдЯрд┐рди рд╣реЗрдлреНрд░реЙрди рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдПрдХ рджрд╢рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЖрда C # рдФрд░ .NET рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмреЗрдХреНрдЯрди рдбрд┐рдХрд┐рдВрд╕рди рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ред рд╡рд╣ рд╕рдирдлреНрд▓реЗрдХ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╣-рд╕рдВрд╕реНрдерд╛рдкрдХ рдФрд░ рд╕реАрдИрдУ рднреА рд╣реИрдВред

рдбрд╕реНрдЯрд┐рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреИрдХрдЯ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрд╕рдиреЗ XNA 4.0 рдЧреЗрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЬреИрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ: рдмрд┐рдЧрд┐рдирд░реНрд╕ рдЧрд╛рдЗрдб, C # 6 рдФрд░ .NET рдХреЛрд░ 1.0: рдореЙрдбрд░реНрди рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ, рд╕рд╛рде рд╣реА XNA 3D рдЧреЗрдо рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рджреНрд╡рд╛рд░рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд╕реНрдЯрд┐рди, рд▓реИрд░реА рд▓реБрдЗрд╕рд┐рдпрд╛рдирд╛ (рд▓реИрд░реА рд▓реБрдЗрд╕рд┐рдпрд╛рдирд╛) рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдПрдХреНрд╕рдПрдирдП 3 рдбреА рдЯреВрд▓рдХрд┐рдЯ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╣-рд▓реЗрдЦрдХ рд╣реИрдВред

Efraim Kyriakidis рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реЙрд▓реНрдпреВрд╢рдВрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рджрд╕ рд╕рд╛рд▓ рдХрд╛ рдЕрдиреБрднрд╡ рд░рдЦрддрд╛ рд╣реИред рд╡рд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдЪрдХреНрд░ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдкрд╛рд░рдВрдЧрдд рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдкрд╣рд▓рд╛ рдкрд░рд┐рдЪрд┐рдд рдмрдЪрдкрди рдореЗрдВ, рдХрдореЛрдбреЛрд░ 64 рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рджреМрд░рд╛рди, рдмреАрд╕рд╡реАрдВ рд╢рддрд╛рдмреНрджреА рдХреЗ 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╣реБрдЖ рдерд╛ред рддрдм рд╕реЗ, рд╡рд╣ рдмрдбрд╝рд╛ рд╣реБрдЖ рдФрд░ рдЧреНрд░реАрд╕ рдХреЗ рдереЗрд╕рд╛рд▓реЛрдирд┐рдХреА рдХреЗ рдЕрд░рд╕реНрддреВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдбрд┐рдкреНрд▓реЛрдорд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Microsoft рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, C # рдФрд░ .NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрд╕реНрдХрд░рдг 1.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд░реНрдордиреА рдореЗрдВ рд╕реАрдореЗрдВрд╕ рдПрдЬреА рдореЗрдВ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдлреЗрд░реАрд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 20% рдХреА рдЫреВрдЯ - рдкреИрдХреНрдЯ

Source: https://habr.com/ru/post/hi415275/


All Articles