Skip to content

Commit

Permalink
Add en translations for index, fixes HowProgrammingWorks#23
Browse files Browse the repository at this point in the history
  • Loading branch information
lizzochek committed Oct 20, 2023
1 parent 499d0db commit 1df9f7f
Show file tree
Hide file tree
Showing 19 changed files with 997 additions and 0 deletions.
32 changes: 32 additions & 0 deletions en/Courses/Advanced.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Second part of the course

Modules SEF2 and SEF3

## Asynchronous programming

### Revision

- [Higher order functions, callbacks, JavaScript events](https://youtu.be/1vqATwbGHnc)
- Higher order functions: https://github.com/HowProgrammingWorks/HigherOrderFunction
- Callback functions: https://github.com/HowProgrammingWorks/Callbacks
- [Asynchronous programming with callbacks](https://youtu.be/z8Hg6zgi3yQ)
- Code examples: https://github.com/HowProgrammingWorks/AsynchronousProgramming
- do library: https://github.com/metarhia/do
- [Timers, timeouts and EventEmitter](https://youtu.be/LK2jveAnRNg)
- Timers: https://github.com/HowProgrammingWorks/Timers
- EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter
- Events: https://github.com/metarhia/common/blob/master/lib/events.js

### An overview of asynchronous programming

- [Asynchronous programming (an overview)](https://youtu.be/hY6Z6qNYzmc)

### Lectures

- [Asynchrony with the async.js library](https://youtu.be/XQ94wQc-erU)
- Code examples: https://github.com/HowProgrammingWorks/AsynchronousProgramming
- async.js library: https://caolan.github.io/async/
- [Asynchrony with Promises](https://youtu.be/RMl4r6s1Y8M)
- Code examples: https://github.com/HowProgrammingWorks/Promise

## Node.js technology stack
18 changes: 18 additions & 0 deletions en/Courses/AlgAndData.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Algorithms and data structures

- Built-in collections: arrays and objects
- [Collections, sets, hash tables in JavaScript](https://youtu.be/hN0wsq5LNOc)
- Collections: https://github.com/HowProgrammingWorks/Collections
- Hash tables: https://github.com/HowProgrammingWorks/Map
- Sets: https://github.com/HowProgrammingWorks/Set
- [Data structures: lists, stack, queue, deck in JavaScript](https://youtu.be/9KvA4hDDSjk)
- Lists: https://github.com/HowProgrammingWorks/LinkedList
- Queues: https://github.com/HowProgrammingWorks/Dequeue
- Trees: binary trees and hierarchical multi-linked structures
- [Graphs and requests to graph structures in JavaScript](https://youtu.be/a0W0T8Yqw3s)
- Code examples: https://github.com/HowProgrammingWorks/Graph
- Buffering: buffers, lists of buffers, cyclic buffers
- Immutable - immutable data structures (in preparation)
- Lock-free data structures (in preparation)
- CRDT - Conflict-free data types (in preparation)
- Dynamic programming (in preparation)
53 changes: 53 additions & 0 deletions en/Courses/Architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Architecture of information systems

## Course structure

- Overview of tasks, component, modular and multi-layered approaches to design
- IS classification: ERP, SCM, CRM, MRP, BI, B2B and B2C
- Layered architecture and multi-link architecture for monolithic ICs
- Types of interaction: common data, procedure call, event transfer
- Two- and three-link applications, multi-link, pipeline topology
- Service approach: web services and microservices, serverless
- Data warehouses and DBMS: relational, noSQL, columnar, key-value
- CQS, CQRS and Event-Sourcing
- Topologies of distributed ICs: star, bus, ring, conveyor, fully connected
- Design of API interfaces
- Corporate integration buses (exchange with external subsystems)
- Event broadcast buses and event queues (MQ systems)
- Schedulers of deferred tasks and resources, execution queues
- Testing, quality assessments, continuous integration
- Infrastructure, deployment, updating, migrations, reengineering
- Balancing, replication, sharding, resharding, backups and restoration
- Security, authorization, authentication, application firewall
- Application and system logging, incident investigation
- Analysis and reengineering of business processes

## Video lectures

- [Architectural approach to programming](https://youtu.be/d_vyO2CkiOc)
- [Layers, connectivity and code connectivity](https://youtu.be/A3RpwNlVeyY)
- Code examples: https://github.com/HowProgrammingWorks/Abstractions
- [Modules, layers, project structure, sandboxes in JavaScript and Node.js](https://youtu.be/O7A9chb573E)
- Project example: https://github.com/HowProgrammingWorks/Project
- Abstract layers: https://github.com/HowProgrammingWorks/AbstractionLayers
- Sandboxes: https://github.com/HowProgrammingWorks/Sandboxes
- [Inversion of control and dependency injection in Node.js](https://youtu.be/Fz86Fdjz-LM)
- Inversion of control: https://github.com/HowProgrammingWorks/InversionOfControl
- Dependency Injection: https://github.com/HowProgrammingWorks/DependencyInjection
- [Interprocess interaction in Node.js](https://youtu.be/2OXWZFMvfbc)
- Code examples: https://github.com/HowProgrammingWorks/InterProcessCommunication
- [High-load distributed applications in Node.js](https://youtu.be/7tfZDABPvVs)
- [Data access layer, cursor, transaction](https://youtu.be/CRcSWtWVvrA)
- Code examples: https://github.com/HowProgrammingWorks/Transaction
- [API development in Node.js (client and server)](https://youtu.be/-az912XBCu8)
- Code examples: https://github.com/HowProgrammingWorks/API
- [CQS, CQRS, Event Sourcing - Separation of requests and data modifications](https://youtu.be/T2tRc80Q8Qw)
- CQS: https://github.com/HowProgrammingWorks/CQS
- CQRS: https://github.com/HowProgrammingWorks/CQRS
- EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing
- [Application of EventSourcing](https://youtu.be/kFNtKiK2SPs)
- https://github.com/HowProgrammingWorks/EventSourcing
- https://github.com/HowProgrammingWorks/CQRS
- https://github.com/HowProgrammingWorks/Command
- [Serverless Clouds (FaaS) and isolation of request contexts in Node.js](https://youtu.be/x-Rd6fPV6L8)
- Slides: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs
44 changes: 44 additions & 0 deletions en/Courses/Async-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Asynchronous programming 2024

The methods of writing asynchronous code that we used 10-15 years ago are irretrievably a thing of the past and can be interesting only to support the legacy exercise in a deep understanding of asynchronous programming. Even the methods of 5-7 years ago already have little in common with modern practices, but the Internet is full of outdated information, even [Metarhia community open course](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md ) has become too bulky and redundant at the moment. It should also be mentioned that asynchronous programming should look fundamentally different in system and application code. It will not be possible to completely hide the complexity of asynchronous code behind abstractions from the product developer, because it will in any case work with timers, events, streams, fetch and other asynchronous APIs, but it can be written dozens of times easier than asynchronous code in a system layer. As for the system layer, it is necessary to introduce the theory of queues (systems of mass service), the model of actors, some abstractions from parallel programming (semaphores, rendezvous, atomic operations). Of course, it is difficult to contain all this in one course, therefore, we will give priority to the application code and first fully prepare the course for the use of asynchronous programming in product development, and then we will add optional topics of the old course and many other useful abstractions widely used in other programming languages, but little known in the world of JavaScript.

## Content

Important aspects of the new course:

- Concentration on practical application (code examples from real projects)
- Relevance and compliance with standards of 2023-2024
- Tasks and analysis of the solutions, seminars, code review (the course is not just video)
- Recommendations for choosing the style and abstractions of asynchrony for the task
- Attention to correct error handling in all styles of asynchrony
- Emphasis on reliability, maintainability, testability, reduction of coupling
- Examples and tasks for correcting hidden problem states and data races

Topics of the new course:

- Asynchrony contracts based on callback: callback-last, error-first
- Minimum required understanding of runtime: event loop, I/O, timers
- Asynchrony contracts based on events: EventEmitter, Streams
- Promise/then/catch/finally contract and async/await syntax
- Parallel and serial execution, all/any/race/allSettled
- Contract converters, code docking in different styles
- Prevention of race conditions of data and control in asynchronous code
- Cancellation of asynchronous operations: AbortController, AbortSignal
- Error processing, their detection and possible problems with the stacktrace
- Asynchronous collection (we collect values until ready)

## Pay attention

What you need to know and be able to do to start:

- [JavaScript syntax, but possible without any tricks](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md)
- Confidently know git, have a github account
- Preferably docker, have a working machine on linux or mac
- Any development environment, IDE or editor

What this course is not: it is not reading documentation, not a course on libraries and frameworks, not a repetition of an old course, not live coding and not a master class, not a stream. The new course is the most concentrated information and practical tasks for both applied and system programming with a comparison of these approaches.

## How to get to the course

- News will be in the channel: https://t.me/asyncify
- Course group: https://t.me/asynctalks
70 changes: 70 additions & 0 deletions en/Courses/Async.uk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Asynchronous programming

- Author: https://github.com/tshemsedinov
- Legend:
- ✨ - Mandatory lectures
- πŸ§‘β€πŸ’» - Code examples
- 🧩 - Optional lectures
- πŸ•‘ - Outdated lectures (not current or historical)

## Course program

- ⭐ [Introduction and organizational issues](https://youtu.be/vfEyRijm83g)
- ⭐ [Q&A workshop for all courses](https://youtu.be/Wm7wclbv1Ik)
- ✨ [Asynchronous Programming (Overview)](https://youtu.be/hY6Z6qNYzmc)
- ✨ [Timers, Timeouts and EventEmitter](https://youtu.be/LK2jveAnRNg)
- πŸ§‘β€πŸ’» Timers: https://github.com/HowProgrammingWorks/Timers
- πŸ§‘β€πŸ’» EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter
- πŸ§‘β€πŸ’» Events: https://github.com/metarhia/common/blob/master/lib/events.js
- ✨ [Asynchronous programming with callbacks](https://youtu.be/z8Hg6zgi3yQ)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/AsynchronousProgramming
- πŸ§‘β€πŸ’» do library: https://github.com/metarhia/do
- πŸ•‘ [Non-blocking asynchronous iteration](https://youtu.be/wYA2cIRYLoA)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/NonBlocking
- πŸ•‘ [Asynchrony with async.js library](https://youtu.be/XQ94wQc-erU)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/AsynchronousProgramming
- πŸ§‘β€πŸ’» async.js library: https://caolan.github.io/async/
- ✨ [Asynchrony on promises](https://youtu.be/RMl4r6s1Y8M)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Promise
- ✨ [Asynchronous functions, async/await, thenable, error handling](https://youtu.be/Jdf_tZuJbHI)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/AsyncAwait
- 🧩 [Asynchronous adapters: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/AsyncAdapter
- ✨ [Asynchronous Data Collectors](https://youtu.be/tgodt1JL6II)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Collector
- πŸ§‘β€πŸ’» metasync library: https://github.com/metarhia/metasync
- 🧩 [Raw errors in promises](https://youtu.be/1Ml5NE2fsZ8)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/PromiseError
- πŸ•‘ [Asynchronous stacktrace problem](https://youtu.be/pfiHTx3j87Y)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/StackTrace
- ✨ [Generators and asynchronous generators](https://youtu.be/kvNm9D32s8s)
- πŸ§‘β€πŸ’» Generators: https://github.com/HowProgrammingWorks/Generator
- πŸ§‘β€πŸ’» Asynchronous generators: https://github.com/HowProgrammingWorks/AsyncGenerator
- ✨ [Iterators and Asynchronous Iterators](https://youtu.be/rBGFlWpVpGs)
- πŸ§‘β€πŸ’» Iterators: https://github.com/HowProgrammingWorks/Iterator
- πŸ§‘β€πŸ’» Asynchronous iterators: https://github.com/HowProgrammingWorks/AsyncIterator
- πŸ•‘ [Cancellation of asynchronous operations](https://youtu.be/T8fXlnqI4Ws)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Cancelable
- ⭐ There will be a new lecture: AbortController and AbortSygnal - Cancelling asynchronous operations
- 🧩 [Asynchronous function composition](https://youtu.be/3ZCrMlMpOrM)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/AsyncCompose
- 🧩 [Thenable and light await](https://youtu.be/DXp__1VNIvI)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Thenable
- 🧩 [Competitive asynchronous queue](https://youtu.be/Lg46AH8wFvg)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/ConcurrentQueue
- 🧩 [Revealing Constructor Pattern](https://youtu.be/leR5sXRkuJI)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/RevealingConstructor
- 🧩 [Future: Asynchrony with stateless futures](https://youtu.be/22ONv3AGXdk)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Future
- πŸ•‘ [Deferred: Asynchrony with defers with state](https://youtu.be/a2fVA1o-ovM)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Deferred
- 🧩 [Actor Model](https://youtu.be/xp5MVKEqxY4)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/ActorModel
- 🧩 [Pattern Observer (Observer + Observable)](https://youtu.be/_bFXuLcXoXg)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Observer
- ✨ [Asynchrony with RxJS and event streams](https://youtu.be/0kcpMAl-wfE)
- πŸ§‘β€πŸ’» Code examples: https://github.com/HowProgrammingWorks/Rx
- ⭐ There will be a new lecture: Async hooks
- 🧩 [Memory accessible from multiple threads in Node.js](https://youtu.be/KNsm_iIQt7U)
- 🧩 [Asynchronous pool for worker thread pool in Node.js](https://youtu.be/Jj5KZRq4wYI)
- ✨ Asynchronous programming from the lecture [introduction to Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM)
Loading

0 comments on commit 1df9f7f

Please sign in to comment.