Forwarded from Ninja Learn | نینجا لرن
خب خب خب WebSocket در Fastapi
امروز میخوام دربارهی یه موضوع باحال و کاربردی تو دنیای وب حرف بزنم: پیادهسازی WebSocket در FastAPI اگه دنبال ساخت اپلیکیشنهای realtime مثل چت، داشبوردهای زنده یا بازیهای آنلاین هستین، این پست براتون خیلی مفیده. پس با من همراه باشین تا با هم یاد بگیریم WebSocket چیه و چطور میتونیم تو FastAPI ازش استفاده کنیم.
🧠 WebSocket چیه و چرا مهمه؟
WebSocket یه پروتکل ارتباطیه که به کلاینت (مثل مرورگر) و سرور اجازه میده یه ارتباط دوطرفه و همیشگی داشته باشن. برعکس HTTP که فقط یه درخواست میفرستی و یه پاسخ میگیری، WebSocket این امکان رو میده که هر دو طرف هر وقت خواستن پیام بفرستن و بگیرن، بدون اینکه نیاز باشه کلاینت مدام درخواست بفرسته. این برای اپلیکیشنهایی که نیاز به آپدیتهای زنده دارن، مثل چت رومها، اعلانهای realtime یا بازیهای آنلاین، عالیه
🚀 FastAPI و WebSocket
FastAPI یه فریمورک وب مدرن و سریع برای پایتونه. یکی از قابلیتهای باحالش هم پشتیبانی از WebSocketه. FastAPI از Starlette استفاده میکنه (یه فریمورک ASGI سبک و قدرتمند)، و همین باعث میشه بتونیم به راحتی WebSocket رو پیادهسازی کنیم.
🛠 چطوری WebSocket رو تو FastAPI پیادهسازی کنیم؟
برای شروع، باید از کلاس
تو این کد:
به این میگن یه Echo Server ساده هر چی کلاینت بفرسته، سرور عینشو برمیگردونه.
📡 یه مثال پیشرفتهتر: چت روم با WebSocket
حالا بیاین یه چیز باحالتر بسازیم، مثلاً یه چت روم که چندتا کلاینت بتونن بهش وصل بشن و پیامهاشون رو به هم بفرستن. برای این کار، باید اتصالهای فعال رو مدیریت کنیم. یه کلاس به اسم ConnectionManager
اینجا چی داریم؟
ConnectionManager یه کلاسه که اتصالهای فعال رو تو یه لیست نگه میداره.
وقتی کلاینت وصل میشه، به لیست اضافه میشه (connect) و وقتی قطع میشه، حذف میشه (disconnect).
send_personal_message به یه کلاینت خاص پیام میفرسته.
broadcast به همه کلاینتهای وصلشده پیام رو میفرسته.
تو endpoint، پیام کلاینت رو میگیریم، به خودش یه جواب شخصی میدیم و به بقیه هم broadcast میکنیم.
جمعبندی ✍
WebSocket تو FastAPI به شما این امکان رو میده که اپلیکیشنهای realtime و جذاب بسازین. از چت رومها گرفته تا داشبوردهای زنده و بازیهای آنلاین.
خب اینم از این امید وارم مفید بوده باشه :]
➖➖➖➖➖➖➖➖➖
امروز میخوام دربارهی یه موضوع باحال و کاربردی تو دنیای وب حرف بزنم: پیادهسازی WebSocket در FastAPI اگه دنبال ساخت اپلیکیشنهای realtime مثل چت، داشبوردهای زنده یا بازیهای آنلاین هستین، این پست براتون خیلی مفیده. پس با من همراه باشین تا با هم یاد بگیریم WebSocket چیه و چطور میتونیم تو FastAPI ازش استفاده کنیم.
🧠 WebSocket چیه و چرا مهمه؟
WebSocket یه پروتکل ارتباطیه که به کلاینت (مثل مرورگر) و سرور اجازه میده یه ارتباط دوطرفه و همیشگی داشته باشن. برعکس HTTP که فقط یه درخواست میفرستی و یه پاسخ میگیری، WebSocket این امکان رو میده که هر دو طرف هر وقت خواستن پیام بفرستن و بگیرن، بدون اینکه نیاز باشه کلاینت مدام درخواست بفرسته. این برای اپلیکیشنهایی که نیاز به آپدیتهای زنده دارن، مثل چت رومها، اعلانهای realtime یا بازیهای آنلاین، عالیه
🚀 FastAPI و WebSocket
FastAPI یه فریمورک وب مدرن و سریع برای پایتونه. یکی از قابلیتهای باحالش هم پشتیبانی از WebSocketه. FastAPI از Starlette استفاده میکنه (یه فریمورک ASGI سبک و قدرتمند)، و همین باعث میشه بتونیم به راحتی WebSocket رو پیادهسازی کنیم.
🛠 چطوری WebSocket رو تو FastAPI پیادهسازی کنیم؟
برای شروع، باید از کلاس
WebSocket تو FastAPI استفاده کنیم. بیاین با یه مثال ساده شروع کنیم:from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"پیامت این بود: {data}")
تو این کد:
یه endpoint به اسم /ws ساختیم.وقتی کلاینت بهش وصل میشه، سرور با accept() ارتباط رو قبول میکنه.بعدش تو یه حلقه پیامهای کلاینت رو میگیره و همونو برمیگردونه.
به این میگن یه Echo Server ساده هر چی کلاینت بفرسته، سرور عینشو برمیگردونه.
📡 یه مثال پیشرفتهتر: چت روم با WebSocket
حالا بیاین یه چیز باحالتر بسازیم، مثلاً یه چت روم که چندتا کلاینت بتونن بهش وصل بشن و پیامهاشون رو به هم بفرستن. برای این کار، باید اتصالهای فعال رو مدیریت کنیم. یه کلاس به اسم ConnectionManager
میسازیم که لیست اتصالها رو نگه داره و بتونیم بهشون پیام بفرستیم یا به همه broadcast کنیم.from fastapi import FastAPI, WebSocket
from typing import List
app = FastAPI()
class ConnectionManager:
def __init__(self):
self.active_connections: List[WebSocket] = []
async def connect(self, websocket: WebSocket):
await websocket.accept()
self.active_connections.append(websocket)
def disconnect(self, websocket: WebSocket):
self.active_connections.remove(websocket)
async def send_personal_message(self, message: str, websocket: WebSocket):
await websocket.send_text(message)
async def broadcast(self, message: str):
for connection in self.active_connections:
await connection.send_text(message)
manager = ConnectionManager()
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await manager.connect(websocket)
try:
while True:
data = await websocket.receive_text()
await manager.send_personal_message(f"تو نوشتی: {data}", websocket)
await manager.broadcast(f"یکی گفت: {data}")
except Exception as e:
print(f"خطا: {e}")
finally:
manager.disconnect(websocket)
اینجا چی داریم؟
ConnectionManager یه کلاسه که اتصالهای فعال رو تو یه لیست نگه میداره.
وقتی کلاینت وصل میشه، به لیست اضافه میشه (connect) و وقتی قطع میشه، حذف میشه (disconnect).
send_personal_message به یه کلاینت خاص پیام میفرسته.
broadcast به همه کلاینتهای وصلشده پیام رو میفرسته.
تو endpoint، پیام کلاینت رو میگیریم، به خودش یه جواب شخصی میدیم و به بقیه هم broadcast میکنیم.
جمعبندی ✍
WebSocket تو FastAPI به شما این امکان رو میده که اپلیکیشنهای realtime و جذاب بسازین. از چت رومها گرفته تا داشبوردهای زنده و بازیهای آنلاین.
خب اینم از این امید وارم مفید بوده باشه :]
#️⃣ #fastapi #backend #python
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
خب خب خب آشنایی با Windows Subsystem for Linux (WSL) 🐧
امروز میخوایم دربارهی یه ابزار کاربردی تو ویندوز حرف بزنیم: Windows Subsystem for Linux یا به اختصار WSL. اگه تا حالا باهاش کار نکردین، حتماً این پست رو بخونین، چون قراره کلی چیزای جدید یاد بگیرین
🧠 WSL چیه؟
Windows Subsystem for Linux (WSL) یه ویژگی تو ویندوز ۱۰ و ۱۱ هست که به شما اجازه میده یه محیط لینوکس رو مستقیماً روی ویندوز اجرا کنین. یعنی میتونین دستورات لینوکس رو اجرا کنین، فایلهای لینوکس رو مدیریت کنین و حتی برنامههای لینوکسی رو اجرا کنین، همه اینا بدون اینکه نیاز به ماشین مجازی یا دوال بوت داشته باشین. این ابزار برای توسعهدهندهها، به خصوص کسایی که با پروژههای open source کار میکنن، خیلی مفیده چون منابع کمتری نسبت به یه ماشین مجازی کامل مصرف میکنه و کار باهاش خیلی راحتتره.
📚 نسخههای WSL
WSL دو نسخه داره که هر کدوم ویژگیهای خاص خودشون رو دارن:
1️⃣ WSL 1:
این نسخه سال ۲۰۱۶ معرفی شد و یه لایهی سازگاری بود که از کرنل ویندوز برای اجرای برنامههای لینوکسی استفاده میکرد. ولی چون از کرنل لینوکس واقعی استفاده نمیکرد، بعضی وقتها محدودیتهایی داشت.
2️⃣ WSL 2:
این نسخه سال ۲۰۱۹ اومد و یه کرنل لینوکس واقعی رو تو یه ماشین مجازی سبک اجرا میکنه. به همین خاطر، عملکرد و سازگاری بهتری داره، به خصوص تو عملیات سنگین مثل کار با فایلها.
WSL 2 از تکنولوژی Hyper-V (یه سیستم مجازیسازی تو ویندوز) استفاده میکنه و به همین دلیل توصیه میشه ازش استفاده کنین، چون امکانات بیشتری داره و سریعتره.
🚀 نصب WSL
نصب WSL خیلی سادست و بسته به نسخهی ویندوزتون فرق میکنه:
تو ویندوز ۱۱:
WSL به صورت پیشفرض نصب شده، ولی باید یه توزیع لینوکس (مثل Ubuntu یا Debian) رو از Microsoft Store دانلود و نصب کنین.
تو ویندوز ۱۰:
باید WSL رو دستی نصب کنین. برای این کار، PowerShell رو با دسترسی Administrator باز کنین و دستور زیر رو اجرا کنین:
این دستور WSL رو همراه با یه توزیع پیشفرض (معمولاً Ubuntu) نصب میکنه. اگه میخواین توزیع دیگهای نصب کنین، از این دستور استفاده کنین:
مثلاً برای نصب Debian:
WSL از توزیعهای مختلفی مثل Ubuntu، Debian، Kali و Fedora پشتیبانی میکنه که میتونین هر کدوم رو که دوست دارین انتخاب کنین.
🛠 استفاده از WSL
با WSL، میتونین یه محیط توسعهی کامل لینوکس رو تو ویندوز داشته باشین. چند تا مثال از کارایی که میتونین بکنین:
دستورات لینوکس:
از دستوراتی مثل
ویرایشگرهای متنی:
میتونین از Vim، Emacs یا حتی VS Code با افزونهی WSL کار کنین.
ابزارهای توسعه: Git، Docker، Node.js و خیلی چیزای دیگه رو نصب و استفاده کنین.
سرورهای وب:
میتونین سرورهایی مثل Apache یا Nginx رو تو WSL اجرا کنین و با مرورگر ویندوز بهشون دسترسی داشته باشین.
📂 دسترسی به فایلها
یکی از ویژگیهای جذاب WSL اینه که میتونین بین ویندوز و لینوکس فایلهاتون رو به اشتراک بذارین:
از WSL به ویندوز:
فایلهای ویندوز تو مسیر
از ویندوز به WSL:
فایلهای لینوکس رو میتونین تو File Explorer ویندوز از مسیر
برای عملکرد بهتر، پیشنهاد میشه فایلهای پروژهتون رو تو فایلسیستم لینوکس (نه درایو ویندوز) نگه دارین، به خصوص اگه از WSL 2 استفاده میکنین.
🔍 نکات و ترفندها
عملکرد بهتر با WSL 2:
WSL 2 به خاطر استفاده از کرنل واقعی لینوکس و Hyper-V، تو عملیات سنگین مثل کار با فایلها خیلی بهتر عمل میکنه.
مدیریت توزیعها:
میتونین چند تا توزیع لینوکس نصب کنین و با دستور
بینشون جابهجا بشین.
بهروزرسانی WSL:
برای آپدیت کردن WSL، از این دستور استفاده کنین:
دسترسی به GPU:
WSL 2 از GPU پشتیبانی میکنه که برای کارهای ماشین لرنینگ یا گرافیکی عالیه.
محدودیتها:
WSL از systemd پشتیبانی نمیکنه، که ممکنه برای بعضی سرویسها مشکلساز باشه، ولی راهحلهای غیررسمی برای این موضوع وجود داره.
✍️ جمعبندی
Windows Subsystem for Linux (WSL) یه ابزار فوقالعادهست که به شما اجازه میده ویندوز و لینوکس رو با هم داشته باشین. چه توسعهدهنده باشین، چه فقط بخواین لینوکس رو امتحان کنین، WSL یه راه سریع و ساده برای این کاره.
➖➖➖➖➖➖➖➖➖
امروز میخوایم دربارهی یه ابزار کاربردی تو ویندوز حرف بزنیم: Windows Subsystem for Linux یا به اختصار WSL. اگه تا حالا باهاش کار نکردین، حتماً این پست رو بخونین، چون قراره کلی چیزای جدید یاد بگیرین
🧠 WSL چیه؟
Windows Subsystem for Linux (WSL) یه ویژگی تو ویندوز ۱۰ و ۱۱ هست که به شما اجازه میده یه محیط لینوکس رو مستقیماً روی ویندوز اجرا کنین. یعنی میتونین دستورات لینوکس رو اجرا کنین، فایلهای لینوکس رو مدیریت کنین و حتی برنامههای لینوکسی رو اجرا کنین، همه اینا بدون اینکه نیاز به ماشین مجازی یا دوال بوت داشته باشین. این ابزار برای توسعهدهندهها، به خصوص کسایی که با پروژههای open source کار میکنن، خیلی مفیده چون منابع کمتری نسبت به یه ماشین مجازی کامل مصرف میکنه و کار باهاش خیلی راحتتره.
📚 نسخههای WSL
WSL دو نسخه داره که هر کدوم ویژگیهای خاص خودشون رو دارن:
1️⃣ WSL 1:
این نسخه سال ۲۰۱۶ معرفی شد و یه لایهی سازگاری بود که از کرنل ویندوز برای اجرای برنامههای لینوکسی استفاده میکرد. ولی چون از کرنل لینوکس واقعی استفاده نمیکرد، بعضی وقتها محدودیتهایی داشت.
2️⃣ WSL 2:
این نسخه سال ۲۰۱۹ اومد و یه کرنل لینوکس واقعی رو تو یه ماشین مجازی سبک اجرا میکنه. به همین خاطر، عملکرد و سازگاری بهتری داره، به خصوص تو عملیات سنگین مثل کار با فایلها.
WSL 2 از تکنولوژی Hyper-V (یه سیستم مجازیسازی تو ویندوز) استفاده میکنه و به همین دلیل توصیه میشه ازش استفاده کنین، چون امکانات بیشتری داره و سریعتره.
🚀 نصب WSL
نصب WSL خیلی سادست و بسته به نسخهی ویندوزتون فرق میکنه:
تو ویندوز ۱۱:
WSL به صورت پیشفرض نصب شده، ولی باید یه توزیع لینوکس (مثل Ubuntu یا Debian) رو از Microsoft Store دانلود و نصب کنین.
تو ویندوز ۱۰:
باید WSL رو دستی نصب کنین. برای این کار، PowerShell رو با دسترسی Administrator باز کنین و دستور زیر رو اجرا کنین:
wsl --install
این دستور WSL رو همراه با یه توزیع پیشفرض (معمولاً Ubuntu) نصب میکنه. اگه میخواین توزیع دیگهای نصب کنین، از این دستور استفاده کنین:
wsl --install -d <Distribution Name>
مثلاً برای نصب Debian:
wsl --install -d Debian
WSL از توزیعهای مختلفی مثل Ubuntu، Debian، Kali و Fedora پشتیبانی میکنه که میتونین هر کدوم رو که دوست دارین انتخاب کنین.
🛠 استفاده از WSL
با WSL، میتونین یه محیط توسعهی کامل لینوکس رو تو ویندوز داشته باشین. چند تا مثال از کارایی که میتونین بکنین:
دستورات لینوکس:
از دستوراتی مثل
ls (البته تو لینوکس dir نیست، اینجا منظورم ls-مانندها بود)، grep، awk و غیره استفاده کنین.ویرایشگرهای متنی:
میتونین از Vim، Emacs یا حتی VS Code با افزونهی WSL کار کنین.
ابزارهای توسعه: Git، Docker، Node.js و خیلی چیزای دیگه رو نصب و استفاده کنین.
سرورهای وب:
میتونین سرورهایی مثل Apache یا Nginx رو تو WSL اجرا کنین و با مرورگر ویندوز بهشون دسترسی داشته باشین.
📂 دسترسی به فایلها
یکی از ویژگیهای جذاب WSL اینه که میتونین بین ویندوز و لینوکس فایلهاتون رو به اشتراک بذارین:
از WSL به ویندوز:
فایلهای ویندوز تو مسیر
/mnt/c (یا /mnt/d برای درایوهای دیگه) قابل دسترسی هستن.از ویندوز به WSL:
فایلهای لینوکس رو میتونین تو File Explorer ویندوز از مسیر
\\wsl$\<Distribution Name> ببینین.برای عملکرد بهتر، پیشنهاد میشه فایلهای پروژهتون رو تو فایلسیستم لینوکس (نه درایو ویندوز) نگه دارین، به خصوص اگه از WSL 2 استفاده میکنین.
🔍 نکات و ترفندها
عملکرد بهتر با WSL 2:
WSL 2 به خاطر استفاده از کرنل واقعی لینوکس و Hyper-V، تو عملیات سنگین مثل کار با فایلها خیلی بهتر عمل میکنه.
مدیریت توزیعها:
میتونین چند تا توزیع لینوکس نصب کنین و با دستور
wsl -d <Distribution Name>
بینشون جابهجا بشین.
بهروزرسانی WSL:
برای آپدیت کردن WSL، از این دستور استفاده کنین:
wsl --update
دسترسی به GPU:
WSL 2 از GPU پشتیبانی میکنه که برای کارهای ماشین لرنینگ یا گرافیکی عالیه.
محدودیتها:
WSL از systemd پشتیبانی نمیکنه، که ممکنه برای بعضی سرویسها مشکلساز باشه، ولی راهحلهای غیررسمی برای این موضوع وجود داره.
✍️ جمعبندی
Windows Subsystem for Linux (WSL) یه ابزار فوقالعادهست که به شما اجازه میده ویندوز و لینوکس رو با هم داشته باشین. چه توسعهدهنده باشین، چه فقط بخواین لینوکس رو امتحان کنین، WSL یه راه سریع و ساده برای این کاره.
#️⃣ #porgramming #wsl #linux #windows
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Forwarded from کاف
👍1😁1
❔ پروتکل OAuth چیه؟
پروتکل OAuth یک پروتکل امنیتی هست که به شما این امکان رو میده که بدون به اشتراک گذاشتن پسوردتون، به سرویسهای مختلف دسترسی پیدا کنید. 🔐
برای مثال، وقتی وارد یک سایت میشید با حساب گوگل، گیتهاب یا فیسبوک، فقط به اطلاعاتی که خودتون اجازه دادید دسترسی میده و نیازی به پسورد شما نیست. 🔐
این پروتکل بهویژه برای احراز هویت در اپلیکیشنهای موبایل و وب استفاده میشه، به طوری که به جای وارد کردن پسورد، از توکنها برای دسترسی امن به منابع استفاده میکنید. 🔒
@softwrteach
--------‐----------------
🌐💻
پروتکل OAuth یک پروتکل امنیتی هست که به شما این امکان رو میده که بدون به اشتراک گذاشتن پسوردتون، به سرویسهای مختلف دسترسی پیدا کنید. 🔐
برای مثال، وقتی وارد یک سایت میشید با حساب گوگل، گیتهاب یا فیسبوک، فقط به اطلاعاتی که خودتون اجازه دادید دسترسی میده و نیازی به پسورد شما نیست. 🔐
این پروتکل بهویژه برای احراز هویت در اپلیکیشنهای موبایل و وب استفاده میشه، به طوری که به جای وارد کردن پسورد، از توکنها برای دسترسی امن به منابع استفاده میکنید. 🔒
@softwrteach
--------‐----------------
🌐💻
👍1
Forwarded from Fara Code | برنامه نویسی (M.z)
SQL vs MySQL
وقتی بحث دیتابیس وسط میاد، خیلیا این دو تا رو(SQL ,MySQL) یکی میدونن ولی در واقع این دوتا دو چیز کاملا متفاوتن...
●خوب Sql یه زبان استاندارِ که برای مدیریت و دستکاری دیتابیس های رابطه ای استفاده میشن،در کل یعنی میتونیم رو داده ها عملیات crud رو انجام بدیم بعلاوه میتونیم اطلاعات رو بازیابی کنیم.
● ولی MySQL یه سیستم مدیریت دیتابیس که به ما اجازه عملیات crud و مدیریت داده ها رو میده.
بخوایم یه مثال بزنیم میتونیم بگیم
کهSQL مثل دستور آشپزی هستش که نحوه پخت غذا رو توضیح میده..
و MySQL یک آشپزخونس که غذارو داخلش میپزیم ..
ویژگی های SQL:
۱ یه زبان برای کار با دیتابیسهاست.
۲ به هیچ سیستم خاصی وابسته نیست.
۳ روی دیتابیسهای مختلف مثلPostgrSQL و SQL Server هم کار میکنه.
۴ فقط دستورات و قواعد دیتابیس رو تعریف میکنه.
ویژگی های MySQL:
۱ یه نرمافزار دیتابیس (DBMS) که از SQL استفاده میکن
۲ یه نوع خاص از سیستمهای مدیریت دیتابیس رابطهای (RDBMS) هست.
۳ فقط مربوط به خود MySQL هست.
۴ یه ابزار واقعی برای ذخیره و مدیریت دادههاست.
@Learrning_Python
وقتی بحث دیتابیس وسط میاد، خیلیا این دو تا رو(SQL ,MySQL) یکی میدونن ولی در واقع این دوتا دو چیز کاملا متفاوتن...
●خوب Sql یه زبان استاندارِ که برای مدیریت و دستکاری دیتابیس های رابطه ای استفاده میشن،در کل یعنی میتونیم رو داده ها عملیات crud رو انجام بدیم بعلاوه میتونیم اطلاعات رو بازیابی کنیم.
● ولی MySQL یه سیستم مدیریت دیتابیس که به ما اجازه عملیات crud و مدیریت داده ها رو میده.
بخوایم یه مثال بزنیم میتونیم بگیم
کهSQL مثل دستور آشپزی هستش که نحوه پخت غذا رو توضیح میده..
و MySQL یک آشپزخونس که غذارو داخلش میپزیم ..
ویژگی های SQL:
۱ یه زبان برای کار با دیتابیسهاست.
۲ به هیچ سیستم خاصی وابسته نیست.
۳ روی دیتابیسهای مختلف مثلPostgrSQL و SQL Server هم کار میکنه.
۴ فقط دستورات و قواعد دیتابیس رو تعریف میکنه.
ویژگی های MySQL:
۱ یه نرمافزار دیتابیس (DBMS) که از SQL استفاده میکن
۲ یه نوع خاص از سیستمهای مدیریت دیتابیس رابطهای (RDBMS) هست.
۳ فقط مربوط به خود MySQL هست.
۴ یه ابزار واقعی برای ذخیره و مدیریت دادههاست.
@Learrning_Python
👍2
Forwarded from Fara Code | برنامه نویسی (M.z)
دکوراتور ها در پایتون
تا حالا شده بخوای بدون تغییر در ساختار اصلی یه تابع، یه قابلیت جدید بهش اضافه کنی؟
مثلاً یه لاگ بگیری، زمان اجراشو حساب کنی، یا قبل از اجراش چک کنی که ورودیهاش معتبرن یا نه؟
اینجاست که دکوراتورها (Decorators) وارد میشن!
دکوراتور یه تابعی هست که یه تابع دیگه رو میگیره، پردازشهایی روش انجام میده و در نهایت یه نسخه جدید از اون تابع رو برمیگردونه و باعث افزایش خوانایی و بهینهسازی کد میشن.
🎯 چند کاربرد معروف دکوراتورها
1 ثبت لاگها: بررسی این که چه زمانی یه تابع اجرا شده
2 کنترل سطح دسترسی: چک کردن اینکه کاربر مجوز لازم داره یا نه
3 کش کردن: ذخیره نتایج برای بهینهسازی اجراهای بعدی
🔍 مثال:
اندازهگیری زمان اجرای تابع:
📌 خروجی:
🎯 چرا از دکوراتورها استفاده کنیم؟
کد رو تمیزتر و خواناتر میکنه
بدون تغییر در توابع، ویژگیهای جدید اضافه میکنیم
قابلیت استفاده مجدد از کد رو افزایش میده
تا حالا از دکوراتور ها استفاده کردید؟
#python
@Learrning_Python
تا حالا شده بخوای بدون تغییر در ساختار اصلی یه تابع، یه قابلیت جدید بهش اضافه کنی؟
مثلاً یه لاگ بگیری، زمان اجراشو حساب کنی، یا قبل از اجراش چک کنی که ورودیهاش معتبرن یا نه؟
اینجاست که دکوراتورها (Decorators) وارد میشن!
دکوراتور یه تابعی هست که یه تابع دیگه رو میگیره، پردازشهایی روش انجام میده و در نهایت یه نسخه جدید از اون تابع رو برمیگردونه و باعث افزایش خوانایی و بهینهسازی کد میشن.
🎯 چند کاربرد معروف دکوراتورها
1 ثبت لاگها: بررسی این که چه زمانی یه تابع اجرا شده
2 کنترل سطح دسترسی: چک کردن اینکه کاربر مجوز لازم داره یا نه
3 کش کردن: ذخیره نتایج برای بهینهسازی اجراهای بعدی
🔍 مثال:
اندازهگیری زمان اجرای تابع:
Copy
Edit
import time
def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f" runtime : {end_time - start_time:.5f} sec")
return result
return wrapper
@timer_decorator
def heavy_function():
time.sleep(2)
print(" function is run")
heavy_function()
📌 خروجی:
function is run
runtime: 2.00012 sec
🎯 چرا از دکوراتورها استفاده کنیم؟
کد رو تمیزتر و خواناتر میکنه
بدون تغییر در توابع، ویژگیهای جدید اضافه میکنیم
قابلیت استفاده مجدد از کد رو افزایش میده
تا حالا از دکوراتور ها استفاده کردید؟
#python
@Learrning_Python
خووب
امروز یه مبحثک میخوایم استارتشو بزنیم که به نظرم خیلی نیاز و تقریبا هرکی که برنامه نویسی میکنه باهاش سر و کله میزنه
و قراره به صورت تخصصی از صفر براش محتوا تولید کنیم
البته بگم که این به این معنی نیس که همه مطالبو میگیم و کامل کامله...
این مطالب کلیاتی رو پوشش میده و میتونید منابع زیادی رو بعد از اون بخونید (حالا در ادامه منابعی رو خدمتتون معرفی میکنم)
قبل از شروع:
محتوا به صورت متنی است البته بعضی جاها نیاز باشه عکس و ویدیوم میگیرم
#git
امروز یه مبحثک میخوایم استارتشو بزنیم که به نظرم خیلی نیاز و تقریبا هرکی که برنامه نویسی میکنه باهاش سر و کله میزنه
و قراره به صورت تخصصی از صفر براش محتوا تولید کنیم
البته بگم که این به این معنی نیس که همه مطالبو میگیم و کامل کامله...
این مطالب کلیاتی رو پوشش میده و میتونید منابع زیادی رو بعد از اون بخونید (حالا در ادامه منابعی رو خدمتتون معرفی میکنم)
قبل از شروع:
محتوا به صورت متنی است البته بعضی جاها نیاز باشه عکس و ویدیوم میگیرم
#git
Forwarded from Python Hints
گفتم سال جدیدی یک لیستی از چیزهایی که یک
نکته مهم : من ۹۹.۹٪ وقتا فقط
۱- یک سری چیزها هست که شما باید بلد باشی ربطی به جنگو هم نداره؛ اگر میخوای پیشرفت کنی باید بتونی با اینا کار کنی:
بعضی وقتا
درحد
اگر تاحالا با
باقی موارد رو ولی کم کم یادبگیرید؛ کمی یادگیری - بعد تمرین یا استفاده توی پروژه - به چالش و مشکل خوردن - دوباره یادگیری (ادامه یادگیری) و اینکار رو تکرار کنید.
یادبگیرید هر کدوم از موارد بالا چه زمانی استفاده میشه و برای چه کاری این موضوع خیلی مهم هست؛ کی باید استفاده کنید و کی نباید استفاده کنید.
اما برای خود
استاندارد لاگ نویسی هم که درموردش قبلا یک صحبتی داشتیم اون حداقلش هست و بهترش اینه که به ابزارهای موجود وصل بشه.
یک سری چیزا هم توی خود
واسه همه اینها توی سطوح مختلف کلی ویدئو یوتیوب هست و برای مواردی هم که نیست مطمئنم به زودی درست خواهند کرد دوستان؛ ولی نکته مهمتر اینه که یادبگیرید داکیومنت هم بخونید و خودتون رو آپدیت نگه دارید.
پینوشت:
شخصا برنامهای برای ساخت آموزش روی این مباحث یا پروژهها ندارم.
Django Developer باید بلد باشه رو بهتون بدم؛ این موارد حداقل چیزهایی هست که به محض ورود به هر پروژه استاندارد Django باید بلد باشید.نکته مهم : من ۹۹.۹٪ وقتا فقط
Django Rest Framework استفاده میکنم پس توی متن هرجا گفتم Django منظورم همون DRF هست.۱- یک سری چیزها هست که شما باید بلد باشی ربطی به جنگو هم نداره؛ اگر میخوای پیشرفت کنی باید بتونی با اینا کار کنی:
Linux, PostgreSQL, Docker & Docker Compose, Redis, Nginx, Celery & Celery beatبعضی وقتا
RabbitMQ, Kafka هم نیازمندی هست؛ بسته به سطح شما به مرور زمان توی موارد بالا حرفهای تر میشید. لینوکس رو خیلیها کنار میذارند که خیلی اشتباه هست؛ ببین کل استک شما قراره بره روی docker, k8s, podman یا ... وقتی یک اتفاقی توی سیستم میوفته و لاگ سرور بهت داده میشه هم container شما لینوکس هست هم ۹۹.۹٪ سرور شما؛ اگر نتونی اون مشکل رو بازسازی کنی چطوری میخوای تست بگیری و متوجهاش بشی ؟درحد
LPIC1 هم کفایت میکنه (اگر خواستید مدرک بگیرید؛ پیشنهاد میکنم حتما برای آزمونهای redhat بخونید)اگر تاحالا با
Linux کار نکردید؛ پیشنهاد نصب و ... بهتون نمیدم؛ از wsl برای تمرین کردن آنچه که لازم هست استفاده کنید و محیط گرافیکی رو بندازید دور؛ شما روی سرور محیط گرافیکی ندارد (درست تمرین کنید).باقی موارد رو ولی کم کم یادبگیرید؛ کمی یادگیری - بعد تمرین یا استفاده توی پروژه - به چالش و مشکل خوردن - دوباره یادگیری (ادامه یادگیری) و اینکار رو تکرار کنید.
یادبگیرید هر کدوم از موارد بالا چه زمانی استفاده میشه و برای چه کاری این موضوع خیلی مهم هست؛ کی باید استفاده کنید و کی نباید استفاده کنید.
اما برای خود
Django حداقل چیزهایی که باید همزمان با Django بلد باشید؛ نشده جونیور (حتی بدون سابقه کاری) بیاد پیشم و این موارد رو بلد باشه (به فرض اینکه پایتون رو اصولی یاد گرفته) و توی مصاحبه رد بشه؛ اصلا تا حالا نداشتم واقعا میگم :pytest (basics), djagno-silk, drf-spectacular, faker, factory-boy, djangorestframework-simplejwt, django-axes, django-storageاستاندارد لاگ نویسی هم که درموردش قبلا یک صحبتی داشتیم اون حداقلش هست و بهترش اینه که به ابزارهای موجود وصل بشه.
یک سری چیزا هم توی خود
Django هست؛ مثل throttling, middleware, ... که مفاهیمی هست که روی بکند داریم و فارغ از فریمورک باید بلد باشید برای همین صحبتی راجب این موارد ندارم.واسه همه اینها توی سطوح مختلف کلی ویدئو یوتیوب هست و برای مواردی هم که نیست مطمئنم به زودی درست خواهند کرد دوستان؛ ولی نکته مهمتر اینه که یادبگیرید داکیومنت هم بخونید و خودتون رو آپدیت نگه دارید.
پینوشت:
شخصا برنامهای برای ساخت آموزش روی این مباحث یا پروژهها ندارم.
ماشین حساب شما سالم است؟
دیشب مشغول کدزدن با دوست جدیدمان جناب cursor بودم که جایی دیدم روی تست کیس خاصی کد درست کار نمیکند (یک جورهایی مساله parse کردن یک جور درخت بود). هر چه خودم تقلا کردم بفهمم چرا این طور شده نتوانستم. cursor را ندا دادم روی چنین تست کیسی درست کار نمیکنه ببین مشکل از کجاست. cursor هم شروع کرد به تقلا. به سرعت نوشت مشکل چیست و کد را عوض کرد و بعد هم شروع کرد خودش به نوشتن تست کیس. من دیگر از ماجرا پرت شده بودم و فقط شاهد تلاشهای این زبان بسته بودم که خودش تست کیس مینوشت و اجرا میکرد و گاها هم میدید روی تست کیس جواب نمیگیرد کد را تغییر میداد. چند دقیقهای تقلایش طول کشید و نهایتا گفت که great و تمام. کد با آن چیزی که من اول نوشته بودم بسیار تفاوت داشت طوری که برای فهمیدن منطقش باید از خود cursor دوباره میپرسیدم. شروع کردم چند testcase جدید را تست گرفتن و دیدم که روی همه آنها درست جواب میدهد. مساله تبدیل به یک مساله تصمیم ناپذیر شده بود. نمیتوانستم بگویم چرا درست کار میکند ولی هر چه تست کیس امتحان میکردم درست بود. فکر کردم دیدم آیا باید رها کنم؟ اگر جایی اشتباه کرده بود چه؟
ناخودآگاه یاد مثال همیشگی مقایسه LLM و ماشین حساب افتادم. فرض کنید الان یک جمع و ضرب چند رقمی را به ماشین حساب میدهیم و آن به ما جواب را میدهد. از کجا معلوم که اشتباه نکند؟ مثلا چه میدانم پالسی، سیمی، موجی روی هم بیافتند و یک رقم اشتباه شود. در این صورت آیا ما اصلا اغلب متوجه میشویم ؟!؟ کدام یک از ما نتیجه ماشین حساب را وریفای میکنیم؟ احتمالا روزهای اولی هم که ماشین حسابها اختراع شده بودند و مکانیکی تر از امروز بودند، افراد به آنها اعتماد کامل نداشتند و جواب نهاییشان را به نحوی وریفای میکردند. از جایی به بعد ولی احتمالا هم به خاطر اعتمادپذیری بیشتر و هم به خاطر این که محاسبات سنگین شده بودند دیگر هیچ کس به وریفای کردن جواب نهایی ماشین حساب فکر هم نمیکند. الغرض از نظر اعتمادپذیری بین LLMها و ماشینحسابها در لحظه فاصله زیاد است اما احتمالا روزی هم خواهد آمد که دیگر ما خروجیهای LLMها را وریفای نمیکنیم و از خود نمیپرسیم از کجا معلوم این درست بگوید؟ آن روز وضعمان شبیه به امروز است که برایمان سوال نمیشود از کجا معلوم این ماشین حساب درست محاسبه میکند؟
دیشب مشغول کدزدن با دوست جدیدمان جناب cursor بودم که جایی دیدم روی تست کیس خاصی کد درست کار نمیکند (یک جورهایی مساله parse کردن یک جور درخت بود). هر چه خودم تقلا کردم بفهمم چرا این طور شده نتوانستم. cursor را ندا دادم روی چنین تست کیسی درست کار نمیکنه ببین مشکل از کجاست. cursor هم شروع کرد به تقلا. به سرعت نوشت مشکل چیست و کد را عوض کرد و بعد هم شروع کرد خودش به نوشتن تست کیس. من دیگر از ماجرا پرت شده بودم و فقط شاهد تلاشهای این زبان بسته بودم که خودش تست کیس مینوشت و اجرا میکرد و گاها هم میدید روی تست کیس جواب نمیگیرد کد را تغییر میداد. چند دقیقهای تقلایش طول کشید و نهایتا گفت که great و تمام. کد با آن چیزی که من اول نوشته بودم بسیار تفاوت داشت طوری که برای فهمیدن منطقش باید از خود cursor دوباره میپرسیدم. شروع کردم چند testcase جدید را تست گرفتن و دیدم که روی همه آنها درست جواب میدهد. مساله تبدیل به یک مساله تصمیم ناپذیر شده بود. نمیتوانستم بگویم چرا درست کار میکند ولی هر چه تست کیس امتحان میکردم درست بود. فکر کردم دیدم آیا باید رها کنم؟ اگر جایی اشتباه کرده بود چه؟
ناخودآگاه یاد مثال همیشگی مقایسه LLM و ماشین حساب افتادم. فرض کنید الان یک جمع و ضرب چند رقمی را به ماشین حساب میدهیم و آن به ما جواب را میدهد. از کجا معلوم که اشتباه نکند؟ مثلا چه میدانم پالسی، سیمی، موجی روی هم بیافتند و یک رقم اشتباه شود. در این صورت آیا ما اصلا اغلب متوجه میشویم ؟!؟ کدام یک از ما نتیجه ماشین حساب را وریفای میکنیم؟ احتمالا روزهای اولی هم که ماشین حسابها اختراع شده بودند و مکانیکی تر از امروز بودند، افراد به آنها اعتماد کامل نداشتند و جواب نهاییشان را به نحوی وریفای میکردند. از جایی به بعد ولی احتمالا هم به خاطر اعتمادپذیری بیشتر و هم به خاطر این که محاسبات سنگین شده بودند دیگر هیچ کس به وریفای کردن جواب نهایی ماشین حساب فکر هم نمیکند. الغرض از نظر اعتمادپذیری بین LLMها و ماشینحسابها در لحظه فاصله زیاد است اما احتمالا روزی هم خواهد آمد که دیگر ما خروجیهای LLMها را وریفای نمیکنیم و از خود نمیپرسیم از کجا معلوم این درست بگوید؟ آن روز وضعمان شبیه به امروز است که برایمان سوال نمیشود از کجا معلوم این ماشین حساب درست محاسبه میکند؟
🔥1
Forwarded from Linuxor ?
درباره سیستم های پیشنهاد دهنده چی میدونید؟
این ریپو بهتون یاد میده چطوری یه سیستم ریکامندر شبیه به تیکتاک بسازین و مدل خودتون رو آموزش بدین همچنین روی کوبرنیتیز اونو بالا بیارین
https://github.com/decodingml/personalized-recommender-course
@Linuxor
این ریپو بهتون یاد میده چطوری یه سیستم ریکامندر شبیه به تیکتاک بسازین و مدل خودتون رو آموزش بدین همچنین روی کوبرنیتیز اونو بالا بیارین
https://github.com/decodingml/personalized-recommender-course
@Linuxor
Linuxor ?
درباره سیستم های پیشنهاد دهنده چی میدونید؟ این ریپو بهتون یاد میده چطوری یه سیستم ریکامندر شبیه به تیکتاک بسازین و مدل خودتون رو آموزش بدین همچنین روی کوبرنیتیز اونو بالا بیارین https://github.com/decodingml/personalized-recommender-course @Linuxor
وقت کردید یه سر بهش بزنید
خیلی ایده جالبی داره
خیلی ایده جالبی داره
مقدمهای بر گیت (Git) - جلسه اول
گیت (Git) یه سیستم کنترل نسخه هست که برای مدیریت تغییرات کدها و همکاری بین برنامهنویسها استفاده میشه. کار کردن با گیت توی سه مرحلهی اصلی انجام میشه:
۱. محیط کاری (Working Directory)
همون جایی که شما کدهاتون رو مینویسید و تغییرات ایجاد میکنید. این مرحله مثل میز کار شماست که هر تغییری که توی فایلها بدین، فقط توی سیستم خودتون اعمال میشه و هنوز به گیت اضافه نشده.
۲. محل استیج (Staging Area)
اینجا یه جورایی مثل برزخه! 😅
وقتی یه فایل رو توی گیت اضافه میکنید (git add)، در واقع اون رو میفرستید به این فضای میانی. توی این مرحله، فایلها هنوز ثبت نهایی نشدن و شما میتونید قبل از ثبت کردن، چک کنید که چی تغییر کرده.
۳. مخزن (Repository) - ثبت نهایی (Commit)
وقتی تغییرات رو تأیید کردید (git commit)، گیت یه عکس از وضعیت پروژه شما ثبت میکنه و تغییرات رو توی مخزن ذخیره میکنه. این مرحله همونجاییه که دیگه تغییرات شما به عنوان یه نسخه جدید ثبت میشه و قابل مشاهده و بازیابی خواهد بود.
🚀 بعد از این، اگه بخواید تغییراتتون رو با بقیه به اشتراک بذارید، باید اون رو روی یه مخزن راه دور (مثل GitHub یا GitLab) push کنید تا تیمتون هم بتونه ببینه و روش کار کنه.
خلاصهی کل مراحل:
1️⃣ ایجاد تغییرات توی فایلها (Working Directory)
2️⃣ اضافه کردن تغییرات به استیج (git add .)
3️⃣ ثبت تغییرات در مخزن (git commit -m "توضیح تغییرات")
4️⃣ ارسال تغییرات به مخزن راه دور (git push)
اینجا فقط یه نمای کلی از کار با گیت بود، توی جلسات بعدی وارد جزئیات بیشتر میشیم!
@softwrteach
--------‐----------------
🌐💻
گیت (Git) یه سیستم کنترل نسخه هست که برای مدیریت تغییرات کدها و همکاری بین برنامهنویسها استفاده میشه. کار کردن با گیت توی سه مرحلهی اصلی انجام میشه:
۱. محیط کاری (Working Directory)
همون جایی که شما کدهاتون رو مینویسید و تغییرات ایجاد میکنید. این مرحله مثل میز کار شماست که هر تغییری که توی فایلها بدین، فقط توی سیستم خودتون اعمال میشه و هنوز به گیت اضافه نشده.
۲. محل استیج (Staging Area)
اینجا یه جورایی مثل برزخه! 😅
وقتی یه فایل رو توی گیت اضافه میکنید (git add)، در واقع اون رو میفرستید به این فضای میانی. توی این مرحله، فایلها هنوز ثبت نهایی نشدن و شما میتونید قبل از ثبت کردن، چک کنید که چی تغییر کرده.
۳. مخزن (Repository) - ثبت نهایی (Commit)
وقتی تغییرات رو تأیید کردید (git commit)، گیت یه عکس از وضعیت پروژه شما ثبت میکنه و تغییرات رو توی مخزن ذخیره میکنه. این مرحله همونجاییه که دیگه تغییرات شما به عنوان یه نسخه جدید ثبت میشه و قابل مشاهده و بازیابی خواهد بود.
🚀 بعد از این، اگه بخواید تغییراتتون رو با بقیه به اشتراک بذارید، باید اون رو روی یه مخزن راه دور (مثل GitHub یا GitLab) push کنید تا تیمتون هم بتونه ببینه و روش کار کنه.
خلاصهی کل مراحل:
1️⃣ ایجاد تغییرات توی فایلها (Working Directory)
2️⃣ اضافه کردن تغییرات به استیج (git add .)
3️⃣ ثبت تغییرات در مخزن (git commit -m "توضیح تغییرات")
4️⃣ ارسال تغییرات به مخزن راه دور (git push)
اینجا فقط یه نمای کلی از کار با گیت بود، توی جلسات بعدی وارد جزئیات بیشتر میشیم!
@softwrteach
--------‐----------------
🌐💻
🔥4
🌐 فرانتاند و بکاند دو بخش اصلی و حیاتی در توسعه وب هستن که با هم همکاری میکنن تا یه وبسایت یا اپلیکیشن کامل و کاربردی بسازن. بیایید با هم نگاهی به هرکدوم بندازیم: 🔍
💻 فرانتاند (Front-End) بخش ظاهری و قابل مشاهده سایت یا اپلیکیشن هست. این همون قسمتیه که کاربر باهاش تعامل داره و همونطور که از اسمش پیداست، این بخش در "جبهه جلو" قرار داره! این بخش شامل طراحی، رابط کاربری (UI) و تجربه کاربری (UX) میشه. از تکنولوژیهایی مثل HTML، CSS و JavaScript برای طراحی و ساخت این بخش استفاده میشه.
فرانتاند وظیفه داره که اطلاعات رو از بکاند دریافت کنه و به شکلی کاربرپسند نمایش بده. مثلاً وقتی شما توی یه اپلیکیشن اطلاعات رو وارد میکنید یا توی یه سایت چیزی رو جستجو میکنید، همون اطلاعاتی که شما میبینید و باهاش تعامل میکنید، همگی کار فرانتاند هست.
⚙️ حالا بکاند (Back-End) پشت پرده میاد! این بخش مسئول پردازش دادهها، ذخیرهسازی، و انجام تمام محاسبات و منطقهای پیچیده است. معمولاً این بخش با سرورها، پایگاههای داده (مثل MySQL یا MongoDB) و APIها سروکار داره. بهطور ساده، بکاند همانند مغز سیستم عمل میکنه که اطلاعات رو مدیریت میکنه و به فرانتاند میده تا به کاربر نمایش داده بشه.
🔗 ارتباط بین این دو بخش با استفاده از APIها و پروتکل HTTP انجام میشه. وقتی کاربر یه درخواست (مثل جستجو یا ارسال فرم) به فرانتاند میده، فرانتاند اون رو به بکاند میفرسته، بکاند اطلاعات مورد نظر رو پردازش کرده و به فرانتاند برمیگردونه تا به کاربر نمایش داده بشه. به همین دلیل این دو بخش باید همزمان و بهدرستی با هم کار کنن تا یه تجربه کاربری بینقص ایجاد بشه.
👨💻 برای ارتباط بهتر بین این دو، تکنولوژیهای متنوعی هم وجود دارن. مثلاً GraphQL یه تکنولوژی جدیدتره که بهجای استفاده از APIهای معمولی REST، به فرانتاند این امکان رو میده که درخواستهای دقیقتری ارسال کنه و فقط همون دادههایی که لازم داره رو دریافت کنه. این میتونه سرعت اپلیکیشن رو افزایش بده و مصرف دادهها رو به حداقل برسونه.
@softwrteach
------------------------
🌐💻
💻 فرانتاند (Front-End) بخش ظاهری و قابل مشاهده سایت یا اپلیکیشن هست. این همون قسمتیه که کاربر باهاش تعامل داره و همونطور که از اسمش پیداست، این بخش در "جبهه جلو" قرار داره! این بخش شامل طراحی، رابط کاربری (UI) و تجربه کاربری (UX) میشه. از تکنولوژیهایی مثل HTML، CSS و JavaScript برای طراحی و ساخت این بخش استفاده میشه.
فرانتاند وظیفه داره که اطلاعات رو از بکاند دریافت کنه و به شکلی کاربرپسند نمایش بده. مثلاً وقتی شما توی یه اپلیکیشن اطلاعات رو وارد میکنید یا توی یه سایت چیزی رو جستجو میکنید، همون اطلاعاتی که شما میبینید و باهاش تعامل میکنید، همگی کار فرانتاند هست.
⚙️ حالا بکاند (Back-End) پشت پرده میاد! این بخش مسئول پردازش دادهها، ذخیرهسازی، و انجام تمام محاسبات و منطقهای پیچیده است. معمولاً این بخش با سرورها، پایگاههای داده (مثل MySQL یا MongoDB) و APIها سروکار داره. بهطور ساده، بکاند همانند مغز سیستم عمل میکنه که اطلاعات رو مدیریت میکنه و به فرانتاند میده تا به کاربر نمایش داده بشه.
🔗 ارتباط بین این دو بخش با استفاده از APIها و پروتکل HTTP انجام میشه. وقتی کاربر یه درخواست (مثل جستجو یا ارسال فرم) به فرانتاند میده، فرانتاند اون رو به بکاند میفرسته، بکاند اطلاعات مورد نظر رو پردازش کرده و به فرانتاند برمیگردونه تا به کاربر نمایش داده بشه. به همین دلیل این دو بخش باید همزمان و بهدرستی با هم کار کنن تا یه تجربه کاربری بینقص ایجاد بشه.
👨💻 برای ارتباط بهتر بین این دو، تکنولوژیهای متنوعی هم وجود دارن. مثلاً GraphQL یه تکنولوژی جدیدتره که بهجای استفاده از APIهای معمولی REST، به فرانتاند این امکان رو میده که درخواستهای دقیقتری ارسال کنه و فقط همون دادههایی که لازم داره رو دریافت کنه. این میتونه سرعت اپلیکیشن رو افزایش بده و مصرف دادهها رو به حداقل برسونه.
@softwrteach
------------------------
🌐💻
👍3
Forwarded from کالی بویز | ترفند | تکنولوژی (YOUSEF)
✔️ قضیه CAP در سیستم های توزیع شده
در دنیای مدرن که فناوری حرف اول را میزند، سیستمهای توزیع شده به بخش جداییناپذیری از زندگی ما تبدیل شدهاند. از خرید آنلاین گرفته تا انجام تراکنشهای بانکی و تعامل در شبکههای اجتماعی، همهجا ردپای این سیستمها دیده میشود. اما طراحی این سیستمها کار سادهای نیست. یکی از مفاهیم کلیدی که به ما در درک چالشهای این حوزه کمک میکند، قضیه CAP است. CAP که مخفف Consistency (یکسانی)، Availability (دسترسپذیری) و Partition Tolerance (تحمل پارتیشن) است، چارچوبی برای فهمیدن محدودیتها و انتخابهای پیش روی طراحان سیستمهای توزیع شده ارائه میدهد.
در این مقاله، صفر تا صد قضیه CAP را با زبانی ساده و قابلفهم توضیح میدهیم، جنبههای مختلف آن را بررسی میکنیم و با مثالهایی واقعی مثل خرید بلیط، سیستم بانکی و لایکهای شبکه اجتماعی، کاربردهایش را نشان میدهیم.
در کالی بویز بخوانید: قضیه CAP در سیستم های توزیع شده
✅ @kaliboys | کالی بویز
در دنیای مدرن که فناوری حرف اول را میزند، سیستمهای توزیع شده به بخش جداییناپذیری از زندگی ما تبدیل شدهاند. از خرید آنلاین گرفته تا انجام تراکنشهای بانکی و تعامل در شبکههای اجتماعی، همهجا ردپای این سیستمها دیده میشود. اما طراحی این سیستمها کار سادهای نیست. یکی از مفاهیم کلیدی که به ما در درک چالشهای این حوزه کمک میکند، قضیه CAP است. CAP که مخفف Consistency (یکسانی)، Availability (دسترسپذیری) و Partition Tolerance (تحمل پارتیشن) است، چارچوبی برای فهمیدن محدودیتها و انتخابهای پیش روی طراحان سیستمهای توزیع شده ارائه میدهد.
در این مقاله، صفر تا صد قضیه CAP را با زبانی ساده و قابلفهم توضیح میدهیم، جنبههای مختلف آن را بررسی میکنیم و با مثالهایی واقعی مثل خرید بلیط، سیستم بانکی و لایکهای شبکه اجتماعی، کاربردهایش را نشان میدهیم.
در کالی بویز بخوانید: قضیه CAP در سیستم های توزیع شده
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐 اکستنشن REST Client در VS Code یک جایگزین عالی برای Postman یا Insomnia
📌 اصلا REST Client چیه؟
ابزار REST Client یه افزونه (اکستنشن) برای VS Code هست که بهت اجازه میده بدون نیاز به ابزارهای جانبی، مستقیماً توی ادیتورت درخواستهای HTTP ارسال کنی و APIها رو تست کنی!
💻 چرا REST Client؟
✅ سبک و سریع – نیازی به نصب نرمافزارهای سنگین نیست
✅ همه درخواستها در یک فایل – دیگه لازم نیست برای هر تست جداگانه کار کنی
✅ پشتیبانی از همه متدهای HTTP – GET، POST، PUT، DELETE و …
✅ مدیریت هدرها و توکنها – به راحتی میتونی Authorization و سایر تنظیمات رو انجام بدی
✅ پشتیبانی از متغیرها – دیگه لازم نیست بارها یه URL تکراری بنویسی
چطور از REST Client استفاده کنیم؟
برای شروع، یه فایل جدید با پسوند .http یا .rest بساز و یه درخواست ساده بنویس:
بعد از نوشتن، دکمه "Send Request" که بالای این درخواست ظاهر میشه رو بزن و نتیجه رو ببین!
📡 ارسال درخواست POST با JSON
با زدن Send Request، دادهها به سرور ارسال میشن و پاسخ برمیگرده!
🔗 ارتباط بهتر با متغیرها
گاهی اوقات ممکنه یه API چندین بار با URLهای مشابه تست بشه، اینجاست که متغیرها کمک میکنن:
حالا هروقت بخوای این درخواست رو تغییر بدی، فقط مقدار baseUrl رو عوض کن!
@softwrteach
------------------------
🌐💻
📌 اصلا REST Client چیه؟
ابزار REST Client یه افزونه (اکستنشن) برای VS Code هست که بهت اجازه میده بدون نیاز به ابزارهای جانبی، مستقیماً توی ادیتورت درخواستهای HTTP ارسال کنی و APIها رو تست کنی!
💻 چرا REST Client؟
✅ سبک و سریع – نیازی به نصب نرمافزارهای سنگین نیست
✅ همه درخواستها در یک فایل – دیگه لازم نیست برای هر تست جداگانه کار کنی
✅ پشتیبانی از همه متدهای HTTP – GET، POST، PUT، DELETE و …
✅ مدیریت هدرها و توکنها – به راحتی میتونی Authorization و سایر تنظیمات رو انجام بدی
✅ پشتیبانی از متغیرها – دیگه لازم نیست بارها یه URL تکراری بنویسی
چطور از REST Client استفاده کنیم؟
برای شروع، یه فایل جدید با پسوند .http یا .rest بساز و یه درخواست ساده بنویس:
GET https://jsonplaceholder.typicode.com/posts/1
بعد از نوشتن، دکمه "Send Request" که بالای این درخواست ظاهر میشه رو بزن و نتیجه رو ببین!
📡 ارسال درخواست POST با JSON
POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json
{
"noscript": "REST Client در VS Code",
"body": "این یه تسته!",
"userId": 1
}
با زدن Send Request، دادهها به سرور ارسال میشن و پاسخ برمیگرده!
🔗 ارتباط بهتر با متغیرها
گاهی اوقات ممکنه یه API چندین بار با URLهای مشابه تست بشه، اینجاست که متغیرها کمک میکنن:
@baseUrl = https://jsonplaceholder.typicode.com
GET {{baseUrl}}/posts/1
حالا هروقت بخوای این درخواست رو تغییر بدی، فقط مقدار baseUrl رو عوض کن!
@softwrteach
------------------------
🌐💻
Soft teach
https://github.com/MO-ZAREI84/learn-python
سلااام برو بچ
تو این ریپو چنتا تمرین کاربردی برای شاخه های مختلف پایتونو براتون بارگزاری کردم
تو این پروژه ها سعی شده کاربردی در عین حال به مسائل ابتدایی و پیشرفته پایتون پرداخته شه البته به جز فریمورک جنگو که داخل ریپو های دیگه میتونید یه نگاه بندازید...
اگه دوس داشتین و میخواید بصورت کاربردی تر پایتون رو یاد بگیرید حتما یه سری بزنید
@softwrteach
تو این ریپو چنتا تمرین کاربردی برای شاخه های مختلف پایتونو براتون بارگزاری کردم
تو این پروژه ها سعی شده کاربردی در عین حال به مسائل ابتدایی و پیشرفته پایتون پرداخته شه البته به جز فریمورک جنگو که داخل ریپو های دیگه میتونید یه نگاه بندازید...
اگه دوس داشتین و میخواید بصورت کاربردی تر پایتون رو یاد بگیرید حتما یه سری بزنید
@softwrteach
🔥1
