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 :)

Cómo escribir en VI el caracter “ESC” y el “retorno de carro”

Aun no he contado cómo utilizar macros, pero esto es muy útil precisamente para esas macros.

Para escribir en el texto que estamos editando (estamos en alguno de los modos de edición) el carácter “ESC” o el retorno de carro, hay que hacer esto:

  • ESC (^[):  hay que escribir “ctrl+v <ESC>“. Primero se pulsa “ctrl+v” y luego se pulsa la tecla “ESC”. Si “ctrl+v” está mapeado para alguna función como pegar texto, se puede usar en su lugar “ctrl+q“.
  • Retorno de carro (^M): hay que escribir “ctrl+v <enter>“. Igual que antes, si el “ctrl+v” está mapeado, se usa “ctrl+q“.

Pronto más cosas sobre vi.

Más info: aqui

Introducción a VI

El VI es un editor de texto que apareció en los sistemas UNIX, fundamentalmente para editar código. Es importante saber cómo se maneja el VI si tienes que trabajar con servidores UNIX de cualquier tipo, porque si hay algún editor instalado en UNIX, suele ser VI.

Nada más arrancar, VI está en modo comando. En este modo no se puede meter texto como se esperaría poder hacer en un editor, pero se pueden hacer otras muchas cosas que veremos luego.

Estando en modo comando, podemos pasar a modo “edición” de varias formas, pulsando alguno de los siguientes caracteres:

  • a (append): después de pulsar la tecla “a”, podremos insertar texto a la derecha de donde se encontraba el cursor.
  • A (Append): si pulsamos “shift+a” (a mayúscula), podremos insertar texto después del último caracter de la línea en la que estaba el cursor.
  • i (insert): se insertará texto en la misma posición del cursor.
  • I (Insert): se insertará texto en el primer carácter de la línea en la que está el cursor.
  • o (open): se insertará una línea vacía debajo de la que tuviera el cursor.
  • O (Open): se insertará una línea vacía encima de la que tuviera el cursor.

En cualquiera de estos modos de edición se podrá escribir texto como en cualquier otro editor visual del estilo del word, y volveremos al modo comando pulsando “ESC”.

Los modos de edición valen para escribir texto, pero las cosas interesantes que hace VI, se hacen todas en modo comando.

En modo comando, cada tecla que se toque hace algo, ejecuta un comando.

Vamos a ver los comandos más importantes.

Guardar y salir:

Cuando hemos entrado por primera vez en VI, el primer problema es cómo salir. Si estamos en windows con VIM (VI iMproved), podemos pinchar con el ratón en el típico botón de la “X”. Pero en UNIX, sobre todo en una consola de texto, ese botón no existe. Así que en realidad, estos comandos son los primeros que hay que aprender.

  • :w<enter>: guarda el fichero que se esté editando, siempre que ya existiera en el disco duro.
  • :w!<enter>: en algunos casos (p.e. el fichero es de sólo lectura, pero nosotros somos los dueños), “:w<enter>” da un mensaje de error y no guarda. Podemos intenter forzarle con la “!”.
  • :w <nombre_de_fichero><enter>: guarda el fichero, con el nombre indicado.
  • :q<enter>: sale del vi.
  • :q!<enter>: si hemos modificado el fichero y no se ha guardado, “:q<enter>” da un mensaje y no cierra el vi. En este caso, hay que forzarle con la “!” y saldrá sin guardar los cambios.
  • :wq!: guarda y sale, forzando el guardado.
  • :wqall!: guarda y sale de todos los ficheros que se estén editando, forzando que se guarden todos. Luego veremos esto de editar varios ficheros a la vez.

Desplazar el cursor:

Casi todos los comandos afectan al texto sobre el que está el cursor, por lo que hay que saber cómo moverse por el texto.

  • flechas: las teclas de cursor desplazan el cursor sobre el texto en la dirección que indican. Normalmente. Antiguamente no existían estas teclas y se usaban otras…
  • h: cursor a la izquierda.
  • j: cursor abajo.
  • k: cursor arriba.
  • l: cursor a la derecha.
  • 0 (cero): cursor al principio de la línea.
  • $: cursor al final de la línea.
  • gg: cursor al principio del fichero (primer caracter de la primera línea).
  • G (shift+g): cursor al final del fichero (primer caracter de la última línea).
  • ctrl+f (forward): desplaza el cursor una página hacia abajo en el fichero.
  • ctrl+b (backward): desplaza el cursor una página hacia arriba en el fichero.

Borrar:

  • x: borra el carácter que esté debajo del cursor.
  • dd: borra la línea en la que esté el cursor.

Buscar:

  • /<expresion_regular><enter>: pone el cursor en la primera ocurrencia de <expresion_regular> en el fichero hacia la derecha y hacia abajo (p.e. /asdf<enter> busca “asdf” del cursor en adelante).
  • ?<expresion_regular><enter>: pone el cursor en la primera ocurrencia de <expresion_regular> en el fichero hacia la izquierda y hacia arriba.
  • n: repite la última busqueda realizada, en el sentido que se haya realizado.

Reemplazar:

  • r<caracter>: reemplaza el caracter bajo el cursor por el que se teclee a continuación de la”r” (p.e. “ra” cambia el caracter bajo el cursor por una “a”).
  • c<desplazamiento>: borra el texto desde el cursor hasta donde indique el comando de desplazamiento y nos pone en modo inserción, del que se saldrá pulsando “ESC” (p.e. “c$” borra desde el cursor al final de línea, “cG” borra desde la línea del cursor al final del fichero).
  • :%s/<expresion_regular>/<texto>/: cambia todas las ocurrencias de <expresion_regular> en el fichero (sólo una por línea), por <texto>. Para que se cambien todas las ocurrencias de <expresión_regular> aunque haya varias por línea, hay que añadir una “g” al final (p.e. si tenemos una línea “asdf qwer qwer zxcv” y ejecutamos “:%s/asdf/Z/g”, la línea quedará así “Z qwer Z zxcv”. Si no ponemos la “g” final, quedará “Z qwer asdf zxcv”).

Editar varios ficheros a la vez:

Si hemos abierto varios ficheros a la vez (p.e. con esto en la línea de comandos de UNIX “# vi 1.txt 2.txt”), VI los abre todos pero sólo nos enseña el primero. Podemos decirle que nos muestre todos a la vez, dividiendo la pantalla en varios trozos. También se pueden abrir nuevos “trozos de ventana” con otros ficheros, o volver a dejar el fichero actual en pantalla completa.

  • :all<enter>: muestra todos los ficheros que se estén editando a la vez, cada uno en un trozo de la pantalla.
  • :ctrl(ww): esto es pulsar “w” dos veces seguidas mientras se mantiene pulsada la tecla “ctrl”. Cambia el cursor del fichero que se esté editando al siguiente. Cuando llega al último, pasa de nuevo al de más arriba.
  • :ctrl+w<flecha_arriba_o_abajo>: esto es, pulsar “ctrl+w”, y una vez soltado el “ctrl”, pulsar la flecha hacia arriba o acia abajo. Cambia el cursor al fichero que esté encima (flecha arriba) o debajo (flecha abajo) del que tuviera el cursor.
  • :split <nombre_de_fichero>: abre un nuevo trozo de ventana con el fichero indicado.
  • :only: pone el fichero actual en pantalla completa. El resto de los ficheros siguen ahi, pero no los vemos. Podemos volver a usar “:all<enter>” para verlos todos juntos.
  • :new: abre un nuevo fichero sin nombre.

_

A muchos de los comandos comentados, se les puede anteponer un número, que indicará el número de veces que hay que ejecutar el comando (p.e. “10x” borra 10 veces el caracter bajo el cursor, y “10dd” borra 10 veces la línea que está bajo el cursor).

Esto es un resumen de comandos. Hay más, y más combinaciones. Aprender vi no es fácil, pero una vez dominado, cualquier otro editor se queda corto de funcionalidades 😉

En próximos posts, iré añadiendo cosas interesantes como los buffers, y las macros.

Más info sobre expresiones regulares: aqui

Más info: en google… :)