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


🆔 @dotnetcode
Download Telegram
Forwarded from thisisnabi.dev [Farsi] (Nabi Karampour)
موضوع، موضوع جذابی هست.

بزودی میت (هاش) رو ست میکنم. 😍
@thisisnabi_dev
5👏1
شرکت TwoX.ir در حال جذب Senior Backend Developer با شرایط زیر هست:
حوزه کاری شرکت: ارز دیجیتال
محل شرکت: محدوده غرب تهران (پیامبر شرقی)
نحوه همکاری: تمام وقت و حضوری (امکان یک روز دورکاری وجود داره)


• Over 3 years of in-depth development experience with C#/.NET
• Work experience with ASP.NET (WebApi, MVC), ASP.NET Core
• Deep understanding of OOP
• Good knowledge of enterprise applications Design patterns
• Experience with Elastic Search
• Working experience with databases in both RDBMSs (MSSQL) and NoSQL
• Experience in developing multi-threaded applications with an understanding of concepts such as threads, concurrency and locking
• Experience in Blockchain development is a big plus!
• Working with DevOps and CI/CD tools is a plus!


اگر خودتون تمایل به بررسی این فرصت شغلی رو دارید، خوشحال میشم رزومه ها رو از طریق آدرس ایمیل زیر دریافت کنم [email protected]
شرکت TwoX.ir در حال جذب Technical Leafd با شرایط زیر هست:
حوزه کاری شرکت: ارز دیجیتال
محل شرکت: محدوده غرب تهران (پیامبر شرقی)
نحوه همکاری: تمام وقت و حضوری (امکان یک روز دورکاری وجود داره)

Job Responsibilities:
• Leading a cross-functional technology team including backend, frontend and QA engineers.
• Owning software delivery of TwoX products
• Owning performance management cycle for team members
• Taking responsibility for incoming tasks based on the comprehensiveness of the tasks and business needs
• Making effective communication with the product, business and infrastructure stakeholders
• Committed to software quality and improving software quality attributes
• Leading to attaining the best software design and architecture emergent in the team
• Making sure their team is aligned with the technology chapter vision
• Having a high capability to maintain a feedback loop in the team
• Contributing to the hiring procedure
• Being responsible for the development of people in their team
• Holding 1:1 session with their team members
• In the case of technical dependency, Tech Lead needs to look for a long-term solution in order to unblock the team.
• Contributing to the business strategy, roadmap and staff planning for the team

Requirements
• Deep knowledge and experience in .Net Core
• Experience in Microservices Architecture and Distributed System Technologies
• Experience in leading technical teams
• Business Orientation
• Familiarity with Kubernetes
• Having design thinking, problem solving and critical thinking skills
• Conflict management skills
• Agile Mindset

اگر تمایل به بررسی این فرصت شغلی رو دارید، خوشحال میشم رزومه تون رو از طریق آدرس ایمیل زیر دریافت کنم [email protected]
👍1
1
Forwarded from Software Philosophy
انتقال Git Stashes بین دستگاه‌ها

ابزار 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

______
👍4🔥31
Forwarded from CodeLodge
دومین دورهمی CodeLodge

همین سه شنبه 1 آبان پذیرای شما عزیزان در دومین دورهمی حضوری مون خواهیم بود.
میهمان این هفته ی ما #احمد_اقبال عزیز خواهد بود، کوفاندر Finca.ir و با هم در باره مسیرش از توسعه دهنده ارشد نرم افزار به توسعه ی بیزنس خودش و مسیر کارآفرینیش حرف خواهیم زد.
برای خیلی از ما، کارآفرینی ممکنه یک آپشن، هدف یا آرزو باشه، تجربه ی موفق احمد میتونه برای ما خیلی ارزشمند باشه، به خصوص که بعد از صحبت هاش، فرصت پرسش و پاسخ رو هم با احمد عزیز خواهیم داشت.

نکته : در زمان ثبت نام یک پکیج پذیرایی انتخاب میکنید، که هزینه ای هم که در ایوند پرداخت میکنید، مستقیم به کافه بابت خدمات و سفارش های انتخابی شما پرداخت خواهد شد.

نکته ی سوم : احتمالا از چندتا ایونت جلوتر، ما ثبت نام عادی نخواهیم داشت و فقط با معرفی نامه شرکت کننده های قبلی امکان ثبت نام فراهم خواهد بود. پس این یکی دو ایونت اول رو جدی بگیرید برای باقی ایونت ها :)

تاریخ : 1 آبان ماه ساعت 19 تا 21
مکان : سال کافه
لینک ثبت نام : https://evand.com/events/code-lobby-2
🔥2👍1
Forwarded from Software Philosophy
چگونه با Scrutor و Autofac تزریق وابستگی را در .NET به سطح بعدی ببریم؟

در توسعه پروژه‌های بزرگ .NET، مدیریت تزریق وابستگی (Dependency Injection) به یکی از مهم‌ترین بخش‌های معماری نرم‌افزار تبدیل می‌شود. هنگامی که تعداد سرویس‌ها و ریپازیتوری‌ها افزایش پیدا می‌کند، ثبت دستی هر یک از آن‌ها می‌تواند نه تنها زمان‌بر، بلکه منجر به بروز اشتباهات و پیچیدگی‌های غیرضروری شود. اینجاست که ابزارهای قدرتمندی مثل Scrutor و Autofac به کمک ما می‌آیند.

ابزار Scrutor یک کتابخانه سبک برای DI پیش‌فرض .NET است که امکان اسکن خودکار اسمبلی‌ها و ثبت سرویس‌ها را با چند خط کد فراهم می‌کند. شما می‌توانید کلاس‌ها و اینترفیس‌ها را به سادگی بر اساس namespace یا الگوهای دیگر شناسایی و به عنوان وابستگی‌ها در پروژه تزریق کنید. این روش نه تنها کد شما را تمیزتر و منظم‌تر می‌کند، بلکه از بروز مشکلات ناشی از ثبت دستی جلوگیری می‌کند.

از طرف دیگر، Autofac یک کانتینر IoC بسیار قدرتمند است که کنترل و انعطاف بیشتری در تزریق وابستگی‌ها به شما می‌دهد. با استفاده از Autofac، شما می‌توانید وابستگی‌ها را به صورت ماژولار مدیریت کنید، لایف‌تایم دقیق هر سرویس را تنظیم کرده و حتی از امکانات پیشرفته‌ای مانند AOP (Aspect-Oriented Programming) بهره‌مند شوید. با این ابزارها، شما نه تنها کارهای تکراری را حذف می‌کنید، بلکه معماری پروژه خود را حرفه‌ای‌تر و مقیاس‌پذیرتر می‌سازید.

🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#هوتن_همتی (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

______
🔥3👏21🤩1
Forwarded from Software Philosophy
شمشیر دو لبه IEnumerable و yield return در C# : راهکارهایی برای بهینه‌سازی و جلوگیری از افت عملکرد

در زبان C#، وقتی می‌خواهیم با مجموعه‌ای از داده‌ها یا توالی‌ها کار کنیم، معمولاً از ساختارهای داده‌ای مثل لیست‌ها یا آرایه‌ها استفاده می‌کنیم. اما گاهی نیاز داریم داده‌ها را به صورت تنبل (Lazy) پردازش کنیم، یعنی فقط زمانی داده‌ها تولید شوند که واقعاً به آن‌ها نیاز داریم. اینجاست که IEnumerable و yield return وارد میدان می‌شوند و می‌توانند کار ما را بسیار ساده‌تر و بهینه‌تر کنند.

