27 de julio de 2016

Tutorial HTML5 y Canvas


¡Hola developer! Como imagino ya sabrás, la semana pasada hice una encuesta en twitter para que me dijerais que era lo próximo que querías ver en el blog y salio ganador el tema Frontend. Así que pensé ¿Quien mejor que Martin Schwarz, nuestro experto en frontend para hablarnos del tema?

Si quieres participar en siguientes encuestas puedes seguirme en twitter: @rsdeveloperblog

Una vez más para el blog de Rubén Soler les saluda Martin Schwarz Torres @martin_scto, en la entrada de hoy hablamos de HTML5, la última y más actual versión del Hyper Text Markup Language.

Por todos los programadores frontend es conocido que se han añadido nuevas etiquetas entre las cuales destacamos:
Keygen Email Color Canvas
Nos centraremos en Canvas pero primero conoceremos de forma sencilla que se puede hacer con cada una de ellas:
  • Etiqueta Keygen

Los nuevos campos para la generación de claves aún están en proceso de poder ser implementados en todos los navegadores del mercado. Se basa en una simple línea de código que añadimos a una plantilla básica de php dentro de un formulario:


Con la adición de la etiqueta, logramos que al cargar la web en los navegadores compatibles, se nos permita generar de la nada un password con la complejidad que nosotros deseemos, media o alta.


Esta es una forma sencilla de generar claves aleatorias con cifrado, en posteriores entradas ahondaremos a cerca del control de este tipo de entradas.
  • Etiqueta e-mail

Ya no es necesario dar estilos a los formularios para resaltarlos cuando se comete un error al escribir una dirección mail. Con esta etiqueta validamos automáticamente la entrada y le damos su formato de forma sencilla, con una simple línea de código.


Al incluir el input correspondiente, logramos tener un campo que de forma automática valida si lo que escribimos se trata de un correo electrónico.

En este caso de forma intencionada obviamos teclear el @ de la dirección mail y la etiqueta html5 al ser interpretada por el navegador, no nos permite enviar en el formulario ese tipo de contenido. Pero igual ocurre si introduciendo el @ no completamos la dirección de correo:

Como desarrollador frontend nos ahorramos definir los estilos de las alertas, e incluso la programación en Javascript para que estas aparezcan al darse un error.
  • Etiqueta color

Una de las grandes novedades de HTML5 es la posibilidad de insertar un selector de colores. Lo que posibilita una interacción completa con el usuario permitiendo darle a elegir tonalidades para diferentes funciones, como puede ser elegir el color de un producto o de un tema de la web. 

Se inserta de forma sencilla como mostramos a continuación, dentro de un input, el tipo “color”:


De esta forma podremos elegir el color que deseemos.


  • Etiqueta Canvas

Sin duda una de las grandes ventajas para los desarrolladores frontend. Se utiliza en el mercado para diferentes funciones tales como espacios publicitarios, juegos en el navegador ( dinosaurio de Google) o bien para insertar videos o imágenes de forma simple y con un control total. Para este tipo de etiqueta necesitamos añadir el archivo canvas.js en función de lo que queramos realizar. Y me refiero con ello, a que ya los navegadores son capaces de reconocer pequeños lienzos con figuras simples o bien poco contenido. Para nuestro caso creamos una estructura básica, un lienzo de 500 por 300 pixels al que llamamos “lienzo”.


Creamos un archivo de Canvas donde introducimos por medio de Javascript los contenidos:


Y obtenemos el siguiente resultado en pantalla:


Realmente el texto que vemos representado en el navegador no actúa como tal, es decir, no se puede seleccionar, no se puede copiar y pegar. Esto se debe a que está como contenido del canvas y no como contenido de la web de forma directa en el sentido más estricto de la palabra. Este tipo de contenidos puede albergar publicidades o anuncios, donde no interesa que se seleccione lo que se ve, sino que al hacer click, se destine al usuario a un espacio web distinto o un enlace externo.

En próximas entradas veremos más a fondo el uso de canvas, la mezcla de este con Sprite para generar iconos internos y toda la gama de posibilidades. 
¡Hasta la próxima!

18 de julio de 2016

Livecoding el twitch de los programadores, programación en streaming

livecoding-in-java-youtube

¡Hola developer! En esta ocasión te voy hablar sobre algo que encontré en Internet  hace unos días, se trata de Livecoding.tv

Livecoding es una plataforma donde compartir las horas y horas que hechas programando con otros programadores, es una comunidad muy activa y solidaria. Gracias a su chat mientras estas retransmitiendo en streaming otros programadores pueden ayudarte a programar y así aprender juntos.

Además empezar es muy sencillo, solamente hay que instalar OBS (Un programa de retransmisión de video en directo) y seguir los pasos que indica la guía que proporcianan.

La idea me ha gustado tanto que me hice un canal allí y estoy haciendo periódicamente directos, si quieres me puedes seguir en este enlace: https://www.livecoding.tv/rsdeveloper/ Y así te enteraras cuando estoy retransmitiendo.

Además puedes buscar otros canales que te interesen y ver que están creando en ese momento. Están agrupados por lenguaje de programación de manera que eliges 3 lenguajes que te gustaría aprender y la plataforma te sugiere los directos que más te pueden interesar.

Como livecoding no esta muy de moda en la comunidad española y latinoamericana también retransmito simultáneamente en  Youtube, en el chat de youtube suelo hablar en español y en el de livecoding en ingles, puedes entrar en el que más te guste.

Aquí tienes un ejemplo del último directo que hice, estoy ahora trabajando en un reproductor de música de escritorio en Java SE.


Si quieres enterarte de cuando estoy programando en directo puedes seguirme en:

Livecoding: http://www.livecoding.tv/rsdeveloper
Facebook: http://fb.com/rsdeveloperblog
Twitter: http://www.twitter.com/rsdeveloperblog
Youtube: https://www.youtube.com/channel/UCSmMfbt6N9c1UkpkOcUAxiA

Espero que te haya gustado y ¡Hasta la próxima developer!

12 de julio de 2016

Navegadores, resetear propiedades CSS

css-reset-propierties-browsers


Por todos es conocido que a diario utilizamos un variado número de navegadores. Para los desarrolladores web supone un handicap el hecho de tener que adaptar las especificaciones en cuanto a formato y estilo de los contenidos online, para que todos los usuarios que accedan a la información queden satisfechos. 

Cada navegador tiene parámetros css básicos preestablecidos con los que se muestran los contenidos web. Estos podemos verlos en las siguientes fuentes para conocer de primera mano la necesidad de resetear antes de desarrollar nuestro proyecto. 

Dicen que vale mas una imagen que mil palabras, por tanto, vamos a ver un ejemplo. Construimos un documento html básico con su respectivo documento css vinculado.

html-css

Obteniendo los siguientes resultados en los distintos navegadores:

se-muestra-diferente

Todos vienen con las configuraciones predeterminadas que nombrábamos al principio de este artículo. Que nos generan un molesto borde blanco en los extremos del contenido. ¿Cómo podemos evitar estas configuraciones para nuestros diseños? La respuesta es sencilla, reseteando los valores CSS. Ello se consigue añadiendo una entrada en el documento de hoja de estilos con el siguiente formato: 

solucion

Con el * lo que hacemos es englobar a todos los elementos a los que se puede dar formato. El siguiente paso es llevar a cero los parámetros que por defecto el navegador trae con valores. Obteniendo los siguientes resultados: 

solucion

De esta manera conseguimos que nuestros diseños comiencen en la coordenada 0,0. Lo cual da un toque de profesionalidad y calidad a los trabajos y mejora la adaptación de los contenidos a todos los tipos de pantalla y navegador. Hasta aquí la entrada de hoy. Especial agradecimiento a Rubén Soler por permitirme colaborar mano a mano en su blog.
Les saluda Martin Schwarz Torres @martin_scto
Hasta la próxima

6 de julio de 2016

Entrevisto a Martin Schwarz, desarrollador web.

entrevista-desarrollador-web

¡Hola developer! He tenido la suerte de conocer a Martin Schwarz, un programador frontend miembro de las listas Top Freelance Francia y RSA influencers 2016 por Bastille, además fue Worldskill de su promoción.

