DotNetZoom – Telegram
DotNetZoom
2.98K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://news.1rj.ru/str/+ufG25x7lVFgyYTNk
Download Telegram
🔶 دنیای «بازی» که به روی ما ایرانیا «بسته» شد !

خب همونطور که قبلا هشدار داده بودیم. بلاخره گیتهاب حرفشو عملی کرد و تحریم اکانت هایی ایرانی رو عملی کرد.
اگه فقط ریپو های عمومی (public) داشتید که جای نگرانی نیست و بعید هم میدونم در آینده حتی مشکلی براشون پیش بیاد. اما اگه ریپو های خصوصی (private) داشتین متاسفانه دیگه بسته شده و در دسترس نیست.
همچنین صفحات github Pages هم بسته شده بود حتی برای پروژه های عمومی که این تصمیم گیتهاب واقعا غیر منطقی بود
خوشبختانه امروز گیتهاب دسترسی صفحات github Pages رو باز کرد و امکان تبدیل ریپو های خصوصی به عمومی رو فراهم کرد و در نتیجه میتونین سورس کد هاتون رو نجات بدین.

🔷 و اما حالا باید چیکار کنیم؟
در کل اینکه نگران نباشید به لطف ورژن کنترل Git تمام تاریخچه Commit ها و Branch ها و ... رو میشه زنده کرد (به غیر از Issue ها و تاریخچه Pull Request ها و Watch ها و... یه سری چیزا که اختصاصا مال گیتهابه ، نه گیت)

0️⃣ راه حل های بی فایده :
بدیهیه که استفاده از قند شکن و اینا تاثیری نداره پس اینقدر نپرسین. ضمنا برای اینکه اکانتتون رفع تحریم بشه، به پاسپورت غیر ایرانی نیاز دارین و راه تقلبی هم وجود نداره، پس هیچی.

1️⃣ مهاجرت نکنیم :
گیتهاب غیر از اینکه بزرگترین جامعه برنامه نویسای دنیاست، نشون دهنده هویت و سابقه یه برنامه نویس هم هست پس قاعدتا نمیشه و نباید دروشو خط کشید
بنابراین اگه صرفا از ریپو های پابلیک استفاده میکنین مشکلی نیست و نیاز به مهاجرت ندارین.
فقط کافیه ضربدر اون پیغام زرد رنگ رو مخی رو بزنین تا بره 😕

2️⃣ مهاجرت به GitLab :
گیت لب که خیلی وقت پیش ایرانی ها رو تحریم کرد ولی بازم صد رحمت بهش که به Block کردن IP ها بسنده کرد 😒
با فرض داشتن قند شکن یکی از گزینه ها انتقال به گیت لب هست ولی احتمالش هست که در آینده ای نه چندان دور مشکلات تحریم رو پیدا کنه.
اطلاعات بیشتر :
http://bit.ly/2K8CdLn

3️⃣ مهاجرت به Azure DevOps :
سرویس Azure DevOps ماکروسافت استثناعا تا الان هیچ تحریمی نگذاشته و محدودیت ریپو های خصوصیش تا 5 نفره که به نسبت بقیه گزینه بهتریه
ولی بازم احتمالش هست که در آینده ای نه چندان دور مشکلات تحریم رو پیدا کنه

4️⃣ گیت سرویس شخصی :
سایت گیت لب یه نسخه Community Edition (یا همون CE) داره که رایگان و قابل دانلوده و این امکان رو به شما میده که سایت گیت لب رو (با یه سری امکانات محدود) روی سرور خودتون نصب کنین.
خیلی هم سادس فقط به یه سرور لینوکسی نیاز داره (البته با داکر روی ویندوز هم میاد)
به غیر از گیت لب CE، پروژه های دیگه ای مانند Gitea و Gogs هم هستند
درکل این روش، کم ریسک ترین گزینه برای ریپو های خصوصی هست
____________
@IranAspMvc
❇️ کنترل سطح دسترسی پویا و Permission-based

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

هر کاربر میتونه N تا Role داشته باشه و هر Role هم N تا پرمیژن داره
پرمیژن ها در واقع Fullname اکشن هایی هستند که کاربر بهشون دسترسی داره مثلا
MyProject.HomeController.Index
مشخص میکنه کاربر به این اکشن دسترسی داره و وجود نام کامل متد باعث میشه مشکل هم نام بودن اکشن ها و کنترولر ها در پروژه های Microservice رو هم نداشته باشیم

مدیریت این قضیه هم کاملا توسط Reflection و Caching خیلی شیک انجام میشد و نیازی پرفرمنس بسیار خوبی هم داشت با توجه به اینکه تعداد کاربرانمونم زیاد بود، ضمن اینکه هیچ گونه کد نویسی ویا چک کردن سطح دسترسی لازم نبود توسط برنامه نویس انجام بشه و همگی در یک ActionFilter سراسری هندل میشد

قابلیت دیگه ای هم که نیاز بود و بهش اضافه کردیم بحث Group کردن اکشن های مرتبط بود. مثلا کاربری که دسترسی به ویرایش یک سند داره عملا به 3 اکشن Detail, Edit(Get) , Update(Post) x باید دسترسی داشته باشه، درنتیجه میتونستیم با اضافه کردن یک پرمیشن، 3 اکشن رو دسترسی داشته باشه

حتی واسه نیاز های پیچیده تر میتونین بحث Include و Exclude کردن یک یا چند پرمیژن رو از یک Role هم اضافه کنید. مثلا یک کاربر نقش Writer داره ولی... به یک اکشن از Report هم دسترسی داره (Include) و یا به یک اکشن خاص از نقش Writer نباید دسترسی داشته باشه (Exclude)
سلوشن بالا تمامی نیاز های مارو به خوبی برطرف کرد و کاملا راضی بودیم، برای پیاده سازیش هم میتونین از Identity یا هر پیاده سازی دلخواه برای احراز هویت استفاده کنید

در کل ما 3 نوع کنترل سطح دسترسی داریم
سطح Api level (کنترل دسترسی به یک action/api خاص)
سطح Operation level (کنترل دسترسی به یک فرایند/بیزنس لاجیک خاص)
سطح Data level (کنترل دسترسی برای دیتای دریافتی از دیتابیس)

روش بالا برای کنترل دسترسی در سطح Action (همون Api level) هست و برای نیاز های دیگه کنترل دسترسی مثل کنترل دسترسی به یک فرایند خاص (Operation level) میتونین از مکانیزم ACL (مخفف access control list) استفاده کنید
برای کنترل دسترسی در سطح Data (همون Data level) برای کوئری گرفتن هم از Global Query Filter خود EF Core استفاده کنید
https://long2know.com/2017/05/entity-framework-multitenancy/
https://trailheadtechnology.com/entity-framework-core-2-1-automate-all-that-boring-boiler-plate/

یه رویکرد دیگه که به نظر اصولی تر هم هست ولی یه کم تخصصی تره
بحث کنترل دسترسی در سطح Service ها توسط تکنیک AOP هست

مثلا این مقاله با CastleWindsor اومده قبل از اجرا شدن متد های سرویس، دسترسی کاربر رو چک کرده
https://lukemerrett.com/aop-in-castle-windsor/

از مزایای این روش میشه به این اشاره کرد که شما میتونین لایه سرویس (همون منطق تجاری پروژه) رو توی پروژه های دیگه هم به صورت مستقل استفاده کنید و نگران سطح دسترسی نباشید چون همش تو همون لایه داره چک میشه

مدیریتش تو لایه Repsitory هم یک روش مرسوم هست
عملا استفاده از روش repository و Global Query Filter داره یک کار رو انجام میده
هر دو با شرط گذاشتن روی کوئری ها، دسترسی رو چک میکنن تنها تفاوت بینشون اینه که Global Query Filter این کار رو به صورت اتوماتیک انجام میده و دیگه لازم نیست موقع کوئری نوشتن حواسمون باشه که شرط فیلتر رو هم بگذاریم

و مزیتش دیگه اش هم اینه که موقع Explicit Loading (همون Include) و
حتی موقع Eager Loading (توسط LoadCollection و LoadReference) هم این موضوع به صورت خودکار چک میشه. توی EF 6 نبود این ویژگی. توی EF Core 2.0 اضافه شد

این سری مقاله رو هم پیشنهاد میکنم بخونین، توضیحات خوبی در مورد روش های کنترل سطح دسترسی داده

Part 1: A better way to handle authorization in ASP.NET Core
https://bit.ly/2KaAo0q

Part 2: Handling data authorization in ASP.NET Core and Entity Framework Core
https://bit.ly/2KbA9SG

Part 3: A better way to handle ASP.NET Core authorization – six months on
https://bit.ly/2K8Z6hU

Part 4: Building a robust and secure data authorization with EF Core
https://bit.ly/2K885zH

_________________
@IranAspMvc
تولید دوره آموزشی در مورد بلاک چین و بیت کوین در حمایت از سیل زده‌ها، فرصت اسپانسری

https://2nate.com/jadijadi/bockchain-for-flood-support

من می خوام یک دوره آموزشی بلاک چین بسازم، به همراه نگاه دائمی به بیت کوین. تو این دوره آنلاین که احتمالا حدود ۱۵ ساعت می شه و احتمالا حدود ۲۰ ویدئو، مفاهیم پایه ای پشت بلاکچین مثل منطق و مفهوم کلی،‌ مفاهیم مورد نیاز رمزنگاری، اثبات کار و موارد مشابه رو می گیم و همزمان دائما نمونه اجراییش توی بیت کوین رو نگاه می کنیم. سر فصل ها از روی کتاب Bitcoin and Cryptocurrency Technologies_ A Comprehensive Introduction خواهند بود که جاهای مختلفی مثل برکلی، کرنل و پرینستون تدریس می شه. در اواخر دوره یک سیستم مستقل بلاک چین برای خودمون خواهیم نوشت تا مطمئن بشیم که همه مفاهیم رو نه فقط فهمیدیم که می تونیم استفاده کنیم و با بررسی بخش هایی از کد بیت کوین دوره رو تموم خواهیم کرد.

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

برای همین توی سایت ۲نیت، یه پروژه تعریف کردم که حینش بتونیم ۱۰ میلیون تومن جمع کنیم (با احتساب ۱۰٪ سود سایت) و صد در صدش رو به یکی از سازمان ها / تیم هایی بدیم که دارن در مناطق سیل زده کار می کنن یا در اونجا کار مفیدی از پیش می برن. هنوز تصمیم نگرفتم چه سازمان یا گروهی ولی کار سختی نخواهد بود چون در اون مقیاس پول کوچیکی است و احتمالا باهاش می شه یه کار کوچیک رو پیش برد یا جمع کرد. پس اگر سازمانی هستین که دوست داره لوگوش یا اسمش تو این ویدئوها باشه یا کسی هستین که دوست داره هر مقدار که می تونه کمک کنه تا هم به سیل زده ها کمک بشه و هم دوره رو بسازیم، از کمپین تولید دوره آموزشی بلاکچین در حمایت از سیل زدگان مشارکت کنین که دو تا چیز خوب رو پیش ببریم.

معلومه که اگر این پول جمع نشه هم دوره ساخته می شه (: این فقط یک بهانه است برای یک کار جانبی خوب و معلومه که من در کل مخالف خیریه هستم و به نظرم مشکلات آدم ها چیزی نیست که با پول جمع کردن آدم های دیگه حل بشه. سیستم موظف است با اونهمه بودجه و نفت و مالیات این مشکلات رو حل کنه... ولی وقتی نمی کنه مجبورم قدم کوچیک خودم رو بردارم چون در نهایت، رنج یک نفر آدم شاید کمتر بشه.
کانال @jadinet
This media is not supported in your browser
VIEW IN TELEGRAM
#زنگ_تفریح
آخر هفته برنامه نویسا 🤦‍♂️😅😄
@IranAspMvc
❇️ معرفی کتابخانه‌ی DNTScanner.Core

کتابخانه‌ی DNTScanner.Core که توسط وحید نصیری عزیز نوشته شده امکان کار با اسکنر رو در برنامه‌های NET 4x‌. و همچنین NET Core. ویندوزی فراهم میکنه. روشی که در اون استفاده شده مشکلاتی مانند عدم امکان استفاده‌ی از اون در سرویس‌های پس‌زمینه رو نداره از این جهت که برای دسترسی به اسکنر، هیچ نوع UI ای رو نمایش نمیده و تمام تنظیمات آن با کدنویسی انجام شده.
_______________
@IranAspMvc
Forwarded from Iran Agile
در تیم‌های نرم‌افزاری و استارتاپ ها یکی از سخت‌ترین تصمیمات، ساختن یا نساختن یک فیچر یا قابلیت جدید است.
مشتریان یا مدیران یا افراد مختلف ایده‌های زیادی به ما می‌دهند، ولی کدامیک از آنها را باید پیاده‌سازی‌ کرد؟ و با چه استدلالی؟

این فلوچارت کمک می‌کند تا بتوانید راحت‌تر در این خصوص تصمیم بگیرید.

@iranagile
Forwarded from Iran Agile
PC_2019_ShouldWeBuildFeature-flowchart_download2x.png
390.6 KB
Forwarded from کدهک
جنگ ابری

گزارش مالی مایکروسافت نشان میدهد این شرکت در سال گذشته 38 میلیارد دلار از خدمات ابری سود داشته است.

این در حالی است که سرویس وب آمازون 25.6 میلیارد دلار بوده است و گوگل هم تنها با 8 میلیارد دلار در رتبه ی سوم قرار گرفته است.

سیاستهای جدید مایکروسافت در ارائه خدمات اوپن سورس و پذیرفتن لینکوس به عنوان بخش از اکو سیستم خدمات رسانی ابری باعث جذب مشتریان زیادی شده است.

مایکروسافت در حال حاضر با 56 دیتاسنتر در سراسر دنیا خدمات ابری Azure را عرضه می کند. همچنین تنها شرکتی است که در آفریقا و خاور میانه دیتاسنتر دارد.

منبع : فوربس
پروژه سورس باز فروش بیمه به صورت Microservices در NET Core.

🔰 تکنولوژی های استفاده شده
.NET Core 2.1
Entity Framework Core
#MediatR
#Marten
#Eureka
#Ocelot
#JWT Tokens
#RestEase
#RawRabbit
#NHibernate
#Polly
#NEST (#ElasticSearch client)
#Dapper
#SignalR
#MicroServices
DynamicExpresso

https://github.com/asc-lab/dotnetcore-microservices-poc
_________________
@IranAspMvc
Forwarded from Software Philosophy
Media is too big
VIEW IN TELEGRAM
Forwarded from Software Philosophy
Forwarded from Software Philosophy
یکی از کارهای جذذابی (با دو تا ذ) که اخیرا شروع کردم طراحی این دو تا دوره‌ست:

- آموزش زبان فنی برای تیم‌های بیزنسی.
- آموزش زبان بیزنس برای تیم‌های فنی.


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

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

اگر یک بیزنسی هستین و با تیم‌های فنی کار می‌کنین، این دوره تجربه خیلی جذذابی براتون خواهد بود و مطمئنا به پرفورمنس تیمتون خیلی کمک می‌کنه.

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


اگر یک بیزنسی هستید که دوست دارین زبان تیم‌های فنی رو بهتر یاد بگیرید،
اگر یک برنامه‌نویس هستید که دوست دارین زبان بیزنسی رو بهتر یاد بگیرید،

👈 برای اطلاعات بیشتر و رزرو در دوره با شماره 021-88677808 تماس بگیرید و یا از طریق دایرکت اینستاگرام در تماس باشید:

Instagram.com/tehranmarketing_school


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

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

____
❇️ در آستانه انتشار نهایی 3 NET Core.

هم اکنون NET Core. 3 تا نسخه پیش نمایش 8 خودش پیش رفته و تقریبا در آستانه انتشار نهاییش هست

تیم NET Core. گفته در حال حاضر قرار نیست دیگه فیچر جدیدی اضافه کنن و بیشتر تمرکزشون رو روی Bugfix و Stability (پایداری) گذاشتن

ماکروسافت هم گفته نسخه های پیش نمایش 7 و 8 رو پشتیبانی رسمی (Go Live) میکنه و میتونین ازشون در Production استفاده کنید. ولی پیشنهاد میشه قبل از استفاده از اون تست های لازم رو انجام بدین

ماکروسافت تاریخ انتشار نهایی NET Core 3. رو ماه سپتامبر (ماه آینده) وعده داده ولی با توجه به اینکه هنوز RC (نسخه Release Condidate) اون منتشر نشده بعید میدونم به سپتامبر برسه و احتمالا میره واسه اکتبر (2 ماه آینده)

@IranAspMvc
DotNetZoom
🔰دوره دوره API نویسی اصولی و حرفه ای در ASP.NET Core در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند. همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه. ونیز Best Practice…
🔰 دوستانی که سراغ کد تخفیف «دوره API نویسی پیشرفته» رو میگرفتند

سایت بیاموز یه تخفیف 45% ایی تا عید غدیر زده با کد GhorbanTaGhadir

تا 3 روز و 4 ساعت دیگه از همین لحظه فرصت داره

توضیحات بیشتر دوره هم تو پستی که Reply کردم هست. اینم لینکش

http://bit.ly/2Xo6NX2
خوش باشید 🌹
Forwarded from کدهک
آشنایی با Thread Pool

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

در اینجا از تکنیک Thread Pool یا استخر Thread استفاده میشود. به این معنی که تعداد زیادی Thread از قبل ساخته شده و آماده ی استفاده قرار می گیرند. در عمل دو نوع Thread درون Thread Pool دات نت وجود دارند :

Worker Thread
I/O Thread

از ترد I/O برای انجامی عملیات های سخت افزاری مانند کار با شبکه و هارد دیسک استفاده میشود که I/O Bound هستند.


ایجاد Threadهای زیاد باعث کمبود حافظه میشود و کم بودن آنها برنامه را کند میکند. ایده آل این است که به تعداد هسته ها Thread داشته باشیم اما در عمل بسیاری از آنها درگیر عملیات های I/O میشوند و هسته بیکار می ماند.

تعداد Thread ها بسته به میزان درخواستها کم و زیاد میشود و برای محاسبه ی آن از الگوریتم Hill Climbing استفاده میشود که Self-Feedback است و خودش را اصلاح میکند. این الگوریتم با کم شدن Throughput تشخیص میدهد که باید Thread بیشتر اضافه شود.
❇️ کیفیت پایین یعنی سرعت پایین 👌

کدی پرفرمنس خوبی داره که قطعا کیفیت خوبی داشته باشه (پیچیدگی کم - خوانایی بالا - تست پذیری - توسعه پذیری و...)

🔰 چندتا از بهترین مقالات Code Quality (معیار های کد با کیفیت)

https://www.perforce.com/blog/sca/what-code-quality-and-how-improve-it

https://www.sealights.io/test-metrics/code-quality-metrics-is-your-code-any-good/

https://www.it-cisq.org/standards/code-quality-standards/

@IranAspMvc
Forwarded from کدهک
نسخه نهایی NET Core 3.0

به زودی پیش نمایش 9 از فریم ورک NET Core 3.0 عرضه میشود. با تغییر سیستم نام گذاری نسخه های دات نت دیگر نسخه ای با نام RC یا Release Candidate معرفی نمیشود و طبق اعلام مدیر فنی این نسخه به عنوان RC قابل استفاده است. به این معنی که دیگر تغییر بزرگی در راه نیست و Breaking Change نخواهیم داشت.

تیم توسعه ی دات نت در حال حاضر تمرکز اصلی خود را روی Blazor گذاشته و عملا کار زیادی روی ASP انجام نمی دهد.

طبق اعلام مایکروسافت نسخه ی نهایی Net Core 3.0 همزمان با کنفرانس NETConf در 23 سپتامبر رسما عرضه میشود که کمتر از یک ماه دیگه است.

تغییرات بزرگ و مهم نسخه 3.0 شامل اضافه شدن WinForm و WPF به Core است. همچنین Blazor به عنوان Web UI از طریق Web Assembly امکان برنامه نویسی #C در مرورگر را فراهم میکند و می تواند جایگزین خوبی برای جاوااسکریپت باشد.

ماه پیش سورس پروژه دات نت در GitHub به
5.0 تغییر نام داده شد که به این معنی است که کار روی نسخه ی بعدی دات نت شروع شده است.
📣 اطلاعیه

❇️ آدرس این کانال به DotNetZoom تغییر پیدا کرد و نام و آیکون اون هم به زودی تغییر خواهد کرد ❇️

👉 @DotNetZoom 👈 آدرس جدید کانال
Forwarded from Moien Tajik 💭
نسخه NET Core 3.0 Preview 9 تو حالت Production Ready رفت و میشه برنامه رو بهش Update کرد.

برای اطمینان ، ماکروسافت سایت خودش رو هم روی این نسخه برد ( فوتر سایت ، قسمت Powered By ).

نسخه GA ( General Availability )l اش هم ، در آخر این ماه Release میشه ✌🏻 :
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0-preview-9/


تفاوت سرعت نسخه های 2.1 و 2.2 و 3.0 خیلی محسوسه و از لحاظ Performance ای وقتی برنامه بهش آپدیت بشه ، کاملا قابل احساسه که میتونید این Improvement هارو از اینجا بخونید⚡️ :

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/