روش های Audit!
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
@IranAspMvc
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
@IranAspMvc
گیتهاب را خدا آزاد کرد! (البته نه به طور کامل 😏)
https://t.iss.one/AttachFiles/2
خبر خوب واسه کاربران Github اینکه، ماکروسافت امکان ساخت Repository های Private (خصوصی) رو برای همه رایگان کرد
دیشب این خبر همه جا رو ترکوند و توی هر گروهی میرفتی لایک و شادی مردم بود که همه جا موج میزد (یعنی در این حد که حتی کسی که گیتهاب رو نمیشناخت هم داشت خوشحالی میکرد 😅)
اما امروز که خبرش بیشتر پخش شده بود و محدودیت هاشو فهمیده بودن، دیگه خیلی هم واسه این خبر تره خرد نمیکردن
اینم لینک خبر :
https://blog.github.com/2019-01-07-new-year-new-github/
و اما مهم ترین محدودیت ها :
1- هر ریپازیتوری private حداکثر میتونه 3 نفر مشارکت کننده/برنامه نویس داشته باشه
2- ریپازیتوری های private نیمتونن Wiki و Github Pages داشته باشن
محدودیت های (نسبتا غیر مهم) دیگه ای هم وجود داره که از مقایسه پلن های گیتهاب میتونین ببینیدشون
https://github.com/pricing
میبینیم با این محدودیت 3 نفری که داره، دیگه زیاد مالی هم نیست، چون اکثر پروژه ها بیش از 3 برنامه نویس لازم دارن
و مثلا Gitlab و BitBucket محدودیت های کمتری توی این زمینه دارند (که متاسفانه ایرانم تحریم کردند)
اما سرویس بهتری که وجود داره سرویس Azure DevOps (یا همون VSTS سابق) ماکروسافت هست و محدودیت هاشم کمتره
- حداکثر تعداد روی 5 نفر هست (که واسه خیلی از پروژه ها مناسبه)
- واسه بحث CI/CD هم، امکان Build و Deploy رو تا 1800 دقیقه در ماه به صورت رایگان بهتون میده (که بازم واسه خیلی از پروژه ها کافیه، تازه زیادم هست)
- تازه به پروژه Github اتونم میتونه وصل بشه
- و خوشبختانه ایران رو هم تحریم نکرده؛ میشه گفت ماکروسافت جز معدود شرکت هایی هست که تحریم ها رو به طور کامل اعمال نکرده (خلاصه واسه ایرانیا که دمش گرمه)
پس ای غیر ماکروسافتی ها، به ماکروسافت ایمان بیاورید
پلن رایگان هم داره
https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
نهایتا جفت اینها (Azure DevOps و GitHub) هم مال ماکروسافتن، پس فعلا بین این دو، هنوز Azure DevOps گزینه بهتری هست
@IranAspMvc
https://t.iss.one/AttachFiles/2
خبر خوب واسه کاربران Github اینکه، ماکروسافت امکان ساخت Repository های Private (خصوصی) رو برای همه رایگان کرد
دیشب این خبر همه جا رو ترکوند و توی هر گروهی میرفتی لایک و شادی مردم بود که همه جا موج میزد (یعنی در این حد که حتی کسی که گیتهاب رو نمیشناخت هم داشت خوشحالی میکرد 😅)
اما امروز که خبرش بیشتر پخش شده بود و محدودیت هاشو فهمیده بودن، دیگه خیلی هم واسه این خبر تره خرد نمیکردن
اینم لینک خبر :
https://blog.github.com/2019-01-07-new-year-new-github/
و اما مهم ترین محدودیت ها :
1- هر ریپازیتوری private حداکثر میتونه 3 نفر مشارکت کننده/برنامه نویس داشته باشه
2- ریپازیتوری های private نیمتونن Wiki و Github Pages داشته باشن
محدودیت های (نسبتا غیر مهم) دیگه ای هم وجود داره که از مقایسه پلن های گیتهاب میتونین ببینیدشون
https://github.com/pricing
میبینیم با این محدودیت 3 نفری که داره، دیگه زیاد مالی هم نیست، چون اکثر پروژه ها بیش از 3 برنامه نویس لازم دارن
و مثلا Gitlab و BitBucket محدودیت های کمتری توی این زمینه دارند (که متاسفانه ایرانم تحریم کردند)
اما سرویس بهتری که وجود داره سرویس Azure DevOps (یا همون VSTS سابق) ماکروسافت هست و محدودیت هاشم کمتره
- حداکثر تعداد روی 5 نفر هست (که واسه خیلی از پروژه ها مناسبه)
- واسه بحث CI/CD هم، امکان Build و Deploy رو تا 1800 دقیقه در ماه به صورت رایگان بهتون میده (که بازم واسه خیلی از پروژه ها کافیه، تازه زیادم هست)
- تازه به پروژه Github اتونم میتونه وصل بشه
- و خوشبختانه ایران رو هم تحریم نکرده؛ میشه گفت ماکروسافت جز معدود شرکت هایی هست که تحریم ها رو به طور کامل اعمال نکرده (خلاصه واسه ایرانیا که دمش گرمه)
پس ای غیر ماکروسافتی ها، به ماکروسافت ایمان بیاورید
پلن رایگان هم داره
https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
نهایتا جفت اینها (Azure DevOps و GitHub) هم مال ماکروسافتن، پس فعلا بین این دو، هنوز Azure DevOps گزینه بهتری هست
@IranAspMvc
Telegram
Attach Files
https://t.iss.one/IranAspMvc/619
معرفی EntityFrameworkCore.Cacheable
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
این قابلیت باعث میشه کوئری شما به جای اینکه از دیتابیس خونده بشه، از Cache شما خونده بشه و ضمن کاهش تراکنش به دیتابیس، سرعت بالایی در واکشی کوئری هاتون داشته باشین.
واسه اینکار فقط کافیه متد Cacheable رو روی کوئری تون استفاده کنین
و بار اول از دیتابیس بخونینش؛ ولی دفعات بعد(تا زمان منقضی شدن کش) نتیجه کوئری شما از Cache خونده میشه، نه از دیتابیس
مثال :
البته نقطه ضعف این کتابخانه اینه که متد های async رو فعلا پشتیبانی نیمکنه و باید به صورت معمولی (غیر async) فراخوانیش کنین که امیدوارم این ضعفشم برطرف بشه
https://github.com/SteffenMangold/EntityFrameworkCore.Cacheable
نکته مهمی که هست اینه که همیشه استفاده از Caching مثل یه شمشیر دو لبه میمونه و ضمن همه مزیت های خوبی که داره، اگه به دقت و با علم کامل ازش استفاده نشه میتونه کل پروژه رو ببره رو هوا!
مثلا کش کردن دیتای زیاد یا با مدت طولانی میتونه رم سرور رو به ف.. بده؛ یا مثلا کش با مدت زیاد، اگه مدیریت نشه میتونه دیتا های غیر معتبر رو وارد سیستم کنه
پس مراقب خودتون و پروژه هاتون باشین ;)
#Cache #Caching #EFCore #Extensions
@IranAspMvc
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
A high-performance second-level query cache for EF Core.این کتابخونه قابلیت Caching رو روی Query های EF Core فراهم میکنه که اصطلاحا به این کار میگن سطح دوم کش (second-level) برای EF
این قابلیت باعث میشه کوئری شما به جای اینکه از دیتابیس خونده بشه، از Cache شما خونده بشه و ضمن کاهش تراکنش به دیتابیس، سرعت بالایی در واکشی کوئری هاتون داشته باشین.
واسه اینکار فقط کافیه متد Cacheable رو روی کوئری تون استفاده کنین
و بار اول از دیتابیس بخونینش؛ ولی دفعات بعد(تا زمان منقضی شدن کش) نتیجه کوئری شما از Cache خونده میشه، نه از دیتابیس
مثال :
dbContext.Booksکد بالا کوئری مورد نظر رو به مدت 60 ثانیه کش میکنه و اگر توی این مدت، مجدد همین کوئری رو فراخوانی کنین، نتیجه از کش خونده بشه
.Include(d => d.Pages)
.ThenInclude(d => d.Lines)
.Where(d => d.ID == 200)
.Cacheable(TimeSpan.FromSeconds(60))
البته نقطه ضعف این کتابخانه اینه که متد های async رو فعلا پشتیبانی نیمکنه و باید به صورت معمولی (غیر async) فراخوانیش کنین که امیدوارم این ضعفشم برطرف بشه
https://github.com/SteffenMangold/EntityFrameworkCore.Cacheable
نکته مهمی که هست اینه که همیشه استفاده از Caching مثل یه شمشیر دو لبه میمونه و ضمن همه مزیت های خوبی که داره، اگه به دقت و با علم کامل ازش استفاده نشه میتونه کل پروژه رو ببره رو هوا!
مثلا کش کردن دیتای زیاد یا با مدت طولانی میتونه رم سرور رو به ف.. بده؛ یا مثلا کش با مدت زیاد، اگه مدیریت نشه میتونه دیتا های غیر معتبر رو وارد سیستم کنه
پس مراقب خودتون و پروژه هاتون باشین ;)
#Cache #Caching #EFCore #Extensions
@IranAspMvc
GitHub
GitHub - SteffenMangold/EntityFrameworkCore.Cacheable: EntityFrameworkCore second level cache
EntityFrameworkCore second level cache. Contribute to SteffenMangold/EntityFrameworkCore.Cacheable development by creating an account on GitHub.
ModelBuilderExtensions.cs
1.2 KB
اگه از FluentAPI برای کانفیگ کردن قیود دیتابیسی در EF Core استفاده میکنین میدونین که باید هر کلاس کانفیگ رو توسط متد ApplyConfiguration روی modelBuilder اعمال کنید (درون متد OnModelCreating کلاس DbContext)
مثال :
وقتی تعداد کانفیگ های شما زیاد میشه، رجیستر کردن دستی این ها جالب نیست و بهتر میشد اگه تمام کانفیگ های FluentAPI داخل پروژه به صورت خودکار رجیستر بشن
اکستنشن متد ApplyConfigurationsFromAssembly که توی کلاس ضمیمه شده موجود هست، میاد و این کار رو توسط Reflection انجام میده. مثلا :
کد فوق میاد و تمامی کلاس های کانفیگ موجود در اسمبلی معرفی شده رو به صورت خودکار رجیستر میکنه و کار شما رو راحت میکنه
تا قبل از این، چنین متدی وجود نداشت و باید خودمون می نوشتیم،اما در ورژن 2.2 EF Core ، این متد به صورت توکار داخل کلاس ModelBuilder اضافه شده و میتونین مثل نمونه قبل ازش استفاده کنین
@IranAspMvc
مثال :
modelBuilder.ApplyConfiguration(new OrderConfiguration());
وقتی تعداد کانفیگ های شما زیاد میشه، رجیستر کردن دستی این ها جالب نیست و بهتر میشد اگه تمام کانفیگ های FluentAPI داخل پروژه به صورت خودکار رجیستر بشن
اکستنشن متد ApplyConfigurationsFromAssembly که توی کلاس ضمیمه شده موجود هست، میاد و این کار رو توسط Reflection انجام میده. مثلا :
modelBuilder.ApplyConfigurationsFromAssembly(typeof(MyDbContext).Assembly);
کد فوق میاد و تمامی کلاس های کانفیگ موجود در اسمبلی معرفی شده رو به صورت خودکار رجیستر میکنه و کار شما رو راحت میکنه
تا قبل از این، چنین متدی وجود نداشت و باید خودمون می نوشتیم،اما در ورژن 2.2 EF Core ، این متد به صورت توکار داخل کلاس ModelBuilder اضافه شده و میتونین مثل نمونه قبل ازش استفاده کنین
@IranAspMvc
بازنویسی یک برنامهی قدیمی Web Form با DDD، TDD و NET Core
پیشنهاد میکنم این مقاله بسیار طولانی و خسته کننده رو بخونین، چون موارد خیلی زیادی رو به صورت عملی یادتون میده
فقط کافیه لیست تکنولوژی ها و معماری های استفاده شده رو ببینین تا به پر مایه بودنش پی ببرین
- #DDD & #CQRS
- Using CoreDdd (a library to work with DDD and CQRS.)
- #TDD & #Unit_Testing
- Using #NUnit (a unit test framework)
- Using #Shouldly (an assertion framework for NUnit)
- Using #Nhibernate ORM & CoreDdd.Nhibernate (for persistence layer)
- Using #FluentNHibernate (for database mappings)
- #Mocking & #Fake Services
- Using #FakeItEasy (an easy mocking framework)
- Adding ASP NET Core & built-in IOC Container
- #Command_Handler Pattern
- #Domain_Events Handler Pattern
- Domain Events Message Handler Pattern
- Adding #Message_Bus
- Using #Rebus & Rebus.Async (a message bus library)
- Using Await/Async for Performance Boost
لینک مقاله :
https://bit.ly/2UpoW5F
ریپازیتوری پروژه :
https://github.com/xhafan/legacy-to-coreddd
@IranAspMvc
پیشنهاد میکنم این مقاله بسیار طولانی و خسته کننده رو بخونین، چون موارد خیلی زیادی رو به صورت عملی یادتون میده
فقط کافیه لیست تکنولوژی ها و معماری های استفاده شده رو ببینین تا به پر مایه بودنش پی ببرین
- #DDD & #CQRS
- Using CoreDdd (a library to work with DDD and CQRS.)
- #TDD & #Unit_Testing
- Using #NUnit (a unit test framework)
- Using #Shouldly (an assertion framework for NUnit)
- Using #Nhibernate ORM & CoreDdd.Nhibernate (for persistence layer)
- Using #FluentNHibernate (for database mappings)
- #Mocking & #Fake Services
- Using #FakeItEasy (an easy mocking framework)
- Adding ASP NET Core & built-in IOC Container
- #Command_Handler Pattern
- #Domain_Events Handler Pattern
- Domain Events Message Handler Pattern
- Adding #Message_Bus
- Using #Rebus & Rebus.Async (a message bus library)
- Using Await/Async for Performance Boost
لینک مقاله :
https://bit.ly/2UpoW5F
ریپازیتوری پروژه :
https://github.com/xhafan/legacy-to-coreddd
@IranAspMvc
معرفی ابزار #AutoRest
کد جنریتوری برای OpenAPI Specification که از زبان های مختلفی از جمله C#, Go, Java, Node.js, TypeScript, Python, Ruby و PHP پشتیبانی میکند
اگه توی پروژه های API تون از ابزاری مثل Swagger که بر اساس OpenAPI Specification میاد و از روی API هاتون، مستندات استانداردی رو تهیه میکنه، استفاده میکنید
میتونین در کنارش توسط ابزار AutoRest، کد های لازم برای ارتباط با API هاتون رو در سمت کلاینت در زبان های مختلف به راحتی تولید کنید
در واقع این ابزار میاد و از روی مستندات API هاتون، SDK های لازم سمت کلاینت رو (مثلا برای TypeScript) می سازه و توی پروژه Angular تون میتونین به راحتی از API هاتون استفاده کنین.
ریپازیتوری پروژه :
https://github.com/Azure/autorest
ویدئو آموزشی :
https://bit.ly/2RPEX6c
#Swagger #OpenAPI #Rest #Restful #API #CodeGenerator
_______________
@IranAspMvc
کد جنریتوری برای OpenAPI Specification که از زبان های مختلفی از جمله C#, Go, Java, Node.js, TypeScript, Python, Ruby و PHP پشتیبانی میکند
اگه توی پروژه های API تون از ابزاری مثل Swagger که بر اساس OpenAPI Specification میاد و از روی API هاتون، مستندات استانداردی رو تهیه میکنه، استفاده میکنید
میتونین در کنارش توسط ابزار AutoRest، کد های لازم برای ارتباط با API هاتون رو در سمت کلاینت در زبان های مختلف به راحتی تولید کنید
در واقع این ابزار میاد و از روی مستندات API هاتون، SDK های لازم سمت کلاینت رو (مثلا برای TypeScript) می سازه و توی پروژه Angular تون میتونین به راحتی از API هاتون استفاده کنین.
ریپازیتوری پروژه :
https://github.com/Azure/autorest
ویدئو آموزشی :
https://bit.ly/2RPEX6c
#Swagger #OpenAPI #Rest #Restful #API #CodeGenerator
_______________
@IranAspMvc
DotNetZoom via @vote
یه سوال جالب و مرتبط با برنامه نویسی! آیا شما به عنوان یه برنامه نویس، فکر میکنین برای تخلیه ذهنی و رفع دغدغه های فکری، Game میتونه کمک کنه؟ آیا خودتون هم گیمر هستین؟
anonymous poll
2- بله کمک میکنه ولی گیمر نیستم – 138
👍👍👍👍👍👍👍 39%
1- بله کمک میکنه، گیمر هم هستم – 108
👍👍👍👍👍 31%
4- خیر نه کمک میکنه و نه گیمر هستم – 89
👍👍👍👍👍 25%
3- خیر کمک نمیکنه ولی گیمر هستم – 16
👍 5%
👥 351 people voted so far.
anonymous poll
2- بله کمک میکنه ولی گیمر نیستم – 138
👍👍👍👍👍👍👍 39%
1- بله کمک میکنه، گیمر هم هستم – 108
👍👍👍👍👍 31%
4- خیر نه کمک میکنه و نه گیمر هستم – 89
👍👍👍👍👍 25%
3- خیر کمک نمیکنه ولی گیمر هستم – 16
👍 5%
👥 351 people voted so far.
DotNetZoom via @vote
به عنوان یه برنامه نویس بطور میانگین چه مدت از وقتتون در روز رو صرف Game میکنین؟
anonymous poll
1- اصلا بازی نمی کنم – 246
👍👍👍👍👍👍👍 60%
2- کمتر از 1 ساعت – 89
👍👍👍 22%
3- بین 1 تا 2 ساعت – 53
👍👍 13%
5- بیش از 3 ساعت – 12
▫️ 3%
4- بین 2 تا 3 ساعت – 7
▫️ 2%
👥 407 people voted so far.
anonymous poll
1- اصلا بازی نمی کنم – 246
👍👍👍👍👍👍👍 60%
2- کمتر از 1 ساعت – 89
👍👍👍 22%
3- بین 1 تا 2 ساعت – 53
👍👍 13%
5- بیش از 3 ساعت – 12
▫️ 3%
4- بین 2 تا 3 ساعت – 7
▫️ 2%
👥 407 people voted so far.
❇️ لطفا به هر دو نظر سنجی بالا جواب بدید👆
میتونه به نتایج جالبی منجر بشه 😉
میتونه به نتایج جالبی منجر بشه 😉
This media is not supported in your browser
VIEW IN TELEGRAM
کتابخانه تبدیل عدد به حروف فارسی
ریپازیتوری مربوطه با استفاده از Angular Pipe و TypeScript
https://github.com/EbrahimHamzeh/NumberToPersian
ریپازیتوری مربوطه برای JavaScript :
https://github.com/mahmoud-eskandari/NumToPersian
______________
@IranAspMvc
ریپازیتوری مربوطه با استفاده از Angular Pipe و TypeScript
https://github.com/EbrahimHamzeh/NumberToPersian
ریپازیتوری مربوطه برای JavaScript :
https://github.com/mahmoud-eskandari/NumToPersian
______________
@IranAspMvc
DotNetZoom via @vote
یه سوال جالب و مرتبط با برنامه نویسی! آیا شما به عنوان یه برنامه نویس، فکر میکنین برای تخلیه ذهنی و رفع دغدغه های فکری، Game میتونه کمک کنه؟ آیا خودتون هم گیمر هستین؟ anonymous poll 2- بله کمک میکنه ولی گیمر نیستم – 138 👍👍👍👍👍👍👍 39% 1- بله کمک میکنه، گیمر…
نتایج #جالب #نظرسنجی در مورد #Game
https://bit.ly/2sBqTzc
🔰 چند روز پیش نظرسنجی در مورد Game برگزار کردیم که به نتایج جالبی رسیدیم. جامعه آماری مون بیش از 300 نفر بوده و جالبه که تا این لحظه به اعداد رندی هم رسیدیم !
✅ 70% برنامه نویسا فک میکنن Game به تخلیه فکریشون کمک میکنه
✅ 30% معتقدن کمک نمیکنه
✅ با اینکه اکثر برنامه نویسا با گیم موافقند ولی 60% شون اصلا بازی نمیکنن
✅ 40% برنامه نویسا گیمر هم هستند
✅ 21% برنامه نویسا ، کمتر از 1 ساعت در روز صرف Game میکنن (13% بین 1تا2 ساعت در روز)
این آمار نتایج قابل ملاحظه ای درباره مهم بودن Game در بین برنامه نویسا رو نشون میده و اینکه اکثرا تمایل دارند ذهنشون رو تخلیه فکری کنند
راه های مختلفی برای تخلیه فکری وجود داره ولی ظاهرا، گیم یکی از پرطرفدار ترین اون هاست
این که تمام شرکت های بزرگ مثل Google, Facebook و Microsoft هم این قضیه رو به طور جدی تو محیط شرکت اجرایی کردند هم میتونه دلیلش همین اهمیت گیم (یا به طور کلی تر تخلیه فکری) بین برنامه نویسا باشه
قطعا اگه برنامه نویسا، هر روز بعد از کار با ذهنی تخلیه شده از هیاهوی کد و باگ و ارور و... + کمی هیجان، محل کار رو ترک کنند به رضایت شغلی بیشتری توی بلند مدت دست پیدا میکنند
پس بهتره از خودمون شروع کنیم، ما هایی که شرکتی داریم یا سرپرست تیم هست یا به هر طریقی اختیاراتش رو داریم، این بحث رو توی شرکت پیاده کنیم، البته حساب شده، تا اثر سوء نداشته باشه :)
@IranAspMvc
https://bit.ly/2sBqTzc
🔰 چند روز پیش نظرسنجی در مورد Game برگزار کردیم که به نتایج جالبی رسیدیم. جامعه آماری مون بیش از 300 نفر بوده و جالبه که تا این لحظه به اعداد رندی هم رسیدیم !
✅ 70% برنامه نویسا فک میکنن Game به تخلیه فکریشون کمک میکنه
✅ 30% معتقدن کمک نمیکنه
✅ با اینکه اکثر برنامه نویسا با گیم موافقند ولی 60% شون اصلا بازی نمیکنن
✅ 40% برنامه نویسا گیمر هم هستند
✅ 21% برنامه نویسا ، کمتر از 1 ساعت در روز صرف Game میکنن (13% بین 1تا2 ساعت در روز)
این آمار نتایج قابل ملاحظه ای درباره مهم بودن Game در بین برنامه نویسا رو نشون میده و اینکه اکثرا تمایل دارند ذهنشون رو تخلیه فکری کنند
راه های مختلفی برای تخلیه فکری وجود داره ولی ظاهرا، گیم یکی از پرطرفدار ترین اون هاست
این که تمام شرکت های بزرگ مثل Google, Facebook و Microsoft هم این قضیه رو به طور جدی تو محیط شرکت اجرایی کردند هم میتونه دلیلش همین اهمیت گیم (یا به طور کلی تر تخلیه فکری) بین برنامه نویسا باشه
قطعا اگه برنامه نویسا، هر روز بعد از کار با ذهنی تخلیه شده از هیاهوی کد و باگ و ارور و... + کمی هیجان، محل کار رو ترک کنند به رضایت شغلی بیشتری توی بلند مدت دست پیدا میکنند
پس بهتره از خودمون شروع کنیم، ما هایی که شرکتی داریم یا سرپرست تیم هست یا به هر طریقی اختیاراتش رو داریم، این بحث رو توی شرکت پیاده کنیم، البته حساب شده، تا اثر سوء نداشته باشه :)
@IranAspMvc
نگاشت خودکار اشیاء توسط #AutoMapper و #Reflection - ایده شماره 1
لینک مقاله :
https://www.dotnettips.info/post/2983
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
لینک مقاله :
https://www.dotnettips.info/post/2983
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
.NET Tips
نگاشت خودکار اشیاء توسط AutoMapper و Reflection - ایده شماره 1
آموزش کامل AutoMapper قبلا در سایت ارائه شده است. در این مقاله میخواهیم Mapping نوعهای مختلف بین Dto و Entityهای پروژه را توسط Reflection به صورت خودکار انجام دهیم. سورس کامل مثال را میتوانید در این ریپازیتوری مشاهده کنید. در این روش ما یک کلاس…
#فیسبوک، الگوریتم #فشرده_سازی خود را در گیتهاب عمومی کرد
پروژه #Zstandard یا به اختصار zstd یک الگوریتم فشرده سازی بدون افت کیفیت با سرعت بالا است که فیسبوک آن را توسعه داده و برای مصارف خود مانند فشرده سازی دیتا و تصاویر و... استفاده میکرد و به تازگی سورس آن را به صورت متن باز منتشر کرده است
توضیحات بیشتر + بنچمارک :
https://facebook.github.io/zstd/
بنچمارک مقایسه zstd با الگوریتم های هم رده دیگه، نشون میده این الگوریتم دارای بیشترین میزان فشرده سازی (Compress Ratio) و سرعت نسبتا خوبی است.
در واقع از جمله سریع ترین الگوریتم ها می توان به LZ4 و برای قوی ترین الگوریتم فشرده سازی به LZMA اشاره کرد ولی الگوریتم Zstd تعادلی میان این دو است.
لینک ریپازیتوری :
https://github.com/facebook/zstd
این کتابخانه با زبان C نوشته شده است و چندین API جهت استفاده دارد. همچنین Wrapper هایی به زبان های زبادی از جمله C#, Java, PHP, Python, NodeJs و ... برای استفاده از API های این کتابخانه فراهم شده است.
در پست بعدی به معرفی کتابخانه های دات نتی آن و ابزار های استفاده از این الگوریتم می پردازیم.
@IranAspMvc
پروژه #Zstandard یا به اختصار zstd یک الگوریتم فشرده سازی بدون افت کیفیت با سرعت بالا است که فیسبوک آن را توسعه داده و برای مصارف خود مانند فشرده سازی دیتا و تصاویر و... استفاده میکرد و به تازگی سورس آن را به صورت متن باز منتشر کرده است
توضیحات بیشتر + بنچمارک :
https://facebook.github.io/zstd/
بنچمارک مقایسه zstd با الگوریتم های هم رده دیگه، نشون میده این الگوریتم دارای بیشترین میزان فشرده سازی (Compress Ratio) و سرعت نسبتا خوبی است.
در واقع از جمله سریع ترین الگوریتم ها می توان به LZ4 و برای قوی ترین الگوریتم فشرده سازی به LZMA اشاره کرد ولی الگوریتم Zstd تعادلی میان این دو است.
لینک ریپازیتوری :
https://github.com/facebook/zstd
این کتابخانه با زبان C نوشته شده است و چندین API جهت استفاده دارد. همچنین Wrapper هایی به زبان های زبادی از جمله C#, Java, PHP, Python, NodeJs و ... برای استفاده از API های این کتابخانه فراهم شده است.
در پست بعدی به معرفی کتابخانه های دات نتی آن و ابزار های استفاده از این الگوریتم می پردازیم.
@IranAspMvc
معرفی برنامه ها و کتابخانه های دات نتی جهت استفاده از الگوریتم فشرده سازی #Zstandard
نسخه مخصوص برنامه 7zip با پشتیبانی از الگوریتم #Zstd و چندین الگوریتم دیگر : Brotli, Fast-LZMA2, Lizard, LZ4, LZ5
لینک ریپازیتوری پروژه (شامل بنچمارک الگوریتم ها) و دانلود نسخه 64 بیتی
https://github.com/mcmilk/7-Zip-Zstd
و یا پلاگین مخصوص 7zip جهت استفاده از Zstd
https://www.tc4shell.com/en/7zip/modern7z/
2 کتابخانه سی شارپی جهت استفاده از Zstd در دات نت
https://github.com/skbkontur/ZstdNet
https://github.com/bp74/Zstandard.Net
طرز کارشون به این صورته که آرایه ای از byte ها رو دریافت کرده و فشرده سازی میکنن. مثال کامل هم داخلش هست
شما میتونین تصاویر یا فایل هایی که میخواین ذخیره کنین (چه توی دیتابیس و چه توی هارد) رو byte[] اش رو بخونین، فشرده کنین و سپس ذخیره کنین
@IranAspMvc
نسخه مخصوص برنامه 7zip با پشتیبانی از الگوریتم #Zstd و چندین الگوریتم دیگر : Brotli, Fast-LZMA2, Lizard, LZ4, LZ5
لینک ریپازیتوری پروژه (شامل بنچمارک الگوریتم ها) و دانلود نسخه 64 بیتی
https://github.com/mcmilk/7-Zip-Zstd
و یا پلاگین مخصوص 7zip جهت استفاده از Zstd
https://www.tc4shell.com/en/7zip/modern7z/
2 کتابخانه سی شارپی جهت استفاده از Zstd در دات نت
https://github.com/skbkontur/ZstdNet
https://github.com/bp74/Zstandard.Net
طرز کارشون به این صورته که آرایه ای از byte ها رو دریافت کرده و فشرده سازی میکنن. مثال کامل هم داخلش هست
شما میتونین تصاویر یا فایل هایی که میخواین ذخیره کنین (چه توی دیتابیس و چه توی هارد) رو byte[] اش رو بخونین، فشرده کنین و سپس ذخیره کنین
@IranAspMvc
نگاشت خودکار اشیاء توسط #AutoMapper و #Reflection - ایده شماره 2
لینک مقاله :
https://www.dotnettips.info/post/2988
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
- در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط Reflection به صورت خودکار انجام میشد.
- در این قسمت میخواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mappingها را نیز فراهم کنیم.
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
لینک مقاله :
https://www.dotnettips.info/post/2988
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
- در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط Reflection به صورت خودکار انجام میشد.
- در این قسمت میخواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mappingها را نیز فراهم کنیم.
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
.NET Tips
نگاشت خودکار اشیاء توسط AutoMapper و Reflection - ایده شماره 2
پیش نیاز این مطلب، قسمت قبل آن است. در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط…
پروژه ای جهت پیاده سازی ایده های خلاقانه در ASPNET Core
https://github.com/aspnet/Entropy/
بررسی سورس کد این پرژه، ایدههای بسیار جالبی به شما میدهد. پیشنهاد میکنم حتما کد هاشو بررسی کنید. نکات آموزشی زیادی داخل هست.
چند پروژه منتخب :
- پروژه Mvc.GenericControllers : ساخت کنترولر برای Entityها بدون کدنویسی!
- پروژه Mvc.CustomRoutingConvention : مسیریابی بر اساس namespace کنترولرها
- پروژه Localization.EntityFramework : مدیریت منابع چند زبانگی توسط EntityFramework
@IranAspMvc
https://github.com/aspnet/Entropy/
بررسی سورس کد این پرژه، ایدههای بسیار جالبی به شما میدهد. پیشنهاد میکنم حتما کد هاشو بررسی کنید. نکات آموزشی زیادی داخل هست.
چند پروژه منتخب :
- پروژه Mvc.GenericControllers : ساخت کنترولر برای Entityها بدون کدنویسی!
- پروژه Mvc.CustomRoutingConvention : مسیریابی بر اساس namespace کنترولرها
- پروژه Localization.EntityFramework : مدیریت منابع چند زبانگی توسط EntityFramework
@IranAspMvc
تقویم شمسی، قمری و میلادی به همراه انتخابگر زمان و تاریخ برای Kendo UI
https://github.com/kitcat2014/KendoUI_Gregorian-Persian-Hijri_Calendar-DatePicker-TimePicker
_______________
@IranAspMvc
https://github.com/kitcat2014/KendoUI_Gregorian-Persian-Hijri_Calendar-DatePicker-TimePicker
_______________
@IranAspMvc
This media is not supported in your browser
VIEW IN TELEGRAM
#آیا_میدانستید
آیا میدانستید اگر در یک ریپازیتوری Github، دکمه "T" را فشار دهید، صفحه ای برای جستجوی فایل ها بر اساس "نام و مسیر" برای شما باز میشود؟
بدون شک این راحت ترین و سریع ترین راه جستجوعه برای زمانی که میدونین دنبال چه فایلی میگردین😎
@IranAspMvc
آیا میدانستید اگر در یک ریپازیتوری Github، دکمه "T" را فشار دهید، صفحه ای برای جستجوی فایل ها بر اساس "نام و مسیر" برای شما باز میشود؟
بدون شک این راحت ترین و سریع ترین راه جستجوعه برای زمانی که میدونین دنبال چه فایلی میگردین😎
@IranAspMvc
معرفی کتابخانه EFCore.BulkExtensions
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)
این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)
* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست
لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions
#Bulk #EFCore #Performance
@IranAspMvc
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
Entity Framework Core Bulk Batch Extensions for Insert Update Delete and Read (CRUD) operations on SQL Serverخیلی وقتا نیاز میشه یک مرتبه حجم زیادی از رکورد ها رو توسط EFCore ذخیره کنین (مثلا import کردن از یه فایل excel)
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)
این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)
* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست
لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions
#Bulk #EFCore #Performance
@IranAspMvc