He pensado que sería interesante hacerle algunas preguntas sobretodo para ti y los demás lectores y este es el resultado.
  • ¿Cómo aprendiste a programar?

Pues mi aprendizaje empezó estudiando la carrera de Ingeniería en tecnologías industriales. Una de las primeras asignaturas era Lenguajes de programación donde enseñaban lo básico de C++. Fue a raíz de ahí cuando empecé a explorar otros lenguajes y terminé decantándome por aquellos creados para el desarrollo web tales como HTML, CSS y Javascript.

  • ¿Dirías que eres feliz siendo programador? ¿Es una profesión que te llena? 

La verdad es que resulta gratificante muchas veces ver cómo algo que has creado puede llegar a ser útil para otras personas. Eso es lo que me hace feliz de programar. 

Para mi personalmente comenzó siendo un hobby al que le echaba muchas horas, y se terminó convirtiendo en algo que a día de hoy me ha servido para conseguir un puesto de trabajo. Por lo tanto me siento satisfecho y realizado gracias a la programación.

  • ¿Qué consejo darías a alguien que va a entrar en la universidad para aprender ingeniería de software?

Pues a todos aquellos que se decanten por ese camino lo que les recomiendo es que de antemano lleven una fuerte base en matemáticas y al menos conozcan un lenguaje de programación básico como C++, Java o Python.

  •  ¿Qué opinas sobre el "bum" que está teniendo la programación funcional últimamente?

Estamos entrando en una nueva era tecnológica, donde el IoT o “Internet de las cosas” va a marcar las tendencias del mercado gracias a las ingentes cantidades de información que emitimos en cada operación, como utiliza JyK para el análisis financiero. Eso favorece que la programación funcional vaya abarcando terreno y se abran nuevas puertas del mercado laboral para los desarrolladores especializados. Destacando Erlang como lenguaje de porgramación usado para aplicaciones tales como Facebook o Whatsapp.

  • ¿Cuál es tu lenguaje de programación favorito? ¿Utilizas algún framework? ¿Cuál o cuáles?

 La verdad es que me decanto por Javascript. La amplia variedad de plugins e implementaciones de utilidad tales como Jquery permiten realizar proyectos completos y profesionales. Además de permitir crear nuevas librerías y frameworks personales que facilitan los trabajos metódicos y recurrentes. Es así que la aparición de Angular y otras tecnologías comienzan a tomar gran relevancia en el mercado y se posicionan como herramientas de futuro.

A la segunda pregunta puedo contestar que normalmente, cuando necesito hacer maquetas web rápidas, recurro a Bootstrap. Pero las configuraciones de CSS de esos proyectos por ejemplo son más fáciles de trabajar utilizando el Framework Pure gracias a su versatilidad de uso. Pero sinceramente los proyectos en los que trabajo suelo hacerlos desde cero, ya que en su mayoría  se hacen a  medida.

  •  Con CSS3 llegaron las mediaquerys ¿Qué nos puedes contar sobre estas? 

Las mediaquerys permiten adaptar los estilos de los contenidos web a los diferentes tipos de dispositivos donde estos se van a mostrar. Destaca la regla @media de sencilla sintaxis con la que podemos elegir el tamaño de pantalla al que se aplicarán las normas que nosotros queramos, entre otras muchas funciones. 

mediaquerys

En este ejemplo aplicamos estilos a pantallas con una resolución de 700 px cuando el dispositivo se encuentre en su orientación “landscape”. Es una de las maneras más sencillas de adaptar los contenidos de nuestra web a las diferentes resoluciones, logrando trabajos con la denominación “Responsive”.

  • He oído a mucha gente decir que JQuery está en decadencia y que otros frameworks como Angular o React terminaran de matarlo ¿Crees que será así y por qué?

Cierto, Angular sobre todo está tomando gran importancia en el mercado y muy probablemente sustituya a JQuery como referencia. Está claro que estamos hablando de dos librerías con alcances distintos. Siendo JQuery con la que modificamos el estado de elementos de un proyecto y Angular un Framework que como su propio nombre indica, es mucho más potente y permite desarrollar aplicaciones web de gran calado.

La facilidad de uso y capacidad de desarrollo prima, así que inevitablemente el mercado cambiará a favor de Angular. Manteniéndose JQuery como referencia para modificaciones y como un amplio repositorio gracias a las grandes cantidades de desarrollos hechos con esta tecnología que ahora mismo están en internet.

  • ¿Utilizas alguna herramienta para ayudarte con el frontend de tus desarrollos como bootstrap o material design?

Normalmente los diseños que he desarrollado para web son a medida, debido a que los framework en algunas ocasiones no permiten hacer ciertas modificaciones que son necesarias. El desarrollo con este tipo de herramientas sólo lo realizo cuando son proyectos en los cuales prima más el plazo de entrega que el diseño complejo.

Es necesario saber diferenciar los proyectos y las tecnologías que vamos a utilizar porque será la clave para obtener grandes resultados.

  • ¿Dirías que la introducción de dispositivos móviles ha cambiado por completo el modo de desarrollar el frontend?

Ha modificado bastante la estructura básica de los proyectos. Tipografía, imágenes, logos, todo debe ser adaptado para que en los diferentes dispositivos la calidad de los contenidos sea óptima. Ya el programador no sólo piensa en como queda el proyecto en su pantalla, sino la facilidad de uso en el dispositivo móvil y la adaptación a los mismos. 

Definitivamente el volumen de trabajo ha crecido de forma exponencial con la inclusión de estos dispositivos en el desarrollo frontend.

  • Y por último ¿Tienes actualmente algún proyecto en mente o en desarrollo?

A día de hoy soy el desarrollador web de la empresa Ferretería Germán Medina SL, donde he implementado desde cero la tienda online del negocio www.germanmedina.es. Y próximamente espero montar una plataforma conjunta con desarrolladores para fortalecer la creación de proyectos de calidad.

Eso es todo, espero que te haya gustado y ¡Hasta la próxima developer!

5 de febrero de 2016

¿Cómo integrar Github/Git con Netbeans IDE?

tutorial-github-netbeans

¡Hola developer! Hoy te traigo un tutorial de cómo utilizar Git o Github integrado en el entorno de desarrollo Netbeans IDE.

Para los que no sepáis que es Git os dejo una pequeña introducción:
  • ¿Qué es Git?
Git es un sistema de control de versiones descentralizado, además, es el más utilizado hoy en día por casi todas las empresas de desarrollo de software. Permite controlar las versiones de una aplicación y facilitar el trabajo en equipo. Su versión web se llama Github.com.

Consiste en subir el código a un repositorio online en el que cada "commit" o subida de código es registrado. Además Git tiene un avanzado sistema de sobrescritura de archivos en el que únicamente se sobrescriben las lineas más actualizadas de nuestro programa, sin machacar el archivo completo.
  • ¿Cómo integrarlo con Netbeans?
Lo primero que necesitamos es tener instalado el IDE de desarrollo Netbeans, si no sabéis como instalarlo podéis consultarlo aquí (Explico como instalar Netbeans y el JDK 8 de Java).

Bien una vez hecho esto tenemos que crear una cuenta en Github, lo puedes hacer desde aquí:



Después para crear un repositorio nuevo vamos a la pestaña "Repositories" y damos clic en el icono que dice "New". El repositorio es digamos el medio donde se almacenara nuestro código.

repository-create-github
Al crearlo tenemos que ponerle un nombre y le damos "Create Repository", entonces nos dará una URL que tendremos que copiar. No cierres la pestaña y vamos a Netbeans.

repository-git


Ya en Netbeans creamos un nuevo proyecto, damos clic derecho en el proyecto y vamos a donde dice "Versioning" y "Initialize Git repository". Despues lo primero que tenemos que hacer es el primer "commit" para posterior mente hacer push (Subir código) mediante Git>Remote>Push. Al hacer el "commit" se abrira una ventana donde tendremos que poner un mensaje y darle "Ok".

github-netbeans



Cuando le des a push aparecerá una ventana similar a esta:

push-git

Donde dice Repository Location tendremos que copiar la URL que obtuvimos al crear nuestro repositorio en github, al pegarla automáticamente nos aparecerá el formulario de login, iniciaremos sesión con nuestros datos de Github y le damos a next.

Ahora pedirá que seleccionemos el branch, selecciona master y next y depués finish.

Bien ahora ya tenemos netbeans configurado para poder subir nuestro código a github y poder trabajar con este potente sistema de control de versiones.

Ahora podemos trabajar desde cualquier lugar ya que nuestro código está en cloud, únicamente cuando queramos descargar nuestro código iremos a git>remote>pull to upstream y cuando queramos subir modificaciones haremos un commit y despues git>remote>push to upstream.

Espero que te haya gustado y ¡Hasta la próxima developer!

4 de febrero de 2016

Curso de Java T4: Estructuras de almacenamiento. Parte 1: Arrays.


curso-java-arrays-vectores

Si todavía no has leído el capitulo 3 puedes hacerlo haciendo clic aquí:

 Ir al capitulo 3

Hola developer, en esta ocasión te hablare sobre los Arrays también conocidos como vectores.
  • ¿Qué es un Array o Vector?
Un array es un conjunto de variables, del mismo tipo de dato a las que se accede mediante un nombre en común. Cada Array digamos que contiene varias variables, cada una de ellas corresponden a una determinada posición dentro del array, a esta posición se le llama índice. El indice de un Array siempre comienza a contar desde la posición 0, de manera que si queremos acceder a la primera variable pondremos nombreArray[0], como ves, para acceder a una posición específica dentro de un array se utiliza el nombre del array y entre corchetes la posición.

Además existen arrays de dos dimensiones que funcionan como una tabla en la que la primera dimensión contiene filas y la segunda columnas formando "celdas" de variables pero eso lo veremos con más detalle en próximos capítulos.
  • ¿Como inicializar arrays en Java?
Para utilizar arrays en Java lo primero que necesitamos es inicializarlo, es decir declararlos de la siguiente manera: tipo de dato[ ] nombreArray = {contenido1,contenido2,contenido3}.
  • Recorrer Arrays en Java.
Bien ahora que ya sabes que es un array y como inicializarlo vas a aprender qué utilidad tiene esto. Un array es muy útil cuando tenemos muchas variables del mismo tipo de dato ya que nos permite agruparlas en una sola.

Para recorrer arrays se utilizan los bucles For y Foreach que explique en el anterior capitulo, si no lo has visto te recomiendo que lo leas antes de continuar.

Para recordar:
En una sentencia "For" inicializamos una variable que aumenta con cada bucle de esta forma cada vez que se ejecute la variable valdrá 1 numero más.  En la primera ejecución "v=1" en la segunda "v=2" y así sucesivamente.  Leer más.
 Ejemplo de uso recorrer Array con bucle For:



Como puedes observar utilizo el atributo length, este es un atributo de la clase Array que nos devuelve la longitud del array es decir el numero de elementos que contiene nuestro array para decirle al for cuantas veces debe repetir el bucle en este caso mientras "i" sea menor que la longitud de nuestro array. La variable "i" ira adquiriendo el valor de cada uno de los índices de nuestro array con cada repetición. En la primera ejecución vale 0 luego 1, 2 y asi sucesivamente. Solo nos queda utilizar esto en nuestro array pàra ello le pasamos la variable "i" como posición al array: numeros[i].

Ejemplo de uso recorrer Array con bucle Foreach:


Con el bucle foreah es mucho más sencillo de recorrer, unicamente le tenemos que inicializar una variable, importante que sea del mismo tipo de dato que nuestro array en este caso "numero" que es la que ira adquiriendo los distintos valores con cada ejecución. Digamos que "numero" equivale a "numeros[i]".

Te propongo un ejercicio, con lo aprendido en anteriores tutoriales diseña un programa que recorra un array de enteros y cuando llegue al numero 5 y solo al 5, imprima por pantalla el texto: "Bien, ya lo he hecho 5 veces". Puedes intentar hacerlo y dejarme en los comentarios que tal te ha ido, no te preocupes, en la siguiente parte subiré la solución para que lo puedas corregir.

Espero que te haya gustado y ¡Hasta la próxima developer!

1 de febrero de 2016

Curso de Java T3: Condicionales y bucles

