Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
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
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
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

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

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

___
Forwarded from فلسفه دیزاین
تکنیکی برای مرتب‌سازی کمد آقا ووپی!

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

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

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

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

http://bit.ly/dxgn526

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

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

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

ــــ
برنامه نویس (مهندس نرم افزار) خوب چه ویژگی‌ها و مهارت‌هایی دارد؟

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

در ویدئو زیر ضمن توضیح دقیق‌تر نقش‌های افراد در یک تیم تولید نرم‌افزار، به بیان عناوین برخی از مهمترین مهارت‌های فنی و soft skill اشاره کرده‌ام.

http://youtu.be/uhezZBrfRoU

#امیرحسین_عبدالخالق (http://bit.ly/2n025Rz)

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

___
👍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
#پست_مجدد این پست تا به حال بیش از ۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
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

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

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

___
ربات ۴ پای «اسپات»، حالا در اختیار برنامه‌نویسان!

حتما تا به حال ویدئوهای زیادی از ربات چهارپای شرکت Boston Dynamics که شبیه به یک سگ است دیده‌اید. رباتی که در شرایط سخت محیطی به خوبی قادر است حرکت کند و در شرایطی که ربات‌های «مبتنی بر چرخ» نمی‌توانند کار کنند این ربات به خوبی کار می‌کند.
حالا خبر جذاب این که شرکت بوستون داینامیکس یه نسخه تجاری از این ربات رو به اسم Spot داره وارد بازار می‌کنه. خبر جذذاب‌تر اینکه این ربات از طریق یک API قابل کنترل هست و در حقیقت دنیای جدیدی به دنیای برنامه‌نویسان اضافه شده!

در حال حاضر پروتکل ارتباطی این ربات از طریق gRPC است و این یعنی وااااااو! از این به بعد به مرور شاهد کاربردهای عجیبی از ربات‌هایی خواهیم بود که برنامه‌نویسان می‌تونن اونها رو کنترل کنند.

ویدئوی زیر، ویدئوی تبلیغاتی هست برای معرفی امکانات ربات اسپات ساخته شده. ببینید و لذت ببرید و آینده رو تصور و تجسم کنید!

خوشحال می‌شم پیش‌بینی‌هاتون از آینده رو بفرستید همینجا...

https://youtu.be/wlkCQXHEgjA


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

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

___
Forwarded from tehran marketing school
چرا اغلب استارتاپ ها و بیزینس های نوپا شکست می خورند؟

تحقیقات بیزینس اسکول هاروارد نشان می دهد که 75 درصد از کسب و کارهای نوپا که کارشان را بدون تجربه قبلی آغاز کرده اند، نهایتا منجر به شکست شده اند .آنچه که در اینجا اهمیت دارد درصد شکست نیست، بلکه دیتاهای مهم و قابل استنادی است که علت این شکت ها را بررسی می کند.در مطالعه ای کهCB Insights ، بانک اطلاعات سرمایه گذاری انجام داده است، علل متعددی برای ذکر شده است، اما از میان همه ی دلایل، درگیری های داخل تیم و تیم نامناسب سهم 35 درصدی را به خود اختصاص داده اند که عدد قابل توجهی است.

زمانی که تیم ها از تخصص متفاوتی برخوردار هستند صرفا soft skill و hard skill ها برای اجرا کافی نیستند، بلکه لازم است که افراد ادبیات همدیگر را نیز بدانند تا بتواند ارتباط دقیقی باهم برقرار کنند. اینقدر این مشکل اساسی است که در تمام دنیا برای آن فکرهایی شده است. آنچه به ذهن ما رسیده این است که با همراهی کسانی که این مراحل را پشت سر گذاشته اند دوره آموزشی را طراحی کنیم که شما با تیم مقابلتان بهتر کار کنید.

آشنایی با جزئیات دوره زبان فنی برای تیم بیزینس

https://evnd.co/gzQii
چطور در دنیای نرم افزار بهتر دیده شوید

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

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

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

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

فقط لازم است بدانید چطور از این ابزار درست استفاده کنید.

https://youtu.be/AN7QuLDVylc

#امیرحسین_عبدالخالق (http://bit.ly/2n025Rz)

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

___
Forwarded from فلسفه دیزاین
مرگِ انسانیت، مرگِ تایتان‌ها

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

اگر بازخوردهای کاربرها از برخی محصولات بزرگ ایرانی را بررسی کنید، به جمع‌بندی زیر خواهید رسید:

• اسنپ به جای اینکه حواسش به حل مسائل مسافر باشد، مشغول اضافه کردن فیچر‌های جدید و هرچه بزرگتر کردن بخش تجاری خود است.

• دیجیکالا به جای آن‌که به فکر افزایش کیفیت خدمات خود و ارسال آن‌ها باشد، مشغول افزایش تعداد کالاها و تنوع آن‌ها، بدون هیچ نظارت قیمتی و کیفیتی است.

مقاله امروز به بررسی این اپیدمی روی بسیاری از سرویس‌های موفق دنیا می‌پردازد. آقای Jesse Weaver، نویسنده مقاله امروز، بر این باورست، این بلایی‌ست که امروزه و در چهار مرحله، هر محصولی را از حالت انسان-محوری آن دور کرده و به بیزینس-محوری سوق می‌دهد. بیزینس و تجارتی که چیزی جز سود مالی را مهم نشمرده و در دراز مدت به دلیل وجود رقبا آن‌ها از پای در می‌آورد.

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

http://bit.ly/gxgn528

به نظر شما چه اتفاقی می‌افتد که محصولات و شرکت‌ها در ادامه‌ی مسیر آنچنان که باید کیفیت روزهای اول را ندارند؟ نمونه‌ای در نظرتان هست؟
برای پاسخ به این سؤال، دکمه‌ی "مشاهده نظرات" را بفشارید.

نویسنده: حسین میرزاده

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

#دیزاین_محصول #انسان_محور #تفکر_دیزاین

@Dexign فلسفه دیزاین

ـــــــ
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ گوگل قابلیت Lazy-Load را به صورت native در مرورگر Chrome ورژن 76 اضافه کرد

🔸 توسط این قابلیت میتوان load عکس ها را تا زمانی که کاربر به اون قسمت از صفحه اسکرول میکنه به تعویق انداخت
اینطوری همه تصاویر صفحه همون ابتدا load نمشن و زمانی که کاربر به پایین صفحه اسکرول میکنه، عکس هایی که لازمه دیده بشن به صورت خودکار load میشه.
این قابلیت موجب کاهش مصرف پهنای باند، کاهش مصرف memory و افزایش سرعت سایت می شود.

🔹 قبلا برای این کار باید از کتابخانه های third-party استفاده می شد ولی الان به راحتی با اضافه کردن خاصیت loading="lazy" به تگ های img و iframe میتونین این قابلیت رو بهشون اضافه کنین

<img src="image.png" loading="lazy" alt="…" width="200" height="200">
<iframe src="https://example.com" loading="lazy"></iframe>
اطلاعات بیشتر
https://web.dev/native-lazy-loading

🔰 نکته :

1️⃣ برای اینکه ارتفاع صفحه و در نتیجه آن ارتفاع scroll قبل از load شدن تصاویر به هم نریزه باید حتما width و height تگ های img رو مشخص کنین.

<img src="..." loading="lazy" width="200" height="200">
<img src="..." loading="lazy" style="height:200px; width:200px;">

2️⃣ در حال حاضر این قابلیت فقط در مروگر Chrome ورژن 76 به بالا ساپورت میشه (و نه در بقیه مرورگر ها)

برای بقیه مرورگر ها میتونین از کتابخانه های زیر که محبوب ترین کتابخانه های مخصوص این کار هستند استفاده کنین
https://github.com/aFarkas/lazysizes
https://github.com/tuupola/lazyload
https://github.com/ApoorvSaxena/lozad.js
https://github.com/verlok/lazyload
___________________
@DotNetZoom
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
“طراحی پایگاه داده تکاملی” عنوان مقاله ایست که مارتین فاولر و پرمید سادلچ با بررسی این رویکرد که "معماری سیستم باید از طریق تکرارهای مختلف نرم افزار تکامل یابد" نوشته شده است .
نحوه تعامل بین DBA ها و برنامه نویسان، استفاده از ورژن کنترل‌ها، Database refactoring و .... همگی در این مقاله مورد بررسی قرار گرفته‌اند :

https://www.martinfowler.com/articles/evodb.html

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

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

___
#پست_مجدد این پست تا به حال بیش از ۴۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
امنیت یکی از دغدغه‌های مهم نرم‌افزارهای large scale است. این دغدغه نه تنها به خود نرم‌افزار بر می‌گردد، بلکه بیشتر به تیم‌هایی برمی‌گردد که در حال توسعه این سیستم‌ها هستند. اینکه تیم برنامه‌نویسی بتواند یک ویژگی امنیتی مانند لاگین را بنویسد بسیار تفاوت دارد با اینکه بتواند یک کد را امن بنویسد. «توانایی کد نویسی امن» یک مهارت است که مخصوصا برنامه‌نویسان سیستم‌های large scale مانند سیستم‌های بانکی یا ERP باید از آن برخوردار باشند.
یکی از مهمترین تعارضات تیم‌های برنامه‌نویس با دپارتمان‌های امنیت، این طرز تفکر است که امنیت «یک تست نهایی» است که باید در انتها انجام شود. این رویکرد اشتباه غالبا باعث می‌شود ریسک‌های امنیتی زیادی متوجه سازمان شود. در تیم‌های حرفه‌ای امنیت یک کار روزانه است که همه هر روز در حال انجام آن هستند.
اخیرا دپارتمان امنیت «بهسازان» در بانک ملت پروژه جالبی را به نام «مسابقه CTF» یا Capture The Flag را اجرا کرده‌است. طی این رویداد با برگزاری یک سری مسابقات جذاب برنامه‌نویسی امنیتی، به طور ناخودآگاه دانش امنیتی تمام افراد سازمان، مخصوصا برنامه نویسان بالا رفته‌است. نکته جالبه پلتفرم بهسازان این بود که آن را طوری طراحی کرده‌اند که می‌توانند در اختیار سایر سازمان‌ها نیز قرار دهند تا متناسب با بیزنس خود آن را پیکربندی کنند و موجب آموزش این مهارت‌ها به سازمان خود شوند.

http://mehrandvd.me/2017/05/23/capture-flag-secure-software/

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

http://ow.ly/p03w30cbHdO

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

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


___