X11 Remoto con SSH

http://mcuser.uv.es/es/art.php?art=ard&pag=rx11.html

Introducción

Si deseamos ejecutar programas gráficos que utilicen el entorno gráfico X11 (XFree86) sin tener que instalar el programa en local es posible hacerlo mediante el ssh.

Los programas podran residir tanto en otros equipos Mac OS X como en cualquier UNIX o Linux que soporte este entorno.

Para que funcione lo aquí expuesto hay que asegurarse que está instalado el X11.

Configuración Cliente

Para el X11 el cliente es la máquina remota a la que me conectaré.

Aquí se comenta el proceso a seguir en un Mac OS X, pero en cualquier otro sistema (UNIX, Linux) puede diferir.

Configuración del ssh

El cliente deberá tener configurado el X11Forwarding para lo cual, habrá que revisar y, si procede, modificar dos ficheros /etc/ssh_config y /etc/sshd_config.

ssh_config

Debe modificarse la línea de código

#ForwardX11 no

por

ForwardX11 yes

sshd_config

Debe modificarse la línea de código

#X11Forwarding no

por

X11Forwarding yes

Redireccionar DISPLAY

Además habrá que decirle dónde debe redireccionar la salida de pantalla y eso lo haremos con el comando:

export DISPLAY=localhost:10.0

Arrancar el servicio

Para arrancar el servicio únicamente deberemos dirigirnos a Preferencias del Sistema / Compartir y activar Sesión remota.

Servidor

Para el X11 el servidor es la máquina donde estoy trabajando.

Conectarse

Para conectarse al cliente se debe ejecutar el programa X11 (/Aplicaciones/Utilidades/) e introducir el comando:

ssh -X usuario@maquinacliente

A continuación nos pedirá la contraseña y, tras introducirla, nos permitirá trabajar como si estuviesemos en la máquina cliente.

Si todo ha funcionado correctamente podremos comprobar que funciona con un programa sencillo como:

/usr/X11R6/bin/xlogo

Excepciones en PHP

http://php.net/manual/es/language.exceptions.php

 <?php
function inverso($x) {
    if (!$x) {
        throw new Exception('División por cero.');
    }
    return 1/$x;
}

try {
    echo inverso(5) . "\n";
    echo inverso(0) . "\n";
} catch (Exception $e) {
    echo 'Excepción capturada: ',  $e->getMessage(), "\n";
}

// Continuar la ejecución
echo 'Hola Mundo\n';
?> 

SQL Transaccionales con php

http://php.net/manual/es/mysqli.commit.php

 <?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* Comprobar la conexión */
if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE Language LIKE CountryLanguage");

/* Desactivar la autoconsigna */
$mysqli->autocommit(FALSE);

/* Inserta algunos valores */
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");

/* Consignar la transacción */
if (!$mysqli->commit()) {
    print("Falló la consignación de la transacción\n");
    exit();
}

/* Eliminar la tabla */
$mysqli->query("DROP TABLE Language");

/* Cerrar la conexión */
$mysqli->close();
?>  

Alinear Horizontal y Verticalmente

Para ello introduciremos el objeto a centrar en otro con  propiedades display:table, el objeto a centrar tendrá el Display:table-cell.

Sigue el ejemplo

.ExternContainer{
 top: 0px;
 left: 0px;
 width: 100%;
 height: 100%;
 position: absolute;
 display: table;
 }
 .InternContainer{
 display: table-cell;
 text-align: center;
 vertical-align: middle;
 }

Recurso: http://www.w3.org/Style/Examples/007/center-example

Método para centrar Listas Horizontalmente:

HTML:
<div id="menu-outer">
  <div class="table">
    <ul id="horizontal-list">
      <li><a href="#"><img src="images/list-item-1.gif" alt="list item 1" /></a></li>
      <li><a href="#"><img src="images/list-item-2.gif" alt="list item 2" /></a></li>
      <li><a href="#"><img src="images/list-item-3.gif" alt="list item 3" /></a></li>
      <li><a href="#"><img src="images/list-item-4.gif" alt="list item 4" /></a></li>
    </ul>
  </div>
</div>

CSS:

#menu-outer {
    height: 84px;
    background: url(images/bar-bg.jpg) repeat-x;
}

.table {
    display: table;   /* Allow the centering to work */
    margin: 0 auto;
}

ul#horizontal-list {
    min-width: 696px;
    list-style: none;
    padding-top: 20px;
    }
    ul#horizontal-list li {
        display: inline;
    }

Recurso: https://css-tricks.com/centering-list-items-horizontally-slightly-trickier-than-you-might-think/