Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Building Web Applications with Go - Intermediate Level, а также все другие курсы, прямо сейчас!
Премиум
  1. Урок 1. 00:05:07
    Introduction
  2. Урок 2. 00:01:02
    A bit about me
  3. Урок 3. 00:01:07
    Mistakes. We all make them.
  4. Урок 4. 00:01:15
    How to ask for help
  5. Урок 5. 00:00:52
    Installing Go
  6. Урок 6. 00:01:18
    Installing an IDE
  7. Урок 7. 00:00:28
    Get a free Stripe account
  8. Урок 8. 00:01:28
    Installing make
  9. Урок 9. 00:02:14
    Installing MariaDB
  10. Урок 10. 00:00:52
    Getting a database client
  11. Урок 11. 00:02:17
    What we're going to build
  12. Урок 12. 00:14:57
    Setting up a (trivial) web application
  13. Урок 13. 00:20:40
    Setting up routes and building a render function
  14. Урок 14. 00:08:57
    Displaying one page
  15. Урок 15. 00:03:11
    A better extension for Go templates and VS Code
  16. Урок 16. 00:11:33
    Creating the form
  17. Урок 17. 00:10:44
    Connecting our form to stripe.js
  18. Урок 18. 00:07:49
    Client side validation
  19. Урок 19. 00:15:46
    Getting the paymentIntent - setting up the back end package
  20. Урок 20. 00:09:34
    Getting the paymentIntent - starting work on the back end api
  21. Урок 21. 00:10:52
    Getting the paymentIntent - setting up a route and handler, and using make
  22. Урок 22. 00:08:48
    Getting the paymentIntent - finishing up our handler
  23. Урок 23. 00:09:02
    Updating the front end JavaScript to call our paymentIntent handler
  24. Урок 24. 00:17:35
    Getting the payment intent, and completing the transaction
  25. Урок 25. 00:11:51
    Generating a receipt
  26. Урок 26. 00:04:08
    Cleaning up the API url and Stripe Publishable Key on our form
  27. Урок 27. 00:01:36
    What are we going to build?
  28. Урок 28. 00:01:34
    Create the database
  29. Урок 29. 00:08:19
    Connecting to the database
  30. Урок 30. 00:05:57
    Creating a product page
  31. Урок 31. 00:04:20
    Creating the product form
  32. Урок 32. 00:04:29
    Moving JavaScript to a reusable file
  33. Урок 33. 00:09:25
    Modifying the handler to take a struct
  34. Урок 34. 00:04:56
    Update the Widget page to use data passed to the template
  35. Урок 35. 00:03:28
    Creating a formatCurrency template function
  36. Урок 36. 00:04:13
    Testing the transaction functionality
  37. Урок 37. 00:10:43
    Creating a database table for items for sale
  38. Урок 38. 00:02:57
    Running database migrations
  39. Урок 39. 00:10:21
    Creating database models
  40. Урок 40. 00:05:52
    Working on database functions
  41. Урок 41. 00:03:59
    Inserting a new transaction
  42. Урок 42. 00:02:21
    Inserting a new order
  43. Урок 43. 00:05:21
    An aside: fixing a problem with calculating the amount
  44. Урок 44. 00:13:49
    Getting more information about a transaction
  45. Урок 45. 00:10:20
    Customers
  46. Урок 46. 00:10:11
    Getting started saving customer and transaction information
  47. Урок 47. 00:02:19
    Create the save customer database method
  48. Урок 48. 00:16:29
    Saving the customer, transaction, and order from the handler
  49. Урок 49. 00:06:35
    Running a test transaction
  50. Урок 50. 00:08:22
    Fixing a database error, and saving more details
  51. Урок 51. 00:06:36
    Redirecting after post
  52. Урок 52. 00:15:59
    Simplifying our PaymentSucceeded handler
  53. Урок 53. 00:09:38
    Revising our Virtual Terminal
  54. Урок 54. 00:01:40
    Fixing a mistake in the formatCurrency template function
  55. Урок 55. 00:02:02
    What are we going to build in this section?
  56. Урок 56. 00:03:06
    Creating a Plan on the Stripe Dashboard
  57. Урок 57. 00:04:40
    Creating stubs for the front end page and handler
  58. Урок 58. 00:09:20
    Setting up the form
  59. Урок 59. 00:07:04
    Working on the JavaScript for plans
  60. Урок 60. 00:04:50
    Continuing with the Javascript for subscribing to a plan
  61. Урок 61. 00:06:29
    Create a handler for the POST request after a user is subscribed
  62. Урок 62. 00:08:52
    Create methods to create a Stripe customer and subscribe to a plan
  63. Урок 63. 00:06:12
    Updating our handler to complete a subscription
  64. Урок 64. 00:10:00
    Saving transaction & customer information to the database
  65. Урок 65. 00:14:30
    Saving transaction & customer information II
  66. Урок 66. 00:07:17
    Displaying a receipt page for the Bronze Plan
  67. Урок 67. 00:03:46
    Introduction
  68. Урок 68. 00:07:04
    Creating a login page
  69. Урок 69. 00:03:25
    Writing the stub javascript to authenticate against the back end
  70. Урок 70. 00:13:38
    Create a route and handler for authentication
  71. Урок 71. 00:04:14
    Create a writeJSON helper function
  72. Урок 72. 00:05:58
    Starting the authentication process
  73. Урок 73. 00:03:08
    Creating an invalidCredentials helper function
  74. Урок 74. 00:06:20
    Creating a passwordMatches helper function
  75. Урок 75. 00:01:46
    Making sure that everything works
  76. Урок 76. 00:07:26
    Create a function to generate a token
  77. Урок 77. 00:03:56
    Generating and sending back a token
  78. Урок 78. 00:07:32
    Saving the token to the database
  79. Урок 79. 00:08:05
    Saving the token to local storage
  80. Урок 80. 00:09:24
    Changing the login link based on authentication status
  81. Урок 81. 00:11:22
    Checking authentication on the back end
  82. Урок 82. 00:00:47
    A bit of housekeeping
  83. Урок 83. 00:04:51
    Creating stub functions to validate a token
  84. Урок 84. 00:04:29
    Extracting the token from the authorization header
  85. Урок 85. 00:06:17
    Validating the token on the back end
  86. Урок 86. 00:05:23
    Testing out our token validation
  87. Урок 87. 00:01:17
    Challenge: Checking for expiry
  88. Урок 88. 00:06:20
    Solution to challenge
  89. Урок 89. 00:03:35
    Implementing middleware to protect specfic routes
  90. Урок 90. 00:02:27
    Trying out a protected route
  91. Урок 91. 00:10:17
    Converting the Virtual Terminal post to use the back end
  92. Урок 92. 00:13:09
    Changing the virtual terminal page to use fetch
  93. Урок 93. 00:02:40
    Verifying the saved transaction
  94. Урок 94. 00:05:36
    Writing middleware on the front end to check authentication
  95. Урок 95. 00:09:25
    Protecting routes on the front end
  96. Урок 96. 00:04:23
    Logging out from the front end
  97. Урок 97. 00:05:31
    Saving sessions in the database
  98. Урок 98. 00:09:49
    Password resets
  99. Урок 99. 00:14:16
    Sending mail Part I
  100. Урок 100. 00:01:49
    Mailtrap.io
  101. Урок 101. 00:10:46
    Sending mail Part II
  102. Урок 102. 00:10:13
    Creating our mail templates and sending a test email
  103. Урок 103. 00:12:45
    Implementing signed links for our email message
  104. Урок 104. 00:06:34
    Using our urlsigner package
  105. Урок 105. 00:06:20
    Creating the reset password route and handler
  106. Урок 106. 00:06:46
    Setting up the reset password page
  107. Урок 107. 00:09:13
    Creating a back end route to handle password resets
  108. Урок 108. 00:03:22
    Setting an expiry for password reset emails
  109. Урок 109. 00:12:20
    Adding an encryption package
  110. Урок 110. 00:05:28
    Using our encryption package to lock down password resets
  111. Урок 111. 00:07:31
    Improving our front end and setting up an Admin menu
  112. Урок 112. 00:06:23
    Setting up stub pages for sales and subscriptions
  113. Урок 113. 00:03:32
    Updating migrations and resetting the database
  114. Урок 114. 00:04:58
    Listing all sales: database query
  115. Урок 115. 00:05:59
    Listing all sales: database function
  116. Урок 116. 00:02:03
    Listing all sales: writing the API handler and route
  117. Урок 117. 00:06:27
    Listing all sales: front end javascript
  118. Урок 118. 00:05:26
    Displaying our results in a table
  119. Урок 119. 00:04:53
    Making our table prettier, and adding some checks in JavaScript
  120. Урок 120. 00:02:09
    Solution to challenge
  121. Урок 121. 00:11:25
    Displaying a sale: part 1
  122. Урок 122. 00:05:01
    Displaying a sale: part 2
  123. Урок 123. 00:04:45
    Displaying a subscription
  124. Урок 124. 00:01:02
    Refunds from the Stripe Dashboard
  125. Урок 125. 00:03:23
    Adding a refund function to our cards package
  126. Урок 126. 00:06:56
    Creating an API handler to process refunds
  127. Урок 127. 00:14:11
    Update the front end for refunds
  128. Урок 128. 00:03:20
    Improving the front end
  129. Урок 129. 00:09:06
    Adding UI components to the sales page
  130. Урок 130. 00:04:02
    Updating status to refunded in the database
  131. Урок 131. 00:04:01
    Capturing the subscription id
  132. Урок 132. 00:03:04
    Adding a CancelSubscription function to our cards package
  133. Урок 133. 00:05:34
    Creating a handler to cancel a subscription
  134. Урок 134. 00:05:42
    Modifying the front end
  135. Урок 135. 00:03:22
    Finishing up the front end
  136. Урок 136. 00:06:47
    Creating a database method to paginate all orders
  137. Урок 137. 00:04:02
    Modifying the AllSales handler to use paginated data
  138. Урок 138. 00:05:38
    Updating the all-sales.page.gohtml template
  139. Урок 139. 00:09:33
    Improving pagination on the front end
  140. Урок 140. 00:04:20
    Adding listeners to page navigation buttons
  141. Урок 141. 00:03:18
    Taking user to correct page of data on click
  142. Урок 142. 00:02:15
    How I implemented pagination on the all subscriptions page
  143. Урок 143. 00:06:00
    Setting up templates to manage users
  144. Урок 144. 00:02:30
    Adding routes and handlers on the front end
  145. Урок 145. 00:10:29
    Writing the database functions to manage users
  146. Урок 146. 00:01:59
    Creating a handler and route for all users on the back end
  147. Урок 147. 00:02:32
    Updating the front end to call AllUsers
  148. Урок 148. 00:04:03
    Displaying the list of users
  149. Урок 149. 00:07:04
    Creating a user add/edit form
  150. Урок 150. 00:05:53
    Call the api back end to get one user
  151. Урок 151. 00:06:44
    Populating the user form, and a challenge
  152. Урок 152. 00:02:56
    Solution to challenge
  153. Урок 153. 00:05:45
    Saving an edited user - part one
  154. Урок 154. 00:08:43
    Saving an edited user - part two
  155. Урок 155. 00:07:43
    Deleting a user
  156. Урок 156. 00:03:29
    Removing the deleted users token from the database
  157. Урок 157. 00:18:50
    Setting up websockets
  158. Урок 158. 00:06:25
    Connecting to WebSockets from the browser
  159. Урок 159. 00:06:00
    Logging the deleted user out over websockets
  160. Урок 160. 00:01:37
    What are microservices?
  161. Урок 161. 00:14:08
    Setting up a simple microservice
  162. Урок 162. 00:06:44
    Receiving data with our micrsoservice
  163. Урок 163. 00:20:22
    Generating an invoice as a PDF
  164. Урок 164. 00:05:30
    Testing our PDF
  165. Урок 165. 00:08:15
    Mailing the invoice
  166. Урок 166. 00:09:41
    Call the microservice when a Widget is sold
  167. Урок 167. 00:01:35
    Challenge
  168. Урок 168. 00:02:36
    Solution
  169. Урок 169. 00:06:50
    Setting up a validation package
  170. Урок 170. 00:03:31
    Adding validation on the API back end
  171. Урок 171. 00:09:21
    Modifying the front end javascript
  172. Урок 172. 00:02:25
    gRPC, SOA, and more