usegolang - Web Development with Go
WEBRip | English | MP4 + Project Files | 1920 x 1080 | AVC ~780 kbps | 30 fps
AAC | 253 Kbps | 48.0 KHz | 2 channels | ~33 hours | 12.51 GB
Genre: eLearning Video / Development, Programming Languages
WEBRip | English | MP4 + Project Files | 1920 x 1080 | AVC ~780 kbps | 30 fps
AAC | 253 Kbps | 48.0 KHz | 2 channels | ~33 hours | 12.51 GB
Genre: eLearning Video / Development, Programming Languages
Learn to build real, production-grade web applications from scratch. In this course we build and deploy a photo sharing application complete with users, authentication, image uploads, a database, and more. We even deploy to a production server and set up automatic HTTPS.Includes:
Section 1: Getting Started
A Basic Web Application (Sample)
Troubleshooting and Slack
Packages and Imports (Sample)
Editors and Automatic Imports (Sample)
The "Hello, World" Part of our Code (Sample)
Web Requests (Sample)
HTTP Methods (Sample)
Our Handler Function (Sample)
Registering our Handler Function… (Sample)
Go Modules (Sample)
Section 2: Adding New Pages
Dynamic Reloading (Sample)
Setting Header Values (Sample)
Creating a Contact Page (Sample)
Examining the http.Request Type (Sample)
Custom Routing (Sample)
URL Path vs RawPath
Not Found Page
The http.Handler Type
The http.HandlerFunc Type
Exploring Handler Conversions
FAQ Exercises
Section 3: Routers and 3rd Party Libraries
Defining our Routing Needs
Using git
Installing Chi
Using Chi
Chi Exercises
Section 4: Templates
What are Templates?
Why Do We Use Server Side Rendering?
Creating Our First Template
Cross Site Scripting (XSS)
Alternative Template Libraries
Contextual Encoding
Home Page via Template
Contact Page via Template
FAQ Page via Template
Template Exercises
Section 5: Code Organization
Code Organization
MVC Overview
Walking Through a Web Request with MVC
MVC Exercises
Section 6: Starting to Apply MVC
Creating the Views Package
fmt.Errorf
Validating Templates at Startup
Must Functions
Exercises
Section 7: Enhancing our Views
Embedding Template Files
Variadic Parameters
Named Templates
Dynamic FAQ Page
Reusable Layouts
Tailwind CSS
Utility-first CSS
Adding a Navigation Bar
Exercises
Section 8: The Signup Page
Creating the Signup Page
Styling the Signup Page
Intro to REST
Users Controller
Decouple with Interfaces
Parsing the Signup Form
URL Query Params
Exercises
Section 9: Databases and PostgreSQL
Intro to Databases
Intalling Postgres
Connecting to Postgres
Update: Docker Container Names
Creating SQL Tables
Postgres Data Types
Postgres Constraints
Creating a Users Table
Inserting Records
Querying Records
Filtering Queries
Updating Records
Deleting Records
Additional SQL Resources
Section 10: Using Postgres with Go
Connecting to Postgres with Go
Imports with Side Effects
Postgres Config Type
Executing SQL with Go
Inserting Records with Go
SQL Injection
Acquire a new Record's ID
Querying a Single Record
Creating Sample Orders
Querying Multiple Records
ORMs vs SQL
Exercises
Syncing the Book and Screencasts Source Code
Section 11: Securing Passwords
Steps for Securing Passwords
Third Party Authentication Options
What is a Hash Function?
Store Password Hashes, Not Encrypted or Plaintext Values
Salt Passwords
Learning bcrypt with a CLI
Hashing Passwords with bcrypt
Comparing a Password with a bcrypt Hash
Section 12: Adding Users to our App
Defining the User Model
Creating the UserService
Create User Method
Postgres Config for the Models Package
UserService in the Users Controller
Create Users on Signup
Sign In View
Authenticate Users
Process Sign In Attempts
Section 13: Remembering Users with Cookies
Stateless Servers
Creating Cookies
Viewing Cookies with Chrome
Viewing Cookies with Go
Securing Cookies from XSS
Cookie Theft
CSRF Attacks
CSRF Middleware
Providing CSRF to Templates via Data
Custom Template Functions
Adding the HTTP Request to Execute
Request Specific CSRF Template Function
Template Function Errors
Securing Cookies from Tampering
Cookie Exercises
Section 14: Sessions
Random Strings with crypto/rand
Exploring math/rand
Wrapping the crypto/rand package
Why Do We Use 32 Bytes for Session Tokens?
Defining the Sessions Table
Stubbing the SessionService
Sessions in the Users Controller
Cookie Helper Functions
Create Session Tokens
Refactor the rand Package
Hash Session Tokens
Insert Sessions into the Database
Update Existing Sessions
Query Users via Session Token
Deleting Session
Sign Out Handler
Sign Out Link
Session Exercises
Section 15: Improved SQL
SQL Relationships
Foreign Keys
On Delete Cascade
Inner Join
Left, Right, and Full Outer Join
Using Join in the SessionService
SQL Indexes
Creating PostgreSQL Indexes
On Conflict
Improved SQL Exercises
Section 16: Schema Migrations
What are Schema Migrations?
How Migration Tools Work
Installing pressly/goose
Converting to Schema Migrations
Schema Versioning Problem
Run Goose with Go
Embedding Migrations
Go Migration Files
Removing Old SQL Files
Section 17: Current User via Context
Using Context to Store Values
Improved Context Keys
Context Values with Types
Storing Users as Context Values
Reading Request Context Values
Set the User via Middleware
Requiring a User via Middleware
Accessing the Current User in Templates
Request-Scoped Values
Section 18: Sending Emails to Users
Password Reset Overview
SMTP Services
Building Emails with SMTP
Sending Emails with SMTP
Building an Email Service
EmailService.Send
Forgot Password Email
ENV Variables
Section 19: Completing the Authentication System
Password Reset DB Migration
Password Reset Service Stubs
Forgot Password HTTP Handler
Asynchronous Emails
Forgot Password HTML Template
Initializing Services with ENV Vars
Check Your Email HTML Template
Reset Password HTTP Handlers
Reset Password HTML Template
Update Password Function
Implementing PasswordReset.Create
Implementing PasswordReset.Consume
Section 20: Rendering Alerts
Designing an Alert Banner
Rendering Dynamic Errors
Hiding the Alert Banner
Alert Template Function
Rendering Signup Errors
Public vs Internal Errors
Rendering Login Errors
Redirecting with Alerts
Updating Existing Error Handling
Section 21: Galleries
Section Overview
The Gallery Model
Gallery Service
Sharing a DB Connection
Implementing the GalleryService
Initial Galleries Handler
Create Gallery Endpoint
Validators and Normalizers
Edit Galleries Endpoint
Update Galleries Endpoint
Show Gallery Endpoint
Delete Gallery Endpoint
Gallery Index Endpoint
Navbar Updates
Section 22: Images
File Upload HTML Form
ParseMultipartForm
Parsing Image Uploads
The Image Service
Query Images via Gallery ID
Rendering Images
Deleting Images
Section 23: Preparing for Production
Serving Static Assets
CSRF Proction
Production .env file
Loading All Configs via ENV Vars
Section 24: Deploying
Setting Up a Server
Installing Postgres on the Server
Caddy Server
Deployment Script
Section 25: Managing Go Tools
Using Go to Manage Tool Versions
Installing Go Tools
also You can find my other helpful Programming-posts
(if old file-links don't show activity, try copy-paste them to the address bar)
General
Complete name : lesson14.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp42/mp41/isom/avc1)
File size : 43.0 MiB
Duration : 5 min 47 s
Overall bit rate mode : Variable
Overall bit rate : 1 038 kb/s
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 5 Ref Frames
Format settings, CABAC : Yes
Format settings, RefFrames : 5 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 5 min 47 s
Bit rate : 780 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.013
Stream size : 32.3 MiB (75%)
Writing library : x264 core 161 r10 c347e7a
Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=30 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / vbv_maxrate=5500 / vbv_bufsize=15000 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : mp4a-40-2
Duration : 5 min 47 s
Bit rate mode : Variable
Bit rate : 253 kb/s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 10.5 MiB (24%)
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Complete name : lesson14.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp42/mp41/isom/avc1)
File size : 43.0 MiB
Duration : 5 min 47 s
Overall bit rate mode : Variable
Overall bit rate : 1 038 kb/s
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 5 Ref Frames
Format settings, CABAC : Yes
Format settings, RefFrames : 5 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 5 min 47 s
Bit rate : 780 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.013
Stream size : 32.3 MiB (75%)
Writing library : x264 core 161 r10 c347e7a
Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=30 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / vbv_maxrate=5500 / vbv_bufsize=15000 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : mp4a-40-2
Duration : 5 min 47 s
Bit rate mode : Variable
Bit rate : 253 kb/s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 10.5 MiB (24%)
Encoded date : UTC 2021-07-11 16:35:48
Tagged date : UTC 2021-07-11 16:35:48
Screenshots
✅ Exclusive eLearning Videos ParRus-blog ← add to bookmarks
Feel free to contact me PM
when links are dead or want any repost
Feel free to contact me PM
when links are dead or want any repost