Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 25

#0 Re : -1 »  Comment lire des fichiers non vide de Taille 0x00 ZÉRO ! » Hier à 08:57

grim7reaper
Réponses : 11
izd a écrit :

Ok, tout s'explique maintenant !

Et...Il existe un moyen de lire ces pseudo fichier ?

En utilisant les fonctions qui ouvrent/lisent/ferment les fichiers dans ton langage de programmation.
Au niveau interface, ce sont des fichiers comme les autres (open, read et close fonctionnent, certains autorisent même write).

#1 Re : -1 »  Comment lire des fichiers non vide de Taille 0x00 ZÉRO ! » Hier à 23:09

grim7reaper
Réponses : 11
tiramiseb a écrit :

Je n'ai jamais fait de Free Pascal, mais vu ce que je trouve sur Internet... quelque chose comme ça ne fonctionne pas ?

program ReadFile;
 
{$mode objfpc}
 
uses
 Sysutils;
 
var
 File1: TextFile;
 Str: String;
 
begin
  Writeln('Lecture de fichier:');
  AssignFile(File1, '/proc/sys/net/ipv4/ip_forward');
  Reset(File1);
  Read(File1, Str);
  Writeln(Str);
  CloseFile(File1);
end.

Je confirme que ce code fonctionne  (je viens d’installer fpc pour tester)

#2 Re : -1 »  /* Topic des codeurs [8] */ » Le 25/05/2015, à 15:47

grim7reaper
Réponses : 2306

Ça semble intéressant mais y’a pas moyen d’avoir au moins les slides en PDF ?
La vidéo ne se lance même pas chez moi donc bon, dommage.

Édit : ha, c’est bon.
Bon bah je regarderais quand j’aurais le temps (j’ai les vidéos de Bret Victor à finir d’abord, pour le moment j’ai vu que « Stop Drawing Dead Fish »).

#3 Re : -1 »  /* Topic des codeurs [8] */ » Le 02/06/2015, à 16:44

grim7reaper
Réponses : 2306
The Uploader a écrit :

Game Developers Conference - Parallelizing the Naughty Dog Engine using Fibers
Ou comment le moteur de The Last of Us fut optimisé/reachitercturé pour arriver à 60 fps dans la version Remastered du jeu sur PS4. smile

Bon j’ai finalement trouvé du temps pour la regarder, la façon dont ils ont parallèlisés le moteur est intéressante.

Dans un autre genre, voici l’histoire d’un bug qui se fait remarquer à haut niveau mais dont l‘origine est très basse : « The discovery of Apache ZooKeeper’s poison packet »

#4 Re : -1 »  /* Topic des codeurs [8] */ » Le 11/06/2015, à 09:25

grim7reaper
Réponses : 2306
The Uploader a écrit :

Dans le même genre "Let's Compile like it's 1992" => Compilation du Wolfenstein 3D de 1992 sous DosBOX avec Borland C++ 3.1.

#5 Re : -1 »  /* Topic des codeurs [8] */ » Le 12/06/2015, à 08:46

grim7reaper
Réponses : 2306

Quel de genre de jeux ?
Tu vas faire ça en C du coup, non ?
T’as pas trop perdu la main avec tout ton C# récemment (Brace Yoursef SEGFAULT is Coming) ? tongue

#6 Re : -1 »  /* Topic des codeurs [8] */ » Le 14/06/2015, à 19:27

grim7reaper
Réponses : 2306

Tiens, pour ceux en manque de bonne lectures, je vous suggères les trois livres suivant (tous accessible gratuitement pour une lecture en ligne ici) :
- The Architecture of Open Source Applications
- The Architecture of Open Source Applications, volume 2
- The Performance of Open Source Applications

Pour les deux premiers, il est même possible de créer un PDF à partir des sources ici.
Pour le troisième j’ai pas encore trouvé (mais j’ai contacté Tavish Armstrong, on va voir si j’ai une réponse).

#7 Re : -1 »  /* Topic des codeurs [8] */ » Le 14/06/2015, à 22:21

grim7reaper
Réponses : 2306
The Uploader a écrit :

Peut-être d'ailleurs quelque chose qui fonctionne sous Linux (ou Windows) qu'ensuite j'adapte pour DOS (pour enlever une difficulté).

Je me demande si c’est pas plus simple dans l’autre sens (plus simple de viser un truc limité puis faire le portage sur une plateforme plus puissante).
Sinon pour le C++, si ça doit être possible (mais faudra probablement se limiter au C++ prè-C++11).

Elzen a écrit :

On n'a pas quelques projets de jeux sur le feu, d'ailleurs ? smile

(Je pense notamment à Hortus Belli et à Arpège)

Toutafé !
D’ailleurs au sujet d‘Hortus Belli, j’ai toujours le code (comme je le disais récemment).

#8 Re : -1 »  /* Topic des codeurs [8] */ » Le 15/06/2015, à 19:24

grim7reaper
Réponses : 2306
grim7reaper a écrit :

Pour le troisième j’ai pas encore trouvé (mais j’ai contacté Tavish Armstrong, on va voir si j’ai une réponse).

L’aveugle du mois c’est moi \o/
J’ai eu une réponse : c’est dans le même dépot que les autres >_<
Je vais voir si c’est compilable smile

#9 Re : -1 »  /* Topic des codeurs [8] */ » Hier à 16:16

grim7reaper
Réponses : 2306
grim7reaper a écrit :

Je vais voir si c’est compilable smile

En l’occurrence, c’était compilable smile

Sinon, si quelqu’un veut se mettre à Haskell j’ai trouvé un message qui explique un cheminement possible avec plein de bon liens et de bons conseils smile
Je dit ça car je me suis remis à Haskell récemment (j'ai fait le CodinGame de ce week-end avec d’ailleurs).

C'était bien sympa (j'avais déjà codé un truc similaire en plus, j'avais dû le poster ici d'ailleurs), même si mon Haskell étant rouillé j’ai un peu galéré avec certains message d’erreurs du compilateur :]

#10 Re : -1 »  corruption de donnée: md5 d'une grande quantité de fichiers » Hier à 09:12

grim7reaper
Réponses : 2

Salut,

Quand tu lances md5deep tu as les CPUs à 100% ?
Si oui, alors tu es limité par l’algorithme (passer à un algo plus rapide type SipHash ou xxHash pourrait te faire gagner du temps).
Si non, alors tu es limité pas les I/O (tu as combien de fichiers ? La taille moyenne est petite ?) et dans ce cas faudrait réduire les I/O et c’est plus contraignant (mais faisable).

Mais bon, le plus inquiétant dans l'histoire ça reste ces histoires de corruptions, faudrait trouver leur origine (si le FS ou le disque commence à faiblir, ça sent pas bon…)

#11 Re : -1 »  En écoute en ce moment (2) » Le 12/06/2015, à 14:04

grim7reaper
Réponses : 1244

Symphony of Enchanted Lands II: The Dark Secret ­— Rhapsody of Fire, avec le regretté Christopher Lee pour la narration.

#12 Re : -1 »  SageMath: Logiciel d'algèbre informatisé » Le 13/05/2015, à 15:00

grim7reaper
Réponses : 35

Salut,

Tu peux essayer bc : il fonctionne avec des nombres de taille arbitraire, il a les fonctions de base (mise à la puissance, racine carré, trigo, exp, log, …).
Bon, par contre il ne gère pas l’écriture scientifique et n’affiche pas de barre de progression hmm

Quels logiciels as-tu essayé jusqu’à maintenant ?

Sinon, à priori Python, Ruby, Haskell (les langages qui utilisent GMP en fait) devrait pouvoir faire ce genre de calcul.

#13 Re : -1 »  SageMath: Logiciel d'algèbre informatisé » Le 13/05/2015, à 15:29

grim7reaper
Réponses : 35

Par le terminal :

sudo apt-get install bc

Sinon, cherche bc dans le gestionnaire de paquet que tu utilises (la logithèque ou autre).

#14 Re : -1 »  SageMath: Logiciel d'algèbre informatisé » Le 13/05/2015, à 16:21

grim7reaper
Réponses : 35

Déjà il fait charger bc avec la bibliothèque mathématique

bc -l

Ensuite :

man 1 bc a écrit :

s (x)  The sine of x, x is in radians.

c (x)  The cosine of x, x is in radians.

a (x)  The arctangent of x, arctangent returns radians.

l (x)  The natural logarithm of x.

e (x)  The exponential function of raising e to the value x.

j (n,x) The Bessel function of integer order n of x.

Il n’y a pas la factorielle par contre. Et je n’ai pas l’impression qu’il y ai de constantes prédéfinies (genre pi et e) non plus (bon au pire e = e(1)).

#15 Re : -1 »  Hortus belli projet de tower defense (finissons le jeu d'helly) » Le 04/06/2015, à 20:56

grim7reaper
Réponses : 62

Oui, de mon côté j’ai toujours le dépôt en local (et étant normalement le dernier à avoir commité, j’ai une version à jour).
Des fois j’y jette un œil et je me dit qu’il faudrait que je le termine. Mais le temps, toujours le temps… sad

#16 Re : -1 »  Connexion entre noeud qui ne se connaissent pas ? » Le 04/06/2015, à 10:39

grim7reaper
Réponses : 3

Salut,

Il te faudra probablement une DHT (Distributed Hash Table) (y'a une version française de la page mais elle est moins fournie), c’est ce qui est utilisé BitTorrent par exemple :

Wikipedia a écrit :

DHT research was originally motivated, in part, by peer-to-peer systems such as Freenet, gnutella, BitTorrent and Napster, which took advantage of resources distributed across the Internet to provide a single useful application.

#17 Re : -1 »  Connexion entre noeud qui ne se connaissent pas ? » Le 04/06/2015, à 15:27

grim7reaper
Réponses : 3

Ça me semble difficilement faisable sans avoir au moins une sorte de serveurs central avec quelques peer pour au moins amorcer la découverte des autres (ensuite le serveur central est inutile, les peers peuvent communiquer entre eux).
Après, si tout les nœuds sont sur un réseau « local » tu peux faire du broadcast. Si ce n’est pas local, ça revient à scanner Internet (c’est faisable, et rapidement, mais bon…) ce qui n‘est pas recommandé ni optimal.
Ce sujet semble proche du tiens.

#18 Re : -1 »  [PYTHON] Gérer de la musique sans Pygame ? Installer Pygame ? » Le 25/05/2015, à 14:35

grim7reaper
Réponses : 25

Salut,

Si tu ne vises que Linux, tu pourrais passer par GStreamer et son binding Python.
Pour un exemple d‘utilisation tu peux regarder ici (pour la partie wrapping de GStreamer, c’est indépendant de GTK) et (pour l‘appel).

#19 Re : -1 »  Debugger OpenCL » Le 13/05/2015, à 14:53

grim7reaper
Réponses : 1

Salut,

J’ai téléchargé l’archive et chez moi le programme se lance bien.
Est-ce que ton système est 64-bit ?

#20 Re : -1 »  [C++] Loi de Déméter » Le 09/05/2015, à 09:47

grim7reaper
Réponses : 5
Destroyers a écrit :

Imaginons une classe Personnage ayant un attribut Arme. la classe Arme possède un attribut std::string name.
Imaginons maintenant une classe gui qui affiche mon jeu.
Le problème: comment afficher le nom de l'Arme ? gui a besoin de récupérer l'Arme de mon personnage, mais je ne peux pas créer d'accesseur getArme() dans mon Personnage (selon ce que je viens de citer).
Je ne peux pas non plus créer getArmeName() non seulement par ce que c'est encore un accesseur mais en plus par ce que Personnage utiliserait un attribut de Arme (ce que la loi de Déméter interdit aussi).
Comment afficher le nom de l'Arme via ma classe gui ? Comment le récupérer ?

Je pense qu’il y a deux solutions ici :
- soit la classe GUI n’a pas besoin de connaître la classe Arme, dans ce cas la classe Personnage pourrait fournir ce qu’il faut via une méthode getDescription par exemple (qui renverrait une description du personnage, de son arme, son équipement…)
- soit la classe GUI a besoin de connaître la classe Arme et dans ce cas pourrait intéragir directement avec, sans passer par Personnage.

Destroyers a écrit :

Ce problème est également ennuyeux si mon Personnage a un attribut Sprite. Impossible d'appeler Personnage.getSprite() pour utiliser Sprite.setPosition() ou Sprite.draw(), alors de quelle manière dessiner mon sprite ?
Peut être est-ce la conception même de mes classes qui n'est pas bonne ? Aidez moi :3

La classe Personnage pourrait avoir une méthode move et draw, non ?
Ainsi, l’utilisation d’un sprite serait transparente (après tout, c’est un détail interne).

Destroyers a écrit :

J'ai une autre question à ce sujet:
Si Personnage a un attribut int vie, vu que ce n'est pas un objet, la loi de déméter m'autorise-t-elle à créer un accesseur getVie() ?

Déjà, d’une manière général tu n’as pas besoin de fournir automatiquement des accesseurs (et encore moins des setters) pour chaque attributs (on voit souvent ça en Java malheureusement), sinon il n’y a aucune encapsulation au final…
Si tout ce que tu as besoin de savoir par rapport à la vie c’est si le perso est mort, tu peux avoir une méthode isAlive par exemple.

Enfin, dernier conseil : n’hésites pas à aller sur forum C++ de developpez.com car ils ont des gens qui s’y connaissent très bien en C++ et POO.

#21 Re : -1 »  [C++] Loi de Déméter » Le 12/05/2015, à 05:27

grim7reaper
Réponses : 5
Destroyers a écrit :
alius a écrit :

ton objet arme doit implémenter une interface dans le genre affichable qui déclare une méthode afficheNomArme() et qui a pour principe d'afficher le nom de l'arme dans le gui.

grim7reaper a écrit :

La classe Personnage pourrait avoir une méthode move et draw, non ?

Ce que vous dites est intéressant, mais dans ce cas mes classes ne respectent plus la loi de responsabilité unique, ce qui poserait des problèmes de d'entretien du code.

Exact, mauvaise solution.

Destroyers a écrit :
grim7reaper a écrit :

Déjà, d’une manière général tu n’as pas besoin de fournir automatiquement des accesseurs (et encore moins des setters) pour chaque attributs (on voit souvent ça en Java malheureusement), sinon il n’y a aucune encapsulation au final…

Ne t'en fais pas je ne fais pas un accesseur par attribut. wink

C’est bien alors, car c’est une mauvaise pratique assez courante malheureusement.

Destroyers a écrit :

Je demande juste si d'une manière générale cette loi nous autorise à faire des accesseurs sur des types de base. j'ai donné ici l'exemple de la vie mais il peut en être de même pour le mana, la vitesse de déplacement, ou même le nombre d'instances de son contenues dans un soundCache.

La loi de Demeter n’interdit pas de fournir des accesseurs, mais elle interdit de les chaîner.

Destroyers a écrit :
grim7reaper a écrit :

- soit la classe GUI n’a pas besoin de connaître la classe Arme, dans ce cas la classe Personnage pourrait fournir ce qu’il faut via une méthode getDescription par exemple (qui renverrait une description du personnage, de son arme, son équipement…)

Passer par une classe pour accéder à une autre est justement ce que je cherche a éviter pour respecter la loi de Déméter.

Non, le fait qu’une méthode de la classe Personnage fasse appel à une méthode de la classe Arme est OK, car la loi t’autorise à appeler les méthodes de tes variables membres.
Donc tu peux tout à fait avoir une méthode Personnage.getDescription() qui va appeler les méthodes de Arme.

Destroyers a écrit :
grim7reaper a écrit :

- soit la classe GUI a besoin de connaître la classe Arme et dans ce cas pourrait intéragir directement avec, sans passer par Personnage.

C'est exactement ce que je cherche à faire big_smile
Mais c'est là que je ne sais pas comment faire... puisque mon Arme est dans mon Personnage hmm
C'est là que je demande de l'aide ^^

Je pense que si ta classe GUI a une méthode void display(const Arme& weapon) et que tu l’appelles via

GUI.display(perso.getArme())

Ça devrait être OK, car dans la méthode display tu pourras accéder aux méthodes et attributs de la classe Arme (car c’est un objet passé en paramètre)
De plus, maintenant, si un jour l’Arme n’est plus dans la class Personnage, ça n’impactera pas le code de la classe GUI (il faudra seulement changer l’appel), donc tu évites le couplage.

#22 Re : -1 »  python: arrêter un thread » Le 27/04/2015, à 13:18

grim7reaper
Réponses : 11

Salut !

D’où vient la fonction run que tu appelles dans callback1E ?
Normalement, si cette fonction run se termine (je ne connais pas cette fonction mais je suppose qu’elle va se terminer quand avconv est stoppé ou tué) alors callback1E va se terminer et ton thread devrait disparaître.
Si avconv n’est jamais arrêté, alors je suppose que la fonction run ne se termine pas non plus (et donc ton thread va continuer d’exister).
En plus, comme le thread est occupé en dehors de l’interpréteur Python (il exécute une commande externe) ça pourrait expliquer que tu ne puisses pas le stopper même via _Thread__stop).

totola a écrit :

Mais du coup je pourrais utiliser subprocess dans ce cas-là??

Pour la commande en locale (cvlc dans ton exemple) oui. En plus, en passant par Popen tu pourrais même faire un kill du process sans avoir à passer par un fichier PID externe
Pour la commande via SSH, ça devrait être possible (à vérifier).

#23 Re : -1 »  python: arrêter un thread » Le 27/04/2015, à 20:24

grim7reaper
Réponses : 11

Ok, merci pour les détails.

Je pense que le problème vient de la méthode run qui « bloque » le thread.
Pour vérifier cette hypothèse, tu pourrais ajouter un print après l’appel à run et voir si quelque chose s’affiche.

#24 Re : -1 »  python: arrêter un thread » Le 28/04/2015, à 10:25

grim7reaper
Réponses : 11

Salut,

Je pense qu’il va vraiment falloir appliquer les conseils du lien de la FAQ que tu m’avais donné. C’est la source de tout tes problèmes.
Parmis ce qui est proposé, dtach me semble le plus simple à utiliser.
Quelque chose dans ce genre là peut-être :

run("dtach -n /tmp/cvlc_bg -Ez cvlc {} & echo $! > PID1.txt".format(self.IP_multicast[0]))