Navegando por
Etiqueta: código abierto

Colaborando en el proyecto exhale – Parte 2

Colaborando en el proyecto exhale – Parte 2

Hola a todos,

Ayer, comencé a trabajar en mi segunda colaboración para el proyecto exhale, el cual convierte archivos al codec xHE-AAC USAC. Esta vez, trabajé en añadir una opción para mostrar la versión del programa en la consola.

exhale-V-argument-main-software

La imagen de arriba muestra la salida del programa al no pasar ningún argument o al pasar un argumento incorrecto.

No existía una opción que imprima únicamente la versión. Idealmente, quería una manera de que el programa imprima la versión como por ejemplo exhale version 1.0.3 ..... para poder capturarla así como hago con otras herramientas como Opusenc y Flac. Debido a esto, comencé a trabajar en añadir esta funcionalidad.

El programa verifica si solo hay un argumento (en realidad hay 2 argumentos: el ejecutable del programa y el segundo que sería la de imprimir la versión). Luego, verifica si el argumento pasado es -v o -V. Si esto es cierto, imprimimos la versión del programa al usuario:

Este es el resultado:

La salida es muy simple. Gracias a esto, puedo capturarla y pasarla a mi herramienta en desarrollo exchale GUI:

Este «Merge Request» fue aprobado y fusionado al código fuente, y está disponible para el uso de todo el mundo. Sobre mi interfaz gráfica, pronto la publicaré.

Haz click aquí para ver el «Merge Request» en GitLab.

Mi primera contribución en GitLab: Convertidor exhale

Mi primera contribución en GitLab: Convertidor exhale

Hola a todos,

Ayer, estuve colaborando con el proyecto exhale para añadir compatibilidad para compilarlo usando MinGW en Windows.

Este proyecto es un convertidor de audio de código abierto que nos permite convertir archivos de audio WAV al codec xHE-AAC bajo el contenedor M4A.

Originalmente, el proyecto compila en Windows usando Visual Studio, pero al intentar compilarlo usando MSYS2/MinGW, nos daba problemas, específicamente esto:

H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp: In function 'int main(int, char**)':
H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp:246:85: error: '_SH_DENYWR' was not declared in this scope
  246 |     if (_sopen_s (&inFileHandle, inFileName, _O_RDONLY | _O_SEQUENTIAL | _O_BINARY, _SH_DENYWR, _S_IREAD) != 0)
      |                                                                                     ^~~~~~~~~~
H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp:320:100: error: '_SH_DENYRD' was not declared in this scope
  320 |     if (_sopen_s (&outFileHandle, outFileName, i | _O_SEQUENTIAL | _O_CREAT | _O_EXCL | _O_BINARY, _SH_DENYRD, _S_IWRITE) != 0)
      |                                                                                                    ^~~~~~~~~~
make[1]: *** [../makefile.base:112: ../../build/exhaleApp.d.o] Error 1
make[1]: Leaving directory '/build/exhale-git/src/app'
make: *** [makefile:18: all] Error 2

También nos daba problemas por una definición de fprintf_s. Unos cambios tuvieron que hacerse en el código.

Para resolver el problema de que _SH_DENYRD no estaba declarado, tuvimos que añadir el header share.h:

Para resolver el problema de fprintf_s, cambié el bloque #ifndef a #if !defined para verificar adicionalmente si estamos compilando bajo MinGW. Si esto es cierto, no declaramos esta variable que apunta a la función fprintf:

Luego de realizar estos cambios, el programa compiló exitosamente.

Lo proximo que hice fue hacer unos cambios al archivo makefile.base para que el proyecto Media Autobuild Suite pasara las variables CXXFLAGS y LDFLAGS a exhale:

Estos cambios fueron aprobados y fusionados al proyecto.

Mi inspiración para añadir esta herramienta al Media Autobuild Suite fue debido a que un usuario pidió que esta herramienta fuese añadido. Trabajé para añadirlo y abrí un «Pull Request», el cual refiné aplicando unas recomendaciones.

Este «Pull Request» fue fusionado al suite y ahora todos los usuarios pueden compilar y usar esta herramienta.

Contribuciones

¡Nuevas actualizaciones! (9 de noviembre de 2019)

¡Nuevas actualizaciones! (9 de noviembre de 2019)

Hola a todos,

Hoy, he publicado actualizaciones para los siguientes programas:

  • Audio MD5 Checker v0.2
  • Google Drive Uploader & Explorer Tool v1.12.1
  • Opus GUI v1.15

Audio MD5 Checker v0.2

Audio MD5 Checker v0.2
Audio MD5 Checker v0.2

Esta nueva versión permite guardar la lista de resultados como un archivo CSV. También, verificará si ffmpeg existe antes de abrir la ventana.

Puedes descargar esta nueva versión haciendo click aquí.

Google Drive Uploader & Explorer Tool

Google Drive Uploader & Explorer Tool v1.12.1 (Spanish)
Google Drive Uploader & Explorer Tool v1.12.1 (Spanish)

Esta nueva versión actualiza los APIs de Google a sus más recientes versiones. También, añade una traducción que hacía falta.

Puedes descargar esta nueva versión haciendo click aquí.

Opus GUI v1.15

Opus GUI v1.15
Opus GUI v1.15

Esta nueva versión actualiza los APIs de Google a sus más recientes versiones.

Puedes descargar esta nueva versión haciendo click aquí.

¡Espero que disfruten estas nuevas actualizaciones!

¡Google Drive Uploader & Explorer Tool v1.12 disponible ya!

¡Google Drive Uploader & Explorer Tool v1.12 disponible ya!

Hola a todos,

En el día de hoy, he publicado la versión 1.12 de Google Drive Uploader & Explorer Tool:

Google Drive Uploader & Explorer v1.12
Google Drive Uploader & Explorer v1.12

Esta versión corrige un problema de iniciación, muestra un mensaje si el archivo client_secret.json o credentials.json no se encuentra, y actualiza los APIs de Google a sus versiones más recientes.

Puedes descargar esta nueva versión en GitHub oprimiendo aquí.

¡Disfruten!

Google Drive Uploader & Explorer Tool v1.11 ya está disponible

Google Drive Uploader & Explorer Tool v1.11 ya está disponible

Hola a todos,

Hoy, he publicado la versión 1.11 de Google Drive Uploader & Explorer Tool:

Google Drive Uploader & Explorer Tool v1.11
Google Drive Uploader & Explorer Tool v1.11

Esta versión mejora la experiencia de navegación, pues el código ha sido reescrito. También, los APIs de Google han sido actualizados a sus últimas versiones.

A continuación está la lista de cambios de esta versión:

  • Parte del código fue reescrito para mejorar el rendimiento y estabilidad del programa.
  • Los APIs de Google han sido actualizados.
  • El botón «Mover» es desactivado cuando se está moviendo un archivo o carpeta.
  • Ahora utiliza el .NET Framework 4.8.

Puedes descargar esta nueva versión en GitHub oprimiendo aquí.

¡Disfruten!

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
¡Google Drive Uploader & Explorer Tool v1.8.5 disponible ya!

¡Google Drive Uploader & Explorer Tool v1.8.5 disponible ya!

Saludos a todos,

Ayer, saqué la versión 1.8.5 de mi herramienta Google Drive Uploader & Explorer Tool v1.8.5. Esta versión añade 2 nuevas funciones:

Número de archivos añadido

Esta versión añade un contador en el explorador de archivos el cual indica cuantos archivos hay en la carpeta en la que estás navegando:

Google Drive Upload Tool v1.8.4 - 1

Por ejemplo, en la imagen anterior pueden ver que tengo 28 archivos en esa carpeta, que son libros de programación que subí a mi cuenta de Google Drive para leerlos donde quiera que vaya.

Tener este número es importante porque se hace más facil comparar los archivos que uno tiene local y los que tiene en la nube.

Escoger el formato del archivo de checksum

La otra función es la habilidad de escoger el formato para guardar el archivo de checksum. Me explico, Windows y Linux guardan archivos de textos de distintas maneras. Este archivo siempre ha sido guardado para Windows, pero en esta nueva versión, puedes escoger guardar el archivo para el sistema Mac y Linux.

Más detalladamente, Windows guarda los archivos y termina las líneas de textos con el llamado CrLf. Linux termina las líneas de textos con Lf y Mac las termina con Cr. Si has habierto un archivo de texto en Windows en Notepad y has visto que todo sale en una línea, esto se debe a que Windows no entiende (hasta ahora, la última versión Insider arregla esto) las líneas que terminan en Lf y no continúa el texto en otra línea.

Debido a esto, si pasabas un archivo de checksum de Windows a Linux y usabas la herramienta llamada md5sum para verificar tus archivos, el programa fallaría o daría un error de formato. Ahora, con esta nueva opción, esto se arregla. Sólo tienes que especificar que quieres guardar el archivo para Linux.

Google Drive Upload Tool v1.8.4 - 2

Otro cambio es que los archivos de Checksums se guardarán en UTF-8 sin BOM (Byte Order Mark), haciendo el archivo de texto más compatible con Linux y md5sum.

La versión 1.8.5 también actualiza las APIs de Google a su última versión.

Los pasados días también saqué la versión 1.8.4, el cual te permite ver tus archivos y carpetas en la interfaz web de Google Drive haciendo doble click en un archivo o carpeta, respectivamente.

Descargas:

Puedes descargar esta nueva versión en el repositorio en GitHub aquí.

El código fuente también se encuentra aquí.

Léeme actualizado

El archivo Leeme.md ha sido actualizado para ofrecer detalles de cómo abrir un archivo o carpeta en la interfaz de Google Drive al igual que para proveer información para cambiar el formato del archivo del checksum.