Réseau CPC BIENDEBUTER.NET Crunchez vos adresses URL
|
Calculez la conso électrique de votre PC
|
Hébergez vos photos
+ Reply to Thread
Page 172 of 173 FirstFirst ... 72 122 162 164 165 166 167 168 169 170 171 172 173 LastLast
Results 5,131 to 5,160 of 5189
  1. #5131
    Quote Originally Posted by Tomaka17 View Post
    L'ordre d'écriture ne peut pas être important. Le programme doit bien fonctionner même si l'une des deux fonctions démarre alors que l'autre a déjà terminé.
    Ok.
    Bah imagine que chacune de tes fonctions peut écrire 200 lignes de log, tu n'as pas envie qu'ils soient entrelacés, donc le mieux dans l'absolu c'est que chaque invocation ait son stream sans locking, et de collecter les logs à la fin.
    Et ça, ça scalera vachement mieux avec 48 fonctions qui tapent dans le log. Alors oui, il faut adapter son code.

    Quote Originally Posted by Møgluglu View Post
    Boaf, c'est qu'une monade ton truc.
    Vazy batard ta mère c'est un catamorphisme.
    It's the moped lads, they like to think they're bad
    It's the moped lads, if you hit 'em they'll tell their dads

  2. #5132
    Quote Originally Posted by Tramb View Post
    Vazy batard ta mère c'est un catamorphisme.

  3. #5133
    Prenons un autre exemple.

    Imaginons qu'on ait une classe "XMLDocument" qui stocke la structure d'un document XML.

    J'ai une fonction qui modifie le document xml à intervalle régulier. Par exemple toutes les secondes la fonction rajoute un élément dans le document et supprime un élément.
    Et à côté je veux tenir à jour le document xml dans un GUI.

    Supposons que le document XML soit très gros, et qu'on veuille éviter de devoir lire toutes les secondes le document pour chercher les changements.

    Comment vous organiseriez ça ?
    La fonction qui modifie le document XML renvoie des commandes du genre "XMLDocumentAddNodeCommand" ou "XMLDocumentDestroyNodeCommand" ?

    Et si maintenant j'ai deux fonctions qui modifient le document ? Comment je peux les paralléliser ?



    Je vois plusieurs solutions :

    - Soit ce que j'ai dit, c'est à dire les fonctions renvoient des commandes. Sauf que c'est assez lourdingue et difficile à coder. Dans le cas d'un XMLDocument ça pourrait aller, mais si on veut généraliser c'est parfois incompatible avec l'interface qu'offre l'objet.

    - Soit les fonctions renvoient des espèces de std::function<void (auto)> qui est ensuite appelé avec un objet intermédiaire comme paramètre. Mais c'est aussi chiant à coder, et comment on gère le cas où un std::function veut modifier un élément qui a été supprimé par un std::function renvoyé par l'autre fonction ?

    - Soit on passe un "XMLDocument&" à chaque fonction qui modifie, et la fonction renvoie des indications sur ce qu'elle a modifié. C'est déjà moins chiant, mais du coup c'est pas parallélisable.

    - Soit on templétise les fonctions et on leur passe des objets intermédiaires qui vont ensuite synchroniser les changements. Sauf que si je fais "setTextContent(blabla)" et ensuite "getTextContent()" sur cet objet, je m'attends à ce que ça renvoie ce que j'ai modifié, et du coup ça rend l'objet intermédiaire difficile à coder et peu performant.

    - Soit on passe des callbacks aux fonctions qui modifient, mais encore une fois c'est lourd à coder.
    Last edited by Tomaka17; 17/04/2014 at 17h40.
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  4. #5134
    Je propose une autre solution: Chaque fonction bosse sur sa copie privée de XMLDocument, dont les modifs sont timestampées (par exemple). A un point de synchro donné, les copies sont réconciliées et uniformisées.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution." · 6hit combo!

  5. #5135
    Tu as déjà vu un exemple similaire ou c'est un exercice intellectuel?
    Ca modifie la topologie de l'arbre ou juste les valeurs dans les noeuds?
    Plusieurs clients qui mutent un document en concurrence à partir d'une vue du passé, ça veut dire des conflits potentiels, le problème du codage lui-même est vraiment mineur par rapport aux soucis sémantiques.
    It's the moped lads, they like to think they're bad
    It's the moped lads, if you hit 'em they'll tell their dads

  6. #5136
    Mais du coup tu doubles la consommation mémoire du document XML, qui est très gros.

    Et comment tu fais pour timestamper ? Tu templatises les fonctions et tu passes un objet intermédiaire qui stocke les modifs ?

    ---------- Post added at 17h47 ---------- Previous post was at 17h42 ----------

    Quote Originally Posted by Tramb View Post
    Tu as déjà vu un exemple similaire ou c'est un exercice intellectuel?
    Ca modifie la topologie de l'arbre ou juste les valeurs dans les noeuds?
    Plusieurs clients qui mutent un document en concurrence à partir d'une vue du passé, ça veut dire des conflits potentiels, le problème du codage lui-même est vraiment mineur par rapport aux soucis sémantiques.
    J'avais un exemple real-life similaire où je me suis dit "bon tant pis je fais du single threaded" (mais c'était pas XML).


    Et j'ai un autre exemple real-life, où concrètement je suis en train de coder un moteur de rendu CSS : https://github.com/Tomaka17/LiCssEng
    Et je voudrais savoir quel est le moyen idéal de signaler au moteur de rendu "hey, j'ai modifié telle portion du document xml".
    Sachant que ma classe XMLDocument est un gros blob, parce que je trouve ça plus simple à manipuler : https://github.com/Tomaka17/LiCssEng...MLDocument.hpp
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  7. #5137
    Je ne vois toujours pas en quoi le template va t'aider... Dans tous les cas tu connais ta structure de données, et elle ne change pas. Tu ne vas pas appliquer la même opération à autre chose qui ressemblerait de près ou de loin au XMLDocument.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution." · 6hit combo!

  8. #5138
    Quote Originally Posted by rOut View Post
    Je ne vois toujours pas en quoi le template va t'aider... Dans tous les cas tu connais ta structure de données, et elle ne change pas. Tu ne vas pas appliquer la même opération à autre chose qui ressemblerait de près ou de loin au XMLDocument.
    Tu disais qu'il faut timestamper les changements dans le XMLDocument, mais comment ?
    Je n'ai pas envie de modifier la classe XMLDocument pour qu'elle stocke la liste des changements, ce n'est pas son rôle. Il faudrait au moins un "XMLDocumentWithTimestamps".
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  9. #5139
    Donc tu as un producteur (l'éditeur) et un consommateur (le renderer), si je ne m'abuse?

    Dans tous les cas tu es dans une problématique très similaire aux snapshots des systèmes de fichiers, et une bonne solution, c'est le copy-on-write.
    Ton renderer prend un snapshot du doc en copiant tout dans un lock global, ce qui devient peu cher avec le COW, puis bosse gentiment sur sa copie.
    Chaque modif dans le producteur prend également le lock global.
    Après tu peux avoir des systèmes hyper raffinés par des locks plus granuleux, mais c'est du taf d'expert.
    It's the moped lads, they like to think they're bad
    It's the moped lads, if you hit 'em they'll tell their dads

  10. #5140
    Quote Originally Posted by Tramb View Post
    Dans tous les cas tu es dans une problématique très similaire aux snapshots des systèmes de fichiers, et une bonne solution, c'est le copy-on-write.
    Ton renderer prend un snapshot du doc en copiant tout dans un lock global, ce qui devient peu cher avec le COW, puis bosse gentiment sur sa copie.
    Chaque modif dans le producteur prend également le lock global.
    En fait c'est déjà plus ou moins ce que je fais.
    Je n'ai pas besoin de stocker de copie du XMLDocument dans mon renderer, mais j'y stocke des données relatives au rendu.

    La problématique, c'est : est-ce qu'il n'y a pas une façon intelligente de signaler au renderer quels sont les changements dans le document ? Si je lui dis juste "flush tes données à propos de ce noeud xml et recharge les données", c'est forcément moins rapide que si je lui dis précisément "tel attribut de tel noeud a été modifié de ça en ça".

    Mais là on s'éloigne un peu du sujet qui était le parallélisme.
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  11. #5141
    J'ai développé un petit programme tout bidon pour l'édition de facture (qui n'utilise même pas de bdd, juste des fichiers XML). Je l'ai filé à un pote boucher (c'est lui qui m'avait demandé à l'époque, il faisait tout sur Excel à la base), et il en très content. Je me dis que ça peut intéresser d'autres personnes si je l'étoffe un peu et que j'y fout une bdd embarquée (histoire que ça soit plus propre, et qu'aussi, les gens puissent modifier pour choisir leur propre SGBD).
    Vu que je ne compte pas le vendre, je pense le foutre en opensource sur SourceForge, GitHub ou Codeplex.

    J'utilise une seule bibliothèque externe (Migradoc sous licence MIT), comment je dois packager le truc pour que ça soit compatible avec de l'open-source ?
    Puis-je inclure cette bibliothèque dans mon projet ?
    Si je fournis avec la base de donnée locale MSSql CE, ça ne va pas poser de problèmes niveau licence ?

  12. #5142
    Déjà, avant de te poser la question de la compatibilité, qu'est-ce que tu souhaiterais ? Open source, c'est très vague et une licence type GPL est très différente d'une licence type BSD.
    Pour synthétiser, je dirai qu'il y a 3 niveaux - c'est probablement trop simpliste mais ça donne une première idée:
    type BSD : les gens font ce qu'ils veulent du code.
    type LGPL : les gens peuvent utiliser ton code dans un autre projet sans soucis mais s'ils apportent des modifs à ton projet, ils doivent les refiler.
    type GPL : ton code ne peut être utilisé que dans des projets GPL.

  13. #5143
    Sinon, t'as la DWTFYWPL : http://www.wtfpl.net/txt/copying/. C'est tres bien aussi si t'as pas enviede te prendre la tete.
    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. #5144

  15. #5145
    @Tomaka: c'est la qu'on atteint un peu la limite, et chercher à faire du pur fonctionnel dans ton cas finit par être plus compliqué que de gérer explicitement le parallélisme, enfin je trouve.
    Si ta fonction de modification de la structure XML gère explicitement les verrous (modification possible si aucun verrou posé sur le nœud ou un de ses parents), tu ne complexifie pas atrocement le code et tu peux paralléliser.

    Pour la mise à jour de l'UI, pourquoi ne pas utiliser un bon vieux système d'abonnement et de message. Les consommateurs s'abonnent aux modifications de la structure, chaque modification par tes fonctions envoient des messages aux abonnés, les abonnés dépilent les messages et se rafraichissent intelligemment. Le message pouvant être aussi simple que le chemin d'un nœud.

    J'ai fais beaucoup de fonctionnel quand j'ai commencé (j'ai même débuté dans la programmerie comme ça), et il faut savoir raison garder et éviter les dogmes. Chercher à faire du fonctionnel pur dans ton cas conduit à une des solutions que tu as listé qi sont toutes compliquées à comprendre et à coder: on perd plus qu'on ne gagne. La solution de rOut qui consiste à travailler sur des copies et à réconcilier après est complexe également, coûteuse et on finira par avoir un goulot d'étranglement dans la réconciliation.

    Enfin, je dois me faire vieux, mais des fois les dogmes me cassent les monades gonades.

  16. #5146
    Quote Originally Posted by TiNitro View Post
    Enfin, je dois me faire vieux, mais des fois les dogmes me cassent les monades gonades.
    Meilleur jeu de mot de la journée!
    It's the moped lads, they like to think they're bad
    It's the moped lads, if you hit 'em they'll tell their dads

  17. #5147
    Vous auriez de bons tutos C++ et Python ? Là tout de suite maintenant, je pense au site du zéro à openclassrooms, mais je ne sais pas ce que ça vaut. Et il n'y a pas de C++.
    Quote Originally Posted by Drayke View Post
    Je vous serai reconnaissant de ne pas me péter mon troll avec des réponses sérieuses
    Quote Originally Posted by Blackogg View Post
    Nope. Le surrender, c'est vraiment un truc d'hétéro cisgenre.

  18. #5148

  19. #5149
    Pour Python tu as le livre de Gerard Swinnen qui est disponible librement et bien foutu.
    Openclassrooms a bien un cours C++, mais je sais pas si c'est une bonne idée d'apprendre avec.

    Tu es débutant ou tu as déjà des bases de programmation dans d'autres langages ? Car les ressources seront pas les mêmes.

  20. #5150
    Openclassrooms a un bon tuto python (du moins je l'ai trouvé clair) téléchargeable en pdf si t'es insrit. http://fr.openclassrooms.com/informa...mmer-en-python

    Sinon t'as le tuto écrit par le créateur du langage Guido van Rossum, traduit en français si besoin http://python.developpez.com/cours/TutoVanRossum/

    Si tu as déjà fait du php ou un autre langage de script je pense que tu peux sauter les 30-40 premières pages du tuto openclassroom.
    Last edited by Nattefrost; 21/04/2014 at 19h59.

  21. #5151
    Quote Originally Posted by Oduesp View Post
    Vous auriez de bons tutos C++ et Python ? Là tout de suite maintenant, je pense au site du zéro à openclassrooms, mais je ne sais pas ce que ça vaut. Et il n'y a pas de C++.
    Si t'aimes les vidéos et que tu n'as pas les bases en programmation, tu as aussi le cours d'initiation à la programmation en C++ puis l'Introduction à la programmation orientée objet (en C++). Je sais pas si ça peut t'aider...

  22. #5152
    Yo les canards !

    La question a probablement été posée 240 fois et je m'en excuse par avance, je n'ai pas lu tout le topic !
    Je voulais simplement vous demander comment apprendre la programmation en général. Je pars de rien de ce domaine, mais j'ai beaucoup de temps libre que j'aimerais mettre à profit dans quelque chose qui m'intéresse.

    Pour commencer en autodidacte et acquérir des bases générales, quels sont selon vous les meilleurs moyens ? J'ai déjà pris connaissance de sites comme openclassrooms ou codeacademy mais je me demande toujours par où commencer.
    On m'a parlé aussi de bouquins éventuellement, notamment celui-ci http://www.headfirstlabs.com/books/hfprog/ , vous avez d'autres références (je peux lire de l'anglais sans souci) ?

    Ce sera tout pour l'instant, bonne nuit et merci d'avance !

  23. #5153
    Commence par un tuto openclassroom qui est destiné aux grands débutants. Celui sur python que j'ai mis au dessus correspond peut-être pas mal.
    Après n'ayant pas beaucoup d'expérience (1an si je compte la bidouille du début mais réellement 8-9 mois sérieusement) je ne sais pas si python est un bon choix de premier langage.
    La coutume veut que l'on commence par le langage C (chose que je n'ai pas faite), si j'ai bien compris les arguments qui sont derrière c'est un langage qui enseigne une bonne rigueur (sur le typage notamment).
    Les bouquins à mon avis ne sont pas indiqués au début, c'est souvent plus poussé et puis c'est chiant de matter le bouquin plutôt que de faire alt-tab sur un pdf ou redimensionner tes fenetres pour avoir les deux visibles (editeur de texte/tutoriel).

    D'autres plus expérimentés t'en diront plus et me corrigeront si nécéssaire .

    PS : pour python (je suis à fond dedans depuis quelques mois à côté de mon projet pour l'école [php ] ) je suis tombé là-dessus http://www.youtube.com/watch?v=RC5Ge...30E081324343F1 , c'est en anglais mais si ça te fais pas peur je trouve que le gars explique clairement.

  24. #5154
    Le tuto de Gérard Swinnen, c'est celui que je recommende pour débuter en python. Il est complet, peut être un peu indigeste au début à tout détaillé mais une fois fini, on a un bon panorama pour aborder des trucs "complexe" (comprendre, autre chose qu'un plus ou moins). Y a un chapitre sur les interface graphiques que je trouve abordé trop tôt, mais je pense que c'est volontaire pour que les débutants puissent monter un prototype visuel assez rapidement et sortir du bourbier de la ligne de commande (avant d'abandonner les interfaces graphiques pour retourner dans la matrice...).
    Et il est en français, ce qui est un énorme avantage.

    Il y a aussi un tutoriel sur la doc officel de Python, mais je ne l'ai jamais lu.

    Comme premier langage, je pense que ça dépend surtout du besoin. Tu veux aborder la programmation comme un tout, apprendre pour apprendre, je pense que Python est un bon choix, car c'est une passerelle vers plusieurs paradigmes en programmation et c'est très complet, l'éco-système python n'est pas limité. Ça peut être aussi un bon choix si c'est pour du scripting rapide et dégueulasse genre manipuler/trier des fichiers sous Windows ou ce genre de truc (dégueulasse n'est pas péjoratif, l'important est d'avoir un truc fonctionnel en moins de deux et on s'en fout que ça ne respecte pas les normes de développements).
    Pour faire du web, peut-être commencer par un truc un peu plus rapide, genre html+js, avec des pages statique. Ça sera ultra-limité, mais il faut apprendre à être mousse avant d'être capitaine, et la motivation d'avoir un résultat immédiat poussera peut-être à continuer à apprendre. Et peut-être poussé avec Nodejs, histoire d'avoir une stack homogène, mais hormis la hype autour, je ne connais pas du tout. Et malgré toute la haine que je porte pour php, en apprendre les bases peut-être utile pour avoir un truc facilement déployable et mis en production. Mais il ne faut surtout pas hésiter à se dire que c'est une techno intérmédiaire pour vite passer à autre chose sous peine de se retrouver dans une impasse (sauf si c'est de la programmation en dilettante, là, même les technos les plus merdiques ne me gènent pas).
    Pour du jeu vidéo ou bidouiller des drivers et t'éclater avec les appels matériels (?), je dirais de directement attaquer le C, mais je ne connais que très peu les technos utilisés là-dedans donc je ne sais pas si c'est pertinent.
    Si t'es un poulpe avec 8 cerveaux, fonce vers le Haskell et fais le kéké sur les forums en parlant de monades et de factorielles.
    J'ai raison et vous avez tort.

  25. #5155
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  26. #5156
    N'importe quel langage haut niveau (si possible objet) fera l'affaire de toute façon. Si tu veux apprendre les bases (boucles, tableaux, instructions, ...) ça sera la même chose en python, java, vb, C#, jscript, etc.
    Tu peux même commencer en windev, que ça me choquerait pas (par contre, attention à ne pas s'enfermer dans un langage).

  27. #5157
    Quote Originally Posted by Schmoul View Post
    Yo les canards !
    Et si tu aimes les vidéos, y'a le lien que j'ai balancé juste au dessus de ton post, mais aussi d'autres ressources comme le cours d'introduction à la programmation du MIT.

  28. #5158
    Merci les amis, je vais regarder ça !

    Disons que j'aimerais bien avoir de bonnes bases, et que mes objectifs à terme sont le développement d'applis mobiles et web.

  29. #5159
    Pour les applis mobiles tu vas probablement devoir apprendre le Java (qui est l'un des pires langages qui soit (avis très subjectif), mais aussi l'un des plus utilisés).

    Pour le web, c'est une branche totalement différente. Les technos du web sont le HTML, le CSS et le Javascript. Les deux premiers n'ont rien à voir avec la programmation, et le troisième est totalement différent du Java dans la façon de coder. Il vaut mieux que tu ailles sur des tutos pour apprendre à créer un site web plus que sur des tutos de programmation.
    Profil Steam - Le "17" à la fin de mon pseudo est muet

  30. #5160
    Oui c'est ce que j'avais cru comprendre, un copain m'a dit que je devrais passer aussi par le java pour les applis hehe. Bon je verrais bien, je compte apprendre tout seul au moins les bases pendant quelques mois puis suivre une formation d'un an pour compléter. J'avais vu celle là qui est dans mon coin, à votre avis ça peut présenter une bonne intro ?

    http://www.cnam-lorraine.fr/SITI/DIE20

+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts