Por ejemplo

Nyx por ejemplo

Recetas resueltas, en orden de dificultad. Cada una es un programa que compila y corre con la versión del pie: leerla, copiarla, cambiarla.

Fundamentos

  1. 01Hello WorldEl programa Nyx más simple — imprimir texto en la terminal.
  2. 02Variableslet inmutable, var mutable, tipos básicos e interpolación de strings.
  3. 03FunctionsDefinir funciones con parámetros, tipos de retorno y argumentos por defecto.
  4. 04Control Flowif/else, bucles while, for-range, for-in, break y continue.
  5. 05ArraysCrear, indexar, agregar elementos e iterar sobre arrays dinámicos.
  6. 06MapsAlmacenamiento clave-valor con Map.new(), insert, get, has e iteración de claves.
  7. 07Stringstrim, length, substring, toUpper, split, contains e interpolación.
  8. 08StructsDefinir tipos de datos con campos y agregar métodos vía impl.
  9. 09EnumsTipos de datos algebraicos con variantes que portan datos y match exhaustivo.
  10. 10ClosuresFunciones de primera clase que capturan su entorno circundante.

Entrada, salida y datos

  1. 11Lectura y Escritura de ArchivosLeer y escribir archivos con read_file y write_file.
  2. 12Entrada por StdinLeer entrada del usuario desde la terminal con read_line.
  3. 13Argumentos de CLIAcceder a los argumentos de línea de comandos con get_args.
  4. 14Variables de EntornoLeer variables de entorno con getenv y getenv_default.
  5. 15Parseo de JSONParsear strings JSON hacia Maps y Arrays.
  6. 16Serialización JSONConvertir estructuras de datos de vuelta a strings JSON.
  7. 17Expresiones RegularesMatch, extracción y reemplazo con regex POSIX.
  8. 18Parseo de CSVDividir líneas y campos para procesar datos tabulares.
  9. 19Fecha y HoraTimestamps, fechas formateadas y medición de tiempo.
  10. 20Spawn y ChannelCrear threads y comunicarse mediante channels.
  11. 101Errores de archivo: dos nivelesResult cuando quien llama puede reaccionar, panic cuando morir es lo honesto.

Tipos y patrones

  1. 21TraitsDefinir comportamiento compartido con trait e impl ... for.
  2. 22Cotas de TraitRestringir genéricos con <T: Display>.
  3. 23Derive CloneGenerar automáticamente implementaciones de Clone, Debug y otros traits.
  4. 24Option: Some y NoneManejar valores opcionales con Some y None.
  5. 25Result: Ok y ErrManejo de errores con Ok y Err.
  6. 26Operador TryPropagación de errores con cortocircuito usando ?.
  7. 27if letDesestructurar enums en condiciones con if let.
  8. 28Guardas de MatchAgregar condiciones a los brazos de match con guardas if.
  9. 29Iterator: map y filterTransformaciones perezosas con .iter().filter().map().collect().
  10. 30Iterator: foldReducir una secuencia a un único valor con fold.

Avanzado

  1. 32Iterador: take() y skip()Recortar secuencias con take y skip.
  2. 33RecursiónResolver problemas con funciones que se llaman a sí mismas.
  3. 34OrdenamientoOrdenar arrays de enteros y strings.
  4. 35Manejo de ErroresBloques try/catch para recuperarse de errores en tiempo de ejecución.
  5. 36Defer y CleanupLimpieza garantizada con bloques defer { ... }.
  6. 37Sleep y TemporizadoresPausar la ejecución y medir tiempo transcurrido.
  7. 38Hashing CriptográficoSHA-256, MD5 y HMAC-SHA256 para verificación de integridad.
  8. 39Números Aleatorios y UUIDGenerar números aleatorios e identificadores únicos.
  9. 40Creación de ThreadsEjecutar funciones de forma concurrente con thread_spawn.
  10. 102Motor de templates estilo FlaskInterpolación, #if, #each y partials con std/template.

Redes

  1. 41Base64Codificación/decodificación RFC 4648 — variantes estándar y URL-safe.
  2. 42URL EncodePercent-encoding, query strings y escape de entidades HTML.
  3. 43Configuración TOMLParsear strings de configuración con std/toml.
  4. 44MessagePackSerialización binaria: compacta, tipada, orientada a bytes.
  5. 45DNS ResolveConvertir nombres de host a direcciones IP con resolve.
  6. 46Cliente TCPConectar, escribir y leer sobre sockets TCP crudos.
  7. 47Servidor TCPEscuchar, aceptar y hacer eco con tcp_listen.
  8. 48Socket UDPDatagramas sin conexión con udp_bind y udp_sendto.
  9. 49HTTP GETPeticiones de cliente HTTP de alto nivel con std/http.
  10. 50HTTP POSTPeticiones POST y métodos personalizados con http_request.
  11. 51Servidor HTTPServidor mínimo con http_serve y enrutamiento de peticiones.
  12. 52Middleware HTTPFramework web con App, rutas, logging y CORS.
  13. 53WebSocketFraming RFC 6455, parseo y respuestas de handshake.
  14. 55SQLiteBase de datos SQL en memoria con sqlite_open y sqlite_query.
  15. 56Escritura CSVCrear y serializar documentos CSV con std/csv.

Concurrencia

  1. 57MutexProteger estado compartido entre threads con locks.
  2. 58Patrones de CanalesPaso de mensajes con channels con buffer y centinelas.
  3. 59Pool de WorkersDespachar tareas a N threads mediante channels compartidos.
  4. 60Productor-ConsumidorPipeline desacoplado con contrapresión de channel acotado.
  5. 61WaitGroupEsperar a múltiples threads con wg_add/wg_done/wg_wait.
  6. 62SemáforoLimitar el acceso concurrente con sem_acquire/sem_release.

Sistemas

  1. 64Fork & ExecEjecutar comandos externos con fork, execvp y waitpid.
  2. 65PipesConectar procesos con pipe_new y dup2.
  3. 66Manejo de SeñalesRegistrar callbacks de señales con signal_handle.
  4. 67Vigilante de ArchivosDetectar cambios en archivos mediante polling con stat.
  5. 68Control de ProcesosPID, directorio de trabajo, detección de terminal y stat de archivos.
  6. 69Terminal RawEntrada carácter por carácter con raw_mode_enter.
  7. 70Script ShebangEjecutar archivos Nyx como scripts ejecutables con #!/usr/bin/env nyx.
Nyx, paso a pasoInstalarlo, escribir un primer programa, armar un proyecto y entregárselo a un asistente.Abrir →