Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
نسخه جدید asp.net core 1.1 به تازگی منتشر شده‌است. در این نسخه امکانات جدیدی به فریم‌ورک اضافه شده‌است. از جمله این امکانات می‌توان به Middleware as Filter, Rewrite Module, View Compilation و امکانات دیگر اشاره کرد. یکپارچگی بیشتر با Azure، سهولت بیشتر در 3rd Party Dependency Injection Containers و بهبودهای Performance از دیگر تغییرات مهم نسخه 1.1 هستند.
مقاله زیر این تغییرات را به همراه مثال‌هایی توضیح داده‌است.

http://www.dotnetcurry.com/aspnet/1329/aspnet-core-11-what-is-new

#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd

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

___
Forwarded from Iran .Net
کارایی تیم ها و سلامت فرایند های موجود در توسعه نرم افزار را باید توسط تعدادی معیار (metric) تحت سنجش قرار دهیم.
سه تا از معروف ترین معیار ها که می توانند، کارایی تیم و رضایت مشتری را مشخص کنند، Lead Time و Cycle Time و Escaping Defects می باشند.

معیار Lead Time: فاصله زمانِ درخواست مشتری با زمانی است که درخواست او در نسخه بعدی نرم افزار پیاده سازی شده است. به طور دقیق تر یعنی چه مدت پس از قرار گرفتن درخواست در Backlog پروژه، تیم توانسته این قابلیت را به نحو کامل و بدون مشکل، در نسخه بعدی پیاده سازی کرده و رضایت مشتری را کسب کند.

معیار Cycle Time: فاصله زمانِ قرار گرفتن یک تسک در اختیار تیم توسعه، تا زمان پایانِ پیاده سازی و تست آن می باشد.

معیار Escaping Defects: این معیار مشخص می کند که در هر نسخه چه تعداد باگ و نقطه ضعف انتشار پیدا کرده و به محیط عملیات راه پیدا کرده اند. این پارامتر نشان دهنده کیفیتِ کار تیم و فرایند های بازرسی خواهد بود. این پارامتر را به گونه ای دیگر هم می شود بررسی کرد، یعنی می توانیم بیان کنیم چه تعداد از تسک های فعلی مربوط به اصلاحِ نقاط ضعف و کم کاری های گذشته اند و چه تعداد از تسک ها مربوط به ویژگی های جدید سیستم می باشند. با این نگاه می توانیم، مشخص کنیم که تیم تا چه میزان دچار دوباره کاری و به هدر دادن منابع می باشد و یا تا چه میزان ارزش آفرینیِ مداوم ایجاد می کند.


معیار Lead Time، معیاری است که باید سعی در کاستن آن داشته باشیم و معیاری است که توسط مشتری لمس خواهد شد. در طرف دیگر، معیار Cycle Time، معیاری است که کاملا کاربردی درون تیمی خواهد داشت و می تواند برای ارزیابی داخلی مورد استفاده قرار بگیرد.

آیا در پروژه های شما Lead Time اندازه گیری می شود؟ آیا زمان مطلوبی برای آن در نظر گرفته شده است؟ چگونه آن را اندازه می گیرید؟

1. https://www.agilealliance.org/glossary/lead-time/

2. http://kanbantool.com/kanban-library/analytics-and-metrics/kanban-definition-of-lead-time-and-cycle-time#.WHFCRPl95p8

3. اندازه گیری پارامتر های فوق در TFS:
https://www.visualstudio.com/en-us/docs/report/guidance/cumulative-flow
Forwarded from Iran Agile
تست جعبه سفید در عمل

همیشه نوشتن تست در تئورى کار راحت و آسانى به نظر میرسد ولی اگر تجربه عملی در این خصوص داشته باشید حتما خواهید دانست که نداشتن استراتژی و تجربه این کار را سخت و دشوار خواهد کرد.
در این مقاله گام به گام در مورد نحوه نوشتن تست های جعبه سفید بحث شده است.


📰 📝

🌐 http://reqtest.com/testing-blog/white-box-testing/

@iranagile
Forwarded from Iran .Net
الگوی Circuit Breaker (قطع کننده جریان)

این الگو، یکی از الگوهای اصلی در سیستم های غیرمتمرکز (Distributed) و ابری می باشد. البته این نکته را مد نظر داشته باشید که حتی اگر محل استقرار پایگاه داده شما، از وب اپلیکیشن شما جدا است و یا در وب اپلیکیشن تان از وب سرویس های سایرین استفاده می کنید، این الگو برای تان قابل استفاده است.

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

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

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

در تجربه ای که اخیرا در سیستمِ توزیع شده طرح ترافیک تهران داشتیم، کند شدن یکی از سرویس ها (مثلا A) موجب شده بود تا درخواست ها را در زمانی بیشتر از 5 ثانیه پاسخ بدهد. از طرفی چون حجم درخواست های کاربران بالا بود، تعداد بسیاری درخواست در سرویس دیگری (مثلا B) که به سرویس A وابسته بود، تلنبار می شد و معطل می شدند. این انباشتگی موجب می شد تا سرویس B دچار مصرف بیش از حد حافظه و Thread ها و پایگاه داده ... شده و در نهایت پایین برود. در واقع سیستم B در تجربه ای که ما داشتیم، پس از دو دقیقه Down می شد و مجبور بودیم سیستم را مجددا ریست کنیم و این موضوع مدام تکرار می شد. در واقع نقص در یک سرویس موجب می شود، همه سرویس های دیگر به ترتیب دچار مشکل شوند.

در صورتی که از الگوی Circuit Breaker استفاده می شد،سرویس B به طور هوشمند می بایست ارسال درخواست ها به سرویس A را متوقف می کرد و جریان بین شان قطع می شد. در این صورت درخواست ها در B تلنبار نمی شدند.

همچنین Circuit Breaker در هنگامی که در وضعیت بسته قرار دارد، به طور خودکار گه گاه درخواست هایی را از خود عبور خواهد داد تا اگر مشکل برطرف شده، مجددا باز شود و جریان برقرار گردد.

1. مقاله فاولر در پاراگراف ابتدایی و انتهایی به صورت خلاصه مطالب خوبی در این زمینه دارد:
https://martinfowler.com/bliki/CircuitBreaker.html

2. مقاله مایکروسافت:
https://msdn.microsoft.com/en-us/library/dn589784.aspx

3. پیاده سازی این الگو به راحتی توسط کتابخانه معتبر Polly:
http://blog.jaywayco.co.uk/circuit-breaking-with-polly/

4. تجربه Netflix در نگهداری سیستم های توزیع شده اش و استفاده از این الگو:
http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html

http://techblog.netflix.com/2011/12/making-netflix-api-more-resilient.html

@irandotnet
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. آیا پردازنده‌ای که با آن کار می‌کنیم می‌تواند سریعتر پردازش کند؟
#parallel
https://news.1rj.ru/str/SoftwarePhilosophy/637

۲. یک تصمیم «به اندازه کافی خوب» به سوی «بهترین تصمیم»
#management #decisionmaking
https://news.1rj.ru/str/SoftwarePhilosophy/638

۳. تغییرات در نسخه جدید asp.net core 1.1
#dotnet #dotnetcore
https://news.1rj.ru/str/SoftwarePhilosophy/639

۴. سه معیار Lead Time و Cycle Time و Escaping Defects برای اندازه‌گیری کارایی تیم و رضایت مشتری (ایران دان نت)
#teamefficiency
https://news.1rj.ru/str/SoftwarePhilosophy/640

۵. تست جعبه سفید در عمل (Iran Agile)

https://news.1rj.ru/str/SoftwarePhilosophy/641

۶. الگوی Circuit Breaker (قطع کننده جریان) (ایران دات نت)
#robustness #performance
https://news.1rj.ru/str/SoftwarePhilosophy/642

ـــــــــــ
@SoftwarePhilosophy
Asking the right question is at the heart of effective communications and information exchange.
یک functionوقتی جواب درست را برمی‌گرداند که ورودی‌ صحیح به آن داده شود. در یک ارتباط هم این قانون صادق است. شما وقتی از مخاطب جواب درست را می‌گیرد که سوال درستی بپرسید.
بسته به موقعیت باید از «نوع» درستی از سوال استفاده کرد.

انواع سوال‌های متدوال عبارتند از:

• Close Questions
• Open Question
• Funnel Question
• Probing Question
• Leading Question

Close Questions یا سوال‌های بسته به سوال‌هایی گفته می‌شود که جواب‌شان در حد «یک کلمه» یا «خیلی کوتاه» است.
از کاربرد‌های این نوع سوال میتوان به این موارد اشاره کرد.
۱- وقتی که در آخر یک جلسه نیاز به یک جمع‌بندی و نتیجه گیری دارید.
۲- وقتی که می‌خواهید اطمینان حاصل کنید که منظور طرف مقابل را درست متوجه شده‌اید.
برای این کار باید هر چیزی را که متوجه شدید به گونه‌ای بپرسید که جواب آن «بله» یا «خیر» باشد (یا در حد یک کلمه یا خیلی کوتاه). مثلا «اگر منظور شما رو درست متوجه شده باشم، من باید یک متد بنویسم که یک فایل ورد را به عنوان ورودی بگیرد و آن را تبدیل به پی‌دی‌اف کند؟»

در لینک زیر انواع سوال‌ها، همراه با موقعیت‌های که می‌شود از آن استفاده کرد، توضیح داده شده است.

https://www.mindtools.com/pages/article/newTMC_88.htm

#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati

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

___
فراوانی پکیج‌های جاوا اسکریپت به گونه‌ای است که ما هر هفته شاهد پکیج‌های جدید متعددی هستیم و زمانی که NPM برای رفع وابستگی‌های پروژه به این پکیج‌ها معرفی شد، خیلی سریع به عنوان پیشفرض برای مدیریت پکیج‌های Node.js درآمد و بخشی از زندگی توسعه‌دهندگان شد.
ولی در کنار قدرتی که به توسعه دهندگان می‌دهد برخی مشکلات را هم به همراه دارد که باعث شد غول‌های تکنولوژی مانند فیسبوک و گوگل شروع به تولید package management بهتری با شعار "Fast, Reliable and Secure" با نام Yarn کردند که در آن مشکلاتی که توسعه دهندگان با npm داشتند رفع گردید. یکی از نکات جالب این است که Yarn مخزن خود را ندارد و در عوض از مخزن‌های دیگر از جمله npm و bower استفاده می‌کند. شاید مهمترین ویژگی Yarn که برای همه‌ی توسعه دهندگان اهمیت دارد، دو تا هفت برابر سریعتر بودن نصب پکیج‌ها نسبت به npm می‌باشد. Yarn پس از نصب هر پکیج آن را cache می‌کند و در هنگام نصب پکیج‌ها ابتدا از cache خود برای پیدا کردن پکیج مورد نظر استفاده می‌کند که علاوه بر افزایش سرعت نصب، امکان نصب پکیج‌ها بدون نیاز به اینترنت را نیز فراهم می‌کند و در صورت عدم وجود در cache آن را دانلود می‌کند. حتی برای نصب سریعتر پکیج‌ها , Yarn به صورت موازی پکیج‌ها را دانلود و نصب می‌کند.
در لینک زیر خصوصیات دیگر Yarn و همینطور شروع به استفاده از این ابزار قدرتمند بیان شده است.

https://scotch.io/tutorials/yarn-package-manager-an-improvement-over-npm

#محمدرضا_جلیلوند

لینکدین:

http://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم CQRS Pattern به عنوانی یکی از الگوهای رایجی است که نام آن در معماری‌های جدید نرم‌افزار زیاد شنیده می‌شود. به طور خلاصه، این الگو جدا کردن معماری «خواندن» اطلاعات از معماری «نوشتن» اطلاعات است. هر عمل خواندن در نرم‌افزار توسط یک Query انجام می‌شود که هیچ تغییری در سیستم نمی‌دهد و فقط نتیجه خواندن را بر می‌گرداند. هر عمل نوشتن در سیستم از طریق یک Command انجام می‌شود که فقط تغییر را در سیستم اعمای می‌کند و هیچ اطلاعاتی بر نمی‌گرداند (به جز وضعیت موفق بودن عمل و یا پیغام خطا). این الگو بسیار کاربردی و قدرتمند است، ولی استفاده از آن در هر شرایطی مناسب نمی‌باشد.

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

https://msdn.microsoft.com/en-us/library/jj591573.aspx

#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd

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

___
اثری که Body language بر خود فرد می‌گذارد، اگر بیشتر از اثری که بر مخاطب می‌گذارد نباشد، کمتر هم نیست.

استاد دانشگاه هاروارد Amy Cuddy تحقیقی انجام داده است و در آن به این نتیجه رسیده است که فرم و حالت بدن می‌تواند بر «ذهن» و «فیزیولوژی» اثر گذارد،‌ بدین صورت که اگر شما ۲ دقیقه ژست یک فرد پیروز را به خود بگیرید میزان تستوسترون افزایش و کورتیزول کاهش میابد. میزان این هورمون‌ها اثر مستقیمی بر مغر گذاشته و میتواند باعث افزایش قدرت ریسک‌پذیری و موفقیت شود.

https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are

#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati

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

___
مدل Actor به عنوان یک مدل messaging برای برنامه‌نویسی توزیع شده و همزمان در مقابل استفاده از thread ها به حساب می‌آید. زبان‌های برنامه‌نویسی Erlang و Elixir بر پایه این مدل ارئه شده است. همچنین فریم‌ورک‌هایی برای استفاده از این مدل قدرتمند در زبان‌های برنامه‌نویسی دیگر نیز ارائه شده‌اند که از آن جمله می‌توان به Akka اشاره کرد.
آکا پروژه‌ای open source می‌باشد که با استفاده از مدل Actor فریم‌ورکی را در اختیار برنامه‌نویسان دیگر زبانها از جمله جاوا و اسکالا گذاشته تا به کمک آن سیستم‌های concurrent و scalable تولید کنند و همچنین برای برنامه‌نویسان .net نیز فریم ورک Akka.net ارائه شده که بوسیله هر دو زبان C# و F# قابل استفاده است.
در مقاله زیر علاوه بر مقایسه دقیقتر بین دو مفهوم Multi Thread و Actor Model به صورت کامل به نحوه پیاده‌سازی و استفاده از Akka.net پرداخته شده است.

https://www.codeproject.com/articles/1007161/a-look-at-akka-net

#محمدرضا_جلیلوند

لینکدین:

http://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

___
Forwarded from Iran Agile
چگونه به مشتری نه بگوییم?

مسلما اگر بخواهیم محصول خوبی بسازیم، باید در "نه" گفتن مهارت خوبی بدست آوریم. اما چگونه باید نه گفت?

📰 📝

🌐 https://blog.intercom.com/say-no-to-customers/

@iranagile
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. به جواب درست می‌رسید، اگر سوال درست بپرسید
#management #communication
https://news.1rj.ru/str/SoftwarePhilosophy/644

۲. آشنایی با Yarn و نحوه شروع به کار با آن
#javanoscript
https://news.1rj.ru/str/SoftwarePhilosophy/645

۳. توضیحاتی در مورد CQRS Pattern و کاربرد آن در معماری‌های مختلف
#designpattern #CQRS
https://news.1rj.ru/str/SoftwarePhilosophy/647

۴. تاثیرات «زبان بدن» بر خود فرد: Fake it until you Make it
#management
https://news.1rj.ru/str/SoftwarePhilosophy/648
https://news.1rj.ru/str/SoftwarePhilosophy/649

۵. فریم‌ورک Akka.net برای برنامه‌نویسی توزیع‌شده
#dotnet #parallel #framework
https://news.1rj.ru/str/SoftwarePhilosophy/650

۶. چگونه به مشتری نه بگوییم (Iran Agile)
#management #communication
https://news.1rj.ru/str/SoftwarePhilosophy/651

ـــــــــــ
@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
دنیای AR یا Augmented Reality باعث ایجاد مفاهیم جدیدی در UI/UX شده‌است. توان خلق موجودیت‌ها در فضای اطراف کاربر امکانی است که قبلا وجود نداشته و به همین دلیل ظهور AR باعث ایجاد تجربیات جدیدی در دنیای UX شده‌است.
برای مثال در لینک زیر یکی از طراحان ارشد هولوگرافیک توضیح می‌دهد که در نسخه‌های اولیه نرم‌افزار طراحی برای خلق اشیا سه بعدی، از یک «میز چهارگوش» مجازی استفاده شده بود که کاربر روی آن شروع به طراحی می‌کرد (مثلا طراحی یک اسباب‌بازی). پس از تست‌های UX متوجه شدند چهارگوش بودن میز باعث می‌شود کاربران بیشتر یک سمت میز بایستند و کمتر دور شیی که طراحی می‌کنند بچرخند. به همین دلیل در نسخه‌های بعدی از یک میز مجازی «گرد» استفاده شد. نتیجه عالی بود، کاربران دیگر یک جای ثابت نمی‌ایستند و تقریبا هر دفعه از یک زاویه جدید محصول خود را می‌بینند.

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

https://developer.microsoft.com/en-us/windows/holographic/case_study_-_3_holostudio_ui_and_interaction_design_learnings

#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd

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

___
Forwarded from Iran .Net
اصل پیشاهنگی یا The Boy Scout Principle

این اصل، از یک اصلِ فلسفی بریتانیایی برداشت شده است: "سعی کنیم جهان را - به نسبت آنچه که پیش تر یافته ایم - جای بهتری کنیم".

در کتاب خواندنی "97 نکته ای که هر برنامه نویس باید بداند"، Uncle Bob با استفاده از این اصل، اصلی دیگر را در حوزه نرم افزار بیان می کند: "هر بار کدی را دیدیم، به نسبت قبل آن را بهتر کنیم." در این میان مهم نیست که کدام یک از اعضای تیم قبلا این کد را زده و یا مقدار بهبود چه حد کوچک باشد. این بهبود می تواند به کوچکی تغییر نام متغیر ها، کم کردن تکرار (duplication) ، کوتاه کردن یک متد طولانی و خواناتر کردن کد و ... باشد.

در جهان، همه هستی (اعم از نرم افزار) به طور طبیعی به ویرانی و آشوب و فرسودگی میل می کند و برای جلوگیری از این امر ما باید انرژی مصرف کنیم و تعهد داشته باشیم. در نرم افزار هم وقتی همه اعضای تیم به این اصل متعهد باشند، ساختار کد به جای هرز رفتن در گذر زمان، روز به روز و به تدریج بهتر خواهد شد.

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

1. یادداشت عمو باب در مورد اصل پیشاهنگی
http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule

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

https://martinfowler.com/bliki/OpportunisticRefactoring.html
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارند «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید و این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
سازگاری با مرورگرهای مختلف از ابتدا برای طراحان مشکلاتی را در بر داشته و مشکل از جایی عمیق‌تر می‌شود که این مرورگرها نسخه‌های متفاوتی دارند و شما نمی‌توانید همه آنها را کنار هم داشته باشید، بخصوص که این روزها استفاده از مروگرهای تلفن همراه و تبلت‌ها نیز بالا رفته است. پس وبسایت شما باید با همه مرورگرها سازگار و یا اصطلاحا cross-browser باشد .
از بین سرویس‌دهندگانی که این تست‌ها را انجام می‌دهند شاید یکی از بهترین سرویس‌دهندگان، BrowserStack باشد. با استفاده از این سرویس می‌توانید سایت خود را در بیشتر از 1000 نسخه‌ی از مرورگرهای مختلف تست کنید. این تنوع شامل دستگاه‌ها و حتی سیستم عامل‌های مختلف می‌شود. همینطور این امکان را به شما می‌دهد تا بتوانید نسخه‌ی اجرای شده‌ی سایت خود را در نسخه‌های مختلف مرورگرها، حتی دستگاه‌های مختلف توسط اسکرین شات ببنید. مهمترین قابلیت آن تست سایت‌های local و خصوصی به اکثر زبان‌های برنامه نویسی می‌باشد.
می‌توانید به کمک لینک زیر از سایت خود روی مرورگرهای مختلف اسکرین شات بگیرید.


https://www.browserstack.com/screenshots

#محمدرضا_جلیلوند
لینکدین:
http://ir.linkedin.com/in/mohammad-reza-jalilvand-0a5572b1

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

___
Forwarded from Iran Agile
چگونه محصولی کاملا متمایز از رقبا ارایه دهید

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

📰 📝

🌐 http://blog.scrum.ir/2017/01/strategy-canvas/

@iranagile