Cambiar la configuración de dos monitores desde terminal: xrandr

El comando xrandr permite ver la configuración actual de los monitores

xrandr
Screen 0: minimum 8 x 8, current 2720 x 1024, maximum 32767 x 32767
HDMI1 connected primary 1440×900+1280+0 (normal left inverted right x axis y axis) 410mm x 260mm
   1440×900      59.90*+
   1280×1024     75.02    60.02 
   1280×720      60.00 
   1024×768      75.08    70.07    60.00 
   832×624       74.55 
   800×600       72.19    75.00    60.32    56.25 
   640×480       75.00    72.81    66.67    60.00 
   720×400       70.08 
VGA1 connected 1280×1024+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
   1280×1024     60.02*+  75.02 
   1280×960      60.00 
   1152×864      75.00 
   1024×768      75.08    70.07    60.00 
   832×624       74.55 
   800×600       72.19    75.00    60.32    56.25 
   640×480       75.00    72.81    66.67    60.00 
   720×400       70.08 
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

El siguiente escript configura el monitor1 llamado VGA1 y poner el monitor2 llamado hdmi1 a la izquiera.

gedit dosmonitores.sh
xrandr  –output VGA1 -s 1280×1024 -r 75 –left-of HDMI1

Hay una herramienta llamada arandr, que es un Screen Layout Editor, que genera el script de forma automática dandole a guardar como. Ejemplo:

xrandr –output VGA-0 –mode 1280×1024 –pos 1920×0 –rotate normal –output DVI-I-1 –off –output DVI-I-0 –off –output HDMI-0 –primary –mode 1920×1080 –pos 0x0 –rotate normal

Seria equivalente a :
xrandr –output VGA-0 -s 1280×1024 -r 75 –right-of HDMI-0

Términos para denominar las aplicaciones

Aplicación con uso  Exterior / Interior de la  empresa:

1. FRONT-OFFICE / FRONT-END : Parte de la aplicación que interactua con el usuario externo. Es la parte exterior a la empresa. Es la aplicación que usan los clientes.

2. BACK-OFFICE / BACK-END: Parte de la aplicación que interactua con la empresa. Es la parte interior de la empresa. Son los propietarios.

Tipos de desarrollo de una aplicación:

Una aplicación según el grado de implantación, toma varios términos:

1. DESA. Desarrollo. Es una versión inicial. Se prueba internamente.

2. PRE. Pre-producción.  Es una versión casi operativa.  Se prueba internamente.

3. PRO. Producción. Es un versión operativa. Es la aplicación ya utilizable por los usuarios reales.

Fuente: La experiencia laboral.

Copia seguridad en Java

 Seguidamente se muestra como hacer copia de carpetas de un origen a destino en Java. Sino existe la carpeta la crea. Son dos ficheros: Backup.java y FileUtils.java

Backup.java
=====================================================
package backup;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Backup {
 public static void main(String[] args) {

        try {
            DateFormat dateFormat = new SimpleDateFormat(«yyyy-MM-dd»);
            Calendar cal = Calendar.getInstance();
            String dia = dateFormat.format(cal.getTime());

            File srcDir;
            File destDir;
            FileUtils fileUtils;
            fileUtils = new FileUtils();
            int contador = 1;

            System.out.println(«Fecha: » + dia);

            srcDir = new File(«C:\Users\Paco\Documents\Fuente»);
            destDir = new File(«C:\Users\Paco\Documents\backup\» + dia + «\Fuente»);
            fileUtils.copyDirectory(srcDir, destDir);
            System.out.println(contador + «. Copiado » + srcDir + » » + » en » + destDir);
           
        } catch (IOException ex) {
            Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}
FileUtils.java
=====================================================
package backup;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

class FileUtils {

    public void copy(File sourceLocation, File targetLocation) throws IOException {
        if (sourceLocation.isDirectory()) {
            copyDirectory(sourceLocation, targetLocation);
        } else {
            copyFile(sourceLocation, targetLocation);
        }
    }

    void copyDirectory(File source, File target) throws IOException {
        File destino;
        File origen;

        if (!target.exists()) {
            //target.mkdir();
            target.mkdirs(); // Crea carpetas sino existe
        }

        for (String f : source.list()) {
            origen = new File(source, f);
            destino = new File(target, f);
            if ((origen.lastModified() > destino.lastModified()) || (origen.length() > destino.length())) {
                copy(origen, destino);
            }
        }
    }

    private void copyFile(File source, File target) throws IOException {
        try (
                InputStream in = new FileInputStream(source);
                OutputStream out = new FileOutputStream(target)) {
            byte[] buf = new byte[1024];
            int length;
            while ((length = in.read(buf)) > 0) {
                out.write(buf, 0, length);
            }
        }
    }
}

Fuente:
https://stackoverflow.com/questions/5368724/how-to-copy-a-folder-and-all-its-subfolders-and-files-into-another-folder