DotNet | دات نت
1.11K subscribers
663 photos
229 videos
484 files
703 links
تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم.
- سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم
منتظرت هستیم😉
دنیا رو جای بهتری برای یادگیری کنیم 🌹
#course #book


🆔 @dotnetcode
Download Telegram
این کتاب یک منبع خیلی خوب برای هرکسی است که قصد دارد در فریم‌ورک ASP.NET Core مسلط شود، با تکیه بر مفاهیم پیشرفته و مثال‌های عملی. پیشنهاد می‌کنم هر کسی که علاقه‌مند به یک راهنمایی کامل و ارزشمند است، این کتاب را مطالعه کند.
👍3
ابزار Hybrid Cache در .NET 9: بهبود عملکرد و سادگی در مدیریت کش

در دنیای توسعه نرم‌افزار، کش‌ینگ یکی از مهم‌ترین تکنیک‌ها برای بهبود عملکرد و کاهش بار روی سرور است. در .NET 9، مایکروسافت ویژگی جدیدی به نام Hybrid Cache معرفی کرده است که ترکیبی از کش حافظه داخلی (In-Memory Cache) و کش توزیع‌شده (Distributed Cache) است. این ویژگی نه تنها عملکرد را بهبود می‌بخشد، بلکه مدیریت کش را نیز ساده‌تر می‌کند. در این مقاله، به بررسی Hybrid Cache، فواید آن، و نحوه استفاده از آن در یک سناریوی واقعی می‌پردازیم.

ابزار Hybrid Cache چیست؟
ابزار Hybrid Cache یک کتابخانه جدید در .NET 9 است که دو لایه کش را با هم ترکیب می‌کند:

کش L1 (کش حافظه داخلی): برای دسترسی سریع به داده‌ها در حافظه محلی.

کش L2 (کش توزیع‌شده): برای ذخیره داده‌ها در یک کش توزیع‌شده مانند Redis یا SQL Server، که برای محیط‌های توزیع‌شده و چند سروری مناسب است.

این ترکیب باعث می‌شود که داده‌ها ابتدا از کش حافظه داخلی خوانده شوند و در صورت عدم وجود، از کش توزیع‌شده بازیابی شوند. این رویکرد نه تنها تأخیر را کاهش می‌دهد، بلکه از بار اضافی روی کش توزیع‌شده نیز جلوگیری می‌کند.

فواید Hybrid Cache
1. بهبود عملکرد: با استفاده از کش حافظه داخلی، دسترسی به داده‌های پرکاربرد بسیار سریع‌تر می‌شود.

2. سادگی در مدیریت: دیگر نیازی به انتخاب بین کش حافظه داخلی و توزیع‌شده نیست. Hybrid Cache به طور خودکار این کار را انجام می‌دهد.

3. حمایت از تگ‌ها: می‌توانید داده‌ها را با تگ‌ها گروه‌بندی کنید و به راحتی آن‌ها را حذف یا به‌روزرسانی کنید.

4. محافظت در برابر Stampede: هنگامی که چندین درخواست همزمان برای داده‌ای که در کش وجود ندارد ارسال می‌شود، Hybrid Cache از اجرای چندین باره کد جلوگیری می‌کند و فقط یک درخواست را پردازش می‌کند.

5. پیکربندی انعطاف‌پذیر: می‌توانید زمان انقضا و سایر تنظیمات را برای هر دو لایه کش به صورت جداگانه تنظیم کنید.

نحوه استفاده از Hybrid Cache در .NET 9

نصب و پیکربندی
برای شروع، باید بسته NuGet مربوط به Hybrid Cache را نصب کنید:
dotnet add package Microsoft.Extensions.Caching.Hybrid  


سپس، سرویس Hybrid Cache را در برنامه خود اضافه کنید:
var builder = WebApplication.CreateBuilder(args);  

// افزودن سرویس Hybrid Cache
builder.Services.AddHybridCache(options =>
{
options.DefaultEntryOptions = new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromMinutes(30), // زمان انقضا برای کش توزیع‌شده
LocalCacheExpiration = TimeSpan.FromMinutes(5) // زمان انقضا برای کش حافظه داخلی
};
});

