El pasado 18 de junio tuve la oportunidad de participar en el Women Community Fest del Campus Party Bogotá 2019. El Campus Party es un evento donde se realizan diversos eventos relacionados a la tecnología, inversiones, emprendimiento, videojuegos, entre otros. El evento dura aproximadamente una semana y no se descansa pues permite a los asistentes quedarse en carpa durante la noche.

Women Community Fest

En esta ocasión, había un espacio de tecnología y el mismo fue asignado al Women Community Fest, una comunidad está conformada un gran número de chicas de distintas partes de Colombia con grandes conocimientos en tecnología de la información y experiencia en la realización de eventos informático, promoviendo la equidad de género y empoderamiento de las mujeres sin discriminar otros géneros.

La duración del evento duró una semana, así que me es difícil resumir todo lo ocurrido. Ademas que tuve que trabajar en mis proyectos mientras estaba en el evento, por ello solo pude tomar fotos y asistir a pocas presentaciones. Por parte de Mozilla, estuvimos con ponencias del programa Mozilla Reps y Mozilla Tech Speakers, ademas de contar con la participación de miembros de Mozilla Colombia. Se habló de diversos temas como: Common Voice, herramientas de desarrollo de Firefox, la salud de Internet, WebVR, entre otros.

Todas charlas estuvieron muy interesantes, escuché sobre React, Docker, WordPress, seguridad informática, salud de Internet, cifrado, arquitectura. Es decir, había de todo. Tanto para principiantes como para profesionales.

El navegador es tu mejor amigo para el desarrollo web

En esta ocasión tuve la oportunidad de comentar sobre las herramientas de desarrollo de Firefox para el desarrollo web. A diferencia de las ediciones anteriores hablé tanto de las herramientas enfocadas a CSS como de JS.

Skatox hablando sobre el navegador es tu mejor amigo en el Women Community Fest
Hablando sobre el navegador es tu mejor amigo

Tenía presión porque mi charla era justo antes del partido de la selección de fútbol en la Copa América (no podía competir con ello). Pero mi charla terminó justo cuando los jugadores empezaron a salir al campo.

Me gustó la receptividad, muchas personas quedaron interesadas en como utilizar algunas herramientas y con mayor información del navegador. Si desean saber mas detalles. Pueden verla a continuación gracias a la página de Women Community Fest en Facebook:

Mi charla sobre el navegador es tu mejor amigo para el desarrollo web

Evento de Platzi/Facebook

Durante el penúltima día del evento, tuve la oportunidad de ser invitado a un evento privado de Platzi, la empresa líder de educación en línea para latinoamérica. Era un evento dirigido a líderes de comunidades para la promoción de becas estudiantiles para madres solteras, minorías, migrantes, trans, etc.

El evento fue realizado en conjunto con Facebook, quienes iniciaron con unas presentaciones muy interesantes de realidad virtual y bots con inteligencia artificial. No puedo dar muchos detalles pero me hizo ver como es el futuro de la tecnología. Para luego finalizar con una breve historia de Platzi y sobre el futuro de la educación.

Fue una gran experiencia poder disfrutar de este gran evento por una semana. Logré conocer nuevos colaboradores de comunidades de software libre de todas partes de Colombia y ayudar a formar la comunidad de Mozilla Colombia.

Las chicas del Women Community Fest hicieron un gran trabajo como organizadores. La calidad de los ponentes fue muy alta y la representación muy equilibrada, mitad hombres, mitad mujeres. Con nacionalidades de Colombia, Venezuela, México, Argentina, entre otros. Ojalá mas eventos se copien de éste para seguir promoviendo la equidad de género en la tecnología.

Si el mundo digital nos había dejado descolocados con todas sus creaciones la llegada de las criptomonedas nos ha trastocado. En 2009 asistimos al nacimiento del Bitcoin. Bien, en verdad muchos de nosotros nos enteramos de ello años más tarde. El caso es que desde el nacimiento del Bitcoin la presencia de las criptomonedas o monedas digitales ha ido en aumento. Las más conocidas por el momento son Bitcoin y Ethereum, pero también hay otras como Litecoin, Monero o Dash, entre muchas otras. Una de las cosas clave y qué más preocupan a los que se adentran a este mundo es el intercambio, como el intercambio popular de binance.com.

Bitcoin y procesador Intel

Bitcoin y Ethereum, las diferencias

Son las dos criptomonedas más grandes del mundo, Bitcoin la que es mas popular. Aún así Ethereum ha sufrido un crecimiento mucho más rápido que Bitcoin y se usa cada vez más. A pesar que para muchos puede ser la misma cosa, ya que hablamos de criptodivisas, lo cierto es que las dos responden a proyectos muy diferentes con objetivos muy distintos. Por tanto, muchos analistas apuntan que se trata de dos criptomonedas compatibles y no excluyentes.

Bitcoin, como hemos dicho, fue creado en 2009 por alguien o un grupo de personas, que responden al pseudónimo de Satoshi Nakamoto. No se sabe quién es o quiénes son. Ethereum nació en 2014, unos cuantos años más tarde, de la mano de Vitalik Buterin.

La plataforma Bitcoin nació con el objetivo principal de ser un sistema de pago descentralizado, rápido y seguro, similar al de la propia moneda. Por su parte el objetivo de Ethereum es el de funcionar como plataforma de ejecución de contratos inteligentes y aplicaciones descentralizadas.

Los dos usan lenguajes de programación diferentes, el primero usa el C++ y el segundo el Turning Complete. Aunque las dos se pueden considerar criptomonedas descentralizadas. El Bitcoin es una moneda 100%virtual, mientras que al segundo se le llama token o ficha digital.

¿Para qué se pueden usar?

La gran pregunta sobre estas dos criptomonedas es, ¿qué puedo hacer con ellas? Pues bien, con el Bitcoin puedes realizar pagos. Competir con las divisas fiat y el oro y también usarlas para realizar inversiones. Muchos están invirtiendo ya en Bitcoin. Ethereum en cambio es una moneda (o ficha digital, como dicen ellos) que sirve para operar dentro de la red de Ethereum, que te permite crear aplicaciones descentralizadas, ejecutar contratos inteligentes y también como inversión.

El mundo de las criptomonedas

Una criptomoneda o criptodivisa es un medio digital de intercambio, o mejor dicho, una moneda digital que sirve para poder intercambiarla por otras cosas. La diferencia con las monedas convencionales o con los métodos de intercambio (o pago) convencionales, es que permite realizar estos intercambios de forma segura, anónima y descentralizada.

Ojo, porque cuando hablamos de Bitcoin no nos referimos a la moneda sino a la plataforma, lo mismo con Ethereum. Para ser correctos deberías decir BTC o ETH o bitcoin (en minúsucla) y ether para referirnos a las monedas.

Estas son las dos grandes criptodivisas en cuanto a su valor dentro del mercado de las monedas digitales. Y puedes realizar cambios en bestbitcoinexchange.

MongoDB es un gestor de base de datos no relacional de código abierto. Probablemente es el mas usado y conocido por todos. Pues hace algún tiempo la compañía detrás del desarrollo de MongoDB, llamada MongoDB Inc lanzó un video parodía como las de SuSE.

En este caso se llama Database Skills, que es una parodia de la canción Cheap Thrills de Sia. Pero en esta letras habla sobre las base de datos no relaciones. En fin, les deseo ver este vídeo sin quiere reírse unos minutos y disfrutar de buena música geek.

Si te gustó, recuerda comentar tu opinión o compartir otro vídeo similar.

WordPress ofrece una funcionalidad llama cron que te permite agendar tareas cada cierto tiempo. Éstas tareas son ejecutadas cada cierto tiempo según lo definido. De esta forma puedes ejecutar funciones de forma automática. Por ejemplo: respaldo de base de datos, sincronización con servicios externos, borrar caché entre otros.

¿Cómo funciona el cron de WordPress

WordPress posee un archivo llamado cron.php que al ejecutarlo. Revisa todas las tareas definidas en el cron para ejecutar las funciones de aquellas programadas a la hora actual o anterior. Por ejemplo, si decides ejecutar una tarea cada 12 horas. La primera vez que lo ejecutes lo agendará para ser ejecutado luego de 12 horas. Cada vez que se llama a al archivo cron.php bien sea de forma manual (accediendo directamente a él) o como lo hace por defecto, donde chequea cada vez que la página recibe una visita (no lo hace todo el tiempo). El archivo chequea si existen eventos registrado para la hora actual o ya pasada (es decir se le culminó el tiempo de agendado) y llama a la función definida en cada evento.

Agendar nuestros eventos al cron

Como comenté anteriormente, necesitamos definir el nombre de nuestro evento y la función a ejecutar. Primero debemos chequear que el evento no está agendado previamente para agregarlo. Una vez agregado no es necesario hacerlo de nuevo, con una sola vez se ejecutará varias veces automáticamente. De lo contrario será agregado infinidad de veces al cron. A continuación podemos ver un ejemplo de como hacer este proceso en tu plugin o tema.

if ( ! wp_next_scheduled( 'mi_evento' ) ) {
    wp_schedule_event( time(), 12 * HOUR_IN_SECONDS, 'mi_evento' );
}

En el segundo parámetro podemos ver 12 * HOUR_IN_SECONDS, ésta es una constante definida en WordPress, aunque podemos utilizar las cadenas de texto como ‘daily‘ (diariamente una vez al día), ‘twicedaily‘ (dos veces al día), ‘hourly‘ (cada hora). De esta forma tenemos control de la periodicidad del evento.

Cómo definir mis propios intervalos

Puedes definir tu propio período de tiempo para ejecutar tareas en el cron. Por ejemplo cada 3 horas o crear un período definido por un usuario a través de una caja de texto. Para ello, debes hacerlo de la siguiente forma:

function miprefijo_agregar_intervalo_de_cron( $schedules ) {
    $schedules['medio_minuto'] = array(
        'interval' => 30,
        'display'  => esc_html__( 'Every Five Seconds','mi-dominio-idioma'),
    );
 
    return $schedules;
}

add_filter( 'cron_schedules', 'miprefijo_agregar_intervalo_de_cron' );

Ahí vemos como WordPress posee en la variable $schedules la lista de intervalos y su cantidad en segundos. Nosotros a través de un filtro, vamos a agregar nuestro intervalo de medio minuto a la lista definida en la variable $schedules. Finalmente cada vez que se llame al listado de intervalos, nuestro período personalizado aparecerá allí. Y podemos utilizarlo en el segundo parámetro de wp_schedule_event().

Espero que esta guía os haya gustado, para mas información puedes chequear la documentación oficial de WordPress Cron. Cualquier duda que tengas no dudes en preguntarla.

WordPress es uno de los CMS mas usados en el mundo. Al parecer 33% de Internet esta soportado por WordPress. Tal vez por su facilidad de uso para crear contenido de forma rápida y fácil para un usuario promedio de Internet. Pero la plataforma no está diseñada para resolver todo tipo de problemas. Por esta razón si tenemos una aplicación web (en este caso hecha con Yii2) o un sistema mas complejo es necesario realizarla con otro tecnología y no a través de plugins.

¿Por que integrar autenticación de WordPress a Yii2

En el párrafo anterior comenté como WordPress no puede ser usado para todo tipo de problemas. A veces necesitamos crear una aplicación con un framework para resolver cierto tipos de problemas o tener mayor control. Yo suelo usar el framework Yii2 permite realizar buenas aplicaciones en poco tiempo. Llevo un par de años usándolo y me gusta mucho.

A veces, tienes un sitio web con WordPress donde tienes una base de datos de usuario. Por ejemplo, una tienda registra todos sus usuarios allí o un sitio de noticias tiene cuentas para todos los redactores. Es posible reutilizar esta información en otro sistema que este alojado en el mismo servidor y usarlo como medio de autenticación.

Se que lo ideal es hacer una autenticación a través de OAuth o un API pero en algunos casos donde es un sistema pequeño, no hay presupuesto ni tiempo para invertir en esta solución es posible hacerlo de la siguiente manera.

Incluir el código base de WordPress

Antes de incluir el código de WordPress para la autenticación, tenemos la posibilidad de descartar la carga de código que no hemos usado, para esto podemos incluir en nuestro archivo PHP las siguientes constantes. Esto lo podemos escribir en en el archivo principal de Yii2, ubicado en /web/index.php antes de iniciar la aplicación.

define( 'WP_USE_THEMES', false);
define( 'COOKIE_DOMAIN', false );
define( 'DISABLE_WP_CRON', true );

Estas 3 constantes desactivan: la carga de temas, limitar la cookie al dominio del sitio y desactivar el cron. Este último evita que se tarde mucho tiempo la autenticación al lanzar los eventos pendientes del cron.

Luego simplemente incluimos los archivos wp-load.php y pluggable.php para cargar las funciones de autenticación de WordPress.

$wp_folder = 'RUTA_AL_WORDPRESS';
require(__DIR__ . '/../' . $wp_folder . '/wp-load.php');
require(__DIR__ . '/../' . $wp_folder . '/wp-includes/pluggable.php');

(new yii\web\Application($config))->run();

Modificación de la autenticación

Una vez realizado el paso anterior, procedemos a modificar la autenticación para que en vez de buscar en la base de datos, utilice la información de WordPress. Para ello en el método de findIdentity lo podemos realizar de la siguiente forma

  public static function findIdentity( $id ) {

    $wp_user = get_user_by($wp_attribute, trim($value));

    if ($wp_user) {
      $user                 = new self();
      $user->id             = $wpUser->ID;
      $user->username       = $wpUser->data->user_login;
      $user->niceName       = $wpUser->data->user_nicename;
      $user->displayName    = $wpUser->data->display_name;
      $user->email          = $wpUser->data->user_email;
      $user->dateRegistered = $wpUser->data->user_registered;
      $user->roles          = $wpUser->roles;
      $user->password       = $wpUser->user_pass;

      return $user;
    } else {
      return null;
    }

¡Listo! Ya podrás iniciar sesión en tu aplicación Yii2 utilizando las credenciales de tu instalación de WordPress. Nota como una vez teniendo el objeto de tipo WP_User podemos acceder a toda la información del usuario.

Espero que te guste y te sirva esta información.


Los que me leen desde hace años, habrán notado que suelo cambiar el diseño y tema de mi bitácora (blog) cada 3 años aproximadamente. La última vez que lo hice fue en el 2014. En ese entonces modifiqué un tema existente y lo adapté al diseño que tenía en mente. Pero con el paso del tiempo tuve problemas para mantenerlo, debía estar pendiente de nuevas tendencias para agregarlo y al no hacer un tema hijo, perdía las actualizaciones originales del tema.

Skatux: el pinguino de mi blog
Skatux, el logo de mi web ha vuelto al encabezado e icono del sitio

Mejoras del tema y de rendimiento

Lo primero que hice fue descargar la última versión del tema original. Hice un diff para ver las diferencias y así solo incluir las modificaciones requeridas. Me llamó ver como cosas que hacía anteriormente con modificaciones de código ahora las podía hacer con CSS. También ahora he podido migrar partes del diseño a flexbox en vez de usar floats y clears para alinear elementos.

También he incluido mejoras en el rendimiento como eliminar la carga de archivos de CSS y JS que no necesito. Agregué en el HTML la precarga de dominios para la publicidad de Google Adsense y otros elementos de terceros.

Con la ayuda de GTMetrix pude descubrir las fallas de mi sitio web. Posteriormente empecé a aplicar cada consejo para aumentar el rendimiento del sitio. No pude llegar hasta el puntaje máximo porque el problema es con la configuración de elementos de terceros como el botón de seguir de Twitter, publicidad de Adsense, entre otros. No se tiene acceso a esos elementos y son requeridos por el sitio. Aunque sé que llegué al puntaje máximo sobre las cosas que poseo control.

Mejoras de accesibilidad

Siempre he usado el color naranja como el distintivo de mi blog. Pero al aplicar las pruebas de accesibilidad de Lighthouse descubrí que los tonos naranjas no pueden ir sobre blanco. Por lo tanto tuve que buscar el color mas próximo para así tener mi sitio accesible a todo tipo de personas. También agregué elementos requeridos a algunas imágenes o mejoras del código para facilitar la lectura del sitio en dispositivos para personas con discapacidad.

También tuve que acomodar el tamaño de algunas fuentes y separar elementos para mejorar la visualización. Eso si, sin afectar el diseño del sitio.

La experiencia de actualizar mi blog

Mejorar el trabajo que realicé hace 5 años fue interesante. Me da pena ver como hacía algunas cosas. Pero comprobé como he mejorado mis conocimientos en WordPress y desarrollo web general. También es interesante conseguirse con código o archivos obsoletos. Encontré 2 plugines para vender publicidad, cuyas empresas ya no existen y por lo tanto eliminé.

Vale la pena cada cierto tiempo realizar esta tarea para modernizar las tecnologías del blog. Comprobar si has mejorado o aprendido nuevas cosas y ganar nuevos conocimientos para aplicarlos en trabajos

Espero que noten las mejoras en la carga del sitio. Si encuentran algún problema en bug, no duden en reportarlo para solucionarlo y mejorar la calidad del sitio.

Gracias por leer este artículo 🙂

Hace unos días escribí sobre el cierre de Linux Counter. Luego al revisar el sitio Planeta Linux. ¡Me entero que también cerró! Ha sido una semana nostálgica para mi respecto al mundo de Linux. Pues han cerrado dos sitios que les seguía la pista por muchos años.

¿Qué era Planeta Linux?

Planeta Linux fue un proyecto realizado por varios programadores (principalmente Damog) promotores del software libre en Latinoamérica. La idea era compartir los artículos de Linux de distintas bitacoras de tecnología de distintos países. Pues cuando se creó el sitio, el contenido se compartía principalmente en blogs. Las redes sociales eran prácticamente inexistentes. Gracias a este sitio podías leer sobre lo que ocurrió sobre Linux en tu país.

Cierre de la página

Sin embargo en los últimos años, los blogs personales han decaído y pocas personas seguían escribiendo sobre Linux. Por lo tanto el contenido empezó a estancarse. El contenido de Linux a migrado a sitios empresariales y sitios dedicados a Linux, ya es muy poco el contenido de sitios personales. Además, es mas fácil conseguir contenido actualizado desde las redes sociales.

En fin, fue el cierre de un gran sitio. Recuerdo la emoción de cuando aceptaron mi blog en ese sitio. Recibí muchas visitas desde allí y me encantaba entrar cada cierto tiempo para ver el contenido del mismo. Pero los tiempos cambian y toca adaptarse a ellos.

Gracias Planeta Linux.

Nota de cierre de Planeta Linux
Mensaje de cierre de Planeta Linux