Forwarded from thisisnabi.dev [Farsi]
احتمالا این عکس رو خیلی هامون دیدیم، کنارش یه کتاب هست با عنوان Clean Code with C# که اونم کتاب خوبی هست برای شما که توی استک داتنت کار می کنید.
🔍 جستجوی فازی (Fuzzy Search) در Elasticsearch چیست و چطور کار میکند؟
تاحالا شده در یک سایت یا اپلیکیشن، کلمهای را با غلط املایی جستجو کنید ولی باز هم نتایج درستی بگیرید؟ این جادو نیست، این قدرت جستجوی فازی است!
به زبان ساده، جستجوی فازی به ما اجازه میدهد کلماتی را پیدا کنیم که شبیه به کلمه مورد نظر ما هستند، حتی اگر دقیقاً یکسان نباشند. این قابلیت برای جبران غلطهای املایی و اشتباهات تایپی عالی است.
-----
⚙️ الگوریتم پشت صحنه: فاصله لِوِناشتاین (Levenshtein)
مفهوم اصلی خیلی ساده است: فاصله لوناشتاین یعنی تعداد تغییرات (حذف، اضافه یا جایگزینی یک حرف) که لازم است تا یک کلمه به کلمهی دیگر تبدیل شود.
بیایید با یک مثال ببینیم:
فرض کنید کاربر تایپ کرده
- مقایسه:
- تغییر لازم: فقط کافیست حرف
- نتیجه: فاصله لوناشتاین بین این دو کلمه
-----
👨💻 مثال عملی در Elasticsearch
فرض کنید این اسناد را در ایندکس خود داریم:
- سند اول:
- سند دوم:
- سند سوم:
حالا کاربر کلمهی اشتباه
- در بخش
- در بخش
🤔 نتیجه چه میشود؟
- مقایسه با "elasticsearch":
کلمهی
- مقایسه با "statistics":
فاصله این دو کلمه بسیار بیشتر از
- مقایسه با "elastics":
کلمهی
بنابراین، اسناد شماره یک و سه در نتایج نمایش داده میشوند!
-----
💡 نکته طلایی: از `fuzziness: "AUTO"` استفاده کنید!
به جای عدد ثابت (مثل 1 یا 2)، بهتر است از مقدار
- کلمات کوتاه (تا 2 حرف): بدون فازی (فاصله 0)
- کلمات متوسط (3 تا 5 حرف): حداکثر 1 غلط مجاز (فاصله 1)
- کلمات بلند (بیش از 5 حرف): حداکثر 2 غلط مجاز (فاصله 2)
این کار جلوی نتایج بیربط برای کلمات کوتاه را میگیرد و بهترین عملکرد را دارد.
-----
✅ جمعبندی نهایی:
- هدف اصلی: پیدا کردن نتایج با وجود غلط املایی.
- الگوریتم پایه: فاصله لوناشتاین.
- پارامتر کلیدی:
- بهترین روش: استفاده از
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
تاحالا شده در یک سایت یا اپلیکیشن، کلمهای را با غلط املایی جستجو کنید ولی باز هم نتایج درستی بگیرید؟ این جادو نیست، این قدرت جستجوی فازی است!
به زبان ساده، جستجوی فازی به ما اجازه میدهد کلماتی را پیدا کنیم که شبیه به کلمه مورد نظر ما هستند، حتی اگر دقیقاً یکسان نباشند. این قابلیت برای جبران غلطهای املایی و اشتباهات تایپی عالی است.
-----
⚙️ الگوریتم پشت صحنه: فاصله لِوِناشتاین (Levenshtein)
مفهوم اصلی خیلی ساده است: فاصله لوناشتاین یعنی تعداد تغییرات (حذف، اضافه یا جایگزینی یک حرف) که لازم است تا یک کلمه به کلمهی دیگر تبدیل شود.
بیایید با یک مثال ببینیم:
فرض کنید کاربر تایپ کرده
elatic اما منظورش elastic بوده.- مقایسه:
elatic و elastic- تغییر لازم: فقط کافیست حرف
s را اضافه کنیم. (1 تغییر)- نتیجه: فاصله لوناشتاین بین این دو کلمه
1 است.-----
👨💻 مثال عملی در Elasticsearch
فرض کنید این اسناد را در ایندکس خود داریم:
- سند اول:
An introduction to elasticsearch- سند دوم:
Learning about statistics- سند سوم:
The basics of elasticsحالا کاربر کلمهی اشتباه
elastik را جستجو میکند. یک کوئری فازی به شکل زیر است:GET /my_index/_search
{
"query": {
"fuzzy": {
"title": {
"value": "elastik",
"fuzziness": "2"
}
}
}
}
- در بخش
value کلمهای که کاربر جستجو کرده قرار میگیرد.- در بخش
fuzziness که مهمترین قسمت است، ما به Elasticsearch میگوییم کلماتی را پیدا کن که حداکثر 2 تغییر با کلمه ما دارند.🤔 نتیجه چه میشود؟
- مقایسه با "elasticsearch":
کلمهی
elastik با یک تغییر به elastic تبدیل میشود. چون فاصله 1 کمتر از 2 است، پس ✅ این سند پیدا میشود.- مقایسه با "statistics":
فاصله این دو کلمه بسیار بیشتر از
2 است، پس ❌ این سند پیدا نمیشود.- مقایسه با "elastics":
کلمهی
elastik با دو تغییر به elastics تبدیل میشود. چون فاصله 2 با fuzziness ما برابر است، پس ✅ این سند هم پیدا میشود.بنابراین، اسناد شماره یک و سه در نتایج نمایش داده میشوند!
-----
💡 نکته طلایی: از `fuzziness: "AUTO"` استفاده کنید!
به جای عدد ثابت (مثل 1 یا 2)، بهتر است از مقدار
"AUTO" استفاده کنید. این حالت هوشمند، fuzziness را بر اساس طول کلمه تنظیم میکند:- کلمات کوتاه (تا 2 حرف): بدون فازی (فاصله 0)
- کلمات متوسط (3 تا 5 حرف): حداکثر 1 غلط مجاز (فاصله 1)
- کلمات بلند (بیش از 5 حرف): حداکثر 2 غلط مجاز (فاصله 2)
این کار جلوی نتایج بیربط برای کلمات کوتاه را میگیرد و بهترین عملکرد را دارد.
-----
✅ جمعبندی نهایی:
- هدف اصلی: پیدا کردن نتایج با وجود غلط املایی.
- الگوریتم پایه: فاصله لوناشتاین.
- پارامتر کلیدی:
fuzziness (حداکثر تغییرات مجاز).- بهترین روش: استفاده از
"fuzziness": "AUTO".📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥1
جستجوی هوشمند یعنی چی؟ با Stemming آشنا شو!
تاحالا شده دنبال کلمهی "خرید" بگردی ولی نتایجی که توشون "خریدم" یا "خریدن" هست رو پیدا نکنی؟ اینجاست که
---
❓ ریشهیابی (Stemming) چیه؟
خیلی سادهست! فرض کن یک هرسکنندهی هوشمند داری که شاخ و برگ اضافی کلمهها رو میزنه تا به ریشهشون برسه.
برای مثال، این کلمات رو در نظر بگیر:
*
*
*
ریشهیاب همهی اینها رو به یک کلمهی اصلی برمیگردونه: "کتاب"
---
چطوری کار میکنه؟
وقتی در سیستمی مثل الاستیکسرچ (Elasticsearch) از ریشهیابی استفاده میکنیم، دو تا اتفاق مهم میفته:
۱. موقع ذخیره: وقتی متنی رو ذخیره میکنیم، سیستم کلمهها رو به ریشهشون تبدیل میکنه.
- جملهی "من کتابها را خواندم" اینطوری ذخیره میشه: "من کتاب را خواند"
۲. موقع جستجو: وقتی تو کلمهی "کتاب" رو جستجو میکنی، سیستم دنبال ریشهی "کتاب" میگرده و تمام نتایج مرتبط رو پیدا میکنه! 🎉
---
چند مثال دیگه:
* رفتم، میروی، رفتند ⬅️ رفت
* کارگر، کارها، کارخانه ⬅️ کار
* نوشته، مینویسم، نویسنده ⬅️ نویس
---
✅ نتیجه نهایی:
با ریشهیابی، دیگه فرقی نمیکنه کاربر دنبال "خرید" بگرده یا "خریدار" یا "خریدند"؛ در هر صورت به چیزی که میخواد میرسه. این یعنی جستجوی دقیقتر، نتایج بیشتر و تجربهی کاربری بهتر!
لینک منبع :
https://www.elastic.co/docs/manage-data/data-store/text-analysis/stemming
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
تاحالا شده دنبال کلمهی "خرید" بگردی ولی نتایجی که توشون "خریدم" یا "خریدن" هست رو پیدا نکنی؟ اینجاست که
Stemming یا ریشهیابی وارد میشه! ---
❓ ریشهیابی (Stemming) چیه؟
خیلی سادهست! فرض کن یک هرسکنندهی هوشمند داری که شاخ و برگ اضافی کلمهها رو میزنه تا به ریشهشون برسه.
برای مثال، این کلمات رو در نظر بگیر:
*
کتابها*
کتابی*
کتابخانهریشهیاب همهی اینها رو به یک کلمهی اصلی برمیگردونه: "کتاب"
---
چطوری کار میکنه؟
وقتی در سیستمی مثل الاستیکسرچ (Elasticsearch) از ریشهیابی استفاده میکنیم، دو تا اتفاق مهم میفته:
۱. موقع ذخیره: وقتی متنی رو ذخیره میکنیم، سیستم کلمهها رو به ریشهشون تبدیل میکنه.
- جملهی "من کتابها را خواندم" اینطوری ذخیره میشه: "من کتاب را خواند"
۲. موقع جستجو: وقتی تو کلمهی "کتاب" رو جستجو میکنی، سیستم دنبال ریشهی "کتاب" میگرده و تمام نتایج مرتبط رو پیدا میکنه! 🎉
---
چند مثال دیگه:
* رفتم، میروی، رفتند ⬅️ رفت
* کارگر، کارها، کارخانه ⬅️ کار
* نوشته، مینویسم، نویسنده ⬅️ نویس
---
✅ نتیجه نهایی:
با ریشهیابی، دیگه فرقی نمیکنه کاربر دنبال "خرید" بگرده یا "خریدار" یا "خریدند"؛ در هر صورت به چیزی که میخواد میرسه. این یعنی جستجوی دقیقتر، نتایج بیشتر و تجربهی کاربری بهتر!
لینک منبع :
https://www.elastic.co/docs/manage-data/data-store/text-analysis/stemming
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
www.elastic.co
Stemming | Elastic Docs
Stemming is the process of reducing a word to its root form. This ensures variants of a word match during a search. For example, walking and walked can...
🔥3❤2👏2👍1
چرا جستجوی من همهچیز رو پیدا نمیکنه؟ راز Synonyms!
تاحالا شده دنبال "موبایل" بگردی، ولی محصولاتی که اسمشون "گوشی" هست رو از دست بدی؟ یا دنبال "کتونی" باشی و نتایج "کفش ورزشی" رو نبینی؟
اینجاست که
---
❓ مترادفها (Synonyms) چی هستن؟
خیلی ساده! ما به موتور جستجو (مثلاً الاستیکسرچ) یک لیست از کلمات هممعنی رو میدیم و میگیم: "رفیق! این کلمهها همشون یه معنی میدن. حواست باشه!"
اینطوری یک گروه از کلمات رو با هم رفیق میکنیم!
✨ چند مثال کاربردی:
🔗 گروه اول:
🔗 گروه دوم:
🔗 گروه سوم:
🔗 گروه چهارم:
---
جادوش چطوری کار میکنه؟
وقتی کاربر کلمهی "گوشی" رو جستجو میکنه، الاستیکسرچ بهطور خودکار دنبال "موبایل" و "تلفن همراه" هم میگرده. انگار که کاربر همهی این کلمات رو با هم جستجو کرده باشه!
---
✅ نتیجه نهایی:
استفاده از مترادفها باعث میشه جستجوی ما هیچ نتیجهی مرتبطی رو از دست نده. مهم نیست کاربر از چه کلمهای استفاده میکنه، همیشه به بهترین و کاملترین جواب میرسه. این یعنی کاربر راضیتر و جستجوی هوشمندتر!
لینک منبع :
https://www.elastic.co/docs/solutions/search/full-text/search-with-synonyms
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
تاحالا شده دنبال "موبایل" بگردی، ولی محصولاتی که اسمشون "گوشی" هست رو از دست بدی؟ یا دنبال "کتونی" باشی و نتایج "کفش ورزشی" رو نبینی؟
اینجاست که
Synonyms یا مترادفها وارد بازی میشن و جستجو رو نجات میدن! ---
❓ مترادفها (Synonyms) چی هستن؟
خیلی ساده! ما به موتور جستجو (مثلاً الاستیکسرچ) یک لیست از کلمات هممعنی رو میدیم و میگیم: "رفیق! این کلمهها همشون یه معنی میدن. حواست باشه!"
اینطوری یک گروه از کلمات رو با هم رفیق میکنیم!
✨ چند مثال کاربردی:
🔗 گروه اول:
موبایل, گوشی, تلفن همراه🔗 گروه دوم:
لپ تاپ, نوت بوک, لب تاب (حتی املای اشتباه!)🔗 گروه سوم:
ماشین, خودرو, اتومبیل🔗 گروه چهارم:
هوش مصنوعی, AI (برای کلمات اختصاری)---
جادوش چطوری کار میکنه؟
وقتی کاربر کلمهی "گوشی" رو جستجو میکنه، الاستیکسرچ بهطور خودکار دنبال "موبایل" و "تلفن همراه" هم میگرده. انگار که کاربر همهی این کلمات رو با هم جستجو کرده باشه!
---
✅ نتیجه نهایی:
استفاده از مترادفها باعث میشه جستجوی ما هیچ نتیجهی مرتبطی رو از دست نده. مهم نیست کاربر از چه کلمهای استفاده میکنه، همیشه به بهترین و کاملترین جواب میرسه. این یعنی کاربر راضیتر و جستجوی هوشمندتر!
لینک منبع :
https://www.elastic.co/docs/solutions/search/full-text/search-with-synonyms
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
www.elastic.co
Search with synonyms | Elastic Docs
Synonyms are words or phrases that share the same or similar meaning. Searching using synonyms allows you to: Improve search relevance by finding relevant...
👍13👏3🔥1
Forwarded from TondTech (مسعود بیگی)
#استخدام .net Developer
اگه .net Developer با حداقل 3-4 سال تجربه ی کاری هستید، و دوست دارین تجربه جدید به دست بیارین، بیاین بیشتر گپ بزنیم در موردش.
یه پوزیشن توی Rasmio.com باز کردیم.
مشاهده آگهی و ارسال رزومه در جاب ویژن
اگه .net Developer با حداقل 3-4 سال تجربه ی کاری هستید، و دوست دارین تجربه جدید به دست بیارین، بیاین بیشتر گپ بزنیم در موردش.
یه پوزیشن توی Rasmio.com باز کردیم.
مشاهده آگهی و ارسال رزومه در جاب ویژن
❤2👍2🔥1
Forwarded from DevTwitter | توییت برنامه نویسی
دوره MCP مایکروسافت | زیرنویس فارسی
یوتیوب
https://youtu.be/Vr1vMyyIdzM?si=TEuNuXjEJhuE4fQG
آپارات (نیم بها)
https://www.aparat.com/v/azkvpjg
@DevTwitter | <Hamed Heydarian/>
یوتیوب
https://youtu.be/Vr1vMyyIdzM?si=TEuNuXjEJhuE4fQG
آپارات (نیم بها)
https://www.aparat.com/v/azkvpjg
@DevTwitter | <Hamed Heydarian/>
👍5🔥3❤2🥰1🎉1🤩1
Media is too big
VIEW IN TELEGRAM
ویدیوی جادی در مورد تازه کار بودن و نگرانی از دیر شروع کردن
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2👍2👏1
میخوام یه پلیلیست یوتیوب رو بهتون معرفی کنم که خودم به شخصه خیلی باهاش حال کردم و کلی ازش یاد گرفتم.
پلیلیست «هکاتون دیوان» 📽️
اصلاً یه پکیج کامله! از کارآفرینی و مدیریت محصول بگیرید تا مباحث داغی مثل LLM و GenAI و ابزارهای نابی مثل n8n.
اما بخش جذابش کجاست؟ 🤔
اینه که تمام این آموزشها توسط ایرانیهای متخصص و باتجربهای ارائه شده که دارن در سطح اول جهان کار میکنن. دمشون گرم واقعاً!
خلاصه که، چه اول راه دنیای دیجیتال و استارتاپ هستید و چه میخواید آپدیت بمونید، این ویدئوها شدیداً توصیه میشه. براتون کلی آورده داره.
لینکشو میذارم، حتماً یه سر بزنید:
https://youtube.com/playlist?list=PLEu69v6v4-HOWsnhKXvPQKtPLoUWAFU5-&si=AislEtq3isx19fR4
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
پلیلیست «هکاتون دیوان» 📽️
اصلاً یه پکیج کامله! از کارآفرینی و مدیریت محصول بگیرید تا مباحث داغی مثل LLM و GenAI و ابزارهای نابی مثل n8n.
اما بخش جذابش کجاست؟ 🤔
اینه که تمام این آموزشها توسط ایرانیهای متخصص و باتجربهای ارائه شده که دارن در سطح اول جهان کار میکنن. دمشون گرم واقعاً!
خلاصه که، چه اول راه دنیای دیجیتال و استارتاپ هستید و چه میخواید آپدیت بمونید، این ویدئوها شدیداً توصیه میشه. براتون کلی آورده داره.
لینکشو میذارم، حتماً یه سر بزنید:
https://youtube.com/playlist?list=PLEu69v6v4-HOWsnhKXvPQKtPLoUWAFU5-&si=AislEtq3isx19fR4
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Divan Hackathon Summer 2025
Share your videos with friends, family, and the world
❤8👍3🔥2👏1
قسمت شماره ۱: خداحافظی با کدهای تکراری در C# 14!
سلام به همه برنامهنویسهای خفن داتنتی! 👋
خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگیهای فوقالعاده از راه رسیدن که کدنویسی رو خیلی شیرینتر میکنه. بیاید چندتا از باحالترینهاش رو با هم ببینیم:
۱. اپراتور `??=` (انتساب شرطی Null)
یادتونه چقدر
۲. کلمهی کلیدی `field` (خداحافظی با Backing Fields!)
یکی از بهترین امکانات جدید! دیگه لازم نیست برای یه Property ساده، یه فیلد
۳. اپلیکیشنهای تکفایلی (File-Based Apps)
برای یه تست ساده یا یه اسکریپت کوچیک دیگه نیازی به ساختن پروژه (
قسمت شماره ۲: .NET 10 برای وبکارهای حرفهای!
خب، برگشتیم با قسمت دوم معرفی .NET 10! 💻 این بار میخوایم ببینیم تو دنیای وب (ASP.NET)، دیتابیس (EF Core) و بلیزور (Blazor) چه خبره.
۱. ولیدیشن اتوماتیک در Minimal APIs (ASP.NET Core)
قبلاً اعتبارسنجی (Validation) تو Minimal API ها یه کم دردسر داشت. حالا خیلی شیک و اتوماتیک شده. فقط کافیه مدلهاتون Data Annotation داشته باشن:
۲. آپدیت ستونهای JSON در EF Core
کار کردن با ستونهای JSON تو EF Core 10 خیلی قویتر شده. مثلاً حالا میتونیم یه تیکه از JSON رو مستقیم آپدیت کنیم، بدون اینکه کل آبجکت رو از دیتابیس بخونیم و برگردونیم!
۳. هات ریلود (Hot Reload) برای Blazor WebAssembly
اینم خبری که همهی بچههای Blazor منتظرش بودن! 🥳 از .NET 10 به بعد، Hot Reload برای Blazor WebAssembly (Wasm) هم به خوبی کار میکنه.
یعنی هم کد C# و هم فایلهای Razor. رو تغییر میدید، سیو میکنید و *بدون رفرش کردن مرورگر*، تغییرات رو تو صفحه میبینید. این یعنی سرعت توسعه فوقالعاده! ⚡️
-----
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
سلام به همه برنامهنویسهای خفن داتنتی! 👋
خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگیهای فوقالعاده از راه رسیدن که کدنویسی رو خیلی شیرینتر میکنه. بیاید چندتا از باحالترینهاش رو با هم ببینیم:
۱. اپراتور `??=` (انتساب شرطی Null)
یادتونه چقدر
if مینوشتیم تا چک کنیم یه متغیر null هست یا نه و بعد بهش مقدار بدیم؟ خب، اون دوران تموم شد!// ----------------
// قبلاً اینجوری بود:
// ----------------
List<string> myStrings = null;
if (myStrings == null)
{
myStrings = new List<string>();
}
// ----------------
// حالا در C# 14:
// ----------------
List<string> myStrings = null;
myStrings ??= new List<string>(); // به همین راحتی! ✨
// اگه null بود، یکی جدید بساز.
۲. کلمهی کلیدی `field` (خداحافظی با Backing Fields!)
یکی از بهترین امکانات جدید! دیگه لازم نیست برای یه Property ساده، یه فیلد
private جدا تعریف کنیم. خود C# این کار رو با کلمه field برامون انجام میده:// ----------------
// قبلاً برای ولیدیشن:
// ----------------
private string _name;
public string Name
{
get => _name;
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
_name = value;
}
}
// ----------------
// حالا در C# 14:
// ----------------
public string Name
{
get => field; // 'field' همون backing field مخفی ماست
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
field = value; // مستقیم بهش مقدار میدیم 🤯
}
}
۳. اپلیکیشنهای تکفایلی (File-Based Apps)
برای یه تست ساده یا یه اسکریپت کوچیک دیگه نیازی به ساختن پروژه (
.csproj) و سلوشن (.sln) نیست! فقط یه فایل .cs بسازید و اجراش کنید:// یه فایل بساز به اسم Program.cs
Console.WriteLine("سلام دنیا، بدون پروژه!");
// توی ترمینال اجرا کن:
// dotnet run Program.cs
قسمت شماره ۲: .NET 10 برای وبکارهای حرفهای!
خب، برگشتیم با قسمت دوم معرفی .NET 10! 💻 این بار میخوایم ببینیم تو دنیای وب (ASP.NET)، دیتابیس (EF Core) و بلیزور (Blazor) چه خبره.
۱. ولیدیشن اتوماتیک در Minimal APIs (ASP.NET Core)
قبلاً اعتبارسنجی (Validation) تو Minimal API ها یه کم دردسر داشت. حالا خیلی شیک و اتوماتیک شده. فقط کافیه مدلهاتون Data Annotation داشته باشن:
// فقط کافیه این سرویس رو اضافه کنی:
builder.Services.AddValidation();
// و تمام!
app.MapPost("/users", (CreateUserRequest user) =>
{
// اگه 'user' معتبر نباشه (مثلاً ایمیل خالی باشه)
// .NET خودکار خطای 400 Bad Request برمیگردونه.
// اصلاً به این خط کد نمیرسه!
return Results.Ok(user);
});
// مدل ما:
public class CreateUserRequest
{
[Required]
[EmailAddress]
public string Email { get; set; }
[MinLength(6)]
public string Password { get; set; }
}
۲. آپدیت ستونهای JSON در EF Core
کار کردن با ستونهای JSON تو EF Core 10 خیلی قویتر شده. مثلاً حالا میتونیم یه تیکه از JSON رو مستقیم آپدیت کنیم، بدون اینکه کل آبجکت رو از دیتابیس بخونیم و برگردونیم!
// فرض کنید یه ستون JSON به اسم 'Profile' داریم
await db.Users
.Where(u => u.Id == 123)
.ExecuteUpdateAsync(s => s
// مستقیم آدرس توی پروفایل رو آپدیت کن
.SetProperty(u => u.Profile["Address"]["City"], "Tehran")
);
// این یعنی پرفورمنس بالاتر! 🔥
۳. هات ریلود (Hot Reload) برای Blazor WebAssembly
اینم خبری که همهی بچههای Blazor منتظرش بودن! 🥳 از .NET 10 به بعد، Hot Reload برای Blazor WebAssembly (Wasm) هم به خوبی کار میکنه.
یعنی هم کد C# و هم فایلهای Razor. رو تغییر میدید، سیو میکنید و *بدون رفرش کردن مرورگر*، تغییرات رو تو صفحه میبینید. این یعنی سرعت توسعه فوقالعاده! ⚡️
-----
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍7🔥1
DotNet | دات نت
قسمت شماره ۱: خداحافظی با کدهای تکراری در C# 14! سلام به همه برنامهنویسهای خفن داتنتی! 👋 خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگیهای فوقالعاده از راه رسیدن که کدنویسی رو خیلی شیرینتر میکنه. بیاید چندتا از باحالترینهاش رو با هم ببینیم:…
قسمت ۱ :Extension Members
این یکی از بزرگترین تغییرات C# 14 هست! یادتونه با Extension Methods میتونستیم به کلاسهای دیگه (حتی کلاسهایی که سورسشون رو نداشتیم) رفتار (متد) اضافه کنیم؟
حالا با Extension Members میتونیم بهشون حالت (State) هم اضافه کنیم! یعنی میتونیم به کلاسی که مال ما نیست، Property، Field و حتی Event اضافه کنیم.
مثال: فرض کنید یه کلاس User از یه پکیج NuGet دارید و نمیتونید تغییرش بدید.
حالا میخوایم یه Property به اسم DisplayName بهش اضافه کنیم که اسم کامل رو برگردونه:
نحوه استفادهاش دقیقاً مثل یه Property عادیه:
قسمت ۲ : خداحافظی با پیچیدگی LeftJoin
اگه با Entity Framework Core کار کرده باشید، میدونید که پیادهسازی یه LEFT JOIN ساده (یعنی «همه کاربرها رو بیار، و اگه کتابی داشتن، کتابهاشون رو هم بیار») چقدر میتونست پیچیده باشه. معمولاً باید از GroupJoin و SelectMany و DefaultIfEmpty استفاده میکردیم که خیلی خوانا نبود.
خبر خوب: در EF Core 10، متدهای LeftJoin و RightJoin مستقیماً اضافه شدن!
مثال: میخوایم لیست همه «نویسندهها» و «عنوان کتابهاشون» رو بگیریم، حتی اگه نویسندهای هیچ کتابی نداشته باشه.
این کوئری جدید خیلی تمیزتره و دقیقاً همون چیزی رو مینویسید که تو ذهنتونه (و شبیه SQL اصلیه).
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
این یکی از بزرگترین تغییرات C# 14 هست! یادتونه با Extension Methods میتونستیم به کلاسهای دیگه (حتی کلاسهایی که سورسشون رو نداشتیم) رفتار (متد) اضافه کنیم؟
حالا با Extension Members میتونیم بهشون حالت (State) هم اضافه کنیم! یعنی میتونیم به کلاسی که مال ما نیست، Property، Field و حتی Event اضافه کنیم.
مثال: فرض کنید یه کلاس User از یه پکیج NuGet دارید و نمیتونید تغییرش بدید.
// این کلاس در یک لایبرری دیگه است:
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
حالا میخوایم یه Property به اسم DisplayName بهش اضافه کنیم که اسم کامل رو برگردونه:
// جادوی C# 14 با کلمه کلیدی 'extension'
public extension class UserExtension for User
{
// یه Property جدید به کلاس User اضافه کردیم!
public string DisplayName
{
// 'this' به همون نمونه 'User' اشاره داره
get => $"{this.FirstName} {this.LastName}";
}
// حتی میتونیم فیلد هم اضافه کنیم!
private bool _hasBeenWelcomed = false;
public void Welcome()
{
if (!_hasBeenWelcomed)
{
Console.WriteLine($"خوش اومدی، {this.DisplayName}!");
_hasBeenWelcomed = true;
}
}
}
نحوه استفادهاش دقیقاً مثل یه Property عادیه:
var user = new User { FirstName = "سارا", LastName = "رضائی" };
// مستقیم به Property الحاقی دسترسی داریم:
Console.WriteLine(user.DisplayName); // خروجی: سارا محمدی
user.Welcome(); // خروجی: خوش اومدی، سارا محمدی!
user.Welcome(); // (بار دوم چیزی چاپ نمیکنه)قسمت ۲ : خداحافظی با پیچیدگی LeftJoin
اگه با Entity Framework Core کار کرده باشید، میدونید که پیادهسازی یه LEFT JOIN ساده (یعنی «همه کاربرها رو بیار، و اگه کتابی داشتن، کتابهاشون رو هم بیار») چقدر میتونست پیچیده باشه. معمولاً باید از GroupJoin و SelectMany و DefaultIfEmpty استفاده میکردیم که خیلی خوانا نبود.
خبر خوب: در EF Core 10، متدهای LeftJoin و RightJoin مستقیماً اضافه شدن!
مثال: میخوایم لیست همه «نویسندهها» و «عنوان کتابهاشون» رو بگیریم، حتی اگه نویسندهای هیچ کتابی نداشته باشه.
// ----------------
// روش قدیمی در EF Core 8:
// ----------------
var oldWay = db.Authors
.GroupJoin(db.Books,
author => author.Id,
book => book.AuthorId,
(author, books) => new { Author = author, Books = books })
.SelectMany(
temp => temp.Books.DefaultIfEmpty(),
(temp, book) => new
{
AuthorName = temp.Author.Name,
BookTitle = book == null ? "(بدون کتاب)" : book.Title
});
// ----------------
// روش جدید و خوانا در EF Core 10:
// ----------------
var newWay = db.Authors
.LeftJoin(db.Books,
author => author.Id, // کلید از جدول چپ (Author)
book => book.AuthorId, // کلید از جدول راست (Book)
(author, book) => new // نتیجه نهایی
{
AuthorName = author.Name,
// اگه کتابی نباشه، 'book' و در نتیجه 'book.Title' نال میشه
BookTitle = book.Title
});
این کوئری جدید خیلی تمیزتره و دقیقاً همون چیزی رو مینویسید که تو ذهنتونه (و شبیه SQL اصلیه).
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍1🔥1👏1
DotNet | دات نت
قسمت شماره ۱: خداحافظی با کدهای تکراری در C# 14! سلام به همه برنامهنویسهای خفن داتنتی! 👋 خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگیهای فوقالعاده از راه رسیدن که کدنویسی رو خیلی شیرینتر میکنه. بیاید چندتا از باحالترینهاش رو با هم ببینیم:…
قسمت ۳ : پشتیبانی داخلی از (SSE) Server-Sent Events
اغلب وقتی میخوایم دیتای زنده از سرور به کلاینت بفرستیم (مثل نوتیفیکیشن، قیمت لحظهای ارز یا وضعیت یه پردازش طولانی)، اولین فکرمون میره سراغ WebSockets.
اما WebSockets یه پروتکل دوطرفه و پیچیدهست. خیلی وقتها ما فقط نیاز داریم سرور یکطرفه به کلاینت دیتا «پوش» کنه.
اینجا SSE (Server-Sent Events) وارد میشه. SSE بر پایه HTTP کار میکنه، سبکه و پیادهسازیش خیلی سادهتره.
در ASP.NET Core 10، پشتیبانی از SSE داخلی شده:
مثال (سمت سرور - C#):
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
اغلب وقتی میخوایم دیتای زنده از سرور به کلاینت بفرستیم (مثل نوتیفیکیشن، قیمت لحظهای ارز یا وضعیت یه پردازش طولانی)، اولین فکرمون میره سراغ WebSockets.
اما WebSockets یه پروتکل دوطرفه و پیچیدهست. خیلی وقتها ما فقط نیاز داریم سرور یکطرفه به کلاینت دیتا «پوش» کنه.
اینجا SSE (Server-Sent Events) وارد میشه. SSE بر پایه HTTP کار میکنه، سبکه و پیادهسازیش خیلی سادهتره.
در ASP.NET Core 10، پشتیبانی از SSE داخلی شده:
مثال (سمت سرور - C#):
app.MapGet("/live-clock", async (HttpContext context, CancellationToken ct) =>
{
// به مرورگر میگیم که این یه استریم SSE هست
await context.Response.WriteSseHeadersAsync(ct);
// یه حلقه که هر ثانیه، زمان سرور رو برای کلاینت میفرسته
while (!ct.IsCancellationRequested)
DRAFT:
{
// یه "ایونت" به اسم 'timeUpdate' میفرستیم
await context.Response.WriteSseEventAsync(
"timeUpdate", // اسم ایونت
$"ساعت سرور: {DateTime.Now:T}", // دیتا
ct);
await Task.Delay(1000, ct); // ۱ ثانیه صبر کن
}
});
مثال (سمت کلاینت - JavaScript):
// به همین سادگی به سرور وصل میشیم
const eventSource = new EventSource("/live-clock");
// به ایونت 'timeUpdate' گوش میدیم
eventSource.addEventListener("timeUpdate", (event) => {
console.log(event.data);
// خروجی: "ساعت سرور: 14:30:01"
// خروجی: "ساعت سرور: 14:30:02"
// ...
});📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👏3
25195_WonderlandVS2026Sizzle_AvailableNow_v1.webm
3.4 MB
🔥 نسخه نهایی ویژوال استودیو ۲۰۲۶ منتشر شد! 🔥
بالاخره نسخه جدید غول برنامهنویسی مایکروسافت، Visual Studio 2026، همزمان با .NET Conf 2025 و همراه با .NET 10 به صورت رسمی (GA) منتشر شد!
این نسخه فقط یک آپدیت ساده نیست، بلکه به گفته مایکروسافت، اولین "محیط توسعه هوشمند" (Intelligent Developer Environment) محسوب میشه. تمرکز اصلی روی هوش مصنوعی، عملکرد و مدرنسازی بوده.
---
مهمترین تغییرات و ویژگیهای جدید:
محیط توسعه مبتنی بر هوش مصنوعی (AI-Native):
قسمت Copilot Agents: دیگه فقط یک پیشنهاددهنده کد نیست! Copilot حالا "ایجنتهای" تخصصی برای C# و C++ داره که میتونن وظایف پیچیدهتر مثل مدرنسازی کدهای قدیمی یا نوشتن تستهای واحد (Unit Test) رو انجام بدن.
دیباگینگ هوشمند: موقع دیباگ کردن، Copilot بهتون میگه که چرا یک متغیر این مقدار رو گرفته یا فلان if چطور ارزیابی شده.
جستجوی هوشمند: قابلیت "Did You Mean" به جستجوی داخل پروژه اضافه شده و منظور شما رو بهتر درک میکنه.
عملکرد و پایداری فوقالعاده:
بیش از ۵۰۰۰ باگ گزارششده توسط کاربران رفع شده.
هنگ کردنهای رابط کاربری (UI hangs) نسبت به VS 2022 بیش از ۵۰٪ کاهش پیدا کرده و محیط برنامه به شدت روانتر شده.
رابط کاربری جدید (Fluent UI):
ظاهر ویژوال استودیو بازطراحی شده و با زبان طراحی جدید مایکروسافت (Fluent UI) هماهنگ شده که مدرنتر و تمیزتره.
پشتیبانی کامل از پلتفرمهای جدید:
پشتیبانی کامل از آخرین نسخه .NET.
بهرهمندی از تمام قابلیتهای جدید زبان سیشارپ.
پشتیبانی درجه یک از فریمورک جدید مایکروسافت برای ساخت اپلیکیشنهای Cloud-Native.
پشتیبانی کامل از آخرین استانداردهای C++.
سازگاری اکستنشنها:
خبر خوب! اکثر اکستنشنهایی که برای ویژوال استودیو ۲۰۲۲ نوشته شدهاند، بدون مشکل روی نسخه ۲۰۲۶ هم کار میکنند.
---
🔗 لینک دانلود مستقیم از سایت مایکروسافت:
https://visualstudio.microsoft.com/downloads
---
🔑 لایسنسهای ارائه شده:
Enterprise:
Professional:
---
#VisualStudio #VS2026 #DotNet10 #CSharp14 #AI #Copilot
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
بالاخره نسخه جدید غول برنامهنویسی مایکروسافت، Visual Studio 2026، همزمان با .NET Conf 2025 و همراه با .NET 10 به صورت رسمی (GA) منتشر شد!
این نسخه فقط یک آپدیت ساده نیست، بلکه به گفته مایکروسافت، اولین "محیط توسعه هوشمند" (Intelligent Developer Environment) محسوب میشه. تمرکز اصلی روی هوش مصنوعی، عملکرد و مدرنسازی بوده.
---
مهمترین تغییرات و ویژگیهای جدید:
محیط توسعه مبتنی بر هوش مصنوعی (AI-Native):
قسمت Copilot Agents: دیگه فقط یک پیشنهاددهنده کد نیست! Copilot حالا "ایجنتهای" تخصصی برای C# و C++ داره که میتونن وظایف پیچیدهتر مثل مدرنسازی کدهای قدیمی یا نوشتن تستهای واحد (Unit Test) رو انجام بدن.
دیباگینگ هوشمند: موقع دیباگ کردن، Copilot بهتون میگه که چرا یک متغیر این مقدار رو گرفته یا فلان if چطور ارزیابی شده.
جستجوی هوشمند: قابلیت "Did You Mean" به جستجوی داخل پروژه اضافه شده و منظور شما رو بهتر درک میکنه.
عملکرد و پایداری فوقالعاده:
بیش از ۵۰۰۰ باگ گزارششده توسط کاربران رفع شده.
هنگ کردنهای رابط کاربری (UI hangs) نسبت به VS 2022 بیش از ۵۰٪ کاهش پیدا کرده و محیط برنامه به شدت روانتر شده.
رابط کاربری جدید (Fluent UI):
ظاهر ویژوال استودیو بازطراحی شده و با زبان طراحی جدید مایکروسافت (Fluent UI) هماهنگ شده که مدرنتر و تمیزتره.
پشتیبانی کامل از پلتفرمهای جدید:
پشتیبانی کامل از آخرین نسخه .NET.
بهرهمندی از تمام قابلیتهای جدید زبان سیشارپ.
پشتیبانی درجه یک از فریمورک جدید مایکروسافت برای ساخت اپلیکیشنهای Cloud-Native.
پشتیبانی کامل از آخرین استانداردهای C++.
سازگاری اکستنشنها:
خبر خوب! اکثر اکستنشنهایی که برای ویژوال استودیو ۲۰۲۲ نوشته شدهاند، بدون مشکل روی نسخه ۲۰۲۶ هم کار میکنند.
---
🔗 لینک دانلود مستقیم از سایت مایکروسافت:
https://visualstudio.microsoft.com/downloads
---
🔑 لایسنسهای ارائه شده:
Enterprise:
BW43B-4PNFP-V7GB7-36MBD-3PJTHProfessional:
DDBD6-NPCDC-2FH2P-PDP9M-G3F6W---
#VisualStudio #VS2026 #DotNet10 #CSharp14 #AI #Copilot
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👏2🔥1
Forwarded from ʜᴜꜱꜱᴇɪɴ ʙᴇʏɢɪ
قسمت سوم :
🔥 اگه فکر میکنی Kibana فقط برای نگاهکردن لاگه… این ویدیو نظرت رو عوض میکنه!
همه جا میگن «الاستیکسرچ سریع و قدرتمنده»، ولی کسی واقعاً نشون نمیده چطوری باید ازش استفاده کرد.
تو این قسمت، بدون هیچ پیچیدگی، مستقیم میریم سراغ قلب ماجرا:
✅ ساخت ایندکس واقعی
✅ سرچهای کاربردی با Match و Multi-Match
✅ اولین Aggregation حرفهای
✅ فهم درست Doc, Index و REST API
و کلی نکتهای که معمولاً هیچجا گفته نمیشه…
اگر حتی یه بار با ElasticSearch کار کردی (یا میخوای شروع کنی)، این قسمت جامپاستارتته!
👇
https://youtu.be/HSodksRVtKU
🔥 اگه فکر میکنی Kibana فقط برای نگاهکردن لاگه… این ویدیو نظرت رو عوض میکنه!
همه جا میگن «الاستیکسرچ سریع و قدرتمنده»، ولی کسی واقعاً نشون نمیده چطوری باید ازش استفاده کرد.
تو این قسمت، بدون هیچ پیچیدگی، مستقیم میریم سراغ قلب ماجرا:
✅ ساخت ایندکس واقعی
✅ سرچهای کاربردی با Match و Multi-Match
✅ اولین Aggregation حرفهای
✅ فهم درست Doc, Index و REST API
و کلی نکتهای که معمولاً هیچجا گفته نمیشه…
اگر حتی یه بار با ElasticSearch کار کردی (یا میخوای شروع کنی)، این قسمت جامپاستارتته!
👇
https://youtu.be/HSodksRVtKU
❤3👍1🔥1
مدل Gemini 3 Pro منتشر شده و نتایج اولیه روی بنچمارکها از پیشرفت قابل ملاحظه نسبت به مدل قبلی خبر میده.
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1🤯1
اتحاد غولهای هوش مصنوعی: مایکروسافت، انویدیا و آنتروپیک برای آینده هوش مصنوعی همکاری میکنند
در یک رویداد مهم، مدیران عامل شرکتهای مایکروسافت، انویدیا و آنتروپیک از یک همکاری استراتژیک چندجانبه برای تسریع نوآوری و گسترش هوش مصنوعی در سطح جهانی خبر دادند. بر اساس این توافق، مدلهای پیشرفته هوش مصنوعی Claude شرکت آنتروپیک بر روی پلتفرم ابری Azure مایکروسافت در دسترس قرار گرفته و در محصولات خانواده Copilot ادغام خواهند شد.
از سوی دیگر، انویدیا با تأمین پردازندههای گرافیکی قدرتمند خود و همکاری فنی برای بهینهسازی مدلها، زیرساخت لازم برای رشد آنتروپیک را فراهم میکند. این اتحاد با هدف ارائه بهترین زیرساختها، مدلهای هوش مصنوعی و برنامههای کاربردی به مشتریان، به ویژه در بخشهای سازمانی و صنعتی، شکل گرفته است تا پذیرش فناوری هوش مصنوعی در سراسر جهان را تسریع بخشد.
https://www.youtube.com/watch?v=bl7vHnOgEg0
در یک رویداد مهم، مدیران عامل شرکتهای مایکروسافت، انویدیا و آنتروپیک از یک همکاری استراتژیک چندجانبه برای تسریع نوآوری و گسترش هوش مصنوعی در سطح جهانی خبر دادند. بر اساس این توافق، مدلهای پیشرفته هوش مصنوعی Claude شرکت آنتروپیک بر روی پلتفرم ابری Azure مایکروسافت در دسترس قرار گرفته و در محصولات خانواده Copilot ادغام خواهند شد.
از سوی دیگر، انویدیا با تأمین پردازندههای گرافیکی قدرتمند خود و همکاری فنی برای بهینهسازی مدلها، زیرساخت لازم برای رشد آنتروپیک را فراهم میکند. این اتحاد با هدف ارائه بهترین زیرساختها، مدلهای هوش مصنوعی و برنامههای کاربردی به مشتریان، به ویژه در بخشهای سازمانی و صنعتی، شکل گرفته است تا پذیرش فناوری هوش مصنوعی در سراسر جهان را تسریع بخشد.
https://www.youtube.com/watch?v=bl7vHnOgEg0
YouTube
Anthropic, Microsoft, and NVIDIA Announce Partnerships
Anthropic co-founder and CEO Dario Amodei, Microsoft Chairman and CEO Satya Nadella, and NVIDIA founder and CEO Jensen Huang discuss the new partnerships between their companies.
Subscribe to Microsoft on YouTube here: https://aka.ms/SubscribeToYouTube …
Subscribe to Microsoft on YouTube here: https://aka.ms/SubscribeToYouTube …
👍4🔥3❤2