Saltar al contenido

El blog de Skatox Entradas

Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)

Hace unas semanas, elaborando un sistema interno para Oja.la tuve la libertad de escoger la plataforma a desarrollar y como este año me había decidido a realizar una aplicación web escrita 100% en Javascript empecé a investigar sobre como empezar con la plataforma  MEAN (Mongo, Express, Angular y NodeJS), para quienes no la conocen, es como LAMP (Linux, Apache, MySQL y PHP) pero orientada a usar JS tanto en frontend como en el backend. Investigando conseguí MEAN JS, un framework para desarrollar bajo esta plataforma.

Instalación

Al momento de iniciar el proyecto, no sabía utilizar Express ni Mongo, respecto a NodeJS sólo había hecho unos experimentos sencillos para ver como funcionaba, pero ya tenía experiencia en AngularJS y herramientas como: Yeoman, Grunt, Bower y NPM. Por ello, la instalación de este framework me pareció muy sencilla: clonar el repositorio y luego mediante bower instalar todas las dependencias automáticamente. Solo realicé algunos cambios para evitar actualizar versiones no estables de librerías (no me gusta actualizar  en pleno desarrollo para evitar incompatibilidades con funcionalidades ya escritas) y eliminar cosas innecesarias para el proyecto (como autenticación usando redes sociales).

Esqueleto inicial

La forma en como está estructurado me ha gustado mucho, la separación del backend y frontend se hace notable. Respecto a Express,  la estructura es muy sencilla, principalmente se divide en las carpetas: models (los objetos que permiten se comunican con la BD), controllers (donde se guarda la lógica del proceso), routes (maneja las rutas de las peticiones del servicio web), views (las vistas a mostrar desde el servidor, las cuales son diferentes de las vistas generadas en el frontend).

En la parte pública se trabaja como cualquier aplicación de Angular, se crean carpetas por cada módulo a desarrollar, por defecto vienen incluidas 2: auth y system. La primera es el módulo de autenticación que trae MEAN.io para permitir identificarse utilizando redes sociales y la segunda, donde va la aplicación como tal. También se incluyen los archivos para manejar las dependencias del proyecto usando npm, bower y se incluye un archivo de Grunt.

Este último, trae configuraciones para montar un servidor: de desarrollo, pruebas y producción. Cada uno de ellos tiene su propia  configuración, permitiéndote trabajar con diferentes bases de datos, bibliotecas comprimidas solo en la versión de producción y pruebas. Me pareció raro que no incluía la tarea grunt-ngmin, pues permite facilitar la compresión de archivos JS de AngularJS.

Logo de Mean.io
Logo de Mean.io, chévere que sea una chica ninja

Desarrollo

El desarrollo de la aplicación se me hizo fácil gracias a esta plantilla base, si nunca has desarrollado una aplicación bajo este modelo, te recomiendo iniciarte con MEAN.io. Lo único extraño es que generalmente en otras plataformas el código de backend es diferente al de frontend, permitiendo determinar fácilmente la ubicación del código que estas viendo, como aquí todo es JS a veces debes mirar la ruta para ver si estas en frontend o backend, además, probablemente llames a los modelos de Express y Angular con el mismo nombre, confundiendo a veces la apertura de archivos.

La desventajas que vi con esta plataforma fue: la poca documentación debido a su poco tiempo de disponibilidad e incompatibilidad para navegadores antiguos (Android 2.3, IE 8, entre otros), sé de la disminución de la cuota de mercado de estos navegadores, pero aún existen clientes/usuarios que lo utilizan y en el ambiente empresarial se les debe dar soporte. Y finalmente, no me gustó mucho trabajar con MongoDB, es muy chévere almacenar los objetos en JSON y la lectura se hace rápida, pero no sé si es por mi años utilizando BD relacionales pero la falta de restricciones de diseño o tanta libertad de almacenar lo que se desee allí, me parece que puede crear daños en la integridad de datos en el futuro. Tal vez porque estoy acostumbrado a manejar toda la validación de la data en la BD y no en la aplicación, me pareció inseguro que con MongoDB toda la validación se hace en la aplicación (si me equivoco, por favor me lo aclaran en los comentarios).

Recomendaciones

Te recomiendo utilizar Mean.io si deseas hacer una aplicación bajo esta plataforma en poco tiempo, realmente es sencilla de usar si tienes experiencia desarrollando aplicaciones web con Javascript. Probablemente la curva de aprendizaje para un novato sea fuerte pero vale la pena el esfuerzo. Si deseas algo mas sencillo o simple (sin sacrificar calidad), puedes probar Mean.JS un fork realizado por el autor de Mean.io para mejorar algunos problemas de diseño de la plataforma.

Actualización al 17/10/2019: El proyecto ha migrado a su fork MeanJS, realizado por el mismo autor del proyecto.

4 comentarios

Internet’s Own Boy: El documental sobre Aaron Swartz

Hace unos meses escribí sobre el aniversario de la muerte de Aaron Swartz, pero esta vez les escribo sobre Internet’s Own Boy un documental de su vida realizado por Brian Knappenberger (director de We are Legion donde se muestra la historia de grupo hacktivista Anonymous). Siempre consideré a Swartz uno de los genios de Internet y seguí su carrera, por eso, al enterarme de la existencia de este proyecto, estuve esperando con ansias su estreno que ocurrió esta semana.

