در این مطلب، ویدئو USENIX ATC ’21 – PYLIVE: تغییر کد در زمان پرواز برای خدمات آنلاین مبتنی بر پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:01
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:09,040 –> 00:00:11,120
سلام به همه، امروز نام من هو چیانگ هوانگ
2
00:00:11,120 –> 00:00:13,679
است، خوشحالم که کار خود را در
3
00:00:13,679 –> 00:00:14,240
4
00:00:14,240 –> 00:00:16,239
مورد تغییر کد py به صورت زنده برای سرویسهای آنلاین مبتنی بر پایتون
5
00:00:16,239 –> 00:00:17,520
ارائه
6
00:00:17,520 –> 00:00:19,600
میدهم.
7
00:00:19,600 –> 00:00:21,760
8
00:00:21,760 –> 00:00:23,600
9
00:00:23,600 –> 00:00:26,000
الزامات توانایی
10
00:00:26,000 –> 00:00:28,640
به زبانهایی مانند پایتون نوشته شده است
11
00:00:28,640 –> 00:00:31,039
بسیاری از شرکتها از پایتون برای ساختن پلتفرمهای آنلاین اصلی خود استفاده میکنند،
12
00:00:31,039 –> 00:00:32,640
13
00:00:32,640 –> 00:00:34,880
به عنوان مثال سرور فرانتاند یوتیوب
14
00:00:34,880 –> 00:00:36,239
با استفاده از پایتون ساخته شده است،
15
00:00:36,239 –> 00:00:38,239
بنابراین اینستاگرام و سرویسهای وب اصلی
16
00:00:38,239 –> 00:00:39,360
17
00:00:39,360 –> 00:00:41,280
فعلی نیز سرویسهای متن باز مختلفی
18
00:00:41,280 –> 00:00:43,840
در پایتون مانند وب وجود دارد. چارچوب
19
00:00:43,840 –> 00:00:46,320
و تجارت الکترونیکی
20
00:00:46,320 –> 00:00:48,000
این سرویسهای آنلاین دارای
21
00:00:48,000 –> 00:00:50,320
الزامات بالایی برای در دسترس بودن هستند.
22
00:00:50,320 –> 00:00:53,120
یک نظرسنجی اخیر نشان میدهد که چهار خط
23
00:00:53,120 –> 00:00:55,039
آپتایم به حداقل
24
00:00:55,039 –> 00:00:58,160
استاندارد دسترسی برای اکثر سرویسها
25
00:00:58,160 –> 00:01:00,320
26
00:01:00,320 –> 00:01:01,440
27
00:01:01,440 –> 00:01:04,879
28
00:01:04,879 –> 00:01:07,520
تبدیل شده است.
29
00:01:07,520 –> 00:01:09,360
هنگامی که تغییرات کد برای
30
00:01:09,360 –> 00:01:12,560
اعمال در سیستم ها وجود دارد و این تغییرات کد
31
00:01:12,560 –> 00:01:15,920
ضروری است، ابتدا مهندسان به
32
00:01:15,920 –> 00:01:17,439
شما نیاز دارند هنگام پرواز هنگام ثبت
33
00:01:17,439 –> 00:01:19,040
34
00:01:19,040 –> 00:01:21,759
برخی رفتارهای غیرعادی در سرویسهای آنلاین،
35
00:01:21,759 –> 00:01:24,080
اطلاعات اجرای تولید برای
36
00:01:24,080 –> 00:01:26,320
تشخیص مسائل چالش برانگیز که
37
00:01:26,320 –> 00:01:27,360
تولید آنها
38
00:01:27,360 –> 00:01:30,799
در محیطهای آزمایشی دشوار است، مفید است، همچنین پروفایلسازی تعریفنشده
39
00:01:30,799 –> 00:01:32,880
میتواند برای تولید تشخیصی مشکلات عملکرد بسیار مفید باشد،
40
00:01:32,880 –> 00:01:35,040
41
00:01:35,040 –> 00:01:36,079
42
00:01:36,079 –> 00:01:38,479
با این حال هزینههای سربار عمیق نگرانی بزرگی
43
00:01:38,479 –> 00:01:39,600
است
44
00:01:39,600 –> 00:01:42,000
که ما میخواهیم. برای ساختن ابزاری که به مهندسان اجازه می دهد به
45
00:01:42,000 –> 00:01:44,560
صورت پویا مجموعه کوچکی از
46
00:01:44,560 –> 00:01:47,119
عملکردهای مشخص شده را برای مدت کوتاهی
47
00:01:47,119 –> 00:01:47,840
48
00:01:47,840 –> 00:01:51,280
با هزینه های سربار مقرون به صرفه ارائه دهند، سوم،
49
00:01:51,280 –> 00:01:54,000
می خواهیم ابزاری بسازیم تا به مهندسان اجازه دهیم به
50
00:01:54,000 –> 00:01:55,360
صورت پویا
51
00:01:55,360 –> 00:01:58,399
وصله های فوری را برای رفع برخی از باگ های حیاتی
52
00:01:58,399 –> 00:02:01,840
یا مسائل امنیتی بدون توقف پشتیبانی بسازند.
53
00:02:01,840 –> 00:02:02,399
54
00:02:02,399 –> 00:02:05,680
و راه اندازی مجدد سرویس
55
00:02:05,680 –> 00:02:08,720
با انگیزه محبوبیت افراد و
56
00:02:08,720 –> 00:02:09,679
تقاضای
57
00:02:09,679 –> 00:02:11,920
اعمال تغییرات کد با حفظ دسترسی بالا
58
00:02:11,920 –> 00:02:13,280
59
00:02:13,280 –> 00:02:15,840
در این مقاله ما چارچوبی
60
00:02:15,840 –> 00:02:16,879
61
00:02:16,879 –> 00:02:20,160
به نام pylife را طراحی و پیاده سازی می کنیم که
62
00:02:20,160 –> 00:02:22,879
برنامه های پایتون را به صورت پویا تغییر می دهد مگر اینکه مانند
63
00:02:22,879 –> 00:02:24,080
پروفایل ورود به سیستم
64
00:02:24,080 –> 00:02:27,040
و رفع اشکال در سیستم های تولیدی
65
00:02:27,040 –> 00:02:30,480
بدون راه اندازی مجدد آنها.
66
00:02:30,800 –> 00:02:33,040
یکی از روشهای رایج برای بهروزرسانیهای کد
67
00:02:33,040 –> 00:02:35,120
که از خرابی کل سیستم جلوگیری میکند
68
00:02:35,120 –> 00:02:38,640
، استقرار خام است که شامل مجموعهای
69
00:02:38,640 –> 00:02:39,680
از خدمات است
70
00:02:39,680 –> 00:02:41,840
و این سرورها
71
00:02:41,840 –> 00:02:44,319
باتریها را با نشانها پاسخ میدهند،
72
00:02:44,319 –> 00:02:47,040
اما ربات بهترین انتخاب برای
73
00:02:47,040 –> 00:02:47,760
74
00:02:47,760 –> 00:02:50,560
ورود به سیستم و پروفایل پویا نیست به دو دلیل
75
00:02:50,560 –> 00:02:51,200
76
00:02:51,200 –> 00:02:53,599
بهروزرسانیهای دور اول هنوز نیاز به شروع دارند.
77
00:02:53,599 –> 00:02:54,560
هر سرور،
78
00:02:54,560 –> 00:02:56,640
بنابراین حالتهای حافظه را از دست میدهد،
79
00:02:56,640 –> 00:02:58,560
البته بهروزرسانیها در
80
00:02:58,560 –> 00:03:01,120
مرحله دوم، استقرار خام سنگین است
81
00:03:01,120 –> 00:03:03,200
و صرفاً برای جمعآوری اطلاعات گزارش یا نمایهسازی بیش از حد است،
82
00:03:03,200 –> 00:03:06,159
83
00:03:06,159 –> 00:03:08,959
گاهی اوقات
84
00:03:08,959 –> 00:03:11,280
85
00:03:11,280 –> 00:03:13,760
اگر مهندسان بخواهند مشکل را با
86
00:03:13,760 –> 00:03:15,200
یک ورود ساده تشخیص دهند، تنها چند سرور ناوگان رفتارهای عادی را نشان میدهند. صفحه
87
00:03:15,200 –> 00:03:17,440
باید با بسیاری
88
00:03:17,440 –> 00:03:18,319
از وصلههای دیگر اصلاح شود
89
00:03:18,319 –> 00:03:20,319
و مدت زیادی منتظر میماند تا
90
00:03:20,319 –> 00:03:22,800
91
00:03:22,800 –> 00:03:25,120
خط خالص استقرار راهحل بهتری را ارائه
92
00:03:25,120 –> 00:03:25,840
93
00:03:25,840 –> 00:03:28,159
94
00:03:28,159 –> 00:03:29,519
95
00:03:29,519 –> 00:03:32,480
96
00:03:32,480 –> 00:03:33,120
97
00:03:33,120 –> 00:03:36,159
98
00:03:36,159 –> 00:03:37,440
دهد.
99
00:03:37,440 –> 00:03:40,560
یک برنامه در حال اجرا به سرعت و همچنین حالت
100
00:03:40,560 –> 00:03:43,519
را حذف می کند انعطافپذیر است، بنابراین pylive
101
00:03:43,519 –> 00:03:44,319
102
00:03:44,319 –> 00:03:47,840
تکمیل استقرار خام
103
00:03:48,480 –> 00:03:51,920
خالص زنده واقعی تغییر کد قابل حمل و پویا
104
00:03:51,920 –> 00:03:52,799
105
00:03:52,799 –> 00:03:56,640
با استفاده از ویژگیهای زبان پایتون است.
106
00:03:56,640 –> 00:03:59,040
107
00:03:59,040 –> 00:04:00,000
108
00:04:00,000 –> 00:04:03,120
109
00:04:03,120 –> 00:04:06,319
110
00:04:06,319 –> 00:04:09,120
111
00:04:09,120 –> 00:04:11,040
112
00:04:11,040 –> 00:04:12,879
113
00:04:12,879 –> 00:04:15,280
ویژگی های رابط و کلاس
114
00:04:15,280 –> 00:04:17,199
شکل نشان می دهد که چگونه می توان بدنه کد یک
115
00:04:17,199 –> 00:04:18,560
تابع موجود
116
00:04:18,560 –> 00:04:21,199
و ویژگی های کلاس را در
117
00:04:21,199 –> 00:04:23,680
زمان اجرا تغییر داد،
118
00:04:23,680 –> 00:04:26,560
دومین ویژگی تایپ پویا است که
119
00:04:26,560 –> 00:04:28,000
امکان تغییر
120
00:04:28,000 –> 00:04:31,199
انواع متغیرها را در زمان اجرا فراهم می کند، زیرا پایتون انواع متغیرها را در زمان اجرا
121
00:04:31,199 –> 00:04:33,840
تعریف و بررسی می کند
122
00:04:33,840 –> 00:04:35,040
،
123
00:04:35,040 –> 00:04:38,320
به عنوان مثال یک متغیر a می تواند باشد.
124
00:04:38,320 –> 00:04:42,320
از یک رشته به 8 تغییر یافته است.
125
00:04:42,320 –> 00:04:44,160
بیایید نگاهی به رابط زنده های خالص بیندازیم
126
00:04:44,160 –> 00:04:45,680
127
00:04:45,680 –> 00:04:47,520
رابط ابزار می تواند
128
00:04:47,520 –> 00:04:48,720
129
00:04:48,720 –> 00:04:51,759
کد گزارش یا پروفایل ابزار را برای تعیین مکان
130
00:04:51,759 –> 00:04:54,880
در توابع یا ماژول های خاص مشخص
131
00:04:54,880 –> 00:04:57,440
132
00:04:57,440 –> 00:04:58,960
133
00:04:58,960 –> 00:05:01,360
کند.
134
00:05:01,360 –> 00:05:02,160
135
00:05:02,160 –> 00:05:05,520
طراحی محدوده نقطه تماس و زمان
136
00:05:05,520 –> 00:05:07,600
بیایید نگاهی به یک مسئله دنیای واقعی
137
00:05:07,600 –> 00:05:10,400
از سیستم تجارت الکترونیک اسکار
138
00:05:10,400 –> 00:05:12,720
139
00:05:12,720 –> 00:05:14,479
140
00:05:14,479 –> 00:05:15,919
141
00:05:15,919 –> 00:05:18,400
142
00:05:18,400 –> 00:05:22,479
143
00:05:22,960 –> 00:05:25,199
بیندازیم. توابع یا
144
00:05:25,199 –> 00:05:27,280
نام ماژولهایی که در اینجا باید ابزار باشند،
145
00:05:27,280 –> 00:05:29,680
مهندسین محدوده را بهعنوان
146
00:05:29,680 –> 00:05:34,000
روشهای دو کلاس مشکوک تعریف میکنند که
147
00:05:34,240 –> 00:05:36,400
پاسخ تماس نقطه مشترک یک
148
00:05:36,400 –> 00:05:37,280
فرهنگ لغت با ارزش کلیدی
149
00:05:37,280 –> 00:05:39,440
مکان ابزار است و
150
00:05:39,440 –> 00:05:41,600
کد
151
00:05:41,600 –> 00:05:44,639
برگشتی به پیلین ابزار از نقاط اتصال انعطافپذیر در
152
00:05:44,639 –> 00:05:46,400
دانهبندیهای
153
00:05:46,400 –> 00:05:49,840
مختلف مانند شروع عملکرد یا شروع، پشتیبانی میکند. پایان یا
154
00:05:49,840 –> 00:05:53,039
قبل یا بعد از یک خط
155
00:05:53,039 –> 00:05:56,800
در نهایت زمان به مهندسان اجازه میدهد تعیین کنند
156
00:05:56,800 –> 00:05:59,039
که چه زمانی یک ابزار دقیق را انجام دهند
157
00:05:59,039 –> 00:06:02,160
و چه زمانی آن را برگردانند.
158
00:06:02,160 –> 00:06:04,000
159
00:06:04,000 –> 00:06:06,080
160
00:06:06,080 –> 00:06:09,039
161
00:06:09,919 –> 00:06:12,960
162
00:06:12,960 –> 00:06:14,400
163
00:06:14,400 –> 00:06:17,039
که تعاریف
164
00:06:17,039 –> 00:06:17,840
توابع
165
00:06:17,840 –> 00:06:20,800
و ساختارهای داده موجود را با تعاریف جدیدی برای
166
00:06:20,800 –> 00:06:22,400
انجام چنین تغییراتی جایگزین می کند
167
00:06:22,400 –> 00:06:25,360
مهندسان از رابط زیر استفاده می کنند
168
00:06:25,360 –> 00:06:26,240
prep
169
00:06:26,240 –> 00:06:28,960
func یک تابع پایتون تعریف شده توسط کاربر است که
170
00:06:28,960 –> 00:06:30,960
مهندسان باید ارائه
171
00:06:30,960 –> 00:06:33,440
کنند و قبل از ایجاد
172
00:06:33,440 –> 00:06:34,560
تغییر اجرا می شود
173
00:06:34,560 –> 00:06:37,039
نقشه قدیمی جدید یک فرهنگ لغت مقدار کلیدی است
174
00:06:37,039 –> 00:06:39,199
که تغییر را مشخص می کند که
175
00:06:39,199 –> 00:06:42,240
هر جفت مشخص می کند یک تابع قدیمی باید
176
00:06:42,240 –> 00:06:44,800
با آن جایگزین شود. یک تابع جدید
177
00:06:44,800 –> 00:06:47,440
برای افزودن یک فیلد به یک کلاس، میتوانید
178
00:06:47,440 –> 00:06:48,000
179
00:06:48,000 –> 00:06:50,240
نام فیلد و کد اولیه آن
180
00:06:50,240 –> 00:06:53,520
را نیز مانند خط دوم
181
00:06:53,520 –> 00:06:56,319
مشخص کنید، در نهایت نقطه ذخیره مشخص میکند که در کدام
182
00:06:56,319 –> 00:06:58,000
نقطه اجرا
183
00:06:58,000 –> 00:07:01,039
اعمال تغییر مشخص شده امن است و
184
00:07:01,039 –> 00:07:04,639
بعداً آن را
185
00:07:05,199 –> 00:07:08,160
با سه چهره اصلی معرفی خواهیم کرد. چگونگی
186
00:07:08,160 –> 00:07:08,639
پشتیبانی از
187
00:07:08,639 –> 00:07:11,039
تغییرات پویا برای تابع رابط
188
00:07:11,039 –> 00:07:13,280
تابع بدنه و ساختار داده
189
00:07:13,280 –> 00:07:15,599
نحوه شناسایی نقاط تغییر ایمن برای
190
00:07:15,599 –> 00:07:16,560
اعمال و تغییر
191
00:07:16,560 –> 00:07:19,759
بدون ایجاد مشکلات ناسازگاری
192
00:07:19,759 –> 00:07:22,479
نحوه بهروزرسانی برنا