Sabias que los literales enteros en Java por defecto son compilados como int

Este es el primer post de la nueva categoría que he denominado «Sabias que…», donde les iré contando cosas que me resultan curiosas e interesantes  sin que por eso no dejen de ser algunas veces «triviales», en esta oportunidad les contare algo que algunos puede que desconozcan e incluso puede que llegue a serles útil en el caso de buscar certificarse.

Sin más preámbulos, así como dice el titulo, por defecto todos los literales enteros que declaremos en nuestro programa Java, serán compilados como int (entero). Lo demostrare mediante el siguiente ejemplo, que consistirá de una función que validará el rango de un número entero. Realmente es un ejemplo sencillo pero que cumple con el objetivo del post. A continuación el código.

Si compilan el código mostrado anteriormente, les aparecería el mensaje

Si hacen uso del IDE Eclipse les aparecería el mensaje «The literal 9999999999 of type int is out of range».

Es un error de compilación que se resuelve sencillamente agregando la letra «L», al literal quedando de esta manera 9999999999L.

Como pueden ver es algo muy sencillo, incluso para algunos será trivial pero les aseguro que en una prueba de certificación mas de uno de seguro se equivocaría y diría que el código se compila perfectamente, asumiendo un cast automático.

Si deseas compartir con nosotros eso que te parece interesante y/o curioso, no dudes en hacerlo, así todos aprenderemos.

Cambiar estilos en tu tema de blog wordpress

Tienes problemas con los estilos de tu blog wordpress y deseas cambiarlos, si es ese el caso, no te preocupes a continuación te mostrare una solución sencilla.

Primero que nada, no cambies directamente los estilos en el tema de tu blog, ya que si posteriormente actualizas la versión del tema, puede que pierdas los cambios realizados. La solución esta en crear un tema hijo (child theme) a partir de un tema de tu preferencia que hayas seleccionado para tu blog.

Para crear un tema hijo, debes seguir los siguientes pasos:
– Dentro de tu carpeta wp-content/themes, crea una carpeta con el nombre que pensaras darle a tu nuevo tema.
– Dentro de la carpeta de tu nuevo tema, crea un fichero style.css. Lo minimo necesario que ha de tener este fichero es lo siguiente

IMPORTANTE: Los campos «Theme Name» y «Template», no los dejes vacíos. A continuación una breve explicación de los campos

  • Theme Name:  se utiliza para especificar el nombre del nuevo tema (hijo) que estas creando.
  • Theme URI: Sitio web del tema.
  • Description: Descripción del nuevo tema (hijo) a crear.
  • Author: Autor del nuevo tema.
  • Author URI: Sitio web del autor del tema
  • Template: Tema padre desde el cual estamos heredando estilos.
  • Version: Versión del tema a crear.

Por ultimo se puede notar la sentencia «@import url(«../twentyeleven/style.css»);», aquí lo que se hace es importar el fichero de estilos del tema padre.

Cualquier estilo que deseas modificar o añadir, sencillamente agregalo al fichero style.css del nuevo tema a crear (ver ejemplo mas abajo).

Por ultimo indicarles que el funcionamiento será de la siguiente manera, para todos los estilos encontrados, se seleccionarán los estilos especificados en el nuevo fichero style.css del nuevo tema (hijo) creado, en caso de no encontrarlo, hará uso del estilo presente en el fichero style.css del tema padre. En caso de necesitar una personalización más profunda del nuevo tema, se puede crear el fichero functions.php en el nuevo tema y también se podrán añadir ficheros php y su funcionamiento será semejante al de los estilos, en caso de invocar un fichero .php tendrán prioridad los presentes en el tema hijo, en caso de no existir se utilizará el fichero presente en el tema padre.

Finalmente aquí les dejo el fichero (completo) style.css de mi nuevo tema.

Comunicación serial java y arduino

Voy a mostrarles a continuación un sencillo ejemplo de interacción y comunicación vía Serial con una placa Arduino (one). Tengo aproximadamente un mes jugando con mi arduino one y confirmo lo que me habían contado, «es sencillamente emocionante ver que haces encender y apagar un LED», como me comento una amiga «es un juego para adultos», no me queda mas que reirme y aceptar que en mi caso es así y disfruto del poco tiempo que he podido dedicarme a hacer ejemplos.

Ha sido de esta manera, haciendo ejemplos del libro Getting Started with Arduino y leyendo por internet que me nació el gusanillo (curiosidad) por hacer un sencillo ejemplo pero donde en vez de comunicar los lenguajes Processing y Arduino, lo hiciera usando Java, C o C++ (estos 2 últimos espero poder hacerlos y de ser posible publicarlos mas adelante). ¿Con qué finalidad? además de aprender, sencillamente poder gozar de las bondades y herramientas que nos ofrece el trabajar con los lenguajes anteriormente mencionados.

Ahora si vamos al grano, primero indicare los componentes utilizados:

  • 1 Placa arduino one
  • 1 bombillo LED
  • 1 cable usb AM/BM (para cargar programa arduino)

La conexión es muy sencilla, consiste únicamente de colocar el LED (la pata mas larga) en el pin 13 y la otra pata en GND (tierra).

