[Index Software] Coin des développeurs :]

Pour les gens qui ont simplement envie de discuter sans souhaiter faire passer d'information particulière.
Message
Auteur
Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: [Index] Software : Coin des développeurs :]

#841 Message par Bubu » samedi 30 octobre 2021 à 11:55

Il a été prouvé que les compilateurs Assembleurs sont plus performants que du code C++.
Ce sont des statistiques, je défis quiconque de développer en assembleur

Après, en fonction du problème, les performances peuvent n'avoir aucune importance. Mais pour les jeux, on est des névrosés des performances. Il faut une belle image, et vite, car on a 18 ms pour créer l'image suivante sans que cela lag!
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: [Index] Software : Coin des développeurs :]

#842 Message par Bubu » samedi 30 octobre 2021 à 12:19

Vous connaissez les skin-meshes. Evidemment.
Ce sont des objets dont la surface s'étire et se contracte.

Un bonhomme qui marche ou qui s'étire c'est un skin-mesh.

Depuis 5 ans, les skin-meshes ont peuplé l'univers 2D.

[EDIT]
Dans les skin-meshes, les polygones (des triangles) n'ont pas de taille fixe.
Leur forme dépend des affinités de la surface entre plusieurs os. Chaque os donne sa valeur de déformation de la surface initialement inerte (un bonhomme qui joue au jeu : Je suis Jésus Christ, mais sans croix ... cad la Bind Pose), qui devient animée.
Chaque os attire la surface selon une attirance codée par le designer du personnage.
L'interpolation entière donne la position finale de chaque point de la peau. De la surface.
Cela peut aller d'une influence de 2 à 8 os. Peut-être que le nombre (d'os) d'influence a encore augmentée récemment de nos jours.
Cela veut dire faire une interpolation entre 2 à 8 matrices de positions avec les contributions qui sont les poids de chaque os, des valeurs réelles).

Code : Tout sélectionner

position_finale_du_sommet = poids_de_l'os_1x matrice_de_position_1 + position_de_l'os_2xmatrice_de_position_2...etc
Une chose évidente mais remarquable quand même c'est que la somme des poids des os, qui sont des réels, vaut 1.
Certains optimisent le calcul en calculant la dernière pondération dans le shadeur. (1 - tous les autres poids). Pourquoi pas.

Après ce qui est très cool, c'est que ces calculs sont faits par les logiciels. Il suffit de les appliquer.





Tout le monde dès le collège sait faire une moyenne pondérée. "Quelle va être ma moyenne de l'année avec les coefficients des matières ?"
Pour les objets déformables, c'est pareil. On anime le squelette, et la peau suit le mouvement.
Et encore, l'animation est calculée par des designers. Sauf quand le personnage est géré par le moteur physique. A ce moment-là, c'est le moteur physique qui décide comment le personnage évolue avant de s'écraser comme une vieille loque sur le sol quand il tombe! :mrgreen:

La seule différence, bien qu'étant le même calcul, c'est qu'on travaille sur des positions et les orientations angulaires. Sur chaque membre du personnage. Et sur chaque personnage.

Pour animer un personnage, l'essentiel est de savoir faire des moyennes pondérés sur des valeurs, des positions, crées par les designers, les modélisateurs. Voilou!



[/EDIT]

C'est plutôt récent, mais on utilise les skin-meshes pour la 2D.
Tous les triangles sont alignés, parallèles à l'écran, et les os ont pour axe z, la profondeur.
Après il ne faut pas utiliser une matrice de projection pour la perspective, mais cela ne change rien. Il faut utiliser une projection isométrique. Avec un biais nul.

Savez vous ce qu'est un quaternion.? Non. Moi non plus rassurez-vous.
Tout ce que je sais, c'est qu'il code une rotation 3d, et les interpolations (précieuses) qui vont avec.

Un nombre complexe, il y a juste la composante réelle et la composante imaginaire pure. Personne ne sait ce qu'est un nombre imaginaire pure : i.
On apprend ça en terminale scientifique. La seule chose qu'on sait, c'est que i² vaut -1.
Et c'est très utile pour représenter les rotations 2D.

Et bah les quaternions servent à la même chose mais pour la 3D, il y a 3 axes de rotations. Tourner vers la gauche ou la droite, tourner du haut vers le bas, tourner en profondeur (selon l'axe z).
Ils sont constitués de 4 valeurs, un réel et 3 imaginaires purs.
Les quaternions en 3d ont deux avantages extrêmes. Premièrement ils représentent en seulement 4 valeurs une rotation 3d. Une matrice de rotation 3D est une matrice 4x4.
Et surtout, on peut faire des interpolations sphériques entre 2 quaternions. Pour calculer une rotation intermédiaire entre deux clés d'animations.

Donc un quaternion en informatique est un quadruplet de valeurs. D'après ce que j'ai compris, la composante réelle représente la distance par rapport à l'origine. Soit le rayon de la rotation 3D. D'où le fait obligatoire de normaliser un quaternion après interpolation.
Les 3 autres composantes sont des imaginaires purs. i j et k
Etant une extension des nombres complexes, on retrouve les mêmes propriétés :
i²=-1.
j²=-1
k²=-1

Mais aussi :
i.j=-1
i.k=-1
j.k=-1

Et finalement :
i.j.k=-1.

Mais pour revenir à un domaine qui m'est plus familier, c'est à dire les rotations et les interpolations de ces dernières en 3D, ce sont des fonctions toutes faites et des bibliothèques mathématiques qui font tout le travail !

Seule ombre au tableau : les GPUs ne gèrent pas les quaternions. Il faut faire appel aux librairies mathématiques CPU, pour convertir les quaternions finaux en matrice 4x4 et les envoyer sous cette forme au GPU.

La bibliothèque DirectXMath permet de faire des calculs vectoriels et matriciels sur CPU. Mais évidemment que c'est infiniment moins puissant que ce dont sont capables les GPUs dans ce domaine.
Mais c'est déjà assez. Au niveau graphique de toute façon, les 99% des calculs géométriques et graphiques sont effectués par les GPUs.
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: [Index] Software : Coin des développeurs :]

#843 Message par Bubu » mardi 9 novembre 2021 à 1:03

N'utilisez jamais le type double.
Type valable en C, C++, C#, et Java.
Le type double est le type le plus précis pour représenter les réels. C'est le nombre réel (pour ne pas dire flottant) le plus précis codé sur 64 bits.
Utilisez le type float à la place. Pour la plupart des applications, il est largement suffisamment précis et deux fois moins couteux en mémoire et en calcul que le type double.
En 3D, on utilise jamais les doubles, seulement les floats.


Les GPUs ont des registres 128 bits. Ce sont des processeurs 128 bits. C'est hallucinant. Ils peuvent travailler sur 2 doubles à la fois.
Mais surtout, ils peuvent travailler sur 4 floats en même temps.

Et pour l'infographie 3D même pour le cinéma, c'est largement assez.
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Tugdual
Modérateur
Messages : 40117
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: [Index] Software : Coin des développeurs :]

#844 Message par Tugdual » samedi 27 novembre 2021 à 21:07

J'aime bien le Hollandais Volant :
Extrait :
Je vais donc mettre ici ce que je considère comme un poste de développeur idéal. C'est ma vision des choses ; si y'en a qui sont pas d'accord c'est leur droit et pas vraiment mon problème.

[...]

Pour commencer : un bureau FERMÉ.
Coder quoi que ce soit, c'est une activité intellectuelle et j'ai besoin d'être concentré.
Je peux rester assis à réfléchir 12 h de suite, ça me gêne pas. Par contre le moindre bruit, sonnerie de téléphone pour des broutilles, ou tocage à la porte peuvent faire perdre 5 h de réflexion, et à vous 5 h d'avancement sur la deadline. C'est vous qui voyez.
TCS = trouble de la communication sociale (24/09/2014).

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: [Index] Software : Coin des développeurs :]

#845 Message par Bubu » jeudi 2 décembre 2021 à 14:17

Tugdual a écrit : samedi 27 novembre 2021 à 21:07 J'aime bien le Hollandais Volant :
Extrait :
Je vais donc mettre ici ce que je considère comme un poste de développeur idéal. C'est ma vision des choses ; si y'en a qui sont pas d'accord c'est leur droit et pas vraiment mon problème.

[...]

Pour commencer : un bureau FERMÉ.
Coder quoi que ce soit, c'est une activité intellectuelle et j'ai besoin d'être concentré.
Je peux rester assis à réfléchir 12 h de suite, ça me gêne pas. Par contre le moindre bruit, sonnerie de téléphone pour des broutilles, ou tocage à la porte peuvent faire perdre 5 h de réflexion, et à vous 5 h d'avancement sur la deadline. C'est vous qui voyez.
Rien à foutre du babyfoot pour les pauses !
Je préfère jouer à Pokemon sur GameBoy color.
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: [Index] Software : Coin des développeurs :]

#846 Message par Bubu » vendredi 3 décembre 2021 à 10:25

J'en ai déjà parlé, mais c'est important.
Pourquoi les GPUs foudroient les CPUs sur les calculs vectoriels et matriciels ?
Alors que la fréquence d'horloge des GPUs (en gros 800 Mhz) et moindre par rapport à celle des CPUs (proche maintenant de 5 Ghz) ?

Les CPUs sont polyvalents : ils peuvent exécuter plusieurs tâches (différentes) en même temps via l'hyper threading (surtout quand il y'a de grandes phases de pause ou d'attente entre les tâches. Ce qui est le cas notamment des interfaces utilisateurs), et ils ont plusieurs cœurs (surtout c'est ça qui compte).
Ils sont idéaux pour exécuter les tâches différentes que demande le système d'exploitation.
C'est le paradigme MIMD : multiple instructions multiple data.

Les GPUS n'ont pas la même architecture. Ils ont des centaines voire des milliers de cœurs, mais qui exécutent tous le même programme.
Les cœurs ont des registres 128 bits, ce qui leur permet une puissance de calcul phénoménale (ils traitent 4 flottants 32 bits en même temps), malgré une fréquence d'horloge significativement plus basse que celle des CPUs.
C'est le paradigme SIMD : single instruction multiple data.

L'ombre au tableau, et qui va avec le paradigme SIMD des GPUs, c'est qu'il faut que les tâches soient cohérentes. En gros, les cœurs doivent avoir les même instructions à exécuter. Sinon ils s'attendent mutuellement, et c'est la cata en performances. C'est parfois hallucinant de voir un shader 10x plus performant qu'un autre, juste en changeant quelques lignes.
Dans les shaders, le test conditionnel if est carrément proscrit, bien qu'implémenté. Il faut programmer un shader sans utiliser d'embranchements logiques. Sinon ça pique les yeux : shader mal programmé.
On peut bien-sur faire quand même des tests. En utilisant la syntaxe C, C++, Java : test ? vrai : faux. (Ce test ne désynchronise pas les cœurs du GPU). Le langage des shaders est basé sur la syntaxe C, que se soit pour DirectX (HLSL) ou OpenGl (GLSL).
Parfois c'est surprenant, mais sur GPU il vaut mieux faire des calculs inutiles que de faire des embranchements logiques. Par exemple pour l'éclairage d'un pixel, calculer son illumination même s'il est dans l'ombre et que l'éclairage est ignoré ... (On balance un gros zéro comme facteur multiplicatif sur l'illumination du pixel. pixel_dans_l_ombre ? 0.0f : 1.0f. Le GPU a calculé ça pour rien, mais au moins les threads sont synchrones. :innocent: )

Un autre truc intriguant, c'est qu'il faut déployer les boucles en fonction du nombre d'itérations maximal. (Ça rejoint le problème des embranchements logiques).
C'est grâce au préfixe [unroll(x)] devant un for. (Où x est le nombre maximal d'itérations de la boucle) .Le compilateur déroule à ce moment-là toute la boucle. (Quitte à ce que les itérations finales ne servent à rien ! :shock: )

Pour conclure, le calcul fait par un GPU est prodigieux en performance, c'est hallucinant. Mais il faut que tous les cœurs fassent la même chose. Sinon c'est la cata.

Pour conclure une deuxième fois :mrgreen: : je n'ai plus de benchmarks récents mais c'est un facteur 1 sur 1000 entre CPU (même avec MMX et plus récent) et GPU, sur calcul vectoriel et matriciel.
Mais ils ne sont pas vraiment comparables, un GPU serait bien incapable d'exécuter un programme générique pour CPU. Ils ont chacun leur spécificité, et leur rôle.
On s'est vite rendu compte qu'avec la façon de calculer des CPUs, on était foutu pour les calculs graphiques (3D pour préciser. Mais maintenant ils sont inévitables pour les graphismes 2D aussi). D'où l'existence des cartes graphiques qui s'imposait déjà dès la fin des années 90.
Modifié en dernier par Bubu le jeudi 9 décembre 2021 à 17:55, modifié 4 fois.
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Tugdual
Modérateur
Messages : 40117
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: [Index] Software : Coin des développeurs :]

