آموزش بردن پایتون به تولید: راهنمای نصب حرفه ای

Taking Python to Production: A Professional Onboarding Guide

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: دانشمندان داده، تحلیلگران و توسعه دهندگان مبتدی: انتقال از "کدگذار" به "مهندس نرم افزار" و یادگیری ارسال کد راه اندازی یک محیط توسعه حرفه ای Python - Visual Studio Code، pyenv، git، تکمیل خودکار گردش کار حرفه ای git را با GitHub و CI بیاموزید./CD با GitHub Actions ترمینال را با ZSH و افزونه‌ها بصری‌تر کنید نسخه و بسته نرم‌افزار پایتون و انتشار آن برای جامعه راه‌اندازی کنترل‌های خودکار کیفیت کد (تست، لینتینگ، مستندات، بررسی نوع و غیره) پیش نیازها:Basic Linux/bash دانش: cp، mv، ls، rm و غیره؛ <-- منبعی برای کمک به این موضوع وجود دارد. توانایی نصب دستورات کامپیوتری که از ترمینال *بومی* لینوکس پشتیبانی می کند. اگر روی MacOS یا Linux اجرا می کنید، خوب هستید. اگر از ویندوز 10 یا 11 استفاده می کنید، نحوه نصب WSL 2 را توضیح خواهیم داد (به ویدیوهای اولیه ویندوز مراجعه کنید). دانش سینتکس پایتون: حلقه‌ها، توابع، کلاس‌ها و غیره. خطاهای راحت گوگل برای رفع گیر کردن

این یک دوره آموزشی در مورد انتقال از "کدگذار" به "مهندس نرم افزار" است. این به طور خاص ابزارهای مورد نیاز برای توسعه و "ارسال" نرم افزارهای آماده تولید با پایتون را پوشش می دهد.


به عنوان یک مهندس MLOps، نقش من این است که به دانشمندان داده، تحلیلگران و مهندسان جوان کمک کنم تا در تولید محصولات خودکفاتر شوند.

این دوره ترکیبی از ابزارهای اساسی، شیوه‌های مهندسی، و توصیه‌های شغلی را پوشش می‌دهد که مهندسان جدید باید در طول فرآیند ورود به تیم هنگام پیوستن به تیم داده شوند (اما اغلب راهنمایی دریافت نمی‌کنند!).

در پایان این دوره، باید مطمئن باشید که در پروژه‌های نرم‌افزاری پیچیده در یک محیط تیمی، چه منبع باز یا در یک شرکت مشارکت می‌کنید (یا لطفاً ظرف 30 روز درخواست بازپرداخت کنید!).

خواهید فهمید که چگونه پروژه های متن باز و بسته اجرا می شوند و چگونه پروژه های خود را اجرا کنید.

در دوره، ما کد بسیار کمی می نویسیم و در عوض روی جنبه های غیر کدنویسی مهندسی نرم افزار تمرکز می کنیم که شما را به عضوی موثر در جامعه مهندسی نرم افزار تبدیل می کند.

که گفته شد، قبل از شرکت در این دوره باید درک کاملی از اصول پایتون (حلقه‌ها، توابع، کلاس‌ها و غیره) داشته باشید.


انتظار یادگیری دارید

  • نحوه راه اندازی یک محیط توسعه حرفه ای پایتون

  • نحوه راه اندازی یک گردش کار حرفه ای برای توسعه پایتون با کد ویژوال استودیو . تاکید بیشتر بر تکمیل خودکار

  • نحوه استفاده از git، GitHub، "استراتژی های شاخه بندی" و ادغام آنها با VS Code و ترمینال

  • چگونه کد تمیز و قابل نگهداری بنویسیم و اطمینان حاصل کنیم که تمام کدهای ارائه شده به پروژه های شما با کیفیت خوب هستند (تست، پرده بندی، قالب بندی، بررسی نوع، مستندات، و غیره)

  • نحوه انتشار نرم‌افزار با کیفیت تولید برای مخاطبان گسترده با بسته‌بندی، نسخه‌سازی، یکپارچه‌سازی مداوم و تحویل مداوم (پیش‌تعهد، GitHub Actions، PyPI)

  • چگونه تمام نکات بالا را قالب بندی کنیم تا بتوانید پروژه های جدید و با کیفیت بالا را در چند ثانیه ایجاد کنید

