jueves, 23 de diciembre de 2021

Cambiar fondo de la celda con el foco en JTable

 

Cómo al seleccionar una fila en una jtable quería que la celda que tuviera el 

foco fuera de un color diferente para que la persona supiera en dónde estaba. 

Entonces la mejor forma es por medio DefaultTableCellRenderer.

Debemos crear una clase que herede de DefaultTableCellRenderer como sigue:

 

en este caso le puse una letra c es solo para poder reusarla en otra jtable

pero se puede quitar. 

 

/*
* Clase para poner la celda que se esta editando en color blanco u otro
*/
package vista;

import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

/**
*
* @author miusuario
*/
public class ColorCeldaEditando extends DefaultTableCellRenderer {
char quePanelEditar;
Color colorDeCeldaAEditar;
public ColorCeldaEditando(char panelEditando){
//ponemos el panel editando para que ponga el color
if('c' == panelEditando){
colorDeCeldaAEditar = new Color(176,196,222);
}else{
colorDeCeldaAEditar = new Color(176,196,222);
}
}
@Override
public Component getTableCellRendererComponent(JTable table,

Object value, boolean Selected, boolean hasFocus, int row, int col){
 

        super.getTableCellRendererComponent(table, value, Selected, 

hasFocus, row, col);
 

        if(hasFocus){
setBackground(colorDeCeldaAEditar);
}
return this;
}

 

Luego para la llamada seria:

 

TablaClientes.setSelectionBackground(new Color(65,105,225));

//aqui creamos la clase que hereda de DefaultTableCellRenderer

ColorCeldaEditando ColoreaEnFoco;

//le mando una c solo para decir que es la tabla de clientes y escoger alumnos etc.
ColoreaEnFoco = new ColorCeldaEditando('c');

/*ahora colocamos la clase en la TablaClientes mandandole un Object.class y la

 recien creada clase que le cambiará el color si tiene el foco */
TablaClientes.setDefaultRenderer(Object.class,ColoreaEnFoco); 

 

¡y con eso queda lista!. 

martes, 21 de diciembre de 2021

Base de datos resta un día

 

Estoy trabajando con Java 11 e hibernate 5.4.7.Final pero cuando recuperaba 

los datos de la base me restaba un día y no sabía que pasaba.

Investigue y el error era por la configuración del país, revise la configuración 

del gestor mariaDB pero estaba correcto y no funcionó, y a hibernate no se le 

pudo cambiar, así que tuve que abrir la base de datos sin hibernate 

poniéndole la zona horaria del país directamente y allí funcionó 

lo hice cómo está continuación:

 

public Connection conexionSinHibernate() {


final String url = "jdbc:mysql://localhost:3306/nombreDeLaBase"+
"?useUnicode=true&useJDBCCompliantTimezoneShift=true"+
"&useLegacyDatetimeCode=false&serverTimezone=America/Guatemala";


final String driver = "com.mysql.jdbc.Driver";


final String usuario = "usuarioDeBaseDeDatos";


final String clave = "miclave";


Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, usuario, clave);
System.out.println("Conexion Exitosa");
} catch (ClassNotFoundException ex) {
System.out.println("Error al abrir la conexion");
} catch (SQLException ex) {
System.out.println("Conexion fallida por SQL");
}
return conn;

jueves, 11 de noviembre de 2021

Arrancar Fedora 35 desde grub2

 Si necesitamos arrancar la imagen iso de fedora 35 en este caro fedora mate pero puede ser con otro escritorio, directamente desde el cargador de arranque Grub2 para no usar memoria USB o DVD se hace de la siguiente manera:

en la consola cargamos el archivos de configuración de grub2 como administrador

nano /etc/grub.d/40_custom

nos aparecerá como lo siguiente y le agregamos desde la fila donde dice

menuentry

#!/usr/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 "Fedora 35 Mate Compiz" {
#no dejar ningun espacio en blanco en esta linea
set isoFileFedora35="/homar/Fedora-MATE_Compiz-Live-x86_64-35-1.2.iso"

loopback loop (hd1,5)$isoFileFedora35

linux (loop)/isolinux/vmlinuz iso-scan/filename=$isoFileFedora35 initrd=initrd.img root=live:CDLABEL=Fedora-MATE-Live-35-1-2  rd.live.image quiet


initrd (loop)/isolinux/initrd.img

}

menuentry lo que está entre comillas es el título que deseamos ponerle.

con set ponemos en la variable isoFileFedora35 que creamos nosotros la ruta y el archivo iso no debemos dejar ningún espacio en blanco.

(hd1,5) ponemos el disco duro en mi caso es el segundo disco duro hd1 si fuera el primero es hd0 y el 5 es el número de la partición podemos averiguarla con el comando

lsblk

me a funcionado ese directorio siendo el primero en la raíz


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


initrd=initrd.img root=live:CDLABEL=Fedora-MATE-Live-35-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-Mate-Live 35

  kernel vmlinuz

  append initrd=initrd.img root=live:CDLABEL=Fedora-MATE-Live-35-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=$isoFileFedora35

quedando como aparece en el archivo que seria así:

linux (loop)/isolinux/vmlinuz iso-scan/filename=$isoFileFedora35 

initrd=initrd.img root=live:CDLABEL=Fedora-MATE-Live-35-1-2  rd.live.image quiet


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


viernes, 15 de octubre de 2021

Contar palabras en archivos de texto en Gnu/Linux

 Quería contar palabras en un archivo de texto desde la consola gracias a la ayuda del grupo de linux lo cual se puede hacer abriendo la terminal y usando el comando siguiente:

grep -i <palabra> <nombre de archivo>  | wc -l


ejemplo:

grep -i domingo itinerario2005.txt | wc -l

 

contara todas las palabras "domingo" que halla en el archivo de texto intinerario2005.txt.

si quisiéramos una frase podemos usar comillas algo como lo siguiente:

 grep -i  "cuando termino" vitacora2005.bak | wc -l

allí contará cuantas veces aparece la frase "cuando termino"

 

-i                                  ignora mayúsculas y minúsculas

domingo                     palabra a contar

itinerario2005.txt      nombre del archivo

 

 

miércoles, 25 de agosto de 2021

Como desarrollar en C++ en SolusOS

Una de las cosas que me costo mucho fue poder desarrollar en lenguaje C++ en SolusOS se puede instalar code::blocks pero no hace nada, siempre hay que instalar Code::Blocks IDE e instalar también codeblocks-devel

Luego en consola debemos instalar un paquete mas de la siguiente manera, como administrador.

sudo eopkg install -c system.devel

donde se encuentran herramientas para desarrollar si queremos ver la información del paquete podemos hacer:

eopkg info -c  system.devel

En el caso de Code::Blocks no se podrá salir la terminal porque la que usa code blocks es Xterm que no esta en los repositorios de SolusOS así que debemos pasarnos a la terminal y correrlo desde allí para ver el resultado.

jueves, 1 de julio de 2021

NetBeans ya no corría

 Cuando quise abrir NetBeans resulta que ya no funcionaba, me puse a ver cual era el error la corrí desde consola.

correr netbeans desde consola error de java

Al ver nos damos cuenta que ya no encuentra java, entonces me recordé que había habido una actualización.

buscamos el archivo en netbeans-12.3/netbeans/etc/netbeans.conf en el directorio de netbeans de la versión que tengamos.

netbeans.conf jdkhome

En la linea:

netbeans_jdkhome=

debemos poner la nueva versión de java seguimos la ruta para saber cual es, la cual esta en la barra de la dirección y podemos ver la versión, recordar poner la que dice java no debemos confundirnos con la jre.

/usr/lib/jvm/

ruta de java en mageia linux


copiamos el nombre exacto de la versión de java quedando ahora como sigue y listo:

ruta de java en jdkhome



miércoles, 9 de junio de 2021

Borrar el rectángulo por defecto de Gimp

 Alguna vez me he topado cuando hago un corte de una imagen y la quiero pegar en un nuevo proyecto en Gimp crea un rectángulo blanco que no quiero como el siguiente:

Fondo blanco en gimp

 Pues para eliminarlo le damos click derecho en la imagen y nos sale el  menú contextual

Imagen -> Recortar al contenido

lo cual recortará la imagen a las dimensiones de la selección (quita los bordes vacíos de la imagen)

recortar el contenido extra en gimp

Quedando como sigue:

gimp solo la seccion copiada de la foto sin fondo

ya esta eliminado ese molesto fondo blanco ahora al exportar la imagen quedará solamente la imagen sin el rectángulo blanco.

otras dos maneras que lo hacen fácil es:
  1. Copiar la parte que queremos copiar de la imagen luego abrir gimp y en el espacio que aparece sin hacer nada mas pegarlo allí y listo.
  2. La segunda forma es al crear el nuevo documento en la ventana que sale le damos "opciones avanzadas" -> "Rellenar con" -> "transparencia". 
1)
primera imagen de gimp

Como vemos en la imagen de arriba, es la primer pantalla allí pegamos la imagen y listo

2)
crear un nuevo proyecto desde el portapapeles gimp

resultado de crear nueva seccion sin fondo


martes, 6 de abril de 2021

Que hice despues de instalar xubuntu 20.04

Debido a que no tengo tanto espacio en el disco porque es una computadora antigua ahorro espacio haciendo lo básico para que me funcione bien hay otros tutoriales donde se puede instalar todo y esta bien, en lo que yo tuve que hacer fue:

que me funcionara bien LibreOffice base:

resulta que cuando quise abrir la base de datos creada con libreoffice base me dio el siguiente error.


error libre office base

así que investigando en internet resulta que hay que instalar dos programas para que funcione, desde consola, son los siguientes:


sudo apt-get install libreoffice-sdbc-hsqldb


sudo apt-get install libreoffice-sdbc-mysql

Ahora la impresora que es una cannon E402

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 así 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.


tuve el problema que no podia ver los videos de instagram en el navegador vivaldi tuve que instalar los codecs extra para que funcionará y desde la consola instalé con el siguiente comando:

sudo apt-get install ubuntu-restricted-extras


lunes, 22 de marzo de 2021

Ampliar la letra de interfaz de navegador Vivaldi

 Instalé el navegador Vivaldi en xubuntu 20.04 pero sentía muy pequeña la letra de toda la interfaz y la forma de cambiarla era sencilla pero no la encontraba se hace de la siguiente forma:


cambiar tamaño letra interfaz vivaldi







viernes, 19 de marzo de 2021

Instalar NetBeans 12.3 en mageia 8

 Para instalar NetBeans 12.3 en mageia 8 debemos instalar el programa java-11-openjdk-devel ya sea por consola o con la interface grafica.


instalar java open jdk devel

Luego descargamos Netbeans 12.3 del lugar de apache de aqui ya con el archivo desde la consola ingresamos al directorio donde tenemos la descarga y lo corremos de la siguiente forma:

sh Apache-NetBeans-12.3-bin-linux-x64.sh

correr instalador netbeans consola

 y se comenzará a instalar, y le vamos dando siguiente, cuando netbeans nos da el error "No compatible JDK was found." es porque debemos instalar el java-11-openjdk-devel en el caso de mageia8, puede usarse también en fedora.


No compatible JDK was found.


 

martes, 16 de marzo de 2021

Instalar MariaDB en mageia 8

 Despues de tener instalado mageia 7 y para hacer la transición mageia 8 debía de comenzar instalando mariadb la instalé pero me dio el siguiente error:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

eso fue cuanto traté de entrar en el gestor de mariadb lo que pasa es que el servicio no esta cargado lo cargamos de la siguiente manera, abrimos la terminal y escribimos:

systemctl enable mysqld

eso lo hacemos como administrador

bueno pues es error de que no se puede conectar en este caso a mariadb ya que no puede acceder a mariadb remotamente, así que lo que hay que hacer es habilitar la conexión remota, en el archivo de configuración, ya en los archivos del sistema Linux.

/etc/my.cnf

Nos convertimos en root y con el editor que prefiramos lo cargamos:

 1. comentamos la linea

#skip-networking

2. luego la linea de bind-address debemos descomentarla y nos debe quedar como sigue:

bind-address = 0.0.0.0

esto hará que escuche de todos lados en ipv4

debemos reiniciar el servicio por lo que en la linea de comandos escribimos.

systemctl restart mysqld  

Bueno al salir a mi usuario resulta que no funcionó sino que solo funciona para cuando estoy como administrador en el sistema así que ahora cuando trato de entrar como root en mariaDB (que antes en mageia 7 no me daba) me da el error.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

así que lo que hice fue crear un usuario con los privilegios de root en mariaDB de la siguiente forma.

Entro en la consola de mariadb como administrador como ya sabemos hacerlo

mysql -u root -p

cargamos la base de datos donde estan los usuarios

USE mysql

creamos el nuevo usuario

CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña';

ejemplo:


CREATE USER 'pedro'@'localhost' IDENTIFIED BY 'manzana';

Por supuesto que en usuario ponemos el nombre que queremos ponerle y en contraseña la que le queramos asignar a ese usuario.

 Luego le damos los privilegios en este caso todos los privilegios

GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost';

 ejemplo:

GRANT ALL PRIVILEGES ON *.* TO 'pedro'@'localhost';

recargamos los permisos que se dieron con

flush privileges;

si quisiéramos ver los usuarios lo hacemos con el siguiente comando

Select user from mysql.user;

salimos con el comando

exit

 



viernes, 12 de marzo de 2021

Error Libreoffice base en xubuntu 20.04

 Instalé xubuntu 20.04 y resulta que cuando quise abrir la base de datos creada con libreoffice base me dio el siguiente error.


error libre office base

así que investigando en internet resulta que hay que instalar dos programas para que funcione, desde consola, son los siguientes:


sudo apt-get install libreoffice-sdbc-hsqldb


sudo apt-get install libreoffice-sdbc-mysql


y así pude abrir la base de datos esto incluye lo que hay que hacer después de instalar xubuntu 20.04


miércoles, 10 de marzo de 2021

Arrancar iso Mageia 8 NetInstall desde Grub2

 No tenia usb disponible para crear un pendrive de mageia 8 live así que necesitaba arrancarla desde grub2 directamente, probé muchas formas pero ninguna funcionó así que probé con la iso de Mageia 8 NetInstall y allí funcionó.

para agregar la imagen iso hay que entrar en el archivo como administrador, algo como lo siguiente:

sudo mousepad /etc/grub.d/40_custom

eso fue en caso de ubuntu pero en caso de mageia hay que usar el editor nano o algún otro porque mousepad no funciona allí.

ya allí, nos debe quedar como sigue:

menuentry "Mageia 8 NetInstall" {
set root=(hd0,1)
loopback loop /iso/Mageia-8-netinstall-nonfree-x86_64.iso
linux (loop)/isolinux/x86_64/vmlinuz audit=0 quiet noiswmd  console-setup/layoutcode=es iso-scan/filename=/iso/Mageia-8-netinstall-nonfree-x86_64.iso --
initrd (loop)/isolinux/x86_64/all.rdz
}

explico mas detallado

menuentry "Mageia 8 NetInstall"  el titulo que aparecerá en el inicio de grub2.

set root=(hd0,1) aquí indicamos en el disco y partición en que se encuentra la iso hd0 es el primer disco duro, el número 1 significa la partición en que esta.

loopback loop /iso/Mageia-8-netinstall-nonfree-x86_64.iso ponemos lo que aparece aquí indicando el directorio en mi caso el directorio iso y el nombre de la imagen iso, el directorio tiene que estar en la raíz de la partición.

linux (loop)/isolinux/x86_64/vmlinuz audit=0 quiet noiswmd  console-setup/layoutcode=es iso-scan/filename=/iso/Mageia-8-netinstall-nonfree-x86_64.iso -- aquí pues le decimos donde esta el kernel dentro de la imagen iso y le ponemos unos parámetros y volvemos a poner el directorio y nombre de la imagen iso.

initrd (loop)/isolinux/x86_64/all.rdz en este le decimos donde esta el archivo initrd que aquí se llama all.rdz siempre dentro de la imagen iso.


¡no olvidar actualizar el grub!

 sudo update-grub2

bueno como al probar instalar en linea era extremadamente lento pensé mejor usar una imagen iso como fuente de los archivos, para que fuera mas rápido resulta que la imagen iso de la version live no sirve para eso, debe ser la iso estandar que es como de 4GB para hacerlo y allí me funcionó.


jueves, 18 de febrero de 2021

Cambiar fecha de foto en Linux por consola

El otro día tenia unas imágenes sin la fecha en que fue tomada así que pensé en ponerle una fecha que fuera mas acorde a cuando la tomaron y lo hice con exiftool en la consola lo hice desde un xubuntu 18.04.
lo que tenemos que hacer primero es instalarlo como sigue:

sudo apt install libimage-exiftool-perl

luego de tenerlo instalado solo tenemos que cambiar la fecha original de la imagen en este caso no la tenia, de la siguiente forma:

 exiftool -DateTimeOriginal='<año:mes:fecha hora:minuto:segundo>' <imagen>

ejemplo:

 exiftool -DateTimeOriginal='2020:11:27 2:30:0' CarroBomberos.jpg

si queremos ver los meta datos de la fotografía seria como sigue:

exiftool CarroBomberos.jpg

nos saldrá algo como esto

ExifTool Version Number         : 10.80
File Name                       : CarroBomberos.jpg
Directory                       : .
File Size                       : 394 kB
File Modification Date/Time     : 2021:02:16 14:34:12-06:00
File Access Date/Time           : 2021:02:16 14:34:12-06:00
File Inode Change Date/Time     : 2021:02:16 14:34:12-06:00
File Permissions                : rw-rw-r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Exif Byte Order                 : Big-endian (Motorola, MM)
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Y Cb Cr Positioning             : Centered
Exif Version                    : 0231
Date/Time Original              : 2020:11:27 02:30:00
Components Configuration        : Y, Cb, Cr, -
Flashpix Version                : 0100
Color Space                     : Uncalibrated
Image Width                     : 1440
Image Height                    : 1440
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:4:4 (1 1)
Image Size                      : 1440x1440
Megapixels                      : 2.1

miércoles, 17 de febrero de 2021

Crear usb de arranque windows en xubuntu

 Un día tenia que hacer un usb arrancable de windows para instalar en otro lugar, lo hice desde xubuntu 18.04 pero también funciona desde otros.

Mi usb era nueva por si les sirve también ese dato, bueno en consola hacemos lo siguiente:

Descargamos bootiso

curl -L https://git.io/bootiso -O

luego lo volvemos ejecutable

chmod +x bootiso

por si nos faltara alguna dependencia podremos instalar las siguientes:

sudo apt-get install wimtools

sudo apt-get install syslinux

sudo apt-get install extlinux


y luego pues ya con la imagen de windows hacemos lo siguiente corremos bootiso y le indicamos la ruta donde este la imagen iso de windows y el creara el pendrive arrancable (no olvides insertar el pendrive o usb)

./bootiso <Ruta>/<Imagen iso>

ejemplo:

./bootiso Descargas/Win10_20H2_v2_Spanish_x64.iso