Clayder
My academic performance
Mar 7
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.
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…
Mar 7
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.
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
Feb 27
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.
Prendiendo un led con un sonido
Ene 29
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.
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:
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.
Tabla de multiplicar del 9 [Post Borrado por no sacar backups]
Ene 17
En el transcurrir del blog se han borrado varios posts. Uno de ellos es este, en el cual como que juego un poco con la tabla de multiplicar del 9. Esto lo hice originalmente cuando estaba en la academia y bueno, hasta ahora no le encontré ninguna utilidad, en realidad se me cruzo por la cabeza mezclarlo con el algoritmo de booth que sirve para multiplicar a nivel de bits, pero por ahora lo pondré tal cual lo escribí en mi adolescencia =D.
Si se fijan bien, la tabla de multiplicar del 9 tiene algunas particularidades, si es que la dividimos en subtablas que irían del 1 al 10, del 11 al 20, del 21 al 30 and so on =P. Gráficamente me refiero a esto:
|
Tabla 1 |
Tabla 2 |
Tabla 3 |
Tabla 4 |
Tabla 5 |
|||||||||||||||||||||
|
1° |
x |
1 |
= |
9 |
x |
11 |
= |
99 |
x |
21 |
= |
189 |
x |
31 |
= |
279 |
x |
41 |
= |
369 |
… |
||||
|
2° |
x |
2 |
= |
18 |
x |
12 |
= |
108 |
x |
22 |
= |
198 |
x |
32 |
= |
288 |
x |
42 |
= |
378 |
… |
||||
|
3° |
x |
3 |
= |
27 |
x |
13 |
= |
117 |
x |
23 |
= |
207 |
x |
33 |
= |
297 |
x |
43 |
= |
387 |
… |
||||
|
4° |
x |
4 |
= |
36 |
x |
14 |
= |
126 |
x |
24 |
= |
216 |
x |
34 |
= |
306 |
x |
44 |
= |
396 |
… |
||||
|
5° |
x |
5 |
= |
45 |
x |
15 |
= |
135 |
x |
25 |
= |
225 |
x |
35 |
= |
315 |
x |
45 |
= |
405 |
… |
||||
|
6° |
x |
6 |
= |
54 |
x |
16 |
= |
144 |
x |
26 |
= |
234 |
x |
36 |
= |
324 |
x |
46 |
= |
414 |
… |
||||
|
7° |
x |
7 |
= |
63 |
x |
17 |
= |
153 |
x |
27 |
= |
243 |
x |
37 |
= |
333 |
x |
47 |
= |
423 |
… |
||||
|
8° |
x |
8 |
= |
72 |
x |
18 |
= |
162 |
x |
28 |
= |
252 |
x |
38 |
= |
342 |
x |
48 |
= |
432 |
… |
||||
|
9° |
x |
9 |
= |
81 |
x |
19 |
= |
171 |
x |
29 |
= |
261 |
x |
39 |
= |
351 |
x |
49 |
= |
441 |
… |
||||
|
10° |
x |
10 |
= |
90 |
x |
20 |
= |
180 |
x |
30 |
= |
270 |
x |
40 |
= |
360 |
x |
50 |
= |
450 |
… |
||||
Si la tabla 1 la partimos por la mitad, cada producto va a tener su “reflejo”, el cual se va a formar de la inversión de los dos últimos digitos (por ahora) de la primera mitad de la tabla; asi pues el reflejo de 45 seria 54, el de 36, 63 y así sucesivamente.
Ahora, en la tabla 2 hay un problema, la posición 1 y 6 no cumple con nuestra regla; si obviamos estos elementos, la regla anterior se cumplirá de forma normal (excepción).
En la tabla 3 hay simetría, pero no de la misma forma de que en la tabla 1 pues el producto 1 y 2 forman su propio reflejo, teniendo que partir la tabla 2 veces.
En la tabla 4 las “excepciones” ahora están en la posición 2 y 7; es decir, 1 mas que en las excepciones de la tabla 2.
En la tabla 5 no hay excepciones, aun hay simetría, pero el “espejo” se sigue haciendo más grande.
Esas son mis observaciones y según yo, la tabla del 9 tiene una “regla de formación”.
1° Todos los productos de la tabla de multiplicar del 9 subdividiendolo como lo hice, depende de un producto anterior (eso sonó a lógica secuencial xD)
2° Las tablas se forman gráficamente de la siguiente manera:
####
#####
#####
#### 
Fig. 1 Fig. 2 Fig. 3 Fig. 4 Fig. 5
La figura 1, corresponde a la tabla 1 y 2, la figura 2 a la tabla 3 y 4, la figura 3 a la tabla 5 y 6, y así hasta llegar a la tabla 10, la cual iría del x 91 al x 100 (hay que tener en cuenta que las tablas pares tienen lo que yo llamo “excepciones”, las cuales no se deben tomar en cuenta para formar las relaciones simétricas). Además, las variaciones de las figuras de las relaciones se van formando cuando cambia el digito mas pegado a la izquierda del producto –MSB en electrónica digital xD, en este caso las centenas.
3° Las excepciones se forman en las tablas impares en las posiciones 1 y 6, las cuales van con progresión aritmética de 1 mientras avanza la tabla. Es decir tabla 2: 1 y 6; tabla 4: 3 y 7, etc. Otra forma de ver las excepciones –pero ya en el resultado- es que tienen dos dígitos contiguos iguales.
4° Estas relaciones van de la tabla 1 a la tabla 10, ósea del 9 x 1 hasta el 9 x 100. Desde el 9 x 101 hasta el 9 x200, podemos formar otras 10 tablas, en las cuales las reglas anteriores se repetirán nuevamente; y así podemos coger tablas de 10 en 10.
Como les dije al principio, aun no le encuentro utilidad a esto que se me ocurrió mientras mi mente divagaba en épocas de colegio xD. Lo más cercano que se me ocurre es plasmarlo en un lenguaje de programación y representar las tablas como arreglos y así poder obtener algunos de los resultados de los números que se multipliquen por 9 sin recurrir a la multiplicación convencional. Y como dije antes, esto me hizo recordar a la definición de lógica secuencial o quizás ecuaciones recurrentes (de las cuales solo se su nombre, por lo que –supongo- que tendré que leer mas si es quiero reafirmar lo que estoy diciendo).
Rex Editor en SoftPedia
Ene 13
Siguiendo la línea del post de hace algún tiempito atrás de Clayder, el del Editor de texto para programar java, hecho en java, hoy me tocó a mí postear la noticia (algo atrasada quizás) de que ha sido seleccionado tal programa en una famosa librería de software al consumidor como lo es Softpedia, en donde, seleccionan tu proyecto y luego de algunas pruebas lo publican como software que alguien más puede utilizar.

Felicitamos a Clayder! Por esta noticia!!!
Link al proyecto Rex Editor en Softpedia | Rex Editor
Jugando con mi auto R/C
Ene 11
Desde chibolo siempre me han gustado los autos a control remoto, sin embargo, nunca tuve uno. En la navidad pasada, se me dio por comprarme uno simple en radioshack y me salió un poco mas de 50 soles con baterías y todo.
Estuvimos jugando con el carrito toda la noche buena yo y mi primo de 12 años xD. Al día siguiente, ya me había aburrido un poco, así que se me dio por desarmar el control remoto para ver el circuito =P. Y pues –como no se mucho de electrónica- entendí solo el 10% del circuito, lo cual fue suficiente para poder darme cuenta que el auto se movía con la presión de 2 pares de interruptores.
Controlar puerto paralelo y puerto serie desde java
Dic 11
Controlar el puerto paralelo es bastante sencillo con algunas funciones que ya tienen predefinidos algunos compiladores de C++. Por ejemplo, turbo c++ trae outport() e inport() para acceder a diversas direcciones de puerto.
Lo que hice esta vez, fue simplemente linkear dichas funciones a java mediante el JNI (Java Native Interface). A continuación les adjuntaré el jar con la pequeña biblioteca que hice y también algunos ejemplos simples probados con un led, cualquier consulta ponerla aquí abajito =D.
Olvidaba algo importante para cuando el proyecto tenga mas de 1 clase y/o paquetes (sino no es necesario), que para que corran los programas sin ningún inconveniente se debe poner el método: Port.loadLibrary() en la primera línea del main de su programa (incluso pueden agregarlo en “agregar biblioteca” de netbeans) y claro poner los dlls visibles para los .class de su programa puedan encontrarlos. El dll que creé fue el Port.dll que esta en el jar y el otro es clbr18.dll que es propio del compilador que use que fue OpenWatcom. Claro todo esta en la carpeta “Examples” del rar que pondré aquí abajo =D.
NOTA: Otra opcion es poner los dlls Port.dll y clbr18.dll dentro de la carpeta bin de su JDK, que en mi caso es el siguiente: C:\Archivos de programa\Java\jdk1.6.0_16\bin. Aparte tambien hay muchas mas opciones para setear el java.library.path, solo estoy nombrando las -que a mi parecer- son mas comodas.
Libreria JAR + DLLs (para agregar a proyectos de Netbeans)
QVMT es la vida!!!
Dic 5
Hace ya unos meses Will me pasó que vea un video de youtube. Yo al principio no le hice mucho caso; sin embargo, ante tanta insistencia, terminé por ceder; y pues me puse a verlo. El resultado después de esto fue un total cague de risa, y es que en el video me encontré con situaciones muy familiares, como la de jugar play station, salir con tus amigos, y luego seguir jugando play station xD.
El video al que me referí en el párrafo anterior, pertenece a una serie de televisión (octubre del 2008) llamado “Que vida mas triste”. Pongo la fecha junto a la palabra “televisión”, ya que este programa empezó en el internet y en su pagina web alcanzó mas de 2 millones de visitas a inicios del 2008, pasando luego a formar parte de una serie de televisión que emite la sexta.
A decir verdad, el párrafo anterior es puro floro xD. Lo que si, la serie trata de dos amigos: borja y josebas y es sobre estos dos personajes de los que veremos meterse en problema y medio (mas que todo borja) en su quehacer diario. Lo gracioso de esto es que su vida se parece mucho a la vida de un geek, es decir, juegan playstation, entran al facebook, celulares, sms, etc. Es por esto que en algunos capítulos pasan cosas que normalmente suceden en mi entorno, por lo que, como diría borja: “a tomar por el culo!” que están obligados a verla.
La mayoría de veces yo la veo en youtube. Aquí uno de los capítulos que mas me gusto
.
y este es otro:
Mejor me quito, porque sino seguiré poniendo mas videos xD.
Encontrar la ruta del JDK
Nov 29
Encontrar la ruta del JDK es bastante simple. Solo tienen que ir al explorador de windows, archivos de programa, java, … mentira! es una broma xD. Bueno en el código también es bastante simple, solo que cuando lo empaquetas en un jar, en lugar de mostrarte la ruta del JDK te muestra la del JRE, lo cual yo no quería en el tiempo que hice esto, ya que necesita algunas herramientas del kit de desarrollo, como el compilador (javac).
Para solucionar este problema hice un pequeño método para que busque la ruta del jdk. Claro que no lo voy a hacer una búsqueda por todo el disco duro, sino que me basaré en el System.getProperty(“java.home”) y luego buscaré las diferentes versiones y actualizaciones, ya que por decir en mi pc tengo la siguiente version: jdk1.6.0_16 y bueno no es algo muy complicado, pero para mi me fue muy útil
.
Aquí esta el código:
Arquitectura para el próximo siglo [WTF]
Nov 20
Se dice que siempre que se nos cierra una puerta, hay otra que se nos abre… lo que si, solo espero que no sea esta la puerta que se abra.
Bueno, es verdad que a la puerta en la foto anterior le hace falta una escalera, pero yo me pregunto… ¿habrá una escalera que le haga falta una puerta? =O
Para que pregunte –_–
Un ingeniero…
Nov 3
Seguro que la mayoría ya ha leído esto, pero me pareció interesante el postearlo =P.![]()
Murió un Ingeniero y fue a las puertas del Cielo.
Sabido es que los Ingenieros por su honestidad siempre van al cielo…
- "Ajá!"… Buscaron en la puerta del cielo el archivo, pero últimamente andaban un poco desorganizados y no lo encontraron en el montón de papeles, así que le dijeron:
- "Lo lamento, no estás en las listas…"
El Ingeniero fue a la puerta del infierno, donde inmediatamente le dieron albergue y alojamiento.
Al poco tiempo el Ingeniero se cansó de padecer las miserias del infierno…
Threads: wait() y notify()
Oct 20
Como ya todos sabemos los hilos se usan para poder dividir las tareas que va a realizar nuestra aplicación. Si le asignamos un hilo a cada tarea, vamos a poder ser capaces de manejarlos a nuestro antojo, a diferencia de que si lo agrupáramos en métodos o clases, ya que la clase Thread y la interfaz Runnable de java nos permite controlar aun mas a fondo cada tarea. Por ejemplo, si tengo una tarea dentro de mi programa, que en cierto momento necesita parar por un rato y esperar a q termine otra tarea para que siga; o simplemente quiero darle prioridades a las tareas o tal ves ejecutarlas todas al mismo tiempo. Pues para todo esto -y otras cosas que aun no me entero =P- están los hilos.
Poner un ejemplo de un programa que use hilos es bastante sencillo, así que ahora –y para no olvidarme- me centraré en los métodos wait() y notify() de la clase Object. Según lo que estuve leyendo, entendí que los métodos wait() y notify() son la contraparte de los métodos suspend() y resume() de la clase Thread, los cuales están deprecados por estas razones.









Comentarios recientes