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

___
اگر قصد انتخاب فریم ورکی برای ساخت برنامه‌های تک صفحه‌ای سمت کاربر را دارید حتما می‌دانید که انتخاب‌های زیادی پیش روی شما قرار دارد که از آن جمله می‌توان به Angular 1 , Durandal , React یا Ember اشاره کرد. اما فریم ورک‌های جدیدتر Angular2 و Aurelia که توجه زیادی را به خود جلب کرده‌اند می‌توانند جزو اولویت‌های شما قرار بگیرد، ولی "کدام یک بهتر است؟" این سوالی است که همه با آن مواجه می‌شوند و افرادی که تجربه کار با Angular1 را دارند شاید بر این باور باشند که مطمئنا Angular2 انتخاب مناسبتری است ولی در واقع این دو فرم ورک فقط در نام Angular با هم مشترک هستند و در Angular2 شاهد بازنویسی کامل ساختار فریم ورک می‌باشیم.
تصمیم گیری بین این دو می‌تواند شما را با چالش مواجه کند زیرا هر دو دارای طراحی فوق العاده و قدرتمندی می‌باشند که تمام نیازها برای ساخت برنامه‌های تک صفحه‌ای را برآورده می‌کنند و همینطور پشتوانه تجاری خوب آنها از دیگر ویژگی‌های این دو به شمار می‌رود. به همین دلیل می‌توان گفت بین این دو فریم ورک قدرتمند برنده‌ای وجود ندارد ولی تفاوت های زیادی از قبیل معماری یا Data binding با هم دارند. مقایسه این موارد می‌تواند در تصمیم گیری به شما کمک کند تا از میان فریم ورک‌ها راحت‌تر انتخاب کنید.
لینک زیر به شرح مقایسه بین فریم ورک های Aurelia و Angular2 می پردازد.

https://www.pluralsight.com/blog/software-development/angular-2-vs-aurelia

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

لینکدین:

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

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

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

۱. تجربیات یک طراح ارشد UX پروژه‌های هولوگرافیک
#ux #hololens
https://news.1rj.ru/str/SoftwarePhilosophy/654

۲. دو مقاله تفصیلی در مورد The Boy Scout Principle (ایران دات نت)

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

۳. ابزاری برای تست صفحات وب در browser های مخلتف به همراه اسکرین‌شات
#frontend #browsercompability
https://news.1rj.ru/str/SoftwarePhilosophy/658

۴. چگونه محصولی کاملا متمایز از رقبا ارایه دهید (Iran Agile)
#productdesign
https://news.1rj.ru/str/SoftwarePhilosophy/659

۵. مفهوم Saga در معماری نرم‌افزار
#cqrs #designpattern #saga
https://news.1rj.ru/str/SoftwarePhilosophy/661

۶. مقیاسه فریم ورک‌های Aurelia و Angular2
#angular2 #aurelia
https://news.1rj.ru/str/SoftwarePhilosophy/662


ـــــــــــ
@SoftwarePhilosophy
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یکی از محصولاتی که بصورت تخصصی در حوزه مجازی سازی در لایه سیستم عامل فعالیت می‌کند 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

___
Forwarded from Iran .Net
جلوگیری از حمله DOS

یکی از آسان ترین روش های حمله به وب سایت ها استفاده از تکنیکی به نام Denial Of Service (عدم پذیرش سرویس) و یا DOS می باشد.

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

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

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

قابلیت Dynamic IP Address Restrictions، در IIS دقیقا به همین منظور قرار داده شده است. توسط این قابلیت می توانید در سطح وب سرور، محدودیت ها و سیاست هایی را بر روی IP ها اعمال کنید تا در صورت وقوع حملات DOS، به طور خودکار IP های مهاجم تشخیص داده شده و از چرخه سیستم عامل خارج شوند.

1. https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions

2. https://technet.microsoft.com/en-us/library/hh831785(v=ws.11).aspx

@Irandotnet