Qbit


3
feb 12

Certificaciones de Calidad en Desarrollo de Software

No Gravatar
   Equipo

El outsourcing de desarrollo de software ha madurado en tan solo un par de décadas y la certificación de calidad ha adquirido un significado totalmente nuevo para los proveedores y clientes.

Hay dos grandes tipos de certificaciones de calidad que se puede obtener por las empresas de desarrollo de software. Una de ellas es la norma ISO 9001:2000 y el otro los distintos niveles de SEI CMM.

CMM: Modelo orientado a la mejora de los procesos empresariales, evaluando la calidad de los productos o servicios que desarrolla y clasificándolos según cinco niveles de madurez.

Uno de los principales beneficios de la certificación de calidad en una empresa de desarrollo de software es que muestra la madurez y la continuidad de la organización.

Ambas certificaciones de calidad prestan atención a los procesos. En ISO se tienen directrices del estado que debe definir un proceso y asegurarse que se está siendo seguido mientras que SEI CMM son dictados de ciertos parámetros de un proceso en el que la empresa debería funcionar.

Las empresas no certificadas tienen un momento difícil al competir con una empresa certificada y esa es la razón por la cual más y más empresas de desarrollo de software se están moviendo hacia la certificación de calidad.

La mayoría de medianas y grandes empresas se están moviendo hacia la certificación SEI CMM.

Aunque se ha mencionado la certificación ISO 9001:2000 de calidad, y la de SEI CMM} hay otras certificaciones de tecnología específica que también puede ser obtenida por las empresas de desarrollo de software. Por lo general, estas certificaciones son dadas por los fabricantes de software u organismos independientes y, aunque podría no ser tan crítica como las certificaciones de calidad mencionadas, tienen un buen nivel de importancia en la evaluación de un proveedor.

MOPROSOF

Modelo de Procesos para la Industria del Software. Modelo para la mejora y evaluación de los procesos de desarrollo y mantenimiento de sistemas y productos de software. Desarrollado por la Asociación Mexicana para la Calidad en Ingeniería de Software a través de la Facultad de Ciencias de la Universidad Nacional Autónoma de México (UNAM) y a solicitud de la Secretaría de Economía para obtener una norma mexicana que resulte apropiada a las características de tamaño de la gran mayoría de empresas mexicanas de desarrollo y mantenimiento de software.

Moprosoft considera que los modelos de evaluación y mejora CMMI e ISO/IEC 15504 no resultan apropiados para empresas pequeñas y medianas de desarrollo y mantenimiento de software.

Importancia de la certificación de un proveedor aliado en empresa de software

Ventajas para la Empresa Responsable

Mantener su capacidad de respuesta al cliente.
Mantener la calidad en sus procesos de desarrollo e implantación de sistemas.
Continuidad en su desarrollo empresarial y generación de historia.

Ventajas para ambas empresas
Desarrollo de alianzas estratégicas.
Continuidad en desarrollos e implantaciones (experiencia).
Mayor posibilidad de obtener proyectos.
Mayor probabilidad de ingresos constantes.

Riesgos a combatir
Aumento de precio al cliente.

Más Info:

 

Imagen :
    http://blog.wikimemoires.com/2011/08/evolution-de-la-gestion-de-grh/

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

24
ene 12

Remover elementos repetidos de un array php ruby java c# vb javascript

No Gravatar
Array remove duplicates items

Array remove duplicates items

Siguiendo la línea de publicar un post técnico y uno intelectual.. esta vez ha llegado el momento del post téncico.. lo que por mi actividad es muy fácil de escribirlo.. Esta entrada esta basada en la experiencia que tengo sobre algunos lenguajes y algo que es muy común de hacer y que muchos programadores escriben a su manera, unos porque no conocen el método y otros porque les gusta tener el control del código.

Este ejemplo se basa en eliminar los elementos duplicados de un arreglo, por ejemplo: (‘a’, ‘b’, ‘c’, ‘b’, ‘c’, ‘d’)

Php

$arreglo = array('a', 'b', 'c', 'b', 'c', 'd');
$filtro = array_unique($arreglo);

Ruby

arreglo = ['a', 'b', 'c', 'b', 'c', 'd']
filtro = arreglo.uniq

Java

Object[] arreglo = {'a', 'b', 'c', 'b', 'c', 'd'};
Set<Object> unst = new HashSet<Object>(Arrays.asList(arreglo));
Object[] filtro = unst.toArray();

