#2126 Le 01/06/2010, à 22:55
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Putain, mais qu’est-ce qui m’a pris de ne pas emporter mon chargeur… ><'
Bon, et bien je ne vais pas trop pouvoir être loquace…
Si Ouranos a encore besoin d’aide pour recoder une fonction de string.h, je ne pourrai pas l’aider… ou alors demain.
Bonne nuit (mais je ploperai à 3h ).
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2127 Le 01/06/2010, à 23:02
- helly
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
.
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#2128 Le 01/06/2010, à 23:22
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
strlen :
#include <string.h>
size_t strlen(const char *str)
{
size_t len;
len = -1;
while (str[++len] != '\0');
return (len);
}
Rien de plus simple .
Mais bon, pour la GNU libc, les dev se sont dit que pour des grands mots, ça serait cool de faire les comparaison par paquet de 4 bits...
S'ils ont fait ce choix, on peut se dire que c'est légitime...
Code source : http://tsunanet.net/~tsuna/strlen.c.html.
Mais bizarrement, les dev d'OpenBSD préfèrent la comparaison caractère par caractère...
Ce qui peut laisser penser que du coup, c'est pas si légitime que ça, les perfs gagnées doivent pas être suffisantes pour qu'ils daignent l'intégrer à leur libc...
Code source : http://ftp.bsdfrog.org/pub/OpenBSD/src/sys/lib/libsa/strlen.c
Dernière modification par gnuuat (Le 01/06/2010, à 23:28)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2129 Le 01/06/2010, à 23:31
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bon, j'ai réussi à squatter un w$... Mais ça me fait terriblement au cul de ne pas pouvoir utiliser une typographie correcte. En plus je ne peux même pas coder pour passer le temps, comme je n'ai pas de sytème de gestion de version ou de synchronisation. Et en plus il n'y a pas de dictionnaire français installé.
Bon, je cesse de me plaindre, et j'y vais.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2130 Le 01/06/2010, à 23:34
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Le projet BSD, fidèle à lui-même, a pour lui la clarté du code (clarté qui y est pour beaucoup dans le faible nombre de failles découvertes).
Après en terme d'efficacité je ne sais pas laquelle est meilleures.Faudrait faire des benchs (et encore, je ne sais pas si quelque chose de vraiment intéressant en ressortirait).
De plus, il existe une "instruction" (pas sûr, c'est peut-être bien une macro-instruction) en asmx86 qui peut faire un strlen (enfin, faut faire l'instru + un SUB et c'est bon) donc là aussi, quid de l'efficacité et du code final généré par le compilo ?
Sinon, vous en avez probablement entendu parler mais GCC va intégrer du C++ dans son code (la discussion sur la ML est plutôt intéressante).
Hors ligne
#2131 Le 01/06/2010, à 23:42
- samυncle
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bonsoir les codeurs fous
Hello world
Hors ligne
#2132 Le 01/06/2010, à 23:46
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Cela ne risque-t-il pas de casser la logique du "je programme dans le langage X, mon compilateur est en X et il s'est compilé lui même" ?
Enfin, cette logique, c'est plus de l'esthétisme que du fonctionnel, après s'ils pensent que GCC gagnerait à avoir de l'objet, ça reste plausible (bien que ce ne soit pas un remède à tous les maux, l'objet a quand même son utilité).
edit : hmm... Plutôt que de dire des trucs qui semblent fausses, je vais finir le bg de mon perso D&D -_- .
Dernière modification par gnuuat (Le 01/06/2010, à 23:49)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2133 Le 01/06/2010, à 23:53
- Кຼزດ
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
SELECT Dodo
FROM Plop
WHERE Points = 'Pas beaucoup'
;
dou
Hors ligne
#2134 Le 01/06/2010, à 23:56
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Enfin, cette logique, c'est plus de l'esthétisme que du fonctionnel, après s'ils pensent que GCC gagnerait à avoir de l'objet, ça reste plausible (bien que ce ne soit pas un remède à tous les maux, l'objet a quand même son utilité).
Je te renvoie là pour voir le "débat". Bon de toute façon c'est déjà décidé (par la FSF et le "comité de direction" de GCC), mais il y a des gens ne voient pas vraiment l'apport du C++ dans ce cas, par exemple on peut très bien faire de l'OO "propre" en C (Cf. GTK+), et donc il y a débat. C'est intéressant à suivre pour se faire son propre avis.
Dernière modification par grim7reaper (Le 02/06/2010, à 00:01)
Hors ligne
#2135 Le 01/06/2010, à 23:57
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
SELECT Dodo
FROM Plop
WHERE Points = 'Pas beaucoup'
;
SELECT `dodos`.`plop`
FROM `dodos`
WHERE (`dodos`.`name` = 'gnuuat');
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2136 Le 02/06/2010, à 00:00
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
GMT+3
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#2137 Le 02/06/2010, à 00:04
- samυncle
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
+------+
| PLOP |
+------+
Hello world
Hors ligne
#2138 Le 02/06/2010, à 00:13
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
mensonges! on ne peut rien coder de propre en C, et encore moins de l'objet…
idem pour le C++ de toutes façons!
Dernière modification par tshirtman (Le 02/06/2010, à 00:13)
Hors ligne
#2139 Le 02/06/2010, à 00:51
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
mensonges! on ne peut rien coder de propre en C, et encore moins de l'objet…
idem pour le C++ de toutes façons!
Je plussoie, avec du C on arrive à faire du Python, ce qui rpouve que c'est pas propre du tout .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2140 Le 02/06/2010, à 01:08
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bn night :
echo 'plop' > /dev/stdout
Dernière modification par gnuuat (Le 02/06/2010, à 01:08)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2141 Le 02/06/2010, à 01:08
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
C'est n'imp ces médisances sur le C. Par contre, je ne pas trop quoi penser de l'introduction de C++ dans les sources de gcc.
Bon, j'y vais sinon je vais me faire engueuler parce que je vous cause en même temps. ^^
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2142 Le 02/06/2010, à 03:59
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Just at time !
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2143 Le 02/06/2010, à 08:42
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores totaux, depuis le début :
1) 400 samuncle
2) 333 nesthib
3) 299 Pylade
4) 283+5 grim7reaper
5) 239 mathieuI
6) 183 cm-t
7) 137 helly
8) 106 ǤƦƯƝƬ
9) 103 gnuuat
10) 80 tshirtman
11) 70 petifrancais
12) 37 ilagas
13) 35 Ouranos999
14) 25 GentooUser
14) 25 pierguiard
16) 19 Le Rouge
17) 18 Ph3nix_
18) 14 Kanor
19) 12 stratoboy
19) 12 kouskous
21) 10 CROWD
21) 10 keny
23) 7 Lagierl
23) 7 sailing
25) 6 Toineo
25) 6 Mornagest
25) 6 Zeibux
28) 5 xapantu
29) 4 danychou56
29) 4 Neros
29) 4 Biaise
32) 3 Р'tite G☢gole :mad:
33) 1 ceric
33) 1 pfriedK
33) 1 geenux
Dernière modification par Compteur du TdCCT (Le 03/06/2010, à 15:19)
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#2144 Le 02/06/2010, à 08:42
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores de la période en cours :
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#2145 Le 02/06/2010, à 11:21
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Le fail.
Il n'a pas aimé le changement de mois ?
Hors ligne
#2146 Le 02/06/2010, à 12:12
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Le fail.
Il n'a pas aimé le changement de mois ?
Je crois bien. Bon, j’ai intérêt à avoir appris le python d’ici le mois suivant pour comprendre pourquoi il s’est planté.
Ce n’est pas qu’il n’a pas pu ouvrir le fichier, car je ne l’ai pas supprimé, mais j’ai fait un « echo -n > count10days ».
On verra ça plus tard.
En attendant :
1) 10 Pylade
2) 6 gnuuat
2) 6 nesthib
4) 5 grim7reaper
4) 5 samuncle
4) 5 tshirtman
7) 4 mathieuI
7) 4 helly
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2147 Le 02/06/2010, à 12:40
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Ou alors tu fais ton compteur en C...
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#2148 Le 02/06/2010, à 13:01
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Mets un score bidon à 0 dedans, il aime pas les fichier vide…
(oui c'est un bug dans le compteur)
Hors ligne
#2149 Le 02/06/2010, à 18:44
- nany
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bonjour chez vous.
grim7reaper a écrit :Le fail.
Il n'a pas aimé le changement de mois ?
Je crois bien. Bon, j’ai intérêt à avoir appris le python d’ici le mois suivant pour comprendre pourquoi il s’est planté.
Ce n’est pas qu’il n’a pas pu ouvrir le fichier, car je ne l’ai pas supprimé, mais j’ai fait un « echo -n > count10days ». [ … ]
Mets un score bidon à 0 dedans, il aime pas les fichier vide…
(oui c'est un bug dans le compteur)
#!/usr/bin/env python
# encoding: utf-8
# auteur Gabriel Pettier
# license GPL V3 or later
# sert uniquement a compter les points sur ce topic :http://forum.ubuntu-fr.org/viewtopic.php?pid=938704
# et donc probablement inutile a quiquonque vu que mon serveur se charge de le lancer tous les matins
# publié a seul but de vérification par les interressés. ;), peut aussi servir si mon serveur n'est plus là
# pour assurer le service un jour.
# nécessite python 2.4 minimum, python-beautifulsoup et python-mechanize.
# le fichier '.compteur_logins' doit contenir le login du posteur sur la première ligne, et son mot de passe
# sur la deuxième (cela et seulement cela).
from BeautifulSoup import BeautifulSoup
import urllib2
import re
import time
import sys
import ClientForm
import mechanize as ClientCookie
#ignoreList = ('ArkSeth','compteur-couche-tards','fergo','pdas','Compteur_couche_tards','compteur-couche-tard') #TdCT
ignoreList = ('ArkSeth','Compteur du TdCCT','Chuck Norris','oracle_bot') #TdCCT
class Day:
"""un jour dure de 21h à 5h du matin exclu ([21h:5h[) il contient la derniere entrée (points) de ce jour pour chaque joueur"""
def __init__(self):
self.entries={}
def addEntry(self, entry):
#plus simple de faire un try except que de verifier que l'entrée existe. :/
try:
self.entries[entry.name] = max(self.entries[entry.name],entry.date.points())
except:
self.entries[entry.name] = entry.date.points()
def __str__(self):
for entry in self.entries.items():
print entry,'+',entries[entry]
def utcFrance():
return 1 + time.localtime(time.time())[-1] #1 + 1 si on est a l'heure d'été
class Date:
def __init__(self,tuple=(20,0),utc=utcFrance()):
self.h = (int(tuple[0])-utcFrance()+24+utc)%24
self.m = int(tuple[1])
def points(self):
if self.m in range(60):
if self.h in range(21,24):
return self.h - 20
if self.h in range(3):
return self.h + 4
if self.h in [3,4]:
return 10
return 0
class Entry:
def __init__(self,name='',date=Date(),edit=Date()):
self.name = name
self.date = max(date,edit)
def setName(self, name):
self.name = name
def setDate(self, date):
if date.points()>self.date.points(): self.date = date
class Score:
def __init__(self, tuple):
self.name = tuple[1]
self.num = int(tuple[0])
def __gt__(self, other):
return self.num>other.num
def __str__(self):
return '%i %s' %(self.num, self.name)
def getPage(url, entries, stat, urlscore):
# essaye jusqu'a 15 fois de récupérer la page
for i in range(15):
try:
page = BeautifulSoup(urllib2.urlopen(url))
break
except:
if i==14: raise
time.sleep(60)
print 'page récupérée, travail en cours'
for post in page.findAll('div','blockpost rowodd')+page.findAll('div','blockpost roweven'):
str_date = str(post.find('h2').find('span').find('a')).split('>')[1]
if (str_date.split(' ')[0] in ['Hier'] and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(5,24)) or (str_date.split(' ')[0] in ["Aujourd\'hui"] and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(5)):
urlscore = url
try:
entry = Entry(str(post.find('div','postleft').find('a')).split('>')[1].split('<')[0])
except:
entry = Entry(str(post.find('div','postleft').find('strong')).split('>')[1].split('<')[0])
if str_date.split(' ')[2].split('<')[0].split(':')[0] not in stat:
stat[str_date.split(' ')[2].split('<')[0].split(':')[0]] = 1
else:
stat[str_date.split(' ')[2].split('<')[0].split(':')[0]] += 1
utc = utcFrance()
if 'GMT' in str(post):
try:
utc = int(str(post).split('GMT')[-1].split(' ')[0].split('<')[0])
except:
print entry.name,'-> no good GMT!'
entry.setDate(Date(str_date.split(' ')[2].split('<')[0].split(':'),utc))
if post.find('p','postedit') is not None:
try:
entry.setDate(Date(str(post.find('p','postedit').find('em')).split('à')[1][1:6].split(':'),utc))
except:
print 'error ->'+str(str(post.find('p','postedit').find('em')).split('à'))
#on ne veut pas les points des pseudos dans ignoreList
if entry.name not in ignoreList and (entry.date.points() is not 0): entries.addEntry(entry)
# erreur si le topic fait moins d'une page de long,FIXME!
#result = int(url.split('p=')[1]) < int(str(page.findAll('a')[-7]).split('p=')[1].split('"')[0]) #en espérant que le nombre de liens en bas de page ne change pas! :/
if str(page.find('p','pagelink conl')).split('conl">')[1].split('</p')[0].split(str(page.find('p','pagelink conl').find('strong'))) == ['', '']:
result = False
else:
result = int(url.split('p=')[1]) < int(str(page.find('p','pagelink conl').findAll('a')[-2]).split('p=')[1].split('"')[0])
#FIXED!
if not result:
# on vérifie si le sujet est fermé, auquel cas on renvoie le dernier lien fourni sur la page
if 'Sujet fermé' in ''.join((str(i) for i in page.findAll('p','postlink conr'))):
print str(page.findAll('div','postmsg')[-1])
result = str(page.findAll('div','postmsg')[-1].findAll('a')[-1]).split('"')[1]
return result, urlscore
def renderstats(stats):
if stats != {}:
DayStats = {'00': 0, '01': 0, '02': 0, '03': 0, '04': 0, '05': 0, '06': 0, '07': 0, '08': 0, '09': 0, '10': 0, '11': 0, '12': 0, '13': 0, '14': 0, '15': 0, '16': 0, '17': 0, '18': 0, '19': 0, '20': 0, '21': 0, '22': 0, '23': 0}
DayStats.update(stats)
HoursBar = 'h|'.join(sorted(DayStats.keys()))+'h'
HoursBar = HoursBar[20:]+'|'+HoursBar[:19]
HoursBar = HoursBar[0:len(HoursBar)-1]
HoursPie = 'h|'.join(sorted(stats.keys()))+'h'
for k in stats.keys():
HoursPie = HoursPie.replace(k+'h', k+'h%20-%20'+k+'h59')
DataBar = ','.join([str(DayStats[x]) for x in sorted(DayStats.keys())])
DataBar = ','.join(DataBar.split(',')[5:24])+','+','.join(DataBar.split(',')[0:5])
Vmax10 = str(10*(int(max([DayStats[x] for x in DayStats.keys()]))/10+1))
urlimage='[img]http://chart.apis.google.com/chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,c0c0c0&chl='+HoursPie+'&chd=t:'+','.join([str(stats[x]) for x in sorted(stats.keys())])+'&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16[/img]'
urlimage+='[img]http://chart.apis.google.com/chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,'+Vmax10+'&chxr=1,0,'+Vmax10+'&chf=b0,lg,0,803000,0,ffc080,1|bg,lg,90,e8e8e8,0,c0c0c0,0.9&chxl=0:|'+HoursBar+'h'+'&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:'+DataBar+'&chm=N,803000,0,-1,12&chtt=Nombre%20de%20posts%20par%20heure&chts=606060,16[/img]'
return urlimage
return None
def post(_file, stats, debug):
# le fichier '.compteur_logins' doit contenir le login du posteur sur la première ligne, et son mot de passe sur la deuxième (cela et seulement cela).
file = open('.compteur_logins','r')
login = file.readline().split('\n')[0]
password = file.readline().split('\n')[0]
file.close()
cookieJar = ClientCookie.CookieJar()
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cookieJar))
opener.addheaders = [('User-agent','Mozilla/5.0 (compatible)')]
ClientCookie.install_opener(opener)
fp = ClientCookie.urlopen('http://forum.ubuntu-fr.org/login.php')
forms = ClientForm.ParseResponse(fp)
fp.close()
form = forms[1]
form['req_username'] = login
form['req_password'] = password
fp = ClientCookie.urlopen(form.click())
fp.close()
file = open('url','r')
tid = file.readline().split('=')[1][:-2] # la première ligne contenant l'adresse du topic.
file.close()
fp = ClientCookie.urlopen('http://forum.ubuntu-fr.org/post.php?tid='+tid)
forms = ClientForm.ParseResponse(fp)
fp.close()
form = forms[1]
title = (((_file == 'count') and 'Scores totaux, depuis le début ') or 'Scores de la période en cours ')
form['req_message'] = title+':[code]'
file = open(_file, 'r')
scores=file.readlines()
urlimage = renderstats(stats)
stats = {}
for i in range(len(scores)): #on veut toutes les lignes restantes
if i == 0:
tmpRange = 0
elif scores[i].split(' ')[0] == scores[i-1].split(' ')[0]:
pass
else:
tmpRange = i
#et on ajoute la ligne avec le bon rang a l'entrée
#form['req_message'] += (('Quelqu\'un' in scores[i] and '*** Vétéran des couche-tard, invaincu avant retraite ***\n') or '')+str(tmpRange+1)+') '+scores[i]+(('Quelqu\'un' in scores[i] and '******************************************************************************\n') or '') #TdCT
form['req_message'] += str(tmpRange+1)+') '+(_file == 'count' and ((('grim7reaper' in scores[i] and scores[i].replace(' ', '+5 ').split('\n')[0]+' ** bonus +5 pour avoir répondu à ce post : ./viewtopic.php?pid=3486252#p3486252 **\n')) or scores[i]) or scores[i]) #TdCCT
form['req_message'] += '[/code]'+(urlimage or '')
if debug:
print form['req_message']
else:
fp = ClientCookie.urlopen(form.click())
fp.close()
def main(urlfile, files):
debug = False
stats = {}
f=open(urlfile,'r')
url=urlscore=f.readline().split('\n')[0]
f.close()
entries = Day()
while True:
print 'lecture de la page '+url
res = getPage(url, entries, stats, urlscore)
urlscore = res[1]
if not res[0]: break
url=url.split('p=')[0]+'p='+str(1+int(url.split('p=')[1]))
if res[0] is not True:
url = res[0]+'&p=1'
if not debug:
f=open(urlfile,'w')
f.write(urlscore+'\n')
f.close()
for file in files:
f=open(file,'r')
lines=(file=='count10days' and ((time.localtime()[2]==2 and ['0 '+entries.entries.keys()[0]+'\n']) or f.readlines()) or f.readlines())
f.close()
exp = re.compile('^[0-9]+\s*')
scores = []
print '\nlecture scores courants :\n', entries.entries.items()
for line in lines:
if line not in [' ','']:
scores.append(Score([(line.split(' ')[0]),exp.split(line)[1].split('\n')[0]]))
new_scores=[]
for entry,num in entries.entries.items():
for score in scores:
if entry.lower() == score.name.lower():
score.num+=num
break
if score is scores[-1]:
new_scores.append(Score([num,entry]))
break
scores+=new_scores
# vérification des doublons
for nScore in range(len(scores)-1):
for mScore in range(nScore+1,len(scores)-1):
try:
if scores[nScore].name.lower() == scores[mScore].name.lower():
scores[nScore].num+=scores[mScore].num
del(scores[mScore])
except:
pass
scores.sort(reverse=True)
if not debug:
f=open(file, 'w')
for score in scores:
f.write('%s\n'%score)
f.close()
for i in range(15):
try:
post(file, stats, debug)
stats = {}
break
except:
if i == 14: raise
time.sleep(60)
main('url',['count','count10days'])
Sauf erreur de copié-collé, ça doit marcher.
En ligne
#2150 Le 02/06/2010, à 19:41
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bon, on va faire un test avec cette nouvelle version pour demain…
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne