Cómo copiar archivos y carpetas con nombres largos en Windows

En Windows, no podemos copiar directorios y/o archivos cuya ruta completa es larga, por lo general, más de 254 caracteres.

En esta situación, se puede utilizar el comando robocopy. El mismo viene preinstalado en Windows 7, y se puede instalar en versiones previas.

robocopy <ORIGEN> <DESTINO> [<OPCIONES>]

Algunas opciones interesantes:

  • /S : copia los subdirectorios, sin los vacíos
  • /E : copia los subdirectorios, incluyendo los vacíos
  • /COPYALL : copia toda la información del archivo
  • /MOV : mueve los archivos (los borra el origen luego de copiarlos)

Ejemplo: si tenemos la siguiente estructura

  • c:\
    • dir_origen\
      • ruta_con_mas_de_255_caracteres\
        • archivo.txt

e intentamos copiar el contenido de dir_origen a dir_destino, el sistema no lo permitirá.

Para lograrlo debemos ingresar desde la línea de comandos:

robocopy c:\dir_origen c:\dir_destino /S

Pueden ver más ejemplos de uso de robocopy

Anuncios

Cómo funciona la carga de CPU en Linux

Linux informa la carga del servidor mediante un indicador que se presenta como la carga de CPU o CPU Load. Cuanto menor sea este valor, es mejor.

Este valor es la longitud de la cola de ejecución: la cantidad de procesos que están corriendo junto con los encolados (esperando para ejecutarse).

En lugar de valores puntuales se utilizan 3 promedios (average) en el tiempo: el último minuto, los últimos 5 minutos y los últimos 15 minutos.

Los mismos se observan al ejecutar cualquiera de estos 2 comandos: uptime y top, de la siguiente manera:

load average: 0.22, 0.85, 0.96

Por lo general, se recomienda analizar los valores 2 (5 minutos) y 3 (15 minutos) para tomar decisiones, según las siguientes consideraciones.

En un sistema con un procesador que tiene un solo core (núcleo):

  • Revisar la situación (0.70): si el load average se mantiene sobre 0.70 es recomendable investigarlo.
  • Solucionarlo (1.00): si el load average se sostiene sobre 1.00, es necesario resolver el problema de inmediato. De lo contrario, sólo empeorará.
  • Estamos en problemas (5.00): cuando el load average exceda 5.00 de manera sostenida, el servidor se está colgando o respondiendo cada vez con mayor lentitud.

Como pueden imaginarse, estos valores son subjetivos y pueden ajustarse según las necesidades, pero comprendiendo lo que significan. Además, se ven afectados por la cantidad de cores de los procesadores que existan en el servidor.

cantidad total de cores del servidor = suma de los cores de cada procesador

El 100% de utilización se mostrará con una carga = al total de cores del servidor. Si tenemos 2 cores, la carga será 2.0 y para 4 cores, la carga será 4.0

En un sistema con múltiples cores, la carga nunca debería exceder el número de cores disponibles.

 

Ejemplo: considerando que tenemos 4 cores en nuestro sistema, si ejecutamos:

~$ uptime

18:34:30 up 1:43, 10 users, load average: 4.20, 4.24, 4.31

Claramente hemos sobrepasado el primer límite de 2.80 = 4 * 0.70 y como la carga se mantiene consistentemente sobre 4 (cantidad de cores), debemos buscar el problema y solucionarlo con prioridad. Estaríamos en la peor situación si la carga fuera superior a 20.0 = 4 * 5.0

 

Determinar la cantidad de cores

Para obtener el número preciso de cores del sistema podemos ejecutar:

grep 'model name' /proc/cpuinfo | wc -l

 

Basado en:

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

Consultas de textos case sensitive en MySQL

Mysql es por defecto case insensitive (no sensible a las mayúsculas): no diferencia las mayúsculas de las minúsculas. Esto se debe a que tiene configurado inicialmente el collation ‘latin1_swedish_ci’.

mysql> SELECT nombre_usuario FROM usuarios WHERE nombre_usuario LIKE 'al%'; # retorna usuarios con nombres como 'Alberto', 'Álvaro', 'alejo'

Por lo general, cuando hacemos una comparación es muy conveniente este comportamiento dado que no importa la capitalización que usemos, encontraremos los resultados.

 

Tengamos en cuenta que para los campos con caracteres no binarios: CHAR, VARCHAR y TEXT, la comparación depende del collation de los mismos.

En cambio, para los campos binarios: BINARY, VARBINARY y BLOB se utiliza el valor numérico de los bytes en la comparación, por lo que serán case sensitive en el caso de los caracteres.

Si se compara una cadena binaria y una no-binaria, la comparación se realiza como si fueran ambas binarias.

 

Pero en ciertos casos, cuando deseamos comparar los caracteres contemplando su capitalización, podemos optar por alguna de las siguientes alternativas:

  • Usar el operador COLLATE para indicar un collation que sea case sensitive (termina con _cs o _bin)  que pertenezca al juego de caracteres correspondiente a un campo, un valor o a ciertas partes de la consulta.
    • Disponible a partir de Mysql 4.1
  • Usar el operador BINARY sobre el valor o columna en la consulta
  • Cambiar  el collation de la columna CHAR(N), VARCHAR(N) o TEXT mediante un ALTER TABLE por uno que sea case sensitive:
    • agregando BINARY al final, lo cual especifica el collation _bin para el juego de caracteres correspondiente
    • indicando el CHARSET y COLLATION específicos
  • Cambiar el tipo de dato de la columna mediante un ALTER TABLE por uno que sea case sensitive:
    • BINARY, VARBINARY o BLOB

