Node JS: Advanced Concepts
Node JS: Advanced Concepts

Get advanced with Node.Js! Learn caching with Redis, speed up through clustering, and add image upload with S3 and Node!

Created by Stephen Grider
Language English

Node JS: Advanced Concepts

Node JS: Advanced Concepts
Node JS: Advanced Concepts

Get advanced with Node.Js! Learn caching with Redis, speed up through clustering, and add image upload with S3 and Node!

Created by Stephen Grider
Language English
01 The Internals of Node
  • 001 How to Get Help 00:01:07
  • 002 Starting With Node Internals 00:03:47
  • 003 Module Implementations 00:08:23
  • 004 Node Backed by C 00:06:33
  • 005 The Basics of Threads 00:06:29
  • 006 The Node Event Loop 00:06:34
  • 007 The Event Loop Implementation 00:07:22
  • 008 Event Loop Ticks 00:06:47
  • 009 Is Node Single Threaded 00:05:06
  • 010 Testing for Single Threads 00:06:49
  • 011 The Libuv Thread Pool 00:03:07
  • 012 Threadpools with Multithreading 00:06:06
  • 013 Changing Threadpool Size 00:05:25
  • 014 Common Threadpool Questions 00:03:16
  • 015 Explaining OS Operations 00:03:52
  • 016 Libuv OS Delegation 00:03:19
  • 017 OSAsync Common Questions 00:02:40
  • 018 Review 00:02:48
  • 019 Crazy Node Behavior 00:07:39
  • 020 Unexpected Event Loop Events 00:11:23
02 Enhancing Node Performance
  • 021 Enhancing Performance 00:02:18
  • 022 Express Setup 00:03:22
  • 023 Blocking the Event Loop 00:07:07
  • 024 Clustering in Theory 00:05:11
  • 025 Forking Children 00:05:37
  • 026 Clustering in Action 00:05:33
  • 027 Benchmarking Server Performance 00:05:16
  • 028 Benchmark Refactor 00:03:55
  • 029 Need More Children 00:16:42
  • 030 PM2 Installation 00:02:53
  • 031 PM2 Configuration 00:06:49
  • 032 Webworker Threads 00:02:27
  • 033 Worker Threads in Action 00:11:34
  • 034 Benchmarking Workers 00:05:17
03 Project Setup
  • 035 The Next Phase 00:02:12
  • 036 Project Walkthrough 00:08:42
  • 037 Key Customization 00:03:11
  • 038 MongoDB Atlas Setup and Configuration .html
  • 039 MongoDB Creation 00:06:23
  • 040 Routes Walkthrough 00:04:18
04 Data Caching with Redis
  • 041 MongoDB Query Performance 00:10:42
  • 042 Query Caching Layer 00:07:55
  • 043 Redis Introduction 00:03:22
  • 044 Installing Redis on MacOS 00:03:19
  • 045 Redis on Windows .html
  • 046 Getting and Setting Basic Values 00:06:47
  • 047 Redis Hashes 00:06:57
  • 048 One Redis Gotcha 00:02:53
  • 049 Cache Keys 00:07:47
  • 050 Promisifying a Function 00:08:07
  • 051 Caching in Action 00:07:59
  • 052 Caching Issues 00:05:26
  • 053 The Ultimate Caching Solution 00:20:59
  • 054 Patching Mongooses Exec 00:10:42
  • 055 Restoring Blog Routes Handler 00:02:05
  • 056 Unique Keys 00:06:00
  • 057 Key Creation 00:03:09
  • 058 Restoring Redis Config 00:01:28
  • 059 Cache Implementation 00:04:27
  • 060 Resolving Values 00:05:46
  • 061 Hydrating Models 00:06:26
  • 062 Hydrating Arrays 00:03:28
  • 063 Toggleable Cache 00:08:41
  • 064 Cache Expiration 00:02:30
  • 065 Forced Cache Expiration 00:05:15
  • 066 Nested Hashes 00:06:46
  • 067 Clearing Nested hashes 00:04:36
  • 068 Automated Cache Clearing with Middlware 00:06:39
05 Automated Headless Browser Testing
  • 069 Testing Flow 00:06:38
  • 070 Testing Challenges 00:03:25
  • 071 Commands Around Testing 00:03:13
  • 072 First Jest Test 00:04:26
  • 073 Launching Chromium Instances 00:09:50
  • 074 Chromium Navigation 00:04:31
  • 075 Extracting Page Content 00:05:03
  • 076 Puppeteer - Behind the Scenes 00:04:44
  • 077 DRY Tests 00:03:23
  • 078 Browser Termination 00:01:34
  • 079 Asserting OAuth Flow 00:07:30
  • 080 Asserting URL Domain 00:03:00
  • 081 Issues with OAuth 00:05:11
  • 082 Solving Authentication Issues with Automation Testing 00:04:36
  • 083 The Google OAuth Flow 00:07:16
  • 084 Inner Workings of Sessions 00:12:06
  • 085 Sessions From Another Angle 00:08:22
  • 086 Session Signatures 00:11:33
  • 087 Generating Sessions and Signatures 00:09:03
  • 088 Assembling the Pieces 00:08:07
  • 089 WaitFor Statements 00:09:17
  • 090 Factory Functions 00:04:59
  • 091 The Session Factory 00:08:48
  • 092 Assembling the Session Factory 00:03:03
  • 093 Code Separation 00:06:22
  • 094 Global Jest Setup 00:07:00
  • 095 Testing Factory Tests 00:03:41
  • 096 Adding a Login Method 00:05:01
  • 097 Extending Page 00:07:58
  • 098 Introduction to Proxies 00:07:46
  • 099 Proxies in Action 00:12:10
  • 100 Combining Object Property Access 00:08:17
  • 101 Combining the Page and Browser 00:08:37
  • 102 Custom Page Implementation 00:04:16
  • 103 Function Lookup Priority 00:04:26
  • 104 Gee I Hope This Works 00:05:32
  • 105 Reusable Functions on Page 00:05:38
  • 106 Testing Blog Creation 00:04:53
  • 107 Default Navigation 00:05:31
  • 108 Asserting Form Display 00:05:59
  • 109 Test Timeout 00:05:23
  • 110 Common Test Setup 00:05:07
  • 111 Nested Describes for Structure 00:07:00
  • 112 Asserting Validation Errors 00:07:39
  • 113 Asserting Form Confirmation 00:06:25
  • 114 Asserting Blog Creation 00:05:57
  • 115 Options for Testing Prohibited Actions 00:03:32
  • 116 Direct API Requests 00:11:44
  • 117 Executed Arbitrary JS in Chromium 00:03:54
  • 118 Asserting Page Response 00:07:24
  • 119 Get Restrictions 00:02:44
  • 120 A Final GET Test 00:02:56
  • 121 Super Advanced Test Helpers 00:31:45
06 Wiring Up Continuous Integration
  • 122 Introduction to CI 00:07:24
  • 123 CI Providers 00:06:21
  • 124 The Basics of YAML Files 00:04:22
  • 125 Travis YAML Setup 00:10:04
  • 126 More Travis YAML 00:05:08
  • 127 Client Builds 00:06:37
  • 128 Script Config 00:06:18
  • 129 Using Travis Documentation 00:05:44
  • 130 More Server Configuration 00:13:26
  • 131 Note - Travis Update .html
  • 132 A Touch More Configuration 00:03:11
  • 133 Git Repo Setup 00:04:19
  • 134 Travis CI Setup 00:02:15
  • 135 Triggering CI Builds 00:02:48
  • 136 Build Success 00:01:19
07 Scalable ImageFile Upload
  • 137 Image Upload 00:02:15
  • 138 Big Issues Around Image Upload 00:04:40
  • 139 Alternate Image Upload 00:03:33
  • 140 Chosen Storage Solution 00:04:17
  • 141 Upload Constraints 00:04:26
  • 142 Image File Transport 00:06:04
  • 143 Upload Flow with AWS S3 00:05:22
  • 144 Details of the Presigned URL 00:06:47
  • 145 Security Issues Solved with Presigned URLs 00:04:15
  • 146 Adding an Image Picker 00:03:31
  • 147 Handling File Changes 00:04:39
  • 148 Recording Image Files 00:04:38
  • 149 The SubmitBlog Function 00:03:07
  • 150 AWS Credentials with IAM 00:05:08
  • 151 Creating S3 Buckets 00:03:16
  • 152 Allowing Actions with IAM Policies 00:08:17
  • 153 Creating IAM Users 00:04:41
  • 154 Upload Routes Files 00:05:14
  • 155 Configuring the AWS SDK 00:03:19
  • 156 GetSignedURL Arguments 00:10:06
  • 157 Calling GetSignedURL 00:09:35
  • 158 Viewing the Signed URL 00:02:17
  • 159 Attempting Image Upload 00:07:59
  • 160 Handling CORS Errors 00:05:21
  • 161 Outstanding Issues 00:01:39
  • 162 S3 Bucket Policies 00:05:01
  • 163 Tying Uploads to Blogs 00:04:18
  • 164 Ensuring Images get Tied 00:02:01
  • 165 Displaying Images 00:04:06
08 Extras
  • 166 Bonus .html