Categorías
Programación

¿Que es el archivo crossdomain.xml?

Flash Player entre sus políticas de seguridad no permite acceder a datos de cualquier dominio que no sea en donde esta alojado el archivo flash.

Es decir si tengo mi archivo flash en el dominio dominio1.com y esta tratando de cargar un archivo del dominio2.com, Flash player no permitirá cargar este archivo a no ser que se tenga permisos sobre este archivo.

crossdomain.xml permite definir que dominios o IPs pueden acceder al contenido que tenemos alojados. Cuando Flash player va a cargar un archivo que pertenece a otro dominio lo primero que hace es intentar cargar crossdomain.xml para verificar si se tiene permiso para acceder a esta información.

Este archivo XML contiene una o varias etiqueta en la cual podemos definir que dominios os IPs pueden acceder a nuestro contenido.

En el siguiente ejemplo permitimos que cualquier elemento del dominio2.com pueda acceder a nuestra información.

<? xml version="1.0">
<cross-domain-policy>
<allow-access-from domain="www.dominio2.com" /></allow>
</cross>

El archivo crossdomain tiene un carácter * que permite denotar cualquiera, es decir si deseamos permitir que cualquier dominio tenga permisos, utilizaremos.

<? xml version="1.0">
<cross-domain-policy>
<allow-access-from domain="*" /></allow>
</cross>

Si deseamos que cualquier subdominio de dominio2.com tenga acceso escribiremos:

<? xml version="1.0">
<cross-domain-policy>
<allow-access-from domain="*.dominio2.com" /></allow>
</cross>

Finalmente podemos dar permiso a varios dominios IPs.

<? xml version="1.0">
<cross-domain-policy>
<allow-access-from domain="www.dominio2.com" /></allow>
<allow-access-from domain="www.dominio3.com" /></allow>
<allow-access-from domain="200.89.5.201" /></allow>
<allow-access-from domain="*.dominio3.com" /></allow>
</cross>

Especificaciones de Cross-Domain

Link Adobe: Cross-domain policy file specification V2
Link Alternativo:Cross-domain policy file specification V2

Categorías
HTML5

¿Que es apple-touch-icon.png?

Requisitos que tiene que cumplir apple-touch-icon.png

  • El formato en png
  • El ancho y alto del fichero es fijo, los tamaños ha ido aumentado conforme las pantallas han crecido.
  • El nombre del fichero debe llamarse apple-touch-icon.png el propio iphone redondeara las esquinas y le dará el efecto típico de los botones del iPhone, si no deseas que el icono se le apliquen los efectos el iPhone deberás guardarlo con el nombre apple-touch-icon-precomposed.png el teléfono al encontrar este fichero dejara el icono tal cual este.
    NOTA: Aunque esto no es del todo cierto, si no existe la meta el navegador buscara directamente en la raiz del website.

Una vez creado el fichero y subido a nuestra web deberemos añadir el siguiente meta en el header

<link rel="apple-touch-icon" href="https://tudominio.com/apple-touch-icon.png">

El nombre del archivo puede ser distinto y la ubicación en la web también, si lo especificamos en la ruta de la meta.

Metas apple-touch-icon con tamaños en html

<link rel="apple-touch-icon" href="[rutaarchivo]">
<link rel="apple-touch-icon-precomposed" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="57x57" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="60x60" href="[rutaarchivo]"> 
<link rel="apple-touch-icon" sizes="72x72" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="76x76" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="114x114" href="[rutaarchivo]"> 
<link rel="apple-touch-icon" sizes="120x120" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="128x128" href="[rutaarchivo]"> 
<link rel="apple-touch-icon" sizes="144x144" href="[rutaarchivo]"> 
<link rel="apple-touch-icon" sizes="152x152" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="167x167" href="[rutaarchivo]">
<link rel="apple-touch-icon" sizes="180x180" href="[rutaarchivo]">

Ejemplo de apple-touch-icon utilizado en megazona

Generadores de apple-touch-icon online

Categorías
CSS

Convertir una imagen a escala de grises mediante css

Copiar y pegar el siguiente código ccs, la clase a utilizar es escaladegrises.

.escaladegrises {filter:url('#grayscale');-webkit-filter:grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter:grayscale(100%);filter: grayscale(100%);filter:Gray()}
.escaladegrises:hover {-webkit-filter: grayscale(0%);-moz-filter:grayscale(0%);-ms-filter:grayscale(0%);-o-filter: grayscale(0%);filter:none}
Categorías
Base de datos

Como resetear a 1 un campo incremental

Los campos incrementales lo que hacen es asignar un entero diferente a cada nuevo registro, añadiendo 1 al anterior valor asignado, empezando por el 1.

Por lo tanto, si borramos toda la información de la tabla y generamos un nuevo registro podremos comprobar como no obtiene un 1 sino el valor que hubiera correspondido antes de borrar los registros.

Si necesitamos borrar la tabla y resetear este número para reiniciar la numeración en 1 la opción más sencilla es ejecutar la siguiente sentencia SQL.

TRUNCATE nombre_tabla;

Esta instrucción vacía la tabla y resetea el autoincremental a su valor inicial.

Si lo que queremos es hacer que el valor autoincremental tome un valor determinado es posible utilizar la siguiente sentencia, que modifica la tabla cambiando el valor de autoincremento a 1000 o cualquier valor. NOTA: Hay que tener en cuenta que este número debe ser mayor que cualquier id de la tabla.

ALTER TABLE nombre_tabla AUTO_INCREMENT=1000

Categorías
Base de datos

Reemplazar un texto en MySQL

Por ejemplo si necesitas cambiar los enlaces que apunten a una web por url distinta.

Para hacer este cambio lo más sencillo es realizar una consulta SQL que sustituirla la cadena dominioviejo.com por dominionuevo.com en todos los contenidos.

Esto es tan sencillo como realizar la siguiente query:

UPDATE base de datos SET post_content = REPLACE (post_content,'http://dominioviejo.com','http://dominionuevo.com')

Cómo reemplazar una url por otra en wordpress directamente en la base de datos

La siguiente query la utilizaremos, para migrar de http a https una web, incluido la url de la web, con todos los enlaces de las imágenes y adjuntos.

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl.com', 'https://www.newurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl.com','https://www.newurl.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl.com', 'https://www.newurl.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.oldurl.com','https://www.newurl.com')
Categorías
Base de datos

Cómo insertar automáticamente la fecha y hora en mysql

Para insertar automáticamente la fecha y la hora, es decir, el timestamp, en un campo de tipo TIMESTAMP en una tabla en MySQL podemos utilizar CURRENT_TIMESTAMP, siempre que estemos utilizando una versión de servidor Mysql superior a la 4.1.

Si se utiliza el timestamp automático en las inserciones, cuando se omita el campo en una inserción, éste tomara el valor de fecha y hora que tenga el servidor en ese momento.

Para esto se debe usar la propiedad DEFAULT CURRENT_TIMESTAMP en la creación del campo. Si se utiliza en las actualizaciones, cuando se produzca una sentencia UPDATE que omita el campo que tiene la propiedad en el timestamp, el campo tomará el valor actual de fecha y hora del servidor.

Para esto se debe usar la propiedad ON UPDATE CURRENT_TIMESTAMP en la creación del campo. Se pueden usar por separado, o combinadas:

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones como actualizaciones

mysql> CREATE TABLE tabla_ejemplo1 (fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones pero NO en actualizaciones

mysql> CREATE TABLE tabla_ejemplo2 (fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automático en actualizaciones pero NO en inserciones

mysql> CREATE TABLE tabla_ejemplo3 (fecha TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Categorías
Base de datos

Vaciar todos los registros de una tabla en mysql

Si queremos eliminar todos los registros de una tabla en MySql tenemos dos opciones, la primera es tan solo utilizar nuestra sentencia “DELETE” de siempre solo que sin ningún “WHERE”, haciendo que se borren todos los datos de la tabla:

DELETE FROM tabla

Pero también podemos optar por la alternativa que es mediante la declaración “TRUNCATE TABLE” de la siguiente forma

TRUNCATE TABLE tabla

Para empezar la opción con DELETE devuelve el número de registros que fueron borrados, mientras que TRUNCATE TABLE no devuelve nada.

Por otro lado TRUNCATE lo que hace en realidad es destruir la tabla y volverla a crear y no eliminar cada uno de los registros y puesto que eliminar y crear la tabla es mucho más rápido que eliminar todos los registros.

Otra diferencia importante tiene que ver con la misma característica de TRUNCATE TABLE de destruir y volver a crear la tabla, y es que reinicia todos los valores AUTO_INCREMENT de la tabla, es decir que si vamos en el registro 1340, y usamos TRUNCATE TABLE al insertar un nuevo registro este volvería a ser el 1, mientras que en caso de usar DELETE FROM el AUTO_INCREMENT se conservaría intacto por lo que nuestro nuevo registro sería el número 1341 a pesar de ser el primero.

Categorías
Base de datos

Reparar tablas InnoDB o MyISAM

Para reparar tables InnoDB en mysql necesitaremos ejecutar en nuestro cliente de MySQL las siguientes sentencias para repararlas:
CHECK TABLE nombre_tabla EXTENDED
Distintas opciones que podemos aplicar a CHECK TABLE:

  • QUICK
    No escanea los registros para chequear enlaces incorrectos.
  • FAST
    Sólo chequea tablas que no se han cerrado correctamente.
  • CHANGED
    Sólo las tablas chequeadas que se han cambiado desde el úlitmo chequeo o no se han cerrado correctamente.
  • MEDIUM
    Escanea registros para verificar que los enlaces borrados están bien. También calcula el checksum de la clave para los registros y lo verifica con el checksum calculado para las claves.
  • EXTENDED
    Realiza una búsqueda completa para todas las claves para cada registro. Se asegura que la tabla es consistente 100%, pero tarda mucho tiempo!

La cual nos devolvera el status actual de nuestra tabla.

Si nos da Error ejecutaremos:
REPAIR TABLE nombre_tabla