Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1135 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  73  74  75  76  77  78  79  80
Auteur Sujet :

[Topic unique] .Net @ Prog

n°2405837
DiB91
Bwaaaaaaah
Posté le 05-01-2022 à 18:14:10  profilanswer
 

Reprise du message précédent :
Messieurs, avec les versions modernes de Visual Studio (sous Visual Studio Installer quoi), c'est safe désormais d'installer la version n-1 après avoir installé la nouvelle ?
Une réparation de la nouvelle version est à prévoir une fois l'ancienne désinstallée ?

Message cité 1 fois
Message édité par DiB91 le 05-01-2022 à 18:15:52

---------------
La DiBerie | Rehost | Link
mood
Publicité
Posté le 05-01-2022 à 18:14:10  profilanswer
 

n°2405851
Implosion ​du Sord
Fesseur de chameaux
Posté le 05-01-2022 à 19:43:33  profilanswer
 

DiB91 a écrit :

Messieurs, avec les versions modernes de Visual Studio (sous Visual Studio Installer quoi), c'est safe désormais d'installer la version n-1 après avoir installé la nouvelle ?
Une réparation de la nouvelle version est à prévoir une fois l'ancienne désinstallée ?


Aucun soucis d'ordre entre 2017-2019-2022, et probablement avec d'autres versions. Tu peux même mixer les éditions sans soucis


---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405854
DiB91
Bwaaaaaaah
Posté le 05-01-2022 à 20:22:10  profilanswer
 

Yes c'est ce que j'ai fait là, 2022 Pro à côté d'une 2017 entreprise.
Mais du coup je peux desinstaller la 2017 sans risques de péter la 2022 ?


---------------
La DiBerie | Rehost | Link
n°2405855
Implosion ​du Sord
Fesseur de chameaux
Posté le 05-01-2022 à 21:08:36  profilanswer
 

DiB91 a écrit :

Yes c'est ce que j'ai fait là, 2022 Pro à côté d'une 2017 entreprise.
Mais du coup je peux desinstaller la 2017 sans risques de péter la 2022 ?


Yes, déjà testé. Je n'ai pas eu de soucis


---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405856
DiB91
Bwaaaaaaah
Posté le 05-01-2022 à 21:11:40  profilanswer
 

Top, merci :jap:


---------------
La DiBerie | Rehost | Link
n°2405857
ixemul
Nan mais sans blague ! ⚡
Posté le 05-01-2022 à 21:23:19  profilanswer
 

Pas de soucis. J'ai viré 2015 et 2017 il y a 3 semaines pour garder que 2019 et 2022, sans aucun soucis.

 

Sinon, je viens de voir que .net 6.0 était passé de base en LTS alors que 5.0 n'y a pas eu le droit  :??:


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2405859
Implosion ​du Sord
Fesseur de chameaux
Posté le 05-01-2022 à 22:17:38  profilanswer
 

ixemul a écrit :

Pas de soucis. J'ai viré 2015 et 2017 il y a 3 semaines pour garder que 2019 et 2022, sans aucun soucis.

 

Sinon, je viens de voir que .net 6.0 était passé de base en LTS alors que 5.0 n'y a pas eu le droit :??:


Une version sur deux est LTS -> 7.0 ne le sera pas, 8.0 le sera


---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405861
SirAnneau
Posté le 05-01-2022 à 22:37:11  profilanswer
 

C'est moi où la version 2022 est bien plus longue et lente que la 2019 [:osweat]

n°2405862
ixemul
Nan mais sans blague ! ⚡
Posté le 05-01-2022 à 22:38:34  profilanswer
 

Implosion du Sord a écrit :


Une version sur deux est LTS -> 7.0 ne le sera pas, 8.0 le sera


Ok... c'est couillon car 5.0 était un gros debug/updater de 3.1 (qui lui est LTS)...

 

Dommage :/, je garde mon 5.0 pour mes besoins et je passe mes client sous 6.0 ( qui est pas trop mal pour l'instant :o)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2405863
ixemul
Nan mais sans blague ! ⚡
Posté le 05-01-2022 à 22:39:44  profilanswer
 

SirAnneau a écrit :

C'est moi où la version 2022 est bien plus longue et lente que la 2019 [:osweat]


Heu..  c'est plutôt l'inverse normalement... sous 22 j'ai l'impression d'avoir un 19 sous stéroïdes :o


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
mood
Publicité
Posté le 05-01-2022 à 22:39:44  profilanswer
 

n°2405864
Implosion ​du Sord
Fesseur de chameaux
Posté le 05-01-2022 à 22:44:11  profilanswer
 

SirAnneau a écrit :

C'est moi où la version 2022 est bien plus longue et lente que la 2019 [:osweat]


C'est pas normal, c'est le contraire et de loin chez moi comme au boulot

 
ixemul a écrit :


Ok... c'est couillon car 5.0 était un gros debug/updater de 3.1 (qui lui est LTS)...

 

Dommage :/, je garde mon 5.0 pour mes besoins et je passe mes client sous 6.0 ( qui est pas trop mal pour l'instant :o)


5.0 et core 3.1 sont très très éloignés, ce n'est pas un "gros debug" du tout. 5.0 est la réunification de .Net Framework et dotnet core et netstandard. Ce framework est loin d'être performant. Pour de la prod, mieux vaut rester sur 3.1 ou aller sur 6.0. La v6 est une stabilisation et perf optimisation de la v5

Message cité 2 fois
Message édité par Implosion du Sord le 05-01-2022 à 22:45:46

---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405865
ixemul
Nan mais sans blague ! ⚡
Posté le 05-01-2022 à 22:49:29  profilanswer
 

 
Implosion du Sord a écrit :


5.0 et core 3.1 sont très très éloignés, ce n'est pas un "gros debug" du tout. 5.0 est la réunification de .Net Framework et dotnet core et netstandard. Ce framework est loin d'être performant. Pour de la prod, mieux vaut rester sur 3.1 ou aller sur 6.0. La v6 est une stabilisation et perf optimisation de la v5

 

Si ça ne tenait qu'à moi... hors le problème c'est que mes clients sont frileux (comme tous...) et entre ceux qui veulent rester en 3.1 car LTS et ceux qui veulent du 5 car ils ont pas confiance en 6.0 car trop récent... bah c'est relou... je suis rendu au point de faire que du self embebed pour masquer la supercherie.. mais ça fait chier de pondre des package de 120mo pour des petits trucs de merdes parfois  :sweat:


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2405866
DiB91
Bwaaaaaaah
Posté le 05-01-2022 à 22:50:48  profilanswer
 

Ah bah chez moi aussi VS2022 est incroyablement plus performant, réactif et rapide toute tache confondue, que les 2017 et 2019 :ouch:


---------------
La DiBerie | Rehost | Link
n°2405868
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 05-01-2022 à 23:21:37  profilanswer
 

Implosion du Sord a écrit :

5.0 et core 3.1 sont très très éloignés, ce n'est pas un "gros debug" du tout. 5.0 est la réunification de .Net Framework et dotnet core et netstandard. Ce framework est loin d'être performant. Pour de la prod, mieux vaut rester sur 3.1 ou aller sur 6.0. La v6 est une stabilisation et perf optimisation de la v5


+1 pour la partie où ils sont éloignés ; je trouve d'ailleurs le planning officiel un peu sportif, .Net 6 est dispo en GA sur Azure depuis genre 1 mois maximum et fin du support .Net 5 genre en mai [:la chancla] Alors OK, on a rarement besoin du support MS sur .Net m'enfin quand même c'est chaud, on a du .Net 5 en prod les gars [:la chancla]

Message cité 1 fois
Message édité par Taiche le 05-01-2022 à 23:21:47

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2405870
DiB91
Bwaaaaaaah
Posté le 05-01-2022 à 23:24:30  profilanswer
 

Pendant ce temps, l'équipe IT d'une ancien client à moi peaufine la migration de son CRM interne historique vers .NET Core 3.2 ...

Message cité 1 fois
Message édité par DiB91 le 05-01-2022 à 23:24:39

---------------
La DiBerie | Rehost | Link
n°2405880
Implosion ​du Sord
Fesseur de chameaux
Posté le 06-01-2022 à 00:08:33  profilanswer
 

Taiche a écrit :


+1 pour la partie où ils sont éloignés ; je trouve d'ailleurs le planning officiel un peu sportif, .Net 6 est dispo en GA sur Azure depuis genre 1 mois maximum et fin du support .Net 5 genre en mai [:la chancla] Alors OK, on a rarement besoin du support MS sur .Net m'enfin quand même c'est chaud, on a du .Net 5 en prod les gars [:la chancla]


C'était annoncé dès l'alpha la durée de vie de la 5.0 et la non recommandation d'utilisation sur les projets prod long-terme sans prévision de migration en 6.0

DiB91 a écrit :

Pendant ce temps, l'équipe IT d'une ancien client à moi peaufine la migration de son CRM interne historique vers .NET Core 3.2 ...


C'est 2.2 (ultra deprecated) ou 3.1, mais pas de 3.2


---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405881
DiB91
Bwaaaaaaah
Posté le 06-01-2022 à 00:23:06  profilanswer
 

C'est 3.1, effectivement :jap:


---------------
La DiBerie | Rehost | Link
n°2405884
antac
..
Posté le 06-01-2022 à 07:10:07  profilanswer
 

De notre côté on étudie le passage de la 3.1 à la 6 mais je sens bien que ça peut être galère...

n°2405886
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 06-01-2022 à 08:00:36  profilanswer
 

antac a écrit :

De notre côté on étudie le passage de la 3.1 à la 6 mais je sens bien que ça peut être galère...


C'est 3.1 vers 5 qui pique ; 5 vers 6 ça va bien se passer. J'ai fait 3.1 -> 5 en novembre sur notre plus grosse codebase, en faisant bien attention et en suivant le guide officiel, y a eu 0 problème. Mais c'est long, faut être vigilant et bien lire les liens qui parlent de trucs qui cassent ou de packages qui ne sont plus maintenus car faisant partie du framework.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2405887
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 06-01-2022 à 08:04:26  profilanswer
 

Implosion du Sord a écrit :

C'était annoncé dès l'alpha la durée de vie de la 5.0 et la non recommandation d'utilisation sur les projets prod long-terme sans prévision de migration en 6.0


J'entends mais la migration 3.1 -> 5 est déjà pas triviale et passer directement à la 6 alors qu'elle vient de sortir ça fait un peu peur aux directions/équipes ops.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2405901
Yor_le_Bou​rrin
Posté le 06-01-2022 à 09:41:15  profilanswer
 

ixemul a écrit :


 
Si ça ne tenait qu'à moi... hors le problème c'est que mes clients sont frileux (comme tous...) et entre ceux qui veulent rester en 3.1 car LTS et ceux qui veulent du 5 car ils ont pas confiance en 6.0 car trop récent... bah c'est relou... je suis rendu au point de faire que du self embebed pour masquer la supercherie.. mais ça fait chier de pondre des package de 120mo pour des petits trucs de merdes parfois  :sweat:  


Le choix va devoir être rapidement fait : le support pour la 3.1 expire le 03/12/2021, la 5 jusqu'au 08/05/2021, après faudra assumer les failles. Chaque LTS dure 3 ans, avec une période de recouvrement d'un an minimum, et prévisible. Ca laisse le temps d'intégrer au planning logiquement, surtout que l'effort n'est pas si énorme suivant ton cas. Typiquement pour moi qui n'utilise ni razor ni blazor (API pur), c'est l'histoire d'un jour.

n°2405902
TotalRecal​l
Posté le 06-01-2022 à 09:49:13  profilanswer
 

Après le temps de migration ne dépend pas que du FW de départ, mais plein d'autres trucs comme tes dépendances embarquées, de tes tests unitaires (pour fiabiliser le truc rapidement), de tes environnements où tu dois déployer (web, client lourd, parc homogène et maitrisé ou non...).
 
Mais on est d'accord que passer du 5 au 6 ça semble très simple. Sauf cas exotique en général tu augmentes le FW dans les csproj, tu upgrades les packages nuget et basta.
Même sur du Web (t'es pas obligé d'adapter les simplifications syntaxiques du 6 pour recompiler une appli web faite en 5, etc).


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2405928
ixemul
Nan mais sans blague ! ⚡
Posté le 06-01-2022 à 13:12:53  profilanswer
 

Yor_le_Bourrin a écrit :


Le choix va devoir être rapidement fait : le support pour la 3.1 expire le 03/12/2021, la 5 jusqu'au 08/05/2021, après faudra assumer les failles. Chaque LTS dure 3 ans, avec une période de recouvrement d'un an minimum, et prévisible. Ca laisse le temps d'intégrer au planning logiquement, surtout que l'effort n'est pas si énorme suivant ton cas. Typiquement pour moi qui n'utilise ni razor ni blazor (API pur), c'est l'histoire d'un jour.


 
Crois moi, l'effort il n'est absolument pas de mon côté... mais de celui des clients :D


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2405930
Implosion ​du Sord
Fesseur de chameaux
Posté le 06-01-2022 à 13:17:06  profilanswer
 

ixemul a écrit :

je suis rendu au point de faire que du self embebed


As-tu remarqué des baisses de performance ? Chez mon client actuel, on y songe dans certaines situations mais je n'ai pas eu l'occasion de benchmarker ça


---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2405931
ixemul
Nan mais sans blague ! ⚡
Posté le 06-01-2022 à 13:28:42  profilanswer
 

Implosion du Sord a écrit :


As-tu remarqué des baisses de performance ? Chez mon client actuel, on y songe dans certaines situations mais je n'ai pas eu l'occasion de benchmarker ça


 
Non, aucune.. après, j'ai pas spécialement mesuré non plus, mais au ressenti, pas de différence.
 
par contre, ça fait chier de trimbaler entre 80 et 140 mo pour un pauvre outils avec 4 fenêtres et 3 services [:ddr555] mais au moins, on se fade pas la validation de l'installation du framework XY par la DSI du client...  
 
Pour les gros outil de prod, par contre, on se plie à ce qui est disponible chez eux.. mais on pousse aussi de plus en plus vers du Docker/Kubernetes pour eviter au maximum d'être dépendant de leur infra... mais c'est pas toujours facile non plus à faire passer :D


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2406393
TotalRecal​l
Posté le 11-01-2022 à 11:46:08  profilanswer
 

Hello,
Petite question LINQ toute simple pour les amateurs de MoreLINQ et autres librairies du même genre :
https://stackoverflow.com/questions [...] to-objects

 

C'est pas vital et ça marche très bien de la façon que j'utilise déjà mais je me dis que le besoin est plutôt basique alors il y a sans doute un mec qui a écrit un truc concis pour faire ça, genre "prendre le dernier élément de chaque partition sur X en triant par Y" :p.
Merci :o

Message cité 1 fois
Message édité par TotalRecall le 11-01-2022 à 11:47:45

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2406413
Implosion ​du Sord
Fesseur de chameaux
Posté le 11-01-2022 à 12:54:19  profilanswer
 

TotalRecall a écrit :

Hello,
Petite question LINQ toute simple pour les amateurs de MoreLINQ et autres librairies du même genre :
https://stackoverflow.com/questions [...] to-objects

 

C'est pas vital et ça marche très bien de la façon que j'utilise déjà mais je me dis que le besoin est plutôt basique alors il y a sans doute un mec qui a écrit un truc concis pour faire ça, genre "prendre le dernier élément de chaque partition sur X en triant par Y" :p.
Merci :o


En .Net 6 tu peux remplace :

 

prp.OrderByDescending(o => o.Time).First()

 

par :

 

MaxBy(o => o.Date)

 


MoreLINQ permet aussi de le faire semble-t-il, ça sera plus performant

 

https://stackoverflow.com/a/9143173


Message édité par Implosion du Sord le 11-01-2022 à 12:54:54

---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2406643
SirAnneau
Posté le 12-01-2022 à 19:20:27  profilanswer
 

Bonsoir, ici est-ce le bon endroit pour des questions existentielles mais qui ne feront rien avancer ? :o
Par exemple, j'aime beaucoup l'instruction "foreach" depuis le début c# 1.0 [:panzemeyer] et je serais très frustré qu'elle n'existe pas. Cependant je me demande de plus en plus si elle nécessaire. Quelle grosse différence y-t-il vraiment entre ces deux codes !?

Code :
  1. foreach(var e in list)
  2. {
  3.   if(...) continue;
  4.   blabla (...)
  5.   if(...) break;
  6. }


Code :
  1. list.Foreach((e)=>
  2. {
  3.   if(...) return LoopState.Continue;
  4.   blabla (...)
  5.   if(...) return LoopState.Break;
  6. });
 

Point de vue compilateur, la 1ère version a besoin de la construction de machines à états, la seconde uniquement de bêtes fonctions.
A l'exécution, je ne pense pas qu'il y ait de différence fondamentale de vitesse (même s'il ne se passe pas exactement la même chose)

 

Bien sûr, en codant, je préfère la 1ère version. Les 'parenthèses-crochets' de la 2nd version c'est un peu de la merde surtout avec des boucles imbriquées... mais sans ce détail qu'est ce qui justifie la création du mot clé 'foreach', 'yield' avec tout ce que cela implique pour le compilateur... alors qu'une solution universelle existe !?

 

Après, si vous me trouver pas d'avantage fondamental, je fais pareil avec async-await :o

Message cité 1 fois
Message édité par SirAnneau le 12-01-2022 à 21:33:34
n°2406668
Implosion ​du Sord
Fesseur de chameaux
Posté le 12-01-2022 à 21:29:15  profilanswer
 

SirAnneau a écrit :

Bonsoir, ici est-ce le bon endroit pour des questions existentielles mais qui ne feront rien avancer ? :o
Par exemple, j'aime beaucoup l'instruction "foreach" depuis le début c# 1.0 [:panzemeyer] et je serais très frustré qu'elle n'existe pas. Cependant je me demande de plus en plus si elle nécessaire. Quelle grosse différence y-t-il vraiment entre ces deux codes !?

Code :
  1. foreach(var e in list)
  2. {
  3.   if(...) continue;
  4.   blabla (...)
  5.   if(...) break;
  6. }


Code :
  1. list.Foreach((e)=>
  2. {
  3.   if(...) return LoopState.Continue;
  4.   blabla (...)
  5.   if(...) return LoopState.Break;
  6. });
 

Point de vue compilateur, la 1er version construit une machine à états, la seconde construit uniquement une bête fonction.
A l'exécution, je ne pense pas qu'il y ait de différence fondamentale de vitesse (même s'il ne se passe pas exactement la même chose)

 

Bien sûr, en codant, je préfère la 1er version. Les 'parenthèses-crochets' de la 2nd version c'est un peu de la merde surtout avec des boucles imbriquées... mais sans ce détail qu'est ce qui justifie la création du mot clé 'foreach' avec tout ce que cela implique pour le compilateur et le besoin de class 'Enumerator<>' etc... alors qu'une solution universelle existe !?

 

Après, si vous me trouver pas d'avantage fondamental, je fais pareil avec async-await :o

 

Je viens de faire un test rapide en .NET 6, foreach semble deux fois plus rapide sur une liste de 250 objets vides

 

https://i.imgur.com/rSemeQgg.png

 

En .Net Core 3.1, le résultat est différent avec avantage pour l'utilisation de la méthode .ForEach() (qui est stable d'un framework à l'autre) :
https://i.imgur.com/WGIX9FF.png

 


EDIT : ces tests fait à l'arrache n'ont probablement que très peu de valeur :o

Message cité 1 fois
Message édité par Implosion du Sord le 12-01-2022 à 21:43:36

---------------
[VDS]AIO Fractal Design Celsius S36 | Carte Wifi N Intel 5100 mPCIe | divers accessoire boitier Fractal Design | Away from keyboard, close to your breast
n°2406669
Yor_le_Bou​rrin
Posté le 12-01-2022 à 21:32:52  profilanswer
 

La grosse différence c'est que tu as dans le cas 2 une méthode, avec ce que ça implique :
- Factorisation / déport de la logique possibles
- Mais optimisation impossible de la boucle via le compilateur (inlining etc.), du moins pas à ce niveau

n°2406670
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-01-2022 à 21:34:38  profilanswer
 

D'un point de vue technique, .ForEach() ne s'applique que sur des List. Donc déjà ça part mal pour la cohérence du code (et sans parler du fait que du coup foreach est une instruction nécessaire, puisque c'est ta première interrogation [:dawao]).

 

D'un point de vue lisibilité et approche par d'autres devs, la seconde version est nettement moins facile d'approche, que ce soit en mots-clés (foreach/break/continue sont quasi-universels dans tous les langages, alors que LoopState.Merdier non) ou en bruit (les parenthèses, flèches de lambda, point-virgule, etc...).

 

Bref, perso dès que je vois du .ForEach() je le remplace par une instruction foreach.

Message cité 1 fois
Message édité par Taiche le 12-01-2022 à 21:35:49

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2406678
SirAnneau
Posté le 12-01-2022 à 21:55:07  profilanswer
 

Implosion du Sord a écrit :

Je viens de faire un test rapide en .NET 6, foreach semble deux fois plus rapide sur une liste de 250 objets vides
https://i.imgur.com/rSemeQgg.png

 :jap: AMHA pas autant d'effort d'optimisation on était fait sur le second cas car peu utilisé.
 

Yor_le_Bourrin a écrit :

La grosse différence c'est que tu as dans le cas 2 une méthode, avec ce que ça implique :
- Factorisation / déport de la logique possibles
- Mais optimisation impossible de la boucle via le compilateur (inlining etc.), du moins pas à ce niveau

T'aurais un exemple concret d'optimisation qui serait impossible dans le second cas  :jap:  

n°2406697
SirAnneau
Posté le 12-01-2022 à 23:11:38  profilanswer
 

Taiche a écrit :

D'un point de vue technique, .ForEach() ne s'applique que sur des List. Donc déjà ça part mal pour la cohérence du code (et sans parler du fait que du coup foreach est une instruction nécessaire, puisque c'est ta première interrogation [:dawao])


Où est-ce nécessaire dans

Code :
  1. void MonEnumeration(Func<int, LoopState> loop)
  2. {
  3.   if(loop(1)==LoopState.Break) return;
  4.   if(loop(5)==LoopState.Break) return;
  5. }
  6. //
  7. MonEnumeration((e)->{Print(e); return LoopState.Continue});
Taiche a écrit :

D'un point de vue lisibilité et approche par d'autres devs, la seconde version est nettement moins facile d'approche, que ce soit en mots-clés (foreach/break/continue sont quasi-universels dans tous les langages, alors que LoopState.Merdier non) ou en bruit (les parenthèses, flèches de lambda, point-virgule, etc...).

C'est pas comme si je l'avais dit  :o  Sauf qu'il faut voir un peu plus loin.
 
En retenant cette approche, on peut imaginer l'ajout de sucre syntaxise et la possibilité de définir un retour par défaut. L'appel de ma méthode pourrait ressembler à ça :  

Code :
  1. MonEnumeration()|Loop(var e)
  2. {
  3.   Print(e);
  4. }

On pourrait donc faire du "aussi propre" avec beaucoup moins de mots-clés et un compilateur moins complexe.
 
Par exemple l'invention du bien intelligemment tordu "out Type Nom"  (AMHA le "out" devrait mérité la peine de mort :o)

Code :
  1. if(int.TryParse(str, out int i)) {blabla;} else {blabla;}


Serait avantageusement remplacé par

Code :
  1. IntParse(string str, Action<int> Success, Action Fail)
  2. {
  3.   if(...) Success(42);
  4.   else Fail();
  5. }
  6. //
  7. IntParse(str)|Success(var i){blabla;}|Fail(){blabla;}

... et même faire des choses qui demanderait de nouveaux mots clés.

n°2406732
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-01-2022 à 09:36:21  profilanswer
 

SirAnneau a écrit :


Où est-ce nécessaire dans

Code :
  1. void MonEnumeration(Func<int, LoopState> loop)
  2. {
  3.   if(loop(1)==LoopState.Break) return;
  4.   if(loop(5)==LoopState.Break) return;
  5. }
  6. //
  7. MonEnumeration((e)->{Print(e); return LoopState.Continue});



Mon point était que foreach est nécessaire dans la mesure où .ForEach ne marche que sur les List [:spamafote]

SirAnneau a écrit :

C'est pas comme si je l'avais dit  :o  Sauf qu'il faut voir un peu plus loin.


Tu n'as parlé que du bruit ; je parle de lisibilité en général et  

SirAnneau a écrit :


En retenant cette approche, on peut imaginer l'ajout de sucre syntaxise et la possibilité de définir un retour par défaut. L'appel de ma méthode pourrait ressembler à ça :  

Code :
  1. MonEnumeration()|Loop(var e)
  2. {
  3.   Print(e);
  4. }

On pourrait donc faire du "aussi propre" avec beaucoup moins de mots-clés et un compilateur moins complexe.
 
Par exemple l'invention du bien intelligemment tordu "out Type Nom"  (AMHA le "out" devrait mérité la peine de mort :o)

Code :
  1. if(int.TryParse(str, out int i)) {blabla;} else {blabla;}


Serait avantageusement remplacé par

Code :
  1. IntParse(string str, Action<int> Success, Action Fail)
  2. {
  3.   if(...) Success(42);
  4.   else Fail();
  5. }
  6. //
  7. IntParse(str)|Success(var i){blabla;}|Fail(){blabla;}

... et même faire des choses qui demanderait de nouveaux mots clés.


Non mais ce que tu cites n'existe pas en C# (avec des si...) et je trouve le | encore plus illisible [:joce] Enfin après t'as le droit de vouloir ça, mais la conversation dévie du sujet initial.
Pour en revenir à foreach, c'est quoi "beaucoup moins de mots-clés" ? Y en a 3, foreach, continue et break, avec les 2 derniers qui ne s'appliquent pas qu'à foreach mais aux boucles en général et qui sont connus dans la plupart des langages de prog. Pourquoi introduire de la complexité là où il n'y en a pas besoin ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2406769
Yor_le_Bou​rrin
Posté le 13-01-2022 à 10:59:36  profilanswer
 

SirAnneau a écrit :

T'aurais un exemple concret d'optimisation qui serait impossible dans le second cas  :jap:  


Pas de cas concret, je donne juste du théorique sur la compilation, en pratique je ne sais pas comment le JIT décide de ses optimisations. C'est par contre connu que l'inlining de méthode n'est en général pas implicite, il faut passer par des indicateurs pour éviter des problèmes de perfs voire des bugs (fonctions récursives !). Et le benchmark au dessus semble confirmer que le compilateur fait du meilleur boulot sur les boucles classiques (avec probablement d'autres optimisations que l'inlining, je n'ai cité que la plus connue).

n°2406813
SirAnneau
Posté le 13-01-2022 à 13:13:40  profilanswer
 

Taiche a écrit :

Non mais ce que tu cites n'existe pas en C# (avec des si...)

C'est le but de ma conversation !

 
Taiche a écrit :

(...) la conversation dévie du sujet initial.

Mon sujet : est-ce qu'une autre implémentation aurait été plus simple et universelle que le foreach usuel ?

 

Donc je suis en plein dans mon sujet.  

 
Taiche a écrit :

Pour en revenir à foreach, c'est quoi "beaucoup moins de mots-clés" ? Y en a 3, foreach, continue et break, avec les 2 derniers qui ne s'appliquent pas qu'à foreach mais aux boucles en général et qui sont connus dans la plupart des langages de prog. Pourquoi introduire de la complexité là où il n'y en a pas besoin ?

Y a aussi "yield return" et "yield break" :o Sinon j'ai donné l'exemple du "out Type VarName" qui deviendrait aussi inutile. Sans parler des nouvelles versions et implémentations nécessaires pour coupler foreach avec les awaits et même des exceptions

 

Donc justement, je ne n'introduis pas de la complexité, j'en enlève énormément point de vue implémentation de cas particuliers.

 

La complexité que tu me reproches est seulement dans l'approche "différente" et "moins standard". C'est le but de ma conversation : réinventer une autre roue ! Mais elle ne serait pas forcement plus complexe à utiliser pour qui en connait son utilisation.

 

Mais pourquoi donc souhaiter une autre roue !? (voila la question :o)

 

Car celle-ci me semble permettre d'avoir directement les outils pour faire du foreach, exception ou await sans l'implémenter spécifiquement dans le compilateur et donc d'être aussi directement utilisable pour des choses qui demanderaient une implémentation future en approche standard.


Message édité par SirAnneau le 13-01-2022 à 13:40:10
n°2407000
DiB91
Bwaaaaaaah
Posté le 15-01-2022 à 09:45:20  profilanswer
 

M'sieurs dames, question rapide :o
 
Quand on développe une application web avec .NET (ici du MVC 5 en .NET Framework 4.8, mais osef, ça s'applique à toute la plateforme), on est sensé gérer les requêtes HEAD des clients séparément des GET c'est bien ça ? :o
 
J'ai lu que le HEAD était un moyen rapide pour les robots (proxys, moteurs de recherche, réseaux sociaux ...) de s'assurer qu'un serveur est bien dispo à l'adresse donnée, sans devoir récupérer tout le body, en ne téléchargeant donc que le header de la réponse.
 
Du coup, si, dans mon appli MVC je ne réponds qu'aux GET (décoration [HttpGet] sur mes actions), ça veut dire qu'en cas de HEAD, je retourne une erreur ?
Dois-je donc prévoir pour chacune de mes actions, son homologue "HttpHead" (si ça existe), dans laquelle je return rien, pour satisfaire les robots ?
Ou existe-t'il un moyen de factoriser ça (route MVC basée sur un verbe HTTP plutôt qu'une URL ?) ?
 
Merci à vous :)


---------------
La DiBerie | Rehost | Link
n°2407016
fugacef
Posté le 15-01-2022 à 12:44:56  profilanswer
 

Ça a l'air de correspondre à ta question : https://stackoverflow.com/questions [...] sp-net-mvc :o

n°2407018
DiB91
Bwaaaaaaah
Posté le 15-01-2022 à 12:59:49  profilanswer
 

Merci, c'est pile poil en effet.
Comme j'ai décoré HttpGet mes actions, ça exclue les POST (voulu) mais du coup les HEAD aussi, c'est pour ça que je stacke comme un porc :o
 
Bref, merci :jap:


---------------
La DiBerie | Rehost | Link
n°2407277
TotalRecal​l
Posté le 18-01-2022 à 14:53:15  profilanswer
 

TotalRecall a écrit :

Ca fait bizarre le MVC Core .Net 6.0 avec 0 indentations, pas de main, pas de startup [:mike hoksbiger:3].
Le côté déstructuré ça ne participe pas à la lisibilité je trouve, sans doute une habitude à prendre, je suis tenté de réindenter tout ça.


 

Taiche a écrit :

L'indentation oui, le reste (les accolades, les using, les "public class Startup" ou "public class Program" ou "public static void Main(string[] args) machin"...) ça me manque pas [:dawao]


 


 
Pour revenir là-dessus, je me suis demandé si c'était moi qui était juste un peu réfractaire au changement ou si vraiment ça donne un truc confus, apparemment vu les réactions sur le sujet :  
https://github.com/dotnet/docs/issues/27420
Je ne suis clairement pas le seul à trouver ça affreux :d


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2407281
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-01-2022 à 15:21:04  profilanswer
 

Ouais enfin là c'est un gros thread de rageux, honnêtement je pige pas l'intérêt sachant que l'ancien modèle est toujours supporté et n'a pas de décommissionnement prévu.
 
Je comprends qu'on trouve ça moche ou quoi, perso je trouve ça plus lisible et moins verbeux, mais je pige qu'on n'aime pas. Maintenant le thread que tu linkes est ridicule. Suffit de voir, y a 1 mec qui dit "ah perso je trouve ça pas mal" sans attaque ni rien et pan, 36 downvotes.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  73  74  75  76  77  78  79  80

Aller à :
Ajouter une réponse
 

Sujets relatifs
service web REST en VB.NET HeySpreadRequete Access avec paramètres, éxécutée en VB .Net
impersonalisation sous ASP.NET[Topic Unique] les blagues pourries de harko et florentg
Generation d'un GIF en ASP.NETAppeler un service web .NET sécurisé en Java
Prog Visual Basic "periodicité"[Oracle] Temps d'execution de requete tres long par rapport au .NET
[VB.NET] Lister des imprimantes réseauxFusion de résultats de requêtes dans une unique Table
Plus de sujets relatifs à : [Topic unique] .Net @ Prog


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR