viernes, 26 de julio de 2013

Como quitar la publicidad en uTorrent.

En esta entrada me salgo un poco de lo que es la programación pero me ha parecido un truco bastante interesante. Os voy a contar como quitar la publicidad de uTorrent, que considero que es mejor programa para bajar archivos torrent.

El truco lo he cogido de freeware genius.

La forma de proceder es la siguiente:
  1. Se abre si no esta ya ejecutandose el programa uTorrent.
  2. Se seleccionan las "preferencias" en el menú Opciones o se pulsa Crtl-P.
  3. Una vez en el cuadro de dialogo de Preferencias se ve lo siguiente:  Se pulsa en Avanzadas (nº1 de la imagen).
    En la casilla Filtrar (nº 2 de la imagen) ponemos off y filtrará las opciones avanzadas que nos interesan, y estas son las que vemos arriba.
    Tenemos que comprobar que los valores de la derecha estan a falso (nº 3 de la imagen).
    Para ponerlo a falso se selecciona una opcion avanzada y en la parte de abajo se hace click en falso (nº4 de la imagen).

  4. El ultimo ajuste para hacer es quitar la publicidad del recuadro inferior izquierda, que te dice que actualices a la versión plus. Para hacerlo se hay que poner el filtro: "upsell" y ponerlo a falso como vemos en la siguiente imagen: 

  5. Por ultimo hay que salir de uTorrent y volverlo a ejecutar para que los cambios surjan efecto, en la página de Preferencias hay un boton de Reiniciar, este botón cambia al valor predeterminado de la opción señalada, asi que no sirve para reiniciar. Para ello hay que cerrar el dialogo de Preferencias pulsando Ok. Y en el menú principal del programa hay que seleccionar Archivo -> Salir.
Una vez hechos estos pasos se vuelve a ejecutar el programa y ahora no tendrá publicidad.
Este truco funciona con la versión 3.3.1.

Espero que os sea util.

martes, 26 de febrero de 2013

Como usar log4net en nuestras aplicaciones

En esta entrada voy a explicar como usar log4net la librería de log para saber lo que está ocurriendo en la aplicación que estamos desarrollando.
La principal ventaja de usar log4net es que dicha librería es altamente configurable, puedes enviar las trazas a un fichero, a la consola, al visor de eventos o a una tabla de la base de datos, ademas se puede configurar el nivel de información que se va a sacar así como también se puede configurar el tamaño del fichero de log que vamos a usar para limitar su crecimiento(esto es útil para no colapsar el disco duro).
La mejor forma de empezar con log4net es utilizando NuGet, en la consola de NuGet ejecutamos el siguiente comando:
Install-Package log4net

Usando NuGet nos aseguramos de tener la última versión de log4net.
Una vez instalado el paquete habrá que hacer varias acciones para poderlo usar:
  1. Se tiene que añadir en el fichero AssemblyInfo.cs un atributo para que coja la configuración que le daremos en el siguiente paso; si no se pone la siguiente linea no cogerá la configuración del fichero de configuarción. El atributo que hay que poner:
      [assemblylog4net.Config.XmlConfigurator(Watch = true)]
    Se pone Watch=true para que cuando se cambia la configuración log4net esta se reconfigure en caliente, esto es útil en entornos de producción que se quiere saber con mas detalle que está pasando en la aplicación; por ejemplo la aplicación esta configurada para que saque los errores pero hay algo que no es un error pero no funciona como debería hacerlo de esta forma podemos cambiar la configuración para que la librería nos de un nivel de información mas detallado.
  2. Ahora toca poner la configuración de log4net para que saque el log, para ellos creamos un fichero app.config si no está creado o usamos el web.config en el caso de aplicaciones web.
  3. Dentro del fichero de configuracion hay que indicarle la nueva sección de configuración de log4net, se hace con el siguiente codigo:
    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
     
  4. Una vez definida la sección la creamos y ponemos la configuración que vamos a usar. En la configuración hay que definir los "appender" que básicamente indican dónde escribir los mensajes que va soltando el log. Y luego decir que vamos a mostrar y por donde. El código para hacer esto es:
        <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
          <mapping>
            <level value="INFO" />
            <foreColor value="White, HighIntensity" />
            <backColor value="Green" />
          </mapping>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] %message%newline" />
          </layout>
        </appender>
    Dentro del apender hemos configurado el "ColoredConsoleAppender" para que muestre los log en la consola con colores. En el mapping le indicamos el nivel y que colores vamos a usar, blanco intenso sobre fondo verde y el nivel, en este caso INFO. En la seccion de layout indicamos que es lo que vamos a mostrar, en este caso el nivel, el hilo de ejecución, el mensaje y cambio de linea.
  5. Lo que queda de la configuración es la sección de root que le indica que nivel y que appender vamos a utilizar; como ejemplo:
        <root>
          <level value="INFO" />
          <appender-ref ref="ColoredConsoleAppender" />
        </root>
  6. Una vez todo configurado ya podemos usar la librería en nuestro código  Para ello hacemos una referencia a su espacio de nombres con using: using log4net
  7. Creamos un miembro del tipo ILog para poder usar la librería  este miembro se inicializa con la clase "LogManager" y se usa el método "GetLogger" como ejemplo:
    private static readonly ILog Log = LogManager.GetLogger(typeof (Program)); 
     
    Esta miembro lo creamos como estático para que sea accesible a todas las funciones y también se crea como readonly ya que se crea y no se modifica, a la función se le pasa el tipo de la clase para que lo lea del archivo de configuración.
  8. Ya podemos usar los metodos de ILog para escribir los mensajes en cada función, se puede usar Info, Debug, Error, Warm, etc... que definen el nivel de log, y como parámetro se le pasa una cadena.
De esta forma ya podemos ver que es lo que está pasando en nuestra aplicación sin tener que depurar.

jueves, 15 de noviembre de 2012

Juntar varios ficheros PDF en .Net

Normalmente una aplicación puede generar varios PDF que mostrar al usuario y en vez de enviarle n documentos la mejor solución es juntarlos en un solo archivo.
Para realizar esta tarea vamos a utilizar la biblioteca iTextSharp, la licencia que tiene es gratuita y se puede utilizar para cualquier proyecto.
Hay varias formas de obtener la misma pero sin duda la mejor forma de obtener esta biblioteca es bajarla a través de NuGet.Si no lo tenemos instalado NuGet desde este enlace se puede instalar: NuGet.
Desde la ventana de NuGet buscamos iTextSharp y nos bajamos la biblioteca y que la añada a la aplicación que estamos desarrollando.
También lo podemos hacer desde la consola de NuGet, para ello accedemos a la consola de NuGet y ejecutamos el siguiente comando:
Install-Package itextsharp
Con el comando anterior se descarga de la web la última versión de la libreria y le añade la referencia a nuestro proyecto, con lo cual ya se puede usar sin problemas.
El codigo para juntar los archivos es bastante sencillo:

var document = new Document(); 
var ms = new MemoryStream();

string[] Lista = { "doc1.pdf""doc2.pdf" };
 
var pdfCopy = new PdfCopy(document, ms);

document.Open();

foreach (var item in Lista)
{
  var pdfReader = new PdfReader(item);
  var n = pdfReader.NumberOfPages;
  for (var page = 0; page < n; )
  {
    pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, ++page));
  }
  pdfCopy.FreeReader(pdfReader);
}
pdfCopy.Flush();
 
document.Close();
ms.WriteTo(new FileStream("documentoJutar.pdf"FileMode.OpenOrCreate));

Lo que se hace en el codigo anterior es crear un Docuemnt con la librería de iTextSharp, y un Memory Stream para ir escribiendo en memoria los documentos que vamos a juntar.
Ponemos la lista de documentos e inicializamos el objeto PdfCopy que es el que hara el trabajo.
Con un for se recorren los archivos y se van copiando página a página.
Una vez acabado se cierra el documento y se escribe en disco lo que hemos hecho en memoria.

Así de simple y sencillo es juntar ficheros PDF con C#. Espero sea util.

jueves, 1 de marzo de 2012

Publicación desde el móvil

Reanudo esta bitácora ahora usando el móvil, espero ser más productivo.

domingo, 3 de octubre de 2010

Nuevo Blog

Hoy he visto un nuevo blog de lo mas interesante es:
Tocados por Eugenia
En este blog se pueden ver los tocados mas exclusivos del momento.

Espero que os guste

lunes, 30 de marzo de 2009

WCF en C++ (2 de 3)

En este artículo vamos a crear una aplicación de consola que hace de servidor e implementa la interfaz que definimos en el artículo anterior. A esta aplicación de consola, se conectará el cliente que crearemos en el siguiente artículo para obtener los datos.

Creación del servidor

Para implementar el servidor, añadimos una aplicación de consola del CLR a la solución actual. Y a continuación le agregamos las siguientes referencias:
  1. Una referencia al proyecto que hemos creado en el artículo anterior, que contiene la interfaz de la hipoteca
  2. Una referencia a System::ServiceModel (para evitar “error de la compilación” que aparece si no la hacemos)
Una vez añadidas estas referencias, procedemos a codificar la clase que implementa la interfaz IHipoteca, así que definimos una clase que deriva de IHipoteca y escribimos el código para el método CuotaMensual:
ref class CHipoteca : IHipoteca
{
public:
double virtual CuotaMensual(double capital, double interes, int meses)
{
double interes2 = interes / 100.0;
double div = 1 + interes2;
div = Math::Pow(div, -meses);
double resultado = capital * interes2 / (1 - div);
Console::WriteLine("Capital: {0}, interes: {1}, meses: {2}, resultado: {3}", capital, interes, meses, resultado);
return resultado;
}
};
En esta implementación del método se incluye el capital, la tasa de interés sin dividir por cien y el número de meses de la operación.
Una vez definido el objeto que va a dar servicio, vamos a crear el servidor. Para ello, usamos la aplicación de consola y ponemos el código necesario según WCF en el método main:
Uri^ direccionBase = gcnew Uri("net.tcp://localhost:888/Hipoteca");
ServiceHost^ servicio = gcnew ServiceHost(CHipoteca::typeid, direccionBase);
servicio->AddServiceEndpoint(IHipoteca::typeid, gcnew NetTcpBinding(), direccionBase);
servicio->Open();
Console::WriteLine("Servicio funcionando ...");
Console::WriteLine("Pulse una tecla para acabar");
Console::ReadKey();
return 0;
Ésta se trata de la parte más interesante ya que incluye el ABC de WCF:
  • A de “address”, se encuentra en la primera línea del código de arriba, en el objeto direccionBase;
  • B de “binding”, aparece en la tercera línea, cuando se hace gcnew NetTcpBinding();
  • C de “contract”, está en la tercera línea donde se hace IHipoteca::typeid.
En el siguiente artículo, veremos cómo crear un cliente que consume este servicio.
Hasta pronto.

viernes, 20 de febrero de 2009

WCF en C++ (1 de 3)

Introducción

Windows Communication Foundation (WCF) está diseñado para ofrecer un enfoque manejable a la informática distribuida, interoperabilidad ancha y asistencia directa para la orientación sobre el servicio. Como reza en la página Web de Microsoft de la Msdn En definitiva es una ayuda que nos hace transparente el medio de transporte y en principio nos tenemos que centrar en el contrato. En este ejemplo voy a crear un servidor en C++/CLI que use WCF y en el ultimo artículo desarrollaré un cliente también en C++/CLI que consuma este servicio.

Contrato

En primer lugar crearé una biblioteca de clases en la cual crearé un interfaz que expondrá el contrato, en este caso haré el calculo de la cuota mensual de un préstamo o hipoteca.

Antes de codificar hay que  añadir la referencia a System::ServiceModel y hacer  un using del namesapce.

El código de la interfaz es el siguiente:

namespace Hipoteca {

  [ServiceContract]

    public interface class IHipoteca
    {

        [OperationContract]
        double CuotaMensual(double capital, double interes, int meses);
    }
}

Con esto ya tenemos nuestra biblioteca de clases, la compilamos y es la que usaremos tanto en el servicio como en el cliente. En esta declaración no hay código, ya que la implementación de esta interfaz se hará en el servidor. Esto es todo por hoy en el próximo artículo crearé el servidor en C++ y en el siguiente haré el cliente que utiliza el servicio.

viernes, 25 de julio de 2008

Nuevo IDE para Delphi llamado Tiburon


Veo en el blog de Nick Hodges que ya tienen pantallas de proximo entorno de programación para Delphi y C++ Builder que tiene el sugerente nombre de Tiburon.
La imagen es bastante impresioniante ya que se ve el desarrollo de una aplicación que usa el novedoso interfaz de la cinta o como se dice en inglés Ribbon.

En los blogs de CodeGear se está dando información sobre Tiburon en el que cabe destacar que tiene completo soporte a Unicode, esto también se ve en la imagen.

Estoy ansioso por ver que nos puede ofrecer este entorno de desarrollo.

jueves, 17 de abril de 2008

Post creado desde Facebook

Una simple entrada para probar como meter un post desde Facebook

Parece bastante sencillo

Veremos que tal queda el resultado. ;)

lunes, 25 de febrero de 2008

Truco para Visual Studio

Hoy os propongo un truco que he visto en The .Net Tip of Day.org que consiste en pulsar la tecla Control cuando ha salido el menú contextual de IntelliSense, con esto se consigue que este menú se vuelva transparente y ver el código que hay debajo.

Powered by ScribeFire.

jueves, 21 de febrero de 2008

Las leyes

Voy a introducir un apartado dedicado a citas y empiezo por una de G. K. Chesterton.

"Cuando vulneras las grandes leyes no consigues la libertad, ni siquiera consigues la anarquía. Lo que consigues son pequeñas leyes."

G. K. Chesterton.


Powered by ScribeFire.

miércoles, 20 de febrero de 2008

Curiosidades de C++

Una curiosidad de C++ es el que cuando se accede a un elemento de un array se pueden intercambiar el índice del array con el array, veamos un ejemplo:

int array[20];
...
array[0] = 1;
1[array] = 2;

En el primer caso se accede al primer elemento y en el segundo también, esto compila (que ya es mucho decir) y funciona (que ya es la repera) en cualquier compilador.

La explicación es bastante sencilla ya que en el fondo un array es un puntero constante, no se puede cambiar el valor del puntero si de lo que apunta, y por lo tanto entra en la aritmetica de punteros y la suma es conmutativa y el orden de los sumandos no altera el resultado.

jueves, 7 de febrero de 2008

Aun sigo vivo

Después de mucho tiempo sin actualizar el blog ya he vuelto espero tener mas tiempo y poder escribir mas.

De momento tengo pendiente el tema de Windows Comuniction Foundation, ya estoy preparando la 2ª parte que tendré en unos días.

Para acabar solo comentare el siguiente artículo How to recognise a good programmer visto a través de menéame. En este articulo se comenta las características de un buen programador en las que estoy totalmente de acuerdo.

En el artículo propone 6 puntos en los cuales destaca la habilidades y al final señala cuales son los indicadores positivos y cuales los negativos.

En mi experiencia he podido comprobar que la mayoría de los indicadores tanto positivos para reconocer un buen programador como los negativos para ver un mal programador son ciertos y se cumplen.

jueves, 4 de octubre de 2007

Codigo fuente de .Net

Leo en el blog de Scott Guthrie que se va a distribuir el código fuente del .Net Framework.
Se va a distribuir con una licencia en la cual vas a poder ver que es lo que se hace pero no se puede modificar.
Esto es una buena noticia, ya que vas a saber en todo momento que es lo que se está haciendo por debajo, y si algo falla vas a saber por qué.
También es una oportunidad para aprender a programar.

lunes, 1 de octubre de 2007

Accesos directos para Outlook

Veo Lifehacker un truco muy interesante para Outlook 2003. Se crea un acceso directo con la siguiente ruta:

"%programfiles%\Microsoft Office\Office11\outlook.exe" /c ipm.note /m dir.at.correo.es

Al hacer doble clic sobre el acceso directo te aparece la ventana para mandar un correo a la dirección señalada despues del parámetro /m.

En esta página encontrarás la información completa sobre todos los parámetros con los que se puede llamar; en el se puede ver como crear tareas nuevas, contactos, etcétera.

Un truco bastante bueno para aumentar la productividad.