рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЬреАрддреЗрдВ рдпрд╛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд░реЗрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд╛рдЪреАрди рдХрд╣рд╛рд╡рдд рд╣реИ, рдХрд┐рддрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЗрддрдиреА рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реИрдВред рдЖрдЬ рдХреЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ AngularJS рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдЕрдХреНрд╕рд░ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЬреЛ main.js рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ:

(function(ng) { var app = ng.app('app', []); // This should be your configuration like a routeProvider or etc. return app; })(angular); 

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

 (function(ng) { var app = ng.app('app.controllers', []); return app; })(angular); 

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

 (function(ng) { var app = ng.app('app', ['app.controllers']); // This should be your configuration like a routeProvider or etc. return app; })(angular); 

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдореНрдореЗрд▓рди рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдКрдВрдЯ-рдХреЗрд╕ рд╢реИрд▓реА рдореЗрдВред рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ MainCtrl.js рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рддрд░реНрдХ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:

 (function(ng) { var app = ng.app('app.controllers.MainCtrl', []); var MainCtrl = function($scope) { var localScope = { message: 'Message', list: [1,2,3,4,5,6] }; ng.extend($scope, localScope); }; app.controller('MainCtrl', ['$scope', MainCtrl]); return app; })(angular); 

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

 (function(ng) { var app = ng.app('app.controllers', ['app.controllers.MainCtrl']); return app; })(angular); 

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

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ, рдирдП "рдХреЗ рд░реВрдк рдореЗрдВ" рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛
рдпрджрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрд░ рдпрд╛ рдХреБрдЫ рдХрд╛рд░реНрдп рдЕрд╡рд▓реЛрдХрдиреАрдп рд╣реЛрдВред рддрдм рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 (function(ng) { var app = ng.app('app.controllers.MainCtrl', []); var MainCtrl = function($scope, $log) { var localScope = { message: 'Message', list: [1,2,3,4,5,6] }; this.nonObservableVar = { one: 1, two: 2 }; this.logger = function(obj) { $log.info(obj); }; ng.extend($scope, localScope); }; app.controller('MainCtrl', ['$scope', '$log', MainCtrl]); return app; })(angular); 

рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 <div ng-controller="MainCtrl as main"> <div ng-click="main.logger('Test for a one value')">{{ main.nonObservableVar.one }}</div> <div ng-click="main.logger('Test for a two value')">{{ main.nonObservableVar.two }}</div> </div> 

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

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

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

PS: рдореИрдВрдиреЗ рдпрд╣ рдкреЛрд╕реНрдЯ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдЦреА рд╣реИ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рддрд╛рдХрд┐ рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рд╣реИ =)

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


All Articles