آموزش میکروسرویس با Node JS و React

Microservices with Node JS and React

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: با استفاده از Microservices ساخته شده با Node، React، Docker و Kubernetes Architect یک برنامه تجارت الکترونیک بسازید، استقرار و مقیاس دهید. محیط سیستم های توزیع شده از مهارت های جاوا اسکریپت خود برای ساختن یک برنامه وب پیچیده استفاده کنید. یک برنامه Render-Side Rendered برای ارائه داده ها از میکروسرویس های خود بسازید. هر سرویس همانطور که طراحی شده است کار می کند. ارتباط داده ها بین سرویس ها با استفاده از یک گذرگاه رویداد سریع رعد و برق چیزی بجز کد سطح تولید ننویسید. بدون برش گوشه ها! پیش نیازها: دانش پایه جاوا اسکریپت و اکسپرس الزامی است دانش React خوب است اما لازم نیست شما باید با خط فرمان آشنا و راحت باشید.

معماری مبتنی بر رویداد؟ تحت پوشش! رندر سمت سرور با React؟ بله کد مقیاس پذیر و آماده تولید؟ اینجاست!

Microservice ها راه حل شماره یک برای ساختن و کوچک کردن برنامه هایی هستند که قصد رشد دارند. فقط یک مسئله کوچک: منابع کمی به صورت آنلاین وجود دارد که به پیچیده ترین و بدترین مسائل پیرامون خود می پردازد! من این دوره را برای رفع آن ساختم. این دوره به طور مستقیم به همه مسائل مهم در مورد میکروسرویس ها می پردازد. از چالش‌های تکثیر داده‌ها گرفته تا جریان‌های رویداد نامنظم گیج‌کننده، همه چالش‌های اصلی ساخت میکروسرویس‌ها پوشش داده می‌شوند.

این دوره علاوه بر تمرکز بر اصول اولیه میکروسرویس ها، مقدمه ای عالی برای دنیای توسعه فول استک است. شما تمام راه را از frontend کار خواهید کرد، برنامه React را با استفاده از Hooks مونتاژ می‌کنید تا باطن، از جمله طراحی پایگاه داده و استراتژی‌های استقرار. هر مرحله در طول مسیر با جزئیات فوق‌العاده، با نمودارهای فراوان پوشش داده شده است تا اطمینان حاصل شود که هر مرحله کاملاً شفاف است.

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

-------------------

این دوره چگونه کار می کند

این دوره بر روی استفاده از چارچوب میکروسرویس‌های خارج از قفسه تمرکز ندارد. بسیاری وجود دارند، اما عملکرد درونی و چالش های میکروسرویس ها را از شما پنهان می کنند. در عوض، از حداقل تعداد کتابخانه استفاده خواهیم کرد و تا حد امکان کد سفارشی می نویسیم. این شما را در معرض مشکلات چالش برانگیز و راه حل های هوشمندانه در هنگام رسیدگی به موضوعاتی مانند رویدادهای همگام می گذارد!


از چه فناوری استفاده خواهید کرد

از آنجایی که ما در حال ساخت یک برنامه فول استک هستیم، از فناوری های مختلفی استفاده خواهیم کرد. در فرانت اند، از React و Next JS برای ارائه محتوا به کاربران استفاده خواهیم کرد. هر سرویس با استفاده از Node و Express ایجاد می شود. داده های هر سرویس در پایگاه داده Mongo یا Redis نگهداری می شود. کل برنامه در کانتینرهای Docker اجرا شده در یک خوشه Kubernetes مستقر شده و اجرا می شود. در نهایت، تقریباً تمام کدهای این دوره با Typescript نوشته شده است.

این یک لیست ترسناک از فناوری ها است! با برخی از این موارد آشنا نیستید؟ مشکلی نیست! این دوره با این فرض ساخته شده است که شما فقط اصول Javascript و Express را می دانید. هیچ دانش دیگری لازم نیست - شما همه چیزهایی را که باید بدانید، یاد خواهید گرفت.


کاری که می توانید انجام دهید

در زمان تکمیل این دوره، می‌توانید:

  • یک برنامه کاربردی چند سرویسی را معمار کنید

  • تعیین کنید که آیا برنامه شما برای رویکرد میکروسرویس مناسب است یا خیر

  • درک و حل چالش‌ها در ارتباط ناهمگام و مبتنی بر رویداد بین سرویس‌ها

  • از Docker و Kubernetes برای استقرار یک برنامه چند سرویس در هر ارائه دهنده ابری استفاده کنید

  • سازماندهی و افزایش قابلیت استفاده مجدد کد در پروژه های بزرگ


آنچه خواهید آموخت

تعداد باور نکردنی مطلق از موضوعات در این دوره پوشش داده شده است. در اینجا فهرستی جزئی از کارهایی که انجام خواهید داد آمده است:

  • برای ایجاد ریزسرویس های مقیاس پذیر برای انواع دامنه های برنامه، الگوهایی را تمرین کنید

  • با استفاده از Hooks و Next JS، یک برنامه React از سمت سرور بسازید

  • یک پیاده سازی سفارشی از گذرگاه رویداد بنویسید

  • به صورت اختیاری، یک محیط توسعه را از طریق ارائه دهنده ابر اجرا کنید

  • پاسخ‌های ساختاریافته را از APIهای مختلف خود تضمین کنید

  • بهترین شیوه های ارتباط بین سرویس های مختلف را ببینید

  • خدمات خود را با استفاده از Kubernetes Deployments پیکربندی و مقیاس بندی کنید

  • محدودیت‌های ساختاری را در رویدادهای به اشتراک گذاشته شده در میکروسرویس‌ها مستند و اجرا کنید

  • دسترسی به APIهای خود را با استفاده از احراز هویت مبتنی بر JWT محدود کنید

  • و خیلی بیشتر!

این دوره‌ای است که آرزو می‌کردم زمانی که میکروسرویس‌ها را یاد می‌گرفتم. دوره‌ای که بر سخت‌ترین بخش‌ها تمرکز می‌کند، توضیحات واضحی ارائه می‌دهد و مزایا و معایب گزینه‌های مختلف طراحی را مورد بحث قرار می‌دهد. امروز ثبت نام کنید و در تسلط بر خدمات میکرو به من بپیوندید!


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

ایده های بنیادی پیرامون میکروسرویس ها Fundamental Ideas Around Microservices

  • نحوه دریافت کمک How to Get Help

  • منابع دوره Course Resources

  • به انجمن ما بپیوندید! Join Our Community!

  • میکروسرویس چیست؟ What Is a Microservice?

  • داده ها در میکروسرویس ها Data in Microservices

  • آزمون - داده ها در میکروسرویس ها Quiz - Data in Microservices

  • مشکلات بزرگ با داده ها Big Problems with Data

  • همگام سازی ارتباطات بین خدمات Sync Communication Between Services

  • ارتباطات مبتنی بر رویداد Event-Based Communication

  • روشی دیوانه کننده برای ذخیره سازی داده ها A Crazy Way of Storing Data

  • مزایا و معایب ارتباط Async Pros and Cons of Async Communication

ایده های بنیادی پیرامون میکروسرویس ها Fundamental Ideas Around Microservices

  • نحوه دریافت کمک How to Get Help

  • منابع دوره Course Resources

  • به انجمن ما بپیوندید! Join Our Community!

  • میکروسرویس چیست؟ What Is a Microservice?

  • داده ها در میکروسرویس ها Data in Microservices

  • آزمون - داده ها در میکروسرویس ها Quiz - Data in Microservices

  • مشکلات بزرگ با داده ها Big Problems with Data

  • همگام سازی ارتباطات بین خدمات Sync Communication Between Services

  • ارتباطات مبتنی بر رویداد Event-Based Communication

  • روشی دیوانه کننده برای ذخیره سازی داده ها A Crazy Way of Storing Data

  • مزایا و معایب ارتباط Async Pros and Cons of Async Communication

یک برنامه Mini-Microservices A Mini-Microservices App

  • مهم - دیگ بخار اختیاری Important - Optional Boilerplate

  • نمای کلی برنامه App Overview

  • راه اندازی پروژه Project Setup

  • ایجاد سرویس پست ها Posts Service Creation

  • تست سرویس پست ها Testing the Posts Service

  • پیاده سازی سرویس نظرات Implementing a Comments Service

  • تست نظرات سریع Quick Comments Test

  • توجه داشته باشید در برنامه React Note on the React App

  • پیشنهاد در مورد هشدار صادرات پیش فرض Suggestion Regarding a Default Export Warning

  • React Project Setup React Project Setup

  • ارسال پست ساختمان Building Post Submission

  • رسیدگی به خطاهای CORS Handling CORS Errors

  • واکشی و رندر کردن پست ها Fetching and Rendering Posts

  • ایجاد نظرات Creating Comments

  • نمایش نظرات Displaying Comments

  • برنامه React کامل شد Completed React App

  • درخواست استراتژی های حداقل سازی Request Minimization Strategies

  • یک راه حل Async An Async Solution

  • سوالات متداول در مورد رویدادهای Async Common Questions Around Async Events

  • نمای کلی اتوبوس رویداد Event Bus Overview

  • نکته مهم در مورد Node v15 و Unhandled Promise Rejections Important Note about Node v15 and Unhandled Promise Rejections

  • پیاده سازی اتوبوس رویداد اساسی A Basic Event Bus Implementation

  • انتشار رویدادها Emitting Events

  • انتشار رویدادهای ایجاد نظر Emitting Comment Creation Events

  • دریافت رویدادها Receiving Events

  • ایجاد سرویس Data Query Creating the Data Query Service

  • تجزیه رویدادهای ورودی Parsing Incoming Events

  • با استفاده از سرویس Query Using the Query Service

  • اضافه کردن یک ویژگی ساده Adding a Simple Feature

  • مشکلات مربوط به فیلتر کردن نظرات Issues with Comment Filtering

  • رویکرد دوم A Second Approach

  • نحوه مدیریت به روز رسانی منابع How to Handle Resource Updates

  • ایجاد سرویس تعدیل Creating the Moderation Service

  • اضافه کردن تعدیل نظر Adding Comment Moderation

  • یادآوری Node v15 و Error Catching Reminder about Node v15 and Error Catching

  • رسیدگی به اعتدال Handling Moderation

  • به روز رسانی محتوای نظرات Updating Comment Content

  • یک تست سریع A Quick Test

  • ارائه نظرات بر اساس وضعیت Rendering Comments by Status

  • برخورد با رویدادهای گمشده Dealing with Missing Events

  • به روز رسانی Node v15+ مورد نیاز برای Query Service Required Node v15+ Update for Query Service

  • اجرای همگام سازی رویداد Implementing Event Sync

  • همگام سازی رویداد در عمل Event Syncing in Action

یک برنامه Mini-Microservices A Mini-Microservices App

  • مهم - دیگ بخار اختیاری Important - Optional Boilerplate

  • نمای کلی برنامه App Overview

  • راه اندازی پروژه Project Setup

  • ایجاد سرویس پست ها Posts Service Creation

  • تست سرویس پست ها Testing the Posts Service

  • پیاده سازی سرویس نظرات Implementing a Comments Service

  • تست نظرات سریع Quick Comments Test

  • توجه داشته باشید در برنامه React Note on the React App

  • پیشنهاد در مورد هشدار صادرات پیش فرض Suggestion Regarding a Default Export Warning

  • React Project Setup React Project Setup

  • ارسال پست ساختمان Building Post Submission

  • رسیدگی به خطاهای CORS Handling CORS Errors

  • واکشی و رندر کردن پست ها Fetching and Rendering Posts

  • ایجاد نظرات Creating Comments

  • نمایش نظرات Displaying Comments

  • برنامه React کامل شد Completed React App

  • درخواست استراتژی های حداقل سازی Request Minimization Strategies

  • یک راه حل Async An Async Solution

  • سوالات متداول در مورد رویدادهای Async Common Questions Around Async Events

  • نمای کلی اتوبوس رویداد Event Bus Overview

  • نکته مهم در مورد Node v15 و Unhandled Promise Rejections Important Note about Node v15 and Unhandled Promise Rejections

  • پیاده سازی اتوبوس رویداد اساسی A Basic Event Bus Implementation

  • انتشار رویدادها Emitting Events

  • انتشار رویدادهای ایجاد نظر Emitting Comment Creation Events

  • دریافت رویدادها Receiving Events

  • ایجاد سرویس Data Query Creating the Data Query Service

  • تجزیه رویدادهای ورودی Parsing Incoming Events

  • با استفاده از سرویس Query Using the Query Service

  • اضافه کردن یک ویژگی ساده Adding a Simple Feature

  • مشکلات مربوط به فیلتر کردن نظرات Issues with Comment Filtering

  • رویکرد دوم A Second Approach

  • نحوه مدیریت به روز رسانی منابع How to Handle Resource Updates

  • ایجاد سرویس تعدیل Creating the Moderation Service

  • اضافه کردن تعدیل نظر Adding Comment Moderation

  • یادآوری Node v15 و Error Catching Reminder about Node v15 and Error Catching

  • رسیدگی به اعتدال Handling Moderation

  • به روز رسانی محتوای نظرات Updating Comment Content

  • یک تست سریع A Quick Test

  • ارائه نظرات بر اساس وضعیت Rendering Comments by Status

  • برخورد با رویدادهای گمشده Dealing with Missing Events

  • به روز رسانی Node v15+ مورد نیاز برای Query Service Required Node v15+ Update for Query Service

  • اجرای همگام سازی رویداد Implementing Event Sync

  • همگام سازی رویداد در عمل Event Syncing in Action

