-
Урок 1.
00:06:06
A Basic Web Application
-
Урок 2.
00:12:04
Troubleshooting and Slack
-
Урок 3.
00:04:59
Packages and Imports
-
Урок 4.
00:04:53
Editors and Automatic Imports
-
Урок 5.
00:04:10
The "Hello, world" Part of our Code
-
Урок 6.
00:09:15
Web Requests
-
Урок 7.
00:04:52
HTTP Methods
-
Урок 8.
00:10:05
Our Handler Function
-
Урок 9.
00:08:28
Registering our Handler Function and Starting the Web Server
-
Урок 10.
00:13:45
Go Modules
-
Урок 11.
00:11:37
Dynamic Reloading
-
Урок 12.
00:08:24
Setting Header Values
-
Урок 13.
00:08:12
Creating a Contact Page
-
Урок 14.
00:05:48
Examining the http.Request Type
-
Урок 15.
00:04:20
Custom Routing
-
Урок 16.
00:06:54
URL Path vs RawPath
-
Урок 17.
00:08:50
Not Found Page
-
Урок 18.
00:10:09
The http.Handler Type
-
Урок 19.
00:12:09
The http.HandlerFunc Type
-
Урок 20.
00:08:19
Exploring Handler Conversions
-
Урок 21.
00:06:07
FAQ Exercise
-
Урок 22.
00:09:11
Router Requirements
-
Урок 23.
00:06:41
Using Git
-
Урок 24.
00:03:55
Installing Chi
-
Урок 25.
00:08:56
Using Chi
-
Урок 26.
00:02:01
Chi Exercises
-
Урок 27.
00:05:55
What are Templates?
-
Урок 28.
00:16:02
Why Do We Use Server Side Rendering?
-
Урок 29.
00:16:23
Creating Our First Template
-
Урок 30.
00:10:27
Cross Site Scripting (XSS)
-
Урок 31.
00:03:39
Alternative Template Libraries
-
Урок 32.
00:06:13
Contextual Encoding
-
Урок 33.
00:16:53
Home Page via Template
-
Урок 34.
00:10:53
Contact Page via Template
-
Урок 35.
00:03:29
FAQ Page via Template
-
Урок 36.
00:07:28
Template Exercises
-
Урок 37.
00:16:36
Code Organization
-
Урок 38.
00:09:25
MVC Overview
-
Урок 39.
00:07:52
Walking Through a Web Request with MVC
-
Урок 40.
00:04:58
MVC Exercises
-
Урок 41.
00:10:59
Creating the Views Package
-
Урок 42.
00:08:48
fmt.Errorf
-
Урок 43.
00:13:08
Validating Templates at Startup
-
Урок 44.
00:10:45
Must Functions
-
Урок 45.
00:04:48
Exercises
-
Урок 46.
00:14:09
Embedding Template Files
-
Урок 47.
00:08:02
Variadic Parameters
-
Урок 48.
00:06:52
Named Templates
-
Урок 49.
00:12:34
Dynamic FAQ Page
-
Урок 50.
00:13:20
Reusable Layouts
-
Урок 51.
00:09:16
Tailwind CSS
-
Урок 52.
00:16:22
Utility-first CSS
-
Урок 53.
00:14:30
Adding a Navigation Bar
-
Урок 54.
00:03:48
Exercises
-
Урок 55.
00:13:15
Creating the Signup Page
-
Урок 56.
00:14:19
Styling the Signup Page
-
Урок 57.
00:16:20
Intro to REST
-
Урок 58.
00:08:22
Users Controller
-
Урок 59.
00:06:22
Decouple with Interfaces
-
Урок 60.
00:14:00
Parsing the Signup Form
-
Урок 61.
00:11:34
URL Query Parameters
-
Урок 62.
00:04:02
Exercises
-
Урок 63.
00:15:11
Intro to Databases
-
Урок 64.
00:15:44
Installing Postgres
-
Урок 65.
00:10:43
Connecting to Postgres
-
Урок 66.
00:02:52
Update: Docker Container Names
-
Урок 67.
00:08:44
Creating SQL Tables
-
Урок 68.
00:05:52
Postgres Data Types
-
Урок 69.
00:07:20
Postgres Constraints
-
Урок 70.
00:03:11
Creating a Users Table
-
Урок 71.
00:08:00
Inserting Records
-
Урок 72.
00:03:07
Querying Records
-
Урок 73.
00:03:51
Filtering Queries
-
Урок 74.
00:03:50
Updating Records
-
Урок 75.
00:02:38
Deleting Records
-
Урок 76.
00:03:43
Additional SQL Resources
-
Урок 77.
00:14:15
Connecting to Postgres with Go
-
Урок 78.
00:09:05
Imports with Side Effects
-
Урок 79.
00:05:47
Postgres Config Type
-
Урок 80.
00:08:53
Executing SQL with Go
-
Урок 81.
00:04:41
Inserting Records with Go
-
Урок 82.
00:09:15
SQL Injection
-
Урок 83.
00:08:26
Acquire a new Record's ID
-
Урок 84.
00:06:20
Querying a Single Record
-
Урок 85.
00:04:12
Creating Sample Orders
-
Урок 86.
00:09:10
Querying Multiple Records
-
Урок 87.
00:12:56
ORMs vs SQL
-
Урок 88.
00:02:36
Exercises
-
Урок 89.
00:03:28
Syncing the Book and Screencasts Source Code
-
Урок 90.
00:08:41
Steps for Securing Passwords
-
Урок 91.
00:05:30
Third Party Authentication Options
-
Урок 92.
00:14:29
What is a Hash Function?
-
Урок 93.
00:07:30
Store Password Hashes, Not Encrypted or Plaintext Values
-
Урок 94.
00:10:42
Salt Passwords
-
Урок 95.
00:10:15
Learning bcrypt with a CLI
-
Урок 96.
00:10:36
Hashing Passwords with bcrypt
-
Урок 97.
00:05:59
Comparing a Password with a bcrypt Hash
-
Урок 98.
00:08:06
Defining the User Model
-
Урок 99.
00:06:37
Creating the UserService
-
Урок 100.
00:16:29
Create User Method
-
Урок 101.
00:07:46
Postgres Config for the Models Package
-
Урок 102.
00:04:22
UserService in the Users Controller
-
Урок 103.
00:06:56
Create Users on Signup
-
Урок 104.
00:05:30
Sign In View
-
Урок 105.
00:06:39
Authenticate Users
-
Урок 106.
00:04:31
Process Sign In Attempts
-
Урок 107.
00:13:08
Stateless Servers
-
Урок 108.
00:09:57
Creating Cookies
-
Урок 109.
00:05:13
Viewing Cookies with Chrome
-
Урок 110.
00:09:32
Viewing Cookies with Go
-
Урок 111.
00:06:57
Securing Cookies from XSS
-
Урок 112.
00:10:06
Cookie Theft
-
Урок 113.
00:12:32
CSRF Attacks
-
Урок 114.
00:16:54
CSRF Middleware
-
Урок 115.
00:05:57
Providing CSRF to Templates via Data
-
Урок 116.
00:08:19
Custom Template Functions
-
Урок 117.
00:10:15
Adding the HTTP Request to Execute
-
Урок 118.
00:10:23
Request Specific CSRF Template Function
-
Урок 119.
00:09:05
Template Function Errors
-
Урок 120.
00:11:46
Securing Cookies from Tampering
-
Урок 121.
00:11:03
Random Strings with crypto/rand
-
Урок 122.
00:05:52
Exploring math/rand
-
Урок 123.
00:08:40
Wrapping the crypto/rand Package
-
Урок 124.
00:09:14
Why Do We Use 32 Bytes for Session Tokens?
-
Урок 125.
00:07:36
Defining the Sessions Table
-
Урок 126.
00:10:23
Stubbing the SessionService
-
Урок 127.
00:15:57
Sessions in the Users Controller
-
Урок 128.
00:08:07
Cookie Helper Functions
-
Урок 129.
00:07:19
Create Session Tokens
-
Урок 130.
00:07:01
Refactor the rand Package
-
Урок 131.
00:11:55
Hash Session Tokens
-
Урок 132.
00:05:44
Insert Sessions into the Database
-
Урок 133.
00:08:54
Updating Existing Sessions
-
Урок 134.
00:07:26
Querying Users via Session Token
-
Урок 135.
00:03:50
Deleting Sessions
-
Урок 136.
00:07:58
Sign Out Handler
-
Урок 137.
00:05:28
Sign Out Link
-
Урок 138.
00:10:40
SQL Relationships
-
Урок 139.
00:07:52
Foreign Keys
-
Урок 140.
00:02:41
On Delete Cascade
-
Урок 141.
00:06:06
Inner Join
-
Урок 142.
00:06:52
Left, Right, and Full Outer Join
-
Урок 143.
00:10:05
Using Join in the SessionService
-
Урок 144.
00:10:45
SQL Indexes
-
Урок 145.
00:03:58
Creating PostgreSQL Indexes
-
Урок 146.
00:05:53
On Conflict
-
Урок 147.
00:09:56
What Are Schema Migrations?
-
Урок 148.
00:09:17
How Schema Migration Tools Work
-
Урок 149.
00:09:22
Installing pressly/goose
-
Урок 150.
00:04:32
Converting to Schema Migrations
-
Урок 151.
00:12:19
Schema Versioning Problem
-
Урок 152.
00:10:59
Running Goose with Go
-
Урок 153.
00:06:57
Embedding Migrations
-
Урок 154.
00:09:12
Go Migration Files
-
Урок 155.
00:01:35
Removing Old SQL Files
-
Урок 156.
00:09:06
Using Context to Store Values
-
Урок 157.
00:08:13
Improved Context Keys
-
Урок 158.
00:07:44
Context Values with Types
-
Урок 159.
00:09:36
Storing Users as Context Values
-
Урок 160.
00:08:32
Reading Request Context Values
-
Урок 161.
00:14:33
Set the User via Middleware
-
Урок 162.
00:16:17
Requiring a User via Middleware
-
Урок 163.
00:07:48
Accessing the Current User in Templates
-
Урок 164.
00:06:10
Request-Scoped Values
-
Урок 165.
00:07:35
Password Reset Overview
-
Урок 166.
00:10:48
SMTP Services
-
Урок 167.
00:10:43
Building Emails with SMTP
-
Урок 168.
00:06:01
Sending Emails with SMTP
-
Урок 169.
00:06:49
Building an Email Service
-
Урок 170.
00:11:15
EmailService.Send
-
Урок 171.
00:05:05
Forgot Password Email
-
Урок 172.
00:15:48
ENV Variables
-
Урок 173.
00:05:07
Password Reset DB Migration
-
Урок 174.
00:11:28
Password Reset Service Stubs
-
Урок 175.
00:12:50
Forgot Password HTTP Handler
-
Урок 176.
00:05:59
Asynchronous Emails
-
Урок 177.
00:07:53
Forgot Password HTML Template
-
Урок 178.
00:14:21
Initializing Services with ENV Vars
-
Урок 179.
00:05:18
Check Your Email HTML Template
-
Урок 180.
00:08:06
Reset Password HTTP Handlers
-
Урок 181.
00:06:41
Reset Password HTML Template
-
Урок 182.
00:04:24
Update Password Function
-
Урок 183.
00:13:10
PasswordReset Creation
-
Урок 184.
00:13:20
Implementing Consume
-
Урок 185.
00:13:06
Inspecting Errors
-
Урок 186.
00:09:25
Inspecting Wrapped Errors
-
Урок 187.
00:06:37
Designing the Alert Banner
-
Урок 188.
00:03:54
Dynamic Alerts
-
Урок 189.
00:04:13
Removing Alerts with JavaScript
-
Урок 190.
00:12:19
Detecting Existing Emails
-
Урок 191.
00:10:25
Accepting Errors in Templates
-
Урок 192.
00:09:39
Public vs Internal Errors
-
Урок 193.
00:09:57
Creating Public Errors
-
Урок 194.
00:07:37
Using Public Errors
-
Урок 195.
00:12:01
Galleries Overview
-
Урок 196.
00:06:19
Gallery Model and Migration
-
Урок 197.
00:05:01
Creating Gallery Records
-
Урок 198.
00:05:27
Querying for Galleries by ID
-
Урок 199.
00:06:09
Querying Galleries by UserID
-
Урок 200.
00:01:59
Updating Gallery Records
-
Урок 201.
00:01:55
Deleting Gallery Records
-
Урок 202.
00:06:27
New Gallery Handler
-
Урок 203.
00:13:07
views.Template Name Bug
-
Урок 204.
00:08:34
New Gallery Template
-
Урок 205.
00:09:29
Gallery Routing and CSRF Bug Fixes
-
Урок 206.
00:06:46
Create Gallery Handler
-
Урок 207.
00:08:20
Edit Gallery Handler
-
Урок 208.
00:07:54
Edit Gallery Template`
-
Урок 209.
00:05:34
Update Gallery Handler
-
Урок 210.
00:10:48
Gallery Index Handler
-
Урок 211.
00:04:36
Discovering and Fixing a Gallery Index Bug
-
Урок 212.
00:14:57
Gallery Index Template Continued
-
Урок 213.
00:08:34
Show Gallery Handler
-
Урок 214.
00:07:09
Show Gallery Template and a Tailwind Update
-
Урок 215.
00:13:02
Extracting Common Gallery Code
-
Урок 216.
00:10:39
Extra Gallery Checks with Functional Options
-
Урок 217.
00:06:24
Delete Gallery Handler
-
Урок 218.
00:14:56
Images Overview
-
Урок 219.
00:04:34
Setting Up Test Images
-
Урок 220.
00:05:04
Adding the ImagesDir to the GalleryService
-
Урок 221.
00:12:45
Globbing Image Files
-
Урок 222.
00:03:22
Adding Filename and GalleryID to the Image Type
-
Урок 223.
00:06:22
Adding Images to the Show Gallery Page
-
Урок 224.
00:08:44
Show Image Handler
-
Урок 225.
00:06:39
Querying for a Single Image
-
Урок 226.
00:06:40
URL Path Escaping Image Filenames
-
Урок 227.
00:05:43
Adding Images to the Edit Gallery Page
-
Урок 228.
00:06:09
Delete Image Form
-
Урок 229.
00:03:16
Delete Image Service Func
-
Урок 230.
00:06:54
Delete Image Handler
-
Урок 231.
00:09:17
Checking for Filename Vulnerabilities
-
Урок 232.
00:11:06
Upload Image Form
-
Урок 233.
00:12:49
Image Upload Handler
-
Урок 234.
00:12:47
Creating Images in the GalleryService
-
Урок 235.
00:13:13
Detecting Content Type
-
Урок 236.
00:10:12
Rendering Content Type Errors
-
Урок 237.
00:05:05
Deleting Images on Gallery Deletion
-
Урок 238.
00:01:43
Redirect to Galleries After Auth
-
Урок 239.
00:14:19
Loading All Config via ENV
-
Урок 240.
00:14:02
Docker Compose Overrides
-
Урок 241.
00:12:39
Building Tailwind Locally
-
Урок 242.
00:13:16
Tailwind Via Docker
-
Урок 243.
00:08:16
Serving Static Assets
-
Урок 244.
00:04:16
Making main Easier to Test
-
Урок 245.
00:12:10
Running our Go Server via Docker
-
Урок 246.
00:07:32
Multi-Stage Docker Builds
-
Урок 247.
00:04:35
Tailwind Production Build
-
Урок 248.
00:08:00
Caddy Server via Docker
-
Урок 249.
00:09:24
Creating a Digital Ocean Droplet
-
Урок 250.
00:06:35
Setting up DNS
-
Урок 251.
00:04:19
Installing Git on the Server
-
Урок 252.
00:06:37
Setting Up a Bare Git Repo
-
Урок 253.
00:05:33
Setting Up a Local Git Repo
-
Урок 254.
00:03:21
Checking Out Our Code on the Server
-
Урок 255.
00:02:59
Email Sending Server Setup
-
Урок 256.
00:04:54
Production .env File
-
Урок 257.
00:04:36
Install Docker in Prod
-
Урок 258.
00:02:23
Production Caddyfile
-
Урок 259.
00:05:17
Production Data Directories
-
Урок 260.
00:07:57
Running Our App in Prod
-
Урок 261.
00:06:56
Post-receive Deploy Updates
-
Урок 262.
00:07:39
Deploy via Git
-
Урок 263.
00:10:51
Logging Services
-
Урок 264.
00:13:39
Intro to OAuth
-
Урок 265.
00:14:41
OAuth Example Code
-
Урок 266.
00:10:30
Dropbox App Setup
-
Урок 267.
00:21:28
Offline OAuth Demo
-
Урок 268.
00:07:07
OAuth Tokens
-
Урок 269.
00:06:50
Online vs Offline Access Types
-
Урок 270.
00:06:50
Redirect URIs
-
Урок 271.
00:09:02
OAuth Connect HTTP Handler
-
Урок 272.
00:04:04
Determine Redirect URI Host
-
Урок 273.
00:07:47
OAuth Routes and Config Setup
-
Урок 274.
00:10:20
OAuth Callback Handler
-
Урок 275.
00:06:56
Testing OAuth with API Calls
-
Урок 276.
00:07:26
Dropbox Chooser Overview
-
Урок 277.
00:10:09
Embedding the Dropbox Chooser
-
Урок 278.
00:07:21
Images via Dropbox Form
-
Урок 279.
00:06:30
Chooser Success Function
-
Урок 280.
00:08:11
Images Via URL Handler
-
Урок 281.
00:11:36
Downloading Images
-
Урок 282.
00:07:50
Creating Images Without Seek
-
Урок 283.
00:12:31
Concurrent Downloads
-
Урок 284.
00:06:04
Using errgroup
-
Урок 285.
00:08:57
Page Specific JS
Много работы с шаблонами, CSS (Taiwind), использование Chi для маршрутизации, круды для моделей, обзорно рассказано про БД (используется Postgres), разжевывание механизмов защиты от разных веб уязвимостей, использование докера, деплои, работа с картинками, в целом понятная теория.
Чего тут нет:
- тестов - что проверять изменение будем руками, автор это явно проговаривает
- рассказа о Standard Go Project Layout - рассказано про несколько других подходов, но про эту структуру папок знать стоит
- использования интерфейсов Go - это также выбор автора курса
- конкурентности
- кишок языка (аллокаций, жонглирования структурами, ньюансов конкуретности и прочего) - за этим лучше идти на go101
Great job :)
thanks
Большое спасибо.