Scripts y herramienta actualizada para mostrar mis tareas de BOINC en mi página web

Scripts y herramienta actualizada para mostrar mis tareas de BOINC en mi página web

Hola a todos,

En el fin de semana, me dediqué a mejorar la sección de las tareas BOINC en mi página web:

BOINC Statistics Website Update 1

Ahora, en vez de actualizar manualmente la página cuando tenga un equipo nuevo, he hecho que el archivo PHP se encargue de mantener la lista y las tareas al día. También, como este estilo no lo tenía en GitHub, lo reescribí y lo publiqué ahí. Previamente, el único archio que existía era el que se ve así:

BOINC Statistics Website Update 2

Debido a que ese muestra todas las tareas de todos los equipos en una sola tabla, escribí otro archivo en el que se muestren las tareas de los equipos en tablas separadas. Para esto, escribí algunas funciones y «loops» para que se obtenga toda la información almacenada relacionadas a las tareas. El resultado es el siguiente:

¿Se ve mejor, verdad?

Veamos el código:

Primero, separé la información de la base de datos y ahora la misma se encuentra en un archivo llamado config.php. También, estoy usando un objeto mysqli el cual es accesible en estos archivos. Debido a estos cambios, el archivo orignal tuvo que ser actualizado:

BOINC Statistics Website Update 5

Luego de realizar estos cambios, procedí a escribir el nuevo archivo llamado boinc_tasks_per_machine.php:

BOINC Statistics Website Update 6

Tenemos 3 funciones en este archivo:

BOINC Statistics Website Update 7

function printMachinesLinks($mysqli)

Esta función obtiene las máquina almacenadas en la base de datos MySQL y es usada para imprimir la lista, la cual al presionarla, te lleva a la tabla de esa máquina.

function getTasksFromMachines($mysqli)

Luego de obtener la lista de las máquinas, llamamos a esta función la cual simplemente llama la próxima funcion para cada máquina.

function getTasksPerMachine($mysqli, $machine)

Esta función es la encargada de generar las tablas de cada máquina y también imprime el encabezado.

Ahora, podemos imprimir nuestra lista y tabla de máquinas usando estas 2 simples líneas:

printMachinesLinks($mysqli); 
getTasksFromMachines($mysqli);

La primera línea llama la función printMachinesLinls($mysqli) para imprimir la lista de máquinas y la segunda línea es la que obtiene las tareas y genera la tabla.

El programa que obtiene las tareas y las almacena en la base de datos

BOINC Statistics Website Update 8

También hice algunos cambios al programa de escritorio que obtiene las tareas y las almacena en la base de datos. Primero, convertí la rutina TruncateTablesen una función, returnandoTrue si tuvo éxito limpiando la tabla y False si no:

BOINC Statistics Website Update 9

También añadí un elemento NotifyIcon el cual muestra un ícono en el «system tray» de la computadora cuando se minimiza la pantalla. Así puedes minimizar el programa y se mantendrá ejecutando y populando la base de datos con las tareas. Tambien, añadi el argumento -s el cual gracias a él, podemos añadir una tarea en el «Task Shedule» de la computadora para iniciar el programa cada vez que encendemos el equipo y comienze a actualizar la base de datos:

BOINC Statistics Website Update 10

Luego, hice que el botón de obtener las tareas también funcione para parar el proceso:

BOINC Statistics Website Update 11

Y por último, limpié el código un poco:

BOINC Statistics Website Update 12

¡Y eso es todo! Mejoré el programa y el script en varias formas. Ahora la página se actualiza dinámicamente debido a estos cambios. ¡No tengo que añadir las máquina manualmente! Sólo las añado en el programa y el archivo PHP se encarga del resto.

Debido a que los archivos PHP son muy simples, podemos integrarlos en la página sencillamente copiando y pegando el contenido del mismo. En este caso, he integrado el archivo PHP en mi página web que usa Drupal.

Archivos PHP:

Los archivos PHP se encuentran aquí.

Ejemplo de integración:

Puedes ver el archivo integrado en mi página web aquí.

Repositorio:

El código de la herramienta y los archivos PHP se encuentran en GitHub aquí.

¿Qué debería hacer próximamente? Dejame saber en los comentarios

Posts anteriores:

  1. Post introductorio
  2. Versión 1.1
  3. Versión 1.2