جنگولرن
3.83K subscribers
287 photos
75 videos
31 files
558 links
آموزش Django و بستگان
Download Telegram
از لینکدین Ali Bigdeli

قالب پیاده سازی django با celery در همروش

تو بعضی پروژه ها لازم میشه که عملکرد های background process داشته باشید و خوب celery یکی از انتخاب هاس. برای اینکه بتونید celery رو با در نظر گرفتن worker و beater توی همروش پیاده سازی کنین باید ۳ تا اپ مجزا ایجاد کنین که شبیه به هم هستن ولی توی beater و worker دستورات اجراییش متفاوت میشه. این رپو به صورت اختصاصی برای پیاده سازی این ساختار در Hamravesh ایجاد شده و ممکنه بخواید برای استفاده شخصی تغییرش بدید.

توی این رپو می تونین قالب آماده برای تست و پیاده سازی یک پروژه ساده که worker و beater داره رو ببینید و پیاده سازی کنین. اما نکته مهم این داستان بخش cicd هستش که توی یک pipeline هر سه اپ پیاده سازی بشن که این جریان توی رپو به نمایش گذاشته شده.


آدرس رپو:

https://lnkd.in/evpeV4kV
👍3
یه بنده خدایی توی لینکدین اینو پست کرده و یه نکته برای DRF گفته.

کامنت مفید Mohammad Amin Amjadi این بوده (عکسی که کامنت کردم رو هم ببینید):
There are six problems (bad pattern) in the code.

1. Do not use 'all' in serializer fields. =>
"""
fields = ('start_date', 'end_date', ...)
"""

2. To override methods, the signature of the main method must be observed (even the name of the parameters). =>
"""
def validate(self, attrs):
"""

3. Strings must be translatable. =>
"""
_("offer's end date should be after start date")
"""

4, 5, 6. Error message should not be written anywhere in the code and ValidationError should not be used directly. And the error should be sent along with the error code =>
"""
default_error_messages = {
'invalid_start_date_range': _("offer's end date should be after offer start date"),
}

def validate(self, attrs):
if attrs['start_date'] > attrs['end_date']:
self.fail('invalid_start_date_range')
"""
👌13👍6
Forwarded from جنگولرن
ده تا اشتباه رایج برنامه نویس های جنگو
(البته درستش Django Developers هست)
1: Using the Global System Python Environment for Project Dependencies
2: Not Pinning Project Dependencies in a requirements.txt File
3: Using Old-style Python Functions Instead of Class-based Views
4: Writing Fat Views and Skinny Models
5: A Huge, Unmanageable Settings File
6: All-in-one Application, Bad Application Structure, and Incorrect Resource Placement
7: STATICFILES_DIRS and STATIC_ROOT Confuse Newbie Django Developers
8: Default STATICFILES_STORAGE, Django Templates Loaders in Production
9: Pure Python Scripts for Utilities or Scripts
10: Reinventing the Wheel
توضیحات هر مورد رو توی لینک زیر ببینید:
https://www.toptal.com/django/django-top-10-mistakes
👌3👍1
Forwarded from جنگولرن
28 تا best practice توی کار با مدل های جنگو (عناوین مقاله رو اینجا گذاشتم)
برای دیدن جزییات لینک رو باز کنید.
1. Correct Model Naming
2. Relationship Field Naming
3. Correct Related-Name
4. Do not use ForeignKey with unique=True
5. Attributes and Methods Order in a Model
6. Adding a Model via Migration
7. Denormalisations
8. BooleanField
9. Business Logic in Models
10. Field Duplication in ModelForm
11. Do not use ObjectDoesNotExist
12. Use of choices
13. Why do you need an extra .all()?
14. Many flags in a model?
15. Redundant model name in a field name
16. Dirty data should not be found in a base
17. Getting the earliest/latest object
18. Never make len(queryset)
19. if queryset is a bad idea
20. Using help_text as documentation
21. Money Information Storage
22. Don't use null=true if you don't need it
23. Remove _id
24. Define unicode or str
25. Transparent fields list
26. Do not heap all files loaded by user in the same folder
27. Use abstract models
28. Use custom Manager and QuerySet
لینک:
https://steelkiwi.com/blog/best-practices-working-django-models-python/
👌1
Forwarded from جنگولرن
اگه دقت کرده باشید توی فایل settings.py در جنگو خیلی تاکید شده که مراقب SECRET_KEY باشید. به جای اینکه دلایل رو توضیح بدم، لینک کدهای جنگو که صراحتا SECRET_KEY رو استفاده کردن اینجا میگذارم. بد نمیشه یه نگاه بندازید. (لینک ها همه مربوط به ریپازیتوری اصلی جنگو و نسخه 3.1.x هستن)

1- https://github.com/django/django/blob/stable/3.1.x/django/contrib/auth/tokens.py
2- https://github.com/django/django/blob/stable/3.1.x/django/core/checks/security/base.py
3- https://github.com/django/django/blob/stable/3.1.x/django/core/signing.py
4- https://github.com/django/django/blob/stable/3.1.x/django/utils/crypto.py
Forwarded from جنگولرن
بعضی پترن هایی که حضرت Fowler معرفی کرده و جنگو داره ازشون استفاده میکنه.
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Seyed Mohammad Khoshnava)
📌 مدیریت وابستگی ها در پایتون

خب امروزه دیگه خیلی از پایتونر ها برای شروع یک پروژه اول میان یک virtual env میسازن و برای مدیریت وابستگی ها با pip freeze میان هر چی داده رو میریزن توی یک فایل متنی مثل requirements.txt و خب به خودمون میبالیم که چقدر ما خفنیم و مثل برنامه نویس های ارشد داریم اصولی جلو میریم

اما یک لحظه صبر کنید. آیا این کار درسته🤔 ؟ آیا نوشتن این کامند توی ترمینالمون بحث وابستگی های پروژه رو هندل کردیم و هر وقت بخوایم روی سیستم دیگه ای اجرا کنیم با زدن یک کامند نصب همه چیز درست انجام میشه ؟
pip freeze > requirements.txt
pip install -r requirements.txt


نه اینجا یک مشکلی داریم. بریم ببینیم مشکل چیه و چطور پیش میاد.

فرض کنید کتابخانه A را توی پروژه خودتون نصب کردید، که ممکنه یک وابستگی فرعی B، C و D داشته باشه. حالا، فایل requirements.txt شما با دستور بالا شبیه به این هستش.

A==1.0
B==2.0
C==1.4
D==1.2


حالا میگیم که، مالک کتابخانه A نسخه جدیدی رو منتشر می کنه که از نسخه دیگری از کتابخانه B استفاده می کنه و کتابخانه C را حذف می کنه. از اونجایی که B و C قبلاً نصب شده اند، پیپ فریز اون رو به طور خودکار انتخاب می کنه و در نسخه های اصلی قرار میده. حالا در پروژه ای با 100 وابستگی، فایل نیازمندی های شما با تغییر کتابخانه ها بسیار مشکل ساز می شه. شما باید تمام وابستگی های فرعی را شناسایی کنید و بر اساسش اونهارو را حذف کنید. در این مثال اگر A از پروژه حذف بشه، شما همچنان با B، C و D گیر می‌افتید، حتی اگر آنها فقط به دلیل A نصب شده باشند. حذف هر یک از اونها یک کار بزرگه و میتونه در پروژه‌های بزرگ بسیار آزاردهنده باشه.

💡راه حل ؟
خب دیگه خودتون برید دنبال راه حلش باشید. به من چه 😕

باشه حالا.بیایید بگم یکی از راه حل ها چیه.😁 یک کتابخونه هست به نام pipreqs که لینکش رو این پایین میزارم. و میتونه خیلی به حل این مشکل کمک کنه
https://pypi.org/project/pipreqs/

🔰 خب بریم برای دلایل برتری این نسبت به pip freeze :


1⃣ نکته اول اینکه توی pip freeze فقط پکیج هایی که با pip install نصب شدند و وابستگی هاشون میاد.
و اگر ما بیاییم از chocolatey, conda, setuptools استفاده کنیم توی خروجی pip freeze این ها نمیان 🤨
اما خب pipreqs این محدودیت هارو نداره.


2⃣ نکته دوم اینه که pip freeze تمام وابستگی های پروژه هارو هم توی خودش ذخیره میکنه. که خب ما اصلا اون هارو به صورت مستقیم توی پروژه ایمپورت نمیکنیم.
خب این کار اشتباهی هست که در اول این متن توضیح داده بودم . اما توی pipreqs ما فقط وابستگی هایی رو نصب میکنیم که توی پروژه ایمپورت شده باشند.

🎊 حالا نمیخواد بترسید. کار با pipreqs خیلی آسونه. مثلا با دستور زیر یک فایل requirements.txt میسازه خودش .
$ pipreqs

اگر فایلش هم از قبل موجود باشه با این دستور باید انجام بدید
$ pipreqs --force

دوتا جایگزین هم برای pipreqs هست که میتونید از اون ها هم استفاده کنید .
https://github.com/jazzband/pip-tools
https://python-poetry.org

📋 نتیجه گیری :
با دستور pip freeze ممکنه در ابتدا بسیار مفید به نظر برسه، اما به دلایل زیر می تونه پروژه شما را خراب کند:
تمام کتابخانه های نصب شده در پروژه شما از جمله وابستگی ها و وابستگی های فرعی را در فایل requirements.txt تخلیه می کنه.
هنوز کتابخانه هایی را که با استفاده از pip نصب نشده اند از دست می ده.
اگر کتابخانه ای در پروژه استفاده نشه، به طور خودکار حذف نمی شه.
به دلایل ذکر شده، توصیه می شود از pipreqs استفاده کنید، یک کتابخانه پایتون که تمام مشکلات بالا را برطرف می کنه و استفاده از اون خیلی آسون تره.

🖥 @SEYED_BAX
👍10
Forwarded from جنگولرن
شما برای ساختن محیط ایزوله از کدوم استفاده میکنید؟
virtualenv or python -m venv or pipenv
لینک زیر رو بخونید. هر کسی دلیل خودش رو گفته. من خودم از python -m venv استفاده میکنم.
https://stackoverflow.com/questions/41573587/what-is-the-difference-between-venv-pyvenv-pyenv-virtualenv-virtualenvwrappe
Forwarded from جنگولرن
The Power of Django ORM
مقاله ای در مورد جنگو از صدرا یحیی پور
در مورد Django ORM

- What is ORM
- Use Exceptions in get()
- Django connection
- Iterators
- Set The Timeout
- ORM Best Tricks
-- F() Function
-- Aggregations
-- len() or count()
-- bulk() For Ever

لینک:
https://imsadra.me/the-power-of-django-orm
👍4
Forwarded from جنگولرن
مطلبی از دانیال کیماسی، مهندس نرم افزار از کوئرا - Django و Nextjs

ما توی کوئرا حدود یک سالی هست که از Nextjs استفاده می‌کنیم. از همون ابتدا برای integration بین Django و Next.js پکیجی رو توسعه دادیم که به تازگی داخل گیت‌هاب منتشر کردیم.
داخل این مقاله شیوه انجام این کار رو توضیح دادم و همینطور یه راهنمایی اولیه برای استفاده از این پکیج قرار داده شده.

لینک مقاله در Medium:
https://medium.com/@danialkeimasi/django-next-js-the-easy-way-655efb6d28e1

لینک ریپو گیت‌هاب:
https://github.com/QueraTeam/django-nextjs
👍2
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و هفتم - اعمال استایل های flex

توی این قسمت اول از همه، استایل هایی که قسمت بعدی با developer مرورگر اعمال کرده بودیم رو توی styles.css اضافه کردیم. بعد commit کردیم که توی ریپازیتوری گیت اونارو داشته باشم. بعدش تلاش کردیم که منو رو fixed کنیم و توی این مسیر نکاتی با هم یاد گرفتیم. البته یاد گرفتیم که html و css واقعا نیاز به تخصص داره و به همین دلیل هست که بعضی برنامه نویس های back-end اینقدر ازش فراری هستن. کاری که من توی 40 دقیقه انجام دادم، شاید کار 5 دقیقه یه برنامه نویس فرانت باشه. امیدوارم توی این مسیر و با همدیگه دانش خودمون در زمینه html و css بیشتر کنیم.

لینک آپارات:
https://www.aparat.com/v/1XVkl

لینک یوتیوب:
https://youtu.be/ehqI1EEkPkU
👍2
Forwarded from جنگولرن
یه اکشن هایی توی کد هستن که گاهی نیازه یا همه با هم انجام بشن یا هیچ کدوم.
که توی جنگو ما از #transaction_atomic واسه هندل کردنش استفاده میکنیم.
و این فقط مربوط به بخش های مالی پروژه نمیشه.
چون معروف ترین مثالی که واسه اش زده میشه مثال حساب بانکیه.
ولی شما فرض کنید که یک موجودیت teacher دارید که یک نوع از User هستش. شما واسه ساخت موجودیت تیچر ؛ اول یوزر رو میسازید ؛ بعد از اون هم تیچر رو. توی خط کد های پشت سر هم.
حالا در نظر بگیرید برنامه خط اول رو پشت سر میذاره ؛ یوزر داخل مدل یوزر ساخته میشه اما قبل از این که همین یوزر داخل مدل تیچر هم ساخته بشه ؛ کد کرش میکنه یا هر نوع اکسپشنی رخ میده.
اینجاست که شما با اطلاعات ورودی یک دیتای ناقص در دیتابیس تعریف کردید.
میخوام بگم استفاده از #transaction_atomic ها مختص شرایط خیلی خاصی نیست.
فقط کافیه یه کم راجع به ترنزکشن ها توی دیتابیس بدونید و روش استفاده ازش رو مطالعه کنید.
از لینکدین fateme Akrami
👍4
Forwarded from جنگولرن
شاید همگی با این جمله ی خفن و معروف آشنا باشیم .

"premature optimization is the root of All evil"

بنظر شما رانندگی با ماشین فرمول یک تو خیابون های شهر کار عاقلانه ایه؟
خب مشخصه ، نه .
پس یادمون باشه قبل هر تصمیمی برای ارتقای یک پروژه یه شاخص مهم رو در نظر بگیریم ، این شاخص چیزی نیست جز نیاز مشتری ، باید این نیاز رو پیدا کنیم .
یه سوال
از کجا بفهمیم که نیاز به improvement هست یا نه و یا ساده تر بگم چطور تشخیص بدیم که نیاز داریم ارتقا بدیم یا نه ؟ اینحاست که performance testing مطرح میشه.
بنظر من performance testing ارزش یک برنامه نویس رو نشون میده ، تنها راه مقابله با کمالگرایی بیهوده ، سدیه به نام performance testing.
ما به عنوان یک برنامه نویس قراره ارزشمون رو با پاسخ به یک نیاز نشون بدیم ، نه آب در هاون کوبیدن .
سوال بعدی، خب چطور performance testing انجام بدیم ؟
یکی از روش ها تو پروژه های جنگویی استفاده از locust هست با اینکار میتونین بفهمین که پروژتون چند مرده حلاجه و به بیانی دیگر نیاز به improvement رو تشخیص بدین .

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

کمالگرایی آفتیه که تو باغ هر برنامه نویسی میوفته ، با locuat آفتکشی کنید .

بازم از لینکدین Erfan Aliaghdam
لینک:
https://www.linkedin.com/posts/erfan-aliaghdam-20a439204_performanceabrtesting-testing-django-activity-6955392499020349440-ktMP?utm_source=linkedin_share&utm_medium=member_desktop_web
👍32
Forwarded from Python Hints
ازین مدل کد توی سورس کد پکیج‌ها زیاد دیدید همون استاندارد
EAFP
امروز یکی از نیروهای junior که باهاشون کار می‌کنم روی یکی از کدها به اروری میخورد و کار پیش نمی‌رفت.
ارور فریمورک هم واقعا نامشخص نبود و چیزی ازش دستمون رو نمی‌گرفت (زمانی که tensorflow 0.7 اومده بود قشنگ یادم هست ازین چالش‌ها زیاد داشتیم)

توی سورس اگر کدهارو بخونید یک ساختاری شبیه عکس وجود داره که باعث میشه در نهایت ارور خاص فریمورک برگرده؛ البته با یک تغییر کوچیک توی خط 10 :
raise CustomException('Finally we raise our custom error in framework.') from None

همین from None باعث میشه exception های قبلی چاپ نشه.

پاک کردن همین ۲ کلمه باعث شد توی ۵ دقیقه مشکل حل بشه‌.

دیدم نیروی خودم بلد نبود گفتم شاید بهتر باشه اینجا هم بذارم بدرد کسی بخوره.
👍7
از Linkedin آقای arash hosseini #مهندسی_سیستم لینک در نظرات پست
مهندسی سیستم بخش اول :

مهندسی سیستم نیاز به توسعه پایه ای محکم، در فهم صورت بندی یک سیستم، محصول و یا خدمت در قالب توانمندی, صفات وکارایی است .
توانمندی های سیستمی بسیار در میان سیستم های ساخته دست انسان و سیستم های طبیعی مشترک هستند. بحث در مورد توانمندی ها در قالب چارچوب به تملک گرفته شده ای که می تواند به عنوان چک لیستی برای ارزیابی شایستگی مشخصه های سیستم از جانب توسعه دهندگان خدمت یا سیستم استفاده شود. هدف این است که شما را قادر سازد تا یاد بگیرید که چگونه در مورد سیستم فکر کنید، سازمان دهی کنید و آنرا توصیف نمائید.این اگاهی مهندسین و تحلیل گران سیستم را در دو جهت مسلح می نماید:
اول : چک لیست توانمندی, صفات وکارایی که بطور معمول استفاده می شود در زمانی که شما مشخصه های سیستم را آنالیز و ارزیابی می کنید شما را قادر به کشف محدوده های مبهم در نیازمندی سیستم می نماید.
دوم : چک لیست مرجعی در زمانی که مشخصه ها را توسعه می دهیم کمک به سازمان دهی و مشخص کردن توانایی های کلیدی و سطح کارایی سیستم می نماید.
توضیح واژه های کلیدی :
توانمندی : کارکرد یا مشخصه فیزیکی یک سیستم. مانند جنسیت، واحد مالی، ملیت، وضعیت و شهر محل تولد . نوع ورزش، ساختار سازمانی مدیریت.
صفات : این واژه ارجاع به حجمی از دارایی است که به یک سیستم مرتبط است. مانند وزن، سایز و غلظت .
ویژگی : به رفتار و کیفیت مشخصه های فیزیکی قابل تمایز و یکتا سیستم ها اشاره دارد.

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

بانیان سیستم : هر سیستم حداقل یک ذی نفع اصلی مانند مالک، نگهدارنده، مدیریا اپراتور که به نوعی از مزایای رفتاری، خدمت رسانی یا محصول سیستم استفاده می کنند دارد.
چرخه عمر سیستم : هر سیستم، محصول یا خدمتی، چرخه عمری دارد که میزان بلوغ سیستم را نمایش می دهد.
👍1
سلام به همه
دوستان اگه کسی html css رو اصولی بلده
و با css grid و flexbox آشنایی خوبی داره
و وقت داره چند جلسه خصوصی آنلاین بشه
به @miladhzz پیام بده (هزینه هر جلسه توافقی 😁 )
از Linkedin آقای arash hosseini #مهندسی_سیستم لینک در نظرات پست
مهندسی سیستم بخش دوم :

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

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

محدودیت های عملیاتی و شرایط کارکرد سیستم :
هر سیستمی در اجرای ماموریت خود، تحت کنترل سیستم بالاسری بر اساس تعدادی محدودیت عملیاتی وشرایط کاری می باشد.

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

سازگاری سیستم :
هر سیستم دارای درجه ای از سازگاری برای کاربر، از نظر تناسب با طرح برنامه ریزی شده و یک پارچگی با سیستم سازمان کاربران دارد.
از Linkedin آقای arash hosseini #مهندسی_سیستم لینک در نظرات پست
مهندسی سیستم بخش دوم - ادامه:

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

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

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

فازها، حالت ها، وضعیت ها و عملکرد سیستم :
چرخه حیات سیستم/محصول ، از میان مجموعه ای از فازها، حالت ها و وضعیت های عملیاتی که می توانند تکرار پذیر یا یکبار مصرف باشند می گذرد.
👍1
معرفی یک دوره آموزشی پدر بیامرزی 😂
این یک تبلیغ برای فرادرس نیست

آموزش الگوهای طراحی یا دیزاین پترن در پایتون Python
مدرس: پژمان اقبالی شمس آبادی

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

لینکش:
https://faradars.org/courses/fvpht96081-design-patterns-in-python
👍13