Archive for febrero, 2013

0 21
02
2013

Problemas de resolución con Nvidia en Ubuntu

Jueves, febrero 21st, 2013

Por suerte, hoy en día tenemos internet y una comunidad increíble de gente dispuesta a compartir sus conocimientos, vivencias, etc. simplemente para ayudar y aportar a los demás.

Y eso me solucionó el otro día la vida… bueno, quizás la vida sea mucho decir, pero sí me salvó de subsistir con una resolución equivocada en mi instalación de Ubuntu 12.04.

El problema fue el siguiente, después de estar trasteando con los drivers de nvidia en Ubuntu y sus configuraciones, tras reiniciar el ordenador, nos encontramos con una resolución de pantalla incorrecta y muy lejana a la deseada.

¿El primer pensamiento? Vamos a la configuración de Resolución de Monitores, lo cambiamos y a correr… Craso error. Sólo aparece la resolución errónea de 800×600 y no permite realizar ningún cambio.

¿Solución entonces para poder cambiar la resolución de pantalla en Ubuntu?

Primero debemos editar el archivo /etc/X11/xorg.conf, bien accediendo desde el explorador de archivos (siempre con permisos de administrador), o bien desde un terminal bajo línea de comandos


sudo gedit /etc/X11/xorg.conf

* En este caso hemos escogido gedit para editar el fichero, pero podrías elegir otro.

Una vez abierto xorg.conf, buscamos la sección Monitor, que será parecido a esto:


Section "Monitor"
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Unknown"
 HorizSync 28.0 - 33.0
 VertRefresh 43.0 - 72.0
 Option "DPMS"
EndSection

En nuestro caso, aparecían las propiedades HorizSync y VertRefresh con los valores que se indican sobre estas líneas. Los cambiamos por estos nuevos valores:


Section "Monitor"
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Unknown"
 HorizSync 30.0 - 70.0
 VertRefresh 50.0 - 160.0
 Option "DPMS"
EndSection

Estos valores se expresan en Hz y dependen del modelo de tu monitor.

Ahora nos vamos a la sección Screen del mismo fichero /etc/X11/xorg.conf, prestando especial atención a las siguientes propiedades (añádelas si no aparecen en tu fichero):

  • UseEdid: para indicarle que no lea los datos desde EDID
  • MetaModes: para indicarle la resolución de pantalla deseada
  • Modes: para indicarle un conjunto de resoluciones posibles para nuestro monitor / pantalla

Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 Option "UseEdid" "False"
 Option "MetaModes" "1400x1050 +0+0"
 DefaultDepth 24
 SubSection "Display"
 Depth 24
 Modes "1400x1050" "1280x1024" "1024x768" "800x600"
 EndSubSection
EndSection

Ahora reiniciamos el ordenador y esperamos a volver a ver nuestra pantalla con la resolución deseada en bajo nuestro sistema Ubuntu.

Fuente: http://ubuntuforums.org/showthread.php?t=1183319

16 03
02
2013

Encriptar y desencriptar en PHP

Domingo, febrero 3rd, 2013

Hoy vamos a implementar una manera sencilla de encriptar y desencriptar cadenas de texto en PHP.

Seguramente ya conocerás que existen diferentes tipos de encriptación, que podríamos englobar en 2 grandes grupos.

  • Encriptación en 2 sentidos o reversible o simétrica: es decir, permite encriptar y desencriptar un texto. Ejemplos de este tipo de encriptación para PHP son base64 (base64_encode y base64_decode) o mcrypt.
  • Encriptación en 1 único sentido o irreversibles o asimétrica: esto es, no se permite la desencriptación del texto encriptado previamente. Dado que recuperar la cadena original se hace imposible, esto hace que la encriptación asimétrica sea más segura que la encriptación simétrica o en 1 único sentido. Ejemplos de funciones PHP de este tipo de encriptación son md5, sha1, crypt, crc32.

A partir de estas herramientras que PHP nos proporciona para realizar labores de encriptación y desencriptación, vamos a construir nuestra clase Encrypter con 2 sencillos métodos:

  • encrypt: nos permitirá encriptar un texto
  • decrypt: permitirá desencriptar un texto previamente encriptado mediante la misma clase Encrypter.

Esta clase Encrypter, con el objetivo de fortalecer la seguridad de la encriptación, se apoyará además en una clave secreta definida de forma interna en el atributo $key.

Por lo tanto, sobra decir que, toda desencriptación que queramos realizar de un texto, deberá realizarse bajo la misma clave secreta que haya sido utilizada en el proceso de encriptación.


/**
* Description of Encrypter
*
* @author jose
*/
class Encrypter {

	private static $Key = "dublin";

	public static function encrypt ($input) {
		$output = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(Encrypter::$Key), $input, MCRYPT_MODE_CBC, md5(md5(Encrypter::$Key))));
		return $output;
	}

	public static function decrypt ($input) {
		$output = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(Encrypter::$Key), base64_decode($input), MCRYPT_MODE_CBC, md5(md5(Encrypter::$Key))), "\0");
		return $output;
	}

}

El uso de la clase Encrypter es más que sencillo, en la primera línea del siguiente código encriptaremos la variable $texto que contiene el string «son unos corruptos». En la siguiente línea, desencriptamos la variable $texto_encriptado previamente encriptado.

El resultado de la desencriptación guardado en la variable $texto_original, deberá ser igual que el de la variable inicial $texto.


$texto = "Son unos corruptos";

// Encriptamos el texto
$texto_encriptado = Encrypter::encrypt($texto);

// Desencriptamos el texto
$texto_original = Encrypter::decrypt($texto_encriptado);

if ($texto == $texto_original) echo 'Encriptación / Desencriptación realizada correctamente.';