jeudi 31 décembre 2009

La suite des manipulations des API #twitter et #Ruby

Dans ce post j'explique comment récupérer les informations publiques d'un utilisateur sur twitter.
Pour cela j'utilise l'API :
"http://twitter.com/users/show.json?user_id=nnnnn"
.

Dans le post précedent j'exposais comment faire correspondre un nom twitter avec l'user_id.



germanlinux: "25286531"
woork: "9689232"


Ces informations sont stockées dans un fichier au format yaml et le programme suivant va l'exploiter comme ceci :

require 'rubygems'
require 'json'
require 'tweet'
require 'net/http'
require 'uri'

twitters = open('radar.yaml') do |input|
YAML.load input
end
my_array = Array.new
twitters.each_value do |id_user|
my_id_user= id_user.to_i
cible = "http://twitter.com/users/show.json?user_id=" + id_user
response = Net::HTTP.get URI.parse(cible)
jo= JSON.parse(response)
my_tweet=Tweet.new do |t|
t.tweet = jo
end
ma_chaine= my_tweet.resume(['screen_name','name','friends_count','followers_count','statuses_count','created_at','profile_image_url?','url?','verified'])
puts ma_chaine
end



La méthode tweet#resume va faire un appel de méthode éponyme pour chaque clé.


def resume(fields)
my_string=""
fields.each do |a_field|
my_string+= self.send(a_field).to_s
my_string+=","
end
my_string
end

Le point d'interrogation ajouté à un nom de méthode permet de retourner un booléen sur la présence ou non d'une valeur associée à une clé. J'implemente ce sucre de syntaxe comme ceci :

def method_missing(m, *args, &block)

meth= "#{m}"
if meth[-1].chr == '?' then
meth.slice!(-1)
if @tweet[meth] then true.to_s else false.to_s end
else
@tweet["#{m}"]
end

end


Les Clés disponibles sont :

#profile_sidebar_fill_color ==> e0ff92
#name
#profile_background_tile ==> false
#profile_sidebar_border_color ==> 87bc44
#created_at ==> Sat Jun 27 12:59:27 +0000 2009
#location ==> Paris
#profile_image_url ==> http://a3.twimg.com
#profile_link_color ==> 0000ff
#url ==> http://
#favourites_count ==> 0
#utc_offset ==> -10800
#id ==> 51431032
#followers_count ==> 565
#protected ==> false
#profile_text_color ==> 000000
#profile_background_color ==> 9ae4e8
#geo_enabled ==> false
#verified ==> false
#notifications ==> false
#description ==>
#time_zone ==> Greenland
#friends_count ==> 5
#statuses_count ==> 0
#profile_background_image_url ==> http://s.twimg.com/a/1261519751/images/themes/theme1/bg.png
#screen_name ==> Er
#following ==> false

L'excécution du programme donne:


germanlinux,eric german,32,29,168,Thu Mar 19 13:01:16 +0000 2009,true,true,false,
Woork,Antonio Lupetti,133,12952,135,Thu Oct 25 17:38:34 +0000 2007,true,true,false

Il ne reste plus qu'a exporter ces lignes dans un tableur pour s'amuser à faire des statistiques.

mercredi 30 décembre 2009

#Ruby #twitter API, Comment recuperer le user_id twitter à partir du nom d'utilisateur

Lorsqu'on travaille avec les API twitter, il faut faire attention aux limitations mise en place par twitter. Des limites existent sur le nombre de requetes venant d'une adresse IP , pour un utilisateur authentifié etc (ici le détail de leur politique). L'idée est d'utiliser les ressources les plus accessibles.

Un certains nombres d'information ne sont disponibles qu'a partir du user_id. cette donnée est numérique et elle n'est pas affichée directement.

Ce programme permet d'effectuer la correspondance entre un nom twitter (screen_name) et son user_id. Il utilise des requetes simples HTTP non authentifiées, sans risque de blocage.
Je remplie un fichier avec des noms twitter , le programme va rechercher la page twitter, la parse et retrouve le user_id. En sortie le programme sauvegarde les information dans un fichier au format YAML.

require 'rubygems'
require 'net/http'
require 'uri'

my_hash =Hash.new
## read standard input
ARGF.each_line do |line|
line.chomp!
cible = "http://twitter.com/" + line
response = Net::HTTP.get URI.parse(cible)
## sorry I have arrived from Perl
response=~ /user_(\d+)/
id_user=$1
my_hash[line] =id_user
end
# dump hash in yaml file
File.open('radar.yaml','w') do |out|
YAML.dump my_hash,out
end


En entrée:

germanlinux
woork


En sortie:

---
germanlinux: "25286531"
woork: "9689232"


L'étape suivante consistera à utiliser ces user_id dans l'API:

http://twitter.com/users/show.json?user_id=nnnn


Mais c'est un autre post.

mardi 29 décembre 2009

Web 2.0 Suicide machine and bigpicture

Je me suis inscrit à Facebbok , myspace , netvibes , linked'in , viadeo, trombi ,twitter. Bref le jeu complet. Je suis ami avec des inconnus, je suis un inconnu pour mes amis. Quand je veux partager un lien , je dois aller le déclarer dans trois sites differents, en espérant ne pas créer de boucle (Twitter pousse sur facebook qui pousse à son tour sur Twitter) . Au secours ! Je n'ai plus de vie sociale, je suis trop occupé à gérer mes reseaux sociaux. je n'exploite plus les liens , je les 're-twitte' . (clic pour agrandir : montage réalisé à partir du site : go2web20. )
web2

Je suis perdu dans les dédales du web 2.0, en espérant que l'élu arrive ! . Le site qui tuera tous les autres. En attendant il existe une alternative, le Web 2.0 Suicide machine; ce site est infernal : après avoir entré ses identifiants , mot de passe de ses comptes faceook, linked'in et twitter , la 'machine' commence par changer vos mots de passe (ah la cruelle) et défait tous vos réseaux sociaux sous vos yeux.

web 2.0 suicide machine - untwitter from moddr_ on Vimeo.

jeudi 24 décembre 2009

Comment nos hommes/femmes politiques maitrisent l'usage des réseaux sociaux


Il n'est pas facile d'apprendre à jongler avec tous ces nouveaux supports.
Certains ministres sont inscrits sur twitter mais sans beaucoup d'activité dessus.
Les contributions ou l'absence de contribution sont visibles pour nmorano , rbachelot laurentwauquiez...nk_m
etc.

Attention en 2012 tout va se jouer sur le Net. Je vais peut etre faire un barometre mensuel en Ruby.

mardi 22 décembre 2009

Pourquoi Google goggle (recherche par photo) n'est pas une innovation anodine


A picture is worth a thousand words.No need to type your search anymore. Just take a picture.


Google a annoncé l'arrivé d'une application innovante pour téléphone mobile : google goggles (lunettes).
Il suffit de prendre en photo, un monument , une couverture de livre, une pochette de DVD et automatiquement la recherche est lancée sur Google. Cette innovation n'est pas si futile que ça.
Vers les années 1940 Alan Turing cherche formaliser ce qui différencie un humain et un ordinateur. De ces travaux sont nés une série de tests dont le captcha: Captcha est l'acronyme de Completely Automated Public Turing test to tell Computers and Humans Apart.

Exemples de captcha :


Certains sont plus simples que d'autres.




Ainsi , l'informatique vient de franchir une nouvelle étape. Les conséquences ne sont pas encore bien connues mais l'avenir s'annonce propice à la :geek world domination


Sinon, il restera toujours le test ultime pour distinguer un homme et une machine:Que regardez vous en premier ? Réponse : Un PC ouvert !

dimanche 20 décembre 2009

Pour noel:un nouveau rubik cube



J'ai trouvé ce cube à la FNAC Noisy, il est noir, gris ,antracite, blanc et argent. Il est très esthétique mais très difficile à manier. Le choix des couleurs induit une difficulté en plus en raison du risque de confusion.

La semaine derniere, j'ai amélioré mon record qu cube 5*5*5 , je suis passé de 18 minutes à 14 Min et 50 secondes. Le record à battre est à moins de deux minutes. Pour le 4*4*4, 5*5*5, 6*6*6 ou le 7*7*7 je procède toujours de la même manière : Comme en mathématique je cherche à ramener le problème à un quelque chose de connu. Ainsi, après avoir reconstituer les centres, j'assemble les bords d'arête. Je me retrouve donc avec un cube 3*3*3 . Mon temps sur un cube de base est au mieux 55 secondes, au plus 3 minutes. Donc sur un 5*5*5 j'ai forcement un temps incompressible de près de 2 minutes. C'est pour cela qu'il faut résoudre un cube comme un physicien: en repartant de zéro, mais le nombre de formule à retenir est multiplié par 10.
A défaut de vitesse , je fais des figures (lien vers l'album).

dscn1211

a) Faire les centres.
La formule pour aligner les centres est facile, il permet de permuter deux centres:
R'FLF'RFL' en visualisant cela donne : je place , je verrouille , je replace je déverrouille.

b) Appareiller les arêtes.
La formule de base résoudre les bords d'arête et le problème de parité :est L'UU L'UU FFL'FF RUUR'UU LL
(L: left , U upface, F frontface, R rigth)
La phrase mnémotechnique est la suivante: Louis Prima et le groupe U2 font un concert:
Louis prima et U2 : Louis prima et U2 , il fait tout Louis prima , il fait tout (FF) L'air est de U2 , la deprime pour U2 , mais Louis Prima est un mec carré. Cette formule fonctionne avec tous les gros cubes.

samedi 19 décembre 2009

N'ayez plus peur de votre boss


Je suis tombé sur cette publicité :
Peur de vous faire prendre par votre boss en train de chatter sur MSN, de regarder des nouvelles photos de vos amis sur Facebook ou même de faire une patience?
Évidement cette situation est exceptionnelle car vous êtes assidus au travail.
Pour un jour d’égarement, voici le bouton panic USB.
Avec une simple pression sur le bouton rouge, une capture d’écran fournie par un CD d’installation ou un de vos fichiers préalablement défini apparaîtra immédiatement sur votre écran. En vente à 19€ sur www.mensway.com

Mais il y a mieux :
Sur le site www.cantyouseeimbusy.com Vous trouverez des jeux masqués sous des applications bureautiques. Ils vous permettent de jouer sans perdre votre crédibilité auprès de vos collègues. Ainsi, vous pouvez vous essayer à l'indemodable 'casse-brique'. La raquette est camouflée en curseur de le glissière horizontale, et les briques déguisées en mots du texte.


Mais au fait C'EST MOI LE BOSS !!!!!!