ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

рдпреЛ рдпрд╕реНрддреЛ рднрдпреЛ рдХрд┐ рд╕рд░реНрднрд░рд▓рд╛рдИ ransomware рднрд╛рдЗрд░рд╕рд▓реЗ рдЖрдХреНрд░рдордг рдЧрд░реЗрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ "рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рджреБрд░реНрдШрдЯрдирд╛" рджреНрд╡рд╛рд░рд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ .ibd рдлрд╛рдЗрд▓рд╣рд░реВ (innodb рдЯреЗрдмрд▓рд╣рд░реВрдХреЛ рдХрдЪреНрдЪрд╛ рдбрд╛рдЯрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ) рдЕрдЫреВрддрд╛ рдЫреЛрдбреНрдпреЛ, рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ .fpm рдлрд╛рдЗрд▓рд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░рд┐рдпреЛ (ред рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓рд╣рд░реВ)ред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, .idb рд▓рд╛рдИ рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд░ рдЧрд╛рдЗрдбрд╣рд░реВ рдорд╛рд░реНрдлрдд рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛рдХреЛ рд╡рд┐рд╖рдпред рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддреНрдпрд╣рд╛рдБ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЫ рдмрдиреНрдиреБ;
  • рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВред рдкреНрд░рд╛рдпрдГ рдпреА рдареВрд▓рд╛ рдЯреЗрдмрд▓рд╣рд░реВ рд╣реБрдиреН, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ (рдореИрд▓реЗ рдмреБрдЭреЗрдХреЛ рдЫреБ) рдЖрдХреНрд░рдордгрдХрд╛рд░реАрд╣рд░реВрд╕рдБрдЧ рдкреВрд░реНрдг рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд RAM рдерд┐рдПрди;
  • рдареАрдХ рдЫ, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЬреБрди рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред

рдХреБрдиреИ рдкрдирд┐ рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрдорд╛ рд╡рд╛рдВрдЫрд┐рдд рдПрдиреНрдХреЛрдбрд┐рдЩ (рдореЗрд░реЛ рдХреЗрд╕рдорд╛ рдпреЛ UTF8 рд╣реЛ) рдЕрдиреНрддрд░реНрдЧрдд рдЦреЛрд▓реЗрд░ рдЯреЗрдмрд▓рд╣рд░реВ рдХреБрди рд╡рд┐рдХрд▓реНрдкрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдерд┐рдпреЛ рд░ рдкрд╛рда рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рдЗрд▓ рд╣реЗрд░реНрджреИ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

рд╕рд╛рдереИ, рдлрд╛рдЗрд▓рдХреЛ рд╕реБрд░реБрдорд╛ рддрдкрд╛рдИрд▓реЗ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ реж рдмрд╛рдЗрдЯрд╣рд░реВ рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рдмреНрд▓рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрд╛рдЗрд░рд╕рд╣рд░реВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рдЕрд╕рд░ рдЧрд░реНрдЫред
ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

рдореЗрд░реЛ рдорд╛рдорд▓рд╛рдорд╛, рдЖрдХреНрд░рдордгрдХрд╛рд░реАрд╣рд░реВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╛рдЗрд▓рдХреЛ рдЕрдиреНрддреНрдпрдорд╛ 4-рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдЩ (1, 0, 0, 0) рдЫреЛрдбреЗ, рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдпреЛред рд╕рдЩреНрдХреНрд░рдорд┐рдд рдлрд╛рдЗрд▓рд╣рд░реВ рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рдкреНрдд рдерд┐рдпреЛ:

def opened(path):
    files = os.listdir(path)
    for f in files:
        if os.path.isfile(path + f):
            yield path + f

for full_path in opened("C:somepath"):
    file = open(full_path, "rb")
    last_string = ""
    for line in file:
        last_string = line
        file.close()
    if (last_string[len(last_string) -4:len(last_string)]) != (1, 0, 0, 0):
        print(full_path)

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

рд╡рд╛рдЗрд▓реНрдбреНрд╕ рд╕рд┐рдЯреА, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреЗрди, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд▓реЗрдЦ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред

рдмрд┐рдиреНрджреБрдорд╛ рдкреБрдЧреНрдиреБрд╣реЛрд╕реН

рддреНрдпрд╣рд╛рдБ 3 рдорд╣рд┐рдирд╛ рдЕрдШрд┐рдХреЛ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдЫ рдЬреБрди рд╣рд╛рд▓рдХреЛ рдПрдХрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрди (рд╕рдореНрднрд╡рддрдГ рдПрдЙрдЯрд╛ рдХреНрд╖реЗрддреНрд░, рд░ рд╕рдореНрднрд╡рддрдГ рдердк)ред рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛:

CREATE TABLE `table_1` (
    `id` INT (11),
    `date` DATETIME ,
    `description` TEXT ,
    `id_point` INT (11),
    `id_user` INT (11),
    `date_start` DATETIME ,
    `date_finish` DATETIME ,
    `photo` INT (1),
    `id_client` INT (11),
    `status` INT (1),
    `lead__time` TIME ,
    `sendstatus` TINYINT (4)
); 

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдХрд╛рд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • id_point int(11);
  • id_user int(11);
  • date_start рдорд┐рддрд┐ рд╕рдордп;
  • date_finish рдорд┐рддрд┐ рд╕рдордпред

рдкреБрди:рдкреНрд░рд╛рдкреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐, .ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдердк рдкрдвреНрди рдпреЛрдЧреНрдп рдлрд╛рд░рдордорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реЗрд░ред рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдХреБрд░рд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдЬрд╕реНрддреИ int рд░ datatime рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд▓реЗрдЦрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдорд╛рддреНрд░ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫ, рддрд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рд╣рд╛рдореА рдЕрдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреЗрдЫреМрдВ, рдЬрд╕рд▓реЗ рдЕрдиреНрдп рд╕рдорд╛рди рдШрдЯрдирд╛рд╣рд░реВрдорд╛ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред

рд╕рдорд╕реНрдпрд╛ рез: DATETIME рд░ TEXT рдкреНрд░рдХрд╛рд░рдХрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ NULL рдорд╛рдирд╣рд░реВ рдерд┐рдП, рд░ рддрд┐рдиреАрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдорд╛рддреНрд░ рдЫрд╛рдбрд┐рдПрдХрд╛ рдЫрдиреН, рдпрд╕ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдореЗрд░реЛ рдорд╛рдорд▓рд╛рдорд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рд╕рдВрд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдерд┐рдПрдиред рдирдпрд╛рдБ рд╕реНрддрдореНрднрд╣рд░реВрдорд╛, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рд╢реВрдиреНрдп рдерд┐рдпреЛ, рд░ innodb_flush_log_at_trx_commit = 0 рд╕реЗрдЯрд┐рдЩрдХрд╛ тАЛтАЛрдХрд╛рд░рдг рд▓реЗрдирджреЗрдирдХреЛ рдЕрдВрд╢ рд╣рд░рд╛рдЙрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╕рдВрд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдердк рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред

рд╕рдорд╕реНрдпрд╛ рез: рдпреЛ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБрдкрд░реНрдЫ рдХрд┐ DELETE рдорд╛рд░реНрдлрдд рдореЗрдЯрд╛рдЗрдПрдХрд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╕рдмреИ ibd рдлрд╛рдЗрд▓рдорд╛ рд╣реБрдиреЗрдЫрдиреН, рддрд░ ALTER TABLE рд╕рдБрдЧ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреЗрдЫреИрдиред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓рдХреЛ рд╕реБрд░реБрджреЗрдЦрд┐ рдпрд╕рдХреЛ рдЕрдиреНрддреНрдпрд╕рдореНрдо рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рд╛рдп: рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЯреЗрдмрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓реЗ рдпрд╕реНрддреЛ рд╕рдорд╕реНрдпрд╛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫреИрдиред

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН, DBMS рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫ, рд░ рдпреЛ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рдХрд╛рдо рдирдЧрд░реНрди рд╕рдХреНрдЫред рдореЗрд░реЛ рдХреЗрд╕рдорд╛, mariadb 10.1.24 рдХреЛ Windows рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд╕рд╛рдереИ, рдпрджреНрдпрдкрд┐ mariadb рдорд╛ рддрдкрд╛рдИрд▓реЗ InnoDB рдЯреЗрдмрд▓рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛рд╕реНрддрд╡рдорд╛ рддрд┐рдиреАрд╣рд░реВ рд╣реБрдиреН XtraDB, рдЬрд╕рд▓реЗ InnoDB mysql рд╕рдБрдЧ рд╡рд┐рдзрд┐рдХреЛ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛рд▓рд╛рдИ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрдиред

рдлрд╛рдЗрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

рдзреЗрд░реИ ibd рдлрд╛рдЗрд▓рд╣рд░реВ рд╣реЗрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

рдпрд╕рдмрд╛рд╣реЗрдХ, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдпреА рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╛рдпрдГ рдбрд╛рдЯрд╛рдХреЛ рдмреНрд▓рдХрд╣рд░реВ рдкрдирд┐ рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред рд╣рд╛рдореА рдЗрдиреНрдлрд┐рдордорд▓рд╛рдИ рднрд╛рдЬрдХрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

table = table.split("infimum".encode())

рдПрдХ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдЕрд╡рд▓реЛрдХрди: рдбреЗрдЯрд╛рдХреЛ рд╕рд╛рдиреЛ рдорд╛рддреНрд░рд╛рдХреЛ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, infimum рд░ supremum рдмреАрдЪ рдмреНрд▓рдХрдорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдПрдХ рд╕реВрдЪрдХ рдЫред

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ - рдкрд╣рд┐рд▓реЛ рдкрдЩреНрдХреНрддрд┐ рд╕рдВрдЧ рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ - 2 рдкрдЩреНрдХреНрддрд┐рд╣рд░реБ рд╕рдВрдЧ рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛

рдкрдЩреНрдХреНрддрд┐ рдПрд░реЗ рддрд╛рд▓рд┐рдХрд╛[0] рдЫреЛрдбреНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рд▓рд╛рдИ рд╣реЗрд░реЗ рдкрдЫрд┐, рдо рдЕрдЭреИ рдкрдирд┐ рдХрдЪреНрдЪрд╛ рддрд╛рд▓рд┐рдХрд╛ рдбрд╛рдЯрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЕрд╕рдорд░реНрде рдерд┐рдПред рд╕рдореНрднрд╡рддрдГ, рдпреЛ рдмреНрд▓рдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд░ рдХреБрдЮреНрдЬреАрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
рддрд╛рд▓рд┐рдХрд╛[1] рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реЗрд░ рд░ рдпрд╕рд▓рд╛рдИ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдПрд░реЗрдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрджреИ, рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреЗрд╣реА рдврд╛рдБрдЪрд╛рд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЕрд░реНрдерд╛рддреН:

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

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

def find_int(val: str):  # example '128, 1, 2, 3'
    val = [int(v) for v in  val.split(", ")]
    result_int = val[1]*256**2 + val[2]*256*1 + val[3]
    return result_int

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, резреирео, реж, реж, рез = рез, рд╡рд╛ резреирео, реж, реж, рез = рез.
рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╕реНрд╡рддрдГ рд╡реГрджреНрдзрд┐ рднрдПрдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдЮреНрдЬреА рдерд┐рдпреЛ, рд░ рдпреЛ рдпрд╣рд╛рдБ рдкрдирд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ

ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ

рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбреЗрдЯрд╛ рддреБрд▓рдирд╛ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдпреЛ рдкреНрд░рдХрдЯ рднрдпреЛ рдХрд┐ DATETIME рд╡рд╕реНрддреБ 5 рдмрд╛рдЗрдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рд░ 153 (рд╕рдореНрднрд╡рддрдГ рд╡рд╛рд░реНрд╖рд┐рдХ рдЕрдиреНрддрд░рд╛рд▓рд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ) рдмрд╛рдЯ рд╕реБрд░реБ рднрдпреЛред DATTIME рджрд╛рдпрд░рд╛ '1000-01-01' рджреЗрдЦрд┐ '9999-12-31' рд╕рдореНрдо рднрдПрдХреЛрд▓реЗ, рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдмрд╛рдЗрдЯрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдореЗрд░реЛ рдорд╛рдорд▓рд╛рдорд╛, рдбрд╛рдЯрд╛ 2016 рджреЗрдЦрд┐ 2019 рд╕рдореНрдордХреЛ рдЕрд╡рдзрд┐рдорд╛ рдЖрдЙрдБрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдорд╛рдиреНрдиреЗрдЫреМрдВред рддреНрдпреЛ 5 рдмрд╛рдЗрдЯ рдкрд░реНрдпрд╛рдкреНрдд рдЫред

рд╕реЗрдХреЗрдиреНрдб рдмрд┐рдирд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди, рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦрд┐рдПрдХрд╛ рдерд┐рдПред рд▓рд┐рдкрд┐:

day_ = lambda x: x % 64 // 2  # {x,x,X,x,x }

def hour_(x1, x2):  # {x,x,X1,X2,x}
    if x1 % 2 == 0:
        return x2 // 16
    elif x1 % 2 == 1:
        return x2 // 16 + 16
    else:
        raise ValueError