ابزار IEnumerable این امکان را به ما می‌دهد که به طور مؤثر بر روی مجموعه‌ای از داده‌ها پیمایش کنیم، بدون اینکه نیاز باشد تمام داده‌ها را یکجا در حافظه بارگذاری کنیم. از طرف دیگر، yield return به ما اجازه می‌دهد که یک توالی از داده‌ها را مرحله به مرحله و در طول زمان تولید کنیم، به جای اینکه همه‌چیز یکجا آماده شود.

اما مشکل از آنجا شروع می‌شود که استفاده نادرست از این قابلیت‌ها می‌تواند منجر به کاهش کارایی برنامه شود. مثلاً فرض کنید در حال استفاده از yield return هستید و هر بار که از داده‌های تولید شده استفاده می‌کنید، محاسبات سنگینی برای تولید آن داده‌ها انجام می‌شود. اگر این محاسبات هر بار تکرار شوند، زمان اجرای برنامه افزایش می‌یابد و منابع سیستم بی‌مورد مصرف می‌شوند. یا در مواقعی که منابعی مثل فایل‌ها یا دیتابیس را در دسترس داریم، استفاده نادرست از IEnumerable و اجرای به تعویق افتاده (Deferred Execution) ممکن است باعث خطاهایی در مدیریت منابع شود.

در این پست، ما دقیقاً به این مشکلات می‌پردازیم و نشان می‌دهیم که چطور می‌توانیم با آگاهی و استفاده صحیح از IEnumerable و yield return هم از مزایای آنها بهره‌مند شویم و هم از بروز مشکلات و افت عملکرد جلوگیری کنیم. همچنین چند مثال عملی از جمله کار با دیتابیس، فایل‌ها، و لیست‌های داده ارائه می‌دهیم که به شما کمک می‌کند این ابزارها را به درستی به کار بگیرید.

🔗 نسخه کامل مقاله را می‌توانید اینجا مطالعه کنید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#هوتن_همتی (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

_______
👍2
یه تشکر ویژه از مسعود عزیز، Co-Founder پلتفرم Refhub بابت ارسال کتاب فوق‌العاده "Design Driven Domain Learning." کتاب خیلی خوبی است و مفاهیم DDD را خیلی روان و ساده توضیح می‌دهد.

خوشحالم که Refhub همچین پلتفرمی را ساخته که می‌توانیم هم کتاب‌ها را دانلود کنیم و هم خلاصه‌شان را بگیریم.

بزن بریم برای شروع یه کتاب خوب و تجربه یه چیز جدید! اگر دنبال منابع خوب هستید، حتماً به Refhub سر بزنید و با کد تخفیف "welcome" از تخفیف هم بهره‌مند شوید.

کد تخفیف: welcome

https://refhub.ir/fa/
2🤯1
Forwarded from Software Philosophy
ورک شاپ TDD OpenAI with Semantic Kernel and skUnit

برنامه‌نویسی چت‌بات‌های هوش‌مصنوعی بر پایه LLM در دات‌نت هیچ وقت انقدر شیرین و لذت‌بخش نبوده!
در این ورک‌شاپ مهران داودی یک چت‌بات رو از صفر می‌سازه و نشون می‌ده چطور می‌شه برای این copilot ها تست‌های اتوماتیک نوشت که بتونه از طریق خود LLM تست‌های معنایی انجام بده (Semantic Assert).

این ورک‌شاپ قبلا به صورت لایو در لینکدین برگزار شده بود و الان ویدئوش در یوتیوب آپلود شده.

https://www.youtube.com/watch?v=JVyLLD5bgoE&t=9s
👍2
Forwarded from Software Philosophy
برسی متدهای جدید LINQ در دات نت ۹

دات‌نت ۹، که قرار است در نوامبر ۲۰۲۴ منتشر شود، پیش‌نمایش جدیدی ارائه کرده است که چندین متد 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

_______
👍4
Forwarded from tech-afternoon (Amin Mesbahi)
📽 ویدیو اول از سری آموزشی NET Aspire.

سلام
ویدیو اول از سری آموزشی NET Aspire. که مقدمه و معرفی است روی یوتیوب قرار گرفت.
احتمالا این سری ۳ قسمت داره که قسمت اول، مقدمه، معرفی امکانات و کاربرد و قابلیت‌های Aspire است و ویدیو دوم، گام‌به‌گام به پروژه جدید و پروژه موجود اضافه خواهیم کرد. و ویدیو سوم هم نوشتن component و integration جدید رو خواهیم دید.

📽 لینک یوتیوب

امیدوارم زودتر ویدیو دوم رو آماده و منتشر کنم 🏃‍♂️
♻️🌱 امیدوارم مفید باشه و اگر دوست داشتید به دوستانتون هم معرفی کنید 😊
4👍1
سلام به همه‌ی توسعه‌دهندگان پرانرژی و خلاق! 🌟

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

ما با افتخار دوره‌ی "شروع به کار: افزایش بهره‌وری توسعه‌دهندگان با هوش مصنوعی" را توسط آکادمی Dometrain معرفی می‌کنیم. در این دوره‌ی هیجان‌انگیز، شما یاد می‌گیرید که چگونه با استفاده از GitHub Copilot**، دستیار برنامه‌نویسی هوشمند، بهره‌وری خود را در **Visual Studio به اوج برسانید. 🚀

چرا باید این دوره ببینید؟

- 🔥 شروعی قدرتمند با Copilot: از اولین قدم‌ها تا حرفه‌ای شدن در استفاده از این ابزار شگفت‌انگیز.
- 🎯 استاد مهندسی Prompts شوید: یاد بگیرید چگونه با دستورات دقیق، بهترین نتایج را از هوش مصنوعی بگیرید.
- 🛠 مدیریت استثناها و خطاها: کدهای خود را بدون نگرانی از خطاها بنویسید و به سرعت آن‌ها را برطرف کنید.
- 💡 بازسازی و بهینه‌سازی کدها: کدهای خود را تمیزتر، کارآمدتر و قابل فهم‌تر کنید.

این دوره برای چه کسانی است؟

برای همه‌ی توسعه‌دهندگانی که می‌خواهند با استفاده از تکنولوژی‌های پیشرفته، سرعت و کیفیت کار خود را افزایش دهند و در دنیای پررقابت امروز، یک قدم جلوتر باشند. 😉
Getting Started: Microservices Architecture

Get started with Microservices Architecture with AWS Solution Architect James Eastham

Embark on a journey with 'Getting Started with Microservices Architecture' meticulously crafted by James Eastham, a Solution Architect at AWS. This course is your gateway to mastering the intricacies of microservices architecture, a pivotal skill in today's tech landscape. James, with his extensive real-world experience, delves deep into the fundamentals of microservices, ensuring a solid foundation for learners of all levels. This course is designed not only to impart theoretical knowledge but also to equip you with practical skills, essential for navigating the complexities of modern software development. Whether you're a budding developer, an aspiring architect, or a seasoned professional, this course offers valuable insights into the modular world of microservices. By the end of this course, you'll have a comprehensive understanding of how microservices operate, how they enhance scalability and flexibility, and why they're a preferred choice for contemporary applications. Join James Eastham in this enlightening journey, and unlock the door to a new realm of architectural possibilities.

https://dometrain.com/course/getting-started-microservices-architecture/
👍21
Dive deeper into Microservices Architecture with AWS Solution Architect James Eastham

Microservices Architecture is one of the most popular software architectures. It is the de facto choice for any big company, and knowing how to create a system using it is crucial for any software developer who wants to work at a big company. However, it is a very complex topic with many nuances, edge cases, and caveats. In this course, AWS Solution Architect James Eastham will use the knowledge he gained building microservices for Amazon Web Services to teach you how to create an entire microservices architecture system. This course is both theory and code-heavy, with many diagrams and detailed explanations for every decision made. Join James on this journey and master Microservices Architecture today.

https://dometrain.com/course/deep-dive-microservices-architecture/