Aquí encontrarás todo lo relacionado a la tecnología, computación, informática y demás. Enterate de las noticias del momento en cuanto a tecnología se refiere.





Gloobus – el Quick Look para Gnome

gloobus

Gloobus es una extensión para el administrador de archivos Nautilus del escritorio GNOME que permite la previsualización a pantalla completa de varios tipos de archivos, entre ellos: TXT , PDF, JPG, BMP, GIF, PNG, PSD, MP3, OGG, MPG, WMV y XCF, pero potencialmente otros más gracias a su extensibilidad.

Su funcionamiento es similar a la característica Quick Look introducida por primera vez en Mac OS X 10.5 “Leopard”: seleccionamos el archivo en Nautilus, pulsamos la barra espaciadora e instantáneamente se abre una ventana auxiliar con el contenido del archivo.

Instalación para ubuntu 9.04

Editamos el archivo /etc/apt/sources.list y agregamos los siguentes repositorios:

deb http://ppa.launchpad.net/tualatrix/gloobus/ubuntu jaunty main
deb-src http://ppa.launchpad.net/tualatrix/gloobus/ubuntu jaunty main

Descargamos la llave:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0624A220

Actualizamos e instalamos:

sudo apt-get update
sudo apt-get install gloobus-preview
sudo apt-get upgrade

Finalmente, reseteamos nautilus:

nautilus -q
nautilus &

Video demostrativo:

Crear un webservice para validación de E-mail

En éste tutorial, veremos como crear un webservice que contenga un método para validar si una dirección de emial es válida ó no. También crearemos una aplicación web en asp.net para consumir el webservice. En ésta ocasión utilizaremos VS2008 con el framework 3.5 SP1.

Lo primero que haremos será crear un sitio web del tipo webservice, para ello vamos a Fila->New-WebSite, en la ventana que nos aparece seleccionamos ASP.NET WebService:

Por default nos creará un método que regresa un simple “Hola Mundo”, modificaremos ese método y agregamos lo siguiente:

[WebMethod]
public bool EmailValidation(string email)
  {
string expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
if (System.Text.RegularExpressions.Regex.IsMatch(email, expresion))
      {
if (System.Text.RegularExpressions.Regex.Replace(email, expresion,String.Empty).Length == 0)
      { return true; }
       else
      { return false; }
      }
     else
      { return false; }
    }

Quedaría de la siguiente manera:

Con ésto ya tenemos creado nuestro webservice con un método que nos validará un email, ahora agregaremos un nuevo proyecto a nuestra solución, será un proyecto web asp.net, para ello, vamos a File->Add->New Project y seleccionamos ASP.NET Web Application:

Lo primero que debemos hacer es agregar la referencia del webservice a nuestro nuevo proyecto web, para ello damos click derecho en Referencia y luego Agregar referencia web…

Nos aparecerá una ventana para seleccionar la fuente del webservice, seleccionaremos WebService en this solution:

Ahí nos aparecerá el webservice que habíamos creado, lo seleccionamos y le damos Add Reference:

Una vez que ya está agregada la referencia, vamos a modificar el archivo Default.aspx y le ponemos un TextBox y un Botón:

Ahora en el evento OnClick del botón, agregamos el siguiente código:

 localhost.Service EmailService = new localhost.Service();
   bool Valid = EmailService.EmailValidation(TextBox1.Text);
       if (Valid)
          Response.Write("Email Correcto");
         else
          Response.Write("Email Incorrecto");

Quedaría de la siguiente manera:

Para correr el proyecto, configuramos el proyecto webapplication para que arranque de inicio , dando click derecho en el proyecto y le damos en Set as StartUp Project:

Listo!, probamos:


Si quieres hacer un webservice libre utilizando Mono, puedes visitar mi artículo anterior: Crear un webservice en monodevelop

Programación en 3 capas

Una buena práctica a la hora de desarrollar un sistema, es tratar de que la arquitectura sea de mínimo 3 capas: Presentación, lógica de negocio y datos.

En ésta imágen se puede entender mejor la arquitectura de 3 capas:

3 capas

En la capa de presentación sería la interfaz del usuario, ya sea con windows form, GTK ó Web; la capa de la lógica de negocio serían todas las validaciones y/o métodos, mientras que la capa de datos sería la fuente de datos, puede ser una base de datos, un archivo XML, etc…

Cómo práctica haremos una pequeña aplicación en 3 capas sobre un login en c# con la ayuda de monodevelop. Para comenzar creamos una nueva solución en blanco llamada Proyecto3Capas.

Primero comenzaremos con la capa de datos, para ello, damos click derecho en la solución llamada Proyecto3Capas->Añadir->Nuevo Proyecto, seleccionamos un proyecto web vacio y le ponemos de nombre Datos:

Nuestra capa de datos será un webservice dónde contendra el usuario y password del login. Una vez tengamos damos click derecho en el proyecto Datos->Añadir->Nuevo archivo y seleccionamos Servicio web con code Behide, si tienes dificultades para crear el webservice puede ir al post: crear un webservice en monodevelop.

En el archivo webservice.asmx.cs agregaremos un nuevo método:

  [WebMethod]
    public bool Datos(string user, string pass)

    {

        if(user=="admin" && pass=="admin")
				return true;
			else
				return false;

    }

Es un simple método que valida usuario = admin y password también admin.

Luego, seguirá la lógica de negocio, para ello, damos click derecho en la solución, Añadir->Nuevo proyecto, y seleccionamos una Librería en c# (puede ser VB.NET si lo desea),le pondremos como nombre Logica, lo bueno de ésto es que se creará una DLL por lo que puede ser escrita en cualquier lenguaje.

Para ser uso de la capa de Datos , damos click derecho en la carpeta de Referencia->Editar referencia , vamos a la pestaña de Proyectos y agregamos la capa de Datos:

Agregaremos un método llamado Autentificacion con lo siguiente:

	public bool Autentificacion(string user, string pass)
		{
			Datos.webservice service = new Datos.webservice();
			bool resultado = service.Datos(user,pass);
			if(resultado==true)
				return true;
			else
				return false;
		}

Ahora Falta crear la capa de Presentación, nuevamente damos click derecho en la solución y añadimos un proyecto GTK# llamado Presentación, una vez creado, agregamos la referencia de la capa de la lógica.

Creamos una interfaz donde acepte un usuario, contraseña, un label para mostrar resultado y un botón, en el evento click del botón, añadimos lo siguiente:

Logica.Logica login = new Logica.Logica();
bool result = login.Autentificacion(this.entry1.Text,this.entry2.Text);
	if(result==true)
		label3.Text = "correcto";
	else
		label3.Text = "incorrecto";

Ésto sería un proyecto muy sencillo pero muy claro de como se puede dividir un proyecto en 3 capas, ésto nos ayudará a identificar mejor los posibles errores, mantenible,etc…

Les dejo el proyecto terminado para su descarga: Proyecto 3 Capas.zip

Comentarios, dudas, sugerencias son bien aceptadas.

Encriptación de Texto en C# con Mono

La encriptación en el área de seguridad es muy importante, y más aún en una aplicación a la hora de guardar contraseñas en una base de datos.

Aquí les dejo un proyecto con el cuál podemos encriptar y desencriptar texto con la ayuda de algunas clases que se encuentran en .NET, me basé en ésta página Using System.Linkecubeko

Para comenzar utilizaremos los siguientes espacios de nombres:

using System.Text;
using System.Security.Cryptography;

Y con las siguientes clases:

MD5CryptoServiceProvider (Clase)

Calcula el valor de hash MD5 (Message-Digest Algorithm 5), de los datos de entrada utilizando la implementación proporcionada por el proveedor de servicios criptográfico (CSP). Esta clase no se puede heredar.

UTF8Encoding (Clase)

Representa una codificación UTF-8 de caracteres Unicode.

TripleDESCryptoServiceProvider (Clase)

Define un objeto contenedor para obtener acceso a la versión del proveedor de servicios criptográficos (CSP) del algoritmo TripleDES (algoritmo que hace triple cifrado del algoritmo Data Encryption Standard) No se puede heredar esta clase.

CipherMode (Enumeración)

Especifica el modo de cifrado de bloques que se utilizará para cifrar.
PaddingMode (Enumeración)

Especifica el tipo de relleno que se aplica cuando el bloque de datos del mensaje es más pequeño que el número total de bytes necesarios para una operación criptográfica.

ICryptoTransform (Interfaz)

Define las operaciones básicas de las transformaciones criptográficas.

Gracias al proyecto mono, podemos crear esta clase y liberarla bajo la licencia GPL.

Aquí les dejo la clase cifrado ya codificada: cifrado.cs

Para comenzar, creamos un proyecto nuevo C# con Gtk# en Monodevelop y creamos una forma más ó menos como ésta:

Para facilitar mejor las cosas he creado una dll con las clases para encriptar y desencriptar, primero nos descargamos la dll: criptologia.dll, luego la agregamos como referencia a nuestro proyecto dando click derecho en Referencias y luego Editar preferencias… .:

Ahora en el evento Click del Botón que dice encriptar, ponemos lo siguiente:

criptologia.Cifrado oCifrado = new criptologia.Cifrado();
entry2.Text = oCifrado.Encriptar(entry1.Text);

Y en el evento Click del Botón desencriptar, ponemos:

criptologia.Cifrado oCifrado = new criptologia.Cifrado();
entry3.Text = oCifrado.Desencriptar(entry2.Text);

Aquí les dejo el proyecto terminado: encriptacion.zip.

Conclusión:

Con ésto podemos agregar mayor seguridad en nuestros aplicaciónes ó sistemas, gracias a mono nuestra DLL es libre y se puede utilizar con cualquier propósito, estudiar, modificar y redistribuir.

Todos los derechos reservados. Tecnologia.