آموزش C# و .Net
1.56K subscribers
432 photos
325 videos
19 files
2.8K links
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk

آیدی ادمین:
@ma_limbs
Download Telegram
🔑 امنیت اطلاعاتت برات مهمه؟

‏با پایتون و کتابخونه `cryptography` یه Encryption ساده یاد بگیر!

```python
from cryptography.fernet import Fernet

key = Fernet.generate_key()
f = Fernet(key)
token = f.encrypt(b"My secret message!")
print(token)
```

‏حالا چجوری decrypt کنیم؟ 🤔

```python
f.decrypt(token)
```

‏به همین سادگی! 🛡️
#پایتون #امنیت #encryption

https://t.me/python7ir
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏Base64Url با Base64 استاندارد چه فرقی داره؟ 🤔

‏توی Base64 استاندارد ممکنه کاراکترهای + و / ببینید. این‌ها توی URL مشکل‌ساز میشن. Base64Url این کاراکترها رو با - و _ جایگزین می‌کنه تا بشه مستقیم توی URL استفاده کرد. ⛓️

‏پس دفعه بعد خواستی یه چیزی رو Base64 کنی و توی URL بذاری، حواست به این نکته باشه! 😉

https://t.me/csharp7
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏الگوریتم: مفهوم، اهمیت و مثال‌های کاربردی

🟢 سوال :

‏کدام یک از موارد زیر یک مثال از الگوریتم است؟

گزینه ۱:
‏طراحی رابط کاربری

گزینه ۲:
‏مرتب‌سازی یک لیست از اعداد

گزینه ۳:
‏مدیریت پایگاه داده

گزینه ۴:
‏طراحی سخت‌افزار



🔵 گزینه صحیح: 2

🟢 توضیح :

‏مرتب‌سازی یک لیست از اعداد یک مثال از الگوریتم است.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
‏در C#، مدیریت محدوده (scope) و عمر (lifetime) متغیرها برای جلوگیری از خطاها حیاتی است. متغیرها فقط در محدوده بلاکی که تعریف شده‌اند (مثلاً داخل یک متد یا حلقه) قابل دسترسی هستند.

‏اشتباه رایج: تلاش برای دسترسی به متغیری خارج از محدوده تعریفش.

‏مثال:
public void ExampleMethod()
{
‏ int x = 10; // x فقط در این متد معتبر است
if (true)
{
‏ int y = 20; // y فقط داخل این شرط معتبر است
‏ Console.WriteLine(x + y); // درست است
}
‏ // Console.WriteLine(y); // خطا: y در اینجا معتبر نیست
}


‏چالش دیگر: عمر متغیرها. متغیرهای محلی (local variables) با پایان اجرای بلاک خود از بین می‌روند. متغیرهای نمونه (instance variables) تا زمانی که شیء مرتبط با آن‌ها در حافظه باشد، باقی می‌مانند.

‏دقت به این جزئیات، کدنویسی تمیزتر و باگ کمتر را تضمین می‌کند. 💡📚

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏یکی از تفاوت‌های کلیدی بین LINQ و کوئری‌نویسی سنتی در C#، خوانایی و مختصر بودن کد است.

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

‏مثال: فیلتر کردن اعداد زوج در یک لیست

‏روش سنتی:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
List<int> evenNumbers = new List<int>();
foreach (int number in numbers)
{
if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}


‏با استفاده از LINQ:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();


‏همانطور که می‌بینید، LINQ کد را کوتاه‌تر و درک آن را آسان‌تر می‌کند. 🚀

https://t.me/csharp7
‏استفاده از ابزارهای profiling پایگاه داده در C# به توسعه‌دهندگان امکان می‌دهد تا عملکرد کوئری‌های اجرا شده توسط برنامه خود را به طور دقیق بررسی کنند. این ابزارها می‌توانند اطلاعات ارزشمندی در مورد زمان اجرای هر بخش از کوئری، تعداد دفعات دسترسی به دیسک، و میزان استفاده از منابع را فراهم کنند.

