Forwarded from CodeCrafters (Behzad Azadi)
طراحی میکروسرویس با جنگو بخش دوم میکروسرویس چیست
میکروسرویس ها روندهای جدید توسعه هستند. امروزه شرکت ها معماری میکروسرویس را برای توسعه پروژه ترجیح می دهند. این یک راه حل بسیار فشرده برای یک پروژه است. مدیریت ماژول را آسان می کند و اجرای پروژه را سریعتر می کند. همچنین به توسعه سریعتر پروژه کمک می کند. این دلایل ذکر شده و بسیاری موارد دیگر باعث تقاضای میکروسرویس می شود.
معرفی میکروسرویس
برای میکروسرویس تعریف خاصی وجود ندارد و ممکن هست هر فرد به شکلی آنرا تعریف کند اما دو تعریف عمده آن به شکل زیر است
۱-میکروسرویسها، سرویسهای کوچک و مستقلی هستند که باهم کار میکنند
۲-میکروسرویسها معماری سرویس گرا با زمینههای محدود هستند،بطور مستقل و با یک جزء دیگر در داخل ارتباط برقرار میکنند، این معماری بسیار خودکار و و سیستمهای نرم افزاری را تکامل میدهد
بیایید ببینیم که آیا از معماری سرویس گرا (SOA) آگاه هستید یا خیر، سپس ماژولار بودن پروژه و ارتباط از طریق پیام را نیز می دانید. اگر از شیوه های DevOps آگاه هستید، در مورد استقرار خودکار نیز می دانید. هر دو بیشتر به رویکرد میکروسرویس نزدیک هستند.
سه اصل مهم در طراحی میکروسرویسها:
۱-از میکروسرویس برای استقرار سیستمها و پروژههای بزرگ استفاده کنید: برای تمام مقیاسهای پروژه استفاده از میکروسرویس اشتباه است، بلکه مناسب پروژههای بزرگ است که مدیریت آن چالش برانگیز باشد، اما خود این موضوع هم سردرگم کننده هستش اینکه کدوم پروژه رو کوچیک، متوسط، بزرگ بنامیم، منتها اگر سیستم ما دارای بار بالایی از درخواست کاربر است و نیاز به مقیاس پذیری دارد، میتوانیم رویکرد میکروسرویس رو پیاده سازی کنیم(در حجم تعداد اپ نیز تعداد اپ بالا میتواند به این منزله باشد)
۲-این رویکرد هدفمحور است: مهم نیست که وقتی با مشکل مواجه میشویم، باید از رویکرد میکروسرویس پیروی کنیم. امروزه بسیاری از متخصصان برای توسعه پروژه به این رویکرد اشاره می کنند زیرا هدف آنها تنها ارائه راه حل مشکلات نیست، همچنین برای دید بیشتر و حفظ سهولت در ماژول ها، چنین معماری را در عمل به کار می گیرند.
۳-قابلیت تعویض ماژول ها: در پروژه های توسعه یافته قبلی که با رویکرد میکروسرویس ساخته نشده اند، امکان تغییر هر جزء از پروژه کمتر است. قبل از تغییر سازنده کامپوننت باید در مورد تغییرات برنامه ریزی کند، وابستگی کد خاصی را پیدا کند، در صورت عدم موفقیت کد به هر دلیلی، مراحل بازگشت را فهرست کند و تاثیر کد را مشخص کند. پس از همه، تغییرات نیاز به انجام عملیات تست واحد و سپس آزمایش ادغام با کل محصول دارند
در برخی سناریوها، پروژه ها بسیار پیچیده هستند یا وابستگیهای حیاتی شدیدی دارند، در چنین شرایطی در مورد مسائل آینده یا افزایش حجم بار، ما مجبوریم به جای تغییر، اجزا را حفظ کنیم، که این بزرگترین ضرر یک رویکرد است
در میکروسرویس ها، کل پروژه را بر اساس ماژول ها به یک جزءهای کوچک تقسیم می کنیم. بطوری که امکان تکرارپذیری را بر روی هر جزء فراهم می کند که تعمیر و نگهداری پروژه رو راحتتر میکند
اپلیکیشنهای میکروسرویس دارای بخشهای مهم زیر هستند:
● به اندازه های کوچک تقسیم می شوند
● برای برقراری ارتباط نیازمند انتقال پیام هستند
● مقید به زمینهها هستند
● توسعه انها بصورت مستقل هستش
● استقرار هر بخش مستقل هست
● متصل به کنترل کننده مرکزی نیستند
● ساخت ها توسط فرآیندهای خودکار مستقر می شوند
به شکل آرمان گرایانه به میکروسرویسها نگاه نکنید و با این تصور که در دنیای واقعی قابل پیاده سازی نیست، اگر تصور میکنید که میکروسرویسها توسط بانکها، سیستمهای بیمارستانی و هتلی پیاده سازی میشه سخت در اشتباه هستید هیچکدام از میکروسرویس استفاده نمیکنند بلکه بیشتر توسط شرکتهای فعال در حوزه محتوای جریانی(stream content) مورد استفاده قرار میگیرد، استفاده و پیاده سازی میکروسرویس یک انتخاب فردی هست و محدود به دامنهای نیست، اما هدف از آن دو مورد تمرکززدایی و استقلال میباشد
تمرکززدایی:به این معنی است کل کارهای داخلی پروژه شامل اجرای هر ماژول، مدیریت وظایف و جابجایی کامل پروژه دیگر توسط یک سیستم واحد، مدیریت و کنترل نمیشود
استقلال: به این معنی است که به تیمهای توسعه خود برای تولید نرم افزار ایمان داشته باشیم
مزیت این دو رویکرد این است که تغییرات در نرم افزار آسانتر و سریعتر میشود و امکان تصمیم گیری سریعتر را فراهم میکند
ادامه در وبسایت
لینک وبسایت
چندتا نکته بگم
بخش دوم و سوم کتاب بشدت پربار و پر از تحربههایی هست که در دنیای واقعی با اون سروکار داریم و درکی از مسائل برامون مشخص نبود، من سعی کردم در حد توان بخشهای مهم رو برسونم
#microservice
#django
@code_crafters
میکروسرویس ها روندهای جدید توسعه هستند. امروزه شرکت ها معماری میکروسرویس را برای توسعه پروژه ترجیح می دهند. این یک راه حل بسیار فشرده برای یک پروژه است. مدیریت ماژول را آسان می کند و اجرای پروژه را سریعتر می کند. همچنین به توسعه سریعتر پروژه کمک می کند. این دلایل ذکر شده و بسیاری موارد دیگر باعث تقاضای میکروسرویس می شود.
معرفی میکروسرویس
برای میکروسرویس تعریف خاصی وجود ندارد و ممکن هست هر فرد به شکلی آنرا تعریف کند اما دو تعریف عمده آن به شکل زیر است
۱-میکروسرویسها، سرویسهای کوچک و مستقلی هستند که باهم کار میکنند
۲-میکروسرویسها معماری سرویس گرا با زمینههای محدود هستند،بطور مستقل و با یک جزء دیگر در داخل ارتباط برقرار میکنند، این معماری بسیار خودکار و و سیستمهای نرم افزاری را تکامل میدهد
بیایید ببینیم که آیا از معماری سرویس گرا (SOA) آگاه هستید یا خیر، سپس ماژولار بودن پروژه و ارتباط از طریق پیام را نیز می دانید. اگر از شیوه های DevOps آگاه هستید، در مورد استقرار خودکار نیز می دانید. هر دو بیشتر به رویکرد میکروسرویس نزدیک هستند.
سه اصل مهم در طراحی میکروسرویسها:
۱-از میکروسرویس برای استقرار سیستمها و پروژههای بزرگ استفاده کنید: برای تمام مقیاسهای پروژه استفاده از میکروسرویس اشتباه است، بلکه مناسب پروژههای بزرگ است که مدیریت آن چالش برانگیز باشد، اما خود این موضوع هم سردرگم کننده هستش اینکه کدوم پروژه رو کوچیک، متوسط، بزرگ بنامیم، منتها اگر سیستم ما دارای بار بالایی از درخواست کاربر است و نیاز به مقیاس پذیری دارد، میتوانیم رویکرد میکروسرویس رو پیاده سازی کنیم(در حجم تعداد اپ نیز تعداد اپ بالا میتواند به این منزله باشد)
۲-این رویکرد هدفمحور است: مهم نیست که وقتی با مشکل مواجه میشویم، باید از رویکرد میکروسرویس پیروی کنیم. امروزه بسیاری از متخصصان برای توسعه پروژه به این رویکرد اشاره می کنند زیرا هدف آنها تنها ارائه راه حل مشکلات نیست، همچنین برای دید بیشتر و حفظ سهولت در ماژول ها، چنین معماری را در عمل به کار می گیرند.
۳-قابلیت تعویض ماژول ها: در پروژه های توسعه یافته قبلی که با رویکرد میکروسرویس ساخته نشده اند، امکان تغییر هر جزء از پروژه کمتر است. قبل از تغییر سازنده کامپوننت باید در مورد تغییرات برنامه ریزی کند، وابستگی کد خاصی را پیدا کند، در صورت عدم موفقیت کد به هر دلیلی، مراحل بازگشت را فهرست کند و تاثیر کد را مشخص کند. پس از همه، تغییرات نیاز به انجام عملیات تست واحد و سپس آزمایش ادغام با کل محصول دارند
در برخی سناریوها، پروژه ها بسیار پیچیده هستند یا وابستگیهای حیاتی شدیدی دارند، در چنین شرایطی در مورد مسائل آینده یا افزایش حجم بار، ما مجبوریم به جای تغییر، اجزا را حفظ کنیم، که این بزرگترین ضرر یک رویکرد است
در میکروسرویس ها، کل پروژه را بر اساس ماژول ها به یک جزءهای کوچک تقسیم می کنیم. بطوری که امکان تکرارپذیری را بر روی هر جزء فراهم می کند که تعمیر و نگهداری پروژه رو راحتتر میکند
اپلیکیشنهای میکروسرویس دارای بخشهای مهم زیر هستند:
● به اندازه های کوچک تقسیم می شوند
● برای برقراری ارتباط نیازمند انتقال پیام هستند
● مقید به زمینهها هستند
● توسعه انها بصورت مستقل هستش
● استقرار هر بخش مستقل هست
● متصل به کنترل کننده مرکزی نیستند
● ساخت ها توسط فرآیندهای خودکار مستقر می شوند
به شکل آرمان گرایانه به میکروسرویسها نگاه نکنید و با این تصور که در دنیای واقعی قابل پیاده سازی نیست، اگر تصور میکنید که میکروسرویسها توسط بانکها، سیستمهای بیمارستانی و هتلی پیاده سازی میشه سخت در اشتباه هستید هیچکدام از میکروسرویس استفاده نمیکنند بلکه بیشتر توسط شرکتهای فعال در حوزه محتوای جریانی(stream content) مورد استفاده قرار میگیرد، استفاده و پیاده سازی میکروسرویس یک انتخاب فردی هست و محدود به دامنهای نیست، اما هدف از آن دو مورد تمرکززدایی و استقلال میباشد
تمرکززدایی:به این معنی است کل کارهای داخلی پروژه شامل اجرای هر ماژول، مدیریت وظایف و جابجایی کامل پروژه دیگر توسط یک سیستم واحد، مدیریت و کنترل نمیشود
استقلال: به این معنی است که به تیمهای توسعه خود برای تولید نرم افزار ایمان داشته باشیم
مزیت این دو رویکرد این است که تغییرات در نرم افزار آسانتر و سریعتر میشود و امکان تصمیم گیری سریعتر را فراهم میکند
ادامه در وبسایت
لینک وبسایت
چندتا نکته بگم
بخش دوم و سوم کتاب بشدت پربار و پر از تحربههایی هست که در دنیای واقعی با اون سروکار داریم و درکی از مسائل برامون مشخص نبود، من سعی کردم در حد توان بخشهای مهم رو برسونم
#microservice
#django
@code_crafters
👍1
جنگولرن
سری مهندسی نرمافزار: پست 9 از لینکدین Saeed Shahrivari Joghan اسکرام: قدیمی، سبک، پر حاشیه در پستهای قبلی خدمتتون عرض کردم روشهای چابک معمولاً با استفاده از فرآیند توسعه تکرارشونده و افزایشی با چاشنی فیدبک مستمر سعی در هضم تغییرات دارند و با استفاده از…
سری مهندسی نرمافزار: پست 10
از لینکدین Saeed Shahrivari Joghan
اسکرام چکش طلایی نیست!
در پست قبلی اجمالاً راجع به چارچوب بودن اسکرام صحبت کردم. مجدداً تاکید میکنم که من طرفدار اسکرام نیستم ولی شدیداً با روال توسعه بیبرنامه و یلخی هم مشکل دارم. من اخیراً تیمهای زیادی رو دیدم که با توسل به حربه «ما داریم کنبان کار میکنیم» بدون داشتن فرآیند تکرارشونده حرکت میکنند و متاسفانه حتی قوانین پایه کنبان مثل «تعیین WIP» رو هم اجرا نمیکنند و یا در برخی موارد من زیاد دیدم که مدیر تیم بدون برگزاری حتی یک جلسه گروهی در ماه صرفا به صورت هفته به هفته و با استفاده از یک دفترچه و جلسات یک به یک به اعضای تیم وظایف هفتگی میده. اغلب مخالفین سرسخت اسکرامی که من تا به حال دیدم خودشون یکبار به صورت عمیق راجع بهش مطالعه نکردنند و یا در برخی موارد حوصله روال و قانون رو ندارند. بدیهیه که برای هر پروژهای اسکرام و حتی اجایل ممکنه مناسب نباشه و خیلی جاها همون تکنیک «مدیر + دفترچه یادداشت + جلسات تک به تک» ممکنه کار کنه ولی من مطابق تجربه خودم در بازار طی سالهای اخیر به این رسیدم که روشهای چابک در خیلی از پروژهها کار میکنند فقط باید از روش چابک مناسب، در جای مناسب، و با تیلورینگ/کاستومایزیشن مناسب استفاده کرد (بازم تاکید میکنم که تیلورینگ به معنی تغییرات اساسی در چارچوب نیست بلکه به معنی انطباق روش با شرایطه). معمولاً در سازمانهای بالای ۱۰۰ نفر، استفاده از مشاوره و یا همکاری یک فرد مسلط و با تجربه در زمینه چابکی میتونه خیلی کمککننده باشه.
واقعیت تلخ و شاید شیرین اینه که اسکرام برای هر پروژهای مناسب نیست! اسکرام معمولاً برای پروژههای با پیچیدگی بیزینسی بالا که نیاز به انعطاف بالایی در اجرا دارند مناسبه. برای چند نمونه از جاهایی که استفاده از اسکرام فایدهی زیادی نداره میشه به این موارد اشاره کرد:
◀️ پروژههای کوتاه مثلاً در حد یکی دو ماه
◀️ پروژههای که تیمهای خیلی بزرگ و پراکنده از نظر جغرافیایی دارند. در این موارد شاید استفاده از چارچوبهای مثل SAFe بهتر باشه
◀️ تیمهایی که بیشتر درگیر نگهداشت محصول هستند و بیشتر تیکت حل میکنند مثلاً تیمهای DevOps و SRE (البته نه همیشه)
◀️ تیمهایی که کراس-فانکشنال نیستند مثلاً یه تیم UX و یا DevOps مستقل (بازم نه همیشه)
◀️ پروژههایی که کل مسیر و گانت از اول تا آخر واضح و مشخصه و تغییری هم توش نخواهد بود
◀️ پروژههای خیلی خیلی تکنیکال مثلاً طراحی و توسعه یه هسته جدید برای یک سیستمعامل نهفته
◀️ تیمهایی که اصلاً به اسکرام و حتی در مرتبه بالاتر به چابکی اعتقادی ندارند
در پایان این نکته رو مرور کنیم که روشهای متنوع چابک وجود دارند که اسکرام یکی از اونهاست و اسکرام قرار نیست همه جا کار کنه اما چابکی به معنی بیبرنامگی نیست. در پست بعدی مفصلاً راجع به کاستومایز کردن صحبت میکنم.
از لینکدین Saeed Shahrivari Joghan
اسکرام چکش طلایی نیست!
در پست قبلی اجمالاً راجع به چارچوب بودن اسکرام صحبت کردم. مجدداً تاکید میکنم که من طرفدار اسکرام نیستم ولی شدیداً با روال توسعه بیبرنامه و یلخی هم مشکل دارم. من اخیراً تیمهای زیادی رو دیدم که با توسل به حربه «ما داریم کنبان کار میکنیم» بدون داشتن فرآیند تکرارشونده حرکت میکنند و متاسفانه حتی قوانین پایه کنبان مثل «تعیین WIP» رو هم اجرا نمیکنند و یا در برخی موارد من زیاد دیدم که مدیر تیم بدون برگزاری حتی یک جلسه گروهی در ماه صرفا به صورت هفته به هفته و با استفاده از یک دفترچه و جلسات یک به یک به اعضای تیم وظایف هفتگی میده. اغلب مخالفین سرسخت اسکرامی که من تا به حال دیدم خودشون یکبار به صورت عمیق راجع بهش مطالعه نکردنند و یا در برخی موارد حوصله روال و قانون رو ندارند. بدیهیه که برای هر پروژهای اسکرام و حتی اجایل ممکنه مناسب نباشه و خیلی جاها همون تکنیک «مدیر + دفترچه یادداشت + جلسات تک به تک» ممکنه کار کنه ولی من مطابق تجربه خودم در بازار طی سالهای اخیر به این رسیدم که روشهای چابک در خیلی از پروژهها کار میکنند فقط باید از روش چابک مناسب، در جای مناسب، و با تیلورینگ/کاستومایزیشن مناسب استفاده کرد (بازم تاکید میکنم که تیلورینگ به معنی تغییرات اساسی در چارچوب نیست بلکه به معنی انطباق روش با شرایطه). معمولاً در سازمانهای بالای ۱۰۰ نفر، استفاده از مشاوره و یا همکاری یک فرد مسلط و با تجربه در زمینه چابکی میتونه خیلی کمککننده باشه.
واقعیت تلخ و شاید شیرین اینه که اسکرام برای هر پروژهای مناسب نیست! اسکرام معمولاً برای پروژههای با پیچیدگی بیزینسی بالا که نیاز به انعطاف بالایی در اجرا دارند مناسبه. برای چند نمونه از جاهایی که استفاده از اسکرام فایدهی زیادی نداره میشه به این موارد اشاره کرد:
◀️ پروژههای کوتاه مثلاً در حد یکی دو ماه
◀️ پروژههای که تیمهای خیلی بزرگ و پراکنده از نظر جغرافیایی دارند. در این موارد شاید استفاده از چارچوبهای مثل SAFe بهتر باشه
◀️ تیمهایی که بیشتر درگیر نگهداشت محصول هستند و بیشتر تیکت حل میکنند مثلاً تیمهای DevOps و SRE (البته نه همیشه)
◀️ تیمهایی که کراس-فانکشنال نیستند مثلاً یه تیم UX و یا DevOps مستقل (بازم نه همیشه)
◀️ پروژههایی که کل مسیر و گانت از اول تا آخر واضح و مشخصه و تغییری هم توش نخواهد بود
◀️ پروژههای خیلی خیلی تکنیکال مثلاً طراحی و توسعه یه هسته جدید برای یک سیستمعامل نهفته
◀️ تیمهایی که اصلاً به اسکرام و حتی در مرتبه بالاتر به چابکی اعتقادی ندارند
در پایان این نکته رو مرور کنیم که روشهای متنوع چابک وجود دارند که اسکرام یکی از اونهاست و اسکرام قرار نیست همه جا کار کنه اما چابکی به معنی بیبرنامگی نیست. در پست بعدی مفصلاً راجع به کاستومایز کردن صحبت میکنم.
👍1
Forwarded from محمد خشنوا / برنامه نویسی (SeYeD.Dev)
امشب اولین جلسه دوره هستش 😍 💖 💜
دیسکورد رو نصب کنید و توی سرور برگزاری دوره عضو بشید، لینک عضویت :
https://discord.gg/seyedbax
آموزش نصب دیسکورد
https://www.tgoop.com/SEYED_BAX/6716
امشب ساعت ۹ روی این Live که توی تصویر مشخص کردم کلیک کنید تا وارد کلاس بشید
یک vpn خوب حتما دم دست داشته باشید، شاید لازمتون شد. البته اگر بدون vpn وصل شدید و صدا و تصویر رو داشتید به گیرنده هاتون دست نزنید (متسوریفای میتونه گزینه خوبی باشه)
شب میبینمتون عشقا🥳
✅ @SEYED_BAX
دیسکورد رو نصب کنید و توی سرور برگزاری دوره عضو بشید، لینک عضویت :
https://discord.gg/seyedbax
آموزش نصب دیسکورد
https://www.tgoop.com/SEYED_BAX/6716
امشب ساعت ۹ روی این Live که توی تصویر مشخص کردم کلیک کنید تا وارد کلاس بشید
یک vpn خوب حتما دم دست داشته باشید، شاید لازمتون شد. البته اگر بدون vpn وصل شدید و صدا و تصویر رو داشتید به گیرنده هاتون دست نزنید (متسوریفای میتونه گزینه خوبی باشه)
شب میبینمتون عشقا
Please open Telegram to view this post
VIEW IN TELEGRAM
محمد خشنوا / برنامه نویسی
امشب اولین جلسه دوره هستش 😍 💖 💜 دیسکورد رو نصب کنید و توی سرور برگزاری دوره عضو بشید، لینک عضویت : https://discord.gg/seyedbax آموزش نصب دیسکورد https://www.tgoop.com/SEYED_BAX/6716 امشب ساعت ۹ روی این Live که توی تصویر مشخص کردم کلیک کنید تا وارد کلاس بشید یک…
✅دوره رایگان آموزش برنامه نویسی توسط سید و رفقا (کانال @SEYED_BAX)
✔️قطعا مطالب مفیدی توی این دوره رایگان میتونید یاد بگیرید.
امشب (شنبه 25 فروردین 1403) اولین جلسه است.
من سید (@seyed_dev) رو میشناسم و میدونم دانش خوبی توی برنامه نویسی (بخصوص پایتون) و دیتابیس های no sql و داکر و... داره. ازش یاد بگیرید/بگیریم
✔️قطعا مطالب مفیدی توی این دوره رایگان میتونید یاد بگیرید.
امشب (شنبه 25 فروردین 1403) اولین جلسه است.
من سید (@seyed_dev) رو میشناسم و میدونم دانش خوبی توی برنامه نویسی (بخصوص پایتون) و دیتابیس های no sql و داکر و... داره. ازش یاد بگیرید/بگیریم
👍12👎4
✅معرفی پکیج Django-Hijack
بدون اینکه رمز کاربرهای سایت تون رو بدونید وارد اکانت شون بشید 😬
من نمیدونم کجا میتونه کاربرد مفیدی داشته باشه
https://github.com/django-hijack/django-hijack
بدون اینکه رمز کاربرهای سایت تون رو بدونید وارد اکانت شون بشید 😬
من نمیدونم کجا میتونه کاربرد مفیدی داشته باشه
https://github.com/django-hijack/django-hijack
🔥3🥱2👍1
Link4Help
کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی، این آموزش را از سایت دانشجویار تهیه کنید. در این دوره با موارد زیر آشنا می شویم: - آشنایی با توکن CSRF - شخصی سازی فیلدها با widget ها - آشنایی با متد is_valid و دیکشنری cleaned_data - استفاده از…
✅کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی
عجب اعتماد به نفسی داشتم 4 سال پیش 😂
یاد نموداره افتادم
دوره کار بر فرم ها در جنگو رو برای دانشجویار حدودا 4 سال پیش ساختم. امروز یه نگاهی بهش انداختم.
آموزش بدی نیست. فقط موندم چرا توی دمو اینقدر رسمی حرف زدم.
✔️این دوره رایگان نیست
عجب اعتماد به نفسی داشتم 4 سال پیش 😂
یاد نموداره افتادم
دوره کار بر فرم ها در جنگو رو برای دانشجویار حدودا 4 سال پیش ساختم. امروز یه نگاهی بهش انداختم.
آموزش بدی نیست. فقط موندم چرا توی دمو اینقدر رسمی حرف زدم.
✔️این دوره رایگان نیست
😁12
This media is not supported in your browser
VIEW IN TELEGRAM
✅نکته مهم
یادگیری بدون تمرین به درد نمیخوره
✔️هفته ای 8 تا دوره و کتاب ببینی و بخونی. وقتی تمرین نکنی، هیچی نمیشی 😂
انگار جنگولرن داره از جنگو فاصله میگیره 😡🤬
یادگیری بدون تمرین به درد نمیخوره
✔️هفته ای 8 تا دوره و کتاب ببینی و بخونی. وقتی تمرین نکنی، هیچی نمیشی 😂
انگار جنگولرن داره از جنگو فاصله میگیره 😡🤬
👍11
Forwarded from محمد خشنوا / برنامه نویسی (SeYeD.Dev)
اگر نمیدونید یک کامند دقیقا چیکار میکنه دقیقا ، میتونید توی این سایت واردش کنید و توضیح برای هر قسمتش دریافت کنید
explainshell.com
✅ @SEYED_BAX
explainshell.com
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Forwarded from CodeCrafters (Mojtaba)
انتخاب محل ذخیره سازی تصاویر: فایل سیستم یا پایگاه داده؟
تصمیم گیری در مورد بهترین راه برای ذخیره سازی تصاویر بین Blob (Binary Large Object)در پایگاه داده و فایل سیستم (مانند S3) همیشه بحث برانگیز بوده.
پایگاه داده یا فایل سیستم؟ کدوم بهتره؟
اول از همه، بریم سراغ مزایای هر کدوم:
پایگاه داده:
اطمینان و یکپارچگی: پایگاه داده ها از قوانین ACID (اتمی بودن، سازگاری، انزوا، دوام) پیروی می کنن. یعنی داده ها همیشه کامل، درست و هماهنگ باقی می مونن. این به این معنیه که حتی اگه یه فایل از روی فایل سیستم پاک بشه، اطلاعات اون تو پایگاه داده محفوظه.
بکاپ گیری راحت: چون همه اطلاعات یکجا هستن، گرفتن بکاپ از پایگاه داده خیلی آسون تره.
جستجوی سریع: با زیاد شدن تعداد تصاویر، پایگاه داده ها نسبت به جستجو تو فایل سیستم سریع تر عمل می کنن.
حذف و آپدیت ساده تر: حذف و آپدیت فایل ها تو پایگاه داده خیلی راحت تره. دیگه نیازی نیست نگران پاک کردن دستی فایل از روی فایل سیستم هم باشید.
فایل سیستم (مانند S3):
حجم کم و هزینه مناسب: اگه تصاویر زیادی با کیفیت بالا دارید، ذخیره کردنشون تو پایگاه داده باعث میشه بکاپ هاتون خیلی سنگین بشن و هزینه تون بره بالا. در حالی که فایل سیستم ها این مشکل رو ندارن.
دسترسی مستقیم از CDN: با استفاده از CDN می تونید بدون نیاز به طی کردن لایه های برنامه و پایگاه داده، به فایل ها از هر جای دنیا دسترسی داشته باشید. این کار سرعت نمایش تصاویر رو هم بیشتر می کنه.
اشتراک گذاری راحت: اگه نیاز دارید تصاویر رو با افراد یا سرویس های دیگه به اشتراک بذارید، فایل سیستم ها این کار رو خیلی ساده تر می کنن.
سرعت بالا برای استریم: اگه برنامه شما به عملکرد بالایی برای استریم ویدیو یا تصاویر زنده نیاز داره، فایل سیستم ها گزینه مناسب تری هستن.
پس کدوم رو انتخاب کنیم؟
خب، بستگی به نیاز شما داره!
تصاویر کوچیک: اگه تصاویر شما حجم کمی دارن (مثلا چند صد کیلوبایت)، مثلا عکس پروفایل یا مدارک شناسایی، ذخیره کردنشون تو پایگاه داده منطقی تره.
تصاویر بزرگ و به اشتراک گذاری شده: اگه پلتفرمی دارید که کاربرا تصاویر بزرگی رو آپلود و به اشتراک میذارن، بهتره از فایل سیستم استفاده کنید.
آپدیت کم: اگه تصاویر زیاد آپدیت نمی شن و بیشتر جایگزین یا حذف می شن، نیازی به استفاده از ویژگی های ACID پایگاه داده ندارید و فایل سیستم گزینه بهتر و به صرفه تریه.
در نهایت...
هیچ راه حل کاملی وجود نداره و انتخاب بهترین روش به نیازهای شما بستگی داره.
#Database #General
@Code_Crafters
تصمیم گیری در مورد بهترین راه برای ذخیره سازی تصاویر بین Blob (Binary Large Object)در پایگاه داده و فایل سیستم (مانند S3) همیشه بحث برانگیز بوده.
پایگاه داده یا فایل سیستم؟ کدوم بهتره؟
اول از همه، بریم سراغ مزایای هر کدوم:
پایگاه داده:
اطمینان و یکپارچگی: پایگاه داده ها از قوانین ACID (اتمی بودن، سازگاری، انزوا، دوام) پیروی می کنن. یعنی داده ها همیشه کامل، درست و هماهنگ باقی می مونن. این به این معنیه که حتی اگه یه فایل از روی فایل سیستم پاک بشه، اطلاعات اون تو پایگاه داده محفوظه.
بکاپ گیری راحت: چون همه اطلاعات یکجا هستن، گرفتن بکاپ از پایگاه داده خیلی آسون تره.
جستجوی سریع: با زیاد شدن تعداد تصاویر، پایگاه داده ها نسبت به جستجو تو فایل سیستم سریع تر عمل می کنن.
حذف و آپدیت ساده تر: حذف و آپدیت فایل ها تو پایگاه داده خیلی راحت تره. دیگه نیازی نیست نگران پاک کردن دستی فایل از روی فایل سیستم هم باشید.
فایل سیستم (مانند S3):
حجم کم و هزینه مناسب: اگه تصاویر زیادی با کیفیت بالا دارید، ذخیره کردنشون تو پایگاه داده باعث میشه بکاپ هاتون خیلی سنگین بشن و هزینه تون بره بالا. در حالی که فایل سیستم ها این مشکل رو ندارن.
دسترسی مستقیم از CDN: با استفاده از CDN می تونید بدون نیاز به طی کردن لایه های برنامه و پایگاه داده، به فایل ها از هر جای دنیا دسترسی داشته باشید. این کار سرعت نمایش تصاویر رو هم بیشتر می کنه.
اشتراک گذاری راحت: اگه نیاز دارید تصاویر رو با افراد یا سرویس های دیگه به اشتراک بذارید، فایل سیستم ها این کار رو خیلی ساده تر می کنن.
سرعت بالا برای استریم: اگه برنامه شما به عملکرد بالایی برای استریم ویدیو یا تصاویر زنده نیاز داره، فایل سیستم ها گزینه مناسب تری هستن.
پس کدوم رو انتخاب کنیم؟
خب، بستگی به نیاز شما داره!
تصاویر کوچیک: اگه تصاویر شما حجم کمی دارن (مثلا چند صد کیلوبایت)، مثلا عکس پروفایل یا مدارک شناسایی، ذخیره کردنشون تو پایگاه داده منطقی تره.
تصاویر بزرگ و به اشتراک گذاری شده: اگه پلتفرمی دارید که کاربرا تصاویر بزرگی رو آپلود و به اشتراک میذارن، بهتره از فایل سیستم استفاده کنید.
آپدیت کم: اگه تصاویر زیاد آپدیت نمی شن و بیشتر جایگزین یا حذف می شن، نیازی به استفاده از ویژگی های ACID پایگاه داده ندارید و فایل سیستم گزینه بهتر و به صرفه تریه.
در نهایت...
هیچ راه حل کاملی وجود نداره و انتخاب بهترین روش به نیازهای شما بستگی داره.
#Database #General
@Code_Crafters
👍5
Media is too big
VIEW IN TELEGRAM
✅نکاتی در مورد JsonResponse و Ajax در جنگو
بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو.
این قسمت در مورد اینا صحبت شد:
✔️ توی این قسمت پیغام با موفقیت با خطا مواجه شد رو دیدیم😂
✔️ نکاتی در مورد JsonResponse یاد گرفتیم
✔️ با Ajax دارپ دان های استان شهرستان رو اوکی کردیم
✔️ با متد dumps آشنا شدیم
و...
لینک آپارات:
https://www.aparat.com/v/yULMG
هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو.
این قسمت در مورد اینا صحبت شد:
✔️ توی این قسمت پیغام با موفقیت با خطا مواجه شد رو دیدیم😂
✔️ نکاتی در مورد JsonResponse یاد گرفتیم
✔️ با Ajax دارپ دان های استان شهرستان رو اوکی کردیم
✔️ با متد dumps آشنا شدیم
و...
لینک آپارات:
https://www.aparat.com/v/yULMG
هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
❤4👍3😁1
Forwarded from 🧑💻PythonDev🧑💻
سلام دوستان امروز می خواهیم درباره ی dunder new صحبت کنیم ، dunder new یک special method (یک class method هم هست پس اولین مقدارش خود کلاسه)
در پایتون هست که در واقع سازنده اصلی نمونه ها از کلاس این متد هست :)
خیلی جاها شنیدیم کهconstructor ، dunder init هست ولی dunder init فقط یک initializer هست و در واقع constructor اصلی dunder new هست
جالبه بدونید که dunder new قبل از ساخته شدن کامل یک نمونه کلاس و حتی قبل از dunder init کال میشه :)
اگر می خواهیم dunder new رو برای خودمون تغییر بدیم باید حواسمون باشه که این کار رو انجام بدیم
خب حالا بریم حرفمون رو اثبات کنیم :
خب الان براتون سوال میشه که اصلا این dunder new به چکاری میاد؟ یا چجوری تونستیم که خود کلاس رو به کلاسی که ازش ارث برده بفرستیم در صورتی که هنوز خود کلاس ایجاد نشده !
خب بریم که به سوالات جواب بدیم :)
برای سوال اول بعضی موقع ها هست ما می خواهیم قدرت بیشتری رو در ساختن نمونه های کلاسمون رو داشته باشیم یا در واقع اصلا نگذاریم اون نمونه از کلاس تشکیل بشه
مثل این مثال :
البته این مثال برای طنز قضیه بود :)
خب حالا می رسیم به سوال دوم در پایتون متد type علاوه بر تشخیص یک شی وظیفه ایجاد کلاس رو هم داره (جالبه نه؟)
و موقعی که داریم خود کلاس رو وقتی ایجاد نشده به کلاسی که ازش ارث برده می فرستیم در واقع همون تایپ هست که این کار رو انجام میده
برای ایجاد یک کلاس با متد type اینگونه عمل می کنیم
خب دیدن چه با حال بود :) در قسمت اول اسم کلاس و در قسمت بعد یک تاپل هست که کلاس هایی که قراره ازشون ارث ببره
و در قسمت آخر هم یک دیکشنری هست که خصوصیات اون کلاس رو به همراه داره
به همین راحتی !
اگر مفید بود به اشتراک بگذارید :)
در پایتون هست که در واقع سازنده اصلی نمونه ها از کلاس این متد هست :)
خیلی جاها شنیدیم کهconstructor ، dunder init هست ولی dunder init فقط یک initializer هست و در واقع constructor اصلی dunder new هست
جالبه بدونید که dunder new قبل از ساخته شدن کامل یک نمونه کلاس و حتی قبل از dunder init کال میشه :)
اگر می خواهیم dunder new رو برای خودمون تغییر بدیم باید حواسمون باشه که این کار رو انجام بدیم
return super().new(cls)
تا ی
ک نمونه از اون کلاس ساخته بشه ساخته بشهخب حالا بریم حرفمون رو اثبات کنیم :
class Test:
def init(self):
print("Hi i'm in dunder init")
def new(cls):
print("Hi i'm in dunder new")
return super().new(cls)
t1 = Test()
print(t1)
#output
Hi i'm in dunder new
Hi i'm in dunder init
<main.Test o
bject at 0x7f7371425748> خب الان براتون سوال میشه که اصلا این dunder new به چکاری میاد؟ یا چجوری تونستیم که خود کلاس رو به کلاسی که ازش ارث برده بفرستیم در صورتی که هنوز خود کلاس ایجاد نشده !
خب بریم که به سوالات جواب بدیم :)
برای سوال اول بعضی موقع ها هست ما می خواهیم قدرت بیشتری رو در ساختن نمونه های کلاسمون رو داشته باشیم یا در واقع اصلا نگذاریم اون نمونه از کلاس تشکیل بشه
مثل این مثال :
class Person:
def init(self, age, name):
self.age = age
self.name = name
def new(cls, age, name):
if age == 16 and name == 'parsa':
return None
return super().new(cls)
p1 = Person(16 , 'parsa')
print(p1)
#output
None
خب در مثال
بالا ما گفتیم که قبل از اینکه نمونه از کلاس رو بسازی بیا و چک کن اگر سن اون آدم 16 و اسم اون parsa بود این نمونه از کلاس رو نساز ( در واقع با مقدار 16 و parsa اون شی آدم نیست!)البته این مثال برای طنز قضیه بود :)
خب حالا می رسیم به سوال دوم در پایتون متد type علاوه بر تشخیص یک شی وظیفه ایجاد کلاس رو هم داره (جالبه نه؟)
و موقعی که داریم خود کلاس رو وقتی ایجاد نشده به کلاسی که ازش ارث برده می فرستیم در واقع همون تایپ هست که این کار رو انجام میده
برای ایجاد یک کلاس با متد type اینگونه عمل می کنیم
my_class = type('Class_name', (), {})
print(my_class)
#output
<class 'main.Class_name'>
خب دیدن چه با حال بود :) در قسمت اول اسم کلاس و در قسمت بعد یک تاپل هست که کلاس هایی که قراره ازشون ارث ببره
و در قسمت آخر هم یک دیکشنری هست که خصوصیات اون کلاس رو به همراه داره
به همین راحتی !
اگر مفید بود به اشتراک بگذارید :)
👍12
Forwarded from محمد لرنینگ (آموزش برنامه نویسی)
.
لینک ویدیوی جلسه 3:
https://youtu.be/quxptvrXuEk
تو این ویدیو، با پایتون در مورد data casting, conditions and if statement, input و یکسری سوالات الگوریتمی صحبت کردیم
🔔 حتما حتما یوتیوب رو فالو کنید و ویدیو رو لایک کنید و نوتیف رو روشن بزارید 🫶
از طریق لینک زیر میتونید از دوره حمایت کنید:
https://reymit.ir/seyedbax
هرگونه سوالی دارید توی گروه تخصصیمون یا دیسکورد بپرسید :
https://discord.gg/seyedbax
https://www.tgoop.com/QaDeveloper
تمرین این جلسه :
یک برنامه بنویسید که وزن یک کیسه برنج را به گرم دریافت کند و سپس آن را به کیلوگرم بدون رقم اعشار تبدیل کند و اگر وزن کیسه برنج کمتر از ۱۰ کیلوگرم بود بگه که این کیسه برنج کمتر از ده کیلو وزن داره و مقدار وزنی که کم داره رو به گرم بنویسه
✅ @SEYED_BAX | @MakeDeveloper
لینک ویدیوی جلسه 3:
https://youtu.be/quxptvrXuEk
تو این ویدیو، با پایتون در مورد data casting, conditions and if statement, input و یکسری سوالات الگوریتمی صحبت کردیم
از طریق لینک زیر میتونید از دوره حمایت کنید:
https://reymit.ir/seyedbax
هرگونه سوالی دارید توی گروه تخصصیمون یا دیسکورد بپرسید :
https://discord.gg/seyedbax
https://www.tgoop.com/QaDeveloper
تمرین این جلسه :
یک برنامه بنویسید که وزن یک کیسه برنج را به گرم دریافت کند و سپس آن را به کیلوگرم بدون رقم اعشار تبدیل کند و اگر وزن کیسه برنج کمتر از ۱۰ کیلوگرم بود بگه که این کیسه برنج کمتر از ده کیلو وزن داره و مقدار وزنی که کم داره رو به گرم بنویسه
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1