Blog personal de Sergio Madrigal donde encontrar textos sobre ciencia y tecnología, psicología, cine y literatura y quizá alguna cosita más.

Categoría: aplicaciones (página 1 de 1)

Aplicaciones síncronas y asíncronas

En el mundo de las aplicaciones web nos encontramos con dos grandes tipos de ellas que, además, siguen una evolución histórica.

En los inicios de Internet las comunicaciones se basaban en el modelo cliente – servidor en el que el usuario realizaba una consulta (cliente) y el servidor respondía a esta petición.

Este comportamiento se conoce como comunicación síncrona y por tanto a aquellas aplicaciones que siguen este modelo se les denomina aplicaciones síncronas.

Aplicaciones Síncronas y sus limitaciones

Las aplicaciones síncronas, por su diseño, presentan una serie de limitaciones que con el paso del tiempo y la evolución del uso y la capacidad de la red, han terminado por ser determinantes en el desarrollo de tecnologías alternativas.

Una de estas limitaciones involucra la actualización de los datos que se muestran en pantalla. Por ejemplo, considera una aplicación que muestra los precios de las acciones de un mercado bursátil cualquiera. Idealmente, la aplicación debe ser capaz de actualizar los valores en un determinado intervalo de tiempo: 10 segundos, por poner un caso. Cada 10 segundos el navegador enviaría una petición al servidor para obtener la versión más actualizada de los datos. El problema obvio que surge de este modo de funcionamiento es que existirá un lapso de tiempo en el que los datos estén desactualizados y esto puede suponer una merma importante de las prestaciones de una aplicación.

En estos casos y para superar estas limitaciones, las aplicaciones síncronas están siendo sustituidas por lo que se conoce por aplicaciones asíncronas.

Aplicaciones Asíncronas

Las aplicaciones asíncronas permiten la notificación de un cliente cuando un evento ocurre en la parte del servidor. De esta forma, las aplicaciones asíncronas pueden actualizar su información de forma mucho más eficiente y rápida que las síncronas.

Para permitir un comportamiento asíncrono la comunicación se produce en paralelo (simultáneamente) con el flujo síncrono (principal).

Aunque existen numerosos tipos de comunicaciones asíncronas, nos encontramos con tres principales: poll, long-poll y push.

Comunicación asíncrona POLL

El navegador envía las peticiones HTTP al servidor en intervalos regulares. El servidor responde con actualizaciones. Esto permite al sistema actualizar intermitentemente la aplicación dentro del navegador.

Comunicación asíncrona LONG-POLL

El cliente genera una petición HTTP hacia una dirección conocida del servidor. Cuando el servidor tiene una actualización, responde con un mensaje HTTP. Inmediatamente después de recibir la respuesta, el cliente genera una nueva petición HTTP.

Comunicación asíncrona PUSH

El cliente abre una conexión con el servidor enviando una petición HTTP a una dirección conocida del servidor. El servidor entonces envía una respuesta que aparentemente nunca termina lo cual implica mantener la comunicación siempre abierta. Cuando es necesario, el servidor envía un sub-mensaje de actualización al cliente a través de la conexión abierta. Durante el tiempo en el que la conexión está abierta, el servidor envía mensajes PING al cliente para prevenir que éste cierre la conexión por timeout.

Una interacción más natural.

Con la llegada de este tipo de aplicaciones asíncronas, el usuario se relaciona con las aplicaciones de una forma mucho más natural. Esto termina por permitir desarrollar soluciones que se integran mejor y tienen una respuesta más eficiente en determinados entornos donde la información es un bien valioso y la rapidez de respuesta una virtud necesaria.

Tu primera aplicación – I. Diseño Funcional

Cuando nos enfrentamos a un proyecto de desarrollo en cualquier entorno (Android, iOS, Web, Java, etc.) tenemos que tener muy en cuenta que existen una serie de pasos críticos y que, pese a que puedan suponer perder tiempo en un principio, al final van a resultar fundamentales en el éxito del desarrollo.

Uno de estas fases es la diseño funcional.

El diseño funcional

Para empezar tenemos que saber qué es el diseño funcional.

Básicamente el diseño funcional es el redactar en un documento más o menos definido cómo se va a comportar nuestra aplicación: es decir, cómo va a funcionar.

Aunque parezca una idea trivial, no tiene nada que ver aquello que tenemos en nuestra cabeza con aquello que luego terminamos plasmando en el papel. Cuando nos surge la idea en realidad son muchas funciones que coexisten (e incluso que se solapan) puesto que nuestra imaginación fluye libremente.

Pero una vez nos enfrentamos con el documento en blanco la cosa cambia: concretamos funciones, definimos exactamente lo que queremos hacer y cómo queremos que nuestra aplicación responda acotando claramente cada una de las características de la misma.

Por eso, durante el proceso de creación de este documento debemos tratar de ser lo más concisos que podamos, evitando cualquier tipo de ambigüedad y buscando que cada iteración o característica añadida en nuestro proyecto sea lo más simple y clara posible.

Consejos a la hora de redactar un Diseño Funcional

Una buena práctica a la hora de trabajar con este tipo de documentos es plantearnos la posibilidad de que sean otras personas las que tengan que leerlos, entenderlos e incluso llevarlos a cabo.

Empleando esta técnica procuraremos ser más concretos y obviaremos definiciones que dependan de nuestro juicio o de nuestros conocimientos. Esto nos va a resultar útil cuando pasadas unas semanas y en pleno proceso de desarrollo no recordemos exactamente cuál era la finalidad o el objetivo de determinada parte de nuestra aplicación: en el diseño funcional la tendremos definida.

Planificación y Acción

Siempre he defendido que debe existir un equilibrio entre planificación y acción: no tiene sentido alguno lanzarnos locamente a desarrollar partiendo de la nada y andar programando a salto de mata como tampoco tiene lógica pasarnos meses planificando sin actuar. Hay que buscar la eficiencia de procesos: planificar en un corto lapso de tiempo y, una vez con las ideas claras, poner en marcha nuestro plan.

Ya sabéis: no hay viento favorable para aquel barco que no sabe hacia dónde se dirige, pero cualquier camino de 1000 pasos empieza por el primero. Planificación y acción.

Primeros pasos con Prezi

Hace unos días, por motivos de trabajo, tuve que lidiar brevemente con la plataforma de publicación de presentaciones online Prezi.

Pese a que he oído hablar mucho de ella en los últimos años, de hecho recuerdo que algunas de las presentaciones que se realizaron en la primera edición del 49k fueron hechas mediante esta plataforma, nunca le había dado una excesiva relevancia.

Prezi es entorno de diseño y publicación de presentaciones que añade un concepto nuevo al conocido mundo dominado por PowerPoint y Keynote.

La diferencia más sustancial de Prezi es que parte de un único lienzo donde están contenidas todas las diapositivas. Mediante constantes movimientos de zoom y perspectiva es posible desarrollar conceptos muy visuales de una forma coherente e integrada. Esto ayuda bastante a una compresión global del tema que se quiere presentar dando la sensación de que todo forma parte de una misma estructura.

El principal problema que considero tiene este entorno es que en su versión gratuita la edición es exclusivamente online y, por tanto, totalmente dependiente del navegador.

Muchos habréis experimentado la desazón que produce cuando una WebApp consume muchos recursos de nuestro navegador y, por ende, de nuestro sistema.

Con Prezi esta sensación se multiplica al estar realizando una edición intensiva en un entorno fácilmente sobrecargable.

No obstante, Prezi pone a disposición de sus usuarios una versión de escritorio (sólo para Windows y Mac) previo paso por caja.

En definitiva, Prezi aparece como una alternativa a las grandes dominadoras, lo cual no está de más y además ha conseguido introducirse en este mercado mediante un modelo de negocio y unos servicios totalmente diferenciados.

Aquí tenéis un ejemplo:

Tutorial: Remote Desktop en Windows 7

Una de las herramientas que considero más interesantes a través de la red es el Escritorio Remoto.

Existen bastantes opciones para poder acceder a nuestro PC a través de Internet y poder así gestionar su funcionamiento de forma remota.

La más sencilla para los usuarios de sistemas operativos de Microsoft (Windows XP, Windows Vista, Windows 7 o Windows 8) es el acceso mediante la aplicación nativa «Remote Desktop» (RDP).

Mediante esta simple herramienta podremos, desde cualquier PC con conexión a Internet, conectarnos e iniciar sesión en nuestro ordenador.

No obstante, para ponerlo en marcha hay que realizar una serie de pasos previos que os quiero detallar brevemente.

Abriendo paso.

La mayoría de usuarios de Internet disponemos de un router que hace las tareas de modem en nuestra casa. Este equipo por una parte se encarga de ser la interfaz entre nuestra red Ethernet LAN y el acceso a Internet (ADSL, DOCSIS, etc.).

Generalmente estos equipos están configurados de manera que el tráfico desde nuestra red a Internet está permitido (y así podemos navegar sin problemas) pero todo el tráfico cuyo origen es externo está filtrado.

Esto es una medida de seguridad básica que evita problemas mayores. No obstante, para nuestro fin supone un obstáculo.

En la siguiente imagen os muestro cómo está, de forma esquemática, montada mi red de casa. Veréis que es algo muy simple. Lo que tenemos que hacer para empezar es configurar el equipo de acceso a Internet para que permita el flujo de tráfico entre Internet y nuestro PC en los puertos que emplea el protocolo RDP.

Windows_RDP_4Para ello debemos partir de los siguientes supuestos:

  • Nuestro PC dispone de una IP configurada manualmente. Si lo configuramos mediante DCHP existe la posibilidad de que la configuración IP varíe y las reglas que vamos a introducir en el router son fijas e unívocas.
  • Tenemos acceso a la configuración PAT (Port Access Translation) de nuestro router. Existen equipos a los que no tenemos acceso o desconocemos cómo hacerlo. Os recomiendo que busquéis tutoriales específicos para vuestro equipo.
  • Disponemos de las versiones de Microsoft Windows que admiten Escritorio Remoto.

Una vez tenido en cuenta lo anterior debemos configurar el router para que permita el tráfico entre cualquier IP externa y nuestra IP local del PC (a partir de ahora IP_Local) en el puerto: 3389. Si necesitamos que sea otro puerto podremos cambiarlo de dos maneras:

  • Realizando una redirección de puertos en el propio router: cuando la petición se realice al puerto XX que el router la dirija a la IP_LOCAL:3389.
  • Cambiando la configuración del registro de Microsoft Windows indicando el puerto de escucha.

Con esta tarea completada con éxito tendremos vía libre para configurar nuestro sistema operativo.

Para ello deberemos seguir los siguientes pasos.

Configurando el Escritorio Remoto en Windows

Accederemos a la parte de Sistemas dentro de nuestro Panel de Control

Windows_RDP

Una vez allí buscaremos la «Configuración de Acceso Remoto»

Windows_RDP_2

Finalmente seleccionaremos en la ventana que nos aparece la opción de permitir conexiones desde ordenadores que utilicen cualquier versión de RDP.

Windows_RDP_3

Un último detalle importantísimo: el firewall de Windows. Aunque pensemos que tenemos vía libre, nuestro querido Microsoft Windows viene por defecto con su propio Firewall activado. Una de dos, o bien lo desactiváis (poco recomendado si no confiáis en la configuración de vuestra red) o bien añadís una regla por la que acepte las conexiones entrantes al puerto del RDP.

Con esto podréis acceder desde cualquier PC conectado a Internet a vuestra estación de trabajo e iniciar sesión en ella.

 

 

Comenzando con LaTeX – Breve tutorial.

Desde mis tiempos universitarios he sentido cierto interés sobre LaTeX.

LaTeX es un sistema de composición de textos, orientado especialmente a la creación de libros, documentos científicos y técnicos que contengan fórmulas matemáticas. [ es.wikipedia.org ]

La diferencia fundamental con un procesador de textos convencional, como por ejemplo Microsoft Word™ es que si bien éste es un editor WYSIWYG, aquello que ves es aquello que obtienes, LaTeX se fundamenta en un archivo de código de marcas. Algo parecido a HTML.

Ventajas

Es independiente del sistema operativo. Lo cual nos permite llevar nuestros archivos LaTex (.tex) a cualquier entorno y crear los archivos que queramos con independencia de la arquitectura que empleemos.

Es un estándar de facto en el mundo científico. La mayoría de papers, documentos teóricos, prácticas, hasta incluso exámenes, están hechos con este sistema.

Desventajas