قبل از پرداخت هزینه برای این دوره، لطفاً از سخنرانی‌های پیش‌نمایش نمونه بگیرید تا بتوانید متوجه شوید که آیا این دوره برای شما مناسب است یا خیر.

در دوره می بینمت!

- اریک


سرفصل ها و درس ها

معرفی Introduction

  • معرفی دوره Course introduction

  • مهم! یادداشت های دوره و وب سایت دوره IMPORTANT! Course Notes and Course Website

  • دوره کرش لینوکس و ترمینال Linux and terminal crash course

راه اندازی محیط Environment Setup

  • VS Code را نصب کنید Install VS Code

  • مطمئن شوید که دستور «کد» را دارید Make sure you have the `code` command

  • فقط کاربران مک: Homebrew، Xcode و iTerm2 را نصب کنید Mac users only: Install Homebrew, Xcode, and iTerm2

  • فقط کاربران ویندوز: زیرسیستم ویندوز برای لینوکس (WSL2) را نصب کنید Windows users only: Install the Windows Subsystem for Linux (WSL2)

  • فقط کاربران ویندوز: کد VS را با WSL2 ادغام کنید Windows users only: Integrate VS Code with the WSL2

  • منابع: نصب git Resources: Installing git

  • نصب ابزار git CLI Installing the git CLI tool

بهبود ترمینال با ZSH Improving the terminal with ZSH

  • معرفی Introduction

  • نصب OhMyZSH Installing OhMyZSH

  • پیمایش با استفاده از ZSH و نصب افزونه های ZSH Navigating using ZSH and installing ZSH plugins

  • فایل ~/.zshrc و مضامین ZSH The ~/.zshrc file and ZSH themes

  • غیرفعال کردن/فعال کردن افزونه های ZSH. افزونه همه در یک Markdown. افزونه جستجوی وب Disabling/enabling ZSH plugins; All-in-one Markdown extension; web-search plugin

  • تکمیل خودکار Typeahead با پیشنهادات خودکار zsh Typeahead auto-completion with zsh-autosuggestions

  • برجسته سازی نحو با برجسته سازی zsh-syntax Syntax highlighting with zsh-syntax-highlighting

  • برگه تقلب: راه اندازی سریع ZSH Cheat sheet: quick ZSH setup

مدیریت چندین نسخه پایتون Managing multiple Python versions

  • مقدمه ای بر نسخه سازی معنایی (semver) Introduction to Semantic Versioning (semver)

  • نسخه معنایی (ادامه) Semantic Versioning (continued)

  • نسخه‌سازی معنایی Semantic Versioning

  • چرا توسعه دهندگان باید بتوانند بین چندین نسخه پایتون جابجا شوند Why developers need to be able to switch between multiple Python versions

  • منابع نصب pyenv Resources for installing pyenv

  • نصب و بررسی اجمالی pyenv برای مدیریت چندین نسخه پایتون Installation and overview of pyenv for managing multiple Python versions

  • تاریخچه تغییرات پایتون؛ مروری بر چگونگی تکامل پایتون History of Python changes; Overview of how Python evolves

کد VS: میانبرها، تکمیل خودکار و محیط های مجازی VS Code: shortcuts, auto-completion, and virtual environments

  • مرجع میانبر صفحه کلید VS Code VS Code keyboard shortcut reference

  • VS Code: چیدمان و کلیدهای میانبر VS Code: layout and key shortcuts

  • Python/Pylance: بهبود پشتیبانی از refactoring و syntax highlighting Python/Pylance: improve refactoring and syntax highlighting support

  • مرحله اشکال زدایی در VS Code Step debugging in VS Code

  • پیش نمایش محیط های مجازی Preview of virtual environments

  • محیط های مجازی پایتون و متغیر PATH Python virtual environments and the PATH variable

