Clayder

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.

Tabla de multiplicar del 9 [Post Borrado por no sacar backups]

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

x

1

=

9

x

11

=

99

x

21

=

189

x

31

=

279

x

41

=

369

x

2

=

18

x

12

=

108

x

22

=

198

x

32

=

288

x

42

=

378

x

3

=

27

x

13

=

117

x

23

=

207

x

33

=

297

x

43

=

387

x

4

=

36

x

14

=

126

x

24

=

216

x

34

=

306

x

44

=

396

x

5

=

45

x

15

=

135

x

25

=

225

x

35

=

315

x

45

=

405

x

6

=

54

x

16

=

144

x

26

=

234

x

36

=

324

x

46

=

414

x

7

=

63

x

17

=

153

x

27

=

243

x

37

=

333

x

47

=

423

x

8

=

72

x

18

=

162

x

28

=

252

x

38

=

342

x

48

=

432

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

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

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.

P1050290

Seguir leyendo …

Controlar puerto paralelo desde java

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)

Libreria Jar+ Source Code + Ejemplos

Solo ejemplos

QVMT es la vida!!!

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 :D .

y este es otro:

Mejor me quito, porque sino seguiré poniendo mas videos xD.

Encontrar la ruta del JDK

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 :D .

Aquí esta el código:

Seguir leyendo …

Arquitectura para el próximo siglo [WTF]

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.

wtf1 

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

wtf2

Para que pregunte –_–

Un ingeniero…

Seguro que la mayoría ya ha leído esto, pero me pareció interesante el postearlo =P.ingeniero

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…

Seguir leyendo …