Una vez, hecho esto pasamos a hacer el sketch Arduino.

Compilamos el sketch y lo cargamos en la placa Arduino. Cargado el sketch, procedemos entonces con el programa Java. Para poder conectarnos con la placa arduino será necesario que tengamos la biblioteca RXTX (una biblioteca semejante a la Java Communications API extension), esta biblioteca posee los jar necesarios para poder establecer comunicación vía serial con la placa. La instalación dependerá del sistema operativo que utilicen, así que les recomiendo seguir los pasos de instalación indicados en el fichero README de la versión de la biblioteca (así sea la versión con los binarios o los fuentes) que se descarguen, o en el sitio web en la sección de instalación.

Una vez descargada e instalada la biblioteca RXTX, seguimos con nuestro programa Java, que consistirá unicamente de una interfaz grafica sencilla (un JFrame) con 2 botones para encender o apagar el LED.

Aqui les dejo el código fuente java:

NOTA: Tener en cuenta que para programar en Java podremos usar el IDE de nuestra preferencia, en mi caso he utilizado Eclipse. [Actualización] En el código Java no olvidar editar la constante PORT_NAME e indicar el puerto que utilicen[/Actualización]

Para compilar escribir en consola:
javac -classpath path_instalacion_biblioteca/RXTXcomm.jar:. JPanelTurnOnOffLED.java

Después de haber compilado nuestro programa Java, procedemos a ejecutarlo, de la siguiente manera:

java -Djava.library.path=. -cp path_instalacion_biblioteca/RXTXcomm.jar:. JPanelTurnOnOffLED

path_instalacion_biblioteca: Ruta de instalación de la biblioteca, es decir, donde estarán alojados los jar.

Voilà!!!, ya deberíamos poder visualizar el JFrame con sus respectivos botones de encendido y apagado. Así que, ¿qué esperas? empieza ya a encender y apagar tu LED.

Recomendación: En el libro Getting Started with Arduino, nos sugieren que en caso de mantener el LED mucho tiempo encendido usar una resistencia de 270 ohm, en cuyo caso necesitaríamos adicionalmente para hacer nuestro ejemplo una breadboard y par de cables.

Puntos importantes a tener en cuenta para usuarios Mac OS X (snow leopard)

– Si colocas (copiar con el comando sudo) la biblioteca RXTX en /Library/Java/Extensions, nuestro programa java podrá ser compilado y ejecutado de la siguiente manera:

javac JPanelTurnOnOffLED.java

java JPanelTurnOnOffLED

Aunque esta quizás no es la forma más recomendada en caso de que se llegase a trabajar con distintas versiones de la biblioteca, ya que en ese caso lo adecuado sería tener una instalación para cada versión y compilar y ejecutar nuestro programa Java de la manera indicada en un principio para poder indicarle al compilador y a la maquina virtual con que versión de la biblioteca estamos trabajando.

– Puede que te sea necesario al momento de ejecutar el programa Java indicar que se ejecute en 32 bits, si obtienes una exception similar a la que te muestro a continuación

«java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib: no suitable image found. Did find: /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver»

Lo que implicará que tengamos que añadir un argumento a nuestro comando de ejecución , quedando de la siguiente manera

java -d32 JPanelTurnOnOffLED

– Ir a la carpeta /var/lock (si no existe, crearla) y otorgarle permisos de escritura al o los usuarios que vayan a ejecutar el programa, esto podrás hacerlo desde el finder o por linea de comandos con el comando chmod.

Conclusión

Cada día que pasa y me involucro más con mi nuevo hobbie, me fascino con su versatilidad, pues además de ser una arquitectura abierta, nos permite interactuar con una gran gama de lenguajes de programación entre los que les puedo mencionar C, C++, Java, Objective-C, entre otros, de una gran lista, lo cual como les dije antes, nos permite gozar de las bondades (ventajas) de un lenguaje o plataforma de software, como lo es en este caso Java, ya que podríamos aprovechar el gran numero de bibliotecas existentes, así como también de su variedad de frameworks (que son unos cuantos). Este ejemplo ha resultado interesante para mi, ya que además de lo mencionado anteriormente, es un ejemplo que podemos extrapolar a algo mas complejo, es decir, podemos imaginar que en vez de ser 2 botones, podemos crear una interfaz mas compleja con unos 5 o 6 botones y cada uno de ellos con una instrucción distinta, que nos permita por ejemplo dado el botón pulsado, ver en una pantalla, la temperatura, posicionamiento global, etc…, o incluso controlar un servomotor.

En fin, como comente en un post anterior, aquí el limite es nuestra imaginación y mas aun cuando podemos interactuar con una variedad de lenguajes, lo que no resulta en un impedimento el no saber Processing, pues si tu fuerte es Perl, Python o Java, no importa, puedes empezar a programar ya!!!.

Video de la aplicación Java en ejecución

Todos los caminos conducen a … Arduino

El dia de ayer recibí mi regalo de Navidad, mi arduino starter kit y su respectivo manual de iniciación, vari@s amig@s me preguntaron ¿Qué es arduino?, ¿Y para qué es eso? Entre otras cosas y pues sus interrogantes además de la emoción de mi nuevo kit me han motivado a escribir este post para arrojar una idea para aquellos que desconocen de que se trata o que al igual que yo están iniciandose en este mundo.

Definición: Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores, además de poder comunicarse con otros componentes, como pueden ser un ordenador u otra placa arduino, es decir que con una tarjeta arduino, un programa cargado en el microcontralador de la tarjeta además de algún sensor podemos obtener información y en base a la misma llevar a cabo una accion, como podría ser procesarla, guardarla en BD, compartirla mediante un servidor web, controlar algun dispositivo o simplemente apagar o encender una luz.

Ahora bien de donde surgió este interés por Arduino, pues resulta que a un familiar unos vándalos le ensuciaron el auto y pues conversando con este pariente, analizamos que alternativas teníamos para poder determinar quienes eran los autores de la fechoría en caso de un nuevo intento de vandalismo, pensamos en cámaras espias, cámaras web, pero indagando por la web, salió una mención a Arduino y pues ese fue el detonante de todo, pues mi familiar empezó a investigar de esta arquitectura y se dio cuenta del gran abanico de posibilidades a desarrollar/construir con esta arquitectura, él luego me lo comento y me contagio, por si acaso se quedaron con la duda, pues «si que se puede» construir algo para recabar pruebas que impliquen a unos vándalos, ya que con una tarjeta Arduino, una cámara y un sensor de movimiento ya puedes empezar a captar video. Casos como el que les acabo de contar he leído ya en la web que terminan siendo un proyecto personal inspirado por circunstancias no muy agradables, pero es que las ventajas de Arduino no terminan allí, sino que también se puede programar en distintos lenguajes, entre los que les puedo comentar, Java, C/C++, Objetive C, entre otros, es decir, lenguajes punteros hoy en día, además de lo anteriormente comentado es una arquitectura «barata» que incluso puedes hasta construirla por ti mismo, recuerden es una «arquitectura abierta».

Qué mas podríamos hacer con Arduino, además del ejemplo detallado anteriormente?

Pues entre las cosas que se me ocurren y he leido les puedo mencionar:

  • Un sistema que te avise vía sms o email cuando te ha llegado correo al buzón de tu casa.
  • Imagina una pantalla LED al estilo Times Square (mucho mas humilde claro) los tweets donde eres mencionado.
  • Montar una aplicación web donde puedas visualizar y controlar la temperatura de tu hogar encendiendo y apagado de la calefacción para regular la temperatura.
  • manejar un carro a control remoto pero desde tu iPhone, Andriod o incluso Blackberry.
  • Construir tu propio sistema de vigilancia casera, con sus respectivas cámaras, sensores de movimiento, etc.
  • Con fines didácticos incluso llegar a construir un robot simple.

En fin como ya se pueden ir imaginando el limite es nuestra imaginación, y la versatilidad y sencillez que nos da esta arquitectura la hacen una herramienta muy útil al momento de abordar un proyecto (dependiendo de las características del mismo), lo que hace que si un proyecto personal requiera de características como conectividad, uso de sensores, servomotores, etc… Arduino muy probablemente sea tu solución, es fin, todos los caminos te llevarán a Arduino.

Espero muy pronto irles contando mis anecdotas con esta arquitectura, ya que como me han comentado la emoción de controlar y encender tu primer bombillo LED es casi una experiencia religiosa. A continuación les dejo unos enlaces de interés:


iPad y la copa América 2011

Después de mucho tiempo alejado del blog (por motivos laborales) vuelvo para hacer una pequeña entrada, motivado por varias cosas entre ellas el empate de la vinotinto (para quien no lo sepa es como se le denomina al equipo de fútbol de Venezuela) ante Brasil. Ustedes se preguntaran ¿qué tiene que ver la copa América de fútbol con un blog que supuestamente habla de tecnología?

Para quien aun no lo sepa la copa América de fútbol esta siendo transmitida por youtube (streaming) por el siguiente canal www.youtube.com/copaamerica, es por dicho canal donde he podido visualizar par de juegos (incluido el de la vinotinto), hasta aquí nada nuevo, si no es por el hecho que lo he visto en la comodidad de mi casa con mi TV y con una calidad de imagen espectacular y como he podido lograr eso, pues utilizando mi iPad2 como centro multimedia conectado a mi televisor con el digital AV adapter y un cable HDMI, por supuesto hay que tener en cuenta que gozo con una conexión a Internet con un ancho de banda que lo definiré como decente (6 Mbps). ¿Cual ha sido el resultado? Sencillamente disfrutar de unos partidos con una calidad de imagen fantástica sin temor a equivocarme con una resolución igual a las trasmisiones digitales de los canales que emiten su imagen en HD.

Una vez más he podido percibir en carne propia la versatilidad del iPad en el día a día, a su vez no esta demás agradecer a la organización de la copa América 2011 por llevar esta magnifica fiesta del fútbol a todo el mundo adaptándose a las nuevas tecnologías.

Aqui les dejo algunas imagenes tomadas del iPad.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies