рд╕рднреА рд╕рдорд╛рди, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ! - рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рд░реНрдХ рд╕рд┐рдорди рдХреА рдкреБрд╕реНрддрдХ " .NET рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди " рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдмрдВрдз рд╣реИ - рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╕рдВрдд 5 рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕рдореНрдорд╛рдирд┐рдд рджрд┐рдиреЗрд╢ рд░рд╛рдЬрдкреВрдд рдХреА рдПрдХ рдкреБрд╕реНрддрдХ рднреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдзреНрдпрд╛рдп рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред

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

рдореВрд▓ рдХрд╛ рднрд╛рд╡рдирд╛рддреНрдордХ рд░рдВрдЧ рдереЛрдбрд╝рд╛ рд╢рд╛рдВрдд рд╣реИ, рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЕрдЪреНрдЫрд╛ рдкрдврд╝ рд▓реЛ!

рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред рдореБрдЭреЗ рдмрд╛рд░-рдмрд╛рд░ рдпрдХреАрди рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдХрд╛ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдбрд┐рдЬрд╛рдЗрди рдЙрдкрдХрд░рдг рд╣реИред

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

рдЗрдВрдЯрд░рдлреЗрд╕

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдпрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧреЛ рднрд╛рд╖рд╛ рдореЗрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рдпрджрд┐ рдЖрдк рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛, рддреЛ рдПрдХ рд╕рдВрдХрд▓рди-рд╕рдордп рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

prog.go:22:85: cannot use BadPricer literal (type BadPricer) as type StockPricer in argument to isPricerHigherThan100: BadPricer does not implement StockPricer (missing CurrentPrice method) Program exited. 

рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХреИрд▓реА рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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



рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕реАрдзреЗ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИред

Action рднреА рд╕реАрдзреЗ HTTP рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреЛрдиреЛрдВ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдбреЗрдЯрд╛ рдФрд░ / рдпрд╛ рдкреВрд░реНрдг рд▓реЗрдирджреЗрди рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП HTTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдпрд╣рд╛рдВ рдпрд╣ рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 func analyze(ticker string, maxTradePrice float64) (bool, err) { resp, err := http.Get( "http://stock-service.com/currentprice/" + ticker ) if err != nil { //   } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ... currentPrice := parsePriceFromBody(body) var hasTraded bool var err error if currentPrice <= maximumTradePrice { err = doTrade(ticker, currentPrice) if err == nil { hasTraded = true } } return hasTraded, err } 

рдпрд╣рд╛рдВ, рдХреЙрд▓рд░ ( analyze ) рд╕реАрдзреЗ HTTP рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЙрд╕реЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ HTTP рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд░рд┐рдЯреНрд░реАрдЯ, рдЯрд╛рдЗрдордЖрдЙрдЯ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрджрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред http рдкрд░ рдЙрд╕рдХреА рдХрд░реАрдмреА рдкрдХрдбрд╝ рд╣реИред рдЬрдм рднреА рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ http рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рднреА рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рдорджрдж рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЕрдиреБрдмрдВрдз рдореЗрдВ, рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрдЬрд╛рдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 type StockExchange interface { CurrentPrice(ticker string) float64 } 

рдЙрдкрд░реЛрдХреНрдд StockExchange рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрд╣рд╛рдБ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ StockExchange рдХреЗрд╡рд▓ StockExchange рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпреЗ рддреАрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдореБрдЭреЗ рд╕рднреА рдХреА рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рддрдХрдиреАрдХ рд▓рдЧрддреА рд╣реИрдВред рд╡реЗ рд╣рдореЗрдВ рдЖрд╡реЗрджрди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди" рдирд╛рдордХ рддрдХрдиреАрдХ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдХреЙрд▓рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреИрд▓реА рдХреЗ рдкрд╛рд╕ рднреЗрдЬрддрд╛ рд╣реИред рдлрд┐рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╛рд░реНрдЯреА рдкрд╛рд░реНрдЯреА рд╕рд╛рд░ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЬреНрдЮрд╛рдд рдордзреНрдпрд╕реНрдерддрд╛ рд╣реИред HTTP рд░реЗрд╕реНрдЯ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ HTTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддреИрдпрд╛рд░, рднреЗрдЬ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИред

рдпрджрд┐ рд╣рдордиреЗ HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ рд░рдЦрд╛ рд╣реИ, рддреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реЗ "рдкрддрд╛ рдирд╣реАрдВ" рд╣реЛрдЧрд╛ рдХрд┐ HTTP рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реБрдЖ рдерд╛ред

рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХреЙрд▓, рдПрдХ рджреВрд░рд╕реНрде рдХреЙрд▓, рдПрдХ HTTP рдХреЙрд▓, рдПрдХ рдЖрд░рдкреАрд╕реА рдХреЙрд▓, рдЖрджрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЙрд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╣рдорд╛рд░реЗ analyze рдкрджреНрдзрддрд┐ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИред

 func analyze(se StockExchange, ticker string, maxTradePrice float64) (bool, error) { currentPrice := se.CurrentPrice(ticker) var hasTraded bool var err error if currentPrice <= maximumTradePrice { err = doTrade(ticker, currentPrice) if err == nil { hasTraded = true } } return hasTraded, err } 

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

рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рдХреЙрд▓рдЧрд░реНрд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХреЙрд▓рд░ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдХрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдкрдХреЛ рдкрд╛рд░реНрдЯреА рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ!



рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ "рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ" рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ StockExchange рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдХреАрдорддреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЕрд╕рд▓реА рдЖрдирдВрджрд┐рдд рдЕрдЬреНрдЮрд╛рдиред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреНрд╡рд┐рдкрдХреНрд╖реАрдпред HTTPStockExchange рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рдЗрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИрдВред

рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЯреБрдХрдбрд╝реЗ (рдЬреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ) рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рддреЗ / рдЬреЛрдбрд╝рддреЗ / рд╣рдЯрд╛рддреЗ рд╕рдордп рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдРрд╕рд╛ рдбрд┐рдЬрд╛рдЗрди рдЯрд┐рдХрд╛рдК рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ StockService рдмрд╣реБрдд рдмрд╛рд░ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ? рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдХреНрд▓реАрдирд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрднреА рднреА HTTP рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред analyze рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реМрдВрдкреЗрдЧреА, рдЬрд┐рд╕реЗ http рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрдЬрд╛рдп рд╕реАрдзреЗ http рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗред рдЗрд╕ рддрдХрдиреАрдХ рдХреА рдкреВрд░реА рддрд╛рдХрдд "рдЗрдВрдЬреЗрдХреНрд╢рди" рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдХреИрд▓реА рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЙрд▓рдЯрд╛ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреАрдорддреЗрдВ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд╣реАрдВред

рдмреЙрдХреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрд╛рд╣рд░ рдХрдИ

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ analyze рдлрд╝рдВрдХреНрд╢рди рдФрд░ StockExchange рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред

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



рдЙрддреНрдкрд╛рджрди

рдореВрд▓ HTTP рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рдердорд┐рдХ analyze рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореМрдЬреВрдж рд╣реИ; рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рдЗрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдПрдХ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреАрдЫреЗ рдЗрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдирд╛ рд╣реИред

 type HTTPStockExchange struct {} func (se HTTPStockExchange) CurrentPrice(ticker string) float64 { resp, err := http.Get( "http://stock-service.com/currentprice/" + ticker ) if err != nil { //   } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ... return parsePriceFromBody(body) } 

рдХреЛрдб рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдерд╛, рдЕрдм рд╕реНрд╡рд╛рдпрддреНрдд рд╣реИ рдФрд░ StockExchange рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдЕрдм рд╣рдо рдЗрд╕реЗ analyze рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдЖрд░реЗрдЦреЛрдВ рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдм HTTP рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, analyze рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдХрд▓реНрдкрдирд╛" рди рдХрд░реЗрдВ рдХрд┐ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рджрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рдПрдЧреА рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд╣ CurrentPrice рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рднреА рд╣рдо рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рдЬрдм http- рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╛рдВрдзрд╛ рдЧрдпрд╛ рдерд╛, http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдерд╛ - analyze рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рд╣рд╛рдВ, рд╣рдо рдЗрди рдХреЙрд▓реНрд╕ рдХреЛ рдлрдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЗрдирдХреИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рд╣рдореЗрдВ рдХреЙрд▓рд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ HTTPStockExchange рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг

рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HTTPStockService рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдирд┐рдордп рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг StockExchange рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

 currentPrice := se.CurrentPrice(ticker) if currentPrice <= maxTradePrice { err := doTrade(ticker, currentPrice) } 

WE COULD HTTP рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реЛрдВрдЧреЗред рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХрд░рдирд╛ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдПред рджреЗрд░реА рдФрд░ рдПрдХ рдЕрд╕реНрдерд┐рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рд░рдг, рдкрд░реАрдХреНрд╖рдг рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕ рдХрдерди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд▓реЗрди-рджреЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдХрдерди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрддреНрдкрд╛рджрди рдбреЗрдЯрд╛ рдХреЛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрди рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рд╕реНрдерд┐рддрд┐ред рдХреЛрдИ рднреА maxTradePrice рдЪреБрди рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, maxTradePrice := -100 рд▓реЗрди-рджреЗрди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ maxTradePrice := 10000000 рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ!

рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдиреЗ рд╕реЗ, рдЖрдк StockExchange рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЬрд▓реНрджреА, рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ analyze рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

 type StubExchange struct { Price float64 } func (se StubExchange) CurrentPrice(ticker string) float64 { return se.Price } func TestAnalyze_MakeTrade(t *testing.T) { se := StubExchange{Price: 10} maxTradePrice := 11 traded, err := analyze(se, "TSLA", maxTradePrice) if err != nil { t.Errorf("expected err == nil received: %s", err) } if !traded { t.Error("expected traded == true") } } func TestAnalyze_DontTrade(t *testing.T) { se := StubExchange{Price: 10} maxTradePrice := 9 traded, err := analyze(se, "TSLA", maxTradePrice) //  } 

рд╡рд┐рдирд┐рдордп рд╕реЗрд╡рд╛ рдХрд╛ рд╕реНрдЯрдм рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП analyze рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╢рд╛рдЦрд╛ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╣реИред рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдпрд╛рди рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ / рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдЬрд╣рд╛рдВ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпреБрджреНрдз рдХреЗ рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ !!! рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдореЗрдореЛрд░реА рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд StockExchange рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдмрд┐рдЬрд▓реА рд╕реЗ рддреЗрдЬрд╝ рдкрд░реАрдХреНрд╖рдг !!!

рдЕрдирдкрд┐рди - рдХреЙрд▓рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

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

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдо рдореЗрдВ рдЖрддрд╛ рд╣реИред

 func main() { var ticker = flag.String("ticker", "", "stock ticker symbol to trade for") var maxTradePrice = flag.Float64("maxtradeprice", "", "max price to pay for a share of the ticker symbol." se := HTTPStockExchange{} analyze(se, *ticker, *maxTradePrice) } 

рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣, рд╕реНрдЯреЙрдХрдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдХреНрд░реАрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ analyze рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд╣рд░ рдХреЙрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ analyze рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ (рдЗрдВрдЬреЗрдХреНрд╢рди) рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ HTTPStockExchange рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ HTTPStockExchange рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ NOTHING рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ HTTPStockExchange ред рд╢рд╛рдпрдж рд╣рдо http рдбреЛрдореЗрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдзреНрд╡рдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐ рд╣рдореЗрдВ HTTPStockExchange рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпрд╛ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛? рдлрд┐рд░ рд╕реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди analyze рдмрд╛рд╣рд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд░реНрддрд╡реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдЦреНрдд рдЕрд▓рдЧрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдардВрдбреЗ рдмрд╕реНрддреЗ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп

рд╢рд╛рдпрдж рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХрдИ рдЕрдиреНрдп рдлрд╛рдпрджреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдирд┐рд░реНрдгрдпреЛрдВ рд╕реЗ рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рднреА рд╡реЗ рд╣рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЗрдирджреЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рдорд╛рди рд╢реНрд░реЗрдгреА рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: mysql, postgres, redis, file system, cassandra? рдЕрдВрддрддрдГ, рдпрд╣ рд╕рдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣рдореЗрдВ рдЗрди рдореБрджреНрджреЛрдВ рдкрд░ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╡реЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрддрд┐рдо рд╕рдордп рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ!

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



рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЪрдХреНрд░реАрдп рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдЬреИрд╕реЗ рд╣реА рд╣рдо рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реЛрдВ, рд╣рдо HTTPStockExchange рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ HTTPStockExchange ред рд╣рдордиреЗ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╣рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдмреЗрд╣рддрд░ рд░реВрдк рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ, рдХрдм, рдФрд░ рдХрд┐рддрдиреЗ рд╕рдордп рддрдХ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдбрд┐рд▓реАрд╡рд░реА рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдИ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрдордЬреЛрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг HTTPStockExchange рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ!

рд╡рд╛рд╕реНрддреБ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рддреЗрдЬреА рдЖ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╣реАрдиреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП

рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдЙрджреНрдзрд░рдг рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдпрд╛ рдХреЛрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВ; рдЖрдк рдЬрд┐рддрдиреА рдЪрд╛рд╣реЗрдВ рдЙрддрдиреА рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд┐рдзрд┐ StockExchange рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧреАред

 se.CurrentPrice(ticker) 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЙрди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд┐рдирдХрд╛ рд╣рдо рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо analyze рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЗрд╕рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рди рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж analyze рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдбрдмрд▓-рдЪреЗрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ!

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдХрдордЬреЛрд░ рд╣реЛрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рд░ рдХреЛ рдХреЙрд▓рд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЯреБрдХрдбрд╝реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдбрдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд╣реАрдВ, рдЗрддрдирд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ рдХрд┐ рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрджрд┐рдо рдорд╛рдирддрд╛ рд╣реВрдВ - рд╣рд╛рдВ, рдпрд╣ рдХрд╛рдлреА рдХрдЯреНрдЯрд░рдкрдВрдереА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рдареЛрд╕ рд╣реИрдВ, рдФрд░ рдЖрдк рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рдЧрднрдЧ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЬрд┐рди рдкрд░ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдПред

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


All Articles