<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Chri’s Blog</title><description>Un blog simple de curso de astro</description><link>https://chris-blog-astro.netlify.app/</link><language>es-cl</language><item><title>Explorando Funciones de ES6</title><link>https://chris-blog-astro.netlify.app/posts/post-01/</link><guid isPermaLink="true">https://chris-blog-astro.netlify.app/posts/post-01/</guid><description>Explorando algunas de las nuevas funciones de ES6 en JavaScript.</description><pubDate>Thu, 01 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Explorando Funciones de ES6&lt;/h1&gt;
&lt;p&gt;JavaScript ES6 introdujo varias funciones nuevas que han hecho que la codificación en JavaScript sea más eficiente y agradable. Vamos a explorar algunas de estas funciones.&lt;/p&gt;
&lt;h2&gt;Arrow Functions - Funciones de Flecha&lt;/h2&gt;
&lt;p&gt;Las funciones de flecha proporcionan una nueva sintaxis para escribir expresiones de función. Son más concisas y vinculan léxicamente el valor &lt;code&gt;this&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Ejemplo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;const add = (a, b) =&amp;gt; a + b;
console.log(add(2, 3)); // Output: 5
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Template Literals - Literales de Plantilla&lt;/h2&gt;
&lt;p&gt;Los literales de plantilla permiten una interpolación de cadenas más fácil y cadenas de varias líneas. Utilizan comillas invertidas (`) en lugar de comillas simples o dobles.&lt;/p&gt;
&lt;h3&gt;Ejemplo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;const name = &apos;Jane&apos;;
console.log(`Hello, ${name}!`);
// Output: Hello, Jane!
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Destructuring Assignment - Asignación por Desestructuración&lt;/h2&gt;
&lt;p&gt;La asignación por desestructuración le permite extraer valores de matrices u objetos y asignarlos a variables de una manera más concisa.&lt;/p&gt;
&lt;h3&gt;Ejemplo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;const person = { name: &apos;Jane&apos;, age: 30 };
const { name, age } = person;
console.log(name, age); // Output: Jane 30
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><media:content type="image/png" width="1024" height="1024" medium="image" url="https://chris-blog-astro.netlify.app//_astro/post-01.72ELRuPo.png"/></item><item><title>Comprendiendo los Hooks de React</title><link>https://chris-blog-astro.netlify.app/posts/post-03/</link><guid isPermaLink="true">https://chris-blog-astro.netlify.app/posts/post-03/</guid><description>Learn how to use React Hooks to manage state and lifecycle in functional components.</description><pubDate>Thu, 15 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Comprendiendo los Hooks de React&lt;/h1&gt;
&lt;p&gt;Los Hooks de React son una característica que te permite usar el estado y otras características de React en componentes funcionales. Esto te permite escribir componentes más simples y reutilizables sin tener que convertirlos en clases.&lt;/p&gt;
&lt;h2&gt;useState Hook&lt;/h2&gt;
&lt;p&gt;El &lt;code&gt;useState&lt;/code&gt; hook te permite añadir estado a tus componentes funcionales.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import React, { useState } from &apos;react&apos;;

function Counter() {
  const [count, setCount] = useState(0);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;You clicked {count} times&amp;lt;/p&amp;gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;Click me&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;useEffect Hook&lt;/h2&gt;
&lt;p&gt;El &lt;code&gt;useEffect&lt;/code&gt; hook te permite realizar efectos secundarios en tus componentes funcionales, como acceder a datos externos o modificar el DOM.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import React, { useState, useEffect } from &apos;react&apos;;

function Example() {
  const [count, setCount] = useState(0);

  useEffect(() =&amp;gt; {
    document.title = `You clicked ${count} times`;
  });

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;You clicked {count} times&amp;lt;/p&amp;gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;Click me&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Custom Hooks&lt;/h2&gt;
&lt;p&gt;Puedes crear tus propios hooks personalizados para reutilizar lógica en tus componentes.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { useState } from &apos;react&apos;;

function useCounter(initialCount) {
  const [count, setCount] = useState(initialCount);

  const increment = () =&amp;gt; {
    setCount(count + 1);
  };

  return { count, increment };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego puedes usar tu hook personalizado en tus componentes.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import React from &apos;react&apos;;
import useCounter from &apos;./useCounter&apos;;

function Counter() {
  const { count, increment } = useCounter(0);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;You clicked {count} times&amp;lt;/p&amp;gt;
      &amp;lt;button onClick={increment}&amp;gt;Click me&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los Hooks de React son una poderosa característica que te permite escribir componentes más limpios y reutilizables en React. ¡Empieza a usarlos en tus proyectos hoy mismo!&lt;/p&gt;
</content:encoded><media:content type="image/png" width="1024" height="1024" medium="image" url="https://chris-blog-astro.netlify.app//_astro/post-03.DIrHxece.png"/></item><item><title>Construyendo una API REST con Node.js</title><link>https://chris-blog-astro.netlify.app/posts/post-04/</link><guid isPermaLink="true">https://chris-blog-astro.netlify.app/posts/post-04/</guid><description>En este tutorial, construiremos una API RESTful utilizando Node.js y Express.</description><pubDate>Tue, 20 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Construyendo una API REST con Node.js&lt;/h1&gt;
&lt;p&gt;En este tutorial, construiremos una API RESTful utilizando Node.js y Express. Una API RESTful es una interfaz de programación de aplicaciones que sigue los principios de REST (Representational State Transfer). Utilizaremos Express, un marco de aplicaciones web de Node.js, para crear nuestra API.&lt;/p&gt;
&lt;h2&gt;Instalación de Node.js&lt;/h2&gt;
&lt;p&gt;Primero, necesitas instalar Node.js en tu sistema. Puedes descargar Node.js desde el &lt;a href=&quot;https://nodejs.org/&quot;&gt;sitio web oficial&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm init -y
npm install express
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creamos un archivo &lt;code&gt;index.js&lt;/code&gt; y agregamos el siguiente código:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const express = require(&apos;express&apos;);
const app = express();
const port = 3000;

app.get(&apos;/&apos;, (req, res) =&amp;gt; {
  res.send(&apos;Hello World!&apos;);
});

app.listen(port, () =&amp;gt; {
  console.log(`Server is running on http://localhost:${port}`);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para ejecutar la aplicación, ejecuta el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node index.js
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes acceder a tu aplicación en &lt;code&gt;http://localhost:3000&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Creación de rutas para la API&lt;/h2&gt;
&lt;p&gt;Vamos a crear algunas rutas para nuestra API. Por ejemplo, una ruta para obtener una lista de usuarios y otra ruta para obtener un usuario por su ID.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app.get(&apos;/api/users&apos;, (req, res) =&amp;gt; {
  res.json([
    { id: 1, name: &apos;Alice&apos; },
    { id: 2, name: &apos;Bob&apos; },
  ]);
});

app.get(&apos;/api/users/:id&apos;, (req, res) =&amp;gt; {
  const id = req.params.id;
  res.json({ id, name: &apos;Alice&apos; });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes acceder a la API de usuarios en &lt;code&gt;http://localhost:3000/api/users&lt;/code&gt; y &lt;code&gt;http://localhost:3000/api/users/1&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;En este tutorial, hemos construido una API RESTful utilizando Node.js y Express. Puedes agregar más rutas y funcionalidades a tu API según tus necesidades. ¡Diviértete construyendo tu API!&lt;/p&gt;
&lt;p&gt;Espero que este tutorial te haya sido útil. Si tienes alguna pregunta, no dudes en dejar un comentario.&lt;/p&gt;
</content:encoded><media:content type="image/png" width="1024" height="1024" medium="image" url="https://chris-blog-astro.netlify.app//_astro/post-04.C6a-sA3o.png"/></item><item><title>Empezando con Flutter</title><link>https://chris-blog-astro.netlify.app/posts/post-02/</link><guid isPermaLink="true">https://chris-blog-astro.netlify.app/posts/post-02/</guid><description>Aprende a desarrollar aplicaciones móviles con Flutter y Dart.</description><pubDate>Sat, 10 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Empezando con Flutter&lt;/h1&gt;
&lt;p&gt;Flutter es un kit de herramientas de IU para construir aplicaciones compiladas nativamente para móviles, web y escritorio desde un único código base.&lt;/p&gt;
&lt;h2&gt;Instalación de Flutter&lt;/h2&gt;
&lt;p&gt;Para comenzar a desarrollar con Flutter, primero necesitas instalar el SDK de Flutter en tu sistema. Puedes seguir las instrucciones de instalación en la &lt;a href=&quot;https://flutter.dev/docs/get-started/install&quot;&gt;documentación oficial de Flutter&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flutter doctor
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este comando te ayudará a verificar si tienes todo lo necesario para comenzar a desarrollar con Flutter.&lt;/p&gt;
&lt;h2&gt;Creación de un Nuevo Proyecto&lt;/h2&gt;
&lt;p&gt;Puedes crear un nuevo proyecto de Flutter utilizando el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flutter create my_first_app
cd my_first_app
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto creará un nuevo proyecto de Flutter en el directorio &lt;code&gt;my_first_app&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Ejecución de la Aplicación&lt;/h2&gt;
&lt;p&gt;Para ejecutar tu aplicación de Flutter, puedes utilizar el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flutter run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto compilará y ejecutará tu aplicación en un emulador o dispositivo conectado. ¡Ahora puedes ver tu aplicación en acción!&lt;/p&gt;
&lt;h2&gt;Escribiendo tu Primera Aplicación&lt;/h2&gt;
&lt;p&gt;Puedes editar el archivo &lt;code&gt;lib/main.dart&lt;/code&gt; para comenzar a escribir tu aplicación de Flutter. Aquí tienes un ejemplo de una aplicación de contador simple.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import &apos;package:flutter/material.dart&apos;;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: &apos;Flutter Demo&apos;,
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() =&amp;gt; _MyHomePageState();
}

class _MyHomePage

State extends State&amp;lt;MyHomePage&amp;gt; {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(&apos;Flutter Demo&apos;),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: &amp;lt;Widget&amp;gt;[
            Text(
              &apos;You have pushed the button this many times:&apos;,
            ),
            Text(
              &apos;$_counter&apos;,
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: &apos;Increment&apos;,
        child: Icon(Icons.add),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><media:content type="image/png" width="1024" height="1024" medium="image" url="https://chris-blog-astro.netlify.app//_astro/post-02.CS_t1l9x.png"/></item><item><title>CSS Grid Layout - Una guía completa</title><link>https://chris-blog-astro.netlify.app/posts/post-05/</link><guid isPermaLink="true">https://chris-blog-astro.netlify.app/posts/post-05/</guid><description>Aprende a utilizar CSS Grid Layout para crear diseños complejos de forma sencilla.</description><pubDate>Sun, 25 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CSS Grid Layout: Una guía completa&lt;/h1&gt;
&lt;p&gt;CSS Grid Layout es una poderosa herramienta que te permite crear diseños complejos de forma sencilla y flexible. En esta guía, aprenderás cómo utilizar CSS Grid Layout para crear diseños de páginas web modernas y responsivas.&lt;/p&gt;
&lt;h2&gt;Introducción a CSS Grid&lt;/h2&gt;
&lt;p&gt;CSS Grid Layout es un sistema de diseño bidimensional que te permite crear diseños de páginas web utilizando filas y columnas. Con CSS Grid Layout, puedes crear diseños complejos y flexibles sin necesidad de utilizar floats o frameworks de diseño.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este grid container creará una cuadrícula con tres columnas y un espacio de 10px entre los elementos de la cuadrícula. También puedes utilizar la propiedad &lt;code&gt;grid-template-rows&lt;/code&gt; para definir las filas de la cuadrícula.&lt;/p&gt;
&lt;h2&gt;Grid Items&lt;/h2&gt;
&lt;p&gt;Los elementos dentro de un grid container se denominan grid items. Puedes colocar los grid items en la cuadrícula utilizando las propiedades &lt;code&gt;grid-column&lt;/code&gt; y &lt;code&gt;grid-row&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.item {
  grid-column: 2 / 4;
  grid-row: 1 / 3;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este código colocará el elemento en la segunda y tercera columnas y en la primera y segunda filas de la cuadrícula.&lt;/p&gt;
&lt;h2&gt;Grid Areas&lt;/h2&gt;
&lt;p&gt;CSS Grid Layout también te permite definir áreas con nombre en tu cuadrícula. Esto hace que sea más fácil colocar elementos en áreas específicas de la cuadrícula.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.container {
  grid-template-areas:
    &apos;header header header&apos;
    &apos;sidebar content content&apos;
    &apos;footer footer footer&apos;;
}

.item {
  grid-area: content;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este código define un grid container con áreas de encabezado, barra lateral, contenido y pie de página. El elemento con la clase &lt;code&gt;item&lt;/code&gt; se colocará en el área de contenido de la cuadrícula.&lt;/p&gt;
&lt;h2&gt;Responsive Grids&lt;/h2&gt;
&lt;p&gt;CSS Grid Layout es perfecto para crear diseños responsivos. Puedes utilizar las funciones &lt;code&gt;minmax()&lt;/code&gt; y &lt;code&gt;auto-fill&lt;/code&gt; para crear cuadrículas que se adapten a diferentes tamaños de pantalla.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este código creará una cuadrícula con columnas que tienen al menos 200px de ancho y se expanden para llenar el espacio disponible. La palabra clave &lt;code&gt;auto-fill&lt;/code&gt; permite que la cuadrícula cree automáticamente nuevas columnas según sea necesario.&lt;/p&gt;
&lt;h2&gt;Browser Support&lt;/h2&gt;
&lt;p&gt;CSS Grid Layout es compatible con la mayoría de los navegadores modernos, incluidos Chrome, Firefox, Safari y Edge. Puedes utilizar CSS Grid Layout en tus proyectos web sin preocuparte por la compatibilidad con los navegadores.&lt;/p&gt;
&lt;p&gt;¡Esperamos que esta guía te haya ayudado a comprender mejor CSS Grid Layout y cómo puedes utilizarlo para crear diseños de páginas web modernas y responsivas!&lt;/p&gt;
</content:encoded><media:content type="image/png" width="1024" height="1024" medium="image" url="https://chris-blog-astro.netlify.app//_astro/post-05.CRMHgplj.png"/></item></channel></rss>