miércoles, 16 de diciembre de 2020

Mi configuración de kino

 En la computadora que tengo kino captura bien el vídeo con puerto firewire 1394 pero instalé un kino en otra computadora pero no captura, solamente 1 imagen pondré aquí la configuración para ver si eso puede ayudar o ser la razón que no capturé es en el menú de arriba en la opción Editar->preferencias.

por defecto kino

captura kino preferencias

ieee 1394 kino preferencias

display kino preferencias

audio kino preferencias

jog shuttle preferencias kino

otros preferencias kino


viernes, 11 de diciembre de 2020

Hibernate error 1452

 Trabajando con Hibernate una tabla padre y una hija, en la tabla padre ingresaba correctamente pero el error surgió cuando quise ingresar en la tabla hija me dio el siguiente error:

Hibernate:
    insert
    into
        pedidos
        (fkclientescodcliente, fechaEntrega, fechaPedido, notas, valor)
    values
        (?, ?, ?, ?, ?)
dic 10, 2020 3:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1452, SQLState: 23000
dic 10, 2020 3:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Cannot add or update a child row: a foreign key constraint fails (`studio`.`pedidos`, CONSTRAINT `fk_clientecodcliente` FOREIGN KEY (`fkclientescodcliente`) REFERENCES `clientes` (`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE)
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement

pase mucho tiempo tratando de encontrar la causa del error, es causado porque la tabla padre y la tabla hija tienen motor (ENGINE) diferente.

si vemos el motor de la tabla padre que en este caso es clientes en la consola de mariadb o mysql podríamos el siguiente comando (comando en negrilla y por supuesto cargando la base de datos con use <tabla> antes):


MariaDB [studio]> show create table clientes;

 

Nos dará el siguiente resultado:

| clientes | CREATE TABLE `clientes` (
  `codcliente` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(20) DEFAULT NULL,
  `apellido` varchar(20) DEFAULT NULL,
  `telefono` varchar(15) DEFAULT NULL,
  `direccion` varchar(50) DEFAULT NULL,
  `nit` varchar(15) DEFAULT NULL,
  `cuenta` decimal(12,2) DEFAULT NULL,
  PRIMARY KEY (`codcliente`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 |

si vemos la última linea ENGINE=MyISAM tiene el motor MyISAM, ahora hacemos lo mismo con la tabla hija comando en negrilla:

 

MariaDB [studio]> show create table pedidos;

 

| pedidos | CREATE TABLE `pedidos` (
  `codPedido` int(11) NOT NULL AUTO_INCREMENT,
  `fechaPedido` date DEFAULT NULL,
  `fechaEntrega` date DEFAULT NULL,
  `valor` decimal(12,2) DEFAULT NULL,
  `fkclientescodcliente` int(11) DEFAULT NULL,
  `notas` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`codPedido`),
  KEY `fk_clientecodcliente_idx` (`fkclientescodcliente`),
  CONSTRAINT `fk_clientecodcliente` FOREIGN KEY (`fkclientescodcliente`) REFERENCES `clientes` (`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 |

vemos nuevamente la última linea ENGINE=InnoDB tiene el motor InnoDB son diferentes así que deben ser iguales como InnoDB es mas moderno lo cambie en la tabla padre de la siguiente forma:

 

MariaDB [studio]> alter table clientes engine= innoDB;

 

Ahora al darle que nos muestre la creación de la tabla para ver el motor de la tabla padre (clientes) vemos que se a cambiado:

| clientes | CREATE TABLE `clientes` (
  `codcliente` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(20) DEFAULT NULL,
  `apellido` varchar(20) DEFAULT NULL,
  `telefono` varchar(15) DEFAULT NULL,
  `direccion` varchar(50) DEFAULT NULL,
  `nit` varchar(15) DEFAULT NULL,
  `cuenta` decimal(12,2) DEFAULT NULL,
  PRIMARY KEY (`codcliente`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 |

y ahora se habra arreglado el error 1452, me costo mucho encontrar el error solo Gracias a Dios que lo pude arreglar asi que si a alguien le ayuda esto enhorabuena.
 

jueves, 12 de noviembre de 2020

Que ventana del panel flote y no quite espacio de página en Vivaldi

 Cuando estaba agregando ventanas al panel izquierdo de vivaldi 3.4 si quería agregar digamos twitter o whatsapp el espacio se compartía entre la ventana que tenia abierta y la que salia del panel izquierdo pero yo no quería así, sino mas al estilo opera donde la ventana es flotante y no reduce la ventana que esta abierta en ese momento del lado derecho me salia como sigue:


ven como la pantalla del navegador esta dividida y no me parecía yo la quería flotante para hacerlo hay que entrar en la configuración del panel izquierdo.

configuracion panel izquierdo vivaldi

Le damos a esa rueda dentada y allí, panel-> Opciones de panel -> panel flotante, marcamos la casilla.

poner panel flotante vivaldi
Quedando ahora la imagen de la página que estamos viendo del tamaño normal sin modificarla con un lado oculto pero la ventana del panel flotando como sigue:



¿Ven ahora como queda una imagen sobre otra? ahora no deforma la página que estamos viendo ya que lo que vemos en el panel izquierdo solo es un momento.

martes, 10 de noviembre de 2020

Instalar impresora en Xubuntu 20.04

 Con Xubuntu 18.04 me reconocía la impresora de una sola vez pero resulta que en Xubuntu 20.04 con el kernel 5.4 ni si quiera la reconoce así que hay que instalar el driver en la consola o terminal esto pasa por las impresoras ya son algo antiguas:


sudo apt-get install printer-driver-gutenprint
 

Encendemos la impresora mientras se instala y asi la pone ya lista para imprimir, si no pues vamos a el menú general buscamos impresoras en el campo de búsquedas o menú -> configuración -> impresoras y nos sale una ventana donde tiene un botón de agregar impresoras y allí la agregamos según el modelo que tenemos.

¡y listo!

lunes, 9 de noviembre de 2020

Arrancar Fedora 33 directamente desde Grub2 con imagen iso

 Debido a que quería probar la imagen del nuevo fedora 33 Xfce y no podía hacerla arrancar pedí ayuda en la lista de ayuda de fedora en español y lo conseguí.

En mi caso yo tengo una Bios Legacy tengo el /home en una partición aparte formateado a XFS.

primero debemos abrir como administrador con el editor de texto preferido en este caso use mousepad desde la terminal.

mousepad /etc/grub.d/40_custom

ya allí adentro le agregamos al final lo siguiente:

menuentry "Fedora 33" {

loopback loop (hd0,5)/diretorio/Fedora-Xfce-Live-x86_64-33-1.2.iso

linux (loop)/isolinux/vmlinuz iso-scan/filename=/diretorio/Fedora-Xfce-Live-x86_64-33-1.2.iso initrd=initrd.img root=live:CDLABEL=Fedora-Xfce-Live-33-1-2  rd.live.image quiet

initrd (loop)/isolinux/initrd.img

}

no debemos olvidar actualizar el grub2 para que aparezca en el menú de la forma que el sistema en que estemos lo realiza

ubuntu:

 sudo update-grub2

en otras sería

grub2-mkconfig –o /boot/grub2/grub.cfg


bueno explicando un poco lo que se hace

menuentry "Fedora 33": es el titulo que aparecerá en el arranque del grub

(hd0,5): el el disco y la partición donde esta, hd0 es el primer disco duro 5 es la partición esa la podemos averiguar con el comando:

lsblk

/directorio/: es el directorio donde se encuentra la imagen iso en lo personal me ha funcionado ese directorio en la raíz.


Fedora-Xfce-Live-x86_64-33-1.2.iso: es la imagen iso que descargamos


/isolinux/vmlinuz: es el directorio dentro de la iso donde esta el kernel


iso-scan/filename=/directorio/Fedora-Xfce-Live-x86_64-33-1.2.iso: esto pues tambien dice donde esta la imagen iso recordar que directorio debemos poner donde tengamos la imagen iso.


initrd=initrd.img root=live:CDLABEL=Fedora-Xfce-Live-33-1-2  rd.live.image quiet: para poner esto debemos entrar en el directorio que esta dentro de la imagen iso

/isolinux/

allí habrá un archivo llamado isolinux.cfg


donde nos aparecerá un párrafo como el siguiente:

label linux

  menu label ^Start Fedora-Xfce-Live 33

  kernel vmlinuz

  append initrd=initrd.img root=live:CDLABEL=Fedora-Xfce-Live-33-1-2  rd.live.image quiet


copiamos lo que esta después del append que lo puse en negrilla y lo pegamos después de lo siguiente:

iso-scan/filename=/directorio/Fedora-Xfce-Live-x86_64-33-1.2.iso

quedando como aparece en el archivo que seria así:

linux (loop)/isolinux/vmlinuz iso-scan/filename=/diretorio/Fedora-Xfce-Live-x86_64-33-1.2.iso initrd=initrd.img root=live:CDLABEL=Fedora-Xfce-Live-33-1-2  rd.live.image quiet


recordemos actualizar el grub2 y ya nos aparecerá en el menú de arranque de grub2 y ¡listo!

Este método se puede usar en otras distribuciones también.


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é.

lunes, 6 de enero de 2020

Un sitio para encontrar el origen de los apellidos

Yo trabajo con muchos apellidos y la mayor parte antiguos me hablaron de un sitio el cual nos puede servir para encontrar de donde son ciertos apellidos o para ver si el apellido existe ya que cuando trabajamos con letra no muy legible podríamos confundirnos el sitio es forebears.io.

forebears.io encontrar origenes de los apellidos