diff --git a/Skills/Architecture.md b/Skills/Architecture.md index 62dac42c..66f331a6 100644 --- a/Skills/Architecture.md +++ b/Skills/Architecture.md @@ -1,100 +1,100 @@ ## Architecture - Application structure - - Modularity - - Components - - Directories - - GRASP - - SOLID - - GoF patterns - - CQS - - Leaking abstractions - - Multiparadigm code - - Contract programming - - Platform-agnostic - - Transport-agnostic - - Framework-agnostic - - Code coverage - - Cohesion - - Coupling - - Cyclomatic complexity - - Reliability - - Quality - - Availability - - Flexibility - - Law of Demeter (LoD) + - Modularity ~ + - Components + + - Directories * + - GRASP + + - SOLID ! + - GoF patterns & + - CQS ^ + - Leaking abstractions ~ + - Multiparadigm code + + - Contract programming + + - Platform-agnostic ! + - Transport-agnostic ~ + - Framework-agnostic + + - Code coverage * + - Cohesion + + - Coupling ! + - Cyclomatic complexity & + - Reliability + + - Quality ! + - Availability + + - Flexibility + + - Law of Demeter (LoD) & - Application architecture - - Isolation between layer - - Domain-specific language (DSL) - - System vs applied code - - Multilayer approach - - Hexagonal architecture - - Separation of concerns (SoC) - - Metaprogramming - - Inversion of control (IoC) - - Dependency injection (DI) - - Clean architecture - - Domain-driven design (DDD) - - Pub/sub - - Message brocker - - Agent - - Service locator - - Message Queue (MQ) - - CQRS - - Event sourcing - - E-R data modeling - - Entity-relationship diagram - - IDEF1X - - UML - - Work breakdown structure - - Budget estimation - - Distributed systems - - High-intensive computing - - Load balancing - - Gateways - - On-premises - - IaaS - - PaaS - - SaaS - - FaaS clouds - - Serverless - - Vendor lock-in - - Bus factor + - Isolation between layer ~ + - Domain-specific language (DSL) ~ + - System vs applied code + + - Multilayer approach * + - Hexagonal architecture ! + - Separation of concerns (SoC) ^ + - Metaprogramming + + - Inversion of control (IoC) ! + - Dependency injection (DI) * + - Clean architecture + + - Domain-driven design (DDD) + + - Pub/sub ! + - Message brocker * + - Agent ~ + - Service locator + + - Message Queue (MQ) * + - CQRS ^ + - Event sourcing + + - E-R data modeling ! + - Entity-relationship diagram * + - IDEF1X + + - UML * + - Work breakdown structure ! + - Budget estimation ~ + - Distributed systems + + - High-intensive computing & + - Load balancing ^ + - Gateways ~ + - On-premises ~ + - IaaS + + - PaaS + + - SaaS + + - FaaS clouds ~ + - Serverless + + - Vendor lock-in ~ + - Bus factor ~ - Solution architecture - - A software requirements specification (SRS) - - Solution visions - - Solution capabilities - - System design - - Process modelling - - Data modelling - - Solution components - - Risk assessment - - Non Functional Requirements (NFR) - - Clouds - - BPMN - - Low-code - - No-code - - Metric - - Metric abuse - - ACID - - CAP theorem - - Single source of truth (SSOT) + - A software requirements specification (SRS) + + - Solution visions + + - Solution capabilities ~ + - System design * + - Process modelling ! + - Data modelling * + - Solution components * + - Risk assessment ~ + - Non Functional Requirements (NFR) + + - Clouds * + - BPMN * + - Low-code + + - No-code + + - Metric * + - Metric abuse ~ + - ACID + + - CAP theorem ! + - Single source of truth (SSOT) + - Enterprise architecture - - Understanding business needs - - Enterprise strategy - - Integration with subsystems - - Enterprise vision - - Enterprise capabilities - - Project scope - - Enterprise service bus - - Service-oriented architecture - - Microservices - - Process choreography - - Service orchestration - - Data warehouse - - Business Intelligence - - OLAP - - OLTP - - Conways Law - - Quality assurance - - Engineering Hygiene + - Understanding business needs ! + - Enterprise strategy ~ + - Integration with subsystems + + - Enterprise vision ~ + - Enterprise capabilities + + - Project scope ! + - Enterprise service bus + + - Service-oriented architecture * + - Microservices * + - Process choreography ~ + - Service orchestration + + - Data warehouse & + - Business Intelligence + + - OLAP + + - OLTP * + - Conways Law ~ + - Quality assurance ! + - Engineering Hygiene + diff --git a/Skills/Async.md b/Skills/Async.md index 63e26c83..5d68d290 100644 --- a/Skills/Async.md +++ b/Skills/Async.md @@ -1,89 +1,89 @@ ## Asynchronous programming - Theory - - Event loop - - `try..catch` - - Non-blocking - - Async I/O - - Thread pool - - Pattern Reactor - - CAS operations - - epoll - - kqueue - - Completion ports - - Event ports - - libuv - - Race conditions - - Dead locks - - Live locks - - Concurrent programming - - Parallel programming - - Actor Model - - Thread - - Process + - Event loop ! + - `try..catch` * + - Non-blocking + + - Async I/O * + - Thread pool ! + - Pattern Reactor ~ + - CAS operations ~ + - epoll ~ + - kqueue ~ + - Completion ports ~ + - Event ports ~ + - libuv + + - Race conditions & + - Dead locks + + - Live locks + + - Concurrent programming & + - Parallel programming * + - Actor Model + + - Thread * + - Process * - Async contracts - - Callbacks - - Callback-last-error-first - - Thenable - - Promise - - Async/await - - Future - - Deferred - - Sync generator - - Async Generator - - Async Iterator - - Event - - Coroutine - - Goroutine - - Signal - - Stream - - Chain of responsibility - - Middleware - - Locks + - Callbacks ! + - Callback-last-error-first ~ + - Thenable ! + - Promise * + - Async/await ! + - Future ~ + - Deferred + + - Sync generator + + - Async Generator * + - Async Iterator * + - Event * + - Coroutine ~ + - Goroutine ~ + - Signal ~ + - Stream * + - Chain of responsibility + + - Middleware ! + - Locks + - Async adapters and utils - - callbackify - - promisify - - asyncify - - Callbacks compose - - Async compose + - callbackify ~ + - promisifyn * + - asyncify ~ + - Callbacks compose ~ + - Async compose ~ - Async abstractions interfaces - - EventEmitter - - Observable/Observer - - Readable - - Writable - - Transform - - Async Pool - - Async Queue - - Async Collector - - Semaphore - - Mutex - - Spin Lock + - EventEmitter * + - Observable/Observer + + - Readable * + - Writable * + - Transform * + - Async Pool ~ + - Async Queue + + - Async Collector ~ + - Semaphore + + - Mutex + + - Spin Lock ~ - JavaScript & Node.js specific - - Timers - - `setImmediate` - - `nextTick` - - AbortController - - AbortSignal - - Promise unhandled rejection - - Promise double resolve - - Atomics - - High resolution clock - - Callback hell - - Promise hell - - ref() and unref() - - Error handling in async code - - Better stack traces with return await - - JSON streaming serialization - - AsyncLocalStorage - - AsyncResource + - Timers * + - `setImmediate` * + - `nextTick` * + - AbortController + + - AbortSignal + + - Promise unhandled rejection * + - Promise double resolve ~ + - Atomics ~ + - High resolution clock ~ + - Callback hell ! + - Promise hell + + - ref() and unref() + + - Error handling in async code ! + - Better stack traces with return await + + - JSON streaming serialization ~ + - AsyncLocalStorage + + - AsyncResource ~ - Techniques - - Async.js library - - RxJS library - - Promise.all - - Promise.allSettled - - Promise.race - - Promise.any - - Web Locks API - - IPC - - Channel API - - Revealing constructor + - Async.js library ~ + - RxJS library + + - Promise.all * + - Promise.allSettled * + - Promise.race * + - Promise.any * + - Web Locks API ~ + - IPC + + - Channel API ~ + - Revealing constructor ~ diff --git a/Skills/Databases.md b/Skills/Databases.md index c499feb1..4798af34 100644 --- a/Skills/Databases.md +++ b/Skills/Databases.md @@ -1,94 +1,94 @@ ## Databases - Theory and concepts - - Data types - - Performance tuning - - Migrations - - Schema versioning - - Backup and recovery - - Database scalability - - Relational databases - - Key-value store - - Tuple store - - Graph databases - - Object databases - - Column databases - - Navigational databases - - Hierarchical databases - - In-memory databases - - Inverted index - - Data control language (DCL) - - Data definition language (DDL) - - Data manipulation language (DML) - - Data query language (DQL) + - Data types * + - Performance tuning + + - Migrations ~ + - Schema versioning + + - Backup and recovery * + - Database scalability ~ + - Relational databases ~ + - Key-value store ~ + - Tuple store ~ + - Graph databases ~ + - Object databases ~ + - Column databases ~ + - Navigational databases ~ + - Hierarchical databases ~ + - In-memory databases + + - Inverted index ~ + - Data control language (DCL) ~ + - Data definition language (DDL) * + - Data manipulation language (DML) * + - Data query language (DQL) * - Relational - - Entity-Relationship Diagram - - Normal forms - - Indexing - - Primary keys - - Foreign keys - - Transactions - - Views - - Subqueries - - Stored procedures - - SQL functions - - Materialized views - - Replications - - Virtualization + - Entity-Relationship Diagram * + - Normal forms * + - Indexing + + - Primary keys * + - Foreign keys * + - Transactions * + - Views * + - Subqueries + + - Stored procedures + + - SQL functions * + - Materialized views ~ + - Replications ~ + - Virtualization ~ - SQL - - `SELECT` - - `INSERT` - - `UPDATE` - - `DELETE` - - `LIMIT` - - `OFFSET` - - `ORDER BY` - - `GROUP BY` - - `HAVING` - - `EXISTS` - - `JOIN` - - `INNER JOIN` - - `LEFT JOIN` - - `RIGHT JOIN` - - `UNION` - - `DISTINCT` - - `WHERE` - - `LIKE` - - `IN` - - `BETWEEN` - - `CREATE TABLE` - - `ALTER TABLE` - - `DROP TABLE` - - `PRIMARY KEY` - - `FOREIGN KEY` - - `CHECK` - - `DEFAULT` - - `INDEX` - - `UNIQUE` - - `GRANT` - - `REVOKE` - - `DENY` - - `EXPLAIN` + - `SELECT` * + - `INSERT` * + - `UPDATE` * + - `DELETE` * + - `LIMIT` * + - `OFFSET` * + - `ORDER BY` * + - `GROUP BY` * + - `HAVING` * + - `EXISTS` * + - `JOIN` * + - `INNER JOIN` * + - `LEFT JOIN` * + - `RIGHT JOIN` * + - `UNION` * + - `DISTINCT` * + - `WHERE` * + - `LIKE` * + - `IN` * + - `BETWEEN` * + - `CREATE TABLE` * + - `ALTER TABLE` * + - `DROP TABLE` * + - `PRIMARY KEY` * + - `FOREIGN KEY` * + - `CHECK` * + - `DEFAULT` * + - `INDEX` * + - `UNIQUE` * + - `GRANT` * + - `REVOKE` ~ + - `DENY` ~ + - `EXPLAIN` ~ - Engines - - PostgreSQL - - Oracle - - MySQL - - MariaDB - - MS SQL Server - - Redis - - Rabbit - - MongoDB - - Memcached - - Riak - - DB2 - - SQLite - - DynamoDB - - Firebase + - PostgreSQL * + - Oracle ~ + - MySQL * + - MariaDB * + - MS SQL Server ~ + - Redis * + - Rabbit ~ + - MongoDB * + - Memcached ~ + - Riak ~ + - DB2 ~ + - SQLite * + - DynamoDB * + - Firebase ~ - Data engineering - - Data warehousing - - Business intelligence - - Big data - - Data analysis - - AI tools - - Cloud databases - - Data Visualization + - Data warehousing ~ + - Business intelligence ~ + - Big data ~ + - Data analysis * + - AI tools ~ + - Cloud databases ~ + - Data Visualization * diff --git a/Skills/DotNET.md b/Skills/DotNET.md index cc2b08e2..6d592b4f 100644 --- a/Skills/DotNET.md +++ b/Skills/DotNET.md @@ -1,128 +1,128 @@ ## .NET - Core Concepts and Internals - - Strengths and weaknesses of .NET - - Stateful and stateless services - - Asynchronous and synchronous programming - - Task-based asynchronous pattern - - Garbage collection in .NET - - .NET runtime versions and support - - I/O-bound, CPU-bound tasks - - Real-time applications with SignalR + - Strengths and weaknesses of .NET ~ + - Stateful and stateless services + + - Asynchronous and synchronous programming + + - Task-based asynchronous pattern ~ + - Garbage collection in .NET * + - .NET runtime versions and support + + - I/O-bound, CPU-bound tasks + + - Real-time applications with SignalR ~ - Modularity and Dependencies - - .NET assemblies - - NuGet package management - - Dependency management in .NET - - Dependency Injection in .NET - - Inversion of Control (IoC) - - IoC containers in .NET - - Middleware and pipeline configuration - - Modular applications + - .NET assemblies + + - NuGet package management * + - Dependency management in .NET + + - Dependency Injection in .NET + + - Inversion of Control (IoC) ~ + - IoC containers in .NET ~ + - Middleware and pipeline configuration ~ + - Modular applications ~ - Environment and Tools - - Command line interface (CLI) tools - - .NET CLI - - Windows Services and Linux Daemons - - Hosting and Deployment models - - IIS and Kestrel web server - - Environment variables and configuration - - File system I/O operations - - Multithreading with Task Parallel Library (TPL) - - Performance monitoring and diagnostics + - Command line interface (CLI) tools + + - .NET CLI + + - Windows Services and Linux Daemons ~ + - Hosting and Deployment models + + - IIS and Kestrel web server ~ + - Environment variables and configuration + + - File system I/O operations + + - Multithreading with Task Parallel Library (TPL) + + - Performance monitoring and diagnostics ~ - APIs and Framework Features - - LINQ - - SignalR for real-time web functionality - - High-performance RPC with `gRPC` - - Security features (authentication, authorization) - - Cryptography and secure data handling - - Memory and resource management - - Globalization and localization + - LINQ * + - SignalR for real-time web functionality ~ + - High-performance RPC with `gRPC` ~ + - Security features (authentication, authorization) + + - Cryptography and secure data handling ~ + - Memory and resource management + + - Globalization and localization ~ - Network and Protocols - - HTTP/HTTPS support - - WebSockets for real-time communication - - TCP/UDP networking - - SSL/TLS for secure connections - - Efficient network communication with `gRPC` - - HTTP/2 and HTTP/3 support - - Network security (DDoS, XSS, CSRF prevention) - - Serialization and deserialization (JSON, XML) + - HTTP/HTTPS support * + - WebSockets for real-time communication ~ + - TCP/UDP networking ~ + - SSL/TLS for secure connections ~ + - Efficient network communication with `gRPC` ~ + - HTTP/2 and HTTP/3 support ~ + - Network security (DDoS, XSS, CSRF prevention) ~ + - Serialization and deserialization (JSON, XML) * - Testing and Debugging - - Unit testing with frameworks like xUnit, NUnit - - Integration testing - - Logging and tracing - - Application monitoring and telemetry - - Debugging tools and strategies - - Performance profiling and analysis + - Unit testing with frameworks like xUnit, NUnit + + - Integration testing + + - Logging and tracing + + - Application monitoring and telemetry ~ + - Debugging tools and strategies + + - Performance profiling and analysis ~ - Data Access and ORM - - Entity Framework Core - - Dapper - - ADO.NET for database access - - Data modeling and migration - - Repository and Unit of Work patterns - - CRUD operations + - Entity Framework Core + + - Dapper ~ + - ADO.NET for database access + + - Data modeling and migration + + - Repository and Unit of Work patterns + + - CRUD operations * - Error Handling and Debugging - - Exception handling in .NET - - Custom error classes - - Debugging and diagnostic tools - - Profiling and performance analysis - - Memory leak detection + - Exception handling in .NET * + - Custom error classes + + - Debugging and diagnostic tools + + - Profiling and performance analysis ~ + - Memory leak detection ~ - Integration and Extensibility - - Interoperability with native libraries - - P/Invoke for calling `C/C++` libraries - - COM interop - - .NET for `WebAssembly` - - Custom middleware development + - Interoperability with native libraries ~ + - P/Invoke for calling `C/C++` libraries ~ + - COM interop ~ + - .NET for `WebAssembly` ~ + - Custom middleware development ~ - Cloud and Microservices - - Integration with cloud platforms (Azure, AWS) - - Microservices architecture - - Containerization with Docker - - Kubernetes for orchestration - - Serverless computing + - Integration with cloud platforms (Azure, AWS) + + - Microservices architecture + + - Containerization with Docker + + - Kubernetes for orchestration ~ + - Serverless computing ~ - C# Development - - C# syntax and language fundamentals - - Advanced C# features (LINQ, async/await, delegates, events) - - Reflection and dynamic programming - - Data types and collections - - Generics and extension methods - - Attributes and annotations - - Interoperability with other .NET languages + - C# syntax and language fundamentals * + - Advanced C# features (LINQ, async/await, delegates, events) + + - Reflection and dynamic programming + + - Data types and collections + + - Generics and extension methods + + - Attributes and annotations + + - Interoperability with other .NET languages + - `F#` Development - - `F#` syntax and language fundamentals - - Immutable data structures - - Pattern matching and discriminated unions - - Functional-first design and development - - Type providers and metaprogramming - - Asynchronous and parallel programming - - Using .NET libraries in `F#` - - Building web applications with F# and Giraffe or Saturn - - Testing with `FsUnit` + - `F#` syntax and language fundamentals ~ + - Immutable data structures ~ + - Pattern matching and discriminated unions ~ + - Functional-first design and development ~ + - Type providers and metaprogramming ~ + - Asynchronous and parallel programming ~ + - Using .NET libraries in `F#` ~ + - Building web applications with F# and Giraffe or Saturn ~ + - Testing with `FsUnit` ~ - VB.NET Development - - VB.NET syntax and language fundamentals - - Event-driven programming - - COM interop and P/Invoke - - XML and file handling - - Office automation and VSTO - - Migration strategies for legacy VB6 applications + - VB.NET syntax and language fundamentals ~ + - Event-driven programming ~ + - COM interop and P/Invoke ~ + - XML and file handling ~ + - Office automation and VSTO ~ + - Migration strategies for legacy VB6 applications ~ - C++/CLI Development Development - - C++ syntax and language fundamentals - - Interoperability between managed (.NET) and unmanaged (native) code - - Memory management in mixed environments - - `C++/CLI` syntax and usage - - Accessing .NET Framework classes in `C++` - - Writing performance-critical modules - - Interfacing with native libraries and APIs - - Developing custom .NET libraries in `C++` - - Managing resource disposal and finalization - - Creating and consuming DLLs (Dynamic Link Libraries) - - Working with Windows API - - Migration of legacy `C++` code to .NET - - Enhancing existing .NET applications with `C++/CLI` + - C++ syntax and language fundamentals ~ + - Interoperability between managed (.NET) and unmanaged (native) code ~ + - Memory management in mixed environments ~ + - `C++/CLI` syntax and usage + + - Accessing .NET Framework classes in `C++` ~ + - Writing performance-critical modules ~ + - Interfacing with native libraries and APIs ~ + - Developing custom .NET libraries in `C++` ~ + - Managing resource disposal and finalization ~ + - Creating and consuming DLLs (Dynamic Link Libraries) ~ + - Working with Windows API ~ + - Migration of legacy `C++` code to .NET ~ + - Enhancing existing .NET applications with `C++/CLI` ~ - Mobile development - - .NET MAUI / Xamarin - - Interoperability between managed code and iOS/Android API + - .NET MAUI / Xamarin ~ + - Interoperability between managed code and iOS/Android API ~ - Game development - - Unity + - Unity ~ - Web development - - ASP.NET Core - - Blazor - - Razor Syntax - - RESTful API development + - ASP.NET Core + + - Blazor ~ + - Razor Syntax + + - RESTful API development + diff --git a/Skills/JavaScript.md b/Skills/JavaScript.md index 0ff8fc89..7ef21290 100644 --- a/Skills/JavaScript.md +++ b/Skills/JavaScript.md @@ -1,122 +1,122 @@ ## JavaScript - Language - - `Object` - - `Function` - - `Boolean` - - `Number` - - `BigInt` - - `String` - - `Symbol` - - `Infinity` - - `NaN` - - `undefined` - - `null` - - `this` - - `instanceof` - - `...spread` - - `...rest` - - `typeof` - - Destructuring - - Generators - - Iterators - - Async generator - - Async iterator - - Chaining - - Optional chaining - - IIFE - - Async IIFE - - `global` - - `globalThis` - - `window` - - Getters and setters - - `__proto__` - - `prototype` - - Equality operators - - Logical operators - - Logical Assignment - - Bitwise operators - - Ternary operator - - `void` - - `yield` - - `await` - - Template literal - - Strict mode - - Hoisting - - `delete` - - `in` - - `super` - - `eval` - - `static` - - `Number.parseInt` - - `Number.parseFloat` - - Property descriptors - - Sealing properties - - Freezing properties - - Computed properties - - Instance class fields - - Static class fields - - Private class fields - - Private class methods + - `Object` * + - `Function` * + - `Boolean` * + - `Number` * + - `BigInt` ~ + - `String` * + - `Symbol` * + - `Infinity` * + - `NaN` * + - `undefined` * + - `null` * + - `this` * + - `instanceof` * + - `...spread` * + - `...rest` * + - `typeof` * + - Destructuring * + - Generators ~ + - Iterators & + - Async generator ~ + - Async iterator ~ + - Chaining * + - Optional chaining * + - IIFE + + - Async IIFE + + - `global` ~ + - `globalThis` ~ + - `window` * + - Getters and setters * + - `__proto__` ~ + - `prototype` * + - Equality operators * + - Logical operators * + - Logical Assignment * + - Bitwise operators ~ + - Ternary operator * + - `void` ~ + - `yield` ~ + - `await` * + - Template literal * + - Strict mode * + - Hoisting * + - `delete` * + - `in` * + - `super` ~ + - `eval` ~ + - `static` * + - `Number.parseInt` * + - `Number.parseFloat` * + - Property descriptors + + - Sealing properties ~ + - Freezing properties ~ + - Computed properties * + - Instance class fields * + - Static class fields ~ + - Private class fields ~ + - Private class methods ~ - Statements - - `if` - - `while` - - `do..while` - - `for` - - `for..in` - - `for..of` - - `for await` - - `throw` - - `break` - - `continue` - - `import` - - `export` - - `label` - - `try..catch` - - `switch` - - `class` - - `extends` - - `with` - - `new` + - `if` * + - `while` * + - `do..while` * + - `for` * + - `for..in` * + - `for..of` * + - `for await` + + - `throw` * + - `break` * + - `continue` * + - `import` * + - `export` * + - `label` ~ + - `try..catch` ~ + - `switch` * + - `class` * + - `extends` * + - `with` ~ + - `new` * - Functions - - Arrow function - - Async function - - Function declaration - - Function expression - - Default parameters - - Functional object - - `Function.prototype.call` - - `Function.prototype.bind` - - `Function.prototype.apply` - - `return` + - Arrow function * + - Async function * + - Function declaration * + - Function expression * + - Default parameters * + - Functional object ~ + - `Function.prototype.call` * + - `Function.prototype.bind` * + - `Function.prototype.apply` * + - `return` * - Data structures - - `Array` - - `Map` - - `Set` - - `WeakMap` - - `WeakSet` - - Typed arrays - - Mixins - - `Object.assign` + - `Array` * + - `Map` * + - `Set` * + - `WeakMap` + + - `WeakSet` + + - Typed arrays + + - Mixins ~ + - `Object.assign` * - Standard classes and namespaces - - `Proxy` - - `RegExp` - - `Date` - - `Math` - - `Reflect` - - `Error` - - `Atomics` - - `JSON` - - `WeakRef` - - `FinalizationRegistry` - - `Intl` - - `Promise` - - `console` - - Timers + - `Proxy` + + - `RegExp` * + - `Date` * + - `Math` * + - `Reflect` + + - `Error` * + - `Atomics` ~ + - `JSON` * + - `WeakRef` ~ + - `FinalizationRegistry` ~ + - `Intl` ~ + - `Promise` * + - `console` * + - Timers * - Infrastructure - - V8 - - Node.js - - npm - - prettier - - MDN - - TC39 + - V8 ~ + - Node.js * + - npm * + - prettier * + - MDN * + - TC39 ~ diff --git a/Skills/NodeJS.md b/Skills/NodeJS.md index bd891457..f72d6b1a 100644 --- a/Skills/NodeJS.md +++ b/Skills/NodeJS.md @@ -1,143 +1,143 @@ ## Node.js and backend - Internals and concepts - - Strong and weak sides of node.js - - Stateful and stateless servers - - Nonblocking I/O and blocking code - - Event loop phases - - Event loop microtasks and macrotasks - - Garbage collection - - Node.js LTS schedule - - I/O-bound, CPU-bound, memory-bound tasks - - Interactive applications (close to real-time) + - Strong and weak sides of node.js * + - Stateful and stateless servers * + - Nonblocking I/O and blocking code * + - Event loop phases * + - Event loop microtasks and macrotasks * + - Garbage collection ~ + - Node.js LTS schedule ~ + - I/O-bound, CPU-bound, memory-bound tasks ~ + - Interactive applications (close to real-time) ~ - Modularity, layers and dependencies - - CommonJS modules - - ECMAScript modules - - Module `node:module` - - Caching in CJS and ESM - - Modules as singletons - - Contexts and scripts module `node:vm` - - Dependencies: `npm`, `node_modules` - - Files `package.json`, `package-lock.json` - - Module-based permissions model - - Isolation with modularity - - Dependency injection - - DI containers - - Coupling and cohesion - - Framework agnostic approach + - CommonJS modules * + - ECMAScript modules * + - Module `node:module` ~ + - Caching in CJS and ESM ~ + - Modules as singletons * + - Contexts and scripts module `node:vm` + + - Dependencies: `npm`, `node_modules` * + - Files `package.json`, `package-lock.json` * + - Module-based permissions model ~ + - Isolation with modularity ~ + - Dependency injection + + - DI containers ~ + - Coupling and cohesion ~ + - Framework agnostic approach & - Environment - - Command line arguments - - Node.js CLI - - Process-based permissions - - Graceful shutdown - - Clustering - - Watch filesystem changes with --watch + - Command line arguments * + - Node.js CLI * + - Process-based permissions ~ + - Graceful shutdown ~ + - Clustering + + - Watch filesystem changes with --watch ~ - Internal API - - Streams API - - Web Streams API - - Crypto API - - Password hashing with crypto.scrypt - - Web Crypto API - - File system API (sync and async) - - Copy folder recursively - - Worker threads - - Performance hooks - - Native fetch and nodejs/undici - - async_hooks - - AsyncLocalStorage - - AsyncResource - - Deprecated domain API - - Node.js single executable - - SharedArrayBuffer - - Module `node:worker_threads` - - Module `node:child_process` - - MessageChannel, MessagePort - - BroadcastChannel - - Generating crypto random UUID - - Module `node:url` vs `new URL` - - Module `node:assert` - - Internationalization - - Blob, File, Buffer, module `node:buffer` - - Module `node:zlib` + - Streams API * + - Web Streams API ~ + - Crypto API ~ + - Password hashing with crypto.scrypt ~ + - Web Crypto API ~ + - File system API (sync and async) * + - Copy folder recursively * + - Worker threads ~ + - Performance hooks ~ + - Native fetch and nodejs/undici ~ + - async_hooks + + - AsyncLocalStorage + + - AsyncResource + + - Deprecated domain API + + - Node.js single executable ~ + - SharedArrayBuffer ~ + - Module `node:worker_threads` + + - Module `node:child_process` * + - MessageChannel, MessagePort ~ + - BroadcastChannel ~ + - Generating crypto random UUID * + - Module `node:url` vs `new URL` + + - Module `node:assert` * + - Internationalization ~ + - Blob, File, Buffer, module `node:buffer` * + - Module `node:zlib` ~ - Network - - Endpoint throttling - - ALPN - - SNI callback - - SSL certificates - - Protocol agnostic approach - - Fetch API - - IncomingMessage - - HTTP(S) - - TCP/SSL - - UDP - - TLS - - Websocket - - SSE - - HTTP/3 (QUIC) - - Long polling - - REST - - RPC - - Routing - - DoS - - DDoS - - XSS - - Path traversal - - CSRF - - DNS - - SQL injection - - noDelay - - keep-alive - - IP sticky sessions + - Endpoint throttling + + - ALPN ~ + - SNI callback ~ + - SSL certificates ~ + - Protocol agnostic approach ~ + - Fetch API * + - IncomingMessage * + - HTTP(S) * + - TCP/SSL ~ + - UDP ~ + - TLS ~ + - Websocket * + - SSE ~ + - HTTP/3 (QUIC) + + - Long polling ~ + - REST * + - RPC ~ + - Routing * + - DoS ~ + - DDoS ~ + - XSS * + - Path traversal ~ + - CSRF * + - DNS ~ + - SQL injection * + - noDelay ~ + - keep-alive + + - IP sticky sessions ~ - Technique and tools - - Native test runner - - Logging - - Application configuring - - Testing - - CI/CD - - Readable - - Writable - - Transform - - Back pressure - - Buffer - - Console - - Inspector + - Native test runner * + - Logging * + - Application configuring * + - Testing * + - CI/CD * + - Readable * + - Writable * + - Transform ~ + - Back pressure ~ + - Buffer * + - Console * + - Inspector ~ - Data access - - Data access layer - - Repository - - Active record - - Query builder - - Object-Relational Mapping - - CRUD - - DTO + - Data access layer * + - Repository * + - Active record * + - Query builder + + - Object-Relational Mapping ~ + - CRUD * + - DTO + - Error handling and debugging - - `Error` - - `error.cause` - - `error.code` - - `error.message` - - `error.stack` - - `Error.captureStackTrace` - - How to avoid mixins - - Uncaught exceptions - - Heap dump - - Debugging tools - - Flame graph - - Memory leaks - - Resource leaks - - Data race + - `Error` * + - `error.cause` * + - `error.code` ~ + - `error.message` * + - `error.stack` * + - `Error.captureStackTrace` + + - How to avoid mixins * + - Uncaught exceptions ~ + - Heap dump ~ + - Debugging tools * + - Flame graph ~ + - Memory leaks ~ + - Resource leaks ~ + - Data race & - Integrations and bindings - - Native addons - - `C` and `C++` addons - - `Rust` addons - - `Zig` addons - - NAN (Native Abstractions for Node.js) - - Node-API (formerly N-API) - - NAPI `C` and `C++` - - NAPI `Rust` - - NAPI `Zig` - - Webassembly `WAT` - - Webassembly `C` and `C++` - - Webassembly `Rust` - - Webassembly `Zig` - - Webassembly `AssemblyScript` - - Shared memory - - V8 binary serialization + - Native addons + + - `C` and `C++` addons ~ + - `Rust` addons ~ + - `Zig` addons ~ + - NAN (Native Abstractions for Node.js) ~ + - Node-API (formerly N-API) ~ + - NAPI `C` and `C++` ~ + - NAPI `Rust` ~ + - NAPI `Zig` ~ + - Webassembly `WAT` ~ + - Webassembly `C` and `C++` ~ + - Webassembly `Rust` ~ + - Webassembly `Zig` ~ + - Webassembly `AssemblyScript` ~ + - Shared memory * + - V8 binary serialization ~ diff --git a/Skills/Paradigms.md b/Skills/Paradigms.md index 91d5f7e5..e5b029ed 100644 --- a/Skills/Paradigms.md +++ b/Skills/Paradigms.md @@ -1,91 +1,91 @@ ## Multi-paradigm programming - Theory - - Procedural programming - - Imperative programming - - Structured programming - - Non-structured programming - - Functional programming - - Prototype-based programming - - Object-oriented programming - - Object-based programming - - Generic programming - - Concurrent computing - - Asynchronous programming - - Parallel programming - - Reactive programming - - Functional-reactive (FRP) - - Automata-based programming - - Domain-specific languages - - Multi-paradigm programming - - Metaprogramming - - Actor model - - Lambda calculus - - Black box - - Information hiding - - Aspect-oriented programming - - Anemic domain model - - Class composition + - Procedural programming ~ + - Imperative programming + + - Structured programming ~ + - Non-structured programming ~ + - Functional programming + + - Prototype-based programming * + - Object-oriented programming + + - Object-based programming & + - Generic programming + + - Concurrent computing * + - Asynchronous programming + + - Parallel programming ~ + - Reactive programming ~ + - Functional-reactive (FRP) ~ + - Automata-based programming ~ + - Domain-specific languages ~ + - Multi-paradigm programming * + - Metaprogramming + + - Actor model ~ + - Lambda calculus + + - Black box ~ + - Information hiding + + - Aspect-oriented programming ~ + - Anemic domain model ~ + - Class composition * - OOP basics - - Constructor - - Operator `new` - - Static method - - Method - - Async method - - Getters, Setters - - Public fields - - Private fields - - Field declarations - - Inheritance - - Parent class - - Polymorphism - - Abstract class - - Interface - - Encapsulation - - Hidden class - - Object form - - Instance - - Introspection - - Reflection - - The diamond problem + - Constructor * + - Operator `new` * + - Static method + + - Method * + - Async method + + - Getters, Setters + + - Public fields + + - Private fields + + - Field declarations + + - Inheritance * + - Parent class * + - Polymorphism * + - Abstract class ~ + - Interface * + - Encapsulation * + - Hidden class ~ + - Object form ~ + - Instance * + - Introspection ~ + - Reflection ~ + - The diamond problem ~ - GRASP - - Information expert - - Creator - - Controller - - Indirection - - Low coupling - - High cohesion - - Protected variations - - Pure fabrication + - Information expert ~ + - Creator * + - Controller + + - Indirection ~ + - Low coupling + + - High cohesion ~ + - Protected variations ~ + - Pure fabrication ~ - SOLID - - Single-responsibility principle (SRP) - - Open–closed principle (OCP) - - Liskov substitution principle (LSP) - - Interface segregation principle (ISP) - - Dependency inversion principle (DIP) + - Single-responsibility principle (SRP) + + - Open–closed principle (OCP) + + - Liskov substitution principle (LSP) ~ + - Interface segregation principle (ISP) ~ + - Dependency inversion principle (DIP) ~ - Patterns - - Singleton - - Factory Method - - Abstract Factory - - Adapter - - Observer - - Strategy - - Facade - - Proxy - - Chain of Responsibility - - Command - - Iterator - - State - - Bridge - - Builder - - Prototype - - Composite - - Decorator - - Flyweight - - Mediator - - Memento - - Template Method - - Visitor - - Reactor - - Active object - - Delegation + - Singleton ~ + - Factory Method + + - Abstract Factory ~ + - Adapter * + - Observer ~ + - Strategy ~ + - Facade * + - Proxy ~ + - Chain of Responsibility + + - Command * + - Iterator * + - State + + - Bridge + + - Builder ~ + - Prototype + + - Composite ~ + - Decorator * + - Flyweight ~ + - Mediator * + - Memento ~ + - Template Method + + - Visitor + + - Reactor ~ + - Active object ~ + - Delegation + diff --git a/Skills/Programming.md b/Skills/Programming.md index e976b503..4dac1f6b 100644 --- a/Skills/Programming.md +++ b/Skills/Programming.md @@ -1,239 +1,239 @@ ## Programming fundamental concepts - Concepts - - Model - - Modeling - - Subject domain - - Algorithm - - Syntax - - Semantics - - Abstraction - - Paradigm - - Programm - - Programming paradigm - - Programming language - - Contract - - Module - - Library - - Package - - Component - - Framework - - Platform - - Source code - - Object code - - Machine code - - Microcode - - Software engineering - - Decomposition - - Control flow - - Data flow - - Code reuse - - Defensive programming - - Don't repeat yourself (DRY) - - KISS principle + - Model * + - Modeling * + - Subject domain * + - Algorithm * + - Syntax * + - Semantics * + - Abstraction * + - Paradigm * + - Programm + + - Programming paradigm + + - Programming language * + - Contract ~ + - Module * + - Library * + - Package * + - Component + + - Framework * + - Platform * + - Source code * + - Object code ~ + - Machine code ~ + - Microcode ~ + - Software engineering " + - Decomposition ~ + - Control flow + + - Data flow + + - Code reuse * + - Defensive programming ~ + - Don't repeat yourself (DRY) ~ + - KISS principle * - Syntax and concepts - - Value - - Identifier - - Variable - - Constant - - Scalar - - Literal - - Expression - - Heap - - Function - - Procedure - - Method - - Class - - Prototype - - Event - - Type - - Flag - - Lexical scope - - Code block - - Conditions - - Loops - - Assignment - - Regular expression - - Interface - - Namespaces - - Call stack - - Naming conventions - - Coding conventions - - Camel case - - Snake case - - Kebab case - - Trailing commas - - Return early - - Fail-fast + - Value * + - Identifier * + - Variable * + - Constant * + - Scalar * + - Literal * + - Expression * + - Heap + + - Function * + - Procedure * + - Method * + - Class * + - Prototype + + - Event + + - Type * + - Flag * + - Lexical scope * + - Code block ~ + - Conditions * + - Loops * + - Assignment * + - Regular expression + + - Interface * + - Namespaces + + - Call stack * + - Naming conventions + + - Coding conventions + + - Camel case ~ + - Snake case ~ + - Kebab case ~ + - Trailing commas ~ + - Return early ~ + - Fail-fast ~ - Types - - Primitive types - - Reference types - - Type systems - - Strong typing - - Weak typing - - Duck typing - - Static typing - - Dynamic typing - - Nominal typing - - Structural typing - - Explicit typing - - Type inference - - Covariance - - Contravariance + - Primitive types * + - Reference types * + - Type systems * + - Strong typing * + - Weak typing * + - Duck typing ~ + - Static typing ~ + - Dynamic typing + + - Nominal typing + + - Structural typing ~ + - Explicit typing * + - Type inference * + - Covariance + + - Contravariance ~ - Functions - - Signature - - Argument - - Parameter - - Pure function - - Lambda expression - - Side effects - - Closure - - Partial application - - Currying - - Higher order - - Recursion - - Tail call optimisation - - Callback - - Listener - - Composition - - Pipe - - Memoize - - Wrapper - - Functor - - Monad - - Monoid - - Generator - - Coroutine + - Signature * + - Argument * + - Parameter * + - Pure function * + - Lambda expression * + - Side effects * + - Closure * + - Partial application * + - Currying ~ + - Higher order + + - Recursion * + - Tail call optimisation * + - Callback * + - Listener ~ + - Composition * + - Pipe * + - Memoize * + - Wrapper * + - Functor ~ + - Monad ~ + - Monoid ~ + - Generator * + - Coroutine ~ - Data structures - - Array - - Structure - - Record - - Enum - - Instance - - Object - - Collection - - Set - - Hash table - - Linked list - - Doubly list - - Unrolled list - - Circular list - - Queue - - Stack - - Deque - - Tree - - Graph - - Iterator - - Mutable state - - Immutable state - - Serialization - - String parsing - - JSON - - JSON5 - - YAML + - Array * + - Structure * + - Record * + - Enum + + - Instance * + - Object * + - Collection * + - Set * + - Hash table + + - Linked list * + - Doubly list ~ + - Unrolled list ~ + - Circular list ~ + - Queue * + - Stack * + - Deque ~ + - Tree * + - Graph * + - Iterator * + - Mutable stat * + - Immutable state * + - Serialization * + - String parsing * + - JSON * + - JSON5 + + - YAML ~ - Networking - - DNS - - CDN - - CORS - - IPv4 - - IPv6 - - NAT - - URL - - URN - - URI + - DNS ~ + - CDN ~ + - CORS ~ + - IPv4 * + - IPv6 ~ + - NAT ~ + - URL * + - URN ~ + - URI ~ - Process and tools - - Compiler - - Just-in-time compilation - - Ahead-of-time compilation - - Transpiler - - Linter - - Polyfill - - Interpreter - - Linker - - Dynamic linking - - Static linking - - Runtime - - Virtual machine - - Register-based VM - - Stack-based VM - - Containerization - - Debugger - - Tracing - - Garbage collection - - Refactoring - - Code review - - Exception - - Unittesting - - git - - Github - - Docker - - Kubernetes - - GCC - - LLVM + - Compiler * + - Just-in-time compilation + + - Ahead-of-time compilation + + - Transpiler * + - Linter * + - Polyfill * + - Interpreter * + - Linker * + - Dynamic linking * + - Static linking + + - Runtime * + - Virtual machine + + - Register-based VM ~ + - Stack-based VM ~ + - Containerization * + - Debugger * + - Tracing * + - Garbage collection * + - Refactoring * + - Code review * + - Exception * + - Unittesting * + - git * + - Github * + - Docker ~ + - Kubernetes ~ + - GCC * + - LLVM ~ - Antipatterns - - Magic numbers - - Hard code - - Soft code - - Cryptic code - - Improbability factor - - Accidental complexity - - Action at a distance - - Spaghetti - - Silver bullet - - Not invented here - - Dead code - - Unreachable code - - Duplicate code - - Premature optimization - - Micro-optimization - - Nested loops - - Long method/function/procedure - - Long inheritance - - Large class/file - - Too many parameters - - Pass-through parameters - - Accumulate and fire - - Use switch/case - - Temporary field - - Handle object as instances and hashes at the same time - - Use fields instead of arguments - - Data clump - - Feature envy - - Monkey patch - - Yo-yo problem + - Magic numbers ~ + - Hard code * + - Soft code ~ + - Cryptic code ~ + - Improbability factor ~ + - Accidental complexity ~ + - Action at a distance ~ + - Spaghetti ~ + - Silver bullet ~ + - Not invented here ~ + - Dead code ~ + - Unreachable code * + - Duplicate code * + - Premature optimization ~ + - Micro-optimization ~ + - Nested loops * + - Long method/function/procedure * + - Long inheritance * + - Large class/file * + - Too many parameters ~ + - Pass-through parameters ~ + - Accumulate and fire ~ + - Use switch/case * + - Temporary field + + - Handle object as instances and hashes at the same time ~ + - Use fields instead of arguments ~ + - Data clump ~ + - Feature envy ~ + - Monkey patch ~ + - Yo-yo problem ~ - Runtimes and virtual machines - - Bytecode - - V8 - - VJM - - CLR - - Mono + - Bytecode + + - V8 + + - VJM ~ + - CLR ~ + - Mono + - Operating systems - - Interrupts - - Drivers - - Kernel - - Ring - - Virtual memory - - File system - - Linux - - Unix - - BSD - - MacOS - - Windows - - Real-time OS - - Embedded OS + - Interrupts ~ + - Drivers ~ + - Kernel ~ + - Ring ~ + - Virtual memory * + - File system * + - Linux + + - Unix + + - BSD ~ + - MacOS * + - Windows * + - Real-time OS ~ + - Embedded OS + - Standards - - ASCII - - Escape sequence - - RFC - - IETF - - IANA - - IEEE - - Base64 - - ECMA - - ICANN - - ISO - - MIME - - OWASP - - UTF-8 - - W3C - - ODMG + - ASCII * + - Escape sequence + + - RFC ~ + - IETF ~ + - IANA ~ + - IEEE ~ + - Base64 ~ + - ECMA ~ + - ICANN ~ + - ISO ~ + - MIME ~ + - OWASP ~ + - UTF-8 * + - W3C ~ + - ODMG ~