on miércoles, 21 de diciembre de 2011
En el trabajo me encargaron que diseñara e implementara una clase para enviar correos para visual studio 2010 en el lenguaje de C#, veamos como la fui armando, primero que nada, haremos una clase llamada

                                                          ManejadorDeCorreoElectronico

una vez tengamos nuestra clase, vamos agregar la siguiente referencia:

                             using System.Net;
                             using System.Net.Mail;


Esto es para poder utilizar las clases siguientes:

                             MailMessage, SmtpClient y Attachment


Estas clases cuentan con los metodos y propiedades necesarias para poder enviar correos electronicos, la clase MailMessage trae propiedades como Subject, Body, Priority entre otras mas.

La clase SmtpClient cuenta con propiedades basicas propias del ambito de un cliente Smtp, como lo es el puerto y el host.

Creando clase ManejadorDeCorreoElectronico:



using System;
using System.Net.Mail;
using System.Net;

namespace Utilerias
{
    public class ManejadorDeCorreoElectronico
    {
        private MailMessage CorreoElectronico;

        private SmtpClient Smtp;    
     

        // nota: el constructor por defecto utilizara el cliente Smtp de gmail
        public ManejadorDeCorreoElectronico()
        {
         
            CorreoElectronico = new MailMessage();
            Smtp = new SmtpClient("smtp.gmail.com", 587);          
            Smtp.EnableSsl = true;          
            CorreoElectronico.Priority = MailPriority.Normal;
            CorreoElectronico.IsBodyHtml = false;
        }

        public ManejadorDeCorreoElectronico(string host, int port)
        {
            CorreoElectronico = new MailMessage();
            Smtp = new SmtpClient(host, port);
            Smtp.EnableSsl = true;
            CorreoElectronico.Priority = MailPriority.Normal;
            CorreoElectronico.IsBodyHtml = false;
        }
     

 public void EnviarCorreo(string correoFuente, string passowrd,string nombreYapellidos, string Correodestinatario, string subject, string body)
        {
            try
            {
                Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
                CorreoElectronico.Subject = subject;
                CorreoElectronico.Body = body;
                CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
                CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
                Smtp.Send(CorreoElectronico);              
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public void EnviarCorreo(string correoFuente, string passowrd, string nombreYapellidos, string                                     Correodestinatario, string subject, string body, string fileName)
        {
            try
            {
                Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
                CorreoElectronico.Subject = subject;
                CorreoElectronico.Body = body;
                CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
                CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
                CorreoElectronico.Attachments.Add(new Attachment(fileName));
                Smtp.Send(CorreoElectronico);              
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

    }
}


El método EnviarCorreo esta sobrecargado, uno para enviar un simple correo y otro para agregar un attachment.

Tambien el constructor esta sobrecargado, ya que el constructor pordefecto, esta configurado con el host y el puerto de gmail.

y el otro constructor, recibe el host y el puerto de un determinado servidor de correos.


Ahora bien, veamos como implementamos nuestra clase.

1.- crear una aplicacion windows form, y agregar un boton y le damos doble click:


         private void button1_Click(object sender, EventArgs e)
        {
            ManejadorDeCorreoElectronico correo = new ManejadorDeCorreoElectronico();


            try
            {
                correo.EnviarCorreo("user@gmail.com", "password", "Fernando Hoyos", "userDestino@dominio.com", "correo                       prueba", "este es un correo de prueba enviado por c#, no te malviajes");
                MessageBox.Show("ya se armo el correo");
            }
            catch (Exception ex)
            {
                MessageBox.Show("no se armo ni maiz" + ex.Message);
            }      
         }



Enjoy =)
on martes, 20 de diciembre de 2011
El día de hoy, unos compañeros de trabajo me pasaron este software, sin duda, lo que me hacia falta, este software te permite hacer un seguimiento de tus actividades diarias y clasificar cada actividad de acuerdo a lo que estés haciendo.

otro compañero comento que era algo obsesivo estar midiendo cada actividad incluso el ir al baño, tal ves lo sea, pero nos da una pauta de cuanto tiempo estamos invirtiendo en un proyecto, incluyendo las necesidades fisiológicas como ir al baño.

Enseguida viene la imagen de la pantalla principal de hamster time tracking.

Hamster time tracking

Otra de sus funcionalidades principales es que tiene estadísticas, primero tendrá que pasar una semana para hacer una comparación del tiempo que invertiste en tu día de trabajo.

Cuenta con un overview que te permite ver el tiempo invertido en un dia de trabajo, cosa que en lo personal me parece interesante.

Cabe mencionar que es open source, y esta disponible para windows, originalmente se creo para correr bajo gnome, pero hay una versión para windows.

Este software lo pueden descargar directamente de del siguiente link: http://howle.org/hamster-setup.exe

Tambien pueden visitar el sitio donde se sigue paso a paso el desarrollo de dicho programa para la versión de windows: https://bugzilla.gnome.org/show_bug.cgi?id=541316#c6

Que tal, se me presento la oportunidad con firebird y .net, y la primer duda es como armar un connection string para firebird en .net, navegando por la web me tope con una pagina  http://www.connectionstrings.com.

el connection string de firebird para .net es el siguiente:

User=SYSDBA;Password=masterkey;Database=SampleDatabase.fdb;DataSource=localhost; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true; MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;


enjoy =)
on domingo, 18 de diciembre de 2011
por Fernando Hoyos y Omar Alanis:




Requerimientos:
          Instalación de Ubuntu 11.04 



Requisitos:


  • Actualización de los repositorios de Ubuntu 11.04

                                   apt-get install update


  • Instalación de Apache 2

                                   sudo apt-get install apache



  • Probamos el Servidor Apache

                                  Iniciamos apache : /etc/init.d/apache2 start

En el navegador probamos el servidor con la dirección local 127.0.0.1 



Screenshot


Instalación


  • Subversión y Herramientas

                           sudo apt-get install subversion subversion-tools


  • Verificamos los módulos dav y dav_svn

                          a2enmod dav

cuando activamos dav, estamos asegurando que solo usuarios autorizados por subversión puedan accesar al repositorio.

Si no están instalados, los instalamos

                         sudo apt-get install libapache2-svn

Para asegurar los cambios reiniciamos Apache

                         /etc/init.d/apache2 restart



Configuración:

sin duda la parte mas difícil es la configuración, si no tenemos cuidado podemos pasar por un mal rato.

Agregamos un grupo para la subversión

                       sudo groupadd subversion

es muy importante crear un grupo especial para subversión por cuestión de los permisos de los usuarios que estén autorizados.


Ahora creamos el archivo que contendrá un password para el administrador de subversion

                       sudo htpasswd -c /etc/apache2/dav_svn.passwd user

aqui estamos creando un usuario y ademas con la cerradura -c estamos creando a su vez el archivo dav_svn.passwd, que es el que contendrá los usuarios autorizados a su vez que sus contraseñas, obviamente encriptadas por cuestión de seguridad.

Luego creamos el repositorio donde se versionara nuestro proyecto en los directorios correspondientes

                cd/var/www
                mkdir repos
               svnadmin create repositorioejemplo
               cd  repositorioejemplo (entramos al repositorio)

Despues de esto le damos los permisos necesarios que necesita el repositorio para que los usuarios de subversion puedan accesar sin problemas.

vamos a utilizar el comando chown que sirve para agregar permisos a un determinado usuario o grupo o ambos para que puedan accesar al repositorio

               sudo chown -R www-data:subversion /var/www/repos/repositorioejemplo 

               sudo chmod -R 770 /var/www/repos/repositorioejemplo

Tal ves nos pueda sacar de onda la cerradura -R, pero lo unico que hace es que asigne los permisos y herede a todos los archivos o subcarpetas del repositorio.

aqui estamos asignando permisos al repositorio que el usuario de apache (www-data) y al grupo subversión para que todos los usuarios que accesen via web se autentiquen con su usuario del grupo subversión.

Hay que tener mucho cuidado ya que si asignamos de forma errónea los permisos no nos dejara accesar al repositorio.


si todo a salido bien, nos debe de aparecer la siguiente imagen.




repositorioejemplo


y si algo salio mal, nos debería de aparecer la siguiente imagen:





error

Importar nuestro primer proyecto al repositorio.


Una vez que tenemos configurado nuestro repositorio, ahora lo que tenemos que hacer es importar nuestro proyecto.


para esto, lo primero que tenemos que hacer es crear una carpeta, no importa en la posicion que estemos.


             mkdir proyecto1


Accesamos al folder proyecto1


           cd proyecto1
   
y luego lo que tenemos que hacer es crear un archivo y ponerle una descripción de ejemplo.
   
    nano ejemplo


nano


ahora si ya tenemos nuestro primer proyecto, lo que tenemos que hacer ahora es hacer el primer import al repositorio:




           sudo svn import proyecto1/ file:///var/www/repos/repositorioejemplo/proyecto1


tambien lo podemos hacer por el protocolo http:




           sudo svn import proyecto1/ http://localhost/svn/repositorioejemplo/proyecto1












import


Hecho esto, veremos en la consola que ya se hizo el primer commit:


addIngCommit


creo que es necesario aclarar que existen varios protocolos para utilizar svn, uno de ellos es el file:/// este protocolo solo se utiliza localmente en el servidor.


tambien tenemos el protocolo http:// este protocolo es el que nosotros utilizaremos con dav, para accesar via web.


tambien existe el protocolo https:// este protocolo es que se utiliza con encriptacion ssl, este no lo utilizaremos, tal ves en una chance me anime a realizar una instalacion y configuracion usando certificados ssl.


tambien contamos con el protocolo svn, pero no lo e utilizado.


Ya una vez hecho el import, es necario darle permisos, por que vemos que pasa cuando intentamos accesar al repositorio una vez hecho el import local.


vemos que pasa si no cambiamos los permisos en el repositorio.


primero que nada, accesamos via url: 127.0.0.1/svn/repositorioejemplo/proyecto1
y nos autenticamos.


autenticar


una vez autenticados, nos saldra este error:


error


pero pues no hay que preocuparnos, la solucion es darle nuevamente los permisos al repositorio.




         sudo chown -R www-data:subversion /var/www/repos/repositorioejemplo 

         sudo chmod -R 770 /var/www/repos/repositorioejemplo




Tengo que confezar que tardamos como 5 dias para resolver este error.


Ahora solamente necesitamos volver a accesar al repositorio.


Y veamos que nos sale:


revision1