jueves, 31 de diciembre de 2009

Avira Antivirus

Hasta hace un tiempo andaba usando el antivirus NOD32. La verdad, durante dos años había sido mi antivirus favorito, molestaba poco, pillaba lo que tenía que pillar y apenas consumía recursos. Pero desde hace un tiempo cada mes o dos meses me lo detectaban como pirata y dejaba de actualizar la firma de virus.

Para arreglarlo bastaba con desinstalarlo, volverlo a instalar y volver a aplicar el mismo parche, pero de nuevo tenía que estar molestandome. Entonces pasó de ser mi antivirus favorito. Necesitaba uno menos molesto, y no me acababan de convencer los antivirus gratuitos, hasta que apareció el Avira.

Este antivirus es igual o más eficaz, no lo sé porque llevo poco tiempo usándolo, pero es gratuito. La pega es que tiene otro inconveniente. El antivirus gratuito cada vez que actualiza arranca un popup que aparece en la ventana, un popup que ejecuta a través de un archivo situado en el directorio dentro de Archivos de Programa: el Avnotify.exe.

Tras mirar por google, como siempre, empecé a encontrarme paridas para evitar esta ventana pop-up que me decía una y otra vez "Compra la versión premium que es mas bonita", pero nada de nada, no había manera de hacerlo.

Así que me dije -Vale, estoy en windows, el mayor virus del mundo, tiene que haber una solución-. Y efectivamente, la hay usando el propio windows, ni parches ni leches. Así que me he molestado en capturar un video para que los usuarios de este antivirus gratuito, no sean molestados por los molestos pop-ups (valga la redundancia).

Ahí va:


jueves, 3 de diciembre de 2009

Va de música

Hace tiempo que no veo ese anuncio en la tele con esa canción tan llamativa. Hablo del anuncio de los cuadernos Oxford. Estuve hace tiempo buscando la canción y la encontré. No sé que tiene pero da una sensación agradable, y la letra no es que sea nada del otro mundo, de hecho no me voy a molestar en ponerla, porque hable de música como ondas de sonido.

Espero que os guste:



O bueno, no podría faltar una canción de mi Final Fantasy VII. Esta es de un tal Michael Huang, un pianista de lo lindo, o quizás no tan bueno, no sé, lo único que sé es que este Aerith's Theme Piano es precioso:


Manifiesto «En defensa de los derechos fundamentales en internet»

Ante la inclusión en el Anteproyecto de Ley de Economía Sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.

2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.

3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.

4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.

5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.

6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.

7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.

8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.

9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.

10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Por favor difunde este manifiesto en tu blog, Twitter, en redes sociales, en foros o donde sea.

Es que esto es la polla, mientras la gente se busca la vida ampliando conocimiento y adaptándose a los nuevos tiempos y a las nuevas tecnologías, cosa que consume más del 50% de nuestro tiempo libre, otros pretenden seguir viviendo del cuento de puta madre a costa de los demás.

En apenas 10 años estamos cambiando mucho a peor en lo que a la ley se refiere, o hacemos algo o pasaremos los 30 ultimos años de nuestras vidas viviendo entre miseria y patetismo.

jueves, 29 de octubre de 2009

Proyecto Web (Parte 2)

A paso de tortuga la cosa sigue avanzando. Ya he registrado un dominio gratuito, pero no por ello malo (la verdad es que tiene muy buenas cosas este servidor) y ya he alojado lo que llevo de web. Aun no hay nada, pero ya he metido un sencillito formulario de registro y se puede acceder al sistema tras registrarse.

La unica diferencia por ahora es el boton de logout.

Por ahora la autenticación y el método para mantenerse conectado son mediante el uso de cokies, pero mas adelante implementaré el uso de sesiones y, si el usuario lo desea, guardar la informacion mediante cookies, ya que las cookies dependen del navegador y podemos tenerlas desactivadas o desactivarlas, y si permitimos que solo se mantenga conectado con cookies pues es posible que la web no nos mantenga logados.

Podemos ver como va el proyecto en la url http://turkos.freetzi.com

El proyecto final, debido a la coña de montar una empresa de asesinos a sueldo debido a la crisis financiera y economica mundial, se ha titulado "The Turks", es decir, "Los Turkos" o "los Turcos", porque como todas mis cosas, o al menos la mayoría, están relacionadas con Final Fantasy VII ^^.

El sitio tiene la siguiente estructura:

[raiz del sitio]
|__[images]
|_______ contiene imagenes del sitio
|__[includes]
|_______ header.php (cabecera de la web)
|_______ footer.php (pie de la web)
|_______ funciones.php (archivo donde colocar las funciones usadas en la web)
|_______ configuracion.php (parámetros de configuracion del sitio)
|__ template_css.css (hoja de estilo en cascada)
|__ animatedcollapse.js (javascript de menus interactivos)
|__ index.php (cuerpo de la web)
|__ registrar.php (script que registra a los usuarios)
|__ ingresar.php (script que loguea a los usuarios)
|__ login.php (script qur comprueba las cookies y si el usuario está logado)

Primero hablaré del registro. Yo lo tengo en el mismo index.php pero puede estar en cualquier sitio. La cuestion es un formulario simple que envie una serie de datos mediante POST a otro archivo, que los procesará para realizar el registro. Esto se consigue con el parámetro ACTION="registrar.php". Se pone así porque el archivo registrar.php lo tengo en el mismo directorio que el archivo que ejecuta el codigo (en este caso el index.php). Si registrar lo tuvieramos, por ejemplo, en un directorio llamado "reg" entonces tendriamos que poner ACTION="reg/registrar.php". Y si el archivo que tiene el formulario está en la carpeta "reg" y el archivo registrar.php estuviera un nivel por debajo pondríamos ACTION="../registrar.php". Basta de tonterías, el código del formulario es el siguiente:

                <FORM ACTION="registrar.php" METHOD="post">
                <table align="left" border="0" cellspacing="0" cellpadding="1">
                    <tr><td align="left">Nick:</td><td align="right"><input type="text" name="nick" size="14"></td></tr>
                    <tr><td align="left">Pass:</td><td align="right"><input type="password" name="password" size="14"></td></tr>
                    <tr><td align="left">Name:</td><td align="right"><input type="text" name="nombre" size="14"></td></tr>
                    <tr><td align="left">Email:</td><td align="right"><input type="text" name="email" size="14"></td></tr>
                    <tr><td colspan="2" align="center"><INPUT TYPE="submit" CLASS="boton" VALUE="Registrar"></td></tr>
                </table>
                <br>       
                </FORM>

Cada input, es decir, cada caja de texto le damos un nombre para identificarlo. Cuando enviémos el formulario, registrar.php recibirá por POST informacion contenida en cada input, que capturaremos con la variable $_POST["nombreDeCajaDeTexto"].

Ahora vamos al archivo registrar, que lo explicaré por partes. Este archivo empieza así:

<?php
//incluimos datos de configuracion del servidor
require('includes/configuracion.php');
//incluimos archivo con funciones a usar
require("includes/funciones.php");
conectar() or die('No se puede conectar a la Base de Datos!');

Tendremos que conectarnos a la base de datos, y para ello requerimos los parámetros de configuración, así que por eso, antes de conectar con la base de datos, tendremos que tener presente el contenido de estos dos archivos, uno que define los parámetros del servidor para la base de datos y otro porque es donde se alojan las funciones que hacemos. conectar() llama a la funcion, sin require("includes/funciones.php"); no tendríamos nada que hacer.

Antes de seguir viendo registrar.php veamos estos dos archivos, donde configuration.php sería algo así:

<?php
//BASE DE DATOS
define('SERVIDOR', 'servidor'); //en local, por ejemplo, seria "localhost"
define('USUARIO_BD', 'usuariodelabasededatos'); //por defecto "root"
define('PASSWORD_BD', 'contraseñadelabasededatos'); // Con xampp, por defecto sin contraseña
define('NOMBRE_BD', 'nombredelabasededatos'); //nombre de la BD cuando la creamos con phpmyadmin, por ejemplo
?>

Mientras que funciones.php sería un recopilatorio de funciones. Yo pondré mis 2 funciones que tengo por ahora, una para conectar, y la otra para eliminar de lo que se escriba en las cajas de texto simbolos html o espacios, para que no nos intenten joder la web con simple inyección SQL:

<?php
  function conectar($server = SERVIDOR, $username = USUARIO_BD, $password = PASSWORD_BD, $database = NOMBRE_BD, $link = 'db_link') {
    global $$link;
    $$link = mysql_connect($server, $username, $password);

    if ($$link) mysql_select_db($database);
       return $$link;
  }
 
function quitar($mensaje)
    {
    $mensaje = str_replace("<","&lt;",$mensaje);
    $mensaje = str_replace(">","&gt;",$mensaje);
    $mensaje = str_replace("\'","'",$mensaje);
    $mensaje = str_replace('\"',"&quot;",$mensaje);
    $mensaje = str_replace("\\\\","\\",$mensaje);
    return $mensaje;
    }
?>

Bien bien, ahora sigamos con registro.php. Lo unico que tenemos en un if-else que nos comprueba primeramente que si los campos a rellenar estuvieran vacíos. De no rellenar ningun campo mandaría la página a index pasando una variable por GET con un mensaje. Este mensaje, en el index, podremos capturarlo y mostrarlo con una simple linea:

if ($_GET["msg"]) echo "<font color='ff0000'>".$_GET["msg"]."</font><br>";

Veamos el if-else

if(trim($_POST["nick"]) != "" || trim($_POST["pass"]) != "" || $_POST["nombre"]) != "" || trim($_POST["email"]) != "")
    {

    }
else
    {
    header('Location: index.php?msg=Rellene bien los campos');
    }

mysql_close();
?>

Ahora veamos lo que habrá dentro de la sentencia if. Básicamente hacemos una consulta a la base de datos que nos diga si hay algun usuario con ese nick enviado. Si lo hay, enviamos al index.php con un mensaje (igual que el mensaje si los campos estaban vacíos), y si no lo hay pues insertamos en la base de datos los datos puestos por el usuario y mandamos al usuario al index.php con un mensaje de exito al registrar:

    $sql = "SELECT id FROM usuarios WHERE nick='".quitar($_POST["nick"])."'";
    $result = mysql_query($sql);
    if($row = mysql_fetch_array($result))
        {
        header('Location: index.php?msg=¡Nick ya existente!');
        }
    else
        {
        $sql = "INSERT INTO usuarios (nick,pass,nombre,email) VALUES (";
        $sql .= "'".quitar($_POST["nick"])."'";
        $sql .= ",'".md5(quitar($_POST["password"]))."'";
        $sql .= ",'".quitar($_POST["nombre"])."'";
        $sql .= ",'".quitar($_POST["email"])."'";
        $sql .= ")";
        mysql_query($sql);
        mysql_free_result($result);
        header('Location: index.php?msg=¡Registro Exitoso!');
        }

Y con esto ya hemos registrado al usuario y acabado esta entrada

miércoles, 14 de octubre de 2009

Final Fantasy RPG en "Flash"

La gente se aburre mucho, y eso me gusta. No se cuantas horas de trabajo tiene que tener hacer algo como esto que voy a poner, pero seguramente serán muuuchas horas.

Os dejo esta maravilla, cutre, pero hay que valorar el trabajo: