Fidonet рд╕рд╛рдЗрдЯ рдкрд░ Node.js: рд╣рдо рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде JAM рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдПрдХреЛрдорд╛рдЗрд▓ рдХреЗ рд╣реЗрдбрд░ рдкрдврд╝рддреЗ рд╣реИрдВ

рдЖрдЬ рдореЗрд░реЗ рдкрд╛рд╕ рдЪрд╛рдмрд┐рдпреЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ jParser рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж ( BMP рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jParser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ RReverser рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж), рдпрд╣ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ: рдПрдХ рд╡рд┐рд╖рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jParser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛ рдЬреЛ alekciy рдиреЗ рдкреВрдЫрд╛ рдерд╛, jParser рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред)

рджреВрд╕рд░реЗ, тЙИ рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ ( 26 рдирд╡рдВрдмрд░, 2011 ) ertaquo рдиреЗ рдкреВрдЫрд╛ рдХрд┐ рдореИрдВ рдлрд┐рдбреЛрдиреЗрдЯ рдореЗрдВ Node.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдирд╛рдо рдкрд╕рдВрдж рд╣реИ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЬрдм "рдиреЛрдб" рдпрд╛ "рдиреЛрдб" рд╢рдмреНрдж, рдЕрдЧрд░ рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рд░реВрд╕реА рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдлрд┐рдбреЛрдиреЗрдЯ рдиреЛрдб рдХрд╛ рдорддрд▓рдм рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗ рд╕рдХрд╛ред рдЕрдм рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдКрдВрдЧрд╛

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

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

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Fidonet рдХреЗ рдИ- рдореЗрд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╣реЗрдбрд░ JHR рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рд╣реЗрдбрд░ ( рдлрд┐рдХреНрд╕реНрдбрд╣реЗрдбрдЗрдиреНрдлреЛ рд╕реНрдЯреЗреНрд░рд╕реНрдЯ ) рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрджреЗрд╢ рд╣реЗрдбрд░ ( рдореИрд╕реЗрдЬрд╣реЗрдбрд░ ) рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ ( рдореЗрд╕реЗрдЬрдлреАрдбрд╣реЗрдбрд░ ) рдФрд░ рдПрдХ рдЪрд░ рдкреВрдВрдЫ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдХреНрд╖реЗрддреНрд░ ( рд╕рдмрдлрд┐рд▓реНрдбрдПрдХреНрд╕рдПрдХреНрд╕ ) рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдХреБрд▓ рд▓рдВрдмрд╛рдИред рдЬреЛ MessageFixedHeader рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ SubfieldLen рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред SubFieldXX рдлрд╝реАрд▓реНрдб рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд╣реЗрдбрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдкрд┐рдЫрд▓реЗ рдбреЗрдЯрд▓реЗрди рдирдВрдмрд░ рдореЗрдВ рджреА рдЧрдИ рд╣реИ ред (рдпрд╣ рдПрдХ рд╣реА рдирдмреНрдмреЗ рдХреЗ рджрд╢рдХ рдореЗрдВ рдкрд╛рд╕реНрдХрд▓ рдмреЛрд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ - рдЯрд░реНрдмреЛ-рдкрд╛рд╕реНрдХрд▓, рдпреВрд╕реАрдПрд╕рдбреА рдкрд╛рд╕реНрдХрд▓; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ, рд▓рдВрдмрд╛рдИ рдПрдХ рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЧрдИ рдереА, рдФрд░ рдЬреЗрдПрдПрдо рдореЗрдВ рдбреЗрдЯрд▓реЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреА рд╣реИ , рдЕрд░реНрдерд╛рддреН , рдпрд╣ рдмрддреНрддреАрд╕-рдмрд┐рдЯ рд╣реИред) )

рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдХрдо рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рдЬреЗрдПрдЪрдЖрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░, рдореИрд╕реЗрдЬрд╣реЗрдб рд╣реЗрдбрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдк-рд╕рдВрджреЗрд╢ "рдЕрдкрдбреЗрдЯрд┐рдВрдЧ рд╣реЗрдбрд░" рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдкрддреНрд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдпрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛ рд╣реЗрдбрд░ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ рд╣реЗрдбрд░ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрди рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рднрд╛рдЧреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдХреА рд╣реЗрдбрд┐рдВрдЧ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рдирд╣реАрдВ рдмрдврд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдШрдЯ рдЧрдИ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХрдИ рдлрд╝рд┐рдбреЛрдиреЗрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирдП рд╣реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рдмрдлрд╝реАрд▓реНрдб рд╡реИрд▓реНрдпреВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрдВрдбрд┐рд╡рд┐рдЬреБрдЕрд▓ рд╡реИрд▓реНрдпреВрдЬрд╝ )ред рдЗрд╕ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ MessageHeader рдХреЗ рдмреАрдЪ , рдкрд┐рдЫрд▓реЗ рдкрд┐рдЫрд▓реЗ SubFieldXX рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдпреБрдХреНрдд рдХрдЪрд░рд╛ рд╣реИ ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ MessageHeader рд╣реЗрдбрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓реЗ MessageHeader рд╣реЗрдбрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ , рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рддреАрди "JAM" ASCII рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╢рдХреНрдд рдмрд╛рдЗрдЯ рдХреЗ рдмрд╛рдж - рдпрд╣ рд╡рд╣ рд╕рд┐рдЧреНрдирд▓ рдЕрдиреБрдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде MessageFixedHeader рд╣реЗрдбрд░ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

Node.js рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛрдб, рдЬреЛ JHR рдлрд╝рд╛рдЗрд▓ рд╕реЗ RAM рдореЗрдВ рдЗрдХреЛ-рдореЗрд▓ рд╣реЗрдбрд░ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

var fs = require('fs'); var jParser = require('jParser'); var ulong = 'uint32'; var ushort = 'uint16'; var JAM = function(echotag){ if (!(this instanceof JAM)) return new JAM(echotag); this.echotag = echotag; // Buffers: this.JHR = null; /* this.JDT = null; this.JDX = null; this.JLR = null; */ } JAM.prototype.readJHR = function(callback){ // (err) if (this.JHR !== null) callback(null); fs.readFile(this.echotag+'.JHR', function (err, data) { if (err) callback(err); this.JHR = data; callback(null); }); } JAM.prototype.ReadHeaders = function(callback){ // err, struct this.readJHR(function(err){ if (err) callback(err); var thisJAM = this; var parser = new jParser(this.JHR, { 'reserved1000uchar': function(){ this.skip(1000); return true; }, 'JAM0' : ['string', 4], 'FixedHeaderInfoStruct': { 'Signature': 'JAM0', 'datecreated': ulong, 'modcounter': ulong, 'activemsgs': ulong, 'passwordcrc': ulong, 'basemsgnum': ulong, 'RESERVED': 'reserved1000uchar', }, 'SubField': { 'LoID': ushort, 'HiID': ushort, 'datlen': ulong, 'Buffer': ['string', function(){ return this.current.datlen }] /* 'type': function(){ switch( this.current.LoID ){ case 0: return 'OADDRESS'; break; case 1: return 'DADDRESS'; break; case 2: return 'SENDERNAME'; break; case 3: return 'RECEIVERNAME'; break; case 4: return 'MSGID'; break; case 5: return 'REPLYID'; break; case 6: return 'SUBJECT'; break; case 7: return 'PID'; break; case 8: return 'TRACE'; break; case 9: return 'ENCLOSEDFILE'; break; case 10: return 'ENCLOSEDFILEWALIAS'; break; case 11: return 'ENCLOSEDFREQ'; break; case 12: return 'ENCLOSEDFILEWCARD'; break; case 13: return 'ENCLOSEDINDIRECTFILE'; break; case 1000: return 'EMBINDAT'; break; case 2000: return 'FTSKLUDGE'; break; case 2001: return 'SEENBY2D'; break; case 2002: return 'PATH2D'; break; case 2003: return 'FLAGS'; break; case 2004: return 'TZUTCINFO'; break; default: return 'UNKNOWN'; break; } } */ }, 'MessageHeader': { 'Signature': 'JAM0', 'Revision': ushort, 'ReservedWord': ushort, 'SubfieldLen': ulong, 'TimesRead': ulong, 'MSGIDcrc': ulong, 'REPLYcrc': ulong, 'ReplyTo': ulong, 'Reply1st': ulong, 'Replynext': ulong, 'DateWritten': ulong, 'DateReceived': ulong, 'DateProcessed': ulong, 'MessageNumber': ulong, 'Attribute': ulong, 'Attribute2': ulong, 'Offset': ulong, 'TxtLen': ulong, 'PasswordCRC': ulong, 'Cost': ulong, 'Subfields': ['string', function(){ return this.current.SubfieldLen; } ], /* 'Subfields': function(){ var final = this.tell() + this.current.SubfieldLen; var sfArray = []; while (this.tell() < final) { sfArray.push( this.parse('SubField') ); } return sfArray; }, */ 'AfterSubfields': function(){ var initial = this.tell(); var bytesLeft = thisJAM.JHR.length - initial - 4; var seekJump = 0; var sigFound = false; var raw = this; if (bytesLeft <= 0) return 0; do { this.seek(initial + seekJump, function(){ var moveSIG = raw.parse('JAM0'); if (moveSIG === 'JAM\0') { sigFound = true; /* if (seekJump > 0){ console.log( 'initial = ' + initial + ', seekJump = ' + seekJump + ', moveSIG = ' + moveSIG ); } */ } }); seekJump++; } while (!sigFound && (seekJump < bytesLeft) ); this.skip(seekJump-1); return seekJump-1; } }, 'JHR': { 'FixedHeader': 'FixedHeaderInfoStruct', 'MessageHeaders': function(){ var mhArray = []; while (this.tell() < thisJAM.JHR.length - 69) { mhArray.push( this.parse('MessageHeader') ); } return mhArray; } } }); callback(null, parser.parse('JHR')); }); } module.exports = JAM; 

рдпрд╣ рд╕реНрдХреЗрдЪ рдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб JAM рдСрдмреНрдЬреЗрдХреНрдЯ ( JHR рдлрд╝реАрд▓реНрдб рдореЗрдВ ) рдХреЗ рдЕрдВрджрд░ JHR рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ, рд░реАрдбрд╣реЗрдбрд░реНрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрдврд╝реЗрдЧреА ред рдХреЗрд╡рд▓ FixedHeaderInfoStruct рд╣реЗрдбрд░ред JAM рдкреНрд░рд╛рд░реВрдк (JDT, рдФрд░ JDX, рдФрд░ JLR) рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддреАрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рднреА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рддреА рд╣реИред (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдХреЛ рдХреИрд╢ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреА рдЪрд╛рд╣рд┐рдП - рд╕реНрдЯреЗрдЯ рдХрд░реЗрдВ () , рдпрд╛ рдирд╣реАрдВ рд╡реЙрдЪ рдлрд╝рд╛рдЗрд▓ () рдмрд┐рд▓реНрдХреБрд▓ - рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╕реМрджреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред)

JAM рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ulong ) jParser (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, " 'ulong': 'uint32' ") рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ , рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, " var ulong = 'uv32' "), рдЬрд┐рдирдореЗрдВ рд╕реЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдгред рдпрд╣ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╣реИ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ V8 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХрд╛ рдХреЛрдб jParser рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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

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

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

JHR рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ MessageHeaders рдлрд╝реАрд▓реНрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ 69 рдирдВрдмрд░ "рдЬрд╛рджреВ" рд╣реИ; рдЗрд╕рдХрд╛ рд▓рдХреНрд╖реНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХрдЪрд░рд╛ рдбреЗрдЯрд╛ рдХреА рднреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЧрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреА:

 var JAM = require('../'); var util = require('util'); console.log( new Date().toLocaleString() ); var blog = JAM('blog-MtW'); blog.ReadHeaders(function(err,data){ if (err) throw err; //console.log( util.inspect(data, false, Infinity, false) ); console.log( new Date().toLocaleString() ); }); 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╣ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд╛рда index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ ; рдЪреВрдВрдХрд┐ рдпрд╣ рдирд╛рдо Node.js рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИ , рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

Blog-MtW.jhr рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдореЗрдВ рдореЗрд░реЗ рдлрд╝рд┐рдбреЛрдиреЗрдЯ рдмреНрд▓реЙрдЧ рдмреНрд▓реЙрдЧ рдЗрдХреЛ ( Ru.Blog.Mithgol ) рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдорд╛рд░реНрдЪ 2007 рд╕реЗ рдЬрдорд╛ рд╣реБрдИ рд╣реИрдВред

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

рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рд╕рдореНрдореЗрд▓рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд┐рдбреЛрдиреЗрдЯ рд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рдЧреВрдВрдЬ рд╕рдореНрдореЗрд▓рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдИ-рдореЗрд▓ рд╣реЗрдбрд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕рдордп рдХрдИ рдорд┐рдирдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

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

рдпрд╣ рд╕рдВрджреЗрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирд┐рдВрджрдиреАрдп рд╣реИ рдХрд┐ рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЧреЛрд▓реНрдбреЗрдб рдиреЗ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдлрд╛рдЗрд▓ рдирд╣реАрдВ рдкрдврд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣реЗрдбрд░ рд╕рдВрд░рдЪрдирд╛ FixedHeaderInfoStruct (рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдЗрдХреЛ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдФрд░ рдЕрдзрд┐рдХ рдЧреЛрд▓реНрдбреЗрдб рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) - рд╕рдЪреНрдЪрд╛рдИ , рдореИрдВ рдЗрд╕ рд╕рдВрджреЗрд╣ рдХреА рди рддреЛ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рди рд╣реА рдЗрдирдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕реАрд╡реАрдПрд╕ рдЧреЛрд▓реНрдбреЗрдб + рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХреЛрдб (JAM рд╣реЗрдбрд░реНрд╕ рдХрд╛ рд░реАрдбрд░ ) рдПрдХ рдореБрдлреНрдд рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬреАрдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред

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


All Articles