#1701 Le 02/08/2011, à 01:07
- Sir Na Kraïou
Re : /* Topic des codeurs couche-tard [5] */
Æ
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne
#1702 Le 02/08/2011, à 01:09
- Elzen
Re : /* Topic des codeurs couche-tard [5] */
Bon, ma lecture des marque-pages a l'air de fonctionner correctement pour Firefox et pour Midori
Seul bémol : je ne vois pas encore comment récupérer les favicons, donc pour le moment, j'affiche une petite icône de marque-page pour chaque, ç'moins beau…
Pour Firefox, j'peux récupérer l'adresse de la favicon dans la base de données, mais je me vois mal essayer de toutes les télécharger à chaque fois que je remets le menu à jour… je suppose qu'avec l'adresse, j'suis censé pouvoir y accéder dans le cache, mais le cache de Firefox est un beau bazar, et le fichier _CACHE_MAP_ est un binaire que je ne sais pas comment parser.
Pour Midori, le problème est du même genre, à ceci près que le cache est un peu moins bordélique, mais que c'est la base de données des marque-pages qui ne contient aucune information au sujet de l'image à utiliser. Vu la tronche des noms de fichiers dans les icônes, j'avais pensé que c'était un truc genre le md5 de l'URL d'où elles viennent, mais en essayant manuellement de calculer le md5 des adresses que j'ai dans mes icônes, j'ai pas trouvé de correspondances.
Je chercherai un peu plus demain. Si quelqu'un a une piste…
Edit : pour info, pour ceux que ça intéresse :
– La base de données de Firefox, c'est ~/.mozilla/firefox/votreprofil/places.sqlite, la table pour les favicons est « moz_favicons ». Le cache de Firefox est dans ~/.mozilla/firefox/votreprofil/Cache, le fichier _CACHE_MAP_ est directement dedans.
– La base de données de Midori, c'est ~/.config/midori/bookmarks.db, la table est « bookmarks » (y en a qu'une pouvez pas vous planter). Le cache de Midori est dans ~/.cache/midori, avec un répertoire icons et un répertoire web, je suppose que c'est le premier qui sert.
– Si vous utilisez python-sqlite, pensez à bien importer sqlite3 et pas sqlite tout court. Le premier s'importe aussi bien, mais vous dira que les fichiers sus-cités sont chiffrés ou ne sont pas des bases sqlite quand vous essayerez d'ouvrir une connexion.
Dernière modification par ArkSeth (Le 02/08/2011, à 01:17)
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#1703 Le 02/08/2011, à 01:44
- HP
Re : /* Topic des codeurs couche-tard [5] */
Seul bémol : je ne vois pas encore comment récupérer les favicons, donc pour le moment, j'affiche une petite icône de marque-page pour chaque, ç'moins beau…
Pour Firefox, j'peux récupérer l'adresse de la favicon dans la base de données, mais je me vois mal essayer de toutes les télécharger à chaque fois que je remets le menu à jour… […].
Je chercherai un peu plus demain. Si quelqu'un a une piste…
Je sais pas… sur mon blog j'ai un script Ajax, de ma conception, qui télécharge et met en cache des favicons, c'est pas ce qu'il y a de plus dur… et encore, c'est du PHP !
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#1704 Le 02/08/2011, à 01:46
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
sinon, c'est grave ça?
Non, ça me semble correct
&(emitter->particles[i])
ça, ça renvoie l'adresse de l'élément i du tableau particles de la structure pointée par emitter donc si c'est ce que tu voulais faire c'est OK
(code sur http://paste.pocoo.org/show/450887/ par ce que ça fait planter le post )
Oui c'est à cause de '(' suivi de '&' suivi de '('.
Y'a aussi ')' suivi de '(' suivi de '&' qui ne passe pas…
le fichier _CACHE_MAP_ est un binaire que je ne sais pas comment parser.
Peut‑être des infos ici et là.
Édit : ici aussi ça semble intéressant (mais peut‑être un peu léger).
Sinon cette discussion (y'a du code python dans le dernier post).
Dernière modification par grim7reaper (Le 02/08/2011, à 01:58)
Hors ligne
#1705 Le 02/08/2011, à 02:23
- samυncle
Re : /* Topic des codeurs couche-tard [5] */
{entre accolades en bleu}
Hello world
Hors ligne
#1706 Le 02/08/2011, à 02:23
- nesthib
Re : /* Topic des codeurs couche-tard [5] */
plop
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
#1707 Le 02/08/2011, à 03:13
- samυncle
Re : /* Topic des codeurs couche-tard [5] */
.
Hello world
Hors ligne
#1708 Le 02/08/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores totaux, depuis le début :
1) 3943 nesthib
2) 3411 Πυλάδης
3) 3410 samuncle
4) 2525 Кຼزດ
5) 2011 cm-t
6) 1800+5 grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 1629 na kraïou
8) 879 helly
9) 872 \\Ouranos//
10) 752 tshirtman
11) 659 gnuuat
12) 565 Lagierl
13) 448 Rolinh
14) 431 The Uploader
15) 428 nathéo
16) 271 Kanor
17) 202 :!pakman
18) 196 Askelon
19) 121 ǤƦƯƝƬ
20) 103 kamui57
21) 95 HP
22) 93 petifrancais
23) 78 edge_one
23) 78 pierguiard
25) 70 gulp
26) 45 Le Rouge
27) 42 sakul
28) 37 ilagas
29) 36 xapantu
30) 30 keny
30) 30 Atem18
32) 26 gustare
32) 26 d10g3n
34) 25 GentooUser
34) 25 Morgiver
36) 24 ไ୦บเઢ'
36) 24 Steap
38) 20 CROWD
39) 18 Ph3nix_
40) 16 kouskous
41) 15 timsy
41) 15 pfranco
43) 12 stratoboy
43) 12 sailing
45) 11 alexises
45) 11 Crocoii
47) 10 Toineo
47) 10 NutMotion
47) 10 pseudovingtcinqcaracteres
47) 10 pfriedZ
47) 10 CasseTaTele
47) 10 Zeibux
47) 10 THS`
47) 10 golgoth42
47) 10 ꙳♒⏅⚓ ЅаίԼίՈԶ ⚓⏅♒꙳
56) 8 Mornagest
57) 7 Vista
58) 6 ubuntlin
58) 6 asma.geek
60) 5 tendances-tdct
60) 5 kinouchou
62) 4 danychou56
62) 4 Neros
62) 4 Biaise
62) 4 totoflute
62) 4 pinballyoda ㋛
62) 4 NLS le pingouin
62) 4 ceric
62) 4 Dice-Man
62) 4 Pylade
71) 3 Revan26914
71) 3 raspouillas
71) 3 sweetly
74) 2 SoJaS
75) 1 geenux
75) 1 ArzhurBZH
75) 1 monsieurweller
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
#1709 Le 02/08/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores de la période en cours :
1) 10 nesthib
1) 10 Πυλάδης
3) 6 samuncle
3) 6 na kraïou
3) 6 HP
6) 5 tshirtman
6) 5 cm-t
8) 3 Кຼزດ
9) 1 helly
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
#1710 Le 02/08/2011, à 09:35
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Après amendement…
[master b2edbec] great refactoring for parse(); implementation of ‘!’ options; next work have to focus on select_parser() and open_parser()
10 files changed, 230 insertions(+), 89 deletions(-)
create mode 100644 global.h
create mode 100644 parser.c
create mode 100644 parser.h
“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
#1711 Le 02/08/2011, à 09:40
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
tshirtman a écrit :sinon, c'est grave ça?
Non, ça me semble correct
&(emitter->particles[i])
ça, ça renvoie l'adresse de l'élément i du tableau particles de la structure pointée par emitter donc si c'est ce que tu voulais faire c'est OK
yep j'avais un doute sur le résultat de & sur une case d'un tableau, mais apparement le C est moins méchant que dans mes souvenirs
C'est marrant moins je fais de C, et plus je fais du Python, et plus je devient bon en C , je pensais pas retrouver mes marques aussi vite
Hors ligne
#1712 Le 02/08/2011, à 10:28
- helly
Re : /* Topic des codeurs couche-tard [5] */
Ayé, je pense avoir trouvé le test ultime pour isUnsignedInt, et bien plus simple que d’utiliser des long long int !
Je passe par un paste vu que le forum n’en veut encore pas -_-.
http://paste.tdct.org/index.php?o
En gros :
0)soit nb un string contenant la valeur à tester
1) je test si c’est un nombre (composé de chiffres)
2) je créé un autre string (nommé max) contenant la valeur de MAX_UNSIGNED
3) si max.size() < nb.size() → je renvoie false
4)si max.size() == nb.size() : si nb.compare(max) > 0 → je renvoie false
5)tout est okay, je renvoie true .
edit : autre chose, il faut en fait ensuite aussi tester si la valeur n’est pas trop grande pour l’alloc d’un vector.
Pour ça je fais
unsigned int num;
std::istringstream iss(nb);
iss >> num;
std::cout<<"test vecteur\n";
//test s’il ne dépasse pas la capacité max du vector.
std::vector<int> vect;
if (num > vect.max_size())
return false;
Mais y’a pas moyen de tester la valeur max_size() du type vector sans avoir à créer un objet vector ?
Dernière modification par helly (Le 02/08/2011, à 10:41)
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
#1713 Le 02/08/2011, à 11:18
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Ça me semble bon ton affaire
Allez, je lâche ma solution. L'approche est différente de la tienne car en fait on n'est pas tout à fait partie sur le même truc.
Toi t'as fait une fonction qui vérifie si une chaîne est un unsigned int, moi j'ai fait une fonction qui lit un unsigned donc mon code est forcément différent du tien.
Bon trêve de bavardage, place au code :
template<typename T>
bool read_unsigned(T& n, const std::string& prompt, std::size_t limits = 0)
{
bool status = false;
bool ok = false;
std::string str;
while(!ok)
{
std::cout << prompt;
std::cin >> str;
// ^D (Linux) ou ^Z (Windows)
if(std::cin.eof())
ok = true;
// Si la lecture echoue ou si on a autre chose que des nombres
// (genre '-' pour les negatifs ou '.' pour les flottants).
else if(std::cin.fail() ||
str.find_first_not_of("0123456789") != std::string::npos)
{
std::cerr << "Saisie incorrecte\n";
std::cin.clear(); // On remet le flux dans un etat coherent.
// On purge le buffer.
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
// A premiere vue ca semble OK.
else
{
std::istringstream iss(str);
iss >> n;
// Si ca echoue (genre nombre trop grand) ou
// s'il reste des caracteres (genre l'user tape 123abc).
if(iss.fail() || !iss.eof())
std::cerr << "Erreur de conversion\n";
// S'il y a une limite superieure, on teste.
else if(limits != 0 && n > limits)
std::cerr << "Depassement de la limite ("<< limits << ")\n";
else // Sinon on est bon \o/
{
ok = true;
status = true;
}
}
}
return status;
}
J'ai templaté tout ça pour qu'on puisse lire des unsigned short, unsigned int, unsigned long et unsigned long long au besoin.
Pti exemple d'utilisation :
int main()
{
unsigned int i;
bool ok = false;
// std::vector<int> v;
ok = read_unsigned(i, "Veuillez entrer un entier positif : ");
// ok = read_unsigned(i, "Veuillez entrer un entier positif : ", v.max_size());
if(ok)
std::cout << "Entier lu = " << i << '\n';
return 0;
}
Mais y’a pas moyen de tester la valeur max_size() du type vector sans avoir à créer un objet vector ?
Non, car ça dépend de ce que tu stockes dans ton std::vector, et c'est normal car un int prend plus de place qu'un char.
Si c'est des char la limite c'est 4 294 967 295, si c'est des short la limite est 2 147 483 647, si c'est des int la limite c'est 1 073 741 823, etc (valeur de mon système).
On sait que le plus gros truc qu'on peut avoir en mémoire c'est size_t (qui chez moi est synonyme d'unsigned int).
Or, qu'est ce qu'on remarque (je prends les valeurs chez moi) :
Valeur max de size_t = valeur max de unsigned int = 2^32 - 1 = 4 294 967 295
4 294 967 295 / 1 = 4 294 967 295 / sizeof(char) = 4 294 967 295 = max_size pour un vecteur de char
4 294 967 295 / 2 = 4 294 967 295 / sizeof(short) = 2 147 483 647 = max_size pour un vecteur de short
4 294 967 295 / 4 = 4 294 967 295 / sizeof(int) = 1 073 741 823 = max_size pour un vecteur d'int
…
Donc max_size renvoie valeur max de size_t / sizeof(type), ce qui est logique quand on y réfléchi.
Donc tu pourrais peut être bidouiller pour l'avoir comme ça sans allouer de vecteur, mais je suis pas convaincu de la portablilité de cette bidouille (certains systèmes pourraient avoir des limites plus contraignantes que size_t / sizeof(type)) donc vaut mieux que tu évites.
De toute façon va bien falloir que tu le créés ton std::vector pour la suite de ton programme. Donc tu le fais avant d'invoquer ta fonction et tu passes lui passe la limite en paramètre et si la fonction renvoie vrai bah tu fais un joli resize sur ton std::vector précedemment créer et hop !
Ça t'évite de créer un std::vector dans ta fonction juste pour chopper la limite et au moins tu restes portable.
Dernière modification par grim7reaper (Le 02/08/2011, à 11:25)
Hors ligne
#1714 Le 02/08/2011, à 11:22
- helly
Re : /* Topic des codeurs couche-tard [5] */
Anéfé ton code est bien différent mais pas insurmontable .
Je pense avoir compris grossièrement, mais je vais me pencher dessus plus en détail cet aprèm.
Merci o/.
…
Bon, l’unsigned int, okay, maintenant les rotors >_<.
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
#1715 Le 02/08/2011, à 11:25
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
J'ai toujours un mal fou à lire les templates C++.
Quoique là ça reste "gentil". Mais j'ai vu pire..
Dernière modification par The Uploader (Le 02/08/2011, à 11:26)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1716 Le 02/08/2011, à 11:36
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Anéfé ton code est bien différent mais pas insurmontable .
Ouais, c'est plus simple que ça en a l'air, et puis j'ai surcommenté donc ça devrait aller.
Au pire, si t'as des questions tu sais où demander
J'ai toujours un mal fou à lire les templates C++.
O_o", y'a 4 fois rien là.
J'aurais posté de la métaprog comme ça (calcul de cos(0.42) en utilisant le développement en série entière d'ordre 42, tout est calculé lors de la compilation : le code généré c'est que de la multiplication de constantes entières, on peut difficilement faire plus rapide) :
#include <iostream>
// Factorielle.
template <int I> inline double Factorielle()
{
return I * Factorielle<I - 1>();
}
template <> inline double Factorielle<0>()
{
return 1.0;
}
// Puissance
template <int N> inline double Puissance(double x)
{
return x * Puissance<N - 1>(x);
}
template <> inline double Puissance<0>(double x)
{
return 1.0;
}
// Cosinus
template <int N> inline double Cosinus(double x)
{
return Cosinus<N - 1>(x) + (N % 2 ? -1 : 1) * Puissance<2 * N>(x) / Factorielle<2 * N>();
}
template <> inline double Cosinus<0>(double x)
{
return 1.0;
}
int main()
{
std::cout << Cosinus<42>(0.42) << '\n';
}
Jt'aurais compris (et puis là ça reste de la métaprog relativement lisible).
Mais sur mon bout de code, quand même…
Édit :
Quoique là ça reste "gentil". Mais j'ai vu pire..
Ha ouais, je préfère ça
Dernière modification par grim7reaper (Le 02/08/2011, à 11:40)
Hors ligne
#1717 Le 02/08/2011, à 16:24
- helly
Re : /* Topic des codeurs couche-tard [5] */
@Pylade : c’est quand que t’installes archlinux en dur alors ?
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
#1718 Le 02/08/2011, à 17:13
- Elzen
Re : /* Topic des codeurs couche-tard [5] */
Peut‑être des infos ici et là.
Édit : ici aussi ça semble intéressant (mais peut‑être un peu léger).
Sinon cette discussion (y'a du code python dans le dernier post).
Merci, j'essaye de décortiquer les infos présents dans ces liens, mais ça donne mal à la tête…
Quant au code python du dernier post, heureusement qu'on a le code source de la page, parce que du code Python pas indenté, ça fait peur
J'ai essayé, il arrive bien grosso-modo à lire le fichier, mais ça me paraît pas tellement plus utilisable.
Pour ce qui est du cache de Midori, après tests supplémentaires, je confirme que c'est bien le md5 de l'adresse, sauf qu'apparemment, c'est celui de l'adresse de la favicon elle-même, donc pas l'adresse du marque-page. Donc comment je fais pour connaître l'adresse exacte de la favicon à partir du marque-page ? Ç'pas comme si c'était toujours « /favicon.ico »…
Bon, j'crois que j'vais laisser tomber la récupération des favicons pour le moment. Si quelqu'un a des idées, j'veux bien, ceci dit…
Dernière modification par ArkSeth (Le 02/08/2011, à 17:14)
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#1719 Le 02/08/2011, à 19:57
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
@helly : c'est ptetr cool de se la péter avec un noyau fait maison, mais on t'identifie plus facilement si t'utilises des logiciels un peu bavard.
Je viens de jeter un œil à mes logs et j'ai ça dedans
Linux 3.0.0-ALENT
Il semblerait que newsbeuter soit un peu trop bavard avec l'user‑agent…
Hors ligne
#1720 Le 02/08/2011, à 19:58
- helly
Re : /* Topic des codeurs couche-tard [5] */
Classe Reflecteur [DONE].
Gestion des erreurs [BUSY]
Templates [WAITING]
Dernière modification par helly (Le 02/08/2011, à 20:00)
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
#1721 Le 03/08/2011, à 00:40
- \\Ouranos//
Re : /* Topic des codeurs couche-tard [5] */
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#1722 Le 03/08/2011, à 01:11
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
@Pylade : c’est quand que t’installes archlinux en dur alors ?
Dès que je peux faire des sauvegardes. Et comme la première année de garantie de mon DDE expire bientôt, je vais être obligé de l’échanger dans pas longtemps. ^^
“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
#1723 Le 03/08/2011, à 01:52
- grim7reaper
Hors ligne
#1724 Le 03/08/2011, à 02:04
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
“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
#1725 Le 03/08/2011, à 02:09
- Sir Na Kraïou
Re : /* Topic des codeurs couche-tard [5] */
:mæd:
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne