#901 Le 25/03/2013, à 08:09
- grim7reaper
Re : /* Topic des codeurs [8] */
The Uploader a écrit :(sans mettre #self.opcodes[self.opcode]() en commentaire ça plantait, alors j'ai fait pareil pour le code ruby. De toutes façons ça change rien j'pense)
Si, ça compte, c'est un appel de fonction, ça aide à ralentir encore plus
Ouais, il y a un hachage, c’est pas neutre.
Cela dit, les hachages sur les chaînes de caractères sont en général bien optimisés (car c’est un des cas les plus courant).
Le plantage est du, à mon avis, au fait que tu lis le fichier en binaire et donc tu lis un entier 49 et non un char '1'. Donc la clef n'existe pas dans opcodes{}
Yep, c’est ça.
Je veux émuler un truc très lent pour le moment, mais je ne m'interdis pas d'aller jusqu'à la Super NES par exemple.
The central processor was running at 330KHz.
Détrompe-toi, émuler correctement une SNES demande de la puissance.
Tu peux lire l’article de Byuu (auteur de bsnes) à ce sujet.
@grim7reaper: C'est normal ces "page fault" ? Tu affiches ça comment ?
J’utilise la commande time, la vraie. Pas le built-in du shell.
/usr/bin/time -v to_commande
Dernière modification par grim7reaper (Le 25/03/2013, à 08:09)
Hors ligne
#902 Le 25/03/2013, à 08:17
- Mindiell
Re : /* Topic des codeurs [8] */
Mindiell a écrit :Je veux émuler un truc très lent pour le moment, mais je ne m'interdis pas d'aller jusqu'à la Super NES par exemple.
The central processor was running at 330KHz.
Détrompe-toi, émuler correctement une SNES demande de la puissance.
Tu peux lire l’article de Byuu (auteur de bsnes) à ce sujet.
Je ne me trompe pas
Je veux, actuellement, émuler un processeur très lent (330KHz).
Je souhaiterai, peut-être, plus tard, émuler autre chose, et peut-être, pourquoi pas, une super NES, plus tard
Dernière modification par Mindiell (Le 25/03/2013, à 08:17)
Hors ligne
#904 Le 25/03/2013, à 11:33
- Mindiell
Re : /* Topic des codeurs [8] */
Ah ah ah ah !
Tu m'as grillé
Oui, enfin le CAE-510 plutôt. J'avais discuté avec caracolito il y a deux ans et j'ai retrouvé ce projet dans mes projets... Bref, vu la "lenteur" du machin, je pensais partir en python.
Hors ligne
#905 Le 25/03/2013, à 11:48
- grim7reaper
Re : /* Topic des codeurs [8] */
Ah ah ah ah !
Tu m'as grillé
Je suis relativement doué pour parler aux moteurs de recherche
Oui, enfin le CAE-510 plutôt. J'avais discuté avec caracolito il y a deux ans et j'ai retrouvé ce projet dans mes projets... Bref, vu la "lenteur" du machin, je pensais partir en python.
Et tu as une doc’ complète dessus ? Ou juste le jeu d‘instructions + 2/3 trucs ?
Sinon, le gcc nouveau est arrivé, et il y a du bon
- meilleur message d’erreur
- meilleur support de C++11
- intégration de TSan (j’avais un peu étudié ce truc lors de mon dernier stage, ça semble prometteur) et ASan
En parlant de mon dernier stage, j’avais un peu étudié le fonctionnement de Valgrind, très intéressant. Faudrait voit si, après une petite réécriture, je pourrais pas mettre à dispo’ ce que j’avais écrit à ce sujet.
Dernière modification par grim7reaper (Le 25/03/2013, à 11:50)
Hors ligne
#906 Le 25/03/2013, à 11:53
- Mindiell
Re : /* Topic des codeurs [8] */
Et tu as une doc’ complète dessus ? Ou juste le jeu d‘instructions + 2/3 trucs ?
Il n'y a que peu de choses : des jeux d'instructions, quelques docs légères. Je vais faire un premier jet et recontacter caracolito
Hors ligne
#907 Le 25/03/2013, à 11:53
- Elzen
Re : /* Topic des codeurs [8] */
En parlant de mon dernier stage, j’avais un peu étudié le fonctionnement de Valgrind, très intéressant. Faudrait voit si, après une petite réécriture, je pourrais pas mettre à dispo’ ce que j’avais écrit à ce sujet.
/me soutient cette idée
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#908 Le 25/03/2013, à 12:20
- The Uploader
Re : /* Topic des codeurs [8] */
The Uploader a écrit :(si j'étais fou, je referais DOSBox en Ruby, tiens. Comme d'autres l'ont refait en Java avec pas mal d'améliorations et l'ont nommé jDOSBox)
Quel genre d'améliorations ?
Inclusion de l'émulation 3DFX (limitée aux jeux Win9X pour le moment), par exemple. Enfin plutôt ré-implémentation de patchs tiers dispos sur VOGONS principalement avec quelques modifications sympas mais mineurs.
Genre, pour mon King Quest VII qui délire toujours, ça pourrait aider ?
Je ne pense vraiment pas, non. Et puis chez moi ça marche très bien avec Win 3.11 dans DOSBox.
(J'préférerais vraiment pouvoir l'avoir dans ScummVM ><)
Bah c'est sûr que y'aurait pas besoin de booter un OS d'abord (sans prendre en compte le temps d'installation de l'OS et des pilotes), que tu pourrais utiliser des savestates plutôt que le système de sauvegardes du jeu, voire faire jouer le MIDI par Timidity/FluidSynth avec une banque de sons de ton choix plutôt que d'être forcé d'utiliser la synthé FM de la SB16 émulée par DOSBox et utilisée par Win 3.11 grâce au driver adéquat, mais à part ça...
Sinon, le gcc nouveau est arrivé, et il y a du bon
- meilleur message d’erreur
- meilleur support de C++11
- intégration de TSan (j’avais un peu étudié ce truc lors de mon dernier stage, ça semble prometteur) et ASan
Nice !
En parlant de mon dernier stage, j’avais un peu étudié le fonctionnement de Valgrind, très intéressant. Faudrait voit si, après une petite réécriture, je pourrais pas mettre à dispo’ ce que j’avais écrit à ce sujet.
Intéressant. ^^
Dernière modification par The Uploader (Le 25/03/2013, à 12:26)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#909 Le 25/03/2013, à 13:33
- Pylades
Re : /* Topic des codeurs [8] */
Tiens, c’est bien qu’ils aient réparé -Wshadow.
Bon, s’ils pouvaient réparer -Wparentheses et je ne sais plus lequel, ce serait encore mieux.
Dernière modification par Πυλάδης (Le 25/03/2013, à 13:34)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#910 Le 25/03/2013, à 13:49
- Rolinh
Re : /* Topic des codeurs [8] */
@Rolinh : si ta proposition tiens toujours, le code de mon parser INI en Ruby a atteint le stade « présentable » donc je peux le publier.
La bidouille avec ALSA devrait bientôt l’être aussi.
Comme ce sont mes premiers codes en Ruby je serais bien sûr ouvert à toutes remarques
Bien sûr. Je te contacte pas mail pour arranger ça.
@Elzen: j'ai survolé ton article sur SSH et rien ne m'a choqué non plus. Et je ne connaissais pas la dernière astuce que tu présentes!
grim7reaper a écrit :En parlant de mon dernier stage, j’avais un peu étudié le fonctionnement de Valgrind, très intéressant. Faudrait voit si, après une petite réécriture, je pourrais pas mettre à dispo’ ce que j’avais écrit à ce sujet.
/me soutient cette idée
Ça m'intéresse aussi!
Hors ligne
#911 Le 25/03/2013, à 14:07
- Mindiell
Re : /* Topic des codeurs [8] */
Sinon, si je dois me remettre au C++, vous proposeriez quoi comme truc pour faire des tests unitaires ?
J'ai vu GoogleTest, apparemment c'est une lib, donc pas de machin sur internet où il faut donner sa vie en échange et ça a l'air pas mal. Mais je n'y connais rien en UT C++, j'en ai jamais fait, donc si vous avez des avis, ils sont les bienviendus
EDIT: Et puis, tant qu'on y est, les codes des tests, dans un répertoire à part qui reprend la même architecture que le projet ou à côté de chaque classe (je préfère la première idée je pense, mais bon)
Dernière modification par Mindiell (Le 25/03/2013, à 14:11)
Hors ligne
#912 Le 25/03/2013, à 14:34
- The Uploader
Re : /* Topic des codeurs [8] */
Jamais testé le TDD en C++, mais tu as l'embarras du choix. Quelques uns comme CATCH, lubunittest, et UnitTest++ ont pas l'air trop lourds.
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#913 Le 25/03/2013, à 14:40
- grim7reaper
Re : /* Topic des codeurs [8] */
En parlant de mon dernier stage, j’avais un peu étudié le fonctionnement de Valgrind, très intéressant. Faudrait voit si, après une petite réécriture, je pourrais pas mettre à dispo’ ce que j’avais écrit à ce sujet.
/me soutient cette idée
Intéressant. ^^
Ça m'intéresse aussi!
Bon, bah y’a plus qu‘à le faire alors ^^
grim7reaper a écrit :@Rolinh : si ta proposition tiens toujours, le code de mon parser INI en Ruby a atteint le stade « présentable » donc je peux le publier.
La bidouille avec ALSA devrait bientôt l’être aussi.
Comme ce sont mes premiers codes en Ruby je serais bien sûr ouvert à toutes remarquesBien sûr. Je te contacte pas mail pour arranger ça.
Ok, je checkerais mes emails en rentrant
Sinon, si je dois me remettre au C++, vous proposeriez quoi comme truc pour faire des tests unitaires ?
Quand j’en avais fait, j’avais utilisé CppUnit
Je ne connais pas les avantages/inconvénients par rapport à GoogleTest (n’ayant jamais utilisé ce dernier).
Si tu compte utiliser Boost, il me semble qu’il y a un truc pour les tests.
Tu peux peut-être regarder cette discussion (et cet article là, et celui-ci, liens issus de la discussion précédente)
EDIT: Et puis, tant qu'on y est, les codes des tests, dans un répertoire à part qui reprend la même architecture que le projet ou à côté de chaque classe (je préfère la première idée je pense, mais bon)
Perso je fait la solution 1, répertoire à part.
Hors ligne
#914 Le 25/03/2013, à 14:55
- Mindiell
Re : /* Topic des codeurs [8] */
@grim7reaper : merci, j'en profite : et à propos des analyseurs de code (lint, cpplint, etc...), il y a un intérêt ? Et les options -Wall, -pedantic et -ansi cest intéressant aussi ?
Hors ligne
#915 Le 25/03/2013, à 15:32
- grim7reaper
Re : /* Topic des codeurs [8] */
@grim7reaper : merci, j'en profite : et à propos des analyseurs de code (lint, cpplint, etc...), il y a un intérêt ?
Pour le C, splint me sort toujours trop de trucs (quand il ne s’arrête pas en cours de route car il trouve pas les bon includes ou un truc du genre…), ça demande configuration => flemme.
Pour le C++, j’ai essayé 2-3 fois cpplint et il n’a jamais rien relevé… Peut-être que mes options de compilations strictes sont suffisantes.
En fait, je crois que ces outils avaient un intérêt lorsque les compilateurs n’était que de simple compilateur.
Maintenant un compilateur fait de l’optimisation, de l’analyse statique de code (donc il peut émettre plus de warning), etc.
Du coup je pense que ces outils perdent un peu de leurs intérêt.
Par contre, en Python et Haskell je les utilise (pylint et hlint), là ils apportent une plus-value (surtout hlint pour Haskell, qui va même jusqu’à proposer des façons de réécrire)
Ha, mention spéciale à clang-analyser (pour C, et C++ aussi je pense (pas testé)) qui lui m‘a déjà relevé des trucs. Donc celui là ouais il peut être utile
Et les options -Wall, -pedantic et -ansi cest intéressant aussi ?
Oui, c’est clairement intéressant.
Mes lignes de compilation C et C++ sont configurés au petits oignons (quoique faudrait que je rejette un œil à celles pour le C++), et j’ai parfois 2-3 jeux d’options différent selon le but (debug, release, profiling, …). C’est super important je trouve.
Fait gaffe, pedantic va être renommé dans GCC 4.8
Dernière modification par grim7reaper (Le 25/03/2013, à 15:34)
Hors ligne
#916 Le 25/03/2013, à 15:45
- grim7reaper
Re : /* Topic des codeurs [8] */
Au fait, je ne sais pas si vous aviez entendu parler de ça.
J’avais vu la news sur developpez, enfin dans mon flux RSS (il y a 4 jours, dans l’après-midi). Car impossible d’avoir l’article sur le site (j’ai voulu allez voir le soir-même), le lien renvoie sur la page d’accueil (même les liens sur la news que j’ai trouvé via les moteurs de recherche font ça, c’est bizarre ).
Enfin, j‘avais finalement pu mettre la main sur l’article original.
C’est un « hack » simple mais avec des conséquences assez importantes, bizarre que ça ai pas fait plus de bruit que ça.
Édit : ha ça y est, je peux avoir accès à l’article sur developpez via le cache google, mais ça reste bizarre que l’article soit pas accessible facilement.
Dernière modification par grim7reaper (Le 25/03/2013, à 15:50)
Hors ligne
#917 Le 25/03/2013, à 15:47
- Kanor
Re : /* Topic des codeurs [8] */
Au fait, je ne sais pas si vous aviez entendu parler de ça.
J’avais vu la news sur developpez.com, enfin dans mon flux RSS (il y a 4 jours, dans l’après-midi). Car impossible d’avoir l’article sur le site (j’ai voulu allez voir le soir-même), le lien renvoie sur la page d’accueil (même les liens sur la news que j’ai trouvé via les moteurs de recherche font ça, c’est bizarre).
Enfin, j‘avais finalement pu mettre la main sur l’article original.
Je vois rien de passionnant dans ce hack, il faut déjà avoir un accès au code source de la page.
Hors ligne
#918 Le 25/03/2013, à 15:49
- Rolinh
Re : /* Topic des codeurs [8] */
J'ai aussi essayé de lancer slint sur des bouts de code C que j'ai écrit et... vu le nombre de trucs qu'il sort j'ai pas cherché plus loin (surtout que je compile mon code avec la ligne de compil "grim"). => même constat que grim quoi.
Sinon, je plussoie aussi l'analyseur statique de clang: il est juste excellent.
Hors ligne
#919 Le 25/03/2013, à 15:51
- grim7reaper
Re : /* Topic des codeurs [8] */
grim7reaper a écrit :Au fait, je ne sais pas si vous aviez entendu parler de ça.
J’avais vu la news sur developpez.com, enfin dans mon flux RSS (il y a 4 jours, dans l’après-midi). Car impossible d’avoir l’article sur le site (j’ai voulu allez voir le soir-même), le lien renvoie sur la page d’accueil (même les liens sur la news que j’ai trouvé via les moteurs de recherche font ça, c’est bizarre).
Enfin, j‘avais finalement pu mettre la main sur l’article original.Je vois rien de passionnant dans ce hack, il faut déjà avoir un accès au code source de la page.
Ce n’est pas possible d’injecter du javascript dans des pages ?
Il me semble que certains sites se font vérolés comme ça, et qu’après ils servent de vecteur pour infecté les visiteurs.
Édit : Mouais ok je vois ce que tu veux dire. D‘ailleurs c’est pour ça que la news à disparu, ils se sont fait pourrir dans les commentaires
Dernière modification par grim7reaper (Le 25/03/2013, à 15:53)
Hors ligne
#920 Le 25/03/2013, à 16:13
- Mindiell
Re : /* Topic des codeurs [8] */
Je vois rien de passionnant dans ce hack, il faut déjà avoir un accès au code source de la page.
Le fait est que :
- je crée un mail bidon de EDF (au hasard)
- je te fournis le lien pour payer ta facture vers https://edf.fr/lien_officiel
- au clic, je te redirige vers http://paradisfiscal.chezmoi/faux_site
Et on a tous plutôt perdu l'habitude de regarder l'url après avoir cliqué sur un lien, non ?
@grim7reaper, @Rolinh : merci, j'ai aussi abandonné l'idée du lint en C++. Je vais par contre tester CxxTest pour voir. Merci pour les articles fournis
Pour les options gcc, vu que j'y connais rien, il en manque (et je garde gcc 4.6.3 pour le moment) ?
Hors ligne
#921 Le 25/03/2013, à 16:23
- grim7reaper
Re : /* Topic des codeurs [8] */
Disons que si tu as déjà
-ansi -pedantic -Wall -Wextra
(-ansi pouvant être remplacé par -std=c++11, selon ce que tu vises)
tu as déjà une bonne base.
Ma ligne complète est :
-g -ansi -pedantic -Wall -Wextra -Wcast-qual -Wcast-align -Wconversion -Wsign-conversion -Wshadow -Wredundant-decls -Wundef -Wold-style-cast -Wdouble-promotion -Wfloat-equal -Woverloaded-virtual -Wmissing-include-dirs -Wswitch-default -Wlogical-op -Wno-long-long -pipe -Wunreachable-code -Wpadded
(ça c’est pour le mode debug, mais comme je l’ai dit faudrait que je vérifie pour améliorer/mettre à jour cette ligne).
Édit : et pour info, ma ligne avec clang c’est :
-g -ansi -Weverything -fcatch-undefined-behavior -ftrapv -pipe
En debug j’utilise -Weverything (bien que déconseillé) car je n’avais pas trouvé une liste des warnings disponibles (comme dans le man de gcc). Il faudrait que je vois si une telle liste n’a pas été créé depuis, ça serait plus propre.
Édit : mouais :
I had to look at the Clang source code to find all of them.
Bon bah je vais rester avec -Weverything encore un petit peu, j’ai pas trop envie de lire le code source à chaque release pour voir ce qui a été enlevé/ajouté/modifié au niveau flag
Édit : surtout que Weverything ne semble plus déconseillé maintenant (Cf. documentation).
Dernière modification par grim7reaper (Le 25/03/2013, à 16:31)
Hors ligne
#922 Le 25/03/2013, à 16:37
- Mindiell
Re : /* Topic des codeurs [8] */
grim7reaper : Merci encore,
Dernière question (f)utile : Est-ce qu'utiliser un entier sur 8 ou 16 bits sur une plateforme 32 bits ralentit le bouzin ? Parce que niveua RAM, on est tranquille en général, mais je crois avoir lu à droite et à gauche (je suis pas sectaire ) qu'utiliser moins que le registre de base du proc pouvait être dommageable (quoique faiblement a priori).
Hors ligne
#923 Le 25/03/2013, à 17:00
- grim7reaper
Re : /* Topic des codeurs [8] */
Possible que ça soit un peu plus lent, je dis bien possible. Tout ça ça dépend des architectures.
Dans tout les cas, je citerais Donald Knuth (pas un Mickey donc) « We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil ».
Donc je serais toi, part sur un truc logique (si c’est du 16 bits, utilise du 16 bits), si vraiment c’est un goulot d’étranglement par la suite (mis en évidence par profiling), il sera toujours temps de tout changer en taille native (ça devrait pas demander de gros effort, modulo un code propre).
Et j’ajouterais « profile it! », parce que faire ce genre de micro-optimisation ça pourrait revenir à faire des économies de bout de chandelles (tu gagnerais sûrement plus à revoir ton approche, ton algo’, etc.). Il faut garder ça pour la fin etb être sûr que c’est valable => donc faire du profilage, les bottlenecks ne sont pas toujours là où on croit.
Enfin, pour info (car pas sûr que ça soit vraiment utile, il faut savoir que certaines implémentations définissent les types int_fastX_t (X étant 8, 16, 32, …). Cf. ici (section Integer Types).
Dernière modification par grim7reaper (Le 25/03/2013, à 17:09)
Hors ligne
#924 Le 25/03/2013, à 17:39
- Mindiell
Re : /* Topic des codeurs [8] */
Ok merci, c'était plus pour l'information générale que pour une utilisation (d'où le (f) )
J'ai vu pour les types fast, mais bon, je verrai plus tard. Là j'essaye de comprendre l'écriture manuscrite des documents scannés des années 60-70 en les recoupant pour comprendre comment ça fonctionne
Hors ligne
#925 Le 25/03/2013, à 19:38
- Titus007
Re : /* Topic des codeurs [8] */
Relecture demandée aussi pour mon article sur les URLs et le DNS, si vous avez le temps ^^
Dans l'ensemble, ça me semble bon.
- fin de la note 2 : « ne sont peuvent » à revoir ; dans l'ensemble, je trouve cette note un peu confusante. On pourrait croire qu'il y a moins d'ordinateurs que d'adresses, alors que le NAT et les adresses de réseau locales permettent en théorie d'en avoir plus… je ne sais pas si elle sert le propos de ton article de manière générale, qui est sur les DNS et URL, et non sur les sous-réseaux.
- note 6 : Benjamin Bayart* te remerciera d'écrire son nom correctement, je n'en doute pas une seule seconde.
3% of people today would die if facebook was completely destroyed, 2.7% wouldn't. If you are one of the 0.03% that would be laughing, copy and paste this to your signature. If you are one of the 12% who would mourn the dead, don't. If you are among the 60% of people who don't have Internet, well... and if you don't care, do whatever the f... you want !
Hors ligne