Front & Back

Blog sobre el Desarrollo de aplicaciones web

  1. Un vistazo a OCPP (Open Charge Point Protocol)

    Un vistazo a OCPP (Open Charge Point Protocol)

    OCPP es el acrónimo de "Open Charge Point Protocol"; un protocolo abierto pensado como un estándar de comunicación entre puntos de recarga de vehículos eléctricos y sistemas de gestión de los mismos. Esta interfaz, pretende con su popularización, reducir el esfuerzo que podría suponer la adaptación de cualquier software a las características específicas de un punto de recarga. Si todas las estaciones "hablan" OCPP, el proveedor del software sólo debe preocuparse de que su plataforma también lo h...

  2. Control de motores con Arduino

    Control de motores con Arduino

    Las “shields” son placas preparadas para adaptarse a nuestro Arduino. Se instalan simplemente encajándola sobre el mismo, y extienden su funcionalidad sin quebraderos de cabeza. En este artículo voy a utilizar la placa “Motor Shield”, una extensión que nos permite el control de dos canales diferenciados para el uso de motores, pudiendo manipular su velocidad, dirección y activación. Antes de comenzar, convendría que echásemos un vistazo a la placa. Un vistazo a “Shield 2-Channel DC Motor Cont...

  3. Programando el funcionamiento de un LED RGB en Rpi con Node.JS

    Programando el funcionamiento de un LED RGB en Rpi con Node.JS

    Acabo de publicar dos librerías en Github; SimpleRpiGpio y SimpleRpiLed. La primera es una clase orientada a facilitar el uso del GPIO de la Raspberry mediante NodeJS. En otros “posts” ya hemos profundizado en este tema, así que si acabas de empezar con ello, te recomiendo empezar por el artículo Cómo usar los pines GPIO de la Raspberry PI. El tema de este artículo, sin embargo, es la segunda librería (SimpleRpiLed) que haciendo uso de la primera, facilita la actuación sobre LEDS RGB conectados ...

  4. ¿Qué son los niveles lógicos? Conectando Arduino y Raspberry PI

    ¿Qué son los niveles lógicos? Conectando Arduino y Raspberry PI

    Antes de empezar el “post” es conveniente tener clara la diferencia entre electrónica digital y analógica; llamamos electrónica digital a aquella basada en dos estados únicos (verdadero o falso) obtenidos a través de dos niveles de voltaje diferenciados que pueden variar en función del circuito. Estos niveles son tratados como 1 o 0, e interpretados por un circuito controlador que usando una estructura algebraica conocida como “lógica binaria” es capaz de realizar operaciones complejas. La e...

  5. Cómo y por qué hacer tests funcionales en Symfony2

    Cómo y por qué hacer tests funcionales en Symfony2

    Como Robert C. Martin menciona en su famoso libro “Clean Code”, normalmente tendemos a tratar a los tests como “ciudadanos de segunda”; claro está que el elemento estrella es la funcionalidad, pero a veces las prisas por sacar nuestro software a producción nos hace obviar la importancia del testing. Deberíamos sin embargo tenerlo en cuenta como parte del código a entregar, y en la medida de lo posible considerar que hasta que no está bien realizado y distribuido, nuestro trabajo no ha finalizado...

  6. Cómo usar los pines GPIO de la Raspberry PI

    Cómo usar los pines GPIO de la Raspberry PI

    GPIO (Generic Purpose Input Output) es un pin de entrada y salida que puede ser programado por el usuario en tiempo de ejecución. Al no estar definido para un propósito concreto, podemos utilizarlo para interactuar mediante señales digitales con un dispositivo periférico. En este post vamos a utilizar tanto Node.js como la línea de comandos para interactuar con los pines GPIO de la Raspberry PI (Modelo B) y encender o apagar un LED que hemos conectado, pero antes de nada echemos un vistazo a...

  7. El patrón Abstract Factory

    El patrón Abstract Factory

    Desde hace algunos días estoy leyendo bastante sobre distintos patrones de diseño. Los patrones no son más que soluciones comunes aplicadas a problemas recurrentes que surgen de forma habitual durante el desarrollo de software. La identificación y catalogación de estos paradigmas, ayuda a la comunidad de desarrolladores a no reinventar la rueda, pues ofrecen soluciones elegantes a problemas complejos. En el libro “Design Patterns” de Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides (que...

  8. Usando Vim como IDE

    Usando Vim como IDE

    Desde hace algún tiempo utilizo ZendStudio como IDE. La verdad es que es una herramienta muy potente aunque es, creo yo, demasiado pesada teniendo en cuenta que la uso para programar en PHP o Javascript en la mayoría de los casos. Últimamente he estado mirando alternativas, y he acabado probando Vim. Es verdad que todos la usamos para editar scripts en línea de comandos (un amigo me dijo que cada vez que usaba “Nano” Dios mataba un programador), aunque yo nunca la había explorado muy a fondo; ab...

  9. LogMonitor: Programando un sistema de alertas para logs con Node.js

    LogMonitor: Programando un sistema de alertas para logs con Node.js

    A través del módulo “child_process” Node.js nos permite lanzar un proceso hijo, y mantener un “stream” de datos por cada entrada o salida estándar del mismo (stdin, stdout y stderror), de forma no bloqueante. Por su parte el método “spawn” de este módulo, nos permite la creación de un proceso hijo mediante argumentos en línea de comandos. Aprovechando esta particularidad he programado un pequeño sistema para el control de logs; LogMonitor, que prácticamente acabo de subir a GitHub. La idea es ac...

  10. Consumiendo un API Rest con Angular.js

    Consumiendo un API Rest con Angular.js

    Angular.js es un framework para Javascript que extiende la sintaxis de HTML5 para proveer funciones concretas; de esta forma permite realizar operaciones que de otra manera supondrían una gran cantidad de código. Por otra parte ayuda a poner orden en la interacción con el DOM, proveyendo una arquitectura basada en el paradigma MVC. En este artículo vamos a programar a modo de ejemplo una pequeña aplicación para listar los registros de un archivo que simula el contenido de un servicio REST que...

  11. Punto de partida para un robot basado en Arduino y Raspberry PI (1)

    Punto de partida para un robot basado en Arduino y Raspberry PI (1)

    Tengo comprobado que la mejor manera de afianzar lo que se aprende es ponerlo en práctica. Por eso empiezo con éste, una serie de artículos que describen el desarrollo de un pequeño robot, con el que intento hacer eso mismo; aprender. Intentaré ser disciplinado, subir un artículo con cada avance y detallar el proceso de la mejor manera posible, aunque entre artículo y artículo acaben pasando semanas. Este tema probablemente se aleja de la coletilla “blog sobre el desarrollo de aplicaciones w...

  12. Primeros pasos en Silex framework

    Primeros pasos en Silex framework

    Cuando nos acostumbramos a una tecnología, muchos solemos tender a intentar resolver todos los proyectos con la misma. A veces nos encontramos programando scripts en PHP (por ejemplo) que podrían resolverse en algún otro lenguaje que se ajusta mejor a las funciones que necesitamos. El asunto es, que esto mismo me ha ocurrido con Symfony en alguna ocasión, y aún sabiendo de la existencia de Silex, hasta hace poco no me había puesto con ello. Silex es un microframework basado en Symfony; una h...

  13. Cómo crear extensiones para Twig

    Cómo crear extensiones para Twig

    El sistema de plantillas de Symfony (Twig), ofrece por defecto una gran cantidad de funciones. No obstante, es posible que en alguna ocasión, necesitemos extender esa funcionalidad. Las extensiones de Twig, sirven precisamente para eso; a través de ellas podemos utilizar funciones dentro de plantillas. Imaginemos que queremos crear una función "base64_encode” que codifique una cadena en base 64, y que podamos usar dentro de una plantilla de la siguiente manera: {{ "cadena"|base64_encode }} ...

  14. Aproximación al análisis de palabras clave para SEO

    Aproximación al análisis de palabras clave para SEO

    La base para una buena estrategia de posicionamiento web son las palabras clave; de nada nos sirve una correcta optimización del código fuente (cabeceras h1, meta-tags, etc) sin un estudio previo de palabras clave. Al fin al cabo las "keywords" son la puerta de entrada a nuestro sitio web; si queremos englobar nuestros artículos dentro de una estrategia de "seo marketing" debemos escribirlos siempre siguiendo un informe que elaboraremos previamente y que responderá a cuestiones como: ¿qué buscan...

  15. Implementando sesiones en web sockets con Node.js y Socket.io

    Implementando sesiones en web sockets con Node.js y Socket.io

    Sin un inicio de sesión previo, un socket establecido mediante Socket.IO con un servidor Node.js, se encuentra abierto y disponible para cualquiera que escuche. En este documento se implementa una validación previa que "securiza" la conexión con el socket. Proceso de validación 1. El cliente envía login y password a una url concreta. 2. El servidor valida las credenciales y almacena un token de sesión. 3. El servidor genera una cookie con el token de sesión y la envía al cliente. 4. Durante la...