Git و VS Code Git and VS Code

  • معرفی git با مقایسه آن با Google Docs Introducing git by comparing it to Google Docs

  • پسوند لنز Git Git lens extension

  • مرجع دستور Git Git command reference

  • git CLI و commits git CLI and commits

  • انجام تعهد Making a commit

  • سفر در زمان و بهترین روش‌ها برای انجام تعهدات Time traveling and best practices for making commits

  • git stash git stash

  • (قسمت 1) انشعاب git - شهود بصری (Part 1) git branching - visual intuition

  • (قسمت 2) انشعاب git - عملی در VS Code (Part 2) git branching - hands-on in VS Code

  • ادغام شاخه های git Merging git branches

  • حل تعارضات ادغام Resolving merge conflicts

  • [اضافی] بازی انشعاب git [Extra] git branching game

  • تگ های git git tags

  • خلاصه: گردش کار git محلی Recap: the local git workflow

بررسی GitHub و Code GitHub and Code Review

  • پیش نمایش بقیه دوره Preview of the rest of the course

  • GitHub چیست؟ What is GitHub?

  • ایجاد یک مخزن در GitHub Creating a repository in GitHub

  • ریموت های شبیه سازی و git Cloning and git remotes

  • درخواست‌ها و بررسی کدها Pull Requests and Code Review

  • انجام بازبینی کد با درخواست کشش Conducting Code Review with a Pull Request

  • خلاصه: گردش کار git راه دور Recap: the remote git workflow

یکپارچه سازی پیوسته: کدهای تمیز، فرمت کننده ها، لینترها و ادغام کدهای VS Continuous Integration: clean code, formatters, linters and VS Code integrations

  • راهنمای بخش: منابع، پیوندها، تکالیف، یادداشت های خلاصه و غیره. Section guide: resources, links, assignments, summary notes, etc.

  • کد پاک و چرایی اهمیت آن Clean code and why it's important

  • راهنماهای سبک پایتون: گوگل و PEP 8 Python style guides: Google and PEP 8

  • Refactoring برای خوانایی بهتر Refactoring for better readability

  • مقدمه ای بر ادغام مستمر و بهترین شیوه ها برای روابط عمومی Introduction to Continuous Integration and best practices for PRs

  • "جهنم روابط عمومی" و بحث بیشتر در مورد ادغام مداوم "PR hell" and more discussion of Continuous Integration

  • فرمت خودکار با سیاه، سیستم تنظیمات VS Code و "جنگ مقدس" Autoformatting with Black, VS Code's settings system, and "Holy Wars"

  • Pylint قسمت 1 - معرفی Linters Pylint Part 1 - Introducing Linters

  • Pylint قسمت 2 - ادغام با VS Code Pylint Part 2 - Integrating with VS Code

  • Pylint قسمت 3 - پیکربندی Pylint با فایل پیکربندی و آرگومان های CLI Pylint Part 3 - Configuring Pylint w/ a config file and CLI arguments

  • Flake8 قسمت 1 - استفاده و پس زمینه Flake8 Part 1 - Usage and background

  • Flake8 Part 2 - افزونه های Flake8 با Darglint به عنوان مثال Flake8 Part 2 - Flake8 plugins w/ Darglint as an example

  • isort: مرتب سازی عبارات واردات isort: sorting import statements

  • «متریک های کد» مانند «پیچیدگی سیکلوماتیک» با رادون، زنون و مک کیب "Code metrics" like "cyclomatic complexity" with Radon, Xenon, and McCabe

  • تایپ قسمت 1 - نکات تایپ، تکمیل خودکار، بررسی نوع استاتیک در مقابل پویا Typing Part 1 - type hints, autocompletion, static vs dynamic type checking

  • تایپ قسمت 2 - تایپ Mypy و ابتدایی Typing Part 2 - Mypy and basic typing

  • تایپ قسمت 3 - انواع ساده و پیچیده Typing Part 3 - Simple and Complex Types

  • تایپ قسمت 4 - اتحادیه و اختیاری Typing Part 4 - Union and Optional

  • تایپ قسمت 5 - TypedDict، کلاس های داده، NamedTuple، انواع خود مرجع Typing Part 5 - TypedDict, dataclasses, NamedTuple, self-referential types

  • تایپ قسمت 6 - انواع عمومی Typing Part 6 - Generic Types

  • تایپ قسمت 7 - تایپ Stubs و افزودن تدریجی انواع به پایگاه های کد موجود Typing Part 7 - Type Stubs and incrementally adding types to existing codebases

  • تیره تر: پروژه های قدیمی به تدریج پرز می شوند Darker: incrementally lint legacy projects

  • راف: آخرین لینتر پایتون تا کنون؟ Ruff: the last Python linter ever?

ادغام مستمر - چارچوب قبل از تعهد Continuous Integration - The pre-commit framework

  • گردش کار یکپارچه سازی مداوم با ابزارهای کیفیت کد A Continuous Integration workflow with code quality tools

  • رویکرد CI 1 - نوشتن یک اسکریپت که هر ابزار را فراخوانی می کند CI Approach 1 - Writing a script that calls each tool

  • قلاب‌های پیش‌فرض Git Git pre-commit hooks

  • رویکرد CI 2 - چارچوب پیش تعهد CI Approach 2 - The pre-commit framework

  • جمع آوری قلاب قبل از انجام تعهد Pre-commit hook roundup

  • گشت و گذار در یک فایل کانفیگ پیش commit پیشرفته Tour of an advanced pre-commit config file

اقدامات GitHub GitHub Actions

  • اولین "جریان کاری" اکشن های GitHub ما Our first GitHub Actions "workflow"

  • GitHub Actions: اجرای یک گردش کار GitHub Actions: running a workflow

  • تعمیر ساخت و استفاده از pre-commit Fixing the build and using pre-commit

  • مجوزهای شعبه، بررسی های ادغام، و درخواست های کششی Branch permissions, merge checks, and pull requests

  • صرفه جویی در هزینه در GitHub Actions Saving money on GitHub Actions

بسته بندی پایتون Python Packaging

  • بخش معرفی - بسته بندی پایتون Section Intro - Python Packaging

  • PYTHONPATH و واردات در پایتون PYTHONPATH and imports in Python

  • هک PYTHONPATH (ادامه دارد) PYTHONPATH hacking (continued)

  • اولین فایل setup.py ما Our first setup.py file

  • اسناد setuptools; find_packages setuptools docs; find_packages

  • pip install --editable pip install --editable

  • install_requires و تکرارپذیری install_requires and reproducibility

  • کاستی های قالب sdist Shortcomings of sdist format

  • چرخ ها Wheels

  • داستان اصلی pyproject.toml; ساخت وابستگی توضیح داده شد pyproject.toml origin story; Build dependencies explained

  • فرار از جهنم فایل پیکربندی. setup.cfg Escaping config file hell; setup.cfg

  • حذف setup.cfg به لطف PEP 621 Removing setup.cfg thanks to PEP 621

  • حذف setup.py؛ PEP 517; ساخت backends Removing setup.py; PEP 517; Build backends

  • فایل های داده - قسمت 1; مثال استفاده برای گنجاندن فایل های داده در یک بسته Data files - part 1; example use case for including data files in a package

  • فایل های داده - قسمت 2; MANIFEST.in و جایگزین های خاص build-backend Data files - Part 2; MANIFEST.in and build-backend-specific alternatives

  • مدیریت وابستگی؛ نمودارهای وابستگی و وابستگی های قفل Dependency management; Dependency graphs and locking dependencies

  • نمودارهای وابستگی Dependency graphs

  • درختان محدودیت و "جهنم وابستگی" Constraint trees and "dependency hell"

  • درختان محدودیت در نسخه های بسته ناپایدار هستند Constraint trees are unstable across package versions

  • وابستگی های اختیاری AKA "extras" Optional dependencies AKA "extras"

  • خرید وابستگی با شاخص بسته اسنیک پایتون Shopping for dependencies with the Snyk Python package index

