Skip to content

Backend

Joaquin (Pato) Decima edited this page May 1, 2024 · 1 revision

Componere es una aplicación modular, por lo cual es dificil definir a fines estrictos donde termina y comienza cada una de las capas (font, back, y base de datos) sin embargo para fines prácticos definimos a la sección de vue como "front" aunque si se lleva la responsabilidad de procesar datos y no solo comunicarse con el Backend dado que mas allá de estos lineamentos se toman decisiones en base a la performance obtenida priorizando la usabilidad del usuario final.

Componentes dentro de Componere

Dentro de componere contenemos algunos componentes en python que forman parte del circulo mas importante de funcionalidades y ahora dedicaremos un tiempo a comprender las funcionalidades de los mimos

ComponereWindow.py

Este componente es una implementacion especifica de VSKWindow.py para Componere que permite la gestión de la ventana de QTWebView, las dimensiones y particularidades de la ventana. Así mismo es capaz de setear el objeto de binding que veremos mas adelante. Este objeto basicamente implementa una configuración especifica sobre ventanas QT que ya tienen una pre-configuración proporcionada por VSKWindow pensada para la alta performance en este tipo de aplicaciones "la web en el escritorio"

VSKBindings.py

Esta clase nos permite configurar los bindings entre el front y el backedn, al ser toda una misma aplicación no contamos con una APIRest sino que tenemos que comunicarnos por la misma aplicación (algo que podemos ver la sección de arquitectura). Esta clase no pretende ser mas que un agrupador de métodos para proveerlos al front. Su fin es ser un simple pasamanos de datos que permita realizar ejecuciones o pedir datos al sistema operativo. No debería tener mucha lógica interna.

Componentes externos

Estos componentes son dependencias del paquete a la hora de instalar, si bien son muchas las dependencias implícitas vamos a concentrarnos en los 2 grandes módulos que hacen a la aplicación. Por un lado python-libvasak biblioteca desarrollada explicitamente para este proyecto y es utilizada como dependencia para todas las aplicaciones gráficas de VasakOS. Y por otro lado vamos a hablar de una biblioteca de terceros que solo compilamos y distribuimos por necesidad dentro de los repositorios de VasakOS.

python-libvasak

Esta es una biblioteca genérica de VasakOS que permite normalizar la forma de acceder al sistema operativo, mantener contratos estrictos y realizar mejoras desde un solo lugar para todas las aplicaciones (de VasakOS o terceros que la utilicen).

Si bien la biblioteca es extremadamente amplia y contiene mucha informacion y funciones distintas solo nos basaremos en las utilizadas por Componere para evitar caer en explicaciones innecesarias que no aporten al proyecto

VSKWindow

Esta es tal vez la mas importante a nivel gráfico dado que ofrece una ventana QT con QTWebEngine y muchas pre-configuraciones necesarias para el optimo uso de esta ventana por parte de las aplicaciones del entorno de VasakOS.

VSKInfoHard

Un modulo simple que permite obtener informacion básica sobre el Sistema, en este caso lo utilizamos para conocer la memoria RAM del equipo con el fin de poder elegir la estrategia correcta para el uso de SWAP. Esta no esta marcada como estable por el momento sin embargo no debería cambiar su contrato mas allá de crecer.

VSKDisks

Un modulo que utiliza python-diskinfo permite obtener la informacion de los discos disponibles, no permite la gestión o modificación de los mismos. Es, tal vez, uno de los modulos mas significativos para componere dado que es importante conocer el disco sobre el cual vamos a instalar el sistema operativo.

VSKIconManager

Tal vez uno de los mas utilizado en todas las aplicaciones, este modulo nos permite pedirle al sistema operativo un icono en base a un nombre, esto es extremadamente útil para que las aplicaciones se acomoden al usuario, dado que muchos de los iconos utilizados dependen del pack de iconos seleccionado. Esto da un nivel mas alto de personalización y obviamente se encuentran cacheados para reducir el tiempo de consulta.

python-diskinfo

Sobre este modulo no vamos a poder explayarnos mucho dado que le corresponde a su creador, sin embargo, es utilizado en VSKDisks para poder acceder a la informacion. Nuestra "contribución" con el proyecto es la disponibilizacion en los repositorios de VasakOS mediante el siguiente PKGBUILD:

# Maintainer: Joaquin (Pato) Decima <[email protected]>

pkgname=python-diskinfo
_pkgname=diskinfo
pkgver=3.1.0
pkgrel=1
pkgdesc="Python Library for Web Apps in QtWebEngine for VasakOS"
url="https://github.com/petersulyok/$_pkgname"
depends=(
    'python'
    'python-pysmart'
)
makedepends=(
    'python-setuptools'
    'python-wheel'
)
license=('MIT')
arch=('x86_64')
md5sums=('5d9ac3888076cfa1409ddac6f3fd6d58')
source=("$url/archive/refs/tags/v$pkgver.tar.gz")

package() {
    cd "$_pkgname-$pkgver"
    python -m build
    python -m installer --destdir "$pkgdir" ./dist/$_pkgname-$pkgver-py3-none-any.whl
}

A diferencia de otros proyectos queremos reducir los entornos virtuales de python para evitar bibliotecas duplicadas u obsoletas.