آشنایی با Polly
چگونه در ASP NET Core قابلیت Fault Tolerance پیاده کنیم که در صورت وجود خطا در وب سرویس ها مجدد سعی کند؟
پیاده سازی مکانیزم Resilience و Retry در ASP NET Core
https://tinyurl.com/cdhk-polly
چگونه در ASP NET Core قابلیت Fault Tolerance پیاده کنیم که در صورت وجود خطا در وب سرویس ها مجدد سعی کند؟
پیاده سازی مکانیزم Resilience و Retry در ASP NET Core
https://tinyurl.com/cdhk-polly
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
🔈 💰تخفیف 40% برای کلیه دوره های مجموعه آموزش برنامه نویس به مدت 48 ساعت
کد تخفیف: Azar98
تاریخ انقضا: چهارشنبه، 20 آذر، ساعت 12 شب
برای استفاده از کد تخفیف فوق میبایست آدرس ایمیل و شماره موبایل تان را در حساب کاربری تان فعال و تایید کرده باشید.
https://barnamenevis.net
@barnamenevis_net
@barnamenevis_org
کد تخفیف: Azar98
تاریخ انقضا: چهارشنبه، 20 آذر، ساعت 12 شب
برای استفاده از کد تخفیف فوق میبایست آدرس ایمیل و شماره موبایل تان را در حساب کاربری تان فعال و تایید کرده باشید.
https://barnamenevis.net
@barnamenevis_net
@barnamenevis_org
آشنایی با JWT
مکانیزم JWT یک روش برای Authorization تحت وب است به این صورت که کلاینت نام کاربری و رمز ورود خود را به سرور ارسال میکند و سرور در صورت درست بودن اطلاعات (Authenticate) کدی با محتوای base64 تولید میکند و آن را به کلاینت ارسال میکند.
از اینجا به بعد کلاینت برای دریافت اطلاعات از سرور فقط کافی است کد (نشان) دریافت شده را درون Header قرار دهد و در هر درخواست به سرور ارسال کند. سرور از روی الگوریتم داده ها را به امضای دیجیتال تبدیل میکند و آن را با امضای نشان مطابقت میدهد.
نشان JWT شامل سه بخش است :
بخش اول Header که نوع الگوریتم تولید امضا را مشخص میکند.
بخش دوم Payload که محتوای اطلاعات شامل نام کاربری، آی دی یا سمت و ... است.
بخش سوم Signature که یک امضای دیجیتال است که از روی الگوریتم رمزگذاری و اطلاعات بخش دوم تهیه میشود تا اطمینان حاصل شود محتوای نشان تغییر نمیکند.
هر بخش با نقطه از هم تفکیک میشود.
این روش گاهی Bearer token هم خوانده میشود.
اطلاعات توکن با فرمت Base64 جابجا میشود و رمزنگاری نشده است و توسط هر کس قابل خواندن است مگر اینکه از روشهایی مثل JWS یا JWE استفاده شود.
مکانیزم JWT یک روش برای Authorization تحت وب است به این صورت که کلاینت نام کاربری و رمز ورود خود را به سرور ارسال میکند و سرور در صورت درست بودن اطلاعات (Authenticate) کدی با محتوای base64 تولید میکند و آن را به کلاینت ارسال میکند.
از اینجا به بعد کلاینت برای دریافت اطلاعات از سرور فقط کافی است کد (نشان) دریافت شده را درون Header قرار دهد و در هر درخواست به سرور ارسال کند. سرور از روی الگوریتم داده ها را به امضای دیجیتال تبدیل میکند و آن را با امضای نشان مطابقت میدهد.
نشان JWT شامل سه بخش است :
بخش اول Header که نوع الگوریتم تولید امضا را مشخص میکند.
بخش دوم Payload که محتوای اطلاعات شامل نام کاربری، آی دی یا سمت و ... است.
بخش سوم Signature که یک امضای دیجیتال است که از روی الگوریتم رمزگذاری و اطلاعات بخش دوم تهیه میشود تا اطمینان حاصل شود محتوای نشان تغییر نمیکند.
هر بخش با نقطه از هم تفکیک میشود.
این روش گاهی Bearer token هم خوانده میشود.
اطلاعات توکن با فرمت Base64 جابجا میشود و رمزنگاری نشده است و توسط هر کس قابل خواندن است مگر اینکه از روشهایی مثل JWS یا JWE استفاده شود.
ساختار داده Stack در سی شارپ
استک نوعی از ساختار داده است که در آن داده ها به صورت ترتیبی روی هم قرار میگیرند.
عملیات Push آیتم جدیدی را به بالای توده اضافه میکند.
با عملیات Pop فقط می توان بالاترین آیتم را از توده خارج کرد. مثلا برای دسترسی به آیتم سوم ابتدا باید آیتمهای اول و دوم Pop شده باشند.
متد Peek امکان مشاهده آیتم اول بدون Pop شدن را فراهم میکند.
عملیات های Pop و Peek همیشه از جنس (1)O هستند. با فرض ثابت بودن ابعاد لیست عملیات Push هم (1)O است. به این ترتیب اضافه و حذف کردن آیتم به Stack خیلی سریع امکان پذیر است.
رفتار استک LIFO یا Last-In-First-Out خوانده میشود.
استک نوعی از ساختار داده است که در آن داده ها به صورت ترتیبی روی هم قرار میگیرند.
عملیات Push آیتم جدیدی را به بالای توده اضافه میکند.
با عملیات Pop فقط می توان بالاترین آیتم را از توده خارج کرد. مثلا برای دسترسی به آیتم سوم ابتدا باید آیتمهای اول و دوم Pop شده باشند.
متد Peek امکان مشاهده آیتم اول بدون Pop شدن را فراهم میکند.
عملیات های Pop و Peek همیشه از جنس (1)O هستند. با فرض ثابت بودن ابعاد لیست عملیات Push هم (1)O است. به این ترتیب اضافه و حذف کردن آیتم به Stack خیلی سریع امکان پذیر است.
رفتار استک LIFO یا Last-In-First-Out خوانده میشود.
آشنایی با سورس کنترل و مزایای آن
مهدی کرامتی
🔈 پادکست درباره سورس کنترل ها و مزایای آنها
• آشنایی با اصطلاحات رایج در کار با سورس کنترل ها
• آشنایی با مزایای استفاده از سورس کنترل ها
• آشنایی با پروتکل های TFS و GIT
• آشنایی با سرویس های آنلاین و On-Permises سورس کنترل
#مهدی_کرامتی
@barnamenes_org
@barnamenes_net
• آشنایی با اصطلاحات رایج در کار با سورس کنترل ها
• آشنایی با مزایای استفاده از سورس کنترل ها
• آشنایی با پروتکل های TFS و GIT
• آشنایی با سرویس های آنلاین و On-Permises سورس کنترل
#مهدی_کرامتی
@barnamenes_org
@barnamenes_net
آشنایی با ML.NET
فریم ورک ML.NET ابزاری برای Machine Learning در دات نت است که توسط مایکروسافت توسعه داده شده است. در این ویدیو با استفاده از ML.NET شانس زنده ماندن مسافران کشتی تایتانیک را پیش بینی می کنیم.
https://tinyurl.com/cdhk-mlnet
فریم ورک ML.NET ابزاری برای Machine Learning در دات نت است که توسط مایکروسافت توسعه داده شده است. در این ویدیو با استفاده از ML.NET شانس زنده ماندن مسافران کشتی تایتانیک را پیش بینی می کنیم.
https://tinyurl.com/cdhk-mlnet
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ معرفی MagicOnion : یک فریمورک Realtime مبتنی بر gRPC و MessagePack
این فریمورک با استفاده از قابلیت HTTP/2 Streaming مبتنی بر gRPC و بهره گیری از MessagePack برای Serialization (همراه با LZ4 integration) بستری قدرتمند را برای ارتباطات Realtime فراهم میکند.
🔸یکی از مزایای این فریمورک عدم نیاز به فایلهای .proto مخصوص gRPC است چرا که از interface های سی شارپی برای به اشتراک گذاری امضای Endpointهای موجود بین Server و Client استفاده میکند.
🔹یکی از دیگر مزایای آن پشتیبانی از Swagger و داشتن Json Gateway توکار متبنی بر HTTP/1 است که به کمک آن میتوان به صورت Json/RESTful نیز APIها را فراخوانی کرد.
🔸همچنین این فریمورک از OpenTelemetry پشتیبانی کرده و میتوانید از برنامههای مانیتورینگ مانند Prometheus و StackDriver و Zipkin و... بر روی پروژه خود استفاده کنید و یا توسط Grafana یک داشبورد مانیتورینگ ویژوال و Realtime ایجاد کنید.
🔹این فریمورک ابزار مناسبی جهت ارتباطات بین Microserviceها میباشد.
🔸همچنین جایگزین مناسبی برای سرویسهای API based مانند ASP.NET Core WebAPI و WCF بوده و نیز جایگزین مناسبی برای SignalR و Socket.io جهت ارتباطات Realtime میباشد.
🔰ریپازیتوری MagicOnion
https://github.com/Cysharp/MagicOnion
اطلاعات بیشتر
https://medium.com/@neuecc/magiconion-unified-realtime-api-engine-for-net-core-and-unity-21e02a57a3ff
_______________
@DotNetZoom
این فریمورک با استفاده از قابلیت HTTP/2 Streaming مبتنی بر gRPC و بهره گیری از MessagePack برای Serialization (همراه با LZ4 integration) بستری قدرتمند را برای ارتباطات Realtime فراهم میکند.
🔸یکی از مزایای این فریمورک عدم نیاز به فایلهای .proto مخصوص gRPC است چرا که از interface های سی شارپی برای به اشتراک گذاری امضای Endpointهای موجود بین Server و Client استفاده میکند.
🔹یکی از دیگر مزایای آن پشتیبانی از Swagger و داشتن Json Gateway توکار متبنی بر HTTP/1 است که به کمک آن میتوان به صورت Json/RESTful نیز APIها را فراخوانی کرد.
🔸همچنین این فریمورک از OpenTelemetry پشتیبانی کرده و میتوانید از برنامههای مانیتورینگ مانند Prometheus و StackDriver و Zipkin و... بر روی پروژه خود استفاده کنید و یا توسط Grafana یک داشبورد مانیتورینگ ویژوال و Realtime ایجاد کنید.
🔹این فریمورک ابزار مناسبی جهت ارتباطات بین Microserviceها میباشد.
🔸همچنین جایگزین مناسبی برای سرویسهای API based مانند ASP.NET Core WebAPI و WCF بوده و نیز جایگزین مناسبی برای SignalR و Socket.io جهت ارتباطات Realtime میباشد.
🔰ریپازیتوری MagicOnion
https://github.com/Cysharp/MagicOnion
اطلاعات بیشتر
https://medium.com/@neuecc/magiconion-unified-realtime-api-engine-for-net-core-and-unity-21e02a57a3ff
_______________
@DotNetZoom
Medium
MagicOnion — Unified Realtime/API Engine for .NET Core and Unity
It has been a while. Since my last post, I have been working on and created many things. Now that it is 2019, I would like to start…
پایان فعالیت مجله MSDN
مجله ی تخصصی MSDN که توسط مایکروسافت منتشر میشد تعطیل شد.
این مجله به مدت 33 سال هر ماه منتشر میشد و شامل مقالات متعددی در حوزه ی برنامه نویسی در محصولات مایکروسافت از جمله سی شارپ ، دات نت بود.
ماه گذشته مایکروسافت اعلام کرد انتشار این مجله را از پایان 2019 متوقف خواهد کرد.
هرچند مایکروسافت دلیل خاصی برای تعطیل کردن مجله اعلام نکرده است اما سال گذشته با آپدیت بخش بلاگهای سایت مایکروسافت و بهبود قسمت DevBlogs مقالات تخصصی را در این بخش منتشر میکند و در سایت مجله MSDN هم کاربران به بخش جدید Learning ارجاع داده میشوند.
مجله ی تخصصی MSDN که توسط مایکروسافت منتشر میشد تعطیل شد.
این مجله به مدت 33 سال هر ماه منتشر میشد و شامل مقالات متعددی در حوزه ی برنامه نویسی در محصولات مایکروسافت از جمله سی شارپ ، دات نت بود.
ماه گذشته مایکروسافت اعلام کرد انتشار این مجله را از پایان 2019 متوقف خواهد کرد.
هرچند مایکروسافت دلیل خاصی برای تعطیل کردن مجله اعلام نکرده است اما سال گذشته با آپدیت بخش بلاگهای سایت مایکروسافت و بهبود قسمت DevBlogs مقالات تخصصی را در این بخش منتشر میکند و در سایت مجله MSDN هم کاربران به بخش جدید Learning ارجاع داده میشوند.
متد GetHashCode در دات نت
در دات نت همه ی Object ها دارای متدی به نام GetHashCode هستند.
این متد از روی محتوای Object یک عدد از جنس int تولید میکند. از HashCode برای مقایسه و دسته بندی Object ها درون Collection هایی مثل HashSet استفاده میشود.
نکته مهم این است که وقتی دو Object رفرنس یکسانی داشته باشند (یکی به دیگری نسبت داده شده باشد) همیشه HashCode یکسانی دارند. اما عکس این قضیه صادق نیست.
نمی توان با مقایسه دو HashCode نتیجه گرفت که Object آنها یکسان است. تابعی که HashCode را تولید می کند ممکن است برای دو شی کاملا متفاوت عدد یکسانی برگرداند. از آنجا که رنج int محدود است و همیشه شانس تکراری درآمدن آن برای دو شی متفاوت وجود دارد.
به تولید شدن HashCode تکراری اصطلاحا Collision یا برخورد گفته میشود. که تحلیل و کنترل آن در Collection هایی مثل HashSet اهمیت زیادی دارد.
در دات نت همه ی Object ها دارای متدی به نام GetHashCode هستند.
این متد از روی محتوای Object یک عدد از جنس int تولید میکند. از HashCode برای مقایسه و دسته بندی Object ها درون Collection هایی مثل HashSet استفاده میشود.
نکته مهم این است که وقتی دو Object رفرنس یکسانی داشته باشند (یکی به دیگری نسبت داده شده باشد) همیشه HashCode یکسانی دارند. اما عکس این قضیه صادق نیست.
نمی توان با مقایسه دو HashCode نتیجه گرفت که Object آنها یکسان است. تابعی که HashCode را تولید می کند ممکن است برای دو شی کاملا متفاوت عدد یکسانی برگرداند. از آنجا که رنج int محدود است و همیشه شانس تکراری درآمدن آن برای دو شی متفاوت وجود دارد.
به تولید شدن HashCode تکراری اصطلاحا Collision یا برخورد گفته میشود. که تحلیل و کنترل آن در Collection هایی مثل HashSet اهمیت زیادی دارد.
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
🔈 کد تخفیف ویژه یلدا 98، قابل استفاده برای کلیه پکیج های آموزش ویدئویی
درصد تخفیف: 40%
کد تخفیف: Yalda98
مهلت استفاده تا 1398/10/4 ساعت 12 شب
https://barnamenevis.net
@barnamenevis_net
@barnamenevis_org
درصد تخفیف: 40%
کد تخفیف: Yalda98
مهلت استفاده تا 1398/10/4 ساعت 12 شب
https://barnamenevis.net
@barnamenevis_net
@barnamenevis_org
آشنایی با الگوریتم Hi/Lo
معمولا کلید اصلی توسط دیتابیس ساخته میشود اما برای بدست آوردن آن اطلاعات رکورد ابتدا باید در دیتابیس ذخیره شود.
گاهی لازم است پیش از ذخیره سازی کلید اصلی در دسترس باشد در این موارد می توان از الگوریتم Hi/Lo استفاده کرد.
https://cutt.ly/4rwlwyq
معمولا کلید اصلی توسط دیتابیس ساخته میشود اما برای بدست آوردن آن اطلاعات رکورد ابتدا باید در دیتابیس ذخیره شود.
گاهی لازم است پیش از ذخیره سازی کلید اصلی در دسترس باشد در این موارد می توان از الگوریتم Hi/Lo استفاده کرد.
https://cutt.ly/4rwlwyq
Forwarded from کدهک
اپ فال حافظ که در ASP Core با تکنیک PWA پیاده شده:
برنامه به صورت آفلاین هم کار میکنه
به هوم اسکرین گوشی اضافه میشه
بدون مرورگر اجرا میشه
https://codehaks.com/yalda
برنامه به صورت آفلاین هم کار میکنه
به هوم اسکرین گوشی اضافه میشه
بدون مرورگر اجرا میشه
https://codehaks.com/yalda
Forwarded from کدهک
در این ویدیو به معرفی اپ فال حافظ می پردازیم که با تکنیک Progressive web app تهیه شده و می توانید آن را به هوم اسکرین گوشی اضافه کنید و به صورت آفلاین استفاده کنید.
https://goo.gl/fwJd5d
https://goo.gl/fwJd5d
Forwarded from کدهک
فروش ویژه
مرجع کامل آموزش ASP NET Core با 50% تخفیف ویژه یلدا
این دوره با مجموع 34 ساعت آموزش تخصصی ASP NET Core و به همراه یک سال اشتراک ویژه سایت کدهک عرضه میشود.
کد تخفیف : yalda
https://tinyurl.com/cdhk-yalda98
امکان خرید از طریق درگاه آنلاین یا کارت به کارت وجود دارد.
کد تخفیف 24 ساعت دیگر تمدید شد.
مرجع کامل آموزش ASP NET Core با 50% تخفیف ویژه یلدا
این دوره با مجموع 34 ساعت آموزش تخصصی ASP NET Core و به همراه یک سال اشتراک ویژه سایت کدهک عرضه میشود.
کد تخفیف : yalda
https://tinyurl.com/cdhk-yalda98
امکان خرید از طریق درگاه آنلاین یا کارت به کارت وجود دارد.
کد تخفیف 24 ساعت دیگر تمدید شد.
Forwarded from کدهک
ویدیو :
آشنایی با موتور V8
مقایسه ی سی شارپ و جاوا اسکریپت
مقایسه پرفورمنس Node و ASP Core
http://tinyurl.com/yy36a8e7
آشنایی با موتور V8
مقایسه ی سی شارپ و جاوا اسکریپت
مقایسه پرفورمنس Node و ASP Core
http://tinyurl.com/yy36a8e7
آشنایی با Docker
داکر ابزاری برای توزیع و اجرای نرم افزار است که مشکل سازگاری با سیستم عامل های مختلف را حل میکند. این ابزار امروزه همه جا مورد استفاده قرار میگیرد و خوب است به عنوان توسعه دهنده ی نرم افزار درباره آن بیشتر بدانید. در این ویدیو به معرفی داکر می پردازیم و در ادامه از Docker در یک پروژه ASP NET Core استفاده می کنیم.
https://cutt.ly/ortrfXx
داکر ابزاری برای توزیع و اجرای نرم افزار است که مشکل سازگاری با سیستم عامل های مختلف را حل میکند. این ابزار امروزه همه جا مورد استفاده قرار میگیرد و خوب است به عنوان توسعه دهنده ی نرم افزار درباره آن بیشتر بدانید. در این ویدیو به معرفی داکر می پردازیم و در ادامه از Docker در یک پروژه ASP NET Core استفاده می کنیم.
https://cutt.ly/ortrfXx
آشنایی با Docker - قسمت دوم
در این ویدیو با استفاده از Docker دیتابیس Redis رو نصب و اجرا می کنیم
سپس از پروژه ASP NET Core یک Image داکر تهیه می کنیم.
https://tinyurl.com/cdhk-docker2
در این ویدیو با استفاده از Docker دیتابیس Redis رو نصب و اجرا می کنیم
سپس از پروژه ASP NET Core یک Image داکر تهیه می کنیم.
https://tinyurl.com/cdhk-docker2
Podcast - Episode2
Codehaks
پادکست کدهک - قسمت دوم
در این شماره می شنوید :
1- رکورد بازی سوپر ماریو
2- محیط کاری گیتهاب
3- برنامه نویسی چند زبانه
4- پیشنهاد سه زبان برای یادگرفتن در 2020
در این شماره می شنوید :
1- رکورد بازی سوپر ماریو
2- محیط کاری گیتهاب
3- برنامه نویسی چند زبانه
4- پیشنهاد سه زبان برای یادگرفتن در 2020
یک Immutable Object بعد از مقدار دهی اولیه دیگر قابل تغییر نیست و فقط میتوان آن را از حافظه حذف کرد.
در زبان #C متغیرهای از نوع String به عنوان اشیای Immutable شناخته میشوند. در زمان اجرای برنامه می توانید مقدار یک متغیر رشته ای را عوض کنید اما در عمل مقدار متغیر در حافظه عوض نمیشود بلکه در حافظه یک فضای جدید برای نگه داری رشته ی جدید ایجاد میشود. این موضوع کار کردن با رشته ها را بسیار پر هزینه میکند. با هر تغییر یک رشته بخشی از حافظه اشغال میشود و اگر زیاد اینکار را انجام دهید حافظه سر ریز میشود.
در دات نت این حافظه های پسماند توسط Garbage Collection خالی میشود که می تواند باعث کندی برنامه شود. برای حل این مشکل می توانید از StringBuilder استفاده کنید.
یکی از مهمترین مزیت های استفاده از متغیرهای تغییر ناپذیر این است که Thread-safe هستند و کار کردن با آنها در فضای چند نخی ساده تر است.
در زبان #C متغیرهای از نوع String به عنوان اشیای Immutable شناخته میشوند. در زمان اجرای برنامه می توانید مقدار یک متغیر رشته ای را عوض کنید اما در عمل مقدار متغیر در حافظه عوض نمیشود بلکه در حافظه یک فضای جدید برای نگه داری رشته ی جدید ایجاد میشود. این موضوع کار کردن با رشته ها را بسیار پر هزینه میکند. با هر تغییر یک رشته بخشی از حافظه اشغال میشود و اگر زیاد اینکار را انجام دهید حافظه سر ریز میشود.
در دات نت این حافظه های پسماند توسط Garbage Collection خالی میشود که می تواند باعث کندی برنامه شود. برای حل این مشکل می توانید از StringBuilder استفاده کنید.
یکی از مهمترین مزیت های استفاده از متغیرهای تغییر ناپذیر این است که Thread-safe هستند و کار کردن با آنها در فضای چند نخی ساده تر است.