рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдХреЛ рдЗрддрд┐рд╣рд╛рд╕: рд╣рд╛рдореАрд▓реЗ Go рдорд╛ рдХрд╕рд░реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗрд╡рд╛ рдмрдирд╛рдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдпреМрдВ

рд╣рд╛рд▓, рд╕рдВрд╕рд╛рд░рдорд╛ рд▓рдЧрднрдЧ рд╣рд░реЗрдХ рдХрдореНрдкрдиреАрд▓реЗ рд╡реЗрдм рд╕реНрд░реЛрддрдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рддрдереНрдпрд╛рдЩреНрдХ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫред рдкреНрд░реЗрд░рдгрд╛ рд╕реНрдкрд╖реНрдЯ рдЫ - рдХрдореНрдкрдиреАрд╣рд░реВ рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреНрдЫрдиреН рдХрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЙрддреНрдкрд╛рджрди/рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд░ рдЙрдиреАрд╣рд░реВрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЕрдЭ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрди рдЪрд╛рд╣рдиреНрдЫрдиреНред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдмрдЬрд╛рд░рдорд╛ рдзреЗрд░реИ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН - рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ рдЧреНрд░рд╛рдлрдХреЛ рд░реВрдкрдорд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдмрд╛рдЯ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Google рд╡рд┐рд╢реНрд▓реЗрд╖рдг) рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддрд╣рд░реВрдмрд╛рдЯ рдбреЗрдЯрд╛ рд╕рдЩреНрдХрд▓рди рд░ рдЬрдореНрдорд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЦрдгреНрдб).

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

рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдХреЛ рдЗрддрд┐рд╣рд╛рд╕: рд╣рд╛рдореАрд▓реЗ Go рдорд╛ рдХрд╕рд░реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗрд╡рд╛ рдмрдирд╛рдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдпреМрдВ

рд╣рд╛рдореАрд▓реЗ рдХрд┐рди рдЖрдлреНрдиреИ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫ?

рдпреЛ рдирдмреНрдмреЗрдХреЛ рджрд╢рдХ рдерд┐рдпреЛ, рд╣рд╛рдореА рд╕рдХреЗрд╕рдореНрдо рдмрд╛рдБрдЪреНрдпреМрдВред 2019, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдо API рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдпреМрдВ kSense, рдЬрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддрд╣рд░реВ (рдлреЗрд╕рдмреБрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрдирд╣рд░реВ, рд╕реНрдЯреНрд░рд╛рдЗрдк, рд╕реЗрд▓реНрд╕рдлреЛрд░реНрд╕, рдЧреБрдЧрд▓ рдкреНрд▓реЗ, рдЧреБрдЧрд▓ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдЗрддреНрдпрд╛рджрд┐) рдмрд╛рдЯ рдердк рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиреЗ рдЗрддреНрдпрд╛рджрд┐рдХрд╛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рдЬрдореНрдорд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛред рд╣рд╛рдореАрд▓реЗ рджреЗрдЦреЗрдХрд╛ рдЫреМрдВ рдХрд┐ рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдбреЗрдЯрд╛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЧреБрдЧрд▓ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ (рдпрд╕рдкрдЫрд┐ GA рднрдирд┐рдиреНрдЫ)ред рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдХреБрд░рд╛ рдЧрд░реНрдпреМрдВ рд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдЙрдиреАрд╣рд░реВрдХреЛ рдЙрддреНрдкрд╛рджрди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЬреБрди рдЙрдиреАрд╣рд░реВрд▓реЗ GA рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫрдиреН, рддрд░ Google рдирдореВрдирд╛ рдбреЗрдЯрд╛ рд░ рдзреЗрд░реИрдХрд╛ рд▓рд╛рдЧрд┐ GA рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рдорд╛рдирдХ рд╣реЛрдЗрдиред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░рд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдкрд░реНрдпрд╛рдкреНрдд рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реЗрдХрд╛ рдерд┐рдпреМрдВ рд░ рдорд╣рд╕реБрд╕ рдЧрд░реНтАНрдпреМрдВ рдХрд┐ рдзреЗрд░реИрд▓реЗ рд╕реЗрдЧрдореЗрдиреНрдЯ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХрд╛ рдерд┐рдП (рдЬреБрди, рд╡реИрд╕реЗ, рдХреЗрд╣реА рджрд┐рди рдЕрдШрд┐ рдорд╛рддреНрд░ рдерд┐рдпреЛред $ 3.2 рдмрд┐рд▓рд┐рдпрди рдХреЛ рд▓рд╛рдЧреА рдмреЗрдЪреЗрдХреЛ рдЫ).

рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдирдорд╛ рдЦрдгреНрдб рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдбреЗрдЯрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд╛рдЯрд╛рдмреЗрд╕ (рдЬрд╕реНрддреИ Postgres) рдорд╛ рд▓реЛрдб рдЧрд░рд┐рдпреЛред рддрд░ рдЦрдгреНрдбрдХреЛ рдкрдирд┐ рдпрд╕рдХреЛ рдорд╛рдЗрдирд╕ рдЫ - рдореВрд▓реНрдпред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рд╡реЗрдм рд╕реНрд░реЛрддрдорд╛ 90,000 MTU (рдорд╛рд╕рд┐рдХ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ) рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдХреНрдпрд╛рд╕рд┐рдпрд░рд▓рд╛рдИ рдкреНрд░рддрд┐ рдорд╣рд┐рдирд╛ ~ $ 1,000 рддрд┐рд░реНрдиреБ рдкрд░реНрдЫред рддреНрдпрд╣рд╛рдБ рддреЗрд╕реНрд░реЛ рд╕рдорд╕реНрдпрд╛ рдкрдирд┐ рдерд┐рдпреЛ - рдХреЗрд╣рд┐ рдмреНрд░рд╛рдЙрдЬрд░ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ (рдЬрд╕реНрддреИ AdBlock) рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╣рд░реВрдХреЛ рд╕рдЩреНрдХрд▓рди рдЕрд╡рд░реБрджреНрдз рдЧрд░реНрдпреЛред рдмреНрд░рд╛рдЙрдЬрд░рдмрд╛рдЯ http рдЕрдиреБрд░реЛрдзрд╣рд░реВ GA рд░ рдЦрдгреНрдб рдбреЛрдореЗрдирд╣рд░реВрдорд╛ рдкрдард╛рдЗрдпреЛред рд╣рд╛рдореНрд░рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдХреЛ рдЗрдЪреНрдЫрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд╣рд╛рдореАрд▓реЗ рдПрдХ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВ рдЬрд╕рд▓реЗ рдбреЗрдЯрд╛рдХреЛ рдкреВрд░реНрдг рд╕реЗрдЯ (рдирдореВрдирд╛ рдмрд┐рдирд╛) рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ, рдирд┐:рд╢реБрд▓реНрдХ рд░ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред

рд╕реЗрд╡рд╛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ

рд╕реЗрд╡рд╛рд▓реЗ рддреАрди рднрд╛рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ: рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд┐рдХреНрд╕реЗрд▓ (рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореАрд▓реЗ рдкрдЫрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯрдорд╛ рдкреБрди: рд▓реЗрдЦреНрдпреМрдВ), GO рднрд╛рд╖рд╛рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рд╕рд░реНрднрд░ рднрд╛рдЧ, рд░ рдпрд╕рд▓рд╛рдИ рдЗрди-рд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд░реВрдкрдорд╛ Redshift рд░ BigQuery рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдерд┐рдпреЛ (рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ Postgres рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреЗред рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рд░ рд╕реНрдиреЛрдлреНрд▓реЗрдХ)ред

рдШрдЯрдирд╛рд╣рд░реВ GA рд░ рдЦрдгреНрдбрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░рд┐рдпреЛред рд╣рд╛рдореНрд░реЛ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдорд╛ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рд╡реЗрдм рд╕реНрд░реЛрддрдмрд╛рдЯ рд╕рдмреИ рдШрдЯрдирд╛рд╣рд░реВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рдпреЛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫред рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд┐рдХреНрд╕реЗрд▓рд▓реЗ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдШрдЯрдирд╛рдХреЛ рдирдХреНрдХрд▓ рдЧрд░реНрдиреЗ рдирдпрд╛рдБрд╕рдБрдЧ рдореВрд▓ GA рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдзрд┐рд▓рд╛рдИ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрдпреЛред

//'ga' - ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╨╛╨╡ ╨╜╨░╨╖╨▓╨░╨╜╨╕╨╡ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╨╛╨╣ Google Analytics
if (window.ga) {
    ga(tracker => {
        var originalSendHitTask = tracker.get('sendHitTask');
        tracker.set('sendHitTask', (model) => {
            var payLoad = model.get('hitPayload');
            //╨╛╤В╨┐╤А╨░╨▓╨║╨░ ╨╛╤А╨╕╨│╨╕╨╜╨░╨╗╤М╨╜╨╛╨│╨╛ ╤Б╨╛╨▒╤Л╤В╨╕╤П ╨▓ GA
            originalSendHitTask(model);
            let jsonPayload = this.parseQuery(payLoad);
            //╨╛╤В╨┐╤А╨░╨▓╨║╨░ ╤Б╨╛╨▒╤Л╤В╨╕╤П ╨▓ ╨╜╨░╤И ╤Б╨╡╤А╨▓╨╕╤Б
            this.send3p('ga', jsonPayload);
        });
    });
}

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


//'analytics' - ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╨╛╨╡ ╨╜╨░╨╖╨▓╨░╨╜╨╕╨╡ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╨╛╨╣ Segment
if (window.analytics) {
    if (window.analytics.addSourceMiddleware) {
        window.analytics.addSourceMiddleware(chain => {
            try {
		//╨┤╤Г╨▒╨╗╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╨╛╨▒╤Л╤В╨╕╤П ╨▓ ╨╜╨░╤И ╤Б╨╡╤А╨▓╨╕╤Б
                this.send3p('ajs', chain.payload);
            } catch (e) {
                LOG.warn('Failed to send an event', e)
            }
	    //╨╛╤В╨┐╤А╨░╨▓╨║╨░ ╨╛╤А╨╕╨│╨╕╨╜╨░╨╗╤М╨╜╨╛╨│╨╛ ╤Б╨╛╨▒╤Л╤В╨╕╤П ╨▓ Segment
            chain.next(chain.payload);
        });
    } else {
        LOG.warn("Invalid interceptor state. Analytics js initialized, but not completely");
    }
} else {
    LOG.warn('Analytics.js listener is not set.');
}

рдШрдЯрдирд╛рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓реЗ рдордирдорд╛рдиреА json рдкрдард╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛ рдердкреНрдпреМрдВ:


//╨Ю╤В╨┐╤А╨░╨▓╨║╨░ ╤Б╨╛╨▒╤Л╤В╨╕╨╣ ╤Б ╨┐╤А╨╛╨╕╨╖╨▓╨╛╨╗╤М╨╜╤Л╨╝ json ╨╛╨▒╤К╨╡╨║╤В╨╛╨╝
eventN.track('product_page_view', {
    product_id: '1e48fb70-ef12-4ea9-ab10-fd0b910c49ce',
    product_price: 399.99,
    price_currency: 'USD'
    product_release_start: '2020-09-25T12:38:27.763000Z'
});

рдЕрд░реНрдХреЛ, рд╕рд░реНрднрд░ рд╕рд╛рдЗрдб рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реМрдВред рдмреНрдпрд╛рдХрдЗрдиреНрдбрд▓реЗ http рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдердк рдЬрд╛рдирдХрд╛рд░реА рднрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрд┐рдпреЛрдбрд╛рдЯрд╛ (рдзрдиреНрдпрд╡рд╛рдж рдЕрдзрд┐рдХрддрдо рджрд┐рдорд╛рдЧ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐) рд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рд╕реЗрд╡рд╛рд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдЙрди рдЪрд╛рд╣рдиреНрдереНрдпреМрдВ рддрд╛рдХрд┐ рдпрд╕рд▓рд╛рдИ рдиреНрдпреВрдирддрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдпреЛрд╕реНред рд╣рд╛рдореАрд▓реЗ рдЖрдЧрдорди рдШрдЯрдирд╛ json рдХреЛ рд╕рдВрд░рдЪрдирд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдбрд╛рдЯрд╛ рд╕реНрдХреАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдорд╛рдирд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫрдиреНред рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБрд╣рд░реВ рд╡рд┐рдШрдЯрд┐рдд рд╣реБрдиреНрдЫрдиреН рд░ рд╕рдорддрд▓ рд╕рдВрд░рдЪрдирд╛рдорд╛ рдШрдЯрд╛рдЗрдиреНрдЫ:

