Aplicación PHP para gestionar un Departamento de Universidad

Otra demostración de cómo se puede adaptar el framework zenphp.
En este ejemplo multilenguaje desarrollado para el Departamento de Filología Inglesa y Alemana de la Universidad de Granada se utilizan categorías con subcategorías sin límite, como extra, se pueden añadir programas en ellas así como una contraseña para limitar la visibilidad además de asociar ficheros y documentos.

Otro programa diseñado a medida en este proyecto es el de búsqueda de profesores, la versión actual utiliza AJAX para mostrar todos los docentes cuyos apellidos empiezan por la letra seleccionada, además se puede observar la cantidad de campos personalizables y ficheros adjuntos que trae cada perfil incluída la imagen del usuario.

Las categorías editables se van colocando en el orden establecido dentro de un menú dinámico en javascript así como ,al entrar en cada una de ellas aparecen sus artículos y subcategorías en varios niveles.

El contenido multimedia se puede incrustar fácilmente gracias a los editores HTML online o WYSIWYG (What you See Is What You Get), con estilos prefijados por CSS compartidos entre clientes y administradores de la aplicación web de departamentos de universidades.

El diseño es de Agencia Q4.

Aplicación cliente servidor usando C++11 y la librería Boost

System Activity Monitor

Hoy os traigo una nueva aplicación a la venta, se trata de un software para observar máquinas y enviar información a un servidor a través de un socket de protocolo http.

Objetivo del programa

Este par de programas ofrece el diseño de una arquitectura cliente/servidor multi-plataforma para coleccionar estadísticas (o cualquier otra información) en red.

Características del código fuente
  • Cliente/Servidor escritos íntegramente en C++11 usando las librerías boost para todos los SO, y las librerías gtop2 para GNU Linux/cygwin/OSX y las psapi + pdh en el caso de Windows.
  • Posibilidad de usar una base de datos nosql o relacional (tipo mysql) opcionalmente
  • Todo el software es abierto y no usa código propietario de terceros

Como siempre, lo más fácil es ver el funcionamiento del programa usando un vídeo de youtube:

(más…)

Base de datos de pacientes, aplicación web AJAX

Este proyecto sirve para cualquier especialista que necesite llevar un registro de pacientes, a saber: sus visitas, datos personales, pruebas, etc., es decir, todo lo referente a una historia clínica.
Mantiene información actualizada visualizando en primer lugar lo que el especialista necesita para trabajar, en este caso, como se puede ver en el vídeo, los “evolutivos” de un paciente, y los datos asociados a su historia.
Al ser una aplicación AJAX se pueden hacer cambios muy rápidamente, cosa que se agradece cuando se necesita agilizar el proceso de atención de una persona en un despacho.
Veamos el vídeo:

La aplicación dispone de un usuario y password para mantener la privacidad, una vez dentro el especialista puede gestionar los pacientes añadiendo datos como, nombre y apellidos, una fotografía, fecha de nacimiento,etc., y por supuesto, la información adicional que sea necesaria, el cliente en este caso me pidió poder editar:

  • Varios evolutivos (campos de texto enriquecido)
  • Textos de exploración física, amanesis y tratamiento (editor WYSIWYG)
  • Múltiples pruebas y diagnósticos: tabla de datos con registros por título, descripción,fichero asociado,etc.
  • Lo mismo para antecedentes ,sólo que se podían añadir diferentes tipos de antecedentes (ver vídeo)
  • Gestión de ficheros
  • Buscador integrado para todas las tablas y conjuntos de datos: se pueden filtrar en tiempo real el flujo de datos especificando cadenas de texto, números de teléfono o cualquier otro dato disponible en cuestión de milisegundos
  • Calendario de citas, eventos y recuerdos
  • Gestor de tareas pendientes sencillo

La aplicación puede modificarse a placer o incluir cualquier detalle adicional, está pensada para trabajar con módulos que se van añadiendo y se comunican entre sí.

Versión final

Ver captura de la versión final

Como algo opcional, el calendario está diseñado para operar cambios en las citas del especialista arrastrando y soltando, en el escritorio podemos ver los últimos pacientes que hemos citado, los que hemos visto más recientemente, los que tenemos más graves, las tareas pendientes, eventos de nuestra agenda, etc.

Consulta el dossier descargándolo aquí
Requisitos del servidor:
* PHP 4 ó 5
* MySQL versión 5 ó mayor.
* Servidor Apache
 

