SEO, schema.org y experimentos

A estas alturas del partido, ya no es novedad lo muy importante que es tener un muy buen SEO. Lo que si aún andaba un poco debajo de mi radar era el schema.org, en especial porque no le había dedicado tiempo suficiente.

Claro, una cosa es el SEO y otra el sistema schema.org. En el caso del primero, se rige básicamente bajo un principio: El contenido es rey.

El otro, nos permite definir aspectos adicionales al contenido. En otras palabras, le agrega un valor semántico que le da a los datos una razón de ser. Los vuelve humanos. Eso ayuda mucho a que los usuarios encuentren lo que están buscando.

Pero como para desgracia, a veces algunas características son un tanto oscuras.

Relación SEO y schema.org

Ambos aspectos se relacionan debido a que uno le dice a los buscadores que contenido tenemos y que tan importante es. El otro, permite realizar una catalogación correcta de dichos valores. Eso es al menos lo que mis horas de lecturas han dicho.

En lo personal, ya había escuchado y visto de schema.org antes. Pero hasta ahí, ya que no había tenido tiempo de realmente moverle al aspecto.

Sin embargo, algunos sitios web indican que el uso de dicha característica puede ser bastante benefica. No tengo duda de ello, pero parece ser bastante omitido.

Implementándolo

En el caso de WordPress, implementarlo es sencillo. Si no le tienes miedo a mover el código de tu tema. Igualmente, existen multitudes de plugins que ayudan en el proceso de implementar dichas soluciones de forma gratuita.

Incluso, esta opción ya viene incluida en el popular Yoast SEO, aunque no es tan evidente. Se podría decir que si llenamos todos los campos, nosotros le estaremos aportando mejor información a los buscadores. Eso siempre será bueno.

Pero una cosa es hacer ello y otra es saber que es lo que los sistemas están realmente viendo. Es ahí en donde esta herramienta entra en juego.

En mi caso, me ha permitido ver errores que pase por alto. Datos que no deberían de estar ahí desde hace tiempo.

Solo queda probar

Con lo que he visto y leido, tengo mucho material para mantenerme un rato entretenido. Los esquemas que se encuentran disponibles son muchos. Por desgracia no todos están disponibles de forma “fácil”.

Por supuesto, siempre hay entradas que te pueden ayudar mucho a saber hacia donde puedes ir para sacar el mejor provecho de una nueva herramienta descubierta.

Aunque parezca un poco intimidante y confuso para algunos, al principio. Pero uno nunca debe dejar de aprender.

Código PHP: imagecreatefrombmp

Escribir código siempre tiene sus pros y contras. Entre las cosas que se aprenden es a mirar a otros lados a ver si ya existe alguien que haya solucionado un problema similar al que tengas.

Revisando código “viejo”, es que me encontré con una pequeña función que ciertamente me ayudó a sacarme de apuros en algún momento. La imagecreatefrombmp.

Para quienes hayan manejado imágenes en PHP 5, ya sabrán lo horrible que es lidiar con archivos BMP.

La necesidad de usarla nace debido a los propios usuarios del sistema. No les interesaba guardar las imágenes en un formato diferente al BMP o simplemente no sabían como hacerlo.

¿Qué es más fácil entonces? ¿Amansar al burro o adaptarte al burro?

El código y la solución

Ciertamente tome el camino de adaptarme, probé muchas cosas hasta que encontré esta solución bastante creativa:


function ImageCreateFromBMP($filename) {
    if (! $f1 = fopen($filename,"rb")) return FALSE;

    $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1,14));
    if ($FILE['file_type'] != 19778) return FALSE;

    $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
        '/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
        '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1,40));
    $BMP['colors'] = pow(2,$BMP['bits_per_pixel']);

    if ($BMP['size_bitmap'] == 0) $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
    $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8;
    $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
    $BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4);
    $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4);
    $BMP['decal'] = 4-(4*$BMP['decal']);
    if ($BMP['decal'] == 4) $BMP['decal'] = 0;

    $PALETTE = array();
    if ($BMP['colors'] < 16777216 && $BMP['colors'] != 65536) {
        $PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4));
    }

    $IMG = fread($f1,$BMP['size_bitmap']);
    $VIDE = chr(0);

    $res = imagecreatetruecolor($BMP['width'],$BMP['height']);
    $P = 0;
    $Y = $BMP['height']-1;
    while ($Y >= 0) {
        $X=0;
        while ($X < $BMP['width']) {
            if ($BMP['bits_per_pixel'] == 24)
                $COLOR = unpack("V",substr($IMG,$P,3).$VIDE);
            elseif ($BMP['bits_per_pixel'] == 16) {
                $COLOR = unpack("v",substr($IMG,$P,2));
                $blue  = ($COLOR[1] & 0x001f) << 3;
                $green = ($COLOR[1] & 0x07e0) >> 3;
                $red   = ($COLOR[1] & 0xf800) >> 8;
                $COLOR[1] = $red * 65536 + $green * 256 + $blue;
            }
            elseif ($BMP['bits_per_pixel'] == 8) {
                $COLOR = unpack("n",$VIDE.substr($IMG,$P,1));
                $COLOR[1] = $PALETTE[$COLOR[1]+1];
            }
            elseif ($BMP['bits_per_pixel'] == 4) {
                $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
                if (($P*2)%2 == 0) $COLOR[1] = ($COLOR[1] >> 4) ; else $COLOR[1] = ($COLOR[1] & 0x0F);
                $COLOR[1] = $PALETTE[$COLOR[1]+1];
            }
            elseif ($BMP['bits_per_pixel'] == 1) {
                $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
                if     (($P*8)%8 == 0) $COLOR[1] =  $COLOR[1]        >>7;
                elseif (($P*8)%8 == 1) $COLOR[1] = ($COLOR[1] & 0x40)>>6;
                elseif (($P*8)%8 == 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5;
                elseif (($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4;
                elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] & 0x8)>>3;
                elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1] & 0x4)>>2;
                elseif (($P*8)%8 == 6) $COLOR[1] = ($COLOR[1] & 0x2)>>1;
                elseif (($P*8)%8 == 7) $COLOR[1] = ($COLOR[1] & 0x1);
                $COLOR[1] = $PALETTE[$COLOR[1]+1];
            }
            else
                return FALSE;

            imagesetpixel($res,$X,$Y,$COLOR[1]);

            $X++;
            $P += $BMP['bytes_per_pixel'];
        }
        $Y--;
        $P+=$BMP['decal'];
    }

    fclose($f1);
    return $res;
}

En pocas palabras: Esa función abre la imagen, la “descomprime” y luego lee los datos para crear un lienzo en PHP que se pueda usar.

¿Pero por qué se necesita tanto? Sencillo, PHP no soporta las imágenes BMP. Al menos no hasta que PHP 7.2 esté disponible.

Cerrando

Si bien esta solución no es perfecta, ya que cada imagen toma mucho tiempo en ser procesada, si ayuda mucho en lograr el objetivo.

Ya hay versiones más “modernas” con mejor código, pero la que compartí es la que implementé en su momento.

Y es algo que se ha de tener bajo la manga ya que no siempre todos distinguen entre las diferencias de los archivos BMP, JPEG, GIF, TIFF o PNG. Cada formato, un reino diferente.

La Liga Premier de México

Para quienes no estén al tanto, este pasado 15 de junio la Segunda División Profesional cambio de nombre de “Liga Premier”. Esto, en teoria, traeria una serie de cambios positivos para el futbol mexicano. No confundir con la Premier League de Inglaterra.

He aquí lo que pienso.

Ya había una Liga Premier

Para quienes no estuvieran al tanto, la Segunda División ya contaba con una Liga Premier de Ascenso. Esta división, como la actual, buscaba que los clubs se desarrollaran en busca de llegar al Ascenso MX.

Sin embargo, como siempre sucede en México, las cosas se fueron hacia otro lado y la Liga dejo de nutrir al Ascenso MX. Se recordará que Loros de Colima y Tlaxcala tuvieron que esperar un año para ascender.

El objetivo de la antigua Liga Premier de Ascenso era evitar ello. Por eso debajo de ella existía la Liga de Nuevos Talentos. Pero para dejarlo peor… realmente ambas categorias estaban en el mismo nivel…

Sin embargo, ahora se ha establecido que esta liga se dividirá en Serie A y Serie B, con clubs los cuales tendrán diferentes objetivos.

Serie A y Serie B

Por un lado, los clubs de la Serie A, que estarán junto con las Filiales de Liga MX, serán solo aquellos que puedan competir por el Ascenso. En total son 18 equipos que logran los requerimientos que se exigen.

En cambio la Serie B contará con aquellos clubs que se encuentren en vías de desarollo, o que solo busquen generar talento para las divisiones superiores.

