Rakib's Code Lab

Rakib's Code Lab Turning problems into clean code. Documenting my learnings & challenges so others grow with me. Open to work: Django • React • Next.js • Full-Stack Projects.

03/12/2025

🚀 অপ্রয়োজনীয় কুয়েরি বন্ধ করা এবং N + 1 query সমাধান।
আজকের ভিডিওতে দেখাবো কিভাবে অপ্রয়োজনীয় কুয়েরি কমিয়ে আপনার ওয়েবসাইটকে আরও দ্রুত করা যায়।

Django ORM-এর সঠিক ব্যবহার শুধু performance বাড়ায় না—
বরং N+1 query problem একেবারে বন্ধ করে দেয়!

যারা Django নিয়ে কাজ করেন, তাদের জন্য আজকের ভিডিওটিতে অনেক গুরুত্বপূর্ণ গুরুত্বপূর্ণ হতে যাচ্ছে।


Django ORM দিয়ে কিভাবে ডাটাবেস থেকে নির্দিষ্ট পরিমাণ ডাটা  পায়া  যায়।🤔🔹 1. কিভাবে আনবো? Order.objects.filter(status="pen...
27/11/2025

Django ORM দিয়ে কিভাবে ডাটাবেস থেকে নির্দিষ্ট পরিমাণ ডাটা পায়া যায়।🤔

🔹 1. কিভাবে আনবো?

Order.objects.filter(status="pending").order_by('-created_at')[:10]
এটার মাধ্যমে ডাটাবেস থেকে শুধু প্রথম ১০ টা রেকর্ড আনবে।

Offset দিয়ে আনতে চাইলে:


Order.objects.filter(status="pending").order_by('-created_at')[20:30]
এটার মাধ্যমে ডাটাবেস থেকে শুধু ২০ থেকে ৩০ টা রেকর্ড আনবে।

🔹 2. এটা কি ভাবে কাজ করে?
এখানে Django পুরো টেবিল লোড করে না।
Query টা নিচের মতো SQL এ convert করে:

LIMIT 10
OFFSET 20

মানে — ডাটাবেসেই লিমিট করে দেয়।
এর ফলে Memory কম লাগে, ডাটা দ্রুত আসে।

🔹 3. কখন ব্যবহার করবো?
✔ Pagination
✔ Dashboard এ limited data দেখানো
✔ Homepage এ Latest 5 items
✔ Heavy table থেকে lightweight data fetch
✔ API response দ্রুত করতে

❌ কিন্তু Order ছাড়া slice দিলে কোনটা first 10 বুঝা যায় না — তাই যখন slice ব্যবহার করে লিমিটেড ডাটা নিয়ে আসবো তখন সবসময় order_by ব্যবহার করলে exact ফলাফল পায়া যাবে।

🔍Django ORM "Q" Object — অনেক Powerful কিন্তু অনেকেই সেটা জানে না!Django তে নিদিষ্ট data filter করতে সবাই filter() ব্যবহ...
23/11/2025

🔍Django ORM "Q" Object — অনেক Powerful কিন্তু অনেকেই সেটা জানে না!
Django তে নিদিষ্ট data filter করতে সবাই filter() ব্যবহার করে…
কিন্তু এমন কিছু query আছে যেগুলো filter() দিয়ে করা যায় না বা কঠিন হয়ে যায়।

সেখানেই আসে 👉 "Q" Object

🟦"Q" Object কি?
"Q" হলো Django ORM-এর একটি powerful object, যেটা দিয়ে আপনি complex queries তৈরী করতে পারেন।
এছাড়া,
✔ multiple conditions
✔ OR queries
✔ AND + OR mix
✔ NOT queries
✔ dynamic filtering

সবকিছু খুব clean কোডে করা যায়!

🟦কেন ব্যবহার করা হয়?
কারণ সাধারণ filter() ব্যবহার করে "OR" query লেখা যায় না।


user = User.objects.filter(name="Rakib") | User.objects.filter(age=25)

এভাবে লিখলে কাজ করবে না!

👉 কিন্তু " Q" object ব্যবহার করে সহজেই এই query করা যায়।

🟦Example: OR Query

from django.db.models import Q

User.objects.filter(
Q(name="Rakib") | Q(age=25)
)

এখানে যাদের নাম Rakib অথবা age 25 — সব data আসবে 🔥

🟦Example: AND + NOT Query

User.objects.filter(
Q(is_active=True) & ~Q(role="admin")
)

এখানে Active user, কিন্তু admin নয় এমন user গুলো আসবে।

🟦কখন ব্যবহার করতে হয়?
Search system
Filter with OR conditions
Dynamic filters (form/filter page)
Multiple optional conditions
Complex dashboard queries
Reporting tools
API query parameters

🟦Performance কীভাবে ভালো থাকে?
"Q" object query-কে একটি single optimized SQL query তে convert করে।
যদি আপনি N টা আলাদা filter লিখতেন → তাহলে N টা আলাদা ভাবে query হতো।

কিন্তু "Q" object → ১ টা efficient query.

👉 ফলে performance অনেক ভালো হয়।

"Q" object = Django ORM এর hidden superpower 💪
যদি complex filtering করতে হয় → "Q" ছাড়া impossible!

⚛️React এর এমন ২টা Hook আছে যেগুলো  সবাই use করে, কিন্তু সঠিকভাবে ব্যবহার করে খুব কম মানুষ!আজকে কথা বলবো useMemo এবং use...
19/11/2025

⚛️React এর এমন ২টা Hook আছে যেগুলো সবাই use করে, কিন্তু সঠিকভাবে ব্যবহার করে খুব কম মানুষ!
আজকে কথা বলবো useMemo এবং useCallback নিয়ে।
Problem হলো—এগুলো React এ খুব common হলেও, বেশিরভাগ ডেভেলপার জানেই না এগুলো কখন সত্যি কাজে লাগে আর কখন এগুলো use করলে উল্টো ক্ষতি করে।

🔥React এর Hidden Fact
"Optimization" শব্দটা শোনলেই সবাই useMemo/useCallback দিয়ে প্রোজেক্ট optimize করা শুরু করে...

কিন্তু আসল বিষয় হচ্ছে—
👉এগুলো use না করলে যেই জায়গায় 5ms লাগতো
👉সেখানে use করলে React কে cost দিয়ে মাঝে মাঝে 12ms হিসাব করতে হয়।

কারণ, Hooks নিজেরাও প্রোজেক্ট - এ extra কিছু কাজ তৈরি করে।

🎯তাহলে এগুলো আসলে কখন ব্যবহার করতে হয়?
🟦1) useMemo → When to use useMemo :

কোনো calculation খুব heavy
যেমন sorting, filtering, large array process
এবং এমন calculation যা rerender এ বারবার চললে UI slow হয়ে যায়
উদাহরণ:


const sortedList = useMemo(() => heavySortFunction(data), [data]);

এখানে Benefit হলো React heavySortFunction প্রতি render-এ চলবে না—
শুধু যখন data পরিবর্তন হবে তখনই চলবে।

🟦2) useCallback → When to use useCallback :

একটি function child component এ send করছো
আর child unnecessary rerender হচ্ছে কারণ function নতুন reference পাচ্ছে
উদাহরণ:
const handleClick = useCallback(() => {
console.log("Clicked");
}, []);

এখন এই function বারবার নতুন করে তৈরি হবে না।
এবং function reference এর কারণে Child component ও rerender হবে না।

⚠️কোথায় useMemo/useCallback ব্যবহার করা উচিত নয়?
ছোট calculation
simple function
low-level state change
UI এ কোনো effect পড়ে না এমন কাজ
Because 👉 “Over optimization is also a bug.”

React এ সবকিছু memo করা মানে performance বাড়ানো নয়—
বরং React কে বেশি ভাবতে বাধ্য করা।

Smart Developer = জানে কোথায় optimization লাগবে আর কোথায় লাগবে না।

✔️ Conclusion
React-এ পারফরম্যান্স optimization তখনই সফল হবে, যখন আপনি জানবেন—
“Which hook solves which problem?”

