Heisenbugs, Bohrbug, Mandelbugs, Schroedinbugs

(8)

Parecen insultos pero no lo son. De los heisenbugs había oído hablar hace tiempo en ¿Joel on Software? ¿Coding Horror? El resto de estos pintorescos tipos de bugs no los conocía. Muy curiosos.

Heisenbugs

Un heisenbug es un bug que desaparece o altera su comportamiento al intentar depurarlo.

El nombre es un juego de palabras con el "Principio de Incertidumbre de Heisenberg", que erróneamente se suele identificar con el efecto observador, y que, este si, afirma que el simple hecho de observar un fenómeno puede cambiar su resultado (vaya, yo soy uno de estos que confundía ambos, ¿quizás por Jurassic Park?).

Una causa común de los heisenbugs es que al ejecutar un programa en modo de depuración a menudo se limpia la memoria antes de lanzar la ejecución.


Seguir leyendo Heisenbugs, Bohrbug, Mandelbugs, Schroedinbugs…

Aprende a pensar

(17)

Más de la mitad del tiempo que dedicas a un proyecto (sobre un 70% del tiempo) lo pasas pensando, y no existe herramienta, no importa lo avanzada que sea, que pueda pensar por ti. Como consecuencia, incluso si tuvieras una herramienta que lo hiciera todo por ti excepto pensar -- si escribiera el 100% del código, si escribiera el 100% de la documentación, diseñara y ejecutara el 100% de las pruebas, grabara los CD-ROMs, los metiera en sus cajas, y los mandara a los clientes -- el máximo incremento en productividad que podrías lograr sería del 30%. Para conseguir mejores resultados, lo que tienes que hacer es cambiar tu forma de pensar.

-- Fred Brooks (Autor de The Mythical Man-Month)

101 formas de saber que vuestro proyecto software está condenado al fracaso

(13)

Aquí tenéis algunas de las que más me han gustado en castellano. El resto lo podéis leer en inglés en Codesqueeze.

  • Tu jefe podría ser sustituido por un script de redirección de correo
  • Los jefes han renombrado el modelo de ciclo de vida en Cascada a Cascada Ágil
  • Comenzais a contratar consultores para poder culparlos
  • Los requisitos están escritos en una servilleta
  • Cada reunión de control comienza con la frase "¿Quieres las buenas noticias o las malas?"
  • Vuestro sistema de control de versiones consiste en una serie de carpetas en un disco compartido
  • El desarrollador web piensa que la X de XHTML viene de eXtremo.
  • Los desarrolladores utilizan el bloc de notas como IDE
  • Tu jefe se pasa la hora de la comida llorando en el coche (basado en hechos reales)
  • Los de ventas disminuyen tus estimaciones porque piensan que puedes trabajar más rápido
  • Los del turno de noche de Starbucks te conocen por tu nombre
  • Consideras romperte los dedos para obtener una baja
  • Empiezas a plantearte si trabajar dos turnos en el Pizza Hut será una mejor alternativa laboral
  • Los de la grua se llevan tu coche del aparcamiento porque pensaban que lo habías abandonado
  • "Ah, si, casi me olvidaba. Ehh, voy a necesitar que vengais el Domingo también… gracias"

GWT 1.4 RC

(3)

La release candidate de Google Web Toolkit (GWT) 1.4 ya está disponible para descargar.

Esta es la release más ambiciosa hasta la fecha, con más de 150 errores corregidos y un montón de nuevas características, mejoras y optimizaciones.

Seguir leyendo GWT 1.4 RC…

"No sabemos qué sistema operativo usa Dios, pero el Vaticano utiliza Linux"

(5)

Simplemente genial. Esa frase es parte de una entrevista a Judith Zoebelein, la monja webmaster del sitio web de la Santa Sede desde 1995, en The Scoble Show.

No es que la web esté muy bien construida (tablas para la presentación, sin texto alternativo en las imágenes, con etiquetas y nombres en mayúsculas, etiquetas sin cerrar…) pero la entrevista es bastante interesante.

Lo que no sabemos es la distribución que utilizan. Seguramente se trate de esta.

Vía meneame.

Hibernate

(27)

Usar JDBC es complejo y muy dependiente de la estructura de los datos. Sería más natural y mucho más sencillo trabajar directamente con objetos, pero es imposible con las BBDD relacionales, y las BBDD orientadas a objeto están todavía muy verdes.

La mejor opción entonces es utilizar un motor de persistencia, que es el componente software encargado de traducir entre objetos y registros. Un motor de persistencia de código abierto es Hibernate, que nos permitirá hacer cosas como poder guardar un objeto en la base de datos simplemente con session.save(miObjeto) o borrarlo con session.delete(miObjeto).

Seguir leyendo Hibernate…

JDBC

(4)

JDBC (Java Database Connectivity) es un API para trabajar con bases de datos desde Java, independientemente de la base de datos a la que accedemos.

A la hora de conectarnos a una base de datos usando JDBC usamos un driver intermedio, que no es más que una clase ofrecida por el vendedor que implementa la interfaz Driver. Cuando se crea una instancia de una de estas clases Driver, esta se registra con el DriverManager (gestor de drivers) que es la encargada de decidir qué driver se ha de utilizar para acceder a tal o cual BBDD. El driver para trabajar con bases de datos MySQL, por ejemplo, es com.mysql.jdbc.Driver.

Seguir leyendo JDBC…

Servlets

(6)

Los servlets son una tecnología hermana de los JSP, como ya comentamos en el artículo sobre estos últimos.

Un servlet no es más que una clase que implementa la interfaz Servlet (que se encuentra dentro del paquete javax.servlet, como todas las clases e interfaces que comentaremos) o que extiende de la clase GenericServlet, que proporciona una implementación por defecto para los métodos definidos en la primera. GenericServlet es independiente del protocolo utilizado, si nuestro servlet sólo va a usar HTTP podemos heredar de la clase HttpServlet.

Para escribir un servlet que extienda GenericServlet tendremos que sobre escribir el método abstracto service() y añadir ahí el código que queramos que se ejecute cuando se llame al servlet. En el caso de HttpServlet la implementación por defecto del método service comprueba si la petición recibida era de tipo POST (los parámetros se pasan en la cabecera del mensaje) o de tipo GET (los parámetros están en la URL, luego son visibles para todo el mundo), y llama a los métodos doPost o doGet dependiendo de esto.

Seguir leyendo Servlets…

JSP: JavaServer Pages

(7)

JSP (JavaServer Pages) es la tecnología de Sun para incluir contenido HTML dinámico generado con Java en páginas HTML estáticas; algo así como el equivalente Java a ASP y PHP.

Los JSP corren dentro de un producto software llamado "contenedor web" que les proporciona una serie de servicios y que está formado por un contenedor JSP y un contenedor de servlets. Un ejemplo de esta clase de aplicación podría ser Tomcat.

Los JSP están muy relacionados con los servlets, que no son más que clases que derivan de la clase GenericServlet y que cuentan con métodos en los que incluir código a ejecutar cuando les llegue una petición HTTP (doPost si es POST o doGet si es GET). Esta estrecha relación viene dada porque, en realidad, los JSP son transformados en servlets cuando accedemos a ellos por el motor JSP del contenedor web en el corren (el motor JSP de Tomcat se llama Jasper, por si a alguien le interesa).

Una página JSP podría tener un aspecto parecido al siguiente:

Seguir leyendo JSP: JavaServer Pages…

Página 1 de 212»