Mostrando entradas con la etiqueta objetivo. Mostrar todas las entradas
Mostrando entradas con la etiqueta objetivo. Mostrar todas las entradas

lunes, 17 de septiembre de 2012

Concretando: diseño general

    Después de un largo parón estival, llega el momento de ponerse manos a la obra otra vez. Respecto al programa, cabe decir que no he hecho tanto como planeé, aunque como contrapartida he vuelto con las pilas cargadas. Y también con las ideas mucho más claras respecto a cómo va a funcionar todo de manera global.

    Hasta ahora he ido desarrollando pequeños snippets de código a medida que iba aprendiendo la tecnología. La idea fundamental era seguir una especie de aprendizaje "reutilizable", y no el típico HolaMundo(). Pero todo está siendo muy intangible hasta ahora. Centremos el asunto y busquemos un punto de apoyo para mover el mundo. Y quizá la mejor manera sea enfocar al origen:
 
¿De qué datos se va a nutrir?
    Es una decisión fundamental, que va a condicionar todo el desarrollo de la aplicación. Lo voy a hacer desde la web el Ministerio de Industria, Energía y Turismo, que es donde están publicados los datos actualizados de los precios de los carburantes. Esta decisión tiene una serie de ventajas:
Asimismo existen una serie de inconvenientes:
  • Si bien existe una herramienta para consultar todas las gasolineras (por ejemplo: Gasolina 95), ésta devuelve un listado sesgado en cuanto a número de resultados. Además no incluye los campos de posicionamiento GPS de cada una. Es una información que necesito, ya que pretendo mostrar sólo puntos de suministro cercanos a una posición dada.
  • Para mantener actualizados los precios, lo haré mediante los enlaces publicados en la propia web. En este caso sí que vienen especificadas las coordenadas GPS de cada punto. El problema es que la descripción en cuanto a cada uno es demasiado críptica y difícil de cruzar con el fruto de la consulta anterior. Sería difícil hacer una búsqueda por dirección, si así lo deseara.
     Lo ideal sería poder unificar y consultar el resultado de ambos informes en paralelo, para disponer - potencialmente - de consultas más potentes que las de la web oficial.


¿Cómo reunir, tratar y mostrar la información?
    En otras palabras, ¿cuál va a ser funcionamiento general interno? Sinceramente, creo que es mala idea dejar todo el tratamiento de información proveniente de los datos oficiales únicamente en manos de terminales móviles:
  • El uso de almacenamiento interno va a ser alto con toda seguridad. Y más si habilitaramos consultas de precios históricos.
  • El consumo de tráfico de red para mantener la base de datos actualizada sería intolerable en los casos de uso continuado del sistema. Los usuarios se quejarían - y con razón - de que su tarifa de datos mengua excesivamente.
  • El rendimiento general del programa estaría penalizado por la descarga, tratamiento y clasificación de la información.
  • La percepción general de sería de falta de fluidez, con lo que la experiencia de los potenciales usuarios no sería agradable.

     Siguiendo la máxima "divide y vencerás", la respuesta pasa por dejar ese trabajo "a otros". Es decir, crear un servicio web que se encargue de:
  • Mantener actualizada una base de datos.
  • Que ofrezca información "bajo demanda".
    Consecuentemente, esto conlleva una complicación extra - relativa - en cuanto a infraestructura, pero simplifica mucho el desarrollo del programa, ya que los móviles pasarían a ser meros clientes.

    Respecto a la  tecnología a usar:
  • PHP+MySQL para crear el servicio web
  • Python para el proceso de actualización automática de la base de datos.
  • Para lanzar el script en Python de forma periódica, me serviré de cron.
    La razón principal para usar estas herramientas es que puedo publicar un servicio web casero de forma trivial. Además, si en un momento determinado necesitara externalizarlo, no tendría muchos problemas en encontrar un proveedor en internet que me ofreciese dicha logística.

domingo, 29 de abril de 2012

La idea


    "Mira nena, aquí hay una cuestión: el concepto es el concepto". Y éste es sencillo: un comparador de precios de combustible. Decía un buen amigo que "todo lo que sube, baja. O se encaja". Bueno, pues el precio del petroleo ni baja, ni se encaja. El asunto es cuán rápido va a subir: cuando no es tensión en una zona de tránsito de crudo, es guerra en otra, o conflicto diplomático con productores, o alguna subida de impuestos más o menos encubierta, o que el perro de un jefazo tiene moquillo...


¿Cuáles son objetivos?
    Soy perfectamente consciente de que existen otros programas en el mercado que ya hacen lo que voy a desarrollar. No me preocupa. Como ya dije en El primer post, el objetivo no es la aplicación en sí, ni buscarme un hueco en el mercado con esto. Aclarado este punto, empecemos a tomar decisiones.


¿Qué tipo de aplicación quiero desarrollar?
    He valorado tres grandes grupos: de escritorio, web o móvil. Partiendo de las premisas planteadas en la entrada precedente, la respuesta es casi trivial:
  • no quiero aprender a programar web - de momento - con lo que una página web queda descartada.
  • quiero que sea útil: el escenario que me he imaginado es buscar gasolineras en zonas que no se conocen muy bien. Todos sabemos más o menos cuáles son las gasolineras más caras cerca de casa. Para este caso me parece que puede ser mucho más apropiado una aplicación móvil que una de escritorio. Después de todo, es más común tener a mano un teléfono cuando estás en el coche, que un portátil con conexión a internet.

¿Qué plataforma usar?
    Opciones: Symbian, Android, iOs, Windows Phone y Meego. Todas estas plantaformas cumplen la premisa de utilizar lenguajes y herramientas desconocidas para mi. Aunque viendo los ojitos que me está poniendo Josefa (mi Nexus One), no me puedo resistir: Android. Ya decidiré de qué versión partir.


¿Lenguajes y herramientas?
    Poco hay que decir sobre este punto: Java y Eclipse con el plugin de Android. El punto a favor es que las herramientas de desarrollo son multiplataforma:
  • en casa yo uso linux. Me hubiera supuesto un conflicto decantarme por otro sistema móvil.
  • si en un futuro se sumara más gente al proyecto no habría dificultades al respecto.


¿Primeros pasos?
    Comenzaré por el principio: documentarme. Pero eso es carne para otro post.