🔧 আজকের সমস্যা ও সমাধান: Django + Next.js (Order Management System)আমি আমার Order Management System প্রজেক্টে Django (Ba...
18/11/2025

🔧 আজকের সমস্যা ও সমাধান: Django + Next.js (Order Management System)
আমি আমার Order Management System প্রজেক্টে Django (Backend) এবং Next.js (Frontend) ব্যবহার করছিলাম।
সব ঠিকমতো চলছিল, কিন্তু DealerPaymentSerializer এ এসে একটা বড় সমস্যায় পড়লাম।

❗ সমস্যা কী ছিল?
আমি চাইছিলাম ডিলারের ডাটা nested ভাবে frontend-এ দেখাতে।
যেমন:


dealer = DealerSerializer(read_only=True)

এটা দিলে GET request এ ডিলারের পুরো ডিটেইল nested ভাবে আসত—perfect!
কিন্তু সমস্যা শুরু হলো যখন POST request দিয়ে নতুন payment add করতে গেলাম…

❌ Request কাজ করছিল না
❌ Server error
❌ ডাটা save হচ্ছিল না

কারণ, Django nested serializer read_only হলেও, POST করার সময় Django জানে না dealer ফিল্ডে কোন ডিলারকে assign করবে।

✔️ কীভাবে সমস্যার সমাধান করলাম?
আমি নতুন একটা ফিল্ড যোগ করলাম:


dealer_id = serializers.PrimaryKeyRelatedField(
queryset=DealerModel.objects.all(),
source='dealer',
write_only=True
)

🔍 এটা কী কাজ করলো?
Frontend এখন শুধু dealer_id পাঠাবে
Django backend → সেই ID কে dealer ফিল্ডে map করবে
Nested dealer data GET request এ আগের মতোই আসবে
POST রিকোয়েস্ট একদম ঠিকমতো কাজ করবে
🎉 শেষ পর্যন্ত সব ঠিকঠাক কাজ করেছে!
কোড এখন
✔️ Nested data দেখায়
✔️ POST request হয়
✔️ Frontend + Backend পুরোপুরি sync

Django REST Framework সত্যিই অসাধারণ—তবে serializer customization ভালোভাবে বুঝতে না পারলে এমন সমস্যায় পড়া খুবই স্বাভাবিক।

🧩 Django ORM দিয়ে Range ব্যবহার করে কিভাবে ডাটা বের করবেন?কখনো কি এমন হয়েছে—আপনার মডেলের কোনো একটা ফিল্ডের মাঝের মানগুলো...
18/11/2025

🧩 Django ORM দিয়ে Range ব্যবহার করে কিভাবে ডাটা বের করবেন?
কখনো কি এমন হয়েছে—
আপনার মডেলের কোনো একটা ফিল্ডের মাঝের মানগুলো বের করতে হবে? যেমন:

১ তারিখ থেকে ৩০ তারিখের অর্ডার data

1000 থেকে 5000 টাকার প্রাইসের প্রোডাক্ট লিস্ট

Id 5 থেকে 20 পর্যন্ত রেকর্ড

তাহলে Django ORM-এ সাধারণ একটা কোডেই Solution👇

Model.objects.filter(field_name__range=[start_value, end_value])

✔️ এখানে range মানে হচ্ছে “start থেকে end পর্যন্ত সব data নিয়ে আসো।”
✔️ এটা inclusive, অর্থাৎ start_value এবং end_value দুটোই ধরা হবে।

👉 উদাহরণ:

Order.objects.filter(amount__range=[1000, 5000])

এভাবে আপনি খুব সহজেই দুই মানের মাঝে থাকা সব ডাটা পেয়ে যাবেন 😊
Django ORM সত্যিই লাইফ ইজি করে দেয়!

Smooth work place😊😊
04/02/2025

Smooth work place😊😊

Address

North Badda
Dhaka
121

Website

Alerts

Be the first to know and let us send you an email when Rakib's Code Lab posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share

Category