C#

string[] arreglo = {'a', 'b', 'c', 'b', 'c', 'd'};
string[] filtro = arreglo.Distinct().ToArray();

Javascript

Array.prototype.unique = function() {
    var el = this.concat().sort();
    for (var i = 1; i < el.length; ) {
        if (el[i-1] === el[i])
            el.splice(i,1);
        else
            i++;
    }
    return el;
}
var filtro = ['a', 'b', 'c', 'b', 'c', 'd'].unique();

MaxScript

arreglo = #('a', 'b', 'c', 'b', 'c', 'd')
for i in arreglo.count to 1 by -1 do
(
    id = findItem arreglo arreglo[i]
    if (id != i) do deleteItem arreglo i
)

Seguramente hay muchas otras maneras de eliminar los elementos duplicados en los arreglos.. para lenguajes como maxscript, javascript o java.. pero al final se trata de lograr desarrollar la funcionalidad deseada.

El maestro de El Castor decia.. “No importa como lo hagas.. lo que importa es que funcione”..

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

20
ene 12

Una visión sin acción es un sueño

No Gravatar

¿Que es una visión?

Visión es el resultado de nuestros sueños en acción, generalmente una visión precede al éxito tanto para las naciones, para las personas como para las empresas”

Joel Baker

La visión tiene un significado de poder ver a futuro el alcance de la empresa, por eso es importante tener claro lo que el negocio es y lo que debería ser en 3, 5 o 10 años, pero ademas debe ser una vista que sea realista y creible para la organización, por lo que si la visión no se convierte en creencia, puede que esta no sirva para nada pues como algunos autores comentan “El poder de las creencias genera resultados.”,  cabe decir que las creencias son las que asumen las personas internamente.

En muchas ocasiones dar el primer paso para realizar algo diferente es muy dificil, sobre todo cuando se esta en un momento de estabilidad o de éxito, o se llega a una situación donde ya no se puede crecer pero los ingresos económicos son muy buenos, en estos casos hay que tener en mente que “ NINGÚN CAMBIO PARTE DEL ESTADO DE COMODIDAD”.

Por eso los cambios nos hacen poner en marcha todas nuestras capacidades para adaptarnos y es en esos momentos cuando pueden darse excelentes oportunidades, nacen nuevas ideas.

Una visión sin acción es un sueño.

Una acción sin visión carece de sentido.

Una visión puesta en practica puede cambiar el mundo”

Joel Baker

QbitCumple

QbitCumple

El día de mañana Qbit Mexhico cumple 4 años desde que comenzamos a emprender acciones para convertir en realidad nuestra visión, han sido momentos de crecimiento y aprendizaje, de nuevos proyectos, de relación con clientes, de colaboración con las personas que nos apoyan, de toma de decisiones, de desarrollar con nuevas tecnologías, de ir a eventos, aún falta camino por recorrer esquivando obstáculos usando estrategias, pero nuestra misión sigue día a día para darle la dirección adecuada a Qbit. Gracias a todos nuestros clientes,amigos y seres queridos que nos han acompañado durante estos años.

 

El poder de una visión:

http://www.starthrower.com/power_of_vision.htm

http://www.starthrower.com/joel_barker.htm

Gorrito de cumple :

http://nicecliparts.com/images-Birthday_Hat.php

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

17
ene 12

Frameworks, como elegirlos

No Gravatar
Framework como elegirlos

Framework como elegirlos

He pensado en esto unas mil veces y siempre llego a la conclusión de que aunque los frameworks hacen la vida más fácil (en algunos casos), el proceso de desarrollo más rápido y mejora las capacidades de trabajo en equipo, es necesario siempre considerar el uso o no de este tipo de herramientas. Desde mi punto de vista, trataré de explicar que se necesita para elegir un framework.

Características

