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

sábado, 17 de septiembre de 2016

Tutorial Parallax scrolling HTML5 Javascript y Css3


Para ver en youtube clic aquí
(No olvides suscribirte)


Parallax Scrolling

  Inicialmente el efecto "Parallax" solo se refería a gráficos en general, en donde el fondo y algunos elementos se movían a diferente velocidad para dar la ilusión de profundidad, con el tiempo ha evolucionado hasta incluir diferentes efectos que ocurren al hacer scroll.

Efecto de parallax en un juego

ClientHeight vs ScrollHeight

   Ambos se refieren al tamaño absoluto incluyendo el padding pero en el caso del primero se refiere al tamaño del "visor" osea lo que observamos actualmente al hacer scroll, mientras que el segundo es el tamaño total, incluyendo los elementos ocultos que está fuera del scroll

Descargar archivos del tutorial

   NOTA: Para descargar los archivos, haces clic en el enlace y luego esperas unos segundos a que aparezca el botón del saltar publicidad, luego haces clic en ese botón y debería llevarte al archivo para que lo descargues, si no te lleva al destino solicitado comunícate conmigo inmediatamente a través de un comentario.

Parallax Ejemplo1: Descargar primer ejemplo
Parallax Ejemplo2: Descargar segundo ejemplo
Parallax Ejemplo3: Descargar tercer ejemplo

Visita mi perfil de codepen: codepen.io/giovaelpetv

Dame like en Facebook: https://www.facebook.com/giovaelpetv

Sígueme en Twitter: http://twitter.com/giovaelpe

miércoles, 14 de septiembre de 2016

La primera programadora y el primer programa, La historia de Ada Lovelace


Para ver en youtube clic aquí
(No olvides suscribirte)


¿Quien fue la primera persona que programó?

  Parece una pregunta difícil de responder, ya que para poder programar hacer falta un computador, esto hace que la pregunta sea comparable al famoso: ¿Quien fue primero el huevo o la gallina? Los biólogos evolucionistas han respondido esta pregunta, y por si no lo sabes, primero fue el huevo. Te invito a ver el video de arriba para que descubras la historia de la primera persona que programó y así responder a la pregunta: ¿Quien fue primero la computadora o el programador? 

Dame like en Facebook:


Sígueme en Twitter


Mi perfil de codepen

sábado, 10 de septiembre de 2016

Como hacer una galería Slideshow - Carrusel en Javascript


Para ver en Youtube clic aquí
(No olvides Suscribirte)


¿Qué es un Slideshow Carrusel?

   Es un tipo de galería que muestra diferentes imágenes, en este caso a modo de feed de noticias, el nombre de carrusel viene por el proceso cíclico que siguen las imágenes, estas una vez que se llega a la última vuelve a mostrar la primera

Códigos ASCII

 Anterior: ❮
 Siguiente: ❯

Descargas

  Nota: Los enlaces están patrocinados por "adfly", una vez hecho clic debes esperar unos segundos y luego te aparecerá un botón con el texto "Saltar publicidad" luego de hacer clic en él te debería llevar a la descarga, si no es así comunícate con migo inmediatamente a través de un comentario


Visita mi perfil de codepen

Créditos

  Las imágenes son cortesía de pixabay en donde puedes descargar imágenes libres de derechos

domingo, 28 de agosto de 2016

Que lenguaje de programación Aprender primero | Mi recomendación


Para ver en youtube clic aquí
(No olvides suscribirte)

Mi recomendación

  En el video que acabas de ver yo te recomiendo considerar a Java y a C# como una buena opción para que sean tus primeros lenguajes de programación a aprender, ya que cumplen con los criterios descritos en el video:
  • Son orientados a objetos
  • Tienen una sintaxis común a varios otros lenguajes
  • No son ni muy fáciles ni muy difíciles
  • Son estrictamente orientados a objetos

Pseudocódigo

   Esta es una recomendación aparte, sea cual sea el lenguaje que decidas aprender de primero, combina ese aprendizaje con pseudocódigo

Links del Video

  Nota: Algunos enlaces están patrocinados por Adfly, luego de hacer clic, debes esperar unos segundos para luego hacer clic en el botón que dice "Saltar publicidad" luego de esto serás llevado directamente a la página solicitada, si no es así comunícate conmigo inmediatamente a través de un comentario


Entornos de programación




Curso de Java

  Yo tengo publicado un curso de Java en mi canal de youtube, a continuación de dejo el enlace a la lista de reproducción:

sábado, 27 de agosto de 2016

Como hacer un juego de Snake en C# (Windows Forms)


Para ver en youtube clic aquí
(No olvides suscribirte)


Juego de snake

   Este juego fue lanzado a mediados de lo años 70, a diferencia de lo que muchos creen no fue desarrollado por la Nokia, pero gracias a esta última adquirió una popularidad masiva debido a que venia pre-instalado en los teléfonos de esta marca.

Archivos del Video tutorial

  Nota: Todos los enlaces están patrocinados por Adfly luego de hacer clic esperas unos segundos y haces clic en "Saltar publicidad", debería llevarte directamente al archivo para su descarga, si no es así comunícate inmediatamente conmigo a través de un comentario

Imágenes

Ejemplo de Snake en WPF (Windows Presentation Foundation) proyecto completo Visual Studio

   Este último ejemplo es para que compares las diferencias con Windows Forms, no son muchas, estas solo son referentes a la interfaz gráfica, suscríbete a mi canal para ver más tutoriales como este, pronto publicaré el mismo tutorial pero en WPF

Código fuente completo (Windows Forms)

Form1.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace snake1
{
    public partial class Form1 : Form
    {
        Graphics juego;
        Cola cabeza;
        Comida comida;
        int espacio;
        int xdir = 0,ydir = 0;
        int puntaje = 0;
        Boolean ejex = true, ejey = true;
        public Form1()
        {
            espacio = 10;
            InitializeComponent();
            juego = canvas.CreateGraphics();
            cabeza = new Cola(10, 10);
            comida = new Comida();
        }
        public void findeJuego()
        {
            xdir = 0;
            ydir = 0;
            puntaje = 0;
            puntos.Text = "0";
            ejex = true;
            ejey = true;
            cabeza = new Cola(10, 10);
            comida = new Comida();
            MessageBox.Show("Perdiste");
        }
        public void choqueCuerpo()
        {
            Cola temp;
            try
            {
                temp = cabeza.verSiguiente().verSiguiente();
            } catch(Exception err)
            {
                temp = null;
            }
            while(temp != null)
            {
                if (cabeza.interseccion(temp))
                {
                    findeJuego();
                } else
                {
                    temp = temp.verSiguiente();
                }
            }
        }

        public void choquePared()
        {
            if(cabeza.getX() < 0 || cabeza.getX() > 760 || cabeza.getY() < 0 || cabeza.getY() > 360)
            {
                findeJuego();
            }
        }

        public void dibujar()
        {
            juego.Clear(Color.White);
            cabeza.dibujar(juego);
            comida.dibujar(juego);
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (ejex)
            {
                if(e.KeyCode == Keys.Up)
                {
                    ydir = -espacio;
                    xdir = 0;
                    ejex = false;
                    ejey = true;
                }
                if (e.KeyCode == Keys.Down)
                {
                    ydir = espacio;
                    xdir = 0;
                    ejex = false;
                    ejey = true;
                }
            }
            if (ejey)
            {
                if (e.KeyCode == Keys.Right)
                {
                    ydir = 0;
                    xdir = espacio;
                    ejex = true;
                    ejey = false;
                }
                if (e.KeyCode == Keys.Left)
                {
                    ydir = 0;
                    xdir = -espacio;
                    ejex = true;
                    ejey = false;
                }
            }
        }

        public void movimiento()
        {
            cabeza.setxy(cabeza.getX() + xdir, cabeza.getY() + ydir);
        }

        private void bucle_Tick(object sender, EventArgs e)
        {
            dibujar();
            movimiento();
            choqueCuerpo();
            choquePared();
            if (cabeza.interseccion(comida))
            {
                comida.colocar();
                cabeza.meter();
                puntos.Text = (puntaje++).ToString();
            }
        }
    }
}

Cola.cs

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace snake1
{
    class Cola : objeto
    {
        Cola siguiente;
        public Cola(int x, int y)
        {
            this.x = x;
            this.y = y;
            siguiente = null;
        }
        public void dibujar(Graphics g)
        {
            if(siguiente != null)
            {
                siguiente.dibujar(g);
            }
            g.FillRectangle(new SolidBrush(Color.Blue), this.x, this.y, this.espacio, this.espacio);
        }
        public void setxy(int x, int y)
        {
            if(siguiente != null)
            {
                siguiente.setxy(this.x, this.y);
            }
            this.x = x;
            this.y = y;
        }
        public void meter()
        {
            if(siguiente == null)
            {
                siguiente = new Cola(this.x, this.y);
            } else
            {
                siguiente.meter();
            }
        }
        public int getX()
        {
            return this.x;
        }
        public int getY()
        {
            return this.y;
        }
        public Cola verSiguiente()
        {
            return siguiente;
        }
    }
}

objeto.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace snake1
{
    class objeto
    {
        protected int x, y, espacio;
        public objeto()
        {
            espacio = 10;
        }
        public Boolean interseccion(objeto o)
        {
            int difx = Math.Abs(this.x - o.x);
            int dify = Math.Abs(this.y - o.y);
            if(difx >= 0 && difx < espacio && dify >= 0 && dify < espacio)
            {
                return true;
            } else
            {
                return false;
            }
        }
    }
}

Comida.cs

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace snake1
{
    class Comida : objeto
    {

        public Comida()
        {
            this.x = generar(77);
            this.y = generar(37);
        }
        public void dibujar(Graphics g)
        {
            g.FillRectangle(new SolidBrush(Color.Red), this.x, this.y, this.espacio, this.espacio);
        }
        public void colocar()
        {
            this.x = generar(77);
            this.y = generar(37);
        }
        public int generar(int n)
        {
            Random random = new Random();
            int num = random.Next(0, n) * 10;
            return num;
        }
    }
}

sábado, 20 de agosto de 2016

Efecto foto doblada CSS3


Para ver en youtube clic aquí
Para ir a mi canal de Youtube clic aquí (No olvides suscribirte)

Compatibilidad de la propiedad filter

   La propiedad filter no está implementada completamente en los navegadores, por lo que se deben utilizar prefijos para que sea compatible con todos los navegadores
  • -webkit-filter para Chrome Safari y Opera
  • filter (Forma standard) Internet explorer y Firefox

Código fuente y archivos

  Si quieres visualizar el código fuente, puedes visualizarlo o descargarlo.
Instrucciones: Luego de hacer clic espera unos segundos y luego haz clic en el botón que dice "Saltar publicidad" si esto te presenta algún problema comunícate conmigo inmediatamente a través de un comentario 



Para ver el código en mi perfil de codepen


Sitio web que inspiró el tutorial:

domingo, 14 de agosto de 2016

Validar formularios con HTML5 CSS3 y JavaScript


Para ver en youtube clic aquí
Para ir a mi canal de youtube clic aquí (No olvides suscribirte)
Para ir al canal de  Developero clic aquí


Descargar plantilla HTML

Puedes empezar el tutorial con el mismo html que yo utilicé aunque da igual si utilizas un formulario creado por tí
http://adf.ly/1dAUFG  (Lee la aclaratoria sobre los enlaces al final de la entrada)

 Si solo quieres las imágenes que yo utilicé las puedes descargar en el siguiente enlace:
http://adf.ly/1dAUJB (Lee la aclaratoria sobre los enlaces al final de la entrada)

La importancia de la validación

    La validación no es más que la verificación de los datos antes de que estos puedan ser procesados por nuestro servidor. 
  Existe un tipo de ataque conocido como Inyección SQL que consiste en enviar código malicioso a través de los formularios, más información sobre este tipo de ataque puedes ver el siguiente enlace:
http://adf.ly/1dAP3c  (Leer aclaratoria sobre los enlaces abajo)

  La verificación más importante que debemos hacer consiste en evitar que un atacante pueda ingresar Javascript o SQL a través de nuestros formularios, también en evitar que se envíen espacios en blanco para que nuestra base de datos no se llene de datos basura

La diferencia entre el servidor y el cliente

   En el cliente, la validación ocurre en el navegador mismo, por lo tanto se lleva a cabo usando herramientas disponibles en el navegador, como por ejemplo HTML5 CSS3 y JavaScript.

En el servidor, la validación ocurre una vez que la información ha sido enviada a este a través de un formulario, esta se lleva a cabo con tecnologías disponibles en el servidor como PHP JSP Node.JS ASP etc

Como escribir patrones para el atributo "pattern"

 Las llaves [ ]

 Indican que caracteres debemos colocar, a continuación unos ejemplos :
  • [abc] Solo se puede escribir "a","b" o "c" puede ser por ejemplo: "ccc", "bbb", "aaa" o cualquier combinación que solo tenga una de las tres letras
  • [^abc] Al colocar el "acento circunflejo" (Es el nombre de ese signo) estamos pidiendo que se permita cualquier carácter excepto "a", "b" o "c", esto significa que se van a admitir, números, caracteres especiales y letras, siempre y cuando estas últimas no sean una de esas tres
  • [a-z], [0-9] o [A-Z] Con el guión podemos especificar un rango de caracteres, en el primer caso cualquier letra que vaya de la "a" hasta la "z" en minúscula, estos se pueden combinar sin necesidad de espacios de la siguiente forma: [a-zA-Z0-9]
  • [\s] o [\n] De igual forma que hicimos en el primer ejemplo podemos especificar estos caracteres para pedir que se solicite un espacio en blanco o una nueva linea respectivamente
  • \ El "slash invertido" lo usamos para poder identificar caracteres especiales por ejmplo si queremos solicitar que se coloquen guiones [\-] si se colocara el guión solamente pudiera causar conflicto ya que como vimos arriba este se usa para denotar rangos
  • \d Cualquier número, en este caso no es necesario colocar las llaves ([])
  • \D Cualquier letra o carácter especial, la igual que arriba no es necesario colocar as llaves

Los corchetes { }

  Indican la cantidad de caracteres que debemos colocar:
  • {7} Aquí exigimos 7 caracteres obligatoriamente, ni mas ni menos
  • {2,9} Siempre tiene que haber como mínimo 2 y no más de 9
En resumen, con la coma (,) creamos rangos para cantidad y con el guión (-) creamos rangos para el tipo de carácter

Ejemplos de patrones

Código postal Venezolano : Deben ser 4 números entre 0 y 9
[0-9]{4}

Código postal Mexicano : Contiene 5 dígitos 4 números agrupados de dos en dos y separados por un guión
[0-9]{2}[\-]{1}[0-9]{2} o también    \d{2}[\-]\d{2}

Número de teléfono formato USA internacional : debe ser algo así +99(99)9999-9999
[\+]\d{2}[\(]{1}\d{2}[\)]\d{4}[\-]{1}\d{4}

También cuando queramos un solo carácter no hace falta que especifiquemos el {1} por lo que lo de arriba puede quedar de forma más corta de la siguiente manera:
 [\+]\d{2}[\(]\d{2}[\)]\d{4}[\-]\d{4}

Fecha formato dd/mm/aa: 
\d{2}[/]\d{2}[/]\d{2}

Más información sobre los patrones

  A continuación comparto contigo una enlace a un sitio web que contiene una lista grande de patrones ya creados que puedes usar, adicionalmente te permite crear tus propios patrones de forma muy sencilla, el único problema es que este sitio está en inglés:
http://adf.ly/1dASXo  (Lee la aclaratoria sobre los enlaces al final de la entrada)

Códigos fuente

 En el enlace a continuación puedes descargar el formulario ya terminado, para que leas y compares el código fuente que yo escribí:
http://adf.ly/1dAUNf  (Lee la aclaratoria sobre los enlaces al final de la entrada)

Aclaratoria sobre los enlaces

  Los enlaces en este blog tienen un pequeño anuncio publicitario patrocinado por Adfly, luego de hacer clic esperas unos segundos y aparecerá un botón con el texto "Saltar publicidad" debes hacer clic ahí para llegar a la página de destino. Este patrocinio me permite producir más material como este, si te parece que los anuncios son incómodos o no llevan la página de destino escríbeme inmediatamente, puedes hacer un comentario aquí o en mi canal de Youtube



domingo, 7 de agosto de 2016

¿Cual es la diferencia entre PHP y Javascript?


Para ver en youtube clic aquí
Para mas videos como este clic aquí (Recuerda suscribirte)


   En el video que acabas de ver se explican la diferencia entre los que podemos considerar los lenguages de programación más importantes en el desarrollo web. Acontinuación podrás descargar los códigos fuente de los ejemplos y podrás descargar los diferentes servidores web disponibles.

Aclaratora sobre los enlaces: Todos los enlaces que aparezcan a partir de este punto, tienen un pequeño anuncio publicitario, patrocinado por adfly, luego de hacer clic, puedes undir en donde dice "Saltar publicidad" para ir a la página de destino. Estos anuncios me permiten poder hacer más material como este, pero si te resultan molestos por favor escríbeme para buscar una mejor forma de trabajar

Servidores Web y sus diferencias

  Todos los programas que te voy a recomendar a continuación, son 100% gratis, ya que son software libre

  1. WampServer: El que yo uso, este servidor contiene: El interprete PHP, el servidor Web propiamente dicho y un servidor de bases de datos MYSQL. Todo ya configurado y enlazado para que puedas hacer scripts PHP que se comuniquen con tu base de datos. Adicional-mente viene con utilidades web como phpMyAdmin que permite administrar tus bases de datos desde el navegador web, en el ejemplo de PHP uso esta utilidad para verificar la base de datos. Para descargar wamp clic aquí
  2. AppServer: Nunca lo he usado, pero tienen las mismas características de Wamp. Para descargar AppServ has clic aquí
  3. XamppServer: Este es como Wamp pero con esteroides, tiene todo lo que tiene Wamp pero muchas otras cosas más, como por ejemplo un servidor de correo, una entidad emisora de certificados SSL para cifrar las páginas web que creemos, servidor FTP, interprete PERL, y un interprete JSP. Para descargar XAMPP has clic aquí
  4. MAMP: Este es para los que tienen Mac, es lo mismo que Wamp pero para Mac. Para descargar MAMP clic aquí
  5. EasyPHP: Tampoco nunca lo he usado, es similar a WAMP pero con algunos agregados como lo son Nginx, phyton, ruby etc. Para descargar EasyPHP haz clic  aquí
  6. NMP-Server: Es un servidor portátil, lo que significa que no tienes que instalar nada, solo ejecutarlo, contiene: PHP, Nginx y MYSQL. Clic aquí para descargar

Códigos fuente para descargar

 Recuerda leer la aclaratoria sobre los enlaces al inicio de la entrada.




   Recuerda comentar en el video cualquier cosa que creas que no haya sido cubierta por el video, igualmente comenta las cosas que creas que se puedan hacer con uno o con otro.


domingo, 31 de julio de 2016

Curso de Java Clase 8: Los Archivos


Para ver en youtube haz clic aquí

Los Archivos

   Casi siempre cuando estamos escribiendo un programa nos vemos en la necesidad de guardar de forma permanente la información, eso es una gran diferencia a el uso de variables en las que podemos guardar información pero esta se desvanece al cerrar nuestro programa.

Las excepciones

  Se refiere a la indicación de que ha ocurrido algún problema durante la ejecución de nuestro programa, usamos la palabra excepción por que se espera que esto ocurra con poca frecuencia, generalmente es un instrucción que no se apega al funcionamiento "regular" del programa.
  En nuestro ejemplo debemos indicarle que hacer en caso de no encontrar el archivo

Manejo de Excepciones

  Es la técnica que consiste en escribir una porción de código que resuelve la situación generada por la excepción. Es un código alternativo que se ejecuta en el caso de que el primero no funcione a causa de la excepción.


La clase File

  Como dije en el video la clase "file" solo sirve como enlace para un archivo que podría o no podría existir, con ella tenemos varios métodos útiles para extraer información de nuestro archivo, a continuación voy a listar los que me parecen más útiles para los que se están iniciando con este apartado:

  • canRead(): Realiza una prueba para comprobar si es posible leer el archivo
  • exists(): Devuelve false si el archivo no existe y "true" en caso contrario
  • getAbsolutePath(): Obtiene la ruta completa donde está ubicado el archivo
  • getName(): Obtiene el nombre completo del archivo
Si quieres saber más sobre la clase file, puedes seguir el siguiente enlace a la referencia oficial de java (está en inglés) clic aquí

Códigos fuente del tutorial

Corrección:

En el tutorial dije que solo manejaríamos una sola excepción, pero esto fue un error, ya que al leer el archivo necesitamos controlar la excepción "FileNotFoundException" y "IOException", pero en este caso podemos solo especificar "IOException" porque la primera es subclase de la segunda.

Lectura de archivos


La clase File

Escritura de archivos



Aclaratoria sobre los enlaces: Como habrás podido notar los enlaces contienen un pequeño anuncio publicitario, mi interés con esto no es causar molestia si no mas bien tener un impulso para poder seguir produciendo material como este, si por alguna razón los anuncios te parecen muy incómodos o piensas que son demasiado molestos, escríbeme y yo tomaré tu comentario en cuenta buscando una mejor forma de trabajar.

domingo, 24 de julio de 2016

Suseción Fibonacci en Java, Ejercicion #6


Para ver en youtube click aquí
Para ir a mi canal de youtube click aquí (no olvides suscribirte)
Para ver más videos como este haz click aquí

Código fuente del video

package fibonacci;

/**
 *
 * @author satur
 */
public class Fibonacci {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        long[] fibo = new long[2];
        fibo[0] = 0;
        fibo[1] = 1;
        int cantidad = 50;
        int num = 0;
        while(num <= cantidad){
            System.out.println(fibo[0]);
            long temp = fibo[1] + fibo[0];
            fibo[0] = fibo[1];
            fibo[1] = temp;
            num++;
        }
    }
    
}

sábado, 23 de julio de 2016

Animación de Planeta y luna rotando CSS3


Para ver en youtube click aquí
Para ir a mi canal click aquí (No olvides suscribirte)
Para ver una lista de reproducción de tutoriales CSS3 click aquí


Sobre "linear"

  Este es uno de los valores que podemos definir en nuestra propiedad "animation", si queremos definir este parámetro de forma independiente debemos usar la propiedad "animation-timing-function" y podemos darle los siguientes valores :
  • linear : La animación tiene la misma velocidad desde el inicio hasta el final
  • ease  : Empieza lento, luego acelera la velocidad y antes del final, lento nuevamente
  • ease-in : Comienza lentamente
  • ease-out : Termina lentamente
  • ease-in-out: Comienza y termina lentamente
  • steps(int, start|end) : Permite personalizar, hasta cierto punto la velocidad, el primer parametro es la cantidad de intervalos y el segundo es donde ocurrirá el cambio de velocidad, al inicio (start) o al final (end)
  • step-start : Equivalente a colocar steps(1, start)
  • step-end : Equivalente a colocar steps(1, end);
  • cubic-bezier(n,n,n,n) : Permite personalizar completamenta la función de tiempo, a continuación te enseño a establecer los valores

Función cubic-bezier

  Se le deben pasar 4 parámetros numéricos que describen una "curva de bezier" sigue este enlace para saber lo que es :
  Definir sus parametros de forma manual es un poco dificil, por suerte tenemos este sitio web en donde podemos crear visualmente nustra propia curva :
http://adf.ly/1cuY6D

Acerca de los enlaces: Tienen un pequeño anuncio publicitario, esto lo hago para poder tener un mejor apoyo y así poder seguir produciendo más material como este, si te parecen muy molestos, escríbeme en los comentarios y yo buscaré una mejor forma de trabajar. Luego de hacer clic en ellos debes hacer clic en donde dice: "Saltar publicidad"

Código fuente del tutorial

.tierra {
   position: absolute;
   width: 100px;
   height: 100px;
   background-image: url('tierra.jpg');
   background-size: 200%;
   border-radius: 50%;
   top: 50px;
   left: 350px;
   animation: rotartierra 2s infinite linear;
  }
  .luna {
   position: absolute;
   width: 25px;
   height: 25px;
   background-image: url('luna.jpg');
   background-size: 200%;
   border-radius: 50%;
   top: 80px;
   left: 250px;
   animation: rotarluna 2s infinite linear, traslacion1 3s infinite linear, traslacion2 3s infinite linear;
  }

  @keyframes rotartierra {
  from {
   background-position: 0px;
  }
  to {
   background-position: 200px;
  }
  }

  @keyframes
  rotarluna {from {
   background-position: 0%;
  }
  to {
   background-position: 200%;
  }
  }

  @keyframes traslacion1 {
  0%{
  left: 250px;
  z-index: 2;
  }
  49%{
  z-index: 2;
  }
  50%{
  left: 550px;
  z-index: -3;
  }
  99%{
  z-index: -3;
  }
  100%{
  left: 250px;
  z-index: 2;
  }
  }

  @keyframes traslacion2{
  0%{
   width: 35px;
   height: 35px;
  }
  15%{
   width: 50px;
   height: 50px;
  }
  35%{
   width: 50px;
   height: 50px;
  }
  50%{
            width: 35px;
   height: 35px;
  }
  65%{
   width: 25px;
   height: 25px;
  }
  85%{
   width: 25px;
   height: 25px;
  }
  100%{
   width: 35px;
   height: 35px;
  }
  }


Imagenes para descargar

En el siguiente enlace podrás descargar las imágenes de la superficie lunar y el mapa mundi de la tierra, ambas están en un archivo de winrar así que solo tienes que descargar un archivo, dentro de él están las dos imágenes:

domingo, 17 de julio de 2016

Arrays en Java, Juego de Palindromos, Curso de Java Clase 7


Para ver en youtube, haz click aquí
Para ir a mi canal de Youtube, click aquí (No olvides suscribirte)
Dame like en Facebook, click aquí

Conceptos clave del video tutorial

Array o arreglo en español : Se refiere a una variable que es capaz de almacenar, no uno, sino varios valores diferentes, estos se ordenan según unos indices que comienzan desde el 0 y terminan de acuerdo al tamaño de nuestro array. El tamaño, en java lo tenemos que definir al momento de crear nuestro array.

El objeto ArrayList : Es un objeto que nos permite más versatilidad al momento de usar arreglos, un objeto "ArrayList" es en esencia un array, en donde no tenemos que especificar ni el tipo de dato que va a guardar, ni la cantidad. Con respecto a lo último, podremos almacenar todos los objetos que queramos dentro de nuestor "ArrayList" y este en teoría nunca se va a llenar. Si queremos podemos especificar el tipo de objeto que va a guardar usando paréntesis angulares, mas abajo en los ejemplos de código fuente, veras esto más en detalle.

Diccionarios de Java: Estos los podemos llamar de una forma muy informal como "Array asociativo en Java" esto en referencia a PHP. Con los diccionarios, que se crean usando el objeto "HashMap", nos permite crear una especie de array, en donde los objetos no se acceden usando indices si no claves creadas por nosotros.

Códigos fuente

  Creación simple de array, poblamiento usando un bucle "for" y lectura usando un bucle "for each"

String[] array = new String[10];
for(int i=0; i<= array.length; i++){
      array[i] = "hola";
}

for(String s : array){
     System.out.println(s);
}

  Otra forma de crear un array 

String[] array = {"uno", "dos", "tres", "cuatro"};

  En este caso el tamaño o la cantidad de elementos que admite el array es el número con el cual se crean osea 4, siendo el indice 0 igual a "uno" y el indice 3 igual a "cuatro"

Ejemplo de ArrayList, poblamiento y lectura usando bucle "for" y "for each"

ArrayList miarray = new ArrayList();
for(int i=0; i<=100; i++){
      miarray.add(i);
}

for(Object o : miarray){
  System.out.println(o);
}

Ejemplo de ArrayList, especificando el tipo de datos que va a guardar

ArrayList<String> miarray = new ArrayList();

  En este caso no sería necesario usar "Object" en el bucle for, en su lugar usamos "String"

Ejemplo de diccionario, usando HashMap

HashMap<String, String> arreglo = new HashMap();
arreglo.put("clave", "valor");

Las claves y los valores pueden ser tipo de datos que queramos

Juego de Palíndromos en Java

  Por último el ejemplo del detector de Palíndromos en java, a continuación el código completo

package clase7;
import java.util.Scanner;

public class Clase7 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String entrada = scanner.nextLine();
        char[] caracteres = entrada.toCharArray();
        char[] volteado = new char[caracteres.length];
        int num = 0;
        for(int i = caracteres.length; i>0; i--){
            volteado[num] = caracteres[i-1];
            num++;
        }
        String volteado2 = new String(volteado);
        if(entrada.equalsIgnoreCase(volteado2)){
            System.out.println("Es palindromo");
        } else {
            System.out.println("No es palindromo");
        }
    }
    
}


Botones animados CSS3


Para ver en youtube click aquí
Para ver la lista de reproducción de CSS3, click aquí 
Dame like en facebook, click aquí


Código fuente del video

Parte CSS :

a {
  display : inline-block;
  background-color: black;
  padding: 15px;
  color: white;
  position: absolute;
  top: 20px;
  left: 20px;
  border-radius : 5px;
  text-decoration: none;
 }
 .anim2 {
  top: 100px;
 }
 .trans {
  top : 300px;
  transition: background-color 1s;
 }
 .anim3 {
  top: 200px;
 }
 
 @keyframes anim1 {
  0%{
   top: 20px;
  left: 20px;
  }
  25%{
   top: 10px;
  left: 20px;
  }
  50%{
   top: 30px;
  left: 10px;
  }
  100%{
   top: 20px;
  left: 30px;
  }
 }
 
 @keyframes anim2 {
  0%{
   background-color: black;
  }
  25%{
   background-color: red;
  }
  50%{
   background-color: blue;
  }
  100%{
   background-color: black;
  }
 }
 
 @keyframes anim3 {
  0%{
   padding : 15px;
  }
  50%{
   padding : 8px;
  }
  100%{
   padding : 15px;
  }
 }
 .anim1:hover {
  animation : anim1 1s infinite;
 }
 .anim2:hover {
  animation-name: anim2;
  animation-duration: 1s;
  animation-iteration-count : infinite;
 }
 
 .anim3:hover {
  animation : anim3 1s infinite;
 }
 .trans:hover {
  background-color: red;
 }

Parte HTML :

<a href="#" class="anim1" onclick="alert('hola');">Boton1</a>
<a href="#" class="anim2" onclick="alert('hola');">Boton2</a>
<a href="#" class="anim3" onclick="alert('hola');">Boton3</a>
<a href="#" class="trans" onclick="alert('hola');">Transisión</a>
  

domingo, 3 de julio de 2016

Controles de barra de herramientas y menú disponibles para TinyMCE

(No olvides suscribirte)
Los controles que coloco a continuación estan disponibles para la librería base, hay otros controles que estan disponibles bajo el uso de plugins, estos los veremos más adelante.

Barra de Herramientas

  • newdocument: Crea un nuevo documento
  • bold : Aplica el estilo de "negrita" al texto en cuestión
  • italic: Aplica el estilo de "cursiva" al texto en cuestión
  • underline: Aplica el estilo de "subrayado" al texto en cuestión
  • strikethrough : Crea una linea que pasa por la mitad del texto, estilo de texto tachado
  • alignleft: Alinea el texto a la izquierda
  • aligncenter: Centra el texto
  • alignright: Alinea el texto a la derecha
  • alignjustify: Justifica el texto
  • styleselect: Crea una lista tipo "dropdown" con los estilos disponibles para aplicar
  • formatselect: Crea una lista tipo "dropdown" con los formatos disponibles para aplicar
  • fontselect: Crea una lista tipo "dropdown" con las fuentes disponibles para aplicar
  • fontsizeselect: Dropdown para seleccionar el tamaño del texto
  • cut: Corta el texto al portapapeles
  • copy: Copia el texto al portapapeles
  • paste: Pega el texto del portapapeles
  • bullist: Crea una lista con estilo similar a esta que estas viendo
  • numlist: Lista numérica
  • outdent: Cambia nivel de la lista hacia afuera
  • indent: Cambia nivel de la lista hacia adentro
  • blockquote: Convierte la selección en una cita
  • undo: Deshace la última operación
  • redo : Rehace la última operación deshecha 
  • removeformat: Elimina todo el formato del texto

Controles de Menú

  Aparte de los menús que podemos mostrar, como lo son : "file", "edit", "view", "format", tenemos los siguientes controles:

  • newdocument : Crea un nuevo documento
  • undo: Deshace la última operación 
  • redo : Rehace la última operación deshecha
  • visualaid: Activa o desactiva las ayudas visuales
  • cut: Corta al portapapeles 
  • copy: Copia al portapapeles
  • paste: Pega desde el portapapeles
  • selectall: Selecciona todo el texto
  • bold : Aplica el estilo de "negrita"
  • italic: Aplica el estilo de "cursiva"
  • underline: Subraya el texto
  • strikethrough Crea una linea que pasa por la mitad del texto, estilo de texto tachado
  • removeformat : Elimina todos los formatos
  • formats: Muestra una lista de los formatos disponibles

sábado, 25 de junio de 2016

Tooltips en CSS



Para ver en Youtube haz click aquí (Recuerda Suscribirte)
Para ver en Youtube (segundo video) haz click aquí 
Para ver más videos de CSS click aquí
Dame like en facebook, click aquí


¿Que es un "Tooltip" ?

 Los tooltip son usados para mostrar información extra acerca de un elemento, justo cuando el usuario pasa el mouse por encima. Los podemos ver como una forma mas moderna del antiguo atributo "alt", para los que no lo saben, anteriormente este atributo nos permitía mostrar un texto cuando el usuario posaba el mouse encima, actualmente este atributo tiene otra funcionalidad totalmente diferente.

Tooltip de texto

  En el primer video (El segundo estará disponible mas tarde o mañana) les muestro como hacer un tooltip animado de texto, a continuación el código fuente :

La parte CSS :

<style type="text/css">
.tooltip {
background-color: black;
color: white;
padding : 5px;
position: absolute;
border-radius: 5px;
top: 15px;
visibility: hidden;
transition: opacity 1s, visibility 1s, top 1s;
opacity: 0;
}
.tooltip::after {
content: " ";
position: absolute;
top: 100%;
left: 50%;
border-style: solid;
border-width: 5px;
border-color: black transparent transparent transparent;
}
.txt:hover + .tooltip {
visibility: visible;
opacity: 1;
top: 10px;
}
</style>

El HTML:

<br>
<br>
<span class="txt">mi texto</span>
<div class="tooltip">
Información
</div>

  Las etiquetas <br> las coloco para que "mi texto" no quede muy arriba y poder colocar el tooltip arriba de este

Tooltip con imagenes

  En el segundo video, les enseño también a crear un toolttip, pero ahora este no esta compuesto de texto sino de imágenes.

EL CSS :

<style type="text/css">
.tooltip img{
width: 350px;
box-shadow: 5px 5px 10px black;
}
.nav {
list-style-type: none;
margin: 0;
padding: 0;
}
.tooltip {
position : absolute;
visibility: hidden;
opacity: 0;
transition : opacity 1s, visibility 1s;
}
.hori {
display: inline-block;
}
.hori a{
display: block;
padding: 8px;
color: white;
background-color: gray;
text-decoration: none;
}
.hori:hover a{
background-color: black;
}
.hori:hover .tooltip{
visibility: visible;
opacity: 1;
}
</style>

El html :

<ul class="nav">
<li class="hori">
<a href="#">Cuzco</a>
<div class="tooltip">
<img src="Cuzco.jpg" />
</div>
</li>

<li class="hori">
<a href="#">Louvre</a>
<div class="tooltip">
<img src="Louvre.jpg" />
</div>
</li>

<li class="hori">
<a href="#">El puente de la torre</a>
<div class="tooltip">
<img src="Puentetorre.jpg" />
</div>
</li>

<li class="hori">
<a href="#">Venecia</a>
<div class="tooltip">
<img src="Venecia.jpg" />
</div>
</li>

</ul>

  
  Si te gustó este tutorial recuerda suscribirte a mi canal de Youtube y darme like en Facebook  

domingo, 19 de junio de 2016

Curso de Java Ejercicio 5: Pirámide de asteriscos


Para ver en youtube haz click aquí
Para ir al curso de java click aquí
Para ver mas ejercicios como este, haz click aquí
Para ir a mi canal de youtube click aquí (Recuerda Suscribirte)

   Acabas de ver un ejercicio simple pero interesante, en donde usando bucles logramos dibujar de forma automática una pirámide de asteriscos, se te invita a pensar la forma de hacerlo tu mismo, si tienes dificultades, a continuación te presento una pista.

La pista

  La clave para llevar a cabo este ejercicio esta en los bucles anidados, debes hacer un bucle for y dentro de este colocar un bucle while

El código fuente

  A continuación el enlace para que descargues el código fuente de este ejercicio:

Curso de Java Clase 6: Bucle For y bucles anidados


Para ver en youtube click aquí
Para ir a la lista de repoducción del curso click aquí
Para ir a la lista de reproducción de los ejercicios click aquí
Para ir a mi canal de youtube click aquí  (Recuerda suscribirte)

    Acabas de ver lo que es el bucle for, quizás te estés preguntando: ¿Que diferencia tiene con el bucle while? La respuesta corta es en esencia ninguna ya que todos los bucles hacen prácticamente lo mismo, pero al tener una sintaxis y una implementación diferente estos se pueden adaptar a situaciones diferentes, eres tú como programador el que decide que bucle se adapta mejor al código que estas escribiendo.

