AppFog рдФрд░ Djangoред рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ?

рд╢реБрдн рджрд┐рди, рдкреНрд░рд┐рдп Khabrovites! рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд╛рдЗрдерди рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, Django рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдиреЗ рд▓рдЧрд╛ред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ Django рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕ рд╕рдордп рдореИрдВ рдЬреАрдПрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди, рдХрд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЪреБрдирд╛рд╡ рдХреЛрдИ рдмреБрд░рд╛ рдирд╣реАрдВ рдерд╛ред рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, AppFog! (рдзреНрдпрд╛рди рд╕реЗ, рдХрдЯ рддрд╕реНрд╡реАрд░ рдХреЗ рдиреАрдЪреЗ!)


рд╣рдореЗрдВ рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рдЦрд╛рддрд╛ рдХреНрдпрд╛ рд╣реИ?



рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрд╕рдПрд╕рдПрдЪ рдЬреИрд╕реЗ рдмрдиреНрд╕ рдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреАрдордд рд╣реА ред рдЦреИрд░, рд╣рдо рдПрдХ рдореБрдлреНрдд рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдмреБрди рдкрд░ рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдЗрд╕ рдХрджрдо рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╣реА рджреВрд╕рд░реЗ рджрд┐рди рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ)ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ https://console.appfog.com/ рдХреЗ рдкрддреЗ рдкрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗред
http://console.appfog.com


рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ


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

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

рдРрдк рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдо рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ "рд▓реЙрдЧ" рджрд┐рдЦрд╛рдПрдВрдЧреЗред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг

рд╣рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдкреГрд╖реНрда рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдЖрд╡реЗрджрди рдкреГрд╖реНрда

рд╕реЗрд╡рд╛рдПрдВ - рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛рдПрдВ

рдРрдб-рдСрди - рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреГрд╖реНрда рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реВрдЪреА рджреВрдВрдЧрд╛:
рд▓реЙрдЬреЗрдиреНрдЯреНрд░реАрдЬ, рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╛рдЙрдб, рдЬрд╝реЗрд░рд╛рдЙрдВрдб, рд╕рд░реНрдЪрдЗрдЬрд╝, рдореЛрдВрдЧреЛрд╣, рдореЛрдВрдЧрд▓реЛрдЖрдм, рдмреНрд▓рд┐рдЯреНрдЬрд╝, рдХреНрд▓рд┐рдпрд░рдмреАрдбреА, рдореЗрдордЪрд┐рдпрд░, рдХреНрд▓рд╛рдЙрдбрд┐рдирд░реА, рдЖрдпрд░рдирдореИрдХреНрдпреВ, рдиреЗрдХреНрд╕рдореЛ, рдЖрдпрд░рдирд╡рд░реНрдХрд░, рдХреНрд▓рд╛рдЙрдбрдореЗрд▓рд┐рди, рдореЗрд▓рдЧреБрди

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

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

рдЗрд╕рд▓рд┐рдП, рдХрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рджрд░реНрдЬ рдХрд░реЗрдВ
gem update --system gem install af 

рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдбреЗрдЯ рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреЗрдЬ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╕реЛрд░реНрд╕ рдХреЛрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ (рдЪреМрдХрд╕ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрдЯрди рдШрд╛рд╕ рдХрд╛рдЯрдиреЗ рд╡рд╛рд▓реЗ рд╣реЗрдбрд░ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИ)ред рд╡реЗ рд╣рдореЗрдВ рдПрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╝рд┐рдк рджреЗрдВрдЧреЗред рдЗрд╕реЗ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдореЗрдВ рдЬрд╛рдПрдВред рдЕрдм рд╣рдореЗрдВ AppFog рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 af login [WARNING] DL is deprecated, please use Fiddle Attempting login to [https://api.appfog.com] Email: youremail@example.com Password: ************** Successfully logged into [https://api.appfog.com] 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрд╕реА рдХреНрд░реЗрдлрд╝рд┐рд╢ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ :)


рдЕрдм рд╣рдо рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡реНрдпреВрд╣реЛрдо рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
views.py
 from django.shortcuts import render_to_response def index(request): return render_to_response('index.html') 

Urls.py рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:
urls.py
 from django.conf.urls.defaults import patterns, include, url import settings from views import * urlpatterns = patterns('', url(r'^$', index), (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), #       ) 

рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ base.html рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЗрд╕реЗ рдлрд╝реЙрд░реНрдо рдкрд░ рд▓рд╛рдПрдБ
base.html
 <!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> 

Index.html рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реЗрдВ
index.html
 {% extends "base.html" %} {% block title %}Django page{% endblock %} {% block content %} <h1>Welcome to habratest Django page!</h1> {% endblock %} 

рдФрд░ 404.html рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
404.html
 {% extends "base.html" %} {% block title %}404{% endblock %} {% block content %} <h1>404 ERROR</h1> {% endblock %} 

рд╕рд╛рджреГрд╢реНрдп рд╕реЗ, рдЖрдк 500 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ


рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рдЙрдб рдкрд░ рд╡рд╛рдкрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
 af update habratest [WARNING] DL is deprecated, please use Fiddle Uploading Application: Checking for available resources: OK Packing application: OK Uploading (5K): Push Status: OK Stopping Application 'habratest': OK Staging Application 'habratest': ... Staging Application 'habratest': OK Starting Application 'habratest': .. Starting Application 'habratest': OK 

рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдЖрд╡рд╛рд╕ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреГрд╖реНрда рджреЗрдЦрддреЗ рд╣реИрдВред :) рдмрдзрд╛рдИ рд╣реЛ, рдЖрдк рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдРрдк рдЪрд╛рд╣рддреЗ рдереЗ!

рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп


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

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


All Articles