Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
“طراحی پایگاه داده تکاملی” عنوان مقاله ایست که مارتین فاولر و پرمید سادلچ با بررسی این رویکرد که "معماری سیستم باید از طریق تکرارهای مختلف نرم افزار تکامل یابد" نوشته شده است .
نحوه تعامل بین DBA ها و برنامه نویسان، استفاده از ورژن کنترل‌ها، Database refactoring و .... همگی در این مقاله مورد بررسی قرار گرفته‌اند :

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

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

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

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

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

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

https://ow.ly/p03w30cbHdO

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

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


___
Forwarded from فلسفه دیزاین
استراتژی‌های ورود به رسانه‌های اجتماعی

در ابتدای سال ۲۰۱۸، تعداد کاربران رسانه‌های اجتماعی در سطح جهان، بالغ بر ۳ میلیارد نفر بوده است. رقمی که پیش بینی می‌شود سالیانه رشدی ۱۳ درصدی نیز داشته باشد. به همین دلیل می‌توان بر اهمیت روزافزون حضور شرکت‌ها در این نوع بسترهای مجازی صحه گذاشت.

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

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

با اجرای دقیق مراحل ذکر شده در فرآیند ایجاد رسانه‌های مختلف در هر کدام از شبکه‌های اجتماعی، مدیریت چندین پلتفرم در رسانه‌های اجتماعی عملی سهول الوصول است. با این وجود معمولاً مدیریت همزمان پلتفرم‌های مختلف، نیازمند بهره‌گیری از یک ابزار مدیریتی معتبر مانند Hootsuite، Buffer، Lithium و ... می‌باشد. این ابزارها به شما کمک می‌کنند تا به‌طور موثر با مشتریان خود در ارتباط باشید، مکالمات مربوط به برند خود را مانیتور کنید و با مشتریان بالقوه خود نیز در تعامل باشید.

اساس حفظ بقای شرکت‌ها در رسانه‌های اجتماعی وابسته به عواملی همچون میزان موفقیت در ایجاد یک رابطه قابل اعتماد بین برند و مشتریان، استفاده از فناوری‌های جدید و نرخ بازگشت سرمایه ROI
می‌باشد و تنها راه ماندگاری برند شما در این مسیر، اطمینان از تحقق موارد ذیل است:

- مخاطبان خود را درک کنید.
- استراتژی بازاریابی رسانه‌های اجتماعی خود را دائماً بررسی و به‌روز رسانی کنید.
- زمان و بودجه خود را به استفاده هرچه بیشتر از ابزارها و فناوری‌های جدید اختصاص دهید.
- تمرکز خود را روی تجربیات موفق خود نگه دارید.
- جهت جلب اعتماد کاربران خود در پلتفرم‌های مختلف تلاش کنید.

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

https://bit.ly/dxgn529

و اگر تا بحال استراتژی رسانه‌های اجتماعی خود را تعیین و توسعه داده‌اید، خوشحال می‌شویم تجربیات خود را در بخش نظرات 👇 ⁦مطرح کنید.

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

نویسنده: نیما حکیم‌رابط

#رسانه_اجتماعی #استراتژی #برند

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

___
👍1
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
این روزها بحث انتخاب بین ری‌اکت و انگولار داغ است هر کدام از آن‌ها امکاناتی دارند که دیگری فاقد آن‌ها است.
ری‌اکت یک کتابخانه است که توسط فیسبوک معرفی شده است ولی انگولار مجموعه‌ای از کتابخانه‌هاست که با هم کار می‌کنند.

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

https://itnext.io/is-angular-dying-because-of-react-a8e885f09421


#مریم_کمالی (https://ow.ly/9Wa430mFGeK)

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

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

ولی تجربه نشان می‌دهد بیشترین علت «افزونگی کد» برنامه‌نویسان نیستند! بلکه این مشکل بیشتر به خاطر «معماری بد نرم‌افزار» است. معمار نرم‌افزار کسی است که هنگام معماری باید «فضاهای» کد را طوری معماری کند تا احتمال به خطا افتادن برنامه‌نویسان کمتر شود.

لینک زیر توضیح می‌دهد که چگونه یک معماری بد باعث «رشد افزونگی کد» در نرم‌افزار می‌شود.


https://mehrandvd.me/2016/02/28/growing-redundancy-an-architectural-disease/

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


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


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

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

https://bit.ly/2G31PZ3

#محمدرضا_حاج_بابایی (https://bit.ly/2ThD3YO)

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

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

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

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

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

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

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

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

در لینک زیر توضیحات بیشتری در این مورد وجود داد :

https://www.edureka.co/blog/what-is-jenkins/

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

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

___
Forwarded from فلسفه دیزاین
نوسترآداموس‌های دیزاین

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

دیزاین پیش‌گویانه، روشی‌ست که به کمک هوش مصنوعی باعث شده است که دیزاین‌هایمان بیش از پیش، دقیق‌تر و به هدف نزدیک‌تر باشد.

دیزاین پیشگویانه (Predictive Design) چیست؟

دیزاین پیش‌گویانه یک روش آماری است که معمولاً برای پیش‌بینی رفتارهای آینده استفاده می‌شود. راه‌حل‌های دیزاین پیش‌گویانه نوعی فناوری داده‌کاوی است که با تجزیه و تحلیل داده‌های تاریخی و حال حاضر و نیز تولید مدلی برای پیش‌بینی نتایج آینده کار می‌کند. در دیزاین پیش‌گویانه، داده‌ها جمع‌آوری می‌شوند، یک مدل آماری فرموله می‌شود، پیش‌بینی‌ها انجام شده و با دسترسی به اطلاعات اضافی، این مدل اعتبار می‌یابد (یا تجدید نظر می‌شود).

برای روشن‌تر شدن این موضوع به مثالی می‌پردازیم:

یکی از ابزارهای کمک‌یار و دستورزبانی به نام Grammarly از روش دیزاین پیش‌‌گویانه در ابزار خود بهره برده است.

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

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

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

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

شما چطور در طراحی محصولتان به صورت پیش‌گویانه عمل کرده‌اید؟ با فشردن دکمه‌ی «مشاهده نظرات» آن‌را با ما در اشتراک بگذارید.

https://bit.ly/dxgn530


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

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

#دیزاین #تجربه_کاربری #هوش_مصنوعی

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

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

آیا کد شما Commit شده اما Push نشده است؟

آیا کد در یک Branch مشترک Push شده است؟

آیا یک Merge اشتباها Push شده است؟

احتمالا با خواندن مقاله زیر مشکل‌تان برطرف می‌شود:

https://dev.to/vorahsa/fixing-mistakes-with-git-27a5


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

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
نگارش نهایی NET Core 3.0. منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/

تغییرات ASP.NET Core و Blazor در نگارش نهایی NET Core 3.0.
https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/

نگارش نهایی EF Core 3.0 و EF 6.3 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/

🔰 هم اکنون میتونین نسخه جدید رو از لینک زیر دانلود و نصب کنین
حداقل نسخه مورد نیاز Visual Studio 2019 ورژن (v16.3) می باشد
https://dotnet.microsoft.com/download/dotnet-core/3.0
_________________
@DotNetZoom
#پست_مجدد این پست تا به حال بیش از ۴۳۰۰ بار مشاهده شده و به نظر می رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یک تصمیم «به اندازه کافی خوب» به سوی «بهترین تصمیم»

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

فرض کنید می‌خواهید شغل بعدی خود را انتخاب کنید و تصمیم به رفتن به یک شرکت جدید دارید. واقعا آیا این بهترین تصمیم است؟
• این تصمیم می‌تواند در حال حاضر (سال ۲۰۱۵) بهترین تصمیم شما باشد.
• در انتهای ماه ممکن است به این نتیجه برسید که این تصمیم، نسبتا خوب بوده‌است زیرا شغل پر استرسی است.
• در سال ۲۰۱۶ ممکن است به این نتیجه برسید که تصمیم بدی گرفته‌اید چون شغل بسیار سختی است.
• در سال ۲۰۱۷ ممکن است به این نتیجه برسید که بدترین تصمیم ممکن را گرفته‌اید زیرا علی‌رقم تمام زحماتتان شرکت ورشکست شده!
• و در نهایت در سال ۲۰۲۰ به این نتیجه برسید که بهترین تصمیم تمام عمرتان را گرفته‌اید، زیرا با استفاده از تجربه‌ای که از آن شرکت به دست آورده‌اید حالا مدیرعامل شرکت مایکروسافت شده‌اید!

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

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

https://mehrandvd.me/2016/12/12/good-enough-decision-towards-best-decision/

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

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

___

Good Enough Decisio
تجربه کار در یک تیم remote تجربه جذابی است. خیلی‌ها بر این باورند که راندمانشان هنگام کار از راه دور بیشتر از زمانی است که در دفتر کار می‌کنند.
همچنین کار تیمی با یک تیم از راه دور گاهی جذاب‌تر است، اما گاهی پیچیدگی‌های دارد که با کار در کنار هم در محیط فیزیکی ایجاد نمی‌شود.
در این مقاله برخی از این چالش‌ها به همراه نکاتی برای کار در تیم‌های remote مطرح شده است.

https://leanstartup.co/12-tips-for-managing-a-remote-team-and-loving-it/

#مریم_کمالی (https://ow.ly/9Wa430mFGeK)

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

___