рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

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

рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА - рдпрд╣ рдХреНрдпрд╛ рд╣реИ?

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

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ WebAssembly рдХреЛ C/C++, Rust, Go рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рддрдерд╛рдХрдерд┐рдд рдлреНрд▓реИрдЯ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдЬрд┐рддрдирд╛ рддреЗрдЬрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг WebAssembly рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред

рдЕрдиреБрд╕реНрдорд╛рд░рдХ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп 10 рд░реВрдмрд▓ рдХреА рдЫреВрдЯред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо "рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛ".

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╡рд╛рд╕реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреВрдо 3 рдЬреИрд╕реЗ рдЧреЗрдо рд╕реЗ рд▓реЗрдХрд░ рдСрдЯреЛрдХреИрдб рдФрд░ рдлрд┐рдЧрдорд╛ рдЬреИрд╕реЗ рд╡реЗрдм-рдкреЛрд░реНрдЯреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХред рд╡рд╛рд╕реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЬреИрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рд╡рд░реНрддрди

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

рдпрд╣рд╛рдВ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧреИрд░-рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЗрдиреНрдлреЛрдЧреНрд░рд╛рдлрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдбреАрдПрдирдП рдЕрдиреБрдХреНрд░рдордг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓реА рдФрд░ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдИрдВред

рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк, рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВред рд▓реЗрдХрд┐рди fastq.bio рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рддреЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдЖрдиреБрд╡рдВрд╢рд┐рдХреАрд╡рд┐рджреЛрдВ рдХреЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред

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

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

fastq.bio рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдкрдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирдореВрдирд╛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдмреИрдЪ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рдо рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рдФрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рднрд┐рдиреНрди рдбреАрдПрдирдП рдЯреБрдХрдбрд╝реЛрдВ рдкрд░ рдиреНрдпреВрдХреНрд▓рд┐рдпреЛрдЯрд╛рдЗрдб рдП, рд╕реА, рдЬреА рдФрд░ рдЯреА рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ Plotly.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдПрдХ рдирдП рдбреЗрдЯрд╛ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИред рдпреВрдПрдХреНрд╕ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪрдВрдХрд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рде рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░реБрдХ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрдХреНрд░рдордг рдкрд░рд┐рдгрд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рди рд▓реЗрддреА рд╣реИрдВред рд╕реЗрд╡рд╛ 0,5 рд╕реЗ 1 рдПрдордмреА рддрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдЯреБрдХрдбрд╝реЗ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЪрд░рдг рджрд░ рдЪрд░рдг рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдбреЗрдЯрд╛ рдмрдирд╛рддреА рд╣реИред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

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

рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг

рд╡рд╛рд╕реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо рдиреЗ рдлрд╛рд╕реНрдЯрдХреНрдпреВ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрдпреВрд╕реА рдореЗрдЯреНрд░рд┐рдХреНрд╕ (рдХреНрдпреВрд╕реА - рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХреАред рдЦреЛрдЬ C, C++ рдпрд╛ Rust рдореЗрдВ рд▓рд┐рдЦреЗ рдЯреВрд▓ рдХреЗ рдмреАрдЪ рдХреА рдЧрдИ, рддрд╛рдХрд┐ рдХреЛрдб рдХреЛ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдХрд░рдг "рдХрдЪреНрдЪрд╛" рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдРрд╕реА рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬрд┐рд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реЗ рд╣реА рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реЛред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЪреБрдирд╛рд╡ рдкрдХреНрд╖ рдореЗрдВ рд╣реБрдЖ seqtk. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╣реИ, рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рд╕реА рд╣реИред

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

# Compile to binary
$ gcc seqtk.c 
   -o seqtk 
   -O2 
   -lm 
   -lz

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк Emscripten рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ seqtk рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдбреЛрдХрд░ рдЫрд╡рд┐.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt --name wasm-seqtk robertaboukhalil/emsdk:1.38.26

рдЕрдЧрд░ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЕрд╕реЗрдВрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ gcc рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ emcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

# Compile to WebAssembly
$ emcc seqtk.c 
    -o seqtk.js 
    -O2 
    -lm 
    -s USE_ZLIB=1 
    -s FORCE_FILESYSTEM=1

рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди:

рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, Emscripten рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .wasm рдФрд░ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ WebAssemby рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

USE_ZLIB рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ zlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдиреЗ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред

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

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ seqtk рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддреБрд▓рдирд╛ рд╕рдВрдХрд▓рд┐рдд WebAssembly рдореЙрдбреНрдпреВрд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

# On the command line
$ ./seqtk fqchk data.fastq
 
# In the browser console
> Module.callMain(["fqchk", "data.fastq"])

рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП seqtk рдХреЛ рдлрд┐рд░ рд╕реЗ рди рд▓рд┐рдЦрдирд╛ рдкрдбрд╝реЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдЦрдВрдб рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ FS рдореЗрдВ data.fastq рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ main() seqtk рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ:

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

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

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

WebAssembly рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

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

рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдиреМ рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рд╣реБрдИред

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рдпрд╣ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд╕рд░ рднреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ QC рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ seqtk рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо JS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 13 рдЧреБрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рдЗрд╕реЗ рдХреЗрд╡рд▓ printf() рдХрдорд╛рдВрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░, fastq.bio рд╡рд┐рднрд┐рдиреНрди рд╕реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рджреЛ рдмрд╛рд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдЬрд╛рдд рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрддреНрдкрд╛рджрдХрддрд╛ 20 рдЧреБрдирд╛ рдмрдврд╝ рдЧрдИред

рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

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

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

рд╕реНрд░реЛрдд: www.habr.com

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрд╡рд░ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ ЁЯФе рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛, рд╡реАрдкреАрдПрд╕ рдФрд░ рд╡реАрдбреАрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ | ProHoster