-
Урок 1.
00:05:21
Introduction: who I am, and what we're going to do
-
Урок 2.
00:04:21
Why Go? Why not PHP, or Python, or Node.js, or whatever?
-
Урок 3.
00:03:09
Why Go? - System Resources
-
Урок 4.
00:14:23
Installing Go, an IDE, and writing a simple program
-
Урок 5.
00:01:43
Getting help: How to ask questions
-
Урок 6.
00:01:35
A note about the terminal on Windows: Git Bash
-
Урок 7.
00:19:23
Variables & Functions
-
Урок 8.
00:06:54
Pointers
-
Урок 9.
00:15:12
Types and Structs
-
Урок 10.
00:04:14
Receivers: Structs with functions
-
Урок 11.
00:17:08
Other data structures: Maps and Slices
-
Урок 12.
00:13:18
Decision Structures
-
Урок 13.
00:09:23
Loops and ranging over data
-
Урок 14.
00:08:34
Interfaces
-
Урок 15.
00:05:04
Packages
-
Урок 16.
00:11:40
Channels
-
Урок 17.
00:10:31
Reading and Writing JSON
-
Урок 18.
00:15:17
Writing Tests
-
Урок 19.
00:04:55
How web applications work: the request/response lifecycle
-
Урок 20.
00:13:09
Making a "Hello, World" web application
-
Урок 21.
00:13:11
Functions and handlers
-
Урок 22.
00:06:11
Error checking
-
Урок 23.
00:09:14
Serving HTML Templates
-
Урок 24.
00:07:32
Reorganizing our code, and adding some basic styling to pages
-
Урок 25.
00:09:38
Enabling Go Modules and refactoring our code to use packages
-
Урок 26.
00:24:29
Working with Layouts, and building a template cache (part one)
-
Урок 27.
00:08:23
Building a template cache (part two)
-
Урок 28.
00:06:42
Setting application wide configuration
-
Урок 29.
00:01:30
Why the application wide config is so useful
-
Урок 30.
00:15:25
Optimizing our template cache by using an application config
-
Урок 31.
00:15:00
Sharing data with templates
-
Урок 32.
00:06:50
Using pat for routing
-
Урок 33.
00:07:00
Using chi for routing
-
Урок 34.
00:09:40
Developing our own middleware
-
Урок 35.
00:14:53
Installing and setting up a sessions package
-
Урок 36.
00:06:45
Experimenting with sessions
-
Урок 37.
00:04:10
What are we going to build?
-
Урок 38.
00:19:57
Setting up our project
-
Урок 39.
00:08:02
Enabling static files
-
Урок 40.
00:14:08
Creating pages as HTML
-
Урок 41.
00:45:17
Creating a landing page
-
Урок 42.
00:17:19
Creating a page for each room
-
Урок 43.
00:11:52
Adding a form to search for availability
-
Урок 44.
00:06:37
Improving our form
-
Урок 45.
00:04:35
Creating the reservation page
-
Урок 46.
00:21:15
What is Javascript, and why should I care?
-
Урок 47.
00:12:28
Making a better date picker
-
Урок 48.
00:08:30
Custom alerts using Notie
-
Урок 49.
00:08:37
Creating modals with SweetAlert
-
Урок 50.
00:06:07
Implementing a Javascript module
-
Урок 51.
00:08:50
Adding custom alerts in our Javascript module
-
Урок 52.
00:16:34
Using our Javascript module on the "Book Now" button
-
Урок 53.
00:14:27
What is CSS, and how does it work?
-
Урок 54.
00:23:15
Converting our pages to Go templates
-
Урок 55.
00:15:36
Creating handlers for our forms & adding CSRF Protection
-
Урок 56.
00:12:09
Creating a handler that return JSON
-
Урок 57.
00:11:08
Sending and processing an AJAX request
-
Урок 58.
00:09:15
Sending AJAX post and generalizing our custom function
-
Урок 59.
00:03:56
Refactoring to use internal packages
-
Урок 60.
00:17:28
Server-side form validation
-
Урок 61.
00:16:35
Server side form validation II
-
Урок 62.
00:19:27
Server side form validation III
-
Урок 63.
00:05:19
Server Side form validation IV
-
Урок 64.
00:16:11
Displaying a response to user after posting form data
-
Урок 65.
00:09:31
Finishing up our response to user, and adding alerts
-
Урок 66.
00:08:48
An aside: Alternate Templating Engines
-
Урок 67.
00:16:51
Writing tests for our main package
-
Урок 68.
00:22:37
Writing tests for our GET handlers
-
Урок 69.
00:08:11
Writing tests for our POST handlers
-
Урок 70.
00:12:08
Writing tests for our Render package I
-
Урок 71.
00:13:45
Writing tests for our Render package II
-
Урок 72.
00:05:47
Getting test coverage
-
Урок 73.
00:04:55
Exercise: Writing tests for the Forms package
-
Урок 74.
00:22:35
Solution to writing tests for the Forms package
-
Урок 75.
00:02:47
Making running our application easier
-
Урок 76.
00:13:09
Centralizing our error handling to a helpers package
-
Урок 77.
00:05:25
Using our ClientError and ServerError helper functions
-
Урок 78.
00:02:11
Updating our tests
-
Урок 79.
00:03:58
Installing PostgreSQL
-
Урок 80.
00:03:48
Connecting to the database with DBeaver on a Mac
-
Урок 81.
00:06:06
Connecting to the database with DBeaver on Windows
-
Урок 82.
00:12:31
Basic SQL syntax
-
Урок 83.
00:14:45
More complex queries
-
Урок 84.
00:17:44
Identifying database structure, and Entity Relationship Diagarams
-
Урок 85.
00:01:43
Install Soda
-
Урок 86.
00:11:57
Creating the users table using migrations
-
Урок 87.
00:07:17
Creating the rest of our database using migrations
-
Урок 88.
00:04:10
Setting up a foreign key
-
Урок 89.
00:05:21
Setting up the rest of our foreign keys
-
Урок 90.
00:06:02
Adding Indices & Exercise
-
Урок 91.
00:06:38
Solution to Exercise
-
Урок 92.
00:33:17
How to connect a Go application to a database
-
Урок 93.
00:11:25
Creating a Driver package
-
Урок 94.
00:14:11
Connecting to the database and adding the SQL connection to our Repository
-
Урок 95.
00:06:33
Setting up models
-
Урок 96.
00:05:54
Cleaning up our code
-
Урок 97.
00:02:45
A word about ORMs
-
Урок 98.
00:17:08
Setting up database functions: inserting a reservation
-
Урок 99.
00:05:26
Testing our insert reservation function
-
Урок 100.
00:10:57
Inserting Room Restrictions
-
Урок 101.
00:15:56
Searching for availability by room
-
Урок 102.
00:15:44
Searching for availablity for all rooms
-
Урок 103.
00:18:21
Connecting our handlers to our new database functions
-
Урок 104.
00:11:03
Connecting search availablity to the make reservation page
-
Урок 105.
00:16:40
Cleaning up our make reservation page and testing everything
-
Урок 106.
00:14:21
Cleaning up the reservation summary page and improving validation
-
Урок 107.
00:08:26
Searching for availability by Room
-
Урок 108.
00:11:31
Providing feedback when searching by room, and connecting to the reservation pag
-
Урок 109.
00:09:36
Connecting the rooms page to the make reservation page
-
Урок 110.
00:04:44
Connecting the Major's Suite page, and extracting our javascript module
-
Урок 111.
00:01:26
Adding a migration for seeding rooms
-
Урок 112.
00:01:28
Adding a migration for seeding restrictions
-
Урок 113.
00:10:05
Creating a test database repository
-
Урок 114.
00:15:02
Updating our existing tests to handle sessions
-
Урок 115.
00:12:10
Improving our tests by handling multiple cases
-
Урок 116.
00:28:21
Testing Post handlers
-
Урок 117.
00:08:22
Testing AvailabilityJSON
-
Урок 118.
00:03:07
Simplifying adding post parameters
-
Урок 119.
00:04:27
Sending email using the Standard Library
-
Урок 120.
00:20:25
Installing a mailer package and setting up a mail channel
-
Урок 121.
00:02:57
Installing Mailhog on a Mac for testing purposes
-
Урок 122.
00:00:57
Installing Mailhog on Windows for testing purposes
-
Урок 123.
00:05:29
Creating and sending mail notifications
-
Урок 124.
00:01:23
Solution to sending notification to property owner
-
Урок 125.
00:12:17
Sending nicely formatted email using Foundation
-
Урок 126.
00:04:20
Updating our tests
-
Урок 127.
00:04:07
Create the login screen
-
Урок 128.
00:02:59
Creating the authentication handlers for the login screen
-
Урок 129.
00:17:47
Creating the authentication and user database functions
-
Урок 130.
00:09:20
Creating our handler to log in
-
Урок 131.
00:06:49
Writing Authentication Middleware
-
Урок 132.
00:03:04
Adding a user to the database
-
Урок 133.
00:01:21
Testing Login
-
Урок 134.
00:07:29
Checking to see if a user is logged in, and logging a user out
-
Урок 135.
00:04:40
Protecting our routes with authentication middleware
-
Урок 136.
00:03:30
Picking an admin template
-
Урок 137.
00:03:51
Convert the admin template into a Go template
-
Урок 138.
00:04:59
Solution to creating admin templates
-
Урок 139.
00:05:53
Create stub handlers for admin functionality
-
Урок 140.
00:24:57
Listing all reservations
-
Урок 141.
00:08:13
Listing new reservations
-
Урок 142.
00:24:01
Showing one reservation
-
Урок 143.
00:06:24
Database functions for editing a reservation
-
Урок 144.
00:07:14
Editing a reservation
-
Урок 145.
00:14:27
Marking a reservation as processed
-
Урок 146.
00:06:11
Deleting a reservation
-
Урок 147.
00:14:21
Showing the reservation calendar
-
Урок 148.
00:23:36
Reservation Calendar II
-
Урок 149.
00:22:41
Reservation Calendar III
-
Урок 150.
00:14:51
Reservation Calendar IV
-
Урок 151.
00:03:21
Handling Calendar changes I
-
Урок 152.
00:05:54
Handling Calendar changes II
-
Урок 153.
00:13:53
Handling Calendar changes III
-
Урок 154.
00:07:40
Handling Calendar changes IV
-
Урок 155.
00:19:11
Fixing our redirects
-
Урок 156.
00:31:26
Updating our tests
-
Урок 157.
00:02:55
Fixing a bug missed by our tests
-
Урок 158.
00:01:15
A word about the updated tests
-
Урок 159.
00:10:25
Changing our app to use command line flags
-
Урок 160.
00:01:14
An alternative: the .env file
-
Урок 161.
00:05:40
Using vi to edit files on remote server
-
Урок 162.
00:08:18
Choosing a server platform
-
Урок 163.
00:02:22
Add admin user to migrations
-
Урок 164.
00:13:15
Connecting the application to the web server
-
Урок 165.
00:04:05
Setting up Supervisor
-
Урок 166.
00:02:57
Writing an update script for the server
-
Урок 167.
00:01:28
A note about sending mail from the live server
-
Урок 168.
00:07:34
Updating to Bootstrap 5
-
Урок 169.
00:05:28
Updating the footer and page title
-
Урок 170.
00:07:20
Finishing touches, and fixing a bug
-
Урок 171.
00:01:36
Populating the rest of the pages
-
Урок 172.
00:02:43
Additional resources