Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Web Development with Go v2 (Current Version), а также все другие курсы, прямо сейчас!
Премиум
  • Урок 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