‏با تحلیل این اطلاعات، می‌توان نقاط ضعف و گلوگاه‌های عملکردی را شناسایی کرد. به عنوان مثال، ممکن است یک کوئری به طور مکرر جداول زیادی را اسکن کند یا از ایندکس‌های نامناسبی استفاده کند. با استفاده از نتایج profiling، می‌توان با اعمال تغییراتی مانند افزودن ایندکس‌های مناسب، بازنویسی کوئری‌ها، یا بهینه‌سازی ساختار پایگاه داده، عملکرد برنامه را به طور قابل توجهی بهبود بخشید.

‏برخی از ابزارهای رایج برای profiling عبارتند از:

SQL Server Profiler (برای پایگاه داده‌های SQL Server)
Entity Framework Profiler (برای برنامه‌هایی که از Entity Framework استفاده می‌کنند)
Dapper Profiler (برای برنامه‌هایی که از Dapper استفاده می‌کنند)
General Database Tools (مانند pgAdmin برای PostgreSQL یا MySQL Workbench برای MySQL که ابزارهای profiling داخلی دارند)

‏این ابزارها معمولاً به شما اجازه می‌دهند تا کوئری‌های کند را شناسایی کرده و جزئیات اجرای آن‌ها را مشاهده کنید. 📊📈🔍

‏به عنوان مثال، در SQL Server Profiler می‌توانید رویدادهایی مانند SQL:BatchStarting و SQL:BatchCompleted را رصد کنید تا زمان اجرای دستورات SQL را بسنجید. همچنین، با فعال کردن نمایش Show All Columns و انتخاب ستون‌هایی مانند Duration، CPU، و Reads، می‌توانید اطلاعات دقیقی از عملکرد کوئری‌ها به دست آورید.

SELECT
c.CustomerID,
c.CompanyName,
COUNT(o.OrderID) AS NumberOfOrders
FROM
Customers AS c
LEFT JOIN
Orders AS o ON c.CustomerID = o.CustomerID
WHERE
c.Country = 'USA'
GROUP BY
c.CustomerID, c.CompanyName
HAVING
COUNT(o.OrderID) > 5;


‏تحلیل خروجی profiling برای کوئری فوق می‌تواند نشان دهد که آیا ایندکس مناسبی بر روی ستون Country در جدول Customers وجود دارد یا خیر، و همچنین نحوه join شدن جداول Customers و Orders چقدر بهینه است. 🚀

https://t.me/csharp7
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏در WinForms، برای اتصال داده به صورت پیشرفته، می‌توان از BindingSource به همراه DataGridView استفاده کرد. این روش امکان مدیریت داده‌ها، مرتب‌سازی، فیلتر کردن و ویرایش را به صورت مستقیم و بدون نیاز به نوشتن کد زیاد فراهم می‌کند.

‏برای مثال، اگر یک لیست از اشیاء دارید، می‌توانید آن را به BindingSource متصل کرده و سپس BindingSource را به DataSource فرم DataGridView اختصاص دهید.

‏// فرض کنید List<MyObject> dataList; از قبل پر شده است.
BindingSource bs = new BindingSource();
bs.DataSource = dataList;

dataGridView1.DataSource = bs;


‏این اتصال دوطرفه است، یعنی تغییرات در DataGridView مستقیماً در dataList منعکس می‌شود و بالعکس. همچنین، با استفاده از قابلیت‌های BindingSource مانند Sort و Filter، می‌توانید به راحتی داده‌ها را مدیریت کنید.

‏برای سناریوهای پیچیده‌تر، مانند اتصال به پایگاه داده، استفاده از TableAdapter و DataSet در کنار BindingSource نیز بسیار رایج است.

https://t.me/csharp7
💡 کامپایلر C# قابلیتی داره به اسم ReadyToRun. با این قابلیت، بخشی از فرایند JIT (تبدیل کد به زبان ماشین) موقع بیلد انجام میشه، نه موقع اجرا. 🚀

