#Devocook
⚛️ Atomic Operations در جنگو: وقتی `save()` نجات نمیدهد
🧠 قسمت 1: مشکل کجاست؟
با
نتیجه:
⚛️ قسمت 2: راه حل اتمیک
استفاده از
این کار اتمیک و بدون تداخل است.
🧩 قسمت 3: مثالها
⚠️ قسمت 4: تله مهم – ترکیب با `save()`
✅ راه درست:
❤️ @devobin
⚛️ Atomic Operations در جنگو: وقتی `save()` نجات نمیدهد
🧠 قسمت 1: مشکل کجاست؟
با
view_count = 10 و دو کاربر همزمان:product = Product.objects.get(id=1)
product.view_count += 1
product.save()
نتیجه:
11 (باید 12 باشد). Race Condition در محیط همزمان حتمی است.⚛️ قسمت 2: راه حل اتمیک
استفاده از
F expressions:from django.db.models import F
Product.objects.filter(id=1).update(view_count=F('view_count') + 1)
این کار اتمیک و بدون تداخل است.
🧩 قسمت 3: مثالها
# افزایش موجودی
Product.objects.filter(id=1).update(stock=F('stock') + 5)
# انتقال موجودی
Order.objects.filter(id=1).update(total_price=F('sub_total') + F('tax'))
# شرط مقایسه
Product.objects.filter(stock__gt=F('min_threshold'))
⚠️ قسمت 4: تله مهم – ترکیب با `save()`
# ❌ اشتباه
product.view_count = F('view_count') + 1
product.save() # F آبجکت ذخیره میشود، نه مقدار
✅ راه درست:
product.view_count = F('view_count') + 1
product.save(update_fields=['view_count'])
product.refresh_from_db()❤️ @devobin
❤2👍1
Devobin
#Devocook ⚛️ Atomic Operations در جنگو: وقتی `save()` نجات نمیدهد 🧠 قسمت 1: مشکل کجاست؟ با view_count = 10 و دو کاربر همزمان: product = Product.objects.get(id=1) product.view_count += 1 product.save() نتیجه: 11 (باید 12 باشد). Race Condition در محیط همزمان…
Media is too big
VIEW IN TELEGRAM
❤1
#devocook
📍 کجا از میکروسرویس با Django استفاده کنیم؟
✅ پروژه خیلی بزرگ شده و چند تیم روی آن کار میکنند
✅ نیاز به دیپلوی و مقیاسدهی مستقل هر بخش دارید (مثل سرویس پرداخت)
✅ میخواهید از فناوریهای مختلف کنار Django استفاده کنید
✅ خطای یک سرویس نباید کل سیستم را از کار بیندازد
❌ پروژه کوچک یا متوسط است؟ مونولیت هنوز بهترین انتخاب است.
🚀 میکروسرویس با Django: از مونولیت به مقیاسپذیری
جنگو به تنهایی فریمورک مونولیتیک است، اما میتواند پایه عالی برای میکروسرویس باشد.
رویکرد درست:
هر سرویس یک پروژه Django + DRF مستقل است که:
دیتابیس خودش را دارد
با بقیه سرویسها از طریق REST، gRPC یا Message Broker (RabbitMQ) ارتباط برقرار میکند
جداگانه دیپلوی و اسکیل میشود
مثال:
سرویس کاربران (Accounts)
سرویس سفارشات (Orders)
سرویس پرداخت (Payments)
ابزارهای کلیدی:
Django REST Framework
JWT برای احراز هویت
RabbitMQ / Redis برای ارتباطات ناهمگام
Docker + Kubernetes برای دیپلوی
API Gateway (Kong یا Traefik)
چالشهای مهم:
تراکنشهای توزیعشده
لاگ و نظارت متمرکز (ELK + Prometheus + Grafana)
@devobin
📍 کجا از میکروسرویس با Django استفاده کنیم؟
✅ پروژه خیلی بزرگ شده و چند تیم روی آن کار میکنند
✅ نیاز به دیپلوی و مقیاسدهی مستقل هر بخش دارید (مثل سرویس پرداخت)
✅ میخواهید از فناوریهای مختلف کنار Django استفاده کنید
✅ خطای یک سرویس نباید کل سیستم را از کار بیندازد
❌ پروژه کوچک یا متوسط است؟ مونولیت هنوز بهترین انتخاب است.
🚀 میکروسرویس با Django: از مونولیت به مقیاسپذیری
جنگو به تنهایی فریمورک مونولیتیک است، اما میتواند پایه عالی برای میکروسرویس باشد.
رویکرد درست:
هر سرویس یک پروژه Django + DRF مستقل است که:
دیتابیس خودش را دارد
با بقیه سرویسها از طریق REST، gRPC یا Message Broker (RabbitMQ) ارتباط برقرار میکند
جداگانه دیپلوی و اسکیل میشود
مثال:
سرویس کاربران (Accounts)
سرویس سفارشات (Orders)
سرویس پرداخت (Payments)
ابزارهای کلیدی:
Django REST Framework
JWT برای احراز هویت
RabbitMQ / Redis برای ارتباطات ناهمگام
Docker + Kubernetes برای دیپلوی
API Gateway (Kong یا Traefik)
چالشهای مهم:
تراکنشهای توزیعشده
لاگ و نظارت متمرکز (ELK + Prometheus + Grafana)
@devobin
❤1
🚀 آپدیت جدید پروژه Map & Shop Management System
امروز چند قابلیت مهم و کاربردی به پروژه اضافه شد.
متأسفانه به دلیل محدودیت اینترنت نتونستم ویدئوی دمو رو آپلود کنم، اما تصاویر بخشهای جدید پروژه رو به اشتراک گذاشتم.
✨ تغییرات جدید:
✅ سیستم مسیریابی ارتقا پیدا کرد و از مسیریابی ساده به پیدا کردن نزدیکترین و بهینهترین مسیر تغییر کرد.
✅ هر فروشگاه اکنون میتواند فروشگاه آنلاین اختصاصی و کاملاً شخصیسازیشده خود را داخل پلتفرم داشته باشد.
✅ پروژه به Web App (PWA) تبدیل شد و قابلیت نصب روی موبایل و دسکتاپ را پیدا کرد.
✅ پنل کاربری مشتریان بهصورت کامل پیادهسازی شد.
✅ علاوه بر نمایش فروشگاهها روی نقشه، امکان مشاهده آنها بهصورت لیست نیز اضافه شد.
✅ امکان خرید همزمان از چند فروشگاه مختلف در یک فرآیند خرید فراهم شد.
لینک پست در لینکدین
https://www.linkedin.com/posts/mobin-hasanghasemi-067154384_django-python-programming-activity-7468375485329252352-gYmS?utm_source=share&utm_medium=member_desktop&rcm=ACoAAF60vE8B6N_WoAxH7cDsv2l-HMFO31av5F4
#FullStackDevelopment
#Programming
#Developer
امروز چند قابلیت مهم و کاربردی به پروژه اضافه شد.
متأسفانه به دلیل محدودیت اینترنت نتونستم ویدئوی دمو رو آپلود کنم، اما تصاویر بخشهای جدید پروژه رو به اشتراک گذاشتم.
✨ تغییرات جدید:
✅ سیستم مسیریابی ارتقا پیدا کرد و از مسیریابی ساده به پیدا کردن نزدیکترین و بهینهترین مسیر تغییر کرد.
✅ هر فروشگاه اکنون میتواند فروشگاه آنلاین اختصاصی و کاملاً شخصیسازیشده خود را داخل پلتفرم داشته باشد.
✅ پروژه به Web App (PWA) تبدیل شد و قابلیت نصب روی موبایل و دسکتاپ را پیدا کرد.
✅ پنل کاربری مشتریان بهصورت کامل پیادهسازی شد.
✅ علاوه بر نمایش فروشگاهها روی نقشه، امکان مشاهده آنها بهصورت لیست نیز اضافه شد.
✅ امکان خرید همزمان از چند فروشگاه مختلف در یک فرآیند خرید فراهم شد.
لینک پست در لینکدین
https://www.linkedin.com/posts/mobin-hasanghasemi-067154384_django-python-programming-activity-7468375485329252352-gYmS?utm_source=share&utm_medium=member_desktop&rcm=ACoAAF60vE8B6N_WoAxH7cDsv2l-HMFO31av5F4
#FullStackDevelopment
#Programming
#Developer
#Devocook
سیستم تخفیف ناحیهای
1- فرانت به سرور موقعیت کاربر رو میفرسته
2 -بکاند (بررسی داخل محدوده بودن)
مدل:
منطق بررسی:
فیلتر نهایی:
سیستم تخفیف ناحیهای
1- فرانت به سرور موقعیت کاربر رو میفرسته
2 -بکاند (بررسی داخل محدوده بودن)
مدل:
class Offer(models.Model):
polygon_data = models.JSONField() # GeoJSON مثل {"coordinates": [[lat,lng],...]}
discount = models.IntegerField()
منطق بررسی:
def is_point_in_polygon(lat, lng, polygon_coords):
# الگوریتم Ray-Casting
inside = False
n = len(polygon_coords)
for i in range(n):
x1, y1 = polygon_coords[i]
x2, y2 = polygon_coords[(i+1)%n]
if (y1 > lng) != (y2 > lng):
x_intersect = x1 + (lng - y1)*(x2 - x1)/(y2 - y1)
if x_intersect > lat:
inside = not inside
return inside
فیلتر نهایی:
def get_user_offers(user_lat, user_lng):
offers = Offer.objects.all()
result = []
for offer in offers:
coords = offer.polygon_data['coordinates'][0]
if is_point_in_polygon(user_lat, user_lng, coords):
result.append(offer)
return result
❤1
Devobin
#Devocook سیستم تخفیف ناحیهای 1- فرانت به سرور موقعیت کاربر رو میفرسته 2 -بکاند (بررسی داخل محدوده بودن) مدل: class Offer(models.Model): polygon_data = models.JSONField() # GeoJSON مثل {"coordinates": [[lat,lng],...]} discount = models.IntegerField()…
ناحیه تخفیف اینجوری ست میشه توسط مدیر فروشگاه
#Devocook
چرا باید فایلهای بزرگ رو به تیکههای کوچیک تقسیم کنیم؟ 📉✂️
اینم یه مثال واقعی از پروژهمون:
قبل: چندتا فایل خیلی بزرگ و شلوغ (مثل admin.js که صدها خط کد توش قاطی همه چی شده بود)
بعد: شکستیمشون به فایلهای تخصصی و مرتب:
admin-core.js
admin-dashboard.js
admin-helpers.js
admin-navigation.js
admin-notifications.js
...
نتیجه چی شد؟
کدخونی خیلی راحتتر
پیدا کردن باگ سریعتر
کار تیمی بدون درگیری مرج
عملکرد بهتر و نگهداری آسون
چرا باید فایلهای بزرگ رو به تیکههای کوچیک تقسیم کنیم؟ 📉✂️
اینم یه مثال واقعی از پروژهمون:
قبل: چندتا فایل خیلی بزرگ و شلوغ (مثل admin.js که صدها خط کد توش قاطی همه چی شده بود)
بعد: شکستیمشون به فایلهای تخصصی و مرتب:
admin-core.js
admin-dashboard.js
admin-helpers.js
admin-navigation.js
admin-notifications.js
...
نتیجه چی شد؟
کدخونی خیلی راحتتر
پیدا کردن باگ سریعتر
کار تیمی بدون درگیری مرج
عملکرد بهتر و نگهداری آسون
دیگه پول نریز تو جیب غولهای هوش مصنوعی!
با این گرانی وحشتناک توکنهای GPT، Claude و Gemini، واقعاً شد سخته هر روز کد بزنی و پروژه بچرخونی 😤
ولی خبر خوب اینه: مدلهای چینی اومدن و دارن همهچیو میترکونن!
پیشنهاد من بعد از تست :
من MiMo 2.5 Pro شیائومی رو امتحان کردم → از Claude 4.5 هم بهتر عمل کرد!
✅ بکاند: تمیز، سریع، کمباگ
✅ فرانتاند: عالی
✅ ریسپانسیو کردن و UI/UX: فوقالعاده
علاوه بر این MiMo، DeepSeek هم توکنهاش انقدر ارزونه که انگار مجانیه!
چطوری استفاده کنی؟
فقط کافیه این مدلها رو به OpenCode وصل کنی → یه ایجنت کدنویسی شخصی داری که ۲۴ ساعته برات کار میکنه، بدون اینکه حساب بانکیت خالی بشه 💰
با این گرانی وحشتناک توکنهای GPT، Claude و Gemini، واقعاً شد سخته هر روز کد بزنی و پروژه بچرخونی 😤
ولی خبر خوب اینه: مدلهای چینی اومدن و دارن همهچیو میترکونن!
پیشنهاد من بعد از تست :
من MiMo 2.5 Pro شیائومی رو امتحان کردم → از Claude 4.5 هم بهتر عمل کرد!
✅ بکاند: تمیز، سریع، کمباگ
✅ فرانتاند: عالی
✅ ریسپانسیو کردن و UI/UX: فوقالعاده
علاوه بر این MiMo، DeepSeek هم توکنهاش انقدر ارزونه که انگار مجانیه!
چطوری استفاده کنی؟
فقط کافیه این مدلها رو به OpenCode وصل کنی → یه ایجنت کدنویسی شخصی داری که ۲۴ ساعته برات کار میکنه، بدون اینکه حساب بانکیت خالی بشه 💰