Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Learn to Create Web Applications using Go, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:12:10
    2.0 - Creating a code directory and a git repo
  • Урок 2. 00:13:13
    2.1 - A basic web application
  • Урок 3. 00:10:03
    2.1 [ASIDE] - What is a web request?
  • Урок 4. 00:09:15
    2.2 - Explaining our web application in detail
  • Урок 5. 00:10:33
    2.3 - Dynamic reloading
  • Урок 6. 00:08:03
    3.1 - Setting the Content-Type header
  • Урок 7. 00:08:27
    3.2 - Adding a contact page
  • Урок 8. 00:07:35
    3.3 - Adding a 404 page
  • Урок 9. 00:15:20
    3.4 - net/http's ServeMux
  • Урок 10. 00:07:48
    3.5 - github.com/julienschmidt's httprouter
  • Урок 11. 00:07:07
    3.6 - Gorilla Web Toolkit's mux package
  • Урок 12. 00:09:57
    3.7 - Implementing the gorilla/mux router
  • Урок 13. 00:07:11
    3.Ex0 - Exercises overview
  • Урок 14. 00:05:35
    3.Ex1 - Adding an FAQ page
  • Урок 15. 00:05:25
    3.Ex2 - Adding a 404 page
  • Урок 16. 00:07:44
    3.Ex3 - Using httprouter
  • Урок 17. 00:07:22
    4.0 - What are templates?
  • Урок 18. 00:14:51
    4.1 - Our first HTML template
  • Урок 19. 00:07:24
    4.2 - Code injection and contextual encoding
  • Урок 20. 00:03:34
    4.Ex0 - Exercises overview
  • Урок 21. 00:03:12
    4.Ex1 - Rendering a custom field
  • Урок 22. 00:06:03
    4.Ex2 - Rendering additional data attributes
  • Урок 23. 00:04:09
    4.Ex3 - Rendering with nested structures
  • Урок 24. 00:02:58
    5.0 - Intro to the MVC videos
  • Урок 25. 00:13:17
    5.1 - What is MVC?
  • Урок 26. 00:05:59
    5.2 - Walking through a web request with MVC
  • Урок 27. 00:06:36
    5.Ex0 - Exercises
  • Урок 28. 00:11:58
    6.0 - Creating our first view
  • Урок 29. 00:05:49
    6.1 - Creating the contact view
  • Урок 30. 00:08:44
    6.2 - Named and nested templates
  • Урок 31. 00:08:39
    6.3 - Creating the View type
  • Урок 32. 00:12:31
    6.4 - Using the View type
  • Урок 33. 00:25:13
    6.5 - Creating a Bootstrap layout
  • Урок 34. 00:12:46
    6.6 - Adding a navigation bar
  • Урок 35. 00:17:04
    6.7 - Cleaning up our code by globbing template files
  • Урок 36. 00:09:51
    6.8 - Simplifying our view rendering logic
  • Урок 37. 00:03:50
    6.9 - Moving our footer to the bootstrap layout
  • Урок 38. 00:04:43
    6.10 - Summary
  • Урок 39. 00:13:37
    7.0 - Creating the signup page
  • Урок 40. 00:13:56
    7.1 - Wrapping the signup form in a bootstrap panel
  • Урок 41. 00:03:30
    7.2 - Adding a signup link to the navbar
  • Урок 42. 00:14:19
    7.3 - An introduction to REST
  • Урок 43. 00:29:05
    7.4 - Creating our first controller - the users controller
  • Урок 44. 00:22:39
    7.5 - CRUD, HTTP verbs with Gorilla mux, and the create action
  • Урок 45. 00:13:05
    7.6 - Parsing the signup form (parsing POST forms)
  • Урок 46. 00:19:56
    7.7 - Parsing forms with gorilla schema
  • Урок 47. 00:14:27
    7.8 - DRYing up our form parsing code
  • Урок 48. 00:15:24
    7.9 - Creating a controller for our mostly static pages
  • Урок 49. 00:13:31
    7.10 - Making views easier to create
  • Урок 50. 00:05:05
    8.0 - What does it mean to persist data?
  • Урок 51. 00:07:50
    8.1 - Web applications use databases to persist data
  • Урок 52. 00:03:08
    8.2 - We will be using PostgreSQL
  • Урок 53. 00:06:09
    8.3 - SQL has many great educational resources
  • Урок 54. 00:04:38
    8.4 - Postgres is scalable and relatively easy to use
  • Урок 55. 00:07:37
    8.5 - Setting up and connecting to Postgres
  • Урок 56. 00:07:16
    8.6 - SQL basics and creating tables to interact with
  • Урок 57. 00:18:24
    8.7 - Connecting to our database with Go's sql package
  • Урок 58. 00:15:52
    8.8 - Writing records to our database with Go's sql package
  • Урок 59. 00:12:59
    8.9 - Querying for records with Go's sql package
  • Урок 60. 00:15:31
    8.10 - Handling relational data with Go's sql package
  • Урок 61. 00:08:27
    8.11 - Setting up GORM
  • Урок 62. 00:14:19
    8.12 - Creating our first model with GORM
  • Урок 63. 00:13:35
    8.13 - Creating records and logging with GORM
  • Урок 64. 00:16:42
    8.14 - Querying records with GORM
  • Урок 65. 00:12:18
    8.15 - Error handling with GORM
  • Урок 66. 00:11:15
    8.16 - Relational data with GORM
  • Урок 67. 00:09:27
    9.1 - Creating the User model
  • Урок 68. 00:19:10
    9.2 - Creating the UserService
  • Урок 69. 00:07:22
    9.3 - The create user method
  • Урок 70. 00:16:12
    9.4 - What does a model test look like?
  • Урок 71. 00:26:11
    9.5 - Finishing the UserService implementation
  • Урок 72. 00:25:02
    9.6 - Connecting models and controllers
  • Урок 73. 00:14:20
    10.0 - An intro to building an auth system
  • Урок 74. 00:13:37
    10.1 - Store hashes, not passwords
  • Урок 75. 00:10:40
    10.2 - Implementing bcrypt hashing
  • Урок 76. 00:05:27
    10.3 - Using passwords from the signup form
  • Урок 77. 00:14:28
    10.4 - Salt and pepper
  • Урок 78. 00:14:00
    10.5 - Creating the login form
  • Урок 79. 00:17:55
    10.6 - Authenticating users
  • Урок 80. 00:19:41
    11.0 - Remembering users and creating our first cookie
  • Урок 81. 00:05:44
    11.1 - Viewing cookies via code
  • Урок 82. 00:09:04
    11.2 - Creating cookies on login and signup
  • Урок 83. 00:19:42
    11.3 - Securing our cookies from tampering
  • Урок 84. 00:13:09
    11.4 - Generating remember tokens
  • Урок 85. 00:07:29
    11.4 [ASIDE] - Why 32 bytes?
  • Урок 86. 00:16:28
    11.5 - Writing a remember token hasher
  • Урок 87. 00:19:29
    11.6 - Hashing remember tokens on user creation and update
  • Урок 88. 00:15:10
    11.7 - Storing remember tokens in cookies
  • Урок 89. 00:07:33
    11.8 - Securing our cookies from XSS
  • Урок 90. 00:10:50
    11.9 - Securing our cookies from theft and CSRF
  • Урок 91. 00:14:03
    12.0 - Validating and normalizing
  • Урок 92. 00:08:41
    12.1 - Static types vs interfaces
  • Урок 93. 00:11:43
    12.1 [ASIDE] - Emebedding, interfaces, and chaining
  • Урок 94. 00:18:11
    12.2 - The UserDB interface
  • Урок 95. 00:17:55
    12.3 - The UserService interface
  • Урок 96. 00:21:46
    12.4.0 - Organizing validation code
  • Урок 97. 00:07:04
    12.4.1 - Remember token normalizer
  • Урок 98. 00:04:31
    12.4.2 - Ensuring remember tokens are set on create
  • Урок 99. 00:06:59
    12.4.3 - Ensuring a valid ID on delete
  • Урок 100. 00:09:45
    12.5.0 - Converting emails to lowercase and trimming whitespace
  • Урок 101. 00:04:11
    12.5.1 - Requiring email addresses
  • Урок 102. 00:16:28
    12.5.2 - Verifying emails match a pattern
  • Урок 103. 00:10:09
    12.5.3 - Verifying an email address isn't taken
  • Урок 104. 00:15:12
    12.6 - Validating and normalizing passwords
  • Урок 105. 00:12:41
    12.7 - Validating and normalizing remember tokens
  • Урок 106. 00:06:08
    13.1 - Bootstrap alerts
  • Урок 107. 00:05:19
    13.2 - Dynamic alerts
  • Урок 108. 00:05:09
    13.3 - Only show alerts when necessary
  • Урок 109. 00:10:25
    13.4 - Creating the views.Data type
  • Урок 110. 00:13:11
    13.5 - Handling signup errors
  • Урок 111. 00:18:02
    13.6 - Only display public errors
  • Урок 112. 00:09:45
    13.7 - Handling login errors
  • Урок 113. 00:11:42
    13.8 - Handling rendering errors
  • Урок 114. 00:04:36
    14.0 - Intro to the gallery chapter
  • Урок 115. 00:07:31
    14.1 - The gallery model
  • Урок 116. 00:07:49
    14.2 - Sharing a GORM connection and the GalleryService
  • Урок 117. 00:06:12
    14.3 - Utilizing our shared GORM connection (the Services type)
  • Урок 118. 00:07:47
    14.4 - Moving close to the Services type
  • Урок 119. 00:05:55
    14.5 - Implementing the GalleryService
  • Урок 120. 00:09:35
    14.6 - Creating the galleries controller
  • Урок 121. 00:06:26
    14.7 - Implementing the Gallery create action
  • Урок 122. 00:15:23
    14.8 - Gallery validators and normalizers
  • Урок 123. 00:20:13
    14.9 - Requiring users to be logged in to view specific pages
  • Урок 124. 00:15:57
    14.10 - Adding users to the request context
  • Урок 125. 00:35:59
    14.11 - Rendering individual galleries
  • Урок 126. 00:13:39
    14.12 - Galleries edit action
  • Урок 127. 00:06:35
    14.13 - Galleries update action
  • Урок 128. 00:05:21
    14.14 - GalleryService update method
  • Урок 129. 00:13:01
    14.15 - Gallery delete action
  • Урок 130. 00:22:26
    14.16 - Gallery index action
  • Урок 131. 00:35:12
    14.17 - Navbar updates
  • Урок 132. 00:25:23
    15.1 - File upload HTML form
  • Урок 133. 00:24:49
    15.2 - File upload handler
  • Урок 134. 00:18:50
    15.3 - The ImageService and create method
  • Урок 135. 00:16:04
    15.4 - Finding images by Gallery ID
  • Урок 136. 00:21:58
    15.5 - Rendering images
  • Урок 137. 00:32:52
    15.6 - Deleting images
  • Урок 138. 00:19:51
    16.1 - Error cleanup
  • Урок 139. 00:07:59
    16.2 - Serving static assets
  • Урок 140. 00:26:13
    16.3 - CSRF protection
  • Урок 141. 00:06:36
    16.4 - Don't lookup the user when serving static assets
  • Урок 142. 00:07:46
    16.5 - URL encoding image path bug
  • Урок 143. 00:23:06
    16.6 - Starting with config variables
  • Урок 144. 00:21:55
    16.7 - Functional options for services
  • Урок 145. 00:15:54
    16.8 - Loading a JSON config
  • Урок 146. 00:06:29
    16.9 - Setting up a droplet (server) on Digital Ocean
  • Урок 147. 00:07:53
    16.10 - Installing postgres on our prod server
  • Урок 148. 00:13:36
    16.11 - Caddy server
  • Урок 149. 00:32:28
    16.12 - Deploy script
  • Урок 150. 00:13:40
    17.1 - Deleting cookies and logging out users
  • Урок 151. 00:18:10
    17.2 - Redirecting with alerts
  • Урок 152. 00:34:29
    17.3 - Emailing users
  • Урок 153. 00:12:26
    17.4 - Persisting form data
  • Урок 154. 00:29:17
    17.5.1 - Resetting passwords - Creating the pwReset DB table
  • Урок 155. 00:24:30
    17.5.2 - Resetting passwords - Implementing UserService methods
  • Урок 156. 00:05:08
    17.5.3 - Resetting passwords - Form HTML templates
  • Урок 157. 00:20:59
    17.5.4 - Resetting passwords - Controller updates
  • Урок 158. 00:21:04
    17.5.5 - Resetting passwords - Sending emails and building links
  • Урок 159. 00:06:34
    18.1 - Intro to OAuth
  • Урок 160. 00:13:07
    18.2 - Setting up a Dropbox Application
  • Урок 161. 00:09:16
    18.3 - Go's OAuth2 Package
  • Урок 162. 00:16:28
    18.4 - Dropbox OAuth Spike (Part 1)
  • Урок 163. 00:11:59
    18.5 - Dropbox OAuth Spike (Part 2)
  • Урок 164. 00:09:22
    18.6.1 - Persisting OAuth Tokens - Explaining the Token
  • Урок 165. 00:35:46
    18.6.2 - Persisting OAuth Tokens - OAuth Model
  • Урок 166. 00:13:17
    18.6.3 - Persisting OAuth Tokens - Connecting It All
  • Урок 167. 00:17:51
    18.7 - Making Dropbox API Calls
  • Урок 168. 00:09:29
    18.8 - Refactoring to Controllers
  • Урок 169. 00:12:23
    18.9 - Generic OAuth Controller
  • Урок 170. 00:20:08
    19.1 - Intro to the Dropbox SDK
  • Урок 171. 00:15:20
    19.2 - Custom Dropbox Package
  • Урок 172. 00:54:28
    19.3 - Dropbox Chooser
  • Урок 173. 00:33:53
    Mark Bates - Go Buffalo
  • Урок 174. 00:35:15
    Joe Fitzgerald & Zac Bergquist - Atom + Go
  • Урок 175. 00:27:18
    Matt Holt - Caddy & Securing your Server
  • Урок 176. 00:35:24
    Michael Hartl - Learning Just Enough
  • Урок 177. 00:28:35
    Ryan Patterson - Technical Interviews
  • Урок 178. 00:42:36
    Mattan Griffel - Learning to Code
  • Урок 179. 00:41:20
    Charlie Guo - Doing the Unscalable
  • Урок 180. 00:42:58
    Ryan Jackson - Starting a Tech Company
  • Урок 181. 00:40:05
    Adam Wathan - Testing and More