89 lines
2.4 KiB
Org Mode
89 lines
2.4 KiB
Org Mode
|
#+TITLE: MDIS
|
||
|
#+SUBTITLE: Programación Web
|
||
|
#+AUTHOR: Amin Kasrou Aouam
|
||
|
#+DATE: 2020-06-18
|
||
|
#+PANDOC_OPTIONS: template:~/.pandoc/templates/eisvogel.latex
|
||
|
#+PANDOC_OPTIONS: listings:t
|
||
|
#+PANDOC_OPTIONS: toc:t
|
||
|
#+PANDOC_METADATA: lang=es
|
||
|
#+PANDOC_METADATA: titlepage:t
|
||
|
#+PANDOC_METADATA: listings-no-page-break:t
|
||
|
#+PANDOC_METADATA: toc-own-page:t
|
||
|
#+PANDOC_METADATA: table-use-row-colors:t
|
||
|
#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGR.png
|
||
|
* MDIS
|
||
|
|
||
|
MDIS es una sistema de información que permite la gestión de una consulta médica.
|
||
|
|
||
|
** Funcionalidades
|
||
|
|
||
|
- Gestión de Usuarios
|
||
|
- Gestión de Pacientes
|
||
|
- Gestión de Citas
|
||
|
- Gestión de Vacaciones
|
||
|
- Gestión de Informes
|
||
|
|
||
|
** Tecnologías
|
||
|
|
||
|
- PHP
|
||
|
- MySQL
|
||
|
- Javascript (Jquery)
|
||
|
- Nix
|
||
|
|
||
|
** Arquitectura
|
||
|
|
||
|
#+CAPTION: Arquitectura del sistema
|
||
|
[[./assets/F1.png]]
|
||
|
|
||
|
Es un sistema web clásico, con la característica de que las consultas a la base de datos se realizan mediante /PDO/, para evitar vulnerabilidades del tipo /inyección de SQL/.
|
||
|
|
||
|
Además de ésto, no hacemos ninguna consulta /SQL/ fuera del archivo database.php, lo que nos permite separar la lógica interna de la presentación.
|
||
|
|
||
|
** Despliegue
|
||
|
|
||
|
El desarrollo y despliegue del sistema se han hecho gracias a /Nix/, un gestor de paquetes que permite entornos de desarrollo y despliegue reproducibles.
|
||
|
|
||
|
A continuación mostramos el código que defino el entorno:
|
||
|
|
||
|
#+BEGIN_SRC nix
|
||
|
{ pkgs ? import <nixpkgs> { } }:
|
||
|
|
||
|
with pkgs;
|
||
|
|
||
|
mkShell {
|
||
|
# Definición de los paquetes
|
||
|
buildInputs = [ php74 php74Extensions.pdo_mysql mysql57 ];
|
||
|
|
||
|
# Comandos que se ejecutan al entrar en la nix-shell
|
||
|
shellHook = ''
|
||
|
pkill mysql
|
||
|
rm -rf .mysql && mkdir .mysql
|
||
|
|
||
|
mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --initialize-insecure
|
||
|
mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --skip-networking &
|
||
|
sleep 1
|
||
|
|
||
|
mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql
|
||
|
|
||
|
alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'
|
||
|
|
||
|
php -S localhost:8000
|
||
|
'';
|
||
|
}
|
||
|
#+END_SRC
|
||
|
|
||
|
Como podemos ver, /Nix/ nos permite:
|
||
|
|
||
|
- Instalar las dependencias necesarias, en el ámbito de una shell
|
||
|
- Ejecutar una base de datos temporal
|
||
|
- Inicializar la base de datos
|
||
|
- Lanzar el servidor web interno de PHP (se podría reemplazar por Apache/Nginx/...)
|
||
|
|
||
|
El único comando que tenemos que ejecutar es:
|
||
|
|
||
|
#+BEGIN_SRC shell
|
||
|
nix-shell
|
||
|
#+END_SRC
|
||
|
|
||
|
Y ya dispondremos de un sistema funcional, y accesible en la URL *localhost:8000*.
|