Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай PROFESSIONAL Full Stack Developer, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:02:16
    Java Master Class
  • Урок 2. 00:00:59
    The Next Steps
  • Урок 3. 00:01:55
    Practise as I teach (TODO's)
  • Урок 4. 00:01:10
    Discord
  • Урок 5. 00:00:38
    Linkedin
  • Урок 6. 00:02:33
    Textbook
  • Урок 7. 00:01:36
    Exercises and Textbook
  • Урок 8. 00:01:06
    Exercise Solutions
  • Урок 9. 00:02:10
    Commit Your Changes
  • Урок 10. 00:02:36
    Linux and Terminal
  • Урок 11. 00:01:36
    IntelliJ 6 Months
  • Урок 12. 00:00:59
    Intellij New Theme
  • Урок 13. 00:01:38
    What we are about to cook (Project and Environment Setup)
  • Урок 14. 00:02:57
    Spring Initiliazer
  • Урок 15. 00:02:05
    Open the project with IntelliJ
  • Урок 16. 00:02:28
    pom.xml
  • Урок 17. 00:02:18
    Lets clean up few things
  • Урок 18. 00:02:48
    JDK
  • Урок 19. 00:04:11
    Your first Spring Boot Application (Getting Started with Spring Boot 3)
  • Урок 20. 00:03:09
    Embedded Web Server
  • Урок 21. 00:04:48
    Configuring Embedded Web Server
  • Урок 22. 00:02:55
    Your first API
  • Урок 23. 00:06:07
    @SpringBootApplication @RestController and @GetMapping
  • Урок 24. 00:05:46
    Spring Web MVC
  • Урок 25. 00:07:18
    JSON For Java
  • Урок 26. 00:05:26
    Java Objects to JSON Objects
  • Урок 27. 00:04:12
    Introduction to HTTP (HTTP, REST and APIs)
  • Урок 28. 00:03:15
    The Evolution of HTTP
  • Урок 29. 00:03:49
    HTTP Request and Response Messages
  • Урок 30. 00:04:44
    HTTP Methods
  • Урок 31. 00:06:33
    HTTP Status Codes
  • Урок 32. 00:09:01
    URL
  • Урок 33. 00:03:38
    API and REST API
  • Урок 34. 00:06:38
    Public APIs and Other Types
  • Урок 35. 00:02:56
    Why build APIs
  • Урок 36. 00:07:07
    Chrome Developer Tools (Developer Tools)
  • Урок 37. 00:04:35
    Exploring XHR for our API
  • Урок 38. 00:09:29
    Inspecting Instagram Network Activity
  • Урок 39. 00:03:50
    Postman
  • Урок 40. 00:05:09
    IntelliJ REST Client
  • Урок 41. 00:02:05
    CRUD and Section Overview (CRUD - Read)
  • Урок 42. 00:02:30
    Customer Model
  • Урок 43. 00:03:27
    Fake Database
  • Урок 44. 00:05:55
    API Endpoint
  • Урок 45. 00:07:57
    @PathVariable
  • Урок 46. 00:02:02
    N Tier Architecture (Structure the Backend)
  • Урок 47. 00:10:40
    Refactor - Controller Service and DAO
  • Урок 48. 00:07:03
    @RestController @Service @Repository @Component
  • Урок 49. 00:04:58
    Application Context (Application Context and Beans)
  • Урок 50. 00:05:09
    Inspecting beans
  • Урок 51. 00:02:23
    Bean Scopes
  • Урок 52. 00:07:49
    Creating Beans
  • Урок 53. 00:01:57
    We are not handling error the right way (Error Handling)
  • Урок 54. 00:05:02
    Custom Exception
  • Урок 55. 00:02:28
    @ResponseStatus
  • Урок 56. 00:02:04
    Include error Message to Responses
  • Урок 57. 00:00:51
    Section Intro (Databases)
  • Урок 58. 00:02:18
    Postgres and Docker
  • Урок 59. 00:02:27
    Verifying Docker Installation
  • Урок 60. 00:04:26
    Postgres DB with Docker compose
  • Урок 61. 00:01:34
    Connecting to Database
  • Урок 62. 00:03:23
    Connecting to DB using IntelliJ IDEA
  • Урок 63. 00:02:31
    Data Source & JPA
  • Урок 64. 00:03:00
    Installing PostgreSQL Driver and Spring Data JPA Dependencies
  • Урок 65. 00:04:49
    Configuring Datasource Properties
  • Урок 66. 00:04:51
    Create Customer Table
  • Урок 67. 00:01:22
    Outro
  • Урок 68. 00:03:45
    Entity (Spring Data JPA)
  • Урок 69. 00:02:29
    Inspecting The Database
  • Урок 70. 00:02:32
    Column Contraints
  • Урок 71. 00:02:26
    CustomerRepository
  • Урок 72. 00:02:03
    CustomerJPADataAccessService class
  • Урок 73. 00:02:48
    @Qualifier
  • Урок 74. 00:04:32
    Saving Entities
  • Урок 75. 00:03:44
    Exploring JPA Methods
  • Урок 76. 00:02:04
    Outro
  • Урок 77. 00:01:04
    The Problem (Get Customer By Id Exercise)
  • Урок 78. 00:01:42
    Exercise Solution
  • Урок 79. 00:01:36
    Intro (CRUD - Create)
  • Урок 80. 00:00:51
    Changing CustomerDao Interface
  • Урок 81. 00:01:28
    Override insert customer
  • Урок 82. 00:08:36
    Business Logic for Adding new Customer
  • Урок 83. 00:02:46
    Controller @RequestMapping and @RequestBody
  • Урок 84. 00:04:07
    Testing POST Request
  • Урок 85. 00:01:40
    Exercise (CRUD - Delete (Exercise))
  • Урок 86. 00:02:35
    Exercise Solution
  • Урок 87. 00:03:23
    Exercise (CRUD - Update (Exercise))
  • Урок 88. 00:05:03
    Exercise Solution
  • Урок 89. 00:01:18
    Few Words (Let's Pause)
  • Урок 90. 00:01:52
    Intro (Datasources, JDBC & Flyway)
  • Урок 91. 00:03:12
    JPA and Hibernate under the hood
  • Урок 92. 00:04:44
    JDBC and JDBCTemplate
  • Урок 93. 00:06:37
    DataSource and Connection Pools
  • Урок 94. 00:03:38
    Flyway and Liquibase
  • Урок 95. 00:06:21
    Flyway (Flyway)
  • Урок 96. 00:00:49
    Installing Flyway
  • Урок 97. 00:11:28
    Applying and Understanding Flyway Migrations
  • Урок 98. 00:03:45
    Lets Start Again but Right
  • Урок 99. 00:04:23
    Create Customer Table
  • Урок 100. 00:03:19
    Inspecting the Customer Table
  • Урок 101. 00:06:59
    Working with Sequences
  • Урок 102. 00:01:35
    Exercise
  • Урок 103. 00:04:33
    Exercise Solution
  • Урок 104. 00:02:45
    Migrations Documentation
  • Урок 105. 00:04:36
    Match Entity Containts schema
  • Урок 106. 00:05:28
    Validating Schema With Hibernate
  • Урок 107. 00:06:39
    Exercise Solution
  • Урок 108. 00:01:16
    Intro (JDBC Template)
  • Урок 109. 00:03:47
    CustomerJDBC class
  • Урок 110. 00:02:28
    JDBC Template Documentation
  • Урок 111. 00:03:53
    Insert Customer
  • Урок 112. 00:03:49
    Test Insert Customer
  • Урок 113. 00:05:31
    Select All Customers
  • Урок 114. 00:04:50
    RowMapper and ResultSet
  • Урок 115. 00:02:22
    Refactor Row Mapper
  • Урок 116. 00:00:40
    Exercise
  • Урок 117. 00:04:04
    Exercise Solution
  • Урок 118. 00:00:46
    Exercise
  • Урок 119. 00:08:19
    Exercise Solution
  • Урок 120. 00:04:18
    Why multiple DAO implementations
  • Урок 121. 00:01:20
    More on databases later
  • Урок 122. 00:04:09
    When to use JDBC over JPA (Spring JDBC vs JPA)
  • Урок 123. 00:02:18
    Would you ? (Important Question)
  • Урок 124. 00:02:44
    Intro (Testing - Setup)
  • Урок 125. 00:02:57
    Testcontainers
  • Урок 126. 00:01:26
    H2
  • Урок 127. 00:03:37
    Intalling Testcontainers
  • Урок 128. 00:06:52
    Let's Write a test Testcontainers
  • Урок 129. 00:08:02
    Inspecting DB created by Testcontainers
  • Урок 130. 00:05:59
    Apply migrations with Flyway
  • Урок 131. 00:03:29
    @DynamicPropertySource
  • Урок 132. 00:06:26
    Don't Use @SpringBootTest for Unit Tests
  • Урок 133. 00:05:22
    Abstract Testcontainres Logic
  • Урок 134. 00:01:27
    Intro (Testing JDBC Template)
  • Урок 135. 00:04:53
    JDBCTeamplate Test Class
  • Урок 136. 00:04:50
    Configure JDBC Template
  • Урок 137. 00:06:07
    selectAllCustomers Test
  • Урок 138. 00:05:18
    selectCustomerById Test
  • Урок 139. 00:03:20
    selectCustomerById Test 2
  • Урок 140. 00:01:17
    Exercises
  • Урок 141. 00:02:14
    Test Coverage
  • Урок 142. 00:06:43
    Exercise Solution
  • Урок 143. 00:00:50
    Intro (Testing JPA Repositories)
  • Урок 144. 00:05:07
    What do we need to test
  • Урок 145. 00:05:07
    The Wrong Way
  • Урок 146. 00:04:58
    @DataJpaTest and @AutoConfigureTestDatabase
  • Урок 147. 00:08:27
    Writing Tests For CustomerRepository
  • Урок 148. 00:01:36
    No Need to Test DB Backed by List (DAO Mock Testing)
  • Урок 149. 00:03:50
    Mockito
  • Урок 150. 00:03:12
    @Mock
  • Урок 151. 00:03:33
    Test Select All Customers
  • Урок 152. 00:03:21
    Test selectCustomerById
  • Урок 153. 00:02:36
    Exercise Solution
  • Урок 154. 00:01:01
    Intro (Testing Business Layer)
  • Урок 155. 00:03:03
    Create CustomerServiceTest and MockitoExtension
  • Урок 156. 00:01:17
    Test GetAllCustomers
  • Урок 157. 00:05:53
    Test getCustomer
  • Урок 158. 00:04:48
    Test if getCustomer Returns Empty Optional
  • Урок 159. 00:06:23
    Test addCustomer
  • Урок 160. 00:04:09
    addCustomer Test Code Explanation
  • Урок 161. 00:03:59
    Test addCustomer 2
  • Урок 162. 00:02:16
    Exercises
  • Урок 163. 00:04:36
    Exercise Solution (Part 1)
  • Урок 164. 00:18:51
    Exercise Solution (Part 2)
  • Урок 165. 00:00:43
    Exercise
  • Урок 166. 00:05:29
    Exercise Solution
  • Урок 167. 00:02:03
    Intro (Integration Testing)
  • Урок 168. 00:03:36
    @SpringBootTest
  • Урок 169. 00:03:32
    WebTestClient
  • Урок 170. 00:07:13
    The First Integration - canRegisterCustomer - Part 1
  • Урок 171. 00:04:43
    Running canRegisterCustomer Integration Test
  • Урок 172. 00:08:49
    The First Integration - canRegisterCustomer - Part 2
  • Урок 173. 00:03:07
    canDeleteCustomer Integration Test
  • Урок 174. 00:05:41
    Exercise Solution
  • Урок 175. 00:02:55
    Intro (The Upcoming Sections)
  • Урок 176. 00:01:44
    Intro (The Jar file)
  • Урок 177. 00:07:04
    Spring Boot Maven Plugin Jar
  • Урок 178. 00:03:37
    Running Jar
  • Урок 179. 00:00:40
    Intro (Maven & Tests)
  • Урок 180. 00:04:59
    Surefire Plugin
  • Урок 181. 00:03:47
    Configuring Surefire Plugin
  • Урок 182. 00:12:46
    Maven Failsafe Plugin
  • Урок 183. 00:02:12
    The Jar File
  • Урок 184. 00:01:24
    Section Outro
  • Урок 185. 00:00:41
    Intro (DevOps)
  • Урок 186. 00:07:54
    What is DevOps
  • Урок 187. 00:05:04
    DevOps Key Practices and Benefits
  • Урок 188. 00:01:03
    Outro
  • Урок 189. 00:01:55
    Intro (Docker)
  • Урок 190. 00:01:32
    What is Docker
  • Урок 191. 00:04:35
    Docker vs VM
  • Урок 192. 00:05:57
    Undestanding Containers
  • Урок 193. 00:08:51
    Docker Images and Containers
  • Урок 194. 00:02:41
    Docker Architecture
  • Урок 195. 00:04:14
    Docker Registries
  • Урок 196. 00:05:50
    Docker Login
  • Урок 197. 00:01:15
    Outro
  • Урок 198. 00:00:45
    Intro (Jib)
  • Урок 199. 00:02:20
    What is Jib
  • Урок 200. 00:08:49
    Configuring Jib Plugin
  • Урок 201. 00:04:40
    Building Docker Image
  • Урок 202. 00:05:49
    Pulling Image and Running Container
  • Урок 203. 00:04:39
    Container Comunication
  • Урок 204. 00:06:47
    Docker Network In Action
  • Урок 205. 00:07:05
    Docker Compose
  • Урок 206. 00:00:55
    Section Outro
  • Урок 207. 00:02:18
    Outro
  • Урок 208. 00:01:12
    Intro (AWS)
  • Урок 209. 00:04:50
    Infrastructure Components Overview
  • Урок 210. 00:03:53
    AWS Free Tier
  • Урок 211. 00:06:37
    AWS Console Overview
  • Урок 212. 00:02:47
    Elastic Beanstalk
  • Урок 213. 00:03:17
    Elastic Beanstalk Key Terms
  • Урок 214. 00:04:07
    Generate New Key Pair
  • Урок 215. 00:02:46
    Saving Private Key
  • Урок 216. 00:02:26
    Getting Started With Elastic Beanstalk (Elastic Beanstalk)
  • Урок 217. 00:03:38
    Elastic Container Service
  • Урок 218. 00:08:33
    Dockerrun aws json
  • Урок 219. 00:09:38
    Configure More Options
  • Урок 220. 00:03:57
    Infrastructure Provisioned By EB
  • Урок 221. 00:07:02
    Updating DB Host and Inspecting Logs
  • Урок 222. 00:04:18
    SSH MAC & LINUX & Windows
  • Урок 223. 00:04:01
    Bastions
  • Урок 224. 00:06:06
    Create Customer DB
  • Урок 225. 00:02:55
    Hooray we deployed the API
  • Урок 226. 00:04:22
    Exploring EB
  • Урок 227. 00:02:42
    Cloudformation
  • Урок 228. 00:02:50
    Infrastructure As Code
  • Урок 229. 00:02:46
    Multiple Environments
  • Урок 230. 00:02:21
    There Are Many Other Ways To Deploy
  • Урок 231. 00:01:21
    Intro (Git and Github)
  • Урок 232. 00:00:41
    What We Need To Do
  • Урок 233. 00:00:52
    Organizing Folders (Monorepo)
  • Урок 234. 00:01:18
    Create Github Repository
  • Урок 235. 00:06:14
    Pushing code to Github
  • Урок 236. 00:08:05
    Open the new Folder and Run Application
  • Урок 237. 00:03:56
    Intro (Github Actions)
  • Урок 238. 00:04:55
    Github Actions Overview
  • Урок 239. 00:01:31
    Intro (Continuos Integration)
  • Урок 240. 00:03:45
    Creating the workfow
  • Урок 241. 00:05:53
    Github Actions Services
  • Урок 242. 00:03:30
    Checkout Action
  • Урок 243. 00:03:15
    Setup Java Action
  • Урок 244. 00:06:08
    Run Shell Command
  • Урок 245. 00:01:16
    Commit and Push Workflow
  • Урок 246. 00:03:14
    New Feature Branch
  • Урок 247. 00:05:39
    Triggering the Workflow With Pull Request
  • Урок 248. 00:04:40
    Make Build Workflow Fail
  • Урок 249. 00:01:31
    Outro
  • Урок 250. 00:02:44
    Intro (Continous Delivery)
  • Урок 251. 00:03:04
    Create Deploy Workflow
  • Урок 252. 00:04:35
    Postgres Service
  • Урок 253. 00:01:07
    Setting Working Directory
  • Урок 254. 00:04:32
    Clone Java and Login to Docker Hub
  • Урок 255. 00:02:41
    Generate Custom Build Number
  • Урок 256. 00:02:09
    Build Number Step
  • Урок 257. 00:05:55
    Maven Verify Step
  • Урок 258. 00:05:57
    SED Command
  • Урок 259. 00:02:19
    Step to Replace tag in Dockerrun aws json
  • Урок 260. 00:02:32
    The Deployment Process
  • Урок 261. 00:04:51
    Create AWS Github Actions User with Programmatic Access
  • Урок 262. 00:03:58
    Github Secrets for AWS
  • Урок 263. 00:04:13
    AWS Elastic Beanstalk
  • Урок 264. 00:02:11
    Commit and Push Dockerrun.aws.json STEP
  • Урок 265. 00:05:49
    Continuous Delivery In Action
  • Урок 266. 00:03:36
    Outro
  • Урок 267. 00:01:26
    Intro (Slack Integration)
  • Урок 268. 00:01:08
    Installing Slack
  • Урок 269. 00:01:34
    Workspaces
  • Урок 270. 00:04:13
    Webhooks
  • Урок 271. 00:05:11
    Exercise
  • Урок 272. 00:03:57
    Exercise Solution
  • Урок 273. 00:06:09
    Deployment In Action With Slack Messaging
  • Урок 274. 00:02:08
    Discord Webhooks
  • Урок 275. 00:01:14
    Intro (Javascript)
  • Урок 276. 00:02:09
    Your First Javascript Code
  • Урок 277. 00:04:00
    What is Javacript and How it works
  • Урок 278. 00:02:18
    Visual Studio Code (VS Code)
  • Урок 279. 00:02:48
    NodeJS and NPM
  • Урок 280. 00:03:51
    Running JS with using Node
  • Урок 281. 00:07:57
    Code Runner
  • Урок 282. 00:03:05
    Comments
  • Урок 283. 00:04:17
    Quotes and Colons
  • Урок 284. 00:05:22
    Variables
  • Урок 285. 00:01:59
    Datatypes
  • Урок 286. 00:06:07
    Strings
  • Урок 287. 00:06:01
    Objects
  • Урок 288. 00:04:17
    Boolean
  • Урок 289. 00:05:09
    Arrays
  • Урок 290. 00:05:39
    Functions
  • Урок 291. 00:06:06
    Built in functions
  • Урок 292. 00:04:29
    Loops
  • Урок 293. 00:04:51
    Other types of For Loops
  • Урок 294. 00:04:50
    While Loop
  • Урок 295. 00:04:09
    Comparison Operators
  • Урок 296. 00:02:16
    Logical Operator
  • Урок 297. 00:07:16
    If Statement
  • Урок 298. 00:03:09
    Ternary if statement
  • Урок 299. 00:03:37
    Switch Statement
  • Урок 300. 00:04:45
    Hoisting
  • Урок 301. 00:01:35
    Let Keyword
  • Урок 302. 00:06:10
    Const Keyword
  • Урок 303. 00:04:10
    When to Use Const vs Let
  • Урок 304. 00:04:26
    Type Coercion
  • Урок 305. 00:03:48
    Triple Equals
  • Урок 306. 00:06:04
    Functions Overview
  • Урок 307. 00:06:09
    Arrow Functions
  • Урок 308. 00:03:29
    Function Default Parameter
  • Урок 309. 00:07:48
    Callbacks
  • Урок 310. 00:06:55
    Working with Objects
  • Урок 311. 00:05:14
    Object Destructing
  • Урок 312. 00:04:23
    Spread Operator on Objects
  • Урок 313. 00:05:18
    Working with Arrays
  • Урок 314. 00:03:31
    Arrays.Map
  • Урок 315. 00:03:40
    Array Destructuring
  • Урок 316. 00:07:44
    Default Exports
  • Урок 317. 00:07:51
    Name Exports and Imports
  • Урок 318. 00:05:00
    Your first Promise
  • Урок 319. 00:05:43
    synchronous vs asynchronous code
  • Урок 320. 00:06:15
    Async Await
  • Урок 321. 00:07:25
    Promise all
  • Урок 322. 00:07:52
    Promise base http client
  • Урок 323. 00:01:02
    Outro
  • Урок 324. 00:01:37
    What is React (React)
  • Урок 325. 00:01:29
    Vite
  • Урок 326. 00:05:10
    Scaffolding React App with Vite
  • Урок 327. 00:03:35
    Application Folder Stucture
  • Урок 328. 00:04:27
    SRC folder
  • Урок 329. 00:03:48
    Understanding Available Scripts
  • Урок 330. 00:02:35
    Clean up code to start fresh
  • Урок 331. 00:00:41
    Intro (Basics of React)
  • Урок 332. 00:05:30
    JSX
  • Урок 333. 00:03:03
    Components
  • Урок 334. 00:04:13
    Creating Components
  • Урок 335. 00:05:50
    Components and Props
  • Урок 336. 00:03:50
    Props Children
  • Урок 337. 00:08:19
    Tranformations with Map
  • Урок 338. 00:04:28
    UseState hook
  • Урок 339. 00:07:00
    UseEffect Hooks
  • Урок 340. 00:01:24
    Outro
  • Урок 341. 00:01:32
    Intro (React Building Our Web App)
  • Урок 342. 00:04:09
    UI Libraries
  • Урок 343. 00:03:22
    Installing Chakra
  • Урок 344. 00:03:29
    Testing ChakraUI installation
  • Урок 345. 00:06:29
    SideBar
  • Урок 346. 00:05:24
    Customize The SideBar
  • Урок 347. 00:04:40
    Axios and getCustomers method
  • Урок 348. 00:02:57
    Vite environement variables
  • Урок 349. 00:03:32
    Lets try to fetch data from the server
  • Урок 350. 00:03:13
    CORS
  • Урок 351. 00:07:38
    Allow CORS on the backend
  • Урок 352. 00:09:08
    Render Customers & Loading Spinner
  • Урок 353. 00:03:53
    Card Component
  • Урок 354. 00:03:13
    Wrap and Wrap Item
  • Урок 355. 00:07:30
    Customizing Card
  • Урок 356. 00:04:18
    Include sha and commit to CD workflow
  • Урок 357. 00:03:42
    Watch CD Workflow Deploy CORS changes
  • Урок 358. 00:02:10
    Intro (Backend and React - Gender Exercise (Challenging))
  • Урок 359. 00:03:16
    Exercise
  • Урок 360. 00:06:45
    Add New Migration (Backend and React - Gender Exercise Solution)
  • Урок 361. 00:05:02
    Updating Customer Contructor to Include Gender
  • Урок 362. 00:08:11
    Fixing Tests
  • Урок 363. 00:06:10
    Fixing Integration Tests
  • Урок 364. 00:06:14
    Add Gender and Profile Picture to Frontend
  • Урок 365. 00:07:56
    Deployment
  • Урок 366. 00:03:47
    Pull Lastest amigoscode-api version
  • Урок 367. 00:01:43
    Outro
  • Урок 368. 00:01:00
    Intro (React - New Customer Feature)
  • Урок 369. 00:03:36
    Create Customer Button
  • Урок 370. 00:05:06
    Drawer
  • Урок 371. 00:03:36
    Installing Formik and YUP
  • Урок 372. 00:04:42
    CreateCustomerForm component
  • Урок 373. 00:08:27
    Customise Form (Part 1)
  • Урок 374. 00:04:46
    Customise Form (Part 2)
  • Урок 375. 00:04:14
    Disable submit button if form not valid
  • Урок 376. 00:02:10
    Axios Post
  • Урок 377. 00:05:48
    onSubmit
  • Урок 378. 00:06:50
    Fetch customers on save
  • Урок 379. 00:05:43
    Toasts and Notifications
  • Урок 380. 00:05:13
    Using success and error notifications
  • Урок 381. 00:01:08
    Exercise (React - Delete Customer Exercise)
  • Урок 382. 00:12:23
    Exercise Solution
  • Урок 383. 00:00:42
    Exercise (React - Update Customer Exercise)
  • Урок 384. 00:17:11
    Exercise Solution
  • Урок 385. 00:05:52
    Final Touches
  • Урок 386. 00:01:07
    Intro (Dockerise React App and Docker Compose)
  • Урок 387. 00:07:34
    Dockerfile react frontend
  • Урок 388. 00:04:10
    Building React Frontend Docker Image
  • Урок 389. 00:05:18
    Running React Frontend Container
  • Урок 390. 00:04:02
    Looking inside the container
  • Урок 391. 00:04:47
    Adding react service to docker compose
  • Урок 392. 00:01:10
    Intro (React Frontend Deployment)
  • Урок 393. 00:07:11
    Docker Build Args
  • Урок 394. 00:07:05
    React Frontend Container Definition
  • Урок 395. 00:04:04
    Deploying
  • Урок 396. 00:08:15
    AWS Security Group and Rules
  • Урок 397. 00:05:24
    Adding Security Group Rule
  • Урок 398. 00:02:58
    Outro
  • Урок 399. 00:02:33
    Exercise (AWS - Exercise)
  • Урок 400. 00:21:25
    Exercise Solution
  • Урок 401. 00:01:34
    Intro (Security & JWT Overview)
  • Урок 402. 00:01:34
    The Problem
  • Урок 403. 00:01:44
    Spring Security
  • Урок 404. 00:02:55
    Exploring Spring Security Documentation
  • Урок 405. 00:03:52
    Introduction to JWT
  • Урок 406. 00:05:12
    The Structure of JWT
  • Урок 407. 00:01:51
    How We Are Going to Secure Our Endpoints
  • Урок 408. 00:05:15
    Installing Dependencies (Implementing Security)
  • Урок 409. 00:03:02
    Starting the server
  • Урок 410. 00:05:01
    Generate JWT Token
  • Урок 411. 00:06:31
    Generate JWT Token - Signing
  • Урок 412. 00:01:01
    Important
  • Урок 413. 00:04:09
    Send Signed Token to Client
  • Урок 414. 00:06:50
    Allow Only POST Requests to Register Customers
  • Урок 415. 00:02:13
    Inspecting JWT Token
  • Урок 416. 00:06:36
    Security FIlter Chain
  • Урок 417. 00:01:43
    The Next Steps
  • Урок 418. 00:03:21
    UserDetails
  • Урок 419. 00:06:55
    Implement UserDetails
  • Урок 420. 00:08:34
    Fixing Tests
  • Урок 421. 00:07:10
    UserDetailsService
  • Урок 422. 00:07:42
    Password Encoder and BCrypt
  • Урок 423. 00:07:36
    Hashed Passowords In Action
  • Урок 424. 00:03:24
    Authentication Provider
  • Урок 425. 00:05:58
    DaoAuthenticationProvider
  • Урок 426. 00:02:10
    JWT Token Validation Overview
  • Урок 427. 00:04:50
    JWT Auth Filter and Extract Token
  • Урок 428. 00:03:08
    Extract Subject From Token
  • Урок 429. 00:09:07
    Validate Token and Set Authentication
  • Урок 430. 00:03:31
    Registering The Filter
  • Урок 431. 00:04:46
    Attatching JWT to Requests
  • Урок 432. 00:03:12
    Fixing CustomerRepositoryTest
  • Урок 433. 00:01:17
    Lets Pause
  • Урок 434. 00:13:05
    Spring Security Architecture Explained
  • Урок 435. 00:01:02
    Outro
  • Урок 436. 00:01:46
    Intro (DTO Pattern)
  • Урок 437. 00:16:01
    DTO Pattern
  • Урок 438. 00:09:00
    Fixing canRegisterCustomer Integration Test (Implementing Security PART 2)
  • Урок 439. 00:03:44
    We Have A Problem With Spring Security
  • Урок 440. 00:05:14
    Authentication Entrypoint
  • Урок 441. 00:08:17
    @ControllerAdvice and @ExceptionHandler
  • Урок 442. 00:04:15
    Handle InsufficientAuthenticationException and Exception
  • Урок 443. 00:00:48
    Exercise
  • Урок 444. 00:05:02
    Exercise Solution canDeleteCustomer
  • Урок 445. 00:05:26
    Exercise Solution canUpdateCustomer
  • Урок 446. 00:02:39
    CORS Issue Again
  • Урок 447. 00:07:02
    Spring Security CORS
  • Урок 448. 00:01:28
    Login Exercise
  • Урок 449. 00:14:12
    Login Exercise Solution
  • Урок 450. 00:12:17
    Login Integration Test
  • Урок 451. 00:03:41
    Test Login using Postman
  • Урок 452. 00:01:59
    POST Mistake
  • Урок 453. 00:07:47
    Deployment
  • Урок 454. 00:03:08
    Testing API
  • Урок 455. 00:00:24
    Exercise
  • Урок 456. 00:02:49
    Exercise Solution
  • Урок 457. 00:00:55
    Outro
  • Урок 458. 00:00:38
    Intro (React - Login & Registration)
  • Урок 459. 00:01:55
    Section Intro
  • Урок 460. 00:03:39
    Installing React Router
  • Урок 461. 00:04:39
    React Router Routes
  • Урок 462. 00:03:45
    Login Page
  • Урок 463. 00:04:34
    Syling Right Side of Login Page
  • Урок 464. 00:06:51
    Login Form P1
  • Урок 465. 00:07:38
    Login Form P2
  • Урок 466. 00:02:02
    Login Post Method
  • Урок 467. 00:02:55
    React Context
  • Урок 468. 00:08:05
    AuthProvider
  • Урок 469. 00:07:39
    Using Context
  • Урок 470. 00:05:35
    Performing Login
  • Урок 471. 00:04:07
    Local Storage
  • Урок 472. 00:03:19
    Adding to Local Storage
  • Урок 473. 00:02:54
    Redirected After Successful login
  • Урок 474. 00:05:23
    Attach Authorization Header to HTTP Requests
  • Урок 475. 00:05:08
    Add Password To Create New Customer
  • Урок 476. 00:05:59
    Logout
  • Урок 477. 00:06:01
    Add Details about Current Logged in Customer
  • Урок 478. 00:06:19
    Protected Route
  • Урок 479. 00:06:28
    Check Token Expiration with JWT Decode
  • Урок 480. 00:08:10
    UseEffect in AuthProvider
  • Урок 481. 00:02:20
    Redirect to Dashboard if logged in
  • Урок 482. 00:03:48
    Testing when token expires
  • Урок 483. 00:07:31
    Login Page Deployment
  • Урок 484. 00:01:01
    Exercise
  • Урок 485. 00:08:07
    Exercise Solution (Part 1)
  • Урок 486. 00:11:42
    Exercise Solution (Part 2)
  • Урок 487. 00:04:52
    Deployment for Registration
  • Урок 488. 00:03:56
    Intro (AWS Load Balancers, Route53, Certificate Manager and SSL/TLS)
  • Урок 489. 00:04:40
    Section Overview
  • Урок 490. 00:03:55
    Load Balancers Overview
  • Урок 491. 00:02:10
    The Need For a Brand New Environment
  • Урок 492. 00:10:38
    Create new EB Environment with ALB
  • Урок 493. 00:05:05
    Deploy new version with correct DB details
  • Урок 494. 00:07:49
    Understanding ALB health checks
  • Урок 495. 00:07:48
    Actuator and Health Endpoint
  • Урок 496. 00:02:05
    Update Github Secrets
  • Урок 497. 00:07:16
    Deploy Actuator Changes
  • Урок 498. 00:06:49
    Changing LB Health Endpoint
  • Урок 499. 00:02:27
    Route 53 - Register Domain
  • Урок 500. 00:04:42
    Create A Record for Load Balancer
  • Урок 501. 00:02:29
    SSL and TLS
  • Урок 502. 00:03:13
    Issuing Certificate with Certificate Manager
  • Урок 503. 00:06:31
    HTTPS Listener
  • Урок 504. 00:03:42
    HTTP to HTTPS Redirects
  • Урок 505. 00:01:44
    Outro
  • Урок 506. 00:05:30
    Managed Hosting Services for Web Apps (AWS Amplify - React Deployment)
  • Урок 507. 00:04:20
    Installing AWS Amplify
  • Урок 508. 00:01:55
    Choosing Repo and Branch
  • Урок 509. 00:04:15
    Build Settings (Part 1)
  • Урок 510. 00:06:34
    Build Settings (Part 2)
  • Урок 511. 00:05:00
    Deployment
  • Урок 512. 00:07:14
    Custom Domain
  • Урок 513. 00:01:49
    Protect Web App
  • Урок 514. 00:02:40
    Previews
  • Урок 515. 00:13:03
    Change React UI
  • Урок 516. 00:06:34
    Raise PR
  • Урок 517. 00:03:07
    Merge PR
  • Урок 518. 00:00:43
    Intro (Typescript)
  • Урок 519. 00:01:49
    Your first Typescript code
  • Урок 520. 00:00:44
    Nodejs installation
  • Урок 521. 00:00:59
    VS code
  • Урок 522. 00:01:44
    Install Typescript
  • Урок 523. 00:05:12
    TS-node code runner settings
  • Урок 524. 00:03:37
    Comments
  • Урок 525. 00:06:47
    Declare variables
  • Урок 526. 00:04:59
    String type
  • Урок 527. 00:03:04
    Number type
  • Урок 528. 00:01:54
    Boolean type
  • Урок 529. 00:05:03
    Array type
  • Урок 530. 00:04:16
    Object type
  • Урок 531. 00:03:22
    Any type
  • Урок 532. 00:04:15
    Union type
  • Урок 533. 00:04:25
    Alias type
  • Урок 534. 00:03:00
    Tuple type
  • Урок 535. 00:05:35
    Enum type
  • Урок 536. 00:04:06
    Never type
  • Урок 537. 00:05:10
    Unknown type
  • Урок 538. 00:05:56
    Literal type
  • Урок 539. 00:14:01
    Functions
  • Урок 540. 00:04:11
    Classes
  • Урок 541. 00:06:45
    Class Access Modifiers
  • Урок 542. 00:01:49
    Class read only Access Modifiers
  • Урок 543. 00:07:12
    Inheritance
  • Урок 544. 00:07:07
    Getters and setters
  • Урок 545. 00:05:52
    Static properties and methods
  • Урок 546. 00:07:03
    Abstract class
  • Урок 547. 00:05:47
    Interfaces I
  • Урок 548. 00:03:37
    Interfaces II
  • Урок 549. 00:04:53
    Interfaces III
  • Урок 550. 00:02:37
    Interface Functions
  • Урок 551. 00:01:56
    Interface Optionals
  • Урок 552. 00:10:14
    Intro to Generics
  • Урок 553. 00:11:57
    Generics Classes and Interfaces
  • Урок 554. 00:00:19
    Outro
  • Урок 555. 00:00:44
    Intro (Getting Started with Angular)
  • Урок 556. 00:01:37
    What is angular
  • Урок 557. 00:02:09
    What is a module
  • Урок 558. 00:04:35
    Components in angular
  • Урок 559. 00:04:32
    Install angular cli
  • Урок 560. 00:03:09
    Bootstrap the app with npm
  • Урок 561. 00:07:04
    Explain project structure (src folder)
  • Урок 562. 00:03:44
    Explain project structure (package json file)
  • Урок 563. 00:08:30
    Explain project structure (angular json file)
  • Урок 564. 00:05:19
    Strip sample application
  • Урок 565. 00:04:42
    Create a new angular component (Basics of Angular)
  • Урок 566. 00:02:57
    Display and use a component
  • Урок 567. 00:05:43
    Data binding
  • Урок 568. 00:03:38
    Two ways binding
  • Урок 569. 00:03:48
    Event binding
  • Урок 570. 00:09:09
    Directives - Conditions - Nglf (Part 1)
  • Урок 571. 00:06:26
    Directives - conditions - Ngfor (Part 2)
  • Урок 572. 00:06:07
    Inputs
  • Урок 573. 00:08:04
    Output (Part 1)
  • Урок 574. 00:06:20
    Output (Part 2)
  • Урок 575. 00:08:09
    Services (Part 1)
  • Урок 576. 00:08:44
    Services (Part 2)
  • Урок 577. 00:03:15
    Routing-bootstrapping
  • Урок 578. 00:03:54
    Routing - Definition
  • Урок 579. 00:07:47
    Routing - Declaring a new route
  • Урок 580. 00:06:51
    Routing - Navigating to different routes by template and by injecting
  • Урок 581. 00:06:21
    Walking through PrimeNG Website (Angular - Application Skeleton)
  • Урок 582. 00:03:17
    Cleanup the Project
  • Урок 583. 00:04:16
    Adding PrimeNG Dependencies
  • Урок 584. 00:03:14
    Import PrimeNG Styles
  • Урок 585. 00:01:35
    Make Sure the Imports Work
  • Урок 586. 00:01:23
    Explaining Login and Register Pages
  • Урок 587. 00:04:12
    Explaining the Future Design of the App
  • Урок 588. 00:03:34
    Splitting the App into Components
  • Урок 589. 00:10:15
    Create the Customer Component
  • Урок 590. 00:09:44
    Create Menu Bar Component
  • Урок 591. 00:06:34
    Create Menu Item Component
  • Урок 592. 00:16:42
    Header Bar Component
  • Урок 593. 00:02:06
    Add Create Customer Button
  • Урок 594. 00:06:36
    Add the Sidebar
  • Урок 595. 00:07:09
    Create Mana-Customer Component (Part 1)
  • Урок 596. 00:05:24
    Create Mana-Customer Component (Part 2)
  • Урок 597. 00:00:47
    Create Login Component (Angular - Login Page)
  • Урок 598. 00:00:32
    Exercise 1 - Add Routing for Login Page
  • Урок 599. 00:01:24
    Exercise 1 - Solution
  • Урок 600. 00:06:58
    Implement Login Page UI (Part 1)
  • Урок 601. 00:08:49
    Implement Login Page UI (Part 2)
  • Урок 602. 00:01:57
    Create the Authentication Service
  • Урок 603. 00:02:55
    Create the Authentication Model
  • Урок 604. 00:00:28
    Exercise 2 - Bind the Authentication Model to the Login Form
  • Урок 605. 00:02:43
    Exercise 2 - Solution
  • Урок 606. 00:04:17
    Implement the Login Method
  • Урок 607. 00:03:16
    Consume the Login Method and Console Log the Result
  • Урок 608. 00:01:47
    Import the HTTP Client Module
  • Урок 609. 00:02:15
    Test the Login Method and Analyse the Response
  • Урок 610. 00:05:31
    Create Authentication Response Object
  • Урок 611. 00:01:29
    Make the Login Method Returns Authentication Response
  • Урок 612. 00:06:11
    Catch the Authentication Error and Display the Error Message
  • Урок 613. 00:03:50
    Implement Success Login - Store Unauthorised Response and Redirect the User
  • Урок 614. 00:01:02
    Why Securing a Route
  • Урок 615. 00:01:51
    What is a Guard
  • Урок 616. 00:01:43
    Create the Access Guard Service
  • Урок 617. 00:02:04
    Use the Access Guard to Secure the Customers Route
  • Урок 618. 00:02:28
    Add the Angular-JWT Library
  • Урок 619. 00:06:29
    Implement the Access Guard and Secure the Customers Route
  • Урок 620. 00:00:54
    Create Customer Service (Angular - Fetch All Customers)
  • Урок 621. 00:00:23
    Exercise 1 - Find all Customers
  • Урок 622. 00:01:23
    Exercise 1 - Solution
  • Урок 623. 00:04:08
    Display all Customers (Part 1)
  • Урок 624. 00:02:53
    Ddd the Authorisation Header to the Request
  • Урок 625. 00:01:14
    Display all customers (Part 2)
  • Урок 626. 00:03:17
    Generate Environments Files
  • Урок 627. 00:04:15
    Add Application Properties
  • Урок 628. 00:04:40
    Update the Services to use the Values from Environment file
  • Урок 629. 00:02:40
    Present the Hard Coded JWT Token (problematic)
  • Урок 630. 00:02:00
    Create the HTTP Interceptor
  • Урок 631. 00:03:02
    Make Angular use the Interceptor
  • Урок 632. 00:03:25
    Implement the Interceptor
  • Урок 633. 00:01:40
    Create Customer Card Component
  • Урок 634. 00:12:13
    Implement Customer Card UI
  • Урок 635. 00:00:12
    Exercise 2 - Display Customer Information in the Card component
  • Урок 636. 00:04:08
    Exercise 2 - Solution
  • Урок 637. 00:02:07
    Add Customer Registration Object as Input (Angular - Create Customer)
  • Урок 638. 00:01:45
    Create the Customer Registration Request Object
  • Урок 639. 00:02:18
    Add Binding to the Form
  • Урок 640. 00:00:30
    Exercise 1 - Disable the Submit button if the customer is not valid
  • Урок 641. 00:05:12
    Exercise 1 Solution
  • Урок 642. 00:00:34
    Exercise 2 - Delegate the Submit Operation to the Parent Component
  • Урок 643. 00:02:06
    Exercise 2 - Solution
  • Урок 644. 00:03:09
    Consume the Submit Event and Console Log the Customer Information
  • Урок 645. 00:02:00
    Create POST Customer Service Method
  • Урок 646. 00:00:29
    Exercise 3 - Save and Refresh the Customers List
  • Урок 647. 00:05:20
    Exercise 3 - Solution
  • Урок 648. 00:02:13
    Add Style to the Displayed Cards
  • Урок 649. 00:02:05
    Add Toast Component
  • Урок 650. 00:03:38
    Display Succes Message after Saving New Customer
  • Урок 651. 00:05:15
    Add Dynamic Profile Picture to the Customer Card
  • Урок 652. 00:01:39
    Exercise - Implement the Delete Functionality (including the confirm dialogue)
  • Урок 653. 00:02:59
    Delegate the Delete Event to the Parent and Console Log the Customer DTO
  • Урок 654. 00:02:20
    Add the Confirmation Dialogue Component
  • Урок 655. 00:04:31
    Display the Confirmation Dialogue and Console Log the Confirm Delete Action
  • Урок 656. 00:01:35
    Create Delete Customer Method (HTTP)
  • Урок 657. 00:01:54
    Perform Delete Action and Refresh the Customers List
  • Урок 658. 00:00:55
    Explaining the Update Functionnality (Angular - Update customer)
  • Урок 659. 00:01:18
    Create Customer Update Request Model
  • Урок 660. 00:01:48
    Create Customer Update Methods (service)
  • Урок 661. 00:04:11
    Add Operation Input and Manage Fields Display
  • Урок 662. 00:03:13
    Display Title Depending on the Operation
  • Урок 663. 00:05:27
    Delegate the Update Event to the Parent and Display Customer Information in the Form
  • Урок 664. 00:02:13
    Adjust the Create Customer (button) Click Envent
  • Урок 665. 00:03:13
    Adjust the Disabling of the Submit Button
  • Урок 666. 00:04:29
    Implement Update Customer (Part 1)
  • Урок 667. 00:04:04
    Extend the Customer Object and Test the Update Functionality (Part 2)
  • Урок 668. 00:03:39
    Correctly Display the Manage Customer Title
  • Урок 669. 00:04:09
    Implement Cancel Button
  • Урок 670. 00:02:01
    Exercise 1 - Display Username and Role in the Header
  • Урок 671. 00:03:28
    Exercise 1 - Soluion
  • Урок 672. 00:04:43
    Logout
  • Урок 673. 00:01:37
    Exercise - Implement the Registration Functionality (Angular - Register New Customer)
  • Урок 674. 00:00:59
    Create Register Component
  • Урок 675. 00:02:08
    Add Routing to Register Page
  • Урок 676. 00:03:56
    Implement the Register UI (Part 1)
  • Урок 677. 00:04:41
    Implement the Register UI (Part 2)
  • Урок 678. 00:01:36
    Add Binding to the Customer Registration Request
  • Урок 679. 00:06:57
    Register a User and Redirect to Customers Page
  • Урок 680. 00:02:20
    Redirect Angular (Angular - Tidy Up)
  • Урок 681. 00:02:57
    Tidy Up Some Files
  • Урок 682. 00:01:57
    Commit Changes
  • Урок 683. 00:00:49
    Exercise (Angular - Deployment Exercise + Solution)
  • Урок 684. 00:03:46
    Product Environment Configuration
  • Урок 685. 00:04:34
    AWS Amplify Configuration
  • Урок 686. 00:03:33
    Deploying Frontend
  • Урок 687. 00:04:16
    Custom Domain With Free SSL Certificate
  • Урок 688. 00:01:51
    Access Control
  • Урок 689. 00:05:34
    AWS Amplify Continuos Integration
  • Урок 690. 00:05:34
    AWS Amplify Continuos Delivery
  • Урок 691. 00:01:22
    Outro (Angular Outro)
  • Урок 692. 00:01:47
    Intro (Limit and Pagination)
  • Урок 693. 00:12:53
    The Problem and Fix
  • Урок 694. 00:00:45
    Outro
  • Урок 695. 00:02:23
    The Exercise (File Upload Exercise)
  • Урок 696. 00:04:08
    Documentation and POM (S3 File Uploads)
  • Урок 697. 00:04:37
    Create User
  • Урок 698. 00:02:33
    Create Access and Secret Keys
  • Урок 699. 00:03:58
    Storing Credentials
  • Урок 700. 00:02:38
    Amazon S3
  • Урок 701. 00:05:16
    S3Client Bean
  • Урок 702. 00:04:21
    Implement PutObject Method
  • Урок 703. 00:03:26
    Implement GetObject Method
  • Урок 704. 00:02:43
    Create S3 Bucket
  • Урок 705. 00:08:46
    Testing Uploads and Downloads
  • Урок 706. 00:04:46
    Bucket Name as Config
  • Урок 707. 00:05:17
    Upload and Download API Endpoints
  • Урок 708. 00:06:03
    Implement Service method to upload
  • Урок 709. 00:05:01
    Implement Service method to download
  • Урок 710. 00:08:07
    ProfileImageId New Column
  • Урок 711. 00:06:57
    SQL and JPQL Queries
  • Урок 712. 00:02:38
    Include new coloum in select statements
  • Урок 713. 00:05:03
    Stroring and Retrieving Profile Image Id from DBNew Lesson
  • Урок 714. 00:06:18
    Fixing Compilation and Tests
  • Урок 715. 00:11:56
    Test canPutObject
  • Урок 716. 00:05:52
    Test canGetObject
  • Урок 717. 00:04:33
    Test canGetObject Exception
  • Урок 718. 00:11:18
    Test uploadCustomerProfileImage Part 1
  • Урок 719. 00:06:01
    Test uploadCustomerProfileImage Part 2
  • Урок 720. 00:04:15
    Test uploadCustomerProfileImage Part 3
  • Урок 721. 00:05:25
    Test downloadCustomerProfileImage Part 1
  • Урок 722. 00:05:46
    Test downloadCustomerProfileImage Part 2
  • Урок 723. 00:02:40
    Test downloadCustomerProfileImage Part 3
  • Урок 724. 00:04:30
    Exception Handling Documentation
  • Урок 725. 00:06:48
    Test JPA Repository Query
  • Урок 726. 00:02:24
    Test JPA DAO Implementation
  • Урок 727. 00:02:49
    Test JDBC DAO Implementation
  • Урок 728. 00:05:07
    Adding Pictures To Test Folder
  • Урок 729. 00:07:46
    Picture Upload IT Part 1
  • Урок 730. 00:07:55
    Increase Multipart File Size
  • Урок 731. 00:06:55
    Download Picture Integration Test
  • Урок 732. 00:03:11
    Permit All to Download Picture
  • Урок 733. 00:03:44
    FakeS3
  • Урок 734. 00:06:38
    FakeS3 PutObject
  • Урок 735. 00:02:15
    FakeS3 GetObject
  • Урок 736. 00:02:04
    Mock S3
  • Урок 737. 00:04:13
    Mock S3 In Action
  • Урок 738. 00:06:09
    Roles and Policies
  • Урок 739. 00:07:41
    IAM Policy Simulator
  • Урок 740. 00:02:12
    Different Profiles Per Environment (Spring Profiles)
  • Урок 741. 00:05:33
    Working With Profiles
  • Урок 742. 00:05:34
    Test Profile Configuration
  • Урок 743. 00:02:39
    Deployment
  • Урок 744. 00:03:47
    SSH Into EC2
  • Урок 745. 00:01:20
    React Drop Zone (React - File Upload)
  • Урок 746. 00:04:05
    Syling Dropzone
  • Урок 747. 00:04:36
    Using Dropzone
  • Урок 748. 00:04:53
    Dropzone Upload FIle
  • Урок 749. 00:03:37
    Testing Picture upload
  • Урок 750. 00:02:24
    Reload Profile Picture On Upload
  • Урок 751. 00:02:25
    Display Profile Picture
  • Урок 752. 00:02:09
    MediaType IMAGE_JPEG_VALUE
  • Урок 753. 00:05:12
    CI_CD Backend and Frontend
  • Урок 754. 00:03:20
    Test Live Application
  • Урок 755. 00:02:32
    Outro (File Upload Outro)
  • Урок 756. 00:03:03
    We Built The Building Blocks and Potential Features (Few Words)
  • Урок 757. 00:01:25
    Improve Things as you Wish
  • Урок 758. 00:02:11
    Secrets Management
  • Урок 759. 00:01:06
    Next steps
  • Урок 760. 00:01:54
    Testimonial