Mecanizado de pieza, te odio

Llevo unos días más gruñón y contestón que de costumbre. Las razones son, principalmente, dos. La primera es que estoy incubando algo: me duele la garganta, me zumban los oídos… veremos mañana como me levanto. La segunda es que estoy atascado con la aplicación que ando haciendo para fábrica.

El jefe decidió este verano dos cosas: la primera es que había que hacer una base de datos de lo que fabricamos para poder sacar unas órdenes de fabricación en condiciones, gestionar nuestros productos, control de stock y lo que se tercie, que las hojas manuscritas al final se pierden o de tantas tachaduras y enmiendas no se entienden. Y más teniendo en cuenta que anda reduciendo plantilla y, claro, si echa al responsable de tal colección la llevamos clara porque es él quien sabe cómo se hace cada pieza.

La segunda cosa que decidió el jefe es que me encargara yo del asunto. Sin quejas por mi parte, porque así practico y le doy caña a Visual Basic. Llevo dos meses muy entretenido dando caña a los datasets. Este julio estuve preparando las especificaciones (no las hice bien, para variar) y documentándome sobre LINQ to SQL.

Sigue leyendo

Corrijo: Windows 7 = Windows 2000 Service Pack 12

Y Debian Lenny es Woody SP3. Mac OS X Snow Leopard debería llamarse Puma SP5. Y Ubuntu 8.10… eh… Debian Me SP3 (más o menos).

Mi Auris es en realidad un Corolla SP4 ó SP5.

Y la ISS (estación espacial internacional) no es más que Cabaña Neolítica Service Pack 512 con AMT (Advanced Materials Technologies), con la apariencia copiada de CHV 15 SE (Casa de Hombrecitos Verdes versión 15 Space Environment) ed. Especial Roswell 47.

En serio, lo que tiene uno que oír.

PD: gracias, Manu, por indicármelo.

Jugando con DataTables

Hace unos días veíamos una forma de trabajar con una relación m:n usando LINQ. En esta ocasión vamos a ver otra posibilidad y no voy a poner código, que ando mal de tiempo, así que a ver si consigo explicarme bien.

Supongamos que tengo dos tablas, Series y Personajes. Entre ellas hay una relación n:m (una serie tiene varios personajes, un personaje puede salir en varias series). La tabla que nos permite esta relación digamos que se llama PersonajesDeSerie y que sólo tiene dos campos: IdSerie e IdPersonaje. Por otra parte, en el formulario de personajes, que es donde podemos añadir las series donde aparece el mismo, queremos mostrar el título de la serie y el año de producción (podían ser más cosas, pero tampoco es plan de complicar el ejemplo). Para facilitar las cosas, nos creamos una vista en la base de datos que metemos como DataTable en el DataSet de Personajes. Es decir, tengo tres DataTable: Personajes, PersonajesDeSerie y vMisSeries, ésta última con los campos IdPersonaje, IdSerie, Titulo y Año. En mi caso, metidos en el mismo DataSet por comodidad.

Sigue leyendo

Windows 7 será un 2000 con la apariencia de KDE4

A esa conclusión llegaría si me hiciera caso de lo que leo por ahí. Vamos por partes: se ha presentado una versión preliminar de la Beta 1 (las Beta son versiones de prueba que más o menos funcionan y se parecen bastante a lo que será el producto final) del futuro Windows 7 y todo el mundo está opinando sobre lo que se ha visto (es decir, un vídeo, unas capturas de pantalla y poco más). Ya leo por ahí mil y un comentarios que dicen que es poco más que un Vista con una apariencia que es una copia de KDE4.

El aire a KDE lo vi yo ya con Vista, aunque sería difícil decir quién se inspiró en quién o si llegaron a soluciones parecidas independientemente. No me refiero a una similitud directa, salvo en algunos iconos, sino a un «aire». En 7 sigue con el mismo aire (es decir, algo «bonito» frente a la tosquedad de Gnome o el modo clásico de Windows), y, como KDE, con iconos grandes en la barra de tareas, mientras que hasta ahora habían sido bastante pequeños. Es una copia descarada, claro. El hecho de que cada vez trabajemos con pantallas más grandes y de mayor resolución y que se quiera dar impulso a las pantallas táctiles no tiene nada que ver.

Sigue leyendo

Número de cifras de un número

Comentando anécdotas de clase el otro día me acordé de un problema chorra de programación, de esos para que la gente se acostumbre a usar bucles, variables y tal: invertir el orden de las cifras de un número dado (por ejemplo, convertir el 768 en el 867). Lo primero era conocer el número de cifras del número dado. La solución dada fue jugar con sucesivas divisiones enteras y el resto que daban. Yo llamé al profesor y le dije y, ¿no es más simple tomar la parte entera del logaritmo decimal del número dado y sumarle 1? El profesor lo pensó unos momentos y me contestó ¿y cómo se lo explico a ellos?, señalando a mis compañeros. Y tenía razón, porque ahí había gente de ciencias y de letras y alguno que no había terminado bachillerato. Seguro que se pone a hablar de logaritmos y a más de uno le da un patatús.

Por otra parte, sigo pensando que mi forma es la más simple y elegante.

Una lanza a favor de UAC

Pues sí, yo estoy a favor de UAC y considero que es un gran invento. ¿La razón? La combinación de seguridad y comodidad (¡Hala lo que ha dicho! ¡Que UAC es cómodo!).

En Windows NT y Linux tenemos básicamente dos tipos de usuarios: el usuario normal y el superusuario (administrador en Windows, root en Linux). El superusuario puede realizar tareas administrativas, esto es, puede cambiar la configuración del sistema, instalar y desinstalar aplicaciones, asignar los permisos que van a tener los usuarios normales… la teoría y la historia dicen que lo más seguro es trabajar como usuario normal y usar un superusuario sólo cuando tengamos que hacer esas tareas administrativas.

En XP todos sabemos que lo más habitual, fuera de entornos empresariales (y aún en estos) es usar usuarios con derechos administrativos, usuarios administradores. No sé si fue con idea de facilitar el cambio de Windows 9x a Windows NT para el entorno doméstico, pero en XP el primer usuario que se crea es administrador y es con el que se acostumbró la gente a trabajar. El problema de esto lo hemos podido ver y sufrir estos años: aplicaciones mal programadas que pedían derechos administrativos por poco que hicieran, profusión de virus y malware sin control…

Sigue leyendo

XP, Vista y el rendimiento

Estoy ya hasta las narices, casi dos años después de la salida al mercado de Vista y a poco más de uno (esperemos) del lanzamiento del futuro Windows 7 (a ver qué nombre comercial le ponen) de oír todavía «XP tiene mejor rendimiento que Vista». Ah. Guay. La pregunta con la que se responde a esta afirmación es obvia: «¿qué entiendes por rendimiento?». Sin embargo, esa pregunta apenas la he visto formulada. No sé, igual son mis años pasados estudiando ingeniería los que me hacen hacer esta incómoda pregunta, pero las veces que la he realizado la respuesta obtenida (tras una mirada de incomprensión, si la pregunta la he hecho en persona) es «está claro, Vista es más lento que XP». Hale.

Sigue leyendo

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