FIDDLER: El depurador proxy para cualquier navegador o cliente

¿Queremos saber que datos se están recibiendo y/o transmitiendo desde nuestro PC? La solución es el programa FIDDLER.

FIDDLER es un programa que monitoriza todas las conexiones TCP/IP que realiza nuestro ordenador, pudiendo filtrar por protocolos, aplicaciones, etc…

Una maravilla de programa que nos podrá ayudar mucho a depurar nuestras aplicaciones, así como hacer ingeniería inversa de otras.

 

Forzar el cálculo del DLTK INDEX de Eclipse

Tan simple, y cutre (ya que desde las últimas versiones del Eclipse es imposible hacerlo desde el propio Eclipse), como borrar el directorio completo

[tu_workspace]\.metadata\.plugins\org.eclipse.dltk.core.index.sql.h2

(con el Eclipse cerrado) y luego volver abrir Eclipse.

De esta manera tan poco profesional podremos forzar a que eclipse haga un reindexado de su índice DLTK.

Crear una DLL (COM) en Visual Studio C# para que sea visible desde Power Builder (PB)

Voy a explicar los pasos para poder crear una DLL en C# usando Visual Studio, y que dicha DLL pueda ser usada desde otro lenguaje de programación, en este caso Power Builder (PB). Como digo, podrá ser utilizada desde cualquier otro lenguaje de programación, porque la DLL será creada como un componente COM.

Presupongo que el lector ya sabe crear, compilar y ejecutar un proyecto vació y básico desde ambos lenguajes 🙂

 

En Visual Studio:

Creamos un nuevo proyecto C# para Windows de tipo Biblioteca de clases, y ponemos correctos (o si prefieres puedes dejar los nombres por defecto) el nombre de fichero y nombre de clase que establece Visual Studio por defecto.

Abrimos las propiedades de nuestro proyecto -> Aplicación -> Información de ensamblado… -> Marcar el checkbox de “Crear ensamblado visible a través de COM

Volvemos de nuevo a la pantalla principal de las propiedades, ahora nos vamos a Firma, marcamos “Firmar el ensamblado” y nos creamos una nueva firma.

Dejamos el código fuente de la clase de la siguiente manera (en negrita marco lo más importante):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Test
{

 

   [Guid(“F8E03FC1-3367-4d4a-AD49-EF3EAEBFA6EC”)]
   [InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface _CTest
{
void Test();
void Test2();

}
[Guid(“F8E03FC1-3367-4d4a-AD49-EF3EAEBFA6EC”)]
    [ClassInterface(ClassInterfaceType.None)]

   [ProgId(“Test.CTest”)]
public class CTest : _CTest
{

public void Test()
{
MessageBox.Show(“Hola, yo soy Test()”);
}

public void Tes2t()
{
MessageBox.Show(“Hola, yo soy Test2()”);
}

}
}

Los códigos de GUID se pueden obtener con alguna de las herramientas de Microsoft Visual Studio, o bien desde alguna web tipo http://www.guidgen.com/

Una vez hecho esto, compilamos el proyecto y nos aseguramos que no haya ningún error.

Lo más probable es que queramos distribuir la DLL en otros PCs, junto al programa realizado en Power Builder, para ello pasaremos a agregar/crear un nuevo proyecto instalador tipo “Otros tipos de proyectos” -> “Instalación e implementación” -> “Instalador de Visual Studio” -> “Proyecto de instalación”

En el nuevo proyecto instalador, agregaremos los resultados del proyecto de la clase de la DLL; y lo más importante, en las propiedades del resultado principal de dicha clase, especificaremos la propiedad Register a vsdrpCOM.

Generamos el nuevo proyecto instalador, y pasaríamos a instalar la DLL en el equipo.

 

Nota: Es posible que en Visual Studio, cuando generemos el instalador, se nos presente un mensaje tipo Visual Studio registry capture utility has stopped working o Visual Studio registry capture utility dejo de funcionar, para solucionarlo:

  1. Localiza regcap.exe en: C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\Deployment (o similar)
  2. Botón derecho sobre el fichero y selecciona “Propiedades“.
  3. Selecciona la pestaña de “Compatibilidad
  4. Marca el checkbox de modo de compatibilidad y selecciona Windows Vista SP2.
  5. Marca el checkbox de ejecutar como administrador.

 

 

En PowerBuilder:

Simplemente instanciaremos en nuestro código fuente la DLL COM de la siguiente manera:

    iole = CREATE OLEObject
li_rc = iole.ConnectToNewObject(“Test.CTest“)
IF li_rc <> 0 THEN
DESTROY iole
END IF

Y… ¡listo! 🙂

 

Webs de referencia:

  1. http://anvil-of-time.com/wordpress/powerbuilder/powerbuilder-accessing-c-classes-via-com-to-capture-a-screenshot/
  2. http://stackoverflow.com/questions/3360160/how-do-i-create-an-activex-com-in-c
  3. http://www.guidgen.com/
  4. http://stackoverflow.com/questions/2334005/visual-studio-registry-capture-utility-has-stopped-working-error-compiling-c-sh

 

 

 

 

Hacer una pausa en un fichero por lotes batch (bat o cmd)

En consola de Windows (antiguamente Ms-Dos) desde siempre se ha podido hacer una pausa, esperando confirmación del usuario.

El comando en cuestión es:

pause

Si escribimos pause en nuestra consola veremos que la consola se queda pausada hasta que pulsamos una tecla. Esto es útil en ficheros batch (ya sean .bat o .cmd) para hacer pausas controladas entre distintos comandos, a la espera que el usuario pulse alguna tecla para continua.

Pero, ¿qué ocurre si queremos una pausa de cierto número de segundos y luego continúe el proceso automáticamente?

No hay ningún comando que lo haga, pero haciendo el siguiente “truco” (hace un ping a una URL especificando el número de segundos como timeout) lo podremos conseguir

ping -n 10 localhost > null

Simplemente cambiar el 10 por el número de segundos que queráis, y ya tendréis en consola (o msdos) una pausa de N segundos, y luego el proceso continuará automáticamente.