рдорд╛рдпрд╛рд╡реА рдЬрд╛ред
рдорд╛рдпрд╛рд╡реА рдЬреЛ рдордЬрд╛рдХ рдпрд╛рдж рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ "рдХрд┐рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?", рдПрдХ рдкреНрд░рд╢реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ "
рдХреНрдпреЛрдВ? ", GO 1 рдХреЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬ рд╣реЗрдмреЗрд░реА рдкрд░ рд╣реБрдИ рдереАред
рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣реЗрдмрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ - рдореМрдЬреВрджрд╛ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕рдВрдпреБрдХреНрдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ - рдЬреАрд╡рдВрдд рдЪрд░реНрдЪрд╛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рдеред рдФрд░ рд╣рдм "рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди" рдореЗрдВ рдЪрдХреНрд░ рдХреА рд╢реБрд░реВрдЖрдд рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рди рдХреЗрд╡рд▓ "рд╣рдореНрд╕рдЯрд░" рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдмреА рдПрдЯ рдУрдмреА рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧреАред
рдПрдкрд░рд┐рдЯрд┐рдл рдХреЗ рдмрдЬрд╛рдп: рдЧреЛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЧрддрд┐рд╢реАрд▓ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╛рди рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 5-20 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдФрд░ рдХреЗрд╡рд▓ рджреЛ рдмрд╛рд░ рдирд┐рдЧрдВрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рд╕реЗ рд╣реАрдиредрдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рдЧреЛ рднрд╛рд╖рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЕрдиреНрдп (рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдИ) рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ - рдПрдЪрдЯреАрдПрдордПрд▓ 5, рд╕реАрдПрд╕рдПрд╕ 3, рд░реЗрдбрд┐рд╕, рдореЛрдВрдЧрдмреАрдбреА рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдЪрд╛рд▓реЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рд╕реНрдореГрддрд┐ рдХреЗ рдиреБрдХреНрдХрдбрд╝ рд╕реЗ рдореИрдЪреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ-рдбреЗрдврд╝ рджрд╢рдХ рдореЗрдВ рдЬрдорд╛ рд╣реЛ рдЧрдП рд╣реИрдВред рд╡рд╛рдкрд╕ рдмреИрдареЛ, рдзреИрд░реНрдп рдФрд░ рдХреЙрдлреА рдкрд░ рд╕реНрдЯреЙрдХ - рдХрдЯ рдХреЗ рддрд╣рдд "рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрддреНрд░", рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдЪрдп рд╣реИ :)
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрдирдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЧреЛ рднрд╛рд╖рд╛ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдПрдХ рд╣рдм рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╣рдмрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рд╖рдп рдХреА рдорд╛рдиреНрдпрддрд╛ рд╣рдореЗрд╢рд╛ рд╕реБрдЦрдж рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╣рдм рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рджрд░реНрд╢рдХреЛрдВ рдХреА рдмрдврд╝рддреА рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рд╣реИрдмреЗ рдкрд░ рдЕрдкрдиреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рджреЛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ "рдбреНрд░рд╛рдлреНрдЯреНрд╕ рд▓реЗрдиреЗ" рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдврдВрдЧ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛, рдХреБрдЫ рдЬреАрдн рд╕реЗ рдмрдВрдзреА рд╣реБрдИ рдЬреАрдн рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореГрдд рднрд╛рд╖рд╛ рдореЗрдВ рдкрдВрдЦ рд╡рд╛рд▓реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреА рд▓рдВрдШрди paraphrases - i.e. рдЙрди рдЖрджрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрд╛рдиреВрдиреА рдЕрддреАрдд рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВред
рдЧрд░реНрд╡ рдФрд░ рдкрдХреНрд╖рдкрд╛рдд
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡реЗ рд╕реНрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЧреЛ рднрд╛рд╖рд╛ рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕, рд╕рд░рд▓рддрд╛ рдФрд░ рдЕрдиреБрдЧреНрд░рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдХреБрдВрдж рдФрд░ рдЗрд╢рд╛рд░рд╛ рдХреА рдЕрдЧрд▓реА рд▓рдбрд╝рд╛рдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдорд╛рдк рдХреЗ рдЕрдзреАрди рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреА рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рдХреИрд╕рд╕ рдмреЗрд▓реА рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕ рдирд╛рдЬреБрдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреИрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рд╛ рдЬрд╛рдП, рдФрд░ рдирд┐рд░реНрдгрдп рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЛрд▓реЛрдореЛрдирд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреА рджреВрд╕рд░реА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛, рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЗ рдЖрд░реЛрдкреЛрдВ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдФрд░ рдореЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
рдореБрдЭреЗ рднреА рдкрд╛рдпрдерди рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ !
рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рднреЛрдЬ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди, рдЗрд╕рдХреЗ рджрд░реНрд╢рди рдФрд░ рдХреНрд╖рдорддрд╛рдПрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╕рдордп рд╕реНрд╡рдпрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдмрд╛рдзрд╛ рдХреЗ рд▓рд┐рдП, рднрдЧрд╡рд╛рди! рдмрд╛рдзрд╛ рдХреЗ рд▓рд┐рдП!
рдЖрдЗрдП рдЙрд╕ рддреБрд▓рдирд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдбрд░рд╛рдпрд╛ рдерд╛ред рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдХрд┐ рджреЛ рдЖрджрд┐рдо рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ:
- рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ
- рд░реВрдЯрд┐рдВрдЧ рдФрд░ рд╣реИрдВрдбрд▓рд░ рд╣реИ
- рд╕рдВрджрд░реНрдн рд╕реЗ рдПрдХ рдЪрд░ рд▓реЗ рд▓реЛ
- рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрднрд┐рд╡рд╛рджрди рдирдорд╕реНрддреЗ рдЬрд╛рд░реА рдХрд░реЗрдВ,% sред
рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ, рдХреБрдЫ рдЪрд╛рд▓рд╛рдХ рдХреЗ рд╕рд╛рдеред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдкрддреНрддрд┐ рдЬрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЦреНрдп рдмреНрд░реЗрдХ рдЕрднреА рднреА рдбрд┐рд╕реНрдХ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреА рдШреЛрд╖рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рд╣рдо i / o рдФрд░ db рдХреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдорд┐рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдиреЗрдЯ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рд░реЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
1.
Webapp2.py рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЛрдб - рдкреЗрд╕реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рддреЗрдЬ рдорд┐рдиреАрдлреНрд░реЗрдо:
рдЖрдпрд╛рдд webapp2
рдХрдХреНрд╖рд╛ рдирдорд╕реНрдХрд╛рд░ (webapp2.equestHandler):
рдбреАрдИрдПрдлрд╝ рдЧреЗрдЯ (рд╕реНрд╡рдпрдВ, рдирд╛рдо):
self.response.write ('рд╣реИрд▓реЛ,% s!'% рдирд╛рдо)
рдРрдк = webapp2.WSGIApplication ([
('/ (\ w +)', рд╣реИрд▓реЛ),
], рдбрд┐рдмрдЧ = рдЧрд▓рдд)
def рдореБрдЦреНрдп ():
рдкреЗрд╕реНрдЯ рдЗрдВрдкреНтАНрд▓реЙрдЗрд╕ рд╕реЗ
httpserver.serve (рдРрдк, рд╣реЛрд╕реНрдЯ = '127.0.0.1', рдкреЛрд░реНрдЯ = '8080')
рдЕрдЧрд░ __name__ == '__main__':
рдореБрдЦреНрдп ()
рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ: рдЕрдЬрдЧрд░ habr.py
2. рдХреЛрдб рдЬрд╛рдУ:
рдкреИрдХреЗрдЬ рдореБрдЦреНрдп
рдЖрдпрд╛рдд (
"FMT"
"рдиреЗрдЯ / http"
)
func handler (w http.ResponseWriter, r * http.Request) {
fmt.Fprintf (w, "рд╣реИрд▓реЛ,% s!", r.URL.Path [1:])
}
рджреБрд░реНрдЧрдВрдз рдореБрдЦреНрдп () {
http.andleFunc ("/", рд╣реИрдВрдбрд▓рд░)
http.ListenAndServe (": 8080", рдиреАрд▓)
}
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛрдб: рдЪрд▓рд╛рдПрдВ habr.go
рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧреЛ рдХреЛрдб рдХрд┐рддрдирд╛ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдРрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдПред рджреЛрдиреЛрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдПрдХ рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рд╣рдо рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рд╕рднреА GET / (*) рдХреЛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣реИрд▓реЛ рдХреЗ рдмрд╛рдж рдбрд┐рд╕реНрдкреНрд▓реЗ рдирд╛рдо рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ (*)ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
3. рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, nginx рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ "рд╣реИрд▓реЛ, рд╣рдмреНрд░" рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░ рдкреГрд╖реНрда рджреЗрддрд╛ рд╣реИред рдЪреЗрддрд╛рд╡рдиреА! рдирдЧреАрдирдХреНрд╕ рдХреЛ рдирдЧреАрдиреЗрдХреНрд╕-рд▓рд╛рдЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдУрд╡рд░рдХреНрд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
4. рдирд┐рдореНрди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЯреЗрд╕реНрдЯ рдмреЗрдВрдЪ (рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ):
рд▓реЗрдиреЛрд╡реЛ B460E / RAM: 2G / CPU: рд╕реЗрд▓реЗрд░реЙрди рдбреБрдЕрд▓-рдХреЛрд░ T3500 @ 2.10Ghz
рдУрдПрд╕: рд▓реБрдмрдВрдЯреВ 12.04 x86, рдХрд░реНрдиреЗрд▓: 3.2.0-20-рдЬреЗрдиреЗрд░рд┐рдХ
5. рд╣рдо Apache2-utils рд╕реЗ рдПрдм рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдмрд╕реЗ рдЖрджрд┐рдо рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдк рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдШреЗрд░рд╛рдмрдВрджреА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдХрд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
6. рд░реЗрд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдо
Py @ ab -c10 -n1000 http: // localhost: 8080 / habr
(рдПрдХ рдмрдбрд╝реЗ "-n" рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде, рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдЕрдм рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 0.987 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 1012.67 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
Go @ ab -c10 -n1000 http: // localhost: 8080 / habr
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 0.197 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 5080.24 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
Nginx @ ab -c10 -n1000 http: // localhost /
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 0.101 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 9895.50 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
рдЖрдЗрдП рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред
Py @ ab -c100 -n1000 http: // localhost: 8080 / habr
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 1.045 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 956.57 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
Go @ ab -c100 -n1000: http: // localhost: 8080 / habr
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 0.199 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 5021.14 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
Nginx @ ab -c100 -n1000 http: // localhost /
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп: 0.110 рд╕реЗрдХрдВрдб
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдз: 9054.77 [# / рд╕реЗрдХрдВрдб] (рдорддрд▓рдм)
рдЬрдм "-c"> 1000, рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдирдЧреНрдиреЗрдХреНрд╕ рдПрдХ рдХрдХрдбрд╝реА рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреЛ "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ" рдХреЗ рд╕рд╛рде "рдЕрдиреБрд░реЛрдз" рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 50 рд╕реЗ 4000 рдЕрдиреБрд░реЛрдз рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЖрдЬ, рдЙрдмрдВрдЯреВ 12.04 рдкрд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЧреЛ 1 рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (r60.3) рдкрд░, рдЧреЛ рд╕реНрдерд┐рд░ рдерд╛ред рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рд▓реИрдкрдЯреЙрдк рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдХреЗрдЬ рдмрдВрдбрд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд╛рдИрд▓рд╛рдб рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ :)
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдкрджреНрдзрддрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдореА рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рд╕реБрдирдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдЧреЛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ (рд╡рд┐рдХрд╛рд╕) рдХреЗ рджреЛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рднрд╛рдЧ рд▓рд┐рдпрд╛ред рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рдЧреЛ рдореЗрд░реЗ рдЯрд╛рд╕реНрдХ рд░реЗрдВрдЬ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реИред рдЙрди рд╕рднреА рдХрд╛ рдЖрдЪрд░рдг рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдирд╛ рдПрдХ рдХреГрддрдШреНрди рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдлрд┐рд░ рд╕реЗ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдВрдЧреЗред
рд╢рдмреНрдж рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛, рдореИрдВ рд╕реНрдореГрддрд┐ рд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрдВрд╢ рджреВрдВрдЧрд╛ред
рдЬрд╛рд╡рд╛ рдХрднреА-рдХрднреА 10-30% рддреЗрдЬреА рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд (рд╡реАрдПрдо рджреНрд╡рд╛рд░рд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджреЛрдиреЛрдВ) рдХреЗ рдХрд╛рд░рдг рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИред рдлрд┐рд░, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг (рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХрд╛ рдиреНрдпреВрдирддрдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдХрдо рдХреЛрдб, рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдБред
рдореИрдВ рдиреЗрдЯ / рдореЛрдиреЛ рд╕реА # рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВред
C / C ++ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЖрдкрдХреЛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рддреЗрдЬрд╝ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред
рдкрд╛рдпрдерди рдФрд░ рд░реВрдмреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрддрд┐ рдореЗрдВ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ, PHP рдПрдХ рдкреЗрд░рд╛рдИ рд╣рд╛рд░ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИред
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреА рдШреЛрд╖рдгрд╛:
- рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реБрдП рдирдорд╕реНрдХрд╛рд░, Habr!
- рдХрдИ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЬрдЯрд┐рд▓
- рд╣рдо Nginx рдХреЗ рддрд╣рдд рдХрдИ рдЧреЛ-рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд╕рд╛рдорд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдиреЗ рдкрд░рд┐рдЪрдп рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛рдпрд╛ рд╣реИред
рдореИрдВ рдПрдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВ, рдЕрдзрд┐рдорд╛рдирддрдГ рд╕рднреНрдпред