Es un lenguaje de marcas lo que inexorablemente implica enfrentarse con una hoja en blanco en la que lo que escribimos y lo que pretendemos obtener no tienen una relación directa. En resumidas cuentas, la curva de aprendizaje es diferente que la de editores convencionales.

Comenzando con LaTeX

Para empezar con LaTex necesitaremos dos sencillos programas gratuitos

– TeXWorks [ http://www.tug.org/texwork ]

– MiKTeX  [ http://miktex.org/2.9/setup ]

Una vez instalados iniciaremos el software TeXWorks que automáticamente nos detectará el software de impresión LaTeX MiKTeX.

Para empezar podemos crear un pequeño y sencillo documento con este código ejemplo que os facilito:

[cc lang=’latex’]

\documentclass[11pt,a4paper]{article}

\usepackage[utf8]{inputenc}

\usepackage[spanish]{babel}

\usepackage{graphicx}

\begin{document}

\title{Ejemplo Documento}

\author{Sergio Madrigal Muelas}

\maketitle

\section{Seccion Ejemplo}

Esta es una sección de ejemplo

\end{document}

[/cc]

Una vez lo tengáis bastará con guardarlo y compilarlo (Ctrl + T) para ver el resultado en formato PDF.

Si tenéis cualquier consulta no dudéis en usar los comentarios.

Qué falla en Miso

Para los que todavía no lo sepáis, Miso es una aplicación online que te permite hacer una especie de «check-in» de las series que estás viendo. La idea en sí se aproxima bastante al concepto de «Social» que tanto están cogiendo muchas aplicaciones en la nube.

Sin embargo, pese a que la idea inicial es interesante y divertida, la base de datos la construyen los propios usuarios y la comunicación con Twitter y Facebook es perfecta, adolece de un problema de base que si no lo solucionan pronto probablemente provocará que la idea se extinga.

Al menos desde mi punto de vista, en lo que a series se refiere, la aplicación tendría un potencial increíble si existiera alguna forma de llevar un seguimiento de las series que ves y de que te avisaran de que hay disponible un capítulo nuevo.

Todo el sistema ahora mismo se reduce a hacer check-in y ganar «puntos» por hacerlo. No existe una utilidad real.

¿Y vosotros, qué herramientas usáis para llevar un seguimiento de las series que veis?

Enlace | www.gomiso.com

Gestiona tu tiempo con WatchMe

A la hora de organizarnos y planificar las tareas, cada día nos encontramos con una serie de dificultades y obstáculos que nos complican llevar a buen término nuestro plan inicial.

La gestión y eficiencia de nuestro tiempo es, sin lugar a dudas, uno de los pilares fundamentales para lograr este éxito.

Una estupenda forma de monitorizar el tiempo que dedicamos a cada tarea es mediante este pequeño programa gratuito: WatchMe!

Con él podrás contabilizar el tiempo que empleas en realizar determinadas tareas y programar alarmas cuando se supere determinado umbral de tiempo.

Pequeño, simple pero terriblemente útil si queremos que la gestión de nuestro tiempo sea mucho más exacta.

Y lo que es más importante: gratis.

Web de descarga | http://www.flamebrain.com/Default.aspx?tabid=2318

Remobo – Crea VPNs al instante

Una de las utilidades que mayor crecimiento a nivel empresarial ha sufrido a lo largo de estos últimos años gracias a la evolución constante de internet es la VPN.

Por VPN (Virtual Private Network) entendemos la conexión entre dos extremos a través de internet mediante una conexión segura y cifrada que emula a una conexión punto a punto.

Resulta muy interesante para delegaciones conectarse con la matriz empleando la infraestructura de red de Internet sin necesidad de pagar costosas líneas dedicadas y disponiendo de prácticamente las mismas ventajas que ofrecen éstas a un precio muy inferior.

A través de Feedmyapp he ido a parar a una interesante aplicación que permite la configuración de una conexión VPN de forma prácticamente inmediata.

Al parecer, Remobo, que así es como se llama la susodicha aplicación, establece conexiones VPN de manera simple entre dos equipos conectados a la red, resultando interesante para trabajar con ella a nivel particular: conectarnos desde el PC del trabajo al de casa de forma segura, cifrando el contenido y con la conexión encriptada.

www.remobo.com

Mañana la probaré en el trabajo y os dejaré mis impresiones por twitter.