Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TECNOLOGÍAS WEB QUE SE IMPLEMENTARON
Node.js
Node.js es un entorno de ejecución para JavaScript construido con el motor de JavaScript
V8 de Chrome. Este entorno permite correr scripts y programas hechos en JavaScript
desde el servidor. Para el proyecto se utilizó para la manipulación de las tablas,
convirtiendo los archivos CSV a JSON a través de la biblioteca D3.[3]
ReactJS
Es una librería de código abierto escrita en JavaScript que permite escribir interfaces
gráficas en la web, React puede ser usada como base para el desarrollo de apliaciones
onesinglepage, tanto web como en móviles. [1]
ReactJS presenta el concepto del virtual DOM que brinda mayor rendimiento en
aplicaciones grandes que contienen muchos elementos y actualizaciones constantes de
sus datos.
Redux
Es una biblioteca de código abierto escrita en JavaScript para manejar el estado de la
aplicación. Es más comúnmente usada con bibliotecas como Reactjs o Angular para crear
interfaces gráficas. Inspirada en la arquitectura Flux de Facebook, fue creada por Dan
Abramov y Andrew Clark. [2]
Redux es una biblioteca pequeña con una simple y limitada API diseñada para ser un
contenedor predecible del estado de la aplicación. Funciona de manera similar a una
función reductora, un concepto de programación funcional.
Más que una biblioteca Redux es una arquitectura que permite conocer y manipular de
manera predecible el flujo de los datos de la aplicación, desde que es obtenida a través
de la base de datos, hasta que es presentada en la web.
D3
D3.js es una biblioteca de JavaScript para manipular documentos basados en datos. D3
ayuda a visualizar información usando HTML, SVG y CSS. Hace énfasis en los
estándares web, brindando todas las capacidades de los navegadores modernos sin
atarse a un framework propietario específico, combinando componentes de visualización
poderosos, enfoque de manejo de datos con la manipulación del DOM. Para el proyecto
se utilizaron las funciones para convertir CSV a JSON de esta biblioteca. [4]
Three.js (WebGL)
Three.js es una biblioteca JavaScript multiplataforma y una Interfaz de programación de
aplicaciones (API) usada para crear y visualizar Gráficos de computadora 3D animados en
un navegador web. Three.js permite la creación de animaciones 3D aceleradas de
Graphical Processing Unit (GPU) utilizando el lenguaje JavaScript como parte de un sitio
web sin depender de complementos de navegador propietarios. Esto es posible gracias a
la llegada de WebGL. Para el desarrollo del proyecto se usó esta biblioteca para la
visualización y simulación del espacio al cual se le va a hacer el proceso de enfriamiento y
acondicionamiento. [5]
Flujo del programa
El software se puede dividir en tres capas o estructuras principales: Datos, funciones
matemáticas de cálculo, e interfaz gráfica. El diagrama de componentes del software se
encuentra en la imagen 1 .
Imagen 1. Diagrama del diseño de la aplicación.
Los datos son obtenidos de las diferentes fuentes bibliográficas y son almacenados en
hojas de cálculo de google docs o Google Spreadsheets, estas se encuentran
almacenadas en la nube y disponibles para cuando se quiera consultar o modificar la
información. Las razones para la elección de este medio de almacenamiento de base de
datos, fue la fácil implementación, la baja curva de aprendizaje y el hecho que no se le
agregaría al programa una capa de complejidad innecesaria que sí tendría un
administrador de base de datos (DBA) como MySQL, SQL Server u otros que se
encuentran en el mercado. Adicionalmente los datos de las tablas son estándares y el
programa no los va a modificar, así que no se necesita ese tipo de persistencia a través
de DBAs.
Los datos de las tablas son exportados al formato simple CSV y luego convertidos a
formato JSON (JavaScript Object Notation) los cuales son fácilmente leídos por el
software que está escrito en JavaScript.
Los datos de las tablas son leídos y almacenados en la memoria junto con la
configuración inicial de la aplicación, esta información inicia, es manejada por Redux y es
llamada estado. Las tablas se tendrán disponibles para los cálculos de cargas, y el estado
será cambiante, dependiendo de la configuración que el usuario desee.
Se denomina estado, porque constantemente cambia y es importante poder controlar el
flujo de los datos con precisión para no tener resultados indeseables o errores en la
aplicación. Para el manejo del estado es imperativo mantener tres principios básicos en la
arquitectura, estos son:
Única fuente de verdad
El estado de toda la aplicación se almacena en un árbol de objetos dentro de un único
almacén, esto hace fácil la creación de la aplicación, simplifica el proceso de corrección
de errores e inspección; también permite que los datos de la app persistan mientras de
implementa el código, aumentando el ciclo de desarrollo.
El estado es de sólo lectura
La única forma de cambiar el estado es emitiendo una acción, que es un objeto que
describe qué ocurre. Esto asegura que ni las acciones del usuario ni las peticiones a las
bases de datos escriban directamente al estado. En vez de eso, estos eventos expresan
una intención de transformar el estado. Debido a que todos los cambios están
centralizados y pasan uno por uno en estricto orden, no hay race conditions a tener en
cuenta. Como las acciones son simples objetos planos, ellos pueden ser registrados,
serializados y almacenados.
Los cambios son hechos con funciones puras
Para especificar cómo el árbol de estado es transformado por acciones, se escriben
funciones reductoras puras. Las funciones reductoras toman el estado anterior y una
acción, y retornan el estado siguiente. Se retorna un nuevo objeto estado, en vez de mutar
el estado previo.
Imagen 2. Pantalla principal de la interfaz.
Imagen 3. Formularios para agregar propiedades de puertas y ventanas.
Fuentes
1. https://reactjs.org/docs/gettingstarted.html
2. https://es.redux.js.org/
3. https://nodejs.org/es/about/
4. https://d3js.org/
5. https://threejs.org/docs/index.html#manual/en/introduction/Creatingascene
6. https://developer.mozilla.org/es/docs/Learn/JavaScript/First_steps/Qu%C3%A9_es_JavaSc
ript