دوستان توی X (توئیتر سابق) اکانت باز کردم و احتمالا اونجاهم پست بزارم
دوست داشتید میتونید فالو داشته باشید که اگه پست گذاشتم استفاده کنید.
لینک اکانت:👇
https://x.com/mohammad_stdout?t=cU6VCDqEQhyU2SO5AtqkGw&s=09
➖➖➖➖➖➖➖➖➖
دوست داشتید میتونید فالو داشته باشید که اگه پست گذاشتم استفاده کنید.
لینک اکانت:👇
https://x.com/mohammad_stdout?t=cU6VCDqEQhyU2SO5AtqkGw&s=09
#️⃣ #link
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍9👎2
خب خب خب 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
👍11👌5❤3🔥2👏1🤩1
Forwarded from Linux Zone | لینوکس زون
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️کاربرهای سیستم عامل های مختلف:
تجربه ی کار با سیستم عامل های دیگه مثل BSD رو داشتین؟🤔
➖➖➖➖➖➖➖➖➖➖
تجربه ی کار با سیستم عامل های دیگه مثل BSD رو داشتین؟🤔
#️⃣ #linux #bsd #meme
➖➖➖➖➖➖➖➖➖➖
🐧 CHANNEL | GROUP
🤣8
Ninja Learn | نینجا لرن
دوستان کدوم پلتفرم ها رو برای گذاشتن مقاله پیشنهاد میدید؟
احتمالا مقاله هم بزارم
بیشتر راجب تکنولوژی های بروزه که محتوای زیادی براشون نیست.
بیشتر راجب تکنولوژی های بروزه که محتوای زیادی براشون نیست.
👍7👎1
خب خب خب آشنایی با 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
👍10❤2❤🔥1👌1
خب خب خب
اولین مقاله من که توی سایت medium پابلیش شد
(نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم)
خیلی خلاصه بخوام بگم
امید وارم مفید واقع بشه 😊
(اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی کامنتای خود مقاله بهم بگید)
🔗 لینک مقاله
و از این لینک هم میتونید مطالعه کنید
➖➖➖➖➖➖➖➖➖
اولین مقاله من که توی سایت medium پابلیش شد
(نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم)
خیلی خلاصه بخوام بگم
یه بست پرکتیسه برای ساختار فایل بندی پروژتون
امید وارم مفید واقع بشه 😊
(اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی کامنتای خود مقاله بهم بگید)
🔗 لینک مقاله
و از این لینک هم میتونید مطالعه کنید
#️⃣ #refrence
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Medium
Structuring a FastAPI Project: Best Practices
FastAPI is a powerful and efficient web framework for building APIs with Python. However, as projects grow, organizing the code properly…
🤩14🔥7❤4👏3❤🔥1👍1👌1
Ninja Learn | نینجا لرن
خب خب خب اولین مقاله من که توی سایت medium پابلیش شد (نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم) خیلی خلاصه بخوام بگم یه بست پرکتیسه برای ساختار فایل بندی پروژتون امید وارم مفید واقع بشه 😊 (اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی…
موقت:
متاسفانه پلتفرم فارسی مناسبی برای مقالات توی این سبکی پیدا نکردم :)
احتمالا مقالات بصورت انگلیسی کلا منتشر شه مگر اینکه پلتفرم خوبی پیدا کنم
متاسفانه پلتفرم فارسی مناسبی برای مقالات توی این سبکی پیدا نکردم :)
احتمالا مقالات بصورت انگلیسی کلا منتشر شه مگر اینکه پلتفرم خوبی پیدا کنم
👍8💔2🤣1
Ninja Learn | نینجا لرن pinned «خب خب خب اولین مقاله من که توی سایت medium پابلیش شد (نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم) خیلی خلاصه بخوام بگم یه بست پرکتیسه برای ساختار فایل بندی پروژتون امید وارم مفید واقع بشه 😊 (اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی…»
خب سلام دوستان 👋
هرکسی که میخواد توی پروژه های اوپن سورس Diramid (تیم توسعه نرم افزار های اوپن سورس) شرکت کنه
میتونه عضو این گروه بشه
https://t.iss.one/+WpLLMkght6w1ZDU0
برای هر پروژه یک تاپیک زده شده.
و توجه داشته باشید این گروه جای چت و گپ زدن نیست.
قبل از عضو شدن اگر مطمئن هستید که میخواید کمک کنید عضو بشید.
با تشکر از همه ی شما عزیزان ❤️
هرکسی که میخواد توی پروژه های اوپن سورس Diramid (تیم توسعه نرم افزار های اوپن سورس) شرکت کنه
میتونه عضو این گروه بشه
https://t.iss.one/+WpLLMkght6w1ZDU0
برای هر پروژه یک تاپیک زده شده.
و توجه داشته باشید این گروه جای چت و گپ زدن نیست.
قبل از عضو شدن اگر مطمئن هستید که میخواید کمک کنید عضو بشید.
با تشکر از همه ی شما عزیزان ❤️
🥷 CHANNEL | GROUP
Telegram
Diramid
Mohammad invites you to join this group on Telegram.
👍7
خب خب خب ORM چیه ؟ 🛸
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
میتونی تو پایتون با Django ORM اینجوری بنویسی:
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
تو برنامهات یه کلاس به اسم
چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
➖➖➖➖➖➖➖➖➖
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
SELECT * FROM users
میتونی تو پایتون با Django ORM اینجوری بنویسی:
users = User.objects.all()
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
users
داری که ستونهاش اینان: id،name
و
تو برنامهات یه کلاس به اسم
User
میسازی که پراپرتیهایی مثل id
، name
و email
داره. ORM این کلاس رو به جدول users
توی دیتابیس مپ (map) میکنه. یعنی هر شیء از کلاس User
نمایانگر یه رکورد تو جدول users
میشه.چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
User
میسازی، مقادیرش رو پر میکنی و با یه متد مثل save()
ذخیرهاش میکنی. ORM این کار رو به یه دستور SQL (مثل INSERT
) تبدیل میکنه و اجرا میکنه.user = User(name='علی', email='[email protected]')
user.save()
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
all()
یا filter()
استفاده میکنی. ORM پشت صحنه کوئری مناسب رو میسازه و دادهها رو به شکل اشیاء برمیگردونه.# همه کاربرها
users = User.objects.all()
# فیلتر کردن
ali_users =
User.objects.filter(name='علی')
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
البته هر orm با orm های دیگه فرق داره هرچی یه orm بیشتر abstraction انجام داده باشه استفاده ازش راحت تر میشه🚀 ORM برای چی به وجود اومد؟
ولی توی مقیاس بالاتر همین سادگی باعث پیچیدگی میشه.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
#️⃣ #database #sql #orm
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
❤14👍4
مقاله بعدی درمورد داکرایز کردن پروژه توی fastapi هست
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
🔥17👍4
فردا کتاب boost your djangoDx رو میزارم :)
پیشاپیش عیدتون مبارک ❤️
پیشاپیش عیدتون مبارک ❤️
🔥27
کوکیکاتر خودمو زدم
میتونید با
از PyPI میتونید دانلود کنید:
تست کنین و بگین چطوره🚀
➖➖➖➖➖➖➖➖➖
میتونید با
fastapi-cookiecutters
یه پروژه FastAPI تمیز و آماده بسازین. و دیتابیس، Docker، هر چی بخوای اضافه میکنه از PyPI میتونید دانلود کنید:
pip install fastapi-cookiecutters
تست کنین و بگین چطوره🚀
#️⃣ #package
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10👎1🔥1
Forwarded from Linux Zone | لینوکس زون
فرآیند بوت شدن سیستم های لینوکسی ⏳🚀
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
➖➖➖➖➖➖➖➖➖➖
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
مدیریت شبکه (NetworkManager یا systemd-networkd)
مدیریت لاگها (journald)
راهاندازی محیط گرافیکی (GDM، SDDM یا LightDM)
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
#️⃣ #linux #boot #kernel
➖➖➖➖➖➖➖➖➖➖
🐧 CHANNEL | GROUP
👍10🔥1
Forwarded from Revisto/Tech (Revisto)
سلام سلام. من پروژهای رو شروع کردم برای ترجمهی آزاد مستندات و داکیومنتهای رسمی پایتون به فارسی.
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
tutorial
, bugs
, library/functions
صددرصد ترجمه بشن میتونیم درخواست بدیم تا ترجمهمون بخشی از docs.python.org و عمومی بشه.کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
🔥8👍2