Azad's Programmers
2.43K subscribers
90 photos
27 videos
18 files
71 links
کانال آموزش برنامه نویسی دانشگاه آزاد

گروه چت پرسش و پاسخ: https://t.me/azad_program
Download Telegram
💻 کپسوله‌سازی (Encapsulation) در شی‌گرایی به زبان ساده

کپسوله‌سازی یکی از اصول مهم شی‌گرایی است که به شما امکان می‌دهد داده‌ها و متدها را درون یک کلاس مخفی کنید تا فقط از طریق روش‌های مشخصی به آن‌ها دسترسی داشته باشید. این ویژگی کمک می‌کند تا کد شما ایمن‌تر و ساختار‌یافته‌تر باشد. 🎯

🔍 کپسوله‌سازی چیست؟

در کپسوله‌سازی، داده‌های حساس یک شیء با قرار دادن آن‌ها درون کلاس مخفی می‌شوند و تنها از طریق متدهای مشخصی می‌توان به آن‌ها دسترسی پیدا کرد. این ویژگی به شما امکان می‌دهد تا کنترل بهتری بر روی داده‌ها داشته باشید و از تغییرات غیرمجاز جلوگیری کنید.

🔑 مزایای کپسوله‌سازی:
- ایمنی بیشتر: از تغییرات و دسترسی‌های غیرمجاز به داده‌ها جلوگیری می‌کند.
- سادگی در استفاده: کاربران کلاس فقط با متدهای عمومی (public methods) تعامل دارند و نیازی به دانستن جزئیات داخلی ندارند.

📌 مثال ساده با پایتون:

class BankAccount:
def __init__(self, balance):
self.__balance = balance # متغیر خصوصی

def deposit(self, amount):
if amount > 0:
self.__balance += amount
print(f"{amount} تومان به حساب اضافه شد.")

def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
print(f"{amount} تومان از حساب برداشت شد.")
else:
print("موجودی کافی نیست.")

def get_balance(self):
return self.__balance

در اینجا، balance به عنوان یک متغیر خصوصی تعریف شده و تنها از طریق متدهای deposit()، withdraw() و get_balance() قابل دسترسی است.

account = BankAccount(1000)
account.deposit(500) # اضافه کردن موجودی
account.withdraw(200) # برداشت از حساب
print(account.get_balance()) # نمایش موجودی حساب

🔒 با استفاده از کپسوله‌سازی، می‌توانید مطمئن باشید که متغیر balance تنها از طریق متدهای خاص قابل تغییر است و از دسترسی غیرمجاز محافظت می‌شود.

#OOP #شی_گرایی #کپسوله_سازی #Encapsulation #پایتون #برنامه_نویسی

Group: @azad_program
Channel:
@kiau_program
❤1
1️⃣ ایده‌پردازی

◀️ افزونه Kleo: یه افزونه که ایده‌های جذاب برای پست‌های لینکدین بهت میده.

◀️افزونه Tweet Hunter X: برای پیدا کردن ایده‌های جالب توی پلتفرم X (همون توییتر).

◀️ابزار ChatGPT: از هوش مصنوعی کمک بگیر تا ایده‌های جدید برای محتوا پیدا کنی.

◀️پلتفرم Swipely: جایی که می‌تونی ایده‌هات رو ذخیره و دسته‌بندی کنی.

◀️ابزار vidIQ: بهت کمک می‌کنه کانالت توی یوتیوب رشد کنه.

◀️وبسایت Quora: جایی که می‌تونی اطلاعات و نظرات تخصصی رو با بقیه به اشتراک بذاری.


2️⃣ تولید محتوا

◀️ابزار Canva: یه ابزار ساده برای طراحی گرافیک و پست‌های جذاب.

◀️ابزار Grammarly: بهت کمک می‌کنه که نوشته‌هات رو از نظر نگارش بهتر کنی.

◀️وبسایت Hemmingway App: ساده‌سازی و خواناتر کردن نوشته‌ها.

◀️نرم‌افزار Descript: برای ویرایش راحت ویدیو و پادکست‌هات.

◀️پلتفرم Midjourney: یه ابزار برای تولید تصویر با هوش مصنوعی.

◀️افزونه Kleo: قبل از اینکه پستت رو منتشر کنی، می‌تونی پیش‌نمایش اون رو ببینی.


3️⃣ مدیریت و پیگیری

◀️ابزار Trello: برای مرتب کردن ایده‌ها و مدیریت زمان‌بندی پست‌هات.

