About Clayder Alejandro Gonzalez Cadenillas

http://ifxperu.com

Informático por vocacion. Empecé programando en visual basic a los 12 años, no me gusto. En la universidad vi mas a fondo el lenguaje de programacion Java y luego mi curiosidad me llevo a aprender C++, C y luego lenguaje ensamblador. Soy un apasionado por los lenguajes de programacion, lo que ultimamente me ha llevado a la teoria de lenguajes formales, tambien soy un aficionado de los microcontroladores PIC y me gusta ver a fondo la arquitectura del computador. Mi lema es: "Quieres optimizar tu codigo?. Programa en lenguaje ensamblador!!"

Posts by Clayder Alejandro Gonzalez Cadenillas:

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 …

Auto R/C + Voz + LPT

Bueno gente, por ahora ando queriendo mejorar el proyecto del brazo robot. Esta vez tendrá más funcionalidades, por lo que nos dividimos el trabajo con un compañero de la universidad y pues en el transcurso de mi semana de vacaciones que debió ser en realidad un mes (echémosle la culpa a intro*) ando buscando que cosas ponerle. En esa búsqueda denuevo volví con el bendito ADC0804 y mi fiel amigo el puerto paralelo u_U. Lo que hice esta vez es hacer que el auto a control remoto avance con una orden de voz que yo le doy por el micrófono electret, bueno, el procesamiento de la voz está hecha -como diría will- de una manera muy cutre, pues solo metí los bits leidos desde el puerto paralelo en una lista enlazada y luego comparé los rangos de cada nodo de la lista enlazada además del tamaño de la lista. Grabé un videíto pa’ que se den una idea de lo que hice, cuando mejore el algoritmo del procesamiento de voz, postearé como lo hice paso por paso, aunque a decir verdad usé cosas que ya posteado con anterioridad, como ese post de encender un led por voz. En realidad es lo mismo, solo que ahora proceso esa voz con mi algoritmo cutre =P.

*intro = Introducción a la arquitectura de computadoras

Controlando Auto R/C por el puerto paralelo – detalles

Bueno, como para darle el dinamismo perdido en el blog, voy a postear lo que me pidieron que explique en un par de comentarios sobre el auto r/c y su control por el puerto paralelo. Como puse en esos comentarios, no es nada del otro mundo, es mas, es sencillísimo, y como dicen que una imagen vale más que mil palabras pondré fotos y los pasos a seguir para hacer lo mismo con cualquier auto a r/c.

Pasos:

Desarmar el control remoto del auto y examinar la placa impresa.

Figura 1

Primero, las rayitas azules indican que desde la otra vista de la foto, es el mismo componente (interruptor), los puntos verdes son las partes del circuito que están abiertas y esperan ser cerradas por el interruptor, osea se cerraran cuando se presión las partes sombreadas del componente de color plomo al que señala la flecha roja.

Figura 2

Ahora, pueden ver el interruptor del otro lado y guiándonos de la vista anterior, nos podemos dar cuenta que por todo el interruptor señalado (porque hay otro en la parte superior derecha), está pasando la corriente correspondiente a V-, eso lo podemos comprobar rápidamente con un voltímetro, ya que se ponemos el terminal positivo al V+ y el otro al interruptor cerrado vamos a ver cómo nos marca bien el voltaje de la batería por la cual está siendo alimentado el control.

Luego, sabemos que el V- es un 0 lógico, por lo que si queremos que el carro avance sin presionar cerrar el interruptor, pues solo debemos mandar un 0 lógico desde la pc, en este caso por el puerto paralelo. Entonces si usamos el registro 0×378 y suponiendo que enviamos el dato por el pin 2, el código para que el carro avance seria 11111110, ya que el pin 2 vendría a ser el 0, la cual es la señal necesaria para que el auto avance; esto en hexadecimal se vería así: 0xFE.

Finalmente, el puerto paralelo entrega algo de 3.3 V y nosotros necesitamos el voltaje de la batería del control remoto, por lo que simplemente yo usé un L293B para amplificar la señal, la salida del las cada una de las 4 salidas del L293B serán asignadas a los interruptores, osea uno para cada instrucción AVANZAR, RETROCEDER, IZQUIERDA y DERECHA. Aquí solo pondré una foto de cómo sería para el código de AVANZAR osea 0xFE por el pin 2 del conector db25 del lpt.

Figura 3

El cable azul: CONTROL AUTO, es el mismo cable azul que sale del punto verde del circuito de la Figura 1 y bueno el código del programa en java esta en el post original en http://ifxperu.com/2010/01/jugando-con-mi-auto-rc/

Son la 01:02 de la mañana y creo eso es todo por ahora, espero postear más seguido, lo que pasa es que me da pereza escribir =P.

Saludos.

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

Aplicando overwriting en componentes swing

Si hablamos de programación orientada a objetos, pues tambien tenemos que hablar de polimorfismo. El polimorfismo se podría dividir concretamente en dos sustantivos: sobreescritura (overwriting) y sobrecarga (overriding) de métodos, los cuales forman parte importante en la implementación del api del j2se.

Estos dos conceptos no son muy dificiles de entender, sin embargo, el ver la puesta en escena de estos conceptos se da casi siempre en nuestras propias clases, lo cual es sencillo ya que para nosotros nuestra clase es una caja blanca la cual podemos ver claramente. Lo que voy a mostrar ahora, es como aplicar la sobreescritura de métodos en la API del J2SE y para hacerlo aun mas grafico, lo aplicaré sobre la clase JFrame, la cual es una ventana de las normales que todos podemos ver.

A continuación pondré el código del programa:

Seguir leyendo …

Algunos videos de COMO SE HACE…? en informática

Como a principio de ciclo me habían dejado el buscar videos de como es el mecanismo de escritura y lectura en algunos dispositivos de almacenamiento, buscando por youtube me encontré videos muy interesantes sobre esto, los cuales en estos momentos procederé a compartir (son cortos):

CD-ROM

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 …

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.