Memoria de Estadía TSU en TIC
Memoria de Estadía TSU en TIC
Memoria de Estadía TSU en TIC
Para poder realizar esta memoria de estadía de la mejor manera posible fue
necesario del apoyo de algunas personas a las cuales quiero agradecer:
A mis padres que han sido un apoyo moral y económico para lograr este fin. Gracias
por su paciencia y amor.
A todos y cada uno de mis profesores por compartir sus conocimientos, consejos y
que en todo momento me enseñaron a crecer como persona y como profesionista.
Sin olvidarme, agradezco a todos y cada una de las personas quienes de alguna
manera se involucraron para culminar mis estudios, a mis compañeros y amigos,
quienes me brindaron cariño, comprensión, apoyo y sobre todo su sincera y valiosa
amistad.
Índice
Agradecimientos ......................................................................................................3
2.3 Visión............................................................................................................15
3.9 Bitbucket.......................................................................................................21
3.13 Slack...........................................................................................................22
4.2 Planeación....................................................................................................25
Para realizar este sistema, se llevó a cabo una planeación bajo la metodología ágil
Scrum, que es muy útil para proyectos que tienen un tiempo de desarrollo
demasiado corto. Se realizaron reuniones diarias asi como historias de usuarios e
springs semanarios.
Se encontraron diferentes problemas entre los cuales fueron los multiples proyectos
elaborados durante la estadia, además del corto tiempo establecido para la
elaboración del proyecto interno asignado.
Al término del proyecto los resultados que se esperan por parte de la empresa son
la optimización de los tiempos al momento de realizar tareas administrativas tales
como cotizaciones de nuevos proyectos y evaluaciones a empleados.
1.3 Introducción
Cotizar un proyecto es fundamental para toda empresa de software, se necesita
varias herramientas para recaudar información acerca del nuevo proyecto a
desarrollar, por esa razón Garage coders opto por la implementación de tecnología
de vanguardia para el almacenamiento y control de sus futuros proyectos.
En el capítulo I se muestra la visión general del proyecto una idea clara y precisa
del trabajo que se propone, asi como una recopilacion de cada uno de los capítulos.
En el capítulo III se señala cada uno de las definiciones de los recursos. En la cual
el conjunto de recursos es todo lo que se necesita para la realización de lo que se
pretende.
2.2 Misión
Brindar una experiencia de primer mundo a nuestros socios, clientes y usuarios
finales a través del desarrollo de herramientas innovadoras que enriquezcan su vida
diaria.
2.3 Visión
Posicionarnos como la 1er opción de nuestros clientes, generando productos de alta
calidad que impacten positivamente la vida de millones de personas.
2.4 Políticas
Algunas de las politicas que se acabo dentro de la empresa son las siguientes
• Dirección general
• Recursos humanos
• Marketing
• Desarrollo móvil
• Desarrollo cloud
2.7 Descripción del área de realización de estadia
El área de desarrollo cloud se encarga tanto del desarrollo de aplicaciones web
como del mantenimiento del servidor de la empresa.
Personal:
Funciones:
3.2 Javascript
JavaScript, es uno de los más potentes e importantes lenguajes de programación
en la actualidad, por tres enfoques claros: es útil, práctico y está disponible en
cualquier navegador web.
3.3 Node js
Node.js es una forma de ejecutar JavaScript en el servidor, además de mucho más.
Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node
ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su
navegador Chrome. Aprovechando el motor V8 permite a Node proporciona un
entorno de ejecución del lado del servidor que compila y ejecuta javascript a
velocidades increíbles.
3.5 Angular
Es un framework para aplicaciones web desarrollado en TypeScript, de código
abierto, mantenido por Google, que se utiliza para crear y mantener aplicaciones
web de una sola página(SPA). Su objetivo es aumentar las aplicaciones basadas
en navegador con capacidad de Modelo Vista Controlador (MVC), en un esfuerzo
para hacer que el desarrollo y las pruebas sean más fáciles.
3.7 Redux
Redux es como una base de datos, es en un almacén para el estado de la aplicación.
Pero un almacén que gestiona sus cambios de manera predictiva. Combina dos
patrones: Action para el envío de comandos para actualizar el estado del almacén;
y Observable para la subscripción a cambios en el estado del almacén. Desacopla
los emisores de acciones de los receptores de cambios en los datos.
Para lograrlo tendremos que cumplir una serie de principios y utilizar unos
elementos predefinidos. Esto introduce capas de abstracción y burocracia que
inicialmente complican el desarrollo. Pero a medio plazo harán que mantener la
aplicación sea mucho más sencillo y seguro.
3.8 Git
Git, es un software de control de versiones diseñado por Linus Torvalds. La pregunta
es ¿qué es control de versiones? Pues bien, se define como control de versiones a
la gestión de los diversos cambios que se realizan sobre los elementos de algún
producto o una configuración del mismo es decir a la gestión de los diversos
cambios que se realizan sobre los elementos de algún producto o una configuración,
y para los que aún no les queda claro del todo, control de versiones es lo que se
hace al momento de estar desarrollando un software o una página web.
Exactamente es eso que haces cuando subes y actualizas tu código en la nube, o
le añades alguna parte o simplemente le editas cosas que no funcionan como
deberían o al menos no como tú esperarías.
3.9 Bitbucket
Bitbucket es un sitio de alojamiento para los sistemas de control de versiones
distribuidos (DVCS) Git y Mercurial. La oferta de servicios incluye un gestor de
incidencias y wiki de manera gratuita. Bitbucket ofrece planes comerciales y
gratuitos. Se ofrece cuentas gratuitas con un número ilimitado de repositorios
privados (que puede tener hasta cinco usuarios en el caso de cuentas gratuitas)
desde septiembre de 2010.
3.10 Mysql
MySQL es una de las base de datos más importantes actualmente en el mercado.
Se puede definir a MySQL, como un gestor de base de datos relacional, multiusario
y multihilo. Usada para mover grandes cantidades de información, muchos
proyectos en internet como Facebook o Twitter nacieron con este SG
3.11 Pm2
PM2 o Process Manager 2, es un administrador de procesos Node.js de producción
de código abierto que ayuda a los desarrolladores y Devops a administrar las
aplicaciones Node.js en el entorno de producción. En comparación con otros
administradores de procesos como Supervisord, Forever, Systemd , algunas
características clave de PM2 son el equilibrio automático de carga de la aplicación,
la configuración declarativa de la aplicación, el sistema de implementación y el
monitoreo.
3.12 Trello
Trello es un software de administración de proyectos con interfaz web y con cliente
para iOS y android para organizar proyectos.
3.13 Slack
Slack es una herramienta de colaboración en la que tu equipo y tú podéis trabajar
para llevar a cabo vuestros proyectos. Slack te permite abarcar todos los detalles,
desde los primeros pasos de proyectos hasta conversaciones sobre presupuestos.
3.14 Zoom
Zoom.us es una de las plataformas más destacadas de video conferencias y
servicios de conferencias web, más de 250.000 empresas en el mundo la utilizan.
3.15 Invision
InVision es un programa para prototipar apps muy parecido a Marvel, aunque más
potente en algunos aspectos que comentaremos en esta entrada. Es parecido a
Marvel en el sentido que Marvel parte de la idea que el usuario suba sus pantallas
ya diseñadas y a partir de ahí poder añadirle diferentes interactividades mediante
gestures y diferentes transiciones entre pantallas. Así, el funcionamiento básico de
InVision (y Marvel) es que el usuario diseñe previamente unas pantallas con otro
programa para hacer prototipos, luego suba esos prototipos a la plataforma y
empiece a añadirle interactividades de manera que esas pantallas queden
entrelazadas entre sí.
CAPÍTULO IV
METODOLOGÍA
4.1 Descripción de actividades
Para tener un mejor control de las horas que lleva desarrollar cada modulo se
represento mediante un WBS (Work Breakdown Structure) el tiempo aproximado de
cada funcionalidad, con la ayuda del Ing. Carlos Benjamin se estimó el siguiente
tiempo
Ilustración 2 WBS
Se puede apreciar que es un panel sencillo con una barra lateral y una cabecera
La parte del análisis para definir las relaciones y entidades fue realizada con la
ayuda del Ing. Gustavo Hernandez.
A continuación se dio inicio con la creacion del servicio rest el cual alimenta de
información a ambas aplicaciones (panel de administrador y a la aplicación de
preguntas).
La tecnología que se utilizó para el servicio rest es node js, una de las tecnologías
con mas alta demanda en el mercado laboral por su velocidad y facilidad de uso.
Ya iniciado el proyecto se crea su archivo de configuracion inicial como se muestra
a continuación
Se crea una autheticación basica, por lo cual las credenciales son encriptadas
Se procede con la segunda actividad, para ello se va a explicar como esta
estructurado el archivo que se utiliza para crear las preguntas, es muy nesario que
se utilize esta plantilla, ya que si no se llegara a utilizar no tendria un correcto
funcionamiento.
Cada pregunta puede tener varias repuestas y con ellas valores, para separar todas
las respuetas disponibles se utiliza un pipe ” | ” y al mismo modo para dar valor a
cada respuesta.
El siguente código muestra como se puede leer el archivo de excel, para ello se
utiliza una librería llamada xlsx js.
Aquí se muestra el método que se desarrollo para la lectura del archivo
el código anterior da una estructura un poco complicado de leer, asi que con la
ayuda de una función se desacopla toda la información obtenida y se le damos un
formato fácil de utilizar.
Para subir el archivo excel en el servidor se implementa una nuevo método que se
encarga de renombrar el archivo anteriormente subido y de validar que no exista un
archivo y batería con el mismo nombre para no provocar un error en el sistema al
momento de consultar el archivo de excel y desaclopar todas las preguntas que
contiene. Al mismo tiempo validamos que el fichero subido sea un documento tipo
xlsx y tambien que el libro de excel contenga una hoja con el nombre de preguntas,
dicho esto dado que no lo tenga, no se podrá leer el archivo y esto provocaria un
error al mostrar las preguntas al usuario.
Se muestra el siguiente código que se utilzo para subir un fichero
Como ya habiamos mencionado hicimos solo un borrado logico de las baterias para
ello se aplico la siguiente consulta.
Ahora se va a realizar una consulta para obtener todas las imágenes subidas al
servidor y asi el administrador pueda tomar una serie de opciones y decida si
borrarlas o ver el nombre para poder utilizarla en la plantilla de creación de una
batería y de la misma manera se consulta los logos disponibles para poder dar uso
al momento de configurar una batería.
Tambien se comprueba que no exista una imagen con el mismo nombre, para que
no cause conflicto al momento de enviar la imagen.
Por lo consiguiente se debe de enviar la imagen o logo que el usuario requiera para
mostrarlas en la pregunta o en listado de imágenes a través de un método propio
de node js y una función implementada para mandar ficheros de forma segura
Ilustración 26 Código para enviar un archivo
Como se puede observar en la imagen anterior es muy sencillo crear los estilos,
ahora lo se aplicará depediendo si sea una fila o la cabecera
Una vez concluida la aplicación de servicio rest, se puede pasar a crear el proyecto
del administrador
Ilustración 34 Estructura del proyecto administrador
Y ahora toca consumir los servicios ya creados anteriormente e integrar redux para
el manejo de los estados de la aplicación.
Ahora se crea un fichero ts que servira como interceptor del token y de los errores
que vayan ocurriendo en el servio rest para tener un buen control.
Una vez realizado la parte del login se pasa a la siguiente actividad que es la
configuración de una nueva batería, la cual fue la actividad mas complicada en
cuanto a la programacion del diseño. Para configurar una batería cuenta de tres
pasos los cuales son personalización, configuración, resumen. Comenzemos con el
primer paso personalización, lo principal seria pedir la plantilla de la batería la cual
contiene las preguntas, podrá elegir entre varios temas los cuales ya fueron creados
en la parte de la aplicación de preguntas y por último tendra que seleccionar el logo
que previamente se haya subido al servidor, una vez completado este paso podrá
pasar satisfactoriamente al siguiente paso.
La siguiente actividad es consumir el servicio rest para obtener todas las baterias
guardadas, para ello se diseña la pantalla con css, html y posteriormente crear un
servicio la cual se comunique con la api.
Ahora lo que se tiene que hacer es en listar las imágenes disponibles, el proceso es
muy similar como cuando se consultas las baterias, entonces para evitar ser
redundante se salta toda la parte de la explicacion en el código y únicamente se
mostrará como se ve en el diseño para el administrador.
Por último en la parte del administrador se implementaron gráficas para mostrar las
estadísticas que se realizaron en el servicio rest, para el uso de las gráficas se utilizó
la librería de ng2Charts, la cual tiene una amplia variedad de gráficas y se integra
muy bien con angular, a continuacion se va a mostrar como fue el proceso de
integracion.
Como en todos los demas, se crea un servicio para poder obtener la información
que se necesita en las gráficas.
Esa fue la última actividad en la parte del administrador, entonces lo último que
queda por hacer es verificar que todo los cambios esten actualizados en el
repositorio que se asignó para el proyecto.
Y ahora con la ayuda de formbuilder se crea los formularios con los campos
Uno de los requirimientos propuestos por el del director general es que las
preguntas se cambien con tan solo presionar la tecla de flecha derecha o izquierda,
para lo antes mencionado se implementa eventos de angular para poder dar esa
interactividad.
La primera es de tipo opción múltiple con texto, se puede seleccionar solo una
opción.
El segundo tipo de pregunta es de opción múltiple con imágenes, las cuales esas
imágenes se encuentran en la aplicación del administrador.
Y por último es la pregunta de opción abierta pero con campo mas largo para el
usuario puede escribir una respuesta larga
Si No
Pero no todo fue problemático, las enseñanzas por parte de mis profesores y mi
aprendizaje autodidacta me ayudaron a desarrollar varios proyectos durante mi
estadía.
5.3 Conclusiones
La correcta interpretación de los requerimientos, el uso de las tecnologías
empleadas y la comunicación con el equipo de trabajo, permitieron dar solución a la
problemática que existía en garage coders,