Informatrix

La clase Robot de Java

Hace tiempo, cuando recién empezaba a programar en Java, ví el nombre de esta clase Robot. A mi me pareció un nombre bastante atractivo, por lo que decidí ver en la documentación del API de Java para saber como usarla.

Yo tenía las sospechas de que seria algo bastante dificultoso de hacer, pero no fue así; solo sabiendo lo básico de la programación orientada a objetos fue necesario para poder hacer unos ejemplos.

Esta clase nos permite manejar mediante metodos las pulsaciones del teclado y del mouse e incluso añadirles un cierto delay(retardo), por lo que se me ocurrio jugarle una broma a mis amigos.

El código lo adjunto aquí en archivo rar que contiene el fuente .java, está un poco desordenado ya que no es un trabajo o algo por estilo, sino un programa que se me ocurrio hacer en mis tiempos de ocio para probar el funcionamiento de esta clase(^^’).

El fuente es un applet, por lo que no podran ejecutarlo así como así, ya que al acceder a metodos nativos del sistema(pulsaciones de teclado), necesito primero firmarlo, lo cual si les interesa lo pueden buscar en google o simplemente me lo hacen saber para responderles.

Además les dejo la url del applet ya subido a un hosting gratuito, en donde podran ver en funcionamiento la broma, la cual no hace mas que escribir algo en el bloc de notas y luego te reinicia la pc.

http://claydergc.webs.com/applet.htm

Como decía es necesario firmar el applet, por lo que por ser una broma les aparecerá que acepten que se ejecute el applet en su browser el cual esta con un nombre que no es mio, si mal no recuerdo el nombre que le puse fue “Juan”, para que mis amigos no sepan que fui yo.

Por lo demás no se preocupen, solo es una prueba del funcionamiento de la clase java.awt.Robot, lo unico si les recomiendo que guarden todo lo que esten haciendo porq les reiniará la pc; en todo caso eso pueden verlo en el codigo que adjunté si es que no deseean ejecutar el applet.

http://seccperu.org/files/PruebaRobot.rar

Bueno, espero les haya servido de algo este post.

Saludos.

Uso de la Notación Postfija en la diagonalización de matrices [ I ]

La notación postfija o notación polaca inversa (eso sonó a pose del kamasutra), es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Lukasiewicz, en donde cada operador está antes de sus operandos [Wikipedia].

Nosotros normalmente escribimos en la forma infija, es decir:

OPERANDO1 OPERADOR OPERANDO2

5                    +                2

La forma postfija consiste en poner el operador al final, lo que seria equivalente a:

OPERANDO1 OPERANDO2 OPERADOR

5                   2                 +

La notación postfija también puede ser representada en el recorrido en post-orden de un árbol binario que contenga de forma ordenada la expresión algebraica que estamos representando, es decir, si recorremos de la forma IZQUIERDA – DERECHA – RAIZ.

image

Seguir leyendo …

Communications of the ACM de marzo y abril

Para todos los entendidos en computación creo que es harto conocido la ACM, ya que esta asociación controla prácticamente todo lo que con computación tiene que ver. Bueno, la acm saca mensualmente varios revistas como por ejemplo el CROSSROADS o el COMMUNICATIONS of  the ACM.

En esta oportunidad solo quiero compartir la segunda revista en versión digital, de los meses de marzo y abril. Entre los artículos de la revista de marzo personalmente me gusto el articulo de “The Google File System” y de la revista de abril recomiendo el articulo de “Data-Structure Canon”.

Sin nada mas que decir pondré a continuación el link para que puedan bajarse las revistas en versión pdf.

Communications Marzo 2010

Communications Abril 2010

Tutorial Tortoise SVN + SourceForge

A ver, primero necesitamos tener una cuenta en: SourceForge.net posteriormente descargar el cliente de SVN, en este caso será Tortoise Tortoise SVN
Quienes conocen, saben de su gran utilidad, desde mi punto de vista, es un software que funciona al mismo estilo de un puente, conectando y compartiendo un proyecto de desarrollo de software para trabajar en equipo [valga la redundancia], si andas en la universidad, esta es una gran alternativa para solucionar el principal problema que tenemos trabajando por separado el mismo proyecto…
Bueno, sin más que agregar, vamos por el tutorial!
Seguir leyendo …

Flisol 2010 Trujillo Peru

El Festival Latinoamericano de Instalación de Software Libre (FLISoL) es el evento de difusión de Software Libre más grande en Latinoamérica. Se realiza desde el año 2005 y desde el 2008 se adoptó su realización el 4to Sábado de abril de cada año. Su principal objetivo es promover el uso del software libre, dando a conocer al público en general su filosofía, alcances, avances y desarrollo.

A tal fin, las diversas comunidades locales de software libre (en cada país/ciudad/localidad), organizan simultáneamente eventos en los que se instala, de manera gratuita y totalmente legal, software libre en las computadoras que llevan los asistentes. Además, en forma paralela, se ofrecen charlas, ponencias y talleres, sobre temáticas locales, nacionales y latinoamericanas en torno al Software Libre, en toda su gama de expresiones: artística, académica, empresarial y social.

Este evento está siendo organizado por la Universidad Nacional de Trujillo, aquí el mensaje que anda en su website

Seguir leyendo …

My academic performance

Yo no soy una persona muy estudiosa, ni tampoco soy muy inteligente; las cosas que hecho las he conseguido sacándome la mugre en lo que hacia, pero eso si, soy una persona completamente obsesiva, tanto es asi que si se mete en la cabeza hacer un robot que pueda pensar por si solo, no pararía hasta lograrlo, quizás este exagerando un poco pero es que las únicas veces que he sacado buenas notas en la universidad fueron cuando en realidad quise sacar buenas notas, las demás veces, pues simplemente soy un dejado, ya que si tengo –por ejemplo- tarea de matemáticas y se me antojo programar, pues simplemente programo y dejo la tarea para después.

image

Mi comportamiento obsesivo, a veces, como que no ayuda mucho, ya que mi otra obsesión es el ejercicio y mas específicamente las maquinas de gimnasio. Esto ultimo merma algunas veces mi rendimiento académico, y en especial en las noches que necesito energías extras para seguir estudiando. Generalmente en esas noches lo único que hago es dar una repasada rápida e irme a dormir, ya que mi cuerpo no da mas.

Otro factor que modifica mi normal desempeño académico es mi obsesión con las chicas y que parafraseando a mi primo se resumen en: “estas mas salado que calzoncillo de pescador”, lo cual estoy empezando a creer. Y es que me da tanta cólera fracasar cada que intento algo con alguna chica, que mis ganas de programar simplemente se van al carajo y pues solo salgo a caminar por ahí con Rex (mi perro), y ni que decir de las ganas de estudiar.

En resumen, soy una persona muy obsesiva, lo cual a veces juega a favor y/o en contra de mi rendimiento académico. Esto a veces llega a hacerme creer que soy la persona mas inteligente del mundo, o hasta llega a hacerme creer que soy la persona mas estúpida del mundo y con menos neuronas que otras. Parecerían estupideces, no?, pero para mi, mi comportamiento es un arma de doble filo.

Noches de programación…

La programación ha estado en mi vida desde que tengo 12 años. En esos tiempos recuerdo que programaba por placer, incluso no entendía mucho lo que hacía, pero no se como me ponía a modificar partes de programas pequeños ya hechos para acomodarlos a mi gusto.

frustration[1]Hoy en día, programar sigue siendo mi pasión, pero a diferencia de mi primera etapa como programador, se sumaron algoritmos mas complejos que programar, y los cuales debía terminar en poco tiempo. Presión!, es la palabra que odio, y que en estas dos ultimas semanas estuvieron en mi vocabulario diario. Generalmente cuando estoy presionado, me bloqueo completamente y creo que hasta me es difícil programar una suma de dos números; lo contrario sucede cuando programo por placer, ya que puedo apuntar, en un pequeño cuaderno que tengo, los errores que tengo para corregirlos mas adelante.

Finalmente, creo que debo aprender a lidiar con ello, ya que mi entorno estudiantil esta conformado por gente muy académica y competitiva, los cuales al mismo tiempo me incentivan a superarme mas, ya que cada vez que creo que he tocado techo con algún proyecto, las ganas de superarse de ellos mismos, me hacen ver que aun me falta mucho por aprender, muchos libros mas que leer, y –claro- muchas otras trasnochadas que pasar; y con respecto a la presión pues creo que hoobastank tiene la respuesta en una parte de la canción de The Reason: “It’s something I must live with everyday”

