Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 181 sur 185 PremièrePremière ... 81131171173174175176177178179180181182183184185 DernièreDernière
Affichage des résultats 5 401 à 5 430 sur 5543
  1. #5401
    Citation Envoyé par rOut Voir le message
    La valeur en mémoire est la même, que ça soit signé ou non. C'est quand tu vas faire ton affichage ou des calculs que tu vas devoir choisir entre signé ou non. Par simplicité, ici vu que tu lis 16bits et que tu fais (peut être?) des calculs, je te suggère de tout foutre dans un int signé 32bit. Tes valeurs non-signées ou non 16bits sont toutes représentables sans problème de collision.

    En gros:

    Code:
    int valeur;
    
    if (signe)
      valeur = (int16_t)data;
    else
      valeur = (uint16_t)data;
    Et tu auras comme il convient, le bit de signe de data étendu ou non suivant le cas.
    J'y ai pensé, mais je peux avoir du 32b non signé. C'est le max que je peux recupérer. Bon en même temps, en te lisant, pour une valeure, je me dis que je peux utilisé une variable signé 64b.
    Je vais regarder cela, merki

  2. #5402
    J'ai vu ça sur le mur FB d'un ami

    Rien ne me choque moi, je suis un scientifique ! - I. Jones

  3. #5403
    Hello,

    La question du jour, bonjour :D
    J'ai récupéré cette librairie qui permet d'afficher des dessins sur un mini ecran OLED : https://github.com/stealthylabs/libssd1306

    C'est cool, cela fonctionne et tout et tout. Sauf que l'auteur a mis des "fprintf(err_fp, "INFO: Wrote %zd bytes of cmd ", nb);" partout, ce qui donne à l'affichage des trucs comme :

    Code:
    INFO: Wrote 4 bytes of cmd [0x80, 0x20, 0x80, 0x00] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xa8, 0x80, 0x1f] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xd3, 0x80, 0x00] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0x40] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0xa1] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0xc8] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xda, 0x80, 0x02] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0x81, 0x80, 0xff] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0xa4] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0xa6] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xd5, 0x80, 0x80] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xd9, 0x80, 0xf1] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0xdb, 0x80, 0x30] to device fd 6
    INFO: Wrote 4 bytes of cmd [0x80, 0x8d, 0x80, 0x14] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0xaf] to device fd 6
    INFO: Wrote 2 bytes of cmd [0x80, 0x2e] to device fd 6
    INFO: Wrote 6 bytes of cmd [0x80, 0x21, 0x80, 0x00, 0x80, 0x7f] to device fd 6
    INFO: Wrote 6 bytes of cmd [0x80, 0x22, 0x80, 0x00, 0x80, 0x03] to device fd 6
    INFO: Wrote 513 bytes of screen buffer to device fd 6
    Ce qui est ... pseudo pertinent vu que c'est le débogage de la liaison I2C.

    Je passe sur l'affichage sur le terminal de l'écran oled à chaque modification.

    Ce qui fait que ... bah je vois que dalle dans mon terminal tellement il est floodé.

    Est-ce qu'il y a un moyen simple de virer tout cela ?

    Merci

    -------------

    A priori, il y a une option que je pige pas mais ca doit etre la https://github.com/stealthylabs/libs.../ssd1306_i2c.c :
    Code:
     helpful macros
    #ifndef SSD1306_I2C_GET_ERRFP
    #define SSD1306_I2C_GET_ERRFP(P) ((P) != NULL && (P)->err != NULL && (P)->err->err_fp != NULL) ? (P)->err->err_fp : stderr
    #endif // SSD1306_I2C_GET_ERRFP
    Dernière modification par Papeyo ; 04/02/2024 à 18h06.

  4. #5404
    Si tu ne veux pas t'embêter à recompiler, vu qu' il écrit ça sur la sortie d'erreur standard si tu lances ton programme avec un truc du style "programme 2> /dev/null" tu ne devrait plus voir les messages.

  5. #5405
    Je peux recompiler la lib, c'est pas le soucis
    Le truc c'est que j'ai besoin de l'affichage pour mon propre programme

  6. #5406
    Citation Envoyé par Papeyo Voir le message
    Je peux recompiler la lib, c'est pas le soucis
    Le truc c'est que j'ai besoin de l'affichage pour mon propre programme
    Pas besoin de recompiler ou de changer quoi que ce soit :
    Code:
    ssd1306_i2c_t *ssd1306_i2c_open(
            const char *dev, // name of the device such as /dev/i2c-1. cannot be NULL
            uint8_t addr, // I2C address of the device. valid values: 0 (default) or 0x3c or 0x3d
            uint8_t width, // OLED display width. valid values: 0 (default) or 128
            uint8_t height, // OLED display height. valid values: 0 (default) or 32 or 64
            FILE *logerr
        )
    {
    ...
     FILE *err_fp = logerr == NULL ? stderr : logerr;
    Fournis un pointeur pour le paramètre logerr et les messages de la lib iront dedans. Si tu t'en fou du contenu, balance ça dans un /dev/null
    La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!

  7. #5407

  8. #5408
    Je sais pas trop si c'est le bon topic m'enfin je tente ma chance.

    Ca fait quoi un data scientist / data analyst ?

    Pourquoi il est souvent demandé de connaitre Python ? Qu'est ce que ca apporte par rapport à un outil de visualisation type Tableau ou PowerBI ?

  9. #5409
    Ça sert à faire select * from unetableavecdesmilliardsdentrees et de casser ta bdd en prod.

  10. #5410
    C'est loin d'être mon domaine, peut-être qu'un autre pourra te donner une réponse plus détaillé.

    En (très) gros, les data scientists font de l'extraction d'informations pertinentes à partir de données. Ça peut être beaucoup de choses, c'est un peu comme demander ce que fait un développeur, difficile de donner du spécifique.

    python est énormément utilisé dans le monde du machine learning et du traitement de données (et des maths je crois), c'est le language par défaut à cause de ses librairies open source réputées dans ces domaines

  11. #5411
    Apres le python ça s'apprend vite.

  12. #5412
    Pour moi, un Data Analyst/Scientist c'est quelqu'un qui connais les maths et modélisation des données. Comment les représenter, les structurer, etc.

    Par exemple, trouver des clusters dans un set de données en fonction de certains paramètres (voir même s'il existe des clusters tout court), trouver les relations entre certains paramètres (et les neutraliser si besoin), etc. Aujourd'hui on vois tout de suite "IA" quand on parle de ça (et ça en fait parti) mais c'est beaucoup plus vaste que le domaine de l'IA.

    Ils utilisaient beaucoup R avant, mais effectivement Python semble avoir pris le pas depuis. Surtout car c'est l'outil par défaut des académiques, et que dans ce domaine on y garde toujours un pied.

    Par rapport à un PowerBI et autre, bah c'est que PowerBI ça sert surtout à présenter des données (donc plus orienté "aide à la décision"), pas de prospecter des modélisations mathématiques (donc plus orienté "chercheur en math appliqués").

  13. #5413
    Ok merci.
    Je pense que ma confusion vient du fait que ma boîte a décidé de nommer des postes "data scientist" alors qu'en réalité ils font principalement des extractions excel qui sont ensuite connectées à un PowerBI.

  14. #5414
    C'est un peu le problème des énoncés de postes : t'a probablement autant de types de métiers que d'entreprises pour un même intitulé.

    Et j'imagine assez bien que pour faire prestigieux, certains postes de traitement basiques de données soient nommés ainsi...

  15. #5415
    J'ai une petite question PHP/MySQL sur le format des dates (un sujet largement répandu sur la toile mais je n'y ai pas trouvé de réponse)

    Voilà " mon " code (comme tous les gens qui ne savent pas vraiment programmer et qui ne veulent pas s'emmerder avec la syntaxe, j'ai copié/collé de certains sites, etc.)
    Code:
    <?php
    date_default_timezone_set('Europe/Paris');
    $dsn = 'mysql:host=localhost;dbname=bdd;port=3306;charset=utf8';
    try {
    $pdo = new PDO($dsn, 'root' , '');
    }
    catch (PDOException $exception) {
    exit('Erreur de connexion à la base de données');
    }
    $query = $pdo->query("SELECT *, DATE_FORMAT(NAIS, '%W %d %M %Y') AS dateFR FROM BDD");
    $resultat = $query->fetchAll();
    print("<table border=\"1\">");
    foreach ($resultat as $key => $variable)
    {
    print("<tr>");
    $IdArt =$resultat[$key]['IdArtiste'];
    print("<td>".$resultat[$key]['dateFR']."</td>");
    print("<tr>");
    }
    print("</table>");
    ?>
    L'idée est d'afficher en toutes lettres une date en français... Hélas, je me retrouve à l'affichage avec Monday 30 October 1989
    (J'ai vu des sites qui parlaient de configurer son serveur en FR mais... PS : " Mon site " est en local via Wamp)

    Merci par avance les coins coins

  16. #5416
    Un petit setlocale(LC_TIME, 'fr_FR'); ?

  17. #5417
    Citation Envoyé par acdctabs Voir le message
    Un petit setlocale(LC_TIME, 'fr_FR'); ?
    Je l'avais testé (et retesté à l'instant), c'est toujours en english...

  18. #5418
    Passe par une librairie spécialisée ou créé toi même deux arrays avec les jours de la semaine et des mois, demande les valeurs numerique jour semaine/mois à MySQL et map les sur tes tableaux.

  19. #5419
    SET lc_time_names = 'fr_FR';
    avant ta requête ?
    Sinon pourquoi ne pas récupérer la date dans son format natif MySQL et appliquer un formatage avec le bonne locale en PHP ? (question peut être con, je ne connais pas le type de stockage des dates en MySQL)

    Edit: ha tiens, je vois qu'on peut utiliser la fonction DATE_FORMAT avec une locale.
    Ca donnerait un truc du genre DATE_FORMAT(NAIS, '%W %d %M %Y', 'fr_FR')
    "Tout est vrai, tout existe, il suffit d'y croire."
    Dieu. (enfin… je crois)

  20. #5420
    Citation Envoyé par Kamasa Voir le message
    Edit: ha tiens, je vois qu'on peut utiliser la fonction DATE_FORMAT avec une locale.
    Ca donnerait un truc du genre DATE_FORMAT(NAIS, '%W %d %M %Y', 'fr_FR')
    Ah ça fonctionne ! Merci !

    Par contre, je perds l'initiale au jour " lundi 30 octobre 1989 " mais je vais regarder dans les attributs de la fonction
    Encore merci !

  21. #5421
    Citation Envoyé par Awake Voir le message
    créé toi même deux arrays avec les jours de la semaine et des mois, demande les valeurs numériques jour semaine/mois à MySQL et map les sur tes tableaux.
    Pratiquant la même approche que marmottas (programmeur occasionnel mais sans automatismes sur la syntaxe de certains langages "actuels"), j'avais trouvé ça :

    Code:
    function frenchDate() {
        // Jour de la semaine en français
        $jour = getdate();
        $semaine = array(" Dimanche "," Lundi "," Mardi "," Mercredi "," Jeudi "," Vendredi "," Samedi ");
        $mois =array(1=>" janvier "," février "," mars "," avril "," mai "," juin "," juillet "," août "," septembre "," octobre "," novembre "," décembre ");
        return $semaine[$jour['wday']] . $jour['mday'] . $mois[$jour['mon']] . $jour['year'];
    }
    « Sans puissance, la maîtrise n'est rien »

  22. #5422
    J'aurais aussi plus ou moins fait quelquechose dans le genre, pour moi ce n'est pas à la base de données de formatter la date en français, ça doit se faire au moment de l'affichage. Mais dans le cas du script de Marmottas ça semble vraiment pas grave

  23. #5423
    Citation Envoyé par Foksadure Voir le message
    Pratiquant la même approche que marmottas (programmeur occasionnel mais sans automatismes sur la syntaxe de certains langages "actuels"), j'avais trouvé ça :

    Code:
    function frenchDate() {
        // Jour de la semaine en français
        $jour = getdate();
        $semaine = array(" Dimanche "," Lundi "," Mardi "," Mercredi "," Jeudi "," Vendredi "," Samedi ");
        $mois =array(1=>" janvier "," février "," mars "," avril "," mai "," juin "," juillet "," août "," septembre "," octobre "," novembre "," décembre ");
        return $semaine[$jour['wday']] . $jour['mday'] . $mois[$jour['mon']] . $jour['year'];
    }


    Sinon, les navigateurs permettent déjà de formater une date dans la locale de l'utilisateur de façon standardisée.
    Suffit juste d'un petit bout de JS : https://developer.mozilla.org/fr/doc...caleDateString
    C'est la faute à Arteis

  24. #5424
    Peut-être qu'il veut faire du CLI

    Au final j'aurai utilisé https://www.php.net/manual/fr/intlda...ter.format.php ça semble encore l'outil le plus adapté au problème.

  25. #5425
    Bonjour les canards programmeurs,

    je suis face à un petit problème en langage C et j'aurai besoin de vos lumières.
    Je pense que c'est un problème plutôt classique mais je n'arrive pas à formuler une phrase simple pour faire une recherche Google

    Je suis en train de séparer une partie du code d'une application C pour en faire une librairie.
    Mon problème c'est que je me retrouve avec des types définis dans mon application que je dois utiliser dans ma librairie et plus précisément dans une partie des API de ma librairie.

    Quand je compile la lib, tout se passe bien, pas de problème.
    Mais quand je compile l'application, ça déconne, je me retrouve avec des erreurs du genre "type t_toto is already defined".

    Vous connaissez une astuce (genre directive de compil) pour masquer les définitions de type si ils sont déjà définis ailleurs ?

  26. #5426
    Citation Envoyé par DjudjRed Voir le message
    Bonjour les canards programmeurs,

    je suis face à un petit problème en langage C et j'aurai besoin de vos lumières.
    Je pense que c'est un problème plutôt classique mais je n'arrive pas à formuler une phrase simple pour faire une recherche Google

    Je suis en train de séparer une partie du code d'une application C pour en faire une librairie.
    Mon problème c'est que je me retrouve avec des types définis dans mon application que je dois utiliser dans ma librairie et plus précisément dans une partie des API de ma librairie.

    Quand je compile la lib, tout se passe bien, pas de problème.
    Mais quand je compile l'application, ça déconne, je me retrouve avec des erreurs du genre "type t_toto is already defined".

    Vous connaissez une astuce (genre directive de compil) pour masquer les définitions de type si ils sont déjà définis ailleurs ?
    Peut être https://en.wikipedia.org/wiki/Pragma_once ou autre truc similaire a base de #define #ifdef #endif, selon ton compilateur.
    La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!

  27. #5427
    En plus de la réponse de Mr Slurp, j'ajoute que tu peux déclarer un type (ou une fonction) autant de fois que tu le veux, mais tu dois les définir qu'une seule fois.

    Code:
    struct toto_t; /* déclare toto_t mais ne le définit pas */
    
    int foo(struct toto_t *); /* on peut utiliser un type incomplet dans certaines conditions (par exemple pour un pointeur) */
    
    struct toto_t; /* on peut le remettre la déclaration encore une fois, par exemple si elle vient d'un autre fichier. */
    
    struct toto_t
    {
        /* ... */
    }; /* maintenant toto_t est défini. */
    
    struct toto_t; /* et pourquoi pas une déclaration de plus */

  28. #5428
    Citation Envoyé par Cwningen Voir le message
    En plus de la réponse de Mr Slurp, j'ajoute que tu peux déclarer un type (ou une fonction) autant de fois que tu le veux, mais tu dois les définir qu'une seule fois.

    Code:
    struct toto_t; /* déclare toto_t mais ne le définit pas */
    
    int foo(struct toto_t *); /* on peut utiliser un type incomplet dans certaines conditions (par exemple pour un pointeur) */
    
    struct toto_t; /* on peut le remettre la déclaration encore une fois, par exemple si elle vient d'un autre fichier. */
    
    struct toto_t
    {
        /* ... */
    }; /* maintenant toto_t est défini. */
    
    struct toto_t; /* et pourquoi pas une déclaration de plus */
    Aaaah mais oui je vois ce qui manque à mes déclarations de types, du moins les structures.
    La déclaration est faite de cette façon :
    Code:
    typedef struct {
         int toto;
         char machin[10];
    } t_mastruct;
    alors qu'il faudrait faire ainsi :
    Code:
    typedef struct g_mastruct {
         int toto;
         char machin[10];
    } t_mastruct;
    Je ne sais plus exactement le nom de ce principe mais je pense que ça vient de là.

    Le reste du problème vient d'un énuméré qui est déclaré dans les deux codes (lib et appli) sans définition de type dans le genre
    Code:
    enum {
         A,
         B,
         C
    };
    mais je pense que le problème doit être similaire ... si je défini proprement un type qui porte l'énuméré, ça devrait passer.

    Merci pour vos réponses, j'étais plus parti sur une solution comme Mr Slurp proposait mais je vais d'abord tenter de rendre ce code plus strict (ce n'est pas moi qui l'ai codé à la base).

  29. #5429
    Pour compléter, regarde aussi le mot clef 'extern' qui sert à déclarer des éléments qui sont définis à l'extérieur (dans une lib par exemple).
    Les discussions sur SO à ce sujet sont intéressantes (même si ça n'aide pas toujours à avoir une vision totalement claire...)
    https://stackoverflow.com/questions/...n-keyword-in-c

  30. #5430
    Citation Envoyé par DjudjRed Voir le message
    alors qu'il faudrait faire ainsi :
    Pas obligé, on peut avoir des structures anonymes tant qu'elles sont utilisées immédiatement, pour un alias ou une variable.
    Citation Envoyé par DjudjRed Voir le message
    alors qu'il faudrait faire ainsi :
    Le reste du problème vient d'un énuméré qui est déclaré dans les deux codes (lib et appli) sans définition de type dans le genre
    Code:
    enum {
         A,
         B,
         C
    };
    mais je pense que le problème doit être similaire ... si je défini proprement un type qui porte l'énuméré, ça devrait passer.
    Un enum peut être anonyme (même sans être utilisé immédiatement) et on peut déclarer plusieurs enums anonymes (qui seront des enums différents). Mais avec les enums il faut aussi vérifier que les noms de valeurs ne sont pas déjà utilisés. L'usage est d'ajouter un préfixe correspondant au type/module/... :
    Code:
    enum {
        MON_ENUM_A,
        MON_ENUM_B,
        MON_ENUM_C
    };
    Par contre un enum ne peut pas être déclaré sans être également défini. S'il est utilisé dans plusieurs sources, il faut le mettre dans un header avec des gardes comme indiqué par Mr Slurp. Comme ça si le header se retrouve inclus plusieurs fois dans le même fichier source, les gardes empêcheront l'enum d'être défini plusieurs fois.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •