рдХреИрдкреНрдЪрд╛, рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛: рд╣рдо рдХреЛрдб рдХреЗ рддреАрд╕ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ

   рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд▓реЗрдЦ habr.com/en/post/464337 рдкрд░ рдХреИрд╕реЗ рдЖрдпрд╛ , рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдбреВрдм рдЧрдпрд╛ рдФрд░ рдЖрдЦрд┐рд░реА рджрд┐рди рддрдХ рдЖрд░рд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ред рдХрдИ рдмрд╛рд░ рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдПрдХ рджреЛ рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖ: рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рддрд╛ рд╣реВрдВред
рд╣реИрдкреНрдкреА рдХреИрдкреНрдЪрд╛


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

   рдХреИрдкреНрдЪрд╛ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдПрдВ рджреЛ рдЖрдХрд╛рд░ рдХреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ 1 рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдЕрдВрддрд░ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рддреАрди рд╕реЗ рдЪрд╛рд░ рдЪреЗрд╣рд░реЗ рд╣реИрдВред рд╕рднреА рдХреИрдкреНрдЪрд╛ рдореЗрдВ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреА рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рд╕рдорд╛рди рд╣реИред рдпрд╣ рд╕рдм рд╡рд┐рд╡рд┐рдзрддрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдо рдореБрдЦреМрдЯрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЖрдХреГрддрд┐ рдХреА рдкрд╣рдЪрд╛рди рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреИрдкреНрдЪрд╛ рд╕реЗ рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХрдИ (рдкрд╣рд▓реЗ - 5 рдкрд░, рдлрд┐рд░ рдПрдХ рдФрд░ 1-2 рдЬреЛрдбрд╝рд╛; "4" рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛)ред рдкреЗрдВрдЯ.рдиреЗрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рд░рдЦрд╛ рдФрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рдорд┐рд▓рд╛, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рдХреЗ рд╕рднреА рдЪреЗрд╣рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИред

   рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдЦреЛрдЬ рдХреА, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рд▓реЗрдХрд┐рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛
рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде
   , тАФ ┬л1┬╗, ┬л2┬╗ .. ┬л9┬╗. , , ┬л4┬╗, ┬л4┬╗, ┬л1┬╗. , -, ┬л123456789┬╗ ┬л423156789┬╗ -, ┬л4┬╗ , ┬л1┬╗.

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

   

   рдлрд┐рд░ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рдХрд╣рд╛рдВ рдорд┐рд▓реЗрдЧрд╛ред рдФрд░ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд▓реЗрдЦ рд╕реЗ "29,000 рдХреИрдкреНрдЪрд╛" рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рдирд┐рдХрд▓рд╛ред
   - (, -, .. ), : : 6503 , 5420 , 760 .. тАУ .. 14882, , , .
-, тАУ -, тАУ . PNG, тАУ JPG, , . , тАУ ┬лтАЭтАЭ ┬╗.

   рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ Google рдХреЛ рдЦреЛрд▓рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдПрдХрджрдо рд╕рд╣реА рдХреИрдкреНрдЪрд╛ рдЦреЛрд▓рдирд╛ рдкрдбрд╝рд╛: рдкреНрд░рддрд┐ рд░рд╛рдд 3224 рдлрд╛рдЗрд▓реЗрдВ рдЬрдорд╛ рд╣реБрдИрдВ, рдЬрд┐рдирдореЗрдВ 49 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рдереАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред рдХреЛрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЧрдгреЗрд╢ ред

   рджрд░рдЕрд╕рд▓ рдХреИрдкреНрдЪрд╛ рдХреА рдорд╛рдиреНрдпрддрд╛ рдмреЛрд░рд┐рдВрдЧ рдЕрдЬрдЧрд░ рдХреЛрдб рдХреА 26 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИред рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреЗрд╡рд▓ рдкреАрдЖрдИрдПрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдкреБрд░рд╛рдиреЗ рдХреЛрд░ 2 "рдЪрд╛рд░ рдХреЛрд░ рдЪрд╛рд░ рдЧрд┐рдЧреНрд╕" рдкрд░ рдЧрддрд┐ 1000 рдХреИрдкреНрдЪрд╛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ (рдПрдХ рд╣рдЬрд╛рд░ рдХреИрдкреНрдЪрд╛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ) рд╣реИред рдПрдХ рдЕрдзрд┐рдХ рд╕рднреНрдп рдЖрда-рдзрд╛рд░рд╛ рдкрд░ i5 рдХрд╛рдлрд╝реА рддреЗрдЬрд╝реА рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдмрд╛рдд, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИред 100% рдХреА рдорд╛рдиреНрдпрддрд╛ рдпрд╛ рдЙрд╕рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм: рд╕реНрдкреЙрдЯ рдЪреЗрдХ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереАред

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

