Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
686 - Telegram Web
Telegram Web
جنگولرن
سری مهندسی نرم‌افزار: پست 7 از لینکدین Saeed Shahrivari Joghan توسعه چابک نرم‌افزار: سرعت یا انطباق؟ حوالی سال ۲۰۰۱ میلادی تعدادی از افراد شناخته شده حوزه نرم‌افزار طی بیانیه‌ای اعلام کردند که به راه‌های بهتری برای توسعه نرم‌افزار نسبت به دهه ۹۰ میلادی رسیدند…
سری مهندسی نرم‌افزار: پست 8
از لینکدین Saeed Shahrivari Joghan
تکنکیک‌های چابک برای هضم کردن تغییرات

در پست قبلی خدمتتون عرض کردم که شاید مهمترین هدف چابکی embraceکردن تغییرات باشه. در این پست میخوام مقداری راجع به تکنیک‌هایی که چابکی در این راستا داره صحبت کنم:
1️⃣ فرآیند تکرارشونده (Iterative) و افزایشی (Incremental): خب هر دوی این ویژگی‌ها در یه فرآیند به معنی تدریجی بودنه اما چه فرقی با هم دارند؟ فرض کنیم میخوایم تصویر یه اسب رو نقاشی کنیم. فرآیند تکرارشونده یعنی همون روشی که در سیاه قلم استفاده میشه یعنی در اوایل کار شاکله کلی اسب رو میکشیم و بعد در چند راند به مرور جزییات رو اضافه می‌کنیم پس در واقع به تدریج کیفیت نقاشی کل اسب بیشتر میشه تا کار تموم بشه. اما در حالت افزایشی این مدلیه که مثلا اول سر اسب رو به صورت کامل میکشیم بعد میریم سراغ پاهاش و همینجوری همه قسمت‌ها رو تکمیل می‌کنیم تا کل اسب تموم بشه. خب بدیهیه که در طی یک فرآیند تولید میشه هر دو حالت رو با هم داشت یعنی هم تکرارشونده بود و هم افزایشی. معمولا در فرآیندهای توسعه چابک طی تکرارهای (Iteration) متوالی ولی نسبتا کوتاه، ما پروژه رو تکمیل می‌کنیم و ممکنه در هر تکرار فیچرهای جدیدی اضافه کنیم و در کنارش کیفیت فیچرهای قبلی رو هم بهتر کنیم. معمولا خیلی خوبه که در پایان هر تکرار یه نسخه از نرم‌افزار (ولو ناقص) منتشر بشه که کار میکنه. که به اینکار میگن انتشار (release). ترکیب این دو حالت در کنار تکرارهای کوتاه باعث میشه که ما راحتتر بتونیم تغییرات رو در پروژه هضم کنیم. توجه داشته باشید که معمولاً در یک تکرار ما تمام مراحل تولید مثل تحلیل، طراحی، توسعه و ... رو داریم.
2️⃣ فیدبک مستمر مشتری و تیم تولید‌کننده: وقتی فرآیند به صورت تکرارشونده بره جلو در پایان هر تکرار فرصت داریم تا فیدبک خوبی از مشتری و حتی تیم تولید‌کننده راجع به خروجی بگیریم. این به تولید‌کننده و حتی مشتری کمک خیلی خوبی می‌کنه که نیازمندی‌هاش رو به درستی متوجه بشه و در مقابل به تیم توسعه هم انتقال بده.
3️⃣ شکست سریع (fast fail): در روشهای چابک اعتقاد زیادی به شکست سریع وجود داره. به عبارتی به جای اینکه که کلی برنامه‌ریزی و تفکر عمیق انجام بدیم که راه درست و نادرست رو تشخیص بدیم، فرآیندهای چابک ما رو تشویق می‌کنند که مقداری از مسیر رو بریم و اگه دیدیم جواب نمیده زود شکست بخوریم و مسیر رو اصلاح بکنیم. اغلب مواقع همین شکست‌ها هستند که حدود مساله و مسیر بهینه رو به ما نشون میدند.

موارد بیشتری هم از تکنیک‌های مشترک در روشهای اجایل میشه ذکر کرد ولی به نظر من این سه تکنیک مشترک خیلی موثر هستند که اساس همگی بر پایه برداشتن «گام‌های کوچک و تدریجی» و «داشتن فیدبک» هست.
3👍2
جنگولرن
poetry.pdf
amjadi_precommit.pdf
4.1 MB
مطلبی از لینکدین Mohammad Amin Amjadi در رابطه با pre-commit

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

اینجاست که pre-commit به دادمون میرسه. در این پست در ابتدا سعی می‌کنم برخی از نکات و مواردی که خودم در تیم‌ها سعی می‌کردم رعایت کنم رو مطرح کنم [امیدوارم خودشون مفید و آموزنده باشن] و در نهایت به نحوه ستاپ و نوشتن pre-commit می‌پردازم و اشاره‌ای به pre-push در یه مثال کاربردی و مورد نیاز و همین طور جاب qa می‌کنم.


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


#git #gtilab #pre_commit #pre_push #python #django
6👍1
تراکنش (Transaction) و ACID و درخواست‌های موازی

یکی از مفاهیم مهم #دیتابیس تراکنش‌ها یا همون Transactionها هستن. با کمک ACID بخصوص Atomicty و Isolation Level، ترنزکشن ها بهمون کمک میکنن چندین کوئری رو در قالب یک واحد به دیتابیس بدیم و به شکل موازی اجرا بشن تا در نهایت خروجی یکسان و Consistant داشته باشیم، بدون اینکه این وسط 100 هزار تومن پول یهو گم شه!
از کانال @MhrCode

https://youtu.be/lF8pheUpa6I
🔥3
قبل از مصاحبه Systems Design یاد بگیر: Eventual Consistency

فرض کنید یکی از آدمای معروف توی توییتر 10 میلیون فالوئر داشته باشه و بخواد همون که توییت زد، توییتش بره توی تایم لاین فالوئراش. اگه بخوایم این کارو همون موقع در لحظه انجام بدیم سیستممون crash میکنه یا اون آدم باید 10 دقیقه منتظر لودینگ ثبت توییت باشه! مفهوم Eventual Consistency یکی از مفاهیم مهم دنیای نرم افزار هست که توی مصاحبه های نرم افزاری زیاد در موردش سوال پرسیده میشه.

https://youtu.be/3j3g_mVGUc8
👍51
سلام. جنگولرن بیشتر چه مطالبی توی کانال بزاره؟
Anonymous Poll
16%
همین فرمون خوبه
56%
اختصاصی جنگو
18%
مهندسی نرم افزار
9%
سیستم دیزاین
👍9
ali_oauth2.pdf
644.1 KB
احراز هویت با oauth2 سرویس google در فریمورک جنگو
از علی بیگدلی

در پروژه های متفاوت بر حسب نیاز ممکن است بخواهید از مدل های مختلفی از پیاده سازی authentication و authorization استفاده نمایید که یکی از این روش ها استفاده از احراز با سرویس هایی همچون google و github و غیره است. اما معمولا دیده میشه به خاطر همچین ارتباط ساده ای دست به دامن ماژول های زیادی میشیم و به این نتیجه رسیدم که یکم این موضوع رو مختصر تر بهتون نشون بده.

در این اسلاید به نحوه پیاده سازی احراز هویت با استفاده از سرویس oauth2 google می پردازیم.
مسیر هایی که طی میشود:
- کلاس abstract برای پیاده سازی oauth2 سرویس دهنده ها
- ساخت google client مطابق با کلاس مادر
- اضافه کردن آدرس url مربوط به login و callback
- ساخت view ها برای ارسال درخواست به google و همچنین callback برای دریافت اطلاعات کاربری

برای استفاده از اسکریپت ها می تونین به لینک gist های من به آدرس زیر مراجعه کنین.

https://gist.github.com/AliBigdeli
👍161
Forwarded from Microfrontend.ir
در این ویدیو از پلی‌لیست نکته ها و ترفندهای پایتون به بررسی مدیریت پکیج‌های پایتون با استفاده از Poetry پرداختیم.
Poetry یک ابزار مدیریت وابستگی‌ها و پروژه‌های پایتون است که به شما کمک می‌کند تا به راحتی و به صورت مدرن با محیط توسعه وابسته‌های پروژه‌های خود را مدیریت کنید. این ابزار امکاناتی مانند مدیریت و نصب وابستگی‌ها، ساخت محیط‌های مجازی، مدیریت ورژن‌ها و ... را فراهم می‌کند.
در این ویدیو ابتدا برخی از مشکلات pip را بررسی و سپس Poetry را نصب و با آن یک پروژه ساختیم و در نهایت پروژه خودر PyPi منتشر کردیم

Link : https://youtu.be/UX5O7Z0aQb8

playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwZcy2wRRBNqXZP8wf--TmF


〰️〰️〰️〰️〰️〰️
© @microfrontend_ir
5👍1
معرفی چند ویرایشگر متن (rich-text editor) در جنگو
از لینکدین علی بیگدلی

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

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

از جمله ویرایشگر های جنگو میشه به این ها اشاره کرد، البته فقط محدود به این ها نیستن:

- django-ckeditor
- django-froala-editor
- django-summernote
- django-quill
- django-tinymce

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

انتخاب خودم:
من به شخصه بیشتر از ckeditor استفاده می کنم به خصوص اینکه پشتیبانی از آپلود فایل رو هم داره
انتخاب خودم (جنگولرن): django-tinymce
👍8
ویدئوی مصاحبه ام با علی بیگدلی پیرامون طراحی فروشگاه اینترنتی با جنگو
در مورد موضوعات زیر صحبت شد:
-ساختار اپ ها
-درگاه های پرداخت
-بکاپ
-اولویت های طراحی
-فیلدهای بیس محصول
و مسائل دیگه
لینک:
لینک مکتب خونه

قبل از همه اینها. عیدتون مبارک 🎉🎉🎉
23
Forwarded from Python BackendHub (Mani)
تو جنگو هیچوقت از .save() خالی استفاده نکنید موقعه آپدیت کردن. چون هرچی تو مموری باشه فلاش میکنه به دیتابیس. پس بهتره explicit باشین و بگین چی میخواین فرستاده شه سمت دیتابیس. یک مثال عینی میزنم که متوجه شین یعنی چی این جمله.

ببین فکر کن یک مدل داری با ۳ تا فیلد

MyModel
- id
- first_name
- last_name

که دو تای پایینی nullable هستن. رکورد ایدی اول تو دیتابیس هم first name اش null هست هم last name اش. من ۲ درخواست همزمان میدم. درخواست اول first name رو مانی میکنم. درخواست دوم last name رو مظفر.
اتفاقی که میفته اینه که اول از دیتابیس MyModel رو میخونه جفت درخواستا. برای جفتشون first_name=None و last_name=None هست. بعد هرکدومشون همچین query ای میزنن:

درخواست اول:

// model.first_name = "Mani"
// model.save()
UPDATE MyModel
SET first_name = 'Mani', last_name = NULL
WHERE MyModel.id = 1



درخواست دوم:

// model.last_name = "Mozaffar"
// model.save()
UPDATE MyModel
SET first_name = NULL, last_name = 'Mozaffar'
WHERE MyModel.id = 1


دیدی چی شد؟ جفتشون یک NULL هم فرستادن سمت دیتابیس. چرا؟ چون تو مموری یکی از نام و نام خانوادگی null بود و وقتی .save رو میزنی همونو میفرسته به دیتابیس.
بنابراین یا first name نال میمونه یا last name. در صورتی که درستش اینه:


// req 2
UPDATE MyModel
SET last_name = 'Mozaffar'
WHERE MyModel.id = 1

// req 1
UPDATE MyModel
SET first_name = 'Mani'
WHERE MyModel.id = 1


معادل orm اش چی میشه؟

# req 1
MyModel.object.filter(id=instance.id).update(last_name="Mani")

# req 2
MyModel.object.filter(id=instance.id).update(last_name="Mozaffar")

# OR...
mymodel.save(update_fields=['first_name'])


@PyBackendHub
👍197👏1
سوال: چرا توی جنگو به app ها نیاز داریم؟ یا چه مواقعی اپ بسازیم؟

✔️یه نفر توی forum جنگو سوالاتی در این زمینه پرسیده و developer ها که از سازنده های جنگو هم هستن جواب دادن

لینک:
https://forum.djangoproject.com/t/why-do-we-need-apps/827
👍41👎1
Media is too big
VIEW IN TELEGRAM
نکاتی در مورد سشن و سریالایز در جنگو

بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو. این قسمت در مورد موارد زیر صحبت شد:
✔️سبد خرید
✔️دکوریتور required_post
✔️سریالایز و دی سریالایز چیه؟
✔️فرمت json چیه؟
✔️نکاتی در مورد سریالایزر کردن آبجکت ها در جنگو
✔️مشکل امنیتی pickle در پایتون
و غیره

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

هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
👍5🔥2
چرا داکیومنت نویسی مهم می‌شه؟
از کانال @tobecomesoftwareengineer

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

نرم افزار هم همینه. سیستم نرم افزاری ما قسمت های مختلفی داره، مثل کلاسهای مختلف و این کلاسها با هم ارتباط دارن و دارن با هم یه کاریو انجام میدن.
حالا فرض کنید ما یه سیستم نسبتا بزرگی داریم که پیچیدگی های خاص خودشو داره و این سیستم رو خیلی سال پیش با زبانی مثل perl پیاده کردن و الان با توجه به این که سیستم ما یه سیستم legacy محسوب میشه می‌خوان اون رو به زبان سیشارپ یا پایتون، باز-مهندسی کنن (re engineering).

اگر نرم افزار قدیمی داکیومنت نشده باشه طبیعتا این کار محاله و با مشکلات خیلی خیلی زیادی ما رو مواجه میکنه‌.
وجود یه شخصی که متخصص داکیومنت سازی نرم افزاره در هر شرکتی لازمه. چون هر بار که نرم افزار اپدیت میشه باید داکیومنت هم اپدیت شه.
داکیومنت نویسی طبیعتا در سطوح مختلفی از abstraction انجام میشه اما خب اون داکیومنت نویسی معتبره که خیلی concerete باشه یعنی ریز به ریز سیستم رو با جزئیات داکیومنت کرده باشه که صد البته یه تیم باید این کارو انجام بده چه از ابزار استفاده کنه و چه به شکل دستی کار رو تموم کنه.
معمولا با دونستن زبان UML و BPMN این کار شدنیه.
این دیاگرام ها در هنگام باز-مهندسی کردن سیستم قدیمی به شکل مهندسی-معکوس مورد استفاده قرار میگیرن و با ابزارهای تولید کد، کد نهایی رو تولید میکنن که با صرفه جویی زیادی در وقت و هزینه به تیم نرم افزاری کمک میکنن.
👍9
Forwarded from Python BackendHub
سلام!

مانی هستم, فاندر دو تا استارت آپ, از سال 2020 برنامه نویسی میکنم, از همون روز اول, از اولین تابعی که نوشتم برای پروژه استارت آپم بوده تا 2023. اواسط سال 2023 تصمیم گرفتم که کار شرکتی انجام بدم, برای همین الان تحت پوزیشن software engineer مشغول هستم.


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

تجربه پایتون خیلی زیادی ندارم, شاید خیلیا تجربه پایتونشون بیشتر باشه, اما تصمیم گرفتم همین تجارب کمم رو هم به اشتراک بذارم, امیدوارم مطالب کانال براتون مفید باشه و سمی نباشه 😅 کنار پایتون به web scraping و تست نویسی و اصول توسعه نرم افزار و بقیه بحث ها هم میپردازم, پس کانال فقط مربوط به پایتون نخواهد بود.

یوتیوب من:
https://www.youtube.com/@GitOverHere

لینکدین من:
https://www.linkedin.com/in/manimozaffar/

گیت هاب من:
https://github.com/manimozaffar


@ManifoldsPython
6👍4
Python BackendHub
سلام! مانی هستم, فاندر دو تا استارت آپ, از سال 2020 برنامه نویسی میکنم, از همون روز اول, از اولین تابعی که نوشتم برای پروژه استارت آپم بوده تا 2023. اواسط سال 2023 تصمیم گرفتم که کار شرکتی انجام بدم, برای همین الان تحت پوزیشن software engineer مشغول هستم.…
رمز موفقیت مانی رو ازش پرسیدم:
بازم تشکر از مانی

سوالات من:
1.توی این مدت چند زبان برنامه نویسی کار کردی؟
2.بیشتر تمرکزت روی چی بوده؟
3.آیا بهتره تمرکز کنیم روی یه زبان / استک / تکنولوژی؟

پاسخ های مانی:
صرفا زیاد تمرین میکنم و سعی میکنم بروز باشم و مباحث جدید رو سریع یاد بگیرم.
۱. تخصصی فقط پایتون. ts و راست هم یک سرکی زدم. البته تو پروژه هام استفاده نکردم. صرفا تمرین طوری بود جفتشون.
۲. بک اند و مهندسی نرم افزار. تمرکزم رو این بوده که بفهمم دارم چیکار میکنم همین. مثلا سلری استفاده میکنم چه اتفاقی میفته. یا kafka چطوری کار میکنه. پارتیشن هاش چین. چطوری scale میشه. چطوری rebalance میشه . چطوری مسیج رو produceمیکنه و لاگش چیه و ... . همین سوالات راجب دیتابیس و پایتون و ... . کلا هرچیزی باهاش سروکار دارم سعی میکنم درکش کنم تا یک لایه ای که چطور کار میکنه.
۳. بستگی داره. بنظرم به محیط کار کاملا بستگی داره. هرچی تو محیط کار داره استفاده میشه طبیعیه ادم بخواد دیپ تر شه توش. میخواد بروکر kafka یا rabbitmq باشه. میخواد کلاد باشه (aws/gcp/...) یا هر استکی. چون بهترین موقعیته برای دیپ شدن تو اون بحث. چون میتونی راحت تمرینم کنی و مشارکت کنی و از دانشت استفاده واقعی ببری و چالش های واقعی رو باهاش حل کنی.
👍197
Forwarded from Python Hints
من محمد عباسی (@abbasi_ai)

یک توسعه دهنده پایتون هستم با بیش از ۸ سال تجربه کار با پایتون (البته زمانی که دارم این پست رو می‌نویسم و باقی موارد تجربیاتم هم برای این کانال اهمیتی نداره)

سعی می‌کنم نکاتی که فکر می‌کنم مهم هست تغییراتی که توی نسخه‌های اخیر (از پایتون ۳.۴ به بعد وارد شده و اهمیت بالایی داره و ... رو صحبت کنم)

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

ازین به بعد قرار هست اینجا در مورد core python صحبت کنم تا اینطوری بتونم به دوستانم هم کمک کنم و نیازی هم به تکرار‌های مجدد نباشه.

هیچکدوم از موارد رو از خودم نمی‌گم (مگر با #نظر_شخصی علامت گذاری بشه) منابع همه صحبت‌ها داکیومنت‌ اصلی پایتون و کتاب‌های معروف پایتونی هست.

LinkedIn Profile

@pyHints
👍9👎2🥱21
Forwarded from CodeCrafters (Behzad Azadi)
چرا جنگو‌ فریمورک محبوبی هست؟؟؟

بیاید یکم راجبش حرف بزنیم

جنگو‌ خیلی از موارد برنامه نویسی مدرن رو براتون فراهم میکنه بدون اینکه خودتون راجبش حتی دانش کافی داشته باشید و بدونید، که میتونیم به design patterns و clean architecture اشاره کرد

بارها به بچه‌ها گوشزد کردم که business logic رو فراموش نکنید و جدی بگیرید ،کار سختی نیست یک فایل با نام services.py بسازید و موارد مربوط به orm رو داخلش بنویسید (یک دایرکتوری با نام services بسازید و ماژول‌های پایتونی خودتون رو داخلش بزارید) حالا کافیه با dependency inversion principle رو بدونید و داخل کدهاتون رعایت کنید

خب چه اتفاقی افتاد؟؟؟
الان شما اومدین و app رو به سه لایه تقسیم کردید لایه application ، لایه service ، لایه infrastructure , خب این چه مزیتی داره برامون

بیایم ببینیم هر لایه شامل چه چیزی میشه؟؟؟
Application: urls, views
درخواست‌های مشتری در این قسمت مورد پردازش قرار میگیره که داده‌های مورد نیاز رو از لایه service میگیره و اون رو تبدیل میکنه به مقداری که قابل خوندن واسه مشتری هست که میتونه http, drf, grpc و ... باشه


Service:
این لایه همون مبحث business logic رو ارائه میده و تمام موارد مورد نیاز رو در خودش هندل میکنه(وظیفه ذخیره و بازیابی موجودیت‌هارو برامون هندل میکنه) اینجا orm django کار میکنه لایه انتزاع از دیتابیس رو میسازه و بواسطه شی گرایی مارو از پیچیدگی کار رها میکنه

Infrastructure: migrations , models
تو این قسمت شما موجودیت‌ها و مجموعه‌ها رو در یک سیستم ذخیره ساز، ذخیره میکنید ،اینکار با استفاده از مدل‌های جنگو و queries صورت میگیره ، بخش مایگریشن‌ها هم اینجا صورت میگیره
من این همه سردرد رو واسه چی دارم تحمل میکنم خدایی؟؟؟

شما دارید ذره ذره به سمت bounded context ها میرید

خب اینکه گفتیم به چه معناست اصلا؟؟
نکته: ما همیشه میگیم تسک بزرگ رو به چند تسک کوچیکتر بشکنید (بصورت منطقی البته) یک کلاس بزرگ ننویسید یک تابع طولانی نسازید

ما اینهارو‌ رعایت کردیم به کجا داریم میرسیم؟؟؟
جالبه بدونید که داریم به سبک معماری DDD نزدیک میشیم

بیایید ادامه بدیم
خب اصل SoC میاد وسط(پروژه میتونه به بخش‌های کوچکتر و قابل مدیریت تر تقسیم بشه، اجزا میتونه میکروسرویس یا ماژولهای مستقل در یک مونولیت باشند)
همین ترکیب بالا رو بزاریم داخل microservice ، پروژه خودمون رو به چند سرویس منطقی و درست تقسیم کنیم، مدلهای هر سرویس رو داخل یک دیتابیس جدا بزاریم ، FKهای مدل رو به Bigint تبدیل کنیم ارتباط‌ بین سرویس‌ها رو مدیریت و هندل کنیم (اینجا rabbitmq سلام میرسونه) الزامات سرویس‌های بیس رو انجام بدیم (این شد bounded context)

چه اتفاقی داره میافته ؟؟؟
هر بخش داره بصورت مستقل توسعه داده میشه 

نگرانی حاصل از پیچیدگی داره رفع میشه

بهبود توسعه کد و پایداری داره بخوبی اتفاق میافته

پایگاه داده از شکستن داره خارج میشه
به معماری DDD خوش آمدید
این معماری برای پروژه‌های بزرگ مناسبه و اگر یک پروژه قدیمی با حداقل 20 app دارید لازم نیست تعطیلش کنید فقط کافیه با DDD تبدیلش کنید
یک معماری میکروسرویس پیاده سازی کنید

که شامل چند سرویس میشه

هر سرویس در دل خودش چندتا app داره

هر app طبق DDD به سه لایه application , services , infrastructure تقسیم میشه و دیتابیس خودش رو داره

خود جنگو براتون clean architecture رو تا سطح بالایی براتون اتخاذ میکنه

در کدهاتون dependency inversion principle رو رعایت کنید





@code_crafters
👍132🔥1
Forwarded from TorhamDev | تورهام 😳 (TORI 💵)
چقدر باحال. mysql تعداد اتفاق افتادن ارورهاش از زمان استارت شدنش ذخیره میکنه. خیلی باحال به درد مانیتورینگ میخوره
داخل تیبیل
performance_schema.events_errors_summary_global_by_error
نگاه کنید.
👍2
Media is too big
VIEW IN TELEGRAM
تلک القضیة - حمایت از مردم فلسطین
👎72👍5525🤮17👏5
Media is too big
VIEW IN TELEGRAM
🔸 فصل : سوّم
🔸 جلسه : چهارم
🔸 عنوان دوره : صفر تا قهرمانیِ پایتون 
🔸 عنوان جلسه : مفهوم iterable در پایتون

👨‍💻👩‍💻 وبسایت : izlearn.ir
4👍3
2025/07/13 03:35:14
Back to Top
HTML Embed Code: