Entradas

Nueva serie: The Binary Theory

Hoy vengo a presentar la nueva serie que estoy haciendo en twitch y próximamente en Youtube: The Binary Theory. En esta serie abordaremos diferentes conceptos de Estructuras de Datos y Algoritmos, ¡para poder superar cualquier entrevista que lo requiera! Comenzando por array y listas enlazadas (linked list), hasta acabar con charlas de diferentes ámbitos como puede ser QA o DevOps. En esta serie abordamos de forma teórica y práctica estas estructuras de datos que a veces no entendemos lo suficiente o que incluso se obvian en nuestra formación. Sin embargo, en muchas entrevistas nos encontraremos con preguntas de toda esta temática: Arrays. Listas enlazadas o Linked List (singly and doubly). FIFO y LIFO, pilas y colas. Estructuras jerárquicas como árboles binarios. Grafos. Y mucho más.

IA: Algoritmos genéticos y computación evolutiva.

Imagen
Puedes leer mi artículo original en:  https://medium.com/@FerCortesF/gen%C3%A9tica-y-computaci%C3%B3n-qu%C3%A9-son-los-algoritmos-gen%C3%A9ticos-208e0e91bb86  Existe un tipo de computación que basa su forma de trabajar en analogías con sistemas biológicos. ¿Si la naturaleza tiene mecanismos para resolver problemas, por qué no inspirarnos en ellos? A este tipo de computación, inspirada en lo biológico, la denominamos: computación bio-inspirada. La forma en la que la naturaleza ha llegado a resolver los problemas ha sido mediante la evolución biológica , la cual posee unos mecanismos muy potentes, que son los responsables de la biodevirsidad en todos los niveles . Por lo tanto, era cuestión de tiempo aplicar esto a la computación para la resolución de problemas. Por lo tanto tiene sentido aprovechar los mecanismos de la evolución, de una forma simplificada, para resolver problemas. Como una gran simplificación, la naturaleza se encarga de optimizar individuos a su entorno

Empate técnico: React vs Angular 2

Lo primero que hay que tener claro es lo siguiente: React de por sí NO es un framework y Angular 2 SÍ . Pero, entonces, ¿por qué compararlos? son dos formas de trabajar y de hallar soluciones con un nexo en común: un modelo de interfaces basado en componentes. NOTA: Este artículo lo publiqué originalmente en:  https://medium.com/@FerCortesF/el-empate-en-las-caracter%C3%ADsticas-de-react-y-angular-2-c18f9c0c9247 Comodidad vs Libertad Para mí, este punto es un empate . Angular  2 aporta la comodidad de tener un framework completo que dispone de todas las herramientas necesarias para llevar a cabo una aplicación, permitiendo que te despreocupes de tener que buscar la forma de implementar funcionalidades, lo que hace que todo tengas que hacerlo "a su manera". Mientras que React aporta la flexibilidad y la libertad de seleccionar las herramientas con las que deseas trabajar, aumentando así la carga de decisiones tecnológicas que tomar. Esta filosofía permite ir reemplazando

Apache Cordova: Descarga y visualización de PDFs

Imagen
A partir de un caso de uso real me surge la necesidad de descargar PDFs y visualizarlos en una aplicación multiplataforma llevada a cabo con Apache Cordova y AngularJS. Para probar cómo podía llevarlo a cabo realicé un pequeño ejemplo en el que se descarga y almacena un PDF en la aplicación y su visualización. Puedes descargar el código aquí  Objetivo Aplicación de Apache Cordova junto con AngularJS que permita descargar al dispositivo un PDF y visualizarlo. Plugins necesarios InAppBrowser -  https://github.com/apache/cordova-plugin-inappbrowser File -  https://github.com/apache/cordova-plugin-file FileTransfer -  https://github.com/apache/cordova-plugin-file-transfer Device -  https://github.com/apache/cordova-plugin-device Utilidad InAppBrowser - Permite la apertura de nuevas ventanas del navegador, incluso permite la llamada al navegador del sistema. File - Rutas del sistema de archivos. FileTransfer - Descarga del PDF. Device - Conocer en qué plataforma

AngularJS - Introducción: Inyección de dependencias

Imagen
La Inyección de Dependencias(DI - Dependency Injection) es un pilar fundamental de AngularJSy es que la DI se relaciona con la forma en la que se hacen referencias desde el código, pero, ¿qué es?  La Inyección de Dependencias es un patrón de diseño orientado a objetos. Este patrón nos dice que los objetos necesarios en una clase serán suministrados y que por tanto no necesitamos que la propia clase cree estos objetos.  El framework de AngularJS  gestiona la inyección de dependencias, por lo tanto, nuestras dependencias, como por ejemplo de servicios, serán suministradas por AngularJS. Por ello, al crear un componente de AngularJS se deben especificar las dependencias que esperamos y será el propio framework el que nos proporcione los objetos que se solicitan . Por ejemplo, si necesitamos utilizar un servicio en un controlador, al crear el controlador debemos especificar nuestra dependencia del servicio y no intentar crear un objeto del servicio. En este ejemplo se p

AngularJS - Introducción: Módulos (Modules)

Imagen
En los lenguajes de alto nivel por lo general se tiene una característica muy importante: la modularidad (por ejemplo: namespace en C# o package en Java). Sin embargo, ¿qué ocurre en Javascript con la modularidad? No existe , Javascript mantiene un espacio global para todo. ¿Qué implicaciones tiene esto? Que a medida que crezca nuestro código más sencillo es que se produzca una colisión de nombres de variables, funciones... AngularJS pretende solucionar los problemas con la modularidad de Javascript. Para ello AngularJS implementa el concepto de módulos , permitiendo la asociación de recursos a cada uno de los módulos. De esta forma, el framework nos proporciona una herramienta para poder realizar un división lógica de responsabilidades. ¿Qué es un módulo?  Un modulo es un objeto de AngularJS que actúa como contenedor de recursos y partes de la aplicación : Controladores, servicios, filtros, etc. [ 1 ]. En la siguiente imagen, obtenida de un vídeo de Dan Wahlin [ 2

Javascript: Jugando con fechas

A menudo ocurre que al escribir código obviamos ciertas características del lenguaje con el que se trabaja. Más todavía en Javascript dado que tenemos muchos caminos diferentes para llegar a un punto , por ejemplo, definiendo funciones[1]. En estos casos cada uno tiene sus manías para determinadas situaciones, pero al hacerlo podemos obviar ciertas especificaciones o comportamientos del lenguaje. Debido a esto, el otro día me encontré con un problema en Javascript en el cuál se encontraban fechas, que no se habían modificado, con la fecha 1/1/1970 . Las fechas venían en String por lo que era necesario transformarlas a objetos Date. Tras mucho depurar llegué a ver que en un punto (una directiva de AngularJS para fechas) estaba creando el objeto fecha de la siguiente forma: " new Date(fchEnString) " ¿Problema? Que no se comprobaba si el parámetro era null , aunque sí que existía una comprobación posterior acerca de si el objeto creado era una fecha válida.   Sin embargo,