Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 106 sur 182 PremièrePremière ... 656969899100101102103104105106107108109110111112113114116156 ... DernièreDernière
Affichage des résultats 3 151 à 3 180 sur 5432
  1. #3151
    Citation Envoyé par Nattefrost Voir le message
    Comme disait l'autre "Y en a des biens".
    Après je n'ai qu'un exemple (le seul packt que je possède il me semble), c'est vraiment du cookbook "bête et méchant" mais il fait très bien son job : https://www.packtpub.com/product/pos.../9781787125537

    Mais sur l'éditeur au global j'ai déjà lu à plusieurs reprises que c'était pas foufou en effet.
    Il donne un livre par jour / semaine, je dois en avoir déjà assez à lire jusqu'à ma mort mais vu que c'est gratuit : je continue de créer une backlog à vomir... :D !

    J'avais commencer à lire un sur ProxMox quand je l'ai installé mais bon, le livre était vraiment chiant à lire. Trop théorique, pas assez pratique : j'aurais préféré un cahier d'exercice... J'avais fini par suivre différentes vidéo sur YT en reproduisant ce qui était fait dans la vidéo et comprendre les actions au fur et à mesure. C'était plus intéressant. Bon après pour Proxmox, j'ai pas l'impression qu'il y est masse de bouquin dessus. Cela doit pas être beaucoup utilisé en entreprise, cela donne plus l'impression que c'est pour des homeserver / bac à sable.
    Citation Envoyé par Kazemaho Voir le message
    Ma cherie arrete pas de raler qu'elle en veut une plus grosse, plus moderne, plus plus plus et moi j'y comprends rien.

  2. #3152
    Proxmox on l'utilise pas au boulot mais j'ai des collègues qui l'utilisent en home server en effet.

    J'ai du avoir de la chance avec mon Cookbook PostgreSQL, après une intro sur la haute dispo c'est vraiment que de la pratique, les différents outils qui permettent de faire de la réplication, comment l'implémenter... et payé par l'employeur en plus .

  3. #3153
    Hello les canards,

    Je cherche quelque chose de simple et de bien fait pour :
    Importer une base SQL (de taille modérée) pour m'entrainer à y faire des requêtes et voir ma sortie avec celle attendue. Le but est vraiment de m'exercer sur du SQL pur et de faire les requêtes à la main pour la compréhension.

    Dans ma formation on utilise pgAdmin4 mais j'ai des problèmes de ports à la maison.

    Ça peut être sur Windows et sur Linux.

    C'est quoi le mieux svp ?
    Battletag : Sariyah#2734 / ID PS5 : Oo_Sariyah_oO



  4. #3154

  5. #3155
    Merci ça a l'air de bien aller. Il y a juste les trucs comme TO_CHAR(datecommande, 'DD/MM/YYYY') qui affiche to_char en nom de colonne mais c'est pas bien grave au final.
    J'ai testé rapidement c'est peut être à configurer mais je vais commencer demain matin alors je verrai.

    Pour le reste, si vous avez des outils/conseils pour progresser rapidement en BDD je suis preneur. Mon objectif est d'arriver à faire des requêtes complexes pour novembre.
    Je vais aussi voir l'optimisation et les tables partitionnées mais si je progresse déjà au niveau des requêtes je devrais pouvoir limiter le casse.
    Battletag : Sariyah#2734 / ID PS5 : Oo_Sariyah_oO



  6. #3156
    Tu fais un AS pour renommer ta colonne. Tochar(..) AS Toto. T'es même pas obligé de le mettre le AS, mais c'est plus lisible avec.

  7. #3157
    Exact ça marche merci.
    Pour le reste j'ai l'impression que je dois surtout bien comprendre et maîtriser les jointures et qu'ensuite ça devrait déjà mieux se passer.
    Battletag : Sariyah#2734 / ID PS5 : Oo_Sariyah_oO



  8. #3158
    Je suis tombé sur un exemple de code qui contenait une fonction factorielle récursive qui n'était pas le centre du propos, mais mon coté expert CPC méprisant n'a pas pu s'empêcher de penser "C'est nul, c'est pas récursif terminal !" Mais est-ce vraiment le cas ? Je teste avec compiler explorer le code suivant :
    Code:
    int fact1(int n)
    {
        return n == 0 ? 1 :  n*fact1(n-1);
    }
    
    int fact2(int n, int r = 1)
    {
        if (n == 0)
            return r;
        else
            return fact2(n-1, r*n);
    }
    En me disant que fact1 va provoquer plein d'appels récursifs inutiles, alors que fact2 va pouvoir profiter de l'optimisation de l'appel terminal et se transformer en boucle.

    Avec gcc (trunk) option -O2 :
    Code:
    fact1(int):
            mov     eax, 1
            test    edi, edi
            je      .L4
    .L3:
            imul    eax, edi
            sub     edi, 1
            jne     .L3
            ret
    .L4:
            ret
    fact2(int, int):
            mov     eax, esi
            test    edi, edi
            je      .L11
    .L8:
            imul    eax, edi
            sub     edi, 1
            jne     .L8
    .L11:
            ret
    Ah ben non, c'est pareil (en fait fact1 est même un peu mieux puisqu'il n'y a pas le second paramètre à passer).

    Avec MSVC (19.27) option /O2
    Code:
    n$ = 48
    int fact1(int) PROC                           ; fact1, COMDAT
    $LN6:
            push    rbx
            sub     rsp, 32                             ; 00000020H
            mov     ebx, ecx
            test    ecx, ecx
            jne     SHORT $LN3@fact1
            lea     eax, QWORD PTR [rcx+1]
            add     rsp, 32                             ; 00000020H
            pop     rbx
            ret     0
    $LN3@fact1:
            dec     ecx
            call    int fact1(int)                      ; fact1
            imul    eax, ebx
            add     rsp, 32                             ; 00000020H
            pop     rbx
            ret     0
    int fact1(int) ENDP                           ; fact1
    
    n$ = 8
    r$ = 16
    int fact2(int,int) PROC                                    ; fact2, COMDAT
            test    ecx, ecx
            je      SHORT $LN12@fact2
    $LL5@fact2:
            imul    edx, ecx
            sub     ecx, 1
            jne     SHORT $LL5@fact2
    $LN12@fact2:
            mov     eax, edx
            ret     0
    int fact2(int,int) ENDP                                    ; fact2
    Cette fois fact1 n'est pas optimisé comme je m'y attendais.

    Je vous épargne clang, qui génère un énorme charabia d'instructions SSE ou équivalentes. Dans une branche (n < 8), c'est similaire à GCC, dans l'autre avec les instructions SSE je ne comprends pas ce qu'il fait mais je n'ai pas vu de "call" non plus.

    Y a-t-il des experts en optimisation de compilateurs par ici ? Je me demande ce qui permet à GCC/clang d'optimiser fact1 et dans quelle limite on peut compter dessus pour optimiser des récursions non-terminales.

  9. #3159
    Ah ben c'est cool que vous en parliez parce que j'ai pour objectif en 2021 d'acquérir de solides bases pour la gestions de bases de données.

    Cette année, j'ai pu me confirmer en Python (pour la data science) et je vais essayer de me faire un site sous Django avant la fin de l'année.

    J'ai découvert Google Data Studio et ça m'a donné d'autant plus envie de pouvoir gagner en skills en data engineering.

  10. #3160
    Citation Envoyé par Sariyah Voir le message
    Exact ça marche merci.
    Pour le reste j'ai l'impression que je dois surtout bien comprendre et maîtriser les jointures et qu'ensuite ça devrait déjà mieux se passer.
    Voilà, y'a presque tout ->



    C'est intéressant d'avoir vu les cas compliqués mais après, en pratique, on ne va guère plus loin que les jointures les plus simples. Parce que c'est vraiment trop compliqué, source d'erreurs, et ça fait une base de code difficile à maintenir.

  11. #3161
    Il manque la jointure vide.
    une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
    Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
    Canard lecture

  12. #3162
    Je ne conseillerais pas trop SQLite pour l'apprentissage de SQL, le typage dynamique peut induire de « mauvaises habitudes » qui poseront des problèmes lorsqu'on reviendra sur des bases de données avec un typage statique (les plus nombreuses). Sinon, il existe des outils pour tester du SQL en ligne, par exemple https://sqltest.net/

  13. #3163
    Citation Envoyé par ducon Voir le message
    Il manque la jointure vide.
    La quoi ?

  14. #3164
    Citation Envoyé par GrandFather Voir le message
    Je ne conseillerais pas trop SQLite pour l'apprentissage de SQL, le typage dynamique peut induire de « mauvaises habitudes » qui poseront des problèmes lorsqu'on reviendra sur des bases de données avec un typage statique (les plus nombreuses). Sinon, il existe des outils pour tester du SQL en ligne, par exemple https://sqltest.net/
    Je n'y pensais pas, c'est vrai que j'utilise pas mal SQLite sur des projets avec beaucoup de read et peu de write car c'est pratique et d'un point de vue déploiement y a pas plus simple. Mais le manque de typage pour apprendre c'est pas dingue en effet. Ca peut valoir le coup de monter un PostgreSQL ou MariaDB sur une VM.

  15. #3165
    Un MySQL avec phpmyadmin, ça s'installe rapidement sur une VM sous linux pour tester
    Y'a aussi SQLExpress, et les bases toutes faites de Microsoft pour s'entraîner (Adventure Works).
    Je préfère quand même la VM, histoire de ne pas pourrir son système avec une bdd, mais la deuxième solution est encore plus simple à installer.
    Sinon en requête, 99% du temps, je fais du LEFT ou du INNER. Right, Full, Outer, je ne les utilise jamais.

  16. #3166
    Citation Envoyé par gros_bidule Voir le message
    La quoi ?
    On voit bien qu’il manque une des huit possibilités.
    une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
    Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
    Canard lecture

  17. #3167

  18. #3168
    Désolé mais j'ai pas compris "le typage dynamique peut induire de « mauvaises habitudes".
    En fait j'essaye de continuer le TP de formation à la maison et sur Sqlite ça semble aller.

    Au départ j'étais pour continuer sur PgAdmin puisque c'est du PostgreSQL qu'on fait mais j'ignore pourquoi les ports ça coince.

    J'hallucine un peu sur le niveau de difficulté des requêtes à base de plein de jointures. Je pleure du sang et je vais avoir du taf pour progresser. Pour les DUT Info ça a l'air de rouler tranquille mais pour les vieux en reconversion c'est plus délicat visiblement.
    Battletag : Sariyah#2734 / ID PS5 : Oo_Sariyah_oO



  19. #3169
    Nan mais les jeunes d'aujourd'hui il leur faut des videos Youtube:

    https://www.youtube.com/watch?v=9yeOJ0ZMUYw
    - La version 3 est arrivée !

  20. #3170
    Citation Envoyé par Sariyah Voir le message
    Désolé mais j'ai pas compris "le typage dynamique peut induire de « mauvaises habitudes".
    En fait j'essaye de continuer le TP de formation à la maison et sur Sqlite ça semble aller.

    Au départ j'étais pour continuer sur PgAdmin puisque c'est du PostgreSQL qu'on fait mais j'ignore pourquoi les ports ça coince.

    J'hallucine un peu sur le niveau de difficulté des requêtes à base de plein de jointures. Je pleure du sang et je vais avoir du taf pour progresser. Pour les DUT Info ça a l'air de rouler tranquille mais pour les vieux en reconversion c'est plus délicat visiblement.
    Non, c'est parce que tu découvres le truc, mais tu verras que ce n'est pas compliqué. Y'a par contre des choix "personnels" dont je ne sais pas s'il existe de bonnes pratiques. J'avais demandé à deux collègues (un vieux de la vieille et un jeune) et chacun m'a donné une réponse différente.
    Par exemple quand t'as une condition sur une table liée, mets-tu la condition sur la jointure ou dans ton WHERE.
    Un exemple (d'ailleurs ça me permet de découvrir, qu'il y'a une version online d'AdventureWorks si tu veux t'entrainer ) :
    https://sqlzoo.net/wiki/AdventureWorks
    On va dire qu'on cherche tous les clients avec la lettre A dans le middleName et qui habitent en Angleterre.
    Y'a deux façons d'écrire la requête :
    Code:
    SELECT C.CustomerID, C.FirstName, C.MiddleName, CA.AddressType, A.City, A.PostalCode, A.StateProvince
      FROM Customer AS C
    INNER JOIN CustomerAddress AS CA ON CA.CustomerID=C.CustomerID
    INNER JOIN Address AS A ON A.AddressID=CA.AddressID
    WHERE C.MiddleName LIKE '%a%' AND A.StateProvince='England'
    ORDER BY A.StateProvince
    ou

    Code:
    SELECT C.CustomerID, C.FirstName, C.MiddleName, CA.AddressType, A.City, A.PostalCode, A.StateProvince
      FROM Customer AS C
    INNER JOIN CustomerAddress AS CA ON CA.CustomerID=C.CustomerID
    INNER JOIN Address AS A ON A.AddressID=CA.AddressID  AND A.StateProvince='England'
    WHERE C.MiddleName LIKE '%a%'
    ORDER BY A.StateProvince
    Les deux possibilités sont justes et pertinentes : Dans le premier cas, les conditions de filtre sont regroupées dans le WHERE, ce qui est plus simple à la relecture. Dans le deuxième cas, les conditions spécifiques à la table Adresse sont regroupées dans sa jointure, du coup, c'est aussi plus simple de les retrouver

    Je n'ai jamais trouvé les bonnes pratiques là-dessus.
    Dernière modification par deathdigger ; 21/09/2020 à 15h29.

  21. #3171
    Citation Envoyé par Cwningen Voir le message
    Y a-t-il des experts en optimisation de compilateurs par ici ? Je me demande ce qui permet à GCC/clang d'optimiser fact1 et dans quelle limite on peut compter dessus pour optimiser des récursions non-terminales.
    Je n'ai pas d'expertise sur ce qui se passe dans le compilo, mais dans mes souvenirs (à condition d'être dans une fonction pure sans effet de bord) une récursion terminale se transforme en boucle de manière triviale, et une récursion non-terminale se transforme au pire en boucle (pas trop efficace) en gérant explicitement la pile des valeurs.

    A mon avis le compilo doit simplement transformer l'appel récursif en terminal, c'est assez évident sur un calcul simple de ce genre qui n'utilise que des opérations commutatives.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  22. #3172
    Des opérations associatives surtout, l'ordre des multiplications est inversé.

    J'ai fait un peu plus de test et je pense qu'il ne faut pas trop compter dessus (surtout en C++). Faire la même chose avec une structure qui contient seulement un int et des opérateurs customs qui font la même chose que les opérateurs normaux suffit à casser l'optimisation de la boucle. Et même sur l'optimisation de l'appel terminal, il faut faire attention à ne pas avoir de destructeurs non-triviaux (sinon ce n'est pas vraiment terminal, mais ça ne se voit pas bien).

  23. #3173
    Perso j'aimais beaucoup les WHERE quand j'ai appris seul le SQL. Je trouvais ça plus logique.
    Avec les formations que j'ai eu ensuite, c'est plus dans la jointure que les gens font ça.

  24. #3174
    Normalement, les même conditions dans un where ou un join..on donneront les mêmes plans d'exécution. Donc les mêmes résultats pour des temps d'exécution identiques.

    Par contre, comme beaucoup de développeurs semblent l'oublier, écrire du code qui peut être relu dans plusieurs mois et le comprendre tout de suite, ça change tout.
    C'est là où les where et join..on vont avoir une vraie signification. Est-ce qu'on veut faire la jointure sur ces valeurs bien précises pour rapprocher 2 tables, ou est-ce qu'on veut juste filtrer un résultat.
    "Tout est vrai, tout existe, il suffit d'y croire."
    Dieu. (enfin… je crois)

  25. #3175
    Citation Envoyé par gros_bidule Voir le message
    C'est intéressant d'avoir vu les cas compliqués mais après, en pratique, on ne va guère plus loin que les jointures les plus simples.
    En pratique on écrit surtout pas de requête à la main.
    ORM pour la majorité des besoins et query-builder pour ce qui demande des trucs à un peu touchy/optimisés/bizarres.
    C'est la faute à Arteis

  26. #3176
    Citation Envoyé par Orhin Voir le message
    En pratique on écrit surtout pas de requête à la main.
    ORM pour la majorité des besoins et query-builder pour ce qui demande des trucs à un peu touchy/optimisés/bizarres.
    Ça dépend. J'ai toujours écrit mes requêtes manuellement, et les outils modernes de requêtage, quand t'es devant un AS400 avec ton strsql, ben ça ne sert à rien.

  27. #3177
    Citation Envoyé par deathdigger Voir le message
    J'ai toujours écrit mes requêtes manuellement
    Pareil, afin de pouvoir les tester/valider dans un utilitaire de gestion de BDD, avant de les transposer telles quelles dans le code et de passer à autre chose.

    Citation Envoyé par Orhin Voir le message
    query-builder
    Code:
    // "SELECT u FROM User u WHERE u.id = ? ORDER BY u.name ASC"
    // using QueryBuilder string support
    $qb->add('select', 'u')
       ->add('from', 'User u')
       ->add('where', 'u.id = ?1')
       ->add('orderBy', 'u.name ASC');
    C'est juste une manière compliquée d'écrire un truc simple qui se lit très bien tel quel. D'ailleurs, ils mettent le SQL en commentaire pour se souvenir de ce que fait la requête.
    « Sans puissance, la maîtrise n'est rien »

  28. #3178
    Citation Envoyé par Foksadure Voir le message
    Code:
    // "SELECT u FROM User u WHERE u.id = ? ORDER BY u.name ASC"
    // using QueryBuilder string support
    $qb->add('select', 'u')
       ->add('from', 'User u')
       ->add('where', 'u.id = ?1')
       ->add('orderBy', 'u.name ASC');
    C'est juste une manière compliquée d'écrire un truc simple qui se lit très bien tel quel. D'ailleurs, ils mettent le SQL en commentaire pour se souvenir de ce que fait la requête.
    Non mais ça c'est de la merde on est d'accord.
    Un vrai query-builder c'est un poil mieux que ça.
    C'est la faute à Arteis

  29. #3179
    En gros tu as plusieurs choix, et ils sont tous viables et utilisés.
    SQL, HQL (le SQL-like dans Hibernate), query-builder...

    D'ailleurs, le JPA (souvent Hibernate) + Spring Data, on en revient un peu. Pas totalement, loin de là, mais par ex Spring a sorti un composant qui permet de faire un truc proche de SQL, avec des facilités (DDL, etc), mais sans la boite noire Hibernate, laquelle peut être franchement compliquée avec ses histoires de sessions, de caches, de lazyloading, d'entités détachées, etc. Biensur, tu peux faire des choses simples avec Hibernate, mais à ce compte là tu ne l'utilises quasiment pas, c'est un peu comme importer Apache Commons-IO juste pour faire un FileUtils.readFileToString. Autant prendre un truc light.

    Le query-builder, je ne sais pas pour vous, mais je le vois souvent lorsqu'on veut faire un moteur de recherche, ou du moins une API ou un service qui permet de filtrer avec pas mal de conditions. C'est mille fois plus sexy et stable qu'une armada de if pour essayer au final de construire une requete SQL, comme le font quelques débutants ^^. Ca ou une librairie qui fait tout ça, genre querydsl (lib Java qui transforme des params d'url en query SQL, parfait pour une API).
    En dehors de ce contexte, c'est très subjectif hein, mais j'ai du mal à trouver ça sexy. Un "@Query("mon sql ou hql")" ça me semble plus clair, et le HQL permet le refactoring.
    Après y'a encore des gens qui font du php, donc bon, les goûts de chiotte... ^^
    Dernière modification par gros_bidule ; 25/09/2020 à 01h12.

  30. #3180
    Citation Envoyé par Foksadure Voir le message
    Pareil, afin de pouvoir les tester/valider dans un utilitaire de gestion de BDD, avant de les transposer telles quelles dans le code et de passer à autre chose.



    Code:
    // "SELECT u FROM User u WHERE u.id = ? ORDER BY u.name ASC"
    // using QueryBuilder string support
    $qb->add('select', 'u')
       ->add('from', 'User u')
       ->add('where', 'u.id = ?1')
       ->add('orderBy', 'u.name ASC');
    C'est juste une manière compliquée d'écrire un truc simple qui se lit très bien tel quel. D'ailleurs, ils mettent le SQL en commentaire pour se souvenir de ce que fait la requête.
    C'est tellement débile ce truc
    Après en C#, avec l'Entity Data Model et l'usage de Linq, pourquoi pas, mais parce que c'est de l'EDM (et encore je préfère les expressions lambda, c'est plus propre). Mais c'est un usage très limité, et en pur SQL, on peut faire des requêtes "compliquées" qui restent lisibles et maintenables.

Page 106 sur 182 PremièrePremière ... 656969899100101102103104105106107108109110111112113114116156 ... DernièreDernière

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
  •