рд╕рд░реНрднрд░-рд╕рд╛рдЗрдб JavaScript рдкреНрд▓реЗрдЯрдлрд░реНрдо Node.js 19.0 рдЙрдкрд▓рдмреНрдз рдЫ

Node.js 19.0, JavaScript рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓реЗрдЯрдлрд░реНрдо, рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред Node.js 19 рдЬреБрди 2023 рд╕рдореНрдо рдЙрдкрд▓рдмреНрдз рдЕрдкрдбреЗрдЯрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рдирд┐рдпрдорд┐рдд рд╕рдорд░реНрдерди рд╢рд╛рдЦрд╛ рд╣реЛред рдЖрдЧрд╛рдореА рджрд┐рдирд╣рд░реВрдорд╛, Node.js 18 рд╢рд╛рдЦрд╛рдХреЛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреВрд░рд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рд▓реЗ LTS рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рд░ рдЕрдкреНрд░рд┐рд▓ 2025 рд╕рдореНрдо рд╕рдорд░реНрдерд┐рдд рд╣реБрдиреЗрдЫред Node.js 16.0 рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ LTS рд╢рд╛рдЦрд╛рдХреЛ рдорд░реНрдордд рд╕реЗрдкреНрдЯреЗрдореНрдмрд░ 2023 рд╕рдореНрдо рд░ рдЕрдиреНрддрд┐рдо LTS рд╢рд╛рдЦрд╛ 14.0 рдЕрдШрд┐рдХреЛ рд╡рд░реНрд╖ рдЕрдкреНрд░рд┐рд▓ 2023 рд╕рдореНрдо рд░рд╣рдиреЗрдЫред

рдореБрдЦреНрдп рд╕реБрдзрд╛рд░рд╣рд░реВ:

  • V8 рдЗрдиреНрдЬрд┐рди рд╕рдВрд╕реНрдХрд░рдг 10.7 рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ, Chromium 107 рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫред Node.js 18 рд╢рд╛рдЦрд╛рдХреЛ рддреБрд▓рдирд╛рдорд╛ рдЗрдиреНрдЬрд┐рдирдорд╛ рднрдПрдХрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдордзреНрдпреЗ, Intl.NumberFormat API рдХреЛ рддреЗрд╕реНрд░реЛ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдирдпрд╛рдБ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ formatRange рдердкреНрдЫред (), formatRangeToParts() рд░ SelectRange(), рд╕реЗрдЯрд╣рд░реВрдХреЛ рд╕рдореВрд╣реАрдХрд░рдг, рд░рд╛рдЙрдиреНрдбрд┐рдЩ рд░ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рд╕реЗрдЯрд┐рдЩрдХрд╛ тАЛтАЛрд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ, рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВрд▓рд╛рдИ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛рдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ред рд╕рдорд╛рд╡реЗрд╢ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ llhttp 8.1.0 рд░ npm 8.19.2 рдкрдирд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ "node -watch" рдЖрджреЗрд╢ рдПрдХ рд╡рд╛рдЪ рдореЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ рдЬрд╕рд▓реЗ рдЖрдпрд╛рдд рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреНрдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ "node -watch index.js" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реБрдиреЗрдЫред index.js рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреНрдЫ)ред
  • рд╕рдмреИ рдмрд╣рд┐рд░реНрдЧрдорди HTTP/HTTPS рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, HTTP 1.1 Keep-Alive рдореЗрдХрд╛рдирд┐рдЬрдордХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдЙрд╣реА рдЬрдбрд╛рди рднрд┐рддреНрд░ рдзреЗрд░реИ HTTP рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рди рдЦреБрд▓рд╛ рд░рд╛рдЦреНрдЫред Keep-Alive рд▓реЗ рдереНрд░реБрдкреБрдЯ рд░ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдЬрдбрд╛рди рдЦреБрд▓рд╛ рд╕рдордп рд╕рдорд╛рдкреНрддрд┐ 5 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕рд░реНрднрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ Keep-Alive HTTP рд╣реЗрдбрд░ рдкрд╛рд░реНрд╕ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди HTTP рдХреНрд▓рд╛рдЗрдиреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдердкрд┐рдПрдХреЛ рдЫ, рд░ Keep-Alive рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдЪреНрдЫреЗрджрди Node.js HTTP рд╕рд░реНрднрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдердкрд┐рдПрдХреЛ рдЫред
  • WebCrypto API рд▓рд╛рдИ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, Ed25519, Ed448, X25519 рд░ X448 рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВ рдмрд╛рд╣реЗрдХред WebCrypto рдореЛрдбреНрдпреБрд▓рдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм globalThis.crypto рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╡рд╛ ('node:crypto').webcrypto рдЖрд╡рд╢реНрдпрдХ рдЫред
  • DTrace, SystemTap рд░ ETW (рд╡рд┐рдиреНрдбреЛрдЬрдХрд╛ рд▓рд╛рдЧрд┐ рдШрдЯрдирд╛ рдЯреНрд░реЗрд╕рд┐рдЩ) рдЯреНрд░реЗрд╕рд┐рдЩ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ, рдЬрд╕рдХреЛ рдорд░реНрдордд рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдпреЛрдЬрдирд╛рдХреЛ рдЕрднрд╛рд╡рдорд╛ рдпрд╕рд▓рд╛рдИ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░рд╛рдЦреНрдиреЗ рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЕрдиреБрдкрдпреБрдХреНрдд рдорд╛рдирд┐рдПрдХреЛ рдерд┐рдпреЛред

