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