// افزودن Redis به عنوان کش توزیع‌شده
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString("RedisConnectionString");
});



مثال عملی: کش کردن اطلاعات محصولات
فرض کنید یک API دارید که اطلاعات محصولات را از یک پایگاه داده بازیابی می‌کند. با استفاده از Hybrid Cache، می‌توانید این اطلاعات را کش کنید تا درخواست‌های بعدی سریع‌تر پاسخ داده شوند.

public class ProductService  
{
private readonly HybridCache _cache;

public ProductService(HybridCache cache)
{
_cache = cache;
}

public async Task<Product> GetProductAsync(int productId, CancellationToken cancellationToken = default)
{
var cacheKey = $"product-{productId}";

return await _cache.GetOrCreateAsync(
cacheKey,
async cancel =>
{
// شبیه‌سازی بازیابی اطلاعات از پایگاه داده
return await FetchProductFromDatabaseAsync(productId, cancel);
},
cancellationToken: cancellationToken
);
}

private async Task<Product> FetchProductFromDatabaseAsync(int productId, CancellationToken cancellationToken)
{
// شبیه‌سازی یک عملیات زمان‌بر
await Task.Delay(1000, cancellationToken);
return new Product { Id = productId, Name = "Sample Product", Price = 99.99 };
}
}
حذف داده‌ها از کش
برای حذف داده‌ها از کش، می‌توانید از متد RemoveAsync استفاده کنید:
public async Task RemoveProductFromCacheAsync(int productId, CancellationToken cancellationToken = default)  
{
var cacheKey = $"product-{productId}";
await _cache.RemoveAsync(cacheKey, cancellationToken);
}



مثال Real-World:

کش کردن اطلاعات کاربران در یک سیستم احراز هویت

در یک سیستم احراز هویت، اطلاعات کاربران مانند نقش‌ها و دسترسی‌ها می‌توانند به طور مکرر مورد استفاده قرار گیرند. با استفاده از Hybrid Cache، می‌توانید این اطلاعات را کش کنید تا درخواست‌های بعدی سریع‌تر پردازش شوند.

public class UserService  
{
private readonly HybridCache _cache;

public UserService(HybridCache cache)
{
_cache = cache;
}

public async Task<UserInfo> GetUserInfoAsync(string userId, CancellationToken cancellationToken = default)
{
var cacheKey = $"user-info-{userId}";

return await _cache.GetOrCreateAsync(
cacheKey,
async cancel =>
{
// بازیابی اطلاعات کاربر از پایگاه داده
return await FetchUserInfoFromDatabaseAsync(userId, cancel);
},
new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromMinutes(60),
LocalCacheExpiration = TimeSpan.FromMinutes(10)
},
cancellationToken
);
}

private async Task<UserInfo> FetchUserInfoFromDatabaseAsync(string userId, CancellationToken cancellationToken)
{
// شبیه‌سازی یک عملیات زمان‌بر
await Task.Delay(500, cancellationToken);
return new UserInfo { UserId = userId, Roles = new[] { "Admin", "Editor" } };
}
}



نتیجه‌گیری
ابزاز Hybrid Cache در .NET 9 یک ابزار قدرتمند برای بهبود عملکرد و سادگی در مدیریت کش است. با ترکیب کش حافظه داخلی و کش توزیع‌شده، این ویژگی به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌های خود را بهینه‌تر و مقیاس‌پذیرتر کنند. با استفاده از مثال‌های ارائه‌شده، می‌توانید به راحتی این ویژگی را در پروژه‌های خود پیاده‌سازی کنید و از مزایای آن بهره‌مند شوید.

برای اطلاعات بیشتر به مستندات رسمی مایکروسافت مراجعه کنید.
👍5🔥3
Forwarded from OfferingOne
📣 موقعیت شغلی Full-Stack Developer

🔺شرح موقعیت شغلی

شرکت آفرینگان به عنوان ارائه دهنده خدمات منابع انسانی، در جستجوی یک فرد بسیار توانمند در حوزه برنامه نویسی جهت کار (دورکاری) در یک شرکت امریکایی پیشرو در زمینه هوش مصنوعی برای توسعه یک جعبه ابزار در زمینه پردازش تصویر است. مهارت  بک اند در زمینه Python یا Net. یا # C و فرانت اند JavaScript و TypeScript ضروری است.
لازم به ذکر است که در این موقعیت شغلی توانایی کد نویسی و دانش الگوریتم مورد نیاز است.

🤝نوع همکاری: تمام وقت، ریموت
📄سابقه شغلی مرتبط: حداقل ۶ سال
💰حقوق: دلاری بسیار خوب، رنج بالا و متناسب با توانمندی‌های فرد

سابقه کار روی پروداکت های پیچیده مزیت محسوب میشود.

🔗 در صورت نیاز به دریافت اطلاعات بیشتر و ارسال رزومه با ادمین در ارتباط باشید.
@OfferingOne

در صورتی که فردی متناسب با این شغل می شناسید لطفا معرفی کنید.

📣 کانال آفرینگان برای اطلاع از فرصت‌های شغلی
t.iss.one/offeringOneJobs

📌همچنین می توانید لینکدین ما را هم دنبال کنید

https://www.linkedin.com/company/offeringone/

#برنامه_نویس #فول_استک #آفرینگان #فرصت_شغلی #استخدام

#Full_stack #Front_end #Back_end #developer
👍1
Forwarded from Learning With M (Masoud DaneshPour)
امروز می‌خوام در مورد Exchange ها در RabbitMQ براتون بگم. Exchange ها مثل پستچی‌های پیام‌رسان عمل می‌کنن و تصمیم می‌گیرن پیام‌ها رو چطوری به صف‌ها (Queue) برسونن. بیاید ببینیم هر کدوم چیکار می‌کنن:

Direct Exchange 🎯
کارش چیه؟
پیام‌ها رو فقط به صف‌هایی می‌فرسته که کلید مسیریابی (Routing Key) دقیقاً همون چیزی باشه که تعیین کردیم.

کی استفاده کنیم؟
وقتی می‌خوایم پیام‌ها رو دقیقاً به یک صف خاص برسونیم. مثلاً پیام‌های "سفارش جدید" فقط به صف "پردازش سفارش" برن.

مثال:
Routing Key: order.created ➡️ Queue: order_queue

Fanout Exchange 📢
کارش چیه؟
پیام‌ها رو به همه صف‌های متصل شده می‌فرسته، بدون توجه به کلید مسیریابی.

کی استفاده کنیم؟
وقتی می‌خوایم یک پیام رو به چندین صف ارسال کنیم. مثلاً ارسال اطلاع‌رسانی به همه گروه های کاربران.

مثال:
پیام: "تخفیف ویژه!" ➡️ Queue: user_group1_queue, user_group2_queue, user_group3_queue

