¿Con qué lenguaje aprender a programar?

Revisando algunas cosas en mis videos me encontré con esto:

Este video lo hice hace aproximadamente un año y estaba dirigido más que nada a gente que todavía no programa, no tiene idea de que va la programación y que pregunta siempre ¿Con qué lenguaje empiezo a programar? salteandose varios pasos.

Lo peor es que mucha gente responde con un lenguaje (generalmente su favorito) lo cual constituye a mi modo de ver un pésimo consejo, ya que la persona va a meterse en el lenguaje sin terminar de comprender qué es lo que está haciendo y esto tiene un motivo:

La persona que empieza por el lenguaje empieza por empezar a conocer como funciona una herramienta sin saber para qué sirve esa herramienta. Esto puede ser frustrante de esta manera ya que dificilmente pueda resolver problemas con la herramienta dada.

Lo primero que debe hacer una persona que quiere programar es entender sobre lógica de programación, algoritimia, resolver problemas, entender estructuras de datos independientemente de un lenguaje que quiera usar.

Lo segundo que el principiante omite al preguntar por donde empezar es qué es lo que quiere programar. Hoy por hoy, programar es algo muy amplio, no es lo mismo querer programar microcontroladores que sistemas de gestión, una web o lo que fuere.

Este punto, claramente incide en el tipo de lenguaje a aprender ya que los propósitos de los lenguajes son distintos y cada uno tiene uno o más puntos fuertes.

Y aquí viene el tercer punto. Elija lo que quiera hacer, elija el lenguaje que elija, el entender las bases de la programación independientemente del lenguaje a utilizar hace que el aprendizaje sea mucho más sencillo, porque si sé que quiero hacer y dado el problema que quiero resolver elijo la herramienta (lenguaje, librerías, etc.) adecuada, entonces lo que quiera aprender de código en si mismo se va a reducir a aprender sintaxis.

En resumen, a veces el camino más largo es el mejor. Aprender a programar no es lo mismo que aprender un lenguaje y cuando uno entiende que quiere hacer porque tiene bases sólidas, el resto se vuelve mucho más trivial.

Leyendo archivos en Java

Muy bienvenidos a mi hermoso blog (debería escribir más seguido). En esta ocasión ver como leer de manera sencilla un archivo que tengamos linea a linea.

Lo primero que vamos a necesitar es nuestra clase encargada de leer el archivo, la cual vamos a llamar para el ejemplo LeerArchivos y a la cual le vamos a dar un método llamado leer.

public class LeerArchivos{
     public void leer(){}
}

Ya tenemos la clase, ahora tenemos que ir solucionando problemas uno a uno. Vamos a ver entonces primero en donde poner el texto del archivo ya leido. Para almacenar el texto vamos a usar un StringBuilder (No vamos a usar un String común ya que estos son inmutables, para más detalles, vean el video, pero algún día vamos a hablar de esto a fondo).

StringBuilder sb = new StringBuilder();

El siguiente problema es buscar el archivo, para esto vamos a usar Path y Paths. Básicamente lo que necesitamos es un path donde está nuestro archivo y este lo sacamos de usar Paths.get() (Que nos va a devolver el Path que necesitamos)

Path filePath = Paths.get("ruta del archivo\\archivo");

Notese que uso doble barra ya que en un String, las barras sirven para distintos tipos de escape (Por ejemplo \n significa salto de linea) y cuando quiero poner una barra en el texto necesito poner otra que la preceda.

Ya con el lugar donde vamos a depositar el texto leido y que archivo vamos a leer necesitamos el mecanismo que lea, para esto vamos a usar un objeto de tipo BufferedReader. Esto sirve básicamente para leer de algún tipo de input, en este caso de un archivo. Para leer de un archivo vamos a hacer esto:

BufferedReader br = Files.newBufferedReader(filePath);

Como abrir un archivo para su lectura es algo que puede traernos cantidades de excepciones, se nos va a requerir un bloque try/catch, con lo que nuestro código pasaría a ser algo así:

try{
    BufferedReader br = Files.newBufferedReader(filePath);
} catch(IOException e) {
    e.printStackTrace();
}

Después dejen lindo el try/catch a gusto, pero a priori esto sirve.

Ahora que ya tenemos esto, vamos pasando linea a linea nuestro texto al StringBuilder

String linea;
While((linea = br.readLine()) != null) {
     sb.append(linea).append("\n");
}

Si esto los marea les explico: En mi While, le digo que el ciclo va a repetirse leyendo una linea y sumándosela a la variable linea y se corte si eso da null, lo cual es como un «se terminó el archivo y no hay nada más que leer».

Dentro del While voy a ir agregando lo que se lee y se pasa a la variable linea y un \n para hacer el salto de linea.

Con esto ya tenemos nuestra clase de lectura de archivos que quedaría en definitiva así:

public class LeerArchivos{
     public void leer(){
         StringBuilder sb = new StringBuilder();
         Path filePath = Paths.get("ruta del archivo\\archivo");
         try{
              BufferedReader br = Files.newBufferedReader(filePath);
              String linea;
              While((linea = br.readLine()) != null) {
                   sb.append(linea).append("\n");
              }
         } catch(IOException e) {
              e.printStackTrace();
         }
    }
}

Con lo que si quieren ver como funciona, solo deben crear una clase main, poner dentro un objeto de tipo LeerArchivo y ejecutar nuestro método leer:

public class Principal {
     public static void main(String[] args){
          LeerArchivo leerArchivo = new LeerArchivo();
          leerArchivo.leer();
     }
}

Y esto es todo por hoy, espero que les haya servido.

Ya somos 2000!

Como sabrán, este blog se inició como un apéndice del canal de youtube que hago hace tiempo. Nunca esperé que el canal tuviera éxito (estamos hablando de programación…), pero de a poco se va juntando la gente al fuego y nos vamos conociendo.

El canal lo cree con la esperanza de poder explicar cosas, enseñar lo que se, poder investigar lo que no y ayudar a otros que lo están haciendo, etc. Por eso quiero agradecerles a todos por estar ahí.

MUCHAS GRACIAS!!!!!

Selenium con Java capítulo 1: Setup del proyecto

En el capítulo anterior vimos que vamos a hacer y con qué herramientas. Ahora vamos a ver como instalar todas esas herramientas.

Obviamente como todo, el contenido lo pueden encontrar en este video que pongo a continuación

JDK

Lo primero que vamos a necesitar si vamos a programar usando Java es el JDK (Java developement kit), el cual vamos a poder descargar de aquí.

Luego de buscar la versión que necesiten dependiendo del sistema operativo que tengan, van a tener un «license agreement» sobre la caja donde van a ver las versiones a bajar

Solo clickeen ahí.

Una vez que baje, el proceso es de lo más sencillo. Solo darle a siguiente (y no bajar si ni quieren ningún otro software que les proponga el instalador).

Maven

Lo siguiente es instalar Maven para poder trabajar más sencillamente con los paquetes (cosa que ya discutimos en la entrada anterior). La cosa es sencilla, solo deben entrar al sitio de Maven y presionar en Download.

Una vez ahí, simplemente es buscar la instalación que quieran, bajarlo y descomprimirlo donde quieran (y no se olviden agregarlo al path).

WebDrivers

Bien, ya tenemos el lenguaje, ya tenemos nuestro «gestor de paquetes». Ahora necesitamos algo a lo que podamos pegarle con nuestro código para que maneje el browser, y aquí es donde entran los webdriver.

Si quieren usar el webdriver de Chrome, aquí tienen el sitio.

Si quieren usar Firefox, entonces usen geckoDriver. Y así podemos buscar los webdrivers del browser que queramos.

Eclipse

Ya tenemos todo para nuestro proyecto, pero aun no definimos adonde y con qué lo vamos a escribir. Mi recomendación (y esto va en gustos) es usar Eclipse. Para mi un IDE ideal para proyectos Java (funciona para otros lenguajes pero Java es su «fuerte»).

Simplemente entren al sitio de Eclipse y van a encontrar un botón de download.

Siguen el camino a la descarga y luego, todo es tan sencillo como con cualquier instalador (siguiente, siguiente, siguiente, etc.).

Con todo esto instalado, ya tenemos el ambiente para comenzar nuestro camino a la automatización. Para no alargar demasiado este post, en el próximo capítulo vamos a seguir analizando el video que puse al inicio y vamos a hablar de como armar nuestro proyecto.

Selenium con Java Capítulo 0: Hablemos de Selenium

Vamos a comenzar a ver en este blog como hacer pruebas automatizadas. Se que muchos de los que están leyendo están esperando ver estos artículos.

Todo lo que voy a ir poniendo es una extensión del material que pongo en mi canal por lo que si ya siguen el canal sigan leyendo que voy a tratar de extenderme un poco sobre el tema y si no, este es un buen momento para suscribirse y poder así seguir los tutoriales que tengo al respecto.

Pero comencemos desde el principio: ¿Qué vamos a hacer durante el curso? ¿Con qué? Empecemos por el principio…

La idea de este curso o tutorial o como quieran llamarlo es no solo poder automatizar pruebas sino también hacerlo de la manera correcta, con código prolijo, siguiendo buenas prácticas, etc. Esto nos va a traer muchos beneficios:

  • Framework escalable: Si hay que agregar nuevas funcionalidades tiene que ser sencillo agregarlas. Con el paso del tiempo, si el sistema crece, no debe ser tan complicado que el framework crezca con el.
  • Mantenible: Si el código está bien escrito tiene que ser sencillo mantenerlo.
  • Legible: Cualquier persona que entre al proyecto va a poder entender rápidamente que está pasando y poder sumarse a ser productivo pronto.
  • Heredable: Si un día uno decide dejar el proyecto, quién lo suceda puede seguir rápidamente.

Qué vamos a necesitar para el curso?

  • Java JDK
  • Maven
  • Selenium
  • TestNG
  • Eclipse (Esto es a gusto mío y con lo que voy a mostrar el código, si les gusta otra cosa sientanse libres)
  • Git

Por qué utilizar Java para automatizar

Java tiene la particularidad de ser un lenguaje utilizado en muchísimos proyectos y sin dudas es buena idea automatizar en el mismo lenguaje que está siendo utilizado para el proyecto o la tecnología que use quién necesite la automatización. Tener todo en un mismo lenguaje suele tender puentes dentro de sistemas.

Por otro lado, su manejo de la programación orientada a objetos es muy buena y hace sencillo dedicarse a automatizar.

También es sencillo encontrar material de ayuda y la comunidad de desarrolladores es enorme, lo cual hace también más sencillo conseguir apoyo a la hora de programar.

Maven

Maven es un gestor de proyectos ampliamente utilizado en Java, que básicamente lo que hace es descargar y dejar preparadas las librerías y configuraciones que necesitemos para el proyecto de manera automática.

Con esto no van a tener que ponerse a buscar que librerías necesitan en un momento y como deben ser configuradas, ustedes solo tienen que decirle que quieren usar en el proyecto usando POM (Project Object Model), una especie de XML que les va a servir. En el video que presento en este posteo van a encontrar ejemplos.

TestNG

Durante el curso vamos a necesitar una librería de UnitTest (aunque no la vamos a usar para tests unitarios) para poder decirle a un conjunto de instrucciones que son un test. Java tiene dos grandes candidatos a ser usados, jUnit y TestNG. Personalmente me inclino por TestNG por la facilidad que tiene para hacer suits de testing, pero ya vamos a adentrarnos en esto.

Necesitamos un repositorio…

Y por eso necesitamos Git. Pueden descargar el software de aquí. La idea es que con esto van a poder guardar su código para poder recuperarlo en cualquier máquina, tener control de versiones, van a poder hacer varias ramas y unirlas nuevamente en la principal y muchas cosas más. Lugares donde pueden dejar su código son github, bitbucket, gitlab, etc.

Con todo esto dicho, les recomiendo miren el video introductorio al curso, que lo dejé arriba de todo donde explico con más detalle alguno de los puntos.

En la próxima entrada vamos a empezar a hacer código!!!!

QBasic con QB 64, Capítulo 1: Hola Mundo

Para ir arrancando con este blog, voy a poner algo que me apasiona, que es la «retro programación». ¿Y qué es eso dirán? La respuesta es simple: un poco de nostalgia. Cuando yo arranqué a programar (fines del 95, principios del 96), lo primero que veías luego de entender un poco de algoritmia era QBasic, porque supuestamente era sencillo (vamos a volver sobre el tópico «sencillo» dentro de un tiempito y mostrar que no lo es tanto) y era ideal para comenzar. Con el tiempo, el gustito por QBasic siempre me quedó, aún cuando pasé a lenguajes más «serios» (En esa época lo que daba de comer era Clipper). Hace unos años quise volver sobre mis pasos y hacer de la retroprogramación un pasatiempo, y me encontré con una joya digna de ser mencionada: QB64.

Muchos de los más jóvenes probablemente no tienen ni la menor idea de que es QBasic, pero creanme que en una época era el lugar común para dar los primeros pasos en la programación. De hecho en mi adolescencia/principio de la adultez jugé infinidad de horas con esto y le dediqué más tiempo que a los videojuegos en mis momentos de ocio (lo cual no quiere decir que vicié feo con cosas como Monkey Island).

Pasando al tema del post (como siempre me voy por las ramas), empecemos a ver como funciona QBasic:

Básicamente lo que vamos a lograr en este post es instalar QB64 y hacer nuestro «hola mundo».

El primer paso consiste en bajar el instalador del sitio oficial de QB64 donde van a ver un botón que dice «Download». Una vez que lo presionen los va a llevar a un sitio de github (no se preocupen, no tienen que clonar nada) donde están los links de descarga dependiendo del sistema

Elijan el que se adapte a su SO.

Una vez que lo tienen, simplemente descomprimanlo con el programa que tengan (winrar o lo que sea) en la carpeta que les venga bien y listo, solo deben buscar el ejecutable.

Una vez tienen el «IDE» abierto ya pueden empezar con el código!!!! Por supuesto, vamos a empezar por el típico «Hola Mundo». Simplemente tenemos que escribir:

PRINT "Hola Mundo"

Y al presionar F5 (y guardar el archivo), la magia ocurre:

Hola Mundo

El próximo paso es poder escribir algo en una variable e imprimirla:

INPUT "Ingrese su nombre: ", nombre$
PRINT "Su nombre es: "+nombre$

Ya podemos controlar el uso de variables!

Y con esto ya tenemos nuestro entorno QBasic con QB64 terminado.

Espero les guste tanto como a mí la retroprogramación, QBasic, el código y viva la programación!

print(«Hola Mundo»)

Hola a todos, para los que no me conocen mi nombre es Pablo, más conocido interestelarmente como Dracux. Para presentarme un poco puedo decir que soy un loco del código, amo programar, amo el mundo de sistemas en si mismo y me gusta estar conectado con otros entusiastas del software. Otros hobbies que tengo son jugar go, programar, aprender japonés (soy malísimo pero bueno, es un lindo divertimento), programar, leer manga y obviamente programar. Profesionalmente me dediqué mucho tiempo y me sigo dedicando a la automatización de pruebas (van a ver seguramente mucho material aquí) y a ser scrum master. Empecé a programar en eras pre internet (Oyeron hablar de Clipper?).

Hace unos años empecé a hacer un canal de youtube donde exteriorizar mi pasión, pude hacer cursos, programar en vivo, arrancar proyectos, hablar del día a día del rubro y muchas cosas más. Como complemento a esto, creo que es hora de empezar a escribir, explicar un poco algunas cosas, aprender de ustedes, investigar, etc.

¿Qué van a encontrar en este blog? A un loco del código escribiendo sobre programación, hobbies bastante nerds, sistemas, tutoriales, cosas personales (que a veces no tengo adonde volcar), proyectos, etc. La verdad no se realmente hasta donde me va a llevar pasar del video al lenguaje escrito y espero me acompañen en este camino.

Por lo pronto, este es el blog de un loco lindo del código.