یادداشت های برنامه نویس آماتور | 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
حذف حساب تلگرام شما با انتقال مالکیت ربات 👺😈 #آموزشی

این روش از قدیم بود و شاید نوشتن درباره آن، بدآموزی داشت اما چون اخیرا شایع شده، لازم است درباره آن اطلاع‌رسانی کنیم.

در این روش مهاجم (که قصد حذف حساب تلگرامی شما را دارد!) شما را ترغیب به استارت رباتی ظاهرا بی‌ضرر می‌کند. سپس مالکیت ربات را به شما منتقل کرده اما همچنان به توکن ربات دسترسی دارد و از طریق آن، اسم و عکس پروفایل و توضیحات ربات را شبیه پشتیبانی تلگرام یا پشتیبانی wallet@ می‌کند که خط قرمز تلگرام است. پس از این مرحله، تلگرام اکانت شما را به‌صورت خودکار مسدود یا حذف می‌کند! (البته گاهی مهاجم پس از این کار، اقدام به ریپورت گسترده آن ربات نیز می‌کند)

چه راهی برای پیشگیری هست؟
۱. زمانی که رباتی ناشناس را استارت می‌کنید، خصوصا رباتی که تعداد ممبرهای آن نمایش داده نمی‌شود، بهتر است آن را استاپ کنید.
۲. حتی اگر اهل ساخت ربات نیستید، باز هم بهتر است @botfather را استارت بزنید تا اگر رباتی به شما منتقل شد، مطلع شوید و بتوانید سریعا آن را delete یا لااقل revoke کنید.
۳. اگر اکانت‌تان بسیار مهم است و ممکن در زمان مناسب برای جلوگیری از آن آنلاین نباشید، راه‌حل قطعی جلوگیری ازین حمله این است که در @botfather تعداد ۲۰ ربات ایجاد کنید تا کسی نتواند به شما ربات جدید منتقل کند.