Topic Exchange 🌐
کارش چیه؟
پیام‌ها رو بر اساس الگوهای کلید مسیریابی ارسال می‌کنه. مثلاً می‌تونیم از wildcard (* و #) استفاده کنیم.

کی استفاده کنیم؟
وقتی می‌خوایم پیام‌ها رو بر اساس موضوع‌های مختلف دسته‌بندی کنیم. مثلاً خطاهای سیستم (error.*) یا لاگ‌های عمومی (log.#).

مثال:
Routing Key: error.database ➡️ Queue: error_queue
👍21
Forwarded from Yaser Moradi
سلام به همگی!
لینک پادکست اخیرم تو رادیو بیدار

چرا C# .NET یکی از بهترین گزینه‌ها، هم برای Cross platform development و هم full-stack development هست؟
https://www.youtube.com/watch?v=8pS0yCrVsT4&t=433s

امکانات پروژه اپن سورس bit Boilerplate که کمک میکنه به داشتن یه تجربه عالی برای زدن هر نوعی از اپ با C#, HTML, CSS
https://www.youtube.com/watch?v=8pS0yCrVsT4&t=1408s

نحوه شروع به کار عملی با bit Boilerplate
https://www.youtube.com/watch?v=8pS0yCrVsT4&t=2402s



چند دمو از خروجی bit Boilerplate


سایت SEO-Friendly مبتنی بر Blazor WebAssembly با حجم کمتر از ۲.۵ مگ
https://bitplatform.dev

یه ادمین پنل خفن برای Android, iOS, Windows, macOS, Web
https://adminpanel.bitplatform.dev

کلی کمپوننت باحال و سریع و سبک برای ‌Blazor
https://blazorui.bitplatform.dev

نسخه خیلی اولیه از یه E-Commerece مبتنی بر Blazor WebAssembly، سریع و سبک
https://sales.bitplatform.dev
6
Forwarded from refhub
مهندسان عزیز روزتون مبارک
به مناسبت روز مهندس، یه کد تخفیف 30 درصدی براتون گذاشتیم
اولش با SOFTDAY شروع میشه، اما برای ادامه ش باید معمای زیر رو حل کنید :
یه برنامه‌نویس داره یه تابع رمزنگاری می‌نویسه. این تابع یه رشته می‌گیره و سه مرحله داره:

1- جمع مقدار ASCII همه‌ی کاراکترهای رشته رو حساب می‌کنه.
2- عدد به‌دست‌اومده رو در خودش ضرب می‌کنه (به توان ۲ می‌رسونه).
3- از نتیجه، یه عدد فیبوناچی پیدا می‌کنه که ازش بزرگ‌تر یا مساویشه، بعد اختلافشون رو حساب می‌کنه.

اگه ورودی تابع کلمه‌ی 'Debug' باشه، خروجی عددش چیه؟ این عدد، سه رقم آخر کد تخفیفت می‌شه!

با ❤️ رفهاب
https://RefHub.ir
👍1
امروز می‌خوام یه گنجینه‌ی واقعی رو بهتون معرفی کنم. اگر دنبال یادگیری مهارت‌های جدید تو دنیای تکنولوژی هستید، این ریپوها مال شماست!
مایکروسافت یه عالمه دوره‌ی رایگان و جذاب برای مبتدی‌ها تدارک دیده، اونم تو زمینه‌های مختلف! بیاین یه نگاهی بهشون بندازیم:

هوش مصنوعی:
هوش مصنوعی برای مبتدیان (AI-For-Beginners): صفر تا صد هوش مصنوعی رو یاد بگیر!
https://github.com/microsoft/AI-For-Beginners

هوش مصنوعی مولد برای مبتدیان (generative-ai-for-beginners): دنیای جذاب هوش مصنوعی مولد رو کشف کن.
https://github.com/microsoft/generative-ai-for-beginners

هوش مصنوعی مولد برای مبتدیان با دات نت (generative-ai-for-beginners-dotnet): هوش مصنوعی مولد با دات نت رو تجربه کن.
https://github.com/microsoft/Generative-AI-for-beginners-dotnet

ایجنتهای هوش مصنوعی برای مبتدیان (ai-agents-for-beginners): ساختن ایجنت های هوش مصنوعی رو یاد بگیر.
https://github.com/microsoft/ai-agents-for-beginners

کتاب آشپزی سمانتیک کرنل (SemanticKernelCookBook): با سمانتیک کرنل کار کن.
https://github.com/microsoft/SemanticKernelCookBook

توسعه وب:
توسعه وب برای مبتدیان (Web-Dev-For-Beginners): از صفر تا یه توسعه‌دهنده‌ی وب حرفه‌ای!
https://github.com/microsoft/Web-Dev-For-Beginners

آشنایی با جاوا اسکریپت و نود برای مبتدیان (beginners-intro-javascript-node): جاوا اسکریپت و نود جی اس رو یاد بگیر.
https://github.com/microsoft/beginners-intro-javascript-node

یادگیری ماشین:
یادگیری ماشین برای مبتدیان (ML-For-Beginners): یادگیری ماشین رو ساده و جذاب یاد بگیر.
https://github.com/microsoft/ML-For-Beginners

علم داده:
علم داده برای مبتدیان (Data-Science-For-Beginners): علم داده رو با مثال‌های عملی یاد بگیر.
https://github.com/microsoft/Data-Science-For-Beginners

اینترنت اشیا:
اینترنت اشیا برای مبتدیان (IoT-For-Beginners): وارد دنیای هیجان‌انگیز اینترنت اشیا شو!
https://github.com/microsoft/IoT-For-Beginners

بقیه موارد:
بش برای مبتدیان (bash-for-beginners): کار با خط فرمان لینوکس رو یاد بگیر.
https://github.com/microsoft/bash-for-beginners

پلتفرم پاور برای مبتدیان (Power-Platform-For-Beginners): با پلتفرم پاور برنامه نویسی بدون کد رو تجربه کن.
https://github.com/microsoft/Power-Platform-For-Beginners

سری آموزش راست برای مبتدیان (beginners-series-rust): برنامه نویسی با زبان راست رو یاد بگیر.
https://github.com/microsoft/beginners-series-rust


سری آموزش بلاکچین برای مبتدیان (beginners-series-blockchain): با بلاکچین اشنا بشو.

https://github.com/microsoft/beginners-series-blockchain

این ریپوها پر از مطالب آموزشی، پروژه‌های عملی و تمرین‌های جذابن.

#یادگیری #برنامه_نویسی #هوش_مصنوعی #مایکروسافت #رایگان
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
“آنچه که در جستن آنی، آنی
وانچه که در طلب آنی، آنی”
- مولانا
🔥3😱2
Media is too big
VIEW IN TELEGRAM
ابزار /trae.ai یه IDE رایگان و جایگزین Cursor هست. به‌صورت کاملاً رایگان و بدون محدودیت به Cloud 3.7 دسترسی دارین!

https://www.trae.ai/
4
Big Archive for System Design – 2024 Edition (Completely Free) is now available!

The PDF contains 𝐀𝐋𝐋 of our technical posts with diagrams published in 2024.

What’s included in the PDF?

- REST API Vs. GraphQL
- Linux file system explained
- My recommended materials for cracking your next technical interview
- How Git Commands work
- Top 4 Most Popular Use Cases for UDP
- How Does a Typical Push Notification System Work?
- How can Cache Systems go wrong? 20
- REST API Cheatsheet
- Top 8 Programming Paradigms
- Data Pipelines
- API Vs SDK
- Key Use Cases for Load Balancers
- And many hundreds more
👍3
Coding Interview Patterns: Nail Your Next Coding Interview

Coding interviews are tough, and they're only getting tougher, typically demanding months of preparation. What we all want is a way to master algorithms and data structures without having to spend countless hours sifting through endless, unfocussed resources. Introducing "Coding Interview Patterns," your complete guide to mastering the key patterns needed to ace your next coding interview.

What’s inside?
An insider’s perspective on what interviewers are truly looking for and why.
101 real coding interview problems with detailed solutions.
Intuitive explanations that guide you through each problem as if you were solving it in a live interview.
1000+ diagrams to illustrate key concepts and patterns.

Table of Contents
Chapter 1: Two Pointers
Chapter 2: Hash Maps and Sets
Chapter 3: Linked Lists
Chapter 4: Fast and Slow Pointers
Chapter 5: Sliding Windows
Chapter 6: Binary Search
Chapter 7: Stacks
Chapter 8: Heaps
Chapter 9: Intervals
Chapter 10: Prefix Sums
Chapter 11: Trees
Chapter 12: Tries
Chapter 13: Graphs
Chapter 14: Backtracking
Chapter 15: Dynamic Programming
Chapter 16: Greedy
Chapter 17: Sort and Search
Chapter 18: Bit Manipulation
Chapter 19: Math and Geometry
4