Portal de juegos flash en PHP

Arkatia es el portal sobre el que he estado trabajando recientemente, para un cliente de Valencia: Taykron  Games , que me proporcionó el diseño en imágenes de lo que quería, con el que nuestro querido amigo Joan Carles nos hizo la maqueta en XHTML+CSS +Jscript (algunas cosas en JQuery) y en mi caso ,me encargo de toda la parte de la programación y, diseño de estructuras de datos, base de datos, arquitectura de la información, jerarquía y roles, etc.: Las tareas de un ingeniero jeje, aunque en este caso también he hecho, entre otras, el diseño , maquetación y programación del backend o administración interna.

 

La estructura de clases de esta aplicación web consiste en un modelo vista controlador (MVC) para  juegos, concursos, jugadores ,etc., que están en continúa intercomunicación,i.e., todo centralizado desde una clase principal que gestiona las acciones de los controladores que llaman a las vistas, rellenando los datos proporcionados por el modelo de datos, asociado a tablas de la base de datos.

Los algoritmos de relación entre entidades se ejecutan a través de filtros de metadatos y se mantienen actualizados con metaprogramas y tareas automatizadas y mantenimiento, las búsquedas sin embargo se ejecutan mediante un híbrido entre los filtros like y match, jugando con los números de resultados para la toma de decisiones,difieren un poco frente a la búsqueda de entidades -similares- en que se usa una referencia citada por medio de categorías específicas.

Se construye el sitio web cumpliendo normativas básicas de XHTML válido -W3C – , compatible los navegadores más usados , opciones avanzadas y efectos en JavaScript, optimizado para posicionamiento (SEO), etiquetas opengraph, etc

Las páginas del sitio web se generan en unos milisegundos y se usan dominios y subdominios alternativos para aumentar la velocidad de carga mediante peticiones en paralelo ,esto es algo importante y mientras más se usa la web más fácil es de que sea cargarda en un instante mediante el uso de la caché del servidor y del navegador, sobre todo tratándose de este tema en el que los juegos flash pueden pesar bastante; de hecho la administración dispone de opciones a medida como la carga externa de datos desde una URL proporcionada.

 

Aunque el proyecto ha pasado a la fase final y entrega del mismo, sigue estando en desarrollo y continua mejora.

Características de administración:

  • Asistencia a la metaprogramación
  • Gestión de banners
  • Gestión de usuarios
  • Gestión de concursos
  • Visualización de estadísticas básicas
  • Edición de páginas dinámicas
  • Gestión de configuración del sitio

La parte cliente tiene:

  • Buscador basado en metadatos con diferentes algoritmos
  • Gestión inteligente de SEO (posicionamiento)
  • XHTML validado por la W3C
  • Uso de etiquetas para redes sociales y botones para compartir en estas
  • Sistema de plantillas para gestionar temas distintos
  • Interacción de usuarios siguiendo reglas básicas de publicación

En desarrollo:

  • Sistema de niveles y premios
  • otros

 

Aplicación de iOS para Abades con gestión de datos en Google App Engine

Detalles de la aplicación para iOS

¿Para qué sirve?

  • Proporciona información de los establecimientos del Grupo Abades
  • Muestra las últimas noticias, promociones, eventos y tweets de las redes de la empresa
  • Se pueden conseguir puntos de Abades, con un número de puntos suficiente, el usuario puede canjear estos por regalos que cada establecimiento pone a disposición de clientes que los frecuentan.

 

Funcionalidades de la aplicación

1.- Información de los establecimientos de la empresa:

El proceso de funcionamiento de la aplicación del Grupo Abades es el siguiente: hay una caché de días en los que la base de datos no se actualiza a menos que el usuario lo requiera. La primera vez que se arranca este número de días y otros parámetros de configuración se ponen a 0, por lo que si entramos en el listado de establecimientos de un tipo: áreas de servicio, hoteles o restaurantes, se descargará de Google App Engine, los datos que se han guardado en el modelo de datos del servidor por los empleados de la empresa en formato XML y se insertarán en la base de datos local en alrededor de un minuto. A partir del momento en que se almacenan estos datos hay 6 dias en los que no se vuelven a actualizar al ser datos de un tipo distinto a las promociones/eventos, noticias o ficheros,  se mantienen actualizados con otra frecuencia distinta.  En el caso de ser una imagen, la primera vez que se descarga se guarda en una caché (* nota programadores: de ASIDownloadCache), que hemos visto en los cursos de programación de este blog, entonces se almacenarán durante el número de días configurado, 31 por defecto, ya que son más estables y no deberían cambiar a menudo. Veréis que hay mucha info que aparece en la aplicación que es replicada en la web, sin embargo hay secciones como los puntos de sitios de interés que es más completa en esta aplicación de iOS. Las subsecciones de esta funcionalidad son las  siguientes:

  1. Información:  es una réplica de la información de un establecimiento, dispone de un texto introductorio para colocar sobre el mapa, el título del establecimiento, su imagen en miniatura, una descripción ampliada junto con la información de los servicios que ofrece y las estrellas o rango establecido en función de lo que sea.
  2. Situación:  sólo abrir la pestaña de situación de un establecimiento encontraremos la posición GPS en el mapa de Google Maps para iPhone. De hecho, si pinchamos sobre la chincheta roja aparecerá un cartel indicando el nombre del establecimiento, su rango y su localización exacta de longitud y langitud en formato de coordenadas geodésicas de gmaps. El botón a la derecha con signo más (+) indica la posición actual del usuario y el de la flecha a la derecha (>) hace que el mapa se posicione donde se encuentra el establecimiento. Por último, sin pinchamos en el icono de información (i) aparece un menú para seleccionar un sitio de interés relacionado con la posición del establecimiento, al seleccionar uno de estos sitios, el mapa “volará” hasta su posición y colocará allí una chincheta violeta, esta, muestra un cartel con el nombre y un botón al pinchar sobre ella, este botón nos muestra un recuadro de información sobre el sitio de interés, que contiene un texto con enlaces que se abrirán en el navegador Safari para ampliar la información, calcular nuestra ruta,etc. El botón de la flecha nos llevará a la aplicación de Google Maps de iPhone para mostrarnos todos los establecimientos de la empresa y poder calcular rutas o realizar cualquier otra operación con dicha aplicación.
            
  3. Imágenes: al pinchar sobre la pestaña aparecería una galería de imágenes con sus respectivos títulos en la parte superior de la ventana, los botones anterior (|< ) y siguiente ( >| ) permiten navegar con transiciones por las distintas imágenes disponibles. El botón de Play ( |> ) hace que comience la reproducción de imágenes en secuencia, hasta que volvamos a pulsar sobre la imagen una vez. Si mantenemos el dedo presionado sobre la imagen unos segundos o pulsamos sobre el icono de compartir ( []=> ) aparecerá un menú que nos brinda la opción de poder guardar la imagen en nuestra galería de imágenes. Si se ejecuta una doble pulsación, agrandaremos la imagen y el gesto de peñizcarla además modificará su tamaño. Podemos arrastrar la imagen por la pantalla o girar el dispositivo para verla con una disposición distinta.
            
  4. Contacto:  esta sección de información de un establecimiento consiste en proporcionar al cliente toda la información referente a aquel, ya sea el teléfono, la web o el email con sus respectivos botones para acceder a estas funcionalidades, hasta la dirección, Fax y por último más información sobre el emplazamiento.
  5. Mediante el uso del botón refrescar en el listado de establecimientos podemos recargar manualmente los datos de la base de datos de estos.
  6. Las opciones de configuración de la aplicación para caché de imágenes, bases de datos, GPS, segundos entre cada pase de imágenes, y otras están en la aplicación de Ajustes de iOS -> Grupo Abades

2.- Promociones y eventos:

los empleados de la empresa, a través de la herramienta web de administración de promociones, colocan en abades.com y sus otras webs una lista de promociones, esta lista es accesible por medio de un fichero XML,tal como en la funcionalidad anterior se almacena una caché temporal de estas que permite visualizar una lista con títulos, centros y una imagen asociada, al pinchar sobre cualquiera de ellas entraríamos en la presentación de la imagen de la promoción ampliada, un texto descriptivo de la misma así como la información de contacto: teléfono, web, mail, etc. Su fecha y el centro de emplazamiento de la promoción o el evento.
     

3.- Mi cuenta en Abades:

Esta sección de la aplicación se utiliza para crear una cuenta con la que poder reunir puntos y reservar, con el fin de,  luego, canjear regalos, que ofrece la empresa a sus clientes, agradeciendo la estancia de estos en sus establecimientos. Lo primero que debemos hacer es entrar en Mi cuenta -> Crear Cuenta , rellenar los datos de: e-mail, contraseña y tu nombre y pulsar en el botón “Crear Cuenta“. Hecho esto nos llegará un e-mail de activación en el que debemos buscar un enlace para activar la cuenta en la aplicación de google app engine. Una vez activada nuestra cuenta, podemos rellenar los datos en “Mi cuenta -> Tengo Cuenta”  y pinchar en “Entrar con mi cuenta“, si todo ha ido bien aparecerá una ventana con los datos de tu cuenta, e-mail, nombre y puntos abades.
Estos puntos se consiguen por medio de checkins usando una cuenta de Foursquare. Es un requisito fundamental ya que todos los establecimientos se encuentran asociados a la cuenta de foursquare. Ahora pincharemos en el activador ON/OFF de Foursquare e introducimos nuestro usuario (email/teléfono) y password de esta red. Al pinchar aceptar debe aparecer un botón “Cerrar sesión“, lo cual nos indica que hemos iniciado la sesión correctamente, podemos usar el icono de cerrar (x) para volver a los datos de nuestra cuenta y ahora el indicador on/off estará activado, ya podemos hacer checkins desde el Mapa de la aplicación.

4.- Mapa:

Esta funcionalidad de la aplicación del Grupo Abades se utiliza para colocar todos los establecimientos de la empresa sobre el mapa y poder encontrar el que esté más próximo a nosotros con objetivo de realizar un checkin (estoy aquí) y recibir los puntos que proporciona el establecimiento por hacerlo cada día.
Hay que tener en cuenta que el cálculo de la distancia se realiza en línea recta por lo que si queremos saber la verdadera medida de distancia para viajar al establecimiento debemos usar otro software de GPS, para eso podemos utilizar el botón Google Maps para ver las posiciones de los establecimientos sobre la aplicación Google Maps de iPhone y calcular una ruta óptima en coche, bici, transporte público o a pie desde nuestra posición actual. Sólo cargar el mapa aparece una chincheta roja y si pulsamos sobre ella veremos que refleja nuestra posición GPS actual,

     

tal como reza el cartel superior derecho de Latitud y Longitud. En este mismo cartel podemos controlar el nivel de zoom del mapa con el deslizador dispuesto a tal efecto. Otros controles útiles son el centrador de posición ,con el botón “Mi posición“,  tendremos actualizada nuestra posición en todo momento, centrando el mapa en esta cada cierto número de segundos. Los botones Mapa|Sat|Híb modifican el formato de visualización de aquel de mapa a satélite o híbrido (mezcla de los dos primeros). Ahora, usaremos el botón con fondo azul y un radar blanco para que la aplicación busque el establecimiento más cercano a nuestra posición (si es que hemos permitido a esta el uso de nuestra localización,claro), y se mostraría una ventana con el título “El sitio más cercano es:” y el título y los kilómetros de distancia, al aceptar observaríamos que el mapa ahora está posicionado con el centro en dicho establecimiento y que pinchando sobre el icono de chincheta de Abades ([a]) aparece un recuadro con el título, categoría y un botón para mostrar una ventana que contiene información del sitio y un botón para hacer Checkin.

    
Al hacer checkin la aplicación intentará conectar con el servidor enviando los datos de nuestra cuenta y si hemos configurado que se muestren nuestros checkins en foursquare y redes sociales twitter y facebook aparecerá un mensaje del tipo “Chekin desde la app de Abades en el establecimiento…., obteniendo … puntos” con la información correspondiente, en estas redes sociales y en una ventana de información que nos confirma que todo ha ido correctamente, con nuestro nuevo saldo de puntos de Abades, ahora podemos consultar nuestra cuenta ,de la funcionalidad anterior y asegurarnos de que efectivamente tenemos esa cantidad de puntos de la que nos han informado. Lógicamente un usuario sólo puede hacer uso de una cuenta de Foursquare, en el momento en que la cuenta se utiliza para hacer un checkin en otra cuenta que no es la suya se borrarán todos los regalos reservados y puntos asociados.En el momento de hacer checkin además seremos informados de las últimas ofertas exclusivas para Foursquare y el Grupo Abades.

5.- Noticias y tweets:

este módulo consiste en la lectura del RSS generado por Yahoo! Pipes pasado a través de Feedburner para gestionar social media de todas las últimas noticias de todos los blogs y webs de la empresa, se muestra un listado de las últimas novedades y al pinchar en una de ellas aparece un resumen,  con título y fecha, podemos leer la noticia ampliada en la misma ventana mediante el icono del mundo o bien abrirla en el navegador Safari por medio del botón de “enviar a”  ([]=>). La sección de tweets accesible desde el logotipo de la empresa es exactamente igual en cuanto a funcionamiento pero sólo de la red Tweeter.
            

6.- Sección de regalos:

quizás la parte más interesante para los clientes, pues reciben algo físico a partir de su acción virtual. Consiste en reunir puntos de Abades por medio de checkins en los distintos establecimientos de la empresa, y ,tras consultar el listado donde aparece con un scroll horizontal, los diferentes premios
 
que podemos conseguir con estos puntos, seleccionamos el que deseemos y lo reservamos, después nos dirigimos al establecimiento donde se encuentra dicho item reservado y lo canjeamos en el punto habilitado para ello. En caso de cancelación se devolverían los puntos a la cuenta.

Para programadores:

El Reto

El reto de esta app consistió en poder crear una herramienta que sincronizara los datos de la web actual (abades.com) con los demás dominios (abadestriana.com, abadesnevadapalace.com) y appspot.com, y después crear un algoritmo para hacer un checkin válido así como sincronizar todos los elementos RSS en un único canal y adjuntarlo al programa de promociones actuales de las webs (blogs, noticias, etc. para cada idioma, inglés y español).

¿Qué usa la aplicación?

  • Un conjunto de servicios webs habilitados en una aplicación en Google App Engine para rellenar el contenido de la base de datos SQLite que trae (populate) instalada.
  • API de Foursquare para hacer checkin (con twitter y facebook habilitados)
  •  CoreLocation de iOS para comprobar la distancia al establecimiento más cercano, enviando si las condiciones se cumplen, un mensaje encriptado al servidor de appspot que los comprueba y aumenta los puntos de la cuenta de usuario que está utilizando la app.

¿Cómo se hizo?

La programación empezó donde véis el artículo de como crear una aplicación productiva y social, el esquema era el mismo, pero había que añadirle toda la parte de programación de servidor, ya que la empresa necesita tener actualizada la información que se comparte con los dispositivos y sus webs, la opción de crear un algoritmo en PHP era tentadora pero una aplicación de móbil necesita una buena respuesta y un servidor web no es precisamente una máquina en la que uno desee confiar plenamente, es decir, no siempre está operativa 100% porque tiene muchos usuarios desde la web, por lo que opté por un servidor de google app engine y usando Java creé todas las estructuras de datos donde almacenar la información de establecimientos como en las guías de los cursos de este blog, después lancé los servicios web que permiten dar de alta todos estos datos, y que son capturados por los analizadores sintácticos de la aplicación móvil, más adelante configuré efectos gráficos, mejoré el diseño y añadí la API de Foursquare gracias a frameworks ya disponibles en la red.

El analizador sintáctico es NSXMLparser, el framework ASIHttp permite descargar imágenes con caché de forma síncrona o asíncrona, el scroll view de regalos usa una caché para poder crear todos los que hagan falta, el modelo de datos es sencillo, contiene elementos transformables para almacenar listas, estas listas en Google App Engine con DataStore son persistentes y embebidas en clases que permiten la serialización de objetos, etc.

En cuanto a los mapas no hay mucho que contar, es lo que se suele hacer, una clase para las anotaciones, se captura el evento del dibujado para dibujar un icono distinto e intercalar un botón en recuadro que se muestra al pulsar sobre una chincheta o anotación, y las animaciones están hechas con QuartzCore, es decir UVAnimation con cambios entre transiciones de opacidad, tamaño y posición,…lo sé ,aún se puede mejorar :)

Puedes descargar la aplicación desde su sección: aquí.

Crear una aplicación productiva y social para iOs con interfaz web

En este artículo cuento mi experiencia de creación de la aplicación de iOs TimeBox ,desde el estudio de mercado, diseño, y elaboración de la interfaz gráfica  hasta la programación, creación de la base de datos y la aplicación web para redes sociales.

Lo primero que debemos hacer es tener claro qué tipo de aplicación queremos crear, para eso hay que tener una buena idea, y si la tenéis pero la aplicación ya está hecha, entonces comprar/bajaros todas las aplicaciones que han implementado vuestra idea y estudiarlas para encontrar en qué fallan, cómo las podéis mejorar y combinar, es decir, encontrad una motivación para programar, porque esto es duro amigos jeje (más…)

Página 1 de 912345...Última »
footer
jbelon © | sitemap.xml