Node.js рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рд░реНрднрд░-рд╕рд╛рдЗрдб рд╕рдорд░реНрдердирдХреЛ рд▓рд╛рдЧрд┐, рд░ рд╕рд╛рдзрд╛рд░рдг рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рджреБрд╡реИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред Node.js рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди, рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдЩреНрдХрд▓рди рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 рд╕рд░реНрднрд░рд╣рд░реВ рд░ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ, рдПрдХреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВ, WebSocket рд░ Ajax рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ, DBMS (MySQL, PostgreSQL, SQLite, MongoDB), рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдиреНрдЬрд┐рдирд╣рд░реВ, CSS рдЗрдиреНрдЬрд┐рдирд╣рд░реВ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ (OAuth), XML рдкрд╛рд░реНрд╕рд░рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВред

рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди, Node.js рд▓реЗ рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рдШрдЯрдирд╛ рдкреНрд░рд╢реЛрдзрди рд░ рдХрд▓рдмреНрдпрд╛рдХ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдЖрдзрд╛рд░рдорд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ epoll, kqueue, /dev/poll, рд░ рдЪрдпрди рд╕рдорд╛рд╡реЗрд╢ рдЫред рдЬрдбрд╛рди рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐, libuv рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдпреБрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ libev рд░ Windows рдорд╛ IOCP рдорд╛ рдПрдб-рдЕрди рд╣реЛред libeio рдкреБрд╕реНрддрдХрд╛рд▓рдп рдереНрд░реЗрдб рдкреВрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ c-ares рдПрдХ рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рдореЛрдбрдорд╛ DNS рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдПрдХреАрдХреГрдд рдЫред рд╕рдмреИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдЬрд╕рд▓реЗ рдмреНрд▓рдХрд┐рдЩ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫ рдереНрд░реЗрдб рдкреВрд▓ рднрд┐рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐, рд╕рд┐рдЧреНрдирд▓ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдЬрд╕реНрддреИ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХрд╛рдордХреЛ рдирддрд┐рдЬрд╛ рдЕрдЬреНрдЮрд╛рдд рдкрд╛рдЗрдк рдорд╛рд░реНрдлрдд рдлрд┐рд░реНрддрд╛ рдкрд╛рд░реНрдЫред рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧреБрдЧрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд V8 рдЗрдиреНрдЬрд┐рдирдХреЛ рдкреНрд░рдпреЛрдЧ рдорд╛рд░реНрдлрдд рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЕрддрд┐рд░рд┐рдХреНрдд, рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ рдЪрдХреНрд░-рдХреЛрд░ рдЗрдиреНрдЬрд┐рдирдХреЛ рд╕рд╛рде Node.js рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ)ред

рдпрд╕рдХреЛ рдореВрд▓рдорд╛, Node.js Perl AnyEvent, Ruby Event Mechine, Python Twisted рдлреНрд░реЗрдорд╡рд░реНрдХ рд░ Tcl рдорд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ, рддрд░ Node.js рдорд╛ рдШрдЯрдирд╛ рд▓реБрдк рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдмрд╛рдЯ рд▓реБрдХреЗрдХреЛ рдЫ рд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдШрдЯрдирд╛ рдкреНрд░рд╢реЛрдзрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫред рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред node.js рдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡реЗрджрдирд╣рд░реВ рд▓реЗрдЦреНрджрд╛, рдШрдЯрдирд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "var result = db.query("select..");" рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ред рдХрд╛рдордХреЛ рд╕рдорд╛рдкрди рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдХреЛ рдкрдЫрд┐рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдБрджреИ, Node.js рд▓реЗ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреНред рдХреЛрдбрд▓рд╛рдИ "db.query("select..", function (рдирддрд┐рдЬрд╛) {рдирддрд┐рдЬрд╛ рдкреНрд░рд╢реЛрдзрди});" рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг рддреБрд░реБрдиреНрддреИ рдЕрд░реНрдХреЛ рдХреЛрдбрдорд╛ рдЬрд╛рдиреЗрдЫ, рд░ рдбрд╛рдЯрд╛ рдЖрдЗрдкреБрдЧреНрджрд╛ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдорд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреЗрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди