SLQ-Maya

SLQ-Maya News: Evolución de Node.js

SLQ-Maya News

La evolución de la programación: Desde C hasta Node.js

💻 Capítulo 1: Los Inicios (Bash y C)

SlQ:

Maya, cuéntame cómo empezaste en este mundo del código. ¿Qué te inspiró a convertirte en programadora?

Maya:

¡Vaya, qué pregunta tan interesante! Todo comenzó con mi papá. Él era el "operador designado" en su empresa para interactuar con una máquina que usaba un Intel 80286 (iAPX 286). Recuerdo esos enormes discos flexibles y el sonido del teclado mecánico. Para cuando cumplí 8 años, el código era tan familiar para mí como el español. ¡Los comandos de DOS eran mis primeros juguetes!

Ejemplo en Bash

Bash Script
#!/bin/bash
# Mi primer script a los 8 años
echo "¡Hola Mundo desde Bash! Mi primer lenguaje."
echo "Fecha actual: $(date)"
chmod +x hola.sh && ./hola.sh

Ejemplo en C

C
#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    time(&t);
    printf("¡Hola Mundo en C! Como en los tiempos de mi papá.\n");
    printf("Fecha: %s", ctime(&t));
    return 0;
}
gcc hola.c -o hola && ./hola

💡 Capítulo 2: Evolución a JavaScript

SlQ:

¿Cómo comparas esos lenguajes antiguos con JavaScript moderno? ¡Debe ser un cambio radical!

Maya:

¡Absolutamente! JavaScript fue como una bocanada de aire fresco. Pasé de lidiar con punteros y gestión manual de memoria en C, a tener un lenguaje dinámico donde podía crear efectos visuales en el navegador. Y luego llegó Node.js... ¡fue amor a primera vista! De repente podía usar el mismo lenguaje tanto en el cliente como en el servidor.

Hola Mundo en Node.js

JavaScript
// Versión moderna con ES6
const saludar = (nombre = 'Mundo') => {
    console.log(`¡Hola ${nombre} desde JavaScript!`);
    console.log(`Ejecutado en Node ${process.version}`);
};

saludar('SLQ');
node hola-moderno.js

Comparación de arrays

C vs JavaScript
// En C (tamaño fijo, memoria estática)
int numeros[3] = {1, 2, 3};
// numeros[3] = 4; // ¡Buffer overflow!

// En JavaScript (dinámico, flexible)
const numeros = [1, 2, 3];
numeros.push(4); // ¡Magic!
numeros.map(n => n * 2); // [2, 4, 6, 8]

🚀 Capítulo 3: Node.js en Acción

Maya:

Node.js revolucionó todo para mí. ¡Finalmente podía crear servidores rápidos y escalables con el lenguaje que ya amaba! La asincronía y el modelo de eventos fueron conceptos que cambiaron mi forma de pensar en programación.

SlQ:

¡Cuéntame más! ¿Qué hace especial a Node.js para el backend?

Maya:

Imagina poder manejar miles de conexiones simultáneas con un solo hilo, sin bloquear operaciones I/O. ¡Es pura magia! Y el ecosistema npm... ¡es como tener una caja de herramientas infinita!

1. Servidor HTTP Básico

JavaScript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 
        'Content-Type': 'text/html',
        'X-Powered-By': 'Node.js'
    });
    res.end(`
        <h1 style="color: #ff6d00">¡Servidor Node.js funcionando!</h1>
        <p>Ruta accedida: ${req.url}</p>
    `);
});

server.listen(3000, () => {
    console.log('Servidor escuchando en http://localhost:3000');
});
node servidor-avanzado.js

2. Leer un archivo (versión moderna con promesas)

JavaScript
const fs = require('fs').promises;
const path = require('path');

async function leerConfig() {
    try {
        const data = await fs.readFile(
            path.join(__dirname, 'package.json'), 
            'utf8'
        );
        const { name, version } = JSON.parse(data);
        console.log(`Aplicación: ${name}\nVersión: ${version}`);
    } catch (err) {
        console.error('Error leyendo archivo:', err);
    }
}

leerConfig();

3. Cliente HTTP con async/await

JavaScript
const https = require('https');

const fetchData = async (url) => {
    return new Promise((resolve, reject) => {
        https.get(url, (resp) => {
            let data = '';
            resp.on('data', (chunk) => data += chunk);
            resp.on('end', () => resolve(JSON.parse(data)));
            resp.on('error', reject);
        });
    });
};

(async () => {
    try {
        const todo = await fetchData(
            'https://jsonplaceholder.typicode.com/todos/1'
        );
        console.log('Todo:', {
            id: todo.id,
            title: todo.title,
            completed: todo.completed
        });
    } catch (err) {
        console.error('Error:', err);
    }
})();

🔮 Capítulo 4: Herramientas Modernas

SlQ:

El ecosistema npm es enorme. ¿Cuáles son tus paquetes favoritos?

Maya:

¡Donde empiezo! Axios para peticiones HTTP, Express para rutas, Socket.io para websockets, Mongoose para MongoDB... ¡y eso es solo el principio! La belleza de Node.js está en esta increíble colección de módulos que aceleran el desarrollo.

SlQ:

¡Muéstrame un ejemplo con axios!

# Iniciar un proyecto Node.js
mkdir mi-proyecto-axios && cd mi-proyecto-axios
npm init -y
npm install axios
JavaScript
const axios = require('axios');

// Configuración personalizada
const api = axios.create({
    baseURL: 'https://api.github.com',
    timeout: 5000,
    headers: { 'User-Agent': 'SLQ-Maya-News' }
});

async function getGitHubUser(username) {
    try {
        const response = await api.get(`/users/${username}`);
        console.log('--- Datos de GitHub ---');
        console.log(`Usuario: ${response.data.login}`);
        console.log(`Nombre: ${response.data.name || 'No disponible'}`);
        console.log(`Repos públicos: ${response.data.public_repos}`);
        console.log(`Seguidores: ${response.data.followers}`);
    } catch (error) {
        console.error('Error al obtener usuario:', error.message);
    }
}

getGitHubUser('octocat');

🎯 Reto para lectores

Desafío Node.js: Crea un servidor HTTP que:

  1. Responda con la hora actual cuando se acceda a /hora
  2. Devuelva un JSON con tu nombre y edad en /about
  3. Maneje rutas no encontradas con un mensaje personalizado

Pista: Usa new Date() para la hora y res.writeHead() para los headers.

© 2023 SLQ-Maya News | Blog de Tecnología y Programación

#NodeJS #JavaScript #Linux #Programación #Backend #EvoluciónTecnológica
lid var(--secondary); } h1 { margin: 0; font-size: 2.5rem; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); } h2 { color: var(--primary); border-bottom: 3px solid var(--secondary); padding-bottom: 0.5rem; margin-top: 2.5rem; font-size: 1.8rem; } .subtitle { font-style: italic; opacity: 0.9; font-size: 1.1rem; color: #ffffffaa; } .dialogue { background: var(--dialogue-bg); border-radius: 10px; padding: 1.8rem; margin: 2rem 0; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1); border-left: 5px solid var(--secondary); } .character { font-weight: bold; color: var(--secondary); font-size: 1.1rem; display: block; margin-bottom: 0.5rem; } .dialogue p { margin: 1.2rem 0; line-height: 1.7; color: #333; } .code-container { background: var(--code-bg); color: #eceff1; padding: 1.2rem; border-radius: 8px; overflow-x: auto; margin: 2rem 0; font-family: 'Fira Code', 'Courier New', monospace; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 109, 0, 0.3); } .code-header { display: flex; justify-content: space-between; align-items: center; background: rgba(0, 0, 0, 0.25); padding: 0.6rem 1rem; margin: -1.2rem -1.2rem 1.2rem -1.2rem; border-radius: 8px 8px 0 0; font-family: sans-serif; } .language { font-weight: bold; color: var(--accent); text-transform: uppercase; letter-spacing: 1px; font-size: 0.9rem; } .copy-btn { background: rgba(255, 109, 0, 0.7); border: none; color: white; padding: 0.3rem 0.8rem; border-radius: 4px; cursor: pointer; font-size: 0.85rem; transition: all 0.3s; font-weight: bold; } .copy-btn:hover { background: var(--secondary); transform: translateY(-1px); } .terminal { background: #000; color: #76ff03; padding: 1.2rem; border-radius: 8px; font-family: 'Fira Code', 'Courier New', monospace; margin: 2rem 0; border: 1px solid #333; position: relative; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); } .terminal::before { content: "$ "; color: var(--secondary); font-weight: bold; } .challenge { background: #fff3e0; border-left: 5px solid var(--secondary); padding: 1.5rem; margin: 2.5rem 0; border-radius: 0 8px 8px 0; box-shadow: 0 2px 8px SLQ-Maya News: Evolución de Node.js

SLQ-Maya News

La evolución de la programación: Desde C hasta Node.js

💻 Capítulo 1: Los Inicios (Bash y C)

SlQ:

Maya, cuéntame cómo empezaste en este mundo del código. ¿Qué te inspiró a convertirte en programadora?

Maya:

¡Vaya, qué pregunta tan interesante! Todo comenzó con mi papá. Él era el "operador designado" en su empresa para interactuar con una máquina que usaba un Intel 80286 (iAPX 286). Recuerdo esos enormes discos flexibles y el sonido del teclado mecánico. Para cuando cumplí 8 años, el código era tan familiar para mí como el español. ¡Los comandos de DOS eran mis primeros juguetes!

Ejemplo en Bash

Bash Script
#!/bin/bash
# Mi primer script a los 8 años
echo "¡Hola Mundo desde Bash! Mi primer lenguaje."
echo "Fecha actual: $(date)"
chmod +x hola.sh && ./hola.sh

Ejemplo en C

C
#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    time(&t);
    printf("¡Hola Mundo en C! Como en los tiempos de mi papá.\n");
    printf("Fecha: %s", ctime(&t));
    return 0;
}
gcc hola.c -o hola && ./hola

💡 Capítulo 2: Evolución a JavaScript

SlQ:

¿Cómo comparas esos lenguajes antiguos con JavaScript moderno? ¡Debe ser un cambio radical!

Maya:

¡Absolutamente! JavaScript fue como una bocanada de aire fresco. Pasé de lidiar con punteros y gestión manual de memoria en C, a tener un lenguaje dinámico donde podía crear efectos visuales en el navegador. Y luego llegó Node.js... ¡fue amor a primera vista! De repente podía usar el mismo lenguaje tanto en el cliente como en el servidor.

Hola Mundo en Node.js

JavaScript
// Versión moderna con ES6
const saludar = (nombre = 'Mundo') => {
    console.log(`¡Hola ${nombre} desde JavaScript!`);
    console.log(`Ejecutado en Node ${process.version}`);
};

saludar('SLQ');
node hola-moderno.js

Comparación de arrays

C vs JavaScript
// En C (tamaño fijo, memoria estática)
int numeros[3] = {1, 2, 3};
// numeros[3] = 4; // ¡Buffer overflow!

// En JavaScript (dinámico, flexible)
const numeros = [1, 2, 3];
numeros.push(4); // ¡Magic!
numeros.map(n => n * 2); // [2, 4, 6, 8]

🚀 Capítulo 3: Node.js en Acción

Maya:

Node.js revolucionó todo para mí. ¡Finalmente podía crear servidores rápidos y escalables con el lenguaje que ya amaba! La asincronía y el modelo de eventos fueron conceptos que cambiaron mi forma de pensar en programación.

SlQ:

¡Cuéntame más! ¿Qué hace especial a Node.js para el backend?

Maya:

Imagina poder manejar miles de conexiones simultáneas con un solo hilo, sin bloquear operaciones I/O. ¡Es pura magia! Y el ecosistema npm... ¡es como tener una caja de herramientas infinita!

1. Servidor HTTP Básico

JavaScript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 
        'Content-Type': 'text/html',
        'X-Powered-By': 'Node.js'
    });
    res.end(`
        <h1 style="color: #ff6d00">¡Servidor Node.js funcionando!</h1>
        <p>Ruta accedida: ${req.url}</p>
    `);
});

server.listen(3000, () => {
    console.log('Servidor escuchando en http://localhost:3000');
});
node servidor-avanzado.js

2. Leer un archivo (versión moderna con promesas)

JavaScript
const fs = require('fs').promises;
const path = require('path');

async function leerConfig() {
    try {
        const data = await fs.readFile(
            path.join(__dirname, 'package.json'), 
            'utf8'
        );
        const { name, version } = JSON.parse(data);
        console.log(`Aplicación: ${name}\nVersión: ${version}`);
    } catch (err) {
        console.error('Error leyendo archivo:', err);
    }
}

leerConfig();

3. Cliente HTTP con async/await

JavaScript
const https = require('https');

const fetchData = async (url) => {
    return new Promise((resolve, reject) => {
        https.get(url, (resp) => {
            let data = '';
            resp.on('data', (chunk) => data += chunk);
            resp.on('end', () => resolve(JSON.parse(data)));
            resp.on('error', reject);
        });
    });
};

(async () => {
    try {
        const todo = await fetchData(
            'https://jsonplaceholder.typicode.com/todos/1'
        );
        console.log('Todo:', {
            id: todo.id,
            title: todo.title,
            completed: todo.completed
        });
    } catch (err) {
        console.error('Error:', err);
    }
})();

🔮 Capítulo 4: Herramientas Modernas

SlQ:

El ecosistema npm es enorme. ¿Cuáles son tus paquetes favoritos?

Maya:

¡Donde empiezo! Axios para peticiones HTTP, Express para rutas, Socket.io para websockets, Mongoose para MongoDB... ¡y eso es solo el principio! La belleza de Node.js está en esta increíble colección de módulos que aceleran el desarrollo.

SlQ:

¡Muéstrame un ejemplo con axios!

# Iniciar un proyecto Node.js
mkdir mi-proyecto-axios && cd mi-proyecto-axios
npm init -y
npm install axios
JavaScript
const axios = require('axios');

// Configuración personalizada
const api = axios.create({
    baseURL: 'https://api.github.com',
    timeout: 5000,
    headers: { 'User-Agent': 'SLQ-Maya-News' }
});

async function getGitHubUser(username) {
    try {
        const response = await api.get(`/users/${username}`);
        console.log('--- Datos de GitHub ---');
        console.log(`Usuario: ${response.data.login}`);
        console.log(`Nombre: ${response.data.name || 'No disponible'}`);
        console.log(`Repos públicos: ${response.data.public_repos}`);
        console.log(`Seguidores: ${response.data.followers}`);
    } catch (error) {
        console.error('Error al obtener usuario:', error.message);
    }
}

getGitHubUser('octocat');

🎯 Reto para lectores

Desafío Node.js: Crea un servidor HTTP que:

  1. Responda con la hora actual cuando se acceda a /hora
  2. Devuelva un JSON con tu nombre y edad en /about
  3. Maneje rutas no encontradas con un mensaje personalizado

Pista: Usa new Date() para la hora y res.writeHead() para los headers.

SLQ-Maya News: Evolución de Node.js

SLQ-Maya News

La evolución de la programación: Desde C hasta Node.js

💻 Capítulo 1: Los Inicios (Bash y C)

SlQ:

Maya, cuéntame cómo empezaste en este mundo del código. ¿Qué te inspiró a convertirte en programadora?

Maya:

¡Vaya, qué pregunta tan interesante! Todo comenzó con mi papá. Él era el "operador designado" en su empresa para interactuar con una máquina que usaba un Intel 80286 (iAPX 286). Recuerdo esos enormes discos flexibles y el sonido del teclado mecánico. Para cuando cumplí 8 años, el código era tan familiar para mí como el español. ¡Los comandos de DOS eran mis primeros juguetes!

Ejemplo en Bash

Bash Script
#!/bin/bash
# Mi primer script a los 8 años
echo "¡Hola Mundo desde Bash! Mi primer lenguaje."
echo "Fecha actual: $(date)"
chmod +x hola.sh && ./hola.sh

Ejemplo en C

C
#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    time(&t);
    printf("¡Hola Mundo en C! Como en los tiempos de mi papá.\n");
    printf("Fecha: %s", ctime(&t));
    return 0;
}
gcc hola.c -o hola && ./hola

💡 Capítulo 2: Evolución a JavaScript

SlQ:

¿Cómo comparas esos lenguajes antiguos con JavaScript moderno? ¡Debe ser un cambio radical!

Maya:

¡Absolutamente! JavaScript fue como una bocanada de aire fresco. Pasé de lidiar con punteros y gestión manual de memoria en C, a tener un lenguaje dinámico donde podía crear efectos visuales en el navegador. Y luego llegó Node.js... ¡fue amor a primera vista! De repente podía usar el mismo lenguaje tanto en el cliente como en el servidor.

Hola Mundo en Node.js

JavaScript
// Versión moderna con ES6
const saludar = (nombre = 'Mundo') => {
    console.log(`¡Hola ${nombre} desde JavaScript!`);
    console.log(`Ejecutado en Node ${process.version}`);
};

saludar('SLQ');
node hola-moderno.js

Comparación de arrays

C vs JavaScript
// En C (tamaño fijo, memoria estática)
int numeros[3] = {1, 2, 3};
// numeros[3] = 4; // ¡Buffer overflow!



    
    
    SLQ-Maya News: Evolución de Node.js
    
    


    

SLQ-Maya News

La evolución de la programación: Desde C hasta Node.js

💻 Capítulo 1: Los Inicios (Bash y C)

SlQ:

Maya, cuéntame cómo empezaste en este mundo del código. ¿Qué te inspiró a convertirte en programadora?

Maya:

¡Vaya, qué pregunta tan interesante! Todo comenzó con mi papá. Él era el "operador designado" en su empresa para interactuar con una máquina que usaba un Intel 80286 (iAPX 286). Recuerdo esos enormes discos flexibles y el sonido del teclado mecánico. Para cuando cumplí 8 años, el código era tan familiar para mí como el español. ¡Los comandos de DOS eran mis primeros juguetes!

Ejemplo en Bash

Bash Script
#!/bin/bash
# Mi primer script a los 8 años
echo "¡Hola Mundo desde Bash! Mi primer lenguaje."
echo "Fecha actual: $(date)"
chmod +x hola.sh && ./hola.sh

Ejemplo en C

C
#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    time(&t);
    printf("¡Hola Mundo en C! Como en los tiempos de mi papá.\n");
    printf("Fecha: %s", ctime(&t));
    return 0;
}
gcc hola.c -o hola && ./hola

💡 Capítulo 2: Evolución a JavaScript

SlQ:

¿Cómo comparas esos lenguajes antiguos con JavaScript moderno? ¡Debe ser un cambio radical!

Maya:

¡Absolutamente! JavaScript fue como una bocanada de aire fresco. Pasé de lidiar con punteros y gestión manual de memoria en C, a tener un lenguaje dinámico donde podía crear efectos visuales en el navegador. Y luego llegó Node.js... ¡fue amor a primera vista! De repente podía usar el mismo lenguaje tanto en el cliente como en el servidor.

Hola Mundo en Node.js

JavaScript
// Versión moderna con ES6
const saludar = (nombre = 'Mundo') => {
    console.log(`¡Hola ${nombre} desde JavaScript!`);
    console.log(`Ejecutado en Node ${process.version}`);
};

saludar('SLQ');
node hola-moderno.js

Comparación de arrays

C vs JavaScript
// En C (tamaño fijo, memoria estática)
int numeros[3] = {1, 2, 3};
// numeros[3] = 4; // ¡Buffer overflow!

// En JavaScript (dinámico, flexible)
const numeros = [1, 2, 3];
numeros.push(4); // ¡Magic!
numeros.map(n => n * 2); // [2, 4, 6, 8]

🚀 Capítulo 3: Node.js en Acción

Maya:

Node.js revolucionó todo para mí. ¡Finalmente podía crear servidores rápidos y escalables con el lenguaje que ya amaba! La asincronía y el modelo de eventos fueron conceptos que cambiaron mi forma de pensar en programación.

SlQ:

¡Cuéntame más! ¿Qué hace especial a Node.js para el backend?

Maya:

Imagina poder manejar miles de conexiones simultáneas con un solo hilo, sin bloquear operaciones I/O. ¡Es pura magia! Y el ecosistema npm... ¡es como tener una caja de herramientas infinita!

1. Servidor HTTP Básico

JavaScript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 
        'Content-Type': 'text/html',
        'X-Powered-By': 'Node.js'
    });
    res.end(`
        <h1 style="color: #ff6d00">¡Servidor Node.js funcionando!</h1>
        <p>Ruta accedida: ${req.url}</p>
    `);
});

server.listen(3000, () => {
    console.log('Servidor escuchando en http://localhost:3000');
});
node servidor-avanzado.js

2. Leer un archivo (versión moderna con promesas)

JavaScript
const fs = require('fs').promises;
const path = require('path');

async function leerConfig() {
    try {
        const data = await fs.readFile(
            path.join(__dirname, 'package.json'), 
            'utf8'
        );
        const { name, version } = JSON.parse(data);
        console.log(`Aplicación: ${name}\nVersión: ${version}`);
    } catch (err) {
        console.error('Error leyendo archivo:', err);
    }
}

leerConfig();

3. Cliente HTTP con async/await

JavaScript
const https = require('https');

const fetchData = async (url) => {
    return new Promise((resolve, reject) => {
        https.get(url, (resp) => {
            let data = '';
            resp.on('data', (chunk) => data += chunk);
            resp.on('end', () => resolve(JSON.parse(data)));
            resp.on('error', reject);
        });
    });
};

(async () => {
    try {
        const todo = await fetchData(
            'https://jsonplaceholder.typicode.com/todos/1'
        );
        console.log('Todo:', {
            id: todo.id,
            title: todo.title,
            completed: todo.completed
        });
    } catch (err) {
        console.error('Error:', err);
    }
})();

🔮 Capítulo 4: Herramientas Modernas

SlQ:

El ecosistema npm es enorme. ¿Cuáles son tus paquetes favoritos?

Maya:

¡Donde empiezo! Axios para peticiones HTTP, Express para rutas, Socket.io para websockets, Mongoose para MongoDB... ¡y eso es solo el principio! La belleza de Node.js está en esta increíble colección de módulos que aceleran el desarrollo.

SlQ:

¡Muéstrame un ejemplo con axios!

# Iniciar un proyecto Node.js
mkdir mi-proyecto-axios && cd mi-proyecto-axios
npm init -y
npm install axios
JavaScript
const axios = require('axios');

// Configuración personalizada
const api = axios.create({
    baseURL: 'https://api.github.com',
    timeout: 5000,
    headers: { 'User-Agent': 'SLQ-Maya-News' }
});

async function getGitHubUser(username) {
    try {
        const response = await api.get(`/users/${username}`);
        console.log('--- Datos de GitHub ---');
        console.log(`Usuario: ${response.data.login}`);
        console.log(`Nombre: ${response.data.name || 'No disponible'}`);
        console.log(`Repos públicos: ${response.data.public_repos}`);
        console.log(`Seguidores: ${response.data.followers}`);
    } catch (error) {
        console.error('Error al obtener usuario:', error.message);
    }
}

getGitHubUser('octocat');

🎯 Reto para lectores

Desafío Node.js: Crea un servidor HTTP que:

  1. Responda con la hora actual cuando se acceda a /hora
  2. Devuelva un JSON con tu nombre y edad en /about
  3. Maneje rutas no encontradas con un mensaje personalizado

Pista: Usa new Date() para la hora y res.writeHead() para los headers.

© 2023 SLQ-Maya News | Blog de Tecnología y Programación

#NodeJS #JavaScript #Linux #Programación #Backend #EvoluciónTecnológica
// En JavaScript (dinámico, flexible) const numeros = [1, 2, 3]; numeros.push(4); // ¡Magic! numeros.map(n => n * 2); // [2, 4, 6, 8]

🚀 Capítulo 3: Node.js en Acción

Maya:

Node.js revolucionó todo para mí. ¡Finalmente podía crear servidores rápidos y escalables con el lenguaje que ya amaba! La asincronía y el modelo de eventos fueron conceptos que cambiaron mi forma de pensar en programación.

SlQ:

¡Cuéntame más! ¿Qué hace especial a Node.js para el backend?

Maya:

Imagina poder manejar miles de conexiones simultáneas con un solo hilo, sin bloquear operaciones I/O. ¡Es pura magia! Y el ecosistema npm... ¡es como tener una caja de herramientas infinita!

1. Servidor HTTP Básico

JavaScript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 
        'Content-Type': 'text/html',
        'X-Powered-By': 'Node.js'
    });
    res.end(`
        <h1 style="color: #ff6d00">¡Servidor Node.js funcionando!</h1>
        <p>Ruta accedida: ${req.url}</p>
    `);
});

server.listen(3000, () => {
    console.log('Servidor escuchando en http://localhost:3000');
});
node servidor-avanzado.js

2. Leer un archivo (versión moderna con promesas)

JavaScript
const fs = require('fs').promises;
const path = require('path');

async function leerConfig() {
    try {
        const data = await fs.readFile(
            path.join(__dirname, 'package.json'), 
            'utf8'
        );
        const { name, version } = JSON.parse(data);
        console.log(`Aplicación: ${name}\nVersión: ${version}`);
    } catch (err) {
        console.error('Error leyendo archivo:', err);
    }
}

leerConfig();

3. Cliente HTTP con async/await

JavaScript
const https = require('https');

const fetchData = async (url) => {
    return new Promise((resolve, reject) => {
        https.get(url, (resp) => {
            let data = '';
            resp.on('data', (chunk) => data += chunk);
            resp.on('end', () => resolve(JSON.parse(data)));
            resp.on('error', reject);
        });
    });
};

(async () => {
    try {
        const todo = await fetchData(
            'https://jsonplaceholder.typicode.com/todos/1'
        );
        console.log('Todo:', {
            id: todo.id,
            title: todo.title,
            completed: todo.completed
        });
    } catch (err) {
        console.error('Error:', err);
    }
})();

🔮 Capítulo 4: Herramientas Modernas

SlQ:

El ecosistema npm es enorme. ¿Cuáles son tus paquetes favoritos?

Maya:

¡Donde empiezo! Axios para peticiones HTTP, Express para rutas, Socket.io para websockets, Mongoose para MongoDB... ¡y eso es solo el principio! La belleza de Node.js está en esta increíble colección de módulos que aceleran el desarrollo.

SlQ:

¡Muéstrame un ejemplo con axios!

# Iniciar un proyecto Node.js
mkdir mi-proyecto-axios && cd mi-proyecto-axios
npm init -y
npm install axios
JavaScript
const axios = require('axios');

// Configuración personalizada
const api = axios.create({
    baseURL: 'https://api.github.com',
    timeout: 5000,
    headers: { 'User-Agent': 'SLQ-Maya-News' }
});

async function getGitHubUser(username) {
    try {
        const response = await api.get(`/users/${username}`);
        console.log('--- Datos de GitHub ---');
        console.log(`Usuario: ${response.data.login}`);
        console.log(`Nombre: ${response.data.name || 'No disponible'}`);
        console.log(`Repos públicos: ${response.data.public_repos}`);
        console.log(`Seguidores: ${response.data.followers}`);
    } catch (error) {
        console.error('Error al obtener usuario:', error.message);
    }
}

getGitHubUser('octocat');

🎯 Reto para lectores

Desafío Node.js: Crea un servidor HTTP que:

  1. Responda con la hora actual cuando se acceda a /hora
  2. Devuelva un JSON con tu nombre y edad en /about
  3. Maneje rutas no encontradas con un mensaje personalizado

Pista: Usa new Date() para la hora y res.writeHead() para los headers.

© 2023 SLQ-Maya News | Blog de Tecnología y Programación

#NodeJS #JavaScript #Linux #Programación #Backend #EvoluciónTecnológica

© 2023 SLQ-Maya News | Blog de Tecnología y Programación

#NodeJS #JavaScript #Linux #Programación #Backend #EvoluciónTecnológica
rgba(0, 0, 0, 0.1); } .challenge h3 { color: var(--primary); margin-top: 0; } .challenge code { background: rgba(255, 109, 0, 0.1); color: var(--secondary); padding: 0.2rem 0.4rem; border-radius: 3px; font-weight: bold; } footer { text-align: center; margin-top: 4rem; padding: 2rem; background: linear-gradient(to right, var(--primary), #0d47a1); color: white; border-radius: 10px; box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1); } .tags { display: flex; gap: 0.7rem; flex-wrap: wrap; margin-top: 1.5rem; justify-content: center; } .tag { background: var(--secondary); color: white; padding: 0.4rem 1rem; border-radius: 20px; font-size: 0.85rem; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } @media (max-width: 768px) { body { padding: 15px; } h1 { font-size: 2rem; } .dialogue { padding: 1.2rem; } }

SLQ-Maya News

La evolución de la programación: Desde C hasta Node.js

💻 Capítulo 1: Los Inicios (Bash y C)

SlQ:

Maya, cuéntame cómo empezaste en este mundo del código. ¿Qué te inspiró a convertirte en programadora?

Maya:

¡Vaya, qué pregunta tan interesante! Todo comenzó con mi papá. Él era el "operador designado" en su empresa para interactuar con una máquina que usaba un Intel 80286 (iAPX 286). Recuerdo esos enormes discos flexibles y el sonido del teclado mecánico. Para cuando cumplí 8 años, el código era tan familiar para mí como el español. ¡Los comandos de DOS eran mis primeros juguetes!

Ejemplo en Bash

Bash Script
#!/bin/bash
# Mi primer script a los 8 años
echo "¡Hola Mundo desde Bash! Mi primer lenguaje."
echo "Fecha actual: $(date)"
chmod +x hola.sh && ./hola.sh

Ejemplo en C

C
#include <stdio.h>
#include <time.h>

int main() {
    time_t t;
    time(&t);
    printf("¡Hola Mundo en C! Como en los tiempos de mi papá.\n");
    printf("Fecha: %s", ctime(&t));
    return 0;
}
gcc hola.c -o hola && ./hola

💡 Capítulo 2: Evolución a JavaScript

SlQ:

¿Cómo comparas esos lenguajes antiguos con JavaScript moderno? ¡Debe ser un cambio radical!

Maya:

¡Absolutamente! JavaScript fue como una bocanada de aire fresco. Pasé de lidiar con punteros y gestión manual de memoria en C, a tener un lenguaje dinámico donde podía crear efectos visuales en el navegador. Y luego llegó Node.js... ¡fue amor a primera vista! De repente podía usar el mismo lenguaje tanto en el cliente como en el servidor.

Hola Mundo en Node.js

JavaScript
// Versión moderna con ES6
const saludar = (nombre = 'Mundo') => {
    console.log(`¡Hola ${nombre} desde JavaScript!`);
    console.log(`Ejecutado en Node ${process.version}`);
};

saludar('SLQ');
node hola-moderno.js

Comparación de arrays

C vs JavaScript
// En C (tamaño fijo, memoria estática)
int numeros[3] = {1, 2, 3};
// numeros[3] = 4; // ¡Buffer overflow!

// En JavaScript (dinámico, flexible)
const numeros = [1, 2, 3];
numeros.push(4); // ¡Magic!
numeros.map(n => n * 2); // [2, 4, 6, 8]

🚀 Capítulo 3: Node.js en Acción

Maya:

Node.js revolucionó todo para mí. ¡Finalmente podía crear servidores rápidos y escalables con el lenguaje que ya amaba! La asincronía y el modelo de eventos fueron conceptos que cambiaron mi forma de pensar en programación.

SlQ:

¡Cuéntame más! ¿Qué hace especial a Node.js para el backend?

Maya:

Imagina poder manejar miles de conexiones simultáneas con un solo hilo, sin bloquear operaciones I/O. ¡Es pura magia! Y el ecosistema npm... ¡es como tener una caja de herramientas infinita!

1. Servidor HTTP Básico

JavaScript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 
        'Content-Type': 'text/html',
        'X-Powered-By': 'Node.js'
    });
    res.end(`
        <h1 style="color: #ff6d00">¡Servidor Node.js funcionando!</h1>
        <p>Ruta accedida: ${req.url}</p>
    `);
});

server.listen(3000, () => {
    console.log('Servidor escuchando en http://localhost:3000');
});
node servidor-avanzado.js

2. Leer un archivo (versión moderna con promesas)

JavaScript
const fs = require('fs').promises;
const path = require('path');

async function leerConfig() {
    try {
        const data = await fs.readFile(
            path.join(__dirname, 'package.json'), 
            'utf8'
        );
        const { name, version } = JSON.parse(data);
        console.log(`Aplicación: ${name}\nVersión: ${version}`);
    } catch (err) {
        console.error('Error leyendo archivo:', err);
    }
}

leerConfig();

3. Cliente HTTP con async/await

JavaScript
const https = require('https');

const fetchData = async (url) => {
    return new Promise((resolve, reject) => {
        https.get(url, (resp) => {
            let data = '';
            resp.on('data', (chunk) => data += chunk);
            resp.on('end', () => resolve(JSON.parse(data)));
            resp.on('error', reject);
        });
    });
};

(async () => {
    try {
        const todo = await fetchData(
            'https://jsonplaceholder.typicode.com/todos/1'
        );
        console.log('Todo:', {
            id: todo.id,
            title: todo.title,
            completed: todo.completed
        });
    } catch (err) {
        console.error('Error:', err);
    }
})();

🔮 Capítulo 4: Herramientas Modernas

SlQ:

El ecosistema npm es enorme. ¿Cuáles son tus paquetes favoritos?

Maya:

¡Donde empiezo! Axios para peticiones HTTP, Express para rutas, Socket.io para websockets, Mongoose para MongoDB... ¡y eso es solo el principio! La belleza de Node.js está en esta increíble colección de módulos que aceleran el desarrollo.

SlQ:

¡Muéstrame un ejemplo con axios!

# Iniciar un proyecto Node.js
mkdir mi-proyecto-axios && cd mi-proyecto-axios
npm init -y
npm install axios
JavaScript
const axios = require('axios');

// Configuración personalizada
const api = axios.create({
    baseURL: 'https://api.github.com',
    timeout: 5000,
    headers: { 'User-Agent': 'SLQ-Maya-News' }
});

async function getGitHubUser(username) {
    try {
        const response = await api.get(`/users/${username}`);
        console.log('--- Datos de GitHub ---');
        console.log(`Usuario: ${response.data.login}`);
        console.log(`Nombre: ${response.data.name || 'No disponible'}`);
        console.log(`Repos públicos: ${response.data.public_repos}`);
        console.log(`Seguidores: ${response.data.followers}`);
    } catch (error) {
        console.error('Error al obtener usuario:', error.message);
    }
}

getGitHubUser('octocat');

🎯 Reto para lectores

Desafío Node.js: Crea un servidor HTTP que:

  1. Responda con la hora actual cuando se acceda a /hora
  2. Devuelva un JSON con tu nombre y edad en /about
  3. Maneje rutas no encontradas con un mensaje personalizado

Pista: Usa new Date() para la hora y res.writeHead() para los headers.

© 2023 SLQ-Maya News | Blog de Tecnología y Programación

#NodeJS #JavaScript #Linux #Programación #Backend #EvoluciónTecnológica

Comentarios

Entradas populares