جنگولرن
3.79K subscribers
288 photos
73 videos
31 files
553 links
آموزش Django و بستگان
Download Telegram
sarabi.pdf
626.4 KB
بهینه‌سازی کوئری‌ها و مشکل N+1
از لینکدین Mohsen Sarabi

یکی از مشکلات رایج در کوئری‌ها، N+1 Query Problem است. این مشکل زمانی رخ می‌دهد که ابتدا یک کوئری برای دریافت لیست اصلی داده‌ها اجرا می‌شود و سپس برای هر آیتم در این لیست، یک کوئری جداگانه برای دریافت داده‌های مرتبط ارسال می‌شود. نتیجه این قضیه، فرستادن تعداد زیادی درخواست غیرضروری به پایگاه داده است که موجب افزایش زمان پردازش و کاهش عملکرد برنامه ما می شود!
راه‌حل؟ استفاده از select_related
این متد با استفاده از JOIN در سطح دیتابیس، تمام داده‌های مرتبط را در یک کوئری واحد واکشی می‌کند، که باعث بهینه‌سازی عملکرد و کاهش تعداد درخواست‌ها می‌شود.
📌 اگر رابطه ManyToMany باشد، prefetch_related گزینه مناسبی است.
آیا تا به حال با این مشکل برخورد کرده‌اید؟ چگونه آن را حل کردید؟ خوشحال میشم تجربیاتتون را به اشتراک بذارید.
👍1011
https://www.cursor.com/en


اینو تست کنید.
حتی شاید ارزشش رو داشته باشه که اکانتش هم بخرید.

کل پروژه رو اوپن کن بهش بده.
علاوه بر کد، فایل هارو هم خودش میسازه و...
👍5👎5🆒21
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD Mohammad Khoshnava)
Media is too big
VIEW IN TELEGRAM
این انیمیشن، یک پکیج کامل آموزش پایتونه 😂😂

@SEYED_BAX | @MohamadKhoshnava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁2🆒2
یک مبحثی که خیلی وقت‌ها آدم‌های رو داخل #جنگو گیج میکنه موضوع Aggregation هستش. برای مثال کوئری پایین:


>>> from django.db.models import Avg, Max, Min
>>> Book.objects.aggregate(Avg("price"), Max("price"), Min("price"))
# {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}

خب این کوئری مشخصه چه کاری داره انجام میده، همه میتونن بفهمنش مخصوصا وقتی خروجی کوئری رو میبینن، اما اگر ازشون بپرسید خب Aggregation چی هستش هیچ ایده ای ندارن! و این ماجرا از ضعف در دانش SQL سر چشمه میگیره. چون خیلی از آدم‌هایی که دارن #django کار میکنن مستقیم سراغ جنگو اومدن و نرفتن چیزهای دیگه رو مطالعه کنن و یاد بگیرن.

اسم Aggregation داخل ORM جنگو مستقیما از SQL میاد. در SQL یک سری فانکشن وجود داره که بهشون Aggregation functions میگن و کارشون خلاصه سازی اطلاعات:
MIN() - returns the smallest value within the selected column
MAX() - returns the largest value within the selected column
COUNT() - returns the number of rows in a set
SUM() - returns the total sum of a numerical column
AVG() - returns the average value of a numerical column

و خب شما میتونید داخل کوئری‌های SQL ازشون استفاده کنید و دیتا خروجی رو خلاصه سازی کنید و یا یک آمار ازش دربیارید. مثلا میانگین قیمت کتاب‌های تو سال اخیر و ...
یک کوئری مثال برای Aggregation میتونه این باشه:

SELECT AVG(Price) as price_avg FROM Books WHERE puddate='2023-01-01';


خب از اونجایی که ORM جنگو در نهایت قرار کار همین SQL نوشتن برای شما انجام بده و کوئری‌ شمارو به SQL تبدیل کنه شما دقیقا همین کوئری میتونید داخل جنگو به این صورت بنویسید:


>>> from django.db.models import Avg
>>> from datetime import datetime
>>> Books.objects.filter(pubdate=datetime(2023, 1, 1)).aggregate(price_avg=Avg("price"))

میتونید لیست فانکشن‌های Aggregation خود SQL داخل این لینک ببینید و ساپورت جنگو هم میتونید داخل این لینک ببینید.

در نهایت از دانش SQL غافل نباشید و حتما یادش بیگیرید. هرچی بیشتر SQL بدونید زندگی راحت‌تری خواهید داشت.

@TorhamDevCH
👍181
Forwarded from Django Expert (Majid A.M)
اگر پروداکت روی جنگو ۴.۲ دارید پاشید برید آپدیتش کنید

از اتاق فرمان اشاره کردند باگ امنیتی داشته :)

™️ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
👍41👎1
bigdeli_2.pdf
1003.3 KB
تست نرم افزار چیه و شامل چیا میشه؟

از لینکدین علی بیگدلی

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

اگر بخوایم کلی دسته بندی کنیم:
- تست عملکرد (Functional Testing)
- تست غیر عملکرد (Non-Functional Testing)
- تست نگهداری و بازرسی (Maintenance Testing)

بر اساس نحوه اجرا اگر دسته بندی بشن:
- تست دستی (Manual Testing)
- تست خودکار (Automation Testing)

و بر اساس تکنیک تست:
- تست جعبه سیاه (Black-box Testing)
- تست جعبه سفید (White-box Testing)
- تست جعبه خاکستری (Gray-box Testing)

موارد بسیار زیادی هستش که نیازمند یادگیری میشن مثل اینکه بهترین روش ها چیه و به اصطلاح best practice ها چی می تونن باشن. اما در کل شما طی یک پروژه نیازمند تست نرم افزار، ساختار و کیفیت اون خواهید بود و حتی بر اساس امنیت و میزان باری که تحمل می کنه و یا اینکه زیر Stress test چه واکنش هایی میده هم باید سرویس رو مورد آزمایش قرار بدید.
و...
👍182
از کانال @siliciumir

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

https://app-generator.dev/tools/django-generator/
👍53
This media is not supported in the widget
VIEW IN TELEGRAM
🔥4👍1
This media is not supported in the widget
VIEW IN TELEGRAM
🔥41👍1
Boost Your Django DX (Adam Johnson) (Z-Library)-2.pdf
21.7 MB
اینم کتاب Boost your DjangoDX
امید وارم لذت ببرید :) ❤️

#️⃣ #book


🥷 CHANNEL | GROUP
13👍1
سال نو همه مبارک.
33👍4
نکته از کتاب Fluent Python
15👍4
استفاده از Django-storage در محیط پروداکشن

از لینکدین Farzin Shams

قطعا در پروژه‌های Django از فایل‌های مدیا استفاده کردید و میدونید برای بهینه بودن پروژه بهتره این فایل‌هارو روی سروری که پروژه ران شده ذخیره نکنید. دلایل مختلفی برای این کار وجود داره! چون:

🔹 سرور فضای محدودی داره
🔹 سرعت پایینه
🔹 بک‌آپ‌گیری و امنیت سخته
🔹 مقیاس‌پذیر نیست

اینجاست که django-storages به کمک ما میاد:

یک پکیج کاربردی که کمک می‌کنه فایل‌ها رو به‌جای ذخیره‌سازی محلی، روی فضای ابری آپلود کنیم، مثل:

Amazon S3
Google Cloud
Azure

از اونجایی که اکثر سرویس دهنده‌های خارجی از ایران قابل استفاده نیستن، شما به راحتی میتونید با استفاده از سرویس‌های S3 ایرانی مثل ابر آروان، دادیار، لیارا و ... تجربه بهتری رو برای کاربران سایت خودتون رقم بزنید.
.
💡 با این کار، همه‌ی فایل‌های آپلودی روی فضای ابری ذخیره می‌شن؛ که موجب سریع‌تر، امن‌تر و مقیاس‌پذیرتر شدن پروژه‌های جنگویی شما میشه.
.
اگر تجربه کار با django-storages یا اتصال به سرویس‌های ابری ایرانی رو داشتی، خوشحال می‌شم نظرتون رو بدونم!
.
لینک: https://lnkd.in/e9EgFTpC
👍1722
چرا Multi-Threading در پایتون مثل جاوا کار نمی‌کنه؟

از لینکدین Majid BagherZadeh
کامنت های پستش رو بخونید. لینک این پست

یکی از تفاوت‌های جالب بین زبان‌های برنامه‌نویسی اینه که "Thread" در هر زبان لزوماً به معنای واقعی خودش اجرا نمی‌شه!

🔹 در جاوا، Threadها واقعاً می‌تونن روی چندین هسته CPU اجرا بشن، مخصوصاً حالا که با Virtual Threads در جاوا ۲۱، اجرای هم‌زمان بسیار سبک‌تر و مقیاس‌پذیرتر شده.

🔹 اما در پایتون، یک چیزی به نام GIL (Global Interpreter Lock) وجود داره که باعث می‌شه در هر لحظه فقط یک Thread بتونه اجرا بشه، حتی اگه چند Thread ساخته باشیم! به همین خاطر، در پایتون برای استفاده از تمام هسته‌های CPU معمولاً به جای Multi-Threading از Multi-Processing استفاده می‌کنن.

💡 نتیجه؟
اگر توی جاوا Thread بسازید، واقعاً روی چند هسته اجرا می‌شه. اما توی پایتون، ساختن چندین Thread لزوماً به معنی اجرای هم‌زمان واقعی نیست! به جای اون، در پایتون پردازش‌های موازی بیشتر با Multi-Processing انجام می‌شن تا بتونن از همه‌ی قدرت CPU استفاده کنن.

🔥 این یکی از اون تفاوت‌هایی‌ـه که اگر بهش دقت نکنید، ممکنه فکر کنید Multi-Threading همیشه همون معنی رو داره—ولی در عمل، بستگی داره که توی چه زبانی کار می‌کنید!

🚀 شما چقدر به این تفاوت‌ها توجه کردید؟ تجربه‌ای در این زمینه داشتید؟
👍145
Shahab.pdf
527.1 KB
محدود کردن قبلِ از کار افتادن سیستم
از لینکدین Shahab Bozorgi

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

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

چجوری از Throttling تو DRF استفاده کنیم؟!
ا DRF چند نوع Throttle پیش‌فرض داره:
AnonRateThrottle → برای کاربران ناشناس
UserRateThrottle → برای کاربران لاگین کرده
ScopedRateThrottle → برای محدود کردن درخواست‌ها در سطح API خاص
کافیه این تنظیمات رو توی settings.py اضافه کنیم و مقدار دلخواهمون رو تنظیم کنیم
با این روش از overload شدن سرور هم جلوگیری می‌کنیم.
👍1641
seo_jozzz.pdf
41 MB
این جزوه رو Hojjat Mesgari توی لینکدینش گذاشته بود.
جزوه دوره سئو خودشه ظاهرا
فکر می کردم جزوه فقط مال دانشگاس
ولی عجب حوصله ای داشته طرف
لینک پست
🆒8👎3
از بعد از دیدن این
https://github.com/odoo/odoo

دیگه به پایتون احترام میزارم.
لکن، ریپو قابل احترام میشناسی کامنت کن لطفا
👍73👏1🤔1
Django Chat

A biweekly podcast on the Django Web Framework by Will Vincent and Carlton Gibson

پادکست هاش درباره جنگو هستن


https://djangochat.com/?trk=feed-detail_main-feed-card-text
👍7
من میلاد حاتمی، برنامه نویس از سال 2008، قصد دارم به علاقمندان یادگیری طراحی سایت، به صورت خصوصی جنگو آموزش دهم.
🎯در صورتی که من مربی خصوصی جنگو شما بصورت آنلاین باشم:
⚡️یک اینترنت پر سرعت نیاز دارید.
قبل از شروع اولین جلسه به صورت رایگان:
⚡️با سوالاتی ساده، سطح مهارت شما در جنگو را ارزیابی می کنم.
⚡️به سوالات شما در مورد سرفصل ها پاسخ می دهم.
⚡️در صورت تمایل شما، با هم یک پروژه برای آموزش مشخص می کنیم.
⚡️در مورد هزینه، تعداد جلسات، ساعت آموزش و… صحبت می کنیم.
در طول جلسه :
⚡️نکات کاربردی را به شما یاد می دهم.
⚡️آموزش یکطرفه نخواهد بود و شما هم کد می نویسید و با چالش هایی مواجه خواهید شد.
⚡️با برخی ابزارهای کنترل سورس نظیر github آشنا خواهید شد.
⚡️با روش صحیح جستجوی سوالات برنامه نویسی در سایت های معتبر آشنا می شوید.
⚡️شما مجازید یک میلیون سوال بپرسید 🙂
بعد از هر جلسه:
⚡️با هم آموزش را مرور می کنیم.
⚡️در صورت لزوم به شما تمرین می دهم.
⚡️نظر شما را جهت بهتر شدن جلسه بعدی می پرسم.
⚡️در مورد جلسه بعدی برنامه ریزی می کنیم.
جهت ارتباط با من با @miladhzz در ارتباط باشید
15😁4👍3👎3
روز معلم مبارک.

امسال اولین سالی هست که پیام تبریک روز معلم برام فرستادن. خوشحالم که معلم شدم بالاخره 🤩

۱۲ اردیبهشت در ایران ‎روز معلم است. این روز اولین بار به دلیل کشته شدن ‎ابوالحسن خانعلی در تجمع۱۲ اردیبهشت۱۳۴۰ معلمان که به استعفای شریف امامی نخست وزیر وقت منجر شد و بار دوم پس از ترور و شهادت مرتضی مطهری، روز معلم نام گرفت.
17👍2