مقدمه ای برای تحویل مداوم: انتشار در PyPI Intro to Continuous Delivery: Publishing to PyPI

  • بخش مقدمه Section Introduction

  • DevOps و Waterfall vs Agile DevOps and Waterfall vs Agile

  • انتشار در PyPI؛ تست در مقابل Prod PyPI Publishing to PyPI; Test vs Prod PyPI

  • ایجاد توکن های API برای PyPI Generating API tokens for PyPI

  • اجرای «آپلود ریسمان». Running `twine upload`

  • Task runners - part 1 - CMake and Makefile Task runners - part 1 - CMake and Makefile

  • Task runners - قسمت 2 - جایگزین‌های CMake (Just، PyInvoke، Bash) Task runners - part 2 - Alternatives to CMake (Just, PyInvoke, Bash)

  • Task runners - part 3 - Bash as a task runner Task runners - part 3 - Bash as a task runner

  • انتشار برای تست PyPI Publishing to Test PyPI

  • انتشار در Prod PyPI. چرا باید استقرار را به GitHub Actions منتقل کنیم Publishing to Prod PyPI; Why we should move deployment to GitHub Actions

خودکارسازی تحویل مداوم بسته‌های پایتون با اکشن‌های GitHub Automating Continuous Delivery of Python Packages with GitHub Actions

  • معرفی بخش Introduction to the section

  • چرا و چرا "محیط های تحویل" What and why of "delivery environments"

  • گردش کار برای بسته های پایتون Workflow for Python packages

  • راه اندازی شنوندگان محرک برای گردش کار GitHub Actions Setting up trigger listeners for the GitHub Actions workflow

  • فشار دادن برای تست PyPI از CI. مدیریت زمینه ها و اسرار قسمت 1 Pushing to Test PyPI from CI; Contexts and secrets management part 1

  • مدیریت زمینه ها و اسرار قسمت 2 Contexts and secrets management part 2

  • چند پیشرفت جزئی در خط لوله پیش از ادغام A few minor improvements to the pre-merge pipeline

  • فعال کردن پرده در خط لوله Enabling linting in the pipeline

  • نوشتن خط لوله پس از ادغام Writing the post-merge pipeline

  • افزودن تگ git و اجتناب از انتشارات تکراری Adding git tags and avoiding duplicate releases

تکنیک های بهینه سازی اقدامات پیشرفته GitHub Advanced GitHub Actions Optimization Techniques

  • الزامات قفل کردن Locking requirements

  • کش وابستگی Dependency Caching

  • موازی سازی Parallelization

  • ارسال مصنوعات (فایل) بین مشاغل Passing artifacts (files) between jobs

تست نرم افزار و Pytest Software Testing and Pytest

  • معرفی تست نرم افزار Introducing software testing

  • مقدمه ای برای پایتست Intro to pytest

  • راه اندازی pytest (پایه) Setting up pytest (basic)

  • کیهان آزمایشی Test case universe

  • موارد آزمون پارامتری شده و جهان مورد آزمایش Parameterized test cases and the test case universe

  • نشانگرهای Pytest برای رد شدن از تست های آهسته؛ ارسال آرگومان به اجرا.sh Pytest markers to skip slow tests; passing arguments to run.sh

  • تست پوشش قسمت 1 - پوشش در پوشه src/ Test coverage part 1 - coverage on src/ folder

  • پوشش تست قسمت 2 Test coverage part 2

  • تست در GitHub Actions، تست فایل Wheel Testing in GitHub Actions, Testing the Wheel file

  • ادغام کد Pytest در مقابل کد Pytest VS Code Integration

[هنوز مقاله ای وجود ندارد] پروژه دوره: بسته پیشرفته پایتون و قالب مخزن [No Articles Yet] Course project: Advanced Python package and repo template

  • نمای کلی پروژه و نسخه ی نمایشی Project overview and demo

  • معماری پروژه نهایی Architecture of Final Project

  • کنار: رشته های قالب بندی شده Jinja2 Aside: Jinja2 Templated Strings

  • معرفی Cookiecutter Introducing Cookiecutter

  • شروع پروژه نهایی - ساخت یک قالب بی اهمیت Cookiecutter Starting the final project - making a trivial Cookiecutter template

  • یک کلید پاسخ وجود دارد! مخزن مرجع در GitHub There is an answer key! Reference repo in GitHub

  • شروع پروژه نهایی: انشعاب مخزن استارت Starting the final project: forking the starter repo

  • الگوسازی پروژه شروع با Cookiecutter Templatizing the starter project with Cookiecutter

  • گشت و گذار در فایل های شروع پروژه نهایی Tour of the final project starter files

  • اجرای پروژه تولید شده (نصب deps، اجرای تست، لینت و غیره) Operating a generated project (install deps, run tests, lint, etc.)

  • رفع مشکل پیش commit در قالب Fixing an issue with pre-commit in the template

  • چه چیزی را می توانیم/باید در مورد الگوی خود آزمایش کنیم؟ What could/should we test about our template?

  • نوشتن اولین تست الگوی ما Writing our first template test

  • عیب یابی سیاهی (و سایر برنامه های افزودنی) در VS Code Troubleshooting black (and other extensions) in VS Code

  • معرفی Pytest Fixtures Introducing Pytest Fixtures

  • نوشتن فیکسچر Pytest برای تولید یک پروژه Writing a Pytest fixture for generating a project

  • قسمت 1 - conftest.py - توابع کمکی و Const ها را در فایل های جداگانه استخراج کنید Part 1 - conftest.py - Extract helper functions and consts into separate files

  • قسمت 2 - conftest.py - استخراج فیکسچرهای Pytest به فایل های اختصاصی Part 2 - conftest.py - Extracting Pytest fixtures to dedicated files

  • نوشتن یک تست برای "ساخت پرز" Writing a test for "make lint"

  • نوشتن تست برای "تست ساختن" Writing a test for "make test"

  • موازی سازی تست ها با pytest-xdist Parallelizing tests with pytest-xdist

  • تست های پایانی؛ بهبود طرح‌بندی تست‌ها/دیر در پروژه الگو Finishing tests; improving the tests/ dir layout in the template project

  • چالش: CI/CD را برای مخزن پروژه دوره فعال کنید Challenge: Enable CI/CD for the course project repository

  • راه حل: CI/CD را برای مخزن پروژه دوره فعال کنید Solution: Enable CI/CD for the course project repository

  • چالش: یک پارامتر "package_import_name" را به الگوی Cookiecutter اضافه کنید Challenge: add a "package_import_name" parameter to the Cookiecutter template

  • راه حل: یک پارامتر "package_import_name" را به قالب Cookiecutter اضافه کنید Solution: add a "package_import_name" parameter to the Cookiecutter template

  • نصب GitHub CLI (که مشابه git CLI نیست!) Installing the GitHub CLI (not the same thing as the git CLI!)

  • برنامه ریزی فرم ایجاد یا به روز رسانی مخزن Planning the create-or-update-repo form

  • قسمت 1 - اسکریپت - ایجاد - مخزن - اگر - وجود ندارد Part 1 - Script - create-repo-if-not-exists

  • اسکریپت قسمت 2 - open-pr-with-generated-project Script Part 2 - open-pr-with-generated-project

  • اسکریپت قسمت 3 - configure-repo Script Part 3 - configure-repo

  • همه آن ها را در یک گردش کاری GitHub Actions گرد هم می آورد Bringing it all together in a GitHub Actions workflow

  • تصحیح auth برای GitHub CLI با استفاده از یک رمز شخصی در گردش کار Fixing auth for the GitHub CLI using a personal token in the workflow

  • نمایش پروژه نهایی (دوباره، به جز این که این بار مال شماست!) Demo the final project (again, except this time it's yours!)

نمایش نظرات

آموزش بردن پایتون به تولید: راهنمای نصب حرفه ای
جزییات دوره
27.5 hours
174
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
621
4.9 از 5
دارد
دارد
دارد
Eric Riddoch
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Eric Riddoch Eric Riddoch

مربی | مهندس ارشد ML Ops