Pruebas de Software


15
may 12

Unable to build project output group ‘Content Files from x (Active)’

No Gravatar
Unable to Build Project Output Group

Unable to Build Project Output Group

Estoy trabajando en un proyecto con ASP MCVC bastante complejo con muchos archivos, muchas reglas y sobre todo comunicación con otro servicios .. y sucede que la semana pasada hice un cambio importante en el código y necesité generar nuevamente los archivos de instalación.. pero algo fallaba y no se podía generar el archivo .msi (setup) .. el error citaba algo como “Unable to build project output group ‘Content Files from ___ (Activate)” .. no me había pasado antes.. y pues el error no describía nada más .. por lo que encontrar el porque era algo tardado quizás..

Buscando un poco entoncré que esto ocurre cuando un archivo del proyecto fue eliminado del disco, pero no fue eliminado del entorno de desarrollo.. entonces al crear el archivo de instalación no se encuentra una fuente por consiguiente falla al generar el archivo instalador.

La solución.. simple!! solo expande todos las carpetas de tu proyecto y busca archivos que tengan un símbolo de admiración amarillo .. pues esos son los que están dando problemas.. o los restauras o los eliminas y listo.. si intentas nuevamente la generación del instalador, estoy super, super seguro de que no habrá más errores.

:)

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

20
mar 12

Phalcon PHP

No Gravatar
Phalcon PHP

Phalcon PHP

Hace algunos días atras leía sobre un nuevo framework de PHP.. como si no hubieran muchos para elegir.. pero este específicamente tenía algo diferente que llamó mi atención.. lo guarde en mis favoritos y por fin!!! este fin de semana pude probarlo.

Pues bien, este nuevo framework se llama Phalcon PHP, esta escríto en C y funciona como una extensión adicional al lenguaje PHP utilizando el patrón de diseño MVC .. lo más interesante de que presumen es la velocidad con que este framework funciona a diferencia de la competencia.

Como cultura general, PHP es un lenguaje interpretado, básicamente Apache que es el servidor debe traducir todo el código php y entregarlo al cliente en forma de HTML, lo que hace de PHP un lenguaje algunas veces lento.. buuu!!! si a eso le agregan el uso de frameworks pues puede que el desempeño se vea un poco afectado, ya que los frameworks deben cargar inicialmente un set de librerías para funcionar lo cual se traduce en tiempo de compilación de recursos extras. Phalcon siendo una extensión del lenguaje, se carga automáticamente de tal manera que ofrece casi las mismas funciones que los demás frameworks, o al menos para trabajar utilizando el patrón MVC.

Definitivamente el resultado es muy bueno, la respuesta del servidor es superior en comparación de los frameworks tradicionales, entre los puntos negativos de Phalcon es que quizás le falten muchas cosas para llegar al nivel de CodeIgniter, Zend o Yii .. digamos algunas validaciones sobre los modelos, uso de eventos sobre el controlador, actions, etc..  y sobre todo documentación (porque hay cosas que no estan muy claras como el uso de las relaciones :S), pero la idea es genial.. Si tienen oportunidad de probarlo, no dejen de hacerlo.

Por cierto, el código lo encuentran en github.. hay que descargarlo y compilarlo.. además de la guía de instalación previa.. yo les recomendaría tener instalado build-essential..

Fuente: http://phalconphp.com/

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

28
feb 12

jQuery Mobile lo bueno y lo malo

No Gravatar
JQuery Mobile

JQuery Mobile

Desde mi blog la semana pasada hacía una reseña sobre 3 diferentes alternativas para desarrollar aplicaciones web para teléfonos móviles (iPhone, Android, Blackberry, Windows Phone, etc) .. al final decidí quedarme con jQuery Mobile por la sencillez y rápida curva de aprendizaje.. además que estaba trabajando en un prototipo de proyecto que no debía tomarme más de 3 días desarrollarlo. En fin, el propósito de este artículo es mostrarles de que manera funciona esta librería.. las carencias que encontré y las virtudes que pueden ayudar a escribir aplicaciones móviles en casi cuestión de horas.

Como funciona

Las aplicaciones web básicamente trabajan 2 capas que son el procesamiento de datos, algo que siempre ocurre del lado del servidor y la presentación de la información que es lo que el servidor regresa a los navegadores en un formato de meta etiquetas (html) .. pues bueno, jQuery Mobile agrega una capa extra que sería como una especie de manejador de eventos que se encarga de escuchar todas las pulsaciones que hacemos sobre los enlaces y botones de formularios para luego solicitar al servidor su proceso vía ajax .. La verdad es que la lógica de como funciona es muy simple porque todo ocurre mediante callbacks.. Si llegan a ver algunos ejemplos de como son estas aplicaciones desarrolladas con jQuery Mobile verán transiciones de entrada y salida entre las páginas y pues esto es el resultado de esas peticiones administradas vía ajax.. Y como todo lo que se hace con javascript, jQuery Mobile se puede parametrizar para que tenga el comportamiento que deseamos.

La tecnología que emplea

Es importante mencionar que esta librería y así he decidido llamarlo porque no creo que llegue al nivel de framework.. su uso esta basado totalmente en HTML5 .. ese nuevo estandar de desarrollo web que se está poniendo de moda.. y CSS3 que vienen a ser como el estilista del HTML5.. entonces si defino a jQuery Mobile diría que es una combinación de mucho HTML5 que utiliza inteligentemente metadatos en las etiquetas, canvas para dibujar algunos botones y CSS3 para administrar la capa visual (esquinas redondeadas, gradientes lineares, sombras y más)…

Una buena recomendación

Si estan interesados en empezar a desarrollar aplicaciones móbiles nativas, creo que antes deberían de entrarse un poco en el uso de este tipo de herramientas para desarrollar la visión del diseño de como son las aplicaciones móbiles, ya que la naturaleza de este tipo de aplicaciones requiere de otro tipo de destrezas relacionadas más que todo con usabilidad que al final es la parte visual y lo que más interesa a los usuarios. Con esto no estoy tratando de decir que las aplicaciones móbiles web son mejores que las nativas.. claro que no!! sería imposible hacer la comparación, pero en el caso de que se necesita escribir una aplicación en tiempo record que sea multiplataforma.. lo más obvio sería utilizar jQuery Mobile o cualquier otra herramienta para este propósito y bueno, eso sin mencionar que el costo monetario es mucho muy inferior.

Lo que hay que tener en cuenta

Es bueno recordar que las aplicaciones móbiles no deben ser complejar, el contenido debe invitar a los usuarios a navegar y al mismo tiempo a constuir un mapa de enlaces en la mente para que sepan como utilizarla casi inmediatamente. Eso significa que no se deben de pensar en interfaces complejas o en componentes que puedan confundir a quienes la usen. Jquery Mobile tiene como elementos básicos los componentes de formularios (input, select, checkbox, radio y button).. otros elementos serían las listas, barra de navegación y es todo.. igual que con jQuery hay desarrolladores externos que estan escribiendo plugins como por ej. datepickers o uploaders que son necesarios y no estan incluidos en la librería.

Utilizarlo con moderación

Creo que antes de decidir su uso o no.. deberían de tomar uno de los ejemplos de la página de ayuda y ver si es compatible con los dispostivos en los que pensarían utilizarlo.. por. ej. yo utilizo un Android 2.3 donde las imágenes y animaciones no son tan fluídas.. lo he probado en un iPhone 3GS y lo ví un poco torpe con las animaciones.. con el iPhone 4 se vé de maravilla al igual que con una tablet android con 3.0 y tampoco tuvo problemas..

Al final la aplicación que escribí es un ligero CRM con un enfoque hacia seguimiento de ventas.. si!! tarde 3 días en el desarrollo, aun es una versión beta y fue rápido hacerlo porque tras el código estuvo una arquitectura MVC.. si me animo quizás suba el código a github y luego al laboratorio de Qbit para que aprendan un poco sobre jQuery Mobile.

Y para finalizar el resultado final en un teléfono LG Optimus Black.. nada mal eh..!!

Mobile CRM

Mobile CRM

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

16
jun 10

Pruebas de Software

No Gravatar

“El testing puede probar la presencia de errores pero no la ausencia de ellos”
Edsger Dijkstra
___________________________________________________________

Las pruebas de software  es el conjunto de procesos técnicos-empíricos[i] de una persona o grupos de personas, que permiten determinar la calidad del producto respecto al contexto del cual se piensa liberar.

Esta definición de pruebas es muy clara pero es muy extensa para fines de este trabajo. Analicemos un poco dicha definición.

Empecemos con la frase “es un conjunto de procesos técnicos-empíricos”. Dependiendo del tamaño del producto a desarrollar se requiere de por lo menos una persona, y si el producto es grande, se requerirá de un grupo personas encargadas de realizar las pruebas. Dicha persona o grupo de personas  requieren de un conocimiento técnico ya que necesita saber, además de informática, de la regla de negocio que se trata de sistematizar. También se requiere que el área encargada de realizar las pruebas tenga la experiencia y de percepción ante la posibilidad de que pueda existir algún tipo de anomalía en la aplicación (conocimiento empírico).

La siguiente frase que analizaremos es “que permitan – se refieren a los procesos – determinar la calidad del producto”. Esta frase es muy ambigua y muy poco practica para una empresa que quiera desarrollar un software para computadora.  Efectivamente, si se desea garantizar “calidad del producto” se tendría que garantizar que los requerimientos, la interfaz y los tiempos de entrega sean adecuados. Se podrían hacer pruebas sobre esos puntos (y no dudaría que existe algún tipo de pruebas). Pero realizar esa labor realmente sería titánica y muy poco redituable para la empresa encargada del desarrollo. Para que una empresa pueda garantizar la calidad en el desarrollo, al menos en esos puntos, y hacerlo lo más redituable posible, es necesario implementar alguna metodología de desarrollo aunado de una gran expertis  adquirida del constante involucramiento en el proceso de desarrollo de diversos sistemas. Por ejemplo, desde mi punto de vista el cliente que desea la sistematización de alguno de los procesos, uno de los puntos que tendría que tomar en cuenta es que la empresa encargada de realizar dicho proceso por lo menos haya tenido la experiencia de desarrollar un sistema semejante o que tenga el personal con el conocimiento suficiente para entender la terminología relacionada.


[i] El conocimiento empírico es el conocimiento basado en la experiencia  y, en último término, en la percepción, pues nos dice qué es lo que existe y cuáles son sus características, pero no nos dice que algo deba ser necesariamente así y no de otra forma; tampoco nos da verdadera universalidad.

Twiter @QBit_Mike

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

Qbit Mexhico Blog is using WP-Gravatar