min_ = lambda x1, x2: (x1 % 16) * 4 + (x2 // 64)  # {x,x,x,X1,X2}

рд╡рд░реНрд╖ рд░ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реНрдп рд▓реЗрдЦреНрди рд╕рдореНрднрд╡ рдерд┐рдПрди, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред рд▓рд┐рдкрд┐:

ym_list = {'2016, 1': '153, 152, 64', '2016, 2': '153, 152, 128', 
           '2016, 3': '153, 152, 192', '2016, 4': '153, 153, 0',
           '2016, 5': '153, 153, 64', '2016, 6': '153, 153, 128', 
           '2016, 7': '153, 153, 192', '2016, 8': '153, 154, 0', 
           '2016, 9': '153, 154, 64', '2016, 10': '153, 154, 128', 
           '2016, 11': '153, 154, 192', '2016, 12': '153, 155, 0',
           '2017, 1': '153, 155, 128', '2017, 2': '153, 155, 192', 
           '2017, 3': '153, 156, 0', '2017, 4': '153, 156, 64',
           '2017, 5': '153, 156, 128', '2017, 6': '153, 156, 192',
           '2017, 7': '153, 157, 0', '2017, 8': '153, 157, 64',
           '2017, 9': '153, 157, 128', '2017, 10': '153, 157, 192', 
           '2017, 11': '153, 158, 0', '2017, 12': '153, 158, 64', 
           '2018, 1': '153, 158, 192', '2018, 2': '153, 159, 0',
           '2018, 3': '153, 159, 64', '2018, 4': '153, 159, 128', 
           '2018, 5': '153, 159, 192', '2018, 6': '153, 160, 0',
           '2018, 7': '153, 160, 64', '2018, 8': '153, 160, 128',
           '2018, 9': '153, 160, 192', '2018, 10': '153, 161, 0', 
           '2018, 11': '153, 161, 64', '2018, 12': '153, 161, 128',
           '2019, 1': '153, 162, 0', '2019, 2': '153, 162, 64', 
           '2019, 3': '153, 162, 128', '2019, 4': '153, 162, 192', 
           '2019, 5': '153, 163, 0', '2019, 6': '153, 163, 64',
           '2019, 7': '153, 163, 128', '2019, 8': '153, 163, 192',
           '2019, 9': '153, 164, 0', '2019, 10': '153, 164, 64', 
           '2019, 11': '153, 164, 128', '2019, 12': '153, 164, 192',
           '2020, 1': '153, 165, 64', '2020, 2': '153, 165, 128',
           '2020, 3': '153, 165, 192','2020, 4': '153, 166, 0', 
           '2020, 5': '153, 166, 64', '2020, 6': '153, 1, 128',
           '2020, 7': '153, 166, 192', '2020, 8': '153, 167, 0', 
           '2020, 9': '153, 167, 64','2020, 10': '153, 167, 128',
           '2020, 11': '153, 167, 192', '2020, 12': '153, 168, 0'}

def year_month(x1, x2):  # {x,X,X,x,x }

    for key, value in ym_list.items():
        key = [int(k) for k in key.replace("'", "").split(", ")]
        value = [int(v) for v in value.split(", ")]
        if x1 == value[1] and x2 // 64 == value[2] // 64:
            return key
    return 0, 0

рдо рдирд┐рд╢реНрдЪрд┐рдд рдЫреБ рдХрд┐ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдпреЛ рдЧрд▓рддрдлрд╣рдореА рд╕рдЪреНрдпрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред
рдЕрд░реНрдХреЛ, рд╕реНрдЯреНрд░рд┐рдЩрдмрд╛рдЯ datetime рд╡рд╕реНрддреБ рдлрд░реНрдХрд╛рдЙрдиреЗ рдкреНрд░рдХрд╛рд░реНрдпред рд▓рд┐рдкрд┐:

def find_data_time(val:str):
    val = [int(v) for v in val.split(", ")]
    day = day_(val[2])
    hour = hour_(val[2], val[3])
    minutes = min_(val[3], val[4])
    year, month = year_month(val[1], val[2])
    return datetime(year, month, day, hour, minutes)

int, int, datetime, datetime рдмрд╛рдЯ рдмрд╛рд░рдореНрдмрд╛рд░ рджреЛрд╣реЛрд░рд┐рдиреЗ рдорд╛рдирд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд ibd рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЗрдЯ-рджреНрд╡рд╛рд░рд╛-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ рдмрд┐рдирд╛ XtraDB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрджреИ, рдпреЛ рддрдкрд╛рдИрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдХреБрд░рд╛ рд╣реЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рдпрд╕рдмрд╛рд╣реЗрдХ, рдпрд╕реНрддреЛ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рддрд┐ рд░реЗрдЦрд╛ рджреБрдИ рдкрдЯрдХ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рдЫреИрдиред

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЯрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ:

fined = re.findall(r'128, d*, d*, d*, 128, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*', int_array)

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЦреЛрдЬреА рдЧрд░реНрджрд╛, рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ NULL рдорд╛рдирд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫреИрди, рддрд░ рдореЗрд░реЛ рдорд╛рдорд▓рд╛рдорд╛ рдпреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЫреИрдиред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд▓реВрдкрдорд╛ рдлреЗрд▓рд╛ рдкрд░реЗрдХреЛ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫреМрдВред рд▓рд┐рдкрд┐:

result = []
for val in fined:
    pre_result = []
    bd_int  = re.findall(r"128, d*, d*, d*", val)
    bd_date= re.findall(r"(153, 1[6,5,4,3]d, d*, d*, d*)", val)
    for it in bd_int:
        pre_result.append(find_int(bd_int[it]))
    for bd in bd_date:
        pre_result.append(find_data_time(bd))
    result.append(pre_result)

рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреЛ рд╕рдмреИ рд╣реЛ, рдирддрд┐рдЬрд╛ рдПрд░реНрд░реЗрдмрд╛рдЯ рдбрд╛рдЯрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдбрд╛рдЯрд╛ рд╣реЛред ###PSред###
рдо рдмреБрдЭреНрдЫреБ рдХрд┐ рдпреЛ рд╡рд┐рдзрд┐ рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫреИрди, рддрд░ рд▓реЗрдЦрдХреЛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рддрдкрд╛рдИрдХреЛ рд╕рдмреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рддрддреНрдХрд╛рд▓ рдХрд╛рд░реНрдп рдЧрд░реНрдиреБ рд╣реЛред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рднрдиреЗрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдЖрдлреИрдВ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рд╣реЛ рдорд╛рд░рд┐рдпрд╛рдбрдмрддрд░, рд╕реАрдорд┐рдд рд╕рдордпрдХрд╛ рдХрд╛рд░рдг рд╣рд╛рд▓рдХреЛ рд╡рд┐рдзрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рд╣реБрдиреЗ рджреЗрдЦрд┐рдиреНрдЫ ред

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

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

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