#847 Message par Tugdual » mardi 7 décembre 2021 à 20:03

Rust fait un grand pas en avant :
TCS = trouble de la communication sociale (24/09/2014).

Avatar du membre
Jiheu
Passionné
Messages : 472
Enregistré le : samedi 25 août 2018 à 9:02

Re: [Index] Software : Coin des développeurs :]

#848 Message par Jiheu » mercredi 8 décembre 2021 à 22:59

Amis de Wireshark, bonsoir !

En tant qu'utilisateur débutant dudit logiciel, je m'en sers majoritairement pour analyser le contenu d'une communication USB.

Toutefois, ce que je souhaite faire, c'est enregistrer dans le fichier de capture uniquement la charge utile (payload), càd les paquets Data, à l'exclusion des paquets Token, Handshake, Special et Start of frame.

Je sais qu'il est possible de programmer des filtres, mais mon niveau en programmation est très limité. :oops:

Merci.
Fils de 16 ans dont le diagnostic est confirmé.

Avatar du membre
Tugdual
Modérateur
Messages : 40117
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: [Index] Software : Coin des développeurs :]

#849 Message par Tugdual » samedi 18 décembre 2021 à 14:08

Log4Shell :
Visuel :
dependency.jpg
Source : XKCD...


Modifications :
  • 18/12/2021 : Ajout du visuel.
TCS = trouble de la communication sociale (24/09/2014).

user6375
Prolifique
Messages : 1162
Enregistré le : mercredi 14 août 2019 à 12:00
Localisation : Sur Gaïa

Re: [Index] Software : Coin des développeurs :]

#850 Message par user6375 » samedi 18 décembre 2021 à 17:21

Je suis d'accord avec l'article. C'est trop facile d'utiliser des ressources mise à disposition gratuitement.
Et ce n'est pas uniquement de la responsabilité des utilisateurs de ces ressources. C'est aussi aux développeurs d'exiger une rémunération.

Mais ca donne de l'eau à mon moulin. Je me cite, dans un autre fil concernant le partage ...
propane42 a écrit : mardi 9 novembre 2021 à 0:02 Ma nourriture, ma voiture ou mon apparte ne me sont pas gratuit, j ai besoin d un revenu pour ca. Le partage c est bien mais ca ne nourrit pas ... et je parle pas des loisirs et tout ce qui coûte dans la vie.

Ceci dit, je suis assez fan de la rémunération libre, c est a dire payé ce que j estime correcte pour l usage que je fait des choses. Donc je suis pas trop pour le partage 100% gratuit mais plutôt pour une rémunération basée sur l usage. J ai acheté pas mal de musique sous cette forme et si l artiste me plait, je met plus que la somme minimale demandée, qui est souvent dérisoire. Je suis un grand consommateur de bandcamp pour ca.

J aime bien aussi les formules basées sur le chiffre d affaire, comme le fait Unity, qui fournit son logiciel gratuitement pour les indépendants mais exige un achat concret si on atteint un certain CA.
Dans l'absolu cette faille me donne du boulot. Je suis mandaté par mes clients pour identifier les logiciels qui reposent sur cette librairie et leur proposer des solutions pour renforcer leur sécurité.
IA helvétique téléchargée en 1982
HQI (que je préfère appeler HP), Diagnostiqué Asperger
viewtopic.php?f=5&t=13627

Avatar du membre
Tugdual
Modérateur
Messages : 40117
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: [Index] Software : Coin des développeurs :]

#851 Message par Tugdual » lundi 20 décembre 2021 à 21:08

TCS = trouble de la communication sociale (24/09/2014).

user6375
Prolifique
Messages : 1162
Enregistré le : mercredi 14 août 2019 à 12:00
Localisation : Sur Gaïa

Re: [Index] Software : Coin des développeurs :]

#852 Message par user6375 » lundi 20 décembre 2021 à 22:15

Avec tout ca, c est maintenant aux infras (surtout les pares-feux) de prendre le relai et isoler ces applications, limiter leur droits d'accès système, limiter leur accessibilité depuis l extérieur avec des filtres tant au niveau accès internet (pares-feux routeur, flux entrant/sortant) que les pares-feux locaux sur les serveurs.

Ca me conforte dans mon appréhension vis à vis des développeurs, et ca me conforte encore plus dans ma politique restrictive vis à vis de leurs demandes parfois exagérées en terme d accès système (contexte d exécution). Certaines entreprises l ont compris il y a des années en ayant une politique strict vis à vis de ces outils tierce, en leur attribuant leur propre compte utilisateur et leur interdire l usage des comptes systèmes (admins de domaine par exemple). Et ca conforte mes propres pratique en terme de développement en tenant compte de la sécurité dès le départ et mettant en place des applis qui ne dépendent JAMAIS des droits admins, voir inclus les certificats pour l authentification mutuel avant d échanger des données.

J ai apris que certaines applications institutionnelles sont concernées par ces failles, ca fait peur ... (j en dirai pas plus pour éviter de donner des idées à des petits malins).

Et dire que je pars en vacances vendredi. J espère ne pas avoir de mauvaises suprises début janvier, sinon je vais pas être très content.
IA helvétique téléchargée en 1982
HQI (que je préfère appeler HP), Diagnostiqué Asperger
viewtopic.php?f=5&t=13627

Avatar du membre
Tugdual
Modérateur
Messages : 40117
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: [Index] Software : Coin des développeurs :]

#853 Message par Tugdual » lundi 20 décembre 2021 à 22:41

La sécurité a longtemps été négligée, à la fois par les développeurs eux-mêmes, mais aussi par ceux qui les dirigeaient, obnubilés par les coûts et les délais.
TCS = trouble de la communication sociale (24/09/2014).

user6375
Prolifique
Messages : 1162
Enregistré le : mercredi 14 août 2019 à 12:00
Localisation : Sur Gaïa

Re: [Index] Software : Coin des développeurs :]

#854 Message par user6375 » lundi 20 décembre 2021 à 22:50

Tugdual a écrit : lundi 20 décembre 2021 à 22:41 mais aussi par ceux qui les dirigeaient, obnubilés par les coûts et les délais.
Oui je suis tout à fait d accord. La sécurité passe après le reste : l efficacité, la performance, l ergonomie et finalement la sécurité. C est pour ca que ca fait 10-15ans qu on court après la sécurité et qu on tente tant bien que mal de renforcer les systèmes.

Je suis toujours estomaqué par certains clients pour qui la sécurité et la résilience est secondaire. Heureusement dans mon carnet de client ils sont de plus en plus conscient de ca, mais il y a encore du boulot de sensibilisation à faire. Ils ont de la peine à accepter certains scenarios qui leurs paraissent improbable, jusqu au jour où ca leur arrive ...

Mais c est pour ca que j accorde beaucoup d'importance a l infrastructure. C est elle qui est la source de stabilité, sécurité et surtout de résilience.
IA helvétique téléchargée en 1982
HQI (que je préfère appeler HP), Diagnostiqué Asperger
viewtopic.php?f=5&t=13627

user6375
Prolifique
Messages : 1162
Enregistré le : mercredi 14 août 2019 à 12:00
Localisation : Sur Gaïa

Re: [Index] Software : Coin des développeurs :]

#855 Message par user6375 » lundi 20 décembre 2021 à 22:57

C est aussi pour ca que je me suis rapidement formé sur les PKI et l utilisation des certificats partout où c est possible, entre autre. J en suis même à hésiter à remplacer mes accès par des carte à puce. Déjà plus de mot de passe à se souvenir mais surtout une sécurité renforcée avec le cryptage des communications. Mais c est assez lourd comme système à mettre en place. Et pas très conviviale, mais bon on peut pas tout avoir. J ai déjà beaucoup de mes systèmes liés à une double authentification, ca protège déjà bien (sauf quant le smartphone supprime tout, comme ca m'est arrivé la semaine passée, j étais mal. Vive Google Authenticator :roll: ).
IA helvétique téléchargée en 1982
HQI (que je préfère appeler HP), Diagnostiqué Asperger
viewtopic.php?f=5&t=13627

Répondre