Error de JSON malformed al enviar datos a Zoho

Zoho es una excelente herramienta en la nube para la administración de negocios. Posee una excelente API REST para realizar integración de datos entre sistemas. Hace unos días tuve problemas para subir información al API y me arrojaba el error JSON malformed.

Cómo solucionar el error de JSON malformed

La documentación no indica cual puede ser el problema y en que campo. Obviamente es un error de codificación de JSON pero al revisar mi código y los datos que estaba enviando, noté que el JSON estaba bien validado. Pero me di cuenta que Zoho pide enviar el JSON dentro del cuerpo de la petición en texto plano, no en formato JSON. Por ello, al codificar los campos en la cadena, el símbolo de ampersand ( & ) puede confundirse como el inicio de un parámetro GET. Así que es necesario codificarlo con su respectivo valor en HTML que es %26.

Así que para solucionar mi problema tuve simplemente que reemplazar el valor luego de ser codificado en JSON:

$jsonString = str_replace('&', '%26', json_encode($invoice));
$body = '&JSONString=' . $jsonString;

¡Listo! Ahora si podrás subir la data a Zoho.

Hace 6 años en esa fecha: Mi análisis o review de Duke Nukem Forever

Hace 11 años en esa fecha: Frogger en JAVA (JFrogger 2k6)

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.

¿Sirve el título universitario en la profesión de informática?

Muchas veces he escuchado la interrogante sobre si sirve el título universitario para trabajar en informática. Algunos lo ven necesario pero otros no. Como soy profesor de una universidad y trabajo como programador, voy a compartirles la mi opinión pues considero tener ambos lados del asunto.

Cuando tenía 13 años de edad me ha llamó la atención ser programador. Al comentarle a mi padre, me trajo un libro de como programar con Visual Basic 6.0 de la oficina de informática del lugar donde trabajaba (nunca supe quien se lo facilitó) y comencé por mi cuenta a hacer aplicaciones gráficas desde mi computadora. Luego aprendí a realizar páginas web por mi cuenta y cuando finalicé mi bachillerato estudié Ingeniería en Informática formalmente. Digamos que empecé en este camino como autodidacta y luego estudié formalmente. Esto me ha permitido ver ambas caras de la moneda.

¿Por qué es común preguntar si sirve el título?

Si has trabajo en esta área, es común ver a profesionales con muchos conocimientos sin títulos académicos. Algo muy extraño en carreras como la medicina, donde para ejercer debe haber pasado por estudios formales. Pienso que se debe principalmente a la facilidad de aprender por ti mismo y toda la información esta disponible en la red.

Respecto al auto-aprendizaje, si estudias computación es muy fácil aprender a través de errores: ¿instalaste el sistema operativo mal? ¡Intenta de nuevo! Lo peor es que hayas perdido tiempo y datos. Un cirujano no puede hacer algo similar, si falla al realizar una cirugía el paciente queda mal de por vida o incluso muere. Con una computadora las consecuencias no son graves entonces puedes aprender cada vez de tus errores y adquirir nuevos conocimientos, inclusive aplicando fuerza bruta puedes aprender.

Debido a que Internet fue hecho por informáticos, existe una gran cantidad de conocimientos sobre computación en ella. Allí podrás conseguir desde como empezar a hacer un programa, hasta como resolver los problemas mas complejos. Puedes conseguir artículos, blogs, libros, sitios de ayuda, foros, entre otros. Mientras que otras ciencias y carreras, su principal fuente de conocimiento viene de medios impresos.

Mucha gente con hacer unos préstamos rápidos puede pagar un curso en línea. Permitiendo desde cualquier parte del mundo aprender desde 0 hasta llegar a un nivel profesional.

Mi opinión

Considero que depende del talento y esfuerzo de cada persona. Tener un título académico no garantiza ser un excelente profesional ni trabajo seguro, pero ayuda bastante para aprender las bases de varias las áreas de la informática. Si sirve el título como un documento para certificar un mínimo de conocimientos y que posees hábitos de estudio. Por esto muchas empresas lo exigen porque saben que si no tienes ese talento innato al menos tienes una base de conocimientos y capacidades para trabajar. Ademas, el título permite avanzar en niveles superiores de estudio como maestrías y doctorados que permiten obtener puestos de trabajo únicos.

Pero no lo es todo: depende de que sigas actualizando tus conocimientos, sepas comunicarte, tengas responsabilidad, capacidad para resolver problemas, entre otros. Cosas que no aprenderás en una universidad y son de gran valor para las empresas que buscan personal. Por eso puedes conseguir buenos trabajos en la informática sin tener estudios formales.

El área laboral

Las ofertas laborales en el área de informática en su mayoría no exigen de títulos profesionales. Generalmente suelen solicitar conocimientos en ciertas tecnologías y herramientas. Cada profesional deberá demostrar sus aptitudes y conocimientos al reclutador al momento de la entrevista laboral. Sin embargo, he observado que al momento de solicitar cargos de niveles mas alto (como líder de proyectos, posiciones donde se debe supervisar mucha gente, CTO) si suelen exigir títulos académicos. Tal vez por la responsabilidad o porque se requieren conocimientos de ingeniería para el manejo de procesos.

Existen ciertos paradigmas, arquitecturas y temas que se aprenden en la universidad y son requisito para estas posiciones. Por ejemplo, en mi experiencia he visto deficiencias en el diseño de base datos, arquitectura de software y manejo de teoría de sistemas operativos en profesionales sin título. Una persona sin estudios formales suele resolver ese tipo de problemas no de forma optima o reinventa cosas ya definidas en teorías.

Pero este tipo de profesionales que he visto trabajando en organizaciones suelen ser personas con talento innato. No los consideraría personas promedio sino personas con capacidad de aprender por si mismos con facilidad para la programación. Creo que es un camino mas difícil pues hay que aprender sin guía muchas áreas de la computación.

Por eso, pienso que para la persona promedio es importante tener un título universitario para ser un profesional con cierto nivel de conocimiento. Pero para algunos con talento no es necesario, pueden llegar a aprender igual o aún mas lejos. Siempre hay excepciones a la regla, si no, todos fuésemos unos Mark Zuckerberg o  Bill Gates.

Ahora me gustaría saber tu opinión. ¡Comenta!

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