Forwarded from اِسکیلی Skilly
📹 👨🏫 فلسفه استفاده از دیزاین پترن ها و روش هایی مانند لایه بندی پروژه
در این ویدئو فلسفه استفاده از دیزاین پترن ها و روش هایی مانند لایه بندی پروژه، و لزوم یا عدم لزوم بکار بردن هر یک از این روش ها را بررسی می کنیم.
لینک ویدئو در اینستاگرام
#دیزاین_پترن
#لایه_بندی
#پروژه
#نرم_افزار
#برنامه_نویس
#برنامه_نویسی
#مدیریت
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
در این ویدئو فلسفه استفاده از دیزاین پترن ها و روش هایی مانند لایه بندی پروژه، و لزوم یا عدم لزوم بکار بردن هر یک از این روش ها را بررسی می کنیم.
لینک ویدئو در اینستاگرام
#دیزاین_پترن
#لایه_بندی
#پروژه
#نرم_افزار
#برنامه_نویس
#برنامه_نویسی
#مدیریت
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ افزایش Performance با شرط گذاری روی Include ها در EF Core
میشه گفت مهم ترین و رایج ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروری هست؛ از واکشی فیلد های اضافی و غیر لازم گرفته تا استفاده بی رویه از Include به هنگام بارگزاری روابط و...
در این مقاله روش های مختلف شرط گزاری روی Include ها و بهینه سازی اونها رو بررسی میکنیم. همچنین روش های مختلف رو از نظر سرعت و میزانی memory allocation (تخصیص حافظه) مقایسه میکنیم
🔰لینک مقاله
https://vrgl.ir/JFkK4
______________
@DotNetZoom
میشه گفت مهم ترین و رایج ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروری هست؛ از واکشی فیلد های اضافی و غیر لازم گرفته تا استفاده بی رویه از Include به هنگام بارگزاری روابط و...
در این مقاله روش های مختلف شرط گزاری روی Include ها و بهینه سازی اونها رو بررسی میکنیم. همچنین روش های مختلف رو از نظر سرعت و میزانی memory allocation (تخصیص حافظه) مقایسه میکنیم
🔰لینک مقاله
https://vrgl.ir/JFkK4
______________
@DotNetZoom
ویرگول
شرط گذاری روی Include ها در EF Core
متداول ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروریه؛ اینو به تجربه توی اکثر پروژه هایی که بررسی کردم دیدم
Forwarded from کدهک
استریم کردن فایل و نمایش درصد پیشرفت در gRPC
در این ویدیو یک فایل را به روش Streaming از کلاینت به سرور آپلود می کنیم و میزان پیشرفت آپلود را در هر مرحله بدست می آوریم.
https://codehaks.com/go/nbx
در این ویدیو یک فایل را به روش Streaming از کلاینت به سرور آپلود می کنیم و میزان پیشرفت آپلود را در هر مرحله بدست می آوریم.
https://codehaks.com/go/nbx
Forwarded from اِسکیلی Skilly
🔈📚📹 کارآموزی برای یادگیری برنامه نویسی، و راهکارهای معادل
تازه کارهایی که فکر می کنند اگر برای یادگیری و افزایش مهارت شغلی بروند کارآموزی بهتره، حتما این ویدئو رو ببینند.
#کارآموزی
#برنامه_نویس
#برنامه_نویسی
#یادگیری
#آموزش
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
تازه کارهایی که فکر می کنند اگر برای یادگیری و افزایش مهارت شغلی بروند کارآموزی بهتره، حتما این ویدئو رو ببینند.
#کارآموزی
#برنامه_نویس
#برنامه_نویسی
#یادگیری
#آموزش
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
آشنایی با Marten
با Marten به راحتی دیتابیس های اسنادی ایجاد کنید و در ASP NET Core به کار بگیرید. این کتابخانه از قابلیت های PostgreSQL در کار با JSON استفاده می کند و می تواند جایگزین خوبی برای MongoDb باشید.
https://youtu.be/srp58FtMyL8
با Marten به راحتی دیتابیس های اسنادی ایجاد کنید و در ASP NET Core به کار بگیرید. این کتابخانه از قابلیت های PostgreSQL در کار با JSON استفاده می کند و می تواند جایگزین خوبی برای MongoDb باشید.
https://youtu.be/srp58FtMyL8
از کدام تم ویژوال استودیو استفاده می کنید؟
Anonymous Poll
78%
Dark
13%
Light
7%
Blue
2%
Blue(Extera Contrast)
Forwarded from DotNetZoom (Ali Abdolmaleki)
✅معرفی کتابخانه MongoDbGenericRepository
قبلا کتابخونه MongoFramework رو معرفی کردیم که یه رابط کاربری شبیه Entity Framework رو برای کار با MongoDb در اختیارمون میذاشت
اون کتابخونه ضمن مزایا و راحتیش، یه سری معایب هم داره چرا که با دید EF طراحی شده و برای استفاده های پیشرفته تر و کاملتر از MongoDb دستمون رو بسته نگه میداره
کتابخانه MongoDbGenericRepository یک wrapper روی درایور سی شارپ MongoDb هست و سعی کرده یه پیاده سازی از Repository ارائه بده.
این کتابخونه نسبت به قبلی، توی سفارشی سازی و استفاده بیشتر و پیشرفته تر از امکانات mongo دستمون رو باز تر میگذاره که طبیعتا نیازمند این هست که دانش بیشتر هم از مونگو داشته باشین
🔰نکته:
🔸این کتابخونه برای کار های متوسط انتخاب خوبیه (مثلا برای کسانی که تا حدودی mongo بلدن و میخوان راحت تر ازش استفاده کنن)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ خیلی پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/alexandre-spieser/mongodb-generic-repository
__________________
@DotNetZoom
قبلا کتابخونه MongoFramework رو معرفی کردیم که یه رابط کاربری شبیه Entity Framework رو برای کار با MongoDb در اختیارمون میذاشت
اون کتابخونه ضمن مزایا و راحتیش، یه سری معایب هم داره چرا که با دید EF طراحی شده و برای استفاده های پیشرفته تر و کاملتر از MongoDb دستمون رو بسته نگه میداره
کتابخانه MongoDbGenericRepository یک wrapper روی درایور سی شارپ MongoDb هست و سعی کرده یه پیاده سازی از Repository ارائه بده.
این کتابخونه نسبت به قبلی، توی سفارشی سازی و استفاده بیشتر و پیشرفته تر از امکانات mongo دستمون رو باز تر میگذاره که طبیعتا نیازمند این هست که دانش بیشتر هم از مونگو داشته باشین
🔰نکته:
🔸این کتابخونه برای کار های متوسط انتخاب خوبیه (مثلا برای کسانی که تا حدودی mongo بلدن و میخوان راحت تر ازش استفاده کنن)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ خیلی پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/alexandre-spieser/mongodb-generic-repository
__________________
@DotNetZoom
GitHub
GitHub - TurnerSoftware/MongoFramework: An "Entity Framework"-like interface for MongoDB
An "Entity Framework"-like interface for MongoDB. Contribute to TurnerSoftware/MongoFramework development by creating an account on GitHub.
Forwarded from DotNetZoom (Ali Abdolmaleki)
❇️ نواقص درایور سی شارپ MongoDb
درایور سی شارپ MongoDb یه سری نواقص داره و هنوز به بلوغ کافی نرسیده، مخصوصا توی parser دستورات Linq اش به کوئری های mongo خیلی جای کار داره
پس اگه از MongoDb تو پروژه های خودتون استفاده میکنین یا میخواین بکنین حواستون باشه
تو این ریپازیتوری چند تا باگ خیلی ساده و بدیهی ازش رو مثال زدم
https://github.com/mjebrahimi/MongoDb.Bugs
🔰به عنوان مثال:
1️⃣ شما نمیتونین روی کالشن ها از شرط Contains() == false استفاده کنین
2️⃣ شما نمیتونین از شرط ("text")Contains روی یه فیلد متنی درون یه Embedded Document استفاده کنین
3️⃣ شما نمیتونین از دستور ()ToList روی Embedded Documents ها استفاده کنین
4️⃣ شما نمیتونین از متد ProjectTo کتابخانه AutoMapper برای مپ کردن Embedded Document ها استفاده کنین
🔰نکته:
🔸اینها هیچکدوم محدودیت های خود MongoDb نیستند بلکه نواقص کتابخانه درایور سی شارپ اون هست. درواقع Parser ایی که قراره Expression Tree حاصل از دستورات Linq رو به کوئری های mongo ترجمه کنه ضعف داره
🔹این باگ ها رو قبلا گزارش کردم و همگی تائید شدند و قرار هست در آینده برطرفش کنن ولی فعلا زمانش مشخص نیس. طبق صحبت هایی که داشتیم ظاهرا میخوان درایورش رو بازنویسی کنن و توی اون نسخه تمامی این مشکلات برطرف خواهد شد
🔸جهت رفع بعضی از این مشکل ها مادامی که این باگ ها برطرف بشه میتونین از کوئری نویسی دستی به جای linq استفاده کنین
🔹خود mongodb به لحاظ کوئری نویسی بسیار قدرتمند هست و خیلی کار ها رو میشه باهاش کرد که با linq اصلا امکان پذیر نیست (در واقع اصلا متد معادلش توی linq وجود نداره) پس پیشنهاد میکنم برای کوئری های پیچیده حتما به صورت دستی کوئری بنویسین؛ اینطوری میتونین کوئری های های بهینه تر و قدرتمند تری رو ایجاد کنین
____________________
@DotNetZoom
درایور سی شارپ MongoDb یه سری نواقص داره و هنوز به بلوغ کافی نرسیده، مخصوصا توی parser دستورات Linq اش به کوئری های mongo خیلی جای کار داره
پس اگه از MongoDb تو پروژه های خودتون استفاده میکنین یا میخواین بکنین حواستون باشه
تو این ریپازیتوری چند تا باگ خیلی ساده و بدیهی ازش رو مثال زدم
https://github.com/mjebrahimi/MongoDb.Bugs
🔰به عنوان مثال:
1️⃣ شما نمیتونین روی کالشن ها از شرط Contains() == false استفاده کنین
2️⃣ شما نمیتونین از شرط ("text")Contains روی یه فیلد متنی درون یه Embedded Document استفاده کنین
3️⃣ شما نمیتونین از دستور ()ToList روی Embedded Documents ها استفاده کنین
4️⃣ شما نمیتونین از متد ProjectTo کتابخانه AutoMapper برای مپ کردن Embedded Document ها استفاده کنین
🔰نکته:
🔸اینها هیچکدوم محدودیت های خود MongoDb نیستند بلکه نواقص کتابخانه درایور سی شارپ اون هست. درواقع Parser ایی که قراره Expression Tree حاصل از دستورات Linq رو به کوئری های mongo ترجمه کنه ضعف داره
🔹این باگ ها رو قبلا گزارش کردم و همگی تائید شدند و قرار هست در آینده برطرفش کنن ولی فعلا زمانش مشخص نیس. طبق صحبت هایی که داشتیم ظاهرا میخوان درایورش رو بازنویسی کنن و توی اون نسخه تمامی این مشکلات برطرف خواهد شد
🔸جهت رفع بعضی از این مشکل ها مادامی که این باگ ها برطرف بشه میتونین از کوئری نویسی دستی به جای linq استفاده کنین
🔹خود mongodb به لحاظ کوئری نویسی بسیار قدرتمند هست و خیلی کار ها رو میشه باهاش کرد که با linq اصلا امکان پذیر نیست (در واقع اصلا متد معادلش توی linq وجود نداره) پس پیشنهاد میکنم برای کوئری های پیچیده حتما به صورت دستی کوئری بنویسین؛ اینطوری میتونین کوئری های های بهینه تر و قدرتمند تری رو ایجاد کنین
____________________
@DotNetZoom
GitHub
GitHub - mjebrahimi/MongoDb.Bugs: This repo reproduce some bugs of MongoDB C# Driver.
This repo reproduce some bugs of MongoDB C# Driver. - GitHub - mjebrahimi/MongoDb.Bugs: This repo reproduce some bugs of MongoDB C# Driver.
کتابخانه MediatR پیاده سازی پترن Mediator رو در یک پروژه ASP NET Core ساده میکنه و امکان تمیز کردن ساختار پروژه رو از طریق مکانیزم Request/Response فراهم میکنه.
یکی از کاربردهای MediatR امکان پیاده سازی CQRS در یک پروسس است که در این ویدیو به بررسی آن میپردازیم.
https://youtu.be/i0g7ScTasUw
یکی از کاربردهای MediatR امکان پیاده سازی CQRS در یک پروسس است که در این ویدیو به بررسی آن میپردازیم.
https://youtu.be/i0g7ScTasUw
آموزش DDD
در این دوره کتابخانه ی MediatR از مقدماتی تا پیشرفته آموزش داده میشود . درباره نحوه پیاده کردن Value Object و Entity و Domain Events و Aggregates ها صحبت می کنیم در ادامه به موضوع اعتبار سنجی، گزارش خطا، ذخیره سازی اطلاعات در دیتابیس های اسنادی و مفاهیمی چون Domain Events و Event Sourcing می پردازیم.
کد تخفیف 25 درصد : ddd
https://codehaks.com/go/ddd
در این دوره کتابخانه ی MediatR از مقدماتی تا پیشرفته آموزش داده میشود . درباره نحوه پیاده کردن Value Object و Entity و Domain Events و Aggregates ها صحبت می کنیم در ادامه به موضوع اعتبار سنجی، گزارش خطا، ذخیره سازی اطلاعات در دیتابیس های اسنادی و مفاهیمی چون Domain Events و Event Sourcing می پردازیم.
کد تخفیف 25 درصد : ddd
https://codehaks.com/go/ddd
نتایج دور 20 بنچمارک Techempower اعلام شد
در حالی ترکیبی Composite نمره فریم ورک ASP NET Core برابر 6,462 شد و با 60 درصد در جایگاه هشتم قرار گرفت.
نمره ترکیبی یا Composite Score وزن کلی است که از مجموع همه تست ها بدست می آید و برای مقایسه کلی پرفورمنس فریم ورکهای وب استفاده میشود.
https://www.techempower.com/benchmarks/
در حالی ترکیبی Composite نمره فریم ورک ASP NET Core برابر 6,462 شد و با 60 درصد در جایگاه هشتم قرار گرفت.
نمره ترکیبی یا Composite Score وزن کلی است که از مجموع همه تست ها بدست می آید و برای مقایسه کلی پرفورمنس فریم ورکهای وب استفاده میشود.
https://www.techempower.com/benchmarks/
در تست Fortunes یکی از مهترین بنچمارکهای Techempower است ASP NET Core جایگاه دوازدهم را بدست آورده است. جایگاه های بالاتر بیشتر در اختیار فریم ورکهای مبتنی بر ++C و Rust هستند.
بهترین نتایج ASP NET Core روی دیتابیس PostgreSql و با کمک ADO بدست آمده است. پرفورمنس EF Core و Dapper در ردیف های پایینتر است.
در این تست یک جدول دیتابیس شامل تعداد نامشخصی ردیف بارگزاری میشود و نتیجه در یک صفحه HTML نمایش داده میشود و زمان آن مقایسه میشود. نوع ORM و Database در این تست اهمیت زیادی دارد.
بهترین نتایج ASP NET Core روی دیتابیس PostgreSql و با کمک ADO بدست آمده است. پرفورمنس EF Core و Dapper در ردیف های پایینتر است.
در این تست یک جدول دیتابیس شامل تعداد نامشخصی ردیف بارگزاری میشود و نتیجه در یک صفحه HTML نمایش داده میشود و زمان آن مقایسه میشود. نوع ORM و Database در این تست اهمیت زیادی دارد.
پرفورمنس ASP NET Core در تست Fortunes طی سه دور آخر Techempower نشان میدهد که این فریم ورک فاصله اش را با ردیف اول حدود 20 درصد کاهش داده است و پیشرفت قابل توجهی در این زمینه داشته است.
فریم ورک ASP NET Core از میزان 300 هزار rps در دور 18م به 400 هزار rps در دور 20م رسیده است.
با وجود این میزان پیشرفت سقوط دو پله ای در رتبه بندی نشان از رقابت نزدیک در ردیف های بالای جدول دارد. در دور 18م فقط 4 فریم ورک میزان rps بالای 400 هزار داشته اند در حالی که در دور 20م این تعداد به 12 افزایش پیدا کرده است.
فریم ورک ASP NET Core از میزان 300 هزار rps در دور 18م به 400 هزار rps در دور 20م رسیده است.
با وجود این میزان پیشرفت سقوط دو پله ای در رتبه بندی نشان از رقابت نزدیک در ردیف های بالای جدول دارد. در دور 18م فقط 4 فریم ورک میزان rps بالای 400 هزار داشته اند در حالی که در دور 20م این تعداد به 12 افزایش پیدا کرده است.
مایکروسافت به جمع حامیان مالی زبان برنامه نویسی Rust پیوست.
زبان Rust در حال حاضر یکی از محبوبترین زبان های برنامه نویسی است و توسط شرکت Mozilla توسعه داده میشود.
شرکت Mozilla که بیشتر با مرورگر FireFox شناخته میشود به دلیل ساختار متن باز خود همیشه با مشکلات مالی روبرو بوده و در حال حاضر سهم کمی از بازار مرورگرها را در اختیار دارد. این موضوع یکی از دلایل کند بودن رشد زبان برنامه نویسی Rust است.
با توجه به اینکه Rust می تواند خیلی از مشکلات امنیتی زبانهایی مثل ++C را حل کند می تواند راهکار خوبی برای توسعه سیستم عامل ها و سیستم های Embed باشد. حالا مایکروسافت به جمع حامیان مالی این زبان پیوسته تا در پیشرفت آن کمک کند.
فریم ورک تحت وب Rust به نام Actix که همیشه جزو سریعترین فریم ورکهای وب است که توسط یکی از کارمندان مایکروسافت پیاده شده و به صورت متن باز توسعه داده میشود.
https://codehaks.com/go/Rst
زبان Rust در حال حاضر یکی از محبوبترین زبان های برنامه نویسی است و توسط شرکت Mozilla توسعه داده میشود.
شرکت Mozilla که بیشتر با مرورگر FireFox شناخته میشود به دلیل ساختار متن باز خود همیشه با مشکلات مالی روبرو بوده و در حال حاضر سهم کمی از بازار مرورگرها را در اختیار دارد. این موضوع یکی از دلایل کند بودن رشد زبان برنامه نویسی Rust است.
با توجه به اینکه Rust می تواند خیلی از مشکلات امنیتی زبانهایی مثل ++C را حل کند می تواند راهکار خوبی برای توسعه سیستم عامل ها و سیستم های Embed باشد. حالا مایکروسافت به جمع حامیان مالی این زبان پیوسته تا در پیشرفت آن کمک کند.
فریم ورک تحت وب Rust به نام Actix که همیشه جزو سریعترین فریم ورکهای وب است که توسط یکی از کارمندان مایکروسافت پیاده شده و به صورت متن باز توسعه داده میشود.
https://codehaks.com/go/Rst
آشنایی با Mapster
کتابخانه Maspter میتواند جایگزین خوبی برای AutoMapper باشد.
https://youtu.be/v8gOaIstOvc
کتابخانه Maspter میتواند جایگزین خوبی برای AutoMapper باشد.
https://youtu.be/v8gOaIstOvc
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ آموزش gRPC در ASP.NET Core - قسمت دوم
در قسمت قبل با gRPC آشنا شدیم و یک پروژه سمپل با اون طراحی کردیم. در این قسمت میخواهیم به صورت عمیق تر مفاهیم gRPC از جمله Message و Service و انواع Data Type ها در Protocol Buffer و نیز تعریف Enum در آن را بررسی کنیم
#آرمین_شعیبی_نژاد
https://vrgl.ir/wvOn6
____________________
@DotNetZoom
در قسمت قبل با gRPC آشنا شدیم و یک پروژه سمپل با اون طراحی کردیم. در این قسمت میخواهیم به صورت عمیق تر مفاهیم gRPC از جمله Message و Service و انواع Data Type ها در Protocol Buffer و نیز تعریف Enum در آن را بررسی کنیم
#آرمین_شعیبی_نژاد
https://vrgl.ir/wvOn6
____________________
@DotNetZoom
Forwarded from کدهک
کار با ajax در Razor Pages
در Razor Page هدف نهایی نمایش View است که شامل محتوای HTML باشد. اما گاهی نیاز داریم داده های JSON یا فایل استفاده کنیم. در این ویدیو نحوه ی بارگذاری اطلاعات JSON در Razor Page از طریق AJAX آموزش داده میشود.
https://codehaks.com/go/ajx
در Razor Page هدف نهایی نمایش View است که شامل محتوای HTML باشد. اما گاهی نیاز داریم داده های JSON یا فایل استفاده کنیم. در این ویدیو نحوه ی بارگذاری اطلاعات JSON در Razor Page از طریق AJAX آموزش داده میشود.
https://codehaks.com/go/ajx