#TypeSafe_Lang
What is Type-safe?
Type-safe
به این معنی است که کامپایلر در زمان کامپایل نوع داده ها را اعتبارسنحی میکند.
و برای مثال اگر در کدتان تلاش کرده باشید که به یک متغیر String نوع داده صحیح(int) را اختصاص داده باشید کامپایلر یک ارور throw می کند.
این اتفاق حتی در هنگام اختصاص دادن مقدار با نوع اشتباه به آرگومان های یک تابع نیز می افتد.
Arraylist
از ساختمان داده NoTypeSafe در سی شارپ است و در هنگام استفاده از مقادیر موجود در آن ابتدا باید از نوع آنها مطمئن شوید.
در asp.net/AspnetCore نیز از Collection های NoTypeSafeمی توان به ViewData ,ViewBag اشاره کرد.
در مقابل ما loosely typed ها را داریم که دنیایه آزادانه ای را برای شما به وجود آورده اند
و هر مقداری با نوع متفاوت را می توانید به متغیر هایتان اختصاص دهید.
جاوا اسکریپت یک زبان loosely type می باشد.
@fullStackDevs
What is Type-safe?
Type-safe
به این معنی است که کامپایلر در زمان کامپایل نوع داده ها را اعتبارسنحی میکند.
و برای مثال اگر در کدتان تلاش کرده باشید که به یک متغیر String نوع داده صحیح(int) را اختصاص داده باشید کامپایلر یک ارور throw می کند.
این اتفاق حتی در هنگام اختصاص دادن مقدار با نوع اشتباه به آرگومان های یک تابع نیز می افتد.
Arraylist
از ساختمان داده NoTypeSafe در سی شارپ است و در هنگام استفاده از مقادیر موجود در آن ابتدا باید از نوع آنها مطمئن شوید.
در asp.net/AspnetCore نیز از Collection های NoTypeSafeمی توان به ViewData ,ViewBag اشاره کرد.
در مقابل ما loosely typed ها را داریم که دنیایه آزادانه ای را برای شما به وجود آورده اند
و هر مقداری با نوع متفاوت را می توانید به متغیر هایتان اختصاص دهید.
جاوا اسکریپت یک زبان loosely type می باشد.
@fullStackDevs
#EfCore_Best_Practice
Solve the problem 1+N in Ef Core
حل مشکل 1+N در Ef Core
این مشکل در correlated subqueries رخ میدهد.
به عنوان مثال در کوئری زیر
و به ازای هر
این مشکل با نام مشکل 1+N شناحته میشود.
از Ef Core 2.1 به بعد
کوئری اول سلکتی برای
برای انجام اینکار هم نیاز به انجام یک تغییر کوچک در کوئری خود دارید.
اطلاعات بیشتر در مورد این مسئله را می توانید در Issue 4007 مربوط به ریپازیتوری Ef Core مشاهده و دنبال کنید.
@fullStackDevs
Solve the problem 1+N in Ef Core
حل مشکل 1+N در Ef Core
این مشکل در correlated subqueries رخ میدهد.
به عنوان مثال در کوئری زیر
var query = context.Customers.Select(
c =>
c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)
);
ابتدا کوئری برای دریافت لیستی از Customers
به دیتابیس ارسال میشود .و به ازای هر
Customer
کوئری زیر c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)
ترجمه و به سمت دیتابیس ارسال میشود.این مشکل با نام مشکل 1+N شناحته میشود.
از Ef Core 2.1 به بعد
Optimization
ای برای این قبیل کوئری ها انجام شده است که از وقوع این مشکل جلوگیری میکند و سبب میشود که کوئری بالا حداکثر به دو اس کیو ال کوئری ترجمه شود.کوئری اول سلکتی برای
Customer
ها و کوئری دوم اعمال فیلتری بر روی Order
هابرای انجام اینکار هم نیاز به انجام یک تغییر کوچک در کوئری خود دارید.
var query = context.Customers.Select(
c => c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount).ToList());
کافیست به SubQuery
خود متد ToList()
را اضافه کنید .اطلاعات بیشتر در مورد این مسئله را می توانید در Issue 4007 مربوط به ریپازیتوری Ef Core مشاهده و دنبال کنید.
@fullStackDevs
GitHub
Query: Optimize navigation property translation in projections · Issue #4007 · aspnet/EntityFrameworkCore
For example, customers.Select(c => new { c.Id, Orders = c.Orders }) results in n+1 at the moment. Make sure to consider the following scenarios when looking at this: #5754 #5738 #5791
#SEO
#WebMasters
🔘 خلاصه نکات گوگل سرچ کنسول
سایت مپ #SiteMap یک فایل با فرمت XML است که دربردارنده لیست و ساختار محتوایی وبسایت است.
✔️ اطلاعاتی که سایتمپ در اختیار گوگل قرار میدهد:
1️⃣ صفحات سایت آخرین بار چه زمانی بهروزرسانی شدهاند.
2️⃣ هر چند وقت یکبار ممکن است بهروزرسانی شوند.
3️⃣ آن صفحات در مقایسه با بقیه صفحات سایت چقدر مهم هستند.
🔸 آدرس صفحات سایت باید در نقشه به صورت absolute باشند، چرا که آدرس relative را شناسایی نمیکند.
🔸 فایل robots.txt دقیقا مخالف سایتمپ عمل میکند و به گوگل میگوید کدام بخشهای سایت من را بررسی نکن.
🔸 گزینه URL Inspection همان fetch در پنل قدیمی است. در تعداد استفاده از آن به ظاهر محدودیتی وجود ندارد و زیاد استفاده کردن از آن نکته منفی در #google محسوب نمیشود.
🔸 نرخ تبدیل جایگاه اول سرچ گوگل در حال حاضر 32 درصد است. اگر در جایگاه اول هستیم و CTR پایینی داریم باید دلیل آن را بررسی کنیم و با تغییر title و metaی صفحهای که در آن جایگاه داریم نرخ تبدیل را بالا ببریم.
🔹 ایمپرشن به صورت پیشفرض مربوط به نتایج صفحه اول گوگل است، مگر اینکه کاربر وارد صفحه دو شود (آن موقع تمام لینکهای صفحه دو هم ایمپرشن میگیرند.)
- بخش Links بخش دقیق و قابل استنادی نیست، چون دادهها با تاخیر آپدیت میشوند.
🔲 سی تی آر CTR که مخفف click through rate می باشد به معنای درصد تعداد کلیک های وب سایت در تعداد نمایش وب سایت شما در نتیجه های جستجو می باشد. هر چه این درصد بالاتر باشد به معنای آن است که وب سایت موفقیت بیشتری در جذب بازدید کننده از موتورهای جستجو دارد که CTR معمولا به دو صورت کلی بر اساس کل کلمات و به صورت جزئی بر اساس کلمه کلیدی مورد نظر شما ارائه می گردد. برای آنکه CTR بالاتری داشته باشید می بایست عنوان مناسبی را برای صفحات سایت خود انتخاب نمایید تا باعث کلیک بیشتر بر روی لینک شما گردد. همچنین در کنار انتخاب عنوان جذاب و حرفه ای می بایست توضیحات meta مناسبی را در صفحات سایت خود استفاده نمایید تا کاربر با خواندن آن ترغیب به کلیک بر روی وب سایت شود.
🔳 ایمپرشن (Impression) چیست؟
ایمپرشن به تعداد نمایش وب سایت شما در موتورهای جستجو گفته می شود که این آمار نیز معمولا به صورت کلی یعنی برای کل سایت و به صورت جزئی که بر اساس هر کلمه کلیدی ارائه می گردد. در گوگل وبمستر تولز می توانید آمار نمایش وب سایت خود را برای تک تک کلمات کلیدی مشاهده نمایید. Impression بالای وب سایت وابسته به تعداد جستجوی کاربران و جایگاه وب سایت در موتورهای جستجو می باشد. به عنوان مثال در صورتی که سایت برای کلمه کلیدی صفحه اول باشد Impression سایت تعداد کامل جستجوی های انجام گرفته کلمه کلیدی می باشد و در صورتی که سایت صفحات دوم وب سایت Impression سایت تعداد کاربرانی از موتور جستجو را نمایش می دهد که وارد صفحه دوم وب سایت شده اند.
@fullStackDevs
#WebMasters
🔘 خلاصه نکات گوگل سرچ کنسول
سایت مپ #SiteMap یک فایل با فرمت XML است که دربردارنده لیست و ساختار محتوایی وبسایت است.
✔️ اطلاعاتی که سایتمپ در اختیار گوگل قرار میدهد:
1️⃣ صفحات سایت آخرین بار چه زمانی بهروزرسانی شدهاند.
2️⃣ هر چند وقت یکبار ممکن است بهروزرسانی شوند.
3️⃣ آن صفحات در مقایسه با بقیه صفحات سایت چقدر مهم هستند.
🔸 آدرس صفحات سایت باید در نقشه به صورت absolute باشند، چرا که آدرس relative را شناسایی نمیکند.
🔸 فایل robots.txt دقیقا مخالف سایتمپ عمل میکند و به گوگل میگوید کدام بخشهای سایت من را بررسی نکن.
🔸 گزینه URL Inspection همان fetch در پنل قدیمی است. در تعداد استفاده از آن به ظاهر محدودیتی وجود ندارد و زیاد استفاده کردن از آن نکته منفی در #google محسوب نمیشود.
🔸 نرخ تبدیل جایگاه اول سرچ گوگل در حال حاضر 32 درصد است. اگر در جایگاه اول هستیم و CTR پایینی داریم باید دلیل آن را بررسی کنیم و با تغییر title و metaی صفحهای که در آن جایگاه داریم نرخ تبدیل را بالا ببریم.
🔹 ایمپرشن به صورت پیشفرض مربوط به نتایج صفحه اول گوگل است، مگر اینکه کاربر وارد صفحه دو شود (آن موقع تمام لینکهای صفحه دو هم ایمپرشن میگیرند.)
- بخش Links بخش دقیق و قابل استنادی نیست، چون دادهها با تاخیر آپدیت میشوند.
🔲 سی تی آر CTR که مخفف click through rate می باشد به معنای درصد تعداد کلیک های وب سایت در تعداد نمایش وب سایت شما در نتیجه های جستجو می باشد. هر چه این درصد بالاتر باشد به معنای آن است که وب سایت موفقیت بیشتری در جذب بازدید کننده از موتورهای جستجو دارد که CTR معمولا به دو صورت کلی بر اساس کل کلمات و به صورت جزئی بر اساس کلمه کلیدی مورد نظر شما ارائه می گردد. برای آنکه CTR بالاتری داشته باشید می بایست عنوان مناسبی را برای صفحات سایت خود انتخاب نمایید تا باعث کلیک بیشتر بر روی لینک شما گردد. همچنین در کنار انتخاب عنوان جذاب و حرفه ای می بایست توضیحات meta مناسبی را در صفحات سایت خود استفاده نمایید تا کاربر با خواندن آن ترغیب به کلیک بر روی وب سایت شود.
🔳 ایمپرشن (Impression) چیست؟
ایمپرشن به تعداد نمایش وب سایت شما در موتورهای جستجو گفته می شود که این آمار نیز معمولا به صورت کلی یعنی برای کل سایت و به صورت جزئی که بر اساس هر کلمه کلیدی ارائه می گردد. در گوگل وبمستر تولز می توانید آمار نمایش وب سایت خود را برای تک تک کلمات کلیدی مشاهده نمایید. Impression بالای وب سایت وابسته به تعداد جستجوی کاربران و جایگاه وب سایت در موتورهای جستجو می باشد. به عنوان مثال در صورتی که سایت برای کلمه کلیدی صفحه اول باشد Impression سایت تعداد کامل جستجوی های انجام گرفته کلمه کلیدی می باشد و در صورتی که سایت صفحات دوم وب سایت Impression سایت تعداد کاربرانی از موتور جستجو را نمایش می دهد که وارد صفحه دوم وب سایت شده اند.
@fullStackDevs
#FluentScheduler
زمانبندی خودکار با
Introducing Automated job scheduler with fluent interface.
A library to run scheduled jobs
Nuget Command for install that
@fullStackDevs
زمانبندی خودکار با
FluentScheduler
برای پلت فرم NET.Introducing Automated job scheduler with fluent interface.
A library to run scheduled jobs
Nuget Command for install that
Install-Package FluentScheduler
Documentation : FluentScheduler on Github@fullStackDevs
GitHub
GitHub - fluentscheduler/FluentScheduler: Automated job scheduler with fluent interface for the .NET platform.
Automated job scheduler with fluent interface for the .NET platform. - fluentscheduler/FluentScheduler
#Chart
APEXCHARTS.JS
نمودار های منبع باز مدرن و تعاملی
Modern & Interactive Open-source Charts
https://apexcharts.com/
@fullStackDevs
APEXCHARTS.JS
نمودار های منبع باز مدرن و تعاملی
Modern & Interactive Open-source Charts
https://apexcharts.com/
@fullStackDevs
#GenericRepository
One of the Loose Coupling Champion in our Apps Architecture
#RepositoryPattern_along_with_Ef
این ویدیو به بررسی استفاده از Unit Of Work And Repository pattern در کنار Entity Framework پرداخته است .
موارد مطرح شده در ویدیو :
1- آیا باید Repository Pattern در کنار Entity Framework استفاده بکنیم یا نکنیم ؟
2- مزایای استفاده از این الگو چیست ؟
3-پاسخ به سوال کسانی که همیشه این سوال رو میپرسن ایا اصلا ممکن است (persistence framework) (منظور Entity framework)برنامه مان تغییر کند؟
4- چطور Repository Pattern معماری پروژه مارا Loose Coupling نگه میدارد.
5- چرا Repository های ما نباید متد Update و Save داشته باشد.
6-پیاده سازی صحیح این الگو در کنار Entity Framework
مشاهده در یوتیوب :
https://youtu.be/rtXpYpZdOzM
Keep YourSelves Professional
@fullStackDevs
One of the Loose Coupling Champion in our Apps Architecture
#RepositoryPattern_along_with_Ef
این ویدیو به بررسی استفاده از Unit Of Work And Repository pattern در کنار Entity Framework پرداخته است .
موارد مطرح شده در ویدیو :
1- آیا باید Repository Pattern در کنار Entity Framework استفاده بکنیم یا نکنیم ؟
2- مزایای استفاده از این الگو چیست ؟
3-پاسخ به سوال کسانی که همیشه این سوال رو میپرسن ایا اصلا ممکن است (persistence framework) (منظور Entity framework)برنامه مان تغییر کند؟
4- چطور Repository Pattern معماری پروژه مارا Loose Coupling نگه میدارد.
5- چرا Repository های ما نباید متد Update و Save داشته باشد.
6-پیاده سازی صحیح این الگو در کنار Entity Framework
مشاهده در یوتیوب :
https://youtu.be/rtXpYpZdOzM
Keep YourSelves Professional
@fullStackDevs
YouTube
Repository Pattern with C# and Entity Framework, Done Right | Mosh
🔥Get the COMPLETE Entity Framework course (80% OFF - LIMITED TIME): http://bit.ly/2rZAgrD
Want to learn more from me? Check out my these links:
Courses: https://codewithmosh.com
Blog: https://www.programmingwithmosh.com/
Facebook: https://www.facebook.c…
Want to learn more from me? Check out my these links:
Courses: https://codewithmosh.com
Blog: https://www.programmingwithmosh.com/
Facebook: https://www.facebook.c…
Forwarded from MentorDev
طراحی UI/UX فرایند و مراحل خاصی دارد که هر فرد خلاق از اونها استفاده میکند.
1- مرحله کشف: شروع به تحقیق کردن، الهام گرفتن و جمع کردن ایدهها.
2- مرحله تعریف: تعریف چیزی که کشف شده است.
3- توسعه: طراحی کانسپت و پروتوتایپ، فرایند آزمون و خطا برای بهبود و اصلاح ایدهها.
4- تحویل: مرحله آخر، محصول نهایی شده و با موفقیت اجرا شده.
@frontdevir
1- مرحله کشف: شروع به تحقیق کردن، الهام گرفتن و جمع کردن ایدهها.
2- مرحله تعریف: تعریف چیزی که کشف شده است.
3- توسعه: طراحی کانسپت و پروتوتایپ، فرایند آزمون و خطا برای بهبود و اصلاح ایدهها.
4- تحویل: مرحله آخر، محصول نهایی شده و با موفقیت اجرا شده.
@frontdevir
#EfCore_Best_Practice
#Explicit_compiled_queries
در این پست به معرفی یک ویژگی باحال که از EF 5 به بعد و در LINQ to SQL نیز وجود داشت و در EF Core از نسخه 2.0 به آن افزوده شد می پردازیم.
در ابتدا Ef Core در ورژن 1.0 ویژگی query caching را معرفی کرد . این ویژگی علاوه بر پرفورمنسی که دارد اما دارای سربارهایی نیز است.
هر کوئری برای کش شدن و نگه داری آن در حافظه و سپس استفاده مجدد از آن به یک کلید هش شده نیاز دارد که تولید این کلید هش شده از روی Query Expression سرباری دارد.
اما از نسخه Ef Core2.0 ویژه گی query compilation به آن اضافه شده.
در این حالت کوئری یک بار کامپایل شده و در حافظه نگه داری میشود و می توانید به هر دفعات که خواستید از ان استفاده کنید.
Example:
usage :
1-کوئری تان قرار است خیلی بیشتر از یک بار متوالی اجرا شود.
2-کوئری شما به قدر کافی پیچیده است و هزینه هربار کامپایل ان زیاد است.
* نکته اول اگر دلیگیت کامپایل کوئری مورد نظر خود را به صورت استاتیک تعریف کنید می توانید در تمام نمونه های ApplicationDbContext خود از آن استفاده کنید.
*نکته دوم نسخه جاری Ef Core هنوز نوع خروجی
@fullStackDevs
#Explicit_compiled_queries
در این پست به معرفی یک ویژگی باحال که از EF 5 به بعد و در LINQ to SQL نیز وجود داشت و در EF Core از نسخه 2.0 به آن افزوده شد می پردازیم.
در ابتدا Ef Core در ورژن 1.0 ویژگی query caching را معرفی کرد . این ویژگی علاوه بر پرفورمنسی که دارد اما دارای سربارهایی نیز است.
هر کوئری برای کش شدن و نگه داری آن در حافظه و سپس استفاده مجدد از آن به یک کلید هش شده نیاز دارد که تولید این کلید هش شده از روی Query Expression سرباری دارد.
اما از نسخه Ef Core2.0 ویژه گی query compilation به آن اضافه شده.
در این حالت کوئری یک بار کامپایل شده و در حافظه نگه داری میشود و می توانید به هر دفعات که خواستید از ان استفاده کنید.
Example:
private static Func<AdventureWorksContextDI, int, Orders> _getOrderById =
EF.CompileQuery((AdventureWorksContextDI context, int id) =>
context.WorkOrders.Select(
x => new Orders
{
Id = x.WorkOrderId,
ProductName = x.Product.Name,
Quantity = x.OrderQty,
Date = x.DueDate
}).FirstOrDefault(x => x.Id == id));
usage :
public Orders GetOrderByIdCompiled(int id)
{
return _getOrderById(_context, id);
}
چه زمانی از این ویژگی استفاده کنیم ؟1-کوئری تان قرار است خیلی بیشتر از یک بار متوالی اجرا شود.
2-کوئری شما به قدر کافی پیچیده است و هزینه هربار کامپایل ان زیاد است.
* نکته اول اگر دلیگیت کامپایل کوئری مورد نظر خود را به صورت استاتیک تعریف کنید می توانید در تمام نمونه های ApplicationDbContext خود از آن استفاده کنید.
*نکته دوم نسخه جاری Ef Core هنوز نوع خروجی
List<T>را برای یک کامپل کوئری پشتیبانی نمیکند.
@fullStackDevs
#EntityFrameworkCore_Cacheable
A high-performance second-level query cache for EF Core.
این کتابخانه از معدود کتابخانه های کش سطح دوم برای Ef Core میباشد و قابلیتی را برای کش کردن انواع query result ها در Ef Core فراهم می اورد.
Nuget Command for install that
@fullStackDevs
A high-performance second-level query cache for EF Core.
این کتابخانه از معدود کتابخانه های کش سطح دوم برای Ef Core میباشد و قابلیتی را برای کش کردن انواع query result ها در Ef Core فراهم می اورد.
Nuget Command for install that
Install-Package EntityFrameworkCore.Cacheable
Documentation : EntityFrameworkCore.Cacheable on Github@fullStackDevs
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.
#قسمت_اول
#MessagePack
در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم.
🔸 مشکل کجاست ؟
مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین و زمان بر باشد.
🔹 چگونه مشکل رو حل کنیم
راه حل استفاده از فرمت های انتقال اطلاعات سریع تر و سبک تر و کم حجم تر مانند MessagePack می باشد.
#MessagePack
مسیج پک یک فرمت باینری سریالاز و دیسریالایز سازی است که سریع ، کم حجم و بسیار جمع و جور تر از JSON و یا BSON میباشد.علاوه بر این تقریبا میتواند هر چیزی که توسط JSON قابل نمایش است را نمایش دهد. و در تمامی زبان های کاربردی و پدر و مادر دار پشتیبانی میشود.با این وجود شما میتوانید از این فرمت در API های خود نیز استفاده کنید.
🔻 سرعت و کارایی و مزایایی که این فرمت انتقال داده دارد را می توان ناشی از انواع داده ای که برای نمایش اطلاعات استفاده میکند دانست. برای مثال :
▪️ جیسون(JSON) از چهار بایت برای نمایش NULL استفاده میکند اما MessagePack تنها 1 بایت.
▪️ جیسون(JSON) از 2 بایت برای نمایش Int معمولی استفاده میکند. اما MessagePack نهایتا 1 بایت.
▪️ و از انجایی که این فرمت باینری میباشد. برای خواندن و نوشتن از JSON سریعتر است.
همچنین میتوانید اطلاعات بیشتری در مورد این فرمت و زبان هایی که از آن پشتیبانی میکنند را در این وب سایت msgpack.org مشاهده کنید.
مشخصات کاملتری از ان نیز در این ریپازیتوری در دسترس است.
در قسمت بعد به استفاده از آن در Asp.NetCore می پردازیم.
@fullStackDevs
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
#MessagePack
در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم.
🔸 مشکل کجاست ؟
مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین و زمان بر باشد.
🔹 چگونه مشکل رو حل کنیم
راه حل استفاده از فرمت های انتقال اطلاعات سریع تر و سبک تر و کم حجم تر مانند MessagePack می باشد.
#MessagePack
مسیج پک یک فرمت باینری سریالاز و دیسریالایز سازی است که سریع ، کم حجم و بسیار جمع و جور تر از JSON و یا BSON میباشد.علاوه بر این تقریبا میتواند هر چیزی که توسط JSON قابل نمایش است را نمایش دهد. و در تمامی زبان های کاربردی و پدر و مادر دار پشتیبانی میشود.با این وجود شما میتوانید از این فرمت در API های خود نیز استفاده کنید.
🔻 سرعت و کارایی و مزایایی که این فرمت انتقال داده دارد را می توان ناشی از انواع داده ای که برای نمایش اطلاعات استفاده میکند دانست. برای مثال :
▪️ جیسون(JSON) از چهار بایت برای نمایش NULL استفاده میکند اما MessagePack تنها 1 بایت.
▪️ جیسون(JSON) از 2 بایت برای نمایش Int معمولی استفاده میکند. اما MessagePack نهایتا 1 بایت.
▪️ و از انجایی که این فرمت باینری میباشد. برای خواندن و نوشتن از JSON سریعتر است.
همچنین میتوانید اطلاعات بیشتری در مورد این فرمت و زبان هایی که از آن پشتیبانی میکنند را در این وب سایت msgpack.org مشاهده کنید.
مشخصات کاملتری از ان نیز در این ریپازیتوری در دسترس است.
در قسمت بعد به استفاده از آن در Asp.NetCore می پردازیم.
@fullStackDevs
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
GitHub
msgpack/spec.md at master · msgpack/msgpack
MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small. - msgpack/msgpack
شما یک Geek هستید یا nerd ؟
یک Geek کیست؟
یک گیک (Geek) کسی است که بسیار باهوش و آگاه حتی در مرحله ای از وسواس فکری در مورد یک موضوع خاص است. گیک (Geek) کسی است که وقتیدر یک مسیر اصلی قرار میگیرد یک کشش یا علاقه ی وافری را کسب میکند و در اصطلاح کسی است که با رفتار عجیب غریب اش تعریف میشود ولی معانی دیگری مانند متخصص یا علاقمند رایانه نیز دارد همچنین در بعضی مفاهیم “رایانه باز” هم میگویند.
گیکها اصولا درس و دانشگاه را بیخیال شدهاند و پی علاقه خود میروند. مدیران اغلب شرکت های بزرگ فناوری دنیا، از دسته گیکها به شمار میایند.
یک nerd کیست؟
شخصی است که از نظر فکری روی یک موضوع خاص تمرکز شدید دارد و از نظر اجتماعی با مشکل مواجه است در حقیقت. فرد نرد (nerd ) زمان زیادی را صرف کارهایی میکند که برای عموم مردم جذاب نیست.
به کسانی گفته میشود که دانشی قدرتمند در زمینه خاصی دارند ولی این دانش را نه برای پول و نه برای مقبولیت اجتماعی، بلکه به خاطر دل خودشان بدست میاورند. نردها معمولا از طرف اجتماعات مختلف طرد میشوند، در ارتباط با جنس مخالف دچار مشکل هستند، ظاهر ژولیدهای دارند و اگر کسی پیدا نشود که از نبوغشان استفاده کند از لحاظ مالی دچار مشکل میشوند. با اینحال هیچ کدام از اینها برایشان اهمیتی ندارد و می توانند با ساعاتی کد زدن! همه آن را فراموش کنند.
مقایسه یک Geek و nerd
مشخص کردن مرز دقیق یک گیک با یک نرد کار سختی است و همین، نوعی کری خوانی بین آنها بوجود آورده است.
نرد ها دوست دارند از لهجه خاصی یا لغات و اصطلاحات عجیب و ناشناخته ای در گفتگو هایشان استفاده کنند در حالیکه گیک ها به ندرت از منبع های گنگ و نامفهوم استفاده خواهند کرد .
گیک ها اغلب به جزییات جهان کوچک زندگی علاقمند هستند مانند توجه به موقعیت درحال حاضر شما که بیشتر به یک مقاله خبری یا یک رمان است.نرد ها ظاهرا علاقمند به جزییات زندگی روزانه نیستند بیشتر روی مسائل قابل رویت و بزرگ تمرکز میکنند مثل احتمالات علمی و آینده بشریت.
یک گیک (Geek) توانایی های اجتماعی معمولی دارد اگر چه آن ها میتوانند پر مدعا و پرگو باشند مخصوصا وقتی مسئله ای در زمینه علاقه ها و تعصباتشان اتفاق میوفت در این صورت به شما اجازه رفتن نمیدهند تا وقتی که مثلا طرز کار فلان چیز ویا سرگذشت فلان کس ویا وجود آمدن فلان قسمترا دقیقا توصیح دهند.
یک نرد (Nerd) معمولا دورنگرا است آن ها ممکن است یک حجم بزرگی را درمورد دقیقا همان چیزی که یک گیک (Geek) در ان تخصص یافته است بدانند اما آن ها همان چیز را با حرف زدن و بحث کردن انجام بعضی کارها بدست می آورند.
یک حقیقت کلی است که گیک ها میتوانند فکر و ذکر هر کسی را مشغول کنند و یا به عبارت دیگر هر کسی را دوست داشته باشند.(اگر چه خلاف آن ممکن است درست نباشد)
با این حال بیشتر نرد ها فقط هم گروه های خود را دوست دارند یعنی همان نردها .
گیک ها روابط اجتماعی خوبی دارند، بازی های دسته جمعی بیشتری انجام میدهند، به کافه می روند و اگر کسی را پیدا کنند که به گجت مورد علاقه آنها، گوشه علاقهای نشان دهد تا وقتی که تمام ابعاد گجت و سن مادربزرگ سازنده اسپیکرهای گجت را نگفتهاند، بیخیال نخواهند شد. از سوی مقابل، نردها هرچند ممکن است اطلاعات دقیقتری راجع به همان گجت داشته باشند ولی به محرک بسیاری قویتری برای صحبت راجع به آن نیاز دارند، آنها بیشتر با کسانی که بعنوان نرد قبولشان کرده اند در ارتباط اند و در اکثر مواقع برای ازدواج خود یک نرد را انتخاب می کنند. در حالی که یک گیک، ممکن است یک مدل لباس را هم برای ازدواج انتخاب کند.
تعداد افرادی که خود را گیک مینامند و یا بقیه آنها را بعنوان نرد میشناسند هر روز در حال افزایش است. عضویت در جامعهای متمایز که زبان و ادبیات مخصوص به خود را دارد و در اکثر مواقع به دنبال تبدیل کردن دنیا به جای بهتری برای زندگی کردن است، میتواند دلایل منطقی و روانی بسیاری داشته باشد. سرمایه گذاری تبلیغاتی کشورهای توسعه یافته روی این موضوع و تولید سریال های پرطرفداری مانند big bang theory و IT CROWDS نشان از اهمیت فعالیت های نسل نردها و گیکها دارد.
@fullStackDevs
مترجم خانم افسانه عابدینی
منبع :
http://alihossein.ir/tutorials/%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-geek-nerd-%DA%86%DB%8C%D8%B3%D8%AA
یک Geek کیست؟
یک گیک (Geek) کسی است که بسیار باهوش و آگاه حتی در مرحله ای از وسواس فکری در مورد یک موضوع خاص است. گیک (Geek) کسی است که وقتیدر یک مسیر اصلی قرار میگیرد یک کشش یا علاقه ی وافری را کسب میکند و در اصطلاح کسی است که با رفتار عجیب غریب اش تعریف میشود ولی معانی دیگری مانند متخصص یا علاقمند رایانه نیز دارد همچنین در بعضی مفاهیم “رایانه باز” هم میگویند.
گیکها اصولا درس و دانشگاه را بیخیال شدهاند و پی علاقه خود میروند. مدیران اغلب شرکت های بزرگ فناوری دنیا، از دسته گیکها به شمار میایند.
یک nerd کیست؟
شخصی است که از نظر فکری روی یک موضوع خاص تمرکز شدید دارد و از نظر اجتماعی با مشکل مواجه است در حقیقت. فرد نرد (nerd ) زمان زیادی را صرف کارهایی میکند که برای عموم مردم جذاب نیست.
به کسانی گفته میشود که دانشی قدرتمند در زمینه خاصی دارند ولی این دانش را نه برای پول و نه برای مقبولیت اجتماعی، بلکه به خاطر دل خودشان بدست میاورند. نردها معمولا از طرف اجتماعات مختلف طرد میشوند، در ارتباط با جنس مخالف دچار مشکل هستند، ظاهر ژولیدهای دارند و اگر کسی پیدا نشود که از نبوغشان استفاده کند از لحاظ مالی دچار مشکل میشوند. با اینحال هیچ کدام از اینها برایشان اهمیتی ندارد و می توانند با ساعاتی کد زدن! همه آن را فراموش کنند.
مقایسه یک Geek و nerd
مشخص کردن مرز دقیق یک گیک با یک نرد کار سختی است و همین، نوعی کری خوانی بین آنها بوجود آورده است.
نرد ها دوست دارند از لهجه خاصی یا لغات و اصطلاحات عجیب و ناشناخته ای در گفتگو هایشان استفاده کنند در حالیکه گیک ها به ندرت از منبع های گنگ و نامفهوم استفاده خواهند کرد .
گیک ها اغلب به جزییات جهان کوچک زندگی علاقمند هستند مانند توجه به موقعیت درحال حاضر شما که بیشتر به یک مقاله خبری یا یک رمان است.نرد ها ظاهرا علاقمند به جزییات زندگی روزانه نیستند بیشتر روی مسائل قابل رویت و بزرگ تمرکز میکنند مثل احتمالات علمی و آینده بشریت.
یک گیک (Geek) توانایی های اجتماعی معمولی دارد اگر چه آن ها میتوانند پر مدعا و پرگو باشند مخصوصا وقتی مسئله ای در زمینه علاقه ها و تعصباتشان اتفاق میوفت در این صورت به شما اجازه رفتن نمیدهند تا وقتی که مثلا طرز کار فلان چیز ویا سرگذشت فلان کس ویا وجود آمدن فلان قسمترا دقیقا توصیح دهند.
یک نرد (Nerd) معمولا دورنگرا است آن ها ممکن است یک حجم بزرگی را درمورد دقیقا همان چیزی که یک گیک (Geek) در ان تخصص یافته است بدانند اما آن ها همان چیز را با حرف زدن و بحث کردن انجام بعضی کارها بدست می آورند.
یک حقیقت کلی است که گیک ها میتوانند فکر و ذکر هر کسی را مشغول کنند و یا به عبارت دیگر هر کسی را دوست داشته باشند.(اگر چه خلاف آن ممکن است درست نباشد)
با این حال بیشتر نرد ها فقط هم گروه های خود را دوست دارند یعنی همان نردها .
گیک ها روابط اجتماعی خوبی دارند، بازی های دسته جمعی بیشتری انجام میدهند، به کافه می روند و اگر کسی را پیدا کنند که به گجت مورد علاقه آنها، گوشه علاقهای نشان دهد تا وقتی که تمام ابعاد گجت و سن مادربزرگ سازنده اسپیکرهای گجت را نگفتهاند، بیخیال نخواهند شد. از سوی مقابل، نردها هرچند ممکن است اطلاعات دقیقتری راجع به همان گجت داشته باشند ولی به محرک بسیاری قویتری برای صحبت راجع به آن نیاز دارند، آنها بیشتر با کسانی که بعنوان نرد قبولشان کرده اند در ارتباط اند و در اکثر مواقع برای ازدواج خود یک نرد را انتخاب می کنند. در حالی که یک گیک، ممکن است یک مدل لباس را هم برای ازدواج انتخاب کند.
تعداد افرادی که خود را گیک مینامند و یا بقیه آنها را بعنوان نرد میشناسند هر روز در حال افزایش است. عضویت در جامعهای متمایز که زبان و ادبیات مخصوص به خود را دارد و در اکثر مواقع به دنبال تبدیل کردن دنیا به جای بهتری برای زندگی کردن است، میتواند دلایل منطقی و روانی بسیاری داشته باشد. سرمایه گذاری تبلیغاتی کشورهای توسعه یافته روی این موضوع و تولید سریال های پرطرفداری مانند big bang theory و IT CROWDS نشان از اهمیت فعالیت های نسل نردها و گیکها دارد.
@fullStackDevs
مترجم خانم افسانه عابدینی
منبع :
http://alihossein.ir/tutorials/%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-geek-nerd-%DA%86%DB%8C%D8%B3%D8%AA
alihossein.ir
شما Geek هستین یا Nerd ?
در این جلسه درباره گیک ها (Geek کیست) و Nerd کیستها صحبت میکنیم و به تفاوت های این دو مفهموم می پردازیم .چگونه تفاوت بین نرد و گیک ها را بیان کنیم. شما یک نرد (Nerd) هستید یا یک گیک (Geek) هستید. نرد یا گیک بودن یعنی تعریف از کسی یا مخالفت کردن با کسی؟؟!!
Web Devs
#قسمت_اول #MessagePack در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم. 🔸 مشکل کجاست ؟ مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین…
#قسمت_دوم
#قسمت_آخر
#MessagePack
در این قسمت به معرفی نیوگت پکیج هایی برای راه اندازی و استفاده از MessagePack در Asp.NetCore می پردازیم.
به صورت توکار این قابلیت برای فریم وورک AspNetCore پیاده سازی نشده و بایستی با نصب Third party library هایی از آن استفاده کنید .همچنین می توانید از MessagePack به همراه SignalR و WebApi و برنامه های کنسول اپلیکیشنی و ویندوز اپلیکیشنی و .. با نصب نیوگت پکیج مربوطه استفاده کنید.
کتابخانه های بسیاری برای اینکار وجود دارد که در اینجا به معرفی تعدادی از آنها میپردازیم.
مشهورترین آنها
این کتابخانه Extension های زیادی دارد که یکی از آنها
از دیگر پکیج ها برای استفاده از MessagePack پکیج
همانطور که گفتیم از MessagePack به همراه سیگنال آر نیز میتوانید استفاده کنید . برای اینکار بایستی پکیج
همچنین اگر دارید از سیگنال آر با یک Client جاوااسکریپتی استفاده میکنید باید npm پکیج زیر
📢 @fullStackDevs
#قسمت_آخر
#MessagePack
در این قسمت به معرفی نیوگت پکیج هایی برای راه اندازی و استفاده از MessagePack در Asp.NetCore می پردازیم.
به صورت توکار این قابلیت برای فریم وورک AspNetCore پیاده سازی نشده و بایستی با نصب Third party library هایی از آن استفاده کنید .همچنین می توانید از MessagePack به همراه SignalR و WebApi و برنامه های کنسول اپلیکیشنی و ویندوز اپلیکیشنی و .. با نصب نیوگت پکیج مربوطه استفاده کنید.
کتابخانه های بسیاری برای اینکار وجود دارد که در اینجا به معرفی تعدادی از آنها میپردازیم.
مشهورترین آنها
🔹 Install-Package MessagePack
میباشد که Documentation کامل و مفصل آن را در این ریپازیتوری میتوانید مشاهده و مطالعه کنید.این کتابخانه Extension های زیادی دارد که یکی از آنها
🔹Install-Package MessagePack.AspNetCoreMvcFormatter
است که به شما امکان استفاده از MessagePack در AspNetCoreMvc را میدهد. برای استفاده و فعالسازی سرویس های آن در AspCoreMvc و طریقه کانفیگ کردن و استفاده از آنرا را در این لینک می توانید ببینیید.از دیگر پکیج ها برای استفاده از MessagePack پکیج
🔹Install-Package WebApiContrib.Core.Formatter.MessagePack
میباشد.که بعد از نصب آن میتونید با افزودن سرویسش در ConfigureServices
از آن استفاده کنید.توضیحات مختصری از این پکیج و نحوه کانفیگ در این لینک قابل دسترس است. همانطور که گفتیم از MessagePack به همراه سیگنال آر نیز میتوانید استفاده کنید . برای اینکار بایستی پکیج
🔹Install-Package
Microsoft.AspNetCore.SignalR.Protocols.MessagePack
را نصب کرده و از آن استفاده کنید .Documentation در این لینک .همچنین اگر دارید از سیگنال آر با یک Client جاوااسکریپتی استفاده میکنید باید npm پکیج زیر
🔹npm install @aspnet/signalr-protocol-msgpack
که شامل اسکریپت های مورد نیاز برای استفاده از MessagePack در سمت Client به همراه سیگنال آر هست را نصب کنید.Documentation در این لینک .📢 @fullStackDevs
GitHub
GitHub - MessagePack-CSharp/MessagePack-CSharp: Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin).…
Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin). / msgpack.org[C#] - MessagePack-CSharp/MessagePack-CSharp
Web Devs
Photo
#NewVersion
#ABluePersianDateTimePicker
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر پلاگین فعال میشوند
data-abdatetimepicker="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
✔️ ورژن جدید ریلیز شده :
#ABluePersianDateTimePicker
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر پلاگین فعال میشوند
data-abdatetimepicker="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"🔸 با اتریبوت زیر مشخص میکنید وقتی روی تاریخی انتخاب کردین مقدار کجا وارد شود
data-targetselector="[data-name='end-date']"🔹 با اتریبوت زیر میتونید تعیین کنید با کدام ایونت روی المنت فعال شود مثل
data-trigger="click"🔸 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"🔹 با اتریبوت زیر میتوانید روزهای بعد از روز جاری را غیر فعال کنید:
data-disableaftertoday="true"🔸 با اتریبوت زیر میتوانید تعیین کنید وقتی پلاگین باز میشود در کجای المنت باز شود مثلا وقتی میخوایین بالای المنت پلاگین باز شود :
data-Placement="top"🔹 با اتریبوت زیر میتونید تاریخ میلادی را استفاده کنید
data-isgregorian="true"🔸 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"البته یه سمپل page زمانی که پکیج رو نصب کنید توی فولدر Static به نام SampleDateTime.html اضافه خواهد شد که شما میتونید سمپل تگ استفاده از این پلاگین رو ببینید.
✔️ ورژن جدید ریلیز شده :
Install-Package ABluePersianDateTimePicker -Version 1.0.5@fullStackDevs
dotnet add package ABluePersianDateTimePicker --version 1.0.5
<PackageReference Include="ABluePersianDateTimePicker" Version="1.0.5" />
paket add ABluePersianDateTimePicker --version 1.0.5
#OAuth
در این پست می آموزیم که OAuth چیست.
درابتدا باید بدانیم که OAuth مخفف Open Authorization میباشد.
🔳 OAuth
یک پروتکل برای اهدای مجوز برای دسترسی به اطلاعات کاربر توسط اپلیکیشنی دیگر است.
🔸 این پروتکل ابتدا در سال 2007 معرفی شد و توسط توییتر استفاده شد و با توجه به استقبال و گستردگی ان در سال 2010 نسخه OAuth 2.0 توسط IEFT (جامعه بین المللی آزاد از طراحان شبکه ، اپراتورها ، فروشندگان و محققانی است که بر روی تدوین استانداردهای فنی برای اینترنت کار می کنند.) معرفی شد.
▪️ برای مثال ممکن است موقع ثبت نام در سایتی گزینه هایی همچون “login with Google” یا “login with Facebook” را دیده باشید که عملیات login را بسیار ساده میکند و با اعطای مجوز دسترسی به اطلاعاتتان به سایتی که میخواهید در آن حساب بسازید عملیات ورود و ساخت حساب را انجام میدهید.
سه اجزایی که در یک مکانیزم OAuth وجود دارند عبارتند از :
1️⃣ OAuth Provider,Resource Provider
سرویسی که با دریافت تاییدیه امکان استفاده از اطلاعات کاربر را به یک اپلیکیشن دیگر میدهد. مانند گوگل ، فیس بوک و... که بایستی پروتکل OAuth را پیاده سازی کرده باشد.
2️⃣ OAuth Client
وب سایت یا اپلیکیشنی که اجازه دسترسی به اطلاعاتمان را به آن میدهیم.
3️⃣ Resource Owner
شخصی که اطلاعات آن در اختیار Resource Provider است.
طی این فرایند شما با اعطای مجوز به OAuth Client و دریافت یک access token این امکان را به OAuth Client میدهید که به اطلاعات شما از طریق آن access token دسترسی داشته باشد .
@fullStackDevs
در این پست می آموزیم که OAuth چیست.
درابتدا باید بدانیم که OAuth مخفف Open Authorization میباشد.
🔳 OAuth
یک پروتکل برای اهدای مجوز برای دسترسی به اطلاعات کاربر توسط اپلیکیشنی دیگر است.
🔸 این پروتکل ابتدا در سال 2007 معرفی شد و توسط توییتر استفاده شد و با توجه به استقبال و گستردگی ان در سال 2010 نسخه OAuth 2.0 توسط IEFT (جامعه بین المللی آزاد از طراحان شبکه ، اپراتورها ، فروشندگان و محققانی است که بر روی تدوین استانداردهای فنی برای اینترنت کار می کنند.) معرفی شد.
▪️ برای مثال ممکن است موقع ثبت نام در سایتی گزینه هایی همچون “login with Google” یا “login with Facebook” را دیده باشید که عملیات login را بسیار ساده میکند و با اعطای مجوز دسترسی به اطلاعاتتان به سایتی که میخواهید در آن حساب بسازید عملیات ورود و ساخت حساب را انجام میدهید.
سه اجزایی که در یک مکانیزم OAuth وجود دارند عبارتند از :
1️⃣ OAuth Provider,Resource Provider
سرویسی که با دریافت تاییدیه امکان استفاده از اطلاعات کاربر را به یک اپلیکیشن دیگر میدهد. مانند گوگل ، فیس بوک و... که بایستی پروتکل OAuth را پیاده سازی کرده باشد.
2️⃣ OAuth Client
وب سایت یا اپلیکیشنی که اجازه دسترسی به اطلاعاتمان را به آن میدهیم.
3️⃣ Resource Owner
شخصی که اطلاعات آن در اختیار Resource Provider است.
طی این فرایند شما با اعطای مجوز به OAuth Client و دریافت یک access token این امکان را به OAuth Client میدهید که به اطلاعات شما از طریق آن access token دسترسی داشته باشد .
@fullStackDevs
#OpenID
💡 What is Open ID?
در پست های قبل به OAuth پرداختیم و گفتیم که این پروتکل مختص به Authorization است و با ارائه یک توکن دسترسی اجازه استفاده از اطلاعات را میدهد و اپلیکیشن جانبی مان اطلاعاتی در مورد کاربر جاری که از این توکن استفاده میکند ،ندارد.
اما اپن آیدی پروتکلی برای authentication و تصدیق هویت میباشد این پروتکل لایه ای بر روی OAuth 2.0 میباشد .
با استفاده از این پروتکل، Token ID ای دریافت میکنید که JWT بوده و اپلیکیشن جانبی تان علاوه بر دسترسی از طریق این توکن اطلاعاتی هم درباره کاربر جاری دارد.
اپن آیدی اجازه استفاده از یک حساب(اکانت) برای چندین سایت بدون اینکه نیاز به تغییر رمز عبور داشته باشید میدهد.
💢 مراحل انجام کار
1. ارسال اطلاعات کلاینت به Identity Provider
2. دریافت این اطلاعات در سمت Identity Provider و شناسایی و لاگین کاربر
3. ارسال یک Access Token و یک ID Token (اگر کلاینت درخواست کند) از سمت identity Provider به کلاینت.
4. دریافت این توکن ها در سمت کلاینت و کلاینت میتواند با استفاده از Access Token درسمت Identity Provider برای دسترسی به اطلاعات api هایی رو صدا بزند و همچنین از ID Token برای بازیابی اطلاعات کاربر استفاده کند.
این پروتکل برای اولین بار در سال 2005 معرفی و پیاده سازی شد و نسخه بعدی آن که OpenID Connect نامیده میشود در فوریه 2014 ارئه گردید.
@fullStackDevs
💡 What is Open ID?
در پست های قبل به OAuth پرداختیم و گفتیم که این پروتکل مختص به Authorization است و با ارائه یک توکن دسترسی اجازه استفاده از اطلاعات را میدهد و اپلیکیشن جانبی مان اطلاعاتی در مورد کاربر جاری که از این توکن استفاده میکند ،ندارد.
اما اپن آیدی پروتکلی برای authentication و تصدیق هویت میباشد این پروتکل لایه ای بر روی OAuth 2.0 میباشد .
با استفاده از این پروتکل، Token ID ای دریافت میکنید که JWT بوده و اپلیکیشن جانبی تان علاوه بر دسترسی از طریق این توکن اطلاعاتی هم درباره کاربر جاری دارد.
اپن آیدی اجازه استفاده از یک حساب(اکانت) برای چندین سایت بدون اینکه نیاز به تغییر رمز عبور داشته باشید میدهد.
💢 مراحل انجام کار
1. ارسال اطلاعات کلاینت به Identity Provider
2. دریافت این اطلاعات در سمت Identity Provider و شناسایی و لاگین کاربر
3. ارسال یک Access Token و یک ID Token (اگر کلاینت درخواست کند) از سمت identity Provider به کلاینت.
4. دریافت این توکن ها در سمت کلاینت و کلاینت میتواند با استفاده از Access Token درسمت Identity Provider برای دسترسی به اطلاعات api هایی رو صدا بزند و همچنین از ID Token برای بازیابی اطلاعات کاربر استفاده کند.
این پروتکل برای اولین بار در سال 2005 معرفی و پیاده سازی شد و نسخه بعدی آن که OpenID Connect نامیده میشود در فوریه 2014 ارئه گردید.
@fullStackDevs
نمونه ای از یک سیستم فروش بیمه ای بسیار ساده است که با استفاده از یک معماری Microservice ارائه شده است ، بعضی از تکنولوژی های استفاده شده :
▪️.NET Core 2.1
▪️Entity Framework Core
▪️MediatR
▪️JWT Tokens
▪️RawRabbit
▪️NHibernate
▪️Dapper
▪️SignalR
▪️DDD
▪️CQRS
...
🔲 Running with Docker
لینک سورس در گیت هاب
@fullStackDevs
▪️.NET Core 2.1
▪️Entity Framework Core
▪️MediatR
▪️JWT Tokens
▪️RawRabbit
▪️NHibernate
▪️Dapper
▪️SignalR
▪️DDD
▪️CQRS
...
🔲 Running with Docker
لینک سورس در گیت هاب
@fullStackDevs
#DesignPatterns
در مهندسی نرم افزار الگو های طراحی یک راه حل عمومیه تکرار پذیر برای حل یک مشکل رایج در هنگام طراحی نرم افزار می باشد.
به عبارتی الگو های طراحی یک راه کار نهایی که به طور مستقیم میتوان انرا به کد تبدیل کرد نیست بلکه توضیح یا قالبی است برای اینکه ، چطور میتوان مشکلی که به راه های متفاوت پدیدار میشود را حل کرد.
الگو های طراحی روند سرعت توسعه نرم افزار را با ارائه روش های تست شده افزایش میدهند.
یک طراحی موثر و تاثیر گذاری نیازمند مسائلی است که ممکن است تا زمان پیاده سازی قابل رویت نباشد .
استفاده از الگوهای طراحی باعث جلوگیری از مسائل جرئی که بروز مشکلاتی بزرگ را دربر دارد، میشوند.
استفاده از الگوهای طراحی باعث میشود که کد شما قابل انعطاف تر و نگهداری آن آسان تر و همچنین راحتر بتوان دوباره از ان استفاده کرد و هیچ لزومی ندارد که همیشه این الگوهای طراحی را در پروژه های خود استفاده کنید ،الگوهای طراحی برای توسعه پروژه منظور نمی شوند بلکه برای حل مسائل متداول در نظر گرفته شده اند.هر وقت که به آنها نیاز داشتید بایستی الگوی مناسبی برای جلوگیری از بروز چنین مشکلی در آینده پیاده سازی کنید برای تشخیص اینکه برای چه مشکلی از چه الگویی استفاده کنید فقط باید سعی کنید که الگو های طراحی و مهم تر از ان هدف از هر الگو را درک کنید
الگوهای طراحی براساس هدف هر الگو به سه دسته تقسیم میشوند.
🔹Behavioural
🔸Creational
🔹Structural
1️⃣ Creational
این نوع الگو ها در مورد نحوه نمونه سازی از کلاس ها میباشند و انها را میتوان به class-creation و object-creational دسته بندی کرد.این به این معنی است که در زمان انجام Job و پیاده سازی الگو برای دسترسی به ویژگی های یک کلاس یا میتوان از طریق ارث بری از ویژگی های ان استفاده کرد یا اینکه با ساخت یک نمونه از کلاس هدف به ویژگی های ان نیز دسترسی داشت.
الگو های Creational عبارتند از :
این نوع از الگوها مربوط به سازماندهی کلاس ها و اشیاء مختلف برای تشکیل ساختارهای بزرگتر و ارائه قابلیت های جدید است.
الگو های Structural عبارتند از :
این نوع از الگو ها در مورد شناسایی الگوهای ارتباطی مشترک بین اشیاء و تحقق این الگوهاست دروافع الگوهای رفتاری آن الگوهایی هستند که به طور خاص به ارتباط بین اشیاء مربوط می شوند.
الگو های Behavioral عبارتند از :
💎 Acting out rather than speaking out became a pattern 💎
@fullStackDevs
در مهندسی نرم افزار الگو های طراحی یک راه حل عمومیه تکرار پذیر برای حل یک مشکل رایج در هنگام طراحی نرم افزار می باشد.
به عبارتی الگو های طراحی یک راه کار نهایی که به طور مستقیم میتوان انرا به کد تبدیل کرد نیست بلکه توضیح یا قالبی است برای اینکه ، چطور میتوان مشکلی که به راه های متفاوت پدیدار میشود را حل کرد.
الگو های طراحی روند سرعت توسعه نرم افزار را با ارائه روش های تست شده افزایش میدهند.
یک طراحی موثر و تاثیر گذاری نیازمند مسائلی است که ممکن است تا زمان پیاده سازی قابل رویت نباشد .
استفاده از الگوهای طراحی باعث جلوگیری از مسائل جرئی که بروز مشکلاتی بزرگ را دربر دارد، میشوند.
استفاده از الگوهای طراحی باعث میشود که کد شما قابل انعطاف تر و نگهداری آن آسان تر و همچنین راحتر بتوان دوباره از ان استفاده کرد و هیچ لزومی ندارد که همیشه این الگوهای طراحی را در پروژه های خود استفاده کنید ،الگوهای طراحی برای توسعه پروژه منظور نمی شوند بلکه برای حل مسائل متداول در نظر گرفته شده اند.هر وقت که به آنها نیاز داشتید بایستی الگوی مناسبی برای جلوگیری از بروز چنین مشکلی در آینده پیاده سازی کنید برای تشخیص اینکه برای چه مشکلی از چه الگویی استفاده کنید فقط باید سعی کنید که الگو های طراحی و مهم تر از ان هدف از هر الگو را درک کنید
الگوهای طراحی براساس هدف هر الگو به سه دسته تقسیم میشوند.
🔹Behavioural
🔸Creational
🔹Structural
1️⃣ Creational
این نوع الگو ها در مورد نحوه نمونه سازی از کلاس ها میباشند و انها را میتوان به class-creation و object-creational دسته بندی کرد.این به این معنی است که در زمان انجام Job و پیاده سازی الگو برای دسترسی به ویژگی های یک کلاس یا میتوان از طریق ارث بری از ویژگی های ان استفاده کرد یا اینکه با ساخت یک نمونه از کلاس هدف به ویژگی های ان نیز دسترسی داشت.
الگو های Creational عبارتند از :
Factory Method, Abstract Factory, Builder, Singleton, Object Pool, Prototype
2️⃣ Structuralاین نوع از الگوها مربوط به سازماندهی کلاس ها و اشیاء مختلف برای تشکیل ساختارهای بزرگتر و ارائه قابلیت های جدید است.
الگو های Structural عبارتند از :
Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data, Proxy
3️⃣ Behavioralاین نوع از الگو ها در مورد شناسایی الگوهای ارتباطی مشترک بین اشیاء و تحقق این الگوهاست دروافع الگوهای رفتاری آن الگوهایی هستند که به طور خاص به ارتباط بین اشیاء مربوط می شوند.
الگو های Behavioral عبارتند از :
Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template method, Visitor
در ادامه نیز به بررسی این الگو ها میپردازیم.💎 Acting out rather than speaking out became a pattern 💎
@fullStackDevs
👍1