Números del 1 al 100

  En el video viste el siguiente ejemplo:
package clase6;

public class Clase6 {

    public static void main(String[] args) {
        for(int i=0; i<=10; i++){
           System.out.println(i);
        }
    }

}

For con dos condiciones

package clase6;

public class Clase6 {

    public static void main(String[] args) {
    int num = 0;
        for(int i=0; i<=10; i++){
           num++;
           if(num >= 10){
             System.out.print(i);
             num = 0;
           }
          System.out.println("");
        }
    }

}

Bucles anidados

  El siguiente ejemplo escribe un "cuadro" de números usando un bucle while, dentro de un bucle for
package clase6;

public class Clase6 {

    public static void main(String[] args) {
        for(int i=0; i<=10; i++){
            int num = 0;
            while(num <= 10){
                System.out.print(i);
                num++;
            }
            System.out.println("");
        }
    }

}

domingo, 12 de junio de 2016

Curso de Java Ejercicio #4 : Juego de Preguntas con bucle While


Para ver en Youtube click aquí
Para ir a mi canal click aquí
Para ir a la lista de reproducción del curso click aquí
Para ir a la lista de reproducción de los ejercicios click aquí


Lo que acabas de ver

  En el video que acabas de ver mas arriba, modificamos el juego del ejercicio 1, y le agregamos el bucle while, con esto podemos exigir una respuesta correcta y restar puntos cada vez que se responda mal
  El secreto para poder hacer el ejercicio es algo tan simple que solo ocupa el espacio de un caracter : "!" este signo de exclamación, en Java es un operador lógico de negación, lo que hace es invertir el valor de una condición, veamos el siguiente ejemplo
int num = 5;
if(num == 5){
   .....
}
  La condición dada arriba se va a ejecutar como verdadera, ya que obviamente lo es, veamos que ocurre si agregamos el operador de negación
int num = 5;
if(!num==5){
  .....
}
  En este caso no se va a ejecutar, ya que el operador de negación invierte su valor, ahora solo se va a ejecutar si la variable "num" tiene algún otro valor que no sea 5

  En nuestro juego de preguntas lo que necesitamos es colocar como condición "que la respuesta sea falsa" y eso lo hacemos con el operador de negación.

El código fuente

  Si quieres descargar el código fuente de este ejercicio haz click aquí


Curso de Java Ejercicio #3 : Test de primalidad


Para ver en youtube click aquí
Para ir a mi canal de Youtube has click aquí  (Recuerda hacer click en suscribirse)
Para ir a la lista de reproducción del curso click aquí
Para ir a la lista de reproducción de los ejercicios click aquí

Saber si un número es Primo

  En el video que acabas de ver te invito a que intentes crear un programa que detecte si un número es primo o no, para hacerlo necesitas conocer sobre los bucles "while", las sentencias de control "if" y los operadores de incremento y decremento, a continuación los enlaces a cada tema :
     En la clase anterior a este ejercicio, en la entrada correspondiente (el primer enlace en la lista de arriba), aprendimos acerca del operador de módulo, el cual se escribe con el símbolo de porcentaje (%) este operador permite calcular el resto de una división, por ejemplo las siguientes operaciones con el operador de módulo darían los siguientes resultados
10%3 = 1 ;  5%2 = 1  15%4=3

  Este operador es la clave para resolver este ejercicio, ya que una operación con un número, usando este operador, solo va a dar 0, cuando es primo, si el otro operando es el mismo número o uno (1). Por lo que el ejercicio consiste en hacer un bucle que "pruebe" todos los números menores hasta llegar a uno y buscar bajo que números es divisible.

Código Fuente

  Para descargar el código fuente del ejercicio has click aquí


  

domingo, 5 de junio de 2016

Curso de Java clase 4 : Las sentencias de Control parte 2


Break y Default necesarias pero no imprescindibles

   Como acabamos de ver, un "switch", nos permite ejecutar diferentes acciones que dependen del valor de la variable que evaluemos, las palabras reservadas "switch" y "case" son imprescindibles para la construcción de la sentencia. Pero nos encontramos con dos palabras que son opcionales : "break" y "default" ¿que pasa si no las usamos? La primera hace que nuestro código se ejecute de forma mas eficiente, al parar la ejecución una vez que la condición se cumple, si quitamos el "break" se van a evaluar todas las condiciones independientemente si ya se encontró la condición "verdadera" o no, con lo que se pierde tiempo y memoria, en una aplicación tan pequeña como la que construimos en esta clase eso podría no importar mucho, pero en aplicaciones complejas tenemos que tener esto en cuenta.
   La otra palabra reservada opcional es "default", en el ejemplo que vimos en el video pareciera imposible no usarla, ya que si nuestro IDE detecta algún error no nos va a dejar compilar, pero no es así, el uso del "default" evita ejecuciones inesperadas del código.

Calculadora de consola

   En el ejercicio 2 del curso hicimos una calculadora de consola usando la sentencia "if", en el enlace a continuación puedes ver el código fuente de ese ejercicio
  Ahora hacemos exactamente el mismo programa, pero usando la sentencia "switch", probablemente te estarás preguntando ¿Hay alguna diferencia entre hacerlo de una u otra forma? Ciertamente en el mundo de la programación hay no una sino mil formas de escribir un algoritmo, y no siempre es válido decir que una forma es mejor que la otra; sin embargo es importante mencionar que el programa hecho con "switch" es un poco mas eficiente gracias al "break". A continuación el enlace al código fuente del programa hecho en la clase :