Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. معرفی شبیه‌ساز HoloLens Emulator
https://telegram.me/SoftwarePhilosophy/516

۲. انتخاب استراتژی درست برای تحول دیجیتالی سازمان
https://telegram.me/SoftwarePhilosophy/518

۳. مفهوم Touch Point و نقش آن در تعریف محصولات نرم‌افزاری
https://telegram.me/SoftwarePhilosophy/519

۴. پارامترهای مهم در تخمین هزینه نرم‌افزارهای موبایل
https://telegram.me/SoftwarePhilosophy/522

۵. فریم ورک Aurelia
https://telegram.me/SoftwarePhilosophy/524

۶. نحوه مدیریت تست‌ها با Microsoft test manager
https://telegram.me/SoftwarePhilosophy/525

۷. برنامه نویسی با Microsoft Bot Framework
https://telegram.me/SoftwarePhilosophy/527

ـــــــــــ
@SoftwarePhilosophy
اگر با Owin آشنایی داشته باشید، یکی از مهمترین تعاریف آن ساختار Middleware می باشد که این امکان را به ما می‌دهد تا requestو response که بین نرم افزار و سرور تبادل می‌شود را به صورت Pipeline و سریالی از این لایه های میانی عبور دهیم تا پردازش‌های مورد نظر خود مانند authentication، authorization و... را قبل از رسیدن request به سرور انجام دهیم.
در لینک زیر اضافه کردن middleware به Owin Pipeline آموزش داده شده است و در صورتی که با Owin آشنایی لازم را ندارید ، لینک زیر در مورد استاندارد Owin و پروژه Katana که بر اساس این استاندارد پیاده سازی شده است به صورت کامل توضیح داده است.

http://www.codeproject.com/Articles/864725/ASP-NET-Understanding-OWIN-Katana-and-the-Middlewa

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

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

___
Forwarded from فلسفه دیزاین
طراحی رابط کاربری برای «من» یا برای «شما»؟

به رسم همیشه که تلاش من در «هَم دیزاین» به طرح کردن مقاله‌ها و موضوعات چالشی و هیجان‌انگیز بوده و هست، معرفی مقاله امروز رو با سوالی شروع میکنم که احتمالا بارها و بارها با اون مواجه شدیم.
«پروفایل من» یا «پروفایل شما»؟ «سبد خرید من» یا «سبد خرید شما»؟ «سفارش‌های من» یا «سفارش‌های شما»؟ و ...

اصول و Guidelineهای مختلفی که از طرف شرکت‌های مختلف نرم‌افزاری مطرح میشه بعضا باهم متفاوت هستند، بعلاوه اینکه در دیزاین تقریبا هیچ اصلی نیست که در تمامی مواقع قابل استفاده و اتکا باشه.
برای مثال در بخشی از مستندات Material Design آورده شده که در طراحی رابط کاربری محصولات، بهتره از زوایه دید سوم شخص (مثال: «سفارش‌های شما») با کاربر صحبت کنیم.
از طرف دیگه بسیاری از محصولات دیگر که میدونیم تیم‌های طراحی بسیار قوی‌ای دارند، همین حالا در اپلیکیشن‌ها و وب‌سایت‌هاشون با لفظ اول شخص (مثال: «سفارش‌های من») با کاربرهاشون ارتباط برقرار می‌کنند.

احتمالا به خاطر دارید که در نسخه‌های قبلی ویندوز بخش شخصی اطلاعات شما، My Computer نام داشت. مایکروسافت در نسخه‌های بعدی این اسم رو به Computer و سپس به This PC تغییر داد. این تغییر نشان‌دهنده این است که در هر مرحله، دیزاینرها سعی در کاهش فاصله بین «برداشت کاربر» از نام یک بخش و «کارکرد واقعی و اصلی» اون بخش داشتند. چیزی که در انتخاب هرکدام از این رویکردها، اصلی‌ترین نقش رو ‌ایفا می‌کنه.

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

https://medium.com/@jsaito/is-this-my-interface-or-yours-b09a7a795256

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

#معرفی_مقاله #چالش #طراحی_بصری
@HamDesign هَم دیزاین
#پست_مجدد این پست تا به حال بیش از ۱۶۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نوشتن «بات‌» هوشمند در دنیای رقابتی بات‌ها می‌تواند خیلی جذاب باشد. مدتی است مایکروسافت چند پروژه‌ هوش مصنوعی را تحت عنوان Cognitive Science شروع کرده که به تشخیص عکس و تشخیص گفتار کمک می‌کند. همچنین امکان یکپارچه کردن آن با زیر ساخت Bot Framework می‌تواند منجر به تولید بات‌های بسیار کارایی شود.
در لینک زیر نحوه استفاده از هوش مصنوعی پروژه‌های Cognitive در بات‌ها آموزش داده شده است.

