ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

prehistory

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

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

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

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

рддрд╕реЗрдЪ, рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреБрдореНрд╣реА рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ 0 рдмрд╛рдЗрдЯреНрд╕ рдЖрдгрд┐ рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЕрд▓реНрдЧреЛрд░рд┐рджрдо (рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп) рд╡рд╛рдкрд░рдгрд╛рд░реЗ рд╡реНрд╣рд╛рдпрд░рд╕ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╡рд░ рджреЗрдЦреАрд▓ рдкрд░рд┐рдгрд╛рдо рдХрд░рддрд╛рдд.
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)

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

Wilds City, рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдорджрдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдореНрд╣рдгреВрдирдЪ рд╣рд╛ рд▓реЗрдЦ рд▓рд┐рд╣рд┐рд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ.

рдореБрджреНрджреНрдпрд╛рд╡рд░ рдпрд╛

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 рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рддреЗ рдЕрдзрд┐рдХ рд╡рд╛рдЪрдиреАрдп рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЗрдВрдЯ рдЖрдгрд┐ рдбреЗрдЯрд╛рдЯрд╛рдЗрдо рд╕рд╛рд░рдЦреНрдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд▓реЗрдЦ рдлрдХреНрдд рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрд▓, рдкрд░рдВрддреБ рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдЖрдореНрд╣реА рдЗрддрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪрд╛ рджреЗрдЦреАрд▓ рд╕рдВрджрд░реНрдн рдШреЗрдК, рдЬреЗ рдЗрддрд░ рд╕рдорд╛рди рдШрдЯрдирд╛рдВрдордзреНрдпреЗ рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд.

рд╕рдорд╕реНрдпрд╛ рез: DATETIME рдЖрдгрд┐ TEXT рдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╣ рдлреАрд▓реНрдбрдордзреНрдпреЗ NULL рдореВрд▓реНрдпреЗ рд╣реЛрддреА, рдЖрдгрд┐ рддреА рдлрдХреНрдд рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╡рдЧрд│рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд, рдпрд╛рдореБрд│реЗ, рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ. рдирд╡реАрди рд╕реНрддрдВрднрд╛рдВрдордзреНрдпреЗ, рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛрддреЗ рдЖрдгрд┐ innodb_flush_log_at_trx_commit = 0 рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧрдореБрд│реЗ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪрд╛ рдХрд╛рд╣реА рднрд╛рдЧ рдЧрдорд╛рд╡рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рддреНрдпрд╛рдореБрд│реЗ рд░рдЪрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЗрд│ рдЦрд░реНрдЪ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓.

рд╕рдорд╕реНрдпрд╛ рез: рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА DELETE рджреНрд╡рд╛рд░реЗ рд╣рдЯрд╡рд▓реЗрд▓реНрдпрд╛ рдкрдВрдХреНрддреА рд╕рд░реНрд╡ ibd рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЕрд╕рддреАрд▓, рдкрд░рдВрддреБ ALTER TABLE рд╕рд╣ рддреНрдпрд╛рдВрдЪреА рд░рдЪрдирд╛ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА. рдкрд░рд┐рдгрд╛рдореА, рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓реВ рд╢рдХрддреЗ. рддреБрдореНрд╣реА рдЕрдиреЗрдХрджрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдЯреЗрдмрд▓ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢реА рд╕рдорд╕реНрдпрд╛ рдпреЗрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд╛рд╣реА.

рд▓рдХреНрд╖ рджреНрдпрд╛, DBMS рдЖрд╡реГрддреНрддреА рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рддреЗ рдЖрдгрд┐ рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдЗрддрд░ рдкреНрд░рдореБрдЦ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, mariadb 10.1.24 рдЪреА рд╡рд┐рдВрдбреЛрдЬ рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рд▓реА рдЧреЗрд▓реА. рддрд╕реЗрдЪ, рдЬрд░реА mariadb рдордзреНрдпреЗ рддреБрдореНрд╣реА InnoDB рдЯреЗрдмрд▓рд╕рд╣ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд▓рд╛рдд рддрд░реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЗ рдЖрд╣реЗрдд рдПрдХреНрд╕рдЯреНрд░рд╛рдбреАрдмреА, рдЬреЗ InnoDB mysql рд╕рд╣ рдкрджреНрдзрддреАрдЪреА рд▓рд╛рдЧреВрддрд╛ рд╡рдЧрд│рддреЗ.

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

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

