Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 199 sur 334 PremièrePremière ... 99149189191192193194195196197198199200201202203204205206207209249299 ... DernièreDernière
Affichage des résultats 5 941 à 5 970 sur 10008
  1. #5941
    Non, justement, le but n'est pas de virer le plus ancien, mais de moins déloter. Donc d'utiliser le plus de boites complètes possible

  2. #5942
    Citation Envoyé par deathdigger Voir le message
    Non, justement, le but n'est pas de virer le plus ancien, mais de moins déloter. Donc d'utiliser le plus de boites complètes possible
    Mais tu as ce nombre ?

    Je veux dire: peux-tu faire la différence entre ton nombre de boites de 50 "pleines" et ton nombre de boites de 50 "entamées" (et si possible avec ce qui reste dedans) ?
    "Déconstruire", c'est "détruire" en insérant des "cons".
    Battle.net (Diablo 3) : Fbzn#2658 ----- / ----- / ----- Steam ID

  3. #5943
    Citation Envoyé par war-p Voir le message
    Je pense que t'essaie d'accéder à des données (genre, par exemple, au hasard une liste, un dataset/datatable, whatever qui sont pas thread safe) avec deux thread en même temps... Par contre tu risques d'en chier pour le débugger
    Normalement, tout est bon, et quand je bricole des trucs sensibles, je passe par des lock.
    Mais d'un côté je me rappel que j'ai contourné salement un bug l'autre jour (j'avais une démo à faire le lendemain), ça pourrait être lié... Je vais voir ça.

    Citation Envoyé par deathdigger Voir le message
    Sinon, faut passer en 4.5 et là, le multi-thread est grandement facilité
    J'y ai pensé mais j'ai déjà 4 mois de retard parce que j'ai presque tout recommencé.
    (C'est un (gros) ajout à un soft que j'ai fait l'an dernier, soft absolument bancal en partie à cause de mauvais choix de matériel d'un collègue (ce qui n'empêche pas d'avoir un rendement de 99.71% en prod ). Du coup c'était hors de question que je rajoute des trucs dessus en l'état alors qu'il y a déjà pas de raison pour que ça marche actuellement...).

  4. #5944
    Citation Envoyé par deathdigger Voir le message
    Non, justement, le but n'est pas de virer le plus ancien, mais de moins déloter. Donc d'utiliser le plus de boites complètes possible
    Regarde les implémentations de malloc avec du binning.

  5. #5945
    J'ai un problème, sûrement un truc tout bête, mais je ne le vois pas et ça me pète gentiment les rognons.

    J'ai une matrice NxM d'unsigned char. Connaissant l'adresse d'un élément, je voudrais récupérer ses indices de ligne et de colonne dans un vecteur de taille 2.

    Voilà la portion de code :
    Code:
    void getIndexes(unsigned char *pixel, unsigned char **pixels, int width, int height, int *indexes) {
    	int i = 0;
    	int j = 0;
    	printf("adresse du pixel recherché : %d\n", pixel);
    	while ((pixel != &(pixels[i][j])) && (i < height)) {
    		j = 0;
    		while ((pixel != &(pixels[i][j])) && (j < width)) {
    			printf("adresse de pixels[%d][%d] : %d\n", i, j, &(pixels[i][j]));
    			++j;
    		}
    		++i;
    	}
    	indexes[0] = i;
    	indexes[1] = j;
    }
    Et voilà ce que j'obtiens en sortie :
    Code:
    adresse du pixel recherché : 8990851
    adresse de pixels[0][0] : 8990816
    adresse de pixels[0][1] : 8990817
    adresse de pixels[0][2] : 8990818
    adresse de pixels[0][3] : 8990819
    adresse de pixels[1][0] : 8990848
    adresse de pixels[1][1] : 8990849
    adresse de pixels[1][2] : 8990850
    adresse de pixels[2][0] : 8990880
    adresse de pixels[2][1] : 8990881
    adresse de pixels[2][2] : 8990882
    adresse de pixels[2][3] : 8990883
    adresse de pixels[3][0] : 8990912
    adresse de pixels[3][1] : 8990913
    adresse de pixels[3][2] : 8990914
    adresse de pixels[3][3] : 8990915
    ligne = 4 ; colonne = 4
    La matrice en entrée (mais le soucis est le même avec d'autres) :

    0000
    0004
    0000
    0000

    pixel, c'est l'adresse de la cellule à 4.
    pixels, c'est la matrice.
    indexes, c'est le tableau de retour.

    La recherche se fait, et au moment de trouver l'élément, il passe à la ligne suivante. C'est hallucinant.

  6. #5946
    Citation Envoyé par deathdigger Voir le message
    A votre avis, quelle solution entre les deux serait la plus efficace ? (en prenant en compte l'effet de bord de ne pas multiplier le nombre de boite en piochant trop).
    Tu es obligé de traiter les commandes dans l'ordre, sans tenir compte des commandes futures ?

    Globalement, ça ressemble un peu au problème de Bin Packing ou Cutting Stock, sauf que tu peux récupérer les chutes.
    Par contre localement c'est plutôt une variante (triviale) du Knapsack. Une solution localement optimale est effectivement de toujours prendre les boîtes les plus grosses (celles qui sont pleines).
    Pour l'implémentation efficace de l'algo, voir la suggestion de Sp1d3r...

    Par contre, tu as aussi implicitement une contrainte sur le nombre de boîtes entamées qui trainent ? Parce que sinon c'est facile, tant qu'il te reste des boîtes pleines tu minimises le nombre de déballages, et au pire quand le stock est bas tu te retrouves avec une ou deux commandes chiantes qui t'obligent à racler tous les fonds de tiroirs. Par contre ton entrepôt va être plein de caisses quasi-vides. Tu peux exprimer cette contrainte dans l'énoncé de problème ?

  7. #5947
    @Deathdigger : t'as pas possibilité d'utiliser du CLP ? C'est typiquement ce qu'il faut pour ce genre de problème (et plus optimisé que les algo fait main).

  8. #5948
    Les contraintes techniques sont assez importantes, c'est du Java "fermé", mais je vais déjà voir avec ce qui a été proposé
    Mais ouais, un des effets indésirables, c'est de se retrouver avec plein de boites entamées

  9. #5949
    Citation Envoyé par Oduesp Voir le message
    La recherche se fait, et au moment de trouver l'élément, il passe à la ligne suivante. C'est hallucinant.
    Ton code a l'air "correct" (bien que très sale), tu cherches tout simplement un pixel qui n'est pas dans la matrice ?

    EDIT : ouai en fait non, puisque dans ton for externe tu cherches le pixel alors que j == width pour les lignes >= 1

    ---------- Post added at 21h59 ---------- Previous post was at 21h51 ----------

    Je la refais maintenant que mes yeux ne saignent plus : il faut séparer le code qui vérifie si tu es tombé sur le bon pixel et mettre un break dedans.
    C'est assez simple à comprendre, ton code trouve le bon pixel dans la condition du while interne, du coup ce while s'arrête, puis il y a le i++, et à cause de ce i++ il ne trouve plus le pixel dans le while externe et continue à chercher.
    Rust fanboy

  10. #5950
    Code:
    adresse du pixel recherché : 8990851
    adresse de pixels[0][0] : 8990816
    adresse de pixels[0][1] : 8990817
    adresse de pixels[0][2] : 8990818
    adresse de pixels[0][3] : 8990819
    adresse de pixels[1][0] : 8990848
    adresse de pixels[1][1] : 8990849
    adresse de pixels[1][2] : 8990850
    adresse de pixels[1][2] : 8990851
    adresse de pixels[2][0] : 8990880
    adresse de pixels[2][1] : 8990881
    adresse de pixels[2][2] : 8990882
    adresse de pixels[2][3] : 8990883
    adresse de pixels[3][0] : 8990912
    adresse de pixels[3][1] : 8990913
    adresse de pixels[3][2] : 8990914
    adresse de pixels[3][3] : 8990915
    La recherche foire quelque part, sinon la ligne en gras devrait apparaître et donc l'élément être trouvé. Or, ce n'est pas le cas.

  11. #5951
    Tu écris clairement "while (pas le bon pixel) { printf("adresse de pixels blablabla") }", il n'y aucun moyen que la ligne en gras s'affiche.
    Rust fanboy

  12. #5952
    Ok merci, j'avais pas vu ton edit.

    Et pourquoi tu dis que mon code est sale ?

  13. #5953
    Citation Envoyé par Oduesp Voir le message
    Code:
    adresse du pixel recherché : 8990851
    adresse de pixels[0][0] : 8990816
    adresse de pixels[0][1] : 8990817
    adresse de pixels[0][2] : 8990818
    adresse de pixels[0][3] : 8990819
    adresse de pixels[1][0] : 8990848
    adresse de pixels[1][1] : 8990849
    adresse de pixels[1][2] : 8990850
    adresse de pixels[1][2] : 8990851
    adresse de pixels[2][0] : 8990880
    adresse de pixels[2][1] : 8990881
    adresse de pixels[2][2] : 8990882
    adresse de pixels[2][3] : 8990883
    adresse de pixels[3][0] : 8990912
    adresse de pixels[3][1] : 8990913
    adresse de pixels[3][2] : 8990914
    adresse de pixels[3][3] : 8990915
    La recherche foire quelque part, sinon la ligne en gras devrait apparaître et donc l'élément être trouvé. Or, ce n'est pas le cas.
    Non parce-que tu (in)valide les conditions du while quand tu trouve j, et du coup n'écrit jamais la valeur. Avec un do/while ça sera mieux (mais tu auras toujours le problème du i qui s'incrémentera une dernière fois).

  14. #5954
    Dans un code propre il est très simple de comprendre quelle est la logique du code, c'est à dire ce qu'il fait, et l'ordre dans lequel il le fait.

    Le fait que tu fasses une comparaison inutile et que tu n'aies pas détecté le bug dans la logique du code montre qu'il y a un problème à ce niveau-là.

    ---------- Post added at 22h41 ---------- Previous post was at 22h38 ----------

    C'est très subjectif, mais un truc comme ça est bien plus lisible d'après moi :

    Code:
    void getIndexes(unsigned char *pixel, unsigned char **pixels, int width, int height, int *indexes) {
    
        for (int i = 0; i < height; ++i) {
            for (int j = 0; j < width; ++j) {
    
                // est-ce que c'est le bon pixel?
                if (pixel == &(pixels[i][j])) {
    	        indexes[0] = i;
    	        indexes[1] = j;
                    return;
                }
    
            }
        }
    
        // lapin trouvé
        indexes[0] = height;
        indexes[1] = width;
    }
    Rust fanboy

  15. #5955
    C'est très subjectif, mais un truc comme ça est bien plus lisible d'après moi :

    Code:
    void getIndexes(unsigned char *pixel, unsigned char **pixels, int width, int height, int *indexes) {
    
        int i = (pixel - pixels[0]) / width;
        int j = (pixel - pixels[0]) % width;
        if(i >= 0 && i < height) // sic
        {
    	indexes[0] = i;
    	indexes[1] = j;
        }
        else
        {
            // lapin trouvé
            indexes[0] = height;
            indexes[1] = width;
        }
    }


    (L'énoncé dit que pixels est une matrice 2D, pas un tableau de tableaux. Sinon il faut soit boucler sur i, soit fouetter avec des orties le responsable de l'allocation du tableau...)

  16. #5956
    Citation Envoyé par deathdigger Voir le message
    Les contraintes techniques sont assez importantes, c'est du Java "fermé", mais je vais déjà voir avec ce qui a été proposé
    Mais ouais, un des effets indésirables, c'est de se retrouver avec plein de boites entamées
    Euh, on a dit ERP, donc CLP faut pas trop y compter.

    Tu es dans du multi-critère : utiliser des boites (des lots je suppose) entièrement peut aller à l'encontre d'utiliser les stocks les plus vieux. Et il faut faire un truc simple parce que si les utilisateurs ne comprennent pas la stratégie d'affectation de stock ça va pas être facile pour les consultants.

    Tu peux prioriser les contraintes : tu utilise les stocks les plus anciens (stratégie FIFO donc) en 1er, et à age équivalent tu fais ton mini sac à dos pour utiliser le moins de boites possible. Ou tu te fixes un age maxi pour le stock que tu utilises etc...

    En bref, tu retournes vers les fonctionnels (ton chef de produit ou un truc dans ce genre) et tu leur fais spécifier clairement le truc, sinon ça te retombera sur la tronche tôt ou tard: aucune solution unique ne conviendra à tous les clients.

    Fais moi confiance, je connais bien le domaine...

  17. #5957
    Salut les canards,

    Je dois faire un petit script de connexion pour la partie adhérents d'un site sur lequel je bosse.

    Le client m'a dis que je n'avais qu'a renvoyer vers l'url : http://www.domainepartieadhérents.co...ChaineCryptée

    Pour que de leur côté ils récupèrent les infos de connexion.

    Problème, le contact chez eux m'a envoyé un e-mail lacunaire se résumant a :

    Salut

    La syntaxe non cryptée est la suivante
    [monLogin]/[monPaasword]

    Elle doit être cryptée au format RC2 les clés sont :
    IV = blablabla
    Key = blablabla

    Je ne connais strictement rien au chiffrement (déjà que je suis pas une brute en php) et je patauge donc totalement.
    J'ai regardé du côté de PHP_Crypt mais l'IV qu'il m'a filé est sur 12 caractères alors que RC2 en demande 8

    Bref je suis pommé, je patauge et vu que c'est pas du tout mon domaine ça a tendance à me gonfler assez rapidement.

    Si une âme se sent capable de m'expliquer comment simplement chiffre mon truc ça m'aiderait.

    Je précise que pour tout ce qui est concaténation des identifiants et redirection vers leur url fonctionne. C'est vraiment juste la partie chiffrement ou je bloque comme une merde.

  18. #5958
    Citation Envoyé par TiNitro Voir le message
    Euh, on a dit ERP, donc CLP faut pas trop y compter.

    Tu es dans du multi-critère : utiliser des boites (des lots je suppose) entièrement peut aller à l'encontre d'utiliser les stocks les plus vieux. Et il faut faire un truc simple parce que si les utilisateurs ne comprennent pas la stratégie d'affectation de stock ça va pas être facile pour les consultants.

    Tu peux prioriser les contraintes : tu utilise les stocks les plus anciens (stratégie FIFO donc) en 1er, et à age équivalent tu fais ton mini sac à dos pour utiliser le moins de boites possible. Ou tu te fixes un age maxi pour le stock que tu utilises etc...

    En bref, tu retournes vers les fonctionnels (ton chef de produit ou un truc dans ce genre) et tu leur fais spécifier clairement le truc, sinon ça te retombera sur la tronche tôt ou tard: aucune solution unique ne conviendra à tous les clients.

    Fais moi confiance, je connais bien le domaine...
    Alors le FIFO, c'est le comportement de base de l'ERP, là ce n'est pas pour des commandes clients, mais plutôt pour des transferts de stock de dépôt à dépôt (pour simplifier). Donc le client demande à ce qu'au lieu de piocher dans les stocks les plus vieux (ce qui va faire n manips), il faut d'abord piocher les boites entières (donc il y'aura forcément moins de manip). Pour les effets de bord, on est en train d'y réfléchir et ça sera soumis au client (qui a son avis dessus aussi). Et c'est un mi-technique/mi-fonctionnel qui gère le truc pour l'instant, il me demandait juste si un algo existait déjà, histoire de ne pas réinventer la lune

    Mais oui, c'est qu'une fois que ce sera validé par les ouvriers qu'on saura si c'est viable ou pas (chose que les "visionnaires" ont du mal à comprendre).

  19. #5959
    Citation Envoyé par deathdigger Voir le message
    il me demandait juste si un algo existait déjà, histoire de ne pas réinventer la lune
    Oui, ça s'appelle un solveur de contraintes.

  20. #5960
    Le LaTeX, ça rentre dans le cadre du topic ? Je m'y risque quand même : je cherche un moyen de créer des graphes sous forme d'arborescence. Il y a bien le package pst-tree mais on dirait qu'un nœud ne peut pas avoir deux parents, et ça j'en ai vraiment besoin. Des idées ?

  21. #5961
    Un graphe avec pstricks ?
    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

  22. #5962
    Yop, j'aurais une question sur du fortran90 svp.

    J'ai un vecteur xtemp de taille (n). J'ai une matrice X de taille (n,m). Le vecteur xtemp est bien stocké en colonnes hein ?
    (Ils sont du même type, double precision.)

    Et si je fais xtemp( : )=X(:,i) (pour i compris entre 1 et m) on est d'accord que ça revient à xtemp(j)=X(j,i) avec j compris entre 1 et n ?

  23. #5963
    Ton "vecteur" xtemp, on va dire que c'est un tableau unidimensionnel. Il n'y a pas de notion de colonne ou de ligne pour un tableau unidimensionnel. En mémoire xtemp(1) et xtemp(2) sont contigus.

    Ta "matrice" est représenté par un tableau multidimensionnel. La représentation de "l'être humain qui fait des maths" va considérer que la matrice est stocké en colonne parce que les éléments d'une même colonne sont contigus en mémoire.
    En fortran, pour un tableau multidimensionnel, les valeurs contiguës en mémoire sont celles de l'indice le plus à gauche, contrairement au C. Si tu as "DIMENSION A(5,6)", A(1,1) et A(2,1) sont contigus en mémoire.

    Donc oui, xtemp( : )=x( : , 1 ) va être équivalent à

    Code:
    DO I=1,N
        XTEMP(I)=X(I,1)
    ENDDO
    xtemp( : )=x( 1 , : ) est incorrect parce que tes deux dimensions sont différentes. Mais si n==m, alors c'est équivalent à

    Code:
    DO I=1,N
        XTEMP(I)=X(1,I)
    ENDDO
    La seule différence c'est que tu copies des valeurs de X qui ne sont pas contigus en mémoire dans xtemp...
    Dernière modification par Sp1d3r ; 17/09/2014 à 19h10.

  24. #5964
    Citation Envoyé par Oduesp Voir le message
    Le LaTeX, ça rentre dans le cadre du topic ? Je m'y risque quand même : je cherche un moyen de créer des graphes sous forme d'arborescence. Il y a bien le package pst-tree mais on dirait qu'un nœud ne peut pas avoir deux parents, et ça j'en ai vraiment besoin. Des idées ?
    Sinon, tu peux utiliser Asymptote (http://asymptote.sourceforge.net/) avec un super tuto disponible ici http://jyraphe.isae.fr/file.php?h=R9...6b82b960f580a0 (lien valable un mois)

    Pour te donner des idées:
    Code:
     unitsize(2.5cm);
    defaultpen(fontsize(12pt));
    usepackage("amsmath");
    usepackage("amsfonts");
    usepackage("amssymb");
    pair z1=(0,1), z2=(-1.5,0), z3=(0,-1), z4=(1.5,0);
    object boite1=draw("Particle mover",ellipse,z1);
    object boite2=draw("Space Charge Weighting Scheme",ellipse,z2);
    object boite3=draw("Field Solver",ellipse,z3);
    object boite4=draw("Lorentz's Force",ellipse,z4);
    add(new void(picture pic, transform t) {
    draw(pic,Label("particle distribution"),point(boite1,W,t){W}..{S}point(boite2,N,t),Arrow);
    draw(pic,Label("$\rho$"),point(boite2,S,t){S}..{E}point(boite3,W,t),Arrow);
    draw(pic,Label("$\mathbf{E}$"),point(boite3,E,t){E}..{N}point(boite4,S,t),Arrow);
    draw(pic,Label("$\mathbf{F}$"),point(boite4,N,t){N}..{W}point(boite1,E,t),Arrow);
    });
    donne ça:


    Comme les for loops sont gérées par Asymptote, rien de t'empêche de générer un arbre de manière automatique...
    Dernière modification par BentheXIII ; 17/09/2014 à 17h26.
    Citation Envoyé par Colargol Voir le message
    Mais globalement l'ingenieur en France il bosse un peu a l'africaine: ca marche mais ca fait pas serieux

  25. #5965
    Citation Envoyé par Sp1d3r Voir le message
    ...
    Merci pour les explications.

  26. #5966
    Amis Canards développeurs,

    J'ai actuellement un souci avec une Regex que j'essaie d'écrire.

    Je veux valider une chaine contenant une liste de langues, séparées par une virgule. Voila des exemples :

    Code:
    English,French,Spanish // OK
    French,Spanish  // OK
    French // OK
    French,English // OK
    English,French,Spanish,French // NOK : Deux fois French
    English,Spanish,French, // NOK : Termine par une virgule
    Voici les contraintes générales :

    - Je dois avoir au moins un langage
    - Je ne peux pas avoir de virgule à la fin de la chaine
    - Un langage ne peut apparaître qu'une seule fois
    - On doit pouvoir mettre les langues dans n'importe quel ordre
    - J'ai environ 200 langues possibles

    On m'a proposé cette regex :

    Code:
    ^(English|French|Spanish)(?:,(?!\1)(English|French|Spanish))?(?:,(?!\1|\2)(English|French|Spanish))?$
    Mais elle ne tient pas compte de la dernière contrainte, du coup si je rajoute une langue (German), ça donne :

    Code:
    ^(English|French|Spanish|German)(?:,(?!\1)(English|French|Spanish|German))?(?:,(-​?!\1|\2)(English|French|Spanish|German))?(?:,(?!\1|\2|\3)(English|French|Spanish|German))?$
    Donc vous imaginez bien qu'avec 200 langues, j'suis pas sorti... En fait c'est presque bon mais j'aurais besoin de la factoriser pour pouvoir mettre les 200 langues sans répéter la totale 200 fois.

    Pros de la Regex, c'est a vous !

  27. #5967
    Tu pourrais ne pas utiliser une regex, parce que c'est clairement pas l'outil le plus adapté dans ce cas de figure.
    N'importe quel language de programmation sait faire un truc du genre "input.split(',').unique_values()" écrit en 5 secondes.
    Rust fanboy

  28. #5968
    Tout a fait. L'intéret dans mon cas et que cette chaine sera présente dans un fichier de configuration XML de mon application au milieu de pleins d'autres paramètres. L'application effectue une validation XSD de ce fichier lors de son chargement, et la valeur est directement utilisée telle qu'elle sera présente dans le fichier XML. Et vu que la validation XSD supporte la validation de valeurs par regex, j'ai pensé à cette solution. D'autant plus donc que je n'aurais pas besoin d'effectuer un découpage des valeurs, qui serait nécessaire pour valider la chaine, car mon appli ne s'en servira pas.

  29. #5969
    Citation Envoyé par elpaulo Voir le message
    D'autant plus donc que je n'aurais pas besoin d'effectuer un découpage des valeurs, qui serait nécessaire pour valider la chaine, car mon appli ne s'en servira pas.
    Les 100 nanosecondes que tu gagnes en ne faisant pas le découpage sont largement compensés par les quelques dixièmes de seconde qu'il faudrait pour exécuter une regex de ce genre avec 200 langues.
    Rust fanboy

  30. #5970
    Je ne te contredis pas, ca m’embête juste de découper mes controles entre le code et la validation XSD. J'aurais préféré que tout se fasse au même moment pour éviter d'en avoir partout.

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