-->

Archivos en la categoría Programación

Megaupload link grabber - Extractor de links de megaupload (re-actualizado)

Megaupload Link Grabber

Recientemente he adquirido una cuenta de megaupload premium para poder… descargar lo que pueda sin esperas, porque era un poco rollete e iba lento en muchas ocasiones, pero era bastante molesto tener que añadir los enlaces uno a uno en el Megaupload MegaManager (a la espera de que jDownloader tenga soporte completo para Megaupload premium), pues bien, he creado un sencillo script en php que extrae enlaces de megaupload de un texto que se le ponga (como el código fuente de una web) y los muestra directamente para pegarlo en el comprobador de enlaces del megamanager comprobando si son correctos o no y si tienes cuenta premium, puedes sacar los enlaces finales directamente.

La utilidad podéis encontrarla aquí, no requiere descarga, es todo online.

Megaupload link grabber

ACTUALIZACIÓN(20/08/2008): He creado una clase que coge datos de los archivos para combinarlo con esta utilidad y que ahora diga si los enlaces están correctos o han caducado.

ENGLISH: This is a online tool for grabbing megaupload links from any text you have -like the source code of a webpage- and now it checks the links too, showing if the file is online or if has expired.

NEW BIG UPDATE / NUEVA GRAN ACTUALIZACIÓN

ACTUALIZACIÓN(20/08/2008): Usando dicha clase, ahora también es capaz de obtener información de dichos archivos, así como su nombre y tamaño, también es posible seleccionar si quiers checkearlos o no. Y una nueva función que es la que deseaba finalmente: Ahora es capaz de sacar los enlaces finales de los links usando la cookie del usuario, siempre y cuando el usuario tenga cuenta premium. Por favor probadlo y comentar aquí cualquier cosa, ¡gracias!

ENGLISH: Using that class, now is able to get info from the file, like filename or filesize, also is posible to select if you want check links or not. And a new function that is what I want: Now is able to get final links from the links using user cookie, as long as the user has premium account. Please test it and comment here anything, thank you!

NEW NEW BIG UPDATE / NUEVA NUEVA GRAN ACTUALIZACIÓN

 

ACTUALIZACIÓN(08/09/2008): Nuevo diseño, más soporte… ¡y generación de listas de descargas para foros! Ahora puedes meter tus enlaces y los creará automáticamente con BBCode, ¡y además con una imagen que verificará en todo momento si tu link está online!

ENGLISH: New design, more support… ¡and download list generator for forums! Now you can put your links and the script will create the list with BBCode, with a image that checks everytime if your link is online!

Cambiar password de root en mysql

  1. Detener el servidor MySQL
  2. Usualmente: /etc/init.d/mysql stop

  3. Iniciar el proceso mysqld con la flag –skip-grant-tables
  4. Usualmente: mysqld --skip-grant-tables

  5. Conectar al servidor como root
  6. mysql -u root

  7. Cambiar la contraseña
  8. mysql
    >> use mysql;
    >> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
    >> flush privileges;
    >> quit

  9. Reiniciar servidor MySQL
  10. Usualmente /etc/init.d/mysql restart

Por petición de Nolla dejo aquí el tip, que ha sido muy útil hoy, ¿verdad? ¬¬

Exportar/Importar MySQL desde terminal

Para Exportar

mysqldump -u usuario -p nombre_base_de_datos > archivo.sql

Para Importar

mysql -u root -p nombre_base_de_datos < ruta_base_de_datos.sql

Funcion para evitar XSS en PHP

Navegando por internet me he encontrado con esto:

function RemoveXSS($val) {
   // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
   // this prevents some character re-spacing such as 
   // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
   $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val); 

   // straight replacements, the user should never need these since they're normal characters
   // this prevents like 
   $search = 'abcdefghijklmnopqrstuvwxyz';
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $search .= '1234567890!@#$%^&*()';
   $search .= '~`";:?+/={}[]-_|\'\\';
   for ($i = 0; $i < strlen($search); $i++) {
      // ;? matches the ;, which is optional
      // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars 

      // @ @ search for the hex values
      $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
      // @ @ 0{0,7} matches '0' zero to seven times
      $val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
   } 

   // now the only remaining whitespace attacks are \t, \n, and \r
   $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
   $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
   $ra = array_merge($ra1, $ra2); 

   $found = true; // keep replacing as long as the previous round replaced something
   while ($found == true) {
      $val_before = $val;
      for ($i = 0; $i < sizeof($ra); $i++) {
         $pattern = '/';
         for ($j = 0; $j < strlen($ra[$i]); $j++) {
            if ($j > 0) {
               $pattern .= '(';
               $pattern .= '(&#[xX]0{0,8}([9ab]);)';
               $pattern .= '|';
               $pattern .= '|(�{0,8}([9|10|13]);)';
               $pattern .= ')*';
            }
            $pattern .= $ra[$i][$j];
         }
         $pattern .= '/i';
         $replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in <> to nerf the tag
         $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
         if ($val_before == $val) {
            // no replacements were made, so exit the loop
            $found = false;
         }
      }
   }
   return $val;
}

38.6277% Geek - Test Geek

Realizado el test friki (por segunda o tercera vez ya xD) y mi puntuación. Esta vez me lo pasó mi colega Juanpa.

Si quieres hacerlo tú también pincha el siguiente enlace:

i am a major geek

Código PHP: Algoritmo de Zeller

Hoy me ha sido necesario usar el algoritmo de Zeller para un proyecto, tenía por ahí el código de C usado en clase, y lo he pasado a PHP, por si alguien lo necesita:

$days = array("Domingo", "Lunes", "Martes",
"Miércoles", "Jueves", "Viernes", "Sábado");

function zeller($year, $month, $day)
{
        if ($month <= 2)
        {
                $month = $month + 10;
                $year = $year - 1;
        }
        else
        {
                $month = $month - 2;
        }
        $a = $year % 100;
        $b = $year / 100;
        return (700 +
                ((26 * $month -2) / 10) +
                $day +
                $a +
                $a / 4 +
                $b / 4 -
                2 * $b
                ) % 7;
}

La función devuelve 0 si es Domingo, 1 si es Lunes… y así sucesivamente.

Información | Wikipedia - Congruencia de Zeller

phShell 0.1 lanzado

Se trata de un sistema programado con PHP y Javascript que simula una shell en una interface web. Lo he programado porque recientemente tenía que manejar un servidor privado y necesitaba algo cercano con lo que poder realizar algunos comandos sin tener que abrir un cliente shh.

Agradecimientos a Gregory por su librería de AJAX.

Página del proyecto | phShell

Torres de Hanoi en C#

Indagando un poco por internet el otro día me encontre con el Blitz3D SDK, unas librerías de programación 3D orientadas a desarrollo de videojuegos, y como hace tiempo probé Blitz, me decidí a probarla.

He llegado a hacer parte de un Pong y un primitivo Torres de Hanoi. El resultado me ha gustado en cuanto a programación, ya que usando la estructura de C# podemos manejar las funciones de BlitzBasic sin problemas, y con la misma sencillez que en su editor original.

C# - Torres de Hanoi con Blitz3D SDKAl final he decidido dejar de lado esta librería debido a la cantidad de recursos que consume (mi procesador es un QuadCore Q6600 y consumía el 22% de la CPU) y que es de pago, que seguro que hay gratuitos por ahi.

Adjunto el Torres de Hanoi, tanto binarios como código fuente. En el código fuente no se incluye el archivo de clases del Blitz3D SDK, tendréis que obtenerlo por vuestros propios medios, los binarios incluyen la DLL para que pueda funcionar. Necesitaréis .NET Framework 2.0 para hacerlo funcionar.

Descarga | Binario, Proyecto Visual C#
.NET Framework 2.0 x86 | Web, Descarga local
.NET Framework 2.0 x64 | Web, Descarga local

Mi primer programa en C#

¡Ya me he iniciado en C#! La verdad es que me llevé una grata sorpresa al ver su IDE, Microsoft Visual C# 2008 Express Edition (totalmente gratuita), muy parecida a Visual Basic a la hora de crear los formularios de trabajo, pero a simple vista mucho más potente.

DNI - Mis comienzos con C#Mi primer programa es algo de lo más sencillo, un programa com un campo en el que se puede introducir un número de DNI, y una vez tiene ocho cifras en la parte de abajo (otro campo de texto pero solo de lectura) muestra ese DNI con su letra correspondiente. Algo tonto, pero por algo se comienza.

Para hacer funcionar el binario necesitaréis .NET Framework 2.0

Descarga | Binario, Proyecto Visual C#
.NET Framework 2.0 x86 | Web, Descarga local
.NET Framework 2.0 x64 | Web, Descarga local
Agradecimientos | Wikibooks