Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
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
اولین قدم در ساخت تیم پروژه در TFS انتخاب پروسه آن است که قالب کلی سیستم پیگیری ورک‌آیتم‌ها را مشخص می‌کند.
یکی از این پروسه‌ها، CMMI است. در اصل Capability Maturity Model Integration (CMMI) یک مدل است و نه نسخه‌ای که قدم به قدم قابل اجرا باشد. این مدل مجموعه ای از رفتارهای سازمانی برای توسعه نرم افزار و مهندسی سیستم را ارايه می‌دهد. هدف این مدل ارزیابی میزان بلوغ فرایندهای سازمان و ارائه راهکارهایی برای بهبود آنهاست که نهایتا منجر به بهبود محصول نهایی می‌شود.
در TFS زمانی این نوع پروسه انتخاب می‌شود که تیم از روش‌های مشخص و خاصی در پروژه استفاده می‌کند و نیازمند چارچوبی برای بهبود پروسه و فرایندهای خود است که امکان ارزیابی تصمیمات و روش‌ها را فراهم کند.
در این پروسه امکان پیگیری requirement, change request, risk and review وجود دارد.
لینک زیر به طور کامل پروسه CMMI را در TFS شرح می‌دهد.

https://www.visualstudio.com/en-us/docs/work/guidance/cmmi-process

#مریم_داودی

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

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

___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارند «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید و این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۶۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نوشتن بات‌ برای بازی‌های کامپیوتری یکی از تفریحاتی است که برای برنامه‌نویسان می‌تواند جذاب باشد. با اینکه این برنامه‌ها معمولا جز برنامه‌های کوچک محسوب می‌شوند ولی معماری نرم‌افزاری آنها کماکان می‌تواند جذاب باشد. یکی از روش‌های معماری این نرم‌افزارها مدل کردن جهان بازی است. در این معماری تمامی امکاناتی که یک بازی در اختیار کاربر قرار می‌دهد به طور انتزاعی طراحی می‌شود. برای مثال برای اینکه بازی ساده Telegram Lumberjack را مدل کرد باید بررسی کرد این بازی چه امکاناتی را در اختیار بازیگر قرار می‌دهد. برای مثال یک عامل می‌تواند با گرفتن فیلم از اسکرین و فرستادن دکمه‌های چپ و راست به موقع به عنوان یک بات برای این بازی عمل کند.

لینک زیر یکی از پیاده‌سازی‌های ممکن برای گرفتن امتیازهای بالا در Telegram Lumberjack را شرح داده‌است.

http://mehrandvd.me/2016/10/30/cheating-telegram-lumberjack/

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مورد توافق‌ترین تعریفی که در ارتباط با مدیریت محصول وجود دارد، تعریفی بسیار ساده و قابل درک است: «ارائه محصولی درست به شیوه ای درست به مشتری». اما مدیریت محصول کماکان یکی از سخترین شرح وظایف‌هایی است که می‌توان در هر سازمان تصور کرد. این ابهام در چیستی و چگونگی مدیریت محصول در شرکت های نرم افزاری که تجربه‌ای درست در داشتن مدیر محصول ندارند بسیار بیشتر است.

لینک زیر می تواند یک شروع خوب برای آشنا شدن با این مفهوم باشد.

https://medium.com/@joshelman/a-product-managers-job-63c09a43d0ec#.i6pcfk9wa


#کاروان_جافی

لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027

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


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

۱. پلتفرم Docker و نحوه عملکرد آن
#docker #deployment
https://news.1rj.ru/str/SoftwarePhilosophy/666

۲. جلوگیری از حمله DOS (ایران دات نت)
#security
https://news.1rj.ru/str/SoftwarePhilosophy/667

۳. توضیح فرایند CMMI در TFS
#sdlc #softwaredevelopmentprocess #tfs #cmmi
https://news.1rj.ru/str/SoftwarePhilosophy/668

۴. نوشتن بات برای بازی‌ Lumberjack در تلگرام
#telegram #gamebot #csharp
https://news.1rj.ru/str/SoftwarePhilosophy/671

۵. مدیریت محصول در شرکت‌های نرم‌افزاری
#productmanagement
https://news.1rj.ru/str/SoftwarePhilosophy/674

ـــــــــــ
@SoftwarePhilosophy
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تکنولوژی Xamarin یکی از تکنولوژی‌های توسعه برنامه‌های موبایل cross-platform است. سایت «تکنولوژی رادار» که توسط «مارتین فاولر» مدیریت می‌شود و به بررسی تکنولوژی‌ها می‌پردازد، از سال ۲۰۱۵ این تکنولوژی را وارد حلقه Trial کرده است. ورود این تکنولوژی به حلقه Trial به این معنی است که به نظر متخصصان شرکت Thought Works، «این تکنولوژی ارزش دنبال کردن دارد و برای استفاده در محصولات شرکت‌های بزرگی که حاضرند روی تکنولوژی‌های جدید سرمایه‌گذای کنند مناسب است». تا قبل از سال ۲۰۱۵ این تکنولوژی در حلقه Assess قرار داشت که که به این معنی بود: « تکنولوژی جذابی است ولی هنوز شرکت‌ها باید آن را بررسی کنند».
با آماده شدن این تکنولوژی برای توسعه برنامه‌های موبایل و کامپوننت‌هایی که برای آن نوشته شده‌است به نظر می‌رسد نسل جدیدی از برنامه نویسی موبایل شکل گیرد.

https://www.thoughtworks.com/radar/tools/xamarin

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
استایل برنامه‌نویسی JSFuck یک نوع خاص برنامه‌نویسی رمزگونه و آموزشی در JavaScript است. در این نوع برنامه نویسی فقط و فقط از ۶ کاراکتر‌ «()+[]!» استفاده می‌شود و تمام المان‌های مورد نیاز برنامه نویسی با استفاده فوت و فن‌ها و trick های JavaScript معادل‌سازی شده‌اند. برای مثال برای معادل عبارت false، ![] و برای true از !![] استفاده می‌شود. اینها trick هایی در زبان JavaScript هستند که معمولا توصیه می‌شود از آن دوری شود، ولی در این سبک همین تکنیک‌ها پایه و اساس هستند. کشف راز هر کدام از این معادل‌ها تفریح خوبی برای برنامه‌نویسان JavaScript است. چند معادل‌سازی جالب دیگر این روش عبارتند از:
1. false => ![]
2. true => !![]
3. undefined => [][[]]
4. NaN => +[![]]
5. 0 => +[]
6. 1 => +!+[]
7. 2 => !+[]+!+[]
به این ترتیب هر کد JavaScript را می‌توان به سبک JSFuck هم نوشت! در سایت زیر ضمن معرفی این استایل برنامه‌نویسی، ابزاری برای encode کردن کد JavaScript به این سبک نیز وجود دارد.

http://www.jsfuck.com/

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

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


___
#پست_مجدد این پست تا به حال بیش از ۲۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.