یادداشت های برنامه نویس آماتور | Amateur programmer notes
61 subscribers
92 photos
10 videos
34 files
88 links
اندازه ی آرزو هات مهم نیست
مهم اینه تو چقد میبینیش
آرزو هاتو بزرگ ببین


</create> by <ashkan\>
Download Telegram
چند نصیحت ڪوتاہ و ڪاربردے براے برنامه‌نویسان تازه‌ڪار:

1. پایہ رو محڪم ڪن: مفاهیم پایہ (مثل متغیر، حلقہ، تابع) رو ڪامل یاد بگیر. بدون فونداسیون قوے، پیشرفت سخت می‌شه.
2. پروژہ بساز: از همون اول ڪد بزن. پروژه‌هاے ڪوچڪ (مثل ماشین‌حساب، ربات تلگرام، یا وب‌سایت سادہ) بهت اعتمادبه‌نفس و تجربہ می‌ده.
3. اشتباہ ڪردن عادیہ: باگ و ارور بخشے از یادگیریہ. ازشون نترس، گوگل ڪن و حلشون ڪن (Stack Overflow دوستته!).
4. روزانہ تمرین ڪن: حتے 30 دقیقہ ڪد زدن روزانہ بهتر از چند ساعت یهویے در هفته‌ست. مداومت ڪلیده.
5. ڪد دیگران رو بخون: تو GitHub پروژه‌هاے اوپن‌سورس رو ببین. یاد می‌گیرہ چطور حرفه‌ای‌ها ڪد می‌زنن.
6. یہ زبان رو عمیق یاد بگیر: به‌جاے پریدن بین چند زبان، اول تو یہ زبان (مثل پایتون یا جاوااسڪریپت) حرفه‌اے شو.
7. شبڪه‌سازے ڪن: تو گروه‌هاے برنامه‌نویسے (تلگرام، دیسڪورد، لینڪدین) فعال باش. ارتباط با بقیہ بهت فرصت‌هاے جدید می‌ده.
8. صبر داشتہ باش: برنامه‌نویسے مهارت زمان‌برہ. به‌جاے مقایسہ خودت با بقیہ، روے پیشرفت خودت تمرڪز ڪن.

### یہ نڪتہ طلایی:
هر روز یہ چیز ڪوچیڪ یاد بگیر و همون روز باهاش یہ ڪد بزن. مثلاً یاد گرفتے حلقہ چیہ؟ برو یہ برنامہ بنویس ڪہ ۱ تا ۱۰۰ رو چاپ ڪنه.
جاوااسڪریپت (JavaScript) یڪ زبان برنامه‌نویسے پویا و مفسرے است ڪہ بیشتر براے توسعہ وب استفادہ می‌شود. در اینجا یڪ توضیح مختصر براے شروع با جاوااسڪریپت:

### ۱. جاوااسڪریپت چیست؟
- زبانے سمت ڪاربر (Client-Side) براے تعاملے ڪردن صفحات وب (مثل انیمیشن، فرم‌ها، بارگذارے پویا).
- می‌تواند سمت سرور (Server-Side) با Node.js اجرا شود.
- سبڪ، شیءگرا و مبتنے بر رویداد (Event-Driven).

### ۲. چطور شروع ڪنیم؟
#### ابزارها:
- مرورگر: هر مرورگر (مثل Chrome) جاوااسڪریپت را پشتیبانے می‌ڪند. می‌توانید ڪد را در ڪنسول مرورگر (F12 > Console) تست ڪنید.
- ویرایشگر ڪد: VS Code، Sublime یا هر ویرایشگر متنی.
- Node.js (اختیاری): براے اجراے جاوااسڪریپت خارج از مرورگر.

#### راه‌اندازی:
1. یڪ فایل با پسوند .js بسازید (مثل script.js).
2. براے وب، آن را بہ HTML وصل ڪنید:
   <script src="script.js"></script>

یا ڪد را مستقیم در تگ <script> بنویسید:
   <script>
console.log("سلام دنیا!");
</script>


### ۳. مفاهیم پایه
- متغیرها: با let, const, یا var تعریف می‌شوند.
  let name = "علی";
const pi = 3.14;

- انواع دادہ: عدد، رشتہ، آرایہ، شیء، بولین.
  let num = 42;
let str = "سلام";
let arr = [1, 2, 3];
let obj = {name: "علی", age: 25};

- توابع:
  function greet(name) {
return "سلام " + name;
}
console.log(greet("علی")); // خروجے: سلام علی

- رویدادها: براے تعامل با ڪاربر.
  document.getElementById("myButton").addEventListener("click", () => {
alert("دڪمہ ڪلیڪ شد!");
});


### ۴. ڪارهاے اولیه
- دستڪارے DOM: تغییر محتواے صفحہ وب.
  document.getElementById("myDiv").innerHTML = "محتواے جدید";

- ڪنترل جریان: شرط‌ها و حلقه‌ها.
  if (num > 0) {
console.log("مثبت");
} else {
console.log("منفے یا صفر");
}

for (let i = 0; i < 5; i++) {
console.log(i);
}


### ۵. منابع یادگیری
- رایگان: MDN Web Docs، freeCodeCamp، W3Schools.
- ڪتاب: "Eloquent JavaScript".
- تمرین: پروژه‌هاے ڪوچڪ مثل ماشین‌حساب یا To-Do List.

### ۶. نڪات
- جاوااسڪریپت حساس بہ حروف (Case-Sensitive) است.
- با ES6 (نسخہ مدرن) شروع ڪنید ڪہ قابلیت‌هاے جدیدے مثل let, const, و توابع فلش‌دار (=>) دارد.
- اشڪال‌زدایے با console.log() یا ابزار DevTools مرورگر انجام دهید.
پایتون (Python) یڪ زبان برنامه‌نویسے سادہ، خوانا و چندمنظورہ است ڪہ براے مبتدیان و حرفه‌ای‌ها مناسب است. در اینجا توضیح مختصرے براے شروع با پایتون:

### ۱. پایتون چیست؟
- زبانے مفسرے (Interpreted)، سطح بالا و شیءگرا.
- ڪاربردها: توسعہ وب، داده‌ڪاوے، هوش مصنوعے، اتوماسیون، اسڪریپت‌نویسی.
- یادگیرے آسان بہ دلیل سینتڪس سادہ و شبیہ زبان طبیعی.

### ۲. چطور شروع ڪنیم؟
#### ابزارها:
- نصب پایتون: از python.org نسخہ جدید (مثل ۳.۱۲) را دانلود و نصب ڪنید.
- محیط توسعہ:
- IDLE (پیش‌فرض پایتون)
- ویرایشگرهایے مثل VS Code، PyCharm یا Jupyter Notebook (براے داده‌ڪاوی).
- ترمینال: براے اجراے اسڪریپت‌ها (python script.py).

#### راه‌اندازی:
1. یڪ فایل با پسوند .py بسازید (مثل script.py).
2. ڪد سادہ بنویسید:
   print("سلام دنیا!")

3. اجرا: در ترمینال، دستور python script.py را بزنید.

### ۳. مفاهیم پایه
- متغیرها: نیازے بہ تعریف نوع ندارند.
  name = "علی"
age = 25
pi = 3.14


- انواع داده:
- عدد (int, float)، رشتہ (str)، لیست (1, 2, 3)، دیڪشنرے ({"name": "علی"})، بولین (True/False).
  numbers = [1, 2, 3]
person = {"name": "علی", "age": 25}


- توابع:
  def greet(name):
return f"سلام {name}"
print(greet("علی")) # خروجے: سلام علی


- ڪنترل جریان:
- شرط‌ها:
    if age > 18:
print("بزرگسال")
else:
print("نوجوان")

- حلقه‌ها:
    for i in range(5):
print(i) # خروجے: 0 تا 4


### ۴. ڪارهاے اولیه
- ورودی/خروجی:
  name = input("اسمت چیست؟ ")
print(f"خوش آمدے، {name}!")


- ڪار با لیست:
  fruits = ["سیب", "موز", "پرتقال"]
fruits.append("انگور")
print(fruits) # خروجے: ['سیب', 'موز', 'پرتقال', 'انگور']


- ڪتابخانه‌ها:
- پایتون ڪتابخانه‌هاے قدرتمندے دارد (مثل numpy، pandas، requests).
- نصب: pip install نام_ڪتابخانه
- مثال:
    import random
print(random.randint(1, 10)) # عدد تصادفے بین 1 تا 10


### ۵. منابع یادگیری
- رایگان: Python.org، freeCodeCamp، Coursera.
- ڪتاب: "Automate the Boring Stuff with Python".
- تمرین: پروژه‌هاے ڪوچڪ مثل ماشین‌حساب، مدیریت وظایف، یا اسڪریپت‌هاے اتوماسیون.

### ۶. نڪات
- سینتڪس حساس بہ فاصلہ (Indentation) است (معمولاً ۴ فاصله).
- از نسخہ ۳.x استفادہ ڪنید (۲.x منسوخ شده).
- براے اشڪال‌زدایے از print() یا ابزارهاے دیباگ در VS Code/PyCharm استفادہ ڪنید.
- پایتون جامعہ بزرگے دارد؛ سوالاتتان را در Stack Overflow بپرسید!
CCNA
مخفف
Cisco Certified Network Associate است و یڪ گواهینامہ حرفه‌اے در حوزہ شبڪه‌هاے ڪامپیوترے است ڪہ توسط شرڪت سیسڪو ارائہ می‌شود. این گواهینامہ براے افرادے طراحے شدہ ڪہ می‌خواهند دانش و مهارت‌هاے پایه‌اے در مدیریت و پیڪربندے شبڪه‌ها را ڪسب ڪنند.

### CCNA چیست؟
- سطح: مقدماتے تا متوسط (مناسب براے شروع حرفہ در شبڪه).
- تمرڪز: مفاهیم شبڪہ، پیڪربندے تجهیزات سیسڪو (روترها و سوئیچ‌ها)، عیب‌یابے و امنیت شبڪه.
- ڪاربرد: مشاغل مانند مدیر شبڪہ، تڪنسین شبڪہ، یا مهندس شبڪه.

### موضوعات ڪلیدے CCNA:
1. مفاهیم پایہ شبڪه:
- مدل OSI و TCP/IP.
- آدرس‌دهے IP (IPv4 و IPv6).
2. پیڪربندے شبڪه:
- تنظیم VLANها، پروتڪل‌هاے روتینگ (مثل OSPF، EIGRP).
- مدیریت سوئیچ‌ها و روترهاے سیسڪو.
3. امنیت شبڪه:
- تنظیم فایروال‌ها و لیست‌هاے ڪنترل دسترسے (ACL).
4. اتوماسیون و برنامه‌ریزی:
- آشنایے با SDN (شبڪه‌هاے نرم‌افزارمحور) و ابزارهاے اتوماسیون.
5. شبڪه‌هاے بی‌سیم:
- اصول Wi-Fi و پیڪربندے اڪسس‌پوینت‌ها.
6. عیب‌یابی:
- شناسایے و رفع مشڪلات شبڪه.

### آزمون CCNA:
- ڪد آزمون: 200-301 (از سال 2020 به‌روزرسانے شده).
- فرمت: سوالات چندگزینه‌اے، شبیه‌سازے (Simulation) و عملی.
- مدت: حدود 120 دقیقه.
- هزینہ: حدود 300 دلار (بستہ بہ منطقه).

### چرا CCNA مهم است؟
- معتبر در صنعت: سیسڪو رهبر بازار تجهیزات شبڪہ است.
- فرصت شغلے: تقاضاے بالا براے متخصصان شبڪه.
- پایه‌اے براے مدارڪ بالاتر: مثل CCNP (حرفه‌اے) یا CCIE (ڪارشناس).

### چطور شروع ڪنیم؟
1. منابع مطالعه:
- ڪتاب‌هاے رسمے سیسڪو (CCNA Official Cert Guide).
- دوره‌هاے آنلاین: Udemy، CBT Nuggets، Pluralsight.
- شبیه‌سازها: Cisco Packet Tracer یا GNS3 براے تمرین عملی.
2. تمرین عملی:
- لابراتوارهاے مجازے یا تجهیزات واقعے سیسڪو.
3. آمادگے آزمون:
- تست‌هاے شبیه‌سازے (Practice Tests).
- مطالعہ Command Line Interface (CLI) سیسڪو.

### نڪات:
- نیازے بہ پیش‌نیاز رسمے نیست، اما آشنایے با مفاهیم اولیہ شبڪہ مفید است.
- مطالعہ و تمرین منظم (3-6 ماہ) براے قبولے ڪافے است.
- گواهینامہ هر 3 سال نیاز بہ تمدید دارد.
سیسڪو سیستمز (Cisco Systems) یڪ شرڪت فناورے چندملیتے آمریڪایے است ڪہ در سال ۱۹۸۴ تأسیس شد و در حوزہ تجهیزات و راه‌حل‌هاے شبڪہ فعالیت می‌ڪند. سیسڪو یڪے از بزرگ‌ترین و معتبرترین شرڪت‌هاے دنیا در زمینہ شبڪه‌هاے ڪامپیوترے و زیرساخت‌هاے فناورے اطلاعات است.

### سیسڪو چیست؟
- حوزہ فعالیت: طراحے، تولید و فروش تجهیزات شبڪہ مثل روترها، سوئیچ‌ها، فایروال‌ها، اڪسس‌پوینت‌هاے وای‌فاے، و نرم‌افزارهاے مدیریت شبڪه.
- ڪاربردها: زیرساخت شبڪه‌هاے سازمانے، دیتاسنترها، اینترنت، امنیت سایبرے، ارتباطات ویدئویے (مثل Webex)، و اینترنت اشیا (IoT).
- دفتر مرڪزے: سن‌خوزہ، ڪالیفرنیا، آمریڪا.

### محصولات و خدمات ڪلیدی:
1. سخت‌افزار:
- روترها و سوئیچ‌ها: براے اتصال و مدیریت ترافیڪ شبڪہ (مثل سرے Catalyst و Nexus).
- فایروال‌ها: براے امنیت شبڪہ (مثل Firepower).
- تجهیزات وایرلس: اڪسس‌پوینت‌ها و ڪنترلرهاے Wi-Fi.
2. نرم‌افزار:
- Cisco IOS: سیستم‌عامل تجهیزات شبڪه.
- ابزارهاے مدیریت: مثل Cisco DNA Center براے اتوماسیون شبڪه.
- راه‌حل‌هاے ابرے: براے مدیریت شبڪه‌هاے ابرے و هیبریدی.
3. خدمات:
- مشاورہ، پشتیبانے فنے، و آموزش.
- پلتفرم‌هاے همڪارے مثل Cisco Webex براے جلسات آنلاین.

### اهمیت سیسڪو:
- رهبر بازار: سیسڪو بخش بزرگے از بازار تجهیزات شبڪہ را در اختیار دارد.
- استانداردها: پروتڪل‌ها و فناوری‌هاے سیسڪو (مثل VLAN، OSPF) استاندارد صنعت هستند.
- گواهینامه‌ها: مدارڪ سیسڪو (مثل CCNA، CCNP، CCIE) براے متخصصان شبڪہ بسیار معتبرند.
- نوآورے: پیشرو در فناوری‌هایے مثل SDN (شبڪه‌هاے نرم‌افزارمحور)، امنیت سایبرے، و 5G.

### چرا سیسڪو مهم است؟
- شبڪه‌هاے مدرن (از اینترنت خانگے تا دیتاسنترهاے عظیم) اغلب بہ تجهیزات و فناوری‌هاے سیسڪو وابسته‌اند.
- فرصت‌هاے شغلے: مهارت در فناوری‌هاے سیسڪو تقاضاے بالایے در صنعت IT دارد.
- آموزش و پشتیبانے قوے: منابع و برنامه‌هاے آموزشے سیسڪو (مثل Cisco Networking Academy) بہ یادگیرے ڪمڪ می‌ڪنند.

### نڪات:
- سیسڪو با رقبایے مثل Juniper، Arista و Huawei رقابت می‌ڪند.
- براے یادگیرے، ابزارهاے شبیه‌ساز مثل Cisco Packet Tracer رایگان و مفیدند.
- گواهینامہ CCNA نقطہ شروع خوبے براے ورود بہ دنیاے شبڪہ است.
MySQL
یڪ سیستم مدیریت پایگاہ دادہ (Database Management System) متن‌باز (Open-Source) و رابطه‌اے (Relational) است ڪہ براے ذخیرہ، مدیریت و بازیابے داده‌ها استفادہ می‌شود. توسط شرڪت Oracle توسعہ دادہ شدہ و یڪے از محبوب‌ترین پایگاه‌هاے دادہ در جهان است.

### MySQL چیست؟
- نوع: پایگاہ دادہ رابطه‌اے (RDBMS)، یعنے داده‌ها در جدول‌هایے با ستون‌ها و ردیف‌ها ذخیرہ می‌شوند.
- ڪاربرد: وب‌سایت‌ها (مثل وردپرس)، اپلیڪیشن‌ها، تحلیل دادہ، و سیستم‌هاے تجاری.
- زبان: از SQL (Structured Query Language) براے تعامل با داده‌ها استفادہ می‌ڪند.

### ویژگی‌هاے ڪلیدی:
1. متن‌باز: رایگان براے استفادہ (نسخہ Community) و ڪد منبع در دسترس است.
2. عملڪرد بالا: سریع و مناسب براے حجم داده‌هاے بزرگ.
3. پلتفرم‌هاے مختلف: روے ویندوز، لینوڪس و مڪ اجرا می‌شود.
4. امنیت: پشتیبانے از رمزنگارے، احراز هویت و ڪنترل دسترسی.
5. مقیاس‌پذیرے: مناسب براے پروژه‌هاے ڪوچڪ تا دیتاسنترهاے بزرگ.

### مفاهیم پایه:
- جداول: داده‌ها در جدول‌هایے با ستون (Field) و ردیف (Row) ذخیرہ می‌شوند.
- SQL: زبان پرس‌وجو براے ڪار با داده‌ها. مثال:
  SELECT * FROM users WHERE age > 18;

- ڪلیدها:
- ڪلید اصلے (Primary Key): شناسہ یڪتا براے هر ردیف.
- ڪلید خارجے (Foreign Key): براے ارتباط بین جداول.

### چطور شروع ڪنیم؟
1. نصب:
- MySQL را از mysql.com (نسخہ Community) دانلود ڪنید.
- یا از پڪیج‌هاے آمادہ مثل XAMPP (شامل MySQL، Apache، PHP) استفادہ ڪنید.
2. ابزارها:
- MySQL Workbench: رابط گرافیڪے براے مدیریت پایگاہ داده.
- خط فرمان (MySQL Command Line).
- ابزارهاے دیگر: phpMyAdmin، DBeaver.
3. ایجاد پایگاہ داده:
   CREATE DATABASE my_database;
USE my_database;
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT
);

4. درج و پرس‌وجو:
   INSERT INTO users (name, age) VALUES ('علی', 25);
SELECT * FROM users;


### ڪاربردها:
- وب: ذخیرہ داده‌هاے ڪاربران، محصولات (مثل فروشگاه‌هاے آنلاین).
- تحلیل دادہ: با ابزارهایے مثل Power BI یا Python.
- بڪ‌اند: ڪنار زبان‌هایے مثل PHP، Python، Node.js.

### منابع یادگیری:
- رایگان: MySQL Documentation، W3Schools، freeCodeCamp.
- دوره‌ها: Udemy، Coursera.
- تمرین: ساخت پایگاہ دادہ براے پروژه‌هاے ڪوچڪ (مثل سیستم مدیریت ڪتابخانه).

### نڪات:
- MySQL با MariaDB (شاخہ متن‌باز مشابہ) سازگارے زیادے دارد.
- براے پروژه‌هاے بزرگ، بہ بهینه‌سازے پرس‌وجوها و ایندڪس‌گذارے توجہ ڪنید.
- نسخه‌هاے تجارے (Enterprise) امڪانات پیشرفته‌ترے دارند.
PHP
(مخفف Hypertext Preprocessor) یڪ زبان برنامه‌نویسے سمت سرور (Server-Side) است ڪہ براے توسعہ وب‌سایت‌هاے پویا و تعاملے استفادہ می‌شود. یادگیرے آن سادہ و براے مبتدیان مناسب است. در اینجا توضیح مختصرے براے شروع با PHP:

### ۱. PHP چیست؟
- زبانے متن‌باز (Open-Source) و رایگان.
- ڪاربرد: ایجاد صفحات وب پویا، مدیریت پایگاہ دادہ، فرم‌ها و سیستم‌هاے مدیریت محتوا (مثل وردپرس).
- اجرا: روے سرور (مثل Apache، Nginx) و اغلب با پایگاہ دادہ MySQL جفت می‌شود.

### ۲. چطور شروع ڪنیم؟
#### ابزارها:
- نصب سرور:
- XAMPP یا WAMP: شامل PHP، Apache و MySQL.
- یا PHP را جدا از php.net نصب ڪنید.
- ویرایشگر ڪد: VS Code، Sublime Text یا PHPStorm.
- مرورگر: براے تست خروجے وب.

#### راه‌اندازی:
1. نصب XAMPP و اجراے Apache/MySQL.
2. فایل PHP بسازید (مثل index.php) در پوشہ htdocs (در XAMPP).
3. ڪد ساده:
<?php
echo "سلام دنیا!";
?>

4. فایل را در مرورگر باز ڪنید: http://localhost/index.php

### ۳. مفاهیم پایه
- متغیرها: نیازے بہ تعریف نوع ندارند.
$name = "علی";
$age = 25;
echo "نام: $name، سن: $age";


- انواع دادہ: رشتہ (string)، عدد (int, float)، آرایہ، بولین.
$fruits = ["سیب", "موز", "پرتقال"];
$user = ["name" => "علی", "age" => 25];


- توابع:
function greet($name) {
return "سلام $name";
}
echo greet("علی"); // خروجے: سلام علی


- ڪنترل جریان:
- شرط‌ها:
if ($age > 18) {
echo "بزرگسال";
} else {
echo "نوجوان";
}

- حلقه‌ها:
foreach ($fruits as $fruit) {
echo $fruit . "<br>";
}


### ۴. ڪارهاے اولیه
- فرم‌هاے وب:
<!-- index.html -->
<form action="process.php" method="POST">
نام: <input type="text" name="username">
<input type="submit">
</form>

<!-- process.php -->
<?php
$username = $_POST['username'];
echo "خوش آمدے، $username!";
?>


- ڪار با MySQL:
<?php
$conn = mysqli_connect("localhost", "root", "", "my_database");
$result = mysqli_query($conn, "SELECT * FROM users");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
?>


### ۵. منابع یادگیری
- رایگان: PHP.net، W3Schools، freeCodeCamp.
- ڪتاب: "PHP and MySQL Web Development".
- تمرین: پروژه‌هاے ڪوچڪ مثل فرم ثبت‌نام، سیستم وبلاگ یا فروشگاہ ساده.

### ۶. نڪات
- PHP با HTML ادغام می‌شود، پس یادگیرے HTML/CSS مفید است.
- از نسخه‌هاے جدید (PHP 7.x یا 8.x) استفادہ ڪنید.
- فریم‌ورڪ‌ها: براے پروژه‌هاے بزرگ، Laravel یا CodeIgniter را بررسے ڪنید.
- امنیت: از SQL Injection و XSS با توابع آمادہ (مثل mysqli_real_escape_string) جلوگیرے ڪنید.
- اشڪال‌زدایے: از var_dump() یا error_reporting() استفادہ ڪنید.
اصول اولیہ برنامہ‌نویسے (Programming Fundamentals) شامل ایں موارد است:

1. متغیرات و انواع داده‌ها (Variables & Data Types): ذخیرہ و مدیریت داده‌ها مثل عدد (int, float)، رشتہ (string)، و بولے (boolean).

2. ساختارهاے ڪنترلے (Control Structures):
- شرط‌ها (if, else, switch): تصمیم‌گیرے بر اساس شرایط.
- حلقه‌ها (for, while): تڪرار عملیات.

3. توابع (Functions): ڪدها رو بہ بخش‌هاے قابل استفادہ مجدد تقسیم ڪردن تا ڪد تمیز و ماژولار بشه.

4. ورودی/خروجے (Input/Output): گرفتن دادہ از ڪاربر (مثل scanf یا input) و نمایش نتایج (مثل print).

5. مدیریت خطاها (Error Handling): استفادہ از try-catch یا شرط‌ها براے پیشگیرے و مدیریت خطاها.

6. ساختار داده‌ها (Data Structures): مثل آرایه‌ها، لیست‌ها، پشته‌ها و درخت‌ها براے سازمان‌دهے داده‌ها.

7. الگوریتم‌ها (Algorithms): روش‌هاے گام‌به‌گام براے حل مسائل، مثل جستجو (Search) و مرتب‌سازے (Sorting).

8. شیءگرایے (Object-Oriented Programming): مفاهیمے مثل ڪلاس، شیء، وراثت و چندریختے براے طراحے بهتر.

9. خوانایے و مستندسازے (Readability & Documentation): نوشتن ڪد تمیز، ڪامنت‌گذارے و توضیحات براے درڪ بهتر.

10. دیباگینگ (Debugging): پیدا ڪردن و رفع اشڪالات در ڪد.

این اصول پایه‌ے هر زبان برنامه‌نویسی‌ان و یادگیریشون براے شروع ضروریہ.
تاریخچہ انواع زبان‌هاے برنامه‌نویسے به‌طور خلاصه:

1. دهہ ۱۹۴۰ - زبان‌هاے سطح پایین:
- اسمبلے: اولین زبان‌هاے برنامه‌نویسے نزدیڪ بہ زبان ماشین، مثل زبان اسمبلے براے ڪنترل مستقیم سخت‌افزار.

2. دهہ ۱۹۵۰ - زبان‌هاے سطح بالا:
- فورترن (1957): اولین زبان سطح بالا براے محاسبات علمی.
- ڪوبول (1959): براے ڪاربردهاے تجارے طراحے شد.
- لیسپ (1958): براے هوش مصنوعے و پردازش نمادین.

3. دهہ ۱۹۶۰ - گسترش ساختارها:
- آلگول (1960): پایہ زبان‌هاے مدرن، معرفے بلوڪ‌هاے ساختاری.
- بیسیڪ (1964): براے آموزش برنامه‌نویسے ساده.

4. دهہ ۱۹۷۰ - برنامه‌نویسے ساخت‌یافته:
- C (1972): قدرتمند و انعطاف‌پذیر، پایہ سیستم‌عامل‌ها.
- پاسڪال (1970): براے آموزش برنامه‌نویسے ساخت‌یافته.

5. دهہ ۱۹۸۰ - شیءگرایے و ڪاربردی:
- C++ (1983): گسترش C با قابلیت شیءگرایی.
- Objective-C (1984): براے توسعہ اپلیڪیشن‌هاے اپل.
- پرل (1987): براے پردازش متن و اسڪریپت‌نویسی.

6. دهہ ۱۹۹۰ - همه‌منظورہ و وب:
- پایتون (1991): سادہ، خوانا، چندمنظوره.
- جاوا (1995): مستقل از پلتفرم، محبوب براے اپلیڪیشن‌هاے سازمانی.
- جاوااسڪریپت (1995): براے برنامه‌نویسے وب.
- PHP (1994): براے توسعہ وب سرورمحور.

7. دهہ ۲۰۰۰ - مدرن و تخصصی:
- C# (2000): براے توسعہ ویندوز و بازی.
- روبے (2000): براے توسعہ وب (مثل Ruby on Rails).
- گو (2009): براے عملڪرد بالا و سیستم‌هاے مقیاس‌پذیر.

8. دهہ ۲۰۱۰ بہ بعد - تنوع و بهینه‌سازی:
- راست (2010): ایمن و سریع، براے سیستم‌ها.
- ڪاتلین (2011): براے توسعہ اندروید.
- سوئیفت (2014): براے اپلیڪیشن‌هاے iOS.
- تایپ‌اسڪریپت (2012): نسخہ بهبودیافتہ جاوااسڪریپت.

روندها:
- از زبان‌هاے ماشین‌محور بہ ڪاربرمحور.
- تمرڪز بر شیءگرایے، برنامه‌نویسے تابعے و چندمنظوره.
- رشد زبان‌هاے وب و اپلیڪیشن‌هاے موبایل.
- تأڪید بر ایمنے، مقیاس‌پذیرے و سادگی.

✍Mr.Ashkan.Legend
پردرآمدترین زبان‌هاے برنامه‌نویسے در سال ۲۰۲۳ (بر اساس گزارش‌ها مثل Stack Overflow و Glassdoor) بہ ترتیب تقریبی:

1. ڪلوژر (Clojure): زبان تابعے، محبوب در فین‌تڪ و شرڪت‌هاے داده‌محور. میانگین حقوق جهانے: ~۱۲۰,۰۰۰ دلار/سال.
2. الڪسیر (Elixir): براے سیستم‌هاے مقیاس‌پذیر (مثل وب‌سرویس‌ها). میانگین حقوق: ~۱۱۰,۰۰۰ دلار/سال.
3. راست (Rust): ایمن و سریع، مورد علاقہ توسعہ سیستم‌ها و بلاڪ‌چین. میانگین حقوق: ~۱۰۰,۰۰۰ دلار/سال.
4. اسڪالا (Scala): در تحلیل دادہ و سیستم‌هاے توزیع‌شدہ. میانگین حقوق: ~۱۰۰,۰۰۰ دلار/سال.
5. گو (Go): سادہ و ڪارآمد، محبوب در شرڪت‌هاے فناورے (مثل گوگل). میانگین حقوق: ~۹۵,۰۰۰ دلار/سال.
6. پایتون (Python): چندمنظورہ، پرڪاربرد در دادہ، هوش مصنوعے و وب. میانگین حقوق: ~۹۰,۰۰۰ دلار/سال.
7. جاوا (Java): همچنان قوے در اپلیڪیشن‌هاے سازمانے و اندروید. میانگین حقوق: ~۸۵,۰۰۰ دلار/سال.
8. ڪاتلین (Kotlin): براے توسعہ اندروید و وب. میانگین حقوق: ~۸۵,۰۰۰ دلار/سال.

نڪات:
- درآمد بستگے بہ منطقہ (مثل آمریڪا، اروپا، ایران)، تخصص، تجربہ و صنعت (مثل فین‌تڪ، گیمینگ) داره.
- زبان‌هاے تخصصے (مثل ڪلوژر یا راست) بہ دلیل ڪمیاب بودن توسعه‌دهندہ، پردرآمدترن.
- پایتون بہ دلیل تقاضاے بالا و ڪاربرد گستردہ، در ایران هم جزو گزینه‌هاے پرطرفداره.

✍Mr.Ashkan.Legend
اچ‌تی‌ام‌ال
(HTML)
ڪہ مخفف
HyperText Markup Language
است،
زبان استاندارد براے ساخت ساختار صفحات وب است. این زبان، اسڪلت اصلے وب‌سایت‌ها رو تشڪیل می‌دہ و محتوا (مثل متن، تصویر، ویدیو) رو سازمان‌دهے می‌ڪنه.

### ویژگی‌هاے ڪلیدے HTML:
- زبان نشانه‌گذارے: از تگ‌ها (مثل <p> براے پاراگراف یا <img> براے تصویر) براے تعریف عناصر صفحہ استفادہ می‌ڪنه.
- ساختار سادہ: شامل دو بخش اصلے <head> (اطلاعات متا، عنوان صفحہ) و <body> (محتواے قابل مشاهده).
- استاتیڪ: HTML به‌تنهایے پویا نیست و براے تعاملے ڪردن صفحات، با CSS (براے استایل) و جاوااسڪریپت (براے منطق) ترڪیب می‌شه.

### مثال ساده:
<!DOCTYPE html>
<html>
<head>
<title>صفحہ من</title>
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

- <!DOCTYPE html>: مشخص می‌ڪنہ ڪہ این سند HTML5 است.
- <h1>: تیتر اصلی.
- <p>: پاراگراف.

### نسخه‌ها:
- HTML4 (1999): استاندارد قدیمی‌تر.
- HTML5 (2014): نسخہ مدرن با قابلیت‌هاے پیشرفتہ مثل تگ‌هاے <video>, <audio>, و APIهاے جدید براے وب پویا.

### ڪاربردها:
- ایجاد ساختار وب‌سایت‌ها.
- پایہ براے تڪنولوژی‌هاے وب (مثل CSS و جاوااسڪریپت).
- پشتیبانے از دسترسی‌پذیرے (Accessibility) براے ڪاربران با نیازهاے ویژه.

### یادگیری:
HTML خیلے سادہ و نقطہ شروع عالے براے توسعہ وب است. منابع مثل W3Schools یا MDN Web Docs براے یادگیرے مناسبن.
CSS
مخفف
Cascading Style Sheets
(برگه‌هاے سبڪ آبشارے) است
و زبانے براے طراحے و استایل‌دهے بہ صفحات وب ساخته‌شدہ با HTML استفادہ می‌شہ. CSS ظاهر و چیدمان عناصر صفحہ (مثل رنگ، فونت، اندازہ، موقعیت) رو ڪنترل می‌ڪنه.

### ویژگی‌هاے ڪلیدے CSS:
- جدا ڪردن محتوا از ظاهر: HTML ساختار رو تعریف می‌ڪنہ، CSS استایل رو.
- انعطاف‌پذیر: می‌تونہ یہ وب‌سایت ڪامل رو با یہ فایل CSS استایل‌دهے ڪنه.
- آبشارے (Cascading): اولویت استایل‌ها بر اساس ترتیب و specificity (مشخص بودن) اعمال می‌شه.

### مثال ساده:
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
text-align: center;
}
p {
font-size: 18px;
color: green;
}
</style>
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

- در اینجا، CSS رنگ و تراز متن <h1> و اندازہ و رنگ فونت <p> رو مشخص ڪرده.

### روش‌هاے استفادہ از CSS:
1. داخلے (Internal): داخل تگ <style> در بخش <head> (مثل مثال بالا).
2. خارجے (External): در فایل جدا (.css) ڪہ با تگ <link> بہ HTML وصل می‌شه.
3. خطے (Inline): مستقیم داخل تگ HTML با ویژگے style (مثل <p style="color: red;">).

### قابلیت‌هاے مهم CSS:
- رسپانسیو (Responsive): با Media Queries براے تطبیق با دستگاه‌هاے مختلف (موبایل، دسڪتاپ).
- انیمیشن و ترنزیشن: براے جلوه‌هاے بصرے (مثل حرڪت یا تغییر رنگ).
- فلڪس‌باڪس و گرید: براے چیدمان‌هاے پیچیدہ و مرتب.

### نسخه‌ها:
- CSS3: نسخہ مدرن با ویژگی‌هایے مثل انیمیشن، گرادیانت، و پشتیبانے بهتر از رسپانسیو.

### یادگیری:
CSS براے مبتدیان سادہ است، اما تسلط بہ فلڪس‌باڪس، گرید و رسپانسیو نیاز بہ تمرین دارہ. منابع مثل W3Schools و CSS-Tricks عالے هستن.
ترڪیب CSS با HTML بہ معناے استفادہ از CSS براے استایل‌دهے و زیباسازے ساختار صفحاتے است ڪہ با HTML ساختہ شده‌اند. HTML اسڪلت و محتواے صفحہ (مثل متن، تصاویر) رو فراهم می‌ڪنہ، و CSS ظاهر اون‌ها (مثل رنگ، فونت، چیدمان) رو تنظیم می‌ڪنہ. این ترڪیب باعث می‌شہ وب‌سایت‌ها هم ڪارآمد باشن و هم جذاب بہ نظر بیان.

### روش‌هاے ترڪیب CSS با HTML:
1. CSS داخلے (Internal CSS):
- استایل‌ها داخل تگ <style> در بخش <head> سند HTML نوشتہ می‌شن.
- مثال:
     <!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
text-align: center;
}
p {
font-size: 16px;
color: green;
}
</style>
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

- مناسب براے پروژه‌هاے ڪوچڪ یا تست.

2. CSS خارجے (External CSS):
- استایل‌ها در یڪ فایل جدا با پسوند .css (مثل styles.css) نوشتہ می‌شن و با تگ <link> بہ HTML وصل می‌شن.
- مثال:
     <!-- فایل HTML (index.html) -->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

     /* فایل CSS (styles.css) */
h1 {
color: blue;
text-align: center;
}
p {
font-size: 16px;
color: green;
}

- بهترین روش براے پروژه‌هاے بزرگ، چون مدیریت و نگهدارے ڪد راحت‌تره.

3. CSS خطے (Inline CSS):
- استایل مستقیماً داخل تگ HTML با ویژگے style نوشتہ می‌شه.
- مثال:
     <h1 style="color: blue; text-align: center;">سلام، دنیا!</h1>
<p style="font-size: 16px; color: green;">این یڪ پاراگراف است.</p>

- براے تغییرات سریع مناسبہ، ولے براے پروژه‌هاے بزرگ توصیہ نمی‌شہ چون مدیریتش سخت می‌شه.

### نڪات مهم:
- اولویت‌بندے (Specificity): اگر چند استایل براے یڪ عنصر تعریف بشہ، CSS خطے > داخلے > خارجے (بستہ بہ ترتیب و مشخص بودن انتخابگر).
- سازگارے: ترڪیب HTML و CSS امڪان ایجاد صفحات رسپانسیو (مناسب براے موبایل و دسڪتاپ) رو فراهم می‌ڪنه.
- ابزارهاے توسعہ: مرورگرها (مثل ڪروم) با ابزار Developer Tools بہ تست و دیباگ استایل‌ها ڪمڪ می‌ڪنن.

### چرا ترڪیب این دو مهم است؟
- HTML بدون CSS سادہ و غیرجذابہ (فقط متن و ساختار خام).
- CSS بدون HTML ڪاربردے ندارہ، چون چیزے براے استایل‌دهے وجود نداره.
- با هم، یہ وب‌سایت حرفه‌اے، زیبا و ڪاربرپسند می‌سازن.

✍Mr.Ashkan.Legend
براے دانلود موزیڪ‌ویدیو از لینڪ اینستاگرام و شناسایے خوانندہ آهنگ روے ویدیو، نیاز بہ چند ابزار و API داریم. ڪد زیر با استفادہ از ڪتابخانه‌هاے پایتون مثل instaloader براے دانلود ویدیو و shazamio براے شناسایے آهنگ ڪار می‌ڪنہ. توجہ ڪن ڪہ این ڪار ممڪنہ با محدودیت‌هاے اینستاگرام یا قوانین ڪپی‌رایت مواجہ بشه.

### پیش‌نیازها:
1. نصب پڪیج‌ها:
   pip install instaloader shazamio


2. حساب اینستاگرام (براے دسترسے بہ پست‌ها، نیاز بہ لاگین دارید).
3. API Shazam (براے شناسایے آهنگ).

### ڪد پایتون:
import instaloader
from shazamio import Shazam
import os
import asyncio

# تابع دانلود ویدیو از اینستاگرام
def download_instagram_video(post_url, username, password):
L = instaloader.Instaloader()

# لاگین بہ اینستاگرام
try:
L.login(username, password)
except Exception as e:
print(f"خطا در لاگین: {e}")
return None

# استخراج shortcode از URL
shortcode = post_url.split("/")[-2]

try:
# دانلود پست
post = instaloader.Post.from_shortcode(L.context, shortcode)
L.download_post(post, target="downloads")
print("ویدیو دانلود شد!")

# پیدا ڪردن فایل ویدیویی
for file in os.listdir("downloads"):
if file.endswith(".mp4"):
return os.path.join("downloads", file)
except Exception as e:
print(f"خطا در دانلود: {e}")
return None

# تابع شناسایے آهنگ با Shazam
async def recognize_song(video_path):
shazam = Shazam()
try:
# شناسایے آهنگ از فایل ویدیویی
result = await shazam.recognize_song(video_path)
if result and "track" in result:
track = result["track"]
artist = track.get("subtitle", "نامشخص")
title = track.get("title", "نامشخص")
print(f"آهنگ: {title} - خوانندہ: {artist}")
return artist, title
else:
print("آهنگ شناسایے نشد!")
return None, None
except Exception as e:
print(f"خطا در شناسایے: {e}")
return None, None

# تابع اصلی
async def main():
# اطلاعات اینستاگرام
username = "your_instagram_username" # نام ڪاربرے اینستاگرام
password = "your_instagram_password" # رمز عبور
post_url = input("لینڪ پست اینستاگرام را وارد ڪنید: ") # مثلا: https://www.instagram.com/p/XXXXX/

# ایجاد پوشہ براے دانلود
if not os.path.exists("downloads"):
os.makedirs("downloads")

# دانلود ویدیو
video_path = download_instagram_video(post_url, username, password)
if video_path:
# شناسایے آهنگ
artist, title = await recognize_song(video_path)
if artist:
print(f"نتیجہ نهایے: آهنگ '{title}' از '{artist}'")
else:
print("نتیجه‌اے یافت نشد.")
else:
print("دانلود ناموفق بود.")

# اجراے ڪد
if __name__ == "__main__":
asyncio.run(main())


### توضیحات:
1. دانلود ویدیو:
- از instaloader براے دانلود ویدیو از لینڪ پست اینستاگرام استفادہ می‌شه.
- نیاز بہ نام ڪاربرے و رمز عبور اینستاگرام دارہ (بہ دلیل محدودیت‌هاے API عمومی).
- ویدیو در پوشہ downloads ذخیرہ می‌شه.

2. شناسایے آهنگ:
- ڪتابخانہ shazamio فایل ویدیویے رو تحلیل می‌ڪنہ و از طریق API Shazam اطلاعات آهنگ (نام و خوانندہ) رو برمی‌گردونه.
- اگر آهنگ قابل شناسایے نباشہ، پیام خطا نمایش دادہ می‌شه.

3. نڪات مهم:
- محدودیت‌هاے اینستاگرام: لاگین مڪرر ممڪنہ باعث بلاڪ موقت حساب بشہ. از حساب تست استفادہ ڪن.
- ڪیفیت فایل: فایل‌هاے ویدیویے باید ڪیفیت صوتے خوبے داشتہ باشن تا Shazam بتونہ آهنگ رو تشخیص بده.
- قوانین ڪپی‌رایت: دانلود و استفادہ از محتوا بدون اجازہ ممڪنہ غیرقانونے باشه.
- وابستگے بہ اینترنت: براے دانلود و شناسایے، اتصال اینترنت لازمه.

### جایگزین‌ها:
- اگر نمی‌خواے لاگین ڪنے، می‌تونے از وب‌سایت‌هاے دانلود اینستاگرام (مثل Snapinsta) به‌صورت دستے ویدیو رو دانلود ڪنے و فقط بخش شناسایے آهنگ رو با ڪد اجرا ڪنی.
- براے شناسایے آهنگ، اپلیڪیشن‌هاے جایگزین مثل SoundHound هم می‌تونن به‌صورت دستے استفادہ بشن.

✍Mr.Ashkan.Legend
در زیر یڪ نمونہ ڪد سادہ پایتون براے ربات تلگرامے آوردہ شدہ ڪہ با استفادہ از ڪتابخانه‌هاے python-telegram-bot و yt-dlp قابلیت دانلود ویدیو از یوتیوب و اینستاگرام رو دارہ. این ربات لینڪ ویدیویے ڪہ ڪاربر می‌فرستہ رو می‌گیرہ، فایل رو دانلود می‌ڪنہ و براے ڪاربر می‌فرسته.

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
import yt_dlp
import os

# توڪن ربات رو از BotFather بگیر
TOKEN = "YOUR_BOT_TOKEN"

# تنظیمات yt-dlp براے دانلود
YDL_OPTS = {
'format': 'best[ext=mp4]', # دانلود بهترین ڪیفیت mp4
'outtmpl': 'downloads/%(title)s.%(ext)s', # محل ذخیرہ فایل
'noplaylist': True, # جلوگیرے از دانلود پلی‌لیست
}

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("سلام! لینڪ یوتیوب یا اینستاگرام بفرست تا ویدیوشو برات دانلود ڪنم.")

async def handle_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
url = update.message.text
chat_id = update.message.chat_id

# بررسے اینڪہ لینڪ معتبرہ یا نه
if "youtube.com" not in url and "instagram.com" not in url and "youtu.be" not in url:
await update.message.reply_text("لطفاً لینڪ معتبر از یوتیوب یا اینستاگرام بفرست!")
return

await update.message.reply_text("در حال دانلود... ڪمے صبر ڪن!")

try:
# دانلود ویدیو با yt-dlp
with yt_dlp.YoutubeDL(YDL_OPTS) as ydl:
info = ydl.extract_info(url, download=True)
file_path = ydl.prepare_filename(info)

# ارسال فایل بہ ڪاربر
with open(file_path, 'rb') as video:
await context.bot.send_video(chat_id=chat_id, video=video)

# حذف فایل بعد از ارسال
os.remove(file_path)
await update.message.reply_text("ویدیو با موفقیت فرستادہ شد!")

except Exception as e:
await update.message.reply_text(f"خطا: {str(e)}")

async def main():
# ایجاد پوشہ downloads اگر وجود نداشتہ باشه
if not os.path.exists('downloads'):
os.makedirs('downloads')

app = Application.builder().token(TOKEN).build()

# هندلرها
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_link))

# شروع ربات
print("ربات شروع شد...")
await app.run_polling()

if __name__ == "__main__":
import asyncio
asyncio.run(main())


### پیش‌نیازها:
1. نصب ڪتابخانه‌ها:
   pip install python-telegram-bot yt-dlp

2. FFmpeg:
- براے پردازش ویدیوها، باید FFmpeg روے سیستم نصب باشه:
- ویندوز: از سایت رسمے دانلود ڪن و بہ PATH اضافہ ڪن.
- لینوڪس: sudo apt install ffmpeg
- مڪ: brew install ffmpeg
3. توڪن ربات:
- از @BotFather توڪن بگیر و توے TOKEN قرار بده.

### توضیحات:
- ربات بہ دستور /start پاسخ می‌دہ و منتظر لینڪ از یوتیوب یا اینستاگرام می‌مونه.
- وقتے لینڪ می‌فرستے، ربات ویدیو رو دانلود می‌ڪنہ، توے تلگرام می‌فرستہ و فایل رو حذف می‌ڪنه.
- فایل‌ها توے پوشہ downloads ذخیرہ می‌شن (موقتاً).
- این ڪد ویدیوهاے mp4 با بهترین ڪیفیت رو دانلود می‌ڪنه.

### محدودیت‌ها:
- حجم فایل: تلگرام محدودیت 50 مگابایت براے آپلود فایل دارہ. براے فایل‌هاے بزرگ‌تر، باید از روش‌هایے مثل آپلود بہ سرور یا سرویس‌هاے ابرے استفادہ ڪنی.
- اینستاگرام: براے دانلود از اینستاگرام، ممڪنہ نیاز بہ لاگین باشہ (بخصوص براے پست‌هاے خصوصی). می‌تونے تنظیمات YDL_OPTS رو تغییر بدے و نام ڪاربری/رمز عبور بذاری:
  YDL_OPTS['username'] = 'YOUR_INSTAGRAM_USERNAME'
YDL_OPTS['password'] = 'YOUR_INSTAGRAM_PASSWORD'

- خطاها: لینڪ‌هاے نامعتبر یا مشڪلات سرور (مثل قطعے اینترنت) ممڪنہ باعث خطا بشن. ڪد خطاها رو بہ ڪاربر نشون می‌ده.

### بهبودهاے ممڪن:
- اضافہ ڪردن انتخاب ڪیفیت ویدیو.
- پشتیبانے از دانلود صوت (mp3).
- آپلود فایل‌هاے بزرگ بہ سرویس‌هایے مثل Google Drive.
❤‍🔥1
ڪد زیر یڪ ربات تلگرام با پایتون (استفادہ از ڪتابخانہ `python-telegram-bot`) ارائہ می‌دهد ڪہ سہ قابلیت دارد:
1. تبدیل فایل بہ لینڪ (آپلود فایل بہ تلگرام و دریافت لینڪ).
2. تبدیل لینڪ بہ فایل (دانلود فایل از لینڪ تلگرام).
3. تغییر نام فایل ارسالی.

### پیش‌نیازها:
- نصب ڪتابخانہ: `pip install python-telegram-bot requests`
- توڪن ربات از BotFather.

###
ڪد:
```python
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
import requests

# توڪن ربات
TOKEN = "YOUR_BOT_TOKEN"

# تابع شروع
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"سلام! من ربات مدیریت فایلم.\n"
"1. فایل بفرست تا لینڪش رو بدم.\n"
"2. لینڪ فایل تلگرام بدہ تا دانلودش ڪنم.\n"
"3. فایل بفرست و بعد اسمش رو بگو تا تغییرش بدم."
)

# دریافت فایل و تبدیل بہ لینڪ
async def handle_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
file = await update.message.document.get_file()
file_url = file.file_path
await update.message.reply_text(f"لینڪ فایل: {file_url}")

# تغییر نام فایل
async def rename_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not context.user_data.get("file"):
await update.message.reply_text("اول یہ فایل بفرست!")
return
new_name = update.message.text
if not new_name.endswith(context.user_data["file_ext"]):
new_name += context.user_data["file_ext"]

file = context.user_data["file"]
new_file_path = f"downloads/{new_name}"
os.rename(file.file_path, new_file_path)

await update.message.reply_document(document=open(new_file_path, "rb"))
os.remove(new_file_path)
context.user_data.clear()

# ذخیرہ فایل براے تغییر نام
async def store_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
file = await update.message.document.get_file()
file_ext = os.path.splitext(update.message.document.file_name)[1]
file_path = f"downloads/{update.message.document.file_name}"

if not os.path.exists("downloads"):
os.makedirs("downloads")

file_data = requests.get(file.file_path).content
with open(file_path, "wb") as f:
f.write(file_data)

context.user_data["file"] = file
context.user_data["file_ext"] = file_ext
await update.message.reply_text("اسم جدید فایل رو بگو:")

# دانلود فایل از لینڪ
async def download_from_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
link = update.message.text
if "t.me" in link or "telegram.me" in link:
await update.message.reply_text("لطفاً لینڪ مستقیم فایل (مثل https://...file.mp4) رو بفرست.")
return

try:
response = requests.get(link)
file_name = link.split("/")[-1]
file_path = f"downloads/{file_name}"

if not os.path.exists("downloads"):
os.makedirs("downloads")

with open(file_path, "wb") as f:
f.write(response.content)

await update.message.reply_document(document=open(file_path, "rb"))
os.remove(file_path)
except Exception as e:
await update.message.reply_text(f"خطا: {str(e)}")

def main():
app = Application.builder().token(TOKEN).build()

app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.Document.ALL, store_file))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, download_from_link))

app.run_polling()

if __name__ == "__main_
_":
main()
`
``

### توضیحات:
1.
**تبدیل فایل بہ لینڪ**:
- وقتے ڪاربر فایل می‌فرستہ، ربات لینڪ مستقیم فایل (file_path) رو برمی‌گردونه.
2. **دانلود از لینڪ**:
-
ڪاربر لینڪ مستقیم فایل تلگرام (مثل `https://...file.mp4`) رو می‌فرستہ، ربات فایل رو دانلود و ارسال می‌ڪنه.
3. **تغییر نام فایل**:
- ڪاربر فایل می‌فرستہ، ربات درخواست اسم جدید می‌ڪنہ. بعد فایل با اسم جدید ارسال می‌شه.
4. **نڪات**:
- پوشہ `downloads` براے ذخیرہ موقت فایل‌ها ساختہ می‌شه.
- فایل‌هاے موقت بعد از ارسال حذف می‌شن.
- براے لینڪ‌هاے غیرمستقیم (مثل t.me) باید API تلگرام یا ابزارهاے
با هر خط برنامه
دنیایی جدید خلق می‌شود.

جایی که منطق و خلاقیت در هم می‌آمیزند

و هر پروژه چالشی برای ساخت چیزهایی است که در ذهن داریم.

✍️Mr.Ashkan.Legend
Please open Telegram to view this post
VIEW IN TELEGRAM
دو روز کل اینترنت قطعه 😐
و فقط 1 درصد مردم دسترسی به اینترنت دارن
از 1 درصد متصل به نت ملی 2 درصد موبایل رو تشکیل میده و 92 درصد هم بات ها هستن 😐

افراد متصل کمتر از 0.001 درصد!!! 🏴‍☠️
این یه کد حرفه‌ای پایتون برای ربات تلگرامیه که می‌تونه از اینستاگرام ویدیو و عکس دانلود کنه. از کتابخونه `python-telegram-bot` برای ربات و `instagrapi` برای دانلود استفاده می‌کنه. کد کامل و قابل اجراست، فقط نیاز به یه سری تنظیمات اولیه دار
ی.

```python
import logging
from telegram import Update
from telegram.ext import (
ApplicationBuilder,
CommandHandler,
MessageHandler,
Filters,
ContextTypes,
)
from instagrapi import Client
import re
import os

# تنظیمات لاگینگ
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
logger = logging.getLogger(__name__)

# تنظیمات اینستاگرام
INSTA_USERNAME = "your_instagram_username" # نام کاربری اینستاگرام
INSTA_PASSWORD = "your_instagram_password" # رمز اینستاگرام
DOWNLOAD_DIR = "downloads" # پوشه ذخیره فایل‌ها

# توکن ربات تلگرام
TOKEN = "your_telegram_bot_token" # توکن ربات از BotFather

# تنظیم کلاینت اینستاگرام
cl = Client()
cl.login(INSTA_USERNAME, INSTA_PASSWORD)

# ایجاد پوشه برای دانلود
if not os.path.exists(DOWNLOAD_DIR):
os.makedirs(DOWNLOAD_DIR)

# تابع شروع ربات
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"سلام! لینک پست اینستاگرام رو بفرست تا برات دانلود کنم. 😎\nمثال: https://www.instagram.com/p/ABC123/"
)

# تابع مدیریت خطا
async def error_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
logger.error(f"Update {update} caused error {context.error}")
await update.message.reply_text("یه مشکلی پیش اومد! دوباره امتحان کن یا لینک رو چک کن.")

# تابع بررسی و دانلود از لینک اینستاگرام
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
url = update.message.text
# بررسی اینکه لینک اینستاگرام است یا نه
insta_regex = r"(https?://www\.instagram\.com/(p|reel)/[a-zA-Z0-9-_]+)"
match = re.match(insta_regex, url)

if not match:
await update.message.reply_text("لطفاً یه لینک معتبر اینستاگرام بفرست! مثل: https://www.instagram.com/p/ABC123/")
return

await update.message.reply_text("در حال دانلود... کمی صبر کن! ⏳")

try:
# گرفتن shortcode از لینک
shortcode = url.split("/")[-2]
media = cl.media_info(cl.media_pk_from_code(shortcode))

# بررسی نوع مدیا (عکس یا ویدیو)
if media.media_type == 1: # عکس
file_path = cl.photo_download(media.pk, folder=DOWNLOAD_DIR)
with open(file_path, "rb") as photo:
await update.message.reply_photo(photo=photo, caption="دانلود شد! 📸")
elif media.media_type == 2: # ویدیو
file_path = cl.video_download(media.pk, folder=DOWNLOAD_DIR)
with open(file_path, "rb") as video:
await update.message.reply_video(video=video, caption="دانلود شد! 🎥")
else:
await update.message.reply_text("این نوع محتوا پشتیبانی نمی‌شه! فقط عکس و ویدیو می‌تونم دانلود کنم.")

# پاک کردن فایل از سرور
os.remove(file_path)

except Exception as e:
logger.error(f"Error downloading media: {e}")
await update.message.reply_text("خطا! نمی‌تونم این پست رو دانلود کنم. شاید پست خصوصی باشه یا لینک اشتباهه.")

def main():
# ساخت اپلیکیشن ربات
app = ApplicationBuilder().token(TOKEN).build()

# هندلرها
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message))
app.add_error_handler(error_handler)

# شروع ربات
logger.info("Starting bot...")
app.run_polling()

if __name__ == "__main_
_":
main()
```

### راهنمای راه‌اندازی:
1. *
*نصب کتابخونه‌ها**:
```bash
pip install pyt
hon-telegram-bot instagrapi
```
2. **تنظیمات اولیه**:
- توکن ربات رو از [BotFather](https://t.me/BotFather) بگیر و توی `TOKEN` بذار.
- یه اکانت
اینستاگرام برای لاگین وارد کن توی `INSTA_USERNAME` و `INSTA_PASSWORD`. (اکانت واقعی بهتره، چون اکانت‌های فیک ممکنه محدود بشن.)
- پوشه `downloads` برای ذخیره موقت فایل‌ها استفاده می‌شه. می‌تونی مسیرش رو عوض کنی.

3. **اجرا**:
- کد رو توی یه فایل (مثلاً `bot.py
پست آموزشی برای کانال: "ترفند جاوااسکریپت - ساده‌سازی کد با Destructuring"

🎯 یه ترفند باحال برای تمیزتر کردن کد جاوااسکریپت!

اگر تا حالا با Destructuring کار نکردی، آماده باش که عاشقش بشی! 😍 این قابلیت بهت کمک می‌کنه که کدت کوتاه‌تر، خواناتر و حرفه‌ای‌تر بشه.

### مثال ساده:
فرض کن یه آبجکت داری:
const user = {
name: "علی",
age: 25,
city: "تهران"
};


#### روش قدیمی:
const name = user.name;
const age = user.age;
const city = user.city;


#### با Destructuring:
const { name, age, city } = user;


فقط با یه خط، همه متغیرها رو تعریف کردی! 🚀

### یه مثال پیشرفته‌تر:
اگه بخوای اسم متغیرها رو عوض کنی یا فقط بعضی از خواص رو بگیری:
const { name: userName, city } = user;
console.log(userName); // خروجی: علی
console.log(city); // خروجی: تهران


### کاربرد واقعی:
فرض کن داری با یه API کار می‌کنی. پاسخ API یه آبجکت پیچیده‌ست:
const response = {
data: {
id: 123,
title: "پروژه جدید",
details: { priority: "بالا", deadline: "1402/08/01" }
}
};

// استخراج اطلاعات با Destructuring
const { data: { title, details: { priority } } } = response;
console.log(title); // خروجی: پروژه جدید
console.log(priority); // خروجی: بالا


### چرا باید ازش استفاده کنی؟
- کد کمتر = باگ کمتر!
- خوانایی بهتر برای تیم‌های برنامه‌نویسی.
- تو فریم‌ورک‌هایی مثل React برای props خیلی کاربردیه.

💡 چالشی برای تو: یه آبجکت بساز و با Destructuring اطلاعاتش رو استخراج کن. نتیجه رو تو کامنت‌ها بنویس!

#جاوااسکریپت #برنامهنویسی #ترفندکدنویسی

😎 Mr.Ashkan.Legend