Basándose en una lista de características del software a desarrollar, un framework debería de cumplir con dicha lista sin agregar complejidad al desarrollo mismo (también conocido como código extra). Suponiendo que quiero desarrollar una aplicación donde básicamente quiero tener usuarios y cada usuario tenga una lista de tareas, pues bien asumo que utilizaré un módulo de usuarios y otro para creación de tareas. Hasta este punto el framework no es necesario.. pero que tal si en mis previsiones esta el realizar funciones más complejas como agregar un calendario para tener un registro de eventos, tomados segun se fueron escribiendo las tareas.. todo esto de forma social y abierta a los demás usuarios .. ok, ya se empieza a complicar y seguro algunos dirían que el framework no se necesita.. pero lo que puede aportar el framework es que aparte de cubrir las características básicas, también se puede adaptar a las características futuras, manteniendo siempre una línea de desarrollo relativamente sencilla de mantener.

Extensible

Con un framework se resuelve más de un problema, de hecho se resuelven problemas que posiblemente no sabías que existian en tu código y eso antes de que te sentaras a codificar. La gran mayoría de frameworks cuentan con repositorios de extensiones mantenidas por la comunidad que extienden funciones y componentes de sus funcionalidades básicas. Es necesario mencionar que extensible no se refiere solamente a la cantidad de extensiones, sino también a la calidad y facilidad con que se pueden mantener y crear tus propias extensiones.

Prototipos que determinen su uso

Creo que experimentar con nuevas tecnologías te hace entender en que momento utilizarlas. Si no has experimentado con nuevas opciones de desarrollo, entonces cada vez que necesites utilizar una nueva herramienta tendrás que gastar algo de tiempo y esfuerzo extra para aprender. Una práctica recomendable es siempre construir un pequeño prototipo donde trates de agrupar por ejemplo interacciones con formularios, almacenamiento en BD y uso de javascript. Me refiero a algo muy simple que quizás con algo de documentación puedas construir en un solo día.

Ayuda

Los frameworks con más tiempo de vida suelen tener muy buena documentación en comparación con los nuevos. Foros, listas de correo, blogs, e incluso sitios como StackOverflow proporcionan una gran cantidad de información. Si hay poca actividad en los foros o listas de correo, definitivamente no es una buena opción la que has elegido por lo que una buena idea sería abandonar ese framework. Encontrar ayuda o ejemplos de código es muy importante en el proceso de aprendizaje de nuevas herramientas. En cuanto a los blogs no dejan de ser útiles porque te dicen que esta pasando alrededor de un framework.

Hay que recordar que el framework aporta agilidad y orden al desarrollo de software, si hace todo lo contrario es porque has metido la pata y debes buscar una mejor herramienta.

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

13
ene 12

Desarrollo de aplicaciones para ambientes tridimensionales

No Gravatar

Una de las aplicaciones que hemos desarrollado tiene que ver con la visualizacion de ambientes tridimensionales, y realiza entre otras cosas navegación, despieces y simulaciones y permite el control documental de proyectos, este desarrollo es una segunda versión mejorada de otro sistema que anteriormente hicimos con un motor gráfico llamado Glscene, para Delphi.

Para mejorar la nueva versión recurrimos a un motor gráfico con mejores caracteristicas (NeoAxis) y nos trasladamos a Visual Studio para desarrollar con C#, el motor gráfico que utilizamos cumplió con las espectativas, se mejoró el tiempo de carga de los modelos 3d al utilizar un formato más compacto en los modelos, permitió tener mayor cantidad de objetos y escenarios en una misma escena, además de otras caracteristicas que el anterior motor no tenia.

“NeoAxis Game Engine” es un moderno motor grafico 3D para simulaciones 3D, visualizaciones y juegos.

Este motor que utilizamos es una excelente herramienta para desarrollar aplicaciones 3d de alto impacto.

Algunas de sus caracteristicas son :

  • Las aplicaciones creadas con NeoAxis pueden correr en Windows, Mac y Linux
  • Tiene varias herramientas tales como Editores : Objetos, de GUI, de Mapas,
  • de Modelo Físico, de Terreno,de Sistema de Partículas, para calcular Luces Estaticas.
  • Importa modelos y texturas de 3D Studio Max, Maya, Softimage, XSI, Blender.
  • API de programación basada en .Net y lenguaje C#
  • Efectos especiales (efectos de partículas, Animación, etc)
  • Manejo de Luces, manejo de materiales, efecto de agua
  • Efectos de Física ( Cuerpos rigidos, Uniones, Vehículos, soporta NVIDIA PhysX y ODE)
  • Soporte para Red(Multijugador, Servidor dedicado)
  • Manejo de dispositivos de entrada
  • Como joysticks, Kinect, controladores Xbox 360 .
  • Desarrollo Web (a través de NeoAxos Wen Player) usando los navegadores web mas conocidos
  • Lo más importante, cuenta con un desarrollo constante y el soporte del equipo de desarrollo y muy buena documentación.

http://www.neoaxis.com/

Esta imagen  del sitio de NeoAxis muestra una aplicación para la simulación de accidentes en fábricas (un ejemplo de lo que se puede hacer con el motor), este ejemplo es un poco similar a lo que hemos estado desarrollando.

Aplicaciones como esta son posibles de desarrollar por el equipo de Qbit Mexhico.

 

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

10
ene 12

OAuth Twitter Ruby

No Gravatar
http://www.iconarchive.com/show/tweetscotty-icons-by-lboi/twitter-bot-icon.html

Twitter bot en ruby

Esta es una ligera implementación de un cliente de twitter escrito en Ruby utilizando la gema twitter, oauth, net/http y json .. esto lo hice hace algunas semanas atrás con la idea de escribir un pequeño bot que buscara usuarios de twitter que hablan sobre temas específicos para después enviarles mensajes.. Al final, el script quedó a medias .. lamentablemente no tuve más tiempo para continuarlo, pero el código esta disponible para aprender y si se puede extender mucho mejor..

La clase Helpers basicamente sirve para consultar en twitter y encontrar las palabras que necesito, esto utilizando json en la respuesta.

Aqui la búsqueda esta limitada a 1 solo tweet, porque no quiero enviar spam a nadie.. además twitter no permite el envío de el mismo mensaje a multiples usuarios porque reconoce que es un bot el que lo hace..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env ruby
 
require 'rubygems'
require 'net/http'
require 'json'
require 'oauth'
 
class Helpers  
  def self.find_tweets(default_keyword, extense_keyword = nil)
    base_url = "http://search.twitter.com/search.json?"
    query = (extense_keyword==nil ? default_keyword : default_keyword +"+"+ extense_keyword)
    url = "#{base_url}&rpp=1&page=1&q=#{URI.encode(query)}"
    resp = Net::HTTP.get_response(URI.parse(url))
    data = resp.body
 
    result = JSON.parse(data)
 
    if result.has_key? 'Error'
      raise "Oops!!"
    end
 
    return result['results']
  end
end

Este es el código principal, para que funcione les recuerdo que necesitan registrar su aplicación en https://dev.twitter.com/apps/new

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env ruby
 
# Librerias
require 'rubygems'
require 'json'
require 'twitter'
require 'helpers'
 
username = "QbitMexhico"
 
# Datos de conexion a twitter
TWITTER_CONSUMER_KEY = 'consumerKey'
TWITTER_CONSUMER_SECRET = 'consumerSecret'
TWITTER_ACCESS_TOKEN = 'accessToken'
TWITTER_ACCESS_SECRET = 'accessSecret'
 
# Configurar el cliente
Twitter.configure do |config|
    config.consumer_key = TWITTER_CONSUMER_KEY
    config.consumer_secret = TWITTER_CONSUMER_SECRET
    config.oauth_token = TWITTER_ACCESS_TOKEN
    config.oauth_token_secret = TWITTER_ACCESS_SECRET
end
 
# Instanciar
client = Twitter::Client.new
 
# Palabra principal
mainKeyword = "lego"
 
printf("Utilizando el usuario: %s\n", username)
printf("Buscando la palabra clave: %s\n", keywordSelected)
 
# Encontrar tweets usando el REST API de twitter
tweets = Helpers.find_tweets(mainKeyword,mainKeyword)
 
tweets.each do |tweet|
  printf("\nDel usuario: %s\nTweet: %s\n",tweet['from_user'],tweet['text']) 
  client.update("@zerugiran esta estrenando su meccano y seguro no va a dormir hoy.. :D - cc @" + tweet['from_user'])
end

Una de las cosas que faltaron es la opción de poder almacenar los usuarios que encontré en una bd (sqlLite) para no repetirles en el envío de tweets.. Esto es solamente el ejemplo, muchas ideas se pueden desprender de esto.. :D

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

4
ene 12

Celestic un largo camino por seguir y muchas ganas de continuar

No Gravatar

Celestic Community

Creo que han pasado alrededor de 2 meses desde que hice público Celestic Community, una nueva aplicación open source la cual ayuda a mejorar el seguimiento de proyectos de software.. Durante ese tiempo he recibido diversos tipos de  comentarios alentandome a continuar su desarrollo.. De todos esos comentarios uno en particular llamó mi atención, uno relacionado a mejorar la usabilidad y la forma en que los usuarios interactuan con la aplicación.

Comprendo que hasta cierto punto Celestic puede ser un tanto complejo de utilizar debido a la cantidad de información que solicita, pero todo eso es necesario para lograr un nivel de detalle aceptable y tener un histórico completo de todo lo ocurrido durante la vida del proyecto..

Falta de “usabilidad”? Tienen razón, uno de los principales puntos que en este momento Celestic tiene en contra es el uso excesivo de formularios, algo que inicialmente y de forma adrede decidí dejar así porque no quería escribir un poco más de código para utilizar ajax lo cual ayudaría a resolver las quejas..

El desarrollo de Celestic continua, muchas mejoras estan en camino, estoy trabajando en eso que le falta en este momento (estadísticas, usabilidad y mucho más client side), todo pensado para enriquecer su uso. De las cosas que recuerdo estarán en las nuevas versiones son: administración de notificaciones, modificaciones a los estatus de las tareas siguiendo un orden específico, nuevos gráficos estadísticos, integración de nuevos paquetes de idiomas, correcciones a bugs encontrados por colaboradores, etc..

Para más detalles sobre Celestic Community.

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

20
dic 11

Asp.net MVC 2 Model List<> DropdownListFor

No Gravatar

ASP.NET MVC

En mi experiencia recorrindo diferentes lenguajes de programación y sus respectivos frameworks de desarrollo ágil para aplicaciones web, esta vez tocó el turno a asp mvc 2 y para iniciar esperaba crear un lista de selección.. Se que la versión actual de asp mvc es la 3, pero solamente se puede utilizar con visual studio 2010, el cual aun no hemos comprado, por eso este mini how to lo hago con la versión 2.

Leí muchos tutoriales y ejemplos sobre como lograr hacer un dropdownlist con información de un modelo, la mayoría de los ejemplos mostraban lo siguiente:

Crear un modelo y luego una propiedad de tipo List conteniendo SelectListItem que básicamente es una estructura de textos y valores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class EjemploModel
{
   [DataType(DataType.Text)]
   [Required(ErrorMessage = "Selecciona un mes")]
   [DisplayName("Mes")]
   [UIHint("List")]
   public List<SelectListItem> meses { get; set; }
 
   // Constructor para llenar la lista en la instancia
   public EjemploModel()
   {
      meses= new List<SelectListItem>();
      for(int i=1; i<=12; i++)
      {
         meses.Add(new SelectListItem() { Value =i.ToString(), Text = i.ToString() });
      }
   }
}

Hasta esta punto todo parece tener sentido.. creando una propiedad de tipo lista y luego pasándola a la  vista:

1
2
3
<%= Html.LabelFor(model => model.mes) %>
<%= Html.DropDownListFor(Model.mes, Model.mes, "-------")%>
<%= Html.ValidationMessageFor(model => model.mes, "*")%>

Y seguramente funciona.. el problema venía cuando hacia submit del formulario.. ya que el valor seleccionado del dropdownlist nunca era tomado como parametro en el action donde la enviaba.. Leí muchos post donde a novatos como yo les ocurría el mismo error.. claro, en los tutoriales nunca decían como resolverlo por lo que la respuesta viene a continuación, sencilla para serles sincero..

En los otros frameworks no es necesario definir una propieda de tipo lista, simplemente lo que se hace es definir una propiedad que en este caso sería Int .. y la lista crearla por aparte sin necesidad de hacerla propiedad del modelo. Sé que hay más de una manera de hacer esto y mi forma es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class EjemploModel
{
   [DataType(DataType.Text)]
   [DisplayName("Mes")]
   [UIHint("List")]
   public List<SelectListItem> mesLista { get; set; }
 
   [DataType(DataType.Text)]
   [Required(ErrorMessage = "Debe de seleccionar un mes de vencimiento.")]
   [DisplayName("Mes")]
   public int mes{ get; set; }
 
   // Constructor para llenar la lista en la instancia
   public EjemploModel()
   {
      mesLista= new List<SelectListItem>();
      for(int i=1; i<=12; i++)
      {
         mesLista.Add(new SelectListItem() { Value =i.ToString(), Text = i.ToString() });
      }
   }
}

Y en la vista quedaría de la siguiente manera:

1
2
3
<%= Html.LabelFor(model => model.mes) %>
<%= Html.DropDownList("mes", new SelectList(Model.mesLista, "Value", "Text"), "-------")%>
<%= Html.ValidationMessageFor(model =>; model.mes, "*")%>

Ahora al momento de hacer submit, el valor seleccionado se pasará hacia la propiedad mes y no a mesLista como ocurría anteriormente. Espero les sirva de ejemplo y guía..

Suerte

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

6
dic 11

Participando en Desarrollando America Latina

No Gravatar

La Preparación

Este 3 y 4 de Diciembre estuvimos en el evento Desarrollando America Latina #DAL, desde el inició la idea de participar y crear algo para la sociedad nos interesó mucho, días antes del evento estuvimos planeando que herramientas utilizaríamos al igual que las tecnologías que íbamos a emplear. Los datos nos los enviaron 1 semana previa al evento y aunque era información que nos proporcionaron importante, no era suficiente.

2 Ideas

Entre los integrantes del equipo, discutimos los temas y las fuentes de información, revisamos algunos sitios del gobierno esperando encontrar algo más interesante y que fuera actualizado o en tiempo real o por lo menos más seguido.. Al final de evaluar ideas, sitios e información encontramos 2 temas posibles que podríamos desarrollar.

La primera idea fue desarrollar un “Diputado Virtual”, la información de la cámara de senadores es actualizada diariamente y el flujo de la misma es abrumador. Básicamente lo que haríamos sería mejorar la presentación de la información en un formato comprensible a las personas y según las preferencias de los usuarios, todo basado en votos un bot tomaría la mejor decisión y ofrecería una respuesta a un diputado.. Sabemos que hay muchas cosas que se deben de tomar en cuenta en el momento de tomar la decisión y nosotros trataríamos de desarrollar lo más completo y complejo posible ese sistema de elección de propuestas.

La segunda idea estaba basada en información de hechos que han ocurrido en el país desde 1950 hasta la fecha, encontramos un dataset con información sobre tipo de eventos, descripción, fechas y posiciones geográficas georeferenciadas. La idea era mostrar en una línea de tiempo todos los hechos ocurridos de una forma animada. La información saldría de los mismos ciudadanos con sus reportes sobre hechos que ocurren alrededor de la ciudad.

Al final nos decidimos por nuestra segunda idea porque el tema era seguridad y estaba dentro de los posibles temas de desarrollo.

Llegamos al evento

El lugar, los organizadores y los mismos participantes hicimos de la apertura toda experiencia tratando de compartir la información, exponiendo ideas y escuchando las necesidades de los demás. Hasta ese momento supimos que había mucha más información de la que nos habían enviado, porque personas de los gobiernos estaban ahí para darnos lo que para sería una necesidad mostrar a la ciudadanía.

Evaluamos y decidimos nuevamente

Luego de escuchar ideas y conocer herramientas ya construidas.. decidimos no reinventar la rueda y contribuir desarrollando algo que a todos los proyectos e ideas les serviría y que nadie había tomado en cuenta. Diseñaríamos un plugin que mostraría mediante mapas de calor, zonas donde ocurren eventos alrededor de la ciudad o de todo el país. Agregaríamos una línea de tiempo como una especie de slider, que al moverlo nos mostraría en diferentes días que eventos fueron reportados mediante información geoposicionada.

4 integrantes, 4 tareas diferentes

Nos pusimos manos a la obra, empezamos como a las 2 de la tarde del sábado, uno de nosotros desarrollaría utilizando canvas el mapa de calor, otro la vista del componente donde se seleccionaban rangos de fechas y con un slider, otro trabajaria con el procesamiento de la información y el ultimo trabajaría con la integración de todo el código para crear el plugin. Apenas nos levantamos para una breve merienda en la tarde y algo de comida por la noche. Nos atendieron de maravilla, no nos faltó nada de nada.. teníamos una buena conexión al internet (decente al menos), muchas bebidas y mucha comida. Logramos avanzar casi hasta finalizar nuestro proyecto, creo que como a las 5 de la mañana decidimos descansar y lo hicimos 1 hora.. luego despertaríamos para terminar algunas tareas pendientes.

Preparando la presentación

Se había dicho que la presentación iniciaría desde las 11 de la mañana, pero se tardó un poco y empezamos creo que pasada la 1 de la tarde. Mientras comíamos algo esperábamos al jurado y charlábamos sobre lo que habíamos hecho. Al poco tiempo el jurado llegó y empezamos a dar a conocer los proyectos. Nosotros fuimos el tercer equipo y salimos a mostrar lo que habíamos hecho en casi 16 horas de trabajo.

Los resultados

Fueron 10 equipos, cada uno con ideas particulares, algunos solucionaban problemas sociales, otros no tanto pero todos habíamos utilizado información del los gobiernos y eso los hacía válidos para participar. Lastimosamente para Qbit no hubo ningún resultado a favor, pero obtuvimos una mención como proyecto más complejo por el tipo de programación que habíamos logrado. Algo en lo que no estuve de acuerdo es que de los 10 proyectos presentados, 5 de ellos fueron ideas que solamente llegaron a tener mockups o diseño de como deberían de ser, esos proyectos fueron evaluados donde yo pensaría que no se debieron tomar en cuenta.

Colaboramos con las personas y el evento, nos gustó mucho la iniciativa aunque esperaría participación real y más activa por parte de algunos grupos. El espíritu de desarrollo y colaboración, así como las aplicaciones que salieron son una muestra del talento que existe en México y que los gobiernos aun no han sabido aprovechar.

Presentación del Proyecto

Código del Proyecto

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

29
mar 10

Implementando un ToDo con jQuery para tu aplicacion Web

No Gravatar
jQuery ToDo

jQuery ToDo

Antes que nada quiero decir que al escribir este pequeño tutorial me siento muy mal porque estoy traicionando a mi comunidad.. Soy mootools-cista pero en vías de que el framework (Yii Framework) que estoy utilizando a implementado jQuery tuve que cambiarlo de momento.

Esto sería el equivalente a la usabilidad de los usuarios pero exclusivamente para los desarrolladores de aplicaciones web, a continuación describiré como aplicar un widget a tu aplicación web desde el cual podrás mantener registro de las tareas pendientes o realizadas. Y hablo de usabilidad porque la lista siempre se mantiene a la vista del desarrollador.

Normalmente siempre utilizamos una aplicación para llevar el rastreo de tareas y seguimiento de errores cuando trabajamos en grupo con otras personas (por ejemplo en Qbit Mexhico utilizamos Solar Bugs Report), pero algunas veces cuando trabajamos solos es un poco más difícil ya que entra en juego la decídia y que por comodidad decidimos no llevar control de tareas pendientes desde una aplicación externa.

Mi propuesta para llevar una organización alternativa al seguimiento de errores y tareas pendientes es implementar mediante jQuery, CSS y HTML una especie de widget que se debe de pegar en cada página de la aplicación de la cual se desea realizar seguimiento.

1. La definición del código CSS

.popNotification {
   border:3px solid red;
   padding:15px;
   position:fixed;
   right:0;
   width:480;
   bottom:0;
   z-index:1400;
   background-color:#000;
   color:#fff;
   filter:alpha(opacity=4);
   -moz-opacity:0.4;
   -khtml-opacity:0.4;
   opacity: 0.4;
}

2. Definición del Código Javascript con jQuery

$(document).ready(function() {
   $('.popNotification').css('opacity',0.4).hover(function(){
      $(this).fadeTo(200,1);
   }, function(){
      $(this).fadeTo(200,0.4);
   });
});

3. Definición del Código HTML

La idea es pegar este código antes del la etiqueta <body> y escribir la lista de tareas que se necesitan realizar.

<div class="popNotification">
   <h2>ToDo</h2>
   <ul>
      <li>Esta puede ser la tarea #1</li>
      <li>Esta puede ser la tarea #2</li>
      <li>Esta puede ser la tarea #n</li>
      <li>Y asi podemos definir nuestras tareas</li>
   </ul>
</div>

El widget se puede mejorar o extender su funcionalidad, yo cuando una de las tareas la he realizado lo que hago no es borrar la tarea de la lista, sino que incluyo la imagen de un check al inicio de esa tarea.. Con eso me doy cuenta de si o no una tarea ya fue realizada. [muchas veces repetí la palabra tarea ¬¬]

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

Qbit Mexhico Blog is using WP-Gravatar