рдЕрдиреЗрдХ ibd рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдвреАрд▓ рдЧреЛрд╖реНрдЯреА рдорд┐рд│реВ рд╢рдХрддрд╛рдд:

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

рд╢рд┐рд╡рд╛рдп, рдЬрд░ рддреБрдореНрд╣реА рдлрд╛рдЗрд▓рд▓рд╛ рдпрд╛ рдХреАрд╡рд░реНрдбрджреНрд╡рд╛рд░реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЗрд▓реЗ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд╣реБрддрд╛рдВрд╢ рдбреЗрдЯрд╛рдЪреЗ рдмреНрд▓реЙрдХреНрд╕ рдорд┐рд│рддреАрд▓. рдЖрдореНрд╣реА infimum рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░реВ.

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

рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдирд┐рд░реАрдХреНрд╖рдг: рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрд╕рд╛рдареА, рдЗрдиреНрдлрд┐рдордо рдЖрдгрд┐ рд╕рд░реНрд╡реЛрдЪреНрдЪ рджрд░рдореНрдпрд╛рди рдмреНрд▓реЙрдХрдордзреАрд▓ рдкрдВрдХреНрддреАрдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЖрд╣реЗ.

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ - рдкрд╣рд┐рд▓реНрдпрд╛ рдкрдВрдХреНрддреАрд╕рд╣ рдЪрд╛рдЪрдгреА рд╕рд╛рд░рдгреА

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ - 2 рдкрдВрдХреНрддреАрд╕рд╣ рдЪрд╛рдЪрдгреА рд╕рд╛рд░рдгреА

рдкрдВрдХреНрддреА рдЕреЕрд░реЗ рд╕рд╛рд░рдгреА[0] рд╡рдЧрд│рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рддреЗ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░, рдорд▓рд╛ рдЕрдЬреВрдирд╣реА рд░реЙ рдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА. рдмрд╣реБрдзрд╛, рд╣рд╛ рдмреНрд▓реЙрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдгрд┐ рдХреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.
рд╕рд╛рд░рдгреА[1] рдиреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрди рдЖрдгрд┐ рдЕрдВрдХреАрдп рдЕреЕрд░реЗрдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХрд░реВрди, рдЖрдкрдг рдЖрдзреАрдЪ рдХрд╛рд╣реА рдирдореБрдиреЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддрд╛, рдореНрд╣рдгрдЬреЗ:

ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп XtraDB рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ

рд╣реА рдЗрдВрдЯ рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╕рд╛рдард╡рд▓реЗрд▓реА рдЕрд╕рддрд╛рдд. рдкрд╣рд┐рд▓рд╛ рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрд┐рдВрд╡рд╛ рдЛрдг рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╕рд░реНрд╡ рд╕рдВрдЦреНрдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЖрд╣реЗрдд. рдЙрд░реНрд╡рд░рд┐рдд 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

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, 128, 0, 0, 1 = 1, рдХрд┐рдВрд╡рд╛ 128, 0, 75, 108 = 19308.
рдЯреЗрдмрд▓рдордзреНрдпреЗ рд╕реНрд╡рдпрдВ-рд╡рд╛рдвреАрд╕рд╣ рдкреНрд░рд╛рдердорд┐рдХ рдХреА рд╣реЛрддреА рдЖрдгрд┐ рддреА рдпреЗрдереЗ рджреЗрдЦреАрд▓ рдЖрдврд│реВ рд╢рдХрддреЗ

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

рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рдЬрд░ рддреБрдореНрд╣реА рдЬрд╛рд╕реНрдд рд╡реЗрд│ рджрд┐рд▓рд╛ рддрд░ рд╣рд╛ рдЧреИрд░рд╕рдордЬ рджреБрд░реБрд╕реНрдд рдХрд░рддрд╛ рдпреЗрдИрд▓.
рдкреБрдвреЗ, рдПрдХ рдлрдВрдХреНрд╢рди рдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреВрди рдбреЗрдЯрдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд│рд╡рддреЗ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