рдПрдХ рд╣реА рдХрдВрдкрдиреА рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдпрд╣ рдХрд╣рд╛рдиреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрдкрдиреА рдореЗрдВ рд╣реБрдИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреБрдЫ рдирд╛рдо рдФрд░ рдШрдЯрдирд╛рдПрдВ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИрдВред

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

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

рд╕рдВрд╡рд╛рдж рд╣реБрдЖ:

- рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдирд▓рд╛рдЗрди рднреБрдЧрддрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрд╡рд╛ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ? рддреЛ?
- рддреЛ
- рдХреНрдпрд╛ рдХрдВрдкрдиреА рдкреНрд░рдмрдВрдзрди рдХреА рдЗрд╕ рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ?
- рд╡рд╣рд╛рдБ рд╣реИрдВред
- рддреЛ, тАЛтАЛрд╢рд╛рдпрдж, рд╡рд╣рд╛рдБ рднреБрдЧрддрд╛рди рдХрд╛ рдПрдХ рдЙрддрд░рд╛рдИ рд╣реИред
- рд╡рд╣рд╛рдБ рд╣реИрдВред
"рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?"
- рдЬрд░реВрд░рдд рд╣реИред
- рдХреНрдпреЛрдВ?
- рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдРрд╕рд╛ рдФрд░ рдЗрд╕рд▓рд┐рдПред"

рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдЧреНрд▓реЛрд░реА рдиреЗ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдмрд╛рдж рдХреЗ рдЪрдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред

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

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

import openpyxl, pymysql, os from smtplib import SMTP_SSL from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import datetime # Excel Settings today = datetime.date.today().strftime('%d.%m.%Y') excel_file = 'Oplata_polzovateley_' + today + '.xlsx' # SQL settings host = '' user = '' passwd = '' db = '' port=0000 headers = ['id', 'email', '', '', ' ', ' ', '', '- ', ' '] # SMTP Mail settings smtp_server = 'smtp.gmail.com' mail_login = '' mail_passwd = '' receiver = [''] cc = [''] def main(): # Fetch Data from SQL server conn = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=port) cursor = conn.cursor() cursor.execute('''select * from table''') data = cursor.fetchall() conn.close() # Write Data to Excel file wb = openpyxl.Workbook() contractors = {} for item in data: diff = item[6] - item[5] item = list(item) # print(item) if diff.days > 10: item.append('') else: item.append('') item = tuple(item) if item[0][:30] in contractors: contractors[item[0][:30]] += 1 else: wb.create_sheet(item[0][:30]) contractors[item[0][:30]] = 2 for i in range(1, len(headers) + 1): letter = openpyxl.utils.get_column_letter(i) wb[item[0][:30]][letter + '1'] = headers[i - 1] wb[item[0][:30]]['A' + str(contractors[item[0][:30]])] = contractors[item[0][:30]] - 1 for i in range(2, len(headers) + 1): letter = openpyxl.utils.get_column_letter(i) wb[item[0][:30]][letter + str(contractors[item[0][:30]])] = item[i] wb.save(excel_file) wb.remove(wb['Sheet']) wb.save(excel_file) # Compose attachment part = MIMEBase('application', "octet-stream") part.set_payload(open(excel_file, "rb").read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(excel_file)) # Compose message msg = MIMEMultipart() msg['From'] = mail_login msg['To'] = ', '.join(receiver) msg['Cc'] = ', '.join(cc) msg['Subject'] = excel_file msg.attach(part) # Send mail tosend = receiver + cc smtp = SMTP_SSL('smtp.gmail.com') smtp.connect(smtp_server) smtp.login(mail_login, mail_passwd) smtp.sendmail(mail_login, tosend, msg.as_string()) smtp.quit() # Wipe file os.remove(excel_file) if __name__ == '__main__': main() 

рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреНрд▓реЛрд░реА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ: "рдЖрд╣, рдФрд░ рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ред"

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

