Lo que me gusta, me interesa y me motiva…
RSS icon Home icon
  • Eliminar historial de autocompletar almacenado en MS Outlook

    MS Outlook guarda las entradas de autocompletar en un archivo llamado Outlook.NK2 que se encuentra dentro de la carpeta ‘appdata’  (datos de aplicación).

    Puedes localizar esta carpeta escribiendo %appdata%   en el menú Inicio de Windows dentro de ‘Ejecutar’ (pulsa win+R)

    Asegúrate de tener cerrado Ms Outlook

    • Escribe  %APPDATA%\Microsoft\Outlook
    • Busca el archivo Outlook.NK2
    • Haz una copia de seguridad del archivo
    • Elimina el archivo
    • Abre MS Outlook, y prueba.
  • Pidgin Registro de Conversaciones en Windows

    Busca tu carpeta “de datos de aplicación”.  Puedes localizar fácilmente esta carpeta escribiendo %appdata%   en el menu Inicio de Windows dentro de ‘Ejecutar’ (pulsa win+R)

    En windows 7 esta carpeta esta en C:\Users\tuNombreUsuario\AppData\Roaming\

    busca alí la carpeta .purple\logs\

    Para que las conversaciones se guarden en Pidgin debes activarlo. “Herramientas – Preferencias” pestaña “Registro”

    Espero te sirva…

  • Comparar archivos con Eclipse

    ¿Cómo comparar dos archivos con Eclipse?
    Sumamente fácil; pero como casí nunca lo uso, suelo olvidarlo. Aquí lo dejo para recordarlo.

    Seleccionar los archivos a comparar… luego boton derecho…
    Comparar Archivos con Eclipse 1
    Comparar Archivos con Eclipse 2

    Compare Each Other…

    Comparar Archivos con Eclipse 3

  • Mejora la calidad de tu software con testing

    TestingMejorar la calidad de tu software depende también de que hagas buenos test durante su desarrollo.

    Es importante tener presente en el ciclo de desarrollo las pruebas y orientarse hacia el testing para evitarse futuros e innecesarios problemas. Los test te ayudarán a encontrar errores, pero ten presente que aunque el test no falle, esto no significa que el software no contenga errores.
    Como dijo ‘Dijkstra’ “…El testing prueba la presencia de errores pero no la ausencia de ellos…”

    Hay que distinguir dos tipos de errores: los llamados errores de software o bugs y los errores de forma.
    Los errores de forma son aquellos en los cuales el software no falla en su código pero si en su funcionalidad, es decir no cumple con lo que se espera de ellos como resultado.

    Los frameworks de testing como JUnit, TestNG te ayudarán principalmente con los bugs y otro poco con los errores de funcionalidad, pero estos últimos deben ser subsanados con un buen ciclo de entregas y retroalimentación continuo del software.
    Además, estos frameworks te serán de gran utilidad en entornos de aplicación ‘pesados’ donde probar el software significa, por ejemplo, levantar un servidor web.

    Otro punto positivo, es que si diseñas buenas suites de pruebas, podrás luego,  ante un cambio por mantenimiento en tu software,  realizar una prueba integral de todos los módulos del mismo verificando que no hayas ‘roto’ alguna otra cosa.
    Testear el software es poco divertido (al menos para mí) y apoyarse en un buen framework de testing ayuda a aliviar en parte esa tediosa (pero necesaria) tarea de probar el software. Una vez que tienes hecho el test, lo ejecutas las veces que quieras.

    JUnit es un clásico de los test, muy conocido y muy integrado a los principales entornos de desarrollo.
    TestNG es otra buena opción para realizar tus pruebas.

    Veamos un poco de JUnit con un simple ejemplo:

    JUnit

    junit-run

    Esta es la consola de JUnit
    junit-console

    Anotaciones mas usadas:

    @BeforeClass:  se ejecuta una sola vez para todos los test. Util para inicializar variables u otros datos que serán compartidos.
    @AfterClass: se ejecuta una sola vez al finalizar los test.
    @Before: se ejecuta previo al iniciar cada @Test.
    @After: se ejecuta luego de cada @Test
    @Test: metodo que será ejecutado como test.

    Nuestra clase de test JUnit…
    ——-

    import org.junit.After;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Ignore;
    import org.junit.Test;
    
    public class SimpleTestJUnit {
    
        Calculator calc;
    
        @Before
        public void setUp() {
            // Before indica que debe ejecutrarse antes de iniciar el test...
            System.out.println("Ejecutando SimpleTest.setUp ...");
            calc = new Calculator();
        }
    
        @After
        public void after() {
            // After indica que debe ejecutrarse despues del test...
            System.out.println("Ejecutando SimpleTest.after...");
        }
    
        @Test
        public void testDivision() {
            System.out.println("Ejecutando SimpleTest.testDivision...");
            System.out.println(calc.getDivision(10, 3));
        }
    
        @Test
        public void testDivisionByZero() {
            // este test se ejecutara con error
            System.out.println("Ejecutando SimpleTest.testDivisionByZero...");
            System.out.println(calc.getDivision(10, 0));
        }
    
        @Test(expected = ArithmeticException.class)
        public void testDivisionByZeroWithExpectedException() {
            // Este test no dara error. Esperamos la exception ArithmeticException
            System.out.println("Ejecutando SimpleTest.testDivisionByZeroWithExpectedException...");
            System.out.println(calc.getDivision(10, 0));
        }
    
        @Test
        public void testPrimeNumber() {
            System.out.println("Ejecutando SimpleTest.testPrimeNumber...");
            int i = 10;
            int j = 5;
            System.out.println("Es numero primo: " + calc.isPrimeNumber(i, j));
            Assert.assertTrue(calc.getRest(i, j) == 0);
        }
    
        @Ignore
        @Test
        public void testIgnore() {
            // NO se ejecutara debido a que tiene la anotacion @Ignore...
            System.out.println("SimpleTest.testIgnore...");
        }
    
    }

    ———–
    Nuestra clase Calculator que usamos para este ejemplo es…

    public class Calculator {
    
        public double getDivision(int v1, int v2){
            int i = v1 / v2 ;
            return i;
        }
    
        public double getRest(int v1, int v2){
            double i = v1 % v2;
            return i;
        }
    
        public boolean isPrimeNumber(int v1, int v2){
            return getRest(v1, v2) == 0;
        }
    
    }


    Ahora armaremos un suite para ejecutar varios test’s juntos…
    Defines una clase con las dos anotaciones que se muestran, en una de ellas ‘SuiteClasses’ indicarás los test a ejecutar.

    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses( { SimpleTestJUnit.class, SimpleTestJUnit2.class})
    public class AllTests {
    
        public static void main(String[] args) {
            // esta clase ejecutara los test's definidos en @SuiteClasses
        }
    
    }

    ——

    TestNG

    Si conoces JUnit te resultará mas que fácil usarlo y si no, verás que es muy parecido a JUnit
    Este framework se integra a Eclipse con su plug-in

    testng-run

    Esta es la consola de TestNG (muy similar a la de JUnit)

    testng-console


    Haz click aqui para ver un test simple con TestNG …

    En TestNG podemos crear también una suite de test’s.
    Este xml ejecutará dos test SimpleTestNG, y SimpleTestNG2.
    Solo debes ejecutarlo con el menú de TestNG

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    
    <suite name="SuiteSimpleTests"    verbose="1" >
      <test name="GroupTest1"   >
        <classes>
          <class name="test.SimpleTestNG"/>
          <class name="test.SimpleTestNG2"/>
        </classes>
      </test>
    </suite>

    Como vez, los frameworks son bastante simples de utilizar, es solo cuestión de que te hagas el hábito de trabajar pensando y orientandote al testing. Pronto verás los beneficios que te trae para la calidad de tu software.
    Espero te haya servido.

    Enlaces: JUnit TestNG

  • Recuperar correo borrado en Thunderbird

    Recuperar MailComo recuperar un mail o correo borrado ‘definitivamente’ en Mozilla Thunderbird.
    Si borraste un mail importante también de la papelera, y necesitas recuperarlo, todavía tienes una oportunidad de hacerlo; siempre y cuando no hayas compactado las carpetas.

    1. Cierra completamente tu cliente de correo (Control + Q)
    2. Busca la carpeta dónde Thunderbird guarda los archivos de correo. La puedes encontrar en las propiedades de la cuenta. Botón derecho sobre la cuenta, Propiedades / Configuración de la Cuenta / Configuración del Servidor;  buscas “Directorio Local”.
    3. Haz backup de los archivos con los que vas a trabajar.
    4. Eliminas el archivo Trash.msf  (este archivo es un cache y lo creará nuevamente Thunder al iniciar).
    5. Editas el archivo Trash (sin extensión) con algún editor de texto como Notepad++,  por ejemplo. (Ojo si el archivo es demasiado pesado, será difícil que lo puedas abrir).
    6. Buscas tu mail borrado, usando el asunto o alguna parte del texto del  que conozcas.
    7. Editas la cabecera y cambias el valor X-Mozilla-Status: 0009 al valor 0000.
    8. Abres Thunderbird y con un poco de suerte tendrás tu mensaje recuperado.

    No olvides siempre hacer antes una copia de respaldo de tus archivos en otro lugar, por si algo va mal.