Ejemplos de uso de COLLATE

mysql> SELECT nombre_usuario FROM usuarios WHERE nombre_usuario LIKE 'Al%' COLLATE latin1_spanish_cs; # retorna usuarios con nombres como 'Alberto' o 'Álvaro'. NO 'alejo'

mysql> SELECT nombre_usuario FROM usuarios WHERE nombre_usuario COLLATE latin1_bin LIKE 'al%'; # retorna usuarios con nombres como 'alejo'. NO 'Alberto' ni 'Álvaro'

 

Sabiendo también cómo cambiar el tipo de dato a un valor o a un campo, podemos notar que todas las expresiones son equivalentes cuando se utilizan en una comparación:

CAST(nombre AS BINARY) = CONVERT(nombre,BINARY) = BINARY nombre = nombre COLLATE latin1_bin

COLLATE no cambia el tipo de dato, solo aplica un collation al momento de usar el campo en una comparación

Cambiar el tipo de un valor en MySQL

Las formas de cambiar el tipo de un valor o un campo en una consulta son las siguientes:

Operador BINARY

Transforma un texto a una cadena binaria.

Una cadena binaria contiene bytes en lugar de caracteres, lo que la hace case sensitive cuando se utiliza para una comparación. Adicionalmente los espacios al final se vuelven significativos.

mysql> SELECT 'Nombre' = 'nombre'; # retorna 1

mysql> SELECT BINARY 'Nombre' = 'nombre'; # retorna 0

Se puede aplicar CAST para obtener el mismo resultado

BINARY texto = CAST(texto AS BINARY)

Importante: Si la columna sobre la que se aplica BINARY está indexada, Mysql podría no utilizar el índice en esa consulta!

 

Funciones CONVERT y CAST

Convierten una expresión de un tipo en otro.

La forma de aplicarlas es la siguiente:

CONVERT(expresión,tipo)

CAST(expresión AS tipo)

donde tipo puede ser:

  • BINARY[(N)]
    • El parámetro opcional (N) hace que no se usen más de N bytes en la conversión
      • Desde Mysql 5.0.7, los textos menores a N bytes son completados con bytes 0x00 hasta la longitud N.
  • CHAR[(N)]
    • El parámetro opcional (N) hace que no se usen más de N caracteres en la conversión
    • Trata la expresión como una cadena con el conjunto de caracteres por defecto.
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
    • Disponible desde Mysql 5.0.8
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [<ENTERO>]

mysql> SELECT CONVERT('2014-01-01',DATETIME); # retorna 2014-01-01 00:00:00

mysql> SELECT CAST('150 usuarios' AS UNSIGNED); # retorna 150

Crear una biblioteca en Windows 7

En ciertos casos tenemos más de una carpeta o directorio cuyo contenido es similar, pero están separadas porque son series o películas que aún no hemos visto, aplicaciones descargadas que aún no instalamos, fotos familiares o de amigos, en fin por cualquier razón que deseemos mantenerlas en distintas ubicaciones.

Cuando queremos buscar algún contenido en particular tenemos que ir pasando de un lugar a otro hasta encontrarlo. Para simplificar esta gestión, Windows 7 permite definir Bibliotecas, las cuales básicamente son agrupadores de carpetas que nos permiten organizarlas y hacer búsquedas dentro de todas ellas al mismo tiempo.

Crear una nueva biblioteca

  1. acceder a Equipo o al Explorador de Windows
  2. click derecho sobre Bibliotecas (en el panel izquierdo) y seleccionar Nuevo > Biblioteca
  3. escribir el nombre

Agregar una carpeta a la biblioteca

Si es la primer carpeta

  1. seleccionar la biblioteca
  2. presionar el botón “Incluir una carpeta” en el panel derecho y elegir la deseada

Si ya tiene al menos una carpeta

  1. seleccionar la biblioteca
  2. click sobre el texto de “Ubicación de 1” o “n ubicaciones”, en el panel derecho resaltado debajo del nombre de la biblioteca
  3. presionar el botón “Agregar…” y elegir la deseada
  4. confirmar con “Aceptar”

La vista indicada en el punto 2 es similar a:

Biblioteca NOMBRE

Incluye: 2 ubicaciones <- click aquí

 

De forma genérica, también se puede agregar una carpeta haciendo:

  1. click derecho sobre la biblioteca y seleccionar Propiedades
  2. presionar el botón “Incluir una carpeta…” y elegir la deseada
  3. confirmar con “Aceptar”

Generar valor aleatorio en MySQL

Para obtener un número aleatorio entre MIN y MAX en un select de Mysql debemos utilizar la siguiente fórmula:

FLOOR(MIN + RAND() * (MAX – MIN))

Por ejemplo, para obtener un número entre 10 y 50 se debería hacer:

mysql> SELECT FLOOR(10+ RAND() * 40) AS random;

 

Basado en:

http://anothermysqldba.blogspot.com.ar/2014/06/mysql-random-integers.html

Conectarse con una segunda cuenta a Skype

Para los que necesitan conectarse con una segunda cuenta a Skype, lo más simple es ingresar en Inicio > Ejecutar…

"C:\Program Files\Skype\Phone\Skype.exe" /secondary

Para evitar repetir esta operación, podemos:

  1. Duplicar el acceso directo a Skype que exista en el escritorio o en Inicio
  2. Click derecho sobre el acceso directo generado
  3. Elegir la opción Propiedades del menú contextual
  4. En la solapa General, en el campo del nombre cambiarle el nombre para no confundirlo con el original
  5. En la solapa Acceso directo, establecer en el campo Destino: "C:\Program Files\Skype\Phone\Skype.exe" /secondary