Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 172 sur 334 PremièrePremière ... 72122162164165166167168169170171172173174175176177178179180182222272 ... DernièreDernière
Affichage des résultats 5 131 à 5 160 sur 10008
  1. #5131
    Citation Envoyé par Tomaka17 Voir le message
    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.

    Citation Envoyé par Møgluglu Voir le message
    Boaf, c'est qu'une monade ton truc.
    Vazy batard ta mère c'est un catamorphisme.
    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

  2. #5132
    Citation Envoyé par Tramb Voir le message
    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.
    Dernière modification par Tomaka17 ; 17/04/2014 à 18h40.
    Rust fanboy

  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."

  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.
    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

  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 ----------

    Citation Envoyé par Tramb Voir le message
    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
    Rust fanboy

  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."

  8. #5138
    Citation Envoyé par rOut Voir le message
    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".
    Rust fanboy

  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.
    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. #5140
    Citation Envoyé par Tramb Voir le message
    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.
    Rust fanboy

  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
    Spoiler Alert!
    monades
    gonades.

  16. #5146
    Citation Envoyé par TiNitro Voir le message
    Enfin, je dois me faire vieux, mais des fois les dogmes me cassent les
    Spoiler Alert!
    monades
    gonades.
    Meilleur jeu de mot de la journée!
    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

  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++.

  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.
    Dernière modification par Nattefrost ; 21/04/2014 à 20h59.

  21. #5151
    Citation Envoyé par Oduesp Voir le message
    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

  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
    Citation Envoyé par Schmoul Voir le message
    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.
    Rust fanboy

  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

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