Forwarded from Software Philosophy
اثری که Body language بر خود فرد میگذارد، اگر بیشتر از اثری که بر مخاطب میگذارد نباشد، کمتر هم نیست.
استاد دانشگاه هاروارد Amy Cuddy تحقیقی انجام داده است و در آن به این نتیجه رسیده است که فرم و حالت بدن میتواند بر «ذهن» و «فیزیولوژی» اثر گذارد، بدین صورت که اگر شما ۲ دقیقه ژست یک فرد پیروز را به خود بگیرید میزان تستوسترون افزایش و کورتیزول کاهش میابد. میزان این هورمونها اثر مستقیمی بر مغر گذاشته و میتواند باعث افزایش قدرت ریسکپذیری و موفقیت شود.
https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilosophy
___
استاد دانشگاه هاروارد Amy Cuddy تحقیقی انجام داده است و در آن به این نتیجه رسیده است که فرم و حالت بدن میتواند بر «ذهن» و «فیزیولوژی» اثر گذارد، بدین صورت که اگر شما ۲ دقیقه ژست یک فرد پیروز را به خود بگیرید میزان تستوسترون افزایش و کورتیزول کاهش میابد. میزان این هورمونها اثر مستقیمی بر مغر گذاشته و میتواند باعث افزایش قدرت ریسکپذیری و موفقیت شود.
https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilosophy
___
👍11🔥8❤5
Forwarded from Software Philosophy
EXACT INSTRUCTIONS
پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید.
https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY
خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه.
یکی از مهمترین کارهایی که باید توی شرکتهای نرمافزاری به درستی انجام بشه، داکیومنت کردن است. (داکیومنت به معنی کامنت گذاشتن داخل کد اصلا منظورم نیست، کد باید خودش به قدری خوانا باشه که نیاز به کامنت نداشته باشه یا به اصطلاح Self-Document باشه.)
داکیومنت کردن رو نباید به عنوان یه کار اضافه دید و سرسری انجامش داد.
تمام مراحل انتقال دانش باید به وسیله داکیومنت انجام بشه. نه به صورت نقل قول و سینه به سینه.
اتفاقی که برای خودم افتاد رو براتون تعریف میکنم:
در شرکت کرانه ادمین TFS بودم، و یکی از کارهایی که باید انجام میدادم و داکیومنت میکردم Disaster Recovery خود TFSبود. ۱ روز کامل وقت گذاشتم و Recovery رو انجام دادم و داکیومنتش رو نوشتم، کاری که مدیرمون کرد خیلی خوب بود. داکیومنت رو داد به یکی دیگه گفت TFS رو بیار بالا. حدس میزنید چی شد؟ نتونست، چون داکیومنتی که نوشته بودم به درد خودم میخورد.
و حرفی که به من زد این بود «داکیومنت باید طوری باشه که اگه دست یه نفر رو از توی خیابون گرفتم و این داکیومنت رو بهش دادم بتونه TFS رو بیاره بالا». بعد از ۳ بار داکیومنت نوشتن بالاخره موفق شدم داکیومنتی بنویستم که به هر کی بدمش فقط با Back up دیتا بیس بتونه TFS رو بالا بیاره.
به نظر من داکیومنت باید طوری باشه تا تمام کسانی که میخوننش، همشون یک برداشت رو داشته باشن، داکیومنت نباید وابسته به Context ذهن ما باشه.
خوشحال میشم نظر شما رو هم بدونم.
#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)
کانال تلگرام:
@SoftwarePhilosophy
___
پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید.
https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY
خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه.
یکی از مهمترین کارهایی که باید توی شرکتهای نرمافزاری به درستی انجام بشه، داکیومنت کردن است. (داکیومنت به معنی کامنت گذاشتن داخل کد اصلا منظورم نیست، کد باید خودش به قدری خوانا باشه که نیاز به کامنت نداشته باشه یا به اصطلاح Self-Document باشه.)
داکیومنت کردن رو نباید به عنوان یه کار اضافه دید و سرسری انجامش داد.
تمام مراحل انتقال دانش باید به وسیله داکیومنت انجام بشه. نه به صورت نقل قول و سینه به سینه.
اتفاقی که برای خودم افتاد رو براتون تعریف میکنم:
در شرکت کرانه ادمین TFS بودم، و یکی از کارهایی که باید انجام میدادم و داکیومنت میکردم Disaster Recovery خود TFSبود. ۱ روز کامل وقت گذاشتم و Recovery رو انجام دادم و داکیومنتش رو نوشتم، کاری که مدیرمون کرد خیلی خوب بود. داکیومنت رو داد به یکی دیگه گفت TFS رو بیار بالا. حدس میزنید چی شد؟ نتونست، چون داکیومنتی که نوشته بودم به درد خودم میخورد.
و حرفی که به من زد این بود «داکیومنت باید طوری باشه که اگه دست یه نفر رو از توی خیابون گرفتم و این داکیومنت رو بهش دادم بتونه TFS رو بیاره بالا». بعد از ۳ بار داکیومنت نوشتن بالاخره موفق شدم داکیومنتی بنویستم که به هر کی بدمش فقط با Back up دیتا بیس بتونه TFS رو بالا بیاره.
به نظر من داکیومنت باید طوری باشه تا تمام کسانی که میخوننش، همشون یک برداشت رو داشته باشن، داکیومنت نباید وابسته به Context ذهن ما باشه.
خوشحال میشم نظر شما رو هم بدونم.
#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)
کانال تلگرام:
@SoftwarePhilosophy
___
👍21❤9👎1🔥1
Software Philosophy
EXACT INSTRUCTIONS پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید. https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه. یکی…
سلام
ویدئو رو میتونید از طریق لینک زیر ببینید:
https://www.youtube.com/watch?v=FN2RM-CHkuI
کانال تلگرام:
@SoftwarePhilosophy
___
ویدئو رو میتونید از طریق لینک زیر ببینید:
https://www.youtube.com/watch?v=FN2RM-CHkuI
کانال تلگرام:
@SoftwarePhilosophy
___
YouTube
Exact Instructions Challenge PB&J Classroom Friendly | Josh Darnit
Exact Instructions PB&J Educators Version - We've had many requests from teachers asking for a "classroom friendlier" version of this video. We are honored to be part of messing with your students! 😂
We love how much teachers and computer programmers (and…
We love how much teachers and computer programmers (and…
دات نت و معماری Runtime دات نت
از کد تا Intermediate Language (IL) 📝➡️🔄
وقتی کد C# را مینویسید، کامپایلر Roslyn وارد عمل میشود تا آن را به (IL) تبدیل کند. این مرحله که به عنوان compile time شناخته میشود، زمانی است که کد شما از فرم قابل خواندن توسط انسان به IL تبدیل میشود. اما چرا IL؟ چرا مستقیماً در کد اسمبلی کامپایل نمیشود؟ 🤔
جادو در انعطاف پذیری DotNet Framework نهفته است. DotNet به گونهای طراحی شده است که پلتفرم آگنوستیک باشد، میتواند در محیطهای مختلفی مانند ویندوز، مک و اندروید اجرا شود. هر محیط دارای Common Language Runtime (CLR) خود است که برای آن پلتفرم خاص بهینه شده است. این بدان معنی است که کد IL شما میتواند در سیستمهای مختلف اجرا شود و یک معماری زمان اجرا همه کاره و قدرتمند ارائه دهد. 🌍✨
نقش (CLR) ⏳
در زمان اجرا، CLR کار را به دست میگیرد. این بخش اجرای کد IL است. در CLR، یک جزء حیاتی به نام کامپایلر Just-In-Time (JIT) وجود دارد که IL را درست قبل از اجرا، به کد ماشین اصلی کامپایل میکند و کارایی و سرعت را تضمین میکند. 🚀
مشخصات Common Language Specification (CLS) 🔄
بخش CLS قوانینی را برای نحوه تعامل زبانهای مختلف تعیین میکند. به عنوان مثال، در VB.NET، نیازی به پایان دادن دستورات با ; ندارید، در حالی که در C# اجباری است.
نقش Common Type Specification (CTS) 📋
بخش CTS نحوه اعلان و استفاده از انواع داده را تعریف میکند. به عنوان مثال، C# از int استفاده میکند در حالی که VB.NET از Integer استفاده میکند، اما در انتها، هر دو به عنوان Int32 نشان داده میشوند که این بخش توسط CTS تعیین میشود.
نقش The Base Class Library (BCL) 📚
در کنار CLR، کتابخانه کلاس پایه (BCL) قرار دارد که کتابخانههای ضروری مانند List و Dictionary را در خود جای داده است. BCL مؤلفههای اساسی را ارائه میدهد که توسعهدهندگان هر روز از آن ها استفاده میکنند و ثبات و قابلیت اطمینان را در پلتفرمهای مختلف تضمین میکند. 🏛
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه و فیلم را در یوتیوب تماشا کنید. 🎦
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
از کد تا Intermediate Language (IL) 📝➡️🔄
وقتی کد C# را مینویسید، کامپایلر Roslyn وارد عمل میشود تا آن را به (IL) تبدیل کند. این مرحله که به عنوان compile time شناخته میشود، زمانی است که کد شما از فرم قابل خواندن توسط انسان به IL تبدیل میشود. اما چرا IL؟ چرا مستقیماً در کد اسمبلی کامپایل نمیشود؟ 🤔
جادو در انعطاف پذیری DotNet Framework نهفته است. DotNet به گونهای طراحی شده است که پلتفرم آگنوستیک باشد، میتواند در محیطهای مختلفی مانند ویندوز، مک و اندروید اجرا شود. هر محیط دارای Common Language Runtime (CLR) خود است که برای آن پلتفرم خاص بهینه شده است. این بدان معنی است که کد IL شما میتواند در سیستمهای مختلف اجرا شود و یک معماری زمان اجرا همه کاره و قدرتمند ارائه دهد. 🌍✨
نقش (CLR) ⏳
در زمان اجرا، CLR کار را به دست میگیرد. این بخش اجرای کد IL است. در CLR، یک جزء حیاتی به نام کامپایلر Just-In-Time (JIT) وجود دارد که IL را درست قبل از اجرا، به کد ماشین اصلی کامپایل میکند و کارایی و سرعت را تضمین میکند. 🚀
مشخصات Common Language Specification (CLS) 🔄
بخش CLS قوانینی را برای نحوه تعامل زبانهای مختلف تعیین میکند. به عنوان مثال، در VB.NET، نیازی به پایان دادن دستورات با ; ندارید، در حالی که در C# اجباری است.
نقش Common Type Specification (CTS) 📋
بخش CTS نحوه اعلان و استفاده از انواع داده را تعریف میکند. به عنوان مثال، C# از int استفاده میکند در حالی که VB.NET از Integer استفاده میکند، اما در انتها، هر دو به عنوان Int32 نشان داده میشوند که این بخش توسط CTS تعیین میشود.
نقش The Base Class Library (BCL) 📚
در کنار CLR، کتابخانه کلاس پایه (BCL) قرار دارد که کتابخانههای ضروری مانند List و Dictionary را در خود جای داده است. BCL مؤلفههای اساسی را ارائه میدهد که توسعهدهندگان هر روز از آن ها استفاده میکنند و ثبات و قابلیت اطمینان را در پلتفرمهای مختلف تضمین میکند. 🏛
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه و فیلم را در یوتیوب تماشا کنید. 🎦
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
DotNet and Its Runtime
DotNet and Its Runtime -...
👍15❤6👏2🔥1
Forwarded from Software Philosophy
و بالاخره... اینم از سخنرانی تدکس من: «پروژه یک من جدید!».
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
YouTube
Mirroring Neurons: A "NEW ME" can change the world! | Mehran Davoudi | TEDxYouth@Tehran
We are living in the most strange country of the world. We have everything to be the best, but still we are not! Far far away, just because of one thing! We have the majority types of mines, majority types of planets and… Lack of "one thing" stops us from…
3👍11❤6🔥5🥰1👏1
انتقال Git Stashes بین دستگاهها
ابزار Git stashes ابزاری قدرتمند برای ذخیره موقت تغییرات است. اما اگر نیاز دارید این stashes را به دستگاه دیگری منتقل کنید، چطور؟ در این پست، نحوه انتقال Git stashes را باهم برسی میکنیم تا هیچ کدام از تغییرات در حال انجام را از دست ندهید.
پیشنیازها :
ابتدا Git را طوری تنظیم کنیم که شامل فایلهای غیر ردیابی (Untracked) شده را هم در stashهایمان نیز باشد:
این تنظیمات تضمین میکند که وقتی یک stash میسازیم، تمام تغییرات از جمله فایلهای غیر ردیابی شده شامل شوند.
گام 1: ایجاد یک Stash
روی دستگاه فعلی خود، تغییرات را stash کنید:
پارامتر
گام 2: ایجاد یک فایل Patch
حالا یک فایل patch از stash ایجاد کنید:
این فرمان یک فایل با نام
گام 3: انتقال فایل Patch
فایل
گام 4: اعمال Patch در دستگاه جدید
روی دستگاه جدید، به مخزن Git خود بروید و patch را اعمال کنید:
این فرمان تغییرات را از فایل patch به پوشه کاری شما اعمال میکند.
نکته : میتوانید برای stashهای مختلف، فایلهای patch مجزا ایجاد کنید (مثلاً
با دنبال کردن این مراحل، میتوانید بدون توجه به جایی که در حال کار هستید به راحتی Git stashes خود را بین دستگاهها منتقل کنید و پیوستگی جریان کاری خود را حفظ کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
ابزار Git stashes ابزاری قدرتمند برای ذخیره موقت تغییرات است. اما اگر نیاز دارید این stashes را به دستگاه دیگری منتقل کنید، چطور؟ در این پست، نحوه انتقال Git stashes را باهم برسی میکنیم تا هیچ کدام از تغییرات در حال انجام را از دست ندهید.
پیشنیازها :
ابتدا Git را طوری تنظیم کنیم که شامل فایلهای غیر ردیابی (Untracked) شده را هم در stashهایمان نیز باشد:
git config stash.showIncludeUntracked true
این تنظیمات تضمین میکند که وقتی یک stash میسازیم، تمام تغییرات از جمله فایلهای غیر ردیابی شده شامل شوند.
گام 1: ایجاد یک Stash
روی دستگاه فعلی خود، تغییرات را stash کنید:
git stash push -u
پارامتر
-u فایلهای غیر ردیابی شده را هم در stash شامل میشود.گام 2: ایجاد یک فایل Patch
حالا یک فایل patch از stash ایجاد کنید:
git stash show "stash@{0}" -p > changes.patchاین فرمان یک فایل با نام
changes.patch ایجاد میکند که شامل تمام تغییرات در آخرین stash شماست.گام 3: انتقال فایل Patch
فایل
changes.patch را به دستگاه دیگر خود منتقل کنید.گام 4: اعمال Patch در دستگاه جدید
روی دستگاه جدید، به مخزن Git خود بروید و patch را اعمال کنید:
git apply changes.patch
این فرمان تغییرات را از فایل patch به پوشه کاری شما اعمال میکند.
نکته : میتوانید برای stashهای مختلف، فایلهای patch مجزا ایجاد کنید (مثلاً
stash@{1}, stash@{2}).با دنبال کردن این مراحل، میتوانید بدون توجه به جایی که در حال کار هستید به راحتی Git stashes خود را بین دستگاهها منتقل کنید و پیوستگی جریان کاری خود را حفظ کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Moving Git Stashes Between Devices: A Step-by-Step Guide
Git stashes are a powerful feature that allows developers to temporarily store uncommitted changes....
👍19👏3❤2🎉1
Forwarded from Dubai .NET Developers
.NET Conf Watch Party!
Put a comment if you want to watch the conference online, but together!
It will be on Teams :)
Put a comment if you want to watch the conference online, but together!
It will be on Teams :)
1🔥9❤3
Forwarded from Dubai .NET Developers
We're watching .NET Conf AI 2024 together here:
https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1724170108497?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22aca9b64a-ea78-46f4-a5b4-b3afd7832f63%22%7D
https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1724170108497?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22aca9b64a-ea78-46f4-a5b4-b3afd7832f63%22%7D
Microsoft Teams
Join conversation
🔥1
استفاده از Span در سیشارپ
فرض کنید که یک رشته متن دارید و میخواهید تاریخ را از آن جدا کنید. اگر از متدهای Split یا Substring استفاده می کنید، برای رشتههای جدید ایجاد شده، هربار حافظه اختصاص مییابد. این فرآیند میتواند کند باشد و میزان زیادی از حافظه را به خود اختصاص دهد، به خصوص زمانی که با مجموعه دادههای بزرگ سروکار داریم.
از طرف دیگر، Span مستقیماً روی حافظه اصلی بدون ایجاد و تخصیص حافظه جدید عمل می کند. این کار باعث میشود تا به طور قابل توجهی انجام کار سریعتر و کارآمدتر شود.
در نظر داشته باشید که Span از نظر نوع و حافظه ایمن است. بدون ایجاد نسخههای اضافی، مستقیماً روی حافظه کار میکند و میتواند با آرایهها، رشتهها، حافظه، پشته و غیره کار کند.
در مواقع Span ها مانند یک view بروی حافظه یا مکان مورد نظر شما میباشند و در نتیجه بسیار سریع هستند.
🔗 برای مشاهده فیلم کوتاه در یک دقیقه ، اینجا کلیک کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
فرض کنید که یک رشته متن دارید و میخواهید تاریخ را از آن جدا کنید. اگر از متدهای Split یا Substring استفاده می کنید، برای رشتههای جدید ایجاد شده، هربار حافظه اختصاص مییابد. این فرآیند میتواند کند باشد و میزان زیادی از حافظه را به خود اختصاص دهد، به خصوص زمانی که با مجموعه دادههای بزرگ سروکار داریم.
از طرف دیگر، Span مستقیماً روی حافظه اصلی بدون ایجاد و تخصیص حافظه جدید عمل می کند. این کار باعث میشود تا به طور قابل توجهی انجام کار سریعتر و کارآمدتر شود.
در نظر داشته باشید که Span از نظر نوع و حافظه ایمن است. بدون ایجاد نسخههای اضافی، مستقیماً روی حافظه کار میکند و میتواند با آرایهها، رشتهها، حافظه، پشته و غیره کار کند.
در مواقع Span ها مانند یک view بروی حافظه یا مکان مورد نظر شما میباشند و در نتیجه بسیار سریع هستند.
🔗 برای مشاهده فیلم کوتاه در یک دقیقه ، اینجا کلیک کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
YouTube
Span in C#
Today, we're diving into the nitty-gritty of memory management and performance in C#. If you’ve ever wondered how to optimize your code for speed and efficie...
👍18
ورکشاپ TDD OpenAI with SemanticKernel and skUnit
ارائه: مهران داودی
زبان ورکشاپ: انگلیسی
این چهارشنبه ساعت ۵ تا ۶ عصر، ورکشاپ برنامهنویسی هوشمصنوعی (OpenAI و LLM) در #dotnet با استفاده از فریمورکهای #SemanticKernel و #skUnit برگزار میشه.
تو این ورکشاپ یک kernel هوش مصنوعی از صفر ساخته ساخته میشه و همزمان نحوه تست کردنش با استفاده از skUnit آموزش داده میشه.
🔥 این روزها اگر برنامهنویس داتنت هستید، خیلی خوششانس هستید! چون نوشتن برنامههای با کیفیت هوشمصنوعی فقط یک قدم با شما فاصله داره.
🙂 لینک ورکشاپ:
https://www.linkedin.com/events/7246447233418547201/comments/
ارائه: مهران داودی
زبان ورکشاپ: انگلیسی
این چهارشنبه ساعت ۵ تا ۶ عصر، ورکشاپ برنامهنویسی هوشمصنوعی (OpenAI و LLM) در #dotnet با استفاده از فریمورکهای #SemanticKernel و #skUnit برگزار میشه.
تو این ورکشاپ یک kernel هوش مصنوعی از صفر ساخته ساخته میشه و همزمان نحوه تست کردنش با استفاده از skUnit آموزش داده میشه.
https://www.linkedin.com/events/7246447233418547201/comments/
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍15❤8🔥3🎉1
چگونه با Scrutor و Autofac تزریق وابستگی را در .NET به سطح بعدی ببریم؟
در توسعه پروژههای بزرگ .NET، مدیریت تزریق وابستگی (Dependency Injection) به یکی از مهمترین بخشهای معماری نرمافزار تبدیل میشود. هنگامی که تعداد سرویسها و ریپازیتوریها افزایش پیدا میکند، ثبت دستی هر یک از آنها میتواند نه تنها زمانبر، بلکه منجر به بروز اشتباهات و پیچیدگیهای غیرضروری شود. اینجاست که ابزارهای قدرتمندی مثل Scrutor و Autofac به کمک ما میآیند.
ابزار Scrutor یک کتابخانه سبک برای DI پیشفرض .NET است که امکان اسکن خودکار اسمبلیها و ثبت سرویسها را با چند خط کد فراهم میکند. شما میتوانید کلاسها و اینترفیسها را به سادگی بر اساس namespace یا الگوهای دیگر شناسایی و به عنوان وابستگیها در پروژه تزریق کنید. این روش نه تنها کد شما را تمیزتر و منظمتر میکند، بلکه از بروز مشکلات ناشی از ثبت دستی جلوگیری میکند.
از طرف دیگر، Autofac یک کانتینر IoC بسیار قدرتمند است که کنترل و انعطاف بیشتری در تزریق وابستگیها به شما میدهد. با استفاده از Autofac، شما میتوانید وابستگیها را به صورت ماژولار مدیریت کنید، لایفتایم دقیق هر سرویس را تنظیم کرده و حتی از امکانات پیشرفتهای مانند AOP (Aspect-Oriented Programming) بهرهمند شوید. با این ابزارها، شما نه تنها کارهای تکراری را حذف میکنید، بلکه معماری پروژه خود را حرفهایتر و مقیاسپذیرتر میسازید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
در توسعه پروژههای بزرگ .NET، مدیریت تزریق وابستگی (Dependency Injection) به یکی از مهمترین بخشهای معماری نرمافزار تبدیل میشود. هنگامی که تعداد سرویسها و ریپازیتوریها افزایش پیدا میکند، ثبت دستی هر یک از آنها میتواند نه تنها زمانبر، بلکه منجر به بروز اشتباهات و پیچیدگیهای غیرضروری شود. اینجاست که ابزارهای قدرتمندی مثل Scrutor و Autofac به کمک ما میآیند.
ابزار Scrutor یک کتابخانه سبک برای DI پیشفرض .NET است که امکان اسکن خودکار اسمبلیها و ثبت سرویسها را با چند خط کد فراهم میکند. شما میتوانید کلاسها و اینترفیسها را به سادگی بر اساس namespace یا الگوهای دیگر شناسایی و به عنوان وابستگیها در پروژه تزریق کنید. این روش نه تنها کد شما را تمیزتر و منظمتر میکند، بلکه از بروز مشکلات ناشی از ثبت دستی جلوگیری میکند.
از طرف دیگر، Autofac یک کانتینر IoC بسیار قدرتمند است که کنترل و انعطاف بیشتری در تزریق وابستگیها به شما میدهد. با استفاده از Autofac، شما میتوانید وابستگیها را به صورت ماژولار مدیریت کنید، لایفتایم دقیق هر سرویس را تنظیم کرده و حتی از امکانات پیشرفتهای مانند AOP (Aspect-Oriented Programming) بهرهمند شوید. با این ابزارها، شما نه تنها کارهای تکراری را حذف میکنید، بلکه معماری پروژه خود را حرفهایتر و مقیاسپذیرتر میسازید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Elevating Dependency Injection in .NET with Scrutor and Autofac
As .NET developers, we're all familiar with the challenges of managing dependency injection (DI) in...
👍15❤2🔥1👏1
شمشیر دو لبه IEnumerable و yield return در C# : راهکارهایی برای بهینهسازی و جلوگیری از افت عملکرد
در زبان C#، وقتی میخواهیم با مجموعهای از دادهها یا توالیها کار کنیم، معمولاً از ساختارهای دادهای مثل لیستها یا آرایهها استفاده میکنیم. اما گاهی نیاز داریم دادهها را به صورت تنبل (Lazy) پردازش کنیم، یعنی فقط زمانی دادهها تولید شوند که واقعاً به آنها نیاز داریم. اینجاست که IEnumerable و yield return وارد میدان میشوند و میتوانند کار ما را بسیار سادهتر و بهینهتر کنند.
ابزار IEnumerable این امکان را به ما میدهد که به طور مؤثر بر روی مجموعهای از دادهها پیمایش کنیم، بدون اینکه نیاز باشد تمام دادهها را یکجا در حافظه بارگذاری کنیم. از طرف دیگر، yield return به ما اجازه میدهد که یک توالی از دادهها را مرحله به مرحله و در طول زمان تولید کنیم، به جای اینکه همهچیز یکجا آماده شود.
اما مشکل از آنجا شروع میشود که استفاده نادرست از این قابلیتها میتواند منجر به کاهش کارایی برنامه شود. مثلاً فرض کنید در حال استفاده از yield return هستید و هر بار که از دادههای تولید شده استفاده میکنید، محاسبات سنگینی برای تولید آن دادهها انجام میشود. اگر این محاسبات هر بار تکرار شوند، زمان اجرای برنامه افزایش مییابد و منابع سیستم بیمورد مصرف میشوند. یا در مواقعی که منابعی مثل فایلها یا دیتابیس را در دسترس داریم، استفاده نادرست از IEnumerable و اجرای به تعویق افتاده (Deferred Execution) ممکن است باعث خطاهایی در مدیریت منابع شود.
در این پست، ما دقیقاً به این مشکلات میپردازیم و نشان میدهیم که چطور میتوانیم با آگاهی و استفاده صحیح از IEnumerable و yield return هم از مزایای آنها بهرهمند شویم و هم از بروز مشکلات و افت عملکرد جلوگیری کنیم. همچنین چند مثال عملی از جمله کار با دیتابیس، فایلها، و لیستهای داده ارائه میدهیم که به شما کمک میکند این ابزارها را به درستی به کار بگیرید.
🔗 نسخه کامل مقاله را میتوانید اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
در زبان C#، وقتی میخواهیم با مجموعهای از دادهها یا توالیها کار کنیم، معمولاً از ساختارهای دادهای مثل لیستها یا آرایهها استفاده میکنیم. اما گاهی نیاز داریم دادهها را به صورت تنبل (Lazy) پردازش کنیم، یعنی فقط زمانی دادهها تولید شوند که واقعاً به آنها نیاز داریم. اینجاست که IEnumerable و yield return وارد میدان میشوند و میتوانند کار ما را بسیار سادهتر و بهینهتر کنند.
ابزار IEnumerable این امکان را به ما میدهد که به طور مؤثر بر روی مجموعهای از دادهها پیمایش کنیم، بدون اینکه نیاز باشد تمام دادهها را یکجا در حافظه بارگذاری کنیم. از طرف دیگر، yield return به ما اجازه میدهد که یک توالی از دادهها را مرحله به مرحله و در طول زمان تولید کنیم، به جای اینکه همهچیز یکجا آماده شود.
اما مشکل از آنجا شروع میشود که استفاده نادرست از این قابلیتها میتواند منجر به کاهش کارایی برنامه شود. مثلاً فرض کنید در حال استفاده از yield return هستید و هر بار که از دادههای تولید شده استفاده میکنید، محاسبات سنگینی برای تولید آن دادهها انجام میشود. اگر این محاسبات هر بار تکرار شوند، زمان اجرای برنامه افزایش مییابد و منابع سیستم بیمورد مصرف میشوند. یا در مواقعی که منابعی مثل فایلها یا دیتابیس را در دسترس داریم، استفاده نادرست از IEnumerable و اجرای به تعویق افتاده (Deferred Execution) ممکن است باعث خطاهایی در مدیریت منابع شود.
در این پست، ما دقیقاً به این مشکلات میپردازیم و نشان میدهیم که چطور میتوانیم با آگاهی و استفاده صحیح از IEnumerable و yield return هم از مزایای آنها بهرهمند شویم و هم از بروز مشکلات و افت عملکرد جلوگیری کنیم. همچنین چند مثال عملی از جمله کار با دیتابیس، فایلها، و لیستهای داده ارائه میدهیم که به شما کمک میکند این ابزارها را به درستی به کار بگیرید.
🔗 نسخه کامل مقاله را میتوانید اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
DEV Community
The Double-Edged Sword of IEnumerable and yield return in C#
IEnumerable and yield return are powerful features in C# that enable developers to create lazy...
1👍15🔥2👏1
Software Philosophy
ورکشاپ TDD OpenAI with SemanticKernel and skUnit ارائه: مهران داودی زبان ورکشاپ: انگلیسی این چهارشنبه ساعت ۵ تا ۶ عصر، ورکشاپ برنامهنویسی هوشمصنوعی (OpenAI و LLM) در #dotnet با استفاده از فریمورکهای #SemanticKernel و #skUnit برگزار میشه. تو این ورکشاپ…
ورک شاپ TDD OpenAI with Semantic Kernel and skUnit
برنامهنویسی چتباتهای هوشمصنوعی بر پایه LLM در داتنت هیچ وقت انقدر شیرین و لذتبخش نبوده!
در این ورکشاپ مهران داودی یک چتبات رو از صفر میسازه و نشون میده چطور میشه برای این copilot ها تستهای اتوماتیک نوشت که بتونه از طریق خود LLM تستهای معنایی انجام بده (Semantic Assert).
این ورکشاپ قبلا به صورت لایو در لینکدین برگزار شده بود و الان ویدئوش در یوتیوب آپلود شده.
https://www.youtube.com/watch?v=JVyLLD5bgoE&t=9s
برنامهنویسی چتباتهای هوشمصنوعی بر پایه LLM در داتنت هیچ وقت انقدر شیرین و لذتبخش نبوده!
در این ورکشاپ مهران داودی یک چتبات رو از صفر میسازه و نشون میده چطور میشه برای این copilot ها تستهای اتوماتیک نوشت که بتونه از طریق خود LLM تستهای معنایی انجام بده (Semantic Assert).
این ورکشاپ قبلا به صورت لایو در لینکدین برگزار شده بود و الان ویدئوش در یوتیوب آپلود شده.
https://www.youtube.com/watch?v=JVyLLD5bgoE&t=9s
YouTube
TDD OpenAI with Semantic Kernel and skUnit
In this talk, I will into the innovative world of semantic unit testing using the #SemanticKernel. Traditional unit tests focus on deterministic outputs, but what happens when you need to validate the meaning of the output?
I introduce #skUnit, a powerful…
I introduce #skUnit, a powerful…
5👍20❤8🔥5
برسی متدهای جدید LINQ در دات نت ۹
داتنت ۹، که قرار است در نوامبر ۲۰۲۴ منتشر شود، پیشنمایش جدیدی ارائه کرده است که چندین متد LINQ جدید شامل CountBy، AggregateBy و Index را معرفی میکند:
متد CountBy: این متد امکان شمارش سریع عناصر در یک مجموعه بر اساس تابع انتخاب کلید را فراهم میکند و دیکشنریای برمیگرداند که کلیدها مقادیر منحصربهفرد هستند و مقادیر، تعداد هر کلید را نشان میدهند.
متد AggregateBy: این متد به شما اجازه میدهد که عناصر را بر اساس تابع انتخاب کلید و تابع تجمع، دستهبندی و تجمیع کنید. نتیجه نهایی دیکشنریای است که کلیدها مقادیر منحصربهفرد و مقادیر، نتایج تجمیع شده برای هر کلید هستند.
متد Index: این متد یک مجموعه ایندکس شده ایجاد میکند، به طوری که هر عنصر با ایندکس خود در مجموعه اصلی همراه است.
این متدهای جدید LINQ در داتنت ۹ امکاناتی را برای بهینهسازی کد و بهبود عملکرد فراهم کردهاند و ابزارهای بیشتری در اختیار توسعهدهندگان قرار میدهند.
در ادامه، مثالهایی از هر یک از متدهای جدید LINQ همراه با خروجی آنها ارائه شده است:
۱. مثال متد CountBy
فرض کنید لیستی از افراد داریم که شامل نام و سن آنهاست و میخواهیم تعداد افراد را بر اساس سن آنها شمارش کنیم.
خروجی:
۲. مثال متد AggregateBy
در این مثال، ما قصد داریم مجموع سنها را بر اساس گروههای سنی (به عنوان مثال زیر ۳۰ و بالای ۳۰) تجمیع کنیم.
خروجی:
۳. مثال متد Index
در این مثال، لیستی از نامها داریم و میخواهیم هر نام را همراه با ایندکس آن در لیست نمایش دهیم.
خروجی:
‼️برای دیدن نمونه مثال و مطالعه بیشتر به دو لینک زیر مراجعه کنید:
🔗لینک اول
🔗لینک دوم
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
داتنت ۹، که قرار است در نوامبر ۲۰۲۴ منتشر شود، پیشنمایش جدیدی ارائه کرده است که چندین متد LINQ جدید شامل CountBy، AggregateBy و Index را معرفی میکند:
متد CountBy: این متد امکان شمارش سریع عناصر در یک مجموعه بر اساس تابع انتخاب کلید را فراهم میکند و دیکشنریای برمیگرداند که کلیدها مقادیر منحصربهفرد هستند و مقادیر، تعداد هر کلید را نشان میدهند.
متد AggregateBy: این متد به شما اجازه میدهد که عناصر را بر اساس تابع انتخاب کلید و تابع تجمع، دستهبندی و تجمیع کنید. نتیجه نهایی دیکشنریای است که کلیدها مقادیر منحصربهفرد و مقادیر، نتایج تجمیع شده برای هر کلید هستند.
متد Index: این متد یک مجموعه ایندکس شده ایجاد میکند، به طوری که هر عنصر با ایندکس خود در مجموعه اصلی همراه است.
این متدهای جدید LINQ در داتنت ۹ امکاناتی را برای بهینهسازی کد و بهبود عملکرد فراهم کردهاند و ابزارهای بیشتری در اختیار توسعهدهندگان قرار میدهند.
در ادامه، مثالهایی از هر یک از متدهای جدید LINQ همراه با خروجی آنها ارائه شده است:
۱. مثال متد CountBy
فرض کنید لیستی از افراد داریم که شامل نام و سن آنهاست و میخواهیم تعداد افراد را بر اساس سن آنها شمارش کنیم.
var people = new List<Person>
{
new Person { Name = "Ali", Age = 25 },
new Person { Name = "Sara", Age = 30 },
new Person { Name = "Reza", Age = 25 },
new Person { Name = "Maryam", Age = 30 },
new Person { Name = "Nima", Age = 20 }
};
var ageCounts = people.CountBy(p => p.Age);
foreach (var ageCount in ageCounts)
{
Console.WriteLine($"Age: {ageCount.Key}, Count: {ageCount.Value}");
}
خروجی:
Age: 25, Count: 2
Age: 30, Count: 2
Age: 20, Count: 1
۲. مثال متد AggregateBy
در این مثال، ما قصد داریم مجموع سنها را بر اساس گروههای سنی (به عنوان مثال زیر ۳۰ و بالای ۳۰) تجمیع کنیم.
var people = new List<Person>
{
new Person { Name = "Ali", Age = 25 },
new Person { Name = "Sara", Age = 30 },
new Person { Name = "Reza", Age = 25 },
new Person { Name = "Maryam", Age = 30 },
new Person { Name = "Nima", Age = 20 }
};
var ageSums = people.AggregateBy(
p => p.Age < 30 ? "Under 30" : "30 and Above",
(key, group) => group.Sum(p => p.Age)
);
foreach (var ageSum in ageSums)
{
Console.WriteLine($"Group: {ageSum.Key}, Sum of Ages: {ageSum.Value}");
}
خروجی:
Group: Under 30, Sum of Ages: 70
Group: 30 and Above, Sum of Ages: 60
۳. مثال متد Index
در این مثال، لیستی از نامها داریم و میخواهیم هر نام را همراه با ایندکس آن در لیست نمایش دهیم.
var names = new List<string> { "Ali", "Sara", "Reza", "Maryam", "Nima" };
var indexedNames = names.Index();
foreach (var item in indexedNames)
{
Console.WriteLine($"Index: {item.Index}, Name: {item.Value}");
}خروجی:
Index: 0, Name: Ali
Index: 1, Name: Sara
Index: 2, Name: Reza
Index: 3, Name: Maryam
Index: 4, Name: Nima
‼️برای دیدن نمونه مثال و مطالعه بیشتر به دو لینک زیر مراجعه کنید:
🔗لینک اول
🔗لینک دوم
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
timdeschryver.dev
New LINQ methods in C# 13: Index, CountBy, AggregateBy
Taking a look (including examples) at the new LINQ methods that will be introduced in C# 13, as part of the .NET 9 release.
👍38❤11🔥3
مدیریت هوشمند Migrationها در EF Core با Docker و EF Tools
در این روش، شما EF Core Tools را مستقیماً داخل Docker نصب میکنید، که به شما امکان میدهد migrationها را بدون نیاز به نصب ابزارهای اضافی روی سیستم شخصی خود، کاملاً داخل کانتینر مدیریت کنید. این روش برای CI/CD و محیطهای تولیدی عالی است، چون همه چیز ایزوله و مستقل داخل کانتینر انجام میشود.
مراحل نصب EF Core Tools در Docker و اجرای migrationها
۱. تنظیم Dockerfile
در Dockerfile، EF Core Tools را نصب میکنیم تا migrationها بهطور خودکار داخل کانتینر اجرا شوند. هر بار که کانتینر ساخته و اجرا میشود، migrationها اعمال و دیتابیس آماده استفاده میشود.
۲. ساخت و اجرای کانتینر
کافی است دستورات زیر را اجرا کنید تا کانتینر ساخته و اپلیکیشن شما اجرا شود:
مزایای این روش
▫️سادگی و انعطاف در CI/CD:
عملیات migrationها خودکار اجرا میشوند و برای محیطهای CI/CD فوقالعاده مناسب هستند.
▫️استقلال از محیط توسعه:
نیاز به ابزارهای اضافی روی سیستم شخصی نیست؛ همه چیز داخل Docker انجام میشود.
▫️دیتابیس همیشه بهروز:
هر بار که کانتینر اجرا شود، migrationها اعمال میشوند و دیتابیس سینک میماند.
این روش یه راهکار راحت و ایزوله برای مدیریت migrationهاست و کار با Docker را هم سادهتر میکند.
🔗 برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
________
در این روش، شما EF Core Tools را مستقیماً داخل Docker نصب میکنید، که به شما امکان میدهد migrationها را بدون نیاز به نصب ابزارهای اضافی روی سیستم شخصی خود، کاملاً داخل کانتینر مدیریت کنید. این روش برای CI/CD و محیطهای تولیدی عالی است، چون همه چیز ایزوله و مستقل داخل کانتینر انجام میشود.
مراحل نصب EF Core Tools در Docker و اجرای migrationها
۱. تنظیم Dockerfile
در Dockerfile، EF Core Tools را نصب میکنیم تا migrationها بهطور خودکار داخل کانتینر اجرا شوند. هر بار که کانتینر ساخته و اجرا میشود، migrationها اعمال و دیتابیس آماده استفاده میشود.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["YourProject/YourProject.csproj", "YourProject/"]
RUN dotnet restore "YourProject/YourProject.csproj"
COPY . .
RUN dotnet build "YourProject/YourProject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "YourProject/YourProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# نصب EF Core Tools و اجرای migrationها
RUN dotnet tool install --global dotnet-ef
ENV PATH="$PATH:/root/.dotnet/tools"
RUN dotnet ef database update
ENTRYPOINT ["dotnet", "YourProject.dll"]
۲. ساخت و اجرای کانتینر
کافی است دستورات زیر را اجرا کنید تا کانتینر ساخته و اپلیکیشن شما اجرا شود:
docker build -t your-image-name .
docker run -d your-image-name
مزایای این روش
▫️سادگی و انعطاف در CI/CD:
عملیات migrationها خودکار اجرا میشوند و برای محیطهای CI/CD فوقالعاده مناسب هستند.
▫️استقلال از محیط توسعه:
نیاز به ابزارهای اضافی روی سیستم شخصی نیست؛ همه چیز داخل Docker انجام میشود.
▫️دیتابیس همیشه بهروز:
هر بار که کانتینر اجرا شود، migrationها اعمال میشوند و دیتابیس سینک میماند.
این روش یه راهکار راحت و ایزوله برای مدیریت migrationهاست و کار با Docker را هم سادهتر میکند.
🔗 برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
________
Microsoft News
Introducing DevOps-friendly EF Core Migration Bundles
EF Core's new migration bundles provide build artifacts to deploy schema and data changes to your database as part of your DevOps pipeline.
👍17❤3🔥2
Media is too big
VIEW IN TELEGRAM
کوپایلوتی ساده برای پزشکان
هفته پیش برای کنگره دندانپزشکان یه ورکشاپ هوشمصنوعی داشتم.
دو سه روز قبل کنگره یه کد خیلی ساده نوشتم که بشه تواناییهای هوشمصنوعی و پتانسیلهایی که داره رو به دندونپزشکا نشون بدم و نتیجش شد این.
توضیح اینکه این از یه مدل ساده بدون هیچ بهبودی داره استفاده میکنه و برای پیادهسازیش از مدلهای Azure AI استفاده کردم و کدش رو هم با #csharp نوشتم.
#openai #gpt #dotnet #azure
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
__________
هفته پیش برای کنگره دندانپزشکان یه ورکشاپ هوشمصنوعی داشتم.
دو سه روز قبل کنگره یه کد خیلی ساده نوشتم که بشه تواناییهای هوشمصنوعی و پتانسیلهایی که داره رو به دندونپزشکا نشون بدم و نتیجش شد این.
توضیح اینکه این از یه مدل ساده بدون هیچ بهبودی داره استفاده میکنه و برای پیادهسازیش از مدلهای Azure AI استفاده کردم و کدش رو هم با #csharp نوشتم.
#openai #gpt #dotnet #azure
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
__________
5👏15👍7❤4🔥3
Media is too big
VIEW IN TELEGRAM
معرفی Bit Boilerplate Project Template، بهشت داتنتیها!
در کمتر از ده دقیقه با یکی از کاملترین NET project template. های حال حاضر برای Cross Platform Desktop/Mobile/Web development آشنا بشید و ببینید با Blazor چه اپهای خفنی میشه توسعه داد که هم سبک و سریع باشن و بهینه و با معماری فوقالعاده.
این فریمورک جذاب توسط یه تیم ایرانی درست شده که الان استارتاپشون تو هلنده و خیلی از شرکتهای خارجی و ایرانی از زیرساختشون استفاده میکنن.
https://bitplatform.dev/boilerplate
#dotnet #csharp #blazor #maui
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
__________
در کمتر از ده دقیقه با یکی از کاملترین NET project template. های حال حاضر برای Cross Platform Desktop/Mobile/Web development آشنا بشید و ببینید با Blazor چه اپهای خفنی میشه توسعه داد که هم سبک و سریع باشن و بهینه و با معماری فوقالعاده.
این فریمورک جذاب توسط یه تیم ایرانی درست شده که الان استارتاپشون تو هلنده و خیلی از شرکتهای خارجی و ایرانی از زیرساختشون استفاده میکنن.
https://bitplatform.dev/boilerplate
#dotnet #csharp #blazor #maui
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
__________
2👍17❤11🔥7👏5🤬2🤩1
بررسی و تفاوت چند نوع عددی در سی شارپ: float , int , double , decimal
#csharp_for_beginners
وقتی شما برای زمان طولانی مدت با زبان برنامه نویسی C# کار میکنید متغییرها برای شما به چیزهای عادی و روزمره تبدیل میشوند اما حالا میخواهیم نگاهی دقیقتر به متغییرهای عددی مانند (decimal , double , float , int) داشته باشیم.
▫️چرا int پیش فرض است؟
این به این معنی است که اگر شما یک عدد صحیح را بدون مشخص کردن نوع آن بنویسید، c# به طور خودکار آن را به عنوان int در نظر میگیرد.
در سی شارپ، برای بهبود عملکرد، متغیر عدد به طور پیش فرض روی int قرار می گیرد. int به بهترین وجه با معماری ۳۲ بیتی دات نت هماهنگ است و عملیات سریعتر و کارآمدتر را تضمین می کند. این ممکن است با استاندارد شدن معماری 64 بیتی تغییر کند، اما در حال حاضر، اعداد صحیح ۳۲ بیتی کارآمدترین انتخاب هستند.
مانند مثال روبرو :
▫️ تفاوت نوع اعداد در C#.
استفاده از float و double و decimal در محاسبات، تفاوتهای آنها را نشان می دهد: float دقت بالاتری دارد، double دارای محدوده بزرگتری از دقت است است، و decimal برای اعداد اعشاری با رقم های بسیار بالا که حدود 29 رقم داشته باشند به کار میرود .
مثالی برای درک بهتر تفاوت ها
🔗 نسخه کامل این مقاله را میتوانید در اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
#csharp_for_beginners
وقتی شما برای زمان طولانی مدت با زبان برنامه نویسی C# کار میکنید متغییرها برای شما به چیزهای عادی و روزمره تبدیل میشوند اما حالا میخواهیم نگاهی دقیقتر به متغییرهای عددی مانند (decimal , double , float , int) داشته باشیم.
▫️چرا int پیش فرض است؟
این به این معنی است که اگر شما یک عدد صحیح را بدون مشخص کردن نوع آن بنویسید، c# به طور خودکار آن را به عنوان int در نظر میگیرد.
در سی شارپ، برای بهبود عملکرد، متغیر عدد به طور پیش فرض روی int قرار می گیرد. int به بهترین وجه با معماری ۳۲ بیتی دات نت هماهنگ است و عملیات سریعتر و کارآمدتر را تضمین می کند. این ممکن است با استاندارد شدن معماری 64 بیتی تغییر کند، اما در حال حاضر، اعداد صحیح ۳۲ بیتی کارآمدترین انتخاب هستند.
مانند مثال روبرو :
var number = 10
▫️ تفاوت نوع اعداد در C#.
استفاده از float و double و decimal در محاسبات، تفاوتهای آنها را نشان می دهد: float دقت بالاتری دارد، double دارای محدوده بزرگتری از دقت است است، و decimal برای اعداد اعشاری با رقم های بسیار بالا که حدود 29 رقم داشته باشند به کار میرود .
مثالی برای درک بهتر تفاوت ها
float floatValue = 1f / 3f;
double doubleValue = 1d / 3d;
decimal decimalValue = 1m / 3m;
🔗 نسخه کامل این مقاله را میتوانید در اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
Exception Not Found
C# Decimal vs Double and Other Tips About Number Types
Learn about precision vs accuracy and when to use int, double, and decimal in .NET projects.
1👍13❤2
ظهور #InstructUI برای ساخت #ui با #ai برای #blazor !!!
این ویدئوی ۵ دقیقهای نشان میدهد که چطور میتوانید با چت کردن صفحات مورد نظر خود را بسازید و خروجی لایو آن را ببینید.
محصول جدیدی نیست و قبلا مشابه آن وجود داشته، اما جذابیت این یکی تولید خروجی روی #blazor و #webassembly به جای #react و #javanoscript هست.
دنیای #بلیزر و #وباسمبلی خیلی دنیای جالبی داره میشه و به نظر آینده خیلی خوبی داره در چند سال آینده.
https://www.youtube.com/watch?v=4PiIx4TPgbw
#مهران_داودی (لینکدین - بلاگ)
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
این ویدئوی ۵ دقیقهای نشان میدهد که چطور میتوانید با چت کردن صفحات مورد نظر خود را بسازید و خروجی لایو آن را ببینید.
محصول جدیدی نیست و قبلا مشابه آن وجود داشته، اما جذابیت این یکی تولید خروجی روی #blazor و #webassembly به جای #react و #javanoscript هست.
دنیای #بلیزر و #وباسمبلی خیلی دنیای جالبی داره میشه و به نظر آینده خیلی خوبی داره در چند سال آینده.
https://www.youtube.com/watch?v=4PiIx4TPgbw
#مهران_داودی (لینکدین - بلاگ)
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
YouTube
Build an Event Scheduler Front-End in Minutes Using Blazor & Instruct UI
Want to quickly build an Event Scheduler app using Blazor, but tired of spending hours writing UI code? In this video tutorial, you'll learn how Instruct UI can help you easily turn simple text denoscriptions or wireframes into working Blazor UIs—in just minutes.…
2🔥12👍6❤1
حلقهها در سیشارپ
#csharp_for_beginners
در برنامهنویسی، حلقهها ابزارهای قدرتمندی برای اجرای مجموعهای از دستورات بهصورت مکرر هستند. در زبان برنامهنویسی C#، انواع مختلفی از حلقه وجود دارد که به برنامهنویسان امکان میدهد تا وظایف تکراری را با کارایی بالا انجام دهند. در این مقاله، انواع مختلف حلقهها در C# را بررسی کرده و نحوه استفاده از آنها را توضیح خواهیم داد.
حلقه for
حلقه for معمولاً زمانی استفاده میشود که تعداد تکرارها مشخص باشد. این حلقه شامل سه بخش اصلی است:
۱. مقداردهی اولیه
۲. شرط ادامه حلقه
۳. افزایش یا کاهش مقدار متغیر کنترلی
مثال:
حلقه while
حلقه while معمولاً زمانی استفاده میشود که تعداد تکرارها از قبل مشخص نباشد و اجرای حلقه به یک شرط وابسته باشد.
مثال:
این حلقه نیز مانند for مقدار i را از صفر تا ۴ نمایش میدهد، اما شرط در ابتدای حلقه بررسی میشود.
حلقه do-while
حلقه do-while مشابه while است، با این تفاوت که شرط در انتهای حلقه بررسی میشود. بنابراین، بدنهی حلقه حداقل یک بار اجرا خواهد شد.
مثال:
🔗 نسخه کامل این مقاله را میتوانید در اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
#csharp_for_beginners
در برنامهنویسی، حلقهها ابزارهای قدرتمندی برای اجرای مجموعهای از دستورات بهصورت مکرر هستند. در زبان برنامهنویسی C#، انواع مختلفی از حلقه وجود دارد که به برنامهنویسان امکان میدهد تا وظایف تکراری را با کارایی بالا انجام دهند. در این مقاله، انواع مختلف حلقهها در C# را بررسی کرده و نحوه استفاده از آنها را توضیح خواهیم داد.
حلقه for
حلقه for معمولاً زمانی استفاده میشود که تعداد تکرارها مشخص باشد. این حلقه شامل سه بخش اصلی است:
۱. مقداردهی اولیه
۲. شرط ادامه حلقه
۳. افزایش یا کاهش مقدار متغیر کنترلی
مثال:
for (int i = 0; i < 5; i++)
{
; ("مقدار i: " + i)Console.WriteLine
}
حلقه while
حلقه while معمولاً زمانی استفاده میشود که تعداد تکرارها از قبل مشخص نباشد و اجرای حلقه به یک شرط وابسته باشد.
مثال:
int i = 0;
while (i < 5)
{
;("مقدار i: " + i)Console.WriteLine
i++;
}
این حلقه نیز مانند for مقدار i را از صفر تا ۴ نمایش میدهد، اما شرط در ابتدای حلقه بررسی میشود.
حلقه do-while
حلقه do-while مشابه while است، با این تفاوت که شرط در انتهای حلقه بررسی میشود. بنابراین، بدنهی حلقه حداقل یک بار اجرا خواهد شد.
مثال:
int i = 0;
do
{
;("مقدار i: " + i)Console.WriteLine
i++;
} while (i < 5);
🔗 نسخه کامل این مقاله را میتوانید در اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______
Docs
Iteration statements -for, foreach, do, and while - C# reference
C# iteration statements (for, foreach, do, and while) repeatedly execute a block of code. You use those statements to create loops or iterate through a collection.
👍7❤1