unserialize(): Error at offset X of X bytes en PHP

Hace unos días tuve un problema al obtener datos serializados almacenados en una base de datos MySQL. Los datos se guardaban con serialize()  (se que con JSON es mejor pero se necesitaba guardar el objeto PHP) pero al momento de cargar el arreglo de objeto con unserialize() me arrojaba el siguiente error:

yii\base\ErrorException: unserialize(): Error at offset 579 of 664 bytes

Luego de varias horas intentando solucionar el error. Encontré en stack overflow que el problema ocurre con la codificación de los campos de texto (text) en la base de datos. Cuando se obtiene la información, si la codificación usada por PHP es diferente con la de la BD el número de bytes indicado por serialize() no coincide y la lectura se hace mal, ocasionando el error mencionado.

Solución al problema

La forma de solucionar el problema es cambiar la codificación del campo tipo texto, por ejemplo, en mi caso estaba con utf_general_ci y tuve que cambiarla a utf8_general_ci:

ALTER TABLE nombre_de_tabla MODIFY tu_columna VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

¡Listo!, con esto no deberías presental el problema de nuevo.

Cómo crear el diseño web perfecto para tu página principal en este nuevo año 2018

Conseguir crear el entorno gráfico ideal para tu sitio online quizás no se encuentre entre los propósitos más populares de año nuevo, pero sí que debe de estar entre tus tareas principales si quieres que este sea un año fructífero de cara al mundo de los negocios online. Y es que sin importar de si se trata de una tienda online, o una web puramente informativa, trabajar concretamente en el diseño web ayudará a potenciar el tráfico web de la misma, y sobre todo a fidelizar clientes.

Responsive Design

Son muchos los factores que están relacionados de una forma u otra con el diseño web, por lo que si eres una persona que no dispones de los conocimientos en informática necesarios como para llevarlos a cabo, lo mejor será sondear el mercado en busca de una empresa especializada en diseño web y todos estos otros servicios clasificados dentro del marketing online. En otras palabras: una agencia completa que trabaje tanto el diseño y el desarrollo web, como el SEO, las redes sociales… y te ofrezca un servicio técnico de calidad con el que tengas cierta garantía de efectividad ante cualquier percance o inclusive una modificación posterior para ajustarlo todo a los nuevos tiempos.

Te explico por qué es tan importante contratar un diseño de páginas web de calidad

Y es que no “solamente” se trata de un entorno visual con el que presentar tu proyecto al resto de los internautas a través de la red (con el peso que ya de por si conlleva esa característica tan “simple”) sino que además el diseño de páginas web influye en una enorme cantidad de ámbitos y sectores más, que participan de forma directa y activa en el éxito que tu página online pueda llegar a tener.

Potencia las ventas y reduce el efecto rebote: A la hora de crear un diseño para tu web eficiente, se deben de valorar dos aspectos fundamentales. Uno, sería la correcta estructuración de la web de cara a la navegación por la misma. Que sea sencilla e intuitiva, para que los visitantes puedan encontrar aquello que estuvieran buscando de forma rápida y efectiva, ya que de lo contrario abandonarán tu página para ir a otra de la competencia en busca de dicha información, servicio y/o producto.

A su vez, deberás de establecer una disposición que invite a investigar por otro tipo de contenido relevante dentro de la misma, para permitir ofrecer tus productos y servicios más relevantes al margen de cada búsqueda concreta que realice cada internauta. Así, aumentarás el tiempo que dura cada visita y esto en términos algorítmicos para Google se traduce en una optimización muy positiva y que ofrece al usuario contenido verdaderamente interesante, por lo que la premia.

Esto evidentemente te ayudará a obtener más tráfico y convertirlo además en uno de mayor calidad. Evidentemente, un diseño que combine a la perfección con la temática de la web, y dispuesto de forma que cautives al espectador, otorgándole la confianza que necesita a la hora de comprar online, también aumentará las ventas de dicha web.

Ayuda a mejorar aspectos del marketing digital tan importantes como el SEO: Estas pautas a establecer deberán de estar en concordancia además con los motores de búsqueda en otros muchos aspectos, tales como las etiquetas, el contenido, el lenguaje de programación utilizado, las plantillas (o themes) utilizados, los enlaces (tanto internos como externos), etc.

Si se elabora todo desde una base sólida, exenta de fallos y en base a una estructura que favorezca todos estos factores, los resultados serán mucho más óptimos en el ámbito del sector online, y lo verás reflejado en el posicionamiento de tu web, así como las keywords principales relacionadas con el nicho de mercado al que pertenezca la misma. ¿Entiendes ahora por qué es tan importante contar con un diseño web de calidad?

¿Qué es el desarrollo web?

Desde hace unos años escuchamos bastante el término de desarrollo web y probablemente se pregunten o han escuchado: ¿Qué es eso? ¿No es lo mismo que programación? Simplificando, desarrollo web consiste en crear soluciones tecnológicas que se ejecutarán dentro de un navegador (como Firefox/Chrome/Edge o Safari). Por este motivo es diferente a otro tipo de programación porque un navegador funciona de una forma particular y la información debe viajar a través de una Intranet o Internet. En otras palabras, crear todos esos programas y sitios web que vemos dentro de un navegador.

El uso del término desarrollo implica tareas mas allá de la programación: análisis de requisitos, conceptos de usabilidad, seguridad de la información, ingeniería de software, programación del lado del servidor y cliente, entre otros. Cuando alguien te diga que es desarrollador, implica que no solo codifica programas sino va mas allá y realiza mas tareas.

¿Que sé debe conocer para el desarrollo web?

Primero debes conocer los conceptos básicos de programación web:

  • HTML: es el lenguaje de marcado que permite estructurar el contenido que ves en un navegador. Es el esqueleto de la parte visual de la aplicación. En mi opinión aprender HTML es el primer paso para aprender desarrollo web, pues solo necesitas un editor de texto y un navegador para empezar a crear tus primeras páginas.
  • CSS: permite definir como va a lucir el HTML dependiendo del dispositivo. Indica al navegador los colores, tipos de letra, posición y tamaño al contenido del HTML. Su curva de aprendizaje es mediana pero dominar la tecnología requiere mucha experiencia.
  • JavaScript: es el lenguaje de programación que permite definir eventos, realizar tareas, acciones. Se ejecuta tanto en el lado del cliente (a través del navegador) como del servidor (para realizar cálculos, obtención de datos, entre otros). Si solo quieres hacer páginas web sencillas, no es necesario que aprendas esto por los momentos. Sin embargo, tarde o temprano te toparas con JavaScript a medida que vayas haciendo sitios mas complejos. Pues necesitaras agregar interacciones y automatizar acciones.
  • Lenguaje de programación del lado del servidor: las tecnologías anteriores permiten realizar páginas web que se muestran en el navegador. Pero cuando necesitamos interactuar con el servidor: iniciar sesión, subir archivos, descargar información. Necesitamos programar las acciones que debe realizar el servidor donde está alojada la página para saber que debe responder. Esto se hace mediante lenguajes de programación del lado del servidor. Entre los mas comunes suele ser PHP, JavaScript, Ruby, Java, Python, entre otros.

¿Qué aprender luego?

El siguiente paso es hacerte experto en estas 4 tecnologías, e ir en todo el ecosistema alrededor de ellas. Por ejemplo, todo sitio web se aloja en un servidor, entonces debes aprender como se configurar y optimizar uno. La información se almacena en base datos por lo que aprender a diseñarlas y consultar información  a través de ella te ayudará a ser mejor profesional. Conocer como obtener buenos resultados en los buscadores, visualizar correctamente el contenido en cualquier dispositivo. Aplicar técnicas de usabilidad en las interfaces para mejorar la interacción con los visitantes.

Pero no todo es tecnología, pues existen cosas importantes para desarrollador web: redactar correos para conversar correctamente con clientes. Aprender cuánto cuesta una web para saber cuanto cobrar por el trabajo. Elaboración de manuales, entre otros.

¡Parecen muchas cosas!

Aunque parece mucha cantidad de información, poco a poco iras aprendiendo. Ser desarrollador web requiere muchos conocimientos y años de experiencia. Pero con paciencia y práctica lograrás convertirte en uno.  A mi me parece una excelente rama de la informática, cada año va en auge y se puede trabajar desde cualquier parte del mundo.

Espero que les haya gustado esta introducción, recuerden comentar cualquier aporte, sugerencia u opinión sobre el desarrollo web.

Happy coding!

Hace 10 años en esa fecha: Archlinux estrena nuevo logo oficial

SQL para migrar la configuración del tema en WordPress

Desde hace unas versiones WordPress ofrece Customizer, una herramienta para pre-visualizar y configurar un tema en tiempo real. Si se te ha perdido la configuración, esta entrada te explicará como migrar la configuración del tema desde la base de datos. ¿Por qué hacerlo por base de datos y no por un plugin? Pues existen escenarios donde no puedes recrear la configuración manualmente:

  • Vas a lanzar un nuevo tema hijo a producción. No puedes perder tiempo en mostrar un sitio mal configurado a las personas.
  • El tema posee una configuración muy compleja o  grande. Tomando mucho tiempo en recrear la visualización del sitio.
  • El tema esta codificado en otro idioma (escenario que me inspiró esta entrada) y no entiendes la configuración seleccionada.

¿Por qué se pierde la configuración del tema?

Esta configuración se guarda en la base de datos asociada al tema, ocasionando que si cambias a una plantilla hija o una copia de la misma, todas las personalizaciones se pierden. Inclusive, algunos desarrolladores comenten el error de colocar la versión a la carpeta del tema y al cambiar la versión, se pierden los datos de personalización.

SQL para  migrar la configuración del tema en WordPress

La configuración del tema se guarda en la tabla wp_options bajo el nombre de theme_mods_NOMBRE_CARPETA_DEL_TEMA. Por ejemplo, si tienes activado el tema twentynineteen, los ajustes del tema estarán bajo el nombre theme_mods_twentynineteen.

Para migrar la configuración, del tema cuyo nombre de carpeta en /wp-content/themes/ se llame original a un nuevo tema (hijo o con otro nombre) llamado nuevo solo debes ejecutar esta sentencia:

INSERT `wp_options` (option_name, option_value) VALUES ('theme_mods_nuevo',

(SELECT `option_value` FROM `wp_options` WHERE `option_name`='template_mods_original')

);

¡Listo! Ya con estos pasos deberías tener la misma configuración del tema padre (u otro tema si es compatible) con la plantilla cuyo nombre es nuevo (recuerda cambiarlo por el nombre de tu tema). De esta forma ahorras tiempo en recrear toda la configuración automáticamente y luego activar el tema. No perderás tiempo configurando cosas o renombrando carpetas.

Espero que les sirva este comando SQL y recuerda comentar si conoces un mejor método o como optimizar este. ¡Feliz desarrollo!

Carga los productos de una orden en WooCommerce

WooCommerce es una excelente solución para crear tu propia tienda en línea. Al ser un plugin de WordPress permite aprovechar todo lo disponible para esta tecnología. Cada nueva versión incluye mejoras significantes pero sacrificando muchas veces compatibilidad hacia atrás. Hace unos meses salió la versión 3.0 que introdujo varias mejoras y cambios en el SDK. Uno de mis plugines estuvo funcionando mal con los productos variables, pues la forma de obtener los productos de una orden habían cambiado. A continuación te explico como carga los productos de una orden.

Carga de productos de una orden

El problema es que en WooCoommerce existen varios tipos de productos: simple, variable, virtual, etc. Cada uno de ellos es definido en su propia clase, entonces cuando cargas una orden en WooCommerce desde el SDK solo tienes acceso al ID. Luego poder detectar con ese ID el tipo de producto y cargar su respectivo objeto puede ser tedioso.

El primer paso es obtener los objetos que representan los productos de la orden. No se debe confundir con el producto como tal, pues estos tienen un precio y atributos únicos para la orden.  Luego de cargar estos productos, si procedemos a cargar la instancia de su respectiva clase que nos dará toda la información.

WooCommerce nos ofrece la función get_product() que dando un ID, se carga automáticamente el producto como un objeto de su respectiva clase. Permitiendo acceder y manipular la data de muchas formas.

$order = wc_get_order( $order_id );
$line_items = $original_order->get_items();

foreach ( $line_items as $item_id => $item ) {
  $wc_product = $item->get_product();
  ....
}

Y listo, ya con esto puedes obtener un objeto que representa al producto de un orden.

Hace 2 años en esa fecha: Mi opinión sobre When Google met Wikileaks

Hace 9 años en esa fecha: World Challenger JCheater v1.1

Hace 10 años en esa fecha: Un MEME

Mi entrevista en WordPress.tv por el Global WordPress Translation Day

El pasado noviembre me hicieron una entrevista en WordPress.tv, pues desde el 2016 he estado organizando encuentros de WordPress en San Cristóbal, Venezuela. El 12 de noviembre de 2016, organizamos el único Global WordPress Translation Day de latinoamérica. Allí explicamos como realizar traducciones y una herramienta para facilitar las hecha por Diego Juliao con la participación del localizador oficial para Venezuela Jordi Cuevas.

Mi entrevista en WordPress.tv

Puedes ver la entrevista a continuación, está en ingles, hablo un poco de mí y las tareas que realizo en los meetups. También explico como nació la comunidad local de WordPress y otras cosas.

Espero que les guste.

Meetup de WordPress en San Cristóbal, Táchira

Desde Enero del 2016 nos estamos reuniendo varios entusiastas de WordPress ubicados en el estado Táchira (Venezuela). Para hablar sobre temas relacionados al mundo WordPress, tales como: desarrollo de temas, los mejores plugins, casos de éxito, diseño web, mercadeo, entre otros. Estos encuentros, mejor conocidos como meetup de WordPress han sido reconocido oficialmente por Automattic, la compañía detrás de WordPress. Por lo tanto nos han colaborado pagando la plataforma Meetup.com y aparecemos listados dentro sus meetups oficiales (ya aparecemos en el widget de encuentros cercanos).

¿Qué es un meetup de WordPress?

Es un encuentro de varios entusiastas, aficionados y profesionales que utilicen WordPress. En los encuentros se comparten diversos temas relacionados al gestor, como información técnica para crear sitios, experiencias de negocio, recomendaciones de plugines, experiencias laborales, entre otros. Los asistentes pueden ser creadores de páginas web, dueños de negocios con sitios hechos en WordPress, personas de mercadeo, profesores, desarrolladores web, diseñadores gráficos, comunicadores sociales, bloggers, entre otros. Los asistentes de este tipo de eventos suelen ser personas de distintas ramas y por lo tanto, se aprende mucho al aprender de ellos.

No todos los meetups son académicos y escuchar ponencias, algunos son eventos sociales donde nos reunimos en un sitio para compartir comida o bebidas. Pues la idea es compartir experiencias, crear lazos profesionales, laborales y de amistad.

¿Cómo puedo participar y colaborar?

Puedes participar de 4 formas: asistiendo, dictando una charla, patrocinando u organizando. Siempre buscamos nuevos colaboradores para participar:

  • Asistiendo: es la mas importante, pues sin asistentes no podemos realizar el evento. Como asistente debes confirmar tu puesto en el sitio de meetup de WordPress e invitar cada vez mas gente para crecer como comunidad.
  • Dictando una ponencia: necesitamos ponencia para compartir contenido en los encuentros. Este punto es nuestro mayor limitante para planificar encuentros. Los temas son relacionados a WordPress, puedes hablar de mercado de sitios, de la funcionalidad de un plugin que te guste, como desarrollar un tema, diseño gráfico, base de datos, seguridad de sitios, entre otros. Lo importante es que el tema este orientado a WordPress. Nos gusta tener ponencias sobre casos de éxito, donde nuestros colaboradores compartes sus experiencias empresariales al usar WordPress.
  • Patrocinando: colabora prestando un lugar para poder reunirnos, llevando refrigerios para compartir luego de cada encuentro, por mencionar algunas ideas. Los patrocinantes aparecer en el sitio del meetup y pueden dar un mensaje o publicidad a todos los asistentes.
  • Organizando: actualmente solo hay 1 persona organizando el evento. Requerimos mas colaboradores para buscar sitios, personas que quieran dar una ponencia. También necesitamos alguien que pueda grabar las ponencias, tomar fotos y luego publicarlas en Internet para las personas que viven fuera del estado. Si te interesa colaborar puedes escribirme.

No vivo en el Táchira, ¿cómo puedo participar?

También estamos de forma virtual en distintos medios. Te recomendamos unirte a nuestro canal en telegram creado por Richzendy. Allí intercambiamos información de complementos y resolvemos las dudas de la comunidad. Muchos participantes comparten videos, artículos y libros para adquirir nuevos conocimientos. Uno de los miembros administra la cuenta de @wordpressvzla en Twitter donde se comparte información de este gestor.

¡Así que puedes participar remotamente con la comunidad!

¿Cada cuanto se reúnen?

Nos solemos reunir cada dos meses, dependemos principalmente de la situación del país, la disponibilidad de un aula en la UNET y si podemos conseguir al menos dos ponencias. La mejor forma de enterarse del próximo evento es uniéndose a la página de Meetup de WordPress San Cristóbal. El sitio notifica cada vez que publicamos un evento, el llamado a ponencias, mensaje enviados a la comunidad, entre otros. Consideramos importante confirmar tu asistencia al evento, para conocer si el aula posee suficiente capacidad y comprobar ante Automattic el interés en los encuentros.

Logros del meetup de WordPress del Táchira

A pesar de tener poco tiempo de reunirnos hemos podido:

  • Ser reconocido como un meetups oficial de WordPress, el único en el país.
  • Ser el único grupo de latinoamérica en participar en el WordPress Global Translation Day.
  • Fuimos entrevistados en WordPress.tv

Esperamos tener mas logros, por lo tanto te invitamos a unirte en la página de Meetup de WordPress San Cristóbal, colabora invitando a mas amigos, asistiendo o dictando una ponencia. ¡Así creceremos para hacer eventos mas grandes como WordCamps!

Hace 5 años en esa fecha: Steve Job vs Bill Gates el rap