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