01/29/2006Une section LivresJ'ai ajouté une section
Livres sur le site, pour y détailler quelques livres. C'est le site bookshelved de Laurent
Bossavit qui m'en a donné l'idée.
La section devrait se remplir plus tard, quand j'aurais plus de temps pour y présenter d'autres livres. 01/25/2006Jabphone
01/23/2006Le script du concours pour le livreJe me suis donné une heure pour écrire le script qui extraira de la boîte 'concourspython@gmail.com' les 5 gagnants au jeu jeudi prochain. L'objectif n'était pas ici de faire un script bien léché, réutilisable ou organisé en classes, mais plutôt d'obtenir le résultat rapidement. Grâce à libgmail et bien sur les modules standards comme email ou random, j'ai pu mettre au point ce script en moins de 70 lignes Quel bonheur Python
import libgmail
import sys
import random
from email import message_from_string
# réponses bidons bien sûr ;)
results = ['1:a', '2:a', '3:a', '4:a', '5:a', '6:a', '7:a']
def qualifyContent(message_source):
""" test if the mail wins """
qualification = [False] * 7
for line in message_source.strip().split():
line = line.strip()
if line in results:
qualification[results.index(line)] = True
return False not in qualification
def extractContent(message_source):
""" get the mail body """
message = message_from_string(message_source)
payload = message.get_payload()
if isinstance(payload, list) and len(payload) > 0:
# trying first part
payload = payload[0].get_payload()
if not isinstance(payload, str):
return None
return payload
def getResults(login, password):
""" retrieve mails from gmail and qualify them
winners / losers / failures
"""
ga = libgmail.GmailAccount(login, password)
ga.login()
failures = []
losers = []
winners = []
folder = ga.getMessagesByFolder('inbox', allPages=True)
current = 0
for thread in folder:
for msg in thread:
if not current % 5:
sys.stdout.write('%d' % current)
else:
sys.stdout.write('.')
sys.stdout.flush()
message = extractContent(msg.source)
if message is None:
failures.append(msg.source)
elif qualifyContent(message):
winners.append(msg.sender)
else:
losers.append(msg.sender)
current += 1
sys.stdout.write('\n')
return winners, losers, failures, current
winners, losers, failures, num_players = getResults("concourspython@gmail.com", "secret")
print '%d mails received' % num_players
print '%d winners' % len(winners)
print str(winners)
print '%d losers' % len(losers)
print str(losers)
print '%d failures' % len(failures)
print str(failures)
print 'picking up winners'
random.shuffle(winners)
final_winners = random.sample(winners, 5)
print str(final_winners)
01/20/2006Python vs RubyJe remet à jour cette entrée, car beaucoup de gens ont souhaité un
comparatif réel.
(il reste très sommaire, sans exemples de codes). Le langage Ruby est très proche de Python. Il est dynamique, doté d'un prompt interactif, et où tout élément est objet. La syntaxe de Ruby est également clair et concise. Les différences majeures à l'heure actuelle, sont:
Merci à la communauté RubyFr (irc: #rubyfr) qui m'a aidé à compléter ce petit comparatif.
En terme de nombre de développeurs: 01/19/200601/15/2006Le module itertoolsJ'ai le map bien trop bas, j'ai l'filter qui s'dilate...Ca fait maintenant plusieurs années que Guido parle de supprimer map(), filter(), reduce(), etc.. du langage, ce qui arrivera un jour puisque 50% de la communauté est en faveur de ce retrait, 25% contre et 25% sans opinions. lambda suivra probablement même chemin. Mais que reste-t-il aux développeurs qui usent et abusent de ces primitives pour faire de la programmation fonctionnelle ? ... roulement de tambours ... itertools ! qui offre des utilitaires de création d'itérateurs. Iterators ? Generators ? Yield ?
|
|
On parle beaucoup de Jython, IronPython, etc.. Mais qui utilise ces implémentations ? J'ai mis en ligne un sondage ici: Sondage AFPY |
Il ne répondra pas évidemment à cette question mais permettra peut être de se rendre compte (vaguement) des proportions.
J'ai été contacté il y a peu pour être responsable d'une session dans une conférence à Orlando aux U.S. Un peu étonnant, vu que je suis quasiment inconnu :)
On m'a signalé par la suite que ces conférences étaient une vaste arnaque, élaborée pour récupérer des droits d'inscriptions des conférenciers
Certains ont même conçu un générateur automatique de papiers à envoyer à ces conférences pour vérifier leur sérieux. Ils ont même été retenus sur certaines confs :). Outil à essayer absolument si vous ne connaissez pas!
xp-france organise une conférence sur les techniques agiles en Mars à Paris. Python sera bien évidemment de la partie !
>> Communiqué complet ici <<![]() |
Mon livre "Programmation Python", sortira dans un peu moins de 15 jours, un peu avant Solutions Linux. J'ai commencé à mettre en ligne les codes sources des exercices du chapitre 11, et d'autres éléments suivront après la sortie du livre (extraits du livre, etc.). |
|
|
Tarek Ziadé. Copyright 2006. Tous droits réservés. Licence contenu site |
|