Resolver problema de retardo en conexiones SSH con Mac

En ocasiones, la conectividad vía SSH produce ciertos retrasos o delays en poder hacer login contra otro Mac remoto. Según leo en Mac OS X Hints puede deberse a la autenticación GSSAPI (kerberos).

Para resolverlo, puedes crear un fichero config en el directorio ssh de tu equipo. En Terminal:

$ touch ~/.ssh/config

Edita el fichero con el editor que prefieras, vi por ejemplo:

$ vi ~/.ssh/config

Añade al fichero las opciones para que no busque la autenticación GSSAPI y que fuerce la autenticación por IPv4, y no intente negociarla por IPv6, con el parámetro AddressFamily, sobre un Host en concreto:

Host -nombre-del-host-o-ip-
 GSSAPIAuthentication no
 GSSAPIKeyExchange no
 AddressFamily inet

donde ‘-nombre-del-host-o-ip-‘ es el nombre con el que hagas la conexión SSH normalmente. Puede ser la IP del host si no la tienes añadida al DNS.

Si usas el comodín ‘*’ podrás referirlo para todos los hosts de destino:

Host *
 GSSAPIAuthentication no
 GSSAPIKeyExchange no
 AddressFamily inet

SaludoX

Función PHP para quitar las tildes de una cadena

Se puede usar esta función de forma que le pases una cadena de texto, con tildes de todas las clases, y que cada coincidencia la cambie por el caracter sin tilde o signo de puntuación.

function quitar_tildes($cadena) {
$no_permitidas= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","À","Ã","Ì","Ò","Ù","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","ÃŽ","Ô","Û","ü","ö","Ö","ï","ä","«","Ò","Ï","Ä","Ë");
$permitidas= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
$texto = str_replace($no_permitidas, $permitidas ,$cadena);
return $texto;
}

Y funciona de maravilla.

Dividir un fichero grande en varios más pequeños

Tengo entre manos un volcado de base de datos de más de 1 giga de tamaño. Algo que ni el BBEdit es capaz de tragarse con muchos otros programas abiertos.

Desde Terminal, haciendo un cat y sabiendo lo que buscas puedes ir a la línea que necesitas muy rápidamente:

$ cat fichero.sql | grep cadena_a_buscar

Y las líneas con la ‘cadena_a_buscar’ aparecerán filtradas en la shell de comandos, cmo el Terminal del Mac OS X.

Pero esto no es útil si buscas un tabla en concreto y todo los campos que tenía dentro. Para eso puedes dividir el fichero enorme en otros mucho más pequeños, por tamaño en kilobytes o por líneas. A mi me ha venido mejor dividirlo por líneas, en concreto hacer partes por cada 5 mil líneas.

$ split -l 5000 fichero.sql ficheros_salida

Y te crea cuantos ‘ficheros_salida’ necesite de 5 mil líneas cada uno, tantos ficheros como sean necesarios.

Ya solo debes abrir ficheros más pequeños para encontrar las líneas que buscas todas juntas y sin cargar en memoria tantos datos.

Puedes leer más parámetros del comando split en el manual de tu Terminal o en enlaces como este.

SaludoX