PyQt: рд╕рд░рд▓ рд╕реВрддреНрд░рдг

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

рдкрд╛рдпрдЯреЗрдХ рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рд╣реИрдВ: рдкрд╛рдпрдерди рдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдХреНрдпреВрдЯреА рдХреНрдпреВрдереНрд░реЗрдбред рдореЗрд░реЗ рд▓рд┐рдП, рдХреНрдпреВрдЯреА рдореЗрдВ рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрдмрдВрдз рдХреЗ рдХрд╛рд░рдг рдХреНрдпреВрдереНрд░реЗрдб рдмреЗрд╣рддрд░ рдирд┐рдХрд▓рд╛ред

рдЗрд╕рд▓рд┐рдП, рдЙрдкрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде рдореИрдВ рдХреБрдЫ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдХ рдХреЛ рдХрд╛рдо рдХрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред

simple_thread

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

рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from time import sleep from PyQt4.QtCore import * from PyQt4.QtGui import * from simple_thread import SimpleThread class Foo(QLabel): def __init__(self, parent = None): QLabel.__init__(self, parent) self.setFixedSize(320, 240) self.digits = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'] @SimpleThread def bar(self, primaryText): rows = [] digits = self.digits for item in digits: rows.append('%s: %s' % (primaryText, item)) self.setText('\n'.join(rows), thr_method = 'b') sleep(0.5) def setText(self, text): QLabel.setText(self, text) if __name__ == "__main__": app = QApplication(sys.argv) foo = Foo() foo.show() foo.bar('From thread', thr_start = True) app.exec_() 


рдлреВ рд╡рд░реНрдЧ QLabel рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдлреНрд░реАрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рд░ рдЖрдзреЗ рд╕реЗрдХрдВрдб рдореЗрдВ рд▓реЗрдмрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдмрд╛рд░ рд╡рд┐рдзрд┐ рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдирд┐рдкрдЯреЗрдЧреА ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ @SimpleThread рдбреЗрдХреЛрд░реЗрдЯрд░ рд▓рдЧрд╛рдПрдВ ред

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

рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

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

рд╡рд┐рдзрд┐ рдХреЙрд▓

рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ рджреЛ рд╕реЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ - рдХреНрдпреВрдЯреА рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдЬрдм рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╕реЗ рдЧреНрд░рд╛рдлрд┐рдХ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рдзрд╛рдЧреЗ рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдФрд░ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ, рдереНрд░реЛрдбрдордереЛрдб рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░:

рдереНрд░_рдорд┐рдереЛрдб рддрд░реНрдХ рдХреЛ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рдирд╛

рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред
 self.newAttr = 'text' 

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рднреА рдХрд╛рд░реНрдп рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдХреЗ, рдЖрдк рдореМрдЬреВрджрд╛ рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

рдЕрдкрдирд╛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдереНрд░рд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдереНрд░рд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯ = рдЯреНрд░реВ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдереНрд░реЗрдб рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПред
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рдпрд╛ рд╕рд┐рдЧрдирд▓ рдХреНрдпреВрдереНрд░реЗрдб рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ( рд╢реБрд░реВ , рд╕рдорд╛рдкреНрдд , рд╕рдорд╛рдкреНрдд )ред
  thread = foo.bar('From thread') thread.finished.connect(self.barFinished) thread.start() 

рдпрд╣рд╛рдВ, рд╣рдордиреЗ рд╕рдорд╛рдкреНрдд рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЕрдВрддрд┐рдо рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдмрд╛рд░рдлрд┐рдирд┐рд╢ рд╡рд┐рдзрд┐ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдкреНрд░рд╡рд╛рд╣ рдмрдВрдж рдХрд░реЛ

рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╣рдореЗрдВ рдПрдХ рд░рдирд┐рдВрдЧ рдереНрд░реЗрдб рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдереНрд░рд╕реНрдЯрд╕реНрдЯреЙрдк рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  thread = foo.bar('From thread', thr_start = True) ... thread.thr_stop() 

рдпрд╣ рд╡рд┐рдзрд┐ рдзреНрд╡рдЬ рдХреЛ рдереНрд░рд╕реНрдЯ_рд╕реНрдЯреЙрдкрдлреНрд▓реИрдЧ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ = рд╕рд╣реА рд╣реИ , рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рддреНрдп рд╣реИ, рддреЛ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред

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

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

рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдкрд╕рдВрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

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


All Articles