Cómo usar find y rm para buscar y borrar ficheros

Muchas veces, es necesario buscar y borrar ficheros o subdirectorios en el disco.

Un ejemplo típico ocurre cuando queremos borrar todos los subdirectorios “CVS” que hay dentro del directorio de un proyecto.

Para eso, es muy útil combinar “find” y “rm” de esta forma:

$ find . -name ‘CVS’ -exec rm -fr {} \;

El comando “find” localiza los directorios o ficheros que cumplen el patrón que se necesita, y con la opción “-exec”, pasa los resultados al comando “rm” para que los borre.

Eliminar notificaciones de Windows Genuine Advantage (WGA)

El Windows Genuine Advantage es un sistema de microsoft para intentar controlar la ejecución de software pirata en sistemas Windows, incluido el propio sistema operativo.

Cuando se instala este componente (vía windows update), pueden aparecer avisos indicando que tal o cual software no es original, y que podemos estar siendo “víctimas de una falsificación de software”.

Cada cual tendrá sus motivos, pero a veces es interesante eliminar este control.

Para ello, hay que seguir estos pasos:

  1. Iniciar Windows en modo seguro (ya sabes, pulsar F8 en el inicio y seleccionar la opción “iniciar windows en modo a prueba de fallos” o “modo seguro”).
  2. Buscar y eliminar los ficheros con nombre “WgaTray.exe” que estén dentro de “C:\Windows\” . Teoricamente debería haber ficheros con ese nombre en:
    • C:\Windows\System32\
    • C:\Windows\System32\dllcache\

    Pero yo sólo lo he encontrado en el primero.

  3. En el “RegEdit”, eliminar la carpeta ” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
    Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon\”.
  4. Reiniciar Windows normalmente.

Al arrancar Windows, no nos aparecerán las notificaciones de WGA, pero Windows Update volverá a intentar instalarnos el “parche” correspondiente, con lo que es mejor no dejar que Windows Update haga las actualizaciones por su cuenta, sino que nos díga qué cosas hay pendientes para que nosotros seleccionemos qué queremos descargar y actualizar.

Más info: aquí.

Problemas de codificación de caracteres en PHP

A veces, desarrollando webs, se muestran mal los caracteres acentuados, eñes, diéresis, cedillas, y otros pertenecientes a otros idiomas.

No siempre es evidente dónde se encuentra el problema, ya que se pueden producir errores de codificación en la base de datos, en el php, en el cliente web, en los propios ficheros de texto que contienen el PHP, y lo mismo en algún sitio más.

En cualquier caso, a veces viene bien “ver” los bytes exactos que contiene el string que estamos manejando en PHP, porque así podemos saber en qué está codificado. Para eso, siempre utilizo este trozo de código como una traza:

———-8<———-8< ———-8< ———-
$string_sospechosa = $variable_que_contiene_el_string_a_analizar;
for($x=0; $x < strlen($string_sospechosa); $x++) {
echo dechex(ord(substr($string_sospechosa, $x, 1))), ” – “;
}
———-8<———-8< ———-8< ———-

De esta forma, vemos qué bytes (en hexadecimal) tiene un determinado string.

Pero una vez que vemos los bytes del string, necesitamos tener a mano información sobre UTF-8 y sobre ISO-8859-1, y para eso entre otras páginas, se puede encontrar la información aquí:

– UTF-8: http://www1.tip.nl/~t876506/utf8tbl.html

– ISO-8859-1: http://casa.colorado.edu/~ajsh/iso8859-1.html

NOTA importante:

En general, para que todo funcione bien sin importar el idioma, hay que:

– hacer que el cotejamiento de la base de datos sea siempre UTF-8.

– los ficheros .php del web deben estar codificados en UTF-8.

– hay que indicar en el HTML generado, que el propio HTML está codificado en UTF-8 mediante el meta:

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />

– y hay que decirle al navegador que interprete todo lo que recibe como UTF-8 (menú “view / character encoding / Unicode UTF-8)

– … y rezar.

NOTA sobre IExplorer, UTF-8 y AJAX:

Si se envía un string como parámetro a una página mediante AJAX, es importante que el envío de los parámetros en la llamada HTTPRequest se haga por POST, porque si se hace por GET, el IExplorer cambia la codificación de los parámetros y en el PHP llamado, al recibir los parámtros, estos llegan corrompidos.

El Firefox lo hace bien tanto por GET como por POST, así que… instálate Firefox :)