‏حالا اگه این رو با trimming (حذف کدهای استفاده نشده) ترکیب کنی، حجم فایل خروجی و زمان startup برنامه خیلی کمتر میشه!

https://t.me/csharp7
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

شامل موضوعات آموزشی زیر:

توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی

با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏C#‎ این قابلیت رو داره که از SIMD intrinsics استفاده کنی. 🚀

‏با استفاده از `Vector128<T>` و `Vector256<T>` میتونی عملیات برداری رو روی داده‌ها انجام بدی. این یعنی پردازش موازی چند مقدار در یک سیکل CPU. 🧮

‏از نسخه AVX10.2 به بعد، C#‎ از دستورالعمل‌های پیشرفته‌تری هم پشتیبانی می‌کنه که باعث میشه محاسبات سنگین مثل پردازش تصویر یا محاسبات علمی خیلی سریع‌تر انجام بشن.

https://t.me/csharp7
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏طراحی الگوریتم: چگونگی تبدیل یک مسأله به الگوریتم

🟢 سوال :

‏الگوریتم (Algorithm) چیست؟

گزینه ۱:
‏یک زبان برنامه‌نویسی

گزینه ۲:
‏یک مجموعه دستورالعمل برای حل یک مسأله

گزینه ۳:
‏یک پایگاه داده

گزینه ۴:
‏یک سیستم عامل



🔵 گزینه صحیح: 2

🟢 توضیح :

‏الگوریتم (Algorithm) یک مجموعه دستورالعمل برای حل یک مسأله است.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏در C#، رابط‌ها (Interfaces) قراردادهایی برای رفتار کلاس‌ها تعریف می‌کنند. یک رابط شامل متدهایی است که کلاس پیاده‌کننده موظف به ارائه بدنه آن‌هاست.

‏برای تعریف یک رابط، از کلمه کلیدی `interface` استفاده می‌شود. به عنوان مثال:

```csharp
interface ILogger
{
void LogMessage(string message);
}
```

‏کلاسی که می‌خواهد این قرارداد را پیاده‌سازی کند، از علامت `:` و نام رابط استفاده می‌کند:

```csharp
class FileLogger : ILogger
{
public void LogMessage(string message)
{
‏ // کد مربوط به ثبت پیام در فایل
Console.WriteLine($"Logging to file: {message}");
}
}
```

‏خاصیت چندرابطی (Multiple Inheritance of Type) در C# به یک کلاس اجازه می‌دهد تا چندین رابط را پیاده‌سازی کند. این امکان، انعطاف‌پذیری بالایی در طراحی نرم‌افزار فراهم می‌آورد.

💡 📄

https://t.me/csharp7
‏متدهای گسترشی استاتیک (Static Extension Methods) در C# به شما اجازه می‌دهند تا متدهایی را به تایپ‌های موجود اضافه کنید بدون اینکه نیاز به تغییر کد منبع آن تایپ داشته باشید.

📌 این متدها باید در یک کلاس استاتیک تعریف شوند و با کلمه کلیدی `this` در پارامتر اول، نوعی که می‌خواهید گسترش دهید را مشخص کنند.

💡 به این ترتیب، می‌توانید یک متد جدید را به عنوان بخشی از API یک کلاس در نظر بگیرید.

https://t.me/csharp7
‏`ref struct`ها در C# برای بهبود کارایی در سناریوهایی با طول عمر کوتاه استفاده می‌شوند. ⏱️ این ساختارها نمی‌توانند:

‏* در heap قرار گیرند 📦
‏* به عنوان نوع آرایه استفاده شوند 🔢
‏* در کلاس‌ها تعریف شوند 🏢

‏به دلیل این محدودیت‌ها، از کپی شدن غیرضروری داده‌ها جلوگیری می‌کنند و برای عملیات حافظه‌محور ایده‌آل هستند.

https://t.me/csharp7
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

شامل موضوعات آموزشی زیر:

توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی

با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏تفاوت Local functions و Lambda expressions در C# 🤔

‏Local functions توابعی هستند که داخل یک متد تعریف میشن. مثل متدهای معمولی، اسم دارن و میشه بارها صداشون زد. اما Lambda expressions توابع بی‌نامی هستن که معمولاً برای کارهای کوتاه و سریع استفاده میشن.

‏Local functions خوانایی کد رو بالا می‌برن و برای منطق پیچیده‌تر مناسب‌ترن. Lambda expressions برای LINQ و event handlers خیلی کاربردی‌ان.

انتخاب بین این دو بستگی به نیاز و خوانایی کد داره.

https://t.me/csharp7
‏صف‌ها (Queues) در C# ابزاری قدرتمند برای مدیریت ترتیب ورود و خروج داده‌ها هستند. این ساختار داده، که از اصل FIFO (First-In, First-Out) پیروی می‌کند، در سناریوهای مختلفی کاربرد دارد.

‏مدیریت وظایف (Task Management):
‏در سیستم‌هایی که وظایف باید به ترتیب دریافت و پردازش شوند، صف‌ها نقش کلیدی ایفا می‌کنند. به عنوان مثال، در یک سیستم صف چاپ، هر سند چاپی که ارسال می‌شود، به صف اضافه شده و پس از اتمام وظیفه قبلی، چاپ می‌گردد.

using System;
using System.Collections.Generic;

public class TaskQueueExample
{
public static void Main(string[] args)
{
Queue<string> taskQueue = new Queue<string>();

‏ taskQueue.Enqueue("چاپ سند A");
‏ taskQueue.Enqueue("پردازش گزارش B");
‏ taskQueue.Enqueue("ارسال ایمیل C");

‏ Console.WriteLine("شروع پردازش وظایف:");
while (taskQueue.Count > 0)
{
string currentTask = taskQueue.Dequeue();
‏ Console.WriteLine($"- در حال انجام: {currentTask}");
‏ // شبیه‌سازی انجام وظیفه
System.Threading.Thread.Sleep(500);
}
‏ Console.WriteLine("تمام وظایف انجام شد.");
}
}


‏پردازش درخواست‌ها (Request Processing):
‏در برنامه‌های وب یا سرویس‌های شبکه‌ای، درخواست‌های ورودی ممکن است با سرعتی بیش از توانایی پردازش سرور دریافت شوند. استفاده از صف برای نگهداری موقت این درخواست‌ها و پردازش آن‌ها به صورت منظم، از overload شدن سیستم جلوگیری می‌کند.

‏شبیه‌سازی (Simulation):
‏در مدل‌سازی پدیده‌هایی مانند صف مشتریان در بانک، صف خودروها در گیشه پرداخت، یا جریان داده در شبکه‌ها، صف‌ها برای نگهداری عناصر در انتظار پردازش یا عبور، بسیار مفید هستند.

using System;
using System.Collections.Generic;

public class CustomerQueueSimulation
{
public static void Main(string[] args)
{
Queue<string> customerLine = new Queue<string>();

‏ customerLine.Enqueue("مشتری 1");
‏ customerLine.Enqueue("مشتری 2");
‏ customerLine.Enqueue("مشتری 3");

‏ Console.WriteLine($"تعداد مشتریان در صف: {customerLine.Count}");

string firstCustomer = customerLine.Dequeue();
‏ Console.WriteLine($"اولین مشتری وارد شده: {firstCustomer}");
‏ Console.WriteLine($"تعداد مشتریان باقی‌مانده: {customerLine.Count}");

‏ customerLine.Enqueue("مشتری 4");
‏ Console.WriteLine($"مشتری جدید اضافه شد. تعداد مشتریان: {customerLine.Count}");
}
}

‏استفاده از Queue<T> در C#، امکان مدیریت کارآمد داده‌ها را در سناریوهای مبتنی بر صف فراهم می‌آورد. 🚀📋

https://t.me/csharp7