Historia

El filme comienza desde que Aaron era un niño aprendiendo a leer, sus inicios en la informática y luego empieza a hacer un resumen sobre los distintos aportes que hizo durante su vida. Gran parte del documental se enfoca en explicar el objetivo de liberar los documentos que le ocasionaron problemas legales, cómo funciona el acceso a los  mismos en Estados Unidos, las consecuencias de ello y los cargos presentados por el MIT, cómo fue el juicio, entre otras cosas. Esta parte, la cual ocupa gran parte del documental, me ayudó a entender bien todo lo acontecido respecto a la problemática de liberar esos documentos y como le afectó emocionalmente, pues a pesar de haber leído el tema, escucharlo desde el punto de vista de expertos en el área (como su abogado) entiendes mejor las cosas. Luego, el documental muestra la etapa hacktivista de Swartz:  como logró organizar a la gente para protestar en contra de SOPA y la censura en la red.

Finalmente, viene un momento triste al escuchar de sus allegados los problemas que pudieron llevarlo al suicidio. Sin embargo, luego el ambiente se vuelve  alegre al ver los frutos de su trabajo, no les voy a contar el final pero me gustó ver como en tan poco tiempo se ve resultados favorables de liberar las publicaciones científicas.

Participantes

En el documental participan personas que lo conocieron y trabajaron con él, familiares, Tim Berners Lee el creador de la web, su abogado en el caso, parejas, amigos y otros. Escuchar a Tim expresarse sobre Aaron, realmente te ha pensar sobre su contribuciones, ademas que las palabras del abogado sobre el problema con el MIT, permite conocer muy bien los cargos presentados.

¿Cómo verlo?

Realmente deben ver este documental si:  son hackers, activistas de la libertad de la información, apoyan el conocimiento abierto y global, informáticos y usuarios avanzados de Internet. Aunque pueden donar al proyecto, pueden ver legalmente el documental completo a continuación, gracias a su liberación bajo licencia Creative Commons.

El Hijo de Internet: La Historia de Aaron Swartz - Subtítulos en Español

Luego de verlo, te darán ganas de hacer algo por Internet.

Nota: por sugerencia de Gery Escalier, les dejo los subtítulo en español para entender mejor el contenido del documental.

3 comentarios

Hackers: el sistema inmunológico de Internet

Hace unos días Keren Elazari, una reconocida experta en el área de seguridad informática, dictó una charla TED sobre como los hackers son el sistema inmunológico de Internet.

Me gustó mucho su manera de explicar ante el público como es la manera de pensar de un hacker, como el personaje de Angelina Jolie en la película Hackers la inspiró a entrar a este mundo, la manera como expresa el sentimiento de poder que se siente al descubrir una falla en un sistema ajeno y la responsabilidad de tener ese conocimiento, de como se puede utilizar para el bien o para el mal. En el caso del bien, siempre benefician a todos porque al reportarse la falla y encontrar una solución, se evita que en el futuro sea utilizada para el mal, mejorando la infraestructura digital y atacando cualquier amenaza, tal cual como lo hacen nuestro sistema inmunológico.

Te recomiendo ver esta ponencia si te gusta mucho la seguridad informatica, pero si no sabes nada de ella debes verla para que aprendas el verdadero significado de un hacker.

Recuerda…HACK THE PLANET!!

1 comentario

Pantallas táctiles en Linux con KDE

Desde que salió Windows 8, un sistema operativo cuya interfaz está diseñada para funcionar con pantallas táctiles, la mayoría de las portátiles disponibles en el mercado vienen con una pantalla táctil integrada expandiendo las posibilidades de interactuar con las aplicaciones.

Cuando investigué el soporte en Linux me encontré con el proyecto Touchegg, una aplicación que detecta algunos gestos táctiles y luego envía al programa comandos o simula el presionado de teclas (brindando compatibilidad a aplicaciones existentes) para realizar acciones.  Para usarlo simplemente se instala el programa y se debe ejecutar en el arranque, luego si deseas configurarlo para cambiar algunas acciones o añadir soporte a otros programas, puedes hacerlo a través de un simple archivo de configuración XML ubicado en ~/.config/touchegg, si prefieres la interfaz gráfica debes usar Touchegg-gce.

Interfaz de configuración de Touchegg
Interfaz de configuración de Touchegg

La mejor manera de ver el funcionamiento del programa es a través de un vídeo con una demostración de como se puede controlar KDE utilizando gestos táctiles gracias a touchegg:

Si tienes una pantalla táctil o posibilidad de comprar un equipo con una, te recomiendo hacerlo, al principio no parece necesario pero algunos clics se hacen mas rápido tocando la pantalla que moviendo el mouse,  ademas los gestos te permiten hacer cosas mas rápidas que el ratón, pero probablemente no tan rápido como presionar una combinación de teclas. ¿Quién dijo que Linux no soportaba pantallas táctiles? 😉

2 comentarios