GraalVM рдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд╕рдордп-рд╕рдордп рдкрд░, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╣рдпреЛрдЧреА рдХреЗ рд╕рд╛рдеред


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


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


рдФрд░ рдЖрдк рдХреБрдЫ рдЕрдзрд┐рдХ рд╣рд▓реНрдХрд╛ рдФрд░ рд▓рдЪреАрд▓рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


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


рдХрд╣реЛ, рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ


$ python3 -mhttp.server Serving HTTP on 0.0.0.0 port 8000 ... 

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


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


рдпрд╣ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ


 $ ifconfig -a 

рдФрд░ рдлрд┐рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рд╕реЗ, рдЙрдкрдпреБрдХреНрдд рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ http: // IP: 8000 рдХрд╛ рд▓рд┐рдВрдХ рд▓рд┐рдЦреЗрдВ, рдЬрд┐рд╕реЗ рдЖрдк рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред


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


рддреАрд╕рд░рд╛, рдпрд╣ рдЕрдирдореНрдп рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЦреЛрд▓ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рддред рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрд╢рд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдФрд░ рдлрд┐рд░ рдХрдЪрд░рд╛ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛):


 $ mkdir tmp1 $ cp file.zip tmp1 $ cd tmp1 $ python3 -mhttp.server 

рдЪреМрдереА рдЕрд╕реБрд╡рд┐рдзрд╛ - рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ ред


рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЯрд╛рд░ рдкрд╛рдЗрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╡реЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ:


 $ ssh user@host 'cd /path/to/source && tar cf - .' | cd /path/to/destination && tar xvf - 

рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред tar cf - . рдХрдорд╛рдВрдб tar cf - . рдкрд╣рд▓рд╛ рднрд╛рдЧ tar cf - . рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд ssh рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рдорд╛рди tar xvf - рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ tar xvf - рд╣реЛрддрд╛ рд╣реИ tar xvf - рдЬреЛ рд╡рд┐рдкрд░реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдП рдмрд┐рдирд╛!


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


рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛?


рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдФрдкрдЪрд╛рд░рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдмрдирд╛рдПрдВрдЧреЗ:


  1. рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди (рд╕реНрдЯреЗрдЯрд┐рдХ рдмрд╛рдЗрдирд░реА)
  2. рдЬреЛ рдЖрдкрдХреЛ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
  3. рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рд╛рде
  4. рдЬреЛ рд╣реЛрд╕реНрдЯ рдХреЛ рдХреЗрд╡рд▓ рдорд╛рдирдХ * рдирд┐рдХреНрд╕ рдЯреВрд▓ (wget / curl / tar) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  5. рд▓реЙрдиреНрдЪ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╛рд░реНрдпрдХреНрд░рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдЖрджреЗрд╢ рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛

рдирд┐рд░реНрдгрдп


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


рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рд╖рдп рдореЗрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИрдВ (рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдЕрднреА рддрдХ рд╣реИ? рдУрдУ) рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рдЧреНрд░реЗрд╡рд╛рд▓рдо рдУрд░реЗрдХрд▓ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдк рдЬреЗрд╡реАрдПрдо рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:


  1. рдкреЙрд▓реАрдЧреНрд▓реЙрдЯ рдЬреЗрд╡реАрдПрдо - рдЬрд╛рд╡рд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкрд╛рдпрдерди, рд░реВрдмреА, рдЖрд░, рдЖрджрд┐ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдХреЛрдб
  2. рдПрдУрдЯреА рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди - рдЬрд╛рд╡рд╛ рдХреЛ рдореВрд▓ рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛
  3. рдПрдХ рдХрдо рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╣реА рд╢рд╛рдВрдд рд╡рд┐рд╢реЗрд╖рддрд╛ - C2 рд╕рдВрдХрд▓рдХ рдХреЛ рдЙрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C ++ рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рд╕рдВрдХрд▓рдХ рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдореВрд▓ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЖрд╡рдВрдЯрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЯреНрд╡рд┐рдЯрд░ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдХреЗ рдХреЗрд╡рд▓ CPU рдЦрдкрдд рдХреЛ 11% рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЬреЛ рдЙрдирдХреЗ рдкреИрдорд╛рдиреЗ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдФрд░ рдзрди) рдХреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрдЪрдд рджреЗрддрд╛ рдерд╛ред

рдЖрдк рдЧреНрд░реЗрд╡рд╛рд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╣рдмреНрд░-рд▓реЗрдЦ рдореЗрдВ ред


рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдУрдЯреА рд╕рдВрдХрд▓рди рд╣реЛрдЧрд╛ред


рджрд░рдЕрд╕рд▓, рдЗрд╕ рдЬреАрдереВрдм рднрдВрдбрд╛рд░ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред


рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:


 $ serv '/path/to/report.pdf' To download the file please use one of the commands below: curl http://192.168.0.179:17777/dl > 'report.pdf' wget -O- http://192.168.0.179:17777/dl > 'report.pdf' curl http://192.168.0.179:17777/dl?z --compressed > 'report.pdf' wget -O- http://192.168.0.179:17777/dl?z | gunzip > 'report.pdf' 

рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рд╕рдВрд▓рдЧреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕рд╣рд┐рдд рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ!):


 $ serv '/path/to/folder' To download the files please use one of the commands below. NB! All files will be placed into current folder! curl http://192.168.0.179:17777/dl | tar -xvf - wget -O- http://192.168.0.179:17777/dl | tar -xvf - curl http://192.168.0.179:17777/dl?z | tar -xzvf - wget -O- http://192.168.0.179:17777/dl?z | tar -xzvf - 

рд╣рд╛рдБ, рдЗрддрдирд╛ рдЖрд╕рд╛рди!


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реА рд╕рд╣реА рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреАред


рдЕрд╡рд▓реЛрдХрди / рд╡рд┐рдЪрд╛рд░


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдереАред рдФрд░ рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 $ du -hs `which serv` 2.4M /usr/local/bin/serv 

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


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреНрд░реЗрдЧрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдмрд╛рдЗрдирд░реА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдХрд╛рд░ рдореЗрдВ 7 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ UPX рдХреЗ рд╕рд╛рде рдХрдВрдкреНрд░реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рд╕рдордп рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рд╣реАрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдмрдврд╝рд╛:


рдЕрд╕рдореНрдмрджреНрдз рд╡рд┐рдХрд▓реНрдк:


 $ time ./build/com.cmlteam.serv.serv -v 0.1 real 0m0.001s user 0m0.001s sys 0m0.000s 

рд╕рдВрдХреБрдЪрд┐рдд:


 $ time ./build/serv -v 0.1 real 0m0.021s user 0m0.021s sys 0m0.000s 

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, "рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ" рд▓реЙрдиреНрдЪ рд╕рдордп:


 $ time java -cp "/home/xonix/proj/serv/target/classes:/home/xonix/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar:/home/xonix/.m2/repository/org/apache/commons/commons-compress/1.18/commons-compress-1.18.jar" com.cmlteam.serv.Serv -v 0.1 real 0m0.040s user 0m0.030s sys 0m0.019s 

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


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдЫреЛрдЯреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдордп GraalVM рдХреА рддрд╛рдХрдд рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣, рд╕рд╛рде рд╣реА рдХрдо рдореЗрдореЛрд░реА рдЦрдкрдд, рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрддреНрд╕рд╛рд╣ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рддред


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


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдФрд░ рд╣рд░ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ com.sun.net.httpserver.* рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ JDK рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ com.sun.net.httpserver.* рдкреИрдХреЗрдЬред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, com.sun.* рдХрд╛ рдЙрдкрдпреЛрдЧ com.sun.* рдкреИрдХреЗрдЬ рдПрдХ com.sun.* рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХреЛ рдорд╛рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдореВрд▓ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬреЗрд╡реАрдПрдо рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реА рдирд╣реАрдВ рд╣реИред


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░рд╛ рдбрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд░реНрде рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдореИрдВрдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛


  1. commons-cli - рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП
  2. commons-compress - рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдЯрд╛рд░рдмреЙрд▓ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ gzip рд╕рдВрдкреАрдбрд╝рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

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


рджреЗрд╢реА рдЧреНрд░реЗрдЧрд▓ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рди рджреЗрд╢реА-рдЫрд╡рд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, рдмреЛрд░реНрдб рдкрд░ рдЗрдВрдЯреЗрд▓ 7700K рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдирд╣реАрдВ-рддреЛ-рдзреАрдореА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 19 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЪрд▓рд╛рдПрдВ (рдЬрд╛рд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВред


рдирд┐рд╖реНрдХрд░реНрд╖


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


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕реНрдХрд░рдг 0.2 рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛рдмрджреНрдз рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд┐рд▓рд╣рд╛рд▓, рдЕрдВрддрд┐рдо рдмрд╛рдЗрдирд░реА рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ x64 рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЪреВрдХ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рддрдп рд╣реЛ рдЬрд╛рдПрдЧреА, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЧреНрд░реЗрдЧрд▓ рд╕реЗ native-image рд╕рдВрдХрд▓рдХ рдореИрдХрдУрдПрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЕрднреА рддрдХ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рд╕рдореНрдорд╛рдирд┐рдд рд╣рдмрд▓ рд╕рдореБрджрд╛рдп рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рджреЛрдЧреБрдирд╛ рдЦреБрд╢реА рд╣реЛрдЧреАред

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


All Articles