martes, 17 de diciembre de 2013

Errores al mezclar elementos seguros e inseguros (http y https)

Me ha sucedido en más de una ocasión que tenemos sitios web que pueden ser consultados usando http y https. Hasta ahí no hay problema, sin embargo la cosa puede cambiar un poco cuando, por ejemplo, se incluyen scripts de otros dominios.

Bueno, pues recién me sucedió eso con un sitio que utiliza JQuery y, para no hacer mas larga la historia, lo solucionamos cambiando la línea en la que se hace la referencia al script esto:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

A esto otro:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

Como pueden ver, basta remover el http antes del URL y dejar indicado solo las dos diagonales (//) para que se haga la solicitud del recurso ya sea usando http o https según sea el caso.

miércoles, 6 de noviembre de 2013

¿Por qué el Except (o Intersect) de LINQ no funciona en una clase?

Recién estuve trabajando con colecciones de clases personalizadas, apoyándome de LINQ. Todo iba estupendamente hasta que me percate que algunos casos donde utilizaba Except o Intersect no arrojaba los resultados esperados. 

Un poco de la ayuda de Google y otros sitios no menos útiles y encontré que esto se debía a que mi clase no implementaba la interfaz IEquatable. Implementé el método Equals de la interfaz, así como cambien sobreescribí el método GetHashCode, y todo comenzó a funcionar perfecto (desconozco si el método GetHashCode no será requerido en todos los casos, pero yo tuve que agregarlo). 

Me apoye de la siguiente pagina, por si buscan la fuente original. También dejo aquí el código de ejemplo. 

public class Promo : IEquatable<Promo>
{
   // Resto del código aquí

  public bool Equals(Promo other) 
  { 
     if (other == null) return false; 
     return other.promo_code.Equals(this._promo_code); 
  } 

  public override int GetHashCode()
  { 
     int hashTextual = this._promo_code == null ? 0 : this._promo_code.GetHashCode(); 
     return hashTextual; 
  } 
}

viernes, 11 de octubre de 2013

Contando registros por Día y Hora

Recién tuve la necesidad de presentar algunas estadísticas agrupadas, por día y hora, de algunas tablas en cierta Base de Datos. Aunque el resultado es bastante obvio y no presenta ningún descubrimiento ni nada, puesto a que un par de búsquedas en Internet y seguro encuentran dos que tres ejemplos, decidí dejarlo aquí documentado para la próxima vez que lo necesite, encontrarlo rápidamente.

SELECT DAY(CREATED_DATE) CreationDate, 
       DATEPART(HOUR,CREATED_DATE) CreationHour, 
       COUNT(*) 'Total' 
  FROM dbo.MyDate WITH (NOLOCK)
 WHERE AND CREATED_DATE BETWEEN @FromDate AND @ToDate 
 GROUP BY DAY(CREATED_DATE), DATEPART(HOUR,CREATED_DATE) 
 ORDER BY CreationeDate, CreationHour 

Pueden encontrar mas detalles aquí