كيفية تعلم التطور في Python: دورة فيديو جديدة لـ Yandex

في الخريف الماضي ، عقدت أول مدرسة تطوير خلفية في مكتب ياندكس في موسكو. لقد صورنا الدروس على الفيديو ، ويسعدنا اليوم مشاركة دورة الفيديو الكاملة لمدرسة حبري. سيسمح لك بتعلم التطور الصناعي في Python. مؤلفو المحاضرات هم من المطورين ذوي الخبرة في Yandex. يحتوي كل فيديو على روابط لأمثلة ومواد مفيدة.

لتعلم الدورة ، تحتاج إلى معرفة أساسيات Python وفهم كيفية نشر التطبيقات على الخوادم. نتوقع أنه يمكنك إجراء استعلامات قاعدة البيانات ومعرفة كيفية إنشاء تطبيقات الويب ، على الأقل في المستوى الأولي.

1. جهاز CPython
2. البرمجة الشيئية
3. الاختبار
4. قواعد البيانات
5. قواعد البيانات: النماذج ، الترحيل ، الاختبار
6. العمارة
7. البنية التحتية
8. الخوارزميات
9. التصحيح ، التسجيل ، التنميط
10. البرمجة غير المتزامنة. المحاضرة الأولى
11. البرمجة غير المتزامنة. المحاضرة الثانية
12. البرمجة غير المتزامنة. المحاضرة الثالثة

1. جهاز CPython - Egor Ovcharenko


لنتحدث عن السبب وما نكتبه في بايثون. سنناقش هيكل المترجم والقواميس وإدارة الذاكرة والكتابة. سوف تتعلم كيف تعمل المولدات وكيف تعمل الاستثناءات.


العرض: yadi.sk/i/dcNx5Sgix4axOA

المراجع


المترجم ككل:
docs.python.org/3/reference/executionmodel.html
github.com/python/cpython
leanpub.com/insidethepythonvirtualmachine/read

إدارة الذاكرة:
arctrix.com/nas/python/gc
rushter.com/blog/python -memory-managment
instagram-engineering.com/dismissing-python-garbage-collection-at-instagram-4dca40b29172
stackify.com/python-garbage-collection

استثناءات:
bugs.python.org/issue17611

2. البرمجة الشيئية - فاليري ليزاي


لنتحدث عن OOP وتنفيذه في Python. ضع في اعتبارك الموضوعات والمفاهيم مثل الديكور والوصف والنقوش.


العرض: yadi.sk/i/f-UpCHCsnxqf9Q

المراجع


habr.com/ru/post/141411
docs.python.org/3/howto/descriptor.html
habr.com/ru/post/145835
ibm.com/developerworks/ru/library/l-pymeta
docs.python.org/ 2.5 / ref / slots.html

3. الاختبار - ماريا زيلينوفا


لنتحدث عن اختبار البرمجيات وما الاختبارات ولماذا نكتبها. لنتحدث عن المكتبات لاختبار كود Python: unittest ، pytest ، doctest. سوف نكتشف كيف تختلف ، ونلقي نظرة على أمثلة اختبار بسيطة. سنتطرق إلى موضوع التكامل المستمر: ما هو وكيف يتم استخدامه في التنمية.


العرض: yadi.sk/i/g6nd4aORJyrPMQ

المراجع


docs.python.org/3/library/unittest.html
docs.pytest.org/en/latest
docs.python.org/3/library/doctest.html

4. قواعد البيانات - تاتيانا دينيسوفا


لنتحدث عن ماهية البيانات ، وما هي قواعد البيانات وكيف تختلف. سوف تتعرف على ميزات العمل مع قاعدة البيانات التي تحتاج إلى وضعها في الاعتبار المطور. سنناقش كيفية وصف البيانات وتنظيمها وتخزينها ، بناءً على الميزات الحالية للنظام وقياسه في المستقبل.

بفضل المعرفة المكتسبة في المحاضرة ، سيكون المطور قادرًا على فهم أي من الموضوعات المذكورة يجب تناولها لحل مشكلة معينة ، وفي حالة وجود أخطاء ، لتحديد ما إذا كان العمل مع قاعدة البيانات هو مصدر المشكلة. وإذا كان الأمر كذلك ، أي طريقة للحفر.


العرض: yadi.sk/i/Uf5U_xwt5qGBIQ

5. قواعد البيانات: النماذج ، الهجرات ، الاختبار - ألكسندر فاسين


هذه محاضرة عن العمل العملي مع قواعد البيانات العلائقية باستخدام PostgreSQL كمثال. دعونا نتحدث عن كيفية اختيار نظام إدارة قواعد البيانات (RDBMS) ، وكيف تبدو البنية التحتية في الإنتاج ، ومقارنة برامج تشغيل PostgreSQL المتزامنة وغير المتزامنة. سنكتشف كيفية ترتيب برنامج تشغيل قاعدة البيانات. سنناقش العمل الفعال مع البيانات ، والمؤشرات المسماة وغير المسماة ، واستخدام المعاملات ، والعودة و UPSERT.

سوف تتعلم كيفية إنشاء تطبيق متسامح مع الأخطاء وقابل للتطوير ، وما هو Query Builder و ORM ومتى يتم استخدامها (باستخدام SQLAlchemy كمثال) ، وكيفية كتابة عمليات ترحيل قاعدة البيانات (باستخدام Alembic كمثال) ، ولماذا وكيفية اختبارها.


عرض: yadi.sk/i/DqYmAbrPu6en2g
أمثلة: github.com/alvassin/alembic-quickstart

6. العمارة - أوليغ إرماكوف


دعونا نفكر في ثلاثة أجزاء من تصميم وظائف النظام الجديد:

- API للتفاعل بين الخادم والعميل ؛
- أنماط التصميم على مستوى الشفرة (مبرر الحاجة إلى التحلل مع الإشارة إلى مارتن فاولر) ؛
- معمارية التفاعل بين الخدمات.


العرض: yadi.sk/d/PivB-ZJ0UJGjYQ

المراجع


مواصفات بروتوكول HTTP:
tools.ietf.org/html/rfc2616
tools.ietf.org/html/rfc5789

15 حقائق تافهة حول العمل مع بروتوكول HTTP:
habr.com/ru/company/yandex/blog/265569

متدرب فاسيا وقصته حول API idempotency:
habr.com/en/company/yandex/blog/442762

أنماط تطبيق المؤسسة العمارة: martinfowler.com/eaaCatalog/index.html
أنماط Microservices: manning.com/books/microservices-patterns
أنماط التصميم: litres.ru / elizabet-robson / head-first-patterny-proektirovaniya-39123671
التصميم المستند إلى النطاق: معالجة التعقيد في قلب البرنامج: amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
تحسين واجهة برمجة تطبيقات Netflix: medium.com/netflix-techblog/optimizing-the-netflix-api-5c9ac715cf19

7. البنية التحتية - ديمتري أورلوف


دعونا نناقش البنية التحتية حول برنامج Python: Python Package Index Index (PyPI) ، أداة virtualenv ، عملية النشر ، نظام إدارة التكوين Ansible ، المحاكاة الافتراضية والحاويات.


العرض: yadi.sk/i/9eOXdelTpXkoEQ

المراجع


حزمة Python: docs.python.org/3.8/distutils/setupscript.html
virtualenv: docs.python.org/3.8/library/venv.html
نشر البرامج: en.wikipedia.org/wiki/Software_deployment
Ansible: docs.ansible.com /ansible/latest/user_guide/quickstart.html
المحاكاة الافتراضية: en.wikipedia.org/wiki/Hardware_virtualization
Containerization: en.wikipedia.org/wiki/OS-level_virtualization

8. الخوارزميات - ايليا فولكوف


دعونا نتحدث عن هياكل البيانات والتعقيد الحسابي والمطفأ.

باستخدام مثال لقائمة بسيطة من المهام وتطورها مع التحسينات التدريجية ، فإننا ننظر في طرق لمهام كتابة جانب الخادم من تطبيقات الويب. سنراجع الأساليب والتقنيات الشائعة لتحسين المهام والتعليمات البرمجية. في الجزء الأخير من المحاضرة ، سننظر في عملية اجتياز المقابلات الفنية في شركات تكنولوجيا المعلومات.


العرض: yadi.sk/i/hBbOjd4SqMlw5g

الروابط


تنفيذ القوائم في Python: docs.python.org/3.7/faq/design.html#how-are-lists-implemented-in-cpython
تحليل تنفيذ القوائم في Python على Habr : habr.com/en/post/273045
تحليل الخوارزمية B -شجرة على حبري: habr.com/en/post/114154
تحليل خوارزمية LRU: habr.com/en/post/136758
عمل ذاكرة التخزين المؤقت LRU في Redis : redis.io/topics/lru-cache
قائمة أوامر Redis مع الصعوبات الحسابية - من الممكن خمن ما يحدث تحت غطاء المحرك: redis.io/commands
خوارزميات المجرة: en.wikipedia.org/wiki/Galactic_algorithm
مثال لمهمة مقابلة من محاضرة: leetcode.com/problems/trapping-rain-water

مقدمة لنظرية التعقيد في حبري:habr.com/en/post/196560 مجموعة
من الخدمات لممارسة البرمجة: tproger.ru/digest/competitive-programming-practice
مثال على الخدمة التي تحتوي على مجموعة بسيطة إلى حد ما من المهام لاستكشاف لغات جديدة: التمرين.

9. التصحيح ، قطع الأشجار ، التنميط - يوري شيكانوف


في بداية المحاضرة ، ستجد مقدمة للمعرفة الأساسية لأنظمة التشغيل (على وجه الخصوص ، Linux). ثم سننظر في إدارة الذاكرة والعمليات وتعدد المهام و IPC والملفات ومكالمات النظام. سنوضح لك كيفية العمل مع مصحح الأخطاء Pdb المدمج في Python. لنتحدث عن التسجيل بشكل عام وعن مكتبة التسجيل في Python. نتعلم كيفية التعامل مع أداء البرنامج غير الكافي وكيفية العثور على عنق الزجاجة الذي يتم فيه إنفاق معظم موارد المعالج أو الذاكرة.


عرض تقديمي: yadi.sk/d/BCky8YkLcbVeUA
كتاب برمجة نظام Linux: oreilly.com/library/view/linux-system-programming/9781449341527

10. البرمجة غير المتزامنة. المحاضرة الأولى - إدوارد بيتل


ضع في اعتبارك مشكلة التطبيقات المتزامنة وما يمكن فعله حيال ذلك.

سنناقش ما يحدث من وجهة نظر نظام التشغيل أثناء طلب HTTP ، وكيفية معالجة عدة طلبات في نفس الوقت ، وما هي مزايا وعيوب العمليات وسلاسل العمليات في خوادم الويب. سوف تتعرف على ميزات المواضيع في Python. دعونا نناقش الإدخال / الإخراج غير المحظور: كيفية التعامل مع الطلبات المتعددة في سلسلة محادثات واحدة.

دعونا نتحدث عن حلقة الحدث ولماذا هناك حاجة إليها. سنتطرق إلى الاختيار بين حل متزامن وغير متزامن.


العرض: yadi.sk/i/OhqXMEOKzNlK6g

المراجع


زاحف الويب باستخدام Corynines غير المتزامن: aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html
ديفيد بيزلي: المولدات: الحدود النهائية: youtube.com/watch؟v=D1twn9kLmYg

11. البرمجة غير المتزامنة. المحاضرة الثانية - ألكسندر فاسين


هذه المحاضرة عبارة عن جولة نظرة عامة قصيرة على Asyncio: المكتبة والواجهة والمعيار للبرمجة غير المتزامنة في Python.

سنلقي نظرة على الواجهة غير المتزامنة عالية المستوى (coroutine ، والمهمة ، والمستقبل ، وأساليب العمل معهم) ، والواجهة ذات المستوى المنخفض (حلقة الحدث ، والسياسات) ، بالإضافة إلى واجهات Python غير المتزامنة (مديري السياق ، والمكرر ، والمولدات ، والفهم). سنخبرك عن سبب الحاجة إلى aiohttp ، وكيفية كتابة تطبيقات الويب عليه. سوف تتعلم ما هي البرمجيات الوسيطة ، وكيف يسمح لك aiohttp بتسلسل البيانات ، وكيفية تنفيذ المهام غير المتزامنة في الخلفية.


العرض التقديمي: disk.yandex.ru/i/4gyVoP1DM9enxQ

المراجع


الخاص بك والمتزامن إنشاء (ديفيد بيزلي): youtu.be/Y4Gt3Xjd7G8
اليوم وغدا (يوري Selivanov) Asyncio: youtu.be/3rSAtD2gKQE
وPEP 492: coroutines مع المتزامن وبناء الجملة انتظار: python.org/dev/peps/pep-0492
وPEP 530: الاستيعاب غير المتزامن: python.org/dev/peps/pep-0530

12. البرمجة غير المتزامنة. المحاضرة الثالثة - ديمتري أورلوف


عند تطوير تطبيقات غير متزامنة مع Python و asyncio ، في بعض الأحيان تكون هناك مشاكل مرتبطة بإدارة مهام الخلفية ، وحظر stdout ، وإعادة محاولة السياسة ، وعمليات الحظر. سوف تتعلم كيف يقوم فريق خدمة Edadil بحل هذه المشاكل مع aiomisc ، والمفاهيم الأساسية لهذا المشروع مفتوح المصدر ، والفئات الأساسية ، والخدمات الجاهزة ، والديكور ، والعمل مع التدفقات وأكثر من ذلك بكثير.


عرض تقديمي: yadi.sk/i/SAJnWVQNfdHV0w aiomisc
التوثيق: pypi.org/project/aiomisc

All Articles