Cela fait également quelques années que j'utilise LDAPBrowser (le premier cité), et je n'ai jamais eu le moindre problème avec. Il est vraiment bien foutu.
> La plupart (en informatique du moins) font cette profession par
> conviction idéologique, quitte à être payé 2 à 4 fois moins que
> dans le privé.
Idée reçue ! Regarde un peu les salaires des annonces dans
le privé, regarde les compétences demandées, regarde les conditions
proposées (SSIII mon amie). Tu verras que la différence de salaire
dont tu parles n'est vraie que dans une minorité de cas (et uniquement
en RP). Et demande-toi à quel salaire peut prétendre un chômeur en
informatique de 45 balais.
C'est marrant j'ai aussi programmé ce jeu pour mon premier programme java, pour mon premier programme python et auussi pour mon premier programme (et seul d'ailleurs) pour Pocket PC.... Faudrait que je pense à diffuser tout ça à l'occasion.
> Enfin, si Shannon le dit, je sais pas qui c'est mais il doit
> avoir plus raison que moi quand même :þ
Shannon est le mathématicien qui a démontré (entre autres) que pour convertir un signal analogique en numérique il suffisait d'échantilloner à 2 fois la fréquence du signal analogique.
En pratique, l'oreille humaine entent jusqu'à 20 kHz et donc les CDs sont échantillonés à 2 * 20 kHz (enfin 44,1 khz plus précisément mais il doit y avoir une autre raison pour la pettite différence)
>Il suffit d'avoir dans cette interface une méthode pour
> prévenir que c'est à ton tour de proposer un coup.
Dans la méthode update() de l'IA, celle-ci vérifie si c'est son tour et dans ce cas joue. Elle met donc à jour le modèle. Le modèle appele les méthodes update() des vues et des autres IA éventuelles .C'est là qu'est mon pb :la première méthode update ne s'est pas terminée et donc on va avoir une récursivité.
En fait si je reste dans ce schéma MVC, il faudrait que ma méthode update(), ou que les mises à jour du modèle soient asynchrones. Mais aller programmer des threads pour un jeu de morpion c'est lourdaud...
La réponse est non : Il n'y a que la grille qui soit redessinée après chaque coup.
Est-ce que tu aurais un lien ou deux sur les patterns classques de jeux dont tu parles ? Mon pb doit être très classique a priori, et il doit bien exister quelque chose !
C'est une appli classique avec interface graphique. Mais ta remarque sur l'utilisation ou non du MVC est pertinente...
Est-ce vraiment le bon pattern à utiliser dans mon cas ?
> j'ai du mal à comprendre quel enchaînement logique fait que le
> programme "appelle la méthode update encore et encore
Le MVC fonctionne de la façon suivante :
Tu as 3 types d'entités :
- le modèle qui contient les données applicatives
- les vues qui représentent ces données
- les contrôleurs qui mettent à jour le modèle.
Le modéle ne connait qu'une chose des vues : elles ont une méthode update(). Le modèle ne connait rien des contrôleurs.
Au lancement, le modèle est créé. Les vues s'incrivent auprès du modèle (le modele possede une méthode du style register(vue)). Le modèle conserve la liste des vues qui se sont enregistrées.
Lorsque le contrôleur fait une mise à jour du modèle, ce dernier s'en aperçoit et appele successivement la méthode update() des vues enregistrées.
> ce serait la vue du joueur IA qui appelle la méthode "jouer",
> bien sûr
Donc en fait c'est un contrôleur (puisque jouer() modifie mon modèle). Tu arrives au même point que moi. Et c'est là que ça coince...
> Il doivent implémenter l'interface joueur qui demande
> la méthode jouer().
D'accord. Mais c'est là le problème. Qui va appeler la méthode jouer de l'ordinateur ?
Si on se place avec une interface ligne de commande c'est simple, on a un objet C qui appele successivement les méthodes jouer() des deux joueurs, qu'ils soient humains ou pas.
Maintenant avec une interface graphique, on ne peut pas faire ça puisque c'est l'interface (par le contrôleur) qui va appeler les méthodes jouer().
>Pour le joueur IA, jouer() veut dire: calculer le coup, le jouer et
> mettre à jour la vue.
Dans le MVC, ce n'est pas tout à fait ça... jouer() met à jour le modèle, et le modèle appele la méthode update() de toutes les vues qui sont enregistrées.
C'est pour cela que j'ai créé un objet à la fois vue et contrôleur : comme la vue est la seule à être prévenue d'un changement de modèle, et que le contrôleur est le seul à pouvoir mettre à jour le modèle, ça paraît cohérent.
>Ta méthode de faire en sorte qu'une vue soit aussi un
> contrôleur me surpasse totalement.... Le modèle MVC sépare
> justement ces deux entités pour que l'on ne s'embrouille pas
> les pinceaux.
Le but est surtout de séparer le modèle de l'interface (vue+contrôleur). D'après ce que j'ai pu voir, vue et contrôleur sont souvent liés.
Je ne comprend pas quelque cjose : python/wxpython est cross-platform. Alors quels genres de problèmes as-tu pour qu'il fonctionne sous linux ?
Et une autre petite question : le support xml est intégré à python. Pourquoi (ou comment...) utiliser une bibliothèque externe ?
Je te pose toutes ces questions car j'ai fait le même style de programme en python/wxpython également (avec pil pour les manipulations d'images au lieu d'outils externes)...
J'ai peur que freenet ne convienne pas à cause de " Instead, files are kept or deleted depending on how popular they are, with the least popular being discarded to make way for newer or more popular content ".
Ca ne serait pas terrible que ma sauvegarde soit perdue car jamais demandée !
D'après la page http://www.laria.u-picardie.fr/~soyez/classification.html(...) il existe un petit paquet de tels clients P2P.
Je me demande lesquels sont stables, quels sont les avantages/inconvénients des uns par rapport aux autres, quelle est la valeur ajoutée de ustorage ?
> Les données doivent être cryptées (2048 bits/RSA semble un
> bon parti)
On est d'accord.
> Les données doivent être dispersées (pour pouvoir retrouver
> ses données en toutes circonstances, même si un des
> ordinateurs en face a planté ou est déconnecté)
> Les données doivent être redondantes, afin d'avoir toujours
> une personne connecté qui a une partie de vos données
Ca c'est un problème : si les données sont réparties n fois, pour que le système fonctionne, il faut consacrer n fois l'espace disque sauvegardé aux sauvegardes des autres.... Ca peut faire lourd !
> Chaque partie sauvegardée doit être indépendante des autres,
> afin de pouvoir récupérer une partie des données si une partie
> est manquante.
Donc au lieu de faire une sauvegarde globale, faire un ensemble de sauvegardes avec une taille maxi.
> On doit héberger minimum n fois la quantité de données qu'on
> sauvegarde, avec n le nombre de fois ou l'on souhaite que nos
> données soient recopiées sur le reseau.
Ah mrd, tu l'as déjà écrit, tant pis je garde ma première réponse quand même... C'est le problème principal. Mais les données véritablement importantes sur un système ne représentent qu'une fraction d'un disque dur. Et comme la taille des disques augmenté régulièrement, ça peut le faire...
> Voilà mon appréciation... Si quelqu'un veut bien passer au
> codage...
Ca m'étonnerait que personne n'y ai déjà pensé et commencé à coder...
[^] # Re: Navigateurs/clients LDAP
Posté par norbs . En réponse au journal LDAP pour les nuls. Évalué à 1.
[^] # Re: xbindkeys
Posté par norbs . En réponse au journal Marre du menu demarrer. Évalué à 5.
alt c'est SA touche !
[^] # Re: travaux universitaires
Posté par norbs . En réponse à la dépêche Italie : subventions publiques = domaine public. Évalué à 5.
> conviction idéologique, quitte à être payé 2 à 4 fois moins que
> dans le privé.
Idée reçue ! Regarde un peu les salaires des annonces dans
le privé, regarde les compétences demandées, regarde les conditions
proposées (SSIII mon amie). Tu verras que la différence de salaire
dont tu parles n'est vraie que dans une minorité de cas (et uniquement
en RP). Et demande-toi à quel salaire peut prétendre un chômeur en
informatique de 45 balais.
# Le quarto c'est formateur...
Posté par norbs . En réponse au journal [Recherche de mainteneur] Reprise du projet Kuarto. Évalué à 1.
[^] # Re: Bonne nouvelle... et l'inverse?
Posté par norbs . En réponse à la dépêche ooo2dbk : Générer du DocBook à partir de documents OpenOffice.org. Évalué à 3.
C'est standard dans OOo (Fichier -> Ouvrir).
Ceci dit ça ne gère pas tous les attributs, notament les largeurs de colonne.
[^] # Re: Et si on mettait en application Shannon
Posté par norbs . En réponse au journal Des données sur un vinyle. Évalué à 1.
> avoir plus raison que moi quand même :þ
Shannon est le mathématicien qui a démontré (entre autres) que pour convertir un signal analogique en numérique il suffisait d'échantilloner à 2 fois la fréquence du signal analogique.
En pratique, l'oreille humaine entent jusqu'à 20 kHz et donc les CDs sont échantillonés à 2 * 20 kHz (enfin 44,1 khz plus précisément mais il doit y avoir une autre raison pour la pettite différence)
[^] # Re: PNG !
Posté par norbs . En réponse au journal OpenOffice2 : ça va roxer !. Évalué à 5.
Si si le PNG c'est sans perte.
[^] # Re: Code postaux
Posté par norbs . En réponse au message Informations géographiques. Évalué à 1.
au moins le premier que tu donnes est tout ce qu'il y a de + propriétaire.
[^] # Re: Padding
Posté par norbs . En réponse au journal L'informatique en carton. Évalué à 7.
> j'ai utilisé une scie égoïne !
Obligé de scier un container pour y faire rentrer un carton, c'est rude !
# Liens de téléchargement
Posté par norbs . En réponse au journal Cours en libre téléchargement. Évalué à 3.
The requested URL /pub/Guide_du_débtant.pdf was not found on this server.).
Par contre http://at0me.free.fr/pub/Guide_du_d%e9btant.pdf(...) fonctionne...
En général, j'évite de mettre des accents dans les noms de fichiers pour être sûr de ne pas avoir ce genre de problème. En renommant ton fichier, ça te permettrait en plus d'ajouter le "u" manquant.
[^] # Re: bin
Posté par norbs . En réponse au journal Articles de loi sur les listes de diffusion et le spam. Évalué à 1.
> trouve pas mon e-mail dans son listing.
Bizarre, t'es sûr de ne pas t'être inscrit avec un alias ?
[^] # Re: python et wxpython
Posté par norbs . En réponse au journal Développement multi-plateformes. Évalué à 2.
> telles que MySqllite. C'est possible ça ?
Ce n'est pas lié à wxWidgets mais directement à python :
pour sql lite :
http://pysqlite.sourceforge.net(...)
pour mysql :
http://sourceforge.net/projects/mysql-python/(...)
pour MySqllite :
au hasard : http://pysqlite.sourceforge.net/projects/mysql-python/(...) , ça marchera peut-être :-)
[^] # Re: Re :
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
> prévenir que c'est à ton tour de proposer un coup.
Dans la méthode update() de l'IA, celle-ci vérifie si c'est son tour et dans ce cas joue. Elle met donc à jour le modèle. Le modèle appele les méthodes update() des vues et des autres IA éventuelles .C'est là qu'est mon pb :la première méthode update ne s'est pas terminée et donc on va avoir une récursivité.
En fait si je reste dans ce schéma MVC, il faudrait que ma méthode update(), ou que les mises à jour du modèle soient asynchrones. Mais aller programmer des threads pour un jeu de morpion c'est lourdaud...
[^] # Re: MVC pour un jeu ?
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
Est-ce que tu aurais un lien ou deux sur les patterns classques de jeux dont tu parles ? Mon pb doit être très classique a priori, et il doit bien exister quelque chose !
[^] # Re: MVC pour un jeu ?
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
Est-ce vraiment le bon pattern à utiliser dans mon cas ?
[^] # Re: Re :
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
[^] # Re: Un peu de précision ?
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
> programme "appelle la méthode update encore et encore
Le MVC fonctionne de la façon suivante :
Tu as 3 types d'entités :
- le modèle qui contient les données applicatives
- les vues qui représentent ces données
- les contrôleurs qui mettent à jour le modèle.
Le modéle ne connait qu'une chose des vues : elles ont une méthode update(). Le modèle ne connait rien des contrôleurs.
Au lancement, le modèle est créé. Les vues s'incrivent auprès du modèle (le modele possede une méthode du style register(vue)). Le modèle conserve la liste des vues qui se sont enregistrées.
Lorsque le contrôleur fait une mise à jour du modèle, ce dernier s'en aperçoit et appele successivement la méthode update() des vues enregistrées.
> ce serait la vue du joueur IA qui appelle la méthode "jouer",
> bien sûr
Donc en fait c'est un contrôleur (puisque jouer() modifie mon modèle). Tu arrives au même point que moi. Et c'est là que ça coince...
[^] # Re: Re :
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 1.
> la méthode jouer().
D'accord. Mais c'est là le problème. Qui va appeler la méthode jouer de l'ordinateur ?
Si on se place avec une interface ligne de commande c'est simple, on a un objet C qui appele successivement les méthodes jouer() des deux joueurs, qu'ils soient humains ou pas.
Maintenant avec une interface graphique, on ne peut pas faire ça puisque c'est l'interface (par le contrôleur) qui va appeler les méthodes jouer().
>Pour le joueur IA, jouer() veut dire: calculer le coup, le jouer et
> mettre à jour la vue.
Dans le MVC, ce n'est pas tout à fait ça... jouer() met à jour le modèle, et le modèle appele la méthode update() de toutes les vues qui sont enregistrées.
C'est pour cela que j'ai créé un objet à la fois vue et contrôleur : comme la vue est la seule à être prévenue d'un changement de modèle, et que le contrôleur est le seul à pouvoir mettre à jour le modèle, ça paraît cohérent.
>Ta méthode de faire en sorte qu'une vue soit aussi un
> contrôleur me surpasse totalement.... Le modèle MVC sépare
> justement ces deux entités pour que l'on ne s'embrouille pas
> les pinceaux.
Le but est surtout de séparer le modèle de l'interface (vue+contrôleur). D'après ce que j'ai pu voir, vue et contrôleur sont souvent liés.
[^] # Re: Question claire
Posté par norbs . En réponse au journal Problème de conception pour un jeu. Évalué à 2.
[^] # Re: jbrout jbrout jbrout
Posté par norbs . En réponse au journal Ranger ses photos numériques. Évalué à 1.
Et une autre petite question : le support xml est intégré à python. Pourquoi (ou comment...) utiliser une bibliothèque externe ?
Je te pose toutes ces questions car j'ai fait le même style de programme en python/wxpython également (avec pil pour les manipulations d'images au lieu d'outils externes)...
[^] # Re: Sauvegarde distribuée en P2P ?
Posté par norbs . En réponse au journal Sauvegarde distribuée en P2P ?. Évalué à 1.
> chose, parce que ca ne me parait pas evident a coder :-)
Voir + bas dans la page...
[^] # Re: ustorage :D
Posté par norbs . En réponse au journal Sauvegarde distribuée en P2P ?. Évalué à 2.
Est-ce que cela veut dire que les autres logiciels ne sont pas nickels à ce niveau ?
[^] # Re: freenet
Posté par norbs . En réponse au journal Sauvegarde distribuée en P2P ?. Évalué à 1.
Ca ne serait pas terrible que ma sauvegarde soit perdue car jamais demandée !
[^] # Re: ustorage :D
Posté par norbs . En réponse au journal Sauvegarde distribuée en P2P ?. Évalué à 1.
Je me demande lesquels sont stables, quels sont les avantages/inconvénients des uns par rapport aux autres, quelle est la valeur ajoutée de ustorage ?
[^] # Re: Sauvegarde distribuée en P2P ?
Posté par norbs . En réponse au journal Sauvegarde distribuée en P2P ?. Évalué à 1.
> bon parti)
On est d'accord.
> Les données doivent être dispersées (pour pouvoir retrouver
> ses données en toutes circonstances, même si un des
> ordinateurs en face a planté ou est déconnecté)
> Les données doivent être redondantes, afin d'avoir toujours
> une personne connecté qui a une partie de vos données
Ca c'est un problème : si les données sont réparties n fois, pour que le système fonctionne, il faut consacrer n fois l'espace disque sauvegardé aux sauvegardes des autres.... Ca peut faire lourd !
> Chaque partie sauvegardée doit être indépendante des autres,
> afin de pouvoir récupérer une partie des données si une partie
> est manquante.
Donc au lieu de faire une sauvegarde globale, faire un ensemble de sauvegardes avec une taille maxi.
> On doit héberger minimum n fois la quantité de données qu'on
> sauvegarde, avec n le nombre de fois ou l'on souhaite que nos
> données soient recopiées sur le reseau.
Ah mrd, tu l'as déjà écrit, tant pis je garde ma première réponse quand même... C'est le problème principal. Mais les données véritablement importantes sur un système ne représentent qu'une fraction d'un disque dur. Et comme la taille des disques augmenté régulièrement, ça peut le faire...
> Voilà mon appréciation... Si quelqu'un veut bien passer au
> codage...
Ca m'étonnerait que personne n'y ai déjà pensé et commencé à coder...