Ninja Learn | نینجا لرن
1.26K subscribers
95 photos
36 videos
11 files
306 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

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

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
Forwarded from LearnPOV
ثبت نام زودهنگام آغاز شد  🖥

سلام رفقا، بالاخره ثبت‌نام اولیه شروع شد، همین الان میتونید از طریق لینک زیر ثبت نام کنید تا اولین کسی باشید که از انتشار عمومی پلتفرم باخبر میشه🔥

🔗 ثبت نام

🏫 @LearnPOV | اولین شبکه اجتماعی آموزشی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4👌1
خب خب خب، git reset🔄
توی گیت، دستور reset مثل یه دکمه ی سفر در زمانه که مارو به گذشته ی پروژه میبره. اما چند حالت مختلف داره و بسته به اینکه کدوم یکی از این حالت ها استفاده بشن میتونه روی تاریخچه ی پروژه هم تاثیر بزاره.

Mixed🟡
این حالت پیش فرض برای دستور reset هست. HEAD رو به کامیت مشخص شده برمیگردونه. تغییرات بعد از اون کامیت از Stage خارج میشن(unstaged) ولی تغییرات هنوز توی فایل ها هستن. برای موقعی که میخواین تغییرات باقی بمونن ولی توی Stage نباشن خوبه.
شکل کلی دستور ریست:
git reset <--mode> <commit-id>

دستور ریست با حالت mixed:
git reset --mixed HEAD~1
git reset HEAD~1 # هست mixed حالت پیش فرض همین

دستور بالا آخرین کامیت رو پاک میکنه، تغییرات هنوز وجود دارن ولی دیگه توی Stage نیستن.

Soft🔵
فقط HEAD رو برمیگردونه به کامیت مشخص شده. تغییرات بعد از اون کامیت رو توی Stage نگه میداره. زمانی استفاده میشه که بخوایم کامیت رو حذف کنیم ولی تغییرات باقی بمونن، برای commit مجدد یا اصلاح پیام.
git reset --soft HEAD~1

به طور مثال دستور بالا آخرین کامیت رو پاک میکنه و تغییرات رو توی Staging قرار میده.

Hard🔴
توی این حالت HEAD به کامیت مشخص شده برمیگرده، Staging area و فایل هارو کاملا با کامیت مشخص شده هماهنگ میکنه، درواقع هرتغییر یا کامیتی بعد از کامیت مشخص شده پاک میشه و پروژه برمیگرده به وضعیت همون کامیت. وقتی استفاده میشه که بخوایم همه چی رو مثل اون کامیت کنیم و تغییرات بعد از اون رو حذف کنیم.
git reset --hard HEAD~1

این دستور پروژه رو طوری تغییر میده که انگار اصلا کامیت آخر وجود نداشته. هیچ تغییری هیچ جایی ذخیره نمیشه و فایل ها برمیگردن به کامیت قبلی.

جمع بندی
✍️
دستور reset میتونه نجات دهنده و حتی مخرب باشه. میتونه پروژه رو نجات بده یا یه تغییر بزرگ رو از بین ببره. کاربردای مختلفی داره و برای برگشت به کامیت های قبلی به شکل های مختلف استفاده میشه.
#️⃣ #programming


🥷🏻 CHANNEL | GROUP
🔥11👍21
خب خب خب، زمان به زبان کامپیوتر ها⏱️
حتما تا الان توی برنامه نویسی یا دیتابیس ها،‌ زمان رو به شکل یه عدد عجیب و غریب مثل 1717069200 دیدین. این عدد درواقع همون Epoch Time یا Unix Timestamp هست. درواقع از 1 ژانویه ی 1970 شمارش زمان به این شکل شروع شده و اون لحظه عدد صفر رو در زمان یونیکس مشخص میکنه. نحوه شمارش هم به این شکله که هر ثانیه که از اون لحظه بگذره، به این عدد یکی اضافه میشه.

چرا از 1970؟
🤔
زمانی که سیستم عامل Unix در دهه ی 70 ساخته شد، توسعه دهنده ها برای ذخیره ی زمان تصمیم گرفتن یه نقطه شروع ثابت رو انتخاب کنن و اون نقطه شروع شد:
‏1970-01-01 00:00:00

جه کاربردی داره و کجا استفاده میشه؟
🛠
1️⃣هماهنگی زمان توی سیستم های مختلف
زمان میتونه توی سیستم های مختلف و حتی سطوح مختلف، به شکل های مختلفی ثبت بشه یا برای همه ی سیستم ها قابل خوندن نباشه، با استفاده از Epoch Time خیلی راحت میشه هماهنگی و دقت زمان بین سیستم های مختلف رو حفظ کرد.

2️⃣مقایسه ی ساده تر زمان
چون فقط یه عدد معمولیه، خیلی راحت میشه با عملگرهای ساده مثل بزرگ‌تر یا کوچک‌تر، زمان‌ها رو با هم مقایسه کرد.

به عنوان ساده ترین مثال هم میشه به توکن های JWT اشاره کرد که برای نگهداری زمان انقضا از Epoch Time استفاده میکنن.

چطوری Epoch Time رو به دست بیاریم؟
🧮
میتونید به سایت هایی مثل epoch converter مراجعه کنید. این سایت ها امکاناتی مثل تبدیل زمان و نمایش زمان فعلی به شکل Epoch رو دراختیارتون قرار میدن.
همچنین میتونید با زبان برنامه نویسی خودتون هم زمان هارو تبدیل کنید. به طور مثال توی پایتون با کد زیر میشه اینکارو انجام داد:
from datetime import datetime
now = datetime.now()
print(int(datetime.timestamp(now))) >>> 1717069200

نکته جالب: زمان منفی هم داریم!
درسته اگه بخوایم زمان قبل از 1970 رو نشون بدیم Epoch Time مقدار منفی میگیره. مثلا:
‏-86400 → معادل: 31 دسامبر 1969


جمع بندی✍️
درواقع Epoch Time یعنی تعداد ثانیه هایی که از ۱ ژانویه ۱۹۷۰ میلادی ساعت 00:00:00 گذشته. این روش زمان سنجی توی بیشتر سیستم عامل ها، زبان های برنامه نویسی و دیتابیس ها استفاده میشه و برای اکثر برنامه ها قابل خوندنه. مزیتیش اینه که زمان رو به صورت عددی، دقیق، فشرده و قابل مقایسه ذخیره میکنه و زمان توی Epoch Time میتونه مثبت یا منفی باشه.
#️⃣ #programming


🥷🏻 CHANNEL | GROUP
5
نحوه استفاده از ++c در جاوااسکریپت:

#️⃣ #programming


🥷🏻 CHANNEL | GROUP
🤣192
خب خب خب، مدیریت تنظیمات با Pydantic⚙️
احتمالا اسم Pydantic به گوشتون خورده یا توی پروژه هاتون ازش استفاده کردین. ولی برای مدیریت تنظیمات پروژه از چی استفاده کردین؟ Pydantic یه کلاس به اسم BaseSettings ارائه میده که برای مدیریت تنظیمات برنامه از جمله متغیر های محیطی و پیش فرض ها استفاده میشه.

چرا از BaseSettings استفاده کنیم؟
🧐
1️⃣ خواندن خودکار متغیر های محیطی:
با استفاده از BaseSettigns بدون نیاز به کتابخونه های اضافی مثل python-dotenv میتونیم به متغیر های محیطی دسترسی داشته باشیم.

2️⃣ اعتبارسنجی امن و خودکار متغیر ها:
‏Pydantic به صورت خودکار تایپ هارو چک میکنه و دیگه نیازی به type cast دستی نیست.

3️⃣ پشتیبانی ساده از چند محیط:
با یکم خلاقیت می‌تونیم چندین کلاس تنظیمات برای محیط‌های مختلف مثل Dev, Prod و Test بسازیم.

4️⃣ مناسب برای پروژه‌های بزرگ:
میشه همه‌ی تنظیمات پروژه مثل دیتابیس، کلیدهای API، حالت دیباگ و... رو توی یک کلاس متمرکز نگهداری کرد و راحت تو کل پروژه استفاده‌شون کرد.

ساختار پایه ی کلاس تنظیمات
🔧
قبل از هر کاری مطمئن بشید که pydantic و پکیج pydantic-settings نصب باشن:
pip install pydantic pydantic-settings

و بعد میتونید با تعریف کلاس و تنظیماتی که نیاز دارین اونارو مدیریت کنین.
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file='.env', # env file location
)
debug: bool = True
database_url: str
secret_key: str

این یعنی:
مقدار debug به طور پیش فرض True هست و بقیه مقادیر باید توی فایل env. یا محیط سیستم تعریف بشن، در غیر این صورت ارور میگیریم. نکته جالب اینه که Pydantic از type cast خودکار پشتیبانی میکنه، مثلا اینجا مقدار "True" توی محیط رو به bool تبدیل میکنه.
و فایل env. باید به این شکل باشه:
DATABASE_URL=postgresql://user:pass@localhost/dbname
SECRET_KEY=s3cr3t-k3y


نحوه ی استفاده از تنظیمات
🛠
میتونیم یه نمونه از کلاس تنظیمات بسازیم و بعد با استفاده از اتریبیوت ها به تنظیمات دسترسی پیدا کنیم:
settings = Settings()
print(settings.database_url)
print(settings.debug)


جمع بندی
✍️
کلاس BaseSettings یکی از ابزارهای بسیار مهم و کاربردی در Pydantic هست که به شما اجازه می‌ده تنظیمات پروژه رو به شکل متمرکز، امن، قابل تست و قابل توسعه مدیریت کنین.
توی پروژه‌های بزرگ یا اپلیکیشن‌هایی که چند محیط (مثل dev، test و prod) دارن، استفاده از این ساختار کمک می‌کنه کد تمیزتر و حرفه‌ای‌تری داشته باشین.

#️⃣ #programming #python


🥷🏻 CHANNEL | GROUP
👍64🔥4
خب خب خب، بهترین فریمورک ها برای توسعه مایکروسرویس🕸
تو دنیای امروز که اپلیکیشن‌ها پیچیده‌تر شدن و نیاز به مقیاس‌پذیری، توسعه سریع و قابلیت نگهداری بالا بیشتر از قبل حس می‌شه، معماری مایکروسرویس (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
این چند وقته نبودم و واقعا نیاز به استراحت ذهنی داشتم.
به زودی دوباره فعالیت رو شروع میکنم و صد البته چیزهای مفید تریم میزارم
ممنونم از کسایی این مدت به من کمک کردن مخصوصا @real_denver ❤️😊

به امید روزای بهتر و زندگی اروم تر 😊

 
🥷🏻 CHANNEL | GROUP
10👌1
اگه پیشنهادی دارید یا دوست دارید یه چیز خاص تر توی کانال ببینید، حتماً تو کامنت همین پست بگید. خوشحال می‌شم پست‌ها رو جوری بسازم که بیشتر به دلتون بشینه 😊
10👎3🤣1💔1
یکی از چالش‌هایی که خیلی از برنامه‌نویس‌ها باهاش روبه‌رو می‌شن، اینه که بعد از یه مدت طولانی دوری از کدنویسی، حس می‌کنن مهارت‌هاشون زنگ زده انگار یه جورایی انگشتاشون دیگه با کیبورد غریبه شده و مفاهیم برنامه‌نویسی تو ذهنشون غبار گرفته. اما نگران نباشین این پست برای شماست که می‌خواین دوباره به اوج برگردین و مهارت‌های کدنویسی‌تون رو مثل قبل کنید. بیاین با هم یه نقشه راه بکشیم که چطور می‌تونیم مهارت‌هامون رو بازیابی کنیم و دوباره تو دنیای کد به اوج برگردیم🚀

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

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

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

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


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

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


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
سلام علیک و از این حرفا FFmpeg 🔮

اگه تو دنیای برنامه‌نویسی یا کار با فایل‌های ویدیویی یا صوتی (چند رسانه ای) سروکارتون به ویدیو و صدا باشه، حتماً اسم FFmpeg به گوشتون خورده. این ابزار هر کاری بگین با فایل‌های صوتی و تصویری می‌کنه.
تو این پست می‌خوام یه گشت کامل درمورد FFmpeg بزنیم و ببینیم این ابزار قدرتمند چه قابلیت‌هایی داره و چرا باید حتما هر برنامه‌نویس یا تولیدکننده محتوایی بلدش باشه.

🧠FFmpeg چیه؟

‏FFmpeg یه پروژه متن‌باز (open-source) و یه مجموعه نرم‌افزاریه که برای کار با فایل‌های چندرسانه‌ای (ویدیو، صدا، تصویر) طراحی شده. این ابزار از یه سری کتابخونه (مثل libavcodec، libavformat) و ابزارهای خط‌فرمان (مثل ffmpeg، ffplay، ffprobe) تشکیل شده که می‌تونن هر نوع فایل چندرسانه‌ای رو بخونن، بنویسن، تبدیل کنن، پخش کنن یا حتی استریم کنن. از فرمت‌های قدیمی و غریب گرفته تا جدیدترین کدک‌ها، FFmpeg تقریباً همه‌چیز رو پشتیبانی می‌کنه

شروعش برمی‌گرده به سال ۲۰۰۰، وقتی Fabrice Bellard این پروژه رو راه انداخت و حالا زیر نظر Michael Niedermayer و یه جامعه بزرگ از توسعه‌دهنده‌ها داره رشد می‌کنه. اسم FFmpeg از "Fast Forward" و "MPEG" (استاندارد فشرده‌سازی ویدیو) میاد و نشون می‌ده که این ابزار چقدر سریع و همه‌کاره‌ست.

📚 قابلیت‌های اصلی FFmpeg

‏FFmpeg یه جعبه‌ابزار عظیمه که برای هر کاری تو حوزه چندرسانه‌ای یه راه‌حل داره. بیاین مهم‌ترین قابلیت‌هاش رو بررسی کنیم:

1⃣ تبدیل فرمت (Transcoding) 🎥
می‌تونین یه فایل ویدیویی یا صوتی رو از یه فرمت به فرمت دیگه تبدیل کنین.
مثال: یه فایل MP4 رو به AVI یا یه فایل WAV رو به MP3 تبدیل کنین.

  ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.avi

چرا کاربردیه؟ پشتیبانی از صدها کدک و فرمت (مثل H.264، H.265، AV1، MP3، AAC) باعث می‌شه برای هر دستگاه یا پلتفرمی فایل مناسب تولید کنین.

2⃣ کدگذاری و دیکد (Encoding/Decoding) 🔢
‏FFmpeg می‌تونه ویدیوها و صداها رو کدگذاری (فشرده‌سازی) یا دیکد (باز کردن فشرده‌سازی) کنه.
مثال: یه ویدیوی خام رو به H.265 فشرده کنین برای کاهش حجم:

  ffmpeg -i input.mp4 -c:v libx265 -c:a copy output.mp4

چرا کاربردیه؟ از کدک‌های مدرن مثل AV1 و HEVC گرفته تا کدک‌های قدیمی‌تر مثل MPEG-1، همه رو ساپورت می‌کنه. حتی می‌تونه با شتاب‌دهنده‌های سخت‌افزاری (مثل NVIDIA NVENC) کار کنه که سرعتش رو چند برابر می‌کنه.

3⃣ استریم (Streaming) 📡
می‌تونین ویدیو و صدا رو به صورت زنده استریم کنین یا فایل‌ها رو برای پخش آنلاین آماده کنین.
مثال: استریم یه وب‌کم به سرور RTMP:

  ffmpeg -i /dev/video0 -c:v libx264 -preset fast -f flv rtmp://your-server/live

چرا کاربردیه؟ از پروتکل‌های مختلف (RTMP، HLS، MPEG-DASH) پشتیبانی می‌کنه و برای استریمینگ زنده یا آماده‌سازی ویدیو برای پلتفرم‌هایی مثل یوتیوب عالیه.

4⃣ ویرایش ویدیو و صدا (Editing) ✂️
بدون نیاز به نرم‌افزارهای گرافیکی، می‌تونین ویدیوها و صداها رو برش بدین، بچسبونین، یا افکت اضافه کنین.
مثال: برش ۱۰ ثانیه از یه ویدیو:

  ffmpeg -i input.mp4 -ss 00:00:10 -t 10 output.mp4

کارهای دیگه: تغییر اندازه ویدیو، اضافه کردن واترمارک، چرخش، تنظیم صدا، یا حتی ساخت ویدیوی تایم‌لپس از تصاویر.

  ffmpeg -framerate 24 -i image%d.jpg -c:v libx264 output.mp4

چرا کاربردیه؟ فیلترهای قدرتمندی مثل drawtext (برای اضافه کردن متن) یا scale (برای تغییر رزولوشن) داره که کلی کار رو ساده می‌کنه.

5⃣ استخراج و جاسازی (Muxing/Demuxing) 📦
می‌تونین جریان‌های صوتی، تصویری یا زیرنویس رو از یه فایل جدا کنین یا بذارین تو یه فایل جدید.
مثال: استخراج صدا از ویدیو:

  ffmpeg -i video.mp4 -vn -c:a mp3 audio.mp3

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

ادامه در پست بعد
10🔥2🤩1
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Ninja Learn | نینجا لرن
دایرکت کانال فعال شده اگه پیشنهادی یا انتقادی چیزی داشتید میتونید توی این بخش که علامت زدم بهم بگید 🥰
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
No caption 😂

 
🥷🏻 CHANNEL | GROUP
🤣12💔2
من این چند وقته به یکسری دلایل دارم درمورد هوش مصنوعی و Ml engineering تحقیق میکنم.

دوست دارید پست درموردش بسازم؟
اره 👍 نه 👎
👍52👎91
This media is not supported in your browser
VIEW IN TELEGRAM
حکایت خیلیاست😂

 
🥷🏻 CHANNEL | GROUP
🤣8
دلم برای شب نشینی با کدام تنگ شده بود :)))
👌6
نشد مایه سایت باز کنیم تحریم نباشه 🙄
7
یکی از سایت های خیلی باحال برای اشنا شدن با Ml (Machine learning)
سایت ml-playground هست.

اگه علاقه دارید به این حوزه حتما یه سر بزنید 😁
8