-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
136 lines (132 loc) Β· 7.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Node.js and Async 2024 Training Course</title>
<style>
body { font-family: 'Courier New', Courier, monospace; background: #121212; color: #ccc; }
header, section { padding: 20px; border-bottom: 1px solid #333; }
h1, h2, h3 { color: #8ab4f8; }
p { line-height: 1.6; }
.button { background: linear-gradient(to right, #0d47a1, #1976d2); border: none; padding: 10px 20px; color: white; border-radius: 5px; cursor: pointer; }
.register { background: #202124; padding: 20px; }
input, textarea { width: 100%; padding: 10px; margin-top: 5px; background: #333; border: 1px solid #555; color: white; border-radius: 5px; }
form { max-width: 400px; margin: auto; }
.case-study { background: #333; padding: 20px; margin: 15px 0; }
.testimonial { font-style: italic; background: #252526; padding: 10px; margin-bottom: 10px; }
a { color: #8ab4f8; }
</style>
</head>
<body>
<header>
<h1>π Node.js and Async 2024 Training</h1>
<p>Asynchronous programming and Node.js for applied developers. Sign up today to advance your skills!</p>
</header>
<section>
<h2>Course Structure</h2>
<p>This course covers essential topics including:</p>
<ul>
<li>π Node.js: introduction to technology</li>
<li>π§βπ» HTTP server for statics files</li>
<li>𧩠Comparison of HTTP, TCP and UDP clustering on processes and threads</li>
<li>𧩠Asynchrony and event loop phases</li>
<li>β Application structure: modularity systems, packages and dependencies</li>
<li>π» Modularity systems, CommonJS, ESModules, implementation of your own modularity system</li>
<li>π» Packages and their loading in different modular systems</li>
<li>β Application architecture: layers and dependency injection</li>
<li>𧩠Why is middleware bad?</li>
<li>β Layers and Low Coupling using the example of config and transport</li>
<li>β Databases, model, .d.ts headers and linters</li>
<li>β Cryptography: crypto, password hashing with salt, session token, UUID, random numbers</li>
<li>π» Implementation of randomPrefetcher from the metautil library</li>
<li>π» UUID generation</li>
<li>β Using Chat GPT in JavaScript optimization for Node.js</li>
<li>β Server class structure and GoF patterns in Node.js</li>
<li>β Authentication subsystem</li>
<li>β Role Based Access Control subsystem</li>
<li>β Streams Readable, Writable, Transform, open constructor, buffering, backpressure</li>
<li>β Infrastructure and tools: typings, testing, linters, CI/CD, built-in testing framework</li>
<li>β Working with errors and exceptions, Graceful shutdown in Node.js, unhandled exceptions, async stack trace</li>
<li>π» Async stack trace</li>
<li>π» Graceful shutdown</li>
<li>π» Correct error handling</li>
<li>β Working with files and file streams, monitoring the file system</li>
<li>β¨ Buffers and file streams</li>
<li>β GRASP and SOLID principles in JavaScript with adaptation for Node.js</li>
<li>π» Inversoion of Control and Dedendency Injection</li>
<li>β Security issues: DoS, XSS, Path traversal, CSRF, SQL injection</li>
<li>β¨ Node.js application security</li>
<li>β C/C++ Addons, Node-API (n-api)</li>
<li>β WebAssembly: Rust, WAT, C++, AssemblyScript</li>
<li>β Tracking asynchronous contexts: AsyncLocalStorage, AsyncResource</li>
<li>β API design and contract verification in runtime</li>
<li>β¨ Contract programming</li>
<li>β Subsystems as separate microservices</li>
<li>β Performance hooks, resource telemetry and optimization</li>
<li>β¨ I/O bound, CPU bound, memory bound, profiling</li>
<li>β Serverless and cloud FaaS solutions based on Node.js</li>
<li>β Near real-time applications, Websocket, interactivity and collaborative applications</li>
<li>π’ Interactivity and collaborative applications</li>
<li>β Distributed systems, high-load systems, load balancing, clustering and scaling, IP sticky</li>
<li>β¨ HTTP server on Node.js (routing, cluster, IP sticky)</li>
<li>β HTTP Proxy implementation</li>
<li>β Build Node.js applications into single executable</li>
<li>β Automatic restart of processes with --watch</li>
<li>β Review of Web API ported to Node.js: Web Crypro, Web Streams, Intl</li>
<li>β Built-in Permissions system to restrict access to the file system, network, and other APIs</li>
<li>π― Asynchrony contracts based on callback</li>
<li>π― Minimum required understanding of runtime: event loop, I/O, timers</li>
<li>π― Event-based contracts: EventTarget, EventEmitter</li>
<li>π― Stream abstraction: Readable, Writable, Transform</li>
<li>β¨ Pattern open constructor (Revealing Constructor), buffering, backpressure</li>
<li>β Thenabe Contract</li>
<li>π― Promise Contract</li>
<li>β Promise: then/catch/finally and class methods all, allSettled, race, any</li>
<li>π― Contract of asynchronous functions async/await</li>
<li>β Asynchronous functions</li>
<li>π― Signals: signal, computed, effect</li>
<li>π― Handling errors, identifying them and solving problems with stack traces</li>
<li>π§βπ Asynchronous queue AsyncQueue</li>
<li>π§βπ Asynchronous pool AsyncPool</li>
<li>π§βπ Asynchronous Collection Collector</li>
<li>𧩠Asynchronous collections (collecting values until ready)</li>
<li>π§βπ Chain of responsibility pattern</li>
<li>π§βπ Contract converters asyncify, callbackify, code joining in different styles</li>
<li>β Asynchronous adapters (in preparation)</li>
<li>π§βπ Preventing data and control race conditions in asynchronous code</li>
<li>π§βπ Canceling asynchronous operations: AbortController, AbortSignal</li>
<li>π§βπ Async Generator and Async Iterator</li>
<li>βοΈ Abstractions ported from parallel programming: Semaphore, Mutex, Locks</li>
<li>𧩠System abstractions: threads, processes</li>
<li>𧩠Inter-process and inter-thread communication, MessageChannel, BroadcastChannel</li>
<li>𧩠Coroutines coroutines</li>
<li>π§βπ Asynchronous generators and asynchronous iterators</li>
<li>π§βπ Composition of functions on callbacks compose callbacks</li>
<li>π§βπ Composition of asynchronous functions async compose</li>
<li>π§βπ Asynchrony with RxJS event streams</li>
<li>π§βπ Actor model</li>
<li>π§βπ Functional asynchronous programming, Future contract</li>
<li>β οΈ Asynchrony on synchronous generators function*/yield</li>
<li>βοΈ Tracking asynchronous contexts</li>
<li>β AsyncLocalStorage, AsyncResource</li>
<li>𧩠Multithreading in Node.js</li>
<li>𧩠Web Locks API in Node.js and browser</li>
</ul>
</section>
<section>
<h2>About the Author</h2>
<p>Timur Shemsedinov - 28 years in IT, expert in node.js & javascript, private clouds, software engineering, cybernetics, distributed systems, architecture, databases</p>
</section>
<section>
<h2>Links</h2>
<ul>
<li><a href="https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md">π Async 2024</a></li>
<li><a href="https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md">π NodeJS 2024</a></li>
</ul>
</section>
<footer>
<p>For more information, please visit our <a href="https://github.com/metatech-university" style="color: #8ab4f8;">GitHub page</a> or contact us directly.</p>
</footer>
</body>
</html>