Entradas

Mostrando entradas de enero, 2011

Google AdSense, sitio inhabilitado

Imagen
Después de la advertencia siempre vienen las medidas y si no actúas en consecuencia y eliminas todas las violaciones a las políticas de Google AdSense pues la primera medida es inhabilitar los anuncios de AdSense en el dominio que infringe las políticas del programas. Todo ello acompañado de este email:La publicación de anuncios de Google AdSense se ha inhabilitado en ‘dominio’Este mensaje se ha enviado desde una dirección de correo electrónico exclusivamente de notificación que no admite respuestas. No responda a este mensaje.
------------------------------------------------------------------------------------------------------------------------------- Estimado editor: Al revisar su cuenta, hemos detectado que publica anuncios Google de una manera que infringe nuestras políticas. Por ejemplo, detectamos infracciones de las políticas de AdSense en páginas como ‘pagina’. Los editores no pueden incitar a que los usuarios de su propio sitio hagan clic en los anuncios Google. Esto incl…

Google AdSense, advertencia sobre violación

Imagen
Os habéis preguntado ¿que ocurre cuando se violan las políticas de publicación en Google AdSense?, pues sencillo, lo primero que recibes es esta carta:Google AdSense: tiene tres días laborales para realizar cambios en ‘dominio’Este mensaje se ha enviado desde una dirección de correo electrónico exclusivamente de notificación que no admite respuestas. No responda a este mensaje.
------------------------------------------------------------------------------------------------------------------------------- Estimado editor: Al revisar su cuenta, hemos detectado que publica anuncios Google de una manera que infringe nuestras políticas. Por ejemplo, detectamos infracciones de las políticas de AdSense en páginas como ‘página’. Según se estipula en las políticas del programa, los editores no pueden alterar en modo alguno el funcionamiento de los anuncios Google, por ejemplo, no está permitido colocar los anuncios de tal modo que cubran parte del contenido del sitio o partes de una página w…

SQL Server cannot truncate table

Imagen
SQL Server no deja de sorprenderme, ahora me doy cuenta que no puedes truncar una tabla que tenga claves externas a otras tablas.El error es el siguiente: Cannot truncate table ‘tablename' because it is being referenced by a FOREIGN KEY constraint.¡Asombroso! y lo peor aún son las soluciones alternativas que se dan en algunos foros como por ejemplo:eliminar todas las claves externas truncar la tabla volver a crear todas las claves externa Eso a mi entender es trabajo de chinos (sin ofender), vale para una tabla con una clave externa, pero eso para tablas con unas cuantas claves realmente no es una solución.La solución más atractiva que he encontrado es la siguiente:borrar todos los registros de la tabla con delete * reiniciar el índice ¿Cómo reiniciar el índice o clave principal de una tabla en SQL server?Utilizaremos para ello la siguiente sintaxis DBCC CHECKIDENT (tabla, RESEED, 0)Hay que tener en cuenta que el siguiente valor del índice será el valor puesto en la sintaxis + 1, por …

PHP 5.3 default function is deprecated

Imagen
Una de las novedades de PHP 5.3 es la reestructuración y el deprecado de antiguas funciones pero que alguna de ellas aún utilizamos, si bien es sencillo actualizar de funciones deprecadas a funciones optimizadas en PHP 5.3 aquí os dejo algunas que me han dado problemas.DEFAULT Function split() is deprecatedLa función split divide una cadena en una matriz mediante una expresión regular y la podemos sustituir en PHP 5.3 por preg_split si necesitamos trabajar con expresiones regulares y si no por la función explode.Por ejemplo para sacar cada elemento de una fecha SQL utilizando split haríamos lo siguiente:list($anno, $mes, $dia, $hora, $minuto) = split('[- :]', $fecha);Para hacerlo con preg_split deberíamos hacer lo siguiente:list($anno, $mes, $dia, $hora, $minuto) = preg_split('/[- :]/', $fecha);DEFAULT Function ereg_replace() is deprecatedLa función ereg_replace sustituye una expresión regular por una cadena dada en una cadena. En PHP 5.3 podemos utilizar preg_replace…

Navegadores actuales: cuotas de mercado

Imagen
Para darle un poco de dramatismo al post podría decir que la lucha por ser el navegador favorito de los internautas es encarnizada cuando menos, Apple, Microsoft, Mozilla, Google y Opera luchan cada vez más por no perder al menos su cuota de mercado en este mundo de los navegadores web.Cada vez vemos cómo la frecuencia de actualización de estos es mayor y se busca fundamentalmente mayor velocidad de carga, mayor compatibilidad con los estándares y una rapidez mayor procesando los archivos javascript, todo esto sin descuidar una interfaz cada vez más minimalista.Esto de las estadísticas nunca es absoluto y generalmente cada uno barre para su propio patio, por eso, para elaborar la siguiente gráfica he optado por hacer una media aritmética entre 2 sitios de estadísticas y cerca de un millón de visitas de mi propia web de cine. Las estadísticas consultadas corresponden al w3schools y a statcounter.Veamos el gráfico de arriba hacia abajo.Lo más claro es el fracaso de Microsoft con Interne…

Bug en jquery 1.4.4 con la función each

Imagen
El motivo por el que muchos utilizamos jquery es por la comodidad que nos brinda al trabajar con varios navegadores y un mismo código, además de eliminar prácticamente toda las validaciones de errores que pueden detener la ejecución de una página web.Dicho esto en la versión 1.4.4 hay un error muy curioso en la tan útil función each, imaginemos el siguiente código:$.each(datos, function(clave, valor) {});En él la variable datos (en mi caso) es un objeto json, el problema viene dado cuando esta variable está vacía.En Google Chrome 10 el error reportado en el archivo jquery es que la función length no puede ser aplicada a un objeto nulo, mientras que Mozilla Firefox 3.6.13 se queda más corto y solo nos dice que object es nulo (en la versión normal de jquery) ó que j es nulo (en la versión minimizada).Para reportar un bug en jquery podemos hacerlo desde el enlace anterior.Este bug en concreto tiene el número 8008.Otros bugs que he reportado recientemente para Chrome y firefoxEl error que…

Error con el border color en Google Chrome 10

Imagen
Hoy he estado probando algunas propiedades CSS en las tablas y me ha pasado una cosa muy curiosa en Google Chrome 10.El error se aplica a las propiedades de los bordes como el color y el ancho y ocurre cuando tenemos 2 celdas adyacentes en las cuales ambas tienen un colspan no coincidente.Os dejo la imagen para que se entienda mejor, aparece en la parte superior el error en Google Chrome con el border-color y debajo cómo debería aparecer, en este caso en Firefox que sí está correcta la interpretación de esta propiedad border-color para celdas con colspan adyacentes.Espero que lo corrijan pronto.

Diferencias entre los tipos de índices en SQL Server

Imagen
SQL Server (por lo menos la versión 2008) tiene 3 tipos de índices (me refiero a los índices solamente no a las claves). Índices del tipo clúster, no clúster y XML Principal.Índices Cluster y NON-ClusterEmpezaré con las diferencias entre los tipos de índice cluster y nou cluster en SQL Server 2008 y supongo que previos y posteriores.Un índice agrupado (clustered index) es un tipo especial de índice que reordena la forma en que los registros de la tabla se almacenan físicamente. Por lo tanto la tabla sólo puede tener un índice agrupado. Los nodos externos (leaf node) de un índice agrupado contienen las páginas de datos.Haciendo una traducción un poco literal de la definición de leaf node en la wikipedia tenemos que un nodo externo es un nodo de una estructura de árbol de datos que tiene cero nodos secundarios. A menudo, los nodos de la hoja son los nodos más alejado del nodo raíz. En el árbol de la teoría de grafos, un nodo hoja (cómo también son llamados los nodos externos) es un vért…

Campos con valor único en SQL Server

Imagen
Supongamos que necesitamos que un campo de una tabla en SQL server tenga un valor único ¿que hacemos? Hay dos opciones para esto, declararlo clave principal o declararlo como índice único, según sea el caso y según lo que queramos se puede aplicar una u otra definición.Compliquémoslo un poco más, supón que el campo admite valores nulos con lo que las definiciones anteriores de índice primario o índice único no se pueden aplicar, aún así quieres que si el valor no sea nulo sea único.Pongamos un ejemplo en concreto, tenemos 3 tablas relacionadas, localizaciones que tiene entre sus campos el código del país, y países que tiene una referencia al continente al que pertenece.El problema por ejemplo es que queremos que el código postal en las localizaciones sea único (luego lo complicaremos más) pero no disponemos de todos los códigos postales por tanto puede tener valor nulo este campo.Existe dos opciones para solucionar esto, iremos de la más difícil e ineficiente a la más sencilla y rápid…