curso-de-java-condicionales-bucles
Si todavía no has leído el capitulo 2 puedes hacerlo haciendo clic aquí:


¡Hola developer! Bienvenido al capitulo 3 de mi curso de Java. En está ocasión voy a enseñarte lo que son las sentencias condicionales y los bucles en Java.

  • ¿Qué son las sentencias condicionales?

Las sentencias condicionales son las ordenes de cualquier lenguaje de programación, en este caso Java que nos permiten decir a nuestro programa que debe hacer en función de una determinada situación. Esto lo hacemos los humanos instintivamente como por ejemplo:  si una puerta esta cerrada, dejar de andar.

Pues para hacer eso mismo que nosotros hacemos por instinto a nuestros programas se lo tenemos qué decir de alguna forma y para esto se utilizan las sentencias condicionales

  • if (condición): Su traducción a lenguaje humano sería algo así como, si pasa esto...
  • else: va siempre después de una sentencia "if" realmente son la misma sentencia, podríamos decir que el "else" forma parte de el "if" y quiere decir, si no pasa eso (la condición que hemos definido dentro de la sentencia "if")...
  • else if (condición): también forma parte de el "if" y es la unión de las dos anteriores, también va siempre después de un "if" y quiere decir, si no pasa esto y además pasa esto otro...


Como puedes ver en el ejemplo de arriba, para comprobar si dos datos son iguales dentro de un "if" se utiliza "==", también podemos decir si dos datos son distintos con "!=".

Esto siempre es así excepto cuando comparamos dos variables de tipo "String", en cuyo caso se utiliza el método "equals" o "equalsIgnoreCase". El método "equals" compara dos "Strings" es decir dos cadenas de texto y es sensible a mayúsculas y minúsculas mientras que el equalsIgnoreCase compara dos cadenas de texto ignorando las mayúsculas y minúsculas. Aquí abajo te dejo un ejemplo de uso:



Además existe otra sentencia condicional llamada "Switch" el "switch" es muy similar a si pusieramos sentencias "if" anidadas. su sintaxis es sencilla:





El "Switch" compara la condición según los casos que tu le pones mediante la sentencia "case", al finalizar la sentencia case se utiliza "break" para decir que una vez terminadas las instrucciones de dentro de ese case finalice. Mediante "default" le decimos que si no se cumple ninguno de los case ejecute lo que hay dentro del "default".
  • ¿Qué son los bucles?
Los bucles son sentencias que sirven para indicar repetición, los bucles son muy útiles cuando queremos repetir muchas veces un conjunto de instrucciones. Los bucles básicos son:
  • For (variable, condición, modificación de variable): Permite que se ejecute un conjunto de sentencias hasta que la condición deja de cumplirse, se suele utilizar una variable contador que se modifica su valor según lo expresado en la modificación de la variable.
  • While (condición): Permite que se ejecute un conjunto de sentencias mientras se cumple la condición, es decir es true. La condición puede ser cualquier expresión booleana. El cuerpo del bucle se ejecutará cero o más veces, mientras la expresión condicional sea verdadera.



Explico un poco este código: En esta ocasión utilizamos una sentencia "For" para hacer un programa que cuenta del 1 al 10. "int i=1" inicializamos la variable "i" de tipo entero con valor 1, "i<11" es la condición de repetición, quiere decir que este bucle se ejecutara mientras la variable "i" sea menor que 11. "i++" aumentamos la variable "i" en un valor por cada repetición, de esta forma cada vez que se ejecute la variable "i" valdrá 1 numero más.  En la primera ejecución "i=1" en la segunda "i=2" y así sucesivamente.

Veamos como hacer esto mismo con un "While":



Cuando utilizamos el while la variable a comparar normalmente la declaramos antes del bucle, (salvo en algunos casos que veremos más adelante) después entre parentesis se incluye la condición de repetición al igual que en el "for" en este caso nos interesa que se repita mientras "i" sea menor que 11, para que cuente del 1 al 10. Ahora solo queda imprimir la variable "i" mediante el System.out.println() y aumentar dicha variable.

Espero que te haya gustado y ¡Hasta la próxima developer!

Ya está disponible el siguiente capitulo: