Get Mystery Box with random crypto!

DotNetZoom

لوگوی کانال تلگرام dotnetzoom — DotNetZoom D
لوگوی کانال تلگرام dotnetzoom — DotNetZoom
آدرس کانال: @dotnetzoom
دسته بندی ها: فن آوری ها
زبان: فارسی
مشترکین: 3.62K
توضیحات از کانال

✅ DotNetZoom
💎 Everything about .NET
ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi
لینک گروه ASPNET Core:
https://t.me/ ufG25x7lVFgyYTNk

Ratings & Reviews

4.50

2 reviews

Reviews can be left only by registered users. All reviews are moderated by admins.

5 stars

1

4 stars

1

3 stars

0

2 stars

0

1 stars

0


آخرین پیام ها 5

2021-07-03 09:19:09
بررسی مکانیزم Garbage Collection با کمک ابزار پروفایل در ویژوال استودیو



789 viewsمحمد جواد ابراهیمی, 06:19
باز کردن / نظر دهید
2021-06-30 20:22:24 نمایش تعداد کاربران آنلاین در AspNet Core

برای محاسبه تعداد کاربران آنلاین اساسا دو روش وجود داره

روش اول - با استفاده از Cookie

در ASP.NET قدیم داخل کلاس global.asax متد هایی وجود داشت به نام Session_Start و Session_End که به هنگام شروع و پایان "سشن" کاربری، فراخوانی میشدن (با شی Session اشتباه گرفته نشود)
رخداد Session_Start زمانی raise یا اجرا میشد که یک سشن جدید برای یک کاربر ساخته بشه
و رخداد Session_End نیز زمانی raise میشد که یک سشن expire (منقضی) بشه

مکانیزمی که سشن کاربری رو ایجاد ومنقضی میکرد، مراحلش به این صورت بود که:

اولین بار که شخصی سایت رو باز میکرد، خود ASP.NET یک کوکی به نام "ASP.NET_SessionD" با مقدار یک "کلید تصادفی" به همراه Response برای کاربر میفرستاد و اون در مرورگر کاربر ذخیره میشد و از اون طرف همین "کلید تصادفی" در حافظه مموری سرور (به کمک شی Session) به عنوان شناسه یک کاربر (که شاید هنوز نمیدونیم کیه ولی میدونیم یه کاربره) ذخیره میشد (تا اینجای کار یک سشن برای کاربر جدید ساخته شده، در نتیجه رخداد Session_Start فراخوانی میشد)

از درخواست های بعدی، این کوکی به همراه مقدارش (همون کلید تصادفی)، به Server ارسال میشد سپس ASP.NET این کلید رو میخوند و با مقادیر ذخیره شده در شی Session (در حافظه رم) مطابقت میداد و متوجه میشد که این همون کاربری هست که قبلا درخواست زده بود.
تایم منقضی شدن این سشن ها (session expire) به صورت پیشفرض 20 دقیقه بود و مادامی که درخواست یا بازدید از سمت همون کاربر میومد، این مدت زمان تمدید میشد.
در نتیجه مادامی که آخرین درخواست کاربر کمتر از 20 دقیقه قبل بود، سشن برقرار بود و زمانی که این مدت از 20 بیشتر میشد. اون سشن به صورت خودکار expire/منقضی میشد (در این مرحله رخداد Session_End فراخوانی میشد)

بنابراین مادامی که کاربر ما، فاصله بین هر درخواستش کمتر از 20 دقیقه بود، سشن اون کاربر برقرار بود و یک کاربر "آنلاین" به حساب میومد
و زمانی که از آخرین درخواست کاربر، بیش از 20 دقیقه میگذشت، سشن کاربر منقضی شده و یک کاربر "آفلاین" به حساب میومد
در این حالت با کمی کد نویسی میشد تعداد کاربران آنلاین رو محاسبه کرد، به این صورت که یک متغیر global برای تعداد کاربران آنلاین در نظر میگرفتیم و به هنگام Session_Start اون رو ++ (یکی اضافه) و به هنگام Session_End اون رو -- (یکی کم) میکردیم

نکته: این توضیحات حالت پیشفرض هست، در صورت تنظیم sessionState میتونه محل ذخیره سازی سشن و کوکی در سمت سرور و کلاینت متفاوت باشه (مثلا ذخیره شدن سشن ها درون یک دیتابیس SqlServer به جای Memory یا تنظیم شدن کلید تصادفی درون URL به جای کوکی) - توضیحات بیشتر

در ASP.NET Core اما این مکانیزم و این دو متد دیگه وجود نداره. پس مجبوریم مشابه همین مکانیزم رو خودمون کدنویسی و طراحی کنیم. کد نویسیش کار خاصی نداره، همین مراحل ساخت کوکی با یک "کلید تصادفی" (مثلا guid) و ذخیره اون علاوه بر Response، درون یک InMemory Cache داخل یک Middleware به سادگی انجام میشه

در این روش چون فاصله زمانی 20 دقیقه رو برای session expire هست در نتیجه همیشه ما یک تلورانس و اختلاف 20 دقیقه ای ممکنه داشته باشیم. اگر کاربر جاری همین الان مرورگرش رو میبنده یا برق میره چون session اش تا 20 دقیقه از آخرین بازدیدش معتبر هست، همچنان تا 20 دقیقه آینده "آنلاین" محسوب میشه

روش دوم - با استفاده از ارتباطات Realtime مانند SignalR

این روش خیلی مشابه روش قبل هست با این تفاوت که به محض برقرار شدن اتصال کاربر (رخداد OnConnectedAsync کلاس Hub) اون رو به عنوان کاربر آنلاین و به محض قطع شدن ارتباطش (رخداد OnDisconnectedAsync کلاس Hub) اون کاربر رو آفلاین در نظر میگیریم.
بقیه موارد ساخت کلید تصادفی و تنظیم کوکی جهت تشخیص کاربر از بقیه کاربر ها تقریبا مشابه قبل هست

مزیت این روش اینه که دیگه ما تلورانس و اختلاف 20 دقیقه رو نخواهیم داشت و به صورت آنی و در لحظه تعداد کاربران آنلاین بروزرسانی خواهد شد
معایبش هم اینه که به دلیل استفاده از ارتباطات realtime پردازش بیشتری نسبت به روش اول روی سرور میوفته و یا اینکه امکان استفاده از ارتباطات realtime در برنامه شما به هر دلیل از جمله زیرساخت network یا محدودیت های سرور و application شما وجود نداشته باشه

نکته آخر اینکه در اینجا سعی کردم مکانیزم خیلی ساده توضیح بدم اما پیاده سازی صحیح چنین مکانیزمی با توجه به امکان وقوع همزمانی مستلزم اینه که نکات پیشگیری از مشکلات همزمانی رعایت بشه

در اینجا یک پروژه نمونه آماده کردم که هر دو این روش ها رو پیاده سازی کرده و میتونین با بررسی سورس کدش بیشتر با نحوه عملکرد اون آشنا بشین
https://github.com/dotnetzoom/OnlineUsers-AspNetCore
_________
@DotNetZoom
475 viewsمحمد جواد ابراهیمی, 17:22
باز کردن / نظر دهید
2021-06-27 14:30:15
استخدام برنامه نویس سنیور ASP.NET Core

مسلط به :
- ASP.NET Core and MVC
- EF Core and Dapper
- SQL Server Query Writing
آشنا با :
- Git
- Microservices
- Redis
- Design Patterns (Repository, Mediator, ...)
- Onion Architecture
- Service Oriented

محدوده آدرس: در حال حاضر سهروردی (در آینده جنت آباد)
حقوق و مزایا: حداقل 10 میلیون - وعده غذایی نهار
ساعت کار: 8 صبح تا 5 بعد از ظهر - شناور
روزهای کاری: شنبه تا چهارشنبه

ارسال رزومه به:
sh.soltany@hph.co.ir

#آگهی_استخدام #فرصت_شغلی #تبلیغات
_________________
@DotNetZoom
590 viewsمحمد جواد ابراهیمی, 11:30
باز کردن / نظر دهید
2021-06-26 19:57:51
نگاهی به قابلیت های جدید Visual Studio 2022




316 viewsمحمد جواد ابراهیمی, 16:57
باز کردن / نظر دهید
2021-06-21 14:51:40 الان داشتم اینو سرچ میکردم میزارم اینجا هم آرشیو بشه هم شاید به دردتون بخوره
واسه Encode کردن URL راه های مختلفی تو دات نت وجود داره

HttpUtility.UrlPathEncode
HttpUtility.UrlEncode
WebUtility.UrlEncode
Uri.EscapeUriString
Uri.EscapeDataString

داغون ترینشون اینه HttpUtility.UrlPathEncode
اصلا درست کار نمیکنه و خروجی رو خراب میکنه تو بعضی موارد. مثلا % و # رو encode نمیکنه
اینجا یه سری مواردش رو گفته
https://stackoverflow.com/a/1148326

اینم یه سری مشکلات داره Uri.EscapeUriString و جدیدا deprecate شده
تو یه سری موارد خروجی رو خراب میکنه مثلا # رو encode نمیکنه
توضیحات بیشتر
https://stackoverflow.com/a/34189188

این 2تا مثل هم رفتار میکنن و روششون اینطوریه که space رو به "+" تبدیل میکنن. فقط یه تفاوت کوچیک دارن
WebUtility.UrlEncode (حروف UpperCase تولید میکنه)
HttpUtility.UrlEncode (حروف LowerCase تولید میکنه)
این 2تا مشکلی که دارن اینه که یه سری کاراکتر های «رزرو نشده» مثل "~" رو هم encode میکنن
توضیحات بیشتر
https://stackoverflow.com/a/47877559

بهترینشون هم که خروجی کاملا استاندارد تولید میکنه و هیچ کدوم از این مشکلات رو نداره اینه
Uri.EscapeDataString

توضیحات بیشتر
https://stackoverflow.com/questions/602642/server-urlencode-vs-httputility-urlencode/
____________________
@DotNetZoom
1.1K viewsمحمد جواد ابراهیمی, 11:51
باز کردن / نظر دهید
2021-06-14 17:28:31 آموزش Unit Testing با استفاده از NUnit و Moq بخش دوم: Mocking

در زمینه Unit Testing گاهی اوقات یک Unit یا کلاس وابستگی هایی دارد که مورد بررسی برای تست نیستند. همچنین Unit مورد نظر بدون داشتن این وابستگی ها نمیتواند کار کند. یکی از راه های حل این مشکل، شبیه سازی وابستگی های Unit یا کلاس است که به Mocking معروف می باشد. یکی از کتابخانه های بسیار کاربردی و معروف در زمینه Mocking ، کتابخانه Moq می باشد که در این مقاله قصد داریم به بررسی آن بپردازیم

#بابک_طارمی
https://vrgl.ir/BnMoW
_____________
@DotNetZoom
647 viewsمحمد جواد ابراهیمی, edited  14:28
باز کردن / نظر دهید
2021-06-12 14:35:25 یک شرکت دانش‌بنیان فعال در زمینه تولید سامانه‌های سفارش مشتری جهت تکمیل تیم فنی خود از افراد واجد شرایط زیر دعوت به همکاری می نماید:

برنامه نویس Front-End
آشنایی با Blazor Web Assembly
تسلط به برقراری ارتباط با Back-end توسط فراخوانی Web API
تسلط به HTML , CSS, JavaScript , Bootstrap

برنامه نویس Back-End
آشنایی با NET 5
تسلط به EF Core
تسلط به ASP.NET Web API Core
تسلط به ASP.NET MVC

مشخصات مورد نظر :

حداقل یکسال سابقه کار
آشنایی با SqlServer

نیروی مورد نیاز به صورت حضوری و تمام وقت ولی امکان کار به صورت ریموت در مواقع لزوم فراهم است.
محدوده حقوق ماهیانه : ۵ تا ۱۰ میلیون تومان
محدوده آدرس شرکت : فلکه دوم صادقیه


ارسال رزومه به : ExirTechSun@Gmail.com
838 viewsمحمد جواد ابراهیمی, 11:35
باز کردن / نظر دهید
2021-06-12 10:35:36
مقایسه رفتار Thread Pool در متدهای Sync و Async



720 viewsمحمد جواد ابراهیمی, 07:35
باز کردن / نظر دهید
2021-06-09 06:09:27
گپ و گفت خودمونی و فان

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

این قسمت اولین قسمت از این سبک جدید هست که گپ و گفت های خودمونی و فان داریم.
گوش که دادین حتما فیدبک بدین که اگه دوس داشتین بیشتر از اینا بذاریم.
همیشه قرار نیس بحث فنی بکنیم، یه وقتایی هم لازمه بگیم و بخندیم و حال دلمون رو خوب کنیم. (این وسط یه تجربیاتی هم رد و بدل میکنیم)
خوش باشین :)

لینک ویس ضبط شده:
https://t.me/DotNetZoom/1236
_________________
@DotNetZoom
972 viewsمحمد جواد ابراهیمی, edited  03:09
باز کردن / نظر دهید
2021-06-09 06:08:36 گپ و گفت خودمونی و فان

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

این قسمت اولین قسمت از این سبک جدید هست که گپ و گفت های خودمونی و فان داریم.
گوش که دادین حتما فیدبک بدین که اگه دوس داشتین بیشتر از اینا بذاریم.
همیشه قرار نیس بحث فنی بکنیم، یه وقتایی هم لازمه بگیم و بخندیم و حال دلمون رو خوب کنیم. (این وسط یه تجربیاتی هم رد و بدل میکنیم)
خوش باشین :)
_________________
@DotNetZoom
778 viewsمحمد جواد ابراهیمی, edited  03:08
باز کردن / نظر دهید