Odio programar

Lo que pasa es que me gusta programar un poquito más de lo que lo odio. En el fondo es divertido resolver problemas, es bonito buscar una solución elegante, es satisfactorio encontrar esa solución…

Luego compilas y se acaba la satisfacción y empieza el odio. La solución es casi correcta, pero da pequeños fallos; no he contemplado todos los posibles errores; tengo algún fallo estúpido…

Ains… pero en el fondo, es divertido. Frustrantemente divertido. Curiosa situación.

Un ListBox y una relación n:m

Supongamos que tenemos una relación n:m facilita. Por ejemplo, series y los géneros de estas series. Digamos que tengo mi tabla de series con su clave primaria IdSeries, mi tabla de géneros con su clave IdGenero y la otra que tiene únicamente los campos IdSerie e IdGenero para hacer la relación. Digamos también que quiero mostrar los géneros de cada serie en un ListBox, que llamaremos lstGeneros. Y digamos, de paso, que quiero usar ese ListBox no sólo para mostrar los géneros de la serie, sino también para seleccionarlos en altas y modificaciones. Uhm, ya la cosa se complica.

Vayamos por partes: visualización. Esto es lo más fácil y hay opciones para todos los gustos. Por ejemplo, podría generar una vista en la base de datos que me englobase las tablas de género y «géneros de series» y montar un dataset tipado con la tabla de series, la vista y la relación entre ambas. De ahí a montar un maestro-detalle de tutorial, sólo que con un listbox en lugar de un datagridview, sólo hay un paso.

Sigue leyendo

Depurando

Estoy terminando una aplicacioncita para el curro. Lo de terminando es, más bien, pretencioso. Digamos que está alcanzando un «nivel operativo mínimo», que diría Ratchet: altas, bajas y modificaciones. Faltan las consultas y, sobre todo, que imprima. Pero, por lo pronto, da para ir pasando datos, que sin datos pocas consultas y pocos informes van a sacar. Así que ya tengo todo juntito y compila y… no funciona, claro. No funciona bien, vamos: no se bloquean las visitas cuando estoy dando de alta o modificando un cliente, me salta el error de validación de datos al pulsar el botón «Nuevo», la búsqueda rápida hace lo que quiere…

Así que estoy depurando el código. Revisa línea por línea, ejecuta línea a línea. Cambia de sitio alguna línea, revisa la inicialización de esta variable, rastrea de dónde sale esta reacción cruzada…

Y son sólo un puñado de líneas, dos o tres mil, más las que haya generado automáticamente VB. Hacer esto en un proyecto grande tiene que ser un infierno infernal.

En fin, menos mal que funciona y lo que falla son detallitos.

¿Qué camión?

Llevo ya un par de días (si las incidencias con el programa de las tiendas me deja) programando la aplicacioncita para fábrica, empezando por generar los datasets, una vez dejado de lado LINQ to SQL, y las clases de acceso a datos correspondientes. Me encuentro ahora con que tengo que almacenar el valor máximo de la columna timestamp de ésta o aquella tabla para usarlo al actualizar el dataset, tal y como conté (creo) antes.

He estado toda la mañana pensando dónde meter el dichoso array de Bytes que guarda el valor del timestamp: ¿en la clase de acceso a datos? ¿Cómo Static? ¿Shared? ¿En el formulario? ¿Otras (por favor, indique…)?

Después de perder bastante tiempo con esto, me paro, respiro hondo, miro el explorador de soluciones… y se me queda cara de imbécil. Y me digo:

«Niño, ¿sabes lo que estás viendo? Un dataset tipado. ¿Sabes quién lo ha hecho? Tú. ¿Sabes que puedes añadir código personalizado al dataset tipado? Eso lo tienes que saber, es básico. Lo sabes, ¿verdad? ¿VERDAD? Pues entonces, ¿qué coño has estado haciendo toda la mañana, animal de bellota?»

Diez minutos después tengo en la datatable correspondiente una nueva propiedad para el timestamp y todo funcionando.

A veces uno se obceca, o se distrae, y no ve lo evidente, lo simple o, directamente, el toro o el camión que tiene delante de sus narices.

No termino de entenderlo

Digamos que enciendo mi ordenador nuevo, veo que tiene Vista, veo que Vista no es igual que XP y las cosas no están donde antes y encima me pide permiso para instalar aplicaciones, así que, visto todo esto, apago el ordenador, maldigo a Bill Gates y digo que Vista es una mierda y que va a usarlo su…, por lo que intento instalar XP. No lo consigo, así que pregunto y pruebo Ubuntu. Es más distinto de XP que Vista, por lo que ando igual de perdido, pero en foros y blogs dicen que es mejor y más guay, así que persevero. Lo cuento a mis amistades, en foros y en blogs y todos me dan palmaditas en la espalda, me dicen que bien hecho, que tengo razón al decir que Vista es una mierda, soy popular entre las chicas y ligo más.

Pero, ¡ah, amigo!, pero si digo que después de un año usando Debian Etch como SO principal en casa (con KDE 3.5 porque Gnome siempre me ha parecido, y no digo que lo sea, tosco y anticuado), después de haber sobrevivido a todos los problemas derivados de usar una versión de prueba (incluyendo desastrosos cambios de versión de Xorg, sin quejas porque fueron culpa mía), después de todo esto, digo, decidí probar durante dos semanas el tan criticado Vista y, tras esas dos semanas, no he vuelto a Debian. Si digo eso a mis amistades, si lo cuento en foros y en blogs, soy un vendido a Microsoft, un maldito talibán sin criterio, un luser de la peor especie, un ignorante y un mentiroso porque si hubiera usado un Linux (cualquiera) de verdad jamás volvería a usar un Windows por propia voluntad (y menos Vista).

Mosaicos extendidos

Andaba ultimando la corrección de un capítulo, escuchando la 9ª de Dvořák y navegando por Internet cuando, al enchufar una memoria USB al Media Player se le han cruzado los cables con la sincronización de archivos y me ha cambiado la configuración de las vistas de Equipo. El porqué ha llegado a producir eso no lo sé ni lo entiendo, pero lo cierto es que de repente la vista «Mosaicos» ha quedado reemplazada por la vista «Mosaicos extendidos». Problema sumamente molesto, ya que esta vista no se organiza en varias columnas ni muestra el espacio ocupado/libre de la unidad.

Tras rascarme la cabeza, mirar unas cuantas opciones de configuración, quedarme mirando la pantalla con cara de perplejidad y acariciarme la perilla, pensativo, decido dar el siguiente paso: Google. A los quince minutos, todo solucionado.

La solución, aquí.

La amplío con lo siguiente: el filtro debe aplicarse al Path, entre todas las opciones posibles. El resto, tal y como se indica.

Desde aquí, las gracias al autor.

Al principio fue el Caos…

Lo cual no es malo. Siempre hay que empezar por algo. El problema, ¡ah, amigo!, el problema es cuando el Caos no ocurre al Principio, sino a Mitad, y si encima, la Mitad cae en viernes, ya ni te cuento.

Resulta que la empresa de las tiendas usa una aplicación web bastante genérica pero que cumple bien sus funciones: es barata, no requiere mantenimiento propio (cuando se decidieron por ella a mí no me habían contratado y ambos servidores llevaban más de tres años sin mantenimiento) y… eh… es barata. Después de más de un año trabajando con ella nos hemos acostumbrado y adaptado, pero el problema fundamental es obvio: pedidos, albaranes, facturación, datos de los proveedores y clientes… si se cae la aplicación, tenemos un problema, todo menos la contabilidad pasa por ahí.

Sigue leyendo

Nunca te acostarás sin saber algo nuevo

Yo no sabía que se pueden poner accesos directos a carpetas y aplicaciones en la columna de la derecha del menú Inicio de Windows XP. Tampoco sabía que cierto malware te mete mierda ahí. Bueno, esto tampoco es tan extraño porque yo cogí todo lo cogible con MS-DOS y Windows 95 (terminé del Barrotes hasta las narices), pero desde que me pasé a XP en el 2002 he mantenido limpito mi ordenador y los ordenadores con mierda que me ha tocado arreglar… bueno, tenían tanta que en cositas así ni me fijé.

Bueno, pues que es posible hacerlo (y que te lo hagan, si vas sin a lo loco) y también quitarlos, pero no es algo trivial. Y el maestro Souto se ha currado una explicación detallada en el foro y, antes de que se me olvide, me la anoto.

La explicación, aquí.

Otra cosa: he añadido a mi lista de blogs de lectura habitual el nuevo blog de RusS, Entre Clientes, Silicio y Café y retirado su viejo blog de Clientophitecus, ahora vacío. El equipo redactor de Quemando Cromo (o sea, yo y las dos manos con las que aporreo el teclado) le desea toda la suerte del mundo en esta nueva andadura.

Jugando con valores timestamp

Tengo abandonado el blog. Ambos blogs, de hecho. El arranque tras las (cortas) vacaciones veraniegas está siendo lento. A esto hay que añadir que, en el curro, lo único que he hecho desde que he vuelto es trabajo administrativo. Ahora me toca volver con CNC (Control Numérico Computerizado) porque hay que retocar el armario para la nueva serie. Entre medias, espero sacar tiempo para terminar una aplicación a la que me queda depurarla y empezar una nueva que llevo preparando (la parte teórica y la documentación previa) desde principios del verano.

Para esta segunda conseguí sacar un ratito la semana pasada para probar el uso de marcas de tiempo y de versión para controlar la modificación de registros en la base de datos, con el fin de controlar más fácilmente los problemas de concurrencia. Tras probar varias opciones y posibilidades, lo último ha sido trabajar con el tipo de datos TIMESTAMP de SQL. No tenía pensado sacar ninguna entrada de estas pruebas pero, en fin, así parece que el blog no está abandonado y quizás a alguien le resulte útil.

Sigue leyendo

¡Uno útil!

Esto es casi como encontrar vida en Marte. He encontrado un tip, truco, consejo o como queráis llamarlo para Windows Vista que es útil, sin efectos secundarios y que merece la pena. Resumiendo, es un comando que nos permite eliminar la copia de seguridad que se hace del sistema antes de instalar el Service Pack 1 para permitir su desinstalación. Si eliminamos esta copia de seguridad, la instalación del SP1 se convierte en definitiva pero, vamos, después de estos meses de uso ni se me pasa por la cabeza desinstalarlo. Creo, de hecho, que nunca he desinstalado un SP de Windows, ni en XP ni en 2000. Por supuesto, la idea de eliminar esa copia de seguridad que no vamos a usar nunca es recuperar espacio en disco duro, unos giguitas que nunca están de más.

El procedimiento es simple: abrimos una consola en modo administrador (vulgo cmd, con botón derecho y «Ejecutar como administrador») y ejecutamos el siguiente comando:

Vsp1cln.exe

Que supongo vendrá de Vista Service Pack 1 Clean. Al ejecutar el comando nos hará una preguntita que leeremos con atención y contestaremos de la forma que consideremos oportuna para obtener el resultado buscado (o sea, «S» para que borre los archivos en cuestión).

Me va gustando el blog de La Intranet, tendré que sumarlo a los blogs de consulta habituales.