Software Philosophy
3.42K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
چالش «کی رابطه لود شود؟» و راه‌حل‌های جالب Entity Framework Core

مفهوم Loading Related Data یکی از مفاهیم مهمی است که هنگام نوشتن برنامه‌هایی که حساسیت performance بالایی دارند بسیار مهم است. فرض کنید در برنامه لیست blogs لود شده‌است. آیا برای هر یک از blog های لود شده در آینده به blog.Posts و blog.Owner نیاز داشته باشیم، کی باید لود شوند. اینجاست که یک برنامه‌نویس خوب باید یک سیاست مناسب اتخاذ کند.

۱. سیاست (Eager Loading): همه اطلاعات همان اول لود شوند. این سیاستی است که معمولا وقتی اتخاذ می‌شود که هنگام استفاده از blogs تقریبا برای همه blog ها نیاز به اطلاعات این رابطه‌ها داریم. مثلا وقتی که قرار است همه این اطلاعات را چاپ کنیم.

۲. سیاست (Deffered Loading): هر وقت نیاز به لود کردن یک رابطه بود، همان موقع لود شود. در حقیقت، لود شدن یک رابطه تا هنگامی که واقعا به آن نیاز است به تعویق انداخته می‌شود. برای مثال فرض کنید قرار است بلاگ‌ها به کاربر نمایش داده شوند و در صورتی که کاربر روی یکی کلیک کرد، اطلاعات مربوط به owner و posts نمایش داده شود. در این حالت که کاربر شاید روی فقط چند تا blog کلیک کند، اصلا منطقی نیست که برای تمامی blog ها این اطلاعات لود شود چون شاید کاربر روی یکی کلیک کند. کافیست زمانی که کاربر یک بلاگ را انتخاب کرد، اطلاعات رابطه‌ای آن لود شود.

در ef core استراتژی‌های مختلفی برای این سناریو در نظر گرفته شده:
۱. استراتژی Eager Loading: در این استراتژی در همان اجرای اولیه navigation property های مورد نیاز توسط Include اعلام می‌شود و همه آنها همان اول لود می‌شوند. تغییر معماری جالبی که در ef core نسبت به ef داده شده معرفی مفهوم جالب ThenInclude است.

۲. استراتژی Explicit Loading: این استراتژی اولین بار در ef core 1.1 معرفی شده و برنامه‌نویس در هر جایی که نیاز داشت می‌تواند یک navigation property را لود کند.

۳. استراتژی Lazy Loading: این استراتژی در نسخه ef core 2.1 اضافه شده و با استفاده از proxy کردن هر پروپرتی را هنگام نیاز لود می‌کنم. البته تجربه نشان می‌دهد این مکانیز همیشه برنامه‌نویسان را به اشتباه می‌اندازد و پیشنهاد می‌شود از آن استفاده نشود.

لینک زیر به طور کامل و به همران مثال این ویژگی‌ها را تشریح کرده است.

https://docs.microsoft.com/en-us/ef/core/querying/related-data#including-multiple-levels

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/ujkD30lgxfn

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
Forwarded from Iran Agile
🔵 پرداختن به مباحث فاندمنتال یا پایه‌ای

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

این عطش یادگیری سطحی چیزها در بلند مدت باعث ایجاد مشکل در سازمان‌ها و تیم‌ها خواهد شد.

http://bit.ly/2TnU2cd

@iranagile
#پست_مجدد این پست تا به حال بیش از ۸۹۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ویژگی Window Function در SQL Server 2005 معرفی شد و در SQL Server 2012 ارتقا پیدا کرد و قابلیت framing نیز به آن اضافه شد. با به کار بردن Window Function می توان کوئری هایی به مراتب بهینه نوشت و با استفاده درست از framing نیز کوئری را بهینه‌تر کرد. لینک زیر Kathi Kellenberger به خوبی و با مثال‌هایی توضیح می‌دهد که Window Function ها چطور کار می‌کنند و در یک مثال فوق العاده نشان می‌دهد که چطور می‌توان با framing میزان logical reads را کم کرد. در این مثال مشاهده خواهید کرد که مقایسه کارایی نوشتن کوئری با تکنیک‌های متفاوت مانند
Window function with default frame, Correlated sub-query, Cursor solution و Window function with ROWS
چگونه خواهد بود و قطعا شگفت زده خواهید شد.

https://www.red-gate.com/simple-talk/sql/t-sql-programming/t-sql-window-functions-and-performance/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/hCOD30lzp2h

#محمد_محبتی (http://ow.ly/4ZMN30lzoxf)

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


___
#پست_مجدد این پست تا به حال بیش از ۸۴۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یکی از Design pattern های مهم Dependecy Injection است.
انگولار فریم ورک Dependency Injection مختصص به خودش را دارد که یکی از اساسی ترین قسمت‌های انگولار است.
با وجود اینکه dependency injection در انگولار بسیار مفید بوده و خیلی از پچیدگی‌ها را حذف کرده است اما محدودیت‌هایی نیز ایجاد می‌کند که البته در حالت‌های خاصی اتفاق می‌افتد.
یکی از مشکلاتی که ممکن است با آن مواجه شوید circular dependency است.
این مشکل زمانی رخ می‌دهد که برای مثال سرویس A، سرویس B را inject می‌کند درحالی که خود سرویس B، سرویس A را inject کرده است (البته اغلب بطور غیر مستقیم).
به عنوان مثال: A->B->C->A که نهایتا یک حلقه ایجاد می‌شود.
در این حالت از Injector.get انگولار استفاده می‌شود.
پیشنهاد می‌کنم لینک راهنمای انگولار در مورد dependency injection مطالعه نمایید.

https://angular.io/guide/dependency-injection-pattern

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/2dq130lQOfC

#مریم_داودی (http://ow.ly/HGkG309B7de)


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

___
Forwarded from فلسفه دیزاین
از «اصول اخلاقی» که حرف می‌زنم، از چه حرف می‌زنم

اجازه بدهید از یک جامعه انسانی شروع کنیم. مدت‌هاست که به مدلی تکراری از رفتار انسان‌ها رسیده‌ام: اینکه در شروع هر جنبشی، هر ابزاری، هر ایدئولوژی و … تنها تمرکز بر روی گسترش و حداکثری کردن تاثیرات آن است. پس از اینکه بشر از آن موضوع سیراب شد و یا به اصطلاح خودمانی‌تر «شور آن درآمد»، آن موضوع شروع می‌کند به رشد مفهومی و رسیدن به بلوغ.

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

امروز ما غرق در ابزارها و منابع هستیم. ابزارها و منابعی که به ما اجازه می‌دهند وب‌سایت‌ها و اپلیکیشن‌ها را در چند روز ساخته، صداها و ویدئوها را در چند دقیقه ویرایش کرده و تصاویر را در چند ثانیه در تمام دنیا منتشر کنیم.
امروز است که به فکر این میافتیم که «آیا واقعا هر کاری که می‌شود انجام داد را باید انجام داد؟». این دقیقا سوالی‌ست که در بسیاری از اصول اخلاقی از جمله اصول اخلاقی در دیزاین جان کلام را بیان می‌کند.
در دنیا قوانینی وجود دارد که سفید و سیاه است. یک کار در ناحیه سیاه قرار گرفته و غیرقانونی می‌شود، کاری دیگر در ناحیه سفید و قانونی. ولی اصول اخلاقی اینطور نیست. علیرغم داشتن پایه‌هایی مشخص، ناحیه‌ست خاکستری؛ وابسته به عقاید شما، جامعه مخاطب و اصولی که شرکت شما به آن پایبند است.

امروز شما را پای گفتگویی خواندنی و جذابی میان راهبران طراحی کمپانی Adobe درباره «اصول اخلاقی در دیزاین» می‌نشانیم.
از دست ندهید:
https://99u.adobe.com/articles/60538/what-we-talk-about-when-we-talk-about-design-ethics

(زمان حدودی مطالعه، ۸ دقیقه)

#اصول_اخلاقی #مصاحبه #ادوبی
@Dexign فلسفه دیزاین

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
سخنرانی ایلیا وکیلی در کدر کانف. در این سخنرانی ایلیا به بررسی مشکلات روابط انسانی در شرکت‌ها به زبان ساده با تاکید بر تیم‌های نرم‌افزاری پرداخته است. جالبی صحبت‌های ایلیا اینه که در هر تیم و سازمانی صادقه.

موضوع این سخنرانی «هیولا» بود که اخلاق‌های بد تیم‌های نرم‌افزاری را با شخصیت‌های منفی فیلم‌هایی مانند «جنگ‌ستارگان»، «هری‌ پاتر»، «بت‌من» و ... مقایسه کرده بود.

لینک یوتیوب:

https://www.youtube.com/watch?v=Aen42nhOdK4

لینک آپارات:

https://www.aparat.com/v/vV3ru

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/dr3W30m3P6b

#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)

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

___
Forwarded from SQL Server (Hamidreza)
سلام و عرض ادب خدمت دوستان گرامی
امیدوارم حالتون خوب باشه
اخیرا موردی در یک سازمان بزرگ رخ داده و اون هم این بوده که دیتابیس سیستم اتوماسیون دچار مشکل شده و شرکت محترم نرم افزاری که القصه یکی از بزرگترین شرکتهای بزرگ تولید کننده سیستم های اتوماسیون هست!! اومدن دیتابیس رو بررسی کردن و زحمت کشیدن آخرین بکاپ رو Restore کردن و به دلیل عدم دانش درست از دیتابیس ، سبب شده تقریبا 2 ساعت کار بر روی این دیتابیس در اون سازمان از دست بره.

دوستان عزیز ، اگر شرکت نرم افزاری هستید ، به هیچ وجه مسئولیت نگهداری بانک های اطلاعاتی یک سازمان به عهده شما نیست. اگر قرار هست بانک اطلاعاتی رو شما نگهداری کنید ، حتما در تیم خودتون از یک DBA حرفه ای استفاده کنید.
دوستان عزیز ، کار یک DBA ، در تخصص یک مهندس نرم افزار و برنامه نویس نیست به هیچ وجه.
مسئول شبکه نیز تخصصش DBA نیست. گاها مواردی پیش میاد که فقط یک DBA با تجربه میتونه مشکل رو حل کنه.
اگر همچنان مصر هستید که بانک های اطلاعاتی سازمان رو نگهداری کنید باید حتما یک قرارداد جداگانه برای نگهداری دیتابیس وضع بشه.
باید تمام ابزارهای مانیتورینگ تخصصی بر روی SQL Server پیاده سازی بشه . سیستم های Notification باید راه اندازی بشه و باید DBA شما بتونه در مواقع بحرانی و حساس در هر ساعت و ایامی بر روی دیتابیس کار کنه و حتما باید برای اینکار شیفت مخصوص داشته باشید.
حتما باید دیتابیس ها به صورت روزانه مانیتور بشه.

سازمانهای عزیز ، دقت کنید وقتی قرار هست دیتای شما توسط شرکت نگهداری بشه باید حتما قرارداد محرمانگی بین شما و شرکت نرم افزاری امضا بشه تا دیتای شما از دست نره.
فقط یک نفر و فقط یک نفر و فقط یک نفر باید SYSAdmin باشه.
حتی مدیر شبکه نباید دسترسی به دیتابیس داشته باشه
باید حتما Audit Log بر روی SQL Server راه اندازی شده باشه تا بتونید وضعیت رفتاری هر شخصی که بر روی سرور متصل میشه رو Trace کنید.

دوستان عزیز، اگر هر کدوم ا زموارد فوق رو رعایت نکردین ، باید عواقبی مانند از بین رفتن دیتا ، آلوده شدن و Encrypt شدن توسط باج افزارها ، کند شدن سرورها ، دزدیده شدن داده ها و .... رو کاملا بپذیرید.

ارادتمند شما
حمیدرضا صادقیان
ID:@Hamidreza_Sadeghian
Channel :@SQL_Server
Forwarded from Iran Agile
🔵 فیدبک به شیوه اپیک

فرض کنید در تیم شما فردی هست که زیاد صحبت می‌کند و این باعث اذیت شدن دیگران می‌شود، از طرفی شما نمی‌توانید به او فیدبک بدهید زیرا نگران این هستید که ناراحت نشود.

مثال‌های از این دست بسیار هستند که ما به دیگران بازخورد نمی‌دهیم ولی خود این باعث اذیت خودمان و دیگران می‌شود یا به گونه‌ای بازخورد می‌دهیم که روابط از بین می‌روند.

مدل اپیک یک مدل کاربردی در مورد بازخورد دادن است.

اطلاعات بیشتر در این مورد در لینک زیر:
📎 http://bit.ly/2soWGDh
تقویم شمسی برای Xamarin

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

کنترل BitDatePicker که نحوه استفاده از آن در مقاله زیر توضیح داده‌شده‌است ویژگی‌های خیلی جذابی دارد که احتمالا تجربه کار شما با Xamarin را شیرین‌تر می‌کند. امکانات این کنترل عبارتند از:

• پشتیبانی از تمامی Calendar System هایی که noda time ساپورت می‌کند؛ اعم از شمسی، قمری، میلادی و ...
• پشتیبانی از تمامی Locale هایی که net. پشتیبانی می‌کند؛ اعم از فارسی، عربی، انگلیسی و ...
• قابلیت ارائه Template سفارشی شده برای UI
• سازگار شده با MVVM


https://www.dotnettips.info/post/2955/%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-xamarin-forms

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/npYc30nopkk

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
پلتفرم Twitch یکی از استارتاپ‌های معروف و جذاب با داستانی عجیب برای برنامه‌نویسان است. هدف اولیه این استارتاپ Game Streaming است، یعنی gamer ها هنگام بازی کردن دسکتاپ خود را share می‌کنند تا follower هایشان بتوانند نحوه بازی کردن آنها را ببینند.
یکی از اتفاقات جالبی که در این پلتفرم افتاده، استفاده خاص برنامه‌نویسان است. اخیرا برنامه‌نویسانی شروع به استفاده از از این پلتفرم کرده‌اند و هنگامی که برنامه‌نویسی می‌کنند دسکتاپ خود را شیر می‌کنند و مفاهیمی را از این طریق آموزش می‌دهند.

در همین راستا ما نیز در Software Philosophy تصمیم گرفتیم رویدادهایی را در Twitch برگزار کنیم.
دومین رویداد در تاریخ ۱۳۹۷/۱۱/۰۶ (شنبه) ساعت ۱۹:۰۰ تا ۲۰:۰۰ با موضوع زیر برگزار می‌شود:
Async/Await in Practice

پیش‌نیاز این دوره مطالب ارائه شده در رویداد قبل است.
برای مشاهده مطالب جلسه قبل و آمادگی برای مطالب این جلسه می‌توانید ویدئوی ضبط شده جلسه قبل را از طریق لینک زیر مشاهده کنید.

https://www.aparat.com/v/F07CS

برای مشاهده این رویداد روی لینک زیر کلیک کنید و کانال ما را در twitch فالو کنید.

https://www.twitch.tv/softwarephilosophy/

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
دومین ورک‌شاپ کانال Software Philosophy روی پلتفرم Twitch شنبه ۱۳۹۷/۱۱/۰۶ ساعت ۱۹ تا ۲۰. روی این لینک کلیک کنید: https://www.twitch.tv/softwarephilosophy/

@SoftwarePhilosophy
Forwarded from فلسفه دیزاین
تعصب، قفسی نامرئی برای تفکر

در سال‌های بسیار دور کشفیات انسان‌ها همگی مواردی بسیار کلی بود. اینکه دریافتیم زمین به دور خورشید می‌چرخد و ماه به دور زمین. اینکه دانستیم چیزی به نام جاذبه ما را روی زمین نگه می‌دارد.
روی دور تند اگر جلوتر بیایم، زمانی وجود داشت که داشتن وب‌سایت اتفاقی بزرگ محسوب می‌شد و بعدتر داشتن اپلیکیشن که بتواند روی گوشی‌های هوشمند نصب شود. بعدتر که همه اپلیکیشن داشتند، صحبت از این به میان آمد که چگونه می‌توان بهتر بود؟ چگونه می‌توان سلیقه، عادات و تفکرات کاربران را در دیزاین دخیل کرد و …

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

امروز می‌خواهیم با این مقدمه، به مقاله‌ای درباره تعصبات ذهن که در BBC منتشر شده پرداخته و با شفاف شدن عملکرد ذهن‌مان، به مبارزه با ایجاد تعصبات ذهنی بپردازیم.

دانشمندان علوم ذهنی فرایندهایی را که در آن ذهن منحرف می‌شود و به جانبداری از قسمتی از واقعیت می‌پردازد، جهت‌گیری یا سوگیری ذهنی می‌نامند.
با شناخت فرایند‌هایی که طی آنها ذهن به جانبداری از قسمتی از اطلاعات ورودی می‌پردازد و قسمتی دیگر از دانش را نادیده می‌گیرد، می‌توانیم فرایند خردورزی، قضاوت و تصمیم‌گیری را بهینه کنیم. جهت‌‌گیری تاییدی یکی از مشهورترین‌ انواع جهت‌گیری‌های ذهنی است.

برای آشنایی با این جهت‌گیری‌ها و بطور مشخص جهت‌گیری تاییدی، مقاله امروز را از دست ندهید:

http://bit.ly/dxgn460

(زمان حدودی مطالعه، ۱۲ دقیقه)

#تعصب #موانع_دیزاین #تمارین_ذهن
@Dexign فلسفه دیزاین

___
Forwarded from Software Philosophy
پلتفرم Twitch یکی از استارتاپ‌های معروف و جذاب با داستانی عجیب برای برنامه‌نویسان است. هدف اولیه این استارتاپ Game Streaming است، یعنی gamer ها هنگام بازی کردن دسکتاپ خود را share می‌کنند تا follower هایشان بتوانند نحوه بازی کردن آنها را ببینند.
یکی از اتفاقات جالبی که در این پلتفرم افتاده، استفاده خاص برنامه‌نویسان است. اخیرا برنامه‌نویسانی شروع به استفاده از از این پلتفرم کرده‌اند و هنگامی که برنامه‌نویسی می‌کنند دسکتاپ خود را شیر می‌کنند و مفاهیمی را از این طریق آموزش می‌دهند.

در همین راستا ما نیز در Software Philosophy تصمیم گرفتیم رویدادهایی را در Twitch برگزار کنیم.
دومین رویداد در تاریخ ۱۳۹۷/۱۱/۰۶ (شنبه) ساعت ۱۹:۰۰ تا ۲۰:۰۰ با موضوع زیر برگزار می‌شود:
Async/Await in Practice

پیش‌نیاز این دوره مطالب ارائه شده در رویداد قبل است.
برای مشاهده مطالب جلسه قبل و آمادگی برای مطالب این جلسه می‌توانید ویدئوی ضبط شده جلسه قبل را از طریق لینک زیر مشاهده کنید.

https://www.aparat.com/v/F07CS

برای مشاهده این رویداد روی لینک زیر کلیک کنید و کانال ما را در twitch فالو کنید.

https://www.twitch.tv/softwarephilosophy/

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
Forwarded from Software Philosophy
دومین ورک‌شاپ کانال Software Philosophy روی پلتفرم Twitch شنبه ۱۳۹۷/۱۱/۰۶ ساعت ۱۹ تا ۲۰. روی این لینک کلیک کنید: https://www.twitch.tv/softwarephilosophy/

@SoftwarePhilosophy
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی کتابخانه EFCore.BulkExtensions
در سری #معرفی_اکستنشن_های_کاربردی_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
Forwarded from Iran Agile
🔴 چگونه تخمین های بهتری داشته باشیم؟

همیشه تخمین زدن پروژه های نرم افزاری یک از دردسرهای بزرگ حوزه توسعه نرم افزار است. یکی از روش های رایج استوری پوینت و تکنیک پوکر است، اما خود این واحد تخمین نیز با دشواری های زیادی مواجه می شود.
این نوشته در مورد بهبود نحوه تخصیص استوری پوینت به اقلام بک‌لاگ محصول نوشته شده است:

http://bit.ly/2TJcwEq

@iranagile
در هر زبان و کتابخانه‌ی ابتدا باید با دقت ساختار پروژه خود را بچینیم تا در میانه راه لازم نباشد تغییرات خانه‌برانداز! روی ساختار پروژه اعمال کنیم.
در مورد react باید تصمیم بگیریم چه قطعه کدهایی قرار است component باشند. چه اطلاعاتی لازم است درstate نگهداری شوند و مسائل دیگری که ممکن است فقط خاص react نباشند.
در این مقاله یک دید جامع در مورد نحوه چیدن ساختار پروژه react به شما داده می‌شود.

https://www.graph.uk/insights/react-best-practices

#مریم_کمالی (http://ow.ly/9Wa430mFGeK)

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

___