//╨▓╤Е╨╛╨┤╤П╤Й╨╕╨╣ json
{
  "field_1":  {
    "sub_field_1": "text1",
    "sub_field_2": 100
  },
  "field_2": "text2",
  "field_3": {
    "sub_field_1": {
      "sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
    }
  }
}

//╤А╨╡╨╖╤Г╨╗╤М╤В╨░╤В
{
  "field_1_sub_field_1":  "text1",
  "field_1_sub_field_2":  100,
  "field_2": "text2",
  "field_3_sub_field_1_sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
}

рдпрджреНрдпрдкрд┐, рдПрд░реЗрд╣рд░реВ рд╣рд╛рд▓ рдорд╛рддреНрд░ рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рд╕рдмреИ рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рдлрд┐рд▓реНрдб рдирд╛рдорд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореНрдпрд╛рдкрд┐рдЩ рдирд┐рдпрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рдЯрд╛рдЙрди рдкрдирд┐ рд╕рдореНрднрд╡ рдЫред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛, рдбреЗрдЯрд╛ рд╕реНрдХрд┐рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд░реНрдХреЛрдорд╛ рдХрд╛рд╕реНрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ json рдлрд┐рд▓реНрдбрдорд╛ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк (рдХреНрд╖реЗрддреНрд░_3_sub_field_1_sub_sub_field_1 рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ), рддреНрдпрд╕рдкрдЫрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рд╛рде рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдлрд┐рд▓реНрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдореНрдпрд╛рдкрд┐рдЩ рдирд┐рдпрдо рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЕрдиреНрдп рд╢рдмреНрджрд╣рд░реВрдорд╛, рдлрд┐рд▓реНрдбрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкрд╣рд┐рд▓реЗ json рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛рд╕реНрдЯрд┐рдЩ рдирд┐рдпрдо (рдпрджрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ) рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рд╣рд╛рдореАрд▓реЗ 4 рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реЗрдХрд╛ рдЫреМрдВ: STRING, FLOAT64, INT64 рд░ TIMESTAMPред рдореНрдпрд╛рдкрд┐рдЩ рд░ рдХрд╛рд╕реНрдЯрд┐рдЩ рдирд┐рдпрдорд╣рд░реВ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫрдиреН:

rules:
  - "/field_1/subfield_1 -> " #╨┐╤А╨░╨▓╨╕╨╗╨╛ ╤Г╨┤╨░╨╗╨╡╨╜╨╕╤П ╨┐╨╛╨╗╤П
  - "/field_2/subfield_1 -> /field_10/subfield_1" #╨┐╤А╨░╨▓╨╕╨╗╨╛ ╨┐╨╡╤А╨╡╨╜╨╛╤Б╨░ ╨┐╨╛╨╗╤П
  - "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #╨┐╤А╨░╨▓╨╕╨╗╨╛ ╨┐╨╡╤А╨╡╨╜╨╛╤Б╨░ ╨┐╨╛╨╗╤П ╨╕ ╨┐╤А╨╕╨▓╨╡╨┤╨╡╨╜╨╕╤П ╤В╨╕╨┐╨░

рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЛ рд▓рд╛рдЧреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:

  • json struct рд▓рд╛рдИ flat struct рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рдорд╛рдирд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдлрд┐рд▓реНрдбрд╣рд░реВрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджреИ
  • рдореНрдпрд╛рдкрд┐рдЩ рд░ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдЩ рдирд┐рдпрдорд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджреИ

рддреНрдпрд╕рдкрдЫрд┐ рдЖрдЧрдорди json рд╕рдВрд░рдЪрдирд╛рдмрд╛рдЯ:

{
    "product_id":  "1e48fb70-ef12-4ea9-ab10-fd0b910c49ce",
    "product_price": 399.99,
    "price_currency": "USD",
    "product_type": "supplies",
    "product_release_start": "2020-09-25T12:38:27.763000Z",
    "images": {
      "main": "picture1",
      "sub":  "picture2"
    }
}

рдбрд╛рдЯрд╛ рд╕реНрдХреАрдорд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреЗрдЫ:

"product_id" character varying,
"product_price" numeric (38,18),
"price_currency" character varying,
"product_type" character varying,
"product_release_start" timestamp,
"images_main" character varying,
"images_sub" character varying

рд╣рд╛рдореАрд▓реЗ рдпреЛ рдкрдирд┐ рд╕реЛрдЪреЗрдХрд╛ рдерд┐рдпреМрдВ рдХрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЕрдиреНрдп рдорд╛рдкрджрдгреНрдб рдЕрдиреБрд╕рд╛рд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╡рд┐рднрд╛рдЬрди рд╡рд╛ рд╡рд┐рднрд╛рдЬрди рдбрд╛рдЯрд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ рд░ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдЧрд░реНтАНрдпреЛред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ред рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рдШрдЯрдирд╛рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрди_рдкреНрд░рдХрд╛рд░ рд░ _рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдирд╛рдордХреЛ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдмрдЪрдд рдЧрд░рд┐рдиреЗрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрдкреВрд░реНрддрд┐_2020_10):

tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'

рдпрджреНрдпрдкрд┐, рдЖрдЧрдорди рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд╕рдВрд░рдЪрдирд╛ рд░рдирдЯрд╛рдЗрдордорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрди рд╕рдХреНрдЫред рд╣рд╛рдореАрд▓реЗ рдЕрд╡рд╕реНрдерд┐рдд рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛ рд░ рдЖрдЧрдорди рдШрдЯрдирд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд╛рдЧреВ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдпрджрд┐ рдлрд░рдХ рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ рднрдиреЗ, рддрд╛рд▓рд┐рдХрд╛рд▓рд╛рдИ рдирдпрд╛рдБ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд╕рдБрдЧ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдиреЗрдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдкреНрдпрд╛рдЪ SQL рдХреНрд╡реЗрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

#╨Я╤А╨╕╨╝╨╡╤А ╨┤╨╗╤П Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдХреЛ рдЗрддрд┐рд╣рд╛рд╕: рд╣рд╛рдореАрд▓реЗ Go рдорд╛ рдХрд╕рд░реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗрд╡рд╛ рдмрдирд╛рдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдпреМрдВ

рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдШрдЯрдирд╛рд╣рд░реВ рдХрд┐рди рд▓реЗрдЦреНрдиреБрдкрд░реНрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕рд┐рдзреИ рд▓реЗрдЦреНрдиреБ рд╣реБрдБрджреИрди? рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрд▓реЗ рд╕рдБрдзреИ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рддрд╣рд░реВрд╕рдБрдЧ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦрд╛рдЙрдБрджреИрди (postgres рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ)ред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд▓рдЧрд░рд▓реЗ рдлрд╛рдЗрд▓рдорд╛ рдЖрдЧрдорди рдШрдЯрдирд╛рд╣рд░реВ рд▓реЗрдЦреНрдЫ рд░ рдкрд╣рд┐рд▓реЗ рдиреИ рдЫреБрдЯреНрдЯреИ рдЧреЛрд░рд╛рдЙрдЯрд┐рди (рдереНрд░реЗрдб) рдорд╛ рдлрд╛рдЗрд▓ рд░рд┐рдбрд░рд▓реЗ рдлрд╛рдЗрд▓ рдкрдвреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛рдХреЛ рд░реВрдкрд╛рдиреНрддрд░рдг рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реБрдиреНрдЫред рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рдмрдиреНрдзрдХрд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХрд┐рдорд╛ рдЕрдк-рдЯреБ-рдбреЗрдЯ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реЗрдкрдЫрд┐, рдбрд╛рдЯрд╛ рдПрдХ рдмреНрдпрд╛рдЪрдорд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд▓реЗрдЦрд┐рдиреЗрдЫред рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕реАрдзреИ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкреНрдпреМрдВ, рддрд░ рд╣рд╛рдореА рдпреЛ рдореЛрдб рдзреЗрд░реИ рдирднрдПрдХрд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд░реВрдкрд╛рдиреНрддрд░рдгрд╣рд░реВред

рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд░ рднрд╛рд╡реА рдпреЛрдЬрдирд╛рд╣рд░реВ

рдХреЗрд╣рд┐ рдмрд┐рдиреНрджреБрдорд╛, рд╕реЗрд╡рд╛ рдПрдХ рдкреВрд░реНрдг рдЙрддреНрдкрд╛рджрди рдЬрд╕реНрддреИ рднрдпреЛ рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдорд╛ рд░рд╛рдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рд╣рд╛рд▓, Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake рд╕рдБрдЧ рдПрдХреАрдХрд░рдгрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕рдмреИ рдПрдХреАрдХрд░рдгрд╣рд░реВрд▓реЗ рдмреНрдпрд╛рдЪ рд░ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдЩ рдореЛрдбрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред API рдорд╛рд░реНрдлрдд рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред

рд╣рд╛рд▓рдХреЛ рдПрдХреАрдХрд░рдг рдпреЛрдЬрдирд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдХреЛ рдЗрддрд┐рд╣рд╛рд╕: рд╣рд╛рдореАрд▓реЗ Go рдорд╛ рдХрд╕рд░реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗрд╡рд╛ рдмрдирд╛рдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдпреМрдВ

рдпрджреНрдпрдкрд┐ рд╕реЗрд╡рд╛ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░), рд╣рд╛рдореАрд╕рдБрдЧ рдкрдирд┐ рдЫ рд╣реЛрд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рдбреЗрдЯрд╛ рдЧреЛрджрд╛рдо рд╕рдВрдЧ рдПрдХреАрдХрд░рдг рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдЗрдБрдХреЛ рдбреЛрдореЗрдирдорд╛ CNAME рдердкреНрдиреБрд╣реЛрд╕реН, рд░ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореНрд░реЛ рддрддреНрдХрд╛рд▓ рдпреЛрдЬрдирд╛рд╣рд░реВ рд╡реЗрдм рд╕реНрд░реЛрддрдмрд╛рдЯ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдорд╛рддреНрд░ рдирднрдИ рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдмрд╛рдЯ рдкрдирд┐ рдбреЗрдЯрд╛ рдЬрдореНрдорд╛ рдЧрд░реНрдиреЗ рд░ рддрдкрд╛рдИрдВрдХреЛ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рднрдгреНрдбрд╛рд░рдгрдорд╛ рдмрдЪрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкреНрдиреЗ рд╣реЛ!

тЖТ GitHub
тЖТ рджрд╕реНрддрд╛рд╡реЗрдЬ
тЖТ рд╕реБрд╕реНрдд

рдпрджрд┐ EventNative рд▓реЗ рддрдкрд╛рдИрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫ рднрдиреЗ рд╣рд╛рдореА рдЦреБрд╕реА рд╣реБрдиреЗрдЫреМрдВ!

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рддрдкрд╛рдИрдХреЛ рдХрдореНрдкрдиреАрдорд╛ рдХреБрди рддрдереНрдпрд╛рдЩреНрдХ рд╕рдЩреНрдХрд▓рди рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ

  • 48,0%рдЧреБрдЧрд▓ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ 12

  • 4,0%рдЦрдгреНрдб рез

  • 16,0%рдЕрдиреНрдп (рдХрдореЗрдиреНрдЯрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН) рек

  • 32,0%рддрдкрд╛рдИрдВрдХреЛ рд╕реЗрд╡рд╛8 рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛ

25 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред 6 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

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

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