Apuntes de Java: Manejo de Excepciones

El manejo de excepciones es una de la características que mas robusto hace al lenguaje de programación java. Claro, que esto viene de su papá C++ y creo que actualmente también lo implementan lenguajes como Visual Basic.

Bueno, últimamente ando programando en java, c y c++, simultáneamente. Así que a veces se me cruzan los cables con ambos lenguajes. Lo que voy a postear ahora son errores que -creo yo- son comunes a la hora del manejo de excepciones, ya que cuando andaba programando, se me fueron esas nociones de las excepciones.

En realidad, tengo solo dos apuntes que hacer.

La primera: Tener cuidado con el NullPointerException y de como estas están programadas en la API del J2SE.

  • Como sabemos, la excepción NullPointerException es “tirada” cuando un objeto apunta a nulo (si queremos verlo desde el punto de vista de punteros de C).
  • Ahora, veamos un ejemplo de como funciona esto en el siguiente método.

Seguir leyendo …

Creando un sistema de blogs [PHP] [II]

Había comentado hace tiempo que estaba haciendo un sistema de blogs a punta de PHP, MySQL y full programación estructurada debido a querer investigar más acerca de este lenguaje, y pues como todo en mí, se salió de control al punto de tener mi propio blog personal -tan personal hasta la última línea de código- y bueno, quisiera compartir el código para quien lo necesite , lo quiera mejorar , lo quiera usar, lo quiera criticar, o que se yo; aclarando el que soy algo desordenado y quizás falta documentar bastante. La verdad programé bajo mi propio entendimiento y bueno, funciona no?… en algún futuro lo adecue a un formalismo quizás (ya saben, programación orientada a objetos, documentación, comentarios por doquier, tabulación de código , etc) pero por ahora quiero darme un descanso y de paso que lo uso a modo personal.

El blog funciona ya en perfecto estado, es decir, no hay huecos ni links rotos, ni formularios no validados. Creo que faltan dos o tres funcionalidades estando uno logueado en panel de control, pero son cosas que no se notan a “nivel cliente” donde todo parece funcional.

Seguir leyendo …

Prendiendo un led con un sonido

Esto que hice fue un pequeño experimento que hice para ver si podía convertir la entrada analógica de un sonido a una salida digital con el adc0804. La primera parte consiste en polarizar el micrófono electret, lo cual se puede conseguir con el siguiente circuito que encontré en Electronica Facil.

polarizacion microfono electret

En donde la salida output va a ser la entrada analógica Vin+ al adc0804. Si ponemos el terminal positivo de un voltímetro al output del micrófono electret, podremos ver como mientras vamos haciendo ruidos mas fuertes, va aumentando el voltaje en el multitester, esto varia en mili voltios para lo cual tenemos que regular el voltaje de referencia del adc. Yo lo regulé a un tamaño de paso igual a 20 mV, lo que me daba un voltaje de referencia de 5.1 voltios y por lo tanto un Vref/2 de 2.55 voltios.

Ahora, el resto del circuito es el mismo para sensar cualquier magnitud física que pueda variar en su tensión, tal como ya lo había hecho en otro post con el lm35, ahora pondré el diagrama circuital para que vean como armarlo:

diagrama circuital - mic

Por ahora solo estoy poniendo leds en las salidas del adc, pero si lo que quieren es mantener prendido un led, solo agréguenle un flip-flop D (74ls74) a alguno de los bits de las salidas del adc, lo cual podrían hacerlo de dos formas, la que hice yo fue la de conectar la entrada D y la entrada CLK del FF D al un mismo bit del adc, esto hará que cuando pase de 1 a 0 por el ruido pase lo mismo en el CLK y el Q’ pueda encenderse. La parte del circuito encerrado con rojo puede ser reemplazado por cualquier tipo de sensor, así como había hecho con el lm35.

Ahora pondré un video de como funciona el circuito de la segunda figura

Y este que es ya usando el flip-flop.