Hasta ahí todo bien, en especial viendo que algunos equipos de la Serie B eran filiales de equipos de Ascenso MX. Otros más que no cumplen para nada con los requisitos de Nombre y Sede (ver página 29).

Quizá sea un cambio positivo

En este momento es dificil decir si el cambio será más de fondo que de forma, ya que apenas va a ser el primer año.

La antigua Liga Premier tenia objetivos similares. Pero eventualmente termino teniendo muchos clubs los cuales jmás se interesaron por cumplir el reglamento. Pero eso sí, buscaban el ascenso a costa de los demás.

No sabemos que más pudiera haber cambiado de fondo. Incluso, no sabremos cual será la forma en la cual las Series interactuaran entre ellas y con la Tercera División.

En algún lugar llegue a leer que existía la posibilidad de que hubieran dos ascensos desde la Serie B a la Serie A.

Posiblemente, en un periodo de tiempo, la Serie B funcione como un verdadero 4to escalón. Y ya no como un 3.5 como hasta ahora ha sido.

Lo que sí, todavía hace falta a las divisiones inferiores mucha seriedad. En especial, cuando se hace y se deshace de acuerdo a los intereses del momento.

Ya le pusieron seriedad al Ascenso MX, y yo espero que la Liga Premier se ponga en línea con ello. Será dificil para algunos, pero a la larga será un beneficio para todos.

No estoy muerto, todavía

La siguiente entrada, de nueva cuenta en español, es para simplemente mantenerse al día de la actividad que he tenido… que de cierta manera ha sido bastante. Pero por sobre todo muy distractora.

Ya lo se, de nueva cuenta escribo en español… pero es muy posible que lo haga de forma más constante… entrelazandolo con el inglés… hasta que me decida por completo.

Después de todo, este dominio es para público mexicano… ¿No?

Un poco de todo

Lo más importante que he estado haciendo es estar hurgando entre código y proyectos. Haciéndome de algunas herramientas en lo que busco que se asienten mejor las aguas.

Algunos proyectos simplemente murieron a los pocos meses de haber iniciado. Eso es una pena, ya que tenia algo de esperanza en ellos.

Pero es no importa ya que igualmente me ha dado el punto de inicio de hacia donde ir de nueva cuenta. Ya saben, ¿No? Como cuando tanteas las aguas antes de lanzarte al abismo.

Ha sido más o menos lo mismo aunque más lento.

Así que pueden decir que no andaba muerto, si no entre proyectos. Aunque me urge mucho apresurar el paso en al menos uno de ellos… y eso que no falta el momento en el cual simplemente “el universo conspira y parece empujarme a ello“.

No todo es trabajo

Otra de las cosas he he estado haciendo es, como parte de un mal habito, estar siguiendo la E3 este año… ya que al final, también soy un gamer y pues… hay que rendir cuentas a los lideres supremos, haha.

Aunque bueno, quizá ya no soy tan gamer como solía ser, ya que el tiempo simplemente se me escurre entre los dedos.

Pero este año se vieron bastantes cosas interesantes en el E3 por parte de Sony y Nintendo.

Quizá entre mis lista de cosas por tener estarían algunos juegos como:

  • Star Wars Battlefront 2
  • Monster Hunter World
  • Metroid para 3ds
  • Destiny 2

De este último, debo ya de decidirme y adquirirlo pronto, haha.

Pero por desgracia, el gran perdedor este año fue Microsoft con la revelación de Scorpio como “Xbox One X“. No pudo tener peor nombre.

Entiendo que quisieron hacer énfasis en el aspecto variable de “X“, pero por que no llamar a la consola “Xbox One Xcorpio“. Hasta ese nombre hubiera sido interesante.

Y del line-up de juegos ni hablamos. En este momento parece que ellos están teniendo una fuerte crisis de identidad. Eso no es bueno para Microsoft. Tampoco el no tener juegos realmente exclusivos… pero esa ya es otra historia.

De regreso a la ultratumba

Por desgracia, con mi nuevo horario, el tiempo que tendré disponible parece ser muy limitado.

Vivir de noche y dormir de día… casi.

No es algo que sea extraño para mi, pero es mucho mejor que estar lidiando con estar despierto desde muy temprano y ser un muerto en vida durante el día.

Pero algo si es seguro… me hacen falta más de 24 horas al día para hacer muchas cosas. Incluido el tomarme un momento para escribir aquí.

Ya veremos que pasa en el futuro inmediato.

Page 1 of 12

Powered by WordPress & Theme by Anders Norén