http://www.dotnetcurry.com/csharp/1281/simple-bot-using-microsoft-bot-framework-cognitive-services

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم static class در زبان‌های برنامه‌ نویسی شی‌گرا می‌تواند بسیار گمراه کننده باشد. اصولا بهتر است معماری نرم‌افزار طوری انجام شود که کمترین نیاز به این نوع کلاس باشد. یکی از نکات مهم در مورد این مفهوم این است که برنامه‌نویسان باید حواسشان باشد با این مفهوم به عنوان «سطلی برای نگهداری کدهای متفرقه» استفاده نشود. معمولا کدی که به اندازه کافی به محل درست نوشتن آن فکر نشده، اولین مکانی که برای آن مناسب به نظر می‌رسد یک static class است.
لینک زیر مربوط به بخشی از کتاب Framework Design Guidelines (FDG) است که به طور کامل توضیح داده‌است که در چه مواقعی مجاز به استفاده از static class ها هستیم و چه مواقعی نه. این کتاب استانداردی است که تمام برنامه‌نویسان در مایکروسافت باید آن را مطالعه کرده باشند و نکات آن را رعایت کنند.

https://msdn.microsoft.com/en-us/library/ms229038(v=vs.110).aspx

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

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


___
مفهوم CQRS Pattern به عنوانی یکی از الگوهای رایجی است که نام آن در معماری‌های جدید نرم‌افزار زیاد شنیده می‌شود. به طور خلاصه، این الگو جدا کردن معماری «خواندن» اطلاعات از معماری «نوشتن» اطلاعات است. هر عمل خواندن در نرم‌افزار توسط یک Query انجام می‌شود که هیچ تغییری در سیستم نمی‌دهد و فقط نتیجه خواندن را بر می‌گرداند. هر عمل نوشتن در سیستم از طریق یک Command انجام می‌شود که فقط تغییر را در سیستم اعمای می‌کند و هیچ اطلاعاتی بر نمی‌گرداند (به جز وضعیت موفق بودن عمل و یا پیغام خطا). این الگو بسیار کاربردی و قدرتمند است، ولی استفاده از آن در هر شرایطی مناسب نمی‌باشد.

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

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

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

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

___
دنیای 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

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

۱. اضافه کردن middleware به Owin Pipeline
https://telegram.me/SoftwarePhilosophy/529

۲. طراحی رابط کاربری برای من یا شما؟ (هم دیزاین)
https://telegram.me/SoftwarePhilosophy/530

۳. نحوه اضافه کردن هوش مصنوعی پروژه‌های Cognitive در بات‌ها
https://telegram.me/SoftwarePhilosophy/532

۴. زمان و شیوه استفاده از Static Class ها برای برنامه نویسان مایکروسافت
https://telegram.me/SoftwarePhilosophy/534

۵. آشنایی با CQRS Pattern و کاربرد آن در معماری‌های مختلف
https://telegram.me/SoftwarePhilosophy/535

۶. تجربیات و درس‌های یک طراح ارشد پروژه‌های هولوگرافیک
https://telegram.me/SoftwarePhilosophy/536

ـــــــــــ
@SoftwarePhilosophy
نسخه بعدی زبان جاوا یا Java 9 در راه است. مهمترین امکانات اضافه شده در نسخه قبلی Java 8 مفهوم Lambda، Stream و تغییرات API بود. در نسخه جدید Java 9 مهمترین تغییر، پروژه‌ Jigsaw است که هدف آن شکستن JRE به قطعات کوچک و ماژولار کردن کامپوننت‌های Java core است تا بتوان از آن در دستگاه‌های محاسباتی کوچک به راحتی استفاده کرد. ولی به غیر از این تغییر اساسی، تغییرات جذاب دیگری نیز در راه است. مهمترین این تغییرات عبارتند از:
1. Java + REPL (jshell)
2. Microbenchmarks
3. G1: a new garbage collector (maybe)
4. Full support for HTTP 2.0
5. Process API
6. Debugging in Production
در مقاله زیر این امکانات توضیح داده شده‌اند. همچنین در مورد تصمیم‌گیری برای اضافه کردن G1 به Java 9 و وضعیت آن صحبت شده‌است.

http://blog.takipi.com/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مطمئنا برای خیلی از ما پیش آمده است که یک صحفه را طراحی کرده‌ایم و در browser مان همه چیز مرتب و به قاعده است، اما بعد از ریلیز روی سایت از دوستان و اطرافیانتان می شنویم که صفحه به هم ریخته و نامرتب بنظر می‌رسد.
نگذارید این اتفاق برای شما هم بیافتد. بعد از انجام کار زمان لازم را برای تست صفحه وب خود روی browserهای مختلف بگذارید.
اگر همه browserها را روی رایانه خود نصب ندارید، ابزارهای آنلاینی وجود دارد که می توانید با استفاده از آنها صفحه وب خود را در browserهای مختلف و ورژنهای مختلف آنها تست کنید. از جمله این سایتها:
• The Browser Sandbox
BrowserShots.org
CrossBrowserTesting.com
مقاله زیر به شرح این مشکل پرداخته و راه کارهایی را پیشنهاد کرده و مختصر توضیحی از سایت های ذکر شده ارائه کرده است.

http://www.digitalfamily.com/tutorials/test-your-website-in-differen-web-browsers/

#مریم_داودی

لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a

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


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

حتما تا به حال برنامه‌نویسی را دیده‌اید که ساعت‌ها «مانند جغد» به مانیتور زل زده و حتی به به کیبورد و ماوس دست نمی‌زند، ولی ادعا می‌کند در حال دیباگ کردن (پیدا کردن خطا) برنامه است!
در حقیقت او در حال انجام نوع خاصی از دیباگ به نام Owlly Debugging یا دیباگ کردن به سبک جغدها است.

حقیقت این است که زبان‌های برنامه‌نویسی، تکنولوژی‌ها و پلتفرم‌هایی وجود دارند که به شما امکانات زیادی برای دیباگ کردن نمی‌دهند و برنامه نویس برای پیدا کردن خطا چاره‌ای به جز خواندن و حدس خطا ندارد. زبان‌های Declarative مانند SQL، تکنیک‌هایی مانند AOP و مفاهیمی مانند MVVM همگی از این نوع هستند.

http://mehrandvd.me/2016/08/30/owlly-debugging-debugging-like-owl/

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

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

___
سازگاری با مرورگرهای مختلف از ابتدا برای طراحان مشکلاتی را در بر داشته و مشکل از جایی عمیق‌تر می‌شود که این مرورگرها نسخه‌های متفاوتی دارند و شما نمی‌توانید همه آنها را کنار هم داشته باشید، بخصوص که این روزها استفاده از مروگرهای تلفن همراه و تبلت‌ها نیز بالا رفته است. پس وبسایت شما باید با همه مرورگرها سازگار و یا اصطلاحا cross-browser باشد .
از بین سرویس‌دهندگانی که این تست‌ها را انجام می‌دهند شاید یکی از بهترین سرویس‌دهندگان، BrowserStack باشد. با استفاده از این سرویس می‌توانید سایت خود را در بیشتر از 1000 نسخه‌ی از مرورگرهای مختلف تست کنید. این تنوع شامل دستگاه‌ها و حتی سیستم عامل‌های مختلف می‌شود. همینطور این امکان را به شما می‌دهد تا بتوانید نسخه‌ی اجرای شده‌ی سایت خود را در نسخه‌های مختلف مرورگرها، حتی دستگاه‌های مختلف توسط اسکرین شات ببنید. مهمترین قابلیت آن تست سایت‌های local و خصوصی به اکثر زبان‌های برنامه نویسی می‌باشد.
می‌توانید به کمک لینک زیر از سایت خود روی مرورگرهای مختلف اسکرین شات بگیرید.


https://www.browserstack.com/screenshots

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

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

___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
مفهوم «Saga» در معماری نرم‌افزار مفهومی است که اخیرا در مقاله‌های مربوط به CQRS Pattern بسیار زیاد از آن صحبت می‌شود.
با این که مفهوم بیشتر از طریق CQRS شناخته شده‌است ولی در حقیقت این مفهوم از قبل وجود داشته‌است. مفهوم Saga اولین بار در مقاله‌ای با نام «Sagas» توسط «هکتور گارسیا» و «کنت سالم» در سال سال ۱۹۸۷ معرفی شد. لینک زیر این مفهوم را با نام «Process Manager» معرفی کرده و این نام را نام بهتری برای این مفهوم دانسته.

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

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

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

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

___
یکی از محصولاتی که بصورت تخصصی در حوزه مجازی سازی در لایه سیستم عامل فعالیت می‌کند Docker می باشد . داکر یک محصول Open Source است که فرایند ایجاد، توسعه و اجرا کردن Application ها را با استفاده از Container ها ساده می‌کند. Container ها به یک برنامه نویس این اجازه را می‌دهد که application خود را با تمامی اجزای مورد نیاز آن اعم از فایل‌های dll و کلیه library ها، کلیه وابستگی ها در قالب یک بسته نرم افزاری بیرون بدهد به شکلی که از بیرون یک نرم افزار واحد به نظر برسد.
از ویژگی های اصلی Docker میتوان به Open Source بودن محصول، سبک بودن، Deploy سریع اپلیکیشن، قابلیت جابجایی Containerها بین ماشین‌های مختلف و قابلیت ورژن کنترل Containerها می‌باشد.
لینک زیر در مورد مکانیزم Docker و ویژگی‌های آن توضیح می‌هد.

http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular

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

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

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

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

۱. امکانات اضافه شده به نسخه آینده زبان جاوا (Java 9):
https://telegram.me/SoftwarePhilosophy/538

۲. ابزاری برای تست صفحات وب در browser های مخلتف:
https://telegram.me/SoftwarePhilosophy/540

۳. دیباگ کردن به سبک جغدها:
https://telegram.me/SoftwarePhilosophy/542

۴. ابزاری برای تست صفحات وب در browser های مخلتف به همراه اسکرین‌شات:
https://telegram.me/SoftwarePhilosophy/543

۵. مفهوم Saga در معماری نرم‌افزار:
https://telegram.me/SoftwarePhilosophy/545

۶. پلتفرم اوپن سورس Docker و نحوه عملکرد آن:
https://telegram.me/SoftwarePhilosophy/546

ـــــــــــ
@SoftwarePhilosophy