{"id":55630,"date":"2020-01-24T00:00:00","date_gmt":"2020-01-23T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/sovremennyj-kurs-po-node-js-v-2020"},"modified":"2020-02-18T14:03:46","modified_gmt":"2020-02-18T11:03:46","slug":"sovremennyj-kurs-po-node-js-v-2020","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/sovremennyj-kurs-po-node-js-v-2020","title":{"rendered":"Modern course on Node.js in 2020.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Modern course on Node.js in 2020.\" src=\"\/wp-content\/uploads\/2020\/01\/77b9f16832b724faf6df54b19062808a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dear engineer colleagues, the Metarkhya community presents to your attention a modern <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ\">\u043a\u0443\u0440\u0441 \u043f\u043e Node.js<\/a><\/noindex>, which includes an in-depth analysis of all the capabilities and aspects of the platform. The primary focus is on how to create reliable, high-load application servers and APIs without tying to a specific framework or even protocol, i.e., abstracting business logic into a separate layer. Attached to the lectures are numerous code examples demonstrating the flexible structure of applications and architectural techniques, including working with databases through a data access layer, creating interactive applications using websockets, ensuring security, graceful shutdown, inter-process communication, preventing memory leaks, scaling, and clustering through processes and threads. Currently, there are 38 lectures in the course (about 35.5 hours of video), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Index\/blob\/master\/Courses\/NodeJS.md\">37 repositories with code examples<\/a><\/noindex>, and 4 PDFs with slides. Before the main part of the Node.js course, you should first master at least partially <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452974\/\">the course on asynchronous programming<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie-i-osnovy\">Introduction and Fundamentals<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/WBcHgaoHh1k\">Node.js Introduction to the technology<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/CUU49jjHloM\">Node.js in 2019<\/a><\/noindex>\n<ul>\n<li>Slides: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/tshemsedinov\/nodejs-in-2019\">https:\/\/www.slideshare.net\/tshemsedinov\/nodejs-in-2019<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/hY6Z6qNYzmc\">\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>This is just an overview lecture, the link to the asynchronous programming course<br \/>\nis located above, before the table of contents<\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/sOkjR-N6IAs\">Overview of the built-in Node.js API<\/a><\/noindex>\n<ul>\n<li>Link to the documentation: <noindex><a rel=\"nofollow\" href=\"https:\/\/nodejs.org\/api\/documentation.html\">https:\/\/nodejs.org\/api\/documentation.html<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/hSyA7tcNaCE\">Setting up the environment: Node.js, npm, git, eslint<\/a><\/noindex>\n<ul>\n<li>Repository with instruments: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Tools\">https:\/\/github.com\/HowProgrammingWorks\/Tools<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/eQGBS15vUac\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Working with files: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Files\">https:\/\/github.com\/HowProgrammingWorks\/Files<\/a><\/noindex><\/li>\n<li>File streams: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Streams\">https:\/\/github.com\/HowProgrammingWorks\/Streams<\/a><\/noindex><\/li>\n<li>Buffers: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Buffers\">https:\/\/github.com\/HowProgrammingWorks\/Buffers<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/29QINR9rruQ\">\u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>File system in Node.js: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Files\">https:\/\/github.com\/HowProgrammingWorks\/Files<\/a><\/noindex><\/li>\n<li>Watching files: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/FilesystemWatch\">https:\/\/github.com\/HowProgrammingWorks\/FilesystemWatch<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/5aSZyKi5BmE\">\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 JavaScript \u0438 Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/CommandLine\">https:\/\/github.com\/HowProgrammingWorks\/CommandLine<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"struktura-i-arhitektura-prilozheniy-na-nodejs\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Node.js<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d_vyO2CkiOc\">Architectural approach to programming<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/O7A9chb573E\">\u041c\u043e\u0434\u0443\u043b\u0438, \u0441\u043b\u043e\u0438, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0432 JavaScript \u0438 Node.js<\/a><\/noindex>\n<ul>\n<li>Project example: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Project\">https:\/\/github.com\/HowProgrammingWorks\/Project<\/a><\/noindex><\/li>\n<li>Abstract layers: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/AbstractionLayers\">https:\/\/github.com\/HowProgrammingWorks\/AbstractionLayers<\/a><\/noindex><\/li>\n<li>Sandboxes: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Sandboxes\">https:\/\/github.com\/HowProgrammingWorks\/Sandboxes<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Fz86Fdjz-LM\">\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Inversion of control: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/InversionOfControl\">https:\/\/github.com\/HowProgrammingWorks\/InversionOfControl<\/a><\/noindex><\/li>\n<li>Dependency injection: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/DependencyInjection\">https:\/\/github.com\/HowProgrammingWorks\/DependencyInjection<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2OXWZFMvfbc\">\u041c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/InterProcessCommunication\">https:\/\/github.com\/HowProgrammingWorks\/InterProcessCommunication<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/A3RpwNlVeyY\">Layers, coupling, and code cohesion<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Abstractions\">https:\/\/github.com\/HowProgrammingWorks\/Abstractions<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"razrabotka-serverov-prilozheniy-i-api-na-nodejs\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 API \u043d\u0430 Node.js<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/bHn-wTlTTR0\">Client-server on Node.js TCP and UDP, DNS<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Socket\">https:\/\/github.com\/HowProgrammingWorks\/Socket<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/7Ufxj0oTaUo\">HTTP server on Node.js (routing, cluster, IP sticky)<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/NodeServer\">https:\/\/github.com\/HowProgrammingWorks\/NodeServer<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/T_wKXuWW4Wo\">HTTP \u0441\u0435\u0441\u0441\u0438\u0438 \u0438 cookies \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Session\">https:\/\/github.com\/HowProgrammingWorks\/Session<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/wMMki2FEYGY\">HTTP requests in the browser and Node.js: XMLHttpRequest, fetch<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/HttpRequest\">https:\/\/github.com\/HowProgrammingWorks\/HttpRequest<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/-az912XBCu8\">Developing API on Node.js (client and server)<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/API\">https:\/\/github.com\/HowProgrammingWorks\/API<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Sf7ln3n16ws\">WebSocket server on Node.js (spreadsheets and chat)<\/a><\/noindex>\n<ul>\n<li>WebSockets: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/WebsocketChat\">https:\/\/github.com\/HowProgrammingWorks\/WebsocketChat<\/a><\/noindex><\/li>\n<li>Chat: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/LiveTable\">https:\/\/github.com\/HowProgrammingWorks\/LiveTable<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/lipkLQVqDd8\">Scaffolding for API, UI, and data<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Scaffolding\">https:\/\/github.com\/HowProgrammingWorks\/Scaffolding<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/7tfZDABPvVs\">\u0412\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Node.js<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/n_AdKIzbpBc\">\u041e\u0442\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u0442\u0438\u043a\u0438 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples and tasks: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/ServeStatic\">https:\/\/github.com\/HowProgrammingWorks\/ServeStatic<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"rabota-s-bazami-dannyh-na-nodejs\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Node.js<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/CRcSWtWVvrA\">Data access layer, cursor, transaction<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Transaction\">https:\/\/github.com\/HowProgrammingWorks\/Transaction<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2tDvHQCBt3w\">Working with databases in Node.js using PostgreSQL as an example<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Databases\">https:\/\/github.com\/HowProgrammingWorks\/Databases<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"lekcii-po-cqrs-i-event-sourcing\">Lectures on CQRS and Event Sourcing<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/vER0vYL4hM4\">Command pattern (Command) action and parameters as an object<\/a><\/noindex>\n<ul>\n<li>This pattern will be needed for the next lecture<\/li>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Command\">https:\/\/github.com\/HowProgrammingWorks\/Command<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/T2tRc80Q8Qw\">CQS, CQRS, Event Sourcing \u2014 Separation of queries and data modifications<\/a><\/noindex>\n<ul>\n<li>CQS: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/CQS\">https:\/\/github.com\/HowProgrammingWorks\/CQS<\/a><\/noindex><\/li>\n<li>CQRS: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/CQRS\">https:\/\/github.com\/HowProgrammingWorks\/CQRS<\/a><\/noindex><\/li>\n<li>Event Sourcing: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/EventSourcing\">https:\/\/github.com\/HowProgrammingWorks\/EventSourcing<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/kFNtKiK2SPs\">Application of Event Sourcing<\/a><\/noindex>\n<ul>\n<li>See examples from the previous lecture<\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/xp5MVKEqxY4\">Actor Model<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/ActorModel\">https:\/\/github.com\/HowProgrammingWorks\/ActorModel<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"upravlenie-pamyatyu-i-parallelnoe-programmirovanie\">Memory Management and Parallel Programming<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/0oZa64SB2wM\">Memory Leaks in Node.js and JavaScript, Garbage Collection, and Profiling<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/MemoryLeaks\">https:\/\/github.com\/HowProgrammingWorks\/MemoryLeaks<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/zLm8pnbxSII\">Atomics, SharedArrayBuffer, worker_threads \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Threads: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Threads\/\">https:\/\/github.com\/HowProgrammingWorks\/Threads\/<\/a><\/noindex><\/li>\n<li>Atomic Operations: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Atomics\/\">https:\/\/github.com\/HowProgrammingWorks\/Atomics\/<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/JNLrITevhRI\">\u0421\u0435\u043c\u0430\u0444\u043e\u0440\u044b \u0438 \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u044b \u0432 JavaScript \u0438 Node.js<\/a><\/noindex>\n<ul>\n<li>Semaphores: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Semaphore\">https:\/\/github.com\/HowProgrammingWorks\/Semaphore<\/a><\/noindex><\/li>\n<li>Mutexes: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Mutex\">https:\/\/github.com\/HowProgrammingWorks\/Mutex<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/KNsm_iIQt7U\">\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c Node.js<\/a><\/noindex> \u2014 presentation at the JS Fest 2019 Spring conference\n<ul>\n<li>Slides: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/JSFestUA\/js-fest-2019-nodejs\">https:\/\/www.slideshare.net\/JSFestUA\/js-fest-2019-nodejs<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"bezopasnost-nadezhnost-razvertyvanie-i-infrastruktura\">Security, Reliability, Deployment, and Infrastructure<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/1Ml5NE2fsZ8\">Unhandled Errors in Promises<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/PromiseError\">https:\/\/github.com\/HowProgrammingWorks\/PromiseError<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/pfiHTx3j87Y\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0442\u0440\u0435\u0439\u0441\u0430 \u0432 JavaScript \u0438 Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/StackTrace\">https:\/\/github.com\/HowProgrammingWorks\/StackTrace<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/4DkZj2Cdokc\">Logging in Node.js and JavaScript<\/a><\/noindex>\n<ul>\n<li>Code examples: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/Logging\">https:\/\/github.com\/HowProgrammingWorks\/Logging<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/ZstnowFeCe0\">Graceful Shutdown \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Code examples and tasks: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/HowProgrammingWorks\/GracefulShutdown\">https:\/\/github.com\/HowProgrammingWorks\/GracefulShutdown<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Pdfo1G-gI6s\">\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Node.js<\/a><\/noindex>\n<ul>\n<li>Slides: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/tshemsedinov\/nodejs-security-199004963\">https:\/\/www.slideshare.net\/tshemsedinov\/nodejs-security-199004963<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/x-Rd6fPV6L8\">Serverless Clouds (FaaS) \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Node.js<\/a><\/noindex>\n<ul>\n<li>Slides: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/tshemsedinov\/serverless-clouds-faas-and-request-context-isolation-in-nodejs\">https:\/\/www.slideshare.net\/tshemsedinov\/serverless-clouds-faas-and-request-context-isolation-in-nodejs<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>We invite you to leave your feedback about the course and suggestions for expanding the course materials. Thank you for your interest in our work and the community's help in improving the code examples. You can subscribe to the YouTube channel with open lectures here: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/TimurShemsedinov\">https:\/\/www.youtube.com\/TimurShemsedinov<\/a><\/noindex> and on the author's GitHub here: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tshemsedinov\">https:\/\/github.com\/tshemsedinov<\/a><\/noindex><\/p>\n<p class=\"for_users_only_msg\">Only registered users can participate in the survey. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Please log in<\/a><\/noindex>, please.<\/p>\n<h2 class=\"default-block__polling-title\">Will you watch the course?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">70,4%<\/strong>Yes, I'm interested in everything155<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">26,4%<\/strong>I will watch selectively58<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">3,2%<\/strong>Not interested7<\/p>\n<\/li>\n<\/ul>\n<p>    220 users voted. 10 users abstained.<\/p>\n<h2 class=\"default-block__polling-title\">Do you want more lectures?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">95,0%<\/strong>Yes, of course191<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">3,0%<\/strong>Yes, and I will suggest topics6<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">2,0%<\/strong>That's enough for me4<\/p>\n<\/li>\n<\/ul>\n<p>    201 users voted. 13 users abstained.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/485294\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0440\u043e\u0433\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u041c\u0435\u0442\u0430\u0440\u0445\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e Node.js, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0443\u043f\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 API \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u0442.\u0435. \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439. \u041a \u043b\u0435\u043a\u0446\u0438\u044f\u043c \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55631,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0440\u043e\u0433\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u041c\u0435\u0442\u0430\u0440\u0445\u0438\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/sovremennyj-kurs-po-node-js-v-2020\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e Node.js \u0432 2020 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0440\u043e\u0433\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u041c\u0435\u0442\u0430\u0440\u0445\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/sovremennyj-kurs-po-node-js-v-2020\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-23T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Modern Course on Node.js in 2020 | ProHoster","description":"Dear fellow engineers, the Metarhy community.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/sovremennyj-kurs-po-node-js-v-2020","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e Node.js \u0432 2020 | ProHoster","og:description":"\u0414\u043e\u0440\u043e\u0433\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u041c\u0435\u0442\u0430\u0440\u0445\u0438\u044f.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/sovremennyj-kurs-po-node-js-v-2020","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-23T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55630","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:40:27","updated":"2022-10-06 09:56:03","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=55630"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55630\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/55631"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=55630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=55630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=55630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}