آموزش ساخت برنامه های کاربردی وب مدرن با Go (Golang)

Building Modern Web Applications with Go (Golang)

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: آموزش برنامه نویسی در Go از استاد دانشگاه برنده جایزه نحوه نوشتن برنامه به زبان Go (اغلب به نام Golang) نحوه ایجاد صفحات HTML با استفاده از HTML5 نحوه نوشتن جاوا اسکریپت بدون وابستگی به چیزی مانند jQuery نحوه ایجاد و استفاده از Cascading Style Sheets چگونه برای ساختن برنامه های وب مدرن و ایمن در زبان برنامه نویسی Google Go چگونه برنامه Go خود را به درستی سازماندهی کنیم نحوه نوشتن تست در Go نحوه اتصال به پایگاه داده در Go نحوه مدیریت جلسات در Go نحوه ایجاد و استفاده از میان افزار در Go نحوه استفاده بسته های شخص ثالث با ماژول های Go نحوه پیاده سازی احراز هویت ایمن کاربر در Go بهترین روش ها برای امنیت در برنامه های تحت وب نحوه استقرار یک برنامه وب Go در سرور زنده پیش نیازها: هیچ پیش نیازی برای این دوره وجود ندارد. تنها چیزی که نیاز دارید یک کامپیوتر (مک، ویندوز یا لینوکس) و اتصال به اینترنت است.

نوشتن برنامه های کاربردی وب مدرن، سریع و ایمن در زبان برنامه نویسی Google Go را بیاموزید و آن را از یک استاد دانشگاه برنده جایزه با 20 سال سابقه تدریس و 20 سال تجربه کار در صنعت به عنوان یک کارآفرین یاد بگیرید.

Go یک زبان برنامه نویسی مدرن، تایپ ایمن، کامپایل شده و بسیار سریع است. این برای ساخت برنامه های کاربردی وب ایمن، مقیاس پذیر و فوق العاده سریع مناسب است.

این دوره هم برای مبتدیان کاملاً مناسب است و هم برای توسعه دهندگانی که قبلاً چیزی در مورد توسعه وب می دانند، اما می خواهند Go را به جعبه ابزار خود اضافه کنند.

ما با یک نمای کلی از زبان Go شروع می کنیم و سپس همه چیزهایی را که برای شروع نوشتن برنامه های وب نیاز دارید، از جمله مروری بر HTML5، بررسی ماژول های جاوا اسکریپت و جاوا اسکریپت، نحوه کار با Cascading Style Sheets را پوشش می دهیم. برنامه به شکلی که ما می خواهیم به نظر می رسد، و خیلی بیشتر.

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

زمانی که این دوره را به پایان می رسانید، درک کاملی از آنچه که برای ساخت یک برنامه وب کاملا کاربردی، ایمن و سریع از ابتدا لازم است خواهید داشت و درک کاملی از زبان برنامه نویسی Go خواهید داشت. .



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

معرفی Introduction

  • مقدمه: من کی هستم و قرار است چه کاری انجام دهیم Introduction: who I am, and what we're going to do

  • چرا برو؟ چرا PHP یا Python یا Node.js یا هر چیز دیگری نیست؟ Why Go? Why not PHP, or Python, or Node.js, or whatever?

  • چرا برو؟ - منابع سیستم Why Go? - System Resources

  • نصب Go، یک IDE و نوشتن یک برنامه ساده Installing Go, an IDE, and writing a simple program

  • دریافت کمک: چگونه سوال بپرسیم Getting help: How to ask questions

  • برخی از منابع مفید Some Useful Resources

مروری بر زبان Go Overview of the Go Language

  • نکته ای در مورد ترمینال در ویندوز: Git Bash A note about the terminal on Windows: Git Bash

  • متغیرها و توابع Variables & Functions

  • اشاره گرها Pointers

  • انواع و سازه ها Types and Structs

  • گیرنده ها: سازه هایی با توابع Receivers: Structs with functions

  • سایر ساختارهای داده: نقشه ها و برش ها Other data structures: Maps and Slices

  • ساختارهای تصمیم گیری Decision Structures

  • حلقه‌ها و محدوده‌ای روی داده‌ها Loops and ranging over data

  • رابط ها Interfaces

  • مسابقه تست Test quiz

  • بسته ها Packages

  • کانال ها Channels

  • خواندن و نوشتن JSON Reading and Writing JSON

  • تست های نوشتن در Go Writing Tests in Go

ساخت یک برنامه وب پایه Building a Basic Web Application

  • نحوه کار برنامه های کاربردی وب: چرخه عمر درخواست/پاسخ How web applications work: the request/response lifecycle

  • ساخت اپلیکیشن تحت وب "Hello, World". Making a "Hello, World" web application

  • ماژول برنامه ما را آماده می کنیم Making our application module-ready

  • توابع و کنترل کننده ها Functions and handlers

  • خطا در بررسی Error checking

  • ارائه الگوهای HTML Serving HTML Templates

  • نکته ای برای کاربران ویندوز A note for Windows Users

  • سازماندهی مجدد کد ما، و افزودن برخی سبک های اولیه به صفحات Reorganizing our code, and adding some basic styling to pages

  • فعال کردن Go Modules و بازسازی کد ما برای استفاده از بسته ها Enabling Go Modules and refactoring our code to use packages

  • کار با Layouts Working with Layouts

  • ساخت یک کش قالب ساده Building a simple template cache

  • ساخت کش قالب پیچیده تر Building a more complex template cache

  • نکته ای در مورد سخنرانی های بعدی A note about the next lectures

  • تنظیم پیکربندی گسترده برنامه Setting application wide configuration

  • چرا پیکربندی گسترده برنامه بسیار مفید است Why the application wide config is so useful

  • بهینه سازی حافظه پنهان الگو با استفاده از پیکربندی برنامه Optimizing our template cache by using an application config

  • نکته ای در مورد سخنرانی بعدی A note about the next lecture

  • به اشتراک گذاری داده ها با قالب ها Sharing data with templates

مسیریابی و میان افزار بهبود یافته Improved Routing & Middleware

  • استفاده از pat برای مسیریابی Using pat for routing

  • استفاده از چی برای مسیریابی Using chi for routing

  • در حال توسعه میان افزار خودمان Developing our own middleware

مدیریت دولتی با جلسات State Management with Sessions

  • نصب و راه اندازی بسته جلسات Installing and setting up a sessions package

  • آزمایش با جلسات Experimenting with sessions

انتخاب یک پروژه و کار با فرم ها Choosing a Project, and Working With Forms

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

  • راه اندازی پروژه ما Setting up our project

  • فعال کردن فایل های ثابت Enabling static files

  • ایجاد صفحات به صورت HTML Creating pages as HTML

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

  • ایجاد یک صفحه برای هر اتاق Creating a page for each room

  • افزودن فرم برای جستجوی در دسترس بودن Adding a form to search for availability

  • در حال بهبود فرم ما Improving our form

  • ایجاد صفحه رزرو Creating the reservation page

جاوا اسکریپت و CSS Javascript & CSS

  • جاوا اسکریپت چیست و چرا باید اهمیت بدهم؟ What is Javascript, and why should I care?

  • ساخت تاریخ انتخاب بهتر Making a better date picker

  • هشدارهای سفارشی با استفاده از Notie Custom alerts using Notie

  • ایجاد مدال با SweetAlert Creating modals with SweetAlert

  • پیاده سازی ماژول جاوا اسکریپت Implementing a Javascript module

  • افزودن هشدارهای سفارشی در ماژول جاوا اسکریپت Adding custom alerts in our Javascript module

  • با استفاده از ماژول جاوا اسکریپت بر روی دکمه "اکنون رزرو کنید". Using our Javascript module on the "Book Now" button

  • CSS چیست و چگونه کار می کند؟ What is CSS, and how does it work?

پوشاندن قالب‌های HTML به Go و ایجاد کنترل‌کننده‌ها Coverting our HTML to Go Templates, and creating handlers

  • در حال تبدیل صفحات ما به قالب های Go Converting our pages to Go templates

  • ایجاد کنترل کننده برای فرم های ما و افزودن محافظت CSRF Creating handlers for our forms & adding CSRF Protection

  • ایجاد یک کنترل کننده که JSON را برمی گرداند Creating a handler that return JSON

  • ارسال و پردازش درخواست AJAX Sending & processing an AJAX request

  • ارسال پست AJAX و تعمیم عملکرد سفارشی ما Sending AJAX post and generalizing our custom function

  • Refactoring برای استفاده از بسته های داخلی Refactoring to use internal packages

  • اعتبار سنجی فرم سمت سرور Server-side form validation

  • اعتبار سنجی فرم سمت سرور II Server side form validation II

  • اعتبار سنجی فرم سمت سرور III Server side form validation III

  • اعتبار سنجی فرم سمت سرور IV Server Side form validation IV

  • نمایش پاسخ به کاربر پس از ارسال اطلاعات فرم Displaying a response to user after posting form data

  • تکمیل پاسخ ما به کاربر و افزودن هشدارها Finishing up our response to user, and adding alerts

  • یک نکته: موتورهای الگوسازی جایگزین An aside: Alternate Templating Engines

تست های نوشتاری Writing Tests

  • تست نوشتن برای بسته اصلی ما Writing tests for our main package

  • تست های نوشتن برای گردانندگان GET ما Writing tests for our GET handlers

  • تست های نوشتن برای کنترل کننده های POST ما Writing tests for our POST handlers

  • تست های نوشتن برای بسته رندر I Writing tests for our Render package I

  • تست های نوشتن برای بسته Render II ما Writing tests for our Render package II

  • دریافت پوشش آزمون Getting test coverage

  • تمرین: تست های نوشتاری برای بسته فرم ها Exercise: Writing tests for the Forms package

  • راه حل برای نوشتن تست برای بسته فرم ها Solution to writing tests for the Forms package

  • اجرای برنامه ما را آسان تر می کند Making running our application easier

بهبود مدیریت خطا Improved Error Handling

  • متمرکز کردن رسیدگی به خطا در بسته کمکی Centralizing our error handling to a helpers package

  • با استفاده از توابع کمکی ClientError و ServerError Using our ClientError and ServerError helper functions

  • در حال به روز رسانی تست های ما Updating our tests

داده های ماندگار با PostgreSQL Persisting Data with PostgreSQL

  • نصب PostgreSQL Installing PostgreSQL

  • اتصال به پایگاه داده با DBeaver در مک Connecting to the database with DBeaver on a Mac

  • اتصال به پایگاه داده با DBeaver در ویندوز Connecting to the database with DBeaver on Windows

  • نحو اولیه SQL Basic SQL syntax

  • پرس و جوهای پیچیده تر More complex queries

طراحی ساختار پایگاه داده Designing the Database Structure

  • شناسایی ساختار پایگاه داده، و نمودارهای ارتباط نهاد Identifying database structure, and Entity Relationship Diagarams

  • سودا را نصب کنید Install Soda

  • ایجاد جدول کاربران با استفاده از مهاجرت Creating the users table using migrations

  • ایجاد بقیه پایگاه داده ما با استفاده از مهاجرت Creating the rest of our database using migrations

  • راه اندازی کلید خارجی Setting up a foreign key

  • راه اندازی بقیه کلیدهای خارجی ما Setting up the rest of our foreign keys

  • اضافه کردن شاخص ها و ورزش Adding Indices & Exercise

  • راه حلی برای ورزش Solution to Exercise

اتصال برنامه ما به پایگاه داده Connecting our Application to the Database

  • نحوه اتصال برنامه Go به پایگاه داده How to connect a Go application to a database

  • ایجاد بسته درایور Creating a Driver package

  • اتصال به پایگاه داده و افزودن اتصال SQL به مخزن ما Connecting to the database and adding the SQL connection to our Repository

  • راه اندازی مدل ها Setting up models

  • در حال پاک کردن کد ما Cleaning up our code

  • چند کلمه در مورد ORM ها A word about ORMs

  • تنظیم توابع پایگاه داده: درج رزرو Setting up database functions: inserting a reservation

  • تست عملکرد رزرو درج ما Testing our insert reservation function

  • درج محدودیت های اتاق Inserting Room Restrictions

  • جستجو برای در دسترس بودن بر اساس اتاق Searching for availability by room

  • جستجو برای در دسترس بودن برای همه اتاق ها Searching for availablity for all rooms

  • اتصال هندلرهای ما به توابع جدید پایگاه داده ما Connecting our handlers to our new database functions

  • اتصال در دسترس بودن جستجو به صفحه رزرو Connecting search availablity to the make reservation page

  • در حال تمیز کردن صفحه رزرو ما و آزمایش همه چیز Cleaning up our make reservation page and testing everything

  • پاک کردن صفحه خلاصه رزرو و بهبود اعتبار سنجی Cleaning up the reservation summary page and improving validation

  • جستجو برای در دسترس بودن بر اساس اتاق Searching for availability by Room

  • ارائه بازخورد هنگام جستجو بر اساس اتاق، و اتصال به صفحه رزرو Providing feedback when searching by room, and connecting to the reservation pag

  • اتصال صفحه اتاق ها به صفحه رزرواسیون Connecting the rooms page to the make reservation page

  • اتصال صفحه Major's Suite و استخراج ماژول جاوا اسکریپت Connecting the Major's Suite page, and extracting our javascript module

  • اضافه کردن یک مهاجرت برای اتاق های بذر Adding a migration for seeding rooms

  • افزودن مهاجرت برای محدودیت های بذر Adding a migration for seeding restrictions

در حال به روز رسانی تست های ما Updating our tests

  • ایجاد یک مخزن پایگاه داده آزمایشی Creating a test database repository

  • به روز رسانی آزمون های موجود ما برای رسیدگی به جلسات Updating our existing tests to handle sessions

  • بهبود آزمایشات ما با رسیدگی به موارد متعدد Improving our tests by handling multiple cases

  • تست گردانندگان پست Testing Post handlers

  • تست در دسترس بودن JSON Testing AvailabilityJSON

  • تست های هندلر کامل شده Completed Handler tests

  • ساده کردن اضافه کردن پارامترهای پست Simplifying adding post parameters

ارسال نامه با استفاده از Go Sending Mail using Go

  • ارسال ایمیل با استفاده از کتابخانه استاندارد Sending email using the Standard Library

  • نصب بسته پستی و راه اندازی یک کانال ایمیل Installing a mailer package and setting up a mail channel

  • نصب Mailhog در مک برای اهداف آزمایشی Installing Mailhog on a Mac for testing purposes

  • نصب Mailhog در ویندوز برای اهداف آزمایشی Installing Mailhog on Windows for testing purposes

  • ایجاد و ارسال اعلان های ایمیل Creating and sending mail notifications

  • راه حل برای ارسال اعلان به صاحب ملک Solution to sending notification to property owner

  • ارسال ایمیل با فرمت زیبا با استفاده از Foundation Sending nicely formatted email using Foundation

  • در حال به روز رسانی تست های ما Updating our tests

احراز هویت Authentication

  • صفحه ورود ایجاد کنید Create the login screen

  • ایجاد کنترل کننده های احراز هویت برای صفحه ورود به سیستم Creating the authentication handlers for the login screen

  • ایجاد توابع احراز هویت و پایگاه داده کاربر Creating the authentication and user database functions

  • ایجاد کنترل کننده ما برای ورود به سیستم Creating our handler to log in

  • نوشتن میان افزار احراز هویت Writing Authentication Middleware

  • افزودن کاربر به پایگاه داده Adding a user to the database

  • تست ورود Testing Login

  • بررسی اینکه آیا یک کاربر وارد سیستم شده است یا خیر، و یک کاربر از سیستم خارج می شود Checking to see if a user is logged in, and logging a user out

  • محافظت از مسیرهای ما با میان افزار احراز هویت Protecting our routes with authentication middleware

راه اندازی مدیریت امن پشتیبان Setting up secure back end administration

  • انتخاب یک قالب مدیریت Picking an admin template

  • قالب ادمین را به قالب Go تبدیل کنید Convert the admin template into a Go template

  • مهم: یک یادداشت در مورد فایل admin.layout.tmpl Important: A note on the admin.layout.tmpl file

  • راه حل ایجاد قالب های مدیریت Solution to creating admin templates

  • کنترل کننده های خرد را برای عملکرد مدیریت ایجاد کنید Create stub handlers for admin functionality

  • فهرست کردن همه رزروها Listing all reservations

  • لیست رزروهای جدید Listing new reservations

  • نمایش یک رزرو Showing one reservation

  • توابع پایگاه داده برای ویرایش رزرو Database functions for editing a reservation

  • ویرایش یک رزرو Editing a reservation

  • علامت گذاری یک رزرو به عنوان پردازش شده Marking a reservation as processed

  • حذف رزرو Deleting a reservation

  • نمایش تقویم رزرو Showing the reservation calendar

  • تقویم رزرو II Reservation Calendar II

  • تقویم رزرو III Reservation Calendar III

  • تقویم رزرو IV Reservation Calendar IV

  • مدیریت تغییرات تقویم I Handling Calendar changes I

  • مدیریت تغییرات تقویم II Handling Calendar changes II

  • مدیریت تغییرات تقویم III Handling Calendar changes III

  • مدیریت تغییرات تقویم IV Handling Calendar changes IV

  • اصلاح تغییر مسیرهای ما Fixing our redirects

  • در حال به روز رسانی تست های ما Updating our tests

  • رفع یک اشکال از دست رفته توسط آزمایش های ما Fixing a bug missed by our tests

  • چند کلمه در مورد تست های به روز شده A word about the updated tests

در حال به روز رسانی برنامه های ما برای پذیرش پارامترهای خط فرمان Updating our applications to accept command line parameters

  • تغییر برنامه ما برای استفاده از پرچم های خط فرمان Changing our app to use command line flags

  • یک جایگزین: فایل .env An alternative: the .env file

استقرار برنامه ما در یک سرور Deploying Our Application to a Server

  • استفاده از vi برای ویرایش فایل ها در سرور راه دور Using vi to edit files on remote server

  • انتخاب پلت فرم سرور Choosing a server platform

  • کاربر مدیر را به مهاجرت اضافه کنید Add admin user to migrations

  • نصب Go بر روی سرور، و دریافت کد ما در آنجا Installing Go on the server, and getting our code up there

  • راه اندازی پایگاه داده از راه دور و ساخت برنامه بر روی سرور ما Setting up the remote database and building the application on our server

  • نکته ای در مورد Caddy 2.5.0 A note about Caddy 2.5.0

  • اتصال برنامه به وب سرور Connecting the application to the web server

  • راه اندازی سرپرست Setting up Supervisor

  • نوشتن یک اسکریپت به روز رسانی برای سرور Writing an update script for the server

  • نکته ای در مورد ارسال نامه از سرور زنده A note about sending mail from the live server

پایان لمس Finishing Touches

  • به روز رسانی به بوت استرپ 5 Updating to Bootstrap 5

  • به روز رسانی پاورقی و عنوان صفحه Updating the footer and page title

  • اتمام کار، و رفع اشکال Finishing touches, and fixing a bug

  • پر کردن بقیه صفحات Populating the rest of the pages

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

  • منابع اضافی Additional resources

نمایش نظرات

آموزش ساخت برنامه های کاربردی وب مدرن با Go (Golang)
جزییات دوره
29.5 hours
183
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
22,899
4.7 از 5
دارد
دارد
دارد
Trevor Sawler
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar