Buscar este blog

miércoles, 2 de abril de 2025

Combinar correspondencia con LibreOffice Writer

En el ejemplo se crea una carta para dar un aviso de que hay una reunión para los socios de un club. Algo del estilo: Hola, Juan García Pérez: Mañana hay una reunión en las escuelas de Noreña. Lo primero es crear el documento con LibreOffice Writer pero no ponemos ningún nombre, ya que ese nombre lo sacaremos de una base de datos o de una hoja de cálculo.
En el ejemplo usaremos una sencilla hoja de cálculo con los siguientes datos de los socios del club:
De vuelta a LO Writer, añadimos un campo en el lugar donde queremos que aparezca el nombre del socio. No s colocamos con el cursor y en el menú: Insertar → Campo → Más campos ...
Añadimos la base de datos (pestaña). En el ejemplo damos al botón examinar y cargaríamos la hoja de cálculo con los datos de prueba. En la imagen se ve que en “Selección de base de datos” se ha elegido una hoja de cálculo que se llama “Socios”, que al desplegarla vemos que tiene una columna que se llama “Socio”.
Insertamos el campo “Socio” en LO Writer. Vemos que en el documento aparece de color gris y entre signos “<>” el campo “Socio”.
El siguiente paso es ir al menú: Herramientas → Asistente para combinar correspondencia...
El asistente nos lleva por varios pasos, en el primero indicamos que queremos “Utilizar el documento actual” para combinar la correspondencia. Y pulsamos siguiente.
Ahora indicamos que vamos a crear una carta y pulsamos siguiente.
En el paso 3 damos directamente a finalizar.
De vuelta al documento, vemos que se ha abierto la barra de menú de combinar correspondencia. Si damos a las flechas podremos ver las distintas cartas que se van a crear. También podremos ver individualmente cada carta, guardarlas o imprimirlas.

Si damos a guardar, nos da la posibilidad de guardar las 3 cartas generadas en un solo documento o en documentos independientes a partir de un nombre común, por ejmplo: carta_1 carta_2 carta_3. Si te vale eso, pues ya está, pero lo guapo sería guardar las cartas en documentos diferentes con el nombre del socio, y aquí es donde LibreOffice tiene una forma “rara” de hacerlo (por lo menos hasta la versión 25) ya que en lugar de hacerlo desde la misma barra de herramientas de correspondencia, lo hay que hacer desde el menú de imprimir.

Imprimir en documentos individuales

 Ir al menú “Archivo”, “Imrpimir”. Aparecerá ventana indicando si se quiere imprimir una carta modelo, damos a “Sí”. 


 

Aparece la ventana “Combinación de correspondencia” que es diferente a la que usamos en los pasos anteriores. En esa ventana es donde se ve la tabla de la hoja de datos. Como salida elegimos “Archivo” y “Separar en documentes individuales”.


 Hay que escoger el campo que va a dar nombre a los archivos, en el ejemplo “Socio”. La ruta donde se van a guardar los archivos generados, lo cuales pueden ser en distintos formatos, por defecto usará el ODF (ODF es un formato de archivo que incluye a los archivos ODT, que son documentos de procesamiento de texto. ODF es un estándar internacional de archivos XML)


 

¡Y ya está!

 

 

 

jueves, 23 de mayo de 2024

QNAP y tareas programadas

Las tareas programadas en QNAP se realizan con "crontab", pero para que se mantengan tras reiniciar el equipo hay que hacer lo siguiente:

Editar el fichero crontab con la tarea que queramos programar: 

# vi /etc/config/crontab

Actualizar los cambios para que queden permanentes:

# crontab /etc/config/crontab

Reiniciar el servicio crontab:

# /etc/init.d/crond.sh restart

Con esto conseguimo que los cambios queden permanentes tras el reinicio del equipo.

 

lunes, 13 de mayo de 2024

 

Reiniciar el enrutador cada cierto tiempo nos sirve, por ejempplo, para que se limpie de procesos que puedan estar ocupando memoria de manera no deseada o simplemente para cambiar de IP pública.

Sin embargo, esto no es tan sencillo como parece, ya que el enrutador puede que no tenga un reloj interno que funcione en tiempo real. Esto podría provocar un ciclo interminable de reinicios.

Durante el arranque del enrutador, el reloj se configura inicialmente mediante “sysfixtime” con la marca de tiempo más reciente de cualquier archivo que se encuentre en /etc. Es decir, al inicio del arranque el router toma como hora la del archivo más moderno que se encuentre en /etc. El problema está en controlar que archivo es el más moderno, el cual puede ser un archivo de estado o un archivo de configuración, modificado quizás 30 segundos antes del reinicio iniciado por cron. En el proceso de arranque, el reloj toma la hora de ese archivo. A continuación el proceso cron se inicia y unos segundos más tarde nota que el momento de inicio requerido ha llegado de nuevo y se reinicia nuevamente entrando en bucle.

Si todo fuese bien, al final del proceso de arranque se inicia ntpd obteniendo la hora de internet, pero puede pasar un tiempo antes de que ntpd obtenga y establezca la hora correcta, por lo que cron puede iniciar de nuevo el reinicio en el medio cayendo en el bucle de reinicios.

Un truco que no sirve como solución es hacer un retraso de más de un minuto y crear a continuación un archivo en /etc justo antes de reiniciar. De esta forma, al reiniciarse y coger la hora del archivo más moderno, este tendría al menos más de un minuto por encima de la hora a la que se programó el reinicio, con lo cual evitamos que se vuelva a reiniciar.

# Reiniciar a las 4:30 a. m. todos los días
# Nota: Para evitar un bucle de reinicio infinito, se espera 70 segundos
# y se crea un archivo en /etc para configurar el reloj (touch /etc/banner)
# que tendrá como hora de creación las 4:31 a.m. Así se evita el reinicio en bucle.
30 4 * * * sleep 70 && touch /etc/banner && reboot

Fijarse que el reinicio se programa a las 4:30, se esperan 70 segundo y se crea el fichero /etc/banner con esa hora de creación. En la práctica el reinicio se produce 70 segundos más tarde de lo programado, es decir, a las 4:31:10, por tanto, en el arranque se cogerá como hora inicial las 4:31:10, lo que asegura que no se vuelva a producir otro reinicio programado a las 4:30 y caer en un bucle de reinicios.


NOTA: En muchas plataformas shutdown no funciona como se espera, ya que simplemente detendrá la CPU pero no apagará el aparato.