Páginas

Mostrando las entradas con la etiqueta ruby. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ruby. Mostrar todas las entradas

20150318

Instalar Softcover en Ubuntu

Hace unos meses, siguiendo links dentro del muy recomendado Ruby on Rails Tutorial, me enteré que es publicado con Softcover, una interesante herramienta/plataforma para la auto-publicación y distribución de escritos que trabaja sobre Ruby.

En un esfuerzo por proveer el tutorial «Aprende a programar» de una forma más amigable, decidí probar ésta nueva herramienta, pero encontré que el proceso de instalación puede ser un tanto complicado debido a todas las dependencias que maneja, por lo que a continuación detallo el proceso.

Nota: Se uso la versión 1.0.5 de Softcover sobre Xubuntu 14.10.

Preparando el entorno

Hay que tomar en cuenta que al momento de escribir ésta entrada, EventMachine (una de las dependencias de Softcover cómo gema) no funciona en versiones de Ruby de la rama 2.2.x, por lo que hay que utilizar la versiones de 2.1.x.

Para ello recomiendo usar RVM, que nos permite jugar con varias versiones de Ruby en un mismo sistema, lo cual puede hacerse por medio de las siguientes instrucciones en la consola.
   $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    $ \curl -sSL https://get.rvm.io | bash -s
    $ echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile
Al completarse sólo hay que cerrar la consola para abrirla de nuevo y poder ver que versión de Ruby seleccionaremos para trabajar, con el siguiente comando.
    $ rvm list known
Éste listará todas las versiones de Ruby disponibles para ser instaladas, pero la que nos interesa es la más reciente de la rama 2.1.x, que al momento de escribir la entrada es la 2.1.5. Sin más, procedemos a instalarla. (Está atento a los mensajes de la consola por si pide la contraseña de administrador para poder continuar).
    $ rvm install ruby-2.1.5
Una vez que se haya terminado, recomiendo crear un gemset exclusivo para éste proyecto y un alias para poder seleccionar el entorno rápidamente.
    $ rvm use ruby-2.1.5
    $ rvm gemset create softcover
    $ rvm alias create softcover ruby-2.1.5@softcover
Con ésto, podremos seleccionar la version de Ruby y el gemset para softcover simplemente escribiendo
    $ rvm use softcover
Ya con el entorno listo, podemos instalar la gema de softcover.
    $ gem install softcover --no-rdoc --no-ri

Instalación de dependencias

Ahora viene la parte de las dependencias... ¡sí, más dependencias! Pero son necesarias para poder transformar sencillos escritos en Markdown a HTML, Epub, Mobi y PDF.

`apt` simplifica el trabajo con la mayoría de ellas, por lo que sólo hay que ejecutar en la consola
    $ sudo apt-get install default-jre
para elegir una versión de Java (en caso de que no tengas instalada alguna), y
    $ sudo apt-get install imagemagick inkscape nodejs phantomjs calibre texlive-full texlive-xetex
para un pesado conjunto de paquetes. (Recomiendo ir por un café o un bocadillo mientras se instalan estos últimos.)

Ahora sólo resta instalar Kindlegen, descargando la versión para Linux de (http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000765211). Descomprímelo y coloca la carpeta en algún lugar donde no sufra el riesgo de ser borrada después. (Yo lo tengo dentro de `$HOME/Applications`.)

Así, sólo es necesario crear un enlace de esa ubicación dentro de alguna ruta revisada en el `PATH`, como `/usr/local/bin`.
    $ cd Applications/kindlegen_linux_2.6_i386_v2_9/kindlegen
    $ sudo ln -s kindlegen /usr/local/bin/kindlegen
Por ultimo, procedemos a hacer lo mismo con Epubcheck. Lo descargamos de (https://github.com/IDPF/epubcheck/releases/download/v3.0/epubcheck-3.0.zip), para después descomprimirlo, colocarlo en un lugar seguro (`$HOME/Applications` en mi caso) y crear un enlace simbólico a la carpeta.
    $ cd /Applications
    $ sudo ln -s epubcheck-3.0 /usr/local/bin/epubcheck-3.0
Si todo salio correctamente, al ejecutar `softcover check`, todas las dependencias estarán marcadas como encontradas.

Probando la instalación

Para corroborar que todo funciona, crearemos un proyecto de ejemplo. (Si has cerrado la consola en algún momento, recuerda ejecutar `rvm use softcover`.)
    $ softcover new example_book
    $ cd example_book
    $ softcover build:all
Al completarse, debes encontrar los archivos generados dentro de `/ebooks` en el directorio del proyecto.

Así concluye

Si quieres saber más sobre cómo se utiliza Softcover para crear y distribuir tus propias aplicaciones, recomiendo leer el manual. (¿Mencione que cuentan con una plataforma que te permite monetizar el contenido?) También puedes ver las excelente publicaciones que se han hecho con ésta herramienta en su catalogo.

20140324

Aprende a programar: Respuestas a ejercicios

Creo que está será la última iteración para la traducción de «Learn to Program» que realizaré en un tiempo. Ya que el contenido está completo y se hizo una revisión de los apartados y el código, sólo me quedaba la inquietud de compartir posibles soluciones a los programas solicitados dentro de tutorial.

La finalidad de compartir soluciones es que los estudiantes del tutorial puedan aprender al observar el código de otras personas al comparar sus propias soluciones con las proporcionadas; con lo que espero, puedan ver diferentes alternativas para la solución de un problema y tal vez aprender algo nuevo dentro del código. También, quise brindar una pequeña ayuda a aquellos estudiantes que pudieran quedarse atorados y frustrados al tratar de construir algunos de los programas.

Claro, yo también resulte beneficiado con la practica, al poder constatar como ha evolucionado mi estilo de programación desde que conocí el tutorial hace años.

Como en anteriores ocasiones, aquí está en enlace para la traducción al tutorial. Por favor, compártelo con quien creas que podría estar interesado en aprender a programar usando un lenguaje sencillo y amigable como Ruby.




Mi pretensión era pasar el tutorial al formato DocBook o Markdown enseguida, para así poder distribuirlo por la red en otros formatos. Pero creo que se quedará en pausa por el momento. Debo poner mi atención en otros proyectos como cooperar con la traducción de «La guía de estilo de Ruby», los cursos que quiero completar en Treehouse y edX y el poder encontrar un empleo que me permita seguir preparándome para ser un buen desarrollador.

Gracias por leer y por compartir.

20140222

Aprender a programar: 10. Clases, bloques y procs

Parece que he pasado bastante tiempo inactivo en el blog, pero hoy vengo con buenas noticias: ¡están listas las ultimas partes de «Aprende a programar»!

  • El capítulo 10 muestra como se definen las clases en Ruby, algunos detalles útiles para trabajar con el tiempo por medio de la clase Time, y el funcionamiento de los diccionarios (hashes).
  • El capítulo 11 trata sobre una característica de Ruby que permite resolver problemas de formas muy interesantes: los bloques y procs, conjuntos de instrucciones que son tratados como objetos.

Al final del tutorial, Chris incluye tres grandes fuentes de referencia para resolver dudas sobre Ruby, las cuales he complementado con algunas fuentes en español para quienes así lo prefieran.

Puedes pasar directamente al tutorial con el siguiente enlace. (Y puedes descargar el tutorial desde el menú Archivo → Descargar como...).




Ahora que la traducción está prácticamente terminada, pienso en que me ha sido una grata experiencia en conjunto. Las horas empleadas en buscar como adecuar un termino o frase del inglés al español para que se escuche natural sin perder el sentido y agregando notas cuando fue necesario, el tedioso proceso de dar un buen formato tratando de cuidar la legibilidad a la vez que la estética, el repetitiva actividad de revisar ortografía y gramática, y la mentalmente agotadora tarea de adaptar los ejemplos para el habla hispana (en cierto punto terminé odiando a la RAE), todo ello culminando en un sentimiento de satisfacción por haber completado el proyecto.

Quedan unos pequeños detalles que pulir, pero corresponden principalmente al repositorio del proyecto (agregar enlaces, notas) y queda como posibilidad, para una futura versión, pasarlo a formato docbook o markdown, lo que facilitaría el ser portado por medio de alguna aplicación a otros formatos.

Si alguien gusta colaborar, puede hacerlo mediante el repositorio del proyecto.

Ya por último, si conocen a alguien interesado a aprender a programar y quieren evitar que sufra de entrada con la sintaxis de Java, C#, etc., compartan con esa persona el enlace al tutorial. Seguramente le será de utilidad.

20131005

Aprende a programar: 9. Como crear tus propios métodos

¡Él capítulo 9 está listo! «Escribiendo tus propios métodos» ha tomado más tiempo del que esperaba debido a la gran cantidad de edición y pruebas que se tuvieron que hacer código del programa que escribe números en su versión de texto en español (el programa original del tutorial los escribe en inglés, cuyas reglas para escribir números son mucho más sencillas y tiene menos casos especiales), además que los programas de ejemplo son bastante largos, pero al final he quedado satisfecho con el resultado.

Realizar las soluciones a los programas propuestos con las limitaciones de las técnicas vistas es un buen ejercicio, pero lo pospondré para seguir trabajando en la traducción de los últimos capítulos.

Espero que quien siga el tutorial disfrute con el contenido del capítulo, encuentre retadores los ejercicios que ahí se encuentran, y continúe con interés para adentrarse en el manejo de clases y bloques de los capítulos siguientes.

Como de costumbre, la versión más reciente la puedes encontrar en el siguiente enlace:


20130905

La terrible exclamación, o, resultados inesperados de métodos con ! en Ruby

Ésta es una traducción del artículo «The Big Bad Bang, or, The OTHER Gotcha with Ruby's Bang Methods», escrito originalmente por David Aronson en Attack of the Codosaurus!, y es publicado bajo su permiso.


     Algunas personas me han preguntado el por qué ciertos métodos de Ruby terminan con un signo de exclamación (!), comúnmente conocido como bang en los círculos de programación. Los ejemplos incluyen upcase! (para obtener una versión completamente en mayúsculas de una cadena de caracteres) y uniq! (para obtener los elementos únicos dentro de un arreglo). Para acortar la explicación, el bang significa que debes usar ese método con precaución.

     Esto es debido a que usualmente el método modifica el objeto que recibe y luego lo devuelve (proceso destructivo), en lugar de devolver sólo una copia modificada del objeto. (En Rails y otros frameworks similares, puede indicar que el método arrojará una excepción si algo sale mal. Pero, nos enfocaremos en los métodos básicos de Ruby.) Les mostraré otra razón en un momento, pero por ahora, vamos a examinar el comportamiento usual y esperado.

     Por ejemplo:


cadena = 'foo'
p cadena.upcase # > FOO
p cadena        # > foo

     Obtenemos FOO y después foo. Cuando upcase devolvió la versión en mayúsculas, no modificó la cadena.

     Por otro lado, si agregamos un bang, así:


cadena = 'foo'
p cadena.upcase! # > FOO
p cadena         # > FOO

     ¡Obtenemos FOO y otra vez FOO! En otras palabras, upcase! devolvió la versión en mayúsculas, justo como la versión sin bang, ¡pero también modifico la cadena!

     De forma similar, si usamos uniq:


arreglo = [1, 3, 3, 7]
p arreglo.uniq # > [1, 3, 7]
p arreglo      # > [1, 3, 3, 7]

     Obtenemos [1, 3, 7] y [1, 3, 3, 7], mostrando que la versión sin bang devolvió los valores únicos dentro del arreglo, pero no lo modificó, mientras que si agregamos un bang:


arreglo = [1, 3, 3, 7]
p arreglo.uniq! # > [1, 3, 7]
p arreglo       # > [1, 3, 7]

     Obtenemos [1, 3, 7] y [1, 3, 7] de nuevo, mostrando que el arreglo fue modificado ésta vez.

     Hasta ahora todo bien. ¡Pero espera! ¡Aún hay más! Hay un comportamiento inesperado aguardando ser encontrado...

No esperes que las versiones con bang de los métodos devuelvan el mismo valor que las versiones sin bang. (Aunque ese valor parezca ser la razón de ser de ambas funciones.)

     En los casos antes mencionados, ese es el punto. Pero observemos lo que pasa si la variable ya tiene el valor que necesitamos –en otras palabras, si la cadena ya está en mayúsculas, o el arreglo ya cuenta sólo con valores únicos.

     Si usamos:


cadena = 'FOO'
p cadena.upcase! # > nil
p cadena         # > FOO

     Como esperamos de la cadena, al ya contener el valor que necesitamos, no fue modificada. Pero observa el valor devuelto por cadena.upcase! –¡es nil!

     Veamos que pasa en el caso numérico:


arreglo = [1, 3, 7]
p arreglo.uniq! # > nil
p arreglo       # > [1, 3, 7]

     Justo como en el caso anterior, el arreglo no sufrió cambios, ¡pero el valor devuelto por arreglo.uniq! es nil! ¿Cómo es eso posible?

     De forma resumida, los métodos básicos en Ruby que incluyen el bang, con frecuencia devuelven nil si no se realizó ningún cambio. El problema es que esto no pasa de una forma consistente, por lo tanto, cuando utilices un método que incluye bang con el que no estés familiarizado, asegurate de leer el manual.

20130828

Aprende a programar: Capítulos 0 a 8 revisados

     ¡Uffff! Después de varios días de arduo trabajo (que incluyeron sus respectivos y merecidos descansos), he concluido la revisión del material traducido del tutorial «Learn to Program» hasta el momento.

     Además de corregir algunos errores gramaticales y ortográficos, se han hecho las siguientes mejoras:

  • Se agregaron enlaces a la mayoría de los códigos de ejemplo para ser probados directamente desde el navegador, sin la necesidad de instalar Ruby. (Gracias a repl.it).
  • Se proba el código de todos los programa de ejemplo para asegurar que todos ellos puedan ejecutarse.
  • Se incluyeron enlaces a código de ejemplos de soluciones a cada uno de los ejercicios propuestos. (Para quien pueda llegar a necesitar una guía).
  • Se reorganizo el proyecto en GitHub para que tenga una estructura coherente y facilite la colaboración.

Como siempre, el material más reciente se encuentra en el documento:


20130729

«Aprende a programar» ahora en GitHub

¡Saludos, lectores!

     El blog ha tenido poco movimiento debido al proceso de adaptación a mi nueva rutina de trabajo (tome un trabajo eventual como recepcionista-auditor nocturno) y de «adecuación física» (me encuentro a medio proceso de llegar a mi peso ideal a través de cambios en mi alimentación y ejercicio constante), pero he permanecido con el propósito de completar mi preparación en el área de desarrollo de software.

     Por supuesto, eso incluye el continuar con mis proyectos, entre los cuales se incluye la traducción de «Lear to Program». Aunque el proceso de traducción ha tenido poca actividad, he continuado haciendo pequeñas mejoras al revisar el texto con atención: corrigiendo errores, agregando notas, adecuando el estilo y cambiando palabras para hacer más claro el sentido donde me ha parecido adecuado.

     He tenido que iniciar una revisión general a causa de que al estar trabajando en la traducción del capítulo 7, encontré que no había probado los ejemplos de código que habían sido modificados en el proceso. Y en mi convicción de entregar un trabajo de calidad a las personas con la intención de aprender sobre Ruby, me he vuelto un poco sobre mis pasos. No espero que la revisión tome mucho tiempo, así que seguramente para Agosto ya la habré terminado. Y durante ese mismo mes, quiero terminar el proceso de traducción de los capítulos 7 y 8.

     Probablemente uno de los cambios más interesantes es que he movido el trabajo a la plataforma de Github, lo que permitirá que otras personas puedan participar en el proyecto con relativa facilidad por medio del sistema de control de versiones Git en el siguiente enlace:


20130316

Aprende a programar: 8. Arreglos e iteradores

     Es turno de aprender a manejar un nuevo tipo de objeto: ¡los arreglos! Aunque son sólo listas que guardan referencias a otros objetos, nos permiten manipular grandes cantidades de información relacionada y aplicar sobre ella tareas repetitivas de una forma sencilla.

     Aún más, los arreglos en Ruby cuentan con métodos especiales que nos permiten movernos entre sus elementos sin tener que estar al pendiente de la posición en donde nos encontramos (cómo lo haríamos en C o Java).

     Puedes continuar leyendo al respecto en...


20130217

Aprende a programar: 7. El control del flujo de un programa

     ¡Por fin está listo el sexto capítulo de Aprende a programar! Tomo un poco de tiempo debido al formato extra que lleva el código para ilustrar las palabras clave usadas en control del flujo de un programa. Ésta sección revisa los temas de operadores lógicos, ramificación e iteración. Con ellos es posible construir casi cualquier tipo de programa, así que es muy importante entenderlos. Al final, hay un par de ejercicios bastante divertidos.

     Interesante, ¿no es así? Invierte un poco de tiempo y continua en


20130128

Aprender a Programar: 6. Aritmética, números aleatorios y el objeto Math

     En está ocasión les comento que ya está disponible la traducción de la segunda parte del capítulo 5 del tutorial «Learn to Program». En ésta parte encontraran como hacer uso de algunos métodos matemáticos como los operadores de potencia y modulo, como generar números aleatorios, y el uso de constantes y métodos predefinidos en el objeto Math. Aunque son conceptos matemáticos un poco más avanzados, se darán cuenta que con Ruby son realmente fácil de manipular.

     Con estos conocimientos en conjunción con lo que viene a futuro en el tutorial, podrán construir programas muy interesantes. Recuerden estar al pendiente del nuevo contenido que se va añadiendo. :)


20130115

Aprende a programar: 5. Más sobre métodos y métodos de texto

     Después de un periodo algo ocupado, he continuado con la traducción de «Learn to Program». En ésta ocasión ya ésta disponible la primera parte del capítulo 5, el cual extiende un poco más la explicación sobre métodos y ofrece ejemplos utilizando algunos métodos nuevos para manipular texto.

     Además, iré relacionando los capítulos con otro material en español (como los vídeos de Código Facilito) disponible en la red para complementarlo y puedas aprender un poco más al revisarlo.

     Si estás siguiendo la serie para aprender a programar en Ruby, no te lo pierdas.

20121107

Refuerza lo básico en Ruby con vídeo tutoriales en Español

     Los vídeo-tutoriales se han vuelto una excelente herramienta para poder aprender sobre un sin fin de cosas a través de la red de una forma bastante más atractiva visualmente. Simplemente con hacer una búsqueda en Youtube y servicios similares, puedes aprender tanto a preparar deliciosos platillos (enfrijoladas ♥), como limpiar el ventilador de tu ordenador portátil para evitar el sobrecalentamiento[2], hasta los pasos de baile para canciones de moda. Todo esto mientras ves cada paso al momento que lo realizan. Y bueno, gracias a Uriel Hernandez podemos hacer lo mismo con Ruby en español.

     Mediante su canal Código Facilito, se puede dar un repaso por todas las características básicas de Ruby: comentarios, variables, conversión de tipos, alcance de variables, operadores aritméticos, manejo de cadenas de texto, instrucciones de decisión e iteración, salida y entrada de datos, estructuras de arreglos y diccionarios, métodos, procedimientos y clases.

Ruby Facilito
Ruby Facilito en Youtube
     Los vídeos son bastante cortos y concretos (alrededor de 5 minutos cada uno), y están destinados a las personas que van adentrándose al lenguaje, por lo que si estás conociendo Ruby mediante el tutorial «Aprende a programar» o alguna otra herramienta, pueden ser un excelente complemento.

     Realmente me emociona ver este tipo de proyectos, ya que van haciendo disponible las tecnologías más recientes dentro de la comunidad de habla hispana. ☺

     Así es que ya sabes, date una vuelta por su playlist «Ruby Facilito» para seguir aprendiendo Ruby, y si además aprendes a preparar enfrijoladas, ¡me invitas!

20120927

Try Ruby: La elegancia y funcionalidad de Ruby en 15 minutos

     En estos días he estado revisando material en la búsqueda de enriquecer y complementar la experiencia de aquellas personas que se inicien en el aprendizaje de la programación con Ruby. Por lo mismo, recordé que en el sitio oficial del lenguaje había un enlace que te permitía probar el lenguaje directamente desde el navegador, sin tener que instalar algún interprete en tu computadora. Y me encontré con la grata sorpresa de que dicho enlace fue substituido por otro hacía un tutorial interactivo llamado Try Ruby.

     Éste es un sencillo tutorial introductorio facilitado por Code School que te lleva de la mano por los conceptos más básicos de Ruby (variables, métodos, arreglos, diccionarios, clases, archivos), para culminar su aplicación en un sencillo blog en tan sólo 15 minutos – aproximadamente.

     Tiene la particularidad de que presenta la información en un estilo similar al que solía utilizar _why, un importante programador, autor y promotor de Ruby, por lo que está lleno de divertidos comentarios e incoherentes ejemplos que hacen el material bastante entretenido. La parte triste, es que Try Ruby sólo se encuentra disponible en el idioma inglés. :( Sin embargo, para todos aquellos que tengan un conocimiento medio o avanzado del idioma gringo, les recomiendo que se gasten esos 15 minutos visitando el sitio. Y los que no, bueno, ¿qué esperan que no están practicando su inglés en Duolingo?

Try Ruby
Try Ruby (chunky bacon!)

20120617

Aprende a programar: 4. Mezclando números, letras y variables

     En las primeras 3 partes del tutorial, Chris muestra como se puede trabajar con números, texto y la asignación de éste tipo de contenido a variables. Ahora, toca el turno de usar todo eso junto para hacer los programas más interesantes.

     En éste capitulo, Chris nos muestra como realizar conversiones entre números y texto para poder usar ambos sin problemas. Además, expone el como crear programas interactivos al permitir capturar valores por medio del teclado al momento en que un programa se ejecuta.

     Comienza a ponerse interesante, ¿verdad? Y pronto lo será más, mientras tanto no dejes de resolver los ejercicios.

20120527

Aprende a programar: 3. Variables y asignación

     El conocer la función y el uso de las variables es un paso importante para poder mantener un registro del resultado de ciertos procesos dentro de nuestros programas. Esto a su vez hace posible el seguir trabajando con esos resultados de diferentes maneras dentro del programa.

     Chris nos muestra en éste capítulo, unos cuantos ejemplos de como funcionan de forma básica las variables y el proceso de asignación de valores en Ruby.

     Hasta ahora, todo sigue muy fácil. Espero sigan aprendiendo con el tutorial:

20120520

Aprende a programar: 2. Letras

     Después de jugar un poco con los números, ahora toca el turno de jugar con texto por medio de Ruby. En éste nuevo capítulo de la traducción de «Learn to Program», Chris Pine nos da una pequeña introducción a las cadenas de caracteres.

     Por medio de los ejemplos observarás como presentar texto en pantalla, como unir dos cadenas de texto o multiplicar el número de veces que se repite una de ellas, la diferencia entre números y dígitos, y el funcionamiento de los caracteres de escape.

20120506

Aprende a programar: 1. Números

     En una entrada anterior, comentaba que había decidido realizar la traducción de un excelente tutorial para aprender a programar desde cero en el lenguaje de programación Ruby, escrito por Chris Pine. Ésta entrada es para anunciar que ya se encuentra disponible la traducción del primer capítulo en el cual se habla de los números y algunas de las operaciones aritméticas que pueden realizarse con ellos a través de sencillos ejemplos.

     Los ejercicios al final del capítulo son bastante directos y no deberían suponer ningún problema. Aun así, en caso de tener dudas, puedes preguntar por medio de los comentarios del blog o directamente vía correo electrónico.

     Si ya habías leído el capítulo cero, seguramente habrás preparado tu computadora para poder programar en Ruby. Sí no, puedes leer toda la información en el mismo documento.

20120429

¡Hola, mundo! ¿Te gustaría aprender a programar?

     ¡Saludos! Estoy emocionado por inaugurar éste espacio-proyecto con el cual podré compartir información que me parece interesante sobre temas relacionados con el desarrollo de software (herramientas, técnicas, nuevos avances y tal vez un poco de temas organizacionales), así como actualizaciones sobre las nuevas ofertas educativas que están surgiendo en línea, transformando el futuro del aprendizaje. Todo ello relacionado al desarrollo de software, pero que está disponible principalmente en el idioma ingles, y me gustaría que otros hispano hablantes pudieran tener a su alcance.

     Para comenzar, planeo (conforme se vaya completando) publicar en éste blog el trabajo de traducción que iré realizado del excelente tutorial escrito por Chris Pine, "Learn to Program", para ayudar a otras personas a adentrarse en el interesante mundo de la programación con Ruby, el elegante, sencillo y poderoso lenguaje creado por Yukihiro Matsumoto.

     Sí estás interesado, pasa al siguiente en lace, donde podrás realizar los pasos de preparación necesarios para comenzar el viaje dentro del mundo de la programación.


:-)