Тёмный
Christophe Mommer
Christophe Mommer
Christophe Mommer
Подписаться
Tu es développeur C# ? Parfait ✌️

Moi aussi. Et ici, tu vas trouver des astuces sur le C# et les technologies associées 🚀 (ASP.NET Core, Blazor, WPF, Xamarin, etc.)

Ça t'intéresse ? Super ! Alors abonnes-toi pour ne rien rater 😉
MA ROADMAP POUR DÉVELOPPEUR C# .NET 2024-2025
44:56
5 месяцев назад
Комментарии
@Fx_Tchi
@Fx_Tchi День назад
Merci Pour le partage
@Storm_Ms
@Storm_Ms 2 дня назад
Merci beaucoup !
@HTSCoding
@HTSCoding 2 дня назад
Avec plaisir :-)
@BL_Pac
@BL_Pac 3 дня назад
Merci!
@BL_Pac
@BL_Pac 3 дня назад
Merci pour les explications c'était pas évident de différencier les deux
@lepresk
@lepresk 3 дня назад
Qu'est-ce que j'étais fan de Winform 😢 je ne sais pas pourquoi il n'a pas évoluer avec sa logique
@HTSCoding
@HTSCoding 3 дня назад
Oh, il continue à bouger !
@lepresk
@lepresk 12 часов назад
@@HTSCoding il n'y a pas de composants moderne que doit avoir une application aujourd'hui et la marge de personnalisation des composants est toujours aussi limité
@patricklanz
@patricklanz 3 дня назад
Entre l'ancienne et la nouvelle icone de VS, il y a une différence subtile: l'ancienne était un ruban de Möbius, pas la nouvelle.
@HTSCoding
@HTSCoding 2 дня назад
Oui, je sais pas si on doit y voir une signification cachée ou pas ...
@surrion
@surrion 4 дня назад
Merci Rider :D
@HTSCoding
@HTSCoding 4 дня назад
Rider est un excellent outil 🙂
@surrion
@surrion 3 дня назад
Comme j’utilise aussi bien Windows que Mac. Avoir une interface unique quelque soit le système que j’utilise m’aide beaucoup.
@HTSCoding
@HTSCoding 3 дня назад
Je comprends bien ! Si j'étais sous mac, je serai aussi sous Rider. Microsoft n'a pas fait d'IDE professionnel pour mac (VS for mac était une blague & a été abandonné), c'est dommage pour eux, mais au niveau des stats financières, ils doivent sûrement s'y retrouver
@surrion
@surrion 3 дня назад
@@HTSCoding j'avais test le vs pour mac au début, mais venant du vs windows l'interface était nuuuuuul et il manquait pleins d'outils tellement pratiques.
@Tbz48
@Tbz48 4 дня назад
De mon point de vue, Visual Studio et Resharper c'est le meilleur combo pour faire du C#. Le point négatif c'est la "lourdeur" au lancement :) Pour la différence, je résume toujours en classifiant VS de IDE et VS code d'éditeur de texte qui peut être boosté avec des extensions.
@HTSCoding
@HTSCoding 4 дня назад
C'est ce que je dis à demi-mot mais pas trop fort quand même ^^ Depuis les dernières versions de VS 2022, Resharper est de moins en moins utile je trouve. Mais c'est vrai que VS est un mastodonte qui prends son temps à se lancer
@remigrz
@remigrz 4 дня назад
Visual Studio manque cruellement du design vs code. Comme le raccourci de lancement de commande, d’ouverture de fichier, de multicurseur, transformation de casse … l’UX est incomparable
@HTSCoding
@HTSCoding 4 дня назад
C'est une histoire de goût et d'habitude je pense. Les options que tu mentionnes sont disponibles dans VS, je te propose de changer le système de raccourcis clavier pour utiliser le scheme VS Code, tu devrais t'y retrouver plus vite
@nicolaslair7627
@nicolaslair7627 4 дня назад
D'un point de vue design je trouve VS2022 largement mieux que VSC même si je pense que c'est une question de préférence et d'habitude. Et pour tous les éléments que tu cites comme le dit Christophe c'est aussi sur VS2022.
@userfriendlyi7067
@userfriendlyi7067 7 дней назад
Salut, merci pour cette vidéo complète, pour un total Newbie slow learner quel est le temps nécessaire pour accomplir cette roadmap ?! Merci
@HTSCoding
@HTSCoding 4 дня назад
Connaitre toute la roadmap est presque mission impossible tellement les choses vont vite. Après ça dépend si tu es accompagné ou pas, mais il faut bien 3/4 ans pour être familier et à l'aise avec la majorité des points
@tigidou3344
@tigidou3344 9 дней назад
La compilation n'est un gain si ultra plus rapide. C'est dans des occasions bien précises. Généralement c'est plus dans le 1 a 2 % plus rapide.
@tigidou3344
@tigidou3344 9 дней назад
C# a aucun avantages pour se distingués des autres langages. Mise à part le nombre de paradigmes... mon bon, tous moyens. Python à l'avantage de la rapidité de développement. Rust, le compilateur lise le binaire pour être ultra efficace/rapide à l'exécution. Etc. C# il est ultra bon dans.... ben rien de concret. Au mieux, c'est pratique pour les étudiants pas très bons en prog... L'idée du langage à la base est bonne, mais foutrement mal exploitée.
@xx-he3ii
@xx-he3ii 5 дней назад
Je ne comprend pas l'intérêt de ce commentaire ?! A part pour dire des bêtises, j'aurais tellement de choses a dire, mais vu le ton employer, je n'est pas envie de perdre mon temps a instruire les idiots.
@SylvainBIÉ
@SylvainBIÉ 10 дней назад
Super contenus d'une manière générale.
@HTSCoding
@HTSCoding 4 дня назад
Merci :-)
@ivoire-dev7925
@ivoire-dev7925 11 дней назад
Très belle vidéo ❤
@HTSCoding
@HTSCoding 4 дня назад
Merci beaucoup 😊
@nicolaslair7627
@nicolaslair7627 11 дней назад
Super rapide la réponse Christophe, merci c'est plus clair pour moi .
@HTSCoding
@HTSCoding 11 дней назад
Content d'avoir éclairci le point :-)
@ambarozzo5876
@ambarozzo5876 11 дней назад
A propos de la belle voix, je suis de cet avis, une voix claire, nette et précise. Merci beaucoup ... Excellent cours de démonstration.
@HTSCoding
@HTSCoding 4 дня назад
Ravi que ça t'ai plu, pour ma voix, c'est difficile d'être juge & parti ^^
@silvertes8132
@silvertes8132 11 дней назад
Génial ! Merci beaucoup pour les explications :)
@HTSCoding
@HTSCoding 4 дня назад
Je t'en prie :-)
@foxtrottone
@foxtrottone 16 дней назад
Je suit votre vidéo.. quand je click sur "welcome" je n'ai pas l'option "Get Started with C# Dev Kit" .. mais j'ai tellement bidouillé pour essayer des truc sans savoir .. Comment désinstaller complètement "VScode" ET effacer tous les paramètres .. pour le retrouver vierge et pouvoir redémarre normalement ? Merci pour les vidéos EDIT : j'ai réussi et tout fonctionne comme dans votre vidéo .. vous êtes le 1er à vraiment expliquer A - Z -> merci
@HTSCoding
@HTSCoding 16 дней назад
Au top ! Bonne continuation👍
@fcmdr8819
@fcmdr8819 16 дней назад
Salut Christophe, excellente série on attends la suite avec impatience !
@adrien8768
@adrien8768 16 дней назад
Ce que je comprend pas c est quand dit respect la règle open close principal donc en va pas dans bankacount faire des if else sinon il faut change le code si ont veux changer quelle que chose. Mais pour le vipstate tu as changé les 3 autre class. Donc c'est juste ça que je comprend pas trop. Si tu peux m'explique quand modifier du code est OK et non
@HTSCoding
@HTSCoding 14 дней назад
Il y a plusieurs axes de réponse à ce tte excellente question mais pour donner l'essentiel : - Il est rare/impossible d'avoir un système 100% extensible quand on ajoute une nouvelle fonctionnalité, ça passe très souvent par la modification de quelques éléments - Le mieux est de faire en sorte que les éléments principaux ne soient pas trop impactés En ce sens, dans ce petit exemple, la classe BankAccount, qui est la classe business publique, elle, ne change pas. Ce qui est à l'intérieur de la boite noire, les states, changent. Ce qui est important, à mon humble avis, c'est que l'API publique soit la plus stable possible. Mais de la même façon, cela ne peut pas toujours être évité. Il faut garder en tête qu'un principe n'est qu'un principe, et qu'on ne peut pas toujours le respecter à 100%
@adrien8768
@adrien8768 14 дней назад
@@HTSCoding oui je comprend mieux maintenant :) merci
@GeromeGuillemin
@GeromeGuillemin 16 дней назад
Merci Christophe ! Que penses tu de cette révision de la classe Observer qui sur le mathode ObserveAsync se voit débarassée de ASYNC afin de générer moins de code par le compilateur C# ? public class Observer { public delegate Task AsyncEventHandler(object value); public event AsyncEventHandler? OnObserveAsync; public Task ObserveAsync() { return OnObserveAsync is not null ? Task.WhenAll(OnObserveAsync.GetInvocationList() .Cast<AsyncEventHandler>() .Select(handler => handler(this)) .ToArray()) : Task.CompletedTask; } }
@HTSCoding
@HTSCoding 16 дней назад
Yes, pourquoi pas, si on part du principe que les appels sont parallélisables ;-) (ce qui devrait -normalement- être le cas, mais la normalité...)
@mehdiLesty
@mehdiLesty 17 дней назад
Est ce que ça signifie que toute règle nouvelle implique l’implémentation d’un nouvel état? Bien que je perçoive la pertinence de ce pattern, ça ne risque pas d’alourdir le code base? Merci pour la découverte 👍
@axeldenis8775
@axeldenis8775 17 дней назад
Merci pour cette excellente vidéo ! Petite question, tu dis ne pas recommander les exceptions pour la gestion des cas métiers, mais t'explique pas pourquoi 😭
@HTSCoding
@HTSCoding 17 дней назад
@mehdiLesty Si on applique ce pattern, effectivement, il va y avoir une multiplicité des classes d'états. Cependant, il y a deux choses importantes selon moi à distinguer ici : 1) la multiplicité de ces petites classes offre une grande flexibilité qui permet d'aller dans un grand niveau de détail (c'est un peu la même histoire que le choix entre un seul modèle qui sert de DTO, de classe métier et de modèle de BDD ou 3 classes différentes avec du mapping) 2) il n'est probablement pas adapté à TOUS les objets métier, je pense qu'il est à réserver à des objets métier où le changement d'état est très impactant (si on reprend le DDD par exemple, c'est plus approprié pour les éléments publics comme les aggrégats et non pour les éléments "internes" comme les entités ou les valueobjects) Comme à chaque fois, il faut faire preuve de pragmatisme et déterminer où c'est judicieux et ne pas le coller partout 😉
@HTSCoding
@HTSCoding 17 дней назад
@axeldenis8775 c'est un sujet que j'ai couvert dans les vidéos pour les membres si tu y as accès, mais pour deux raisons principales : la performance et le fait qu'une exception doit être exceptionnelle, et non pas un cas métier prévisible
@clementsannier3294
@clementsannier3294 19 дней назад
Super intéressant, merci pour cette vidéo
@HTSCoding
@HTSCoding 19 дней назад
Merci à toi 😊
@patricklanz
@patricklanz 24 дня назад
Merci pour toutes ces vidéos. Par contre, `EventArgs.Empty` à la place de `new EventArgs()`, car pas d'allocation mémoire 😉
@ahupond
@ahupond 25 дней назад
Merci pour cette vidéo ! Un peu de LINQ pour se simplifier l'invocation : await Task.WhenAll(MyEvent.GetInvocationList().OfType<MethodeAsync>().Select(_ => _(this, EventArgs.Empty)));
@HTSCoding
@HTSCoding 25 дней назад
Merci à toi de l'avoir remonté ;-) Après, perso, moi je suis pas tellement fan de l'approche LINQ, trop de déchet mémoire, mais pour pas ;-)
@ahupond
@ahupond 25 дней назад
@@HTSCoding C'est effectivement facile de faire des bêtises avec LINQ, mais fort heureusement la lib s'améliore à chaque version du SDK. En tout cas, je trouve que OfType() est sous-cotée, alors qu'elle est super pratique pour transtyper des collections d'objets. D'ailleurs, je pense que je vais me faire un petit benchmark par rapport à un cast classique, car je suis pas sûr que ça fuite tant que ça (en tout cas dans le dernières versions du framework).
@mthiam1567
@mthiam1567 25 дней назад
Merci pour ces précisions.
@HTSCoding
@HTSCoding 25 дней назад
C'est mieux que ça soit clair plutôt que caché dans les commentaires !
@mthiam1567
@mthiam1567 25 дней назад
@@HTSCoding Oui mais tu as pris le temps de faire un tuto qui m'a permis d'apprendre quelque chose.
@HTSCoding
@HTSCoding 25 дней назад
Au top ! C'est le but de la chaîne, ravi que ça te serve ;-)
@mthiam1567
@mthiam1567 25 дней назад
Vos tutoriel sur blazor m'ont énormément aidé à basculer là dessus et j'ai acheté votre bouquin à la fnac. Merci.
@paulvalerry4765
@paulvalerry4765 Месяц назад
Super
@josue_lechretien
@josue_lechretien Месяц назад
God bless you bro 😂❤😊
@chrisder1814
@chrisder1814 Месяц назад
aïe j'ai beaucoup de mal à comprendre, je n'ai carrément pas le niveau, est-ce que tu aurais d'autres vidéos ou des tutos à me conseiller pour que je puisse bien tout comprendre, pour que je puisse obtenir la base sinon est-ce que tu pourrais m'aider à comprendre ce que je pourrais obtenir comme résultat en utilisant certaines API dans des custom GPT
@krcarbo
@krcarbo Месяц назад
L'oubli du désabonnement, un classique ! Merci pour le contenu, les explications sont toujours aussi claires.
@HTSCoding
@HTSCoding Месяц назад
J'ai encore signé une belle mission grâce à ça, comme quoi...
@ahupond
@ahupond Месяц назад
Bonjour Christophe, il est parfaitement possible d'utiliser des event asynchrones sans try catch. Il suffit d'utiliser un autre delgate que EventHandler, dont le type de retour soit Task. Dans ce cas l'invocation est un peu plus complexe du fait que Invoke() ne renvoie le résultat que du dernier delegate inscrit sur l'évènement. Mais on peut utiliser une petite pirouette avec Task.WhenAll(), GetInvocationList(), DynamicInvoke() et un peu de LINQ.
@HTSCoding
@HTSCoding Месяц назад
Merci d'avoir précisé cela, c'est vrai que je considère souvent les event que depuis le prisme des handlers d'éléments de GUI qui eux ne sont pas async. Puis, comme tu le dis, il faut faire une petite pirouette, c'est pas géré de base par le langage
@SeboxFX
@SeboxFX Месяц назад
Super video ! très clair, concis, rapide. On capte vite les pros/cons des deux approches. c'est directement un pouce bleu
@HTSCoding
@HTSCoding Месяц назад
Merci à toi 👍
@palfoy
@palfoy Месяц назад
👍
@BL_Pac
@BL_Pac Месяц назад
Super formation jusqu'à présent ! La progression se fait bien et tu es très précis dans tes explications! C'est de loin la meilleure que j'ai trouvée. Une fois terminée je vais rejoindre la chaine pour les autres vidéos. Merci
@HTSCoding
@HTSCoding Месяц назад
Merci à toi 😊
@philippevallar2762
@philippevallar2762 Месяц назад
Salut, je découvre ta chaine depuis peu (surtout grâce à tes tutos Blazor). je fais du .Net/C# depuis plus de 20ans (j'ai commencé en .Net 1.1) Merci pour cette série sur les design patterns, il est bon de revenir aux fondamentaux de temps en temps afin de gommer certaines habitudes prises et ne pas réinventer la roue. Bref, c'est vrai que ce pattern singleton n'est plus trop en vogue mais tellement utile. J'aurais aimé que tu propose 2 pistes d'amélioration : 1) Evoquer les aspects Thread-safe de ta solution 2) Comme tu évoques la conception SOLID tu aurais pu exposer, même oralement un découplage des réspondabilités via un objet Singleton<T> qui prendrait en charge le cycle de vie Mais peut être l'abordes-tu dans une vidéo que je n'ai pas encore vue ?🙏
@user-ie7yb7vu4n
@user-ie7yb7vu4n Месяц назад
BJR a quel moment de la video tu mo,tres comment faire l'api avec le controllers
@HTSCoding
@HTSCoding Месяц назад
Cela n'est pas présenté dans cette vidéo mais dans le cours complet
@ferdlancelaunla5813
@ferdlancelaunla5813 Месяц назад
Enfaite writeLine et ReadLine correspondent a "printf" et "scanf" en C ?
@HTSCoding
@HTSCoding Месяц назад
C'est ça
@michelst-jean1205
@michelst-jean1205 Месяц назад
Weather ne se prononce pas waizer!
@-thug_hak-ful_ship8132
@-thug_hak-ful_ship8132 Месяц назад
salut moi grâce a ca j'ai pu gênerai des code psn mes pas valide besoin d'aide quelqu'un peut me répondre
@julienbarach6620
@julienbarach6620 Месяц назад
Il y a une issue sur le repo aspnetcore ouverte pas Steve Sanderson en personne qui préconise un retour du template WASM avec un exemple d'appel API comme en .Net 7. Ce qui me fait penser que le mode Auto quand bien même ils le mettent en avant actuellement et qu'ils l'agrémentent de helpers, n'est pas un mode que je préconiserais par défaut dans mon équipe. Je préfère de très loin être clairement en full Server ou full WASM car ces 2 modes sont tout simplement trop différents et vouloir les concilier soulève des problématiques beaucoup trop complexes à gérer.
@HTSCoding
@HTSCoding Месяц назад
Ça aurait été cool de mettre le lien ici histoire de suivre l’affaire 🙂
@setsu8776
@setsu8776 Месяц назад
Hello, le fameux Ctrl-F5, je confirme ! Merci pour l'info
@HTSCoding
@HTSCoding Месяц назад
Eh eh, c’était sur que je suis pas le seul 😁
@redplanet9821
@redplanet9821 2 месяца назад
Je découvre cette vidéo tard. Je la trouve vitale (pour utiliser les grands mots). J'ai opéré un changement du développement web vers le mobile (xamarin -> maui) et la question de la coexistence des différentes versions de .net m'a vraiment compliqué la vie. Toute cette confusion n'est pas très "newbie friendly". J'ajoute qu'entre-temps certains devs plus expérimentés que moi m'encouragent plutôt à aller vers React ou Flutter. J'espère ne pas avoir fait d'erreur critique en choisissant cette porte d'entrée dans le développement mobile. Donc, merci pour les explications.
@themonz31toulousethemonz9
@themonz31toulousethemonz9 2 месяца назад
vidéo très instructive... j'en trouve le titre un peu "exagéré" dans la mesure où tu te focalises sur l'amélioration de la volumétrie de fichier transféré et non sur un gain de performance d'exécution ou de chargement de l'application (qui doit certainement être impacté - mais tu ne le mets pas vraiment en avant dans cette vidéo)
@TENDOCODE9727
@TENDOCODE9727 2 месяца назад
Mrs Christophe vous avez une très belle voix 😘😘😘
@intox18
@intox18 2 месяца назад
Très utile cette vidéo merci
@HTSCoding
@HTSCoding 2 месяца назад
Avec plaisir
@breheem
@breheem 2 месяца назад
Salut, j'ai découvert récemment ta chaîne et je commence à apprécier ton contenu, ainsi j'ai vu que tu avais une plate-forme d'apprentissage. Étant à la base un développeur full-stack (React, Angular et Java Spring Boot), je souhaiterais évoluer et commencer à développer des applications avec C# et dotNET. As-tu une roadmap à me conseiller pour suivre tes cours sur ta plate-forme ?
@HTSCoding
@HTSCoding 2 месяца назад
C'est effectivement une demande récurrente et j'avais commencé à travaillé l'intégration de ma vidéo roadmap sur le site, mais je pense que je vais tenter quelque chose de plus clair & évident. Pour répondre ici directement : il faut commencer par les bases du langage (il y a une vidéo sur ma chaine qui reprends le cours C#). Ensuite, vu que ton profil est clairement web, il faut apprendre à minima les APIs, et par la suite, idéalement, Blazor pour le front. Suite à ça, on peut y câbler tout un ensemble d'éléments complémentaires pour parfaire ses connaissances (SignalR, gRPC, logs, architecture, tests, etc.). Mais la route c'est : C# => API/Blazor => éléments complémentaires
@tigidou3344
@tigidou3344 2 месяца назад
J'étais sûre que ta solutions serait d'utiliser un vrai serveur web comme Apache ou un ReverseProxy comme NGinX. Ha ben non, tu reste sur le truc pas très efficace du code de Microsoft.
@borelmba9832
@borelmba9832 2 месяца назад
Bonjour Christophe merci pour cette video stp peut tu m'aider ? j'essaie de creer une API pour exploiter les données d'une BD DB2 sur un serveur IBM. j'ai utilisé la Scaffold-DbContext pour faire le reverse engineering mais ça ne marche pas, je reçois "invalid argument" comme erreur pourtant tous mes arguments sont correct. j'ai fauté à quel niveau? je te met le message d'erreur dans les reponses
@borelmba9832
@borelmba9832 2 месяца назад
Scaffold-DbContext "Server=camdla20:446;Database=S21106ew;User=db2reader;Password=db2reader" IBM.EntityFrameworkCore -Context MyDbContext -OutputDir Models Build started... Build succeeded. System.ArgumentException: Invalid argument at IBM.Data.Db2.DB2ConnPool.ReplaceConnectionStringParms(DB2Connection connection, String szValue, DB2ConnSettings& pSettings, DB2ConnSettingsInternal& pSettingsInternal, Boolean bAttach, Boolean pushDownStrAppended) at IBM.Data.Db2.DB2Connection.set_ConnectionString(String value) at IBM.Data.Db2.DB2Connection..ctor(String connectionString) at IBM.EntityFrameworkCore.Scaffolding.Internal.Db2DatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions) at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c_DisplayClass0_0.<.ctor>b_0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c_DisplayClass3_0`1.<Execute>b_0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Invalid argument
@gueyeabdoulaye5202
@gueyeabdoulaye5202 2 месяца назад
Merci beaucoup.
@HTSCoding
@HTSCoding 2 месяца назад
Avec plaisir