CODE: Aprende conceptos de programación jugando

En lightbot.com encontrarás un curso o juego didáctico para familiarizarse con algunos de los conceptos de programación como funciones y ciclos. Aunque el juego está dirigido a niños resulta bastante entretenido para adultos también. De hecho, el reto es completar todos los niveles en una hora.

La idea del juego es guiar al robot a través de un plano y marcar los lugares indicados.

LightBot

Si completas todos los niveles te dan un certificado bonito como el siguiente:

certificado-guzman6001

Enlace: http://lightbot.com/hour-of-code-2015-flash.html

Evitar un potencial NullPointerException en Java en comparaciones de String

A continuación un pequeño tip para evitar un potencial NullPointerException, una de las excepciones más comunes al momento de desarrollar en Java, además una de las más difíciles de rastrear.

Imaginemos que tenemos una clase Llama, tiene una función que devuelve un String llamada saySomething(), ahora supongamos que queremos saber si la llama dice “Ola k ase?”

A manera de ejercicio mental… ¿Cómo desarrollarías la comparación?

El modo más común a primera vista sería:

Llama.saySomething().equals(“Ola k ase?”)

Ejemplo:

if (Llama.saySomething().equals(“Ola k ase?”))
{
System.out.println(“La llama está saludando”);
}
else
{
System.out.println(“La llama no está saludando”);
}

Si la clase Llama es nula o la función saySomething() retorna null, se generará un NullPointerException… Pero con un pequeño cambio podemos evitar dicha excepción, de la siguiente manera:

if (“Ola k ase?”.equals(Llama.saySomething()))
{
System.out.println(“La llama está saludando”);
}
else
{
System.out.println(“La llama no está saludando”);
}

En este caso de prueba sí Llama.saySomething() es null no se generará una excepción sino que simplemente se ejecuta el código en el else.

#MAV-001: Casualidades [cltd y división en IA-32]

001-Casualidad

 

Bueno, esta es la primera tira de MIpS aventuras por la vIA-32 (MAV-32)… Y aunque el chiste sea bastante malo igual voy a explicarlo, probablemente sea instructivo para algún lector.

En principio es importante decir que la división siempre es una de esas operaciones aritméticas que suelen enredar un poco a los principiantes en lenguaje ensamblador IA-32, ya que, la división tiene varios procesos que son tácitos.

A continuación voy a explicarles un poco el proceso de división y el papel que juega la instrucción cltd.

En principio una operación típica de división tendría la siguiente forma:

cltd
idivl Divisor

Estas dos simples instrucciones hacen todo lo siguiente:

La instrucción cltd toma el valor del signo del registro %eax y lo extiende en el registro %edx. En otras palabras, el valor de 32 bits que tiene el %eax y lo convierte en un valor de 64 bits conformado por el %edx y el %eax. De hecho, cltd significa convert long (valor de 32 bits) to double (valor de 64 bits).

Dado que la representación de los registros es complemento a dos, el cltd coloca ceros si el número es positivo o unos (representación del -1 en complemento a dos) si el número es negativo (explicando así el chiste malo).

Advertencia: recuerda que luego del cltd se pierde cualquier valor que el %edx hubiera tenido.

Luego la instrucción idivl concatena %edx con %eax que lo representaremos [%edx:%eax] y lo divide entre lo que pases como divisor, por ejemplo %ebx. El cociente de la división es un valor entero que queda en el registro %eax y el resto o residuo queda en %edx.

Aumentar tamaño máximo de archivo para subir en PHP

tuxterminal_iconUsualmente plataformas como Moodle, Joomla o Drupal trabajan con una tamaño de subida máximo que es fijado por el servidor en el que están instalados.

Si tenemos acceso al servidor y queremos aumentar el tamaño máximo permitido para la subida de archivos se debe ubicar el archivo /etc/php5/php.ini (por lo menos en Debian/Ubuntu) y ajustar las variables:

upload_max_filesize y php_value post_max_size por valores acordes a tus necesidades.

Reiniciar Apache

Y listo =)

Instalar Java Oracle JDK en Ubuntu

Como probablemente sepan hace un par de años que ya no están disponibles las versiones oficiales de Java en los repositorios de Ubuntu. A continuación les dejo un modo bastante sencillo para instalar las versiones oficiales.

Paso 1) Agregar el repositorio

sudo add-apt-repository -y ppa:webupd8team/java

Paso 2) Actualizar la lista de paquetes

sudo apt-get update

Paso 3) Instalar la versión que queremos tener, ejemplo para la 7 sería

sudo apt-get install oracle-java7-installer

Pasos opcional) Establecerla como predeterminada

sudo apt-get install oracle-java7-set-default

Verificar la instalación

java -version

Fuente: http://tipsonubuntu.com/2015/03/21/install-oracle-java-9-in-ubuntu/

Lista de las version que podemos instalar:

  • oracle-java6-installer
  • oracle-java7-installer
  • oracle-java8-installer
  • oracle-java9-installer

Ver lista completa en: https://launchpad.net/~webupd8team/+archive/ubuntu/java

Adicionalmente si quieres cambiar en un futuro por alguna otra versión instalada se ejecuta el comando

sudo update-alternatives –config java

Fuente: http://askubuntu.com/questions/315646/update-java-alternatives-vs-update-alternatives-config-java

Extensión PHP cURL #Debian

Esta extensión es uno de los requisitos obligatorios para instalar sistemas algunos sistemas como Moodle. El principal propósito y uso para cURL es automatizar transferencias de archivos o secuencias de operaciones no supervisadas. Para instalarlo en servidores Debian Like (Ubuntu, Raspbian, etc.) se usa el comando:

apt-get install php5-curl

Un div con height 100% HTML y CSS

Supongamos que tenemos el siguiente escenario:
– Una barra lateral en un div llamado “menu”.
– Un div en el que se muestra el contenido llamado “principal”.
– Un div general que contiene a los dos elementos anteriores, llamado “contenedor”.

height-100

La tarea es que el div “menu” siempre tenga el 100% de alto. Dado que hacer simplemente height:100% no funciona hay que recurrir a otros trucos.

El truco es el siguiente:
Aplicaremos a la columna las propiedades de “margin-buttom” y “padding-bottom”. El margin es un margen exterior que no afecta el tamaño de la caja (aleja los elementos que están fuera del div) y el padding es un margen interior que se suma al tamaño de la caja (separa los elementos internos del borde del div). Teniendo en cuenta que “margin” acepta valores negativos, daremos este estilo a al div menu:

#menu
{
    float: left;
    padding-bottom: 30000px;
    margin-bottom: -30000px;
}

El padding empujará la columna, y el margin las va a volver a cuadrar en su sitio. Para que ésto funcione se necesita además aplicarle al contenedor lo siguiente:

#contenedor
{
    overflow: hidden;
}

De esta manera se ocultará todo lo que sobre. La columna irá creciendo a medida que crezca el contenedor.

fuente:
http://www.npicasso.com/blog/?p=65

SVG Masking – Ejemplo #CSS #HTML #JS

A  continuación un ejemplo bastante interesante de SVG Masking, prueba a pasar el cursor encima de la chica y observa el resultado.

See the Pen SVG Mask (Experiment) by Noel Delgado (@noeldelgado) on CodePen.

Configurar Netbeans con jBoss

1.- Descomprimir jBoss en la ubicación de su preferencia

2.- Ir a la pestaña Services.

3.- Click con el botón derecho en Server…

4.- Click en Add Server…

5.- Seleccionar jBoss Aplication Server

6.- Seleccionar la ubicación del jBoss (la ruta de la instalación)

7.- En este paso es importante colocar el puerto en el cual se corre las aplicaciones (Ej: 9080).

8.- Configurar el proyecto para que use el jBoss

a.- Click con el botón derecho en el proyecto y click en Propiedades.

b.- En la opción run configure el proyecto según sea apropiado para dicho proyecto (se recomienda desmarcar la opción Deploy on Save por razones de rendimiento).


By: @guzman6001

Contar cantidad de valores duplicados en un campo MySQL

Por ejemplo, hay un campo que debería ser único, pero la base de datos no tiene ninguna restricción o simplemente queremos saber cuantas apariciones tienen los distintos valores de un campo.

SELECT NOMBRE_CAMPO, COUNT(*) APARICIONES
FROM TABLA
GROUP BY NOMBRE_CAMPO
HAVING COUNT(*) > 1