Fish And Chips (and Bits)

miércoles, 18 de noviembre de 2015

[Windows] Cambiar carpetas de usuario a D:

Al instalar, creamos dos particiones. Para Windows 7, si no se van a instalar juegos, suele ser suficiente con 30GB en C. De ahí en adelante, los gustos de cada uno...

La instalación hay que hacerla con un usuario que luego vayamos a descartar. Suelo usar foo, sin contraseña

Ejecutamos Regedit y buscamos la clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

En la entrada ProfilesDirectory se cambia el "%SystemDrive%\Users" por "D:\Users".

Creamos un nuevo usuario, el que realmente nos interese mantener.

Reiniciamos

Arrancamos y hacemos login con el nuevo usuario

Borramos el usuario foo

Et voilà!

miércoles, 12 de febrero de 2014

[Linux] Mezclar dos imágenes en una

El problema es: tengo una carpeta con muchos iconos en formato png con fondo transparente, que quiero utilizar con Access. El problema es que para poder usarlas, las imágenes deben estar en formato bmp. Además, quiero ponerles como fondo el mismo color que usan los botones de Access, para que el aspecto sea mejor.

Solución: creo una imagen de 32x32 px de color gris, que llamaré fondo.bmp. Después, recorro con un bucle todas las imágenes y las mezclo con convert, realizando la adecuada sustitución de la extensión png por bmp. Todo en una única línea:

for i in *.png; do convert -composite fondo.bmp $i ${i%%.*}.bmp; done

Et voilà!


martes, 18 de diciembre de 2012

[Linux] Samba y Windows 7: no se guarda el perfil del usuario

En un dominio con servidor Samba y perfiles móviles, a un determinado usuario no se le carga su perfil, y siempre le aparece un mensaje que le indica que trabajará con un perfil temporal y no se guardarán los cambios que realice. El problema puede radicar en dos cosas:
  • Ha ocurrido algo malo con su usuario, y en el registro de Windows nos aparece su usuario con un .bak, en la cadena HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList. Lo borramos tan contentos.
  • En el servidor, en la carpeta home/usuario/profile.V2 hemos copiado un archivo sobre el que el usuario no tiene permisos suficientes. En mi caso, copié como root un archivo y olvidé hacer al usuario propietario del mismo. Lo borramos o le damos los permisos adecuados.
Et voilà.
 

viernes, 22 de junio de 2012

[MSDOS] Imprimir desde MS-DOS a PDF

Se trata de imprimir desde un programa MS-DOS (trabajando bajo Windows XP) a PDF, concretamente utilizando PDFCreator.

Compartimos la impresora PDF, y la llamamos, por ejemplo, PDF

Redirigimos LPT a la impresora que hemos compartido
NET USE LPT1 \\%COMPUTERNAME%\PDF /persistent:yes
El problema es que si solo hacemos esto, PDFCreator nos genera unas hermosas páginas en blanco a cambio de nuestras impresiones. Hay que ajustar sus propiedades, y en la pestaña "Opciones avanzadas", "Procesador de Impresión", en la lista de la izquierda "WinPrint" y en la de la derecha "TEXT"

Et voilà

miércoles, 7 de marzo de 2012

[Java-JPA] Trabajar con consultas mezcladas

En JPA, habitualmente se trabaja con consultas que devuelven un único tipo de objeto, por ejemplo:
SELECT e FROM Equipo e
En estos casos es bastante sencillo trabajar, puesto que son resultados compactos, y a la hora de, por ejemplo, trabajar con informes de iReport, pasamos dichos objetos como tales. Sin embargo, a veces no queremos recuperar un único tipo de objeto sino varios, o incluso objetos y partes de otros. Por ejemplo, en este caso recuperamos equipos y los puestos cuya clave ajena está en equipo:
SELECT e, ep  FROM Equipo e JOIN e.puesto ep
En este caso, necesitamos extraer los distintos objetos recorriendo un resultset, y lo hacemos del siguiente modo:
    private void pruebaConsulta(String textoConsulta) {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("upiPU");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        Query consulta = em.createQuery(textoConsulta);

        // Esto valdría para una consulta que devuelve:
        // un objeto Equipo en la primera columna
        // un objeto Puesto en la segunda
        List res = consulta.getResultList();
        for (int i = 0; i < res.size(); i++) {
            Object[] fila = (Object[]) res.get(i);
            Equipo e = (Equipo) fila[0];
            Puesto p = (Puesto) fila[1];
            System.out.print(e.getIdEquipo() + "\t");
            System.out.print(e.getCodGiss() + "\t");
            System.out.print(p.getIdPuesto() + "\t");
            System.out.println(p.getUsuario().getIdUsuario());
        }
    }
De este modo, entresacamos únicamente los atributos de los objetos que queremos, aunque también podríamos haberlos escogido en la consulta, en cuyo caso los objetos devueltos podrían ser de tipo Integer, String, o cualquiera de los que compongan cada uno de los campos.

Datos personales