برنامه نویسی | Teachify
12.1K subscribers
1.01K photos
420 videos
231 files
648 links
برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃


Admin: @Yousef_Vafaei
Download Telegram
✔️ مشکل کوئری N+1 در جنگو

این مشکل زمانی پیش میاد که برای هر رکورد، کوئری‌های اضافی به دیتابیس ارسال بشه تا اطلاعات مرتبط رو بگیریم. مثلاً فرض کنید می‌خواید لیستی از کتاب‌ها و نویسنده‌هاشون رو نمایش بدید، و به ازای هر کتاب، اطلاعات نویسنده رو به‌صورت جداگانه دریافت می‌کنید. در این حالت، کوئری‌های زیادی به دیتابیس ارسال می‌شه که باعث کاهش سرعت برنامه می‌شه!

راه‌حل‌های Django برای حل مشکل N+1:

استفاده از select_related: برای روابط OneToOne یا ForeignKey از select_related استفاده کنید تا کوئری‌ها بهینه بشن و داده‌ها رو با یک کوئری بازیابی کنید.

استفاده از prefetch_related: برای روابط ManyToMany یا ForeignKey معکوس بهتره از prefetch_related استفاده کنید که کمک می‌کنه داده‌های مرتبط با چندین کوئری از پیش فراخوانی بشن.
@Teachify | برنامه نویسی
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() استفاده می‌کنیم.

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"


#پایتون #نکات_پایتون
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ آشنایی با کتابخانه Requests در پایتون

کتابخانه 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

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ استفاده از متد جادویی __call__ در پایتون

متد __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

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
✔️ متدهای جادویی __getitem__ و __setitem__ در پایتون

در پایتون می‌تونید با __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

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
✔️ چقدر حقه این تصویر :))
دلم واسه ویکیپدیا سوخت🥹

#fun
@Teachify | برنامه نویسی
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 | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132👏1
✔️ توی یک #مصاحبه ای بودم

مصاحبه کننده واقعا درک کافی از مصاحبه رو داشت و من خیلی خوشم اومد از این مصاحبه.

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

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29
✔️مدیریت فنی در گوگل - Kianoosh Mokhtarian

توی این قسمت از اپیزود طبقه 16، کیانوش مختاریان، مدیر و رهبر فنی در گوگل از مسیر جذاب خودش، از دانشگاه شریف تا کار در گوگل و نهایتاً بازگشت به ایران حرف میزنه

موضوعات جذاب گفتگو:

اهمیت یادگیری زبان‌های مختلف برنامه‌نویسی و الگوریتم‌ها تو دنیای واقعی
مهارت‌های نرم و کار تیمی
نکات کلیدی برای موفقیت در فرآیند استخدام گوگل
اگه به مهندسی نرم‌افزار، توسعه فردی و کار در شرکت‌های بزرگ علاقه داری، این گفتگو یه فرصت عالی برای یادگیری و الهام گرفتنه.

https://youtu.be/oXbVKzIt-gQ?si=sM37GBtw5JUGovj3

#گوگل #برنامه‌نویسی #مهندسی_نرم‌افزار #مصاحبه
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤‍🔥2
✔️ فشرده‌سازی شرط‌ها در پایتون با استفاده از all و any

گاهی نیاز دارید چندین شرط را همزمان بررسی کنید، اما نمی‌خواهید کدتان شلوغ و ناخوانا شود. اینجاست که توابع 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 برمی‌گرداند که حداقل یکی از شرایط درست باشد.
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌1
✔️ یه roadmap خوب برای SQL

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
✔️ ساخت توابع خاص با functools.partial در پایتون

قابلیت 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 باشه!
این باعث میشه کد شما تمیزتر و کاراتر بشه.

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😎1
✔️ خوبه قبل از برنامه نویس شدن اینا رو ندیدم :)))

#fun #فان
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣36
🥱3
✔️ اضافه کردن و حذف عناصر از هر دو طرف لیست

اگر می‌خواهید عناصری را از هر دو طرف یک لیست اضافه یا حذف کنید، می‌توانید از 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


@Teachify | برنامه نویسی
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 | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15