El patrón de diseño Singleton (implementado en PHP)

Vamos con la entrada número 400 del blog, y la 200 de informática. Curioso, llegados a este punto de casi dos años bloggeando un tema que no era el principal ha acabado ocupando el 50% del contenido del blog.

En fin, seguimos con los patrones de diseño. El otro día hablaba del patrón Decorator, hoy vamos con el Singleton.

La idea del patrón Singleton, también llamado de instancia única, es restringir la creación de objetos pertenecientes a una clase a sólo uno. Garantiza que sólo hay una instancia y proporciona un único punto de acceso.

La idea es que la clase tenga un constructor privado para que no pueda ser accedido desde fuera de la clase y que aunque haya clases hijas estas no puedan instanciar objetos. También debe tener una propiedad estática privada donde almacenaremos nuestra instancia y un método estático que sea el punto de acceso global a la misma, devolviéndola cuando se lo llama.

Vamos con el ejemplo típico y tópico del objeto de base de datos, que suele ser el uso más común de este tipo de clases. Porque crear varias instancias de acceso a una base de datos en la mayoría de los casos es un malgasto de recursos, lo mejor suele ser tener una sola instancia para realizar las conexiones.

class Database {
//Propiedad estática, inicializada a nulo, donde guardaremos la instancia de la propia clase
    static private $instance = null;
//Definimoms el método constructor como privado
    private function __contruct() {}
     
//Método estatico que sirve como punto de acceso global
    public static function getInstance() {
        if (self::$instance == null) {
//Si no hay instancia creada, lo hace. Si la hay tira p'alante
            self::$instance = new Database();
        }
//Al final devuelve la instancia
        return self::$instance;
    }
	     
 //a continuación ya meterías todas las funciones necesarias para un objeto de base de datos. CRUD, etc...
}

Y ya est… No, sorry man pero no. Con el código así todavía es posible que alguien logre hacer más de una instancia. Y te dirás ¿cómo? Pues porque todavía es posible usar la clonación y la serialización para lograrlo. Cosa mala, pero con los métodos mágicos de PHP5 podemos arreglarnos.

Para evitar la cuestión de la clonación definimos el método mágico __clone() en la clase, para que en lugar de permitir el clonado del objeto nos lance un error y detenga el script:

public function __clone()
{
  trigger_error("No puede clonar una instancia de ". get_class($this) ." class.", E_USER_ERROR );
}

Y vamos con el tema de la serialización y deserialización. Con la función serialize() se puede almacenar una representación apta de una variable (y una instancia de un objeto es, al fina, una variable) mientras que con unserialize() podemos acceder a ella como se si tratara de un clon. De nuevo hay que redefinir un método mágico, en concreto esta vez __wakeup(), que es el método que se invoca al deserializar un objeto. De esa forma se evita que pueda ser accedido. También podría hacerse con __sleep(), que es el que se invoca al serializar, pero veo más práctico evitar la deserialización.

public function __wakeup()
{
  trigger_error("No puede deserializar una instancia de ". get_class($this) ." class.", E_USER_ERROR );
}

En fin, he caído en el ejemplo tópico, pero también me pareció el más claro. Un saludo, disfruta este articulo 400.

Motivos para amar a Shaq

Como según twitter igual se acaba el mundo ya que Corea del Norte se han encabronado pues no me voy  ir a la tumba (o a la desintegración nuclear) sin rendir este merecido homenaje a Shaquille O’Neal.

Pero hoy no voy  a hablar de sus 4 anillos, sus 15 all stars, sus 3 MVP de las finales, sus 3 MVP del all star, su MVP de la liga regular o sus dos títulos de máximo anotador. No, Shaquille hizo una carrera digna del Hall of Fame pero no le amamos por eso. Seguramente le puedas meter entre los 10 pivots más importantes de la historia, pero los motivos para amar a Shaq están en su carisma.

Shaq

Porque aunque el Gangnam Style esté muy de moda, Shaq a principios de los 90 ya inventó el Gañán Style (porque hay que ser gañán para escoñar así los tableros). Porque poca gente puede bailar breakdance pesando 160 kilos. Porque a pesar de que llegó a acabar a hostias con Barkley en medio de un partido ahora hasta se lleva bien con él y presentan un programa juntos. Porque su videojuego tenía cierta gracia (y era mejor que el de Jordan). Porque el Harlem Shaq mola más que el Harlem Shake. Porque nos arranca una sonrisa tanto con su videoblog Shaqtin’ a Fool y con su canal de youtube. Porque se hizo rapero a pesar de no tener talento para rimar y nos dejó algún videoclip chulo. Porque fue Steel, la versión cutre blackexploitation de Iron Man de la DC.  Porque salió en Jackass. Porque tirando tiros libres con los ojos vendados tiraba mejor que con ellos abiertos Porque participó en un show de pressing catch. Por esto, por esto, por esto,  por esto. En fin, en general por todo esto

El patrón de diseño Decorator (aplicado en PHP)

Iba a poner El patrón de diseño decorator en PHP pero dado que los patrones de diseño son independientes del lenguaje preferí poner un título más matizado. Aunque algunos parezcan empeñados en no usar patrones en PHP (a pesar de que desde PHP5 ya esté orientado a objetos) en un proyecto grande serán útiles.

El patrón Decorator se pensó para permitir herencia múltiple sin que el árbol de clases crezca de forma incontrolada. Permite añadir a un objeto funcionalidades de forma dinámica. Piensa en un juego de rol, piensa en cuando vinculabas una matriz de conjuros a un arma en Runequest… vale, es muy friki, pero lo voy a usar de ejemplo para explicar el patrón.

Imagina que haces un videojuego, inspirado en el antes citado Runequest mismamente. Entonces creas la clase espada, que hace 10 puntos de daño y tiene 20 puntos de armadura. Muy bien, ahora le vinculas un hechizo de armadura extra. Tendrías que crear la clase espada_armadura con 10 puntos más de armadura. Hasta ahí, bien: tienes la clase espada, y la clase hija espada_armadura que hereda de espada.

Ahora imagina que también le vinculas un hechizo que duplica el daño. Tendrías que crear la clase espada_daño, pero también la clase espada_armadura_daño, que sería la clase con ambos hechizos. Para dos funcionalidades has tenido que crear 3 clases hijas. Y ahora supón un tercer hechizo que mejora tu posibilidad de éxito un 100%: espada_éxito, espada_éxito_armadura, espada_éxito_daño, espada_éxito_daño_armadura… y las cuatro clases anteriores. Para tres funcionalidades ya vas en 8 clases, si haces el cálculo progresan en potencias de 2, por lo que para 4 funcionalidades tendrías 16 clases, para 5 32

El patrón Decorator nos permite evitar esto a base de delegar funciones. Vamos a poner un ejemplo práctico en PHP solucionando el problema anterior, explicado en los comentarios:


//interfaz arma, común a todas las armas
interface iArma{
  public function ataca();
  public function defiende();
}

//clase espada, que implementa la interfaz arma
class espada implements iArma{
  private $armor = 20;
  private $attack = 10;

  public function ataca(){
    return $this->attack;
  }
  public function defiende(){
    return $this->armor;
  }
}

//creamos la clase abstracta Decorator
abstract class espada_decorator implements iArma{
  protected $_espada;
  public function __construct(iArma $Espada){
    $this->_espada = $Espada;
  }
}

//ahora creamos la funcionalidad con más ataque
class extra_attack extends espada_decorator{
  public function ataca(){
    return $this->_espada->ataca()*2;
  }
}

//ahora la funcionalidad de más defensa
class extra_armor extends espada_decorator{
  public function defiende(){
    return $this->_espada->defiende()+10;
  }
}

//ahora podemos crear un objeto espada con la defensa extra
$espada = new extra_armor(new espada());

//y ahora añadimos el ataque extra
$espada = new extra_attack($espada);

Como puedes ver, de esta forma agregamos a nuestro objeto diversas funcionalidades, creando sólo una clase por funcionalidad en lugar del montón al que nos obligaría el ir creando clases para cara posible combinación.

Metapixel: crear mosaicos en linux

Un programa interesante que descubrí la semana pasada es Metapixel. Un software para Linux que nos permite crear mosaicos que generen una imágen a partir de una colección de fotos, más o menos como la imagen del ejemplo:

Gioconda creada con favicons

En los repositorios de Debian y Ubuntu está presente este programa, así que basta con descargarlo del repositorio, y ya puestos creamos una carpeta para guardar allí las miniaturas de las imágenes a usar como fuente:

sudo apt-get install metapixel
mkdir .fuentes

Tras esto toca configurar Metapixel, pasándole la dirección de la carpeta donde guardamos las imágenes para que la asocie con la carpeta de miniaturas:

metapixel-prepare -r carpeta_imagenes/ .fuentes --width=20 --height=15

Cambia lo de carpeta_imagenes por lo que corresponda, los parámetros de tamaño también los puedes cambiar, en este caso le hemos dado 20×15 píxeles. Bueno, ya tenemos todo preparado. Ahora, desde línea de comandos llamamos a Metapixel, le pasamos la imagen de origen (la que tendrá que verse en el mosaico), el nombre del archivo de salida, la biblioteca de miniaturas, el tamaño (un número que representa cuánto mayor será que la imagen original) y el radio de píxeles en los que no puede repetir imágenes. Un ejemplo:

metapixel --metapixel origen.jpg salida.png -l fuentes --scale=30 --distance=20

Lo dicho: origen, destino, librería con las fuentes, tamaño (30 veces mayor que la original) y radio en que no se repite (20 pixeles).

Ahora a trastear y disfrutar con él.

El corte de UCLA

Entrada sobre basket pero esta vez táctica. Y es que hay muchos términos que se escuchan en las retransmisiones (en concreto en las de TVE, porque en las de Cuatro se habla más de prensa rosa que de táctica) y que muchas veces la gente que no ha jugado o que lleva poco en esto del basket desconoce. Si este artículo tiene lecturas puede que siga con otros.

En fin, empezamos con el conocido como Corte de UCLA o UCLA Cut. Esta jugada era el primer movimiento con el que el equipo de la universidad  de UCLA atacaba la defensa individual allá por la época de J.R. Wooden como entrenador (creador de este movimiento). A tenor de los 10 campeonatos que ganaron entre 1964 y 1975 está claro que el sistema funcionaba. Llegaron a ganar 88 partidos consecutivos en la era Walton (eso implica más de dos temporadas invictos en fase regular).

Corte de UCLA

Bueno, la explicación del movimiento que podéis ver en la pizarra (aquí la pizarra animada) es sencilla: El base (1) da un balón al alero (2) y recibe un bloquéo del pívot (4) mientras corta hacia canasta. El alero puede intentar el pase para que el base anote o, si este no puede recibir, jugar con el pivot en la continuación del bloqueo, el cual puede intentar un tiro de media distancia o intentar devolvérsela al alero que ahora corta a canasta. Si la jugada falla de nuevo por la presión defensiva entonces el alero hace un bloqueo para que el base salga a recibir. Ahi el base puede intentar un tiro exterior o, si a arrastrado tras él a la defensa, un pase al alero que le hizo el bloqueo. Aquí un vídeo del movimiento básico

Esto desde una perspectiva muy básica, porque puede combinarse con otros movimientos del escolta y el ala-pivot para dar más segundas opciones de pase al alero o al pivot. En este vídeo que he encontrado en youtube podréis ver como Dusko Ivanovic combinaba, en sus años en el TAU/Saski Baskonia/Caja Laboral , el corte de UCLA con otros movimientos.

Topo – Topo

Hace un par de años tuve la suerte de trabajar como pipa en Compostela para esta mítica banda vallecana. Unos rockeros de impecable trayectoria, enorme elegancia escénica  y gente cojonuda.

Además de ser unos tipos majos y muy profesionales, Topo también han sido una de las bandas fundamentales para entender el rock español. Nacieron como escisión de Asfalto, tras la salida del primer disco de estos, cuando José Luis Jiménez y Lele Laina decidieron desarrollar por su cuenta su carrera, orientada a un sonido más duro que el de Asfalto. Estaba mediado 1978 y junto a la constitución comenzaba a gestarse el primer disco de Topo, en un país donde había muerto el dictador pero donde todavía vivía la dictadura.

Siete temas constituyeron este disco debut, editado por el sello Chapa y producido por Teddy Bautista, conocido por sus papeles bíblicos: Judas en Jesucristo Superstar y Satanás cuando presidía la SGAE. Comenzaba con Autorretrato, una canción sobre las sensaciones del músico en el escenario con un claro deje al hard rock británico de principios de la década. Pasan a la crítica al imperialismo estadounidense en Abélica, una canción donde el teclado toma el primer plano, con dejes progresivos. Y es que como a muchas otras bandas criadas durante la dictadura (mismamente Ñu) se les ve en sus primeros discos una mezcla de hippismo inocente, anti-imperialismo y ganas de decir a gritos lo que durante años tuvieron que susurrar para evitar a la brigada político-social. La Catedral trae aires al Bowie más espacial, un tema de space rock psicodélico que dejará paso al rock and roll más tradicional, de riff marcado, punteo cálido y arreglos de piano en Mis amigos Dónde Estarán (nada que ver con el tema de título similar de Extremoduro). De nuevo un cambio radical de estilo para Qué es la vida, una canción de corte minimalista y preciosista, con ese toque hippie-ecologista que citaba antes, con influencia de banda como America o Crosby, Stills, Nash and Young. Con El Periódico de nuevo vuelven los cortes sinfónicos-progresivos y la sensación de que la prensa (y España en general) ha cambiado demasiado desde aquellos tiempos pre-democráticos. Y finaliza el disco su tema más clásico: Vallecas 1996, una melodía purpleiana, una letra basada en 1984 de Orwell y una crítica al consumismo capitalista, al lavado de cerebro mediático junto a una defensa del ecologismo.

José Luis Jiménez, de Topo
José Luis Jiménez en la actualidad

Un disco que merece ser escuchado con unos buenos altavoces o auriculares, para apreciar en su totalidad la calidez del bajo de José Luis Jiménez, uno de los bajistas más elegantes y creativos del rock español. Un gran trabajo de rock de una banda fundamental para el rock español, un grupo que merece todo el respeto y la atención de los grandes, por su elegancia, su saber hacer y su status de pioneros.

Españoles NBA 2013

No lo negaré, es una entrada en busca de generar tráfico. Pero es que llevo un mes sin escribir nada de baloncesto, estoy falto de ideas y esto siempre atrae visitas. En todo caso ¿cómo está siendo la temporada de los seis jugadores españoles en la NBA?

Bueno, en el lado malo de momento está Pau Gasol, quien está pasando su peor año en la NBA. A estas alturas 13 puntos (su peor media anotadora en una temporada en la NBA), 8 rebotes (por debajo de su media), 3.5 asistencias y un 44% en tiros de campo. ¿Los motivos? Un calvario de lesiones (tendinitis, fascitis plantar), años que pesan y un entrenador que se empeña en hacerle jugar abierto cuando debería estar más cerca. Tampoco ayuda que los Lakers del Big-Four que parecía que iban a comérselo todo estén ahora peleando para meterse en playoffs en la última plaza del Oeste.

Mucho mejor le va a su hermano Marc, desde luego. Puede que sus números no sean muy superiores (14.3 puntos, 7.8 rebotes, 3.9 asistencias, 1 robo y 1.7 tapones) pero su aportación defensiva y el mejor funcionamiento de su equipo (Memphis son quintos en el oeste, con opciones de pelear por la tercera plaza si hacen un buen final de temporada) hacen que para este el año vaya mejor. El cambio del sistema de votaciones en el all-star le ha perjudicado, porque creo que con el formato antiguo habría entrado en el Oeste. Además habría que decir que se trata del pivot que mejor reparte asistencias al poste de la NBA.

Los hermanos Gasol, suerte dispar este año.

Siguiendo con los jugadores interiores, Serge Ibaka está viviendo un año dulce. El pivot congoleño de la selección española ha mejorado sus números en ataque y ha pasado a promediar 13.3 puntos por partido, acompañados de 7.9 rebotes y 2.9 tapones. Oklahoma además ocupa la segunda plaza del Oeste y la tercera del global de la NBA, con lo que son uno de los equipos candidatos al anillo.

Nunca aposté por Victor Claver, no me convencía en la ACB y no me convence en la NBA. Ni a mi ni a su entrenador viendo su media de menos de 14 minutos por partido. Incluso estuvo relegado a la D-LEAGUE durante varios partidos a principio de liga. El alero valenciano parece un firme candidato a regresar a Europa a corto plazo.

Ibaka y Calderón pugnando por el balón

En cuanto a los dos bases empezaré por Calderón, al que no le ha sentado mal el cambio de aires. Si bien su media de asistencias ha bajado respecto a otros años (está promediando 7 frente a las más de 8 de sus años buenos) está anotando más (11.7 puntos por partido desde el cambio de equipo) y recuperando más balones (1.2 robos también desde que llegó a Detroit), pero sobre todo está defendiendo mejor gracias a no tener un equipo tan abandonado en labores defensivas como tenía en Toronto. Dumars dijo que no era un fichaje para liberar salario, sino para tiempo, por lo que es posible que el extremeño se quede en Detroit.

Y terminamos con Ricky. La lesión de ligamentos de la pasada temporada le hizo perderse el principio de esta y volver fuera de forma, tanto física como psicológicamente. Además los T-Wolves están sufriendo una cantidad anormal de lesiones. Sus números de 9.7 puntos, 7.2 asistencias y 2.3 robos son engañosos, ya que la baja producción de los primeros partidos los lastra, si uno coge los del tramo final de la temporada puede ver que están más bien sobre los 12 puntos y casi 9 asistencias. Eso sí, sus porcentajes en tiro y sus pérdidas siguen siendo sangrantes, dos oportunidades de mejora de este prometedor base que, poco a poco, va dejando atrás su grave lesión.

Ricky Rubio

Twig: genera tus plantillas en php

A raíz de los experimentos con Symfony toca continuar y hablar de Twig. ¿Qué es Twig? Se trata de un motor de plantillas libre para el lenguaje PHP. Si has trabajado alguna vez con JSP o con ASP no te resultará raro.

Synfony incluye dentro del framework este motor (también te lo puedes bajar aparte) , que nos ofrece ciertas comodidades respecto a hacer la plantilla en php  pelo. La primera consiste en poder pasar variables las plantillas, con objeto de que estas sean mostradas en pantalla. Las variables pueden tener atributos o elementos en ellas a los cuales puedes acceder también, utilizando el punto (.) o el subíndice ([]) para el caso de un array. También permite realizar iteraciones si la varible es una colección (como un array) o utilizar el condicional if. Con un ejemplo ser verá más claro:

/*PHP tradicional*/
<h1><?php echo strtoupper($title) ?></h1>
<ul>
<?php foreach($collection as $item){ ?>
<li>Nombre:<a href="<?php echo $item->getUrl();?>"> <?php $item->getName();?></a></li>
<?php }  ?>
</ul> 

/*TWIG*/
<h1>{{ title|upper }}</h1>
<ul>
{% for item in collection %}
<li>
Nombre: <a href="{{item.url}}">{{item.nombre}}</a>
</li>
{% endfor %}
</ul>

¿Cómodo? Desde luego, una vez te has acostumbrado. Pero no es lo único que permite Twig, porque su verdadera potencia se encuentra en la herencia entre plantillas. Esto nos permite crear un modelo de plantilla base que contenga todos los elementos comunes del sitio y definir los bloques que las plantillas descendientes pueden sustituir. Imaginemos esta plantilla base:

<!DOCTYPE html>
<html>
    <head>
        {% block head %}
            <link rel="stylesheet" href="stilos.css" />            
        {% endblock %}
    </head>
    <body>
        <div id="content">
          {% block content %}{% endblock %}
        </div>
    </body>
</html>

Muy bien, ahora en las plantillas hija nos basta usar las etiquetas block para insertar el código que será distinto:

{% extends "base.html" %}

{% block head %}
    {{ parent() }}
    <script type="text/javascript" src="jquery.min.191.js"></script>
{% endblock %}

{% block content %}
    <h1>Índice</h1>
    <p>
        Hola mundo!
    </p>
{% endblock %}

Productivo ¿no? Pues no es todo, Twig incluye autoescape de html en las variables para prevenir ataques XSS. En el primer ejemplo ves como al lado de la variable usé upper, eso es un filtro. Existen múltiples filtros que puedes consultar en la documentación oficial de TWIG, al igual que también varias funciones y las etiquetas propias de Twig con varias funcionalidades.

Personajes que se merecen un spin off.

Uno de esos posts que surgen de conversaciones en barras de bar, pero llevo un tiempo pensando que hay varios personajes que merecen su propio spin-off. Porque si a Seth McFarlane le han dado pasta para hacer esa puta basura de Cleveland Show… ¿cómo no financiar esto? (bueno, teniendo en cuenta que McFarlane ha logrado que le permitan producir Padre Made In USA, Cleveland Show y todo lo posterior a la temporada 2 de Padre de Familia, supongo que tendrá que ver con su capacidad para comer pollas de directivos de la FOX)

  • Phil-osophy: En un capítulo de Modern Family, cuando Haley se va la universidad Phil le regala un libro con sus grandes enseñanzas para la vida llamado Phil-osophy. Todavía no se cómo no han editado ese libro los productores… pero deberían hacer la serie. Bueno, tal vez no de para el formato de capítulo de 22 minutos, pero no sé, unos minicortos con los monólogos de Phil frente a la cámara, tipo videoblog… Vamos, la mitad estáis deseando verlo, no lo neguéis (y la otra  mitad lo veréis cuando lo recomiende algún iluminado en algún foro).
    Phil
    Phil el filósofo

     

  • Doctore: Si bien de Spartacus ya se hizo una precuela con la historia de Gannicus (Dioses de la Arena), siempre creí que la precuela que habría molado habría sido la historia de Doctore, que se va dejando ver con cuentagotas ya desde la primera temporada de la serie. ¿Quién fue la mujer a la que amó? ¿cómo logró convertirse en una leyenda entre los gladiadores? El personaje de Peter Mensah tiene mucho jugo que exprimir.
    Doctore: La precuela que nos molaría de Spartacus.

     

  • La vida según Barney Stinson: Seamos sinceros, Cómo conocí a vuestra madre dejó de tener gracia en la segunda temporada. Una vez alguien dijo «La seríe se recuperaría si quitaran al abogado, a la profesora, a la canadiense y al tipo que no da encontrado novia«. En resumen, todo el mundo quiere a Barney. El personaje de Neil Patrick-Harris es el más valorado por la audiencia desde el principio, del que se ha realizado más merchandising y encima sabe cantar. ¿Serie musical de Barney? Podría ser le-gendario!
    Barney
    Ponte traje: Barney es de la «escuela Camps»

     

  • Chibs, Tig & Bobby: Otra serie que no va envejeciendo bien. Sons of Anarchy fue derivando desde cuando las frases más repetidas eran «Jesus Chris, Gemma» y «Don’t mess with my club» hasta la moñería en las últimas, que sólo dicen «I love you«. Eso y encima el guapito de Jaxx se corta el pelo. Al carajo, este drama shakespeariano con moteros necesita un cambio de tercio, volver al puro y duro macarreo. Hay dos opciones para seguir explotando pasta de esta franquicia: la primera sería hacer una precuela con la historia de Chibs cuando militaba en IRA. La segunda, que los tres citados en el título se hagan nómadas y recorran la Ruta 66 a su estilo (acabaría siendo la ruta 666… the horror).
    Chibs y Bobby
    Chibs & Bobby, que ya estamos jartitos de las lloradas de Jaxx

     

  • Yo me llamo Ralph: Y finalmente, cuando a los guionistas de los Simpson se les acaben las ideas… será el momento de que Ralph Wiggum tenga su propia serie. Porque ve un duende que le dice que queme cosas, porque unió a republicanos y demócratas, porque fue novio de Lisa por una noche, un  barranco y un unicornio retrasado en muchas ocasiones. Porque sabe cómo la sabe la pupa y el fuego. Todos amamos a Ralph, nunca tenemos bastante de su sabiduría. Ojo, un capítulo crossover Ralph/Zoidberg podría convertirse en instant classic (como el por tantos años deseados Homer vs Bender).

    Se llama Ralph

Porque ¿para qué pagar guionistas con tantos personajes todavía explotables? La televisión los necesita, sobre todo viendo el agotamiento de Hollywood.

Virus de la doble tilde

¿Estás escribiendo y al acentuar te salen dos tildes tal que escribes así: cami´´on? Ok, esto es una clara señal de alarma, no sólo porque sea un coñazo para escribir con una correcta ortografía (que lo es) sino porque además es la confirmación de que estás infectado por el troyano ZBot «ZeuS». De hecho el que aparezcan dos tildes realmente es un error de programación interno de dicho troyano, un conflicto que se genera al usar la configuración de idioma en español. El objetivo primordial de dicho troyano es capturar datos y contraseñas, pero por un fallo hace que el caracter ‘ se duplique (los creadores lo pensaron sólo para troyanizar equipos con configuración de idioma inglés).

Yo os voy a dar mi solución, y si no os funciona os adjunto otra de Foro Spyware.

Con mi método la idea es que instaléis HijackThis, reiniciéis el equipo en modo seguro, ejecutéis HijackThis y pulséis “Do a system scan only”. Ahí en el log buscáis un entrada similar a esta: HKCU\Software\Microsoft\Internet Explorer\Main,Start Page = http://start.funmoods.com/?f=1&a=grupo La dirección puede ser distinta dependiendo de la versión del virus. En general os mostrará las páginas de inicio de Explorer, asi que la idea es que os fijéis en las direcciones y marquéis las que no cuadren, las que creáis que no deberían estar (por ejemplo, sería normal que apareciera HKCU\Software\Microsoft\Internet Explorer\Main,Start Page = http://google.es ). Luego buscad también dos con este formato: URLSearchHook: (no name) – {fed66dc5-1b74-4a04-8f5c-15c5ace2b9a5} – (no file) y BHO: (no name) – {5C255C8A-E604-49b4-9D64-90988571CECB} – (no file). Lo básico es el (no name) y el (no file). Las marcáis y pulsáis “Fix Checked”. Tras esto reiniciáis y pasáis el CCleaner para limpiar el registro y las cookies.

Si os parece muy lioso andar mirando y comprobando las URL, en Foro Spyware os ofrecen una solución usando TDDSKiller que también funciona muy bien. Así que si la véis más asequible podéis probarla, que debería funcionar.