Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 325 sur 334 PremièrePremière ... 225275315317318319320321322323324325326327328329330331332333 ... DernièreDernière
Affichage des résultats 9 721 à 9 750 sur 10008
  1. #9721
    Citation Envoyé par Mayalabielle Voir le message
    Cool, merci
    Après faut voir, mais typiquement ça permet de partager la possession de ta variable. Arc c'est la version threads safe et sinon normalement tu utilises rc.

  2. #9722
    Citation Envoyé par TiNitro Voir le message
    Vous avez un truc pour imprimer des sources Python ? :inception:
    Kate.
    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

  3. #9723
    J'ai une grosse base de données Oracle et je voudrais pouvoir générer des diagrammes Entités/Relationnel à partir du schéma en sélectionnant les tables qui m'intéresse.

    Je voudrais une fois la génération terminée pouvoir modifier le diagramme facilement à la main:
    - il n'y a pas forcément les contraintes de foreign key, donc je voudrais manuellement faire un lien
    - certaines tables ont des dizaines, voir centaines, de colonnes inintéressante pour la structure, donc je voudrais bien n'en garder que quelques une.

    Je pourrais le faire à la main, mais je suis pour en faire le moins possible, donc il me faut un outil.
    J'ai joué avec SQL Developer, mais le data-modeler:
    - produit des vues vraiment moche
    - est compliqué à utilisé
    - ne permet pas de bricolage à la main
    - peut affecter le vrai schéma de base, et j'ai peur de défoncer la table en bricolant mon diagramme.

    J'ai vu sur Google plein de trucs payant.

    Vous connaissez un outil gratuit qui permettent de faire ce genre de diagramme ?

  4. #9724
    Concours Pwn2Own : Edge percé cinq fois, VMware deux fois, Chrome résiste

    (...)Le concours prévoyait donc 100 000 dollars à toute équipe qui parviendrait à s’échapper d’une machine virtuelle créée par VMware Workstation ou Hyper-V de Microsoft. Deux équipes chinoises se sont lancées dans l’aventure, Team Sniper et 360 Security. Les deux ont réussi à sortir d’une machine virtuelle VMware et à exécuter du code sur le système hôte. Elles ont donc empoché la récompense. Personne ne s’est attaqué à Hyper-V.(...)
    Ca rassure...
    "Déconstruire", c'est "détruire" en insérant des "cons".
    Battle.net (Diablo 3) : Fbzn#2658 ----- / ----- / ----- Steam ID

  5. #9725
    Citation Envoyé par William Vaurien Voir le message
    J'ai une grosse base de données Oracle et je voudrais pouvoir générer des diagrammes Entités/Relationnel à partir du schéma en sélectionnant les tables qui m'intéresse.

    Je voudrais une fois la génération terminée pouvoir modifier le diagramme facilement à la main:
    - il n'y a pas forcément les contraintes de foreign key, donc je voudrais manuellement faire un lien
    - certaines tables ont des dizaines, voir centaines, de colonnes inintéressante pour la structure, donc je voudrais bien n'en garder que quelques une.

    Je pourrais le faire à la main, mais je suis pour en faire le moins possible, donc il me faut un outil.
    J'ai joué avec SQL Developer, mais le data-modeler:
    - produit des vues vraiment moche
    - est compliqué à utilisé
    - ne permet pas de bricolage à la main
    - peut affecter le vrai schéma de base, et j'ai peur de défoncer la table en bricolant mon diagramme.

    J'ai vu sur Google plein de trucs payant.

    Vous connaissez un outil gratuit qui permettent de faire ce genre de diagramme ?
    Bon avec 10 jours de retard, je me permet de répondre quand même.
    DbVisualizer
    J'ai installé récemment une version 9.2.13 gratos. Il me semble que certaines versions supérieures sont payantes ou truffées de publicités louches...
    "Tout est vrai, tout existe, il suffit d'y croire."
    Dieu. (enfin… je crois)

  6. #9726
    tu fais bien de te permettre j'avais mis tout ça de côté !
    Je suis en train de dl la version 9.2 pour tester tout ça. Merci du tuyau

    En plus c'est marqué que RockStar l'utilise

    Je vais avoir une bonne excuse pour procrastiner un peu aujourd'hui: "regarde chef j'apprend un nouveau soft pour faire cette doc qui aurait dû être faite depuis 20 ans"

    Pour la peine, voici le WTF du jour de mon projet en C "papy inside":

    /* plein de C au dessus */

    EXEC SQL SELECT lower(:variable) INTO :variable FROM dual;

    /* plein de C en dessous */
    Donc EXEC SQL ... ; c'est un pre-processeur Oracle qui permet de faire des requête en base et de mapper les résultat dans des variables ou des structures. Cool.
    Sauf quand c'est utilisé pour mettre une string en minuscule
    Dernière modification par William Vaurien ; 23/03/2017 à 14h48.

  7. #9727
    Citation Envoyé par William Vaurien Voir le message


    Pour la peine, voici le WTF du jour de mon projet en C "papy inside":



    Donc EXEC SQL ... ; c'est un pre-processeur Oracle qui permet de faire des requête en base et de mapper les résultat dans des variables ou des structures. Cool.
    Sauf quand c'est utilisé pour mettre une string en minuscule
    Vraiment?

  8. #9728
    Oui vraiment... et ensuite le code faisait une recherche simple, mais implémenté 'à la main' à coup de boucles imbriquées et de comparaisons caractère par caractère.
    Donc une centaine de lignes pour vérifier si le nom de domaine d'un email faisait partie d'une liste interdite en base.

  9. #9729
    Citation Envoyé par William Vaurien Voir le message
    Oui vraiment... et ensuite le code faisait une recherche simple, mais implémenté 'à la main' à coup de boucles imbriquées et de comparaisons caractère par caractère.
    Donc une centaine de lignes pour vérifier si le nom de domaine d'un email faisait partie d'une liste interdite en base.
    Miam. Tu devrais dépenser une journée à trouver un exploit rigolo.
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  10. #9730
    Citation Envoyé par William Vaurien Voir le message
    Oui vraiment... et ensuite le code faisait une recherche simple, mais implémenté 'à la main' à coup de boucles imbriquées et de comparaisons caractère par caractère.
    Donc une centaine de lignes pour vérifier si le nom de domaine d'un email faisait partie d'une liste interdite en base.
    ça sent le mec qu'était pas à l'aise avec le C... t'as encore bcp de procédure stockée ?
    Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09

  11. #9731
    Non, il n'y a quasiment aucune procédure stockée.
    En fait c'est plus des mecs qui sont bon en C, mais en C Kernighan and Ritchie.
    Le soft est passé par plusieurs archis: Unix HP en mode mainframe, puis unix HP en mode web (avec un obscure middle-ware qui fait aussi de l'UI X11, windows et web), puis Unix Solaris, puis maintenant Linux.

    Toute l'architecture est basé sur un paradigme monocouche à base de copié-collé ().
    En gros c'est un cgi-bin, la requête rentre par un apache et est transféré au middleware propriétaire qui gère une espèce de session web, appel un bout de code en C qui peut récupérer les paramètres de la requête fait son business (logique et persistance) et va ensuite écrire dans des formulaires.
    C'est ultra KISS (surtout pour la partie Stupid en fait...)

    Les devs viennent d'une époque ou les lib n'étaient pas trop standards et ou c'était habituel d'avoir une grosse méthode qui fait tout, très linéaire (et simple à débugguer).
    Il y a bien deux / trois fichier Util*** pour les dates par exemple, mais ils n'ont jamais vraiment été intéressé par intégrer des librairies pour se faciliter la vie, ni par avoir des structures de données avancées (hein, hashmap ). En gros ils n'ont pas fait de veille techno de leur vie...

    Pour éviter les fuites mémoires, il n'y a quasiment aucune allocation de mémoire dynamique: les tableaux de char sont alloué en dur au doigt levé...
    La gestion des erreurs lors des appels à la base sont géré par les mêmes 5 lignes, avec juste un message différent. Donc c'est 5 * 1000* n lignes inutilement copié/collées (je ne connais pas exactement n, mais c'est haut!)

    Bref, c'est avec ce genre de projet que l'on comprend d'où vient Java

  12. #9732

  13. #9733
    Ouputain tu lances un refactoring, et comme métriques pour l'efficacité de ce refactoring, tu demandes à ce qu'on prenne en compte le nombre de ligne supprimées
    Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09

  14. #9734
    Le gros danger pratique c'est que cette usine à gaz a probablement des bugs, ou au moins des comportements spécifiques.
    Et qu'en réécrivant ce code comme une black box avec une sémantique haut niveau, et poteniellement en enlevant ces "features", on peut péter complètement le système, s'ils sont compensés ailleurs d'une façon ou d'une autre.
    Bref, t'es dans la merde, tu marches sur des œufs, et il faut strive pour être à comportement constant sous peine que ce te soit reproché :-/
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  15. #9735
    L'application va bientôt fêter ses 30 ans pour ses parties les plus anciennes.
    Les bugs ont finit par être éradiqués avec le temps, et c'est une appli de gestion, donc il n'y a pas non plus une complexité folle (ni dans le business, ni dans la charge).
    Pas de refactoring, pas à ce niveau.
    Le plan c'est de figer la bête et de déplacer des parties au fur et à mesure vers d'autres plateformes (soit in-house soit avec un progiciel).
    Mais c'est un plan sur 5-10ans... Donc je déprime un peu et je vais devoir maintenir ce soft faisandé encore quelques temps.

  16. #9736
    Je sur du rust,

    J'ai un dép pour un client irc, une dep pour un client http. Les deux ont besoin d'une version différente de la lib openssl et paf, chocapic, ça ne build plus :

    Code:
    error: native library `openssl` is being linked to by more than one version of the same package, but it can only be linked once; try updating or pinning your dependencies to ensure that this package only shows up once
    J'ai beau tourner le truc dans tout les sens, impossible de m'en sortir. Si quelqu'un à une idée...
    "Nobody exists on purpose. Nobody belongs anywhere. We're all going to die. Come watch TV." - Morty Smith

  17. #9737
    Citation Envoyé par Mayalabielle Voir le message
    Je sur du rust,

    J'ai un dép pour un client irc, une dep pour un client http. Les deux ont besoin d'une version différente de la lib openssl et paf, chocapic, ça ne build plus :

    Code:
    error: native library `openssl` is being linked to by more than one version of the same package, but it can only be linked once; try updating or pinning your dependencies to ensure that this package only shows up once
    J'ai beau tourner le truc dans tout les sens, impossible de m'en sortir. Si quelqu'un à une idée...
    Tu es dans le même dépôt Cargo ?

  18. #9738
    Ouais, la solution temporaire c'est désactiver ssl pour la dépendance ou je peux m'en passer un peu plus facilement :

    Code:
    [dependencies]
    regex = "0.2"
    [dependencies.select]
    git = "https://github.com/utkarshkukreti/select.rs.git"
    [dependencies.hyper-openssl]
    git = "https://github.com/sfackler/hyper-openssl.git"
    [dependencies.irc]
    git = "https://github.com/aatxe/irc"
    default-features = false
    features = ["encode", "ctcp"]
    "Nobody exists on purpose. Nobody belongs anywhere. We're all going to die. Come watch TV." - Morty Smith

  19. #9739
    Citation Envoyé par Mayalabielle Voir le message
    Ouais, la solution temporaire c'est désactiver ssl pour la dépendance ou je peux m'en passer un peu plus facilement :

    Code:
    [dependencies]
    regex = "0.2"
    [dependencies.select]
    git = "https://github.com/utkarshkukreti/select.rs.git"
    [dependencies.hyper-openssl]
    git = "https://github.com/sfackler/hyper-openssl.git"
    [dependencies.irc]
    git = "https://github.com/aatxe/irc"
    default-features = false
    features = ["encode", "ctcp"]
    Mais la vraie question c'est pourquoi tes 2 applis ont besoin d'avoir une version différente de openssl ?
    Les deux target c'est des binaires je suppose ?

  20. #9740
    Ce n'est pas deux applis, mais une qui utilise deux deps (irc + client http). Ces deux deps ont dans leur Cargo.toml, une version différente de openssl-sys.
    "Nobody exists on purpose. Nobody belongs anywhere. We're all going to die. Come watch TV." - Morty Smith

  21. #9741
    Citation Envoyé par Mayalabielle Voir le message
    Ce n'est pas deux applis, mais une qui utilise deux deps (irc + client http). Ces deux deps ont dans leur Cargo.toml, une version différente de openssl-sys.
    Va falloir en bumper une des deux pour les aligner. Ca va peut-être nécessiter de changer du code dans la lib.
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  22. #9742
    Citation Envoyé par Tramb Voir le message
    Va falloir en bumper une des deux pour les aligner. Ca va peut-être nécessiter de changer du code dans la lib.
    Pour avancer, j'ai fait la concession de désactiver SSL sur la partie IRC, mais oui dans l'idée va y avoir un peu plus de boulot que prévu. C'est mon premier réel projet en Rust et je dois avouer que le bootstrap n'a pas été facile.
    "Nobody exists on purpose. Nobody belongs anywhere. We're all going to die. Come watch TV." - Morty Smith

  23. #9743
    @William : je dis peut-être une connerie, mais tu ne pourrais pas mettre en place des webservices pour ton nouveau code ?
    En gros, tout ce que tu reprends en propre est foutu à un autre endroit, et tu y accèdes en WS via l'apache déjà en place.

  24. #9744
    Non, c'est pas une connerie du tout, c'est la voie que nous essayons de mettre en place. Par contre le vieux code est pas trop fait pour ce genre de refonte. Comme tous les aspects (UI, DB, business, plomberie) sont mélangés dans de grandes méthodes...
    Les nouveaux trucs sont développés sous forme de services extérieurs également.
    Dernière modification par William Vaurien ; 03/04/2017 à 14h00.

  25. #9745
    Question pour les experts C et système Unix/Linux:

    Pourquoi "If copying takes place between objects that overlap, the behavior is undefined." ? Qu'est-ce qui provoque ce comportement indéfini ???

    dans string.h (version apple https://opensource.apple.com/source/...bproj/strcpy.c)
    Code:
    /* ANSI sez:
     *   The `strcpy' function copies the string pointed to by `s2' (including
     *   the terminating null character) into the array pointed to by `s1'.
     *   If copying takes place between objects that overlap, the behavior
     *   is undefined.
     *   The `strcpy' function returns the value of `s1'.  [4.11.2.3]
     */
    char *
    strcpy(char *s1, const char *s2)
    {
        char *s = s1;
        while ((*s++ = *s2++) != 0)
    	;
        return (s1);
    }
    Dans notre vieux code pourri strcpy est parfois utilisé avec des 'overlapping pointers'. Sur Solaris et HP UX il n'y jamais eu de problèmes. Sur Linux le code se mange du comportement de merde.

    Sinon dans une autre version de string.h il y a ces macros (version linux http://lxr.free-electrons.com/source/lib/string.c)
    Code:
    #ifndef __HAVE_ARCH_STRCPY
     81 /**
     82  * strcpy - Copy a %NUL terminated string
     83  * @dest: Where to copy the string to
     84  * @src: Where to copy the string from
     85  */
     86 #undef strcpy
     87 char *strcpy(char *dest, const char *src)
     88 {
     89         char *tmp = dest;
     90 
     91         while ((*dest++ = *src++) != '\0')
     92                 /* nothing */;
     93         return tmp;
     94 }
     95 EXPORT_SYMBOL(strcpy);
     96 #endif
    C'est quoi __HAVE_ARCH_STRCPY ??? Est-ce que c'est ça qui pourrait activer un comportement de merde sur Linux ? Une version optimisée pour l'OS ???

    En gros j'ai compris qu'il ne fallait pas utiliser strcpy. Mais je ne sais pas pourquoi, et je déteste obéir sans comprendre
    Merci d'avance aux experts CPC

  26. #9746
    Y a pas de "pourquoi?" dans ce genre de normes. C'est comme ça.
    Et ça permet d'éviter un test.
    Par contre, je ne vois pas dans quel scénario fou tu peux faire un strcpy qui overlappe.
    Des memcpy, on pourrait à la limite en débattre
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  27. #9747
    Citation Envoyé par William Vaurien Voir le message
    Pourquoi "If copying takes place between objects that overlap, the behavior is undefined." ? Qu'est-ce qui provoque ce comportement indéfini ???
    Tu peux voir facilement que c'est la merde si tu veux écrire une fonction de copie efficace qui fonctionne quelle que soit source et destination : il faut regarder si tu dois faire la copie en partant du début ou de la fin (sachant qu'ici tu sais pas où est la fin), et quelle taille de mot tu peux utiliser... Du coup la fonction ne gère que le cas sans recouvrement.

    Pour le cas où tu connais la taille tu peux utiliser memmove qui gère les recouvrements à la place de memcpy. Si ça peut te rassurer, en pratique, il y a encore pas mal de code dans la nature qui a ce bug d'appeler memcpy sur des zones avec recouvrement. À une époque Intel avait fourni une version de memcpy optimisée pour Atom qui copiait en partant de la fin : ils l'ont retiré, ça faisait segfaulter Skype.

  28. #9748
    Ben par exemple si s1 pointe sur s2+1, avec cette implémentation, tu vas te retrouver avec n fois s2[0] dans s1, au lieu de copier s2 dans s1.

    Pour la seconde question, c'est probablement pour les architectures qui ont une version spécialisé, et optimisée. Genre en assembleur pour copier plus rapidement des strings alignées.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  29. #9749
    Citation Envoyé par rOut Voir le message
    Pour la seconde question, c'est probablement pour les architectures qui ont une version spécialisé, et optimisée. Genre en assembleur pour copier plus rapidement des strings alignées.
    Yep ça peut être considéré comme un intrinsic par le compilo et dans ce cas il s'en cogne de la définition en C.
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  30. #9750
    Citation Envoyé par Tramb Voir le message
    Y a pas de "pourquoi?" dans ce genre de normes. C'est comme ça.
    Et ça permet d'éviter un test.
    Par contre, je ne vois pas dans quel scénario fou tu peux faire un strcpy qui overlappe.
    Des memcpy, on pourrait à la limite en débattre
    C'est utilisé dans une méthode qui supprime des caractères dans une string. Dans ce cas les chars sont déplacé vers le début de la chaine via un strcpy.
    strcpy (str, str + n);

    Un memmove aurait été clairement adapté dans ce cas, mais mes collègues ont choisi à l'époque de le faire via une copie.

    Et sérieusement, qu'est-ce qui peut faire que
    while ((*dest++ = *src++) != '\0')

    fasse parfois de la merde ?

    J'ai bricolé un test-case et c'est assez étrange:
    le bug arrive toujours sur les mêmes strings, donc c'est d'une certaine manière reproductible. Mais je ne vois pas de logique qui fait que pour une chaine ça marche et pas pour l'autre.

    Et clairement "Y a pas de "pourquoi?" dans ce genre de normes. C'est comme ça." C'est du même niveau que "Ta gueule c'est magique", et moi ça ne me va pas...

    J'ai fais trop de Java pendant des année et je me suis éloigné de l'archi et du langage machine. Je ne suis pas forcément à l'aise avec ce qui se passe vraiment au niveau du proc.

    Mais je voudrais bien comprendre pourquoi ça ce passe comme ça, et aussi pourquoi ça marche sur d'autres OS...


    Les résultats de mon petits test:
    Code:
    remove '/' in '/1234/' with strcpy      --> expected result '1234',  obtained result: '1244' ? ERROR
    remove '/' in '12/34' with strcpy       --> expected result '1234',  obtained result: '1234' ? OK
    remove '/' in '123/4' with strcpy       --> expected result '1234',  obtained result: '1234' ? OK
    remove '/' in '/1234/' with strcpy      --> expected result '1234',  obtained result: '1244' ? ERROR
    remove '/' in '/12/34/' with strcpy     --> expected result '1234',  obtained result: '1234' ? OK
    remove '/' in '12/34/56' with strcpy        --> expected result '123456',    obtained result: '1234556' ? ERROR
    remove '/' in '12/34/56/78' with strcpy     --> expected result '12345678',  obtained result: '123456888' ? ERROR
    remove '/' in '///////////' with strcpy     --> expected result '',  obtained result: '' ? OK
    remove '/' in '' with strcpy        --> expected result '',  obtained result: '' ? OK
    remove '/' in '///1///' with strcpy     --> expected result '1',     obtained result: '1' ? OK
    remove '/' in '2///1///2' with strcpy       --> expected result '212',   obtained result: '212' ? OK
    remove '/' in '1/2/3' with strcpy       --> expected result '123',   obtained result: '123' ? OK
    remove '/' in '/12/34/56/' with strcpy      --> expected result '123456',    obtained result: '123466' ? ERROR
    remove '/' in '/12/34/56/' with strcpy      --> expected result '123456',    obtained result: '123466' ? ERROR
    remove '/' in '/12/34/56/' with strcpy      --> expected result '123456',    obtained result: '123466' ? ERROR

Page 325 sur 334 PremièrePremière ... 225275315317318319320321322323324325326327328329330331332333 ... 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
  •