-
Notifications
You must be signed in to change notification settings - Fork 0
Backend
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.
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
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"
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.
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.
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
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.
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.
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.
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.
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.