Versión imprimible multipagina. Haga click aquí para imprimir.
Lenguajes de Programación
- 1: Python
- 2: JavaScript y TypeScript
- 3: Rust
- 4: Shell
1 - Python
- Introduction- History of Python- Origins and development by Guido van Rossum (1989–1991)
- Evolution from Python 1.x → 2.x → 3.x
- Design philosophy (PEP 20 — The Zen of Python)
- Open source governance and the Python Software Foundation (PSF)
- Python Enhancement Proposals (PEPs) and community process
- Major milestones (Unicode, async, typing, pattern matching)
 
- Python Versions and Compatibility- Python 2 vs Python 3 differences and migration
- Maintenance and end-of-life policies
- Long-term support (LTS) versions
- Semantic versioning and release cadence
- Version detection (sys.version,platform.python_version())
- Backward and forward compatibility (PEP 563, PEP 585)
 
- Installing Python- Official installers (python.org, Microsoft Store, Homebrew, apt, dnf)
- Platform-specific installation (Windows, macOS, Linux)
- Source builds and configuration options
- Multiple Python versions and environment isolation
- Verifying installation and PATH configuration
- Package managers (apt,brew,choco,scoop)
- Alternative distributions (Anaconda,Miniconda,ActivePython)
 
- Running Python Scripts and REPL- REPL basics (python,python -i,exit())
- Script execution (python script.py,python -m module)
- Interactive debugging and inspection (help(),dir())
- Command-line flags and options (-O,-B,-m,-X)
- Shell integration (ipython,bpython,ptpython)
- Jupyter notebooks and interactive kernels
- Input/output redirection and pipes
 
- REPL basics (
- IDEs and Code Editors- Full IDEs (PyCharm,VS Code,Spyder,Thonny)
- Lightweight editors (Sublime Text,Atom,Vim,Emacs)
- REPL integration and interactive terminals
- Code completion and IntelliSense
- Linters and formatters integration
- Debugging tools and breakpoints
- Notebooks and mixed-language environments (Jupyter,Colab)
 
- Full IDEs (
- Virtual Environments- Environment creation (venv,virtualenv)
- Activation and deactivation
- Project isolation and dependency management
- Environment configuration files (pyvenv.cfg)
- Integration with editors and build tools
- Cross-platform management (conda,tox,nox)
- Reproducibility and sharing (requirements.txt,lockfiles)
 
- Environment creation (
- Package Management (pip)- Installing, upgrading, uninstalling packages (pip install)
- Requirements files (requirements.txt, constraints)
- Package discovery and search (pip search,pip index)
- Local and editable installs (pip install -e)
- Dependency resolution (pip check,pipdeptree)
- Source distributions vs wheels
- Virtual environment integration
- Caching and offline installs (pip download,pip cache)
- Custom indexes and mirrors (--index-url,--extra-index-url)
- Package auditing and signing (pip-audit,hash-checking-mode)
 
- Installing, upgrading, uninstalling packages (
 
- History of Python
- Fundamentals- Basic Data Types- Variables and assignments- Declaration and initialization
- Dynamic typing and rebinding
- Variable lifetime and scope
 
- Booleans (bool, logical evaluation rules)
- Numeric types- int(arbitrary precision, base conversions)
- float,- decimal,- fractions
- complex(real/imaginary parts, polar form)
 
- Strings, multiline strings, raw strings- String creation and immutability
- Indexing, slicing, concatenation, repetition
- f-strings, interpolation, and formatting
- Unicode handling and encoding basics
 
- Objects and mutability- Identity vs equality (isvs==)
- Mutable vs immutable built-ins
- Copy semantics (copy,deepcopy)
 
- Identity vs equality (
- Noneand sentinel values- Null semantics and truthiness
- Sentinel patterns for optional behavior
 
- Hashables and immutability- Requirements for dict/set keys
- Custom hash implementation (__hash__,__eq__)
 
- Type conversion and coercion- Implicit vs explicit casting
- Numeric promotions
- Common built-ins (int(),float(),str(), etc.)
 
 
- Variables and assignments
- Operators- Arithmetic (+,-,*,/,//,%, ``)
- Comparison (==,!=,<,>,<=,>=)
- Logical (and,or,not)
- Bitwise (&,|,^,~,<<,>>)
- Identity (is,is not)
- Membership (in,not in)
- Assignment and augmented assignment (+=,-=, etc.)
- Walrus operator (:=, PEP 572)
- operatormodule (functional forms of ops)
- delstatement (object deletion and reference removal)
- Operator precedence and associativity
- Short-circuit evaluation behavior
 
- Arithmetic (
- Control Flow- Conditionals (if,elif,else)
- Loops (for,while,for-else,while-else)
- Control statements (pass,continue,break)
- match/ structural pattern matching (PEP 634–636)- Literal, sequence, mapping, and class patterns
- OR-patterns and guards (ifclauses)
 
- Loop control flags and sentinel conditions
 
- Conditionals (
- Functions- Namespaces and variable lookup rules
- Scopes: local, global, nonlocal
- Function definition and return semantics
- Default argument values and evaluation timing
- Keyword and positional arguments
- Special parameters (*args,kwargs,/,*)
- Argument unpacking (iterables and mappings)
- Lambda and anonymous functions
- Function attributes (__name__,__doc__,__defaults__,__annotations__)
- Closures and free variables
- Higher-order functions and decorators (intro)
- Callable objects and partial application
 
- Exceptions- try,- except,- else,- finallyblocks
- raiseand re-raising
- Custom exceptions (inheritance from Exception)
- Exception chaining (raise … from …)
- Exception groups (PEP 654)
- Exception notes (add_note)
- Context and traceback objects (sys.exc_info,traceback)
- Common built-in exceptions (ValueError,TypeError, etc.)
- Suppressing exceptions (contextlib.suppress)
 
- Builtins- Keywords (keywordmodule)
- Built-in functions (len,range,map,filter, etc.)
- Constants- True,- False,- None
- NotImplemented
- Ellipsis(- ...)
- __debug__
 
- Built-in types (int,float,str,list,dict, etc.)
- Built-in exceptions (hierarchy and usage)
- Standard type hierarchy and object model
 
- Keywords (
- Modules- Import system (absolute, relative, from,*, aliasing)
- Search paths and environment (sys.path,PYTHONPATH)
- Module inspection (dir,help,vars,globals,locals)
- Basic standard modules- math,- cmath
- random
- os,- pathlib
- sys
- datetime,- time
- functools,- itertools
- json,- re,- collections
 
 
- Import system (absolute, relative, 
 
- Basic Data Types
- Structures and data manipulation- Data Structures- Lists- Creation and initialization
- Indexing and slicing
- Mutability and in-place operations
- Methods (append,extend,insert,pop,remove,clear)
- Sorting (sort,sorted, key functions, stability)
- Membership and iteration
- Copying and references
 
- Stacks (list,collections.deque)- LIFO principle
- Push/pop operations
 
- Queues (queue.Queue,collections.deque)- FIFO principle
- Thread-safe queues (queue,multiprocessing.Queue)
 
- Deques (collections.deque)- Bidirectional operations
- Rotation and indexing
- Thread safety
 
- Tuples- Immutability and performance
- Named tuples (collections.namedtuple,typing.NamedTuple)
- Tuple packing and unpacking
 
- Sets- Unique element storage
- Set operations (union, intersection, difference, symmetric difference)
- Frozen sets
- Membership and comprehensions
 
- Dicts and mappings- Key-value pairs
- Dictionary methods (get,pop,update,items,keys,values)
- Dictionary views and iterators
- Default dicts (collections.defaultdict)
- OrderedDict, ChainMap, Counter
- Dictionary comprehensions
 
- Unpacking and extended unpacking- Parallel assignment
- *and `` unpacking in function calls and literals
 
- Comparison between data structures- Performance considerations (lookup, insertion, order)
- Mutability, hashability, and ordering
 
- Copying and views
- Shallow vs deep copy
- copymodule
- Views (dict.items(),setviews)
 
- Lists
- Iterators and Generators- Sequences and iteration protocol
- Iterator vs iterable
- Built-in functions: iter,next,len,reversed
- Custom iterators (__iter__,__next__)
- Generators and yield,yield from
- Generator expressions and lazy sequences
- Infinite iterators (itertools.count,cycle,repeat)
- Slices (slice,itertools.islice)
- Lazy evaluation and memory efficiency
- Generator cleanup and StopIteration
 
- Comprehensions- List comprehensions
- Set comprehensions
- Dict comprehensions
- Nested comprehensions
- Conditional comprehensions (ifandif-else)
- Generator expressions vs comprehensions
- Performance and readability trade-offs
 
- String Manipulation- String operations- Concatenation (+)
- Multiplication (*)
- Membership (in,not in)
- Slicing and indexing
 
- Concatenation (
- Formatting and interpolation- f-strings
- .format()
- Old-style %formatting
- string.Template
 
- String methods (split,join,replace,strip,startswith,endswith)
- Bytes and bytearrays (bytes,bytearray, encoding/decoding)
- Format specification mini-language
- Utilities (textwrap,string,re,difflib)
- Unicode and encodings- unicodedata, normalization (NFC, NFD, NFKC, NFKD)
- UTF-8, UTF-16, Latin-1, etc.
 
- uuidmodule
- Advanced operations (str.translate,maketrans, case folding)
 
- String operations
- Regular Expressions- resyntax (groups, lookahead, lookbehind, backreferences)
- Flags (IGNORECASE,MULTILINE,DOTALL,VERBOSE)
- remodule methods (- search,- match,- findall,- split,- sub,- compile)
- Regex objects and performance
- Third-party regexmodule (Unicode categories, recursion, timeouts)
- Comparison with parsing libraries- fnmatchand- glob
- parse
- shlexand- tokenize
- stringmethods vs regex trade-offs
 
 
- Files- File system access- pathlib(modern path interface)
- osand- os.path
- File existence, metadata, and permissions (stat)
 
- File I/O operations- open,- close,- read,- write,- append,- seek
- Context managers (with)
- Binary vs text modes
 
- Basic file formats- .ini/ config (- configparser)
- .env(dotenv libraries)
- .toml(- tomllib,- tomli,- tomlkit)
- .csv(- csv,- pandas)
- .json(- json,- orjson,- ujson)
- .sqlite3(SQL databases)
 
- Serialization- struct(binary data)
- codecs
- pickle,- dill,- cloudpickle
- marshal
- base64,- binascii
 
- Temporary files (tempfile)
- Compression and archiving- zip/deflate (zipfile)
- gzip
- bzip2
- lzma/lzma2
- lz4
- xz
- zstd
- tar (tarfile)
 
- zip/deflate (
- File permissions and metadata (os.stat,chmod,access)
- Binary file handling (struct,memoryview,array)
 
- File system access
- Specific Files- Markup- HTML (html,html.parser,BeautifulSoup)
- XML (xml.etree.ElementTree,lxml)
 
- HTML (
- Document and ebook- PDF (PyPDF2,fitz)
- DOCX (python-docx)
- EPUB (ebooklib)
 
- PDF (
- Calendar and scheduling- ICS (ics,icalendar)
- CSV-based planners
 
- ICS (
- Mailing and messaging- email,- smtplib,- imaplib
- eml,- msgparsing
 
- Image processing- PIL/Pillow
- OpenCV
- imageio,- matplotlibfor I/O
 
- Audio processing- wave,- aifc,- sunau
- pydub,- audioread,- soundfile
 
- Video handling- cv2
- moviepy
- ffmpeg-python
 
- Security and cryptography- ssl,- hashlib,- secrets,- hmac
- Certificate and key handling
 
- Geographic and spatial data- GeoJSON
- shapefile,- fiona,- shapely,- geopandas
 
 
- Markup
- Time and Date- datetimeand- timemodules
- calendarmodule
- Time zones (zoneinfo,pytz)
- Time arithmetic (timedelta, rounding, truncation)
- Parsing and formatting dates (strptime,strftime,dateutil)
- High-resolution timers (time.perf_counter,process_time,monotonic)
- Scheduling and delays (sleep,sched,asyncio.sleep)
- Measuring performance (timeit,perf_counter_ns)
- Timestamp conversion and epoch time
 
 
- Data Structures
- Structured and Modular Programming- Object-Oriented Programming (OOP)- Classes and objects- Defining and instantiating classes
- The __init__and__new__methods
- The object model and __class__attribute
 
- Attributes and methods- Class vs instance attributes
- Attribute lookup order and MRO
- Attribute hiding and naming conventions (_,__)
- Dynamic access (getattr,setattr,delattr,hasattr)
 
- Encapsulation and abstraction- Private vs public members (naming conventions)
- Getters, setters, and deleters (@property)
- Read-only attributes
 
- Inheritance- Single and multiple inheritance
- super()and cooperative MRO
- Method overriding and extension
- Abstract base classes (abcmodule)
- Mixins and shared behavior
- Composition vs inheritance
 
- Class mechanics- __slots__and memory optimization
- Metaclasses and dynamic class creation
- type()and runtime class manipulation
- typesmodule utilities
 
- Special / magic / dunder methods- __repr__,- __str__,- __len__,- __getitem__, etc.
- Operator overloading (__add__,__eq__, etc.)
- Context management (__enter__,__exit__)
- Callable objects (__call__)
- Iteration protocols (__iter__,__next__)
 
- Advanced typing and design- Generics and typing.Generic
- Protocols (PEP 544)
- Covariance and contravariance
- Duck typing and structural subtyping
- Casting (typing.cast)
 
- Generics and 
- Utilities and modern OOP helpers- dataclasses(auto-generated methods, immutability)
- attrs(third-party library)
- pydantic(data validation models)
- enum(enumerations and flag enums)
- collections.abc(interfaces for containers)
 
 
- Classes and objects
- Decorators- Function decorators- Basic decorator syntax
- Multiple decorators
- @staticmethod,- @classmethod,- @property
 
- Class decorators- Decorating entire classes
- Injecting attributes or methods dynamically
 
- Parameterized decorators- Nested closures for arguments
- Factory pattern for decorators
 
- functools.wraps- Preserving metadata (__name__,__doc__)
- Common pitfalls and best practices
 
- Preserving metadata (
- Practical applications- Logging and timing
- Memoization (functools.lru_cache)
- Access control and validation
- Class registration and plugin systems
 
 
- Function decorators
- Modules (advanced)- Packages and __init__.py- Namespace packages (PEP 420)
- Relative and absolute imports
- Module-level constants and configuration
 
- Standard modules (extended list)- Input/output (io,os,pathlib,shutil)
- Argument parsing (argparse,getopt,sys.argv)
- Mathematical utilities (math,cmath,statistics)
- Data structures (collections,collections.abc,array,enum)
- Memory and performance (copy,sys,resource)
- Console utilities (curses,readline)
 
- Input/output (
- CLI modules- sys,- argparse,- getopt
- Subcommands and command dispatchers
- CLI design patterns (subparsers, help messages)
 
- Import system internals- importliband module reloading
- sys.meta_path, loaders and finders
- Module caching and sys.modules
- Dynamic imports (__import__,importlib.import_module)
- Executing packages as scripts (python -m)
 
 
- Packages and 
- Logging- loggingmodule fundamentals- Logger hierarchy and propagation
- Logging levels (DEBUG,INFO,WARNING,ERROR,CRITICAL)
- Handlers, formatters, filters
- Configuration (basicConfig, dictConfig, fileConfig)
- Custom loggers and modular logging
 
- Structured and external logging- JSON logging (jsonlogger)
- Log rotation (logging.handlers.RotatingFileHandler)
- Integration with monitoring tools (ELK, Prometheus)
 
- JSON logging (
- Distributed tracing and OpenTelemetry- Traces, spans, and metrics
- Exporters and backends
- Integration with loggingandasyncio
 
 
- Documentation- Docstrings- Inline documentation conventions
- Access via help()and.__doc__
 
- Docstring formats- reStructuredText (reST)
- Google style
- NumPy style
- Epydoc and Sphinx roles
 
- doctest(testing from docstrings)- Embedding examples
- Running tests from documentation
 
- Documentation generators and renderers- sphinx(reST → HTML/PDF)
- readthedocshosting
- mkdocsand Material for MkDocs
- pdoc3(auto API documentation)
- Doxygen+- Breatheintegration
- JupyterBookfor literate programming
- Integration with CI/CD (auto-generated docs)
 
 
- Docstrings
- Testing- Testing frameworks- unittest(standard library)
- pytest(most popular)
- nose2and legacy options
 
- Code coverage- coverage.pybasics
- pytest-covintegration
- Coverage thresholds and reports
 
- Testing types- Unit Testing (unittest,pytest)
- Integration Testing (unittest,pytest)
- Functional Testing (unittest,pytest)
- Acceptance Testing (unittest,behave)
- Regression Testing (unittest,pytest)
- Performance Testing (timeit,pytest-benchmark)
- Load / Stress Testing (asyncio,locust)
- Security Testing (unittest,bandit)
- Property-Based Testing (unittest,hypothesis)
- Fuzz Testing (unittest,atheris)
- Snapshot Testing (unittest,syrupy)
- Contract Testing (unittest,pact)
- API Testing (http.client,pytest + requests)
- UI / E2E Testing (unittest,playwright)
- Database Testing (sqlite3,pytest + testcontainers)
- Async/Concurrency Testing (asyncio,pytest-asyncio)
- Data Quality / Validation Testing (json,great_expectations)
- Compatibility / Cross-env Testing (venv,tox)
- Smoke / Sanity Testing (unittest,pytest)
- Accessibility Testing (unittest,playwright)
 
- Unit Testing (
- Fixtures and parametrization- Test Lifecycle Hooks (unittestsetUp/tearDown,pytest)
- Fixture Scopes (unittestclass/module,pytestfunction/class/module/session)
- Autouse Fixtures (unittestbase classes,pytest)
- Parametrized Tests (unittestsubTest,pytest.mark.parametrize)
- Factory Fixtures (unittesthelpers,pytestfixture factories)
- Temporary Paths and Files (tempfile,pytest.tmp_path)
- Environment and Patching (unittest.mock,pytest.monkeypatch)
- Capturing Output (contextlib.redirect_stdout,pytest.capsys/capfd)
- Logging Capture (logging,pytest.caplog)
- Time Control (time,freezegun)
- Network Isolation (socket,pytest + responses)
- Async Fixtures (asyncio,pytest-asyncio)
- Database Fixtures (sqlite3,pytest + testcontainers)
- Data Builders (json,factory_boy)
- Randomness Control (random,pytest-randomly)
 
- Test Lifecycle Hooks (
- Advanced testing tools- Mocking and Spies (unittest.mock,pytest-mock)
- Patch Utilities (unittest.mock.patch,pytest.monkeypatch)
- Coverage and Reports (trace,coverage.py)
- Parallel and Distributed Tests (multiprocessing,pytest-xdist)
- Flaky Test Control (unittestreruns,pytest-rerunfailures)
- Timeouts and Slow Tests (signal,pytest-timeout)
- Benchmarking (timeit,pytest-benchmark)
- Mutation Testing (ast,mutmut)
- HTTP Mocking (http.server,responses)
- Recording HTTP (VCR) (urllib,vcrpy)
- Contract & Schema Testing (json,schemathesis)
- Snapshot Testing (pickle,syrupy)
- Test Data Generation (random,faker)
- Test Selection & Caching (importlib,pytest-testmon)
- HTML/Allure Reports (unittestXML,pytest-html)
- CI/CD Integration (subprocess,tox)
- Profiling for Tests (cProfile,pyinstrument)
- Static Analysis (lint/type) (ast,ruff)
- Containerized Tests (subprocess,testcontainers)
- Async/Trio/AnyIO Tools (asyncio,pytest-anyio)
 
- Mocking and Spies (
 
- Testing frameworks
- Debugging- Standard debuggers- pdb
- bdb,- ipdb,- pudb
- IDE-integrated debuggers (VSCode, PyCharm)
 
- Remote and distributed debugging- debugpy(VSCode protocol)
- rpdb,- pydevd
 
- Traceback and runtime analysis- Stack traces and frames
- Traceback objects and inspection
- faulthandlerfor low-level tracing
 
- Code tracing tools- tracemodule (execution flow)
- inspectmodule (live introspection)
- sys._getframe, locals/globals inspection
- Profiling vs debugging differences
 
- Exception debugging- Post-mortem debugging
- Context display (contextlib,traceback.print_exc)
- Custom exception hooks (sys.excepthook)
 
 
- Standard debuggers
 
- Object-Oriented Programming (OOP)
- Advanced Structures and Functional Programming- Functional Programming- Functional paradigms and immutability
- Higher-order functions (map,filter,reduce)
- Anonymous functions (lambda)
- functoolsutilities- partial,- cmp_to_key,- cache,- lru_cache,- reduce
 
- operatormodule (functional equivalents for arithmetic/logical ops)
- Closures and free variables
- Currying and partial application
- Immutability and purity
- Function composition and pipelines
- Functional iteration (itertools,more-itertools)
- Side effects and referential transparency
- Recursion and tail call optimization
- Persistent data structures (immutables,pyrsistent)
 
- Itertools / Advanced Generators- Combinatorial tools (product,permutations,combinations,combinations_with_replacement)
- Accumulators and counters (accumulate,count,cycle,repeat)
- Sequence utilities (chain,compress,dropwhile,takewhile,islice,starmap,tee,zip_longest,groupby)
- Infinite and lazy sequences (itertools,more-itertools)
- Generator delegation (yield from)
- Generator-based pipelines and streams (toolz,funcy)
 
- Combinatorial tools (
- Memory Views- Buffer protocol (low-level binary access)
- memoryviewobjects and slicing
- Byte arrays and binary manipulation (bytearray,array)
- Dict views (keys,items,values)
- Shared memory across processes (multiprocessing.shared_memory)
- Interfacing with C-level buffers (ctypes,numpy)
 
- Benchmarking and Profiling- Timing and microbenchmarks (timeit,perf_counter)
- CPU profiling (cProfile,profile,pstats)
- Memory profiling (tracemalloc,memory_profiler)
- Line-level profiling (line_profiler)
- Statistical and sampling profilers (py-spy,scalene,yappi)
- Async profiling (aiomonitor,asyncio-run-instrument)
- Visualization tools (snakeviz,tuna,speedscope)
- Benchmark frameworks (pytest-benchmark,asv)
 
- Timing and microbenchmarks (
- Code Quality Tools- Style and formatting (flake8,autopep8,black,isort)
- Type checking (mypy,pyright,pytype)
- Linting (pylint,ruff,prospector)
- Security analysis (bandit,safety)
- Metrics and complexity (radon,wily)
- Code modernization (pyupgrade,futurize,modernize)
- Git and pre-commit automation (pre-commit,tox,nox)
- Docstring and naming validation (pydocstyle,pep8-naming)
- Dead code and dependency analysis (vulture,pip-check)
- Refactoring tools (rope,bowler)
 
- Style and formatting (
- Security- Common Algorithms and Concepts- Symmetric encryption (AES, ChaCha20)
- Asymmetric encryption (RSA, ECC)
- Hashing (SHA, BLAKE2, PBKDF2)
- Key derivation and stretching (scrypt, Argon2)
- Digital signatures and verification
- Certificates and PEM handling
- Public Key Infrastructure (PKI)
- Randomness and entropy pools
 
- Standard Library- hashlib(hash algorithms, digests)
- secrets(secure randomness)
- ssl(TLS, context management)
- hmac(hash-based message authentication)
- base64(binary encoding)
 
- Third-Party Libraries- bcrypt
- passlib
- cryptography
- pyjwt
- argon2-cffi
- fernet
 
 
- Common Algorithms and Concepts
- Type Hints- Function and variable annotations
- typingmodule fundamentals
- Type aliases (TypeAlias)
- Generic types (TypeVar,Generic)
- Protocols (PEP 544)
- Unions and optionals (Union,Optional)
- Literal types (Literal)
- NewType and nominal typing (NewType)
- Typed mappings (TypedDict)
- Self type and recursive references (Self, PEP 673)
- Parameter and return specifications (ParamSpec,Concatenate, PEP 612)
- Advanced static typing (mypy_extensions,typing_extensions)
- Runtime type checking (beartype,typeguard)
- Dataclass typing and validation (dataclasses,pydantic)
- Gradual typing and static analysis (mypy,pyright,ruff --extend-select TYP)
 
 
- Functional Programming
- Concurrency, Async, Low Level- Async and Concurrency- Thread-based concurrency (threading,concurrent.futures.ThreadPoolExecutor)
- Process-based parallelism (multiprocessing,concurrent.futures.ProcessPoolExecutor)
- Global Interpreter Lock (GIL) and its implications
- Synchronization primitives- Locks (Lock,RLock)
- Semaphores, Events, Barriers, Conditions
- Queues (queue,asyncio.Queue,multiprocessing.Queue)
 
- Locks (
- Parallelism vs concurrency concepts
- Asynchronous programming (asyncio)- async/- awaitkeywords
- Coroutines and cooperative multitasking
- Async iterators and async generators
- Async comprehensions
- Async context managers (async with)
- Event loop internals (asyncio.get_event_loop, policies)
- Task scheduling (create_task,gather,wait,shield)
- Synchronization primitives (Lock,Event,Semaphore,Condition)
- Exception handling and cancellation (CancelledError)
- Third-party event loops (uvloop,trio,anyio,curio)
- Green threads (greenlet,gevent)
- Background tasks and concurrency with async frameworks
- Integration with threads and processes (to_thread,run_in_executor)
- Async profiling and debugging (aiomonitor,asyncio.run,tracemalloc)
 
 
- Thread-based concurrency (
- Networking- Networking fundamentals- TCP/IP basics
- IP addressing and subnetting (ipaddress)
 
- Low-level networking (socket)- TCP and UDP sockets
- Non-blocking I/O and selectors
- Socket options and timeouts
 
- High-level networking- HTTP protocol basics
- URL handling (urllib,urllib3)
- HTTP clients (requests,httpx,aiohttp)
- WebSockets (websockets,aiohttp,fastapi.websockets)
- Email and SMTP (smtplib,imaplib,poplib,email)
- FTP and SFTP (ftplib,paramiko)
 
- Web application interfaces- WSGI (wsgiref,flask)
- ASGI (fastapi,starlette,aiohttp)
- HTTP servers (http.server,aiohttp.web,uvicorn,hypercorn)
 
- WSGI (
- Networking concurrency- Async sockets (asyncio.start_server,asyncio.open_connection)
- Connection pooling and throttling
- DNS and async resolvers (aiodns)
- SSL/TLS contexts (ssl)
- Performance testing and benchmarking (ab,wrk,locust)
 
- Async sockets (
 
- Networking fundamentals
- Metaprogramming- Metaclasses (type,__new__,__init__)
- Descriptors (__get__,__set__,__delete__)
- Difference between class decorators and metaclasses
- Dynamic class and attribute creation (setattr,getattr)
- Attribute access customization (__getattr__,__getattribute__)
- Decorator-based metaprogramming patterns
- Code generation and reflection (ast,inspect,types)
- Runtime modification of objects (monkey patching, proxy classes)
- Introspection and dynamic imports (importlib,sys.modules)
 
- Metaclasses (
- Context Managers- withstatement semantics
- Built-in context managers (open,decimal.localcontext,threading.Lock)
- contextlibmodule- contextmanagerdecorator
- ExitStack,- redirect_stdout,- suppress
 
- Async context managers (async with,@asynccontextmanager)
- Custom context managers (__enter__,__exit__)
- Resource cleanup and exception safety
- Nested and chained contexts (ExitStack)
 
- Monitoring- Runtime monitoring (sys.monitoring, PEP 669)
- Code tracing (sys.settrace,sys.setprofile)
- Logging and telemetry integration (logging,OpenTelemetry)
- Application performance monitoring (APM) (sentry-sdk,datadog,newrelic)
- Resource usage tracking (resource,psutil)
- System-level inspection (os,platform,tracemalloc)
- Custom metrics and exporters (prometheus_client)
- Distributed tracing (opentelemetry,jaeger-client)
 
- Runtime monitoring (
- Garbage Collection- Reference counting and object lifetime
- gcmodule (manual control, thresholds, debug flags)
- Weak references (weakref,WeakKeyDictionary,WeakValueDictionary)
- Circular reference detection and cleanup
- Finalization and destructors (__del__,atexit)
- Object tracking and introspection (gc.get_objects,gc.get_referrers)
- Memory leaks and object retention analysis (objgraph,pympler)
- Interaction with C extensions and native memory
- Performance tuning and garbage collection strategies (gc.freeze, tuning generations)
 
 
- Async and Concurrency
- Implementation & Distribution- General Environment Tools- Virtual environments (venv,virtualenv)
- Interactive environments (jupyter,IPython)
- Package installation and dependency management (pip,requirements.txt)
- Modern build systems (pyproject.toml,poetry,flit,uv,pdm)
- Conda environments (conda,mamba)
- Python version management (pyenv,asdf,tox)
- Dependency resolution and locking (pip-tools,poetry.lock,uv.lock)
- Environment reproducibility (pip freeze,conda env export)
- Project isolation and sandboxes (direnv,nix-shell)
- Environment variables and configuration management (dotenv,pydantic-settings)
 
- Virtual environments (
- Implementations- Building Python from source (configure, make, installation paths)
- CPython internals and command-line interface- Bytecode compilation (dis,compile)
- Interpreter flags (-O,-m,-B,-I)
- Debug builds and symbol tables
 
- Bytecode compilation (
- Alternative implementations- PyPy(JIT compiler and performance profiling)
- Cython(C extensions,- pyximport,- cythonize)
- Codon(Python-to-native compiler for performance)
- MicroPython(embedded systems)
- RustPython,- GraalPy,- Jython,- IronPython
 
- Binary distribution- pyinstaller(single-file executables)
- cx_Freeze(cross-platform packaging)
- nuitka(C++ compilation and optimization)
- shiv,- pex(self-contained zip apps)
 
- Web runtimes and browser targets- PyScript(Python in HTML, WASM-based)
- Pyodide(WASM + scientific stack)
- Brython(transpiles Python to JavaScript)
- Transcrypt(typed Python → JS transpiler)
 
- Embedding Python in other languages- C API (Python.h)
- ctypesand- cffi
- Integration in C/C++, Rust, and Go projects
- Cross-language execution (subprocess,ffi,wasmer)
 
- C API (
- Extending Python with native code- C extensions and modules
- pybind11,- Cython,- cffi
- Shared libraries and ABI compatibility
 
 
- Packaging- Packaging process- setuptoolsand- setup.py
- setup.cfg(declarative configuration)
- pyproject.toml(PEP 517/518 compliant builds)
- Build artifacts (sdist,wheel)
- Distribution upload (twine,flit publish,poetry publish)
- Package signing and verification (gpg,twine --sign)
 
- Package indexes- PyPI(official package index)
- TestPyPI(staging environment)
- pypiserver(self-hosted registries)
- Private and enterprise registries (devpi,artifactory,nexus)
 
- Versioning and metadata- Semantic versioning (PEP 440)
- Metadata and classifiers (setup.cfg,pyproject.toml)
- Dynamic versioning tools (setuptools_scm,bumpver,versioneer)
 
- Dependency management and resolution (pip,resolverlib)
- Package auditing and signing (pip-audit,gpg,sigstore)
- Cross-platform builds and reproducibility (build,cibuildwheel,tox)
 
- Packaging process
- CLI Apps- CLI argument parsing- argparse(std lib)
- optparse(legacy)
- getopt(low-level)
 
- Command frameworks- click
- typer
- python-fire
 
- Console utilities- colorama(color support)
- rich(formatting, live tables, progress bars)
- prompt_toolkit,- inquirer(interactive prompts)
 
- CLI packaging- Entry points (console_scripts)
- Shell completion generation
- Cross-platform support (os,shutil.which)
 
- Entry points (
 
- CLI argument parsing
- Graphical Apps- GUI frameworks- tkinter(standard library)
- PyQt5,- PySide6(Qt bindings)
- Kivy,- KivyMD(mobile and touch support)
- wxPython(native widgets)
- Dear PyGui(immediate-mode GUI)
- PyGObject,- GTK3/4
 
- Game and multimedia frameworks- pygame,- arcade,- ursina
 
- GUI builders and design tools (Qt Designer,Glade)
- Cross-platform packaging (pyinstaller,briefcase)
 
- GUI frameworks
- Internationalization (i18n) and Localization (l10n)- Text translation and message catalogs- gettext(std lib)
- babel(third-party)
- polib(PO file management)
 
- Locale management (locale,setlocale, environment vars)
- Number, date, and currency formatting- babel.numbers,- babel.dates
- locale.format_string
 
- Unicode normalization and encoding handling (unicodedata)
- Time zones and calendars (zoneinfo,dateutil)
- Multi-language configuration and packaging (gettext,pybabel extract/update)
 
- Text translation and message catalogs
 
- General Environment Tools
- Internals- Python Compiler & Interpreter- Abstract Syntax Tree (AST) (ast,compile)
- Bytecode inspection (dis,opcode)
- Tokenization and lexing (tokenize,token)
- Lexical analysis and parsing pipeline
- Symbol tables and scoping (symtable)
- Compilation stages (source → AST → bytecode)
- Evaluation loop (CEval)
- Frame objects (sys._getframe,inspect)
- Code objects (__code__,types.CodeType)
- Bytecode caching (.pyc,__pycache__)
- Optimization flags (-O,-OO)
- Dynamic code execution (eval,exec)
- Compile-time constants and folding
- Abstract interpretation and future statements (__future__)
 
- Abstract Syntax Tree (AST) (
- Execution Model- Call stack and stack frames
- Function call mechanics and parameter passing
- Coroutine scheduling and task switching (asyncio,trio)
- Import execution and module caching (importlib,sys.modules)
- Global state and thread safety (threading,contextvars)
- Context variables (PEP 567)
- Event loop interaction and scheduling
- Exception propagation across async boundaries
- Interpreted vs compiled function calls (builtin_function_or_method)
- Trampolines and frame reuse optimizations
- Generator and async state machines
 
- Data Model- ctypesand C-compatible structures
- Object memory layout and slots (__slots__)
- PyObject structure and reference model
- Type objects and inheritance hierarchy
- Method resolution order (C3 linearization)
- Data vs non-data descriptors (__get__,__set__,__delete__)
- Dynamic attribute resolution (__getattr__,__getattribute__)
- Numeric and sequence protocols (__add__,__getitem__, etc.)
- Callable protocol (__call__)
- Context manager protocol (__enter__,__exit__)
- Iterator protocol (__iter__,__next__)
- Coroutine protocol (__await__,__anext__)
- Mapping, hashing, and equality semantics (__hash__,__eq__)
 
- Python C Model- CPython C API (Python.h)
- PyObjectstructure and reference counting
- Extending Python with C modules (PyModuleDef,PyMethodDef)
- Embedding Python in C/C++ applications (Py_Initialize,PyRun_SimpleString)
- Argument parsing (PyArg_ParseTuple,Py_BuildValue)
- Error and exception handling (PyErr_SetString,PyErr_Occurred)
- Memory management (Py_INCREF,Py_DECREF)
- GIL internals and state management (PyGILState_Ensure,PyEval_SaveThread)
- Frame and thread state (PyThreadState,PyInterpreterState)
- C API headers (object.h,listobject.h,dictobject.h)
- Subinterpreters and isolated runtimes (_xxsubinterpreters, PEP 684)
- Cython bridge and interoperability (cython,pyximport)
- ABI stability and limited API (Py_LIMITED_API, PEP 384)
- Capsule and pointer exchange (PyCapsule)
 
- CPython C API (
- Extensions- Protocols and Foreign Function Interfaces (FFI)- ctypes
- cffi
- pybind11
- SWIG
 
- Inter-language data marshaling and memory safety
- Extending and embedding with native languages- C
- C++
- Rust (PyO3,rust-cpython,maturin)
- Go (gopy,cgo,pygo)
 
- WASM integration (wasmer,wasmtime-py)
- Cross-language RPC frameworks (grpc,capnp,flatbuffers)
- Plugin systems and dynamic loading (importlib.machinery,ctypes.CDLL)
- Binary interface and FFI debugging (gdb,valgrind,lldb-python)
 
- Protocols and Foreign Function Interfaces (FFI)
 
- Python Compiler & Interpreter
2 - JavaScript y TypeScript
- Introducción- Historia y Evolución de JavaScript y TypeScript- Origen de JavaScript en el navegador (Brendan Eich, 1995)
- Estándar ECMAScript y rol de ECMA International
- Comité TC39 y proceso de propuestas
- Evolución de ECMAScript (ES3, ES5, ES2015+)
- Aparición de TypeScript como superconjunto tipado de JavaScript
- Filosofía de TypeScript: tipado estático opcional y verificación en tiempo de compilación
- Compatibilidad progresiva con JavaScript existente
- Influencia de C#, Java y lenguajes estáticos en el diseño de TypeScript
- Adopción en backend, frontend y full-stack
- Impacto de Node.js en el uso de JavaScript fuera del navegador
- Expansión del ecosistema: Deno, Bun y runtimes alternativos
- Evolución del tooling: bundlers, transpiladores, linters
- Uso de TypeScript en grandes bases de código y monorepos
- Transición de JavaScript clásico basado en funciones a clases, módulos y async/await
- “Any valid JavaScript is valid TypeScript” como principio de diseño
 
- Versiones y Compatibilidad- Versionado semántico de TypeScript
- Versionado de Node.js y compatibilidad con ECMAScript
- targety- liben- tsconfig.json
- Downleveling y transpilación (ESNext → ES5)
- Compatibilidad con navegadores y entornos legacy
- Polyfills y core-js
- Características propuestas (stage 0–4) y su adopción en TypeScript
- Estabilidad de sintaxis frente a features experimentales
- Tipos DOM según versión de @types/web
- Estrategias de upgrade mayor de TypeScript en proyectos grandes
- Compatibilidad entre módulos ES (import/export) y CommonJS (require/module.exports)
- Detección de versión en runtime (process.versions,navigator.userAgent)
- Dependencia en especificación del Event Loop del host (browser vs Node)
- Compatibilidad entre distintos bundlers y empaquetadores
- Compatibilidad entre ts-node,tsx,babel,esbuild
 
- Instalación del Entorno- Instalación de Node.js (instalador oficial)
- Instalación con nvm/fnm/asdf
- Instalación de Deno
- Instalación de Bun
- npmcomo package manager por defecto
- yarnclásico y- yarn modern
- pnpmy almacenamiento global basado en content-addressable store
- Instalación global de typescript(npm install -g typescript)
- Instalación local de typescriptcomo dependencia de desarrollo
- Verificación de node,npm,tscen PATH
- Configuración inicial de proyecto (npm init,pnpm init,yarn init)
- Inicialización de TypeScript (tsc --init)
- Estructura de carpetas recomendada (src,dist,test)
- Soporte multiplataforma (Windows, macOS, Linux)
- Contenedores y devcontainers (Dockerfile,devcontainer.json)
 
- Ejecución de Código y REPL- Ejecución directa de JavaScript con node archivo.js
- REPL interactivo de Node.js
- Ejecución directa de TypeScript con ts-node
- Ejecución directa de TypeScript con tsx
- Ejecución TypeScript nativa en Deno
- Ejecución TypeScript nativa en Bun
- Compilación explícita con tscy luego ejecución con Node.js
- Flags comunes de Node (--inspect,--require,--experimental-*)
- Flags comunes de ts-node/tsx
- Uso de importaciones ES en Node ("type": "module")
- Uso de la consola del navegador como entorno interactivo
- Ejecución en entornos sandbox (CodeSandbox, StackBlitz)
- I/O estándar (stdin,stdout,stderr) en Node
- Pipes y redirección de salida en CLI de Node
- Hot reload durante desarrollo con nodemon,ts-node-dev
 
- Ejecución directa de JavaScript con 
- IDEs y Editores- Visual Studio Code y el Language Service de TypeScript
- WebStorm / IntelliJ IDEA con soporte TypeScript integrado
- Neovim con LSP (typescript-language-server)
- Vim con coc.nvimy extensiones TS
- Emacs con lsp-modeytide
- Autocompletado, IntelliSense y sugerencias de tipo
- Navegación de código (Go to Definition,Find References)
- Refactorizaciones automáticas (renombrar símbolos, extraer funciones)
- Soporte de linters (ESLint) integrado en el editor
- Formato automático con Prettier
- Integración de debuggers (Chrome DevTools, Node Inspector)
- Integración con Git y control de versiones
- Snippets y plantillas de código repetitivo
- Diagnóstico en tiempo real del compilador de TypeScript
- Entornos de notebooks JS/TS (Quokka, Jupyter con kernels JS)
 
- Entornos de Proyecto y Aislamiento- node_modulescomo entorno aislado por proyecto
- package.jsoncomo descriptor de entorno
- package-lock.json,- yarn.lock,- pnpm-lock.yaml
- Resolución determinista de dependencias
- Workspaces (yarn workspaces,pnpm workspaces,npm workspaces)
- Monorepos y herramientas (turbo,nx,lage)
- Separación entre dependencias de runtime (dependencies) y de build (devDependencies)
- Scripts de proyecto (npm run,pnpm run)
- Estrategias de versionado interno en monorepos
- Aislamiento por versión de Node usando nvmdentro del proyecto
- Contenedores reproducibles para desarrollo (Docker Compose)
- Variables de entorno (.env,dotenv,process.env)
- Reproducibilidad de builds en CI
- Caché incremental de transpilación y bundling
- Estándares de estructura de carpetas (src,lib,dist,scripts)
 
- Gestión de Paquetes y Dependencias- npm install,- npm update,- npm uninstall
- yarn add,- yarn remove,- yarn upgrade
- pnpm add,- pnpm remove,- pnpm update
- Versiones fijas vs rangos (^,~,*)
- Dependencias opcionales y peer dependencies
- Resolución de conflictos de versiones
- Auditoría de dependencias (npm audit,pnpm audit)
- Firma y verificación de integridad (shasum)
- Repositorios privados (Artifactory, Verdaccio)
- Instalaciones link/workspacelocales
- Publicación de paquetes internos
- Tipos externos (@types/*) para librerías JS puras
- Mantenimiento de typesVersionsen librerías TypeScript
- Dependencias transpiladas vs dependencias puras ESM
- Gestión de binarios nativos precompilados
 
- Herramientas del Ecosistema Web- Bundlers (webpack,esbuild,rollup,vite)
- Compilación incremental y HMR (Hot Module Replacement)
- Transformación con Babel
- Minificación y tree-shaking
- Code splitting y lazy loading
- Sourcemaps y depuración en el navegador
- Polyfills automáticos según destino
- Linter y formateador integrados en pipeline de build
- Pruebas unitarias integradas en bundlers (vitest)
- Empaquetado para navegadores antiguos
- Empaquetado para runtimes edge
- Bundles isomórficos (SSR + CSR)
- Configuración multi-target (web, node, worker)
- Generación de tipos .d.ts
- Publicación de librerías como ESM y CJS
 
- Bundlers (
 
- Historia y Evolución de JavaScript y TypeScript
- Fundamentos- Tipos Básicos y el Sistema de Tipos de TypeScript- Declaración de variables con let,const,var
- Inferencia de tipos
- Anotaciones de tipo explícitas
- Tipos primitivos (string,number,boolean)
- Tipos null,undefined,void
- Tipos bigintysymbol
- Tipos literales ("ok",42,true)
- Tipos unión (|)
- Tipos intersección (&)
- Tipos any,unknown,never
- Alias de tipo (type)
- Interfaces (interface)
- Tuplas ([T, U])
- Enums (enum,const enum)
- Objetos con propiedades opcionales y readonly
 
- Declaración de variables con 
- Operadores- Operadores aritméticos (+,-,*,/,%,**)
- Operadores de asignación compuesta (+=,-=,*=, etc.)
- Operadores de comparación (===,!==,<,>,<=,>=)
- Operadores lógicos (&&,||,!)
- Operador de fusión nula (??)
- Operador de encadenamiento opcional (?.)
- Operadores bitwise (&,|,^,~,<<,>>,>>>)
- Operador ternario (cond ? A : B)
- Operadores de propagación (...spread)
- Destructuración de arrays y objetos
- Precedencia y asociatividad de operadores
- Cortocircuito en ||,&&y??
- Coerción implícita con ==vs comparación estricta===
- deletepara eliminar propiedades de objetos
- iny- instanceofpara verificación de pertenencia y tipo
 
- Operadores aritméticos (
- Control de Flujo- if,- else if,- else
- switchy- case
- for,- for...of,- for...in
- whiley- do...while
- breaky- continue
- Etiquetas de bucle (label:)
- Bloques con {}y alcance léxico
- Guard clauses y retornos tempranos
- throwpara interrupción de flujo
- Narrowing de tipos dentro de condiciones
- Type guards personalizados con predicados (param is Tipo)
- Flujo de control basado en in,typeof,instanceof
- Exhaustividad en switchconnever
- Assertions de no-nulo (!)
- Patrones de control de flujo funcional (array.filter,array.map)
 
- Funciones- Declaraciones de función (function foo() {})
- Funciones flecha (const f = () => {})
- Parámetros tipados
- Parámetros opcionales (param?: T)
- Parámetros con valor por defecto
- Parámetros rest (...args: T[])
- Tipado de retorno explícito
- Funciones que retornan void
- Funciones que nunca retornan (never)
- Sobrecarga de funciones (signaturas múltiples)
- Funciones genéricas (<T>)
- Clausuras y entorno léxico
- thisy binding explícito
- call,- apply,- bind
- Funciones async (async function)
 
- Declaraciones de función (
- Errores y Excepciones- try,- catch,- finally
- Lanzar errores (throw new Error())
- Tipado del valor capturado en catch
- Errores síncronos vs rechazos de Promesas
- Errores personalizados (class MiError extends Error)
- Rechazo de Promesas sin catch
- Manejo de errores en funciones async/await
- Promise.catchy- try/catchasync
- Errores de tipo (TypeError,RangeError, etc.)
- Assertions de tipo mal usadas y errores en runtime
- Enmascaramiento de errores con any
- Estrategias de logging de errores
- Errores fatales en Node (process.exit)
- Manejo centralizado de errores en aplicaciones web
- Errores recuperables vs no recuperables
 
- Entorno Global y Builtins- Objeto global (globalThis)
- Objetos estándar (Object,Array,Map,Set)
- Mathy operaciones numéricas
- Datey tiempo en milisegundos
- JSON(parse/stringify)
- consolepara salida estándar
- Promisecomo primitiva de async
- Symbolcomo clave única
- BigIntpara enteros grandes
- RegExppara expresiones regulares
- Errory subclases integradas
- URLy- URLSearchParams
- Intle internacionalización
- TextEncoder/- TextDecoder
- AbortControllery cancelación
 
- Objeto global (
- Módulos e Imports- Módulos ES (import,export)
- Importaciones por nombre y por defecto
- Reexportaciones (export * from)
- Import dinámico (import())
- Namespaces internos en TypeScript (namespace, legado)
- CommonJS (require,module.exports)
- Uso de "type": "module"en Node
- Resolución de rutas relativas y absolutas
- Alias de paths en tsconfig.json(paths,baseUrl)
- Barrel files (index.ts)
- Separación de tipos y valores en imports (import type)
- export typepara exponer sólo tipos
- Árbol de dependencias y ciclos
- Side effects de módulos
- División lógica por capas (domain, infra, ui)
 
- Módulos ES (
- Plataforma y Entorno de Ejecución- DOM y APIs del navegador
- Node.js y APIs del sistema de archivos
- Web Workers y aislamiento de hilos en navegador
- Service Workers y ciclo offline
- APIs WebCrypto
- fetchy red HTTP
- Web Storage (localStorage,sessionStorage)
- IndexedDB
- Streams en navegador
- Streams en Node (fs.createReadStream)
- Timers (setTimeout,setInterval)
- Event Loop (cola de tareas y microtareas)
- APIs de proceso en Node (process,os)
- Variables de entorno y configuración
- Interoperabilidad entre frontend y backend con el mismo lenguaje
 
 
- Tipos Básicos y el Sistema de Tipos de TypeScript
- Estructuras y Manipulación de Datos- Estructuras de Datos Fundamentales- Arrays dinámicos (Array<T>)
- Tuplas tipadas en TypeScript
- Objetos literales como mapas clave-valor
- Mapy- WeakMap
- Sety- WeakSet
- Pilas (stack) basadas en arrays
- Colas (queue) basadas en arrays
- Colas dobles (deque) con estructuras circulares
- Árboles y tries implementados en objetos/Map
- Grafos representados con listas de adyacencia
- Tablas hash y colisiones (visión conceptual)
- Inmutabilidad estructural con readonly
- Clonado superficial vs profundo (structuredClone)
- Comparación por referencia vs comparación por valor
- Uso de Object.freeze
 
- Arrays dinámicos (
- Iteradores y Generadores- Protocolo iterable ([Symbol.iterator])
- Protocolo async iterable ([Symbol.asyncIterator])
- for...ofpara recorrer iterables
- Generadores (function*)
- Generadores async (async function*)
- yieldy comunicación bidireccional
- Iteradores personalizados en clases
- Consumo manual de iteradores (next())
- Generadores como reemplazo de estados internos complejos
- Streams de datos perezosos
- Composición de generadores
- Uso de generadores para testing y mocking
- Adaptación de callbacks a iterables async
- Backpressure conceptual en flujos iterables
- Comparación entre for...ofy métodos de array
 
- Protocolo iterable (
- Arrays y Métodos Funcionales- push,- pop,- shift,- unshift
- slicey- splice
- mappara transformación
- filterpara selección
- reducepara acumulación
- somey- every
- findy- findIndex
- flaty- flatMap
- Ordenamiento con sort
- Comparadores personalizados en sort
- Copia inmutable con el spread [...arr]
- Particionamiento y groupBy(patrones comunes)
- Deduplicación usando Set
- Zipping y combinaciones de arrays
- Arrays tipados (Uint8Array,Float32Array, etc.)
 
- Manipulación de Strings y Texto- Literales de string simples y template strings
- Concatenación y +
- Substrings y slice
- Búsqueda (indexOf,includes,startsWith,endsWith)
- Reemplazo (replace,replaceAll)
- División (split)
- Unión (join) desde arrays
- Normalización Unicode (normalize)
- Interpolación con template literals
- Construcción incremental de strings (buffers de strings)
- Codificación y decodificación (TextEncoder,TextDecoder)
- Serialización y deserialización JSON (JSON.stringify,JSON.parse)
- Escapado seguro para HTML (patrones)
- Plantillas etiquetadas (tagged templates)
- Internacionalización de texto con Intl.MessageFormat(visión general)
 
- Expresiones Regulares- Literales /patrón/flags
- Constructor new RegExp()
- Flags comunes (g,i,m,s,u,y)
- Grupos de captura
- Grupos con nombre ((?<name>...))
- Lookahead y lookbehind
- Cuantificadores (+,*,{m,n})
- Límites de palabra y línea (\b,^,$)
- Métodos test,exec
- Métodos de string que aceptan regex (match,matchAll,replace,split)
- Rendimiento y backtracking excesivo
- Sanitización de entradas dinámicas en regex
- Comparación regex vs parseadores dedicados
- Construcción dinámica de patrones seguros
- Patrones comunes para validación de datos
 
- Literales 
- Archivos, Streams y Datos Binarios- Sistema de archivos en Node (fs.readFile,fs.writeFile)
- Streams legibles y escribibles en Node (fs.createReadStream)
- Pipes (readable.pipe(writable))
- Buffers (Buffer)
- Lectura de binarios (Buffer,Uint8Array)
- Escritura incremental de logs y datos
- Manejo de archivos grandes sin cargar todo a memoria
- Bloby- Fileen el navegador
- Descarga de archivos en navegador (creación de enlaces dinámicos)
- Subida de archivos con FormData
- fetchcon- ReadableStream
- Streams web (ReadableStream,WritableStream,TransformStream)
- Compresión y descompresión en Node (módulo zlib)
- Archivos temporales y directorios temporales
- Permisos y rutas en distintos sistemas operativos
 
- Sistema de archivos en Node (
- Datos Especializados y Formatos- CSV (parseo manual y librerías)
- JSON estructurado
- YAML y TOML en configuración
- XML y DOMParser
- HTML como árbol DOM
- Markdown como formato de contenido
- Binary blobs (imágenes, audio)
- ArrayBuffer y DataView
- Estructuras binarias con offsets fijos
- WebSockets como canal binario o texto
- IndexedDB como base de datos del navegador
- LocalStorage / SessionStorage como key-value store
- Cache Storage en Service Workers
- Serialización estructurada (structuredClone)
- Mensajería entre hilos (postMessage)
 
- Tiempo y Fechas- Objeto Date
- Timestamp en milisegundos desde Epoch
- Date.now()y mediciones rápidas
- Formateo manual de fechas
- Librerías de fechas (luxon, date-fns)
- Zonas horarias e Intl.DateTimeFormat
- Parseo de cadenas de fecha
- Medición de rendimiento con performance.now()
- setTimeouty temporizadores
- setIntervaly loops periódicos
- Cancelación de temporizadores (clearTimeout,clearInterval)
- Animaciones ligadas a requestAnimationFrame
- Sincronización de relojes entre cliente y servidor
- Cuestiones de DST y horario de verano
- Desfase entre reloj del sistema y reloj del servidor
 
- Objeto 
 
- Estructuras de Datos Fundamentales
- Programación Estructurada y Modular- Programación Orientada a Objetos (POO) en TypeScript/JavaScript- Clases (class)
- Constructores (constructor)
- Propiedades de instancia
- Propiedades estáticas
- Métodos de instancia y estáticos
- Herencia con extends
- supery sobreescritura de métodos
- Modificadores de acceso (public,private,protected)
- Campos readonly
- Campos opcionales en clases
- Clases abstractas (abstract class)
- Métodos abstractos
- Interfaces como contratos de clases
- Implementación múltiple de interfaces
- Mixins y composición en lugar de herencia múltiple
 
- Clases (
- Decoradores y Metadatos- Decoradores de clase
- Decoradores de método
- Decoradores de propiedad
- Decoradores de parámetro
- Metadata Reflection (reflect-metadata)
- Patrones de inyección de dependencias con decoradores
- Decoradores para validación
- Decoradores para logging y trazas
- Decoradores para binding automático de this
- Decoradores en frameworks (Angular, NestJS)
- Estado de estandarización de decoradores TC39
- Implicancias en tree-shaking y minificación
- Uso de decoradores en tests y mocks
- Decoradores y compatibilidad con emitDecoratorMetadata
- Consideraciones de rendimiento y orden de evaluación
 
- Módulos, Capas y Arquitectura- Patrones de organización por dominio
- Patrones de organización por tipo (controllers, services, utils)
- Capas de infraestructura, dominio y aplicación
- Capas de UI, lógica y acceso a datos
- Módulos ES y carga estática
- Carga dinámica con import()
- CommonJS en entornos legacy
- Barrel modules (index.ts)
- Separación entre tipos y valores (import type)
- Evitar dependencias circulares
- Namespaces internos (histórico en TS)
- API pública vs detalles internos
- Versionado semántico de módulos internos
- Gestión de rutas absolutas con pathsentsconfig.json
- Monorepos con múltiples paquetes versionados
 
- Logging y Observabilidad- console.log,- console.warn,- console.error
- Loggers estructurados (pino, winston)
- Niveles de log (debug, info, warn, error)
- Serialización segura de objetos en logs
- Formato JSON para logs machine-readable
- Logging en el navegador vs logging en Node
- Redacción de datos sensibles en logs
- Logs de rendimiento y tiempos de respuesta
- Integración con sistemas externos (APM)
- Trazas distribuidas (traceId, spanId)
- Métricas y contadores personalizados
- Alertas basadas en logs
- Integración con console.groupyconsole.table
- Uso de debugnamespaced en Node
- Logging condicional según NODE_ENV
 
- Documentación y Comentarios de Tipo- Comentarios JSDoc
- Etiquetas @param,@returns,@deprecated
- Comentarios de tipo en JavaScript con // @ts-check
- Inferencia de tipos a partir de JSDoc
- TSDoc y convenciones para librerías públicas
- Generación automática de documentación de API
- Documentación en línea para funciones públicas
- Documentación para consumidores externos vs internos
- Comentarios de intención vs comentarios obvios
- Contratos de interfaz y documentación de invariantes
- Versionado de la documentación junto al código
- README técnicos por paquete
- Diagramas de arquitectura en monorepos
- Uso de /** @internal */y visibilidad interna
- Control de documentación para clientes externos en SDKs
 
- Testing- jestcomo framework de pruebas
- vitesty entornos ESM
- mocha+- chai
- uvu,- tapey frameworks minimalistas
- Pruebas unitarias
- Pruebas de integración
- Pruebas de extremo a extremo (E2E)
- Pruebas en navegador con Playwright
- Pruebas de API con Supertest / fetch mockeado
- Snapshots de UI
- Cobertura de código (coverage,istanbul,c8)
- Mocks y espías (jest.fn)
- Fixtures reutilizables
- Tests async/await y control de timers falsos
- Ejecución de tests en CI/CD
 
- Depuración- Debugger en Chrome DevTools
- Debugger en VS Code (launch.json)
- node --inspecty el inspector de Node
- Breakpoints condicionales
- debugger;en el código
- Sourcemaps para mapear TypeScript → JavaScript
- Inspección de pila de llamadas (stack trace)
- Inspección de variables locales en tiempo real
- Watch expressions en el debugger
- Performance Profiler en navegador
- Heap snapshot para memoria
- Análisis de fugas de memoria en Node
- Depuración de Promesas rechazadas
- Seguimiento de eventos async en DevTools
- Depuración remota en contenedores y servidores
 
- Patrones de Diseño y Buenas Prácticas- Programación funcional vs POO en JavaScript moderno
- Patrón módulo
- Patrón fábrica
- Patrón singleton
- Patrón estrategia
- Patrón adaptador
- Patrón fachada
- Patrón decorador (a nivel de objetos)
- Patrón observador (EventEmitter)
- Inyección de dependencias
- Patrón repositorio en capas de datos
- Patrón builder y objetos inmutables
- Patrón middleware (pipelines de funciones)
- Separación de concerns entre dominio y framework
- Diseño orientado a interfaces en TypeScript
 
 
- Programación Orientada a Objetos (POO) en TypeScript/JavaScript
- Estructuras Avanzadas y Programación Funcional- Programación Funcional- Funciones puras
- Inmutabilidad de datos
- Evitar efectos secundarios
- map,- filter,- reducecomo patrones
- Composición de funciones
- Currificación y partial application
- Funciones de orden superior
- Aplicaciones point-free
- Inmutabilidad estructural con readonly
- Patrones de actualización inmutable con spread
- Librerías de FP (Ramda)
- Monads y Either/Result(patrones funcionales)
- Option/- Maybecomo alternativa a- null
- Validación funcional de datos
- Manejo funcional de errores en Promesas
 
- Iterables Avanzados y Generadores- Iteración lazy para eficiencia
- Pipelines de datos con generadores
- Transformaciones paso a paso sin arrays intermedios
- Generadores async para streams remotos
- Consumo incremental de APIs paginadas
- Backpressure conceptual en streams async
- Coordinación de multitarea con generadores
- Implementación de Symbol.iterator
- Implementación de Symbol.asyncIterator
- Reintentos y recolección gradual de datos
- Iteradores infinitos controlados
- Conversión entre generadores y arrays
- Iteración sobre estructuras personalizadas
- for await...ofen flujo async
- Patrones de pausar y reanudar ejecución
 
- Buffers Binarios y Vistas de Memoria- ArrayBuffer
- DataView
- Typed arrays (Uint8Array,Float64Array)
- Interpretación de datos binarios crudos
- Endianness y lectura multibyte
- Construcción de protocolos binarios personalizados
- Conversión entre Buffer(Node) y typed arrays
- Serialización eficiente para red
- WebSockets binarios
- WebRTC DataChannels binarios
- Transferencia de memoria entre hilos (postMessagecontransfer)
- Uso en criptografía y hashing
- Parsing de archivos multimedia
- Procesamiento de audio en tiempo real
- Integración con WebAssembly (memoria compartida)
 
- Rendimiento y Profiling- Micro-optimizaciones vs optimización algorítmica
- Complejidad temporal y espacial en JS/TS
- Perfilador de rendimiento del navegador
- Perfilador de CPU en Node
- Perfilador de heap y memory leaks
- performance.now()y medición precisa
- console.timey- console.timeEnd
- Optimización de loops
- Evitar trabajo innecesario en renders UI
- Evitar bloqueos del Event Loop
- Web Workers para tareas pesadas
- División de código (code splitting)
- Carga diferida (lazy loading)
- Caché de resultados (memoización)
- Optimización de serialización/deserialización JSON
 
- Calidad de Código y Estándares- ESLint
- Reglas de estilo y convenciones del equipo
- Prettier como formateador de código
- Reglas específicas de TypeScript (@typescript-eslint)
- Reglas de seguridad (no eval, noFunctiondinámica insegura)
- Reglas de complejidad ciclomática
- Reglas de longitud de archivo y función
- Detección de dead code
- Análisis estático del flujo de null/undefined
- Revisiones de código (pull requests)
- Hooks de pre-commit (lint-staged,husky)
- Convenciones de nombres (camelCase,PascalCase,UPPER_CASE)
- Convenciones de carpetas (utils,services,components)
- Convenciones para manejo de errores
- Documentación de decisiones arquitectónicas
 
- Seguridad y Criptografía- Modelos de amenaza en aplicaciones web
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)
- Inyección de código en templates
- Validación y sanitización de input
- DOMPurifyy sanitización HTML
- CORS y restricciones de origen
- Content Security Policy (CSP)
- Gestión de tokens y cookies seguras
- Almacenamiento seguro en localStoragevs cookies
- crypto.subtley WebCrypto API
- Hashing y firma digital en el navegador
- Seguridad en Node (fugas de secretos en logs)
- Dependencias vulnerables y npm audit
- Gestión de secretos en variables de entorno
 
- Tipado Avanzado en TypeScript- Tipos genéricos (<T>)
- Restricciones de genéricos (<T extends U>)
- Tipos condicionales (T extends U ? X : Y)
- Tipos inferidos en condicionales (infer)
- Tipos mapeados ({[K in Keys]: ...})
- keyofy manipulación de llaves
- Index signatures ([key: string]: T)
- readonlyen tipos
- Remapeo de modificadores (-readonly,?)
- Utility types estándar (Partial,Required,Pick,Omit)
- Record<K,V>y diccionarios tipados
- ReturnType,- Parameters,- ConstructorParameters
- ThisTypey tipado contextual de- this
- Inferencia contextual en funciones flecha
- Branding y nominal typing (patrón type ID = string & {__brand: "ID"})
 
- Tipos genéricos (
- Validación de Datos y Esquemas- Validación en runtime vs chequeo estático
- Zod y esquemas tipados
- io-tsy decodificación segura
- Validación de requests HTTP
- Validación de respuestas de APIs externas
- Aserciones de tipo (asserts value is Tipo)
- Narrowing manual con validadores
- Serialización segura para persistencia
- Sanitización de datos antes de guardarlos
- Transformaciones de entrada (DTOs)
- Contratos entre capas frontend y backend
- Tipos compartidos entre cliente y servidor
- Versionado de esquemas de datos
- Compatibilidad hacia atrás en APIs
- Migraciones de estructura de datos en el tiempo
 
 
- Programación Funcional
- Concurrencia, Async y Bajo Nivel- Async y Concurrencia en JavaScript- Modelo single-threaded y Event Loop
- Promisecomo unidad básica de async
- async/- await
- Estados de una Promesa (pending, fulfilled, rejected)
- Cadena de Promesas con .then
- Manejo de errores con .catch
- Ejecución paralela con Promise.all
- Ejecución competitiva con Promise.race
- Ejecución tolerante a fallas con Promise.allSettled
- Control de concurrencia con colas y semáforos userland
- Espera activa vs espera pasiva
- Bloqueos del Event Loop y CPU-bound
- Uso de Web Workers para CPU-bound en navegador
- Uso de worker_threadsen Node
- Cancelación cooperativa con AbortController
 
- Networking y Comunicación- fetchy solicitudes HTTP
- XMLHttpRequest(legado)
- WebSockets
- Server-Sent Events (SSE)
- gRPC-Web (patrones)
- Protocolos binarios sobre TCP en Node (net)
- HTTPS en Node (https)
- HTTP/2 y multiplexación
- Tiempo de espera y reintentos
- Política de mismo origen en navegador
- CORS y credenciales
- Serialización y deserialización JSON
- Streaming de respuesta con ReadableStream
- Subida de archivos en trozos (chunked upload)
- APIs en tiempo real y suscripción de eventos
 
- Multithreading, Workers y Paralelismo- Web Workers en navegador
- Dedicated Workers vs Shared Workers
- Transferencia de buffers entre hilos
- SharedArrayBuffer
- Atomicsy sincronización de memoria compartida
- worker_threadsen Node
- Clustering de procesos en Node (cluster)
- Balanceo de carga en múltiples workers
- Comunicación entre workers con postMessage
- Aislamiento de estado y side effects
- Pools de workers
- Limitaciones de acceso al DOM en Web Workers
- Aceleración de tareas pesadas (compresión, hashing)
- Streams entre threads
- Diseño de pipelines paralelos
 
- Metaprogramación y Reflexión- Proxypara interceptar acceso a objetos
- Reflectpara operaciones de bajo nivel
- Definición de propiedades con Object.defineProperty
- Descriptores de propiedad (get,set,enumerable,configurable)
- Object.getPrototypeOfy- Object.setPrototypeOf
- Object.freezey- Object.seal
- Patrón de interceptores y validación dinámica
- Generación dinámica de clases y funciones
- Evaluación dinámica de código (riesgos de eval)
- Serialización y reconstrucción dinámica de objetos
- Decoradores (propuesta TC39) como metaprogramación declarativa
- Metadatos de tipos en runtime (emulación con reflect-metadata)
- Inspección de stack trace y Error.captureStackTrace
- Patrones AOP (aspect-oriented programming) con Proxies
- Instrumentación dinámica para profiling
 
- Gestión de Recursos y Ciclo de Vida- try/finallypara liberar recursos
- Cancelación con AbortController
- Control manual de conexiones abiertas
- Streams y close/destroy
- Suscripciones a eventos y removeEventListener
- Limpieza de setIntervalysetTimeout
- Manejadores de cierre de proceso en Node (process.on("exit"))
- Gestión de sockets abiertos
- Liberación de handles en tests
- Patrones de “destructor” manual en JS
- Patrones usingySymbol.dispose(propuesta)
- Control explícito de sesiones y tokens
- Recursos del DOM (observadores, listeners)
- Evitar fugas de listeners en SPAs
- Limpieza de workers inactivos
 
- Monitoreo, Métricas y Telemetría- console.timey- console.count
- Performance API en navegador
- Node perf_hookspara medición
- Recolección de métricas de latencia
- Recolección de métricas de throughput
- Métricas de uso de memoria
- Métricas de GC y pausas
- Logs estructurados con IDs de correlación
- Trazas distribuidas con headers de tracing
- Exportación de métricas a sistemas externos
- Alertas automáticas en producción
- Health checks y endpoints /health
- Rate limiting y mecanismos antiabuso
- Auditoría de acciones del usuario
- Observabilidad en entornos serverless / edge
 
- Recolección de Basura y Memoria- Modelo de memoria administrada en JS
- Recolección de basura generacional
- Referencias fuertes vs débiles
- WeakMapy- WeakSet
- WeakRefy- FinalizationRegistry
- Fugas de memoria por referencias colgantes
- Fugas de memoria en closures
- Fugas de memoria en listeners no removidos
- Fragmentación de heap
- Trazas de heap en DevTools
- Monitoreo de uso de memoria en Node
- Límites de memoria en entornos serverless
- Impacto de objetos gigantes y arrays densos
- Uso de estructuras inmutables para evitar duplicados grandes
- Pausas de GC y rendimiento en tiempo real
 
- Interoperabilidad con Bajo Nivel y WebAssembly- WebAssembly en el navegador
- Cargar módulos WebAssembly desde JavaScript
- Tipos numéricos de bajo nivel en WebAssembly
- Compartir memoria entre WebAssembly y JS
- Llamar funciones WebAssembly desde JS
- Llamar funciones JS desde WebAssembly
- Uso de WebAssembly para cómputo intensivo
- Integración con librerías compiladas (C/C++/Rust)
- WebAssembly en Node
- Conversión de buffers binarios para FFI
- Overhead de cruce de frontera JS ↔ WASM
- Control de tiempo real y latencia baja
- Seguridad y sandboxing de WebAssembly
- Reutilización de lógica en cliente y servidor vía WASM
- Limitaciones de WebAssembly frente a JS puro
 
 
- Async y Concurrencia en JavaScript
- Implementación y Distribución- Herramientas de Entorno y Configuración- tsconfig.jsony opciones del compilador
- targety nivel de ECMAScript emitido
- moduley formato de salida (ESNext, CommonJS)
- moduleResolutiony resolución de paths
- stricty modo estricto
- noImplicitAny
- strictNullChecks
- esModuleInteropy compatibilidad con CommonJS
- skipLibChecky rendimiento de compilación
- declarationy generación de- .d.ts
- sourceMappara depuración
- outDiry- rootDir
- Configuración por proyecto y references
- Proyectos incrementales (composite)
- pathsy alias internos de importación
 
- Motores e Implementaciones de JavaScript- V8 (Chrome, Node)
- SpiderMonkey (Firefox)
- JavaScriptCore (Safari)
- Chakra (histórico)
- Node.js como runtime en servidor
- Deno como runtime seguro y TS-first
- Bun como runtime y bundler integrado
- Cloudflare Workers / runtimes edge
- Service Workers y ejecución offline en navegador
- Motores en entornos embebidos (Electron)
- JS en entornos móviles híbridos
- Diferencias de API entre runtimes
- globalThiscomo abstracción común
- Límite de memoria y CPU en entornos edge/serverless
- Compatibilidad con módulos ES nativos
 
- Empaquetado, Build y Publicación- webpacky empaquetado tradicional
- rolluppara librerías
- esbuildy builds ultrarrápidos
- vitey desarrollo con HMR
- Transpilación con tsc
- Transpilación con Babel
- Tree-shaking y eliminación de código muerto
- Code splitting dinámico
- Generación de bundles múltiples (cjs, esm, iife)
- Minificación y ofuscación
- Generación de tipos .d.tspara consumidores TS
- Publicación en npm (npm publish)
- Versionado semántico (major.minor.patch)
- Changelogs y releases automatizados
- Publicación de paquetes privados internos
 
- Aplicaciones de Línea de Comando (CLI)- Scripts ejecutables con Node (#!/usr/bin/env node)
- Commander.js para parseo de argumentos
- yargs para CLI declarativas
- process.argvy parseo manual
- Colores y formato en consola (chalk)
- Spinners y progreso visual en CLI
- Entrada interactiva (inquirer)
- Salida estructurada en JSON
- Logs y niveles verbosos (-v,--debug)
- Errores amigables en CLI
- Empaquetado de CLI en un solo archivo
- Distribución como paquete npm global
- Versionado y flags --version
- Comandos compuestos y subcomandos
- Autocompletado de shell (bash/zsh/fish)
 
- Scripts ejecutables con Node (
- Aplicaciones Web y UI- DOM y manipulación directa
- React y componentes funcionales
- JSX y TSX
- Hooks y estado local
- Estado global (Redux, Zustand)
- Context API
- Next.js y renderizado del lado del servidor (SSR)
- Vue con composición y tipado
- Svelte y bindings reactivos
- Web Components y customElements.define
- Shadow DOM y encapsulación de estilos
- CSS Modules / CSS-in-JS
- Accesibilidad (a11y)
- Persistencia de estado en localStorage
- Comunicación con APIs desde la UI
 
- Aplicaciones Móviles, Escritorio y Juegos- React Native
- Expo y flujo móvil con TypeScript
- Capacitor / Ionic para apps híbridas
- Electron para escritorio
- Tauri y runtimes ligeros
- PWAs (Progressive Web Apps)
- Service Workers y caché offline
- Notificaciones push
- Acceso a hardware (sensores, cámara, micrófono)
- APIs de archivos locales en escritorio
- Motores gráficos 2D/3D (Pixi.js, Three.js)
- Animaciones con requestAnimationFrame
- Optimización de render en canvas/WebGL
- Sincronización de estado en tiempo real multijugador
- Distribución en tiendas (App Store / Play Store) vía wrappers
 
- Internacionalización (i18n) y Localización (l10n)- API Intl
- Formato de números y monedas
- Formato de fechas y horarios
- Pluralización de mensajes
- Detección de locale del usuario
- Carga dinámica de mensajes traducidos
- Separación de traducciones por módulo
- Herramientas como i18next
- ICU MessageFormat
- Manejo de RTL (right-to-left)
- Zoned time y horario local
- Sensibilidad cultural en contenido
- Selección dinámica de fuentes y tipografías
- Traducción en build vs runtime
- Estrategias de fallback de idioma
 
- API 
- DevOps, Entrega y Despliegue- Scripts de build en package.json
- Pipelines CI/CD
- Pruebas automáticas en cada commit
- Lint y type-check en CI
- Empaquetado para producción
- Despliegue en servidores Node tradicionales
- Despliegue serverless (AWS Lambda, Vercel Functions)
- Despliegue edge (Cloudflare Workers)
- Contenedores Docker para Node
- Health checks y monitoreo post-deploy
- Rollbacks y despliegues azules/verdes
- Feature flags y rollout gradual
- Versionado de APIs públicas
- Documentación de endpoints y contratos
- Observabilidad continua en producción
 
- Scripts de build en 
 
- Herramientas de Entorno y Configuración
- Internos- Compilador de TypeScript y Proceso de Transpilación- Análisis léxico y parser
- Creación del AST (árbol de sintaxis abstracta)
- Chequeo de tipos estático
- Inferencia de tipos
- Ampliación y reducción de uniones
- Emisión (emit) de JavaScript
- Generación de d.tspara tipos públicos
- Sourcemaps para depuración
- Proyectos incrementales y tsbuildinfo
- Referencias a proyectos (project references)
- Diferencias entre tscy Babel para TS
- Limitaciones del chequeo de tipos en tiempo de compilación
- Eliminación de tipos y anotaciones en el JS emitido
- Transformaciones personalizadas del compilador
- Integración del Language Service en el editor
 
- Modelo de Ejecución de JavaScript- Call stack
- Contextos de ejecución
- Ámbito léxico y closures
- Hoisting de variables y funciones
- Resolución de this
- Strict mode ("use strict")
- Event Loop y cola de tareas
- Microtareas (Promise.then)
- Macrotareas (setTimeout, I/O)
- Repaint / reflow del navegador
- Prioridades de tareas en el navegador
- Bloqueo del main thread
- Interacción entre JS y render de la UI
- Rechazos no manejados de Promesas
- Módulos ES y carga dinámica en runtime
 
- Modelo de Datos y Prototipos- Objetos y prototipos
- [[Prototype]]y- __proto__
- Cadena de prototipos
- Herencia basada en prototipos
- Clases como azúcar sintáctico sobre prototipos
- Descriptores de propiedad
- Enumerabilidad e iteración de llaves
- Object.keys,- Object.values,- Object.entries
- Object.assigny mezcla de objetos
- Sellado y congelamiento de objetos
- Inmutabilidad superficial vs profunda
- Comparación de objetos por referencia
- Serialización con JSON.stringify
- Limitaciones de JSON.stringify(funciones,undefined,Symbol)
- Clonación estructurada (structuredClone)
 
- Optimizaciones del Motor JavaScript- JIT (Just-In-Time compilation)
- Inline caching
- Hidden classes
- Escape analysis
- Optimización de funciones calientes
- Deoptimización cuando cambian los tipos
- Representación interna de números (double,SMI)
- Recolección generacional de basura
- Inlining de funciones
- Eliminación de bounds checks en arrays
- Optimización de bucles apretados
- Penalización por megamorphic call sites
- Estructuras densas vs dispersas en arrays
- Impacto de deleteen arrays
- Costo de capturar closures con muchas variables
 
- Interoperabilidad Nativa y FFI- Addons nativos en Node (N-API)
- Interfaz C/C++ para módulos de alto rendimiento
- Compilación de addons para múltiples plataformas
- Gestión de memoria manual en addons
- Paso de buffers binarios entre JS y C++
- Seguridad y aislamiento al ejecutar código nativo
- Puentes con Rust (Neon, napi-rs)
- Puentes con Go (gobridge)
- Llamadas a librerías del sistema desde Node
- Consideraciones de portabilidad en binarios precompilados
- Versionado de ABI y compatibilidad
- Costos de cruce entre JS y nativo
- Exponer bindings tipados a TypeScript
- Depuración de código nativo integrado
- Distribución de módulos con binarios preconstruidos
 
- Addons nativos en Node (
- WebAssembly y Runtimes Aislados- Compilación de código C/C++/Rust a WebAssembly
- Carga de módulos WASM en navegador
- Carga de módulos WASM en Node
- Memoria lineal compartida con WASM
- Paso de strings y arrays entre JS y WASM
- Ejecución de lógica crítica en WASM
- Aceleración de cómputo matemático
- WASM y sandboxing de seguridad
- Límites de llamadas frecuentes JS↔WASM
- Uso de WASI (interfaz de sistema para WASM)
- Ejecución en entornos serverless edge
- Reutilización de librerías nativas vía WASM
- Perfilado de rendimiento en WASM
- Integración con Web Workers para aislamiento
- Futuro de WASM en aplicaciones web complejas
 
- Estándares, Propuestas y Futuro del Lenguaje- Proceso de propuesta TC39 (stages 0–4)
- Nuevas sintaxis del lenguaje
- Nuevas APIs estándar del runtime
- Decoradores estandarizados
- Records y Tuples inmutables (propuestas)
- Patrones de coincidencia estructural (pattern matching)
- Tipos sellados y exhaustividad
- Registros inmutables para datos seguros
- Tipos para excepciones y unknownseguro
- Campos privados #en clases
- Módulos nativos en el navegador sin bundler
- Evolución de importdinámico y lazy
- Nuevos primitivos de sincronización
- APIs criptográficas más ricas en WebCrypto
- Estandarización de APIs de streaming y backpressure
 
- Límites y Buenas Prácticas de Arquitectura- Separación entre lógica de dominio y capas de infraestructura
- Evitar acoplamiento a frameworks
- Diseñar para testabilidad
- Manejo centralizado de configuración
- Manejo centralizado de errores
- Límite claro entre cliente y servidor
- Reutilización de tipos entre frontend y backend
- Versionado de contratos de API
- Estrategias de backward compatibility
- Limpieza de código muerto y flags experimentales
- Migraciones de datos controladas
- Monitoreo desde el inicio del proyecto
- Hardening de seguridad como requisito base
- Automatización de calidad en CI/CD
- Cultura de documentación viva y mantenible
 
 
- Compilador de TypeScript y Proceso de Transpilación
3 - Rust
- Introduccion- Historia de Rust- Orígenes en Mozilla Research (Graydon Hoare, 2006–2010)
- Evolución de prototipos tempranos a Rust 0.x
- Lanzamiento de Rust 1.0 (2015)
- Consolidación de la estabilidad del lenguaje y del compilador (rustc)
- Filosofía de seguridad de memoria sin garbage collector
- Filosofía de concurrencia sin miedo (“fearless concurrency”)
- Influencia de Cyclone, ML, C++ y el ecosistema de sistemas
- Participación comunitaria y apertura del desarrollo
- Migración desde la sintaxis antigua (~,@,&) hacia el modelo actual de ownership
- Adopción industrial en sistemas embebidos, backend de alto rendimiento y navegadores
- Rol de Servo y el motor de renderizado experimental
- Influencia de Rust en otros lenguajes de sistemas
 
- Ediciones de Rust y Compatibilidad- Edición 2015
- Edición 2018
- Edición 2021
- Planificación de ediciones futuras (por ejemplo 2024)
- Ediciones vs versiones del compilador (rustc)
- Estabilidad del lenguaje y promesa de no romper código estable
- Estabilidad de la librería estándar (std) y API pública
- Uso de lints para migración entre ediciones
- Modo cargo fix --editiony migración asistida
- Compatibilidad cruzada entre crates de distintas ediciones
- Feature flags experimentales en nightly
- #![feature(...)]y límites de estabilidad
- Cambios de sintaxis entre ediciones
- Cambios en el sistema de módulos entre ediciones
- Cambios en async/awaitytryoperator entre ediciones
- Cambios en paths relativos y absoluta vs crate::
 
- Instalación de Rust- rustupcomo herramienta oficial de instalación
- Canales stable,beta,nightly
- Instalación en Windows (MSVC vs GNU toolchain)
- Instalación en macOS (homebrew, pkg oficial)
- Instalación en Linux (gestores de paquetes vs rustup)
- Añadir componentes (rustfmt,clippy)
- rustup component add
- Targets de compilación cruzada (rustup target add)
- Configuración del linker para cross-compiling
- Toolchains específicos por proyecto (rust-toolchain.toml)
- Versiones fijadas para CI
- Perfiles corporativos y espejos internos de toolchain
- Instalar cargoen entornos mínimos
- Modo offline y caché local de crates
 
- Ejecución de Código Rust y Flujo de Trabajo- rustc archivo.rs
- cargo new
- cargo init
- cargo build
- cargo run
- cargo check
- cargo testbásico
- cargo benchbásico
- cargo doc --open
- Flags comunes de compilación (--release,--verbose)
- Perfiles devyrelease
- Nivel de optimización (-C opt-level)
- RUSTFLAGSy configuración avanzada del compilador
- cargo clippyy análisis estático
- REPLs experimentales (evcxr)
- Scripts rápidos y prototipos con cargo-script
- Uso del Playground de Rust
- Redirección de stdin/stdout/stderr en binarios Rust
 
- IDEs y Editores de Código- rust-analyzery protocolo LSP
- VS Code con rust-analyzer
- IntelliJ Rust / CLion
- Vim / Neovim con LSP
- Emacs (lsp-mode,eglot)
- Autoformato con rustfmt
- Sugerencias y acciones rápidas de clippy
- Navegación por definiciones y go to definition
- Renombrado simbólico seguro (rename refactor)
- Depuración con lldb
- Depuración con gdb
- Mapas de memoria y stepping a nivel de instrucción
- Integración con CodeLLDB en VS Code
- Integración con herramientas de profiling
- Soporte de test integrado en el IDE
- Integración con cargo watchpara recarga continua
 
- Gestión de Dependencias y Entornos- cargocomo build system y gestor de dependencias
- Cargo.toml
- Cargo.lock
- Versionado semántico en dependencias ("1.2","^1.2","~1.2")
- Dependencias opcionales (optional = true)
- Features activables por crate
- Workspaces de Cargo
- Herencia de workspace en Cargo.toml
- Dependencias locales (path =)
- Dependencias desde Git
- Overrides de versiones ([patch])
- Mirrors y registries privados
- Vendorización de crates (cargo vendor)
- Caché local de compilación incremental
- Reproducibilidad entre entornos
- Compilación determinista para entrega binaria
- Bloqueo de versiones en CI
- Auditoría de dependencias (cargo audit)
 
- Distribución de Crates- Crates binarios
- Crates de librería
- Crates proc-macro
- Crates no_std
- Crates FFI (cdylib,staticlib)
- Publicación en crates.io
- cargo publish
- cargo yank
- Versionado semántico responsable
- Metadatos obligatorios en Cargo.toml
- Licencia y license/license-file
- readmey documentación pública
- Keywords y categorías
- exclude/- include
- Seguridad de la cadena de suministro
- Firmas y verificación de integridad
- Auditoría de licencias (cargo deny)
- Revisión por pares y mantenimiento comunitario
 
- Herramientas Complementarias- rustfmt(formato)
- clippy(linter)
- cargo doc(documentación)
- cargo test(testing)
- cargo bench(benchmarking)
- cargo profile/ perfiles de rendimiento
- cargo tree(árbol de dependencias)
- cargo metadata
- cargo install
- cargo uninstall
- cargo run --release
- cargo build --target
- cargo fix
- cargo fmt
- cargo clippy --fix
- Integración con CI/CD
- Integración con contenedores
- Integración con sistemas de empaquetado nativo
- Reproducibilidad en builds herméticos
- Automatización con Makefileyjust
 
 
- Historia de Rust
- Fundamentos- Tipos de Datos Básicos- Variables y let- Declaración con inferencia de tipo
- Anotación explícita de tipo
- Mutabilidad con mut
- Sombras (shadowing) y redeclaración
- Variables temporales y scope de bloque
- constpara constantes en tiempo de compilación
- staticy- static mut
 
- Booleanos (bool)
- Tipos numéricos escalares- Enteros con signo (i8,i16,i32,i64,i128,isize)
- Enteros sin signo (u8,u16,u32,u64,u128,usize)
- Flotantes (f32,f64)
- Literales numéricos con separadores _
- Conversión entre anchos de entero
- Casting con as
- Operaciones “checked”, “wrapping”, “saturating”
- Módulo std::num
- Rangos y límites (MIN,MAX)
 
- Enteros con signo (
- Caracteres y texto- charcomo escalar Unicode
- Literales de carácter
- &str(slice de string inmutable)
- String(buffer dinámico UTF-8)
- Conversión entre &stryString
- String::fromy- .to_string()
- Indexación y slicing seguro en UTF-8
- Formato con macros (format!,println!)
- Cow<'a, str>
- OsStry- OsString
- Pathy- PathBuf
 
- Tuplas- Tuplas con nombre posicional
- Tuple structs
- Desestructuración de tuplas
- Retorno múltiple con tuplas
- Tupla vacía ()
- ()como tipo unit
 
- Arrays y slices- Arrays fijos [T; N]
- Slices &[T]
- Slices mutables &mut [T]
- Indexación segura y get()
- Recortes (split_at,chunks,windows)
- Slices de bytes (&[u8])
- Conversión de arrays a slices
 
- Arrays fijos 
- Propiedad y move- Propiedad exclusiva de valores
- Movimiento vs copia (Copy)
- Cloneexplícito
- Tipos Copy
- Tipos que no son Copy
- Transferencia de propiedad a funciones
- Retorno de propiedad desde funciones
 
- Préstamos y referencias- Referencias inmutables &T
- Referencias mutables &mut T
- Reglas de aliasing único para mutables
- Duración del préstamo (lifetime implícito)
- Prestando vs moviendo
- Mutabilidad interior
- Reglas de borrow checker
 
- Referencias inmutables 
- Lifetimes- Parámetros de lifetime explícitos ('a)
- Elision de lifetimes
- Relaciones de subvida ('a: 'b)
- Lifetimes en referencias de retorno
- Lifetimes en structs
- Lifetimes en métodos impl
- 'static
- Lifetimes en closures
 
- Parámetros de lifetime explícitos (
- Enumeraciones (enum)
- Variantes sin datos
- Variantes tipo tupla
- Variantes tipo struct
- Patrones exhaustivos con match
- Option<T>
- Result<T, E>
- Ordering
- Never type(- !)
- Structs
- Structs con campos nombrados
- Tuple structs
- Unit structs
- puby visibilidad de campos
- Inicialización con sintaxis { campo: valor }
- Actualización de struct (..otro)
- Propiedad de campos y movimientos parciales
- Empaquetar datos y semántica de valor
- Traits básicos
- Copy
- Clone
- Debug
- Display
- Default
- PartialEq/- Eq
- PartialOrd/- Ord
- Hash
- Send
- Sync
- Unpin
- Sized
- Conversión y coerción
- From/- Into
- TryFrom/- TryInto
- AsRef/- AsMut
- Borrow
- Deref/- DerefMut
- Auto-deref en llamadas a métodos
- Conversión numérica con as
- Conversión de slices entre tipos compatibles
- Pattern matching de destructuración
- let+ patrones
- if let
- while let
- Patrones en parámetros de función
- Patrones en match
- Patrones anidados en structs y enums
- Patrones con guardas (if)
- Patrones con @
- Patrones con _
- Patrones de rango (..=)
 
- Variables y 
- Operadores- Operadores aritméticos (+,-,*,/,%)
- Operadores de asignación compuesta (+=,-=,*=,/=,%=)
- Operadores bit a bit (&,|,^,!,<<,>>)
- Comparación (==,!=,<,>,<=,>=)
- Operadores lógicos (&&,||,!)
- Precedencia de operadores
- Evaluación corta (short-circuit) en &&y||
- Operador de rango (..,..=)
- Desreferenciación (*)
- Indexación ([])
- ?para propagación de errores
- aspara casting explícito
- Operador refen patrones
- box(histórico) y- Box::new
- ..en patrones de struct
- ..en patrones de tuplas y enums
- &y- &muten patrones de referencia
- |en patrones alternativos en- match
- @en patrones con binding
- ..en ranges de iteración
 
- Operadores aritméticos (
- Control de Flujo- if
- else if
- else
- ifcomo expresión
- match
- matchexhaustivo
- matchcon guardas (- if cond)
- matchcon patrones anidados
- if let
- while
- while let
- loop
- for
- Rango en for
- break
- continue
- return
- Etiquetas de bucle ('label:)
- break 'label
- continue 'label
- let elsepara validación temprana
- tryblocks experimentales
- panic!como corte de control
- unreachable!y- todo!
- assert!y control en test
 
- Funciones- Definición de funciones con fn
- Parámetros con tipo explícito
- Retorno con ->
- Retorno implícito sin return
- Funciones libres vs métodos asociados
- Métodos en impl
- Métodos estáticos (fn new())
- Referencias &self
- Referencias &mut self
- Funciones genéricas
- Trait bounds en firmas (where)
- Lifetimes explícitos en firmas
- Funciones const fn
- Funciones unsafe fn
- Funciones extern "C"
- Funciones inline (#[inline])
- Atributos en funciones (#[must_use],#[cold],#[inline(always)])
- Punteros a función (fnvsFntraits)
- macro_rules!vs- fn
- Visibilidad puben funciones
 
- Definición de funciones con 
- Closures- Sintaxis |args| expr
- moveclosures
- Inferencia de tipos en closures
- Captura por referencia
- Captura por mutable referencia
- Captura por movimiento
- Traits Fn,FnMut,FnOnce
- Conversión de closures a punteros de función
- Almacenamiento de closures en Box<dyn Fn>
- Lifetimes en closures
- Uso de closures en iteradores
- Uso de closures en APIs async
- Cierres como callbacks en FFI seguro
- impl Fnen parámetros
- impl FnOncepara consumo de recursos
 
- Sintaxis 
- Manejo de Errores- Result<T, E>
- Option<T>
- Operador ?
- unwrap
- expect
- ok_or/- ok_or_else
- map_err
- and_then
- Definir tipos de error propios
- Trait std::error::Error
- Errores encadenados
- thiserror(crates de error derivado)
- Manejo de errores en main
- Devolución de Resultdesdemain
- panic!
- Recuperación después de panicconcatch_unwind
- assert!,- assert_eq!,- debug_assert!
- todo!
- unimplemented!
- unreachable!
 
- Prelude y Librería Estándar- std::prelude
- Carga automática del prelude
- Tipos fundamentales en el prelude
- Traits fundamentales en el prelude
- stdvs- core
- allocen entornos- no_std
- use std::...y rutas absolutas
- pub usepara reexportar APIs
- std::io
- std::fs
- std::env
- std::path
- std::time
- std::thread
- std::sync
- std::net
- std::process
- std::mem
- std::ptr
- std::slice
- std::str
- std::string
- std::vec
 
- Módulos y Visibilidad- mod
- Archivos y submódulos
- Jerarquía de módulos (crate,super,self)
- pub
- pub(crate)
- pub(super)
- pub(in path)
- use
- use as
- Reexport con pub use
- Separación binario / librería (src/main.rs,src/lib.rs)
- Árbol de módulos y layout de carpetas
- Módulos privados internos
- Módulos cfgcondicionales
- #[path = "file.rs"]
- extern crate(histórico)
- crate::paths absolutos
- super::paths relativos
- Módulos inline { ... }
- Tests integrados en módulos (#[cfg(test)])
 
- Atributos y Macros Básicas- Atributos en ítems (#[derive],#[inline],#[allow])
- Atributos en módulos (#![allow],#![deny])
- Atributos de lint (#[warn(clippy::...)])
- Macros declarativas macro_rules!
- Macros de formato (println!,eprintln!,format!)
- Macros de colección (vec!,vecDeque!en crates externos)
- Macros de aserción (assert!,debug_assert!)
- Macros de error (panic!)
- Macros condicionales (cfg!)
- Macros de test (#[test])
- Macros de derivación automática (#[derive(Clone, Debug, ...)])
 
- Atributos en ítems (
- Atributos de Compilación Condicional
- #[cfg(target_os = "linux")]
- #[cfg(target_arch = "x86_64")]
- #[cfg(feature = "foo")]
- #[cfg(test)]
- #[cfg(debug_assertions)]
- #[cfg_attr(...)]
- cfg_if!(macro de conveniencia)
- Builds multiplataforma con cfg
- Código específico de arquitectura
- Desactivación de partes inseguras en WASM
- Estándares de Estilo
- Formato con rustfmt
- Organización de use
- Nomenclatura de tipos (PascalCase)
- Nomenclatura de variables y funciones (snake_case)
- Constantes (SCREAMING_SNAKE_CASE)
- División en módulos pequeños
- Comentarios ///para docs públicas
- Comentarios //!a nivel de crate
- Comentarios de implementación //
- #[allow]vs- #[deny]para lints
- Políticas internas de clippy
- Reglas de API públicas estables
- Visibilidad mínima (pubvspub(crate))
- Convenciones de Proyecto
- src/main.rs
- src/lib.rs
- src/bin/*.rs
- Cargo.toml
- Cargo.lock
- README.md
- LICENSE
- rust-toolchain.toml
- benches/
- examples/
- tests/
- build.rs
- target/
- Módulos internos mod.rsvsfoo.rs
- Estructura por dominio
- Estructura por capas (core, infra, api)
- Reexportar APIs en lib.rs
- #[deny(missing_docs)]
- Versionado del crate
- Features opcionales y default-features = false
 
- Tipos de Datos Básicos
- Estructuras y manipulación de datos- Colecciones Estándar- Vec<T>
- Creación y vec![]
- Push / pop
- Indexación y .get()
- Iteración mutable e inmutable
- Reservar capacidad (with_capacity,reserve)
- insert,- remove
- retain
- sort,- sort_by,- sort_unstable
- dedup
- drain
- Conversión Vec<T>↔ slice
- VecDeque<T>
- VecDequepush_front / push_back
- LinkedList<T>
- BinaryHeap<T>
- HashMap<K, V>
- BTreeMap<K, V>
- HashSet<T>
- BTreeSet<T>
- IndexMap,- IndexSet(orden estable, crates externos)
- SmallVec,- ArrayVec(almacenamiento en stack)
- Cow<T>
- Range
- Option<T>como colección parcial
- Result<T,E>como flujo condicional
- APIs de iteradores en colecciones
- Stringy- Vec<u8>
- Box<[T]>
- Rc<[T]>y- Arc<[T]>
 
- Pilas y Colas- Vec<T>como pila LIFO
- VecDeque<T>como cola FIFO
- BinaryHeap<T>como cola de prioridad
- Múltiples productores / múltiples consumidores usando canales
- Estructuras lock-free con crossbeam(crates externos)
- Colas concurrentes en tokio::sync
- std::sync::mpsc
- Orden de mensajes garantizado
- try_recv/- recv_timeout
- Backpressure en colas async
 
- Slicing y Vistas- Slices &[T]
- Slices mutables &mut [T]
- Vistas parciales (split_at,split)
- Ventanas (windows)
- Chunks (chunks,chunks_exact)
- array_chunksy vistas fijas
- as_slice/- as_mut_slice
- strcomo slice de- u8UTF-8
- Slices crudas (*const T,*mut T)
- std::slice::from_raw_parts
- Reglas de seguridad en slices no verificados
 
- Slices 
- Manipulación de Strings- String
- &str
- Concatenación con push_str
- Concatenación con +
- Formato con format!
- Interpolación con println!
- Iteración por bytes
- Iteración por char
- Iteración por grapheme(crates externos)
- Substrings seguras por rango de bytes válidos
- Búsqueda (find,contains)
- Reemplazo (replace)
- Divisiones (split,split_whitespace)
- trim,- trim_matches
- Conversión entre OsString,PathBuf,String
- to_string_lossy
- Normalización Unicode (crates externos)
- Cow<'_, str>para evitar copias
- Propiedad vs referencia en APIs de texto
- String::leak
 
- Expresiones Regulares y Parsing- Crate regex
- Expresiones regulares compiladas
- Búsquedas globales
- Capturas con grupos
- Reemplazo con patrones
- División por regex
- Expresiones regulares sin backtracking exponencial
- lazy_static/- once_cellpara regex globales
- regex-automata(crates especializadas)
- Parsing manual con chars()
- Parsing con nom
- Parsers basados en combinadores
- Parsing binario con nom/binrw
- serdepara deserialización estructurada
 
- Crate 
- Archivos y I/O- std::fs::File
- File::open
- File::create
- Lectura síncrona (read_to_end,read_to_string)
- Escritura síncrona (write_all)
- BufReader
- BufWriter
- Lectura línea a línea (read_line)
- Iteración sobre líneas
- Permisos de archivo (set_permissions)
- metadata
- Directorios (read_dir)
- Creación y borrado de carpetas
- Renombrar y mover archivos
- Rutas (Path,PathBuf)
- std::env::current_dir
- tempfile(crates externos)
- Archivos mapeados en memoria (crates externos)
- I/O sin bloqueo en tokio::fs
- I/O con async-std::fs
 
- Formatos de Datos- JSON con serde_json
- TOML con toml
- YAML con serde_yaml
- CBOR / MessagePack (crates externos)
- Protobuf / FlatBuffers (crates externos)
- CSV con csv
- Lectura binaria con byteorder
- Escritura binaria con byteorder
- Manipulación de bits en buffers (bitvec)
- Serialización binaria con bincode
- serdederive (- Serialize,- Deserialize)
- Versionado de esquemas
- Migración de estructuras serializadas
- Validación de datos deserializados
 
- JSON con 
- Fechas y Tiempo- std::time::Duration
- std::time::Instant
- std::time::SystemTime
- Diferencias de tiempo (duration_since)
- Timeouts en I/O
- Retrasos y sleepconstd::thread::sleep
- Retrasos async con tokio::time::sleep
- Medición de rendimiento
- Perfiles de latencia
- Crate chrono(fecha/hora civil)
- Zonas horarias con chrono_tz
- Formateo de timestamps
- Parsing de timestamps
- Sincronización periódica y scheduling (crates externos)
- Timers async recurrentes (crates async)
 
- Propiedad Compartida y Gestión de Recursos- Box<T>
- Rc<T>
- Arc<T>
- Cell<T>
- RefCell<T>
- Mutex<T>
- RwLock<T>
- OnceCell<T>
- LazyLock<T>
- AtomicBool,- AtomicUsize, etc.
- Conteo de referencias y ciclos
- Fugas deliberadas (Box::leak)
- Smart pointers específicos de librería
- RAII y liberación determinista con Drop
 
- Iteradores
- Iteratortrait
- .next()
- forsobre iteradores
- Adaptadores (map,filter,flat_map)
- enumerate
- zip
- chain
- rev
- take,- skip
- collect
- Colección en Vec
- Colección en HashMap
- Iteradores infinitos y std::iter::repeat
- std::iter::from_fn
- inspect
- fold
- try_fold
- Propiedad vs referencia en iteradores
- Iteradores que consumen (into_iter)
- Iteradores prestados (iter,iter_mut)
- Iteradores paralelos (rayon)
- Iteradores async (Streamen ecosistema async)
- Expresiones Funcionales y Pipelines
- .map(...)
- .filter(...)
- .filter_map(...)
- .find(...)
- .any(...)
- .all(...)
- .position(...)
- .fold(...)
- .reduce(...)
- .group_by(...)(crates externos)
- Transformaciones in-place vs alocar nuevos Vec
- Reutilización de buffers
- Zero-copy usando slices
- Evitar clonados innecesarios
- Cowen pipelines de texto
- Seguridad y Manejo Binario
- std::mem::transmute(uso inseguro)
- std::mem::replace
- std::mem::take
- MaybeUninit<T>
- Layout de memoria (#[repr(C)],#[repr(packed)])
- Alineación (align_of,align_to)
- Lectura/escritura de bytes con byteorder
- Endianness explícito
- Acceso crudo con punteros (*const T,*mut T)
- slice::from_raw_parts
- ptr::copy_nonoverlapping
- Control de aliasing en unsafe
- Serialización binaria para FFI
- Mapear estructuras Rust a C
 
- Colecciones Estándar
- Programación estructurada y modular- Programación Orientada a Datos y Traits- Structs como tipos de datos centrales
- implblocks
- Métodos asociados
- Métodos que consumen self
- Métodos que prestan &self
- Métodos que prestan &mut self
- Encapsulación con campos privados
- Getters explícitos
- Constructores estilo new()
- Builders encadenables
- Propiedades inmutables por defecto
- APIs seguras por tipo
- APIs que evitan estados inválidos
- Patrón tipo-sello (sealed traits en módulos privados)
- Patrón unsafeencapsulado en capa segura
 
- Traits e Implementaciones- Definición de trait
- Métodos requeridos
- Métodos con implementación por defecto
- Implementación de traits para tipos propios
- Implementación de traits externos para tipos propios (coherencia)
- Implementación de traits propios para tipos externos (orfan rule)
- Traits marcadores (Send,Sync,Unpin)
- Traits auto (auto trait)
- dyn Trait
- Trait objects (&dyn Trait,Box<dyn Trait>)
- Dispatch dinámico vs estático
- Traits genéricos
- Associated types en traits
- Supertraits
- wherebounds complejos
- Implementaciones en impl<T> Trait for Tipo<T>
- Coerción de &Ta&dyn Trait
- Objetos trait en interfaces plugin
- Objetos trait y Send + Sync
- Limitaciones de objetos trait (no Selfen firma)
 
- Definición de 
- Encapsulación y Abstracción- Visibilidad pub
- Visibilidad pub(crate)
- Visibilidad pub(super)
- Campos privados y módulos amigos
- Patrones con newtype
- Patrones de estado interno protegido
- API mínima segura
- Diseño de invariantes internas
- Tipos fantasma (phantom types)
- PhantomData<T>
- Tipos con lifetimes en la API pública
- Sellado de traits para evitar implementaciones externas
 
- Visibilidad 
- Composición vs Herencia- Composición de structs
- Contención de datos (struct A { b: B })
- Delegación manual de métodos
- Derefpara ergonomía de delegación
- Herencia ausente en el lenguaje base
- Subtipado vía traits
- Polimorfismo paramétrico (genéricos)
- Polimorfismo dinámico (trait objects)
- Patrones de tipo estado (state pattern)
- Patrones de builder tipado
- Patrones GADT a través de enums
- Patrones de “typestate programming”
 
- Macros de Atributo y Derive- #[derive(Debug)]
- #[derive(Clone)]
- #[derive(Copy)]
- #[derive(PartialEq, Eq)]
- #[derive(PartialOrd, Ord)]
- #[derive(Hash)]
- #[derive(Default)]
- #[derive(Serialize, Deserialize)]
- Atributos en campos (#[serde(rename = "...")])
- Procedural macros (proc-macro)
- #[test]
- #[bench](inestable / crates externos)
- #[cfg(...)]
- #[inline]
- #[must_use]
- #[repr(C)]
- #[repr(packed)]
- #[non_exhaustive]
- #[deny(...)],- #[allow(...)],- #[warn(...)]
- Atributos específicos de plataforma
 
- Módulos y Crates (avanzado)- Crates binarios
- Crates librería
- Crates internos en un workspace
- Árbol de módulos público (lib.rs)
- Reexportar símbolos (pub use)
- Organización por dominio
- Organización por capa lógica
- Patrones preludeinternos
- #[doc(hidden)]
- #[path]
- include!
- include_bytes!
- include_str!
- build.rspara generar código
- OUT_DIRy artefactos generados
- cfg(feature = "...")
- cfg(target_os = "...")
- cfg(test)
- Tests de integración en tests/
- Ejemplos en examples/
 
- Logging- Crate log
- Macros info!,warn!,error!,debug!,trace!
- Backends (env_logger,fern,tracing)
- Niveles de log
- Filtros de log por módulo
- Logging estructurado con tracing
- tracing::spany- tracing::instrument
- Exportar logs a JSON
- Logs en aplicaciones CLI
- Logs en servicios async
- Logs en entornos no_std(semihosting / ITM)
- Rotación de logs (crates externos)
- Formato con timestamps
- Integración con observabilidad
- Uso de logen librerías reutilizables
 
- Crate 
- Documentación- Comentarios ///
- Comentarios //!a nivel de crate o módulo
- Ejemplos en documentación
- cargo doc
- cargo doc --open
- Documentación pública mínima
- #[doc(hidden)]
- #[deny(missing_docs)]
- Mostrar ejemplos que compilan
- Ejecución de ejemplos como tests doctest
- Documentar invariantes de seguridad
- Documentar unsafe
- Documentar lifetimes y ownership
- Documentar errores (Result)
- Políticas de versionado semántico en docs
- Guías de “cómo usar” en módulos raíz
- Ejemplos por feature flag
- Docs generadas para crates internos
- Publicación de docs en hosting estático
- Documentación interna vs externa
 
- Comentarios 
- Testing- #[test]
- cargo test
- Tests de unidad
- Tests de integración (tests/)
- Tests de documentación (doctests)
- assert!
- assert_eq!
- assert_ne!
- matches!
- should_panic
- Tests con Result<(), E>
- Tests async con runtimes (#[tokio::test])
- Tests parametrizados (macros de terceros)
- Fixtures simuladas manualmente
- tempfilepara tests con disco
- Pruebas con proptest(property-based testing)
- Pruebas fuzzing (cargo fuzz)
- Pruebas de snapshot (insta)
- Pruebas de rendimiento (criterion)
- Cobertura de código (cargo tarpaulin)
- #[cfg(test)]secciones privadas de prueba
- Tests de concurrencia y race conditions
- Tests de integración multinodo / multi-hilo
- Mocking de dependencias (crates mockall, etc.)
- Simulación de redes con sockets falsos
- Tests deterministas de tiempo (fake_time)
- Tests con canal mpsc local
- Tests que validan Send + Sync
- Tests de unsafecorrectness
- Validación de invariantes de memoria
 
- Depuración
- dbg!macro
- println!debug
- Debugderivado (- #[derive(Debug)])
- Revisar panic backtraces (RUST_BACKTRACE=1)
- gdb
- lldb
- Depuración con VS Code (CodeLLDB)
- Breakpoints en código Rust
- Inspección de variables y lifetimes
- Desensamblado de código generado
- Inspección de ensamblador (rustc --emit asm)
- Inspección de MIR (rustc --emit mir, nightly)
- Inspección de LLVM IR (--emit llvm-ir)
- Validación de alineación de punteros
- Detección de UB potencial usando miri
- Análisis con sanitizers (ASan, UBSan)
- Chequeo de data races con ThreadSanitizer
- Validación de límites con AddressSanitizer
- Depuración de bloqueo mutuo (deadlock)
- Depuración de rendimiento con perf
- Flamegraphs
- Inspección de heap con herramientas externas
- Registros de tracing con tracing+tokio-console
- Pruebas de estrés para reproducir condiciones de carrera
- Auditoría manual de unsafe
 
- Programación Orientada a Datos y Traits
- Estructuras avanzadas y programación funcional- Programación Funcional y Estilo Declarativo- Rust como lenguaje orientado a expresiones
- Expresiones en lugar de sentencias
- Cierres (|...| ...)
- Inmutabilidad preferida
- map,- filter,- fold
- flat_map
- Composición con iteradores
- Optioncomo mónada de presencia/ausencia
- Resultcomo mónada de éxito/error
- Encadenamiento con and_then
- Encadenamiento con map_err
- Control de flujo sin panic
- Early returns con ?
- if letcomo destructuración parcial
- matchcomo eliminación exhaustiva de casos
- matchanidado para composición de lógica
- let elsepara validaciones
- Uso de From/Intopara componer transformaciones
- Tipos de dominio con invariantes fuertes
- Errores tipados en lugar de excepciones
 
- Iteradores / Adaptadores / Streams- Iteratortrait
- Adaptadores estándar (map,filter,take,skip,enumerate)
- Adaptadores de flattening (flat_map,flatten)
- Adaptadores de búsqueda (find,position,rposition)
- Adaptadores de acumulación (fold,scan)
- Adaptadores de partición (partition,group_bycon crates externos)
- Iteradores infinitos (repeat,successors)
- Iteradores sobre Result
- try_fold
- Paralelización con rayon::prelude::*
- Iteradores paralelos (par_iter,par_chunks)
- Recolección en Vec,HashMap,BTreeMap
- Iteradores mutables (iter_mut)
- Iteradores que consumen (into_iter)
- Iteradores sobre referencias (iter)
- Iteradores sobre slices (slice::Chunks,ChunksExact)
- Iteradores de archivos línea a línea
- Iteradores de sockets TCP
- Streamen async (- futures::stream)
- Combinadores async (stream::map,stream::buffer_unordered)
 
- Punteros Inteligentes y Mutabilidad Interior- Box<T>
- Rc<T>
- Arc<T>
- Cell<T>
- RefCell<T>
- Mutex<T>
- RwLock<T>
- AtomicBool,- AtomicUsize,- AtomicPtr
- Arc<Mutex<T>>
- Arc<RwLock<T>>
- OnceCell<T>
- LazyLock<T>
- Weak<T>
- Ciclos con Rcy fuga de memoria lógica
- Romper ciclos con Weak
- Interior mutability patterns
- Single-thread vs multi-thread (RcvsArc)
- Envolturas seguras para FFI
- Gestión de recursos externos (file handles, sockets)
- RAII con Drop
 
- Benchmarking y Perfilado- cargo bench
- Crate criterionpara benchmarks estadísticos
- Microbenchmarks de funciones puras
- Benchmarks con acceso a disco
- Benchmarks de red
- Perfiles de CPU con perf
- Perfiles de CPU con dtrace/eBPF
- Flamegraphs
- Análisis de asignaciones con valgrind/heaptrack
- Instrumentación manual con timestamps (Instant::now)
- Contadores internos de rendimiento
- Benchmarks de throughput vs latency
- Impacto de cloneen hot paths
- Reducción de allocen loops críticos
- Caches locales (HashMapinterno)
- Inlining agresivo (#[inline(always)])
- Branch prediction hints (patrones de if likelyusando crates externos)
- Mediciones en modo --release
- Evitar TLE bloqueando IO
- Ensamblador generado (rustc --emit asm)
 
- Herramientas de Calidad de Código- rustfmtpara formateo automático
- clippypara lints
- cargo clippy --fix
- Lints de estilo
- Lints de rendimiento
- Lints de correctitud
- Lints de seguridad (uso de unsafe)
- Lints de complejidad
- Reglas internas de equipos (#![deny(warnings)])
- Revisiones de unsafeen PRs
- Auditorías de unsafeen librerías públicas
- Control de deuda técnica
- cargo denypara licencias y vulnerabilidades
- cargo auditpara CVEs
- cargo udepspara dependencias no usadas
- cargo outdatedpara versiones antiguas
- cargo machete/- cargo trim(limpieza de dependencias)
- Políticas de versión mínima soportada (MSRV)
- Análisis estático adicional con sanitizers
- Integración en CI (rustfmt --check,clippy -- -D warnings)
 
- Seguridad de Memoria y Concurrencia- Ausencia de nullen tipos seguros (Option<T>)
- Ausencia de use after freebajosafe Rust
- Propiedad y lifetimes como contrato de seguridad
- Send
- Sync
- Send + Syncen tipos concurrentes
- Arc<Mutex<T>>para compartir estado
- RwLockpara lecturas concurrentes
- Canales MPSC (std::sync::mpsc)
- Canales múltiples productores múltiples consumidores (crossbeam)
- Sincronización sin bloqueo (lock-free)
- Atomics (Ordering)
- Deadlocks y estrategias de evitación
- Condiciones de carrera y unsafe
- Problemas de memoria ABA en atomics
- Reglas de aliasing exclusivas
- &mut Tcomo garantía de acceso exclusivo
- Verificación en tiempo de compilación vs runtime
- Compartir memoria en async sin Send(!Sendfutures)
- Minimizar unsafeen código concurrente
 
- Ausencia de 
- Sistema de Tipos Avanzado- Genéricos (fn foo<T>(x: T))
- impl Traiten retorno
- impl Traiten parámetros
- wherebounds complejos
- Traits con tipos asociados
- Traits con constantes asociadas
- Traits con lifetimes asociados
- Const generics (const N: usize)
- Arreglos genéricos [T; N]conconst N
- PhantomData<T>
- Tipos marca (marker types)
- !(never type)
- Tipos vacíos
- Tipos que no pueden construirse externamente
- enumno exhaustivos (- #[non_exhaustive])
- Patrones sealed trait
- Coherencia de traits (orphan rules)
- Auto traits (Send,Sync)
- Sizedy- ?Sized
- Trait objects y dyn Trait
- Subtipado con lifetimes distintas
- Higher-Rank Trait Bounds (HRTB, for<'a>)
- Fn,- FnMut,- FnOnce
- Unpin
- Pin<P>
- Drop
- ManuallyDrop<T>
- MaybeUninit<T>
- Unsafe traits
- Límite entre safe Rustyunsafe Rust
 
- Genéricos (
 
- Programación Funcional y Estilo Declarativo
- Concurrencia, Async, Bajo Nivel- Async y Concurrencia- Hilos (std::thread::spawn)
- JoinHandle
- moveclosures en threads
- Arc<T>para compartir datos entre hilos
- Mutex<T>para exclusión mutua
- RwLock<T>para lectura concurrente
- Barreras (Barrier)
- Canales std::sync::mpsc
- sync::mpsc::Sender/- Receiver
- Canales crossbeam
- Canales tokio::sync::mpsc
- Semáforos async (tokio::sync::Semaphore)
- Condvar
- AtomicBool,- AtomicUsize, etc.
- Fences de memoria (Ordering)
- Evitar data races con SendySync
- Sendautomático para la mayoría de tipos
- Tipos que no son Send
- Compartir file descriptors entre hilos
- Compartir conexiones de red
- Pools de hilos
- rayonpara paralelismo de datos
- rayon::join
- par_iter
- Balanceo de carga de trabajo
- Uso de #[derive(Clone)]para handles ligeros
- Cancelación cooperativa entre hilos
- Pruebas de concurrencia
- Deadlock debugging
- Escalabilidad en CPU multinúcleo
 
- Hilos (
- Async/await- async fn
- async { ... }bloques
- await
- Futuretrait (- std::future::Future)
- Pin
- Unpin
- Box<dyn Future<Output = T> + Send>
- impl Future<Output = T>
- Ejecutores (tokio,async-std,smol)
- tokio::spawn
- tokio::select!
- Canales async (tokio::sync::mpsc)
- Mutex async (tokio::sync::Mutex)
- RwLock async
- Temporizadores async (tokio::time::sleep)
- Timeouts (tokio::time::timeout)
- Streams async (futures::stream::Stream)
- Backpressure en streams async
- Conexiones persistentes async
- I/O no bloqueante (tokio::net)
- Sockets TCP async
- Sockets UDP async
- WebSockets async
- Sincronización en single-threaded runtime
- Sendy- Syncen futures
- !Sendfutures y- LocalSet
- task::yield_nowy cooperación
- Cancelación de tareas async
- Reintentos con delays exponenciales
- Recolección de JoinHandleasync
 
- Redes y Comunicación- std::net::TcpListener
- std::net::TcpStream
- std::net::UdpSocket
- Modo bloqueante
- Modo no bloqueante (set_nonblocking)
- Lectura/escritura con Read/Write
- Buffers ([u8])
- Gestión de errores de red (io::Result)
- Timeouts de socket
- Reintentos de conexión
- Serialización de mensajes (bincode,serde)
- Protocolos binarios personalizados
- HTTP cliente (reqwest)
- HTTP servidor (hyper,axum,warp,actix-web)
- WebSockets (crates externos)
- TLS (rustls)
- Certificados propios
- Protocolos binarios de baja latencia
- RPC (tonicgRPC)
- Streaming bidireccional
- Backpressure en servidores async
- Balanceo de carga
- Sharding de conexiones
- Pools de conexión
- Control de congestión a nivel de aplicación
- Telemetría de latencia y throughput
- Límite de tasa (rate limiting)
- Cortafuegos lógico a nivel de aplicación
- Instrumentación con tracing
- Testing de red con sockets falsos
 
- Metaprogramación- Macros declarativas macro_rules!
- Macros con repeticiones ($()*)
- Macros con capturas de tokens
- Macros que generan código repetitivo
- Macros para logs (info!,debug!,trace!)
- Macros de aserción (assert!,assert_eq!,matches!)
- Procedural macros #[proc_macro]
- Procedural macros #[proc_macro_derive]
- Procedural macros #[proc_macro_attribute]
- Derives personalizados
- Generación de código en build.rs
- Incluir archivos externos (include_str!,include_bytes!)
- cfg!y macros condicionales
- concat!,- env!,- option_env!
- Macros para FFI
- Macros para DSLs internos
- Macros para test parametrizado
- Macros para tracing de rendimiento
- quotey- synen procedural macros
- Límites de macros (higiene)
 
- Macros declarativas 
- Gestión de Recursos y RAII- RAII (Resource Acquisition Is Initialization)
- Droptrait
- Cierre automático de archivos al salir de scope
- Liberación de locks al salir de scope
- MutexGuardy- RwLockReadGuard
- ManuallyDrop<T>
- MaybeUninit<T>
- mem::forget
- Smart pointers con semántica RAII
- scopeguard(crates externos)
- Patrones de cleanup garantizado
- Evitar fugas de memoria no deseadas
- Control de recursos FFI
- Contadores de referencia (Rc,Arc)
- Descriptores de archivo y RAII
- Sockets y RAII
- Mutexes y RAII
- Buffers mmap y RAII
- Transacciones y RAII
- Tareas async abortables con RAII
 
- Monitoreo y Observabilidad- tracingcrate
- Spans y eventos
- #[instrument]
- Métricas de latencia
- Métricas de throughput
- Métricas de error rate
- Exportadores de métricas (Prometheus, etc.)
- Muestreo de eventos de alto volumen
- Logging estructurado en JSON
- Correlación de requests distribuidos
- Propagación de contexto en async
- Inicio y fin de span por request
- Identificadores de request
- Monitoreo de heap
- Monitoreo de file descriptors abiertos
- Monitoreo de latencia de syscalls
- Límites de memoria en contenedores
- Límites de CPU en contenedores
- Alertas y umbrales
- Integración con APM externos
 
- Gestión de Memoria y Bajo Nivel- Ausencia de GC en Rust
- Propiedad y liberación determinista
- Stack vs heap
- Box<T>para heap
- Vec<T>como buffer dinámico
- Stringcomo buffer dinámico UTF-8
- Box<[T]>y slices en heap
- Box<dyn Trait>
- Pin<Box<T>>
- Pin<&mut T>
- Referencias crudas (*const T,*mut T)
- unsafeblocks
- unsafe fn
- extern "C"
- Layout de memoria con #[repr(C)]
- Acceso sin chequear a slices (get_unchecked)
- Eliminación manual de bounds checks
- Aliasing y &mut T
- Volátiles (ptr::read_volatile,ptr::write_volatile)
- MaybeUninit<T>para inicialización diferida
- Zero-cost abstractions
- Inlining y #[inline(always)]
- Eliminación de branching con match
- Control fino de panic = abort
- #![no_std]
- Usar coreen entornos embebidos
- Arranque bare-metal (#[no_main])
- Interrupciones en microcontroladores (#[interrupt])
- Memoria compartida en ISR
- unsafeencapsulado en HALs embebidos
 
 
- Async y Concurrencia
- Implementación y Distribución- Herramientas Generales del Entorno- rustuppara toolchains
- cargocomo orquestador
- rustccomo compilador
- rustfmtpara formato
- clippypara lints
- cargo auditpara seguridad
- cargo denypara licencias
- cargo outdatedpara actualizar versiones
- cargo udepspara limpiar dependencias
- cargo treepara inspección de dependencias
- cargo metadatapara tooling externo
- cargo watchpara recarga en caliente
- just/- makepara automatización
- Scripts build.rs
- rust-toolchain.tomlpara fijar versión
- Cachés de compilación incremental
- Perfiles dev/release
- lto(link-time optimization)
- panic = abortpara binarios pequeños
- stripde símbolos en binarios finales
- RUSTFLAGSpersonalizados
- Cross-compiling con --target
- cross(herramienta de cross-compiling)
- Integración con Docker
- Integración con Bazel / Buck (cuando aplica)
- Integración con Nix
- Integración con CI (GitHub Actions, etc.)
- Reproducibilidad binaria
- Firmas criptográficas de binarios
- Publicación interna de artefactos
 
- Compilación y Backends- rustc
- MIR (Mid-level IR)
- LLVM IR
- Generación de código máquina
- Optimizaciones de LLVM
- -C opt-level
- -C target-cpu
- -C target-feature
- -C lto
- -C panic=abort
- -C relocation-model
- -C code-model
- -C inline-threshold
- -C link-args
- Compilación incremental
- Cache de incrustaciones (incr comp cache)
- Reutilización de artefactos en CI
- Compilación cruzada ARM / RISC-V
- WASM como objetivo (wasm32-unknown-unknown)
- wasm32-wasi
- Generación de librerías dinámicas (cdylib)
- Generación de librerías estáticas (staticlib)
- Binarios independientes (musl)
- Minimización de tamaño (opt-level = "z")
- Embedded no_stdsin sistema operativo
- build-stdpara targets custom
- Xargo/- cargopara compilación de- corepersonalizada
- bindgenpara generar bindings C
- cbindgenpara exponer APIs C
- Versionado del compilador requerido (MSRV)
 
- Publicación y Versionado de Crates- Cargo.tomlcon- [package]
- name,- version,- edition
- authors/- license
- readme
- repository
- documentation
- homepage
- keywords
- categories
- include/- exclude
- features
- default-features
- optional = true
- cargo publish
- cargo yank
- SemVer para crates (MAJOR.MINOR.PATCH)
- breaking changesy bump mayor
- Compatibilidad semántica en librerías públicas
- Compatibilidad binaria de cdylib
- Versiones mínimas soportadas (MSRV en README)
- Changelogs y CHANGELOG.md
- cargo-releasepara automatizar versiones
- Firmar tags y releases
- Auditoría de licencias con cargo deny
- Auditoría de CVEs con cargo audit
- Políticas internas de seguridad
- Soporte de plataforma declarado (targets)
- Estados experimentales (unstable,nightly-only)
- Exponer #[cfg(feature = "foo")]en docs
- Estabilidad de APIs unsafe
 
- Aplicaciones CLI- Crates clap,argh,structopt
- Parsing de argumentos
- Subcomandos
- Flags y opciones
- Validación de input
- --helpy- --version
- Autogeneración de ayuda
- Autocompletado de shell
- Colores y estilos (ansi_term,colored)
- Barras de progreso (indicatif)
- println!y salida estándar
- eprintln!y error estándar
- Códigos de salida (std::process::exit)
- Logging configurable por flag (-v,-q)
- Uso de anyhowoeyreen CLI
- Serialización de salida (serde_json)
- Interactivo en terminal (prompt)
- TUI (crossterm,ratatui)
- Tests de CLI vía assert_cmd
- Empaquetado estático
- Distribución en contenedores
- Binarios multiplataforma
- Firmas de binario y checksum
- Versionamiento semántico del binario
- Compatibilidad hacia atrás en flags CLI
- Integración con systemd/ servicios
- Configuración vía archivos (toml,yaml)
- Variables de entorno (std::env)
- Actualización automática (self-update)
- Publicación en gestores de paquetes
 
- Crates 
- Aplicaciones Gráficas y de Escritorio- egui
- iced
- gtk-rs
- winit
- Motores de juego (bevy)
- Renderizado con wgpu
- UIs nativas vs webview
- Empaquetado multiplataforma
- Integración con aceleración GPU
- Eventos y loop principal
- Recursos compartidos entre hilos UI
- Canales de comunicación UI ↔ lógica
- Serialización de estado UI
- Persistencia de preferencias
- Integración con sistemas de archivos
- Control de DPI y escalamiento
- Integración con backends audio
- Janelas múltiples
- Controladores de input (teclado, mouse, gamepad)
- Soporte de internacionalización en UI
- Empaquetado tipo instalador
- Firmado de binarios en macOS/Windows
- Sandboxing y permisos
- Notificaciones del sistema
- Integración con portapapeles
- Arrastrar y soltar
- Actualización auto-generada (autoupdater)
- Integración con WebAssembly para componentes
- Reutilización de lógica Rust en frontend web
- Herramientas de depuración visual
 
- Internacionalización (i18n) y Localización (l10n)- Soporte de Unicode en String
- Formato localizado de números y fechas (crates externos)
- Carga de catálogos de traducción
- Selección dinámica de idioma
- Separación de recursos por locale
- Plantillas de mensajes parametrizados
- Integración de i18n en CLI
- Integración de i18n en GUI
- Internacionalización en aplicaciones web (axum,actix)
- Mensajes de error traducibles
- Recursos de texto estáticos empaquetados (include_str!)
- Detección de locale del sistema
- Pluralización y reglas gramaticales
- Formato de monedas y unidades
- Localización offline en binarios estáticos
- Actualización de catálogos sin recompilar
- no_stdy mensajería mínima
- i18n en firmware embebido (pantallas pequeñas)
- Soporte RTL (right-to-left)
- Compatibilidad con estándares gettext
- Convenciones culturales en fechas/hora
- Adaptación de layouts UI a idiomas
- Internacionalización de documentación pública
- Mantenimiento de catálogos en repositorios
- Tests que validan traducciones
- Versionado de recursos lingüísticos
- Seguridad frente a inyección en plantillas traducibles
- Selección de idioma vía variables de entorno
- Fallbacks de idioma
- Integración con pipelines de CI para i18n
 
- Soporte de Unicode en 
 
- Herramientas Generales del Entorno
- Internals- Compilador de Rust (rustc)- Fases del compilador
- Parseo del código fuente
- Árvore de sintaxis (AST)
- AST desugaring
- HIR (High-level IR)
- MIR (Mid-level IR)
- Borrow checker
- Inferencia de lifetimes
- Resolución de tipos
- Monomorfización de genéricos
- Optimización en MIR
- Traducción a LLVM IR
- Optimizaciones de LLVM
- Generación de código máquina final
- Enlazado (linking)
- rustc --emit
- rustc --emit=mir(nightly)
- rustc --emit=llvm-ir
- rustc --emit=asm
- Control de lint con #![deny],#![warn]
- #[inline]y sugerencias de optimización
- #[cold]para rutas raras
- #[must_use]para resultados críticos
- #[repr(C)]para FFI estable
- #[no_mangle]para símbolos exportados
- #[link(name = "...")]
- Driver de compilación en cargo
- Caches de compilación incremental
- Hashes de contenido para recompilación selectiva
- Flags de depuración y symbols (-g)
 
- Modelo de Ejecución- Binarios nativos
- Librerías dinámicas (cdylib)
- Librerías estáticas (staticlib)
- Binarios estáticos (musl)
- WASM (wasm32-unknown-unknown)
- WASI (wasm32-wasi)
- no_stden entornos bare-metal
- #[no_main]para runtime propio
- Punto de entrada fn main()
- panic!como abort o unwind
- panic = aborten- Cargo.toml
- panic = unwind
- Stack unwinding y catch_unwind
- Manejadores panic::set_hook
- Inicialización estática
- Orden de staticinit
- Finalización a través de Drop
- RAII para cleanup determinista
- Dropen cascada
- Threads del sistema operativo (std::thread)
- Futures y ejecutores async en espacio de usuario
- Pools de hilos vs loops event-driven
- Bloqueo vs no-bloqueo en I/O
- Programación lock-free
- Exclusión mutua con Mutex
- RwLock para acceso paralelo de solo lectura
- Atomics y órdenes de memoria
- Volátil para MMIO
- Interacciones con señales del SO
- Integración con FFI de C en runtime
 
- Modelo de Datos- Representación en memoria de structs
- #[repr(Rust)]por defecto
- #[repr(C)]para compatibilidad ABI con C
- #[repr(packed)]
- #[repr(transparent)]
- Orden y alineación de campos
- Enum layout optimizado (Option<&T>sin overhead)
- Nichos de valores no usados (niche optimization)
- Box<T>como puntero único a heap
- Rc<T>con conteo de referencias single-thread
- Arc<T>con conteo de referencias thread-safe
- Cell<T>y- RefCell<T>para mutabilidad interior
- UnsafeCell<T>como primitiva base de interior mutability
- Zonas exclusivas de referencia mutable (&mut T)
- Reglas de aliasing en borrow checker
- Sendpara traspaso seguro entre hilos
- Syncpara acceso compartido seguro
- Unpiny movimiento seguro de futures
- Pin<&mut T>
- MaybeUninit<T>para inicialización manual
- ManuallyDrop<T>para controlar- Drop
- Propiedad lineal como contrato estático
- Ciclos de referencia con Rc
- Weak<T>para romper ciclos
- Fugas de memoria intencionales (leak)
- Layout de closures y capturas
- dyn Traity fat pointers (puntero + vtable)
- Llamadas virtuales vía vtable
- #[inline]y monomorfización en genéricos
- Eliminación de código muerto en monomorfización
 
- Modelo C y FFI- extern "C"en funciones
- #[no_mangle]para nombres estables
- #[repr(C)]en structs para FFI
- Punteros crudos (*const T,*mut T)
- unsafeen llamadas FFI
- Traducción de enuma C
- Strings CString
- CStr
- Buffers *mut u8
- Longitud y ownership cruzando la frontera FFI
- Callbacks desde C hacia Rust
- Callbacks de Rust hacia C
- ABI estable entre Rust y C
- ABI entre Rust y C++
- bindgenpara generar bindings desde headers C
- cbindgenpara exponer headers C desde Rust
- Reglas de seguridad al exponer punteros
- Gestión de memoria compartida con librerías C
- #[link(name = "...")]
- #[link(kind = "static")]
- #[link(kind = "dylib")]
- Cargar librerías dinámicas en runtime
- Paso de structs complejos a C
- Paso de callbacks con extern "C" fn
- Manejo de errores en FFI (errno, códigos de error)
- Invariantes documentadas en funciones unsafe
- Pruebas de integración con librerías C existentes
- Construcción cruzada para plataformas embebidas
- Integración con kernels / drivers
- no_stdy FFI en firmware
 
- Extensiones y Casos Especiales- no_stdy entornos sin sistema operativo
- Sistemas embebidos ARM Cortex-M
- RISC-V embebido
- Mapeo de registros de hardware con volatile
- Interrupciones (#[interrupt])
- Bootloaders en Rust
- Sistemas operativos escritos en Rust
- Kernels monolíticos vs microkernels en Rust
- Drivers de dispositivo en Rust
- Controladores de red en Rust
- Librerías criptográficas sin std
- Criptografía con no_std
- Randomness seguro (rand_core)
- #![forbid(unsafe_code)]en capas superiores
- unsafeencapsulado en HALs
- WebAssembly (wasm32-unknown-unknown)
- WASI (wasm32-wasi)
- Llamadas host ↔ WASM
- Limitaciones de asignador en WASM
- Serialización compacta para WASM
- Portado de lógica Rust a frontend web
- Reutilización de core logic en CLI y servidor
- Reutilización de lógica en microcontroladores
- Estrategias para panicen entornos sin stdout
- panic-halty- panic-abort
- Arranque seguro y watchdog
- Integridad de memoria en dispositivos críticos
- Certificación de software seguro
- Política de revisiones de unsafe
- Evolución futura del lenguaje, del borrow checker y de asyncnativo
 
 
- Compilador de Rust (
4 - Shell
- Introducción- Historia de los shells en Unix- Bourne Shell (sh), csh y ksh
- Bash: origen, GNU y licenciamiento
- POSIX Shell: estandarización y portabilidad
- Evolución de Bash 1.x → 2.x → 3.x → 4.x → 5.x
- Línea temporal de características (arrays, asociativos, coproc, globstar)
- Comunidad, mantenimiento y políticas de releases
 
- Shells y compatibilidad- sh vs bash vs dash vs ksh vs zsh
- Conformidad POSIX y “bashismos”
- Detección de shell activo y versión ($SHELL,bash --version)
- Portabilidad entre distribuciones y BSD/macOS
- BusyBox/Almquist (ash) y entornos mínimos
- Limitaciones en sistemas embebidos
 
- Instalación y actualización de Bash- Distribuciones Linux (apt, dnf, pacman, zypper)
- macOS (Homebrew, MacPorts)
- Windows (WSL, MSYS2, Git Bash, Cygwin)
- Compilación desde fuente y opciones comunes
- Selección de shell por defecto (chsh,/etc/shells)
- Verificación de instalación y PATH
 
- Ejecutar el shell y scripts- Sesión interactiva vs no interactiva
- Shebangs (#!/bin/sh,#!/usr/bin/env bash)
- Ejecución directa, bash script.sh, permisos ychmod +x
- source/- .vs ejecución en subshell
- Flags y modos (-c,-i,-l,-O,-o,-v,-x)
- Entrada/salida estándar, tuberías y redirecciones básicas
 
- Terminales y línea de comandos- TTY vs PTY
- Emuladores de terminal (GNOME Terminal, iTerm2, Windows Terminal, kitty, Alacritty)
- Multiplexores (tmux, screen)
- Readline, historial y edición de línea
- Autocompletado y bash-completion
- Copiado/pegado, mouse reporting y scrollback
 
- Editores y herramientas de desarrollo- Vim, Neovim, Emacs, Nano, VS Code
- LSP/“language server” para shell (bash-language-server)
- Formateadores y linters (shfmt, ShellCheck)
- Integración con depuradores y perfiles de ejecución
- Fragmentos, plantillas y snippets de scripts
- Proyectos de ejemplos y repos de referencia
 
 
- Historia de los shells en Unix
- Fundamentos- Conceptos básicos del shell- Comandos, argumentos y opciones
- Estado de salida y semántica de éxito/fracaso
- Rutas absolutas vs relativas
- PATH, búsqueda de comandos y hashing de rutas
- Builtins vs ejecutables externos
- Separadores, espacios y saltos de línea
 
- Variables y entorno- Definición, asignación y alcance
- Exportación al entorno (export)
- Variables de entorno comunes (PATH, HOME, USER, SHELL)
- Variables locales vs globales
- env,- printenvy archivos de entorno
- Convenciones de nombres y mayúsculas
 
- Tipos de datos prácticos- Cadenas y evaluación de palabras
- Números en aritmética de shell
- Arrays indexados (bash)
- Arrays asociativos (bash)
- Valores nulos y no definidos
- Lectura segura de datos con IFS
 
- Citas y expansión- Comillas simples vs dobles
- Escape con barra invertida
- Expansión de variables
- Sustitución de comandos
- Expansión aritmética
- Orden de expansiones y efectos colaterales
 
- Globbing y patrones- Patrón *,?,[]
- extgloby patrones extendidos
- globstary coincidencia recursiva
- nullglob,- failglob,- nocaseglob
- Diferencias con expresiones regulares
- Interacciones con IFS y splitting
 
- Patrón 
- Operadores- Aritméticos en (( ))
- Comparación en [ ]y[[ ]]
- Operadores de archivo (-e,-f,-d,-r,-w,-x)
- Operadores de cadena (=,!=,<,>,=~)
- Asignación compuesta y let
- Precedencia práctica en shell
 
- Aritméticos en 
- Control de flujo- if,- elif,- else
- casecon patrones
- forclásico y- for … in
- whiley- until
- break,- continue,- exit,- return
- Sentencias condicionales cortas con &&y||
 
- Funciones- Definición y llamada
- Parámetros posicionales y $#,$*,$@,$?,$$,$!
- localy sombras de variables
- Valores de retorno y echo/stdout
- Bibliotecas de funciones y source
- Namespacing por convención
 
- Estado de salida y manejo de errores- Códigos de retorno y set -e
- pipefaily errores en tuberías
- set -uy variables no definidas
- trapy captura de señales
- Limpieza y funciones cleanup
- Diseño de scripts “fail-fast”
 
- Códigos de retorno y 
- Opciones del shell
- setpara opciones POSIX
- shoptpara opciones específicas de bash
- Modo POSIX vs modo bash
- Opciones de globbing y expansión
- Ajustes de historia y readline
- Persistencia en dotfiles
 
- Conceptos básicos del shell
- Estructuras y manipulación de datos- Cadenas en shell- Longitud, subcadenas y sustituciones
- Borrado de prefijos/sufijos con patrones
- Sustitución global de patrones
- Conversión de mayúsculas/minúsculas
- Manejo de caracteres especiales y binarios
- Normalización de fin de línea y codificaciones
 
- Arrays indexados- Declaración, inicialización y expansión
- Acceso por índice y rebanado
- Iteración sobre índices y valores
- Operaciones de inserción y borrado
- Longitud y expansión segura con [@]
- Errores comunes con IFS y splitting
 
- Arrays asociativos- Declaración y asignación de claves
- Iteración por clave y valor
- Existencia de claves y pruebas
- Copias y referencias
- Serialización simple de mapas
- Limitaciones de portabilidad
 
- Lectura y parsing- readseguro con- -ry- IFS
- mapfile/- readarray
- Lectura de campos, CSV y delimitadores
- getoptspara opciones cortas
- getopt/GNU para opciones largas
- Validación de entrada y mensajes de ayuda
 
- Expresiones regulares y patrones- [[ string =~ regex ]]en bash
- grep básico, ERE y PCRE según herramienta
- sed para sustituciones en flujo
- awk para campos y registros
- Limitaciones de regex en [[ ]]
- Casos de uso mezcla regex/patrones
 
- Archivos y directorios- Comprobaciones de archivo y directorio
- Metadatos y permisos
- Timestamps y touch
- Listados y filtros
- Búsqueda con find
- Trabajo seguro con nombres con espacios y saltos de línea
 
- Redirecciones y descriptores- >,- >>,- <,- 2>,- &>,- <>
- execpara reasignar FDs
- teey duplicación de salida
- noclobbery- set -C
- Here-docs (<<,<<-) y here-strings (<<<)
- Pseudodispositivos y /dev/null
 
- Tuberías y procesos- Piping entre múltiples comandos
- Efectos de subshell en (...)
- Agrupación { ...; }
- xargsy- -0con- -print0
- parallelpara concurrencia
- Consideraciones de rendimiento
 
- Sustituciones y procesos especiales- Sustitución de comandos $( )
- Sustitución de procesos <( )y>( )
- Co-procesos coproc
- Nombres de tuberías mkfifo
- /dev/tcpy- /dev/udpen bash
- Captura de stderr por separado
 
- Sustitución de comandos 
 
- Cadenas en shell
- Programación estructurada y modular- Organización de scripts- Estructura de carpetas y convenciones
- Cabeceras, licencia y metadatos
- Funciones reutilizables y bibliotecas
- “Main” y flujo de ejecución
- Gestión de errores y logging
- Salidas y códigos de retorno
 
- Interfaz de línea de comandos- Diseño de --helpy--version
- Subcomandos por convención
- Validación de parámetros y contratos
- Mensajes de uso y ejemplos
- Colores y TTY detección
- Compatibilidad con sudo
 
- Diseño de 
- Configuración y entorno- Archivos .envydotenvCLI
- Variables de entorno y precedencia
- Archivos INI/TOML/YAML con grep/sed/awk/jq/yq
- Plantillas con here-doc y placeholders
- Rutas relativas y absolutas robustas
- Detección de sistema y distros
 
- Archivos 
- Sourcing y módulos- sourcede librerías internas
- Control de colisiones de nombres
- Variables readonlyy constantes
- Carga condicional y “guardas”
- Versión mínima de bash y chequeos
- Dependencias de herramientas externas
 
- Estilo y calidad- Guías de estilo (Google Shell Style Guide)
- ShellCheck: categorías y reglas comunes
- shfmt: indentación y formato
- Nombres de funciones y variables
- Comentarios y secciones
- Revisiones y code review
 
- Documentación- Cabeceras con descripción y uso
- --helpautogenerado por funciones
- Manuales manmínimos conronn/pandoc
- README de CLI
- Ejemplos reproducibles
- Notas de compatibilidad
 
- Pruebas- bats-core: estructura y aserciones
- shUnit2: suites y fixtures
- cram/tap: pruebas de línea de comandos
- Mocks de comandos con PATH y wrappers
- Tests de integración con contenedores
- Cobertura y medición de rutas de error
 
- Depuración- set -xy PS4
- bash -xy trazas
- set -vy eco de entradas
- trap ERRy diagnósticos
- printf/- echodirigidos a stderr
- Reproducibilidad de fallos
 
- Rendimiento y benchmarking- timey- /usr/bin/time
- hyperfinepara CLIs
- Minimización de subshells
- Sustituciones eficientes vs pipelines
- Uso de awk/sed/perlcuando corresponda
- Perfilado con strace/dtruss(lectura de alto nivel)
 
 
- Organización de scripts
- Texto, datos y utilidades de Unix- Búsqueda y filtrado- grep,- egrep,- ripgrep
- head,- tail,- sedfiltros básicos
- awkpara columnas y agregaciones
- cut,- paste,- tr
- sort,- uniq,- comm,- join
- nl,- wc,- fold,- fmt
 
- Estructuras y formatos- CSV robusto con delimitadores
- TSV y cut --output-delimiter
- JSON con jq
- YAML con yq
- INI con awk/greppatrones
- Binarios y xxd/hexdump
 
- Archivos y compresión- tary variantes de compresión
- gzip,- bzip2,- xz,- zstd
- zip/- unzip
- Extracción selectiva y streaming
- Integridad y checksums (md5sum,sha256sum)
- Archivos temporales con mktemp
 
- Sistema de archivos- stat,- lsy formatos
- chmod,- chown,- umask
- df,- duy cuotas
- Enlaces duros y simbólicos
- Montajes y puntos de montaje
- lsofy archivos abiertos
 
- Búsqueda y ejecución- findcon pruebas de tiempo y tamaño
- -execy- -print0
- xargsparalelo y seguro
- Limitación de profundidad
- Selección por permiso/usuario/grupo
- Eliminación segura y confirmación
 
- Flujo y transformación- teepara bifurcar
- Filtros composables
- Tratamiento de errores en pipelines
- awkcomo “mini lenguaje”
- sedmulti-línea y hold space
- Mantenimiento de orden estable
 
 
- Búsqueda y filtrado
- Concurrencia, procesos y sistema- Procesos y jobs- Ejecución en background &
- jobs,- fg,- bg
- waity recolección
- disowny longevidad
- nohupy sesiones
- Subshells vs shell actual
 
- Ejecución en background 
- Señales y trap- SIGINT, SIGTERM, SIGHUP
- Limpieza de recursos
- Trampas para EXITyERR
- Reintentos exponenciales
- Ventanas de carrera y bloqueos
- flocky exclusión mutua
 
- Paralelismo práctico- xargs -Py límites
- GNU parallel
- Coprocesos coproc
- Paralelismo por archivos y sharding
- Estrategias de backoff
- Observabilidad básica
 
- xargs 
- Tiempo y temporización- datey formatos portables
- sleep,- usleep(según SO)
- timeouty cancelación
- Medición con timeySECONDS
- Zonas horarias y TZ
- Rounding y diferencias de tiempo
 
- Programación y scheduling- cron y crontab
- anacron
- systemd timers
- at/batch
- systemd-run para tareas únicas
- Logs y rotación con logrotate
 
- Recursos del sistema- ulimity límites de FDs
- nicey- renice
- Afinidad y taskset(Linux)
- Memoria y free/vm_stat
- CPU y mpstat/top/htop
- I/O y iostat/dstat
 
 
- Procesos y jobs
- Redes y comunicación- Transferencias- curly- wget
- scp,- sftp,- rsync
- Autenticación con claves
- Verificación de certificados
- Reanudación y --continue-at
- Throttling de ancho de banda
 
- Conectividad- ping,- ping6
- traceroute/- mtr
- dig/- host
- nc/netcat y puertos
- /dev/tcppara testing
- Proxies y variables de entorno
 
- SSH y automatización- sshy opciones de control
- ~/.ssh/configy multiplexación
- Agentes ssh-agent/gpg-agent
- Ejecución remota paralela
- Transferencias atómicas con rsync
- Túneles y port forwarding
 
- APIs y formatos- curlcon JSON
- jqpara parseo y filtros
- Autenticación por tokens
- Retries y backoff
- Logging de peticiones y respuestas
- Sanitización de secretos en logs
 
 
- Transferencias
- Entorno, dotfiles y personalización- Inicio de sesión y perfiles- Shell de login vs no login
- .bashrc,- .bash_profile,- .profile
- Orden de carga y herencia
- Distinciones macOS/Linux
- Scripts globales en /etc
- Depuración de inicio con set -x
 
- Prompt y estética- PS1, PS2, PS4
- Colores ANSI y escapes
- Información de git y estado
- Prompts por contexto (root, prod)
- Separadores unicode y símbolos
- Detección de TTY para colores
 
- Historial y productividad- HISTFILE, HISTSIZE, HISTCONTROL
- historyy expansión- !
- Búsqueda incremental con Readline
- Atajos de edición (emacs/vi mode)
- fcy edición del último comando
- Deduplicación de comandos
 
- Autocompletado- bash-completionpaquetes
- Completados personalizados
- Context-aware completion
- Cache y rendimiento
- Compatibilidad entre distros
- Mantenimiento de scripts de completion
 
- Gestión del entorno- Variables por proyecto
- direnvy hooks
- Versionado de herramientas (asdf,mise)
- Nix y shells reproducibles
- Plantillas de perfiles
- Seguridad de archivos de inicio
 
 
- Inicio de sesión y perfiles
- Seguridad en shell- Principios básicos- Citar siempre las variables
- Evitar word splitting accidental
- Manejo de IFS seguro
- set -Eeuo pipefailen scripts críticos
- umasky permisos por defecto
- noclobbery sobrescrituras
 
- Inyección y sanitización- Construcción segura de comandos
- Evitar eval
- Validación de rutas y nombres
- Filtrado de entrada y listas blancas
- Limitación de globbing inesperado
- Escapes al invocar herramientas
 
- Archivos temporales- mktempy directorios dedicados
- Limpieza con trap
- Colisiones y condiciones de carrera
- Nombres predecibles a evitar
- tmpfs y consideraciones de rendimiento
- Permisos y herencia en TMPDIR
 
- Secretos y credenciales- Variables de entorno sensibles
- Archivos .netrcy permisos
- Pass/Keychain/GPG
- Redacción de logs
- Integración con gestores de secretos
- Expiración y rotación
 
- Casos conocidos- Shellshock y funciones en entorno
- PATHenvenenado
- Scripts sudoinseguros
- sshsin restricción de comandos
- tary paths relativos
- find -execy comodines
 
 
- Principios básicos
- Portabilidad y diferencias de plataformas- GNU vs BSD- sed -iy compatibilidad
- datey formatos
- xargsflags por defecto
- taropciones divergentes
- readlinky- realpath
- statcampos y sintaxis
 
- Linux vs macOS vs *BSD- Utilidades de red
- Directorios del sistema
- Enlaces simbólicos y Finder
- Lanzadores y launchd
- Homebrew y rutas en ARM
- Frameworks y restricciones SIP
 
- Entornos mínimos- BusyBox/ash
- Alpine y musl
- Imágenes scratch/distroless
- Docker entrypoints en sh
- Shells en initramfs
- Limitaciones de locales
 
- Windows y POSIX- WSL y interoperabilidad
- MSYS2/Cygwin
- CRLF vs LF
- Rutas y letras de unidad
- Procesos y señales
- Permissions y ACLs
 
 
- GNU vs BSD
- Integración con ecosistema y empaquetado- Gestores de paquetes del sistema- apt, dnf/yum, pacman, zypper
- brew, port
- nix/guix
- snap/flatpak para CLIs
- Repos privados y mirrors
- Cachés y proxies
 
- Distribución de scripts- Instalación en /usr/local/bin
- Paquetización DEB/RPM básica
- Publicación via tarballs
- Checksums y firmas
- Versionado semántico por convención
- Changelogs y notas de versión
 
- Instalación en 
- Contenedores- Dockerfiles con sh/bash
- Entrypoint vs CMD
- Señales y PID 1
- Imágenes multi-stage
- Salud y readiness checks
- Logs y STDOUT/STDERR
 
- Dockerfiles con 
- CI/CD- Ejecutores y runners
- Caching de dependencias
- Matrices y paralelismo
- Artefactos y reportes
- Lint/test en pipelines
- Firmas y supply chain
 
- Interoperabilidad- Makefiles y targets
- Invocación desde otros lenguajes
- Subprocesos y códigos de retorno
- IPC simple con FIFOs
- JSON/YAML como interfaz
- CLI contract-first
 
 
- Gestores de paquetes del sistema
- Redes, servicios y sistemas- Gestión de servicios- systemd y systemctl
- SysV init scripts
- Launchd en macOS
- Supervisores (supervisord, s6)
- Logs de sistema y journalctl
- Rotación y retención
 
- systemd y 
- Almacenamiento y backups- rsyncavanzado
- Snapshots y LVM/ZFS (conceptos)
- Verificación de integridad
- Backups diferenciales/incrementales
- Restores y pruebas periódicas
- Cifrado en repositorios
 
- Observabilidad- top,- htop,- atop
- vmstat,- iostat,- dstat
- lsofy fugas de descriptores
- ss/- netstat
- Logging estructurado con jq
- Exportadores y métricas simples
 
- Seguridad operativa- sudopolíticas y NOPASSWD
- pamy restricciones
- faillock/- fail2banbásicos
- Chequeos de permisos en scripts
- Listas de control y setcap
- Auditoría de comandos críticos
 
 
- Gestión de servicios
- Casos de uso y patrones- Procesamiento masivo de archivos- Canonización de nombres
- Renombrado seguro
- Extracción y partición
- Validaciones de estructura
- Resúmenes y reportes
- Reintentos de operaciones fallidas
 
- Pipelines de datos- Extracción → Transformación → Carga
- Logs y métricas por etapa
- Paralelismo por particiones
- Reprocesamiento idempotente
- Control de versiones de pipeline
- Almacenamiento temporal y limpieza
 
- CLI de utilería- Plantillas --help
- Comandos anidados
- Config por archivo y env
- Verbosidad y --quiet
- Códigos de retorno estandarizados
- Tests de humo automáticos
 
- Plantillas 
- Automatización de despliegues- Construcción y empaquetado
- Publicación artefactos
- Migraciones y rollbacks
- Checks de salud post-deploy
- Canary y gradual rollouts
- Auditoría y trazabilidad
 
- Mantenimiento y tareas programadas- Limpieza de caches
- Rotación de logs
- Verificación de espacio
- Renovación de certificados
- Respaldo y rotación
- Alertas y notificaciones
 
 
- Procesamiento masivo de archivos
- Lectura, escritura y formatos específicos- CSV/TSV robusto- Delimitadores y comillas
- Filtrado por columnas
- Uniones y mezclas
- Limpieza de encabezados
- Detección de codificaciones
- Conversión a JSON/YAML
 
- JSON- Extracción y transformación con jq
- Validación y esquema básico
- Merge y patch
- Orden y pretty-print
- Streams y SLURP
- Filtrado por claves
 
- Extracción y transformación con 
- YAML- yqpara consultas
- Conversión YAML↔JSON
- Anclas y alias (operativo)
- Plantillas con here-doc
- Splits por documentos
- Validación básica
 
- Texto y codificaciones- UTF-8 por defecto
- Eliminación de BOM
- Normalización de saltos de línea
- Reemplazos seguros de binarios
- Detección con file
- Reglas de localización
 
 
- CSV/TSV robusto
- Internos del shell- Ciclo de vida de un comando- Tokenización y parsing
- Expansiones en orden
- Globbing y splitting
- Redirecciones y FDs
- Fork/exec y espera
- Recolección del estado
 
- Builtins esenciales- cd,- echo,- printf
- test/- [,- [[
- read,- mapfile
- set,- shopt
- exec,- eval(con cautela)
- trap,- ulimit
 
- Readline y edición- .inputrcy bindings
- Modos emacs/vi
- Macros simples
- Compleciones dinámicas
- Historial y expansión !
- Control de mayúsculas/minúsculas
 
- Opciones y comportamiento- POSIX mode
- Emulación de sh
- Opciones heredadas
- Variables especiales de bash
- Límite de recursión de funciones
- Máximos de longitud de línea/argv
 
 
- Ciclo de vida de un comando
- Internacionalización y locales- Locales del sistema- LC_ALL, LANG, LC_* variables
- Efectos en sort/grep/awk
- Estabilidad con LC_ALL=C
- Fechas, números y collations
- Conversión de charset
- Scripts reproducibles y locales fijas
 
- Mensajes y traducción (nivel operativo)- Mensajes de ayuda neutrales
- Señales y textos estándar
- Salidas parsables vs human-friendly
- Documentación bilingüe por convención
- Evitar dependencias regionales
- Pruebas con locales variados
 
 
- Locales del sistema
- Buenas prácticas y antipatrones- Citar siempre expansiones
- Evitar for x in $(cmd)para líneas
- Preferir read -rcon IFS controlado
- Manejo de errores explícito
- No abusar de subshells innecesarios
- Reemplazar catinútil (UUOC)
- grep -qpara pruebas silenciosas
- set -Eeuo pipefailcuando aplique
- Validar entradas externas
- Registrar acciones críticas
 
- Migración y compatibilidad- De bash a POSIX sh
- Detección y eliminación de bashismos
- Sustituciones de [[→[cuando sea posible
- mapfile/arrays en entornos sin bash
- extgloby alternativas
- Pruebas cruzadas en shells comunes
 
- Catálogo de recetas frecuentes- Parseo robusto de flags con getopts
- Leer fichero línea a línea seguro
- Procesar grandes árboles con find -print0
- Pipelines con manejo de errores
- Retries con backoff exponencial
- Locking con flock
- Logging con niveles y timestamps
- Rotación de logs por tamaño
- Descargas con checksum y verificación
- Recolección y limpieza a la salida
 
- Parseo robusto de flags con 
- Referencias y ecosistema- Manuales (man bash, POSIX)
- Guías de estilo reconocidas
- Proyectos ejemplo y plantillas
- Herramientas de verificación (ShellCheck, shfmt)
- Conjuntos de pruebas (bats, shUnit2)
- Comunidades y recursos de aprendizaje
 
- Manuales (