docker build --tag = рд░рд┐рдкреЛрд░реНрдЯ
docker рд░рди -it --rm рд░рд┐рдкреЛрд░реНрдЯ
рдФрд░ рддрд╛рдЬ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдореЗрдВ:
0 8 * * * docker run --rm foo

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

GitHub

рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ рдФрд░ рдиреЗрддреГрддреНрд╡ рд╕реНрдерд╛рдпреА рдерд╛, рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВред рдПрдХ рдмрд╛рд░ рдПрдХ рдмреИрдардХ рд╣реБрдИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирдП рдЖрджреЗрд╢ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИред рд╕реБрдиреЛ, рд╕реБрдиреЛ рдФрд░ рдпрд╣ рдордд рдХрд╣реЛ рдХрд┐ рддреБрдордиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ред рд╕рд┐рдо рдиреЗ рдШреЛрд╖рдгрд╛ рдХреА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА, рд╣рд░ рджрд┐рди рдПрдХ рдЙрдЪреНрдЪ рд░реИрдВрдХрд┐рдВрдЧ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВред

"рд╣рд░ рджрд┐рди?" рдЬрдп рд╕реЗ рдкреВрдЫрд╛ред
- рд╣рд░ рд╕рд╛рд▓ред - рддрдХрдиреАрдХреА рд╡рд┐рднрд╛рдЧ рдХреЗ рдкреНрд░рдореБрдЦ рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ред
- рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВ?
- рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдорд╣рд┐рдорд╛, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

рдорд╣рд┐рдорд╛ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╣ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдЧреАред рдПрдХ рд╣рдлреНрддрд╛ рдмреАрдд рдЧрдпрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдирдИ рдмрд╛рддрдЪреАрдд рд╣реБрдИ:

- рддреЛ рдЖрдк рд╣рд░ рджрд┐рди рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ: "рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдПрдХ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдореБрдЦреМрдЯрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ"ред
- рдЕрдЪреНрдЫрд╛, рджреЗрдЦреЛред рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдереА рдФрд░ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- рд╣рдореНрдоред рд╕рдм рдареАрдХ рд╣реИред рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдФрд░ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдордЭрд╛рддреЗ рд╣реИрдВ: тАЬрдХрд╛рдЙрдВрдЯрд░рдкрд╛рд░реНрдЯреАрдЬрд╝ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИред "
- рдЕрдЪреНрдЫрд╛, рдЖрдк рджреЗрдЦрд┐рдПред рдРрд╕реА рдПрдХ рдЪреАрдЬ рд╣реИ - рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди, рдХрдм рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рджреЗрдЦреЛред рдпрд╣рд╛рдВ рдХрдорд┐рдЯ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдХреЛрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдЕрдЪреНрдЫрд╛ рд╣реИред рдЪрд▓реЛ рдлрд┐рд░ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдЗрди рдХрдорд┐рдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдХ рд╕рд╛рде рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдиреЗ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ - рдпрд╣реА рд╣реБрдЖ:

GitHub

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдФрд░ рдПрдХ рдкрддреНрд░ рднреЗрдЬрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рдерд╛ред

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

рд╣рд╛рдВ, рд╕реНрд▓рд╛рд╡ рдПрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдФрд░ рдХрд╛рдо рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рджрд┐рди рдереЗ рдЬрдм рдХреЛрдб рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдпрд╣ рдЖрд▓рд╕реНрдп рдерд╛ред рд╡реИрд╕реЗ рднреА, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд┐рд╕реНрдЯрдо рдиреЗ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреА рдПрдХ рдФрд░ 15 рдкрд░рддреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд░рд┐рдкреЛрд░реНрдЯ рд╣рд░ рджрд┐рди рднреЗрдЬрдиреА рдкрдбрд╝рддреА рдереАред

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

GitHub

рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд░рд╣рд╛ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЖрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдирдХрд▓реА рдХреЛрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕рдордп рдмрддрд╛рдПрдЧрд╛ред

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

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


All Articles