◀️پلتفرم Notion: یه فضای همه‌کاره برای منظم کردن کارهات.

◀️شبکه اجتماعی LinkedIn: برای ارتباط گرفتن و تعامل با افراد حرفه‌ای.

◀️ابزار Google Docs: برای نوشتن و ویرایش آنلاین متن‌ها.

◀️پلتفرم Zapier: کارها رو خودکار کن و وقتت رو برای کارهای مهم‌تر ذخیره کن.

◀️ابزار Taplio: عملکرد پست‌هات رو آنالیز کن تا بهتر بشی.


4️⃣ ارتباط

◀️شبکه اجتماعی LinkedIn: پست‌های لینکدینت رو زمان‌بندی کن و منتشر کن.

◀️پلتفرم Google Meet: برای جلسات آنلاین و ارتباط رو در رو.

◀️ابزار Slack: پیام‌رسان برای ارتباط راحت بین اعضای تیم.

◀️ابزار Loom: ویدیوهای آموزشی یا توضیحاتت رو ضبط کن و با بقیه به اشتراک بذار.

◀️پلتفرم Typeform: برای ساخت نظرسنجی و فرم‌های آنلاین.

◀️ابزار Testimonial: نظرات متنی و ویدیویی مشتری‌ها رو جمع کن و استفاده کن.


5️⃣ تبدیل

◀️ابزار Calendly: وقتی می‌خوای با مشتری قرار تماس بذاری، از این استفاده کن.

◀️پلتفرم Webflow: برای ساختن صفحه‌های فرود شیک و حرفه‌ای.

◀️ابزار Linktree: همه لینک‌هات رو توی یه صفحه جمع کن و به اشتراک بذار.

◀️ابزار Mailchimp: برای ارسال ایمیل‌های تبلیغاتی و ارتباط با مشتری‌هات.

◀️ابزار Beehiiv: ایمیل‌های خبرنامه‌تو راحت جمع کن و ارسال کن.

◀️پلتفرم Square: برای پرداخت‌های آنلاین و انجام تراکنش‌های تجاری.
👍3
سلام به همگی! 🌟

امروز می‌خوایم درباره‌ی یه اصل مهم تو کدنویسی پایتون صحبت کنیم که کدهاتون رو خوشگل‌تر و مرتب‌تر می‌کنه: PEP 8! 😎

خب، PEP 8 چیه؟ 🤔
توی پایتون PEP 8 یه استاندارده برای کدنویسی پایتونه که باعث میشه کدهامون تمیزتر و قابل‌فهم‌تر باشه؛ هم واسه خودمون و هم واسه بقیه. حالا بیایم با هم نکات اصلیش رو ببینیم 👇



اصول اصلی PEP 8 🧩

1. تورفتگی (Indentation)
برای هر سطح تورفتگی از ۴ فاصله استفاده کن! فاصله‌ها کدهاتو همه‌جا یکدست نشون میدن. 📏


2. بیشترین طول خط (Line Length)
هر خط کدت بهتره از ۷۹ کاراکتر بیشتر نشه تا همه‌جا خوب خونده بشه. واسه توضیحات هم بهتره به ۷۲ کاراکتر محدودش کنی. 📝

3. شکستن خطوط در عملگرها (Operators)
   وقتی می‌خوای یه خط طولانی رو بشکنی، عملگرها (+, -) رو اول خط جدید بذار، مثل این:
   
   result = (first_variable
             + second_variable
             - third_variable)
  

4. خطوط خالی (Blank Lines)
با خطوط خالی بخش‌های کدتو از هم جدا کن. بین توابع و کلاس‌ها ۲ خط خالی بذار و بین متدها ۱ خط خالی. 🌿


5. ایمپورت‌ها (Imports)
ایمپورت‌ها رو اول فایل و به ترتیب بذار:
   1. کتابخونه‌های استاندارد
   2. کتابخونه‌های خارجی
   3. کتابخونه‌های پروژه


   هر دسته رو هم با یه خط خالی جدا کن. 🤓
6. فضاهای خالی (Whitespace)
   - قبل و بعد از عملگرها (=, +, -) یه فاصله بذار.
   - داخل پرانتزها و کروشه‌ها فاصله اضافه نذار. مثال:
   # recommended:
   x = (a + b) * (c - d)

   # not recommended:
   x = ( a + b ) * ( c - d )
  


با رعایت این نکات، کدتون حسابی تر و تمیز و استاندارد می‌شه! 💯

#python
#pep8

Group: @azad_program
Channel:
@kiau_program
❤5💯2👍1
🌐 تفاوت‌های IPv4 و IPv6 🌐

پروتکل های IPv4 و IPv6 دو پروتکل اصلی برای شناسایی دستگاه‌ها در شبکه هستند.

🔹 تعداد آدرس‌ها:
- پروتکل IPv4 از 32 بیت استفاده می‌کند و حدود 4.3 میلیارد آدرس را پشتیبانی می‌کند.
- پروتکل IPv6 با 128 بیت، امکان ایجاد 34 تریلیون تریلیون تریلیون آدرس را فراهم می‌کند.

🔹 ساده‌سازی پیکربندی:
- پروتکل IPv6 قابلیت پیکربندی خودکار (SLAAC) دارد که به دستگاه‌ها اجازه می‌دهد بدون نیاز به DHCP، آدرس IP خود را تنظیم کنند.

🔹 امنیت:
- پروتکل IPv6 به طور پیش‌فرض از IPsec برای امنیت ارتباطات استفاده می‌کند، در حالی که در IPv4 این ویژگی اختیاری است.

🔹 بهبود عملکرد:
- با حذف NAT (ترجمه آدرس شبکه)، ارتباطات مستقیم‌تر و سریع‌تر انجام می‌شود.

🔹 پشتیبانی از موبایل:
- پروتکل IPv6 بهینه‌سازی شده برای دستگاه‌های موبایل و اینترنت اشیا (IoT) است.

با توجه به رشد روزافزون اینترنت و نیاز به آدرس‌های بیشتر، انتقال به IPv6 ضروری است! 🚀

Group: @azad_program
Channel: @kiau_program
👍5
توزیع‌های لینوکسی و کاربردهای آن‌ها

1. اوبونتو (Ubuntu): مناسب برای کاربران تازه‌کار و دسکتاپ. با رابط کاربری ساده و پشتیبانی گسترده، برای کارهای روزمره، برنامه‌نویسی و حتی بازی‌ها عالی است. ( البته در زیر ساخت خیلی از شرکت ها از اوبنتو سرور استفاده میشه).

2. دبیان (Debian): پایدار و قابل اعتماد، مناسب برای سرورها و سیستم‌های مهم. به دلیل ثبات بالا، انتخاب خوبی برای توسعه‌دهندگان و مدیران سیستم است.

3. فدورا (Fedora): به‌روزترین نرم‌افزارها را ارائه میده و برای توسعه‌دهندگان ایده‌آل است.

4. آرچ لینوکس (Arch Linux): برای کاربران پیشرفته که می‌خواهند سیستم خود را از پایه بسازند. انعطاف‌پذیری بالا و کنترل کامل بر روی نصب نرم‌افزارها را فراهم می‌کند.

7. لینکس مینت (Linux Mint): بهترین گزینه برای کسانی که از ویندوز به لینوکس مهاجرت می‌کنند. رابط کاربری آشنا و امکانات متنوع آن باعث راحتی استفاده می‌شود.

8. کالی لینوکس (Kali Linux): مخصوص تست نفوذ و امنیت سایبری طراحی شده است. ابزارهای پیشرفته‌ای برای هکرها اخلاقی فراهم می‌کند.

Group: @azad_program
Channel: @kiau_program
❤1👍1
📊 کتابخانه‌های ضروری Python برای علم داده

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


کتابخانه Scrapy: جمع‌آوری داده و وب‌اسکرپینگ
کتابخانه pandas: دستکاری داده‌ها، پیش‌پردازش و تحلیل اکتشافی داده‌ها (EDA)
کتابخانه Matplotlib: تجسم داده‌ها
کتابخانه Statsmodels: تحلیل‌های آماری و سری زمانی
کتابخانه scikit-learn: یادگیری ماشین
کتابخانه TensorFlow: یادگیری عمیق
کتابخانه spaCy: پردازش زبان طبیعی
کتابخانه Flask: استقرار مدل
کتابخانه PySpark: داده‌های حجیم و محاسبات توزیع‌شده
کتابخانه Apache Airflow: اتوماسیون و ارکستراسیون جریان کاری

➖➖➖➖➖➖➖➖➖➖➖➖
❤4👍1
⭕️ مفهوم JSON:

در دنیای برنامه نویسی JSON یا JavaScript Object Notation، یک فرمت سبک و مستقل از زبان برای تبادل داده‌هاست. JSON بسیار خوانا و به راحتی قابل استفادست و به همین دلیل برای انتقال داده‌ها بین سرور و کلاینت محبوبه.
همونطور که از نامش پیداست JSON به معنی «نمادگذاری اشیا در جاوا اسکریپت» هست و معمولاً همراه با جاو اسکریپت شناسایی میشه، اما یک فرمت استاندارد رد و بدل دیتا و مستقل از زبان مثل XML یا YAML و مشترک بین تمامی زبان هاست که از خوانایی بالایی برخورداره.

فرض کنین که یک منوی غذا در یک رستوران دارین که شامل نام غذا، قیمت، مواد تشکیل‌دهنده و اطلاعات دیگه ایه. حالا تصور کنین که این منو رو می‌خواین در قالبی ذخیره کنین که برای یک اپلیکیشن موبایل قابل استفاده باشه. JSON این امکان رو میده به سادگی این اطلاعات رو به صورت ساختارمند ذخیره کنید.


مثال منوی غذا با JSON:
{
"restaurant": "Delicious Dishes",
"menu": [
{
"name": "Pasta",
"price": 12.5,
"ingredients": ["noodles", "tomato sauce", "cheese"]
},
{
"name": "Caesar Salad",
"price": 8.0,
"ingredients": ["lettuce", "chicken", "parmesan", "croutons"]
},
{
"name": "Burger",
"price": 10.0,
"ingredients": ["bun", "beef patty", "lettuce", "cheese", "tomato"]
}
]
}


جیسون ویژگی های مختلفی مثل سادگی و خوانایی، پشتیبانی گسترده توسط زبان ها، اندازه کوچیک و ... داره.

همینطور از کاربرد های اون میشه به وب سرویس ها یا API ها و تبادل دیتاها بین سرور و کلاینت، ذخیره سازی داده در پایگاه داده های NoSQL مثل MongoDB و ذخیره سازی تنظیمات نرم افزار ها اشاره کرد.

Group: @azad_program
Channel: @kiau_program
❤3
🎯 ترفند جالب پایتونی: سرعت‌بخشیدن به کدها با list comprehension 🚀

یکی از روش‌های بهینه‌سازی و خواناتر کردن کدهای پایتون، استفاده از list comprehension هست. این روش برای ساخت لیست‌ها به‌صورت کوتاه و سریع استفاده می‌شه.

💡 مثال ساده: فرض کنید می‌خواهید مربع اعداد ۱ تا ۱۰ رو توی یه لیست ذخیره کنید.

🔻 روش سنتی:
squares = []
for i in range(1, 11):
squares.append(i 2)
print(squares)

🔺 با list comprehension:

squares = [i 2 for i in range(1, 11)]
print(squares)

نتیجه هر دو روش یکیه:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

اما روش دوم کوتاه‌تر، سریع‌تر و شیک‌تره! 😎

✨ چالش برای شما:

با همین روش یه لیست بسازید که اعداد زوج بین ۱ تا ۲۰ رو شامل بشه. ✅

#پایتون #programming #python

Group: @azad_program
Channel: @kiau_program
❤3👏1
✅ آشنایی با Destructuring در جاوااسکریپت

ویژگی "Destructuring" یا "تخریب و تجزیه" یکی از ویژگی‌های قدرتمند و بشدت کاربردی در جاوااسکریپته که به شما اجازه می‌ده به راحتی عناصر یک آرایه یا آیتم های یک object یا شی رو استخراج کنین و به متغیرهای مجزا اختصاص بدین. این ویژگی که در ES6 معرفی شد، باعث افزایش خوانایی و کاهش کدهای تکراری می‌شه.

فرض کنین یک آرایه با 8 عدد دارین که میخواین سه آیتم اول اون رو استخراج و داخل متغیر ذخیره کنین. یکی از روش های مرسوم گرفتن آیتم های داخل آرایه با استفاده از index هست.
const array = [1, 2, 3, 4, 5, 6, 7, 8]

const item1 = array[0]
const item2 = array[1]
const item3 = array[2]


اما با استفاده از ویژگی Destructuring این کار خیلی ساده تر میشه و میتونین با تجزیه آرایه سه ایتم اول اون رو استخراج کنین
 
const [a, b, c] = [1, 2, 3, 4, 5, 6, 7, 8]


همینطور با ترکیب این ویژگی و rest operator (...) میتونین باقی ایتم هارو در قالب یک ارایه استخراج کنین
 
const [a, b, c, ...rest] = [1, 2, 3, 4, 5, 6, 7, 8]


برای object ها در طول برنامه هم میتونین از این ویژگی استفاده کنین و آیتم های داخل آبجکت رو destructure کنین. اما نکته قابل توجه اینه که اسم آیتم تجزیه شده با آیتم داخل object به صورت دیفالت باید برابر باشه.

حالا فرض کنین یک تابع داخل برنامه دارین که کارهای مختلفی داخلش انجام میشه و میخواید به عنوان خروجی چیز های مختلفی رو return کنین و زمان استفاده از اون تابع بهشون دسترسی داشته باشین:

const doWork = function () {
const age = 20;
const name = "Reza";
const numbers = [1, 2, 3, 4];

function doSomeThings(number) {
numbers.push(number);
// ...
}

// ...

return { age, numbers, doSomeThings };
};

// Destructuring
const { age, numbers, doSomeThings } = doWork();

console.log(age); // 20
console.log(numbers); // [1, 2, 3, 4]

doSomeThings(10);

console.log(numbers); /// [1, 2, 3, 4, 10]



⭕️ مفهوم Destructuring در زبان های دیگه به شکل های مختلفی دیده میشه:

⁉️ مفهوم Destructuring یا Unpacking در Python
a, b, c = [1, 2, 3]
print(a) # 1
print(b) # 2
print(c) # 3


⁉️ مفهوم Tuple Destructuring در Swift
let (x, y) = (1, 2)
print(x) // 1
print(y) // 2


⁉️ مفهوم Destructuring در Ruby
a, b, c = [1, 2, 3]
puts a # 1
puts b # 2
puts c # 3


Group: @azad_program
Channel: @kiau_program
❤1
🔍 آشنایی با توابع Lambda در پایتون 💡

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

--------------

🎯 ساختار تابع Lambda
ساختار کلی:
lambda پارامترها: عملیات یا خروجی


به عنوان مثال:
add = lambda x, y: x + y
print(add(3, 5)) # خروجی: 8

------------

🎯 کاربردها
1. استفاده در توابعی مثل map, filter, sorted:
مثال: فیلتر کردن اعداد زوج از یک لیست:

   numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # خروجی: [2, 4]

2. مرتب‌سازی پیشرفته:
مرتب کردن لیستی از دیکشنری‌ها:

   students = [{'name': 'Ali', 'grade': 85}, {'name': 'Sara', 'grade': 92}]
sorted_students = sorted(students, key=lambda x: x['grade'])
print(sorted_students)

3. اعمال عملیات ریاضی:
به توان ۲ رساندن اعداد:

   numbers = [1, 2, 3]
squared = list(map(lambda x: x**2, numbers))
print(squared) # خروجی: [1, 4, 9]

---

🚀 نکته: Lambda ساده، اما قدرتمند است! مناسب برای کدنویسی کوتاه و سریع، اما برای عملیات پیچیده بهتر است از توابع معمولی استفاده کنید. 💻✨


Group: @azad_program
Channel:
@kiau_program
😁5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
سوپر کامپیوتر El Capitan
سریع ترین سوپرکامپیوتر جهان
سازنده HPE
قدرت پردازش دو quintillions
یعنی 2Exaflops !!!

Group: @azad_program
Channel: @kiau_program
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
1 میلیارد تکرار حلقه تو در تو

Group: @azad_program
Channel: @kiau_program
❤2👍1
سلام به همه اعضای گروه 🙌🏻
اینجا توی گروه ما کلی استعداد و علاقه به برنامه‌نویسی جمع شده و به ذهنم رسید که از این پتانسیل فوق‌العاده استفاده کنیم.

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

💻 تخصص‌هایی که بهشون نیاز داریم:
- بک‌اند: Python (Django, Flask) یا #C . ا net. یا هر زبان دیگه‌ای
- فرانت‌اند: HTML, CSS, JavaScript (React, Vue.js)
- توسعه دسکتاپ: Python (PyQt, Tkinter) یا #C و یا تکنولوژی‌های دیگه
- توسعه موبایل: kotlin Flutter, React Native یا Native Development
- اتوماسیون و اسکریپت‌نویسی: Python یا Bash
- طراحی: UI/UX
- گرافیست
-طراح لوگو

🔹 چرا این تیم؟
1. روی پروژه‌های تمرینی و واقعی کار می‌کنیم (مثلاً طراحی سایت برای خودمون).
2. درآمد حاصل از پروژه‌ها به صورت درصدی بین اعضای تیم تقسیم می‌شه.
3. همه کارها با همکاری و هدفمند پیش می‌ره.

🔸 شرایط عضویت:
- دانشجو یا علاقه‌مند به برنامه‌نویسی
- مسئولیت‌پذیر و علاقه‌مند به یادگیری
- حداقل آشنایی با یکی از حوزه‌های بالا

🔔 اگه علاقه داری عضو این تیم باشی، پیوی پیام بده

بیاید با هم یه تیم قوی و حرفه‌ای بسازیم. منتظرتونم! 🌟

@i_kent8
❤‍🔥1👎1
جنگو ORM
واژه‌ی ORM مختصرشده‌ی Object Relational Mapping است، Django ORM بخشی از جنگو است که وظیفه‌ی اتصال به پایگاه‌داده، و دریافت و ارسال اطلاعات به آن را به دوش می‌کشد.

در واقع بدون وجود ORM در جنگو مجبور هستیم که در نرم‌افزار یا وب‌اپلیکیشن‌های خود کوئری‌های دیتابیسی مثل SQL بزنیم و به‌نحوی، مستقیماً نرم‌افزار خود را به پایگاه‌داده متصل کنیم. این امکان در پایتون وجود دارد که با کتاب‌خانه‌های مختلف می‌توانید به پایگاه‌داده‌های مختلف متصل شوید و با استفاده از آن‌ها اشیاء را در پایگاه‌داده ذخیره یا بازیابی نمایید.

با وجود جنگو ORM، بدون احتیاج به اتصال مستقیم به پایگاه‌داده، شما از Syntax همان ORM برای ذخیره و بازیابی اطلاعات استفاده می‌کنید، بدون احتیاج به این‌که از Syntax و زبان آن پایگاه‌داده استفاده کنید. در مقابل، در پس‌زمینه، آن ORM کدهای شما را به کوئری‌های دیتابیسی تبدیل می‌کند که به این کار Map کردن می‌گویند.


مثال ساده:
یک مدل از کتاب که دارای فیلد های عنوان، نام نویسنده، تاریخ انتشار و قیمت هست
from django.db import models

class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
published_date = models.DateField()
price = models.DecimalField(max_digits=10, decimal_places=2)

def __str__(self):
return self.title


#دیتایی که داریم
data = {
"title": "Hollywood",
"author": "Charles Bukowski",
"published_date": "1989-01-01",
"price": 150.99
}




# بازیابی همه رکورد ها و دریافت  عنوان نویسنده
books = Book.objects.all()
for book in books:
print(book.title, book.author)


# یافتن کتابی با عنوان خاص
book = Book.objects.get(title="Hollywood")
print(book.author)


# کتاب‌هایی که قیمتشان کمتر از 160 است
cheap_books = Book.objects.filter(price__lt=160)
for book in cheap_books:
print(book.title, book.price)





به روز رسانی و حذف به صورت تکی


# به روز رسانی کردن قیمت کتاب
book = Book.objects.get(title="Hollywood")
book.price = 159.99
book.save()



# حذف رکورد
book = Book.objects.get(title="Hollywood")
book.delete()


به روز رسانی و حذف به صورت گروهی
Book.objects.filter(price__gt=150).update(price=149.99)

Book.objects.filter(price__lt=100).delete()




Group: @azad_program
Channel: @kiau_program
👍8❤1
Azad's Programmers
جنگو ORM واژه‌ی ORM مختصرشده‌ی Object Relational Mapping است، Django ORM بخشی از جنگو است که وظیفه‌ی اتصال به پایگاه‌داده، و دریافت و ارسال اطلاعات به آن را به دوش می‌کشد. در واقع بدون وجود ORM در جنگو مجبور هستیم که در نرم‌افزار یا وب‌اپلیکیشن‌های خود…
جنگو ORM
2/2

چه متد هایی داریم که میتونیم استفاده کنیم و چه ریسپانسی برمیگردونند .

متد .all()
با استفاده از این متد میتوانیم تمامی ابجکت های یک مدل را برگردانیم و در صورت خالی بودن یک کوئری ست خالی برمیگردد.
>>> User.objects.all()


متد .get()
با استفاده از این متد میتوانیم یک ابجکت را از دیتابیس بگیریم.
>>> user1 = User.objects.get(username="my_name")
>>> print(user1.username, user1.score)
my_name 17


متد .exclude()
برعکس متد filter که جلو تر گفته شده تمامی ابجکت هایی که داخل دیتابیس هستند و از شرطی که تعیین کردیم صدق نمیکنند را بگیریم.
>>> User.objects.exclude(score=10)

تمامی ابجکت هایی که نمرات انها برابر با 10 نیست را برمیگرداند.


متد .order_by()
با این متد می‌توانیم ابجکت یک مدل را بر اساس یک ویژگی مرتب کنیم.
>>> User.objects.order_by('score')

در حال حاضر به صورت صعودی مرتب میشوند.
در این تابع می‌توانید با گذاشتن یک - قبل از نام فیلد، ترتیب را به صورت نزولی دریافت کنید.
>>> User.objects.order_by('-score')


متد .count()

با این متد می‌توانیم تعداد اعضای QuerySet را بشماریم.
>>> User.objects.count()
21
>>> User.objects.filter(age=18).count()
2



متد .filter()

با استفاده از این متد می‌توانیم تمامی اشیاء یک مدل را که در شرایط داخل پرانتز صدق می‌کنند را بگیریم.
User.objects.filter(score=10)

در این متد ما برای ایجاد محدودیت بیشتر میتوانیم با استفاده از این لیست این محدودیت هارو ایجاد کنیم .
در صورت تمایل هم میتونید با سرچ Field Lookups اطلاعات بیشتری بدست بیارید.

برابری   ‌ exact , iexact
سرچ کردن در متن contains , icontains
کوچک‌تر lt
کوچک‌تر یا مساوی lte
بزرگ‌تر gt
بزرگ‌تر یا مساوی gte
بررسی ابتدای رشته‌ها startswith , istartswith
بررسی انتهای رشته‌ها endswith , iendswith
عملگر in پایتونی in

#django

Group: @azad_program
Channel: @kiau_program
❤5⚡1👍1
Django Honeypot🍯

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


مزایا:
ردیابی حملات: شما میتونین هر کسی که سعی داره بدون اجازه وارد پنل ادمین بشه رو شناسایی کنین

کاهش ریسک حملات: هکرها به اشتباه فکر میکنن وارد صفحه اصلی شدن و شما میتونین از این فرصت استفاده کنین تا حمله رو مدیریت کنین

سادگی استفاده: بدون نیاز به تغییرات پیچیده توی پروژه تون به راحتی میتونید این پکیج رو نصب و استفاده کنین.


چطور از django honeypot استفاده کنیم؟

1) اول از همه باید پکیج رو نصب کنی
pip install django-admin-honeypot


2) بعد از نصب باید django honeypot رو به تنظیمات پروژه اضافه کنی توی فایل settings.py خط زیر رو

اضافه کنید

‏INSTALLED_APPS = [
#another_apps
'admin_honeypot',‏

]


.3) حالا باید به مسیر جعلی برای پنل ادمین بسازید توی فایل urls.py این تغییرات رو اعمال کنید:
from django.urls import path, include‏

‏import admin_honeypot.urls‏

‏urlpatterns = [‏

‏path('admin/', include('admin_honeypot.urls',‏ namespace='admin_honeypot')),‏

‏path('real-admin/', admin.site.urls)

]

مسیر /admin/ حالا صفحه جعلی ادمینه که تله ی شماست .

مسیر real-admin / هم مسیر واقعی پنل ادمین شماست که فقط خودتون میدونید.


محدودیت‌ها:

این روش ممکن است برای ربات‌های پیشرفته که فیلدهای مخفی را نادیده می‌گیرند، مؤثر نباشد.
برای امنیت بهتر، می‌توان از Honeypot همراه با سایر روش‌ها مانند CAPTCHA یا Rate Limiting استفاده کرد.

جمع‌بندی:

هانی‌پات یک روش ساده و کارآمد برای جلوگیری از اسپم فرم‌ها در جنگو است. اگر به دنبال راهکاری سبک و بدون تأثیر منفی بر تجربه کاربری هستید، این روش می‌تواند انتخاب خوبی باشد.

Group: @azad_program
Channel: @kiau_program
👍8❤4
🌐 اولین وب‌سایت دنیا: داستان شروع اینترنت!

دنیای اینترنت و صفحات وب که امروزه باهاش در ارتباطیم، 34 سال پیش از یه سایت ساده شروع شد. این سایت توسط تیم برنرز-لی (Tim Berners-Lee)، دانشمند بریتانیایی، در سال 1991 در دسترس عموم قرار گرفت.

در 29 آذر 1369، برنرز-لی در مرکز تحقیقات هسته‌ای اروپا (CERN) متوجه شد دانشمندان برای اشتراک اطلاعات به سیستمی ساده نیاز دارن. اون شبکه‌ای جهانی طراحی کرد که بعدها به World Wide Web (WWW) معروف شد. ابتدا این وب‌سایت فقط برای کارمندان CERN قابل دسترسی بود اما در مرداد 1370 عمومی شد.

از اونجایی که مفهوم Server تازه بود، تیم یادداشتی با جوهر قرمز روی کامپیوتر NeXT (میزبان پروژه) نوشت: "این دستگاه یک سرور است؛ آن را خاموش نکنید!"

آدرس وب‌سایت:
http://info.cern.ch

این سایت ساده توضیح می‌داد وب چیه و چطور می‌شه ازش استفاده کرد. بدون عکس، صرفاً با HTML، پروتکل HTTP و یک URL ساخته شده بود.

Group: @azad_program
Channel:
@kiau_program
👍7❤3
🌐 مفهوم REST Api و RESTful API!
امروز میخوایم درمورد یک ساختار و معماری مهم در API ها به اسم REST و REST Api صحبت کنیم.

⁉️ اما API اصلا چیه؟
ببینید، API مثل یه جور پل ارتباطی میمونه بین دو برنامه یا Server و Client، به زبان ساده تر، API یسری قوانین و دستورالعمله که به برنامه ها میگه چطوری باهم حرف بزنن و اطلاعات رد و بدل کنن.
فرض کنین شما یه اپلیکیشن هواشناسی دارید. این اپلیکیشن برای اینکه اطلاعات هوا رو نشون بده باید با یه سرویس هواشناسی ارتباط برقرار کنه. این ارتباط از طریق API انجام میشه.

⭕️ اول از همه REST Api چیه؟
یه REST API در واقع یه راه ارتباطی بین دو تا نرم‌افزاره که از اصول REST پیروی میکنه. به زبان ساده‌تر، یه سری قوانین و استانداردهایی رو رعایت می‌کنه تا نرم‌افزارها بتونن به راحتی با هم حرف بزنن و اطلاعات رد و بدل کنن.

چی کار میکنه؟
به نرم‌افزارها اجازه میده تا داده‌ها رو درخواست بدن، ایجاد کنن، ویرایش کنن یا حذف کنن.

چطوری کار میکنه؟
از پروتکل HTTP برای ارتباط استفاده میکنه (همون پروتکلی که مرورگرها برای باز کردن صفحات وب استفاده میکنن).

چه شکلیه؟
معمولاً از فرمت‌هایی مثل JSON یا XML برای انتقال داده‌ها استفاده میکنه.

‼️ تفاوت REST Api با RESTful API
یک REST Api از پروتکل HTTP استفاده میکنه و یکسری از عملیات CRUD (ایجاد، خواندن، بروزرسانی، حذف) رو انجام میده اما ممکنه همه اصول REST رو رعایت نکنه.

وقتی که یک REST Api به طور کامل به اصول، قواعد، قوانین و ساختار معماری REST پایبند باشه و تمامی عملیات رو به طول کامل انجام بده به یک RESTful API تبدیل میشه

🔸 مفاهیم کلیدی در REST API:
منابع (Resources): هر چیزی که تو یه برنامه میخوایم بهش دسترسی داشته باشیم یه منبع حساب میشه. مثلاً کاربرها، پست ها، محصولات و …

درخواست ها (Requests): درخواست ها مثل دستوراتی هستن که به API میدیم. مثلاً میگیم “همه کاربرهارو بده” یا “یه کاربر جدید اضافه کن”.

پاسخ ها (Responses): پاسخ ها هم مثل جواب هایی هستن که API به ما میده. مثلاً یه لیست از کاربرها یا یه پیام که میگه “کاربر با موفقیت اضافه شد”.

متدهای HTTP: برای اینکه مشخص کنیم چه کاری می خوایم انجام بدیم، از یه سری متدها استفاده میکنیم،

مثل:
GET: برای گرفتن اطلاعات
POST: برای اضافه کردن اطلاعات
PUT: برای ویرایش اطلاعات
DELETE: برای حذف اطلاعات

🔸 یه مثال ساده از REST API:
فرض کنید یه اپلیکیشن داریم که لیست کتاب ها رو نشون میده.

درخواست GET /books: یعنی “همه کتاب ها رو بده”.
پاسخ: یه لیست از همه کتاب ها برمیگرده.

درخواست POST /books: یعنی “یه کتاب جدید اضافه کن”.
پاسخ: یه پیام میاد که میگه “کتاب با موفقیت اضافه شد”.

Group: @azad_program
Channel:
@kiau_program
👍5❤2