Cuaderno de bitácora, Fecha Estelar 1968.3. Así da comienzo mi nueva sección en el Blog, en homenaje a una de mis sagas favoritas “Star Trek”. En esta sección pretendo relatar mi recorrido diario por un hobbie que he convertido en profesión desde hace un par de años: “el desarrollo web”. Aunque empecé profesionalmente en el año 2018, realmente fue en el año 2011 cuando inicié mi andadura por el mundo del desarrollo web y concretamente con Joomla! Versión 1.6. Ahora, 9 años mas tarde disponemos de la versión estable 3.9.+ y la versión beta de Joomla 4.

 Soy un apasionado de la informática desde niño, y sobre todo de la programación. Hoy en día es fácil envolverse en el mundo digital pero no era así en mi infancia. Me refiero a la década de los 80 donde empezó a popularizarse el uso de micro-ordenadores domésticos.

Mis inicios

 Por aquella época el mercado estaba dominado por el Spectrum de la casa Sinclair, pero yo me había decido por el Laser VZ200 del fabricante Vtech por que entre otras cosas a mi pueblo (Santa Marta de Ortigueira, A Coruña) no llegaba todavía Amazón (año 1982).

 Aquellos ordenadores hacían las delicias de aficionados a los videojuegos principalmente, bueno siendo mas concretos, el Spectrum realmente fue el dominante de dicho sector.

Estos ordenadores no disponían de disco duro, tenían una memoria RAM de entre 16 y 64 KB y un procesador de 4 MHz. El código de los juegos se guardaba en una cinta de casete de audio común en aquella época. Se conectaba un reproductor de cintas al ordenador y se accedía a los datos a una velocidad de 1.500 bit/seg de media. Un juego de 48 K tardaba aproximadamente una media de 4 minutos en cargarse.

Si querías guardar datos en una cinta necesitabas que dicha cinta permitiese el guardado de datos y además el reproductor debía tener la opción de grabar, que no todos lo permitían. Esto no solía ser un problema para los usuarios de Spectrum ya que estos no solían grabar, sino que el uso habitual era el de descargar datos hacía el ordenador con el código del juego.

Era muy fácil encontrar infinidad de juegos para esta marca, incluso el pirateo era cosa de niños, bastaba con tener un reproductor conectado a un grabador y pulsar primero “rec” del grabador, posteriormente “play” en el reproductor y esperar a que terminase la grabación.

Pero este no era mi caso, yo tenía un Laser VZ200, los juegos del Spectrum no eran compatibles con mi ordenador, no había mercado de juegos para él y nunca fui capaz de conseguir un juego para dicho equipo, pero como la necesidad agudiza el ingenio tuve que programar mis propios juegos, dando así comienzo a mi pasión por la programación, concretamente con el lenguaje BASIC.

Lenguage de programación BASIC

Llevo muchos años sin utilizar BASIC, pero recuerdo vagamente que a cada línea de código había que asignarle un número, no se generaba automáticamente. Esta numeración habitualmente se iniciaba en el 10 y cada nueva línea se incrementaba en 10 unidades, es decir, la siguiente línea comenzaba con el 20 y así sucesivamente. Esto se hacía por que podías necesitar incrustar alguna línea dentro del código dejando así 8 posibilidades entre línea y línea. La nueva habitualmente era un múltiplo de 5, por ejemplo el 15, quedando así posibilidad de insertar mas líneas antes y después.

No existían funciones a las que llamar, o al menos en la época que yo programaba. Creo que después se podía. Esto obligaba al uso del comando GOTO cuando se deseaba transferir el control a un punto determinado del código.

La programación

Según wikipedia programar viene a ser el proceso de crear un software fiable mediante la escritura, prueba, depuración, compilación y mantenimiento del código fuente de dicho programa informático. También dice que este proceso consta de la aplicación lógica de 5 pasos que son:

  1. El desarrollo lógico del programa para resolver un problema en particular
  2. Escritura lógica del programa empleando un lenguaje de programación específico.
  3. Compilación o interpretación del programa hasta convertirlo en lenguaje de máquina.
  4. Prueba y depuración del programa.
  5. Desarrollo de la documentación.

Pues bien, los pasos 1, 4 y 5 son iguales para todos los lenguajes de programación, el paso 3 suele ser un proceso automático, y por lo tanto sólo varía el paso 2 para cada uno de los lenguajes de programación.

Con esto no quiero decir que sea fácil programar, simplemente que si tienes conocimientos de un lenguaje de programación resulta mucho mas sencillo aprender el uso de otros lenguajes, la lógica es la misma.

Mis lenguajes de programación

Para que un usuario reciba información de internet en su explorador deben participar por lo menos dos ordenadores, el propio del usuario o habitualmente llamado “Cliente” y el ordenador en donde se encuentra la información buscada, llamado “Servidor”.

Desde mis inicios con el desarrollo web me he decido por el lenguaje PHP, por ser el lenguaje base que utilizan la mayoría de los CMS o gestores de contenido y mas concretamente Joomla!. Los scripts o secuencia de comandos de este se interpretan en el servidor, generando código HTML que es enviado al cliente. Es un lenguaje relativamente fácil de aprender. Cada vez que el cliente hace una solicitud, esta es enviada al servidor que se encarga de procesarla y devolver el resultado al cliente. Este hecho supone que la página que se ha de mostrar deberá refrescarse cada vez que el cliente realiza un solicitud, y esto afecta negativamente a la optimización del sitio.

Este inconveniente se soluciona con el uso de Javascript. Este a diferencia del PHP se ejecuta en el ordenador cliente, con lo cual no importa el tipo de conexión ya que solo realiza una solicitud inicial para cargar toda la página, el resto de solicitudes se encarga el ordenador cliente de resolverlas.

He empezado el año pasado a aprender el uso de este segundo lenguaje que resulta un poco mas complejo.

Mi primer viaje

Mi primer viaje consiste en crear un pequeño plugin para Joomla que se encargará de convertir la fecha de publicación de cada artículo en una fecha estelar y luego mostrar dicha fecha al comienzo de cada artículo. Cada capítulo de la serie "Star Trek" empezaba con una voz en off del Capitán de la nave Enterprise que decía "Cuaderno de Bitácora, fecha estelar ....", esta fecha estelar estaba compuesta por 4 dígitos seguidos de un punto y un dígito mas.

Los 4 primeros dígitos

Para mi caso la fecha estelar dará comienzo por defecto en 1000 siendo opcional por parte del usuario seleccionar otra fecha. El usuario tendrá que indicar la fecha del calendario gregoriano que dará inicio a la fecha estelar, es decir que si decide iniciar el 24 de agosto de 2020 y la fecha estelar comienza en 1000.x, la fecha estelar el 24 de agosto de 2021 será 1365.x

El último dígito

El último dígito, es decir, el que viene después del punto lo obtendré de la hora de creación del artículo, concretamente del resultado de dividir las 24 horas del día en 10 fracciones de 2,4 horas cada una.

¿Como convertir la fecha de publicación en fecha estelar?

Antes de nada tengo que pensar en los datos que voy a necesitar para mi fecha estelar, que son:

  • Fecha de comienzo de la fecha estelar
  • Fecha gregoriana de inicio de mi fecha estelar
  • Fecha y hora de publicación del artículo

Los 2 primeros datos tendré que solicitarlos una sola vez y lo haré directamente dentro del plugin.

El tercer dato será variable para cada artículo y será solicitado desde el gestor de artículos.

La lógica de mi código

Una vez obtenidos estos datos y suponiendo que la fecha estelar comience en 1000 y el primer día de aplicación de dicha fecha es el 24 de agosto de 2020 el programa debe obtener la diferencia de días entre la publicación del artículo y el 24/08/2020, posteriormente deberá sumar esta diferencia a 1000 y así obtendremos los cuatro primeros dígitos.

Para el último dígito debemos hacer una regla de tres obteniendo el valor entero del resultado de multiplicar la hora por 10 y luego dividir por 24.

Habrá que hacer alguna corrección a lo largo de la programación, pero si todo sale como es debido, si yo publico un artículo el 12 de diciembre de 2020 a las 16:00 horas deberá aparecer en mi artículo:

Fecha estelar: 1110.7

Despedida

Pretendo instalar el plugin en mi web y hacerlo activo para esta nueva sección que he creado. Cuando lo haya terminado os lo haré saber en otro artículo en el que pretendo detallar el desarrollo del mismo, así como un enlace a la descarga del plugin.

Hasta entonces, como diría un Vulcaniano, Larga vida y prosperidad.