Ninja Learn | نینجا لرن
1.25K subscribers
105 photos
41 videos
12 files
326 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
خب خب خب، ‏Background Task ها توی FastAPI🚀
گاهی اوقات نیاز داریم که یه کاری بعد از ارسال پاسخ به کاربر انجام بشه. مثل ارسال ایمیل خوشامد گویی، ثبت لاگ یا آمار توی دیتابیس، پردازش فایل آپلود شده و .... توی این شرایط میتونیم از Background Task ها استفاده کنیم، اینجوری میتونیم بدون معطل کردن کاربر اون کارهارو جداگانه انجام بدیم.

استفاده از Background Task ها🛠
خب اول باید کلاس BackgroundTasks رو ایمپورت کنیم و یه پارامتر از همین نوع برای فانکشن route بنویسیم.
from fastapi import BackgroundTasks, FastAPI

app = FastAPI()


def write_notification(email: str, message=""):
with open("log.txt", mode="w") as email_file:
content = f"notification for {email}: {message}"
email_file.write(content)


@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(write_notification, email, message="some notification")
return {"message": "Notification sent in the background"}

حالا FastAPI میاد یه آبجکت با نوع BackgroundTasks برامون ایجاد میکنه و به اون پارامتر پاس میده.
بعد از اینکه فانکشن تسکمون رو ایجاد کردیم میتونیم با استفاده از متود ()add_task از همون پارامتر اون فانکشن رو به صف اجرا اضافه کنیم. همچنین میتونیم آرگومان های مورد نیازمون رو هم با استفاده از همین متود به تسکمون پاس بدیم.

‏Background Tasks و Dependency injection💉
‏Background Tasks به خوبی با سیستم تزریق وابستگی FastAPI سازگاره. میتونیم توی سطح های مختلف برنامه(فانکشن route، یه وابستگی و...) از Background Task استفاده کنیم.
from typing import Annotated

from fastapi import BackgroundTasks, Depends, FastAPI

app = FastAPI()


def write_log(message: str):
with open("log.txt", mode="a") as log:
log.write(message)


def get_query(background_tasks: BackgroundTasks, q: str | None = None):
if q:
message = f"found query: {q}\n"
background_tasks.add_task(write_log, message)
return q


@app.post("/send-notification/{email}")
async def send_notification(
email: str, background_tasks: BackgroundTasks, q: Annotated[str, Depends(get_query)]
):
message = f"message to {email}\n"
background_tasks.add_task(write_log, message)
return {"message": "Message sent"}

توی این مثال بعد از اینکه پاسخ به کلاینت ارسال شد، یه تسک میاد ایمیل کاربر رو توی فایل log.txt مینویسه. اگه یه کوئری پارامتر هم به API ارسال بشه یه تسک دیگه اون رو هم توی فایل مینویسه.

نکته مهم⚠️
این ابزار فقط برای کارهای سبک وسریع مناسبه. مثل همین لاگ نوشتن، ارسال ایمیل یا پردازش های خیلی کوچیک و سبک. برای کارهای سنگین تر مثل پردازش تصویر بهتره که از سیستم هایی مثل Celery استفاده بشه.

جمع بندی✍️
‏Background Task یه ابزار ساده ولی کاربردیه. میتونه توی پروژه هایی که تسک های سنگینی ندارن از Celery بی نیازتون کنه و کارهارو بعد از پاسخ دهی به صورت غیرهمزمان انجام بده.

#️⃣ #fastapi #python #backend


🥷🏻 CHANNEL | GROUP
👍116
خب خب خب، بهترین فریمورک ها برای توسعه مایکروسرویس🕸
تو دنیای امروز که اپلیکیشن‌ها پیچیده‌تر شدن و نیاز به مقیاس‌پذیری، توسعه سریع و قابلیت نگهداری بالا بیشتر از قبل حس می‌شه، معماری مایکروسرویس (Microservices) به یکی از محبوب‌ترین انتخاب‌ها برای توسعه نرم‌افزارهای مدرن تبدیل شده.
اما انتخاب فریمورک مناسب برای پیاده‌سازی مایکروسرویس‌ها خیلی مهمه؛ چون مستقیماً روی سرعت توسعه، پرفورمنس، ساختار پروژه و حتی تجربه‌ی تیم تأثیر می‌ذاره.

‏Spring Boot (Java)
☕️
یکی از محبوب‌ترین انتخاب‌ها برای توسعه سرویس‌های بزرگ و سازمانی. این فریمورک با ترکیب قدرت Java و اکوسیستم Spring، ساخت سرویس‌های مستقل، مقیاس‌پذیر و امن رو آسون می‌کنه.
از نقاط قوتش می‌شه به پشتیبانی گسترده از ابزارهای Enterprise، جامعه‌ی کاربری بسیار بزرگ، مستندات کامل و یکپارچگی فوق‌العاده با Spring Cloud اشاره کرد.

‏FastAPI (Python)
⚡️
فریمورکی مدرن و سبک برای ساخت APIهای سریع و خوانا با زبان پایتون. طراحی‌شده بر پایه ASGI و Starlette و به‌شدت روی سرعت و خوانایی تمرکز داره. از مزایای مهمش می‌تونیم به سرعت بالا، پشتیبانی عالی از Async Programming، مستندسازی خودکار با Swagger و ReDoc، استفاده از type hinting و هماهنگی کامل با استانداردهای OpenAPI اشاره کنیم.

‏ASP‌.‌‌‌‌NET Core (C#)
🧱
انتخاب حرفه‌ای برای توسعه‌دهندگان دات‌نت، مخصوصاً در پروژه‌هایی که از زیرساخت‌های Microsoft استفاده می‌کنن. این فریمورک کاملاً cross-platform هست و روی لینوکس هم عملکرد بالایی داره. پرفورمنس عالی، امنیت بالا، پشتیبانی از WebSocket، gRPC و امکانات کامل برای تولید و دیپلوی مایکروسرویس‌ها از مزایای مهمشه.

‏Go-Kit (Go)
🦾
فریمورکی ساختارمند برای توسعه سرویس‌های حرفه‌ای با زبان Go. برخلاف فریمورک‌های سبک‌تر مثل Gin، این ابزار مناسب تیم‌هایی هست که دنبال معماری تمیز، قابلیت تست بالا، جداسازی concerns و مقیاس‌پذیری بالا هستن. پشتیبانی از transportهای مختلف (HTTP، gRPC و...)، logging، tracing و monitoring باعث شده انتخاب خوبی برای سیستم‌هایی با ترافیک بالا باشه.

جمع بندی
✍️
انتخاب فریمورک مناسب برای مایکروسرویس به زبان برنامه‌نویسی، تجربه‌ی تیم، نوع پروژه و زیرساخت فنی بستگی داره. اگر به یک اکوسیستم پایدار و کامل نیاز دارید، Spring Boot یا ASP.‌NET Core می‌تونن بهترین انتخاب باشن. اما اگر هدف شما سرعت، سادگی و توسعه سریع‌تره، FastAPI یا Go-Kit می‌تونن عملکرد بسیار خوبی داشته باشن.
#️⃣ #programming #backend


🥷🏻 CHANNEL | GROUP
13
خب خب خب، بهترین زبان های برنامه نویسی برای Cloud Programming☁️💻
خب برنامه نویسی ابری یعنی توسعه ی نرم افزارهایی که روی سرویس های ابری مثل AWS, Google Cloud, Azureو... اجرا میشن. توی این فضا مقیاس پذیری، سرعت اجرا، امنیت و پشتیبانی از ابزارهای ابری حرف اول رو میزنن.

‏Python
🐍
به خاطر سادگی و سرعت توسعه، یکی از محبوب‌ترین زبان‌ها برای Cloud محسوب می‌شه. توی پروژه‌های مربوط به اتوماسیون، DevOps و مخصوصاً یادگیری ماشین رو سرویس‌های ابری مثل AWS یا Google Cloud خیلی خوب جواب می‌ده. اما به خاطر سرعت پایین و محدودیت در پردازش‌های سنگین (مثل real-time) برای پروژه‌های بزرگ انتخاب اول نیست.

‏Go
🚀
زبانیه که دقیقاً برای همین کار ساخته شده. سریع، کم‌مصرف و با پشتیبانی قوی از concurrency، Go گزینه‌ای ایده‌آل برای میکروسرویس‌ها، زیرساخت‌های cloud-native و سرویس‌هایی با بار بالا محسوب می‌شه. البته نسبت به پایتون ساده نیست و فضای توسعه‌ش خشک‌تره.

‏JavaScript (Node.js)
🪩
وقتی با جاوااسکریپت آشنایی داشته باشین، استفاده از Node.js تو Cloud مخصوصاً برای ساخت API و سرورهای سبک یا سرویس‌های Serverless خیلی راحته. سرعت توسعه بالاست و پشتیبانی از async بودن ذاتی خیلی به درد می‌خوره. ولی برای پردازش‌های سنگین یا مدیریت منابع در حد enterprise، محدودیت داره.

‏Java
☕️
با وجود قدیمی بودن، هنوزم تو شرکت‌های بزرگ برای ساخت سرویس‌های پایدار و مقیاس‌پذیر استفاده می‌شه. ابزارهایی مثل Spring Boot و Spring Cloud تو فضای ابری خیلی پرکاربردن. قدرت و امنیتش عالیه، ولی کدنویسیش verbose و سنگین‌تر از زبان‌های مدرن‌تره.

‏Rust
🦀
زبانیه که سرعت و امنیت رو همزمان داره. برای سیستم‌هایی که performance یا امنیت حافظه خیلی مهمه، انتخاب خوبیه. تو پروژه‌های زیرساختی یا اپ‌هایی که مصرف منابع براشون مهمه، Rust حرف نداره. البته یادگیریش سخته و جامعه‌ی توسعه‌دهنده‌هاش هنوز به بزرگی بقیه نیست.

جمع بندی
✍️
در نهایت، انتخاب زبان برای Cloud Programming بستگی به نوع پروژه‌ داره؛ اگه دنبال توسعه سریع و ساده‌ هستین، Python و Node.js انتخابای خوبی‌ان. برای سیستم‌های سریع و مقیاس‌پذیر Go می‌درخشه، Java برای اپ‌های پایدار سازمانی مناسبه، و Rust برای پروژه‌هایی با نیاز بالا به performance و امنیت انتخاب آینده‌محوره. مهم اینه بدونین چی می‌خواین و ابزار مناسب همون رو انتخاب کنین.
#️⃣ #programming #backend


🥷🏻 CHANNEL | GROUP
9
یکی از چالش‌هایی که خیلی از برنامه‌نویس‌ها باهاش روبه‌رو می‌شن، اینه که بعد از یه مدت طولانی دوری از کدنویسی، حس می‌کنن مهارت‌هاشون زنگ زده انگار یه جورایی انگشتاشون دیگه با کیبورد غریبه شده و مفاهیم برنامه‌نویسی تو ذهنشون غبار گرفته. اما نگران نباشین این پست برای شماست که می‌خواین دوباره به اوج برگردین و مهارت‌های کدنویسی‌تون رو مثل قبل کنید. بیاین با هم یه نقشه راه بکشیم که چطور می‌تونیم مهارت‌هامون رو بازیابی کنیم و دوباره تو دنیای کد به اوج برگردیم🚀

🧠 چرا مهارت‌ها زنگ می‌زنن؟

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

ابزارها و فریم‌ورک‌هایی که قبلاً باهاشون راحت بودین، حالا گیج‌کننده به نظر میان.

اعتماد به نفس کدنویسی‌تون یه کم افت کرده.


اینا همه عادی‌ان مغز ما مثل عضله‌ست؛ اگه یه مدت تمرین نکنه، یه کم تنبل می‌شه، ولی با یه برنامه درست می‌تونین دوباره رو فرم بیاین.

📚 نقشه راه برای بازیابی مهارت‌ها


1⃣ از پایه‌ها شروع کنین 🏗️

چرا؟ مفاهیم پایه‌ای مثل متغیرها، توابع، و حلقه‌ها ستون هر زبان برنامه‌نویسی‌ان. مرور اینا ذهنتون رو گرم می‌کنه.
یه پروژه ساده مثل یه ماشین‌حساب یا یه برنامه To-Do List با زبانی که قبلاً بلد بودین بنویسین.

2⃣ یه پروژه کوچیک و باحال انتخاب کنین 🎯
چرا؟ پروژه‌های کوچیک اعتماد به نفس رو برمی‌گردونن و کمک می‌کنن حس کنین دوباره تو بازی هستین.
یه چیزی بسازین که بهش علاقه دارین، مثلاً یه اسکریپت پایتون برای خودکار کردن یه کار روزمره یا یه صفحه وب ساده با HTML/CSS.

ایده: یه بات ساده برای تلگرام یا یه برنامه که قیمت ارزها رو نشون بده.

3⃣ ابزارها و تکنولوژی‌ها رو مرور کنین 🛠️
چرا؟ اگه مدت زیادی از فریم‌ورک‌ها (مثل Django یا React) دور بودین، ممکنه آپدیت‌هاشون غافلگیرتون کنه.
مستندات رسمی (مثل docs.djangoproject.com) یا یه دوره کوتاه تو Udemy یا Pluralsight بگیرین. فقط یه بخش رو مرور کنین، نه کلش

نکته: نیازی نیست همه‌چیز رو از صفر یاد بگیرین؛ فقط تغییرات جدید رو چک کنین.

4⃣ با حل مسائل تمرین کنین 🧩
چرا؟ حل مسائل الگوریتمی ذهنتون رو قوی می‌کنه و کمک می‌کنه منطق کدنویسی‌تون برگرده.
تو سایت‌هایی مثل HackerRank، Codewars یا LeetCode سوال‌های سطح آسان تا متوسط رو حل کنین. روزی ۱-۲ تا کافیه.
ترفند: یه دفترچه یادداشت داشته باشین و راه‌حل‌ها رو توضیح بدین تا بهتر جا بیفته.

5⃣ کد دیگران رو بخونین 📖
چرا؟ خوندن کدهای باکیفیت بهتون یادآوری می‌کنه که کد تمیز چطور نوشته می‌شه.
پروژه‌های متن‌باز تو GitHub (مثل پروژه‌های پایتون یا جاوااسکریپت) رو بررسی کنین. سعی کنین بفهمین چرا یه تابع خاص یا ساختار خاص استفاده شده.

6⃣ با یه پروژه واقعی برگردین تو رینگ 💪
چرا؟ پروژه‌های واقعی شما رو مجبور می‌کنن همه‌چیز رو کنار هم بذارین: کدنویسی، دیباگ، تست، و کار با ابزارها.
یه اپلیکیشن ساده بسازین، مثلاً یه وبسایت شخصی یا یه API با FastAPI. حتی می‌تونین تو پروژه‌های متن‌باز مشارکت کنین.
نکته: از چیزایی که قبلاً بلد بودین شروع کنین تا اعتماد به نفس‌تون برگرده.

7⃣ با بقیه گپ بزنین 👥
چرا؟ حرف زدن با برنامه‌نویس‌های دیگه بهتون انگیزه می‌ده و ایده‌های جدید می‌آره.
تو گروه‌های تلگرامی، دیسکورد یا انجمن‌های مثل Stack Overflow فعال بشین. حتی یه سوال ساده بپرسین یا جواب بدین.

🔍 نکات طلایی برای برگشتن به اوج

صبور باشین: مثل دوچرخه‌سواریه؛ یه کم طول می‌کشه تا دوباره تعادل پیدا کنین.
روزی یه کم: لازم نیست روزی ۸ ساعت کد بزنین. حتی ۳۰ دقیقه تمرین روزانه معجزه می‌کنه.
لذت ببرین: یه پروژه انتخاب کنین که بهش علاقه دارین تا انگیزه‌تون بالا بمونه.

جمع‌بندی

دوری از کدنویسی یه اتفاق عادیه و اصلاً به این معنی نیست که مهارت‌هاتون غیبشون زده با یه برنامه ساده، مثل مرور پایه‌ها، حل مسائل و ساخت پروژه‌های کوچیک، می‌تونین دوباره همون برنامه‌نویس قبراق و سرحال بشین.

#️⃣ #programming #backend

 
🥷🏻 CHANNEL | GROUP
23
6⃣ پخش و پیش‌نمایش (Playback) 🎬
با ابزار ffplay می‌تونین فایل‌های چندرسانه‌ای رو پخش کنین.
مثال: پخش یه ویدیو:

  ffplay video.mp4

چرا کاربردیه؟ ffplay یه پخش‌کننده ساده‌ست که برای تست سریع فایل‌ها یا بررسی خروجی‌ها عالیه.

7⃣ بررسی اطلاعات فایل (Probing) 🔍
با ffprobe می‌تونین اطلاعات دقیق یه فایل (مثل کدک، بیت‌ریت، رزولوشن) رو ببینین.
مثال:

  ffprobe -show_streams input.mp4

چرا کاربردیه؟ برای عیب‌یابی یا آماده‌سازی فایل‌ها قبل از پردازش، این ابزار مثل یه میکروسکوپ عمل می‌کنه.

8⃣ پشتیبانی از شتاب‌دهنده‌های سخت‌افزاری
‏ FFmpeg می‌تونه از GPU (مثل NVIDIA NVENC/NVDEC، VAAPI، یا OpenCL) برای سرعت بخشیدن به کدگذاری و دیکد استفاده کنه.
مثال: کدگذاری با NVENC:

  ffmpeg -i input.mp4 -c:v h264_nvenc output.mp4

چرا کاربردیه؟ این قابلیت باعث می‌شه عملیات سنگین مثل کدگذاری 4K خیلی سریع‌تر انجام بشه.

9⃣ کار با دستگاه‌های ورودی 🖥️
می‌تونین از دستگاه‌های ورودی مثل وب‌کم یا کارت کپچر مستقیماً داده بگیرین.
مثال: ضبط از وب‌کم:

  ffmpeg -i /dev/video0 output.mp4

چرا کاربردیه؟ برای ضبط زنده یا استریمینگ از سخت‌افزارهای مختلف عالیه.

🔟 فیلترهای پیشرفته 🎨
‏FFmpeg کلی فیلتر برای ویرایش ویدیو و صدا داره، مثل تغییر روشنایی، تنظیم سرعت پخش، یا اضافه کردن افکت.
مثال: اضافه کردن متن به ویدیو:

  ffmpeg -i input.mp4 -vf drawtext="text='سلام دنیا':x=20:y=20:fontsize=24" output.mp4

چرا کاربردیه؟ این فیلترها انعطاف زیادی بهتون می‌دن تا بدون نرم‌افزارهای گرافیکی، تغییرات پیچیده‌ای اعمال کنین.

جمع‌بندی

‏FFmpeg مثل یه جعبه‌ابزار جادوییه که هر کاری تو دنیای چندرسانه‌ای بخواین، می‌تونه انجام بده. از تبدیل فرمت و کدگذاری گرفته تا استریمینگ، ویرایش، و حتی کار با سخت‌افزارهای خاص، این ابزار همه‌فن‌حریفه.

#️⃣ #programming #backend

 
🥷🏻 CHANNEL | GROUP
👍7❤‍🔥3🔥1