آموزش ساخت برنامه های وب با Go - سطح متوسط

Building Web Applications with Go - Intermediate Level

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: آموزش ساخت یک اپلیکیشن تجارت الکترونیک امن با Go (Golang) نحوه ساختن یک وب سایت فرانت اند با استفاده از Go چگونه با استفاده از Go یک API بک اند بسازیم نحوه ساخت چندین برنامه از یک پایه کد واحد نحوه ساخت میکروسرویس ها در Go احراز هویت کاربر در احراز هویت Go API با استفاده از توکن‌های Stateful چگونه به کاربران اجازه دهیم رمز عبور را به روشی امن و ایمن بازنشانی کنند نحوه ادغام پردازش کارت اعتباری Stripe با یک Go back end پرداخت‌های یک‌باره یا تکراری با Stripe بهترین روش‌ها برای انجام تراکنش‌های امن با کارت اعتباری پیش نیازها : درک اولیه از زبان برنامه نویسی Go یک درک اولیه از HTML، CSS، و جاوا اسکریپت درک اولیه از نحو SQL

این دوره دنباله ساختن برنامه های کاربردی وب مدرن در Go است. در این دوره، ما بیشتر از بار اول پیش می رویم. ما یک نمونه برنامه تجارت الکترونیکی خواهیم ساخت که از چندین برنامه مجزا تشکیل شده است: یک فرانت اند (که محتوا را به عنوان صفحات وب به کاربر نهایی ارائه می دهد). یک back end API (که در صورت لزوم توسط قسمت جلویی فراخوانی می شود) و یک میکروسرویس که فقط یک کار را انجام می دهد، اما آن را بسیار خوب انجام می دهد (به صورت پویا فاکتورهای PDF را می سازد و آنها را به عنوان پیوست ایمیل برای مشتریان ارسال می کند).

این برنامه موارد جداگانه را می فروشد و همچنین به کاربران امکان می دهد اشتراک ماهانه خریداری کنند. همه تراکنش‌های کارت اعتباری از طریق Stripe پردازش می‌شوند، که مسلماً یکی از محبوب‌ترین سیستم‌های پردازش پرداخت موجود امروز است، و دلیل خوبی دارد: توسعه‌دهندگان آن را دوست دارند. Stripe یک API (رابط برنامه نویسی کاربردی) غنی ارائه می دهد و در بیش از 35 کشور در سراسر جهان موجود است و با بیش از 135 ارز کار می کند. به معنای واقعی کلمه، میلیون‌ها سازمان و کسب‌وکار از نرم‌افزار و APIهای Stripe برای پذیرش پرداخت‌ها، ارسال پرداخت‌ها و مدیریت آنلاین کسب‌وکار خود با داشبورد Stripe استفاده می‌کنند. با این حال، در بسیاری از موارد، توسعه‌دهندگان می‌خواهند بتوانند راه‌حل سفارشی‌تری بسازند و کاربران نهایی را ملزم نکنند که هم به یک برنامه وب و هم به داشبورد Stripe وارد شوند. این دقیقاً همان چیزی است که ما در این دوره به آن خواهیم پرداخت.

ما با یک ترمینال مجازی ساده شروع می کنیم، که می تواند برای پردازش تراکنش های به اصطلاح "کارت موجود نیست" استفاده شود. این یک برنامه وب کاملاً کاربردی خواهد بود که از ابتدا در Go ساخته شده است (گاهی اوقات به عنوان Golang شناخته می شود). قسمت جلویی با استفاده از بسته غنی html/template Go ارائه می‌شود و کاربران احراز هویت شده می‌توانند پرداخت‌های کارت اعتباری را از یک فرم امن، یکپارچه با Stripe API پردازش کنند. در این بخش از دوره به موارد زیر می پردازیم:

  • نحوه ساختن یک برنامه وب ایمن و آماده تولید در Go

  • نحوه گرفتن اطلاعات لازم برای تراکنش امن با کارت اعتباری آنلاین

  • نحوه فراخوانی Stripe API از یک Go back end برای ایجاد payIntent (ابژه Stripe برای مجوز دادن و انجام تراکنش)

هنگامی که این کار را انجام دادیم، در بخش بعدی دوره یک برنامه وب دوم ایجاد می کنیم که شامل یک وب سایت ساده است که به کاربران امکان می دهد محصولی را خریداری کنند یا اشتراک ماهیانه را خریداری کنند. باز هم، این یک برنامه وب خواهد بود که از ابتدا در Go ساخته شده است. در این بخش از دوره، موارد زیر را پوشش خواهیم داد:

  • چگونه به کاربران اجازه خرید یک محصول واحد را بدهیم

  • چگونه به کاربران اجازه خرید اشتراک ماهانه تکرارشونده (یک طرح خطی) را بدهیم

  • نحوه رسیدگی به لغو و بازپرداخت

  • نحوه ذخیره تمام اطلاعات تراکنش در پایگاه داده (برای بازپرداخت، گزارش و غیره).

  • نحوه بازپرداخت تراکنش

  • نحوه لغو اشتراک

  • نحوه ایمن سازی دسترسی به قسمت جلو (از طریق احراز هویت جلسه)

  • نحوه ایمن سازی دسترسی به API پشتیبان (با استفاده از نشانه های حالت دار)

  • نحوه مدیریت کاربران (افزودن/ویرایش/حذف)

  • چگونه به کاربران اجازه دهیم رمز عبور خود را به صورت ایمن و ایمن بازنشانی کنند

  • نحوه خروج یک کاربر و لغو حساب کاربری فوراً از طریق وب سوکت

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

  • یک بار JSON را می‌پذیرد که یک خرید جداگانه را توصیف می‌کند

  • یک فاکتور PDF با اطلاعاتی از بار JSON تولید می‌کند

  • یک ایمیل برای مشتری ایجاد می کند و PDF را به آن پیوست می کند

  • ایمیل را ارسال می کند

همه این مؤلفه‌ها (جلو، انتهای پشتی و میکروسرویس) با استفاده از یک پایه کد که چندین باینری تولید می‌کند، با استفاده از Gnu Make ساخته می‌شوند.




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

معرفی Introduction

  • معرفی Introduction

  • کمی در مورد من A bit about me

  • اشتباهات: همه ما مرتکبشان می شویم. Mistakes: we all make them.

  • نحوه درخواست کمک How to ask for help

  • نحوه درخواست کمک How to ask for help

معرفی Introduction

  • معرفی Introduction

  • کمی در مورد من A bit about me

  • اشتباهات: همه ما مرتکبشان می شویم. Mistakes: we all make them.

راه اندازی محیط ما Setting up our environment

  • در حال نصب Go Installing Go

  • در حال نصب Go Installing Go

  • نصب IDE Installing an IDE

  • یک حساب Stripe رایگان دریافت کنید Get a free Stripe account

  • یک حساب Stripe رایگان دریافت کنید Get a free Stripe account

  • در حال نصب make Installing make

  • نصب MariaDB Installing MariaDB

  • دریافت مشتری پایگاه داده Getting a database client

راه اندازی محیط ما Setting up our environment

  • نصب IDE Installing an IDE

  • در حال نصب make Installing make

  • نصب MariaDB Installing MariaDB

  • دریافت مشتری پایگاه داده Getting a database client

ساخت ترمینال کارت اعتباری مجازی Building a virtual credit card terminal

  • چیزی که قراره بسازیم What we're going to build

  • چیزی که قراره بسازیم What we're going to build

  • راه اندازی یک برنامه وب (بی اهمیت). Setting up a (trivial) web application

  • راه اندازی مسیرها و ساخت تابع رندر Setting up routes and building a render function

  • راه اندازی مسیرها و ساخت تابع رندر Setting up routes and building a render function

  • نمایش یک صفحه Displaying one page

  • پسوند بهتری برای قالب های Go و VS Code A better extension for Go templates and VS Code

  • ایجاد فرم Creating the form

  • ایجاد فرم Creating the form

  • اتصال فرم ما به stripe.js Connecting our form to stripe.js

  • اتصال فرم ما به stripe.js Connecting our form to stripe.js

  • اعتبار سنجی سمت مشتری Client side validation

  • اعتبار سنجی سمت مشتری Client side validation

  • دریافت PayIntent - راه اندازی بسته پایانی Getting the paymentIntent - setting up the back end package

  • دریافت PayIntent - راه اندازی بسته پایانی Getting the paymentIntent - setting up the back end package

  • دریافت PayIntent - شروع کار بر روی back end api Getting the paymentIntent - starting work on the back end api

  • دریافت PayIntent - تنظیم مسیر و کنترلر و استفاده از make Getting the paymentIntent - setting up a route and handler, and using make

  • دریافت PayIntent - تنظیم مسیر و کنترلر و استفاده از make Getting the paymentIntent - setting up a route and handler, and using make

  • دریافت PayIntent - در حال تکمیل مدیریت ما Getting the paymentIntent - finishing up our handler

  • دریافت PayIntent - در حال تکمیل مدیریت ما Getting the paymentIntent - finishing up our handler

  • در حال به‌روزرسانی جاوا اسکریپت جلویی برای فراخوانی PayIntent ما Updating the front end JavaScript to call our paymentIntent handler

  • دریافت قصد پرداخت و تکمیل تراکنش Getting the payment intent, and completing the transaction

  • ایجاد رسید Generating a receipt

  • ایجاد رسید Generating a receipt

  • در حال پاک کردن url API و کلید قابل انتشار Stripe در فرم ما Cleaning up the API url and Stripe Publishable Key on our form

  • دانشتان را امتحان کنید Test your knowledge

ساخت ترمینال کارت اعتباری مجازی Building a virtual credit card terminal

  • راه اندازی یک برنامه وب (بی اهمیت). Setting up a (trivial) web application

  • نمایش یک صفحه Displaying one page

  • پسوند بهتری برای قالب های Go و VS Code A better extension for Go templates and VS Code

  • دریافت PayIntent - شروع کار بر روی back end api Getting the paymentIntent - starting work on the back end api

  • در حال به‌روزرسانی جاوا اسکریپت جلویی برای فراخوانی PayIntent ما Updating the front end JavaScript to call our paymentIntent handler

  • دریافت قصد پرداخت و تکمیل تراکنش Getting the payment intent, and completing the transaction

  • در حال پاک کردن url API و کلید قابل انتشار Stripe در فرم ما Cleaning up the API url and Stripe Publishable Key on our form

  • دانشتان را امتحان کنید Test your knowledge

فروش آنلاین محصول Selling a product online

  • قراره چی بسازیم؟ What are we going to build?

  • پایگاه داده را ایجاد کنید Create the database

  • ایجاد فرم محصول Creating the product form

  • انتقال جاوا اسکریپت به یک فایل قابل استفاده مجدد Moving JavaScript to a reusable file

  • تغییر هندلر برای گرفتن یک ساختار Modifying the handler to take a struct

  • صفحه ویجت را برای استفاده از داده های ارسال شده به الگو به روز کنید Update the Widget page to use data passed to the template

  • تست عملکرد تراکنش Testing the transaction functionality

  • درج تراکنش جدید Inserting a new transaction

  • درج سفارش جدید Inserting a new order

  • یک نکته: رفع مشکل در محاسبه مبلغ An aside: fixing a problem with calculating the amount

  • شروع به ذخیره اطلاعات مشتری و معاملات Getting started saving customer and transaction information

  • روش ذخیره پایگاه داده مشتری را ایجاد کنید Create the save customer database method

  • صرفه جویی در مشتری، معامله و سفارش از طرف کنترل کننده Saving the customer, transaction, and order from the handler

  • اجرای یک تراکنش آزمایشی Running a test transaction

  • رفع خطای پایگاه داده و ذخیره جزئیات بیشتر Fixing a database error, and saving more details

  • تغییر مسیر بعد از پست Redirecting after post

  • در حال بازبینی ترمینال مجازی ما Revising our Virtual Terminal

  • رفع یک اشتباه در تابع قالب فرمت ارز Fixing a mistake in the formatCurrency template function

فروش آنلاین محصول Selling a product online

  • قراره چی بسازیم؟ What are we going to build?

  • پایگاه داده را ایجاد کنید Create the database

  • اتصال به پایگاه داده Connecting to the database

  • اتصال به پایگاه داده Connecting to the database

  • ایجاد صفحه محصول Creating a product page

  • ایجاد صفحه محصول Creating a product page

  • ایجاد فرم محصول Creating the product form

  • انتقال جاوا اسکریپت به یک فایل قابل استفاده مجدد Moving JavaScript to a reusable file

  • تغییر هندلر برای گرفتن یک ساختار Modifying the handler to take a struct

  • صفحه ویجت را برای استفاده از داده های ارسال شده به الگو به روز کنید Update the Widget page to use data passed to the template

  • ایجاد تابع قالب فرمت ارز Creating a formatCurrency template function

  • ایجاد تابع قالب فرمت ارز Creating a formatCurrency template function

  • تست عملکرد تراکنش Testing the transaction functionality

  • ایجاد جدول پایگاه داده برای اقلام برای فروش Creating a database table for items for sale

  • ایجاد جدول پایگاه داده برای اقلام برای فروش Creating a database table for items for sale

  • اجرای مهاجرت های پایگاه داده Running database migrations

  • اجرای مهاجرت های پایگاه داده Running database migrations

  • ایجاد مدل های پایگاه داده Creating database models

  • ایجاد مدل های پایگاه داده Creating database models

  • کار بر روی توابع پایگاه داده Working on database functions

  • کار بر روی توابع پایگاه داده Working on database functions

  • درج تراکنش جدید Inserting a new transaction

  • درج سفارش جدید Inserting a new order

  • یک نکته: رفع مشکل در محاسبه مبلغ An aside: fixing a problem with calculating the amount

  • دریافت اطلاعات بیشتر در مورد یک تراکنش Getting more information about a transaction

  • دریافت اطلاعات بیشتر در مورد یک تراکنش Getting more information about a transaction

  • مشتریان Customers

  • مشتریان Customers

  • شروع به ذخیره اطلاعات مشتری و معاملات Getting started saving customer and transaction information

  • روش ذخیره پایگاه داده مشتری را ایجاد کنید Create the save customer database method

  • صرفه جویی در مشتری، معامله و سفارش از طرف کنترل کننده Saving the customer, transaction, and order from the handler

  • اجرای یک تراکنش آزمایشی Running a test transaction

  • رفع خطای پایگاه داده و ذخیره جزئیات بیشتر Fixing a database error, and saving more details

  • تغییر مسیر بعد از پست Redirecting after post

  • کنترل کننده PaymentSucceeded ما را ساده می کنیم Simplifying our PaymentSucceeded handler

  • کنترل کننده PaymentSucceeded ما را ساده می کنیم Simplifying our PaymentSucceeded handler

  • در حال بازبینی ترمینال مجازی ما Revising our Virtual Terminal

  • رفع یک اشتباه در تابع قالب فرمت ارز Fixing a mistake in the formatCurrency template function

تنظیم و شارژ یک پرداخت تکراری با استفاده از Stripe Plans Setting up and charging a recurring payment using Stripe Plans

  • در این بخش قرار است چه چیزی بسازیم؟ What are we going to build in this section?

  • ایجاد طرح در داشبورد Stripe Creating a Plan on the Stripe Dashboard

  • تنظیم فرم Setting up the form

  • کار بر روی جاوا اسکریپت برای پلن ها Working on the JavaScript for plans

  • ادامه با جاوا اسکریپت برای اشتراک در یک طرح Continuing with the Javascript for subscribing to a plan

  • پس از عضویت کاربر، یک کنترل کننده برای درخواست POST ایجاد کنید Create a handler for the POST request after a user is subscribed

  • در حال به روز رسانی کنترل کننده ما برای تکمیل یک اشتراک Updating our handler to complete a subscription

  • ذخیره اطلاعات تراکنش و مشتری در پایگاه داده Saving transaction & customer information to the database

  • ذخیره اطلاعات معامله و مشتری II Saving transaction & customer information II

  • نمایش صفحه رسید پلان برنز Displaying a receipt page for the Bronze Plan

تنظیم و شارژ یک پرداخت تکراری با استفاده از Stripe Plans Setting up and charging a recurring payment using Stripe Plans

  • در این بخش قرار است چه چیزی بسازیم؟ What are we going to build in this section?

  • ایجاد طرح در داشبورد Stripe Creating a Plan on the Stripe Dashboard

  • ایجاد خرد برای صفحه جلویی و کنترلر Creating stubs for the front end page and handler

  • ایجاد خرد برای صفحه جلویی و کنترلر Creating stubs for the front end page and handler

  • تنظیم فرم Setting up the form

  • کار بر روی جاوا اسکریپت برای پلن ها Working on the JavaScript for plans

  • ادامه با جاوا اسکریپت برای اشتراک در یک طرح Continuing with the Javascript for subscribing to a plan

  • پس از عضویت کاربر، یک کنترل کننده برای درخواست POST ایجاد کنید Create a handler for the POST request after a user is subscribed

  • روش هایی برای ایجاد مشتری Stripe ایجاد کنید و در یک طرح مشترک شوید Create methods to create a Stripe customer and subscribe to a plan

  • روش هایی برای ایجاد مشتری Stripe ایجاد کنید و در یک طرح مشترک شوید Create methods to create a Stripe customer and subscribe to a plan

  • در حال به روز رسانی کنترل کننده ما برای تکمیل یک اشتراک Updating our handler to complete a subscription

  • ذخیره اطلاعات تراکنش و مشتری در پایگاه داده Saving transaction & customer information to the database

  • ذخیره اطلاعات معامله و مشتری II Saving transaction & customer information II

  • نمایش صفحه رسید پلان برنز Displaying a receipt page for the Bronze Plan

احراز هویت Authentication

  • معرفی Introduction

  • ایجاد صفحه ورود Creating a login page

  • نوشتن جاوا اسکریپت خرد برای احراز هویت در پشت انتهای Writing the stub javascript to authenticate against the back end

  • یک مسیر و کنترلر برای احراز هویت ایجاد کنید Create a route and handler for authentication

  • یک تابع کمکی writeJSON ایجاد کنید Create a writeJSON helper function

  • ایجاد یک تابع کمکی invalidCredentials Creating an invalidCredentials helper function

  • بررسی احراز هویت در انتهای پشت Checking authentication on the back end

  • کمی خانه داری A bit of housekeeping

  • استخراج نشانه از هدر مجوز Extracting the token from the authorization header

  • چالش: بررسی انقضا Challenge: Checking for expiry

  • راه حل چالش Solution to challenge

  • در حال امتحان کردن یک مسیر محافظت شده Trying out a protected route

احراز هویت Authentication

  • معرفی Introduction

  • ایجاد صفحه ورود Creating a login page

  • نوشتن جاوا اسکریپت خرد برای احراز هویت در پشت انتهای Writing the stub javascript to authenticate against the back end

  • یک مسیر و کنترلر برای احراز هویت ایجاد کنید Create a route and handler for authentication

  • یک تابع کمکی writeJSON ایجاد کنید Create a writeJSON helper function

  • شروع فرآیند احراز هویت Starting the authentication process

  • شروع فرآیند احراز هویت Starting the authentication process

  • ایجاد یک تابع کمکی invalidCredentials Creating an invalidCredentials helper function

  • ایجاد یک تابع کمکی پسورد مطابقت Creating a passwordMatches helper function

  • ایجاد یک تابع کمکی پسورد مطابقت Creating a passwordMatches helper function

  • اطمینان از اینکه همه چیز کار می کند Making sure that everything works

  • اطمینان از اینکه همه چیز کار می کند Making sure that everything works

  • یک تابع برای تولید یک توکن ایجاد کنید Create a function to generate a token

  • یک تابع برای تولید یک توکن ایجاد کنید Create a function to generate a token

  • تولید و ارسال یک توکن Generating and sending back a token

  • تولید و ارسال یک توکن Generating and sending back a token

  • ذخیره توکن در پایگاه داده Saving the token to the database

  • ذخیره توکن در پایگاه داده Saving the token to the database

  • ذخیره توکن در حافظه محلی Saving the token to local storage

  • ذخیره توکن در حافظه محلی Saving the token to local storage

  • تغییر لینک ورود بر اساس وضعیت احراز هویت Changing the login link based on authentication status

  • تغییر لینک ورود بر اساس وضعیت احراز هویت Changing the login link based on authentication status

  • بررسی احراز هویت در انتهای پشت Checking authentication on the back end

  • کمی خانه داری A bit of housekeeping

  • ایجاد توابع خرد برای تأیید اعتبار یک نشانه Creating stub functions to validate a token

  • ایجاد توابع خرد برای تأیید اعتبار یک نشانه Creating stub functions to validate a token

  • استخراج نشانه از هدر مجوز Extracting the token from the authorization header

  • اعتبار سنجی توکن در انتهای پشتی Validating the token on the back end

  • اعتبار سنجی توکن در انتهای پشتی Validating the token on the back end

  • در حال آزمایش اعتبارسنجی رمز ما Testing out our token validation

  • در حال آزمایش اعتبارسنجی رمز ما Testing out our token validation

  • چالش: بررسی انقضا Challenge: Checking for expiry

  • راه حل چالش Solution to challenge

  • پیاده سازی میان افزار برای محافظت از مسیرهای خاص Implementing middleware to protect specfic routes

  • پیاده سازی میان افزار برای محافظت از مسیرهای خاص Implementing middleware to protect specfic routes

  • در حال امتحان کردن یک مسیر محافظت شده Trying out a protected route

  • تبدیل پست ترمینال مجازی به استفاده از قسمت پشتی Converting the Virtual Terminal post to use the back end

  • تبدیل پست ترمینال مجازی به استفاده از قسمت پشتی Converting the Virtual Terminal post to use the back end

  • تغییر صفحه ترمینال مجازی برای استفاده از Fetch Changing the virtual terminal page to use fetch

  • تغییر صفحه ترمینال مجازی برای استفاده از Fetch Changing the virtual terminal page to use fetch

  • بررسی تراکنش ذخیره شده Verifying the saved transaction

  • بررسی تراکنش ذخیره شده Verifying the saved transaction

محافظت از مسیرها در Front End و بهبود احراز هویت Protecting routes on the Front End and improving authentication

  • حفاظت از مسیرها در قسمت جلویی Protecting routes on the front end

محافظت از مسیرها در Front End و بهبود احراز هویت Protecting routes on the Front End and improving authentication

  • نوشتن میان افزار در قسمت جلویی برای بررسی احراز هویت Writing middleware on the front end to check authentication

  • نوشتن میان افزار در قسمت جلویی برای بررسی احراز هویت Writing middleware on the front end to check authentication

  • حفاظت از مسیرها در قسمت جلویی Protecting routes on the front end

  • خروج از قسمت جلویی Logging out from the front end

  • خروج از قسمت جلویی Logging out from the front end

  • ذخیره جلسات در پایگاه داده Saving sessions in the database

  • ذخیره جلسات در پایگاه داده Saving sessions in the database

ایمیل و رمز عبور بازنشانی می شود Mail and Password Resets

  • رمز عبور بازنشانی می شود Password resets

  • پیاده سازی پیوندهای امضا شده برای پیام ایمیل ما Implementing signed links for our email message

  • تنظیم صفحه بازنشانی رمز عبور Setting up the reset password page

  • افزودن بسته رمزگذاری Adding an encryption package

  • استفاده از بسته رمزگذاری ما برای قفل کردن بازنشانی رمز عبور Using our encryption package to lock down password resets

ایمیل و رمز عبور بازنشانی می شود Mail and Password Resets

  • رمز عبور بازنشانی می شود Password resets

  • ارسال نامه قسمت اول Sending mail Part I

  • ارسال نامه قسمت اول Sending mail Part I

  • Mailtrap.io Mailtrap.io

  • Mailtrap.io Mailtrap.io

  • ارسال نامه قسمت دوم Sending mail Part II

  • ارسال نامه قسمت دوم Sending mail Part II

  • ایجاد الگوهای ایمیل ما و ارسال یک ایمیل آزمایشی Creating our mail templates and sending a test email

  • ایجاد الگوهای ایمیل ما و ارسال یک ایمیل آزمایشی Creating our mail templates and sending a test email

  • پیاده سازی پیوندهای امضا شده برای پیام ایمیل ما Implementing signed links for our email message

  • با استفاده از بسته urlsigner ما Using our urlsigner package

  • با استفاده از بسته urlsigner ما Using our urlsigner package

  • ایجاد مسیر و کنترل کننده رمز عبور بازنشانی Creating the reset password route and handler

  • ایجاد مسیر و کنترل کننده رمز عبور بازنشانی Creating the reset password route and handler

  • تنظیم صفحه بازنشانی رمز عبور Setting up the reset password page

  • ایجاد یک مسیر برگشتی برای مدیریت بازنشانی رمز عبور Creating a back end route to handle password resets

  • ایجاد یک مسیر برگشتی برای مدیریت بازنشانی رمز عبور Creating a back end route to handle password resets

  • تنظیم انقضا برای ایمیل های بازنشانی رمز عبور Setting an expiry for password reset emails

  • تنظیم انقضا برای ایمیل های بازنشانی رمز عبور Setting an expiry for password reset emails

  • افزودن بسته رمزگذاری Adding an encryption package

  • استفاده از بسته رمزگذاری ما برای قفل کردن بازنشانی رمز عبور Using our encryption package to lock down password resets

ساخت صفحات مدیریت برای مدیریت خریدها Building Admin pages to manage purchases

  • راه اندازی صفحات خرد برای فروش و اشتراک Setting up stub pages for sales and subscriptions

  • فهرست کردن همه فروش ها: پرس و جو پایگاه داده Listing all sales: database query

  • فهرست کردن همه فروش ها: تابع پایگاه داده Listing all sales: database function

  • فهرست کردن همه فروش‌ها: نوشتن کنترلر و مسیر API Listing all sales: writing the API handler and route

  • لیست تمام فروش ها: جاوا اسکریپت جلویی Listing all sales: front end javascript

  • میزمان را زیباتر کنیم و چند بررسی در جاوا اسکریپت اضافه کنیم Making our table prettier, and adding some checks in JavaScript

  • راه حل چالش Solution to challenge

  • نمایش فروش: قسمت 1 Displaying a sale: part 1

  • نمایش اشتراک Displaying a subscription

ساخت صفحات مدیریت برای مدیریت خریدها Building Admin pages to manage purchases

  • بهبود بخش جلویی ما و تنظیم یک منوی مدیریت Improving our front end and setting up an Admin menu

  • بهبود بخش جلویی ما و تنظیم یک منوی مدیریت Improving our front end and setting up an Admin menu

  • راه اندازی صفحات خرد برای فروش و اشتراک Setting up stub pages for sales and subscriptions

  • به روز رسانی مهاجرت ها و تنظیم مجدد پایگاه داده Updating migrations and resetting the database

  • به روز رسانی مهاجرت ها و تنظیم مجدد پایگاه داده Updating migrations and resetting the database

  • فهرست کردن همه فروش ها: پرس و جو پایگاه داده Listing all sales: database query

  • فهرست کردن همه فروش ها: تابع پایگاه داده Listing all sales: database function

  • فهرست کردن همه فروش‌ها: نوشتن کنترلر و مسیر API Listing all sales: writing the API handler and route

  • لیست تمام فروش ها: جاوا اسکریپت جلویی Listing all sales: front end javascript

  • نمایش نتایج ما در یک جدول Displaying our results in a table

  • نمایش نتایج ما در یک جدول Displaying our results in a table

  • میزمان را زیباتر کنیم و چند بررسی در جاوا اسکریپت اضافه کنیم Making our table prettier, and adding some checks in JavaScript

  • راه حل چالش Solution to challenge

  • نمایش فروش: قسمت 1 Displaying a sale: part 1

  • نمایش فروش: قسمت 2 Displaying a sale: part 2

  • نمایش فروش: قسمت 2 Displaying a sale: part 2

  • نمایش اشتراک Displaying a subscription

بازپرداخت Refunds

  • بازپرداخت از داشبورد Stripe Refunds from the Stripe Dashboard

  • قسمت جلویی را برای بازپرداخت به‌روزرسانی کنید Update the front end for refunds

  • بهبود قسمت جلویی Improving the front end

بازپرداخت Refunds

  • بازپرداخت از داشبورد Stripe Refunds from the Stripe Dashboard

  • اضافه کردن یک تابع بازپرداخت به بسته کارت ما Adding a refund function to our cards package

  • اضافه کردن یک تابع بازپرداخت به بسته کارت ما Adding a refund function to our cards package

  • ایجاد یک کنترلر API برای پردازش بازپرداخت Creating an API handler to process refunds

  • ایجاد یک کنترلر API برای پردازش بازپرداخت Creating an API handler to process refunds

  • قسمت جلویی را برای بازپرداخت به‌روزرسانی کنید Update the front end for refunds

  • بهبود قسمت جلویی Improving the front end

  • افزودن اجزای رابط کاربری به صفحه فروش Adding UI components to the sales page

  • افزودن اجزای رابط کاربری به صفحه فروش Adding UI components to the sales page

  • به روز رسانی وضعیت به بازپرداخت در پایگاه داده Updating status to refunded in the database

  • به روز رسانی وضعیت به بازپرداخت در پایگاه داده Updating status to refunded in the database

لغو اشتراک ها Cancelling Subscriptions

  • گرفتن شناسه اشتراک Capturing the subscription id

  • اضافه کردن یک تابع لغو اشتراک به بسته کارت ما Adding a CancelSubscription function to our cards package

  • در حال اتمام قسمت جلویی Finishing up the front end

لغو اشتراک ها Cancelling Subscriptions

  • گرفتن شناسه اشتراک Capturing the subscription id

  • اضافه کردن یک تابع لغو اشتراک به بسته کارت ما Adding a CancelSubscription function to our cards package

  • ایجاد یک کنترل کننده برای لغو اشتراک Creating a handler to cancel a subscription

  • ایجاد یک کنترل کننده برای لغو اشتراک Creating a handler to cancel a subscription

  • اصلاح قسمت جلویی Modifying the front end

  • اصلاح قسمت جلویی Modifying the front end

  • در حال اتمام قسمت جلویی Finishing up the front end

صفحه بندی داده ها Paginating Data

  • در حال به روز رسانی الگوی all-sales.page.gohtml Updating the all-sales.page.gohtml template

  • بهبود صفحه بندی در قسمت جلویی Improving pagination on the front end

  • افزودن شنوندگان به دکمه های پیمایش صفحه Adding listeners to page navigation buttons

صفحه بندی داده ها Paginating Data

  • ایجاد یک روش پایگاه داده برای صفحه بندی تمام سفارشات Creating a database method to paginate all orders

  • ایجاد یک روش پایگاه داده برای صفحه بندی تمام سفارشات Creating a database method to paginate all orders

  • تغییر کنترل کننده AllSales برای استفاده از داده های صفحه بندی شده Modifying the AllSales handler to use paginated data

  • تغییر کنترل کننده AllSales برای استفاده از داده های صفحه بندی شده Modifying the AllSales handler to use paginated data

  • در حال به روز رسانی الگوی all-sales.page.gohtml Updating the all-sales.page.gohtml template

  • بهبود صفحه بندی در قسمت جلویی Improving pagination on the front end

  • افزودن شنوندگان به دکمه های پیمایش صفحه Adding listeners to page navigation buttons

  • بردن کاربر به تصحیح صفحه داده ها با کلیک Taking user to correct page of data on click

  • بردن کاربر به تصحیح صفحه داده ها با کلیک Taking user to correct page of data on click

  • چگونه صفحه بندی را در صفحه همه اشتراک ها پیاده سازی کردم How I implemented pagination on the all subscriptions page

  • چگونه صفحه بندی را در صفحه همه اشتراک ها پیاده سازی کردم How I implemented pagination on the all subscriptions page

مدیریت کاربران Managing Users

  • نمایش لیست کاربران Displaying the list of users

  • ایجاد فرم افزودن/ویرایش کاربر Creating a user add/edit form

  • ذخیره یک کاربر ویرایش شده - قسمت دوم Saving an edited user - part two

  • راه اندازی وب سوکت ها Setting up websockets

مدیریت کاربران Managing Users

  • راه اندازی قالب هایی برای مدیریت کاربران Setting up templates to manage users

  • راه اندازی قالب هایی برای مدیریت کاربران Setting up templates to manage users

  • اضافه کردن مسیرها و کنترلرها در قسمت جلویی Adding routes and handlers on the front end

  • اضافه کردن مسیرها و کنترلرها در قسمت جلویی Adding routes and handlers on the front end

  • نوشتن توابع پایگاه داده برای مدیریت کاربران Writing the database functions to manage users

  • نوشتن توابع پایگاه داده برای مدیریت کاربران Writing the database functions to manage users

  • ایجاد یک هندلر و مسیر برای همه کاربران در قسمت پشتی Creating a handler and route for all users on the back end

  • ایجاد یک هندلر و مسیر برای همه کاربران در قسمت پشتی Creating a handler and route for all users on the back end

  • به روز رسانی قسمت جلویی برای تماس با AllUsers Updating the front end to call AllUsers

  • به روز رسانی قسمت جلویی برای تماس با AllUsers Updating the front end to call AllUsers

  • نمایش لیست کاربران Displaying the list of users

  • ایجاد فرم افزودن/ویرایش کاربر Creating a user add/edit form

  • برای دریافت یک کاربر با api back end تماس بگیرید Call the api back end to get one user

  • برای دریافت یک کاربر با api back end تماس بگیرید Call the api back end to get one user

  • پر کردن فرم کاربر و یک چالش Populating the user form, and a challenge

  • پر کردن فرم کاربر و یک چالش Populating the user form, and a challenge

  • راه حل چالش Solution to challenge

  • راه حل چالش Solution to challenge

  • ذخیره یک کاربر ویرایش شده - قسمت اول Saving an edited user - part one

  • ذخیره یک کاربر ویرایش شده - قسمت اول Saving an edited user - part one

  • ذخیره یک کاربر ویرایش شده - قسمت دوم Saving an edited user - part two

  • حذف یک کاربر Deleting a user

  • حذف یک کاربر Deleting a user

  • حذف توکن کاربران حذف شده از پایگاه داده Removing the deleted users token from the database

  • حذف توکن کاربران حذف شده از پایگاه داده Removing the deleted users token from the database

  • راه اندازی وب سوکت ها Setting up websockets

  • اتصال به WebSockets از مرورگر Connecting to WebSockets from the browser

  • اتصال به WebSockets از مرورگر Connecting to WebSockets from the browser

  • خروج کاربر حذف شده از طریق وب سوکت ها Logging the deleted user out over websockets

  • خروج کاربر حذف شده از طریق وب سوکت ها Logging the deleted user out over websockets

میکروسرویس ها Microservices

  • میکروسرویس ها چیست؟ What are microservices?

  • در حال تست PDF ما Testing our PDF

  • ارسال فاکتور Mailing the invoice

میکروسرویس ها Microservices

  • میکروسرویس ها چیست؟ What are microservices?

  • راه اندازی یک میکروسرویس ساده Setting up a simple microservice

  • راه اندازی یک میکروسرویس ساده Setting up a simple microservice

  • دریافت داده با میکروسرویس ما Receiving data with our micrsoservice

  • دریافت داده با میکروسرویس ما Receiving data with our micrsoservice

  • تولید فاکتور به صورت PDF Generating an invoice as a PDF

  • تولید فاکتور به صورت PDF Generating an invoice as a PDF

  • در حال تست PDF ما Testing our PDF

  • ارسال فاکتور Mailing the invoice

  • هنگامی که ویجت فروخته می شود با میکروسرویس تماس بگیرید Call the microservice when a Widget is sold

  • هنگامی که ویجت فروخته می شود با میکروسرویس تماس بگیرید Call the microservice when a Widget is sold

  • چالش Challenge

  • چالش Challenge

  • راه حل Solution

  • راه حل Solution

اعتبار سنجی Validation

  • راه اندازی بسته اعتبارسنجی Setting up a validation package

اعتبار سنجی Validation

  • راه اندازی بسته اعتبارسنجی Setting up a validation package

  • افزودن اعتبار سنجی در انتهای پشتیبان API Adding validation on the API back end

  • افزودن اعتبار سنجی در انتهای پشتیبان API Adding validation on the API back end

  • اصلاح جاوا اسکریپت جلویی Modifying the front end javascript

  • اصلاح جاوا اسکریپت جلویی Modifying the front end javascript

بعد کجا بریم Where to go next

  • gRPC، SOA و موارد دیگر gRPC, SOA, and more

بعد کجا بریم Where to go next

  • gRPC، SOA و موارد دیگر gRPC, SOA, and more

نمایش نظرات

آموزش ساخت برنامه های وب با Go - سطح متوسط
جزییات دوره
18.5 hours
172
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
5,103
4.8 از 5
دارد
دارد
دارد
Trevor Sawler
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar