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