✔️ مشکل کوئری N+1 در جنگو
این مشکل زمانی پیش میاد که برای هر رکورد، کوئریهای اضافی به دیتابیس ارسال بشه تا اطلاعات مرتبط رو بگیریم. مثلاً فرض کنید میخواید لیستی از کتابها و نویسندههاشون رو نمایش بدید، و به ازای هر کتاب، اطلاعات نویسنده رو بهصورت جداگانه دریافت میکنید. در این حالت، کوئریهای زیادی به دیتابیس ارسال میشه که باعث کاهش سرعت برنامه میشه!
راهحلهای Django برای حل مشکل N+1:
استفاده از select_related: برای روابط OneToOne یا ForeignKey از select_related استفاده کنید تا کوئریها بهینه بشن و دادهها رو با یک کوئری بازیابی کنید.
استفاده از prefetch_related: برای روابط ManyToMany یا ForeignKey معکوس بهتره از prefetch_related استفاده کنید که کمک میکنه دادههای مرتبط با چندین کوئری از پیش فراخوانی بشن.
✅ @Teachify | برنامه نویسی
این مشکل زمانی پیش میاد که برای هر رکورد، کوئریهای اضافی به دیتابیس ارسال بشه تا اطلاعات مرتبط رو بگیریم. مثلاً فرض کنید میخواید لیستی از کتابها و نویسندههاشون رو نمایش بدید، و به ازای هر کتاب، اطلاعات نویسنده رو بهصورت جداگانه دریافت میکنید. در این حالت، کوئریهای زیادی به دیتابیس ارسال میشه که باعث کاهش سرعت برنامه میشه!
راهحلهای Django برای حل مشکل N+1:
استفاده از select_related: برای روابط OneToOne یا ForeignKey از select_related استفاده کنید تا کوئریها بهینه بشن و دادهها رو با یک کوئری بازیابی کنید.
استفاده از prefetch_related: برای روابط ManyToMany یا ForeignKey معکوس بهتره از prefetch_related استفاده کنید که کمک میکنه دادههای مرتبط با چندین کوئری از پیش فراخوانی بشن.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Which built-in Python method is used to remove whitespace from the beginning and end of a string?
Anonymous Quiz
14%
remove()
33%
trim()
43%
strip()
10%
clean()
برنامه نویسی | Teachify
Which built-in Python method is used to remove whitespace from the beginning and end of a string?
✔️حذف فاصلههای خالی از ابتدا و انتهای رشته در پایتون
در زبان برنامهنویسی پایتون، برای حذف فاصلههای خالی (فاصله، تب، و خطوط جدید) از ابتدای و انتهای یک رشته، از متد strip() استفاده میکنیم.
اگر فقط میخواهید فاصلهها را از ابتدای رشته حذف کنید، میتوانید از lstrip() که مخفف Left Strip و برای حذف از انتهای رشته از rstrip() که مخفف Right Strip است استفاده کنید.
#پایتون #نکات_پایتون
✅ @Teachify | برنامه نویسی
در زبان برنامهنویسی پایتون، برای حذف فاصلههای خالی (فاصله، تب، و خطوط جدید) از ابتدای و انتهای یک رشته، از متد strip() استفاده میکنیم.
text = " Hello, World! "
cleaned_text = text.strip()
print(cleaned_text) # Output: "Hello, World!"
اگر فقط میخواهید فاصلهها را از ابتدای رشته حذف کنید، میتوانید از lstrip() که مخفف Left Strip و برای حذف از انتهای رشته از rstrip() که مخفف Right Strip است استفاده کنید.
text = " Learn Python with teachify "
print(text.lstrip()) # Output: "Learn Python with teachify "
print(text.rstrip()) # Output: " Learn Python with teachify"
#پایتون #نکات_پایتون
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ آشنایی با کتابخانه Requests در پایتون
کتابخانه Requests یکی از قدرتمندترین ابزارهای پایتون برای ارسال درخواستهای HTTP است که کار را با APIها و ارتباطات وبی ساده میکند. این کتابخانه به شما امکان میدهد به راحتی درخواستهای GET، POST، PUT و DELETE را ارسال و پاسخها را مدیریت کنید.
▪️نمونه کد برای درخواست GET:
▪️امکانات Requests:
ارسال و دریافت JSON
مدیریت هدرها (Headers) و کوکیها
پشتیبانی از پروتکلهای امن (SSL)
آپلود فایل و تنظیم زمان تایماوت
#Python #Programming #Requests #API
✅ @Teachify | برنامه نویسی
کتابخانه Requests یکی از قدرتمندترین ابزارهای پایتون برای ارسال درخواستهای HTTP است که کار را با APIها و ارتباطات وبی ساده میکند. این کتابخانه به شما امکان میدهد به راحتی درخواستهای GET، POST، PUT و DELETE را ارسال و پاسخها را مدیریت کنید.
▪️نمونه کد برای درخواست GET:
import requests
response = requests.get('https://api.example.com/data')
if response.status_code == 200:
data = response.json()
print(data)
else:
print("درخواست با شکست مواجه شد!")
▪️امکانات Requests:
ارسال و دریافت JSON
مدیریت هدرها (Headers) و کوکیها
پشتیبانی از پروتکلهای امن (SSL)
آپلود فایل و تنظیم زمان تایماوت
#Python #Programming #Requests #API
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ استفاده از متد جادویی __call__ در پایتون
متد
فرض کنید میخواهیم یک کلاس به نام
1. متد __init__: عامل (factor) را تنظیم میکند.
2. متد __call__: ورودی را با عامل از پیشتعریف شده ضرب کرده و نتیجه را برمیگرداند.
با این روش، میتوان از هر شیء کلاس
#Python #Programming
✅ @Teachify | برنامه نویسی
متد
__call__ در پایتون به شما اجازه میدهد تا یک شیء از کلاس خود را مثل یک تابع فراخوانی کنید. این کار میتواند در سناریوهایی که نیاز به پردازش پیچیده دارید، بسیار مفید باشد.فرض کنید میخواهیم یک کلاس به نام
Multiplier ایجاد کنیم که هر بار شیء آن مثل تابع فراخوانی میشود، ورودیها را با یک مقدار خاصی که در ابتدا تنظیم شده، ضرب کند.class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, value):
return value * self.factor
# استفاده از کلاس
double = Multiplier(2)
triple = Multiplier(3)
print(double(5)) # خروجی: 10
print(triple(5)) # خروجی: 15
1. متد __init__: عامل (factor) را تنظیم میکند.
2. متد __call__: ورودی را با عامل از پیشتعریف شده ضرب کرده و نتیجه را برمیگرداند.
با این روش، میتوان از هر شیء کلاس
Multiplier به عنوان یک تابع استفاده کرد و در عین حال از ویژگیهای شیءگرایی بهره برد.#Python #Programming
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
✔️ متدهای جادویی __getitem__ و __setitem__ در پایتون
در پایتون میتونید با
مثال:
#Python #Programming
✅ @Teachify | برنامه نویسی
در پایتون میتونید با
__getitem__ و __setitem__ یک شیء رو مثل لیستها و دیکشنریها مدیریت کنید! این متدها امکان دسترسی و تغییر عناصر با اندیسگذاری رو فراهم میکنند.مثال:
class CustomList:
def __init__(self, data):
self.data = data
def __getitem__(self, index):
return self.data[index]
def __setitem__(self, index, value):
self.data[index] = value
clist = CustomList([10, 20, 30])
print(clist[1]) # دسترسی به اندیس 1
clist[1] = 50 # تغییر اندیس 1 به 50
#Python #Programming
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣35👍6😭3😁1🗿1
فک کن یه تسک داری که باید انجام بدی
محدودیت کامل زمانی هم داری،
اونوقت آنتن و اینترنت و همه چی به یک باره قط بشه :/
چیکار میکنی؟
✅ @Teachify | برنامه نویسی
محدودیت کامل زمانی هم داری،
اونوقت آنتن و اینترنت و همه چی به یک باره قط بشه :/
چیکار میکنی؟
Please open Telegram to view this post
VIEW IN TELEGRAM
😴19💩5😭4👍3
برنامه نویسی | Teachify
فک کن یه تسک داری که باید انجام بدی محدودیت کامل زمانی هم داری، اونوقت آنتن و اینترنت و همه چی به یک باره قط بشه :/ چیکار میکنی؟ ✅ @Teachify | برنامه نویسی
همین چیزاست که باعث میشه شبا بیدار بمونیم و کار کنیم.🥲
پ.ن: فایل منیجر یا آپلود منیجر با قابلیت های فراوان که با زبان پایتون و فریمورک جنگو نوشته شده.
هنوز 50 درصدش اوکی شده!
✅ @Teachify | برنامه نویسی
پ.ن: فایل منیجر یا آپلود منیجر با قابلیت های فراوان که با زبان پایتون و فریمورک جنگو نوشته شده.
هنوز 50 درصدش اوکی شده!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2👏1
✔️ توی یک #مصاحبه ای بودم
مصاحبه کننده واقعا درک کافی از مصاحبه رو داشت و من خیلی خوشم اومد از این مصاحبه.
سوالاتی که میپرسید بیشتر توی حوزه مهندسی نرم افزار بود و میخواست ببینه جواب من و تفکرات من به چه صورته ...
و در آخر هم گفت نیاز نیست شما با مصاحبه کننده های بعدی مقایسه بشید، شما با خودتون و با توجه به رزومه خودتون مقایسه میشید.
✅ @Teachify | برنامه نویسی
مصاحبه کننده واقعا درک کافی از مصاحبه رو داشت و من خیلی خوشم اومد از این مصاحبه.
سوالاتی که میپرسید بیشتر توی حوزه مهندسی نرم افزار بود و میخواست ببینه جواب من و تفکرات من به چه صورته ...
و در آخر هم گفت نیاز نیست شما با مصاحبه کننده های بعدی مقایسه بشید، شما با خودتون و با توجه به رزومه خودتون مقایسه میشید.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29
✔️مدیریت فنی در گوگل - Kianoosh Mokhtarian
توی این قسمت از اپیزود طبقه 16، کیانوش مختاریان، مدیر و رهبر فنی در گوگل از مسیر جذاب خودش، از دانشگاه شریف تا کار در گوگل و نهایتاً بازگشت به ایران حرف میزنه
موضوعات جذاب گفتگو:
اهمیت یادگیری زبانهای مختلف برنامهنویسی و الگوریتمها تو دنیای واقعی
مهارتهای نرم و کار تیمی
نکات کلیدی برای موفقیت در فرآیند استخدام گوگل
اگه به مهندسی نرمافزار، توسعه فردی و کار در شرکتهای بزرگ علاقه داری، این گفتگو یه فرصت عالی برای یادگیری و الهام گرفتنه.
https://youtu.be/oXbVKzIt-gQ?si=sM37GBtw5JUGovj3
#گوگل #برنامهنویسی #مهندسی_نرمافزار #مصاحبه
✅ @Teachify | برنامه نویسی
توی این قسمت از اپیزود طبقه 16، کیانوش مختاریان، مدیر و رهبر فنی در گوگل از مسیر جذاب خودش، از دانشگاه شریف تا کار در گوگل و نهایتاً بازگشت به ایران حرف میزنه
موضوعات جذاب گفتگو:
اهمیت یادگیری زبانهای مختلف برنامهنویسی و الگوریتمها تو دنیای واقعی
مهارتهای نرم و کار تیمی
نکات کلیدی برای موفقیت در فرآیند استخدام گوگل
اگه به مهندسی نرمافزار، توسعه فردی و کار در شرکتهای بزرگ علاقه داری، این گفتگو یه فرصت عالی برای یادگیری و الهام گرفتنه.
https://youtu.be/oXbVKzIt-gQ?si=sM37GBtw5JUGovj3
#گوگل #برنامهنویسی #مهندسی_نرمافزار #مصاحبه
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤🔥2
✔️ فشردهسازی شرطها در پایتون با استفاده از all و any
گاهی نیاز دارید چندین شرط را همزمان بررسی کنید، اما نمیخواهید کدتان شلوغ و ناخوانا شود. اینجاست که توابع all و any به کمک شما میآیند!
فرض کنید میخواهید بررسی کنید که آیا تمام اعداد یک لیست مثبت هستند:
تابع all زمانی True برمیگرداند که همه شرایط درست باشند.
حالا اگر بخواهید بررسی کنید که آیا حداقل یکی از اعداد زوج است:
تابع any زمانی True برمیگرداند که حداقل یکی از شرایط درست باشد.
✅ @Teachify | برنامه نویسی
گاهی نیاز دارید چندین شرط را همزمان بررسی کنید، اما نمیخواهید کدتان شلوغ و ناخوانا شود. اینجاست که توابع all و any به کمک شما میآیند!
فرض کنید میخواهید بررسی کنید که آیا تمام اعداد یک لیست مثبت هستند:
numbers = [3, 7, 9, 12]
if all(num > 0 for num in numbers):
print("All numbers are positive!")
تابع all زمانی True برمیگرداند که همه شرایط درست باشند.
حالا اگر بخواهید بررسی کنید که آیا حداقل یکی از اعداد زوج است:
if any(num % 2 == 0 for num in numbers):
print("At least one number is even!")
تابع any زمانی True برمیگرداند که حداقل یکی از شرایط درست باشد.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌1
✔️ ساخت توابع خاص با functools.partial در پایتون
قابلیت
فرض کنید تابعی دارید که دو عدد رو ضرب میکنه:
با استفاده از
این باعث میشه کد شما تمیزتر و کاراتر بشه.
✅ @Teachify | برنامه نویسی
قابلیت
functools.partial به شما کمک میکنه که از یک تابع موجود، نسخهای بسازید که برخی از ورودیهاش بهصورت پیشفرض تنظیم شده باشه. فرض کنید تابعی دارید که دو عدد رو ضرب میکنه:
from functools import partial
# تعریف تابع اصلی
def multiply(x, y):
return x * y
# ساخت یک تابع جدید که مقدار x همیشه 5 باشه
partial_func = partial(multiply, 5)
# استفاده از تابع جدید
print(partial_func(3)) # خروجی: 15
print(partial_func(10)) # خروجی: 50
با استفاده از
partial میتونیم یک نسخه جدید از تابع بسازیم که فقط یک عدد رو بگیره و مقدار x همیشه 5 باشه! این باعث میشه کد شما تمیزتر و کاراتر بشه.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😎1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣36
🥱3
✔️ اضافه کردن و حذف عناصر از هر دو طرف لیست
اگر میخواهید عناصری را از هر دو طرف یک لیست اضافه یا حذف کنید، میتوانید از deque (صف دوطرفه) استفاده کنید. برخلاف لیستهای معمولی که فقط امکان اضافه یا حذف عناصر از یک طرف را میدهند، deque این امکان را فراهم میکند که از هر دو طرف لیست (چپ و راست) عناصر را مدیریت کنید.
این ویژگی زمانی که با دادههای بزرگ یا ساختارهایی مثل پشته و صف کار میکنید بسیار کاربردی است. برای استفاده از deque باید ماژول collections را وارد کنید. مثال زیر نشان میدهد که چطور میتوانید از این قابلیت بهره ببرید:
نتیجه این کد:
✅ @Teachify | برنامه نویسی
اگر میخواهید عناصری را از هر دو طرف یک لیست اضافه یا حذف کنید، میتوانید از deque (صف دوطرفه) استفاده کنید. برخلاف لیستهای معمولی که فقط امکان اضافه یا حذف عناصر از یک طرف را میدهند، deque این امکان را فراهم میکند که از هر دو طرف لیست (چپ و راست) عناصر را مدیریت کنید.
این ویژگی زمانی که با دادههای بزرگ یا ساختارهایی مثل پشته و صف کار میکنید بسیار کاربردی است. برای استفاده از deque باید ماژول collections را وارد کنید. مثال زیر نشان میدهد که چطور میتوانید از این قابلیت بهره ببرید:
from collections import deque
# Create a deque
queue = deque()
# Add elements to both ends
queue.append(10) # Add to the right end
queue.appendleft(5) # Add to the left end
# Remove elements from both ends
right = queue.pop() # Remove from the right end
left = queue.popleft() # Remove from the left end
print(f"Right end: {right}, Left end: {left}")
نتیجه این کد:
Right end: 10, Left end: 5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
✔️ پورتهای پیشفرض برخی از پایگاه دادههای مهم
دیتابیس SQLite بدون پورت (فایلمحور است).
دیتابیس PostgreSQL با پورت 5432
دیتابیس MySQL/MariaDB با پورت 3306
دیتابیس Oracle با پورت 1521
دیتابیس SQL Server با پورت 1433
دیتابیس MongoDB با پورت 27017
✅ @Teachify | برنامه نویسی
دیتابیس SQLite بدون پورت (فایلمحور است).
دیتابیس PostgreSQL با پورت 5432
دیتابیس MySQL/MariaDB با پورت 3306
دیتابیس Oracle با پورت 1521
دیتابیس SQL Server با پورت 1433
دیتابیس MongoDB با پورت 27017
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
وقتی یک فیلد در دیتابیس بهعنوان کلید اصلی (Primary Key) تعریف میشود، به چه معناست؟
Anonymous Quiz
6%
این فیلد میتواند مقادیر تکراری داشته باشد، به شرط اینکه NOT NULL باشد.
15%
این فیلد همیشه باید به یک کلید خارجی (Foreign Key) در جدول دیگری ارجاع دهد.
70%
این فیلد همیشه NOT NULL و UNIQUE است.
10%
این فیلد مقادیر NULL را میپذیرد اما تضمین میکند سایر مقادیر UNIQUE باشند.