jueves, 22 de octubre de 2020

Arranque problemático desde usb en bios y uefi

 El otro día me tope con que no podía hacer que arrancara una usb con un xubuntu 20.04.1 lo puse en un usb pero algunas veces funcionaba y tras veces no probé con el famoso comando 

sudo dd bs=4M if=/home/usuario/Nombre.iso of=/dev/sdx

pero no arrancaba así que lo probé con la forma mas sencilla

sudo dd if=/xubuntu-20.04.01 of=/dev/sdb

y allí si arranco en mi bios pura normal pero no en una con uefi, como no sabia como hacer para instalarlo en una computadora con uefi usé UNetbootin y luego de hacerlo probé en mi computadora con bios, ¡no arranco! la llevé a la computadora con uefi asi como la dejé con UNetbootin y allí si arranco, esta es la vez que mas problemas he tenido para hacer una usb arrancable y que funcione en una uefi, porque la he probado varias veces.

miércoles, 23 de septiembre de 2020

Convertir Archivo .pdf a imágenes

 El otro día tuve para que se viera bien la presentación de un archivo pdf, lo tuve que convertir a fotografías aquí explico como lo hice.

Lo trabajé en xubuntu así que ya tiene instalado el convert pero si es necesario pueden instalar el imagemagick de la siguiente forma en la terminal:


sudo apt-get install imagemagick

 

luego convertimos el archivo a imágenes de la siguiente forma:


convert -quality 96 -density 400 archivo.pdf imagen%d.jpg

 

veamos ahora los parámetros:

quality: Es la calidad de la compresión puede ser de 0 a 100.

density: la calidad del renderizado yo puse 400 pero puede ser mayor.

%d: es para que el programa numere al fotos de 0 hasta n.

archivo.pdf: el archivo que queremos dividir en imágenes.

imagen%d.jpg: como se llamaran las imágenes de salida.

bueno podríamos cambiar el formato de las fotos a png, pdf.

Si te da error al convertir las imágenes algo como lo siguiente:

convert-im6.q16: not authorized `excursionde1dia.pdf' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `imagen%d.jpg' @ error/convert.c/ConvertImageCommand/3258.

hay que editar un archivo de configuración de la siguiente manera en la consola siempre con tu editor de texto yo uso aquí mousepad:

sudo mousepad /etc/ImageMagick-6/policy.xml

Buscamos una linea que esta al final que seria como la que sigue:

 <policy domain="coder" rights="none" pattern="PDF" />

y la cambiamos por

 <policy domain="coder" rights="read|write" pattern="PDF" />

¡ y listo !


martes, 25 de agosto de 2020

Arrancar imagen iso desde grub2

 Tenia un problema necesitaba arrancar una iso pero no lo podía hacer desde una USB porque allí tenía un sistema que tenía que instalar en otra computadora y no quería quitarla y volverla a poner si fuera necesario.

No podía ponerla en la partición donde esta instalada el grub porque ya no tenía espacio, así que debía ponerla en una partición disponible y la opción mas viable era arrancar la imagen iso desde grub, me costo trabajo pero aquí dejo como lo hice para los que nos pueda servir también menciono que es en disco duro HD normal NO en un SSD que en SSD es diferente, también es una BIOS lagacy.

Por supuesto debemos descargar la imagen iso de la distribución, lo que ponga aquí servirá para imágenes de ubuntu pero se puede modificar así que descargué la imagen de xubuntu

 xubuntu-20.04.1-desktop-amd64.iso

La copié con otro nombre para que si se arruinaba la imagen de pruebas estaría bien la otra y para mas facilidad en poner el nombre en el archivo, así en la consola podemos hacer.

cp xubuntu-20.04.1-desktop-amd64.iso xubuntu20.iso

Debemos crear un directorio en el directorio raíz podríamos llamarlo iso

sudo mkdir  iso

Lo creamos en la partición que necesitemos.

Después debemos editar uno de los archivos del grub2 de la siguiente forma:

sudo nano /etc/grub.d/40_custom

Ya abierto el archivo debemos agregar al final la entrada del menú para que cargue la imagen iso de la siguiente manera:


menuentry "Xubuntu 20.04.1" {
set root=(hd0,1)
loopback loop /iso/xubuntu20.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash iso-scan/filename=/iso/xubuntu20.iso --
initrd (loop)/casper/initrd
}

 

Quedando de la siguiente manera:


#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "Xubuntu 20.04.1" {
set root=(hd0,1)
loopback loop /iso/xubuntu20.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=en console-setup/layoutcode=es quiet splash iso-scan/filename=/iso/xubuntu20.iso --initrd (loop)/casper/initrd
}

1) "Xubuntu 20.04.01" es el título que aparecerá en el menú de grub puede ser el que queramos.
2) set root=(hd0,1) aquí es donde indicamos en que partición esta la imagen iso lo que tenemos que modificar es (hd0,1), donde hd0 es el disco donde esta en mi caso el disco es "sda" el primer disco duro por tanto es el hd0 como es el primer disco duro es 0, si fuera el segundo disco duro seria hd1, luego la primer partición como mi lugar seria sda1 entonces pondríamos el 1 de la primera partición quedándome como lo coloque (hd0,1).

Si tenemos duda de la partición podemos darle al siguiente comando en la consola para ver las particiones de un disco duro, como sigue:

sudo fdisk -l /dev/sda

 

fdisk

3) loopback loop /iso/xubuntu20.iso: aquí es donde decimos en que directorio esta la imagen iso en mi caso como creé un directorio en la raíz que fue "/iso" y el nombre que le pusé a la imagen fue "xubuntu20.iso".

4) linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/xubuntu20.iso --: en esta parte decimos en que directorio esta el kernel adentro de la imagen iso, esta en "/casper", en las imágenes iso de ubuntu pero si fuera otra distro se le pondría el adecuado no olviden esos dos guiones al final de la linea.

- locale y bootkbd, para que arranque con el idioma y la distribución del teclado en Español o ingles yo dejo ingles el teclado.
- splash, para que muestre la imagen de carga (splash) o no si es no seria quiet. 

esos parámetros pueden ser opcionales.

5) initrd (loop)/casper/initrd en esta linea igual se le indica en que directorio de la imagen iso esta el initrd igual que en el inciso 4 y el archivo se llama initrd.


luego que ya quedó bien el archivo lo guardamos actualizamos el grub

sudo update-grub2

se pueden poner mas imágenes iso dentro del directorio "/iso" que creamos poniendo la entrada menuentry por cada iso, yo probé poner el directorio iso dentro de otro directorio pero no funcionó solo me funciono si lo pongo en el directorio raíz.

traté de instalar el sistema en una partición diferente en el mismo disco duro pero no se puede.

miércoles, 15 de abril de 2020

Error de boolean con hibernate y java

Estaba trabajando en un programa con java OpenJDK 8 e hibernate 5.4.7 y linux, el programa me funcionaba bien pero le agregué otra clase con un campo boolean y cuando corrí el programa resulta que ya no listaba, al ver los errores me salía los siguientes errores.

Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: [PersistenceUnit: prueba] Unable to build Hibernate SessionFactory

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [contactado] in table [prospectos]; found [tinyint (Types#TINYINT)], but expecting [bit (Types#BOOLEAN)]

En la base de datos el campo boolean lo había definido con un TINYINT y el atributo de la clase en java un boolean y eso creó el conflicto

Así que lo hay que hacer es agregar una definición de la comuna poniéndolo al atributo boolean de la clase en java como sigue:

@Column(name="contactado", columnDefinition = "TINYINT(1)")
    private boolean contactado;

martes, 17 de marzo de 2020

Calendario universal y días festivos

Un día tenia que saber una fecha por un domingo de ramos y no sabía como poder saberlo así que pude encontrar este sitio muy útil me da no solamente los años que necesite sino que los días festivos de ese año como también por el país.

https://www.cuandoenelmundo.com/calendario/2020

calendario universal dias festivos todos los años


nos da el año actual pero si queremos cambiar el año agregarle días festivos país etc. pinchamos en "Configurar Calendario" y luego damos en "Actualizar" y listo.

jueves, 27 de febrero de 2020

Contar registros de una tabla con hibernate

Me llevó tiempo saber como se podía contar los registros de una tabla usando Hibernate 5.4.7.Final estoy usando java openJDK 8 pero la parte difícil era que yo quería usar la instrucción count() de MariaDB pero como las consultas de hibernate regresan un objeto como podía hacer para que regresara un solo valor, un número.
Después de buscar y probar mucho en internet encontré la forma y hago también la salvedad que probé con un integer pero no funciona, con int y con Integer.
Así quedo el método que regresa el número de filas de la tabla de datos.

public long totalDeRegistros(){
        long numTotalDeObjetos;
        TypedQuery<Long> consulta;
        EntityManager em = getEntityManager();
        consulta = em.createQuery("SELECT count(a) FROM Alumno as a",Long.class);
        numTotalDeObjetos =  consulta.getSingleResult();
        return numTotalDeObjetos;
    }

el método getSingleResult() es para resultados únicos como en este caso que regresa un número de registros para usarlo en listados de objetos si el resultado no existe o el número de los registros a regresar es más de uno dará una excepción por eso lo más recomendable es usarlo solo en respuestas únicas como count.

miércoles, 15 de enero de 2020

Editar y no Editar columnas en java jtable

Había buscando en internet bastante pero no encontraba la respuesta en la JTable de java que tenía quería que se pudiera editar 3 columnas y una no pero no encontraba como hacerlo así que decidí hacer este post por si a alguien le sirve.
En la clase que debemos trabajar es el la clase DefaultTableModel para que funcioné así lo implemente.

modelo= new DefaultTableModel(){
            @Override
            public boolean isCellEditable(int row,int column){
                return !(column==0);
            }
        };


cuando creamos el modelo sobreescribimos el método isCellEditable(int row,int column) que para entenderlo mejor es un método de la clase DefaultTableModel que lo que hace es cada vez que debe escribir sobre una celda lo llama y verifica el estado regresando verdadero si se puede editar o falso si no se puede editar.
Donde row y column es en la posición que se encuentra el foco pues lo que debemos hacer es que de falso en la posición que no queremos que se pueda editar o lo contrario.
Yo necesitaba que la columna 0 no se pudiera editar y las otras si, entonces le puse que cuando estuviera el la comuna cero diera falso y allí me funcionó con la condición que podemos ver arriba con column==0 da verdadero cuando esta en la comuna cero pero lo que quiero es que de falso entonces lo negué.