рд╣реИрдХрд┐рдВрдЧ рд╕реА # рдХреИрдкреНрдЪрд╛ рд╕реА # рдкрд░ - рдпрд╣ рдЖрд╕рд╛рди рд╣реИ!

рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рддрдерд╛рдХрдерд┐рдд рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ "рдорд╛рддрди-рдХреИрдкреНрдЪрд╛", рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдп рдорд╛рддрди рдХреИрдкреНрдЪрд╛ рдореЗрдВ PHP рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рдЖрд╕рд╛рди рд╣реИ! ред
рдЗрд╕ рдЕрджреНрднреБрдд рдХреИрдкреНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХреЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ;)


рдЪрд▓реЛ рдорд╛рдирдХ рддреИрдпрд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН: рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬред рдЗрдЯреИрд▓рд┐рдХ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдХрдордЬреЛрд░рд┐рдпреЛрдВ:
  1. рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдХрд╛рд▓реЗ рдЕрдХреНрд╖рд░ред
  2. рдХреЛрдИ рд╢реЛрд░ рдпрд╛ рдЕрдиреНрдп рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ (рдЬреИрд╕реЗ рд░реЗрдЦрд╛рдПрдБ) рдирд╣реАрдВред
  3. рдкреНрд░рддреАрдХ рдХрднреА рднреА рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  4. рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдлреЙрдиреНрдЯред
  5. рдЕрднрд┐рдиреНрди рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣рдореЗрд╢рд╛ 4 рдкрдж рд╣реЛрддреЗ рд╣реИрдВред
  6. рдбрд┐рдЧреНрд░реА рдФрд░ рдХрд╛рд░рдХреЛрдВ рдореЗрдВ рдПрдХ рдЕрдВрдХ рд╣реЛрддрд╛ рд╣реИред
  7. рдбрд┐рдЧреНрд░реА рдФрд░ рдХрд╛рд░рдХ 2 рд╕реЗ 5 рддрдХ рд╣реЛрддреЗ рд╣реИрдВред
рддрд╛рдХрдд рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
  1. рдЧреИрд░-рд░реИрдЦрд┐рдХ рд╡рд┐рд░реВрдкрдг рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред
  2. рдбрд┐рдЧреНрд░реА рдпрд╛ рдХрд╛рд░рдХ рдПрдХреНрд╕ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред
  3. рдХрднреА-рдХрднреА, dx рдПрдХ рд╡рд░реНрдг рдореЗрдВ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХ рдЬрд╛рддреЗ рд╣реИрдВред
  4. рдХреИрдкреНрдЪрд╛ рдХреА рдЪреМрдбрд╝рд╛рдИ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред
рд╣рдо рдПрдХ рдорд╛рдиреНрдпрддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
  1. рдПрдХ рдХреИрдкреНрдЪрд╛ рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  2. рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
  3. рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реА рд╕реАрдорд╛рдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЦреЛрдЬреЗрдВред
  4. рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХ рд╡рд░реНрдгреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВред
  5. рдЕрднрд┐рдиреНрди рдХрд╛ рдкрд╣рд▓рд╛ рд╡рд░реНрдг рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдПред
  6. рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реБрдП, рдЕрдВрддрд┐рдо рд╡рд░реНрдг рдкрд░ рджрд╛рдПрдВ рдЪрд▓рддреЗ рд╣реИрдВред
  7. рдкрд░рд┐рдгрд╛рдореА рдЕрднрд┐рдиреНрди рдХреЛ рд╣рд▓ рдХрд░реЗрдВред

рдореВрд▓ рдХреИрдкреНрдЪрд╛




рдмрд┐рдЯрдореИрдк


рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЪрдордХ HSB рд░рдВрдЧ рдореЙрдбрд▓ <0.8 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИ, рдХреНрд░рдорд╢рдГ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП = = = 0.8ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреИрдкреНрдЪрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛:


рдЪрд░рд┐рддреНрд░ рд╕рдВрдЦреНрдпрд╛


рд╕рднреА рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 8 рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЬреБрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрд╛рдврд╝ рднрд░рд╛рд╡ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
public int FloodFill(ref int[,] source, int num, int x, int y) { if (source[x, y] == -1) { source[x, y] = num; FloodFill(ref source, num, x - 1, y - 1); FloodFill(ref source, num, x - 1, y); FloodFill(ref source, num, x - 1, y + 1); FloodFill(ref source, num, x, y - 1); FloodFill(ref source, num, x, y + 1); FloodFill(ref source, num, x + 1, y - 1); FloodFill(ref source, num, x + 1, y); FloodFill(ref source, num, x + 1, y + 1); return ++num; } return num; } ... int num = 1; for (int x = 0; x < CaptchaWidth; x++) for (int y = 0; y < CaptchaHeight; y++) num = FloodFill(ref bit, num, x, y); 

рдЪрд░рд┐рддреНрд░ рдкрд╣рдЪрд╛рди


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

рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рд╡рд░реНрдг, рдПрдХ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ: рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ 16px x 21pxред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, 336 рддрддреНрд╡реЛрдВ (16 * 21) рдХреА рдПрдХ рд╕рд░рдгреА рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рд╕рдВрдЧрдд рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ: 0 рдпрд╛ 1ред
рдордзреНрдп рдкрд░рдд рдореЗрдВ 130 рдиреНрдпреВрд░реЙрдиреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░, 0 рд╕реЗ 1 рддрдХ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде 14 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА, 0 рд╕реЗ 9 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд░реВрдк, рд╕рд╛рдЗрди +, рдбреА, рдПрдХреНрд╕, рдФрд░ рдбреАрдПрдХреНрд╕ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рд╣реБрдЖ рд╣реИред

рдкреНрд░рд╢рд┐рдХреНрд╖рдг 3090 рдирдореВрдиреЛрдВ рдкрд░ рд╣реБрдЖ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд░реНрдг "x" рдФрд░ рдХрдо рд╕реЗ рдХрдо "d" рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореЗрд░реЗ C2D e6750 рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ 40 рд╕реЗрдХрдВрдб рд▓рдЧреЗред
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб NA:
 static void Main(string[] args) { NeuralNet net = new NeuralNet(); //    uint[] layers = { 336, 130, 14 }; net.CreateStandardArray(layers); //   net.RandomizeWeights(-0.1, 0.1); net.SetLearningRate(0.7f); //     TrainingData data = new TrainingData(); data.ReadTrainFromFile("train.tr"); //  net.TrainOnData(data, 1000, 0, 0.001f); //     net.Save("skynet.ann"); } 

рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ train.tr рдХреА рд╕рдВрд░рдЪрдирд╛:
 num_train_data num_input num_output inputdata seperated by space outputdata seperated by space ... inputdata seperated by space outputdata seperated by space 

рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд╖рд┐рдд рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:


рдПрдХрд╛рддреНрдо рдорд╛рдиреНрдпрддрд╛


рдкрд╣рд▓реЗ рд╣рдо рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВред рдКрдкрд░реА рдПрдХ рдореЗрдВ 1-2 рдЕрдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рдорд╛рди 10. рд╣реЛрддрд╛ рд╣реИред рдирд┐рдЪрд▓рд╛ рд╡рд╛рд▓рд╛ 0 рд╕реЗ рд▓реЗрдХрд░ -10 рддрдХ рд╣реЛрддрд╛ рд╣реИред
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реБрдЧрдо рдмрдирд╛рдирд╛:
рдЕрднрд┐рдиреНрди рдХрд╛ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдмрд╕ рдмрд╛рдИрдВ рд╕реАрдорд╛ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдХреИрдкреНрдЪрд╛ рдХреА рдЖрдзреА рдКрдВрдЪрд╛рдИ рдкрд░ рдКрдкрд░реА рд╕реАрдорд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИред рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдПрдХ рдЕрднрд┐рдиреНрди рд╣реИред
рдЕрднрд┐рдиреНрди рдХреА рд╕рдВрдЦреНрдпрд╛, рдХреИрдкреНрдЪрд╛ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрдгреЛрдВ рдХреА рдЖрдЧреЗ рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ "5x5 + x5-4x2 / 4x5dx" рдорд┐рд▓рддреА рд╣реИред рдкрд╣рд▓реЗ рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдЗрд╕реЗ "+ 5x5 + x5-4x2 + 4x5" рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдВрдЧреЗред
рдХреБрдЫ рдкреИрдЯрд░реНрди рдЕрднрд┐рдиреНрди рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ:
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдПрдХреНрд╕ рдХреЗ рдХрд╛рд░рдХреЛрдВ рдФрд░ рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде 2 рд╕рд░рдгрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдЕрднрд┐рдиреНрди рд╕рдорд╛рдзрд╛рди рдХреЗ рдЖрдЧреЗ рд╕рдорд╛рдзрд╛рди рдЕрдм рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рд╕рдВрдкреВрд░реНрдг рдХреИрдкреНрдЪрд╛ рдХреА рдорд╛рдиреНрдпрддрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ: 500 рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдирдореВрдиреЗ рдкрд░ 93.8%!



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

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


All Articles