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/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://bit.ly/2IdtcQ7
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
ساخت یک 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/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://bit.ly/2IdtcQ7
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Microsoft News
Getting Started With WorkManager
WorkManager is a library that makes it easy to schedule deferrable, asynchronous tasks even if the app exits or the device restarts.
شب برنامهنویس مبارک!
از اونجایی که اصولا ما برنامهنویسها بیشتر شب داریم تا روز!
کانال «فلسفه نرمافزار»
@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
فیلم زیر از جادی خیلی باحال توضیحش میده
🔰 نقل قول از جادی :
"به نظر من، هشها از قشنگیهای دنیای کامپیوتر و برنامه نویسی. فانکشنهایی که میتونن اطلاعات رو به ترکیبی از بیت های دیگه با طول ثابت تبدیل کنن و نتیجه شون هم همیشه برای ورودی ثابت، ثابته. این ایده درخشان منتیج به نتایج خیلی جالبی هم شده. مثلا فرض کنین می خواین بدونین آیا فایلی که دانلود کردین سالمه یا نه. یا می خواین کلی دیتا رو جایی بریزین و سریع پیداشون کنین. یا از اون جالبتر، می خواین به یکی پشت تلفن بگین «یه عدد در نظر بگیر» و بعد عدد رو حدس بزنین و مطمئن باشین که تقلبی نمی تونه اتفاق بیافته یا حتی رمزارز بسازین. همه اینجاها، هش کار گشا است فهمیدنش برای یک برنامه نویس خوب واجبه. "
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
#مریم_کمالی (https://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
این مطلب هافینگتون پست فصلالخطاب! همه پاسخ هایی بود که پیدا کرده بودم ۷ دلیل که افراد نظرشان را بیان نمیکنند که به نظر من هر ۷ مورد در روزمره تیمها قابل مشاهده هستند.
https://www.huffpost.com/entry/the-7-reasons-people-dont_b_8152786?guccounter=1
#مریم_کمالی (https://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
HuffPost
The 7 Reasons People Don't Say What They Really Think at Work
Whether you have control of a group or are a participant leading from the middle, if you're worried people aren't really saying what they think, make tim...
Forwarded from فلسفه دیزاین
پرسونا چیست و ساخت آن چگونه است؟
در دنیای تجربه کاربری، پرسونا نقش بسیار مهمی را ایفا میکند. امروز میخواهیم درباره این مفهوم اطلاعات کسب کرده و نحوه ساخت آن را فرا بگیریم.
پرسونا، مجموعهای از اطلاعات در مورد شخصی واقعی است که در واقع، به نیابت از گروهی خاص از کاربران در کاربرپژوهی حضور دارد.
در واقع پرسونا، راهی است برای پاسخ دقیقتر به سوالات مربوط به کاربران محصول یا خدمتی که در حال دیزاین آن هستیم؛ و در هرچه بهینهتر شدن آن ما را یاری میکند.
چگونه پرسونا بسازیم؟
۱- برای ساخت پرسونا حداقل پنج مصاحبه انجام دهید.
۲- به دادههای خود توجه زیادی کنید.
۳- شباهتها یا اصطلاحا Patternهای بین مصاحبهها را پیدا کنید.
۴- پرسونای خود را که شامل اسم، عکس، علاقهمندیها، اهداف و مشکلات کاربران است، بسازید.
۵- نتیجه کار خود را به اشتراک بگذارید.
(بسیاری از شرکتهای بزرگ پرسونای خود را به اشتراک میگذارند تا به دیزاینرهای دیگر کمکی کرده باشند، چرا ما در این اقدام سهیم نباشیم؟)
برای مطالعه و اطلاعات بیشتر درباره این موضوع، مقاله امروز را از دست ندهید:
https://bit.ly/dxgn524
(زمان حدودی مطالعه: ۴ دقیقه)
نویسنده: رضا دانشیان
#پرسونا #تجربه_کاربری #آموزش
@Dexign فلسفه دیزاین
___
در دنیای تجربه کاربری، پرسونا نقش بسیار مهمی را ایفا میکند. امروز میخواهیم درباره این مفهوم اطلاعات کسب کرده و نحوه ساخت آن را فرا بگیریم.
پرسونا، مجموعهای از اطلاعات در مورد شخصی واقعی است که در واقع، به نیابت از گروهی خاص از کاربران در کاربرپژوهی حضور دارد.
در واقع پرسونا، راهی است برای پاسخ دقیقتر به سوالات مربوط به کاربران محصول یا خدمتی که در حال دیزاین آن هستیم؛ و در هرچه بهینهتر شدن آن ما را یاری میکند.
چگونه پرسونا بسازیم؟
۱- برای ساخت پرسونا حداقل پنج مصاحبه انجام دهید.
۲- به دادههای خود توجه زیادی کنید.
۳- شباهتها یا اصطلاحا Patternهای بین مصاحبهها را پیدا کنید.
۴- پرسونای خود را که شامل اسم، عکس، علاقهمندیها، اهداف و مشکلات کاربران است، بسازید.
۵- نتیجه کار خود را به اشتراک بگذارید.
(بسیاری از شرکتهای بزرگ پرسونای خود را به اشتراک میگذارند تا به دیزاینرهای دیگر کمکی کرده باشند، چرا ما در این اقدام سهیم نباشیم؟)
برای مطالعه و اطلاعات بیشتر درباره این موضوع، مقاله امروز را از دست ندهید:
https://bit.ly/dxgn524
(زمان حدودی مطالعه: ۴ دقیقه)
نویسنده: رضا دانشیان
#پرسونا #تجربه_کاربری #آموزش
@Dexign فلسفه دیزاین
___
Medium
How to create Personas, a step by step guide.
Persona is a simple tool to create your product with a specific target user in mind rather than a generic one. It’s a representation of the…
Forwarded from Software Philosophy
ریاکت Hooks با ایده حل مشکلاتی که کاربران با ری اکت داشتند معرفی شد. مانند حل مشکل کامپوننتهای خیلی بزرگ و صعبالدیباگ اما آیا واقعا ریاکت Hooks این مشکلات را حل میکند؟ ریاکت Hooks قرار است چه تغییری برای ما ایجاد کند؟
این مقاله توضیح میدهد که ریاکت هوکس چه تغییراتی داشته است و چه مشکلاتی را حل میکند. در ابتدای مقاله هم ویدیو یک ساعته معرفی Hooks در کنفرانس ری اکت وجود دارد که میتوانید آن را تماشا کنید.
https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889
#مریم_کمالی (https://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
این مقاله توضیح میدهد که ریاکت هوکس چه تغییراتی داشته است و چه مشکلاتی را حل میکند. در ابتدای مقاله هم ویدیو یک ساعته معرفی Hooks در کنفرانس ری اکت وجود دارد که میتوانید آن را تماشا کنید.
https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889
#مریم_کمالی (https://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
Medium
Making Sense of React Hooks
This week, Sophie Alpert and I presented the “Hooks” proposal at React Conf, followed by a deep dive from Ryan Florence:
نوبتی هم باشه نوبت «واچ پارتیه»! 🎂🍰🥂
قراره دور هم جمع بشیم و کنفرانس #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 👈
و یا مستقیما از طریق سایت ایوند ثبتنام کنید:
https://evnd.co/NZfCK
⏱ چون فرصت کوتاهه و ظرفیت هم محدود، همین الان رجیستر کنید.
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@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 👈
و یا مستقیما از طریق سایت ایوند ثبتنام کنید:
https://evnd.co/NZfCK
⏱ چون فرصت کوتاهه و ظرفیت هم محدود، همین الان رجیستر کنید.
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
www.dotnetconf.net
.NET Conf 2025
Join the .NET Conf 2025 free virtual event November 11-13 to learn about the newest developments across the .NET platform, open source, and dev tools. Mark your calendar!
Software Philosophy
نوبتی هم باشه نوبت «واچ پارتیه»! 🎂🍰🥂 قراره دور هم جمع بشیم و کنفرانس #DotNetConf رو در یک Watch Party با هم ببینیم. همونطور که میدونید (یا شایدم ندونید) دوشنبه ۱ مهر کنفرانس #DotNetConf شروع میشه. داتنتکانف یکی مهمترین کنفرانسهایی هست که مایکروسافت…
دوستان ظرفیت رویداد Watch Party ایران برای دیدن لایو کنفرانس #DotNetConf مایکروسافت،
در عرض ۲ ساعت پر شد!
ولی ما صفحه ثبتنام رو باز نگه داشتیم تا در صورتیکه تونستیم مکان بزرگتری برای پارتی آماده کنیم، افراد بیشتری رو دعوت کنیم.
ولی اگه نشد مجبوریم از لیست ثبتنام (بر اساس SOP و رزومه ارسالی) فقط به اندازه ظرفیت فیزیکی و پذیرایی که داریم دعوت کنیم.
ممنون از استقبال شما،
منتظر دعوتنامه رویداد باشید.
👉 https://www.dotnetconf.net/local-events 👈
در عرض ۲ ساعت پر شد!
ولی ما صفحه ثبتنام رو باز نگه داشتیم تا در صورتیکه تونستیم مکان بزرگتری برای پارتی آماده کنیم، افراد بیشتری رو دعوت کنیم.
ولی اگه نشد مجبوریم از لیست ثبتنام (بر اساس SOP و رزومه ارسالی) فقط به اندازه ظرفیت فیزیکی و پذیرایی که داریم دعوت کنیم.
ممنون از استقبال شما،
منتظر دعوتنامه رویداد باشید.
👉 https://www.dotnetconf.net/local-events 👈
www.dotnetconf.net
.NET Conf 2025
Join the .NET Conf 2025 free virtual event November 11-13 to learn about the newest developments across the .NET platform, open source, and dev tools. Mark your calendar!
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
وقتی از 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
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
در سال 2004 ایدهای مبنی بر اتومات کردن تستها در محیط وب توسط جیسون هوگینز مطرح شد که به طور اتومات فرایند مدیریت اکشنها را در مرورگر کنترل میکرد. این شیوه بعدا با نام JavaScriptTestRunner معروف شد.
این برنامه نقطه آغاز برنامهای شد که امروزه آن را با نام سلنیوم میشناسیم. سلنیوم در حقیقت مجموعهای open source از ابزارهاست که به ما کمک میکنند برنامههای وب را در مرورگرها و سیستمهای عامل به صورت اتومات تست کنیم .
مقاله زیر یک متال از استفاده سلنیوم با C# و dotnet core است که مطالعه آن خالی از لطف نیست:
https://blankstechblog.com/2019/05/23/cross-platform-selenium-with-dotnet-core/
https://github.com/andyrblank/Selenium-C-Sharp-Example
#شهریار_انتظام (https://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
این برنامه نقطه آغاز برنامهای شد که امروزه آن را با نام سلنیوم میشناسیم. سلنیوم در حقیقت مجموعهای open source از ابزارهاست که به ما کمک میکنند برنامههای وب را در مرورگرها و سیستمهای عامل به صورت اتومات تست کنیم .
مقاله زیر یک متال از استفاده سلنیوم با C# و dotnet core است که مطالعه آن خالی از لطف نیست:
https://blankstechblog.com/2019/05/23/cross-platform-selenium-with-dotnet-core/
https://github.com/andyrblank/Selenium-C-Sharp-Example
#شهریار_انتظام (https://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
Software Philosophy
دوستان ظرفیت رویداد Watch Party ایران برای دیدن لایو کنفرانس #DotNetConf مایکروسافت، در عرض ۲ ساعت پر شد! ولی ما صفحه ثبتنام رو باز نگه داشتیم تا در صورتیکه تونستیم مکان بزرگتری برای پارتی آماده کنیم، افراد بیشتری رو دعوت کنیم. ولی اگه نشد مجبوریم از لیست…
با توجه به رجیستر تعداد زیادی از دوستان و عدم امکان پذیرش همه، امکان استریم رویداد ایران از طریق توییچ فراهم شد.
https://twitch.tv/software_philosophy
https://twitch.tv/software_philosophy
Twitch
software_philosophy - Twitch
software_philosophy streams live on Twitch! Check out their videos, sign up to chat, and join their community.
Forwarded from فلسفه دیزاین
تکنیکی برای مرتبسازی کمد آقا ووپی!
برای بسیاری از ما پیش آمده که پس از مطالعه و تحقیق درباره کاربر و ایدهپردازی درباره محصول، با حجم عظیمی از یافتهها و ایدهها مواجه میشویم که دستهبندی کردن آنها کار دشواری است. اکنون میخواهیم متدی را معرفی کنیم که با استفاده از آن میتوان به آسانی در جلسات ایدهپردازی و تحلیل دادهها نتایج به دست آمده را مرتب کرد.
اگرچه پیش از این تکنیک Affinity Diagramming در کسب و کارها برای سازماندهی مجموعه ایدهها مورد استفاده قرار میگرفت، اما حال در طراحی تجربه کاربری نیز میتوان به کمک این روش سرعت تحلیل دادهها و نتایج حاصل از تحقیق را افزایش داد.
به طور خلاصه تکنیک Affinity Diagramming به شما کمک میکند که موارد مرتبط با یکدیگر را در دستههای مجزا مرتب کنید.
برای مثال، با استفاده از این متد در تحقیق درباره پرسونای مخاطب میتوانیم یافتههایی که پس از مصاحبه بدست میآوریم را مرتب کرده و بیآنکه در حجم عظیمی از دادهها سردرگم بشویم نکات کلیدی و مهم را دریافت کنیم. همچنین در جلسات ایدهپردازی و طوفان فکری، با بهرهگیری از این روش پس از پایان جلسه، میتوان ایدهها را در دستههای متفاوت بخشبندی کرد. از آنجا که این روش سریع و بهصرفه است برای طراحان تجربه کاربری مفید و موثر خواهد بود.
در ادامه شما را به مطالعهی مقالهای از گروه نیلسون نورمن دعوت میکنم.
میتوانید اطلاعات بیشتر درمورد چگونگی استفاده از این تکنیک را در مقاله امروز بخوانید.
https://bit.ly/dxgn526
(زمان حدودی مطالعه، ۱۰ دقیقه)
نویسنده: پریسا حسینی
#تجربه_کاربری #ایده_پردازی #روش_تحقیق
فلسفه دیزاین @Dexign
ــــ
برای بسیاری از ما پیش آمده که پس از مطالعه و تحقیق درباره کاربر و ایدهپردازی درباره محصول، با حجم عظیمی از یافتهها و ایدهها مواجه میشویم که دستهبندی کردن آنها کار دشواری است. اکنون میخواهیم متدی را معرفی کنیم که با استفاده از آن میتوان به آسانی در جلسات ایدهپردازی و تحلیل دادهها نتایج به دست آمده را مرتب کرد.
اگرچه پیش از این تکنیک Affinity Diagramming در کسب و کارها برای سازماندهی مجموعه ایدهها مورد استفاده قرار میگرفت، اما حال در طراحی تجربه کاربری نیز میتوان به کمک این روش سرعت تحلیل دادهها و نتایج حاصل از تحقیق را افزایش داد.
به طور خلاصه تکنیک Affinity Diagramming به شما کمک میکند که موارد مرتبط با یکدیگر را در دستههای مجزا مرتب کنید.
برای مثال، با استفاده از این متد در تحقیق درباره پرسونای مخاطب میتوانیم یافتههایی که پس از مصاحبه بدست میآوریم را مرتب کرده و بیآنکه در حجم عظیمی از دادهها سردرگم بشویم نکات کلیدی و مهم را دریافت کنیم. همچنین در جلسات ایدهپردازی و طوفان فکری، با بهرهگیری از این روش پس از پایان جلسه، میتوان ایدهها را در دستههای متفاوت بخشبندی کرد. از آنجا که این روش سریع و بهصرفه است برای طراحان تجربه کاربری مفید و موثر خواهد بود.
در ادامه شما را به مطالعهی مقالهای از گروه نیلسون نورمن دعوت میکنم.
میتوانید اطلاعات بیشتر درمورد چگونگی استفاده از این تکنیک را در مقاله امروز بخوانید.
https://bit.ly/dxgn526
(زمان حدودی مطالعه، ۱۰ دقیقه)
نویسنده: پریسا حسینی
#تجربه_کاربری #ایده_پردازی #روش_تحقیق
فلسفه دیزاین @Dexign
ــــ
Nielsen Norman Group
Affinity Diagramming: Collaboratively Sort UX Findings & Design Ideas
Affinity diagramming is an activity used to organize research findings and design ideas. When done in teams, it increases involvement and ownership for UX work.
برنامه نویس (مهندس نرم افزار) خوب چه ویژگیها و مهارتهایی دارد؟
برنامه نویس خوب چه کسی است؟ چه ویژگیها و مهارتهایی لازم است داشته باشد تا در کارش موفق و حرفهای باشد.
به اطراف خود نگاه کنید، شرکتها و سازمانهای ما همیشه پر از متخصصان فنی هستند، ولی در اکثر موارد پروژههای تیمهای نرمافزاری با شکست مواجه میشوند و یا با کیفیتی که مشتری انتظار دارد تحویل داده نمیشوند.
دلیل آن چیست؟ متاسفانه ما کمتر در مورد soft skill های مورد نیاز در یک تیم فنی مطلب فارسی داریم و عموما فارغ التحصیلان نرمافزار به صرف داشتن حداقل دانش فنی لازم، وارد بازار کار میشوند و بعضی از آنها احتمالا هیچ وقت در مواجه با آموزشها و مهارتهای ارتباطی و تیمی قرار نمیگیرند.
نتیجه آن که ما در شرکتها، گروههای نرمافزاریای داریم که به صورت فردی، فقط در کنار هم کار میکنند.
در ویدئو زیر ضمن توضیح دقیقتر نقشهای افراد در یک تیم تولید نرمافزار، به بیان عناوین برخی از مهمترین مهارتهای فنی و soft skill اشاره کردهام.
https://youtu.be/uhezZBrfRoU
#امیرحسین_عبدالخالق (https://bit.ly/2n025Rz)
کانال تلگرام:
@SoftwarePhilosophy
___
برنامه نویس خوب چه کسی است؟ چه ویژگیها و مهارتهایی لازم است داشته باشد تا در کارش موفق و حرفهای باشد.
به اطراف خود نگاه کنید، شرکتها و سازمانهای ما همیشه پر از متخصصان فنی هستند، ولی در اکثر موارد پروژههای تیمهای نرمافزاری با شکست مواجه میشوند و یا با کیفیتی که مشتری انتظار دارد تحویل داده نمیشوند.
دلیل آن چیست؟ متاسفانه ما کمتر در مورد soft skill های مورد نیاز در یک تیم فنی مطلب فارسی داریم و عموما فارغ التحصیلان نرمافزار به صرف داشتن حداقل دانش فنی لازم، وارد بازار کار میشوند و بعضی از آنها احتمالا هیچ وقت در مواجه با آموزشها و مهارتهای ارتباطی و تیمی قرار نمیگیرند.
نتیجه آن که ما در شرکتها، گروههای نرمافزاریای داریم که به صورت فردی، فقط در کنار هم کار میکنند.
در ویدئو زیر ضمن توضیح دقیقتر نقشهای افراد در یک تیم تولید نرمافزار، به بیان عناوین برخی از مهمترین مهارتهای فنی و soft skill اشاره کردهام.
https://youtu.be/uhezZBrfRoU
#امیرحسین_عبدالخالق (https://bit.ly/2n025Rz)
کانال تلگرام:
@SoftwarePhilosophy
___
YouTube
برنامه نویس (مهندس نرم افزار) خوب چه ویژگی ها و مهارتهایی دارد؟
برنامه نویس، یا بهتر بگم مهندس نرم افزار خوب چه ویژگی ها و مهارتهایی دارد؟
صرفا استفاده از کلمه برنامه نویس برای همه نقش هایی که در فرآیند تولید نرم افزار حضور دارند اشتباه است پس بهتر است اول نقشها را دقیق تر تعریف کنیم: کدنویس، برنامه نویس، دولوپر و مهندس…
صرفا استفاده از کلمه برنامه نویس برای همه نقش هایی که در فرآیند تولید نرم افزار حضور دارند اشتباه است پس بهتر است اول نقشها را دقیق تر تعریف کنیم: کدنویس، برنامه نویس، دولوپر و مهندس…
👍1
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ کنترل سطح دسترسی پویا و 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
چند وقت پیش یکی از دوستان سوال پرسیده بودند که چطور میتونیم سطح دسترسی کاربر رو به اکشن های دلخواه، محدود کنیم. اتفاقا چند سال پیش همین نیاز رو خودمم داشتم و به این صورت هندلش کردیم که :
هر کاربر میتونه 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
Telegram
Attach Files
#پست_مجدد این پست تا به حال بیش از ۹۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
و اینک ۹ نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
ما در «ملکرادار» دو تا از این تنظیمات رو انجام نداده بودیم که در حال بررسی هستیم تا اونها رو هم فعال کنیم.
https://www.telerik.com/blogs/nine-performance-tips-for-azure-app-services
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
ما در «ملکرادار» دو تا از این تنظیمات رو انجام نداده بودیم که در حال بررسی هستیم تا اونها رو هم فعال کنیم.
https://www.telerik.com/blogs/nine-performance-tips-for-azure-app-services
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Telerik Blogs
Nine Performance Tips for Azure App Services
Squeezing every bit of performance from your application hosted in Azure App Services will help you save money and keep your customers happy.
ربات ۴ پای «اسپات»، حالا در اختیار برنامهنویسان!
حتما تا به حال ویدئوهای زیادی از ربات چهارپای شرکت Boston Dynamics که شبیه به یک سگ است دیدهاید. رباتی که در شرایط سخت محیطی به خوبی قادر است حرکت کند و در شرایطی که رباتهای «مبتنی بر چرخ» نمیتوانند کار کنند این ربات به خوبی کار میکند.
حالا خبر جذاب این که شرکت بوستون داینامیکس یه نسخه تجاری از این ربات رو به اسم Spot داره وارد بازار میکنه. خبر جذذابتر اینکه این ربات از طریق یک API قابل کنترل هست و در حقیقت دنیای جدیدی به دنیای برنامهنویسان اضافه شده!
در حال حاضر پروتکل ارتباطی این ربات از طریق gRPC است و این یعنی وااااااو! از این به بعد به مرور شاهد کاربردهای عجیبی از رباتهایی خواهیم بود که برنامهنویسان میتونن اونها رو کنترل کنند.
ویدئوی زیر، ویدئوی تبلیغاتی هست برای معرفی امکانات ربات اسپات ساخته شده. ببینید و لذت ببرید و آینده رو تصور و تجسم کنید!
خوشحال میشم پیشبینیهاتون از آینده رو بفرستید همینجا...
https://youtu.be/wlkCQXHEgjA
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
حتما تا به حال ویدئوهای زیادی از ربات چهارپای شرکت Boston Dynamics که شبیه به یک سگ است دیدهاید. رباتی که در شرایط سخت محیطی به خوبی قادر است حرکت کند و در شرایطی که رباتهای «مبتنی بر چرخ» نمیتوانند کار کنند این ربات به خوبی کار میکند.
حالا خبر جذاب این که شرکت بوستون داینامیکس یه نسخه تجاری از این ربات رو به اسم Spot داره وارد بازار میکنه. خبر جذذابتر اینکه این ربات از طریق یک API قابل کنترل هست و در حقیقت دنیای جدیدی به دنیای برنامهنویسان اضافه شده!
در حال حاضر پروتکل ارتباطی این ربات از طریق gRPC است و این یعنی وااااااو! از این به بعد به مرور شاهد کاربردهای عجیبی از رباتهایی خواهیم بود که برنامهنویسان میتونن اونها رو کنترل کنند.
ویدئوی زیر، ویدئوی تبلیغاتی هست برای معرفی امکانات ربات اسپات ساخته شده. ببینید و لذت ببرید و آینده رو تصور و تجسم کنید!
خوشحال میشم پیشبینیهاتون از آینده رو بفرستید همینجا...
https://youtu.be/wlkCQXHEgjA
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
YouTube
Spot Launch
Spot is an agile mobile robot that you can customize for a wide range of applications. The base platform provides rough-terrain mobility, 360-degree obstacle avoidance, and various levels of navigation, remote control, and autonomy. You can customize Spot…
Forwarded from tehran marketing school
چرا اغلب استارتاپ ها و بیزینس های نوپا شکست می خورند؟
تحقیقات بیزینس اسکول هاروارد نشان می دهد که 75 درصد از کسب و کارهای نوپا که کارشان را بدون تجربه قبلی آغاز کرده اند، نهایتا منجر به شکست شده اند .آنچه که در اینجا اهمیت دارد درصد شکست نیست، بلکه دیتاهای مهم و قابل استنادی است که علت این شکت ها را بررسی می کند.در مطالعه ای کهCB Insights ، بانک اطلاعات سرمایه گذاری انجام داده است، علل متعددی برای ذکر شده است، اما از میان همه ی دلایل، درگیری های داخل تیم و تیم نامناسب سهم 35 درصدی را به خود اختصاص داده اند که عدد قابل توجهی است.
زمانی که تیم ها از تخصص متفاوتی برخوردار هستند صرفا soft skill و hard skill ها برای اجرا کافی نیستند، بلکه لازم است که افراد ادبیات همدیگر را نیز بدانند تا بتواند ارتباط دقیقی باهم برقرار کنند. اینقدر این مشکل اساسی است که در تمام دنیا برای آن فکرهایی شده است. آنچه به ذهن ما رسیده این است که با همراهی کسانی که این مراحل را پشت سر گذاشته اند دوره آموزشی را طراحی کنیم که شما با تیم مقابلتان بهتر کار کنید.
آشنایی با جزئیات دوره زبان فنی برای تیم بیزینس
https://evnd.co/gzQii
تحقیقات بیزینس اسکول هاروارد نشان می دهد که 75 درصد از کسب و کارهای نوپا که کارشان را بدون تجربه قبلی آغاز کرده اند، نهایتا منجر به شکست شده اند .آنچه که در اینجا اهمیت دارد درصد شکست نیست، بلکه دیتاهای مهم و قابل استنادی است که علت این شکت ها را بررسی می کند.در مطالعه ای کهCB Insights ، بانک اطلاعات سرمایه گذاری انجام داده است، علل متعددی برای ذکر شده است، اما از میان همه ی دلایل، درگیری های داخل تیم و تیم نامناسب سهم 35 درصدی را به خود اختصاص داده اند که عدد قابل توجهی است.
زمانی که تیم ها از تخصص متفاوتی برخوردار هستند صرفا soft skill و hard skill ها برای اجرا کافی نیستند، بلکه لازم است که افراد ادبیات همدیگر را نیز بدانند تا بتواند ارتباط دقیقی باهم برقرار کنند. اینقدر این مشکل اساسی است که در تمام دنیا برای آن فکرهایی شده است. آنچه به ذهن ما رسیده این است که با همراهی کسانی که این مراحل را پشت سر گذاشته اند دوره آموزشی را طراحی کنیم که شما با تیم مقابلتان بهتر کار کنید.
آشنایی با جزئیات دوره زبان فنی برای تیم بیزینس
https://evnd.co/gzQii
چطور در دنیای نرم افزار بهتر دیده شوید
مهم نیست چقدر در زمینه تولید نرمافزار سابقه دارید، اگر دنبال پیشرفت شغلی و مالی هستید باید بتوانید خود را به جامعه نرمافزاری نشان دهید و در مورد مهارتهایتان صحبت کنید.
راههای مختلفی برای این کار وجود دارد، مثل شرکت کردن در همایشها و کارگاهها که معولا به شبکه سازی بین افراد ختم میشود.
علاوه بر اینها، سرویسهای اینترنتی مختلف این امکان را به شما میدهد که به شکلهای مختلف خود را به افراد دیگر معرفی کنید.
ایجاد وبلاگ با استفاده از سرویس های مختلف، انتشار پادکست، و یا تولید ویدئو و قرار دادن آن در سرویسهای مخصوص این کار، همه و همه بستری را فراهم میکنند تا شما بهتر دیده شوید.
فقط لازم است بدانید چطور از این ابزار درست استفاده کنید.
https://youtu.be/AN7QuLDVylc
#امیرحسین_عبدالخالق (https://bit.ly/2n025Rz)
کانال تلگرام:
@SoftwarePhilosophy
___
مهم نیست چقدر در زمینه تولید نرمافزار سابقه دارید، اگر دنبال پیشرفت شغلی و مالی هستید باید بتوانید خود را به جامعه نرمافزاری نشان دهید و در مورد مهارتهایتان صحبت کنید.
راههای مختلفی برای این کار وجود دارد، مثل شرکت کردن در همایشها و کارگاهها که معولا به شبکه سازی بین افراد ختم میشود.
علاوه بر اینها، سرویسهای اینترنتی مختلف این امکان را به شما میدهد که به شکلهای مختلف خود را به افراد دیگر معرفی کنید.
ایجاد وبلاگ با استفاده از سرویس های مختلف، انتشار پادکست، و یا تولید ویدئو و قرار دادن آن در سرویسهای مخصوص این کار، همه و همه بستری را فراهم میکنند تا شما بهتر دیده شوید.
فقط لازم است بدانید چطور از این ابزار درست استفاده کنید.
https://youtu.be/AN7QuLDVylc
#امیرحسین_عبدالخالق (https://bit.ly/2n025Rz)
کانال تلگرام:
@SoftwarePhilosophy
___
YouTube
چطور در دنیای نرم افزار بهتر دیده شوید
چطور در دنیای نرم افزار بهتر دیده شوید
مهم نیست چقدر توی زمینه تولید نرمافزار سابقه دارید، اگر دنبال پیشرفت شغلی و مالی هستید باید بتونید خودتون رو به جامعه نرمافزاری نشون بدید و راجع به مهارتهاتون صحبت کنید
راههای مختلفی برای این کار وجود داره، مثل شرکت…
مهم نیست چقدر توی زمینه تولید نرمافزار سابقه دارید، اگر دنبال پیشرفت شغلی و مالی هستید باید بتونید خودتون رو به جامعه نرمافزاری نشون بدید و راجع به مهارتهاتون صحبت کنید
راههای مختلفی برای این کار وجود داره، مثل شرکت…
Forwarded from فلسفه دیزاین
مرگِ انسانیت، مرگِ تایتانها
وقتی به محصولات دیجیتال اطرافمان نگاه میکنیم متوجه میشویم که بسیاری از آنها با بزرگتر شدنشان، به کاربرانشان کمتر توجه میکنند. در صورتی که به تاریخچهی چند سال قبلشان برگردید اولویت اولشان حل مشکل استفادهکنندگان از محصولشان بود.
اگر بازخوردهای کاربرها از برخی محصولات بزرگ ایرانی را بررسی کنید، به جمعبندی زیر خواهید رسید:
• اسنپ به جای اینکه حواسش به حل مسائل مسافر باشد، مشغول اضافه کردن فیچرهای جدید و هرچه بزرگتر کردن بخش تجاری خود است.
• دیجیکالا به جای آنکه به فکر افزایش کیفیت خدمات خود و ارسال آنها باشد، مشغول افزایش تعداد کالاها و تنوع آنها، بدون هیچ نظارت قیمتی و کیفیتی است.
مقاله امروز به بررسی این اپیدمی روی بسیاری از سرویسهای موفق دنیا میپردازد. آقای Jesse Weaver، نویسنده مقاله امروز، بر این باورست، این بلاییست که امروزه و در چهار مرحله، هر محصولی را از حالت انسان-محوری آن دور کرده و به بیزینس-محوری سوق میدهد. بیزینس و تجارتی که چیزی جز سود مالی را مهم نشمرده و در دراز مدت به دلیل وجود رقبا آنها از پای در میآورد.
در ادامه نیز به توضیح هر کدام ازین چهار مرحله پرداخته و به جزئیات مرگ بخش انسانی این محصولات میرسد.
و در پایان نیز بحث خود را به این شکل به پایان میبرد که شرکتهای بزرگ و موفقی چون IDEO هیچ وقت از مرحلهی اول این دروازههای مرگ عبور نکرده و همچنان به کشف مشکلات و ابداع راهحلها می پردازند.
https://bit.ly/gxgn528
به نظر شما چه اتفاقی میافتد که محصولات و شرکتها در ادامهی مسیر آنچنان که باید کیفیت روزهای اول را ندارند؟ نمونهای در نظرتان هست؟
برای پاسخ به این سؤال، دکمهی "مشاهده نظرات" را بفشارید.
نویسنده: حسین میرزاده
(زمان حدودی مطالعه، ۱۴ دقیقه)
#دیزاین_محصول #انسان_محور #تفکر_دیزاین
@Dexign فلسفه دیزاین
ـــــــ
وقتی به محصولات دیجیتال اطرافمان نگاه میکنیم متوجه میشویم که بسیاری از آنها با بزرگتر شدنشان، به کاربرانشان کمتر توجه میکنند. در صورتی که به تاریخچهی چند سال قبلشان برگردید اولویت اولشان حل مشکل استفادهکنندگان از محصولشان بود.
اگر بازخوردهای کاربرها از برخی محصولات بزرگ ایرانی را بررسی کنید، به جمعبندی زیر خواهید رسید:
• اسنپ به جای اینکه حواسش به حل مسائل مسافر باشد، مشغول اضافه کردن فیچرهای جدید و هرچه بزرگتر کردن بخش تجاری خود است.
• دیجیکالا به جای آنکه به فکر افزایش کیفیت خدمات خود و ارسال آنها باشد، مشغول افزایش تعداد کالاها و تنوع آنها، بدون هیچ نظارت قیمتی و کیفیتی است.
مقاله امروز به بررسی این اپیدمی روی بسیاری از سرویسهای موفق دنیا میپردازد. آقای Jesse Weaver، نویسنده مقاله امروز، بر این باورست، این بلاییست که امروزه و در چهار مرحله، هر محصولی را از حالت انسان-محوری آن دور کرده و به بیزینس-محوری سوق میدهد. بیزینس و تجارتی که چیزی جز سود مالی را مهم نشمرده و در دراز مدت به دلیل وجود رقبا آنها از پای در میآورد.
در ادامه نیز به توضیح هر کدام ازین چهار مرحله پرداخته و به جزئیات مرگ بخش انسانی این محصولات میرسد.
و در پایان نیز بحث خود را به این شکل به پایان میبرد که شرکتهای بزرگ و موفقی چون IDEO هیچ وقت از مرحلهی اول این دروازههای مرگ عبور نکرده و همچنان به کشف مشکلات و ابداع راهحلها می پردازند.
https://bit.ly/gxgn528
به نظر شما چه اتفاقی میافتد که محصولات و شرکتها در ادامهی مسیر آنچنان که باید کیفیت روزهای اول را ندارند؟ نمونهای در نظرتان هست؟
برای پاسخ به این سؤال، دکمهی "مشاهده نظرات" را بفشارید.
نویسنده: حسین میرزاده
(زمان حدودی مطالعه، ۱۴ دقیقه)
#دیزاین_محصول #انسان_محور #تفکر_دیزاین
@Dexign فلسفه دیزاین
ـــــــ
Medium
Human-Centered Design Dies at Launch
Bad things happen as we stop solving people problems and start solving business problems