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.

Instalando entorno LAMP en Linux Mint – Ubuntu – Debian

Este artículo viene a razón de que este fin de semana me va a tocar hacerlo, ya que espero poder formatear al fin este equipo cuyo rendimiento (uso Ubuntu 12.10 y Win Vista SP2) cada día va a peor.

Como el principal uso que le doy a este equipo es para desarrollo web (amén de ver alguna vez alguna película y almacenar música) pues tener un servidor en local para realizar pruebas se torna indispensable.

Aunque podríamos descargar y compilar a mano los componentes, a lo old school, vamos a aprovecharnos de un programilla disponible para la familia Debian (no olvidemos que Mint deriva de Ubuntu y Ubuntu de Debian) que nos permite instalar paquetes de software relacionados de forma coordinada como tareas. La herramienta se llama Tasksel y lo primero será instalarla:

sudo apt-get install tasksel

Y luego ejecutarla con permisos de administrador:

sudo tasksel

Una vez lanzado tendrás un menú de estos old school de moverte con el teclado, donde seleccionas la opción LAMP server y, tras eso, después de meter la contraseña para el usuario root de MySQL (la puedes dejar en blanco, pero mejor pónsela, si instalas algún cms te tocará) seguirá con el proceso de instalación.

Bueno, ahora nos queda instalar una herramienta muy útil que es phpMyAdmin:

sudo apt-get install phpmyadmin

Una vez descargado tenemos que crear un enlace simbólico con el servidor web y otro con nuestra carpeta home, tal que así:

sudo ln -s /usr/share/phpmyadmin /var/www/
sudo ln -s /var/www /home/usuario/www

Ahora ya tenemos todo instalado. Si entras en http://localhost/phpmyadmin debería salirte la ventana de acceso donde deberías poner el nombre de usuario y la contraseña que diste durante la instalación.

Así ya tienes montado tu entorno LAMP. A ver si mañana me lanzo con un tutorial sobre instalar XDebug.

Instalar Symfony 2.1 en Linux

Bueno, seguimos con el tema de Symfony tras el interludio papal. El caso es que comenzamos este tutorial donde dejamos el anterior ¿anterior? Sí, en cierto modo la entrada sobre instalar Composer sirve de introducción a esto.

En fin, la cosa es tener instalado Composer de forma global en tu equipo y GIT (aunque si te dedicas a programar seguramente ya lo tengas instalado), lo que ya se explicó en la entrada anterior. El caso es que con Composer instalado lo primero es ejecutar desde línea de comandos $ composer create-project symfony/framework-standard-edition directoriodelproyecto 2.1.x-dev obviamente cambiando directoriodelproyecto por el directorio que corresponda. Sin Composer ni GIT esto no furrulará, repito.

Una vez instalado prueba a situarte en el directorio donde has instalado y ejecutar $ php app/check.php, ahí verás la lista de requisitos que debe cumplir tu equipo para ejecutar Symphony. Luego si ejecutas desde ahí $ php app/console verás en la consola una lista con todos los comandos disponibles para las aplicaciones de Symfony 2.

Finalmente, puedes probar en tu navegador el funcionamiento de Symfony. Visita http://localhost/directoriodelproyecto/web/config.php (cambia directoriodelproyecto por lo que corresponda). Puede que te salga un mensaje de error, suele ser por cuestiones de permisos, nada que no se arregle trasteando con la configuración de seguridad.

Instalar Composer en Linux

¿Qué es Composer y por qué debería instalarlo? En fin, es la primera pregunta, desde luego. Composer es un gestor de dependencias para PHP, de uso común en los proyectos realizados con Symfony (sí, me he puesto a trastear con Symfony, aunque ando un poco pez). En todo caso, lo que Composer hace es comprobar la lista de dependencias de cada proyecto y decidir qué librerías hay que instalar, qué versiones de las mismas se instalan y en qué orden. Muy útil sobre todo cuando actualizas tu versión de Symfony, ya que te evita problemas de incompatibilidad con librerías antiguas.

En fin, vamos a meternos ya en harina. ¿Cómo instalo Composer en mi Linux? Bueno, no es muy difícil (no como en el caso de Windows donde es un puto coñazo, pero eso ya lo explicaré otro día). Tienes dos opciones, además: instalar Composer en un proyecto concreto o instalar Composer globalmente.

Para la instalación en un proyecto concreto, desde la consola de comandos sitúate dentro del directorio raíz de ese proyecto y ejecuta $ curl -s https://getcomposer.org/installer | php y, tras ello, si todo ha ido bien, deberías tener en el directorio del proyecto un archivo llamado composer.phar. Para comprobar si está bien instalado ejecuta $ php composer.phar

Las instrucciones anteriores nos sirven para instalar Composer en un proyecto concreto, pero generalmente lo que nos interesará es instalarlo globalmente para usarlo en varios proyectos.

La idea sería la misma, pero en lugar de descargar Composer en el directorio raíz de un proyecto lo deberíais hacer en un directorio ejecutable del sistema, como por ejemplo /usr/local/bin/composer. Después deberíais poder ejecutar el comando composer desde cualquier directorio del sistema y funcionaría. De esta forma además de tenerlo disponible para todos los proyectos también se facilita la actualización de Composer, dado que con la instalación para un proyecto concreto tendrías que ir actualizándolo en cada uno de ellos, mientras que con esta basta con actualizar sólo el global, con el comando $ sudo composer self-update.

En fin, con esto queda explicado cómo instalar Composer, del cual podéis leer aquí la documentación oficial. Próximamente (espero) más sobre Symfony.

Crear gráficas en PHP con Googchart

La librería GoogChart de Google puede descargarse libremente (licencia MIT) desde este enlace y nos permite generar gráficas desde PHP.

El primer paso es añadir la clase GoogChart a nuestro script de PHP tal que así:

include "GoogChart.class.php"; 

Ahora necesitamos varias cosas: Primero generar un objeto de la clase GoogChart, después un array con los colores que tendrán las columnas y luego otro array con los datos a mostrar.

$chart = new GoogChart(); //objeto
$color = array('#333','#666','#999','#ccc'); //colores
$datos = array(enero=>50, febrero=>35, marzo=>89, abril=>45);//datos simples

Con estos datos ya podemos darle valores a nuestro objeto e imprimirlo:

$chart->setChartAttrs( array(
'type' => 'bar-vertical',
'title' => 'Ventas 2012',
'data' => $datos,
'size' => array( 600, 300 ),
'color' => $color,
'labelsXY' => true
));

echo $chart;

A la hora de dar valores al objeto definimos el tipo de gráfica (en este caso barras verticales), el título, los datos, el tamaño (en píxeles), la paleta de colores y si tendrá etiquetas en los ejes. Ahora veamos un ejemplo con datos de varios años:

$datosMultiple = array(
 'Año 2011' => array(
 enero => 30,
 febrero => 20,
 marzo => 45,
 abril => 75
),
 'Año 2012' => array(
 enero => 50,
 febrero => 35,
 marzo => 89,
 abril => 65
 ),
 );

Este array incluye dos arrays de datos donde los nombres sirven como leyenda para la gráfica. El resto del proceso sería igual.

En fin, ahora lo que os queda es miraros los ejemplos que vienen junto al archivo de la clase y experimentar.

CSS3 Box Shadow: sombras sin usar imágenes

Seguimos otra vez con truquillos de CSS3 para vuestra web. Mientras me desquicio usando un teclado de silicona para escribir (cosa incómoda donde las haya) vamos a comentar el uso de la propiedad box-shadow de CSS3. Como siempre, ojo con IE que es puñetero cuando se trata de trabajar con stándares.

En su uso básico box-shadow necesita al menos tres parámetros, si bien acepta hasta cinco.

  • Desplazamiento horizontal: Define la posición horizontal de la sombra respecto al elemento al que se la aplicamos. Si le enviamos un valor positivo la sombra se situará a la derecha del elemento. Si el valor es negativo se situará a la izquierda.
  • Desplazamiento vertical: Define la posición vertical de la sombra. Si recibe un valor positivo la sombra se situará debajo del elemento, y con uno negativo encima.
  • Radio de desenfoque: Cuanto mayor sea, más transparente será la sombra. En caso de 0 la sombra será totalmente nítida. Se trata de un valor opcional y 0 es su valor por defecto.
  • Radio de dispersión: Cuanto mayor sea, mayor dispersión tendrá la sombra. Es opcional y el valor por defecto es cero. En ese caso el tamaño será igual al desenfoque.
  • Color: Finalmente el color que tendrá la sombra. Es el tercer valor obigatorio.
  • Inset: Existe un parámetro más, que es este inset. Si lo incluimos al principio hará que la sombra en lugar de estar en el exterior se sitúe en el interior del elemento..

La sintaxis sería como en este ejemplo:

/*Sombra gris abajo derecha*/
.sgad{
    box-shadow: 5px 5px 2px #666;
}

/*Sombra azulada arriba izquierda muy dispersa*/
.saaid{
    box-shadow: -5px -5px 5px 14px #99C;
}

/*Sombra interna gris*/
.sig{
    box-shadow: inset 0 0 10px #666;
}

Si queréis una buena serie de ejemplos y trucos los podéis encontrar en este enlace. Y recordad, ojo con el Explorer.

Debian vs Mint vs Ubuntu: ¿qué Linux usar?

Bueno, lo justo sería comenzar diciendo que Linux no se reduce a estas tres distribuciones hay más «familias Linux». Pero como usuario estoy más familiarizado con las distribuciones de la familia Debian (puede que algún día me vaya al lado Red Hat y me saque un Fedora vs Red Hat vs openSuse vs Oracle Linux) voy a centrarme en esta rama y en sus tres distribuciones más populares.

  • Debian: Lo justo es comenzar con la madre, con Debian. A fin de cuentas los otros dos derivan de este. El desarrollo de Debian se fundamenta en dos pilares: estabilidad y seguridad. Cada actualización y nuevo paquete conlleva un trabajo muy exhaustivo de testeo, un profundo escrutinio de su código en busca de fallos. Esto nos garantiza una enorme estabilidad, pero ralentiza varios meses la llegada de actualizaciones y paquetes, lo que puede ser muy coñazo para el usuario doméstico, que tal vez se encuentre con problemas varios de drivers. He conocido a ingenieros que han acabado desquiciados por problemas de drivers con Debian en sus portátiles. Debian es un gran sistema operativo, pero no es precisamente fácil de instalar y configurar, y es más recomendable para usuarios con una buena base de conocimientos y para su uso en cuestiones profesionales y laborales.

    Debian, la madre
    Debian
  • Ubuntu: Un sistema radicalmente opuesto a Debian en muchos puntos, a pesar de derivar de él, por tener una filosofía muy distinta. Canonical pretende ser la Apple del software libre, por lo que Shuttleworth decidió que Ubuntu tendría que ser el Linux más bonito, más fácil de instalar y más fácil de utilizar. Y ciertamente Ubuntu con el escritorio Unity es muy fácil de usar. Lo instalas prácticamente a base de pulsar «aceptar» en varios pantallas e incluso puedes instalarlo desde Windows como si fuera un programa. Tienes un centro de software del que descargar todo tipo de programas y juegos recomendados por Canonical, algunos de pago y otros de gratis, sin contar con el caramelito de que Valve haya sacado Steam para Ubuntu. Obviamente todo esto trae consigo algunos problemas, como la inclusión a traición de publicidad en tus búsquedas, la inclusión de drivers privativos en el sistema operativo o el exagerado consumo de recursos que el escritorio Unity le va a provocar a tu equipo. En resumen, un Linux ideal para gente con pocos conocimientos de informática, que valore la comodidad por encima de todo, o para gente que nunca haya usado Linux.

    Logotipo de Ubuntu
    Ubuntu
  • Linux Mint: El más joven de los tres y el que más rápido ha escalado en niveles de popularidad. Existen dos versiones de Mint, la basada en Ubuntu (el Linux Mint normal) y la basada en Debian. En este caso nos centraremos en la versión basada en Ubuntu porque es con la que he trabajado. Mint nos da el justo medio entre la sencillez de Ubuntu y la estabilidad de Debian. Es muy fácil de instalar, tanto como Ubuntu o más, y es más estable que Ubuntu (claro que esto es lógico, ya que al ser una distribución basada en Ubuntu aprovechan para parchear todos los errores de la distribución en la que se basan). Además, su escritorio basado en GNOME es mucho más ligero que Unity, no tiene tanto driver privativo de por medio y es compatible con los binarios de Ubuntu. A día de hoy, para mi, es el ganador de la comparativa, al menos para el desarrollador y el usuario con un conocimiento medio.
    Logotipo de Linux Mint
    Linux Mint

     

En fin, con esto termino la comparativa entre los tres. Tres sistemas opeativos libres, totalmente funcionales. He de puntualizar también que me he basado en las últimas versiones a día de hoy y trabajando con sus escritorios por defecto, ya que a cualquiera de ellas le puedes incorporar otros como XCFE, LXDE, KDE… en fin, eso ya es cuestión de gustos.

Eliminar Babylon Search

Es posbile, hasta probable, que alguna vez la barra de tareas de Babylon Search te haya aparecido en tu navegador. Al igual que el ya citado en este blog lollipop se trata de un adware, un software malicioso que se dedica a bombardearte con publicidad, haciendo el uso del ordenador plomífero e incómodo.

Al igual también que lollipop su eliminación no es fácil si uno no sabe exactamente qué tiene que hacer, no basta con desinstalar del equipo porque instala complementos en los navegadores, no te permite eliminarlo mientras tenga un proceso activo… cabronadas varias.

En este caso para su eliminación vamos a usar AdwCleaner, un software gratuito para la eliminación de adware. Un software que además no requiere instalación alguna.

Los pasos a seguir, tras descargar el software del enlace anterior son:

  • Desde el menú principal del programa haz click en Search.
  • Eso te generará un informe con todo el adware que haya encontrado en el equipo. Una vez terminado el informe haz click en Delete para que elimine ese software detectado de tu equipo.
  • Si te pide confirmación en alguna ventana acepta y tira para adelante
  • Una vez confirme que ha realizado el trabajo reinicia el equipo

Una vez hecho esto debería estar ya eliminado de tu equipo todo rastro de ese pesado programa y ya deberías poder navegar con tranquilidad.

Zoom sobre texto con CSS3 usando transiciones

Otra nueva entrada sobre las virtudes de CSS3, en este caso vamos a hacer una pequeña introducción a las transiciones creando un código que nos permita que la letra de un párrafo aumente de tamaño cuando el ratón esté sobre ella.

Para ello por un lado tendremos que definir la transición sobre el elemento a modificar y luego la modificación cuando se produzca el evento.

Lo primero sería así:

.aumenta {
    font-size: 1.1em;
    width: 300px;
 
    -moz-transition: font-size 500ms linear 0s; 
    -webkit-transition: font-size 500ms linear 0s;
    -o-transition: font-size 500ms linear 0s;
    transition: font-size 500ms linear 0s;
}

Explicación: tras definir el tamaño del texto para la clase aumenta (1.1 em) definimos la transición. Hay varios métodos para la transición, así que he usado la propiedad shorthand de transition. El primer parámetro (font-size) es para especificar a qué propiedad se aplicará la transición, el segundo el tiempo que tardará, el tercero que se hará siempre a la misma velocidad (linear) y el cuarto que se haga sin delay.

Y ahora que tenemos la transición definida para todos los navegadores (ojo!!! Explorer 9 no soporta todavía transiciones, dice Bill Gates que igual para la 10) toca definir cómo se transformará el texto cuando esté sobrevolado por el ratón:

.aumenta:hover{
    font-size:1.6em;
}

Definimos que en el evento hover la fuente pase a ser más grande. Con esto ya tenemos nuestra transición lista.

Escalar imagen con CSS3 al hacer hover

Bueno, una minientrada rápida:

¿Necesitas que una imagen se agrande cuando pases el cursor por encima (o encoja, que también se puede)? Tradicionalmente la cosa sería hacerlo con javascript, pero ahora sólo con CSS3 es posible. En el siguiente ejemplo verás como hacer que la imagen crezca un 20%:

img:hover{ 
    -webkit-transform: scale(1.2);
    -moz-transform: scale(1.2);
    -o-transform: scale(1.2);
    -ms-transform: scale(1.2);
    transform: scale(1.2)
}

La idea es usar transform scale() y pasarle el tamaño que queremos darle como parámetro. Por cuestiones de compatibilidad hemos añadido los métodos concrectos para webkit, mozilla, opera y explorer. Cuestiones a tener en cuenta: Pues la primera, no pasarse ampliando para que la imagen no pierda definición en exceso. La segunda, ten en cuenta tamaños de márgenes y padding para que al crecer no te desplace el resto de elementos.

Truquito CSS fácil y rápido para este día de carnaval.