Categories
Google Web

¿Continuar con la venta de enlaces?

Se habló mucho sobre los últimos sucesos relacionados al PageRank e incluso Matt Cuts parece confirmar lo que todos venían comentando:

The partial update to visible PageRank that went out a few days ago was primarily regarding PageRank selling and the forward links of sites. So paid links that pass PageRank would affect our opinion of a site.

Going forward, I expect that Google will be looking at additional sites that appear to be buying or selling PageRank.

No tengo idea si el PageRank en realidad afecta al posicionamiento o sólo es un adorno, pero en el hipotético caso en que continúen las penalizaciones y el PageRank tenga importancia, supongo que sitios/blogs como éste se verían afectados debido a que algo más del 84% de las visitas proviene de Google:

Estadística de visitas
Detalle de la estadística de visitas

Actualmente, el ingreso mensual de la venta de dos enlaces es mayor a los ingresos que reporta este blog con AdSense (el cual, por suerte todavía cubre los gastos de hosting), pero como están las cosas, dejaré de vender enlaces a través de Text Link Ads, puesto que al fin y al cabo no seré millonario vendiendo enlaces.

Las pocas personas* que lean esta entrada y se encuentren en esta situación ¿continuarán con la venta de enlaces?

*: Viendo los gráficos, supongo que ahora me creerán cuando digo que éste sitio tiene pocos seguidores. 🙂

Categories
Mono Windows Forms

Relación entre las propiedades MinDate, MaxDate y Value del control DateTimePicker

Hoy mientras corregía detalles de una pequeña aplicación, me topé con un error que involucraba a las propiedades mencionadas en el título de la entrada. El código a grandes rasgos era el siguiente:

[csharp num=11 start=1]using System;
using System.Windows.Forms;

class App
{
public static void Main (string[] args)
{
DateTimePicker dtp = new DateTimePicker();

dtp.MinDate = new DateTime(2007, 10, 01);
dtp.MaxDate = DateTime.Now;

// Simular la acción del usuario
dtp.Value = DateTime.Now.AddSeconds(10);
}
}[/csharp]

Bien, las propiedades MinDate y MaxDate sirven para hacer que el valor de la propiedad Value esté en ese rango de fechas, lo interesante de ésto es visualmente también se aplica la restricción, es decir fechas fueras de ese rango están deshabilitdadas.

Retomando el punto, el problema en el código mostrado es que en la línea 11 se asigna la fecha y hora del momento en que se ejecuta esa línea, por lo que si un usuario intenta seleccionar la fecha actual segundos o minutos más tarde, se producirá una excepción del tipo ArgumentOutOfRangeException..

La solución para este problema es asignar un valor para MaxDate que esté lo más cercano posible al día siguiente:

csharp:

using System;
using System.Windows.Forms;

class App
{
        public static void Main (string[] args)
        {              
                DateTimePicker dtp = new DateTimePicker();
               
                dtp.MinDate = new DateTime(2007, 10, 01);
                dtp.MaxDate = DateTime.Today.AddDays(1).AddTicks(-1);

                // Simular la acción del usuario
                dtp.Value = DateTime.Now.AddSeconds(10);
        }
}

Como anécdota de esta entrada, mientras hacía pruebas con los ejemplos en Ubuntu*, extrañamente no pasaba lo mismo que con el .NET Framework de Microsoft. Luego de darle una mirada al código, me percaté que Mono no implementa correctamente esta parte, así que tuve que hacer el reporte correspondiente que pasado unas horas ya lo solucionaron. 😉

*: Mi disco duro pasó a mejor vida 🙁 e instalé ubuntu en otro disco que tenía por ahí, supongo que toda esta semana usaré Ubuntu al 100% -- hace tiempo que no usaba un entorno gráfico en Linux. 🙂

Categories
Varios

¿Buscas motivación?

Quick and Dirty: I Would Not Like It
Edsger Wybe Dijkstra

Programming: You’re Doing it Completely Wrong
John McCarthy

Fuente: A mostly Lisp weblog by John Wiseman

Categories
Artí­culos

TortoiseSVN: Reducir la actividad en el disco

TortoiseSVN es un cliente gráfico para Subversion que se integra con el shell de Windows, gracias a esta integración es posible que los cambios hechos sobre un proyecto se diferencien a través de los íconos que se asignan de acuerdo a diferentes estados que puede tener un archivo.

TortoiseSVN icon overlays

Pero como todo en la vida, nada viene gratis 🙂 , puesto que ésta característica puede funcionar de dos formas:

Por omisión

Se almacena el caché de estado en un proceso separado (TSVNCache.exe). Este proceso está al tanto de los cambios que se realizan en todas las particiones.

Shell

El cacheo se realiza directamente dentro de la dll de la extensión del shell, pero sólo para la carpeta actualmente visible. Cada vez que navega a otra carpeta, se obtiene de nuevo la información de estado.

TortoiseSVN Icon Overlays Settings

Retomando el punto, para reducir la actividad en disco que realiza el proceso TSVNCache.exe se tiene que hacer uso de las opciones Exclude/Include paths de modo que sólo se limite la verificación de cambios al directorio donde están ubicados nuestros proyectos. Un ejemplo para un disco con tres particiones podría ser:

code:

Exclude paths:
C:\*
D:\*
E:\*

Include paths:
D:\SVN\*

Con estos cambios seguramente reduciran muchos eventos que se realizan sobre archivos o carpetas, que dicho sea de paso, pueden verlo con FileMon.

Categories
Web WordPress

Beta1 de WordPress 2.3.1

Actualización: Ya está disponible la versión final de WordPress 2.3.1.

Acaban de anunciar la liberación de la primera versión menor de la rama WordPress 2.3, que entre otras cosas trae las siguientes mejoras y correcciones a fallas:

  • Soporte nativo para agregar tags desde Windows Live Writer.
  • Mejora de rendimiento para realizar las intersecciones de tags y categorías.
  • Corrección de un bug en la edición y creación de páginas (no se escapaba el HTML).
  • Corrección a la vulnerabilidad -- que algunos la consideran erróneamente "grave" -- que permite a usuarios registrados agregar enlaces al blogroll, para blogs donde el registro de usuarios no está habilitado este problema es inofensivo.

Pueden ver una lista más completa de problemas solucionados en la página de registro de bugs.

Descargas