Frameworks de JavaScript en el lado del cliente en 2017

En un post anterior ya hablamos sobre la evolución del desarrollo web del lado del cliente. Tal como anunciamos entonces, hoy es el turno de los frameworks del lado del cliente. Los frameworks no son nuevos en el desarrollo de aplicaciones de gran envergadura. De hecho, la mayoría de lenguajes consolidados tienen una gran variedad de frameworks. Por ejemplo en el mundo Java son ampliamente conocidos Java Server Faces (JSF), Struts o Spring; en PHP encontramos Laravel, Yii o Symfony. Las principales ventajas que aportan los frameworks son las siguientes: Desarrollo rápido. Crear un proyecto desde cero suele conllevar un elevado coste en tiempo. Por eso, los frameworks proporcionan la estructura del proyecto y un conjunto de bibliotecas preconfiguradas que ahorran tiempo en el comienzo de los nuevos proyectos. Muchas tareas son delegadas a los frameworks permitiendo a los desarrolladores centrarse exclusivamente en las funcionalidades de su software. Incorporación/Rotación de nuevos miembros a los equipos de desarrollo. Uno de los mayores problemas en el desarrollo de software es la rotación de miembros en los equipos de desarrollo, puesto que la incorporación de un nuevo miembro conlleva un coste en aprender la arquitectura del proyecto. Esto es minimizado utilizando un framework, ya que éste obliga a adaptarse a una arquitectura concreta, de modo que cualquier persona que conozca el framework podrá incorporarse rápidamente al desarrollo de cualquier aplicación basada en ella (puesto que conoce la manera de trabajar del framework), minimizando el coste para la empresa. Seguridad/Rendimiento. Los frameworks suelen ser creados y mantenidos por equipos de desarrollo diferentes y externos a nuestra organización. Esto permite que esta organización esté...

Evolución del desarrollo web del lado del cliente

En los últimos años ha habido una gran demanda de desarrolladores de software debido a la inclusión de los sistemas informáticos en prácticamente todo los aspectos del día a día de las personas. A las clásicas demandas de tecnologías tales como C, C++, JAVA, .NET, SQL han surgido un nuevo elenco de nuevas tecnologías tales como JavaScript, ECMAScript, nodeJS, AngularJS, React, Angular 2.0+, VueJS, ember, gulp, webpack, TDD, BDD, CI, CD, etc. El nuevo conjunto de tecnologías que se solicitan como puestos de trabajo pertenecen al desarrollo de aplicaciones web. Una de las mayores críticas de los profesionales del sector (Ingenieros y desarrolladores en general) es el rápido cambio de tecnologías que sufre el desarrollo Web en el lado del cliente (o front-end). Historia del lenguaje de programación JavaScript Antes de poder afrontar los últimos avances en el desarrollo de aplicaciones Web hay que comprender por qué y cómo se ha llegado a esta situación, y para ello se va a presentar la evolución que ha sufrido el desarrollo del lado del cliente hasta llegar a nuestros días (Julio 2017). Hay que retomarse a los orígenes de la Web cuando existían principalmente dos navegadores Web populares para los usuarios: Internet Explorer y Netscape. Internet Explorer hasta hace poco ha sido el navegador por excelencia de la compañía Microsoft y es sobradamente conocido por la mayoría de los lectores, hoy en día ha sido sustituido por Microsoft Edge. Menos conocido es el navegador Netscape, el cual fue el primero que plantó cara al dominio de Internet Explorer y del cual deriva hoy en día Mozilla Firefox. Para el desarrollo de scripts...

Más frecuencias para las comunicaciones móviles 5G

Las mejoras tecnológicas en el ámbito de las comunicaciones inalámbricas acaecidas a lo largo de las dos últimas décadas –y en particular durante los últimos diez años- han tenido una enorme repercusión en la sociedad actual. El acceso a precios razonables a conexiones inalámbricas de banda ancha, tanto mediante las redes inalámbricas de área local –comúnmente conocidas como WiFi– como mediante las redes de comunicaciones móviles/celulares –3G y 4G-, ha creado las condiciones necesarias para una auténtica revolución basada en la generación/consumo ingente de datos. Así, conceptos como Big Data, proveedores Over-the-Top (OTT) o Internet of Things (IoT), entre muchos otros, no pueden ser entendidos sin tener en cuenta la revolución tecnológica subyacente. Si bien es cierto que en el pasado no es evidente si fueron los avances tecnológicos los que motivaron el crecimiento del intercambio de datos o si fue a la inversa1, parece obvio que hoy en día son los hábitos sociales y la demanda creciente de datos los que exigen mayor capacidad y velocidad de transmisión a la industria (fabricantes y operadores). A pesar de que los distintos estándares de la familia IEEE 802.11 han definido tecnologías capaces de alcanzar velocidades de transmisión elevadísimas, sus limitaciones en términos de área de cobertura –y por lo tanto en términos de movilidad- suponen todavía hoy su punto débil. Por el contrario, las comunicaciones móviles, con coberturas de servicios de 4G que alcanzan a más del 90% de los habitantes de algunos países desarrollados –entre ellos, el Estado español-, no son capaces de ofrecer todavía las velocidades de transmisión y las capacidades requeridas. Por ello los agentes involucrados en...

Vehículos Eléctricos y Smart Cities: Nuevos Retos Logísticos y Medioambientales

En el contexto de las smart cities, la incorporación de vehículos eléctricos en el sector de la distribución y de la movilidad urbana representa un avance con respecto a la reducción de los niveles de contaminación medioambiental (reducción de emisiones de gases, menor nivel de ruido, etc.), pero también abre nuevos retos logísticos y medioambientales que habrá que resolver de forma eficiente. Algunos de estos retos se analizan en un estudio internacional recientemente publicado en la revista Energies. A continuación se revisan los más importantes y se dan algunas indicaciones de cómo se pueden superar mediante el uso de algoritmos inteligentes. Retos estratégicos: ubicación y capacidad de las estaciones de recarga A diferencia de los vehículos convencionales, los vehículos eléctricos deben proveerse de combustible con frecuencia debido a la corta duración de sus baterías. Así, los usuarios deben tener en cuenta la distancia que puede ser cubierta antes de necesitar una recarga. No hay duda de que esto restringe el uso de estos vehículos como herramientas de transporte. A fin de minimizar los perjuicios para los usuarios, hay que decidir de forma eficiente sobre la disposición de los puntos de recarga necesarios y cómo integrarlos dentro de la red de transporte urbana. En este sentido, resulta necesario determinar aspectos tales como: (i) el número y tipo de estaciones de servicio a establecer; (ii) la localización de estas estaciones; y (iii) su capacidad óptima. Por otra parte, las empresas logísticas y las instituciones responsables de la movilidad urbana necesitan también evaluar el impacto económico que la introducción de los vehículos eléctricos genera en su flota, de manera que puedan elegir...

Car Hacking (I)

Desde hace ya muchos años que los mecánicos de coches han aparcado el martillo y la escarpa para arreglar los coches que les llevan al taller. Años atrás con solo escuchar el ruido del motor ya sabían que tenía ese coche. Los tiempos cambian y la tecnología llegó a los motores. Sobre el año 1995 ya todos los coches tienen un pequeño ordenador dentro del capó del motor, algunos modelos incluso antes de esa fecha. A partir de entonces se dieron cuenta que podrían sustituir los kilómetros de cables que había dentro de un coche por un bus de datos industrial, vamos, un único cable para todo, que por cierto ya existían en la industria desde hacía ya una década. Buses que son resistentes a las alteraciones del entorno, al ruido electromagnético que afecta tanto a las comunicaciones Ethernet actuales. Este tipo de bus se diseñó para que ese ruido que generan los grande motores eléctricos, al arrancar, al funcionar, no cambiasen los bits que por ellos circulan de los sensores de esos mismo motores hacia los ordenadores que supervisan todo el proceso industrial. Los mecánicos enchufan un cable con un conector especial, que se llama OBD-II, y al otro lado un terminal USB normal que conectan a un portátil con el software de diagnóstico, ese portátil es el que les dice que es lo que falla en el coche, que aparato está mal y cambiarlo. Ahora empezamos a ver coches conectados permanentemente a internet, a las redes. Los coches de ahora, aunque sean de gama baja, ya disponen de clientes WiFi que al llegar al taller se conectan...

Inteligencia artificial: algoritmos genéticos

Mi investigación gira alrededor del modelado, simulación y optimización. Y en principio, en la universidad, la docencia suele ir alineada con la investigación. Así, pertenezco al equipo docente de Computación e Inteligencia Artificial (IA). Pero curiosamente, una de las asignaturas de las que soy responsable* es Biología Molecular (BM). Realmente es una coincidencia interesante porque si bien es cierto que como informático nunca tendré los conocimientos en Biología Molecular que tiene un biólogo, difícilmente no habré oído hablar de Algoritmos Genéticos (AG). Pero ¿qué son y de dónde vienen? Uno de los campos más interesantes y estudiados de la BM es la genética. A todos nos suenan científicos como Darwin, Mendel, McClintock y conceptos como genoma, mutación, adaptación, etc. Todos ellos, de manera más o menos directa están relacionados con la genética. Pero ¿por qué nos puede interesar a l@s informátic@s? Pues, por la misma razón que observamos a las hormigas, el cerebro humano, o las abejas: todos ellos son sistemas/procesos/… capaces de solucionar problemas complejos. En el caso concreto de la genética nos fijamos en qué mecanismos utiliza la naturaleza para seleccionar individuos y asegurar la persistencia (o no de las especies que conforman). Dándole la vuelta y simplificando, l@s informátic@s recogemos de ésta una serie de mecanismos que evolucionan un conjunto de soluciones, mejorando iteración tras iteración, hasta encontrar las mejores posibles. La implementación de la idea de John H. Holland (en los años 70) no es excesivamente compleja: Partimos de una población de individuos, en que cada uno representa una solución factible del problema que se quiere resolver. Cada solución tiene una calidad asociada (fitness) y evidentemente, debe...