Yandex.Disk (14MB) рд╕реЗ рдХреИрдкреНрдЪрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

рд╕реНрд░реЛрдд
from PIL import Image, ImageTk

def recognize(filepath):
  Zlist = [] # [(x1, z1), (x2, z2), (x3, z3), etc.] - position and digit
  captcha = ""
  originalimage = Image.open(filepath).convert('L').point(lambda x : 255 if x > 20 else 0, mode='1').convert('1').convert('RGBA')
  if originalimage.getextrema() == ((0, 0), (0, 0), (0, 0), (255, 255)):
    return("empty image")
  for z in [4, 2, 3, 1, 5, 6, 7, 8, 9]: # reorder to exclude false 1 on 4
    mask = Image.open('mask' + str(z) + '.png').convert('RGBA')
    previ = 0
    for i in range(15, 120): # no digit in left part
      resultimage = Image.alpha_composite(originalimage.crop((i, 0, i + 30, 0 + 50)), mask)
      if resultimage.getextrema() == ((0, 0), (0, 0), (0, 0), (255, 255)):
        if z == 4: # delete 4 to exclude false 1 on 4
          maskx = Image.open('mask4x.png').convert('RGBA') 
          originalimage.paste(Image.alpha_composite(originalimage.crop((i, 0, i + 30, 0 + 50)), maskx), (i, 0))
        if previ == 0 or i > previ + 15: #no digit closer then 15 px
          Zlist.append((i, z))
          if len(Zlist) == 5:
              Zlist.sort()
              for z in Zlist:
                captcha = captcha + str(z[1])
              return(captcha)
          previ = i
          i = i + 15 #skip a little
  Zlist.sort()
  return(str(Zlist)) #if less then 5 digits recognized
	
def main():
  captcha = recognize(entry.path)
#----------------------------------------------#
#          #
#----------------------------------------------#

main()




13 рдлрд░рд╡рд░реА, 2020 рддрдХ рдЕрджреНрдпрддрдиред
   рдпрд╣ рд╕рдм рдХреНрдпрд╛ рдерд╛? рд╕рд╣реЗрдЬреЗ рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреА рдЦреЗрд▓ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ? рдирд╣реАрдВ, рдпрд╣ рд╕рдм рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдерд╛ред
   рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиред - рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп http рдорд╛рдиреНрдпрддрд╛ рд╕рд░реНрд╡рд░ рдкреНрд▓рд╕ рд╡рд┐рд╕реНрддрд╛рд░ред
   рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдпрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрдкреНрдЪрд╛ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпреЛрдЬрдирд╛рдПрдВ:
  - рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдЫреЛрдбрд╝рдХрд░ рд╕рд╛рдЗрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ;
  - рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдкрд░ рдХреИрдкреНрдЪрд╛ рдЕрдкрдбреЗрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ рдПрдХ рдХреИрдкреНрдЪрд╛ рдХреЗрд╡рд▓ 4 рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
  - рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рддреИрдпрд╛рд░ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдирд╣реАрдВред

5 рдорд╛рд░реНрдЪ, 2020 рддрдХ рдЕрджреНрдпрддрдиред
   рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиред- рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп http рдорд╛рдиреНрдпрддрд╛ рд╕рд░реНрд╡рд░ рдкреНрд▓рд╕ рд╡рд┐рд╕реНрддрд╛рд░ред
   Chrome рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЕрдм рдпрд╣ рдХреИрдкреНрдЪрд╛ рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдХреНрд╖рдо рд╣реИ,
 1. рдЬрдм рдЕрдЪрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдЦреЛрд▓рдирд╛, рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛;
 2. рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рдкреГрд╖реНрдареЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░реЗрдВред
   рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ habr.com/post/488018/#comment_21360646

17 рдЕрдкреНрд░реИрд▓, 2020 рддрдХ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
   рд╕реВрдЪреА рд╕реЗ рдмрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ - рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рдмрдпрд╛рди рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд╛рд░рдг - 5 рдорд┐рдирдЯ рдореЗрдВ 1 рдмрдпрд╛рдиред рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

All Articles