Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Media is too big
VIEW IN TELEGRAM
پادکست مهران داودی (از اساتید دوره‌های زبان مشترک) در خصوص دو دوره‌ی زبان مارکتینگ برای تیم فنی و زبان فنی برای تیم بیزینس‌
‌‌‌____________________________‌‌__________
‌‌‌‌🔷 مهران داودی (https://twitter.com/mehrandvd )
‌‌‌🔹 معمار ارشد نرم افزار
‌‌‌🔹 مدیر عامل ملک رادار
‌‌‌🔹 مشاور نرم افزاری هواپیمایی ماهان
‌‌‌
🔴آنچه این دوره در پی آن است کاهش هزینه ها و زمان رسیدن به نتیجه است. دقیقا چیزی که کسب و کارهای موفق به دنبال آن هستند.
‌‌____________________
🔶در دوره‌ی زبان مارکتینگ برای فنی‌ها به تیم های فنی کمک خواهیم کرد تا مبانی کسب و کار و ابزار های آن آشنا شوند و چالش های تیم مارکتینگ را درک کنند.
‌‌
‌‌🔶در دوره‌ی زبان فنی برای تیم بیزینس به تیم های بیزینس کمک خواهیم کرد تا با مبانی زبان فنی آشنا شوند و فرآیند آن از برنامه‌نویسی تا چالش‌های سازمان های استارتاپی را یاد بگیرند.‌

‌____________________

📞برای اطلاعات بیشتر و رزرو دوره با شماره زیر تماس بگیرید.
02188677808

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

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

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

دیوید یو (David Yu) در این مقاله مطالبی را که در مورد reactjs و پس از مدت‌ها کار کردن با آن متوجه شده و آرزو می‌کرده که در آموزش‌‌های اولی reactjs آن‌ها را فرا می‌گرفته، گردآورده است.

هر کدام از ما می‌توانیم چنین لیستی برای موضوعی که به آن تسلط داریم تهیه و منتشر کنیم!

http://bit.ly/30DG9eg



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

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
مقایسه پرفرمنس gRPC و REST

طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن

ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :

🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه

🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه

🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره

🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین

🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه

لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
@IranAspMvc
Forwarded from فلسفه دیزاین
دو صد گفته چون نیم اسکچ نیست!

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

امروزه نیز با پیشرفت و گسترش تکنولوژی، انتقال مفاهیم دستخوش تغییر شده و اشکال گوناگونی به خود گرفته است؛ اما ساده‌ترین ابزار آن یعنی زبان و گفتار همچنان پابرجا مانده است. این پیشرفت و گسترش باعث شده است که انتقال مفاهیم نیز سخت‌تر شده و نیازمند ابزارهای جدیدتر باشد که موجب تسهیل این انتقال شود.

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

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

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

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

http://bit.ly/dxgn521

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

نویسنده: محمدرضا پناهی

#اصول #انتقال_مفاهیم #اسکچ
@Dexign فلسفه دیزاین

___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
گراف دیتابیس شامل مجموعه‌ای از جداول node و جداول edge است. node اشاره به یک موجودیت دارد و edge ارتباط بین node ها را بیان می‌کند .گراف دیتابیس‌ها زمانی استفاده می‌شوند که روابط پیچیده چند به چند بین اجزا وجود دارد. مثلا در یک شبکه اجتماعی افراد node هستند و ارتباط بین انها edge. ممکن است بین دو نفر چند نوع ارتباط وجود داشته باشد، پیاده سازی این الگو در دیتابیس‌های غیرگرافی، بسیار سخت است.

مبحث گراف دیتابیس مدتی است که به Microsoft sql server افزوده شده است، لینک زیر آخرین امکانات مبحث گراف‌ها را در sql server 2019 توضیح می‌دهد.

https://www.sqlshack.com/graph-database-features-in-sql-server-2019-part-1/

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

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

___
Software Philosophy
پادکست مهران داودی (از اساتید دوره‌های زبان مشترک) در خصوص دو دوره‌ی زبان مارکتینگ برای تیم فنی و زبان فنی برای تیم بیزینس‌ ‌‌‌____________________________‌‌__________ ‌‌‌‌🔷 مهران داودی (https://twitter.com/mehrandvd ) ‌‌‌🔹 معمار ارشد نرم افزار ‌‌‌🔹 مدیر…
دوره زبان مشترک بین تیم‌های فنی و بیزنس چیه؟

این دوره در حقیقت دو تا دورس!

۱. یکی آموزش مبانی زبان فنی به تیم‌های بیزنسیه، به طوریکه با اصول برنامه‌نویسی و تیم‌های فنی آشنا بشن.

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

قسمت زیادی از دوره اول رو من قراره آموزش بدم،
و یه قسمتی از دوره دوم رو.

راستی مدرسه بازاریابی برای اساتید دوره یه کد تخفیف ۳۵٪ تعریف کرده که می‌تونید ازش استفاده کنید:
کد تخفیف من: mehrandavoudi

شماره تماسشون هم: 02188677808
#پست_مجدد این پست تا به حال بیش از ۵۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ما به عنوان مهندسین نرم‌افزار عادت کردیم که نرم‌افزار بسازیم، در حقیقت به آن معتاد شده‌ایم. به خاطر همین موضو است که اغلب دوست نداریم به این فکر کنیم که تغییری که در نرم‌افزار می‌دهیم چطور باید در نسخه لایو اجرایی شود. خیلی وقت‌ها نرم‌افزار را به صورت بسیار عالی تغییر می‌دهیم، ولی برنامه‌ای برای اینکه این تغییر چطور باید در نسخه‌اجرایی اعمال شود نداریم.
یکی از دغدغه‌ اصلی یک مهندس نرم‌افزار خوب، تمرکز بر Software Migration است. هر قطعه کدی که توسط یک مهندس نرم‌افزار نوشته می‌شود باید با دید یک Change دیده شود که باید روی نسخه لایو اعمال شود، نه صرفا یک کد جدید که Create شده‌است.

http://mehrandvd.me/2015/09/06/be-a-developer-not-a-programmer/


@SoftwarePhilosophy


___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ چند مقاله خوب در مورد gRPC

🔰قبلا در مورد gRPC پست مفصلی گذاشتم. این روزا هم بحث gRPC خیلی ترند شده مخصوصا حالا که NET Core 3.0. هم داره حسابی ازش پشتیبانی میکنه و فیچر براش میده
پس اگه به این مبحث علاقه مندین، منابع زیر میتونه شروع خوبی باشه براتون

🔸 آشنایی اولیه با gRPC
------------------

🔹 Creating your first gRPC .NET Core Client and Server App using Visual Studio or Visual Studio Code

👆 Github Repository

------------------

🔹 ASP.NET Core and gRPC

🔸 Working with gRPC in ASP.NET Core

🔹 Dissecting a Client-Server Application built with .NET Core 3 Preview 1 and gRPC

🔸 C# and gRPC Part One

------------------

🔹 Security Experiments with gRPC and ASP.NET Core 3.0

🔸 Running Razor Pages and A gRPC Service in a Single ASP.NET Core Application

🔹 gRPC Bi-Directional Streaming With Razor Pages And A Hosted Service gRPC Client

👆 Github Repository

------------------

🔹 An Early Look at gRPC and ASP.NET Core 3.0 (Creating an ASP.NET Core 3.0 gRPC Client and Server)

👆 Github Repository
________________
@IranAspMvc
Forwarded from فلسفه دیزاین
لحظه جادویی خلاقیت…

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

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

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

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

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

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

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

مقاله کاربردی امروز را به هیچ وجه از دست ندهید!

http://bit.ly/dxgn522

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

نویسنده: آرش اصغری

@Dexign فلسفه دیزاین
#تجربه_کاربری #خلاقیت #ایده

ـــــ
#پست_مجدد این پست تا به حال بیش از ۲۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
زمانبندی کردن یک background task در Andriod با Xamarin

ساخت یک schedule که defferable باشد و به صورت aynchronous‌ اجرا شود و از همه مهمتر روی تمامی نسخه‌های اندروید مخصوصا نسخه‌های قدیمی قابل اجرا باشد چالش برانگیز است. در API 23+ می‌توان از Job Scheduler استفاده کرد، در صورتی که برای API های قدیمی‌تر تا API 14 باید از Alarm Manager + Broadcast Recievers استفاده کرد.
کتابخانه WorkManager که در مقاله زیر معرفی شده‌است، تمامی این پیچیدگی‌ها را درون خود هندل کرده و به برنامه‌نویس اجازه می‌دهد به سادگی کارهای Scheduled و Periodic را روی پلتفرم اندروید پیاده سازی کند.


https://devblogs.microsoft.com/xamarin/getting-started-workmanager/

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

http://bit.ly/2IdtcQ7

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

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


___
شب برنامه‌نویس مبارک!

از اونجایی که اصولا ما برنامه‌نویس‌ها بیشتر شب داریم تا روز!

کانال «فلسفه نرم‌افزار»
@SoftwarePhilosophy
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ اگه میخواین مفهوم Hash و Salt رو درک کنین
فیلم زیر از جادی خیلی باحال توضیحش میده

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

1️⃣ https://www.aparat.com/v/1YjmV/
2️⃣ https://www.aparat.com/v/PmYpu/
3️⃣ https://www.aparat.com/v/Yg02q/
________________
@IranAspMvc
این روزها از هر راهی در جستجوی جواب این سوال بودم که «چرا آدم‌ها در تیم مخالفتشان را بیان نمی‌کنند» من منتظر بودم دلیل را در فرد سکوت کننده پیدا کنم، اما در اشتباه بودم پاسخ‌های زیادی گرفتم مثل اینکه می‌ترسند، تجربه بدی دارند، حرفشان را بی تاثیر می‌دانند و ...
این مطلب هافینگتون پست فصل‌الخطاب! همه پاسخ هایی بود که پیدا کرده بودم ۷ دلیل که افراد نظرشان را بیان نمی‌کنند که به نظر من هر ۷ مورد در روزمره تیم‌ها قابل مشاهده هستند.

https://www.huffpost.com/entry/the-7-reasons-people-dont_b_8152786?guccounter=1

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

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

___
Forwarded from فلسفه دیزاین
پرسونا چیست و ساخت آن چگونه است؟

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

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


چگونه پرسونا بسازیم؟

۱-
برای ساخت پرسونا حداقل پنج مصاحبه انجام دهید.
۲- به داده‌های خود توجه زیادی کنید.
۳- شباهت‌ها یا اصطلاحا Patternهای بین مصاحبه‌ها را پیدا کنید.
۴- پرسونای خود را که شامل اسم، عکس، علاقه‌مندی‌ها، اهداف و مشکلات کاربران است، بسازید.
۵- نتیجه کار خود را به اشتراک بگذارید.
(بسیاری از شرکت‌های بزرگ پرسونای خود را به اشتراک می‌گذارند تا به دیزاینرهای دیگر کمکی کرده باشند، چرا ما در این اقدام سهیم نباشیم؟)

برای مطالعه و اطلاعات بیشتر درباره این موضوع، مقاله امروز را از دست ندهید:

http://bit.ly/dxgn524

(زمان حدودی مطالعه: ۴ دقیقه)

نویسنده: رضا دانشیان

#پرسونا #تجربه_کاربری #آموزش
@Dexign فلسفه دیزاین

___
Forwarded from Software Philosophy
ری‌اکت Hooks با ایده حل مشکلاتی که کاربران با ری اکت داشتند معرفی شد. مانند حل مشکل کامپوننت‌های خیلی بزرگ و صعب‌الدیباگ اما آیا واقعا ری‌اکت Hooks این مشکلات را حل می‌کند؟ ری‌اکت Hooks قرار است چه تغییری برای ما ایجاد کند؟
این مقاله توضیح می‌دهد که ری‌اکت هوکس چه تغییراتی داشته است و چه مشکلاتی را حل می‌کند. در ابتدای مقاله هم ویدیو یک ساعته معرفی Hooks در کنفرانس ری اکت وجود دارد که می‌توانید آن را تماشا کنید.

https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889

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

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

___
نوبتی هم باشه نوبت «واچ پارتیه»! 🎂🍰🥂

قراره دور هم جمع بشیم و کنفرانس #DotNetConf رو در یک Watch Party با هم ببینیم.

همونطور که می‌دونید (یا شایدم ندونید) دوشنبه ۱ مهر کنفرانس #DotNetConf شروع می‌شه. دات‌نت‌کانف یکی مهمترین کنفرانس‌هایی هست که مایکروسافت توش تکنولوژی‌های جدید برنامه‌نویسی رو معرفی می‌کنه.

مایکروسافت امکانی رو فراهم کرده که افراد بتونن در سایت کنفرانس یه Watch Party رجیستر کنن و به طور رسمی دور هم جمع بشن و کنفرانس رو لایو با هم ببینین و در مورد موضوعاتش با هم صحبت کنن. همونطور که در نقشه‌ جهانی سایت کنفرانس می‌بینید ما تو ایران یه Watch Party ثبت کردیم (فعلا تو ایران فقط یکی هست) تا دور هم جمع بشیم و با هم کنفرانس رو ببینیم و در مورد تکنولوژی‌ها صحبت کنیم.

تو کنفرانس امسال نسخه نهایی .Net Core 3.0 ارائه می‌شه. همچنین در مورد آخریت تغییرات C# 8.0، ASP.NET Core و سرویس‌های هیجان‌انگیز Azure صحبت می‌شه. همچنین خبرهای جذابی از Blazor در راهه.

قسمتی از کنفرانس رو که انتخاب کردیم واسش واچ‌پارتی برگزار کنیم در مورد موضوعات بالا صحبت می‌شه و دوشنبه ۱ مهر، از ساعت ۱۹ تا ۲۳:۵۹ هست!
تو فرصت‌های خالی بین سخنرانی‌های تیم مایکروسافت، ما هم با هم در مورد تکنولوژی‌هایی که مطرح شده گپ می‌زنیم.

تو این پارتی «مهران داودی» هم هست تا از ویژگی‌های C# 8.0 بگه و تجربش در معماری محصولات روی Azure رو باهامون به اشتراک بذاره.

«یاسر مرادی» هم هست تا تجربش در ASP.NET Core و Xamarin باهامون به اشتراک بذاره.

«صالح یوسف‌نژاد» هم در مورد Blazor اطلاعاتش رو باهامون به اشتراک می‌ذاره.

این رویداد رو داریم با همکاری «مدرسه بازاریابی تهران» @tehran_marketing در ایران برگزار می‌کنیم.

برای ثبت‌نام تو سایت کنفرانس ایران رو پیدا کنید و تو رویداد ثبت‌نام کنید:

👉 https://www.dotnetconf.net/local-events 👈
و یا مستقیما از طریق سایت ایوند ثبت‌نام کنید:
http://evnd.co/NZfCK


چون فرصت کوتاهه و ظرفیت هم محدود، همین الان رجیستر کنید.

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

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

___
Software Philosophy
نوبتی هم باشه نوبت «واچ پارتیه»! 🎂🍰🥂 قراره دور هم جمع بشیم و کنفرانس #DotNetConf رو در یک Watch Party با هم ببینیم. همونطور که می‌دونید (یا شایدم ندونید) دوشنبه ۱ مهر کنفرانس #DotNetConf شروع می‌شه. دات‌نت‌کانف یکی مهمترین کنفرانس‌هایی هست که مایکروسافت…
دوستان ظرفیت رویداد Watch Party ایران برای دیدن لایو کنفرانس #DotNetConf مایکروسافت،
در عرض ۲ ساعت پر شد!


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

ممنون از استقبال شما،
منتظر دعوتنامه رویداد باشید.

👉 https://www.dotnetconf.net/local-events 👈
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
افزایش امنیت JWT توسط Refresh Token در ASP NET Core

وقتی
از Jwt واسه احراز هویت برنامه تون استفاده میکنین سوالی که پیش میاد اینه که زمانی که توکن کاربر Expire (منقضی) شد چی میشه؟!

1️⃣ آیا باید کاربر رو Logout کنیم و ازش بخوایم دوباره لاگین کنه؟ اگه وسط یه عملیات مهم باشه چی؟! همه چی از دست میره که! 🤔

2️⃣ شایدم باید مدت زمان توکن رو زیاد کنیم، مثلا 1 سال !! تا دیر به دیر منقضی بشه. که این عملا بدترین راه حل ممکن هست چرا که اگه توکن به سرقت بره، هکر تا یک سال میتونه هر کاری میخواد با توکن طرف (هویتش) بکنه 😕

3️⃣ یا اینکه یوزر و پسورد طرف رو بگیریم سمت خودمون ذخیره کنیم (مثلا توی localStorage توی وب) و هر موقع توکن اش منقضی شد، زیر پوستی خودمون یوزر پس طرف رو بفرستیم و توکن جدید بگیریم؟! اینم که ضعف امنیتی داره چون یوزر و پس طرف در معرض خطره 🤨

🔰پس راه حل چیه؟

🔸راه حل استفاده از Refresh Token هست. به این صورت که وقتی طرف برای بار اول میخواد احراز هویت بشه، یوزر و پس اش رو به ما میده و ما 2تا توکن بهش میدیم. یکی access_token که همون Jwt هست و دیگری یک refresh_token که عملا یه متن رندم (مثلا یه Guid) هست
این رفرش توکن (guid) توی دیتابیس ما ذخیره شده که به ازای چه کاربری و چه access_token ایی هست، در نتیجه وقتی طرف access_token اش منقضی میشه به جای اینکه لازم باشه 2مرتبه یوزر و پس برای ما بفرسته، با فرستادن refresh_token میتونه یه توکن جدید (شامل یه access_token جدید + یه refresh_token جدید) دریافت کنه که اینطوره ضریب امنیت بالا میره (چون یوزر پس اشو نمیفرسته)

🔹ضمن اینکه هر بار گرفتن access_token توسط refresh_token ، اون access_token قبلی رو غیرفعال میکنه، پس اگر access_token به سرقت بره، با Revoke کردنش توسط refresh_token، غیر قابل استفاده میشه و باز هم ضریب امنیت بالاتر میره

🔸این عملیات هم سمت فرانت یا کلاینت باید پشت پرده و زیر پوستی انجام بشه تا کاربر اصلا متوجه logout و login شدن مجددش نشه. مثلا توی Angular توسط HttpIncerceptor میتونیم قبل از Api Call ها چک کنیم که اگر access_token مون منقضی شده، ابتدا توسط refresh_token، یه توکن جدید بگیریم و بعد Api Call مون رو انجام بدیم

🔰خیلی از دوستان هم میپرسن مدت زمان انقضای access_token و refresh_token چقدر باید باشه؟

🔹هیچ بایدی وجود نداره و همه جوره زمان میدن بهش. درکل چیزی که مهمه اینه که مدت زمان access_token باید کم باشه و مدت زمان refresh_token بیشتر.
مثلا شخصا ترجیح میدم مدت زمان access_token بین 5 دقیقه تا نهایتا 1 ساعت باشه
و مدت زمان refresh_token بین 1 هفته تا نهایتا 1 ماه باشه

🔸هرچی کمتر باشه ضریب امنیت بیشتر میشه ولی تعداد ریکوئستا به سرور هم بیشتر میشه
البته یه مشکلی که هنگام استفاده از RefreshToken پیش میاد اینه که اگه کاربر توی مدت زمان refresh_token با سایت هیچ تعاملی نداشته باشه که توکن جدید دریافت کنه، مثلا بیشتر از 1 ماه به سایت ما سر نزنه، بعدش کلا logout میشه و باید دوباره توسط User و Pass لاگین کنه (که خب به نظرم منطقی هم هست)

❇️ از بین مقاله های زیادی که برای RefreshToken در ASP Core هست؛ این2تا رو براتون گلچین کردم که خیلی خوب توضیح دادند و اصولی پیاده سازی کردند

1️⃣ https://bit.ly/2ZZ2JwT
2️⃣ https://bit.ly/2ZWTk9o
_____________
@IranAspMvc