Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile

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)

Hors ligne

#1703 Le 02/08/2011, à 01:44

HP

Re : /* Topic des codeurs couche-tard [5] */

ArkSeth a écrit :

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 ! wink


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] */

tshirtman a écrit :

sinon, c'est grave ça?

Non, ça me semble correct smile

&(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

tshirtman a écrit :

(code sur http://paste.pocoo.org/show/450887/ par ce que ça fait planter le post hmm)

Oui c'est à cause de '(' suivi de '&' suivi de '('.
Y'a aussi ')' suivi de '(' suivi de '&' qui ne passe pas…



ArkSeth a écrit :

le fichier _CACHE_MAP_ est un binaire que je ne sais pas comment parser.

Peut‑être des infos ici et .

É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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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

RépartitionPosts/heure


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] */

grim7reaper a écrit :
tshirtman a écrit :

sinon, c'est grave ça?

Non, ça me semble correct smile

&(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 smile 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 tongue

C'est marrant moins je fais de C, et plus je fais du Python, et plus je devient bon en C tongue, je pensais pas retrouver mes marques aussi vite smile

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


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 ? hmm

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 smile

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;
}
helly a écrit :

Mais y’a pas moyen de tester la valeur max_size() du type vector sans avoir à créer un objet vector ? hmm

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 smile.
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++. hmm

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] */

helly a écrit :

Anéfé ton code est bien différent mais pas insurmontable smile.

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 wink


The Uploader a écrit :

J'ai toujours un mal fou à lire les templates C++. hmm

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 :

The Uploader a écrit :

Quoique là ça reste "gentil". Mais j'ai vu pire..

Ha ouais, je préfère ça tongue

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] */

grim7reaper a écrit :

Peut‑être des infos ici et .

É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 yikes
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)

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

big_smile
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] */

neutral


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] */

helly a écrit :

@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

Re : /* Topic des codeurs couche-tard [5] */

POST'IT WAR \o/
(Cf. ici pour la petite histoire).

Hors ligne

#1724 Le 03/08/2011, à 02:04

Pylades

Re : /* Topic des codeurs couche-tard [5] */

big_smile


“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