اجرای خدمات با داکر Running Services with Docker

  • مسائل استقرار Deployment Issues

  • چرا داکر؟ Why Docker?

  • چرا Kubernetes؟ Why Kubernetes?

  • Docker را نمی شناسید؟ این را نگاه کن. Don't Know Docker? Watch This.

  • نکته درباره خروجی ساخت Docker و Buildkit Note About Docker Build Output and Buildkit

  • داکر کردن سرویس پست ها Dockerizing the Posts Service

  • برخی از دستورات اولیه را مرور کنید Review Some Basic Commands

  • نکته مهم در مورد Node v17 Important Note Regarding Node v17

  • Dockering سایر خدمات Dockering Other Services

اجرای خدمات با داکر Running Services with Docker

  • مسائل استقرار Deployment Issues

  • چرا داکر؟ Why Docker?

  • چرا Kubernetes؟ Why Kubernetes?

  • Docker را نمی شناسید؟ این را نگاه کن. Don't Know Docker? Watch This.

  • نکته درباره خروجی ساخت Docker و Buildkit Note About Docker Build Output and Buildkit

  • داکر کردن سرویس پست ها Dockerizing the Posts Service

  • برخی از دستورات اولیه را مرور کنید Review Some Basic Commands

  • نکته مهم در مورد Node v17 Important Note Regarding Node v17

  • Dockering سایر خدمات Dockering Other Services

سازماندهی مجموعه خدمات با Kubernetes Orchestrating Collections of Services with Kubernetes

  • هشدار در Docker Desktop برای لینوکس Warning on Docker Desktop for Linux

  • نصب Kubernetes Installing Kubernetes

  • نکته مهم برای کاربران Minikube و MicroK8s IMPORTANT Note for Minikube and MicroK8s Users

  • تور کوبرنتیس A Kubernetes Tour

  • اصطلاحات مهم Kubernetes Important Kubernetes Terminology

  • نکاتی در مورد فایل های پیکربندی Notes on Config Files

  • ایجاد یک پاد Creating a Pod

  • خطاهای ErrImagePull، ErrImageNeverPull و ImagePullBackoff ErrImagePull, ErrImageNeverPull and ImagePullBackoff Errors

  • درک یک Pod Spec Understanding a Pod Spec

  • دستورات رایج Kubectl Common Kubectl Commands

  • نام مستعار صرفه جویی در زمان A Time-Saving Alias

  • معرفی استقرارها Introducing Deployments

  • ایجاد یک استقرار Creating a Deployment

  • دستورات رایج در اطراف استقرارها Common Commands Around Deployments

  • به روز رسانی استقرارها Updating Deployments

  • روش ترجیحی برای به‌روزرسانی استقرارها Preferred Method for Updating Deployments

  • شبکه با خدمات Networking With Services

  • ایجاد یک سرویس NodePort Creating a NodePort Service

  • دسترسی به خدمات NodePort Accessing NodePort Services

  • راه اندازی Cluster IP Services Setting Up Cluster IP Services

  • ساخت یک استقرار برای اتوبوس رویداد Building a Deployment for the Event Bus

  • افزودن خدمات ClusterIP Adding ClusterIP Services

  • نحوه برقراری ارتباط بین خدمات How to Communicate Between Services

  • به روز رسانی آدرس های سرویس Updating Service Addresses

  • تایید ارتباط Verifying Communication

  • افزودن پرس و جو، تعدیل و نظرات Adding Query, Moderation and Comments

  • تست ارتباط Testing Communication

  • خدمات متعادل کننده بار Load Balancer Services

  • Load Balancers و Ingress Load Balancers and Ingress

  • مهم - رد نشوید - اطلاعات نصب Ingress Nginx Important - DO NOT SKIP - Ingress Nginx Installation Info

  • Ingress-Nginx را نصب کنید Installing Ingress-Nginx

  • Ingress v1 API مورد نیاز به‌روزرسانی است Ingress v1 API Required Update

  • نوشتن فایل های پیکربندی Ingress Writing Ingress Config Files

  • نکته مهم در مورد پورت 80 Important Note About Port 80

  • بهینه سازی فایل میزبان Hosts File Tweak

  • نکته مهم برای افزودن متغیر محیطی Important Note to Add Environment Variable

  • استقرار برنامه React Deploying the React App

  • مسیرهای منحصر به فرد Unique Route Paths

  • پیکربندی مسیر نهایی Final Route Config

  • معرفی Skaffold Introducing Skaffold

  • راه اندازی داربست Skaffold Setup

  • اولین بار استارت آپ Skaffold First Time Skaffold Startup

  • چند نکته در مورد Skaffold A Few Notes on Skaffold

سازماندهی مجموعه خدمات با Kubernetes Orchestrating Collections of Services with Kubernetes

  • هشدار در Docker Desktop برای لینوکس Warning on Docker Desktop for Linux

  • نصب Kubernetes Installing Kubernetes

  • نکته مهم برای کاربران Minikube و MicroK8s IMPORTANT Note for Minikube and MicroK8s Users

  • تور کوبرنتیس A Kubernetes Tour

  • اصطلاحات مهم Kubernetes Important Kubernetes Terminology

  • نکاتی در مورد فایل های پیکربندی Notes on Config Files

  • ایجاد یک پاد Creating a Pod

  • خطاهای ErrImagePull، ErrImageNeverPull و ImagePullBackoff ErrImagePull, ErrImageNeverPull and ImagePullBackoff Errors

  • درک یک Pod Spec Understanding a Pod Spec

  • دستورات رایج Kubectl Common Kubectl Commands

  • نام مستعار صرفه جویی در زمان A Time-Saving Alias

  • معرفی استقرارها Introducing Deployments

  • ایجاد یک استقرار Creating a Deployment

  • دستورات رایج در اطراف استقرارها Common Commands Around Deployments

  • به روز رسانی استقرارها Updating Deployments

  • روش ترجیحی برای به‌روزرسانی استقرارها Preferred Method for Updating Deployments

  • شبکه با خدمات Networking With Services

  • ایجاد یک سرویس NodePort Creating a NodePort Service

  • دسترسی به خدمات NodePort Accessing NodePort Services

  • راه اندازی Cluster IP Services Setting Up Cluster IP Services

  • ساخت یک استقرار برای اتوبوس رویداد Building a Deployment for the Event Bus

  • افزودن خدمات ClusterIP Adding ClusterIP Services

  • نحوه برقراری ارتباط بین خدمات How to Communicate Between Services

  • به روز رسانی آدرس های سرویس Updating Service Addresses

  • تایید ارتباط Verifying Communication

  • افزودن پرس و جو، تعدیل و نظرات Adding Query, Moderation and Comments

  • تست ارتباط Testing Communication

  • خدمات متعادل کننده بار Load Balancer Services

  • Load Balancers و Ingress Load Balancers and Ingress

  • مهم - رد نشوید - اطلاعات نصب Ingress Nginx Important - DO NOT SKIP - Ingress Nginx Installation Info

  • Ingress-Nginx را نصب کنید Installing Ingress-Nginx

  • Ingress v1 API مورد نیاز به‌روزرسانی است Ingress v1 API Required Update

  • نوشتن فایل های پیکربندی Ingress Writing Ingress Config Files

  • نکته مهم در مورد پورت 80 Important Note About Port 80

  • بهینه سازی فایل میزبان Hosts File Tweak

  • نکته مهم برای افزودن متغیر محیطی Important Note to Add Environment Variable

  • استقرار برنامه React Deploying the React App

  • مسیرهای منحصر به فرد Unique Route Paths

  • پیکربندی مسیر نهایی Final Route Config

  • معرفی Skaffold Introducing Skaffold

  • راه اندازی داربست Skaffold Setup

  • اولین بار استارت آپ Skaffold First Time Skaffold Startup

  • چند نکته در مورد Skaffold A Few Notes on Skaffold

معماری برنامه های چند سرویس Architecture of Multi-Service Apps

  • اقلام بزرگ بلیط Big Ticket Items

  • نمای کلی برنامه App Overview

  • انواع منابع Resource Types

  • انواع خدمات Service Types

  • رویدادها و طراحی معماری Events and Architecture Design

  • یادداشت در تایپ اسکریپت Note on Typescript

  • راه اندازی سرویس Auth Auth Service Setup

  • راه اندازی Auth K8s Auth K8s Setup

  • افزودن داربست Adding Skaffold

  • نکته در مورد بارگذاری مجدد کد Note on Code Reloading

  • Ingress v1 API مورد نیاز به‌روزرسانی است Ingress v1 API Required Update

  • راه اندازی Ingress-Nginx Ingress-Nginx Setup

  • فایل میزبان و هشدار امنیتی Hosts File and Security Warning

  • بخش 5 ایست بازرسی Section 5 Checkpoint

معماری برنامه های چند سرویس Architecture of Multi-Service Apps

  • اقلام بزرگ بلیط Big Ticket Items

  • نمای کلی برنامه App Overview

  • انواع منابع Resource Types

  • انواع خدمات Service Types

  • رویدادها و طراحی معماری Events and Architecture Design

  • یادداشت در تایپ اسکریپت Note on Typescript

  • راه اندازی سرویس Auth Auth Service Setup

  • راه اندازی Auth K8s Auth K8s Setup

  • افزودن داربست Adding Skaffold

  • نکته در مورد بارگذاری مجدد کد Note on Code Reloading

  • Ingress v1 API مورد نیاز به‌روزرسانی است Ingress v1 API Required Update

  • راه اندازی Ingress-Nginx Ingress-Nginx Setup

  • فایل میزبان و هشدار امنیتی Hosts File and Security Warning

  • بخش 5 ایست بازرسی Section 5 Checkpoint

استفاده از محیط ابری برای توسعه Leveraging a Cloud Environment for Development

  • یادداشت در مورد توسعه از راه دور Note on Remote Development

  • Remote Dev با Skaffold Remote Dev with Skaffold

  • اعتبار رایگان Google Cloud Free Google Cloud Credits

  • راه اندازی اولیه Google Cloud Google Cloud Initial Setup

  • ایجاد خوشه Kubernetes Kubernetes Cluster Creation

  • زمینه های Kubectl Kubectl Contexts

  • راه اندازی GCloud SDK Initializing the GCloud SDK

  • نصب GCloud Context Installing the GCloud Context

  • به روز رسانی پیکربندی Skaffold Updating the Skaffold Config

  • به روز رسانی های بیشتر Skaffold More Skaffold Updates

  • ایجاد یک بار متعادل کننده Creating a Load Balancer

  • پیکربندی و تست نهایی Final Config and Test

استفاده از محیط ابری برای توسعه Leveraging a Cloud Environment for Development

  • یادداشت در مورد توسعه از راه دور Note on Remote Development

  • Remote Dev با Skaffold Remote Dev with Skaffold

  • اعتبار رایگان Google Cloud Free Google Cloud Credits

  • راه اندازی اولیه Google Cloud Google Cloud Initial Setup

  • ایجاد خوشه Kubernetes Kubernetes Cluster Creation

  • زمینه های Kubectl Kubectl Contexts

  • راه اندازی GCloud SDK Initializing the GCloud SDK

  • نصب GCloud Context Installing the GCloud Context

  • به روز رسانی پیکربندی Skaffold Updating the Skaffold Config

  • به روز رسانی های بیشتر Skaffold More Skaffold Updates

  • ایجاد یک بار متعادل کننده Creating a Load Balancer

  • پیکربندی و تست نهایی Final Config and Test

استراتژی های عادی سازی پاسخ Response Normalization Strategies

  • ایجاد Route Handler Creating Route Handlers

  • مسیرهای داربست Scaffolding Routes

  • افزودن اعتبارسنجی Adding Validation

  • رسیدگی به خطاهای اعتبارسنجی Handling Validation Errors

  • مسائل مربوط به HTTPS پستچی Postman HTTPS Issues

  • پیچیدگی شگفت انگیز در مورد خطاها Surprising Complexity Around Errors

  • سایر منابع خطا Other Sources of Errors

  • راه حلی برای مدیریت خطا Solution for Error Handling

  • ساختن یک میان افزار مدیریت خطا Building an Error Handling Middleware

  • ارسال اطلاعات بیشتر به کنترل کننده خطا Communicating More Info to the Error Handler

  • رمزگذاری اطلاعات بیشتر در یک خطا Encoding More Information In an Error

  • طبقه بندی فرعی برای خطاهای سفارشی Subclassing for Custom Errors

  • تعیین نوع خطا Determining Error Type

  • تبدیل خطاها به پاسخ Converting Errors to Responses

  • انتقال منطق به خطاها Moving Logic Into Errors

  • بررسی خطاهای سفارشی ما Verifying Our Custom Errors

  • کد مربوط به خطای نهایی Final Error Related Code

  • نحوه تعریف خطاهای سفارشی جدید How to Define New Custom Errors

  • اوه اوه... مدیریت خطای همگام سازی Uh Oh... Async Error Handling

  • بخش 7 ایست بازرسی Section 7 Checkpoint

استراتژی های عادی سازی پاسخ Response Normalization Strategies

  • ایجاد Route Handler Creating Route Handlers

  • مسیرهای داربست Scaffolding Routes

  • افزودن اعتبارسنجی Adding Validation

  • رسیدگی به خطاهای اعتبارسنجی Handling Validation Errors

  • مسائل مربوط به HTTPS پستچی Postman HTTPS Issues

  • پیچیدگی شگفت انگیز در مورد خطاها Surprising Complexity Around Errors

  • سایر منابع خطا Other Sources of Errors

  • راه حلی برای مدیریت خطا Solution for Error Handling

  • ساختن یک میان افزار مدیریت خطا Building an Error Handling Middleware

  • ارسال اطلاعات بیشتر به کنترل کننده خطا Communicating More Info to the Error Handler

  • رمزگذاری اطلاعات بیشتر در یک خطا Encoding More Information In an Error

  • طبقه بندی فرعی برای خطاهای سفارشی Subclassing for Custom Errors

  • تعیین نوع خطا Determining Error Type

  • تبدیل خطاها به پاسخ Converting Errors to Responses

  • انتقال منطق به خطاها Moving Logic Into Errors

  • بررسی خطاهای سفارشی ما Verifying Our Custom Errors

  • کد مربوط به خطای نهایی Final Error Related Code

  • نحوه تعریف خطاهای سفارشی جدید How to Define New Custom Errors

  • اوه اوه... مدیریت خطای همگام سازی Uh Oh... Async Error Handling

  • بخش 7 ایست بازرسی Section 7 Checkpoint

مدیریت پایگاه داده و مدل سازی Database Management and Modeling

  • ایجاد پایگاه داده در Kubernetes Creating Databases in Kubernetes

  • اتصال به MongoDB Connecting to MongoDB

  • درک جریان ثبت نام Understanding the Signup Flow

  • گرفتن TypeScript و Mongoose برای همکاری Getting TypeScript and Mongoose to Cooperate

  • ایجاد مدل کاربر Creating the User Model

  • Checking User Properties را تایپ کنید Type Checking User Properties

  • افزودن خصوصیات استاتیک به یک مدل Adding Static Properties to a Model

  • تعریف ویژگی های سند اضافی Defining Extra Document Properties

  • آن براکت زاویه برای چیست؟ What's That Angle Bracket For?

  • ایجاد کاربر User Creation

  • مدیریت صحیح خطاها Proper Error Handling

  • نکته در مورد هش کردن رمز عبور Note on Password Hashing

  • یادآوری در مورد هش رمز عبور Reminder on Password Hashing

  • افزودن هش رمز عبور Adding Password Hashing

  • مقایسه رمز عبور هش شده Comparing Hashed Password

  • Mongoose Pre-Save Hooks Mongoose Pre-Save Hooks

  • بخش 8 ایست بازرسی Section 8 Checkpoint

مدیریت پایگاه داده و مدل سازی Database Management and Modeling

  • ایجاد پایگاه داده در Kubernetes Creating Databases in Kubernetes

  • اتصال به MongoDB Connecting to MongoDB

  • درک جریان ثبت نام Understanding the Signup Flow

  • گرفتن TypeScript و Mongoose برای همکاری Getting TypeScript and Mongoose to Cooperate

  • ایجاد مدل کاربر Creating the User Model

  • Checking User Properties را تایپ کنید Type Checking User Properties

  • افزودن خصوصیات استاتیک به یک مدل Adding Static Properties to a Model

  • تعریف ویژگی های سند اضافی Defining Extra Document Properties

  • آن براکت زاویه برای چیست؟ What's That Angle Bracket For?

  • ایجاد کاربر User Creation

  • مدیریت صحیح خطاها Proper Error Handling

  • نکته در مورد هش کردن رمز عبور Note on Password Hashing

  • یادآوری در مورد هش رمز عبور Reminder on Password Hashing

  • افزودن هش رمز عبور Adding Password Hashing

  • مقایسه رمز عبور هش شده Comparing Hashed Password

  • Mongoose Pre-Save Hooks Mongoose Pre-Save Hooks

  • بخش 8 ایست بازرسی Section 8 Checkpoint

استراتژی ها و گزینه های احراز هویت Authentication Strategies and Options

  • استراتژی های احراز هویت اساسی Fundamental Authentication Strategies

  • مشکلات بزرگ با استراتژی های احراز هویت Huge Issues with Authentication Strategies

  • پس کدام گزینه؟ So Which Option?

  • حل مسائل با گزینه شماره 2 Solving Issues with Option #2

  • یادآوری در مورد کوکی ها در مقابل JWT Reminder on Cookies vs JWT's

  • الزامات تأیید اعتبار Microservices Microservices Auth Requirements

  • مشکلات مربوط به JWT و رندر سمت سرور Issues with JWT's and Server Side Rendering

  • کوکی ها و رمزگذاری Cookies and Encryption

  • افزودن پشتیبانی جلسه Adding Session Support

  • تولید JWT Generating a JWT

  • کلیدهای امضای JWT JWT Signing Keys

  • ذخیره ایمن اسرار با Kubernetes Securely Storing Secrets with Kubernetes

  • ایجاد و دسترسی به اسرار Creating and Accessing Secrets

  • دسترسی به متغیرهای Env در یک Pod Accessing Env Variables in a Pod

  • ویژگی های پاسخ مشترک Common Response Properties

  • فرمت کردن ویژگی های JSON Formatting JSON Properties

  • جریان ورود The Signin Flow

  • میان افزار اعتبار سنجی درخواست رایج Common Request Validation Middleware

  • ورود به سیستم منطق Sign In Logic

  • تست ورود سریع Quick Sign In Test

  • کنترل کننده کاربر فعلی Current User Handler

  • بازگرداندن کاربر فعلی Returning the Current User

  • خروج از سیستم Signing Out

  • ایجاد میان افزار کاربر فعلی Creating a Current User Middleware

  • تعاریف نوع تقویتی Augmenting Type Definitions

  • نیاز به Auth برای دسترسی به مسیر Requiring Auth for Route Access

  • بخش 9 ایست بازرسی Section 9 Checkpoint

استراتژی ها و گزینه های احراز هویت Authentication Strategies and Options

  • استراتژی های احراز هویت اساسی Fundamental Authentication Strategies

  • مشکلات بزرگ با استراتژی های احراز هویت Huge Issues with Authentication Strategies

  • پس کدام گزینه؟ So Which Option?

  • حل مسائل با گزینه شماره 2 Solving Issues with Option #2

  • یادآوری در مورد کوکی ها در مقابل JWT Reminder on Cookies vs JWT's

  • الزامات تأیید اعتبار Microservices Microservices Auth Requirements

  • مشکلات مربوط به JWT و رندر سمت سرور Issues with JWT's and Server Side Rendering

  • کوکی ها و رمزگذاری Cookies and Encryption

  • افزودن پشتیبانی جلسه Adding Session Support

  • تولید JWT Generating a JWT

  • کلیدهای امضای JWT JWT Signing Keys

  • ذخیره ایمن اسرار با Kubernetes Securely Storing Secrets with Kubernetes

  • ایجاد و دسترسی به اسرار Creating and Accessing Secrets

  • دسترسی به متغیرهای Env در یک Pod Accessing Env Variables in a Pod

  • ویژگی های پاسخ مشترک Common Response Properties

  • فرمت کردن ویژگی های JSON Formatting JSON Properties

  • جریان ورود The Signin Flow

  • میان افزار اعتبار سنجی درخواست رایج Common Request Validation Middleware

  • ورود به سیستم منطق Sign In Logic

  • تست ورود سریع Quick Sign In Test

  • کنترل کننده کاربر فعلی Current User Handler

  • بازگرداندن کاربر فعلی Returning the Current User

  • خروج از سیستم Signing Out

  • ایجاد میان افزار کاربر فعلی Creating a Current User Middleware

  • تعاریف نوع تقویتی Augmenting Type Definitions

  • نیاز به Auth برای دسترسی به مسیر Requiring Auth for Route Access

  • بخش 9 ایست بازرسی Section 9 Checkpoint

تست میکروسرویس های جدا شده Testing Isolated Microservices

  • محدوده آزمایش Scope of Testing

  • اهداف تست Testing Goals

  • تست معماری Testing Architecture

  • ایندکس به App Refactor Index to App Refactor

  • چند وابستگی A Few Dependencies

  • به روز رسانی های مورد نیاز MongoMemoryServer Required MongoMemoryServer Updates

  • تنظیم محیط تست Test Environment Setup

  • اولین آزمون ما Our First Test

  • یک نکته مهم An Important Note

  • تست ورودی نامعتبر Testing Invalid Input

  • نیاز به ایمیل های منحصر به فرد Requiring Unique Emails

  • تغییر Node Env در طول آزمایش Changing Node Env During Tests

  • تست های مربوط به عملکرد ورود به سیستم Tests Around Sign In Functionality

  • تست خروج از سیستم Testing Sign Out

  • مشکلات مربوط به کوکی ها در طول آزمایش Issues with Cookies During Testing

  • راه حل آسان Auth Easy Auth Solution

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • تابع Auth Helper Auth Helper Function

  • تست درخواست های غیر تایید شده Testing Non-Authed Requests

  • بخش 10 ایست بازرسی Section 10 Checkpoint

تست میکروسرویس های جدا شده Testing Isolated Microservices

  • محدوده آزمایش Scope of Testing

  • اهداف تست Testing Goals

  • تست معماری Testing Architecture

  • ایندکس به App Refactor Index to App Refactor

  • چند وابستگی A Few Dependencies

  • به روز رسانی های مورد نیاز MongoMemoryServer Required MongoMemoryServer Updates

  • تنظیم محیط تست Test Environment Setup

  • اولین آزمون ما Our First Test

  • یک نکته مهم An Important Note

  • تست ورودی نامعتبر Testing Invalid Input

  • نیاز به ایمیل های منحصر به فرد Requiring Unique Emails

  • تغییر Node Env در طول آزمایش Changing Node Env During Tests

  • تست های مربوط به عملکرد ورود به سیستم Tests Around Sign In Functionality

  • تست خروج از سیستم Testing Sign Out

  • مشکلات مربوط به کوکی ها در طول آزمایش Issues with Cookies During Testing

  • راه حل آسان Auth Easy Auth Solution

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • تابع Auth Helper Auth Helper Function

  • تست درخواست های غیر تایید شده Testing Non-Authed Requests

  • بخش 10 ایست بازرسی Section 10 Checkpoint

یکپارچه سازی یک برنامه React ارائه شده از سمت سرور Integrating a Server-Side-Rendered React App

  • راه اندازی برنامه React Starting the React App

  • یادآوری در رندر سمت سرور Reminder on Server Side Rendering

  • پیشنهاد در مورد هشدار صادرات پیش فرض Suggestion Regarding a Default Export Warning

  • مبانی Next JS Basics of Next JS

  • ساختن تصویر بعدی Building a Next Image

  • اجرای بعدی در Kubernetes Running Next in Kubernetes

  • به‌روزرسانی کوچک برای پیکربندی Webpack سفارشی Small Update for Custom Webpack Config

  • نکته در مورد تشخیص تغییر فایل Note on File Change Detection

  • افزودن CSS جهانی Adding Global CSS

  • افزودن فرم ثبت نام Adding a Sign Up Form

  • مدیریت ورودی های ایمیل و رمز عبور Handling Email and Password Inputs

  • ثبت نام موفق حساب Successful Account Signup

  • رسیدگی به خطاهای اعتبارسنجی Handling Validation Errors

  • قلاب useRequest The useRequest Hook

  • با استفاده از useRequest Hook Using the useRequest Hook

  • پاسخ به تماس موفقیت آمیز An onSuccess Callback

  • مروری بر رندر سمت سرور Overview on Server Side Rendering

  • یادداشتی در مورد خطاهای ECONNREFUSED A note about ECONNREFUSED errors

  • واکشی داده ها در طول SSR Fetching Data During SSR

  • چرا خطا؟ Why the Error?

  • دو راه حل ممکن Two Possible Solutions

  • ارتباطات سرویس فضای نامی متقابل Cross Namespace Service Communication

  • چه زمانی GetInitialProps نامیده می شود؟ When is GetInitialProps Called?

  • روی سرور یا مرورگر On the Server or the Browser

  • فضای نام Ingress-Nginx و سرویس - به روز رسانی مهم Ingress-Nginx Namespace and Service - Important Update

  • مشخص کردن هاست Specifying the Host

  • عبور از میان کوکی ها Passing Through the Cookies

  • یک کلاینت API قابل استفاده مجدد A Reusable API Client

  • مطالب در صفحه فرود Content on the Landing Page

  • فرم ورود به سیستم The Sign In Form

  • هدر قابل استفاده مجدد A Reusable Header

  • حرکت GetInitialProps Moving GetInitialProps

  • مشکلات مربوط به برنامه سفارشی GetInitialProps Issues with Custom App GetInitialProps

  • مدیریت چندین GetInitialProps Handling Multiple GetInitialProps

  • عبور لوازم از طریق Passing Props Through

  • ساخت هدر Building the Header

  • نمایش مشروط پیوندها Conditionally Showing Links

  • خروج از سیستم Signing Out

  • React App Catchup & Checkpoint React App Catchup & Checkpoint

یکپارچه سازی یک برنامه React ارائه شده از سمت سرور Integrating a Server-Side-Rendered React App

  • راه اندازی برنامه React Starting the React App

  • یادآوری در رندر سمت سرور Reminder on Server Side Rendering

  • پیشنهاد در مورد هشدار صادرات پیش فرض Suggestion Regarding a Default Export Warning

  • مبانی Next JS Basics of Next JS

  • ساختن تصویر بعدی Building a Next Image

  • اجرای بعدی در Kubernetes Running Next in Kubernetes

  • به‌روزرسانی کوچک برای پیکربندی Webpack سفارشی Small Update for Custom Webpack Config

  • نکته در مورد تشخیص تغییر فایل Note on File Change Detection

  • افزودن CSS جهانی Adding Global CSS

  • افزودن فرم ثبت نام Adding a Sign Up Form

  • مدیریت ورودی های ایمیل و رمز عبور Handling Email and Password Inputs

  • ثبت نام موفق حساب Successful Account Signup

  • رسیدگی به خطاهای اعتبارسنجی Handling Validation Errors

  • قلاب useRequest The useRequest Hook

  • با استفاده از useRequest Hook Using the useRequest Hook

  • پاسخ به تماس موفقیت آمیز An onSuccess Callback

  • مروری بر رندر سمت سرور Overview on Server Side Rendering

  • یادداشتی در مورد خطاهای ECONNREFUSED A note about ECONNREFUSED errors

  • واکشی داده ها در طول SSR Fetching Data During SSR

  • چرا خطا؟ Why the Error?

  • دو راه حل ممکن Two Possible Solutions

  • ارتباطات سرویس فضای نامی متقابل Cross Namespace Service Communication

  • چه زمانی GetInitialProps نامیده می شود؟ When is GetInitialProps Called?

  • روی سرور یا مرورگر On the Server or the Browser

  • فضای نام Ingress-Nginx و سرویس - به روز رسانی مهم Ingress-Nginx Namespace and Service - Important Update

  • مشخص کردن هاست Specifying the Host

  • عبور از میان کوکی ها Passing Through the Cookies

  • یک کلاینت API قابل استفاده مجدد A Reusable API Client

  • مطالب در صفحه فرود Content on the Landing Page

  • فرم ورود به سیستم The Sign In Form

  • هدر قابل استفاده مجدد A Reusable Header

  • حرکت GetInitialProps Moving GetInitialProps

  • مشکلات مربوط به برنامه سفارشی GetInitialProps Issues with Custom App GetInitialProps

  • مدیریت چندین GetInitialProps Handling Multiple GetInitialProps

  • عبور لوازم از طریق Passing Props Through

  • ساخت هدر Building the Header

  • نمایش مشروط پیوندها Conditionally Showing Links

  • خروج از سیستم Signing Out

  • React App Catchup & Checkpoint React App Catchup & Checkpoint

به اشتراک گذاری کد و استفاده مجدد بین خدمات Code Sharing and Reuse Between Services

  • منطق مشترک بین خدمات Shared Logic Between Services

  • گزینه هایی برای اشتراک گذاری کد Options for Code Sharing

  • سازمان های NPM NPM Organizations

  • انتشار ماژول های NPM Publishing NPM Modules

  • راه اندازی پروژه Project Setup

  • اشتباه تایپی در فیلد فایل های package.json - رد نشوید Typo in package.json "files" Field - Do Not Skip

  • یک دستور انتشار آسان An Easy Publish Command

  • جابجایی کد مشترک Relocating Shared Code

  • به روز رسانی بیانیه های واردات Updating Import Statements

  • به روز رسانی ماژول مشترک Updating the Common Module

  • بخش 12 ایست بازرسی Section 12 Checkpoint

به اشتراک گذاری کد و استفاده مجدد بین خدمات Code Sharing and Reuse Between Services

  • منطق مشترک بین خدمات Shared Logic Between Services

  • گزینه هایی برای اشتراک گذاری کد Options for Code Sharing

  • سازمان های NPM NPM Organizations

  • انتشار ماژول های NPM Publishing NPM Modules

  • راه اندازی پروژه Project Setup

  • اشتباه تایپی در فیلد فایل های package.json - رد نشوید Typo in package.json "files" Field - Do Not Skip

  • یک دستور انتشار آسان An Easy Publish Command

  • جابجایی کد مشترک Relocating Shared Code

  • به روز رسانی بیانیه های واردات Updating Import Statements

  • به روز رسانی ماژول مشترک Updating the Common Module

  • بخش 12 ایست بازرسی Section 12 Checkpoint

ایجاد-خواندن-به روز رسانی-نابودی راه اندازی سرور Create-Read-Update-Destroy Server Setup

  • نمای کلی خدمات بلیط فروشی Ticketing Service Overview

  • راه اندازی پروژه Project Setup

  • اجرای سرویس بلیط Running the Ticket Service

  • URI اتصال Mongo Mongo Connection URI

  • به روز رسانی احراز هویت سریع Quick Auth Update

  • آزمون-رویکرد اول Test-First Approach

  • ایجاد روتر Creating the Router

  • افزودن محافظت از اعتبار Adding Auth Protection

  • جعل احراز هویت در طول آزمایش Faking Authentication During Tests

  • اصلاح جلسه مورد نیاز و یادآوری ورود به سیستم جهانی A Required Session Fix and a Global Signin Reminder

  • ساختن یک جلسه Building a Session

  • اعتبار سنجی درخواست تست Testing Request Validation

  • تایید عنوان و قیمت Validating Title and Price

  • یادآوری در Mongoose با TypeScript Reminder on Mongoose with TypeScript

  • تعریف مدل بلیط Defining the Ticket Model

  • ایجاد از طریق Route Handler Creation via Route Handler

  • تست نمایش مسیرها Testing Show Routes

  • شکست غیرمنتظره! Unexpected Failure!

  • اون ارور چیه؟! What's that Error?!

  • ثبت خطای بهتر Better Error Logging

  • پیاده سازی کامل مسیر شاخص Complete Index Route Implementation

  • به روز رسانی بلیط Ticket Updating

  • مدیریت به روز رسانی ها Handling Updates

  • بررسی مجوز Permission Checking

  • تغییرات به روز رسانی نهایی Final Update Changes

  • تست دستی Manual Testing

  • بخش 13 ایست بازرسی Section 13 Checkpoint

ایجاد-خواندن-به روز رسانی-نابودی راه اندازی سرور Create-Read-Update-Destroy Server Setup

  • نمای کلی خدمات بلیط فروشی Ticketing Service Overview

  • راه اندازی پروژه Project Setup

  • اجرای سرویس بلیط Running the Ticket Service

  • URI اتصال Mongo Mongo Connection URI

  • به روز رسانی احراز هویت سریع Quick Auth Update

  • آزمون-رویکرد اول Test-First Approach

  • ایجاد روتر Creating the Router

  • افزودن محافظت از اعتبار Adding Auth Protection

  • جعل احراز هویت در طول آزمایش Faking Authentication During Tests

  • اصلاح جلسه مورد نیاز و یادآوری ورود به سیستم جهانی A Required Session Fix and a Global Signin Reminder

  • ساختن یک جلسه Building a Session

  • اعتبار سنجی درخواست تست Testing Request Validation

  • تایید عنوان و قیمت Validating Title and Price

  • یادآوری در Mongoose با TypeScript Reminder on Mongoose with TypeScript

  • تعریف مدل بلیط Defining the Ticket Model

  • ایجاد از طریق Route Handler Creation via Route Handler

  • تست نمایش مسیرها Testing Show Routes

  • شکست غیرمنتظره! Unexpected Failure!

  • اون ارور چیه؟! What's that Error?!

  • ثبت خطای بهتر Better Error Logging

  • پیاده سازی کامل مسیر شاخص Complete Index Route Implementation

  • به روز رسانی بلیط Ticket Updating

  • مدیریت به روز رسانی ها Handling Updates

  • بررسی مجوز Permission Checking

  • تغییرات به روز رسانی نهایی Final Update Changes

  • تست دستی Manual Testing

  • بخش 13 ایست بازرسی Section 13 Checkpoint

سرور جریان NATS - پیاده سازی گذرگاه رویداد NATS Streaming Server - An Event Bus Implementation

  • حالا چی؟ What Now?

  • اطلاعیه سرور جریان NATS NATS Streaming Server Notice

  • سه مورد مهم Three Important Items

  • ایجاد یک استقرار جریان NATS Creating a NATS Streaming Deployment

  • یادداشت های بزرگ در مورد جریان NATS Big Notes on NATS Streaming

  • ساخت یک پروژه تست NATS Building a NATS Test Project

  • پورت فورواردینگ با Kubectl Port-Forwarding with Kubectl

  • انتشار رویدادها Publishing Events

  • تغییر کوچک فرمان مورد نیاز Small Required Command Change

  • گوش دادن به داده ها Listening For Data

  • دسترسی به داده های رویداد Accessing Event Data

  • تولید شناسه مشتری Client ID Generation

  • گروه های صف Queue Groups

  • حالت تأیید دستی Manual Ack Mode

  • بررسی سلامت مشتری Client Health Checks

  • خاموش شدن برازنده مشتری Graceful Client Shutdown

  • مسائل اصلی همزمانی Core Concurrency Issues

  • سوالات رایج Common Questions

  • [اختیاری] راه‌حل‌های همزمان احتمالی بیشتر [Optional] More Possible Concurrency Solutions

  • حل مسائل همزمانی Solving Concurrency Issues

  • کنترل همزمانی با اپلیکیشن Tickets Concurrency Control with the Tickets App

  • تحویل مجدد رویداد Event Redelivery

  • اشتراک های بادوام Durable Subscriptions

  • بخش 14 ایست بازرسی Section 14 Checkpoint

سرور جریان NATS - پیاده سازی گذرگاه رویداد NATS Streaming Server - An Event Bus Implementation

  • حالا چی؟ What Now?

  • اطلاعیه سرور جریان NATS NATS Streaming Server Notice

  • سه مورد مهم Three Important Items

  • ایجاد یک استقرار جریان NATS Creating a NATS Streaming Deployment

  • یادداشت های بزرگ در مورد جریان NATS Big Notes on NATS Streaming

  • ساخت یک پروژه تست NATS Building a NATS Test Project

  • پورت فورواردینگ با Kubectl Port-Forwarding with Kubectl

  • انتشار رویدادها Publishing Events

  • تغییر کوچک فرمان مورد نیاز Small Required Command Change

  • گوش دادن به داده ها Listening For Data

  • دسترسی به داده های رویداد Accessing Event Data

  • تولید شناسه مشتری Client ID Generation

  • گروه های صف Queue Groups

  • حالت تأیید دستی Manual Ack Mode

  • بررسی سلامت مشتری Client Health Checks

  • خاموش شدن برازنده مشتری Graceful Client Shutdown

  • مسائل اصلی همزمانی Core Concurrency Issues

  • سوالات رایج Common Questions

  • [اختیاری] راه‌حل‌های همزمان احتمالی بیشتر [Optional] More Possible Concurrency Solutions

  • حل مسائل همزمانی Solving Concurrency Issues

  • کنترل همزمانی با اپلیکیشن Tickets Concurrency Control with the Tickets App

  • تحویل مجدد رویداد Event Redelivery

  • اشتراک های بادوام Durable Subscriptions

  • بخش 14 ایست بازرسی Section 14 Checkpoint

اتصال به NATS در Node JS World Connecting to NATS in a Node JS World

  • شنوندگان NATS قابل استفاده مجدد Reusable NATS Listeners

  • کلاس چکیده شنونده The Listener Abstract Class

  • گسترش شنونده Extending the Listener

  • ریفکتور سریع Quick Refactor

  • استفاده از TypeScript برای اعتبارسنجی شنونده Leveraging TypeScript for Listener Validation

  • شماره موضوعات Subjects Enum

  • رابط رویداد سفارشی Custom Event Interface

  • اجرای موضوعات شنونده Enforcing Listener Subjects

  • توجه سریع: «فقط خواندنی» در Typescript Quick Note: 'readonly' in Typescript

  • اجرای انواع داده ها Enforcing Data Types

  • از کجا استفاده می شود؟ Where Does this Get Used?

  • ناشر سفارشی Custom Publisher

  • با استفاده از ناشر سفارشی Using the Custom Publisher

  • در انتظار انتشار رویداد Awaiting Event Publication

  • خلاصه تعاریف رویداد رایج Common Event Definitions Summary

  • به روز رسانی ماژول مشترک Updating the Common Module

  • راه اندازی مجدد NATS Restarting NATS

  • بخش 15 ایست بازرسی Section 15 Checkpoint

اتصال به NATS در Node JS World Connecting to NATS in a Node JS World

  • شنوندگان NATS قابل استفاده مجدد Reusable NATS Listeners

  • کلاس چکیده شنونده The Listener Abstract Class

  • گسترش شنونده Extending the Listener

  • ریفکتور سریع Quick Refactor

  • استفاده از TypeScript برای اعتبارسنجی شنونده Leveraging TypeScript for Listener Validation

  • شماره موضوعات Subjects Enum

  • رابط رویداد سفارشی Custom Event Interface

  • اجرای موضوعات شنونده Enforcing Listener Subjects

  • توجه سریع: «فقط خواندنی» در Typescript Quick Note: 'readonly' in Typescript

  • اجرای انواع داده ها Enforcing Data Types

  • از کجا استفاده می شود؟ Where Does this Get Used?

  • ناشر سفارشی Custom Publisher

  • با استفاده از ناشر سفارشی Using the Custom Publisher

  • در انتظار انتشار رویداد Awaiting Event Publication

  • خلاصه تعاریف رویداد رایج Common Event Definitions Summary

  • به روز رسانی ماژول مشترک Updating the Common Module

  • راه اندازی مجدد NATS Restarting NATS

  • بخش 15 ایست بازرسی Section 15 Checkpoint

مدیریت یک کلاینت NATS Managing a NATS Client

  • انتشار بلیت Publishing Ticket Creation

  • اطلاعات بیشتر در مورد انتشارات More on Publishing

  • NATS Client Singleton NATS Client Singleton

  • Node Nats استریم نصب Node Nats Streaming Installation

  • مانگوس را به یاد دارید؟ Remember Mongoose?

  • خطای TS - آیا فراموش کرده اید که "void" را در آرگومان نوع خود وارد کنید TS Error - Did you forget to include 'void' in your type argument

  • پیاده سازی Singleton Singleton Implementation

  • دسترسی به کلاینت NATS Accessing the NATS Client

  • خاموش شدن برازنده Graceful Shutdown

  • گوش دادن موفق! Successful Listen!

  • انتشار به روز بلیط Ticket Update Publishing

  • انتشار رویداد ناموفق بود Failed Event Publishing

  • رسیدگی به نارسایی های انتشار Handling Publish Failures

  • رفع چند تست Fixing a Few Tests

  • تغییر مسیر واردات Redirecting Imports

  • ارائه یک پیاده سازی ساختگی Providing a Mock Implementation

  • مجموعه آزمایشی Wide Mocks Test-Suite Wide Mocks

  • اطمینان از فراخوان های ساختگی Ensuring Mock Invocations

  • متغیرهای NATS Env NATS Env Variables

  • بخش 16 ایست بازرسی Section 16 Checkpoint

مدیریت یک کلاینت NATS Managing a NATS Client

  • انتشار بلیت Publishing Ticket Creation

  • اطلاعات بیشتر در مورد انتشارات More on Publishing

  • NATS Client Singleton NATS Client Singleton

  • Node Nats استریم نصب Node Nats Streaming Installation

  • مانگوس را به یاد دارید؟ Remember Mongoose?

  • خطای TS - آیا فراموش کرده اید که "void" را در آرگومان نوع خود وارد کنید TS Error - Did you forget to include 'void' in your type argument

  • پیاده سازی Singleton Singleton Implementation

  • دسترسی به کلاینت NATS Accessing the NATS Client

  • خاموش شدن برازنده Graceful Shutdown

  • گوش دادن موفق! Successful Listen!

  • انتشار به روز بلیط Ticket Update Publishing

  • انتشار رویداد ناموفق بود Failed Event Publishing

  • رسیدگی به نارسایی های انتشار Handling Publish Failures

  • رفع چند تست Fixing a Few Tests

  • تغییر مسیر واردات Redirecting Imports

  • ارائه یک پیاده سازی ساختگی Providing a Mock Implementation

  • مجموعه آزمایشی Wide Mocks Test-Suite Wide Mocks

  • اطمینان از فراخوان های ساختگی Ensuring Mock Invocations

  • متغیرهای NATS Env NATS Env Variables

  • بخش 16 ایست بازرسی Section 16 Checkpoint

تکرار داده های متقاطع در عمل Cross-Service Data Replication In Action

  • سرویس سفارشات The Orders Service

  • داربست خدمات سفارشات Scaffolding the Orders Service

  • تنظیمات بیشتر لمس کنید A Touch More Setup

  • قوانین مسیریابی ورودی Ingress Routing Rules

  • داربست چند گرداننده مسیر Scaffolding a Few Route Handlers

  • کوپلینگ خدمات ظریف Subtle Service Coupling

  • ارتباط سفارشات و بلیط Associating Orders and Tickets

  • سفارش راه اندازی مدل Order Model Setup

  • نیاز به Enum The Need for an Enum

  • ایجاد یک شماره وضعیت سفارش Creating an Order Status Enum

  • اطلاعات بیشتر در مورد Mongoose Refs More on Mongoose Refs

  • تعریف مدل بلیط Defining the Ticket Model

  • منطق ایجاد سفارش Order Creation Logic

  • پیدا کردن بلیط های رزرو شده Finding Reserved Tickets

  • روش‌های سند راحت Convenience Document Methods

  • زمان انقضای سفارش Order Expiration Times

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • راه اندازی مجموعه آزمایشی Test Suite Setup

  • به روز رسانی کوچک برای "مقدار نوع "typeof ObjectId" قابل فراخوانی نیست" Small Update for "Value of type 'typeof ObjectId' is not callable"

  • ادعای وجود بلیط Asserting Tickets Exist

  • ادعای بلیط های رزرو شده Asserting Reserved Tickets

  • تست مورد موفقیت Testing the Success Case

  • واکشی سفارشات کاربر Fetching a User's Orders

  • یک تست کمی پیچیده A Slightly Complicated Test

  • واکشی سفارشات فردی Fetching Individual Orders

  • آیا واکشی کار می کند؟ Does Fetching Work?

  • لغو یک سفارش Cancelling an Order

  • آیا می توانیم لغو کنیم؟ Can We Cancel?

  • بخش 17 ایست بازرسی Section 17 Checkpoint

تکرار داده های متقاطع در عمل Cross-Service Data Replication In Action

  • سرویس سفارشات The Orders Service

  • داربست خدمات سفارشات Scaffolding the Orders Service

  • تنظیمات بیشتر لمس کنید A Touch More Setup

  • قوانین مسیریابی ورودی Ingress Routing Rules

  • داربست چند گرداننده مسیر Scaffolding a Few Route Handlers

  • کوپلینگ خدمات ظریف Subtle Service Coupling

  • ارتباط سفارشات و بلیط Associating Orders and Tickets

  • سفارش راه اندازی مدل Order Model Setup

  • نیاز به Enum The Need for an Enum

  • ایجاد یک شماره وضعیت سفارش Creating an Order Status Enum

  • اطلاعات بیشتر در مورد Mongoose Refs More on Mongoose Refs

  • تعریف مدل بلیط Defining the Ticket Model

  • منطق ایجاد سفارش Order Creation Logic

  • پیدا کردن بلیط های رزرو شده Finding Reserved Tickets

  • روش‌های سند راحت Convenience Document Methods

  • زمان انقضای سفارش Order Expiration Times

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • راه اندازی مجموعه آزمایشی Test Suite Setup

  • به روز رسانی کوچک برای "مقدار نوع "typeof ObjectId" قابل فراخوانی نیست" Small Update for "Value of type 'typeof ObjectId' is not callable"

  • ادعای وجود بلیط Asserting Tickets Exist

  • ادعای بلیط های رزرو شده Asserting Reserved Tickets

  • تست مورد موفقیت Testing the Success Case

  • واکشی سفارشات کاربر Fetching a User's Orders

  • یک تست کمی پیچیده A Slightly Complicated Test

  • واکشی سفارشات فردی Fetching Individual Orders

  • آیا واکشی کار می کند؟ Does Fetching Work?

  • لغو یک سفارش Cancelling an Order

  • آیا می توانیم لغو کنیم؟ Can We Cancel?

  • بخش 17 ایست بازرسی Section 17 Checkpoint

درک جریان رویداد Understanding Event Flow

  • سفارشات رویدادهای خدماتی Orders Service Events

  • ایجاد رویدادها Creating the Events

  • پیاده سازی ناشران Implementing the Publishers

  • انتشار سفارش ایجاد Publishing the Order Creation

  • لغو سفارش انتشار Publishing Order Cancellation

  • انتشار رویداد تست Testing Event Publishing

  • بخش 18 ایست بازرسی Section 18 Checkpoint

درک جریان رویداد Understanding Event Flow

  • سفارشات رویدادهای خدماتی Orders Service Events

  • ایجاد رویدادها Creating the Events

  • پیاده سازی ناشران Implementing the Publishers

  • انتشار سفارش ایجاد Publishing the Order Creation

  • لغو سفارش انتشار Publishing Order Cancellation

  • انتشار رویداد تست Testing Event Publishing

  • بخش 18 ایست بازرسی Section 18 Checkpoint

گوش دادن به رویدادها و رسیدگی به مسائل همزمان Listening for Events and Handling Concurrency Issues

  • با توجه به برخی از خطاهای Mongoose TS هوشیار باشید Heads Up Regarding Some Mongoose TS Errors

  • زمان برای شنوندگان! Time for Listeners!

  • یادآوری در شنوندگان Reminder on Listeners

  • طرح اولیه برای شنوندگان Blueprint for Listeners

  • چند یادآوری دیگر A Few More Reminders

  • پیاده سازی ساده onMessage Simple onMessage Implementation

  • تنظیم شناسه ID Adjustment

  • بلیط به روز شده اجرای شنونده Ticket Updated Listener Implementation

  • راه اندازی شنوندگان Initializing the Listeners

  • یک تست دستی سریع A Quick Manual Test

  • پاک کردن مسائل همزمانی Clear Concurrency Issues

  • یادآوری در نسخه‌سازی رکوردها Reminder on Versioning Records

  • کنترل همزمان خوشبینانه Optimistic Concurrency Control

  • Mongoose Update-If-Current Mongoose Update-If-Current

  • پیاده سازی OCC با Mongoose Implementing OCC with Mongoose

  • توابع آزمایشی هم نمی توانند یک تماس «انجام شد» را دریافت کنند و هم خطا را برگردانند Test functions cannot both take a 'done' callback and return something Error

  • تست OCC Testing OCC

  • یک تست دیگر One More Test

  • چه کسی نسخه ها را به روز می کند؟ Who Updates Versions?

  • از جمله نسخه ها در رویدادها Including Versions in Events

  • به روز رسانی تعاریف رویداد بلیط Updating Tickets Event Definitions

  • "نسخه" ویژگی خطاهای TS پس از اجرای Skaffold وجود ندارد Property 'version' is missing TS Errors After Running Skaffold

  • اعمال یک پرس و جو نسخه Applying a Version Query

  • کار کرد؟ Did it Work?

  • روش پرس و جو چکیده Abstracted Query Method

  • [اختیاری] نسخه‌سازی بدون به‌روزرسانی-اگر-جریان [Optional] Versioning Without Update-If-Current

  • تست شنوندگان Testing Listeners

  • یک تست شنونده کامل A Complete Listener Test

  • تست تماس Ack Testing the Ack Call

  • تست شنونده به روز شده بلیط Testing the Ticket Updated Listener

  • تست مورد موفقیت Success Case Testing

  • رویدادهای خارج از سفارش Out-Of-Order Events

  • چند ویدیوی بعدی The Next Few Videos

  • رفع چند تست Fixing a Few Tests

  • شنوندگان در سرویس بلیط Listeners in the Tickets Service

  • ساخت شنونده Building the Listener

  • استراتژی های قفل کردن بلیط Strategies for Locking a Ticket

  • رزرو بلیط Reserving a Ticket

  • تنظیم برای رزرو تست Setup for Testing Reservation

  • اجرای تست Test Implementation

  • رویداد به‌روزرسانی وجود ندارد Missing Update Event

  • خصوصی در مقابل ویژگی های محافظت شده Private vs Protected Properties

  • انتشار در حین گوش دادن Publishing While Listening

  • آرگومان های تابع ساختگی Mock Function Arguments

  • سفارش شنونده لغو شده Order Cancelled Listener

  • تست رعد و برق سریع A Lightning-Quick Test

  • گوش دادن را فراموش نکنید! Don't Forget to Listen!

  • رد ویرایش بلیط های رزرو شده Rejecting Edits of Reserved Tickets

  • بخش 19 ایست بازرسی Section 19 Checkpoint

گوش دادن به رویدادها و رسیدگی به مسائل همزمان Listening for Events and Handling Concurrency Issues

  • با توجه به برخی از خطاهای Mongoose TS هوشیار باشید Heads Up Regarding Some Mongoose TS Errors

  • زمان برای شنوندگان! Time for Listeners!

  • یادآوری در شنوندگان Reminder on Listeners

  • طرح اولیه برای شنوندگان Blueprint for Listeners

  • چند یادآوری دیگر A Few More Reminders

  • پیاده سازی ساده onMessage Simple onMessage Implementation

  • تنظیم شناسه ID Adjustment

  • بلیط به روز شده اجرای شنونده Ticket Updated Listener Implementation

  • راه اندازی شنوندگان Initializing the Listeners

  • یک تست دستی سریع A Quick Manual Test

  • پاک کردن مسائل همزمانی Clear Concurrency Issues

  • یادآوری در نسخه‌سازی رکوردها Reminder on Versioning Records

  • کنترل همزمان خوشبینانه Optimistic Concurrency Control

  • Mongoose Update-If-Current Mongoose Update-If-Current

  • پیاده سازی OCC با Mongoose Implementing OCC with Mongoose

  • توابع آزمایشی هم نمی توانند یک تماس «انجام شد» را دریافت کنند و هم خطا را برگردانند Test functions cannot both take a 'done' callback and return something Error

  • تست OCC Testing OCC

  • یک تست دیگر One More Test

  • چه کسی نسخه ها را به روز می کند؟ Who Updates Versions?

  • از جمله نسخه ها در رویدادها Including Versions in Events

  • به روز رسانی تعاریف رویداد بلیط Updating Tickets Event Definitions

  • "نسخه" ویژگی خطاهای TS پس از اجرای Skaffold وجود ندارد Property 'version' is missing TS Errors After Running Skaffold

  • اعمال یک پرس و جو نسخه Applying a Version Query

  • کار کرد؟ Did it Work?

  • روش پرس و جو چکیده Abstracted Query Method

  • [اختیاری] نسخه‌سازی بدون به‌روزرسانی-اگر-جریان [Optional] Versioning Without Update-If-Current

  • تست شنوندگان Testing Listeners

  • یک تست شنونده کامل A Complete Listener Test

  • تست تماس Ack Testing the Ack Call

  • تست شنونده به روز شده بلیط Testing the Ticket Updated Listener

  • تست مورد موفقیت Success Case Testing

  • رویدادهای خارج از سفارش Out-Of-Order Events

  • چند ویدیوی بعدی The Next Few Videos

  • رفع چند تست Fixing a Few Tests

  • شنوندگان در سرویس بلیط Listeners in the Tickets Service

  • ساخت شنونده Building the Listener

  • استراتژی های قفل کردن بلیط Strategies for Locking a Ticket

  • رزرو بلیط Reserving a Ticket

  • تنظیم برای رزرو تست Setup for Testing Reservation

  • اجرای تست Test Implementation

  • رویداد به‌روزرسانی وجود ندارد Missing Update Event

  • خصوصی در مقابل ویژگی های محافظت شده Private vs Protected Properties

  • انتشار در حین گوش دادن Publishing While Listening

  • آرگومان های تابع ساختگی Mock Function Arguments

  • سفارش شنونده لغو شده Order Cancelled Listener

  • تست رعد و برق سریع A Lightning-Quick Test

  • گوش دادن را فراموش نکنید! Don't Forget to Listen!

  • رد ویرایش بلیط های رزرو شده Rejecting Edits of Reserved Tickets

  • بخش 19 ایست بازرسی Section 19 Checkpoint

خدمات کارگری Worker Services

  • سرویس انقضا The Expiration Service

  • گزینه های انقضا Expiration Options

  • راه اندازی اولیه Initial Setup

  • خطاهای Skaffold - تصویر انقضا قابل کشیدن نیست Skaffold errors - Expiration Image Can't be Pulled

  • لمسی از راه اندازی Kubernetes A Touch of Kubernetes Setup

  • تنظیم همگام سازی فایل File Sync Setup

  • ایجاد شنونده Listener Creation

  • Bull All about چیست؟ What's Bull All About?

  • ایجاد صف Creating a Queue

  • صف کشیدن یک شغل در هنگام ورود رویداد Queueing a Job on Event Arrival

  • تست پردازش شغل Testing Job Processing

  • تاخیر در پردازش کار Delaying Job Processing

  • تعریف رویداد کامل انقضا Defining the Expiration Complete Event

  • انتشار یک رویداد در مورد پردازش شغل Publishing an Event on Job Processing

  • رسیدگی به یک رویداد انقضا Handling an Expiration Event

  • انتشار رویداد لغو شده Emitting the Order Cancelled Event

  • تست شنونده کامل Expiration Testing the Expiration Complete Listener

  • تست بیشتر لمسی A Touch More Testing

  • گوش دادن برای انقضا Listening for Expiration

  • ایست بازرسی بخش 20 Section 20 Checkpoint

خدمات کارگری Worker Services

  • سرویس انقضا The Expiration Service

  • گزینه های انقضا Expiration Options

  • راه اندازی اولیه Initial Setup

  • خطاهای Skaffold - تصویر انقضا قابل کشیدن نیست Skaffold errors - Expiration Image Can't be Pulled

  • لمسی از راه اندازی Kubernetes A Touch of Kubernetes Setup

  • تنظیم همگام سازی فایل File Sync Setup

  • ایجاد شنونده Listener Creation

  • Bull All about چیست؟ What's Bull All About?

  • ایجاد صف Creating a Queue

  • صف کشیدن یک شغل در هنگام ورود رویداد Queueing a Job on Event Arrival

  • تست پردازش شغل Testing Job Processing

  • تاخیر در پردازش کار Delaying Job Processing

  • تعریف رویداد کامل انقضا Defining the Expiration Complete Event

  • انتشار یک رویداد در مورد پردازش شغل Publishing an Event on Job Processing

  • رسیدگی به یک رویداد انقضا Handling an Expiration Event

  • انتشار رویداد لغو شده Emitting the Order Cancelled Event

  • تست شنونده کامل Expiration Testing the Expiration Complete Listener

  • تست بیشتر لمسی A Touch More Testing

  • گوش دادن برای انقضا Listening for Expiration

  • ایست بازرسی بخش 20 Section 20 Checkpoint

رسیدگی به پرداخت ها Handling Payments

  • سرویس پرداخت The Payments Service

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • راه اندازی اولیه Initial Setup

  • فیلدهای تکراری Replicated Fields

  • یک مدل سفارش دیگر! Another Order Model!

  • Update-If-Current Update-If-Current

  • تکرار سفارشات Replicating Orders

  • ایجاد سفارش تست Testing Order Creation

  • علامت گذاری یک سفارش به عنوان لغو شده Marking an Order as Cancelled

  • تست لغو شد Cancelled Testing

  • راه اندازی شنوندگان Starting the Listeners

  • جریان پرداخت ها با Stripe Payments Flow with Stripe

  • پیاده سازی Create Charge Handler Implementing the Create Charge Handler

  • اعتبارسنجی پرداخت سفارش Validating Order Payment

  • تست اعتبارسنجی سفارش قبل از پرداخت Testing Order Validation Before Payment

  • تست اعتبارسنجی یک کاربر Testing Same-User Validation

  • راه اندازی راه راه Stripe Setup

  • ایجاد یک راز راه راه Creating a Stripe Secret

  • ایجاد شارژ با Stripe Creating a Charge with Stripe

  • تست دستی پرداخت ها Manual Testing of Payments

  • تست پرداخت خودکار Automated Payment Testing

  • کلاینت راه راه مسخره شده Mocked Stripe Client

  • یک تنظیم تست واقعی تر A More Realistic Test Setup

  • اجرای آزمون واقع بینانه Realistic Test Implementation

  • بستن یک سفارش و شارژ با هم Tying an Order and Charge Together

  • آزمایش ایجاد پرداخت Testing Payment Creation

  • انتشار یک رویداد ایجاد شده با پرداخت Publishing a Payment Created Event

  • اطلاعات بیشتر در مورد انتشارات More on Publishing

  • علامت گذاری یک سفارش به عنوان کامل Marking an Order as Complete

  • اطلاعات مهم درباره سخنرانی بعدی - رد نشوید Important Info About the Next Lecture - Don't Skip

  • سفارشات تکمیل شده را لغو نکنید! Don't Cancel Completed Orders!

  • بخش 21 ایست بازرسی Section 21 Checkpoint

رسیدگی به پرداخت ها Handling Payments

  • سرویس پرداخت The Payments Service

  • globalThis هیچ امضای شاخصی ندارد خطا TS globalThis has no index signature TS Error

  • راه اندازی اولیه Initial Setup

  • فیلدهای تکراری Replicated Fields

  • یک مدل سفارش دیگر! Another Order Model!

  • Update-If-Current Update-If-Current

  • تکرار سفارشات Replicating Orders

  • ایجاد سفارش تست Testing Order Creation

  • علامت گذاری یک سفارش به عنوان لغو شده Marking an Order as Cancelled

  • تست لغو شد Cancelled Testing

  • راه اندازی شنوندگان Starting the Listeners

  • جریان پرداخت ها با Stripe Payments Flow with Stripe

  • پیاده سازی Create Charge Handler Implementing the Create Charge Handler

  • اعتبارسنجی پرداخت سفارش Validating Order Payment

  • تست اعتبارسنجی سفارش قبل از پرداخت Testing Order Validation Before Payment

  • تست اعتبارسنجی یک کاربر Testing Same-User Validation

  • راه اندازی راه راه Stripe Setup

  • ایجاد یک راز راه راه Creating a Stripe Secret

  • ایجاد شارژ با Stripe Creating a Charge with Stripe

  • تست دستی پرداخت ها Manual Testing of Payments

  • تست پرداخت خودکار Automated Payment Testing

  • کلاینت راه راه مسخره شده Mocked Stripe Client

  • یک تنظیم تست واقعی تر A More Realistic Test Setup

  • اجرای آزمون واقع بینانه Realistic Test Implementation

  • بستن یک سفارش و شارژ با هم Tying an Order and Charge Together

  • آزمایش ایجاد پرداخت Testing Payment Creation

  • انتشار یک رویداد ایجاد شده با پرداخت Publishing a Payment Created Event

  • اطلاعات بیشتر در مورد انتشارات More on Publishing

  • علامت گذاری یک سفارش به عنوان کامل Marking an Order as Complete

  • اطلاعات مهم درباره سخنرانی بعدی - رد نشوید Important Info About the Next Lecture - Don't Skip

  • سفارشات تکمیل شده را لغو نکنید! Don't Cancel Completed Orders!

  • بخش 21 ایست بازرسی Section 21 Checkpoint

بازگشت به مشتری Back to the Client

  • چند صفحه دیگر A Few More Pages

  • یادآوری در مورد واکشی داده با Next Reminder on Data Fetching with Next

  • دو راه حل سریع Two Quick Fixes

  • داربست یک فرم Scaffolding a Form

  • ورودی قیمت ضدعفونی کننده Sanitizing Price Input

  • ایجاد بلیط Ticket Creation

  • لیست تمامی بلیط ها Listing All Tickets

  • پیوند دادن به مسیرهای Wildcard Linking to Wildcard Routes

  • ایجاد یک سفارش Creating an Order

  • پیمایش برنامه‌ای به مسیرهای Wildcard Programmatic Navigation to Wildcard Routes

  • تایمر انقضا The Expiration Timer

  • نمایش انقضا Displaying the Expiration

  • نمایش فرم پرداخت خطی Showing a Stripe Payment Form

  • پیکربندی Stripe Configuring Stripe

  • تست شماره کارت اعتباری Test Credit Card Numbers

  • پرداخت برای سفارش Paying for an Order

  • فیلتر کردن بلیط های رزرو شده Filtering Reserved Tickets

  • لینک های سرصفحه Header Links

  • ارائه لیست سفارشات Rendering a List of Orders

  • ایست بازرسی بخش 22 Section 22 Checkpoint

بازگشت به مشتری Back to the Client

  • چند صفحه دیگر A Few More Pages

  • یادآوری در مورد واکشی داده با Next Reminder on Data Fetching with Next

  • دو راه حل سریع Two Quick Fixes

  • داربست یک فرم Scaffolding a Form

  • ورودی قیمت ضدعفونی کننده Sanitizing Price Input

  • ایجاد بلیط Ticket Creation

  • لیست تمامی بلیط ها Listing All Tickets

  • پیوند دادن به مسیرهای Wildcard Linking to Wildcard Routes

  • ایجاد یک سفارش Creating an Order

  • پیمایش برنامه‌ای به مسیرهای Wildcard Programmatic Navigation to Wildcard Routes

  • تایمر انقضا The Expiration Timer

  • نمایش انقضا Displaying the Expiration

  • نمایش فرم پرداخت خطی Showing a Stripe Payment Form

  • پیکربندی Stripe Configuring Stripe

  • تست شماره کارت اعتباری Test Credit Card Numbers

  • پرداخت برای سفارش Paying for an Order

  • فیلتر کردن بلیط های رزرو شده Filtering Reserved Tickets

  • لینک های سرصفحه Header Links

  • ارائه لیست سفارشات Rendering a List of Orders

  • ایست بازرسی بخش 22 Section 22 Checkpoint

CI/CD CI/CD

  • گردش کار توسعه Development Workflow

  • رویکردهای مخزن گیت Git Repository Approaches

  • ایجاد یک اکشن GitHub Creating a GitHub Action

  • افزودن یک اسکریپت تست CI Adding a CI Test Script

  • اجرای تست‌های ایجاد روابط عمومی Running Tests on PR Creation

  • خروجی آزمون های شکست خورده Output of Failing Tests

  • اجرای تست ها به صورت موازی Running Tests in Parallel

  • تأیید اجرای آزمایشی Verifying a Test Run

  • اجرای آزمون انتخابی Selective Test Execution

  • گزینه های استقرار Deployment Options

  • ایجاد یک خوشه میزبانی شده Creating a Hosted Cluster

  • یادآوری در زمینه Kubernetes Reminder on Kubernetes Context

  • یادآوری در مورد مبادله زمینه ها Reminder on Swapping Contexts

  • طرح استقرار The Deployment Plan

  • ساختن تصویر در یک عمل Building an Image in an Action

  • تست ساخت تصویر Testing the Image Build

  • راه اندازی مجدد Deployment Restarting the Deployment

  • استفاده از Manifests Kubernetes Applying Kubernetes Manifests

  • Prod vs Dev Manifest Files Prod vs Dev Manifest Files

  • ایجاد مخفی دستی Manual Secret Creation

  • Ingress-Nginx را فراموش نکنید! Don't Forget Ingress-Nginx!

  • تست استقرار خودکار Testing Automated Deployment

  • استقرار فایل های اضافی Additional Deploy Files

  • یک استقرار موفق! A Successful Deploy!

  • خرید نام دامنه Buying a Domain Name

  • سه تغییر مهم مورد نیاز برای استقرار - از رد نشوید! Three Important Changes Needed to Deploy - Do Not Skip!

  • پیکربندی نام دامنه Configuring the Domain Name

  • من واقعا امیدوارم که این کار می کند I Really Hope This Works

  • مراحل بعدی Next Steps

  • بخش 23 کد تکمیل شده Section 23 Completed Code

CI/CD CI/CD

  • گردش کار توسعه Development Workflow

  • رویکردهای مخزن گیت Git Repository Approaches

  • ایجاد یک اکشن GitHub Creating a GitHub Action

  • افزودن یک اسکریپت تست CI Adding a CI Test Script

  • اجرای تست‌های ایجاد روابط عمومی Running Tests on PR Creation

  • خروجی آزمون های شکست خورده Output of Failing Tests

  • اجرای تست ها به صورت موازی Running Tests in Parallel

  • تأیید اجرای آزمایشی Verifying a Test Run

  • اجرای آزمون انتخابی Selective Test Execution

  • گزینه های استقرار Deployment Options

  • ایجاد یک خوشه میزبانی شده Creating a Hosted Cluster

  • یادآوری در زمینه Kubernetes Reminder on Kubernetes Context

  • یادآوری در مورد مبادله زمینه ها Reminder on Swapping Contexts

  • طرح استقرار The Deployment Plan

  • ساختن تصویر در یک عمل Building an Image in an Action

  • تست ساخت تصویر Testing the Image Build

  • راه اندازی مجدد Deployment Restarting the Deployment

  • استفاده از Manifests Kubernetes Applying Kubernetes Manifests

  • Prod vs Dev Manifest Files Prod vs Dev Manifest Files

  • ایجاد مخفی دستی Manual Secret Creation

  • Ingress-Nginx را فراموش نکنید! Don't Forget Ingress-Nginx!

  • تست استقرار خودکار Testing Automated Deployment

  • استقرار فایل های اضافی Additional Deploy Files

  • یک استقرار موفق! A Successful Deploy!

  • خرید نام دامنه Buying a Domain Name

  • سه تغییر مهم مورد نیاز برای استقرار - از رد نشوید! Three Important Changes Needed to Deploy - Do Not Skip!

  • پیکربندی نام دامنه Configuring the Domain Name

  • من واقعا امیدوارم که این کار می کند I Really Hope This Works

  • مراحل بعدی Next Steps

  • بخش 23 کد تکمیل شده Section 23 Completed Code

[پیوست A] - مبانی داکر [Appendix A] - Basics of Docker

  • کد و نمودارهای تمام شده Finished Code and Diagrams

  • چرا از Docker استفاده کنیم؟ Why Use Docker?

  • داکر چیست؟ What is Docker?

  • داکر برای مک/ویندوز Docker for Mac / Windows

  • نصب Docker در macOS Installing Docker on macOS

  • نصب Docker با WSL2 در ویندوز 10/11 Installing Docker with WSL2 on Windows 10/11

  • نصب داکر در لینوکس Installing Docker on Linux

  • با استفاده از Docker Client Using the Docker Client

  • اما واقعا... کانتینر چیست؟ But Really... What's a Container?

  • Docker چگونه در رایانه شما اجرا می شود؟ How's Docker Running on Your Computer?

  • Docker Run در جزئیات Docker Run in Detail

  • لغو دستورات پیش فرض Overriding Default Commands

  • لیست کانتینرهای در حال اجرا Listing Running Containers

  • چرخه حیات کانتینر Container Lifecycle

  • راه اندازی مجدد کانتینرهای متوقف شده Restarting Stopped Containers

  • حذف ظروف متوقف شده Removing Stopped Containers

  • بازیابی گزارش های خروجی Retrieving Output Logs

  • توقف کانتینرها Stopping Containers

  • کانتینرهای چند فرمانی Multi-Command Containers

  • اجرای دستورات در کانتینرهای در حال اجرا Executing Commands in Running Containers

  • هدف پرچم "آن". The Purpose of the 'it' Flag

  • دریافت Command Prompt در یک کانتینر Getting a Command Prompt in a Container

  • شروع با یک پوسته Starting with a Shell

  • جداسازی کانتینر Container Isolation

  • ایجاد تصاویر داکر Creating Docker Images

  • Buildkit برای Docker Desktop Buildkit for Docker Desktop

  • ساخت یک Dockerfile Building a Dockerfile

  • Dockerfile Teardown Dockerfile Teardown

  • تصویر پایه چیست؟ What's a Base Image?

  • فرآیند ساخت با جزئیات The Build Process in Detail

  • خلاصه ای کوتاه A Brief Recap

  • با کش بازسازی می شود Rebuilds with Cache

  • برچسب گذاری یک تصویر Tagging an Image

  • یادداشت سریع برای کاربران ویندوز Quick Note for Windows Users

  • تولید دستی تصویر با Docker Commit Manual Image Generation with Docker Commit

  • طرح کلی پروژه Project Outline

  • راه اندازی Node Server Node Server Setup

  • چند خطای برنامه ریزی شده A Few Planned Errors

  • نسخه تصویر پایه گره مورد نیاز Required Node Base Image Version

  • مسائل تصویر پایه Base Image Issues

  • چند فایل گم شده A Few Missing Files

  • کپی کردن فایل های ساخت Copying Build Files

  • حمل و نقل بندر کانتینر Container Port Forwarding

  • تعیین یک فهرست کاری Specifying a Working Directory

  • بازسازی های غیر ضروری Unnecessary Rebuilds

  • به حداقل رساندن تخریب و بازسازی حافظه پنهان Minimizing Cache Busting and Rebuilds

[پیوست A] - مبانی داکر [Appendix A] - Basics of Docker

  • کد و نمودارهای تمام شده Finished Code and Diagrams

  • چرا از Docker استفاده کنیم؟ Why Use Docker?

  • داکر چیست؟ What is Docker?

  • داکر برای مک/ویندوز Docker for Mac / Windows

  • نصب Docker در macOS Installing Docker on macOS

  • نصب Docker با WSL2 در ویندوز 10/11 Installing Docker with WSL2 on Windows 10/11

  • نصب داکر در لینوکس Installing Docker on Linux

  • با استفاده از Docker Client Using the Docker Client

  • اما واقعا... کانتینر چیست؟ But Really... What's a Container?

  • Docker چگونه در رایانه شما اجرا می شود؟ How's Docker Running on Your Computer?

  • Docker Run در جزئیات Docker Run in Detail

  • لغو دستورات پیش فرض Overriding Default Commands

  • لیست کانتینرهای در حال اجرا Listing Running Containers

  • چرخه حیات کانتینر Container Lifecycle

  • راه اندازی مجدد کانتینرهای متوقف شده Restarting Stopped Containers

  • حذف ظروف متوقف شده Removing Stopped Containers

  • بازیابی گزارش های خروجی Retrieving Output Logs

  • توقف کانتینرها Stopping Containers

  • کانتینرهای چند فرمانی Multi-Command Containers

  • اجرای دستورات در کانتینرهای در حال اجرا Executing Commands in Running Containers

  • هدف پرچم "آن". The Purpose of the 'it' Flag

  • دریافت Command Prompt در یک کانتینر Getting a Command Prompt in a Container

  • شروع با یک پوسته Starting with a Shell

  • جداسازی کانتینر Container Isolation

  • ایجاد تصاویر داکر Creating Docker Images

  • Buildkit برای Docker Desktop Buildkit for Docker Desktop

  • ساخت یک Dockerfile Building a Dockerfile

  • Dockerfile Teardown Dockerfile Teardown

  • تصویر پایه چیست؟ What's a Base Image?

  • فرآیند ساخت با جزئیات The Build Process in Detail

  • خلاصه ای کوتاه A Brief Recap

  • با کش بازسازی می شود Rebuilds with Cache

  • برچسب گذاری یک تصویر Tagging an Image

  • یادداشت سریع برای کاربران ویندوز Quick Note for Windows Users

  • تولید دستی تصویر با Docker Commit Manual Image Generation with Docker Commit

  • طرح کلی پروژه Project Outline

  • راه اندازی Node Server Node Server Setup

  • چند خطای برنامه ریزی شده A Few Planned Errors

  • نسخه تصویر پایه گره مورد نیاز Required Node Base Image Version

  • مسائل تصویر پایه Base Image Issues

  • چند فایل گم شده A Few Missing Files

  • کپی کردن فایل های ساخت Copying Build Files

  • حمل و نقل بندر کانتینر Container Port Forwarding

  • تعیین یک فهرست کاری Specifying a Working Directory

  • بازسازی های غیر ضروری Unnecessary Rebuilds

  • به حداقل رساندن تخریب و بازسازی حافظه پنهان Minimizing Cache Busting and Rebuilds

[پیوست B] - مبانی تایپ اسکریپت [Appendix B] - Basics of Typescript

  • نحوه دریافت کمک How to Get Help

  • نمای کلی TypeScript TypeScript Overview

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

  • اطلاعات مهم نسخه Axios Important Axios Version Information

  • اولین برنامه A First App

  • اجرای کد تایپ اسکریپت Executing Typescript Code

  • یک تغییر سریع One Quick Change

  • گرفتن خطاها با TypeScript Catching Errors with TypeScript

  • گرفتن خطاهای بیشتر! Catching More Errors!

  • رد نشوید - نمای کلی دوره Do Not Skip - Course Overview

  • انواع Types

  • بیشتر در مورد انواع More on Types

  • نمونه هایی از انواع Examples of Types

  • کجا از انواع استفاده می کنیم؟ Where Do We Use Types?

  • Annotations and Inference را تایپ کنید Type Annotations and Inference

  • حاشیه نویسی با متغیرها Annotations With Variables

  • حاشیه نویسی های تحت اللفظی شی Object Literal Annotations

  • حاشیه نویسی در اطراف توابع Annotations Around Functions

  • درک استنتاج Understanding Inference

  • هر نوع The Any Type

  • رفع نوع "Any". Fixing the "Any" Type

  • اولیه سازی با تاخیر Delayed Initialization

  • وقتی استنباط کار نمی کند When Inference Doesn't Work

  • بیشتر در مورد حاشیه نویسی در اطراف توابع More on Annotations Around Functions

  • استنتاج پیرامون توابع Inference Around Functions

  • حاشیه نویسی برای توابع ناشناس Annotations for Anonymous Functions

  • باطل و هرگز Void and Never

  • تخریب ساختار با حاشیه نویسی Destructuring with Annotations

  • حاشیه نویسی در اطراف اشیاء Annotations Around Objects

  • آرایه ها در TypeScript Arrays in TypeScript

  • چرا آرایه های تایپ شده؟ Why Typed Arrays?

  • انواع متعدد در آرایه ها Multiple Typees in Arrays

  • زمان استفاده از آرایه های تایپ شده When to Use Typed Arrays

  • تاپل ها در TypeScript Tuples in TypeScript

  • تاپل ها در عمل Tuples in Action

  • چرا تاپل ها؟ Why Tuples?

  • رابط ها Interfaces

  • حاشیه نویسی های نوع طولانی Long Type Annotations

  • رفع حاشیه نویسی با رابط Fixing Annotations With Interfaces

  • نحو در اطراف رابط ها Syntax Around Interfaces

  • توابع در رابط ها Functions in Interfaces

  • استفاده مجدد از کد با رابط ها Code Reuse with Interfaces

  • طرح کلی با رابط ها General Plan with Interfaces

  • کلاس ها Classes

  • ارث اساسی Basic Inheritance

  • اصلاح کننده های روش کلاس Class Method Modifiers

  • فیلدها در کلاس ها Fields in Classes

  • فیلدهای دارای ارث Fields with Inheritance

  • محل استفاده از کلاس ها Where to Use Classes

  • دستورالعمل بسته به روز شد Updated Parcel Instructions

  • نمای کلی برنامه App Overview

  • بسته بندی با بسته Bundling with Parcel

  • ساختار پروژه Project Structure

  • اطلاعات مهم درباره نصب Faker IMPORTANT Info About Faker Installation

  • تولید داده های تصادفی Generating Random Data

  • فایل های تعریف را تایپ کنید Type Definition Files

  • استفاده از نوع فایل های تعریف Using Type Definition Files

  • صدور بیانیه ها در TypeScript Export Statements in TypeScript

  • تعریف شرکت Defining a Company

  • نکته مهم درباره کلید Google Maps Important Note About Google Maps Key

  • افزودن پشتیبانی Google Maps Adding Google Maps Support

  • به‌روزرسانی مورد نیاز برای کتابخانه جدید @types Required Update for New @types Library

  • ادغام نقشه های گوگل با TypeScript Google Maps Integration with TypeScript

  • کاوش در فایل های تعریف نوع Exploring Type Definition Files

  • قابلیت پنهان کردن Hiding Functionality

  • چرا از اصلاح کننده های خصوصی استفاده کنیم؟ در اینجا چرا Why Use Private Modifiers? Here's Why

  • اضافه کردن نشانگرها Adding Markers

  • کد تکراری Duplicate Code

  • یک راه حل ممکن One Possible Solution

  • محدود کردن دسترسی با رابط ها Restricting Access with Interfaces

  • بررسی نوع ضمنی Implicit Type Checks

  • نمایش پنجره های پاپ آپ Showing Popup Windows

  • به روز رسانی تعاریف رابط Updating Interface Definitions

  • بندهای اجرایی اختیاری Optional Implements Clauses

  • جمع بندی برنامه App Wrapup

[پیوست B] - مبانی تایپ اسکریپت [Appendix B] - Basics of Typescript

  • نحوه دریافت کمک How to Get Help

  • نمای کلی TypeScript TypeScript Overview

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

  • اطلاعات مهم نسخه Axios Important Axios Version Information

  • اولین برنامه A First App

  • اجرای کد تایپ اسکریپت Executing Typescript Code

  • یک تغییر سریع One Quick Change

  • گرفتن خطاها با TypeScript Catching Errors with TypeScript

  • گرفتن خطاهای بیشتر! Catching More Errors!

  • رد نشوید - نمای کلی دوره Do Not Skip - Course Overview

  • انواع Types

  • بیشتر در مورد انواع More on Types

  • نمونه هایی از انواع Examples of Types

  • کجا از انواع استفاده می کنیم؟ Where Do We Use Types?

  • Annotations and Inference را تایپ کنید Type Annotations and Inference

  • حاشیه نویسی با متغیرها Annotations With Variables

  • حاشیه نویسی های تحت اللفظی شی Object Literal Annotations

  • حاشیه نویسی در اطراف توابع Annotations Around Functions

  • درک استنتاج Understanding Inference

  • هر نوع The Any Type

  • رفع نوع "Any". Fixing the "Any" Type

  • اولیه سازی با تاخیر Delayed Initialization

  • وقتی استنباط کار نمی کند When Inference Doesn't Work

  • بیشتر در مورد حاشیه نویسی در اطراف توابع More on Annotations Around Functions

  • استنتاج پیرامون توابع Inference Around Functions

  • حاشیه نویسی برای توابع ناشناس Annotations for Anonymous Functions

  • باطل و هرگز Void and Never

  • تخریب ساختار با حاشیه نویسی Destructuring with Annotations

  • حاشیه نویسی در اطراف اشیاء Annotations Around Objects

  • آرایه ها در TypeScript Arrays in TypeScript

  • چرا آرایه های تایپ شده؟ Why Typed Arrays?

  • انواع متعدد در آرایه ها Multiple Typees in Arrays

  • زمان استفاده از آرایه های تایپ شده When to Use Typed Arrays

  • تاپل ها در TypeScript Tuples in TypeScript

  • تاپل ها در عمل Tuples in Action

  • چرا تاپل ها؟ Why Tuples?

  • رابط ها Interfaces

  • حاشیه نویسی های نوع طولانی Long Type Annotations

  • رفع حاشیه نویسی با رابط Fixing Annotations With Interfaces

  • نحو در اطراف رابط ها Syntax Around Interfaces

  • توابع در رابط ها Functions in Interfaces

  • استفاده مجدد از کد با رابط ها Code Reuse with Interfaces

  • طرح کلی با رابط ها General Plan with Interfaces

  • کلاس ها Classes

  • ارث اساسی Basic Inheritance

  • اصلاح کننده های روش کلاس Class Method Modifiers

  • فیلدها در کلاس ها Fields in Classes

  • فیلدهای دارای ارث Fields with Inheritance

  • محل استفاده از کلاس ها Where to Use Classes

  • دستورالعمل بسته به روز شد Updated Parcel Instructions

  • نمای کلی برنامه App Overview

  • بسته بندی با بسته Bundling with Parcel

  • ساختار پروژه Project Structure

  • اطلاعات مهم درباره نصب Faker IMPORTANT Info About Faker Installation

  • تولید داده های تصادفی Generating Random Data

  • فایل های تعریف را تایپ کنید Type Definition Files

  • استفاده از نوع فایل های تعریف Using Type Definition Files

  • صدور بیانیه ها در TypeScript Export Statements in TypeScript

  • تعریف شرکت Defining a Company

  • نکته مهم درباره کلید Google Maps Important Note About Google Maps Key

  • افزودن پشتیبانی Google Maps Adding Google Maps Support

  • به‌روزرسانی مورد نیاز برای کتابخانه جدید @types Required Update for New @types Library

  • ادغام نقشه های گوگل با TypeScript Google Maps Integration with TypeScript

  • کاوش در فایل های تعریف نوع Exploring Type Definition Files

  • قابلیت پنهان کردن Hiding Functionality

  • چرا از اصلاح کننده های خصوصی استفاده کنیم؟ در اینجا چرا Why Use Private Modifiers? Here's Why

  • اضافه کردن نشانگرها Adding Markers

  • کد تکراری Duplicate Code

  • یک راه حل ممکن One Possible Solution

  • محدود کردن دسترسی با رابط ها Restricting Access with Interfaces

  • بررسی نوع ضمنی Implicit Type Checks

  • نمایش پنجره های پاپ آپ Showing Popup Windows

  • به روز رسانی تعاریف رابط Updating Interface Definitions

  • بندهای اجرایی اختیاری Optional Implements Clauses

  • جمع بندی برنامه App Wrapup

جایزه! Bonus!

  • جایزه! Bonus!

جایزه! Bonus!

  • جایزه! Bonus!

نمایش نظرات

آموزش میکروسرویس با Node JS و React
جزییات دوره
54 hours
663
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
101,211
4.8 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Stephen Grider Stephen Grider

معمار مهندسی