Rumbo a la Gestión de Calidad – Terminología

ene 26 2012

No Gravatar

Antes de continuar con el tema, seguramente los expertos en el rubro, tendrán muchos comentarios que realizar sobre el proceso o términos que estamos utilizando, esperando que nos lo hagan saber a través de este post.

Es necesario meternos poco a poco con cierta terminología sobre el tema que estamos tratando, esperando meter pocos términos en esta metodología y mas imágenes para fines de hacerla mas entendible y utilizable. Primero se debe entender que todo proceso, necesita una entrada y una salida (ver imágen Diagrama Proceso).

Podría sonar trivial para muchos de nosotros el diagrama anterior, pero cuando se inicia a plasmar las ideas un diagramas de flujo es donde uno puede entrar en confusiones. Definamos cada uno de los conceptos del diagrama anterior:

  • Materia Prima: cualquier recurso necesario para realizar el proceso. Puede ser personas, especificaciones, casos de uso, etc.
  • Proceso: conjunto de actividades que se realizan para generar un fin en común (el producto)
  • Producto: resultado del proceso. Puede ser personal capacitado, aplicaciones TI, caja de cerillos, etc.

En la siguiente imagen se ilustra la forma en que se constituye un proceso:

Creo que la imagen dice mas que 193 palabras, es decir, “un proceso esta constituido por uno o varios procedimientos y un procedimiento esta conformado por una o varias tareas, los procedimientos no se pueden repetir y las tareas si se pueden repetir”.

Una vez que hablamos el mismo idioma es momento de definir un proceso, pero eso … es otro tema :D

No responses yet

El nuevo protocolo de internet que nos promete más tiempo de vida a Internet

ene 25 2012

No Gravatar

IPv6 es el nuevo Protocolo de Internet (IP) que actualmente ya está conviviendo y sustituyendo en algunos casos progresivamente a IPv4 por pruebas realizadas con anterioridad en el World IPv6 Day, donde algunas empresas demostraron las mejoras de este protocolo entre las características más destacadas son :

  • Espacio de direcciones prácticamente infinito;
  • Posibilidad de autoconfiguración de varios dispositivos con puertos de red (computadoras ruteadores, agendas electrónicas,
  • Teléfonos inteligente, computación móvil, calidad de servicio; un mejor diseño para el transporte de tráfico multimedia en tiempo real;
  • Así como diversos mecanismos de transición gradual de IPv4 a IPv6 y de comunicación entre equipos de ambas versiones.

La transición total a IPv6 durará varios años ha establecido una fecha oficial de lanzamiento mundial, actualmente grades empresas de comunicaciones, búsqueda y entretenimiento entre ellas Facebook, Google, Microsoft o Yahoo! se han unido para integrarse en este ambicioso proyecto, ya que en la actualidad el moribundo protocolo IPv4, apenas se da abasto para mantener una sustentabilidad adecuada para el amplio  uso de internet donde se integran día a día nuevos equipos, como son teléfonos inteligentes, tablets, dispositivos móviles, laptops, servidores etc.

Este protocolo de internet proporcionará un número de direcciones casi infinito (2128: 3,4 x 1020 para sextillones de direcciones) teniendo un direccionamiento de 32 a 128 bits, con soporte mejorado para extensiones, capacidades de autenticación, integridad y confidencialidad de datos.

Pero no hay que olvidar como fue que surgió IPv4, que fue el que nos permitió desenvolvernos, esta gran era de la información, recordemos que TCP/IP fue presentado en 1972 como un sistema que permitía 4.300 millones de direcciones, cuando este se presentó nunca se pensó que esa enorme cantidad se vería sobrepasada en algún momento, simplemente en ese tiempo jamás nos imaginamos con tantos dispositivos como los que usamos actualmente que fueran capaces de interconectarse en un espacio que rompería fronteras, idiomas, o creencias.

El 6 de junio se llevará a cabo la activación y reconocimiento de IPv6, trayendo con él una nueva etapa en nuestra era de las comunicaciones y de la información.

Fuentes:

http://www.worldipv6launch.org/participants/

http://www.muycomputerpro.com/2011/06/08/world-ipv6-day-a-prueba-el-protocolo-ipv6/

 

 

 

One response so far

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

ene 24 2012

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”..

No responses yet

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

ene 20 2012

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”

Joe 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”

Joe 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

One response so far

Rumbo a la Gestión de Calidad – Primeros Pasos

ene 19 2012

No Gravatar

En este proceso de preparación para preparar a la empresa en su incursión al área de Gestión de Calidad hemos identificado 3 puntos:

  • Dedicar una persona que conozca el proceso y que este de tiempo completo (el cual lo llamaremos Gestor de Calidad – que originales).
  • Que todo personal del proyecto (analistas, desarrolladores, usuarios, clientes, etc.) se involucre en el proceso de gestión (los cuales le llamaremos Actores). Sobre todo se requiere mucho de la intervención de los directivos.
  • Iniciar con un solo proyecto (el cual lo identificaremos como Proceso). Seguramente se podría empezar con la administración de la empresa para iniciar nuestro proceso de gestión, pero al no tener claros los recursos (económicos y tiempos) que implica la adquisición del proceso, preferimos enfocarlos en el tema que conocemos.

Por donde empezar

Los primeros pasos que debe de seguir antes de iniciar con el proceso son:

  1. Conciliar con todas las áreas el Manual  de Codificación de Documentos.
  2. Generar el organigrama de los participantes del proceso.
  3. Establecer el procedimiento de comunicación donde se debe establecer los mecanismos que permitan la adecuada comunicación entre las partes interesadas con relación al proyecto.

Codificación de Documentos

En este punto es necesario involucrar a todas las áreas de la empresa (ojo, no del proyecto en cuestión) debido a que este sistema de codificación va a ser adoptada como una norma en la empresa.

En este punto seguramente le van a dedicar mucho tiempo, porque sabemos lo difícil que es conciliar la codificación entre las diversas áreas (si a veces es difícil ponerse de acuerdo con tu espos@, imaginen con otras tantas personas).

Compartimos con ustedes la codificación que hemos adoptado (ojo, de acuerdo a nuestras necesidades) ya que como es costumbre, hemos iniciado el desarrollo de un Sistema de Codificación de Documentos (SCD):

EM-AR-TD-YYYY-CC/rrr

donde:

  • EM: empresa que emite el documento.
  • AR: área de la empresa que emite el documento.
  • TD: tipo de documento (minutas, oficios, etc.).
  • YYYY: año en el que se emitió el documento.
  • CC: consecutivo por año de acuerdo a los primeros tres campos.
  • rrr: numero de revisiones que ha tenido el documento.
Bueno, por el momento tienen bastante chamba que hacer (y yo también). Espero que les sea de utilidad y ojala publiquen sus comentarios.

 

 

 

No responses yet

Frameworks, como elegirlos

ene 17 2012

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.

No responses yet

Tipado estático VS Tipado dinámico

ene 16 2012

No Gravatar

Es un tema polémico, espero no herir la sensibilidad de nadie.

El tipado estático es mejor. Gracias.

Jajaja :D Ahora veamos por que pienso esto y bajo que circunstancias. Pero primero hay que definir que es tipadotyping, si ya lo sabes salta cuatro parrafos.

NOTA: No confundir fuertemente tipado con tipado estatico ni debilmente tipado con tipado dinamico ya que se tratan de otros concceptos.

Tipado. Es la definicion del tipo que tendra una variable dada, por ejemplo si en una variable queremos guardar numero enteros, lo mejor es tener una variable de tipo Int. Ya sea que la definamos nosotros (Tipado estatico) o bien sea definida al vuelo por mismo lenguaje (Tipado dinamico). Pero no solo eso, el dependiendo del tipado que escojamos ganaremos o perderemos algunas caracteristicas. Por ejemplo la forma en que interactuan las variables, la manera de debuguear, la detección de errores, el completado de código la velocidad de implementación y  la velocidad de ejecución, etc. Generalmente aunque no siempre, los lenguaje interpretados usan tipado dinamico, mientras los lenguajes compilados utilizan tipado estatico, esto no es una regla es solo una tendencia.

El tipado estático nos obliga a definir desde el principio el tipo de una variable, ejemplos de lenguajes con tipado estatico son C, C++, Pascal, Java, Objetive-C, C#, entre otros, pero estos son los utilizamos en Qbit. Notese que C# esta incluido aunque exista la palabra clave var, la cual nos permite ahorrarnos un poquito de código, pero una vez que el compilador define el tipo este ya no puede cambiarse.

El tipado dinamico nos da la facilidad de no definir los tipos al declarar una variable, algunos ejemplos son PHP, JavaScript, Grooby, Phyton, Perl, entre otros, estos son los que mas usamos aquí.

Ahora si veamos las diferencias.

  • Velocidad de ejecución. Cuando la velocidad es un factor importante, lo que nos interesa es que nuestro programa se ejecute rápidamente, sin dudarlo debes escoger un lenguaje tipado estaticamente. Porque la validación de tipos se hará solamente al compilarlo, en cambio los lenguajes tipados dinamicamente hacen la validación en tiempo de ejecución y esta validación es tardada, alentando la tu programa.
  • Errores de tipado. Un error de tipado se presenta por ejemplo cuando intentas igualar o comparar dos variables de tipos incompatibles. Cuando programas en un lenguaje con tipado estático, el programa no compilara a menos que los tipos estén correctos, por ejemplo no te permitira comparar un entero contra una cadena, esto te garantiza que cuando por fin corra tu programa, no tendrá problemas de tipado… tendrá otros, pero no de tipado :) . En cambio en si el lenguaje tiene tipado dinámico lo terminaras antes, pero debes cuidar no revolver tipos y no te darás cuanta de estos errores hasta que ejecutes el programa y este falle. Es decir esta ventaja se convierte en desventaja si buscas implementar rápidamente. Aunque si tienes un buen IDE te mostrara los errores antes de compilar.
  • Conversión de tipos. En los lenguajes estáticos, muchas de las conversiones entre tipos tendrás que hacerlas a mano (cast) y las que no tengas que hacer, te arrojaran Warnings de perdida de datos, obligándote a también hacerlas a mano. Y entre mas fuetemente tipado seran mas y mas conversiones entre tipos deberás hacer. En cambio los lenguajes tipados dinamicamente intentan hacer las conversiones ellos mismo, ahorrándote mucho código.
  • Completado de código. Este es un punto que casi nadie toca y que no tiene importancia en proyectos pequeños pero si en los que tienen muchas clases que interactuan entre si. Los lenguajes fuertemente tipados permiten a los IDEs completar código mas ‘atinadamente‘ que los tipados dinamicamente. Por ejemplo si hemos creado una clase llamada Vertebrado, y creamos una variable de tipo Vertebrado e intentamos asignarle el valor de otra clase, el IDE que estamos usando solamente nos sugerirá otras variables que sean del tipo Vertebrado o hereden de este tipo o funciones que retorne un valor de este tipo o de sus herederos. En cambio si el lenguaje es de tipado dinamico, el IDE no puede determinar que variables o funciones son o retornan objetos de tipo Vertebrado y no puede sugerirnos un grupo pequeño de posibilidades. Si no usas un buen IDE y prefieres el bloc de notas o inclusive algún editor que solamente ponga colores al código entonces olvídate de esta ventaja.

Aun faltan otras diferencias a revisar y por supuesto las conclusiones, pero el post se esta alargando mucho.

Continuara…

 

 

 

 

 

No responses yet

Desarrollo de aplicaciones para ambientes tridimensionales

ene 13 2012

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.

 

No responses yet

Rumbo a Gestion de Calidad – Contexto Inicial II

ene 12 2012

No Gravatar

El problema no termino en este punto.  Sabíamos que nuestro cliente quedo satisfecho con el producto recién entregado, pero quedan varios huecos en el proceso que a continuación los enumero:

  1. El cliente nos llamada y exigía garantía del producto por errores.
  2. No teníamos métricas que nos indicaran que el proyecto desarrollado daba una ganancia para la empresa.

Para el primer caso y con la finalidad de que el cliente nos siguiera contemplando para futuros proyectos,  les solucionábamos el problema sin importar que el costo lo absorbiera la empresa, aunque en la mayoría de los casos el error se derivaba de una mala o por una omisión a la definición del proyecto por parte de nuestro cliente.

Para el segundo punto, y como buenos desarrolladores, nuevamente el equipo de QBit inicio con el análisis y desarrollo de Celestic, una nueva aplicación que nos diera una visión mas cercana de los costos que tiene el desarrollo del proyecto llevando un control de las actividades que tiene cada uno de los involucrados del proyecto.

Hasta este momento, todo parecía que marchaba bien, pero unos de nuestros principales clientes nos exige tener un proceso de Control de Calidad del producto que le estamos desarrollando y como buenos samaritanos iniciamos con el proceso.

No responses yet

OAuth Twitter Ruby

ene 10 2012

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

No responses yet

Older posts »

Qbit Mexhico Blog is using WP-Gravatar