en
Feedback
Azad's Programmers

Azad's Programmers

Open in Telegram

کانال آموزش برنامه نویسی دانشگاه آزاد گروه چت پرسش و پاسخ: https://t.me/azad_program

Show more
2 105
Subscribers
No data24 hours
-67 days
+430 days
Posts Archive
نکات مهمی که از نبرد دوازده‌روزه سایبری آموختیم: 1. تنوع تهدیدها فراتر از جنگ میدانی بود این درگیری نشان داد که دشمن فقط با تانک یا توپ حمله نمی‌کند، بلکه می‌تواند از روش‌های ترکیبی مثل جنگ شناختی و نفوذ اطلاعاتی وارد شود. حملات سایبری علیه سامانه‌های دفاع هوایی، بانک‌ها و صرافی‌ها نمونه‌ای از این پیچیدگی بود. 2. ضرورت پایان دادن به اعتماد پیش‌فرض دیگر نمی‌توانیم به فیلتر ابتدایی افراد یا حصارهای شبکه اکتفا کنیم؛ چرا که خطر می‌تواند از درون سازمان شکل بگیرد. مدل «صفر اعتماد» (Zero Trust) تأکید دارد که هیچ کاربری، حتی مدیران و کارکنان رسمی، بدون احراز هویت مداوم و پایش رفتارشان نباید مجوز دسترسی داشته باشند. 3. رمزگذاری و ثبت همه ارتباطات در چارچوب Zero Trust، مرز سنتی شبکه بی‌معنا می‌شود؛ تمامی ترافیک باید رمز شود و در لاگ‌ها ثبت گردد. همچنین دسترسی‌ها باید بر اساس کمترین امتیاز لازم (Least Privilege) و تقسیم‌بندی دقیق (Segmentation) تعریف شوند. 4. رفع «چشم بیمناک بیش از حد» وقتی سازمان صرفاً در حال جستجوی بی‌وقفه تهدید باشد بدون آنکه روش مشخصی برای قضاوت داشته باشد، بخش‌های کم‌خطر را مورد بازبینی مداوم قرار می‌دهد و دشمنان اصلی—نفوذگران پنهان داخلی—را نادیده می‌گیرد. 5. حرکت از رویکرد ایستا به پویا ابزارهایی مانند UEBA و SIEM باید به شکلی هدفمند به کار گرفته شوند. کنترل دسترسی به هنگام (Just-In-Time) و دسترسی تطبیقی بر پایه ریسک (Risk-Adaptive) می‌تواند در شناسایی و محدودسازی تهدیدات داخلی بسیار مؤثر باشد. 6. سیاست‌های ریسک‌محور به جای نقش‌محور به جای تعریف ثابت دسترسی‌ها بر اساس نقش شغلی، باید سیاست‌هایی تدوین کنیم که سطح ریسک فعالیت‌ها را در نظر بگیرند و اختیارات را به‌صورت پویا تغییر دهند. 7. امنیت، محصول اعتماد کورکورانه نیست امنیت واقعی نتیجه‌ی پایش مداوم، تحلیل دقیق داده‌ها و تصمیم‌گیری بی‌تعارف است، نه اتکای صرف به ابزارها یا افراد. 8. فرهنگ‌سازی و آموزش»، مکمل تکنولوژی پذیرش مدل Zero Trust تنها با ابزارهای فنی کافی نیست؛ فرهنگ‌سازی، آموزش مستمر و اجرای عملیاتی در همه سطوح سازمانی الزامی است. با به‌کارگیری این درس‌ها در ساختار دفاع سایبری خود، می‌توانیم از تکرار اشتباهات گذشته جلوگیری کنیم و تاب‌آوری فضای مجازی کشور را افزایش دهیم. Group: @azad_program Channel: @kiau_program

فرق بین KMeans و DBSCAN توی خوشه‌بندی (Clustering) چیه؟ کی از کدوم استفاده کنیم؟ خوشه‌بندی یکی از تکنیک‌های مهم توی یادگیری م
فرق بین KMeans و DBSCAN توی خوشه‌بندی (Clustering) چیه؟ کی از کدوم استفاده کنیم؟ خوشه‌بندی یکی از تکنیک‌های مهم توی یادگیری ماشینه، ولی انتخاب الگوریتم مناسب خیلی مهمه. خیلی‌ها از KMeans استفاده می‌کنن، ولی همیشه بهترین انتخاب نیست! --- ✅ KMeans تعداد خوشه‌ها رو باید از قبل بدونیم (k) فرض می‌کنه خوشه‌ها گرد هستن (spherical) نویز ها و مقادیر پرت رو شناسایی نمیکنه سریع و کارآمد برای داده‌های بزرگ و خوش‌رفتار ✅ DBSCAN نیازی به تعداد خوشه‌ها نیست! می‌تونه خوشه‌هایی با شکل‌های نامنظم پیدا کنه به خوبی با نویز و نقاط پرت برخورد می‌کنه ممکنه در داده‌های با چگالی متغیر خوب عمل نکنه 🎯 پس کی از کدوم استفاده کنیم؟ داده‌هات تمیزن و شکل خوشه‌ها ساده‌ست؟ → KMeans داده‌هات پر از نویزه یا شکل خوشه‌ها پیچیده‌ست؟ → DBSCAN 🧠 من توی یکی از پروژه‌هام، وقتی KMeans به درستی خوشه‌بندی نکرد، از DBSCAN استفاده کردم و نتایج خیلی بهتری گرفتم با Silhouette score. 📢 شما بیشتر با کدوم کار کردید؟ #MachineLearning #Clustering #KMeans #DBSCAN #Python #DataScience #AI Group: @azad_program Channel: @kiau_program

در یک حرکت غافلگیر کننده ای فرادرس خیلی از آموزش هاشو تخیف ویژه گذاشته با قیمت 89 تومن میتونین تهیه کنین . تا فردا مهلت استفا
+1
در یک حرکت غافلگیر کننده ای فرادرس خیلی از آموزش هاشو تخیف ویژه گذاشته با قیمت 89 تومن میتونین تهیه کنین . تا فردا مهلت استفادشه گفتم خبرشو بهتون بدم .
قدم به قدم در مسیر برنامه نویسی حرفه ای با آزاد پروگرمرز🫵💻
#برنامه_نویسی #آموزش_برنامه_نویسی #آموزش Group: @azad_program Channel: @kiau_program

تجربه‌ات از برنامه‌نویسی چیه؟ سلام رفقا! هرکدوم‌مون توی مسیر برنامه‌نویسی داستان خاصی داریم. چی شد که برنامه نویسی یاد گرفتید 📌 اولین زبان؟ 📌 اولین پروژه؟ 📌 سخت‌ترین چالش؟ بیاید توی گروه یا کامنت‌ها تجربه‌تونو بنویسین. با هم یاد می‌گیریم، با هم پیشرفت می‌کنیم 💪 #برنامه‌نویسی #تجربه_شخصی #یادگیری_جمعی Group: @azad_program Channel: @kiau_program

تجربه‌ات از برنامه‌نویسی چیه؟ سلام رفقا! هرکدوم‌مون توی مسیر برنامه‌نویسی داستان خاصی داریم. 📌 اولین زبان؟ 📌 اولین پروژه؟ 📌 سخت‌ترین چالش؟ بیاید توی گروه یا کامنت‌ها تجربه‌تونو بنویسین. با هم یاد می‌گیریم، با هم پیشرفت می‌کنیم 💪 #برنامه‌نویسی #تجربه_شخصی #یادگیری_جمعی Group: @azad_program Channel: @kiau_program

✨ مسابقه خلاقیت با هوش مصنوعی✨ با استفاده از قدرت هوش مصنوعی و خلاقیت خودتون، داستان شجاعت و مقاومت خرمشهر را به تصویر بکشید!
مسابقه خلاقیت با هوش مصنوعی✨ با استفاده از قدرت هوش مصنوعی و خلاقیت خودتون، داستان شجاعت و مقاومت خرمشهر را به تصویر بکشید! 🕌💔 🖌️📸با موضوعیت “خرمشهر، شهر خون و قیام آزاد شد” 🎁 جوایز ویژه برای برترین آثار! 📅 مهلت ارسال آثار: سه شنبه ۶ خرداد برای شرکت در مسابقه از طریق اسکن بارکد روی پوستر و یا به سایت مراجعه کنید همراه با ما باشید و با آثار خود، یاد و خاطره این شهر قهرمان را زنده نگه دارید. ➕ارتباط با ما: تلگرام l اینستاگرام

انواع یادگیری در Machine Learning چیه؟ توی یادگیری ماشین (Machine Learning)، ما با سه نوع اصلی یادگیری سر و کار داریم: 1. یاد
انواع یادگیری در Machine Learning چیه؟ توی یادگیری ماشین (Machine Learning)، ما با سه نوع اصلی یادگیری سر و کار داریم: 1. یادگیری نظارت‌شده (Supervised Learning): مدل رو با داده‌هایی آموزش می‌دیم که خروجی درست (Label) دارن. مثل اینکه به مدل بگیم: "این عکس گربه‌ست، اون یکی سگ!" کاربردها: تشخیص چهره، طبقه‌بندی ایمیل (Spam / Not Spam)، پیش‌بینی قیمت. 2. یادگیری بدون نظارت (Unsupervised Learning): اینجا داده‌ها خروجی مشخص ندارن. مدل باید خودش الگوها و ساختارها رو کشف کنه. مثلاً گروهبندی مشتری‌ها بر اساس رفتار خریدشون. کاربردها: خوشه‌بندی (Clustering)، کاهش ابعاد (Dimensionality Reduction). 3. یادگیری تقویتی (Reinforcement Learning): مدل مثل یه بازیکن عمل می‌کنه: کار انجام می‌ده، بازخورد می‌گیره (پاداش یا تنبیه)، و یاد می‌گیره چطور بهتر عمل کنه. کاربردها: بازی‌ها (مثل AlphaGo)، رباتیک، سیستم‌های توصیه‌گر پویا. جمع‌بندی: اگر می‌خوای وارد دنیای ML بشی، اول این سه نوع یادگیری رو خوب بشناس. چون پایه‌ی همه چیزن. #ML #machine_learning #ماشین_لرنینگ #یادگیری_ماشین Group: @azad_program Channel: @kiau_program

#چالش_پایتون (یخورده سخت تر) خروجی این کد چیه؟ A) [0, 1, 100] B) [2, 100] C) [100] D) خطا می‌دهد
#چالش_پایتون (یخورده سخت تر) خروجی این کد چیه؟ A) [0, 1, 100] B) [2, 100] C) [100] D) خطا می‌دهد

#چالش_پایتونی خروجی کد در تصویر کدام گزینه است؟ A) [1, 2, 3] B) ERROR C) [1, 2, 3, 4] D) [4]
#چالش_پایتونی خروجی کد در تصویر کدام گزینه است؟ A) [1, 2, 3] B) ERROR C) [1, 2, 3, 4] D) [4]

دریافت اطلاعات با متد POST وقتی صحبت از دریافت اطلاعات میشه اولین متدی که به ذهنمون میاد GET هستش, این متد برای دریافت دیتا از سرور بدون ایجاد تغییر در سرور استفاده میشه تو این حالت، دیتامون به طور معمول در URL ارسال میشه و قابل مشاهده هست ولی نکته جالب اینجاست که حتی با متد POST هم میتونیم اطلاعات را بگیریم, متد POST معمولا برای ارسال دیتا ها به سرور استفاده میشه تا در دیتابیس ذخیره بشه اما هیچ قانونی وجود نداره که این متد فقط برای ارسال دیتا استفاده میشه (اگه همچین قانونی بود میتونید این زیر بگید که با خیال راحت کار غیرقانونی بکنیم) توی بعضی از سناریوها سرور میتونه از متد POST برای گرفتن دیتا استفاده کنه به خصوص زمانی که حجم داده‌ها زیاده و نمیخوایم اونارو در URL قرار بدیم به عنوان مثال در ارسال دیتای JSON یا فایل ‌های حجیم بهتره که از POST استفاده کنیم مثال:
{
  "merchantId": "63a69a2d18f9347bd89d5fe6",
  "mode": "weekly",
  "type": "amount"
}
قاعدتا این اطلاعات اگه توی URL باشه کثیفی به همراه داره و بهتر هستش برای امنیتش توی BODY باشه چرا از POST برای گرفتن اطلاعات استفاده میشه؟! حجم بالای دیتا: اطلاعات بزرگتر از اونی خستش که در URL جا میگیره امنیت بیشتر: اطلاعاتی که در Body ریکوئست ارسال میشه نسبت به URL امنیت بیشتری داره چون به نسبت URL به راحتی مشاهده نمیشه پیچیدگی دیتاها: گاهی اوقات ساختار دیتاهامون بسیار پیچیده هستش و نیاز به ارسال اطلاعات با فرمت خاصی مانند JSON یا XML داره که در POST راحت ‌تر مدیریت میشه تفاوت GET و POST در این مورد وقتی دیتا توی URL (متد GET) فرستاده میشه این اتفاق ‌ها میفته: آدرس کامل توی history ذخیره میشه توی server logs یا proxy ها ممکنه لاگ بشه آدرس URL می‌تونه در referrer به سایت‌های دیگه لو بره محدودیت طول URL هم هستش وقتی داده‌ها توی BODY (متد POST) فرستاده میشه: دیتاها توی آدرس URL نمیان پس توی history یا لاگ URL دیده نمیشن محدودیت طول نیستش میتونی حجم بیشتری از دیتارو ارسال کنیم در ترکیب با HTTPS هم ریکوئست رمزنگاری میشه و امن‌ تر میشه در نهایت استفاده از متد POST برای دریافت اطلاعات بستگی به نیاز خاص پروژه و شرایط امنیتی داره و هر متدی در جا و زمان خود کاربرد های متفاوتی خواهد داشت و همه ی اینها برای اینه که امن تر بشه نه اینکه کاملا امن بشه Group: @azad_program Channel: @kiau_program

محدود کردن قبلِ از کار افتادن سیستم! 💡 ... ... Throttling یکی از روش‌های مهم برای مدیریت درخواست‌ها و جلوگیری از فشار بیش از حد روی سرور‌هاست تو این پست باهاش آشنا می‌شیم تو جنگو میتونیم با استفاده از DRF خیلی راحت Throttling رو پیاده‌سازی کنیم این قابلیت بهمون کمک می‌کنه تعداد درخواست‌ هایی که هر کاربر یا کل سیستم میتونه در یک بازه زمانی مشخص بفرسته رو کنترل کنیم چجوری از Throttling تو DRF استفاده کنیم؟! DRF چند نوع Throttle پیش‌فرض داره: AnonRateThrottle → برای کاربران ناشناس UserRateThrottle → برای کاربران لاگین کرده ScopedRateThrottle → برای محدود کردن درخواست‌ها در سطح API خاص کافیه این تنظیمات رو توی settings.py اضافه کنیم و مقدار دلخواهمون رو تنظیم کنیم با این روش از overload شدن سرور هم جلوگیری می‌کنیم. بیشتر Group: @azad_program Channel: @kiau_program

🌐 تفاوت نقش ها، Web Designer ،Web Developer یا UI/UX Designer؟ سلام رفقا 👋🏼 توی دنیای وب، نقش‌های UI/UX Designer، Web Designer و Web Developer خیلی به گوش می‌خوره، ولی دقیقا چه فرقی دارن؟ بیاین یه مرور سریع کنیم: 1️⃣ با Web Developer ها یا توسعه دهنده های دنیای وبسایت شروع میکنیم، توسعه‌دهنده‌های واقعی وب! با استفاده از زبان ها و تکنولوژی های مختلف مثل HTML، CSS، JavaScript و ... ، فریم‌ورک‌هایی مثل React، Vue، Angular، Django، Laravel، Asp .NET، Nest و ... سایت رو از صفر تا صد کدنویسی می‌کنن و مطمئن میشن تا Back-End (تمام منطق و رفتار و عملکرد وبسایت در پشت صحنه و Front-End (ظاهر پویا، عملکرد ها و منطقی که کاربر به صورت مستقیم باهاش در ارتباطه) به درستی کار کنه. 2️⃣ میرسیم به Web Designer ها یا طراحان وب که درواقع منظورمون افرادین که بیشتر با CMS هایی مثل وردپرس کار می‌کنن. طراحانی که با Template Design، ابزار ها و پلاگین‌ها، یک وبسایت رو می‌سازن و بدون نیاز به کدنویسی عمیق، یه خروجی شیک تحویل میدن. 3️⃣ و در آخر UI/UX Designer ها، متخصصای رابط و تجربه کاربری! UI (User Interface) روی طراحی بصری مثل Layout، ساختار، رنگ‌ها، آیکون ها و به طور کل جلوه ظاهری طرح برنامه تمرکز داره و UX (User Experience) هم به بهینه‌سازی User Journey، دسترسی پذیری و راحتی کار با برنامه یا نرم افزار اهمیت میده، طراحان رابط و تجربه کاربری برای پیاده سازی دیزاین یا طرح نرم افزار مد نظر از ابزارایی مثل Figma یا Adobe XD استفاده میکنن. ❓تفاوت کلیدی؟ دولوپرها توی عمق کدنویسی صفر تا صد و منطق سایتن، وب دیزاینرها با CMS و خلاقیت سریع عمل می‌کنن، و UI/UX دیزاینر ها روی طراحی کاربرمحور زوم دارن. شماها چی؟ فکر میکنین به چه فیلدی بیشتر علاقه مندین؟ نظرتون رو بگین Group: @azad_program Channel: @kiau_program

تی ماکس(tmux) یکی از ابزارهای قدرتمند برای مدیریت چندین ترمینال در یک پنجره است. به کمک tmux می‌تونید پنجره‌های مختلف رو در یک ترمینال داشته باشید و به راحتی بین اون‌ها جابجا بشید. مثلاً می‌تونید چندین اتصال SSH به سرور داشته باشید و بین اون‌ها به سرعت سوئیچ کنید. از مزایای دیگه tmux اینه که می‌تونید به یک محیط کاری باز برگردید حتی اگر ترمینال شما بسته شده باشه یا قطع اتصال اتفاق افتاده باشه. خیلی برای افرادی که کارهای طولانی مدت توی سرور انجام می‌دن یا با پروژه‌های مختلف کار می‌کنن مفیده.
### tmux Cheat Sheet


#### 1️⃣ دستورات اصلی tmux
- tmux : شروع یک محیط کاری جدید tmux
- tmux new -s <name> : شروع محیط کاری جدید با نام دلخواه
- tmux attach -t <name> : اتصال به محیط کاری موجود
- tmux ls : نمایش لیست محیط‌های کاری فعال
- tmux kill-session -t <name> : بستن یک محیط کاری

---

#### 2️⃣ مدیریت پنجره‌ها و پنل‌ها
- Ctrl+b c : ایجاد پنجره جدید
- Ctrl+b n : رفتن به پنجره بعدی
- Ctrl+b p : رفتن به پنجره قبلی
- Ctrl+b <number> : رفتن به پنجره شماره مشخص
- Ctrl+b , : تغییر نام پنجره جاری

تقسیم پنل‌ها:
- Ctrl+b % : تقسیم پنجره به صورت عمودی
- Ctrl+b " : تقسیم پنجره به صورت افقی
- Ctrl+b o : جابجایی بین پنل‌ها
- Ctrl+b ; : سوئیچ به آخرین پنل فعال
- Ctrl+b x : بستن پنل جاری

---

#### 3️⃣ تغییر اندازه پنل‌ها
- Ctrl+b :resize-pane -L 5 : کاهش عرض پنل به اندازه 5 ستون
- Ctrl+b :resize-pane -R 5 : افزایش عرض پنل به اندازه 5 ستون
- Ctrl+b :resize-pane -U 3 : کاهش ارتفاع پنل به اندازه 3 ردیف
- Ctrl+b :resize-pane -D 3 : افزایش ارتفاع پنل به اندازه 3 ردیف

---

#### 4️⃣ حالت کپی و اسکرول
- Ctrl+b [ : ورود به حالت کپی (برای اسکرول و انتخاب متن)
- از کلیدهای جهت‌دار یا PageUp/PageDown برای اسکرول استفاده کنید
- Space : شروع انتخاب متن در حالت کپی
- Enter : کپی کردن متن انتخاب‌شده
- q : خروج از حالت کپی
- Ctrl+b ] : چسباندن متن کپی‌شده

---

#### 5️⃣ جدا شدن و اتصال دوباره
- Ctrl+b d : جدا شدن از محیط کاری (detach)
- برای اتصال دوباره از دستور tmux attach یا tmux attach -t <name> استفاده کنید

---

#### 6️⃣ دستورات عمومی و متفرقه
- Ctrl+b ? : نمایش لیست دستورات و کلیدهای میانبر
- Ctrl+b t : نمایش ساعت در نوار وضعیت
- Ctrl+b r : بارگذاری مجدد تنظیمات (بعد از تغییر در ~/.tmux.conf)
- Ctrl+b . : درخواست شماره پنجره جهت جابجایی مستقیم
- Ctrl+b : : ورود به حالت فرمان برای اجرای دستورات

---

#### 7️⃣ تنظیمات
- فایل ~/.tmux.conf را ویرایش کنید تا کلیدهای میانبر، رنگ‌ها و نوار وضعیت را به دلخواه تنظیم کنید.
- مثال: set -g mouse on برای فعال‌سازی پشتیبانی ماوس
- بعد از تغییر، با Ctrl+b r تنظیمات را بارگذاری مجدد کنید

---

#### 8️⃣ نکات مفید
- از محیط‌های کاری پایداری استفاده کنید؛ به جای بستن، با detach خارج شوید تا بعداً بتوانید به کارهای خود ادامه دهید.
- در صورت تداخل کلیدها، کلید پیش‌فرض را تغییر دهید (مثلاً set -g prefix C-a).
- برای پروژه‌های مختلف، می‌توانید محیط‌های کاری مجزا با پنجره‌ها و پنل‌های متنوع داشته باشید.

---

#### 9️⃣ راهنمای رفع مشکل
- اگر در حالت کپی گیر کردید، با فشار دادن q از آن خارج شوید.
- در صورت نیاز، از tmux kill-server برای بستن تمام محیط‌های کاری استفاده کنید (با احتیاط، چون همه کارهای در حال اجرا بسته می‌شوند).
Group: @azad_program Channel: @kiau_program

📌 مدل OSI چیست؟ مدل OSI (Open Systems Interconnection) یک استاندارد برای شبکه‌های کامپیوتری است که ارتباط بین سیستم‌های مختلف را در 7 لایه تعریف می‌کند. این مدل به درک بهتر نحوه انتقال داده‌ها در شبکه کمک می‌کند و در حل مشکلات شبکه و امنیت بسیار کاربرد دارد. در ادامه، 7 لایه این مدل رو بررسی می‌کنیم: 🔹 1. لایه فیزیکی (Physical Layer) 📡 این لایه مسئول انتقال داده‌ها به‌صورت سیگنال‌های الکتریکی، نوری یا امواج رادیویی است. در واقع، همه چیز در این لایه به سخت‌افزار و تجهیزات شبکه مربوط می‌شود. ✅ مثال‌ها: کابل شبکه، فیبر نوری، وای‌فای، بلوتوث، هاب 🔹 2. لایه پیوند داده (Data Link Layer) 🔄 در این لایه، داده‌ها به فریم (Frame) تبدیل می‌شوند و ارسال بین دستگاه‌های متصل به یک شبکه محلی (LAN) انجام می‌شود. همچنین وظیفه کنترل خطا و مدیریت دسترسی به رسانه انتقال (MAC Address) را دارد. ✅ مثال‌ها: سوئیچ (Switch)، آدرس‌های MAC، پروتکل ARP 🔹 3. لایه شبکه (Network Layer) 🌍 این لایه مسئول مسیریابی (Routing) و انتقال بسته‌های داده بین شبکه‌های مختلف است. ✅ در این لایه آدرس‌های IP برای شناسایی دستگاه‌ها در شبکه استفاده می‌شود. ✅ مثال‌ها: IP (IPv4/IPv6)، روتر (Router)، پروتکل ICMP (Ping, Traceroute) 🔹 4. لایه انتقال (Transport Layer) 📦 این لایه وظیفه‌ی مدیریت ارتباط بین دو سیستم و کنترل خطا در انتقال داده را بر عهده دارد. 🔹 TCP (اتصال‌گرا): تضمین می‌کند که تمام بسته‌ها به ترتیب و بدون خطا به مقصد می‌رسند. 🔹 UDP (بدون اتصال): سریع است، اما تضمینی برای رسیدن بسته‌ها وجود ندارد (مانند استریم‌های زنده). ✅ مثال‌ها: TCP، UDP، شماره پورت‌ها (مثل HTTP روی پورت 80، HTTPS روی 443) 🔹 5. لایه نشست (Session Layer) 🔄 مسئول ایجاد، مدیریت و پایان دادن به ارتباطات بین دستگاه‌ها است. مثلاً وقتی در یک وب‌سایت لاگین می‌کنید، این لایه مدیریت نشست کاربری شما را انجام می‌دهد. ✅ مثال‌ها: SSL/TLS، RPC (Remote Procedure Call) 🔹 6. لایه ارائه (Presentation Layer) 🔐 این لایه وظیفه رمزگذاری (Encryption)، فشرده‌سازی (Compression) و تبدیل داده‌ها به فرمت مناسب را دارد. ✅ مثال‌ها: SSL/TLS برای رمزگذاری، JSON/XML برای تبادل داده 🔹 7. لایه کاربرد (Application Layer) 👨‍💻 این لایه همان جایی است که کاربران با شبکه تعامل دارند و شامل پروتکل‌های مختلفی برای سرویس‌های اینترنتی است. ✅ مثال‌ها: HTTP/HTTPS (وب‌گردی)، FTP (انتقال فایل)، SMTP/IMAP (ایمیل)، DNS (نام دامنه) 🛡 مدل OSI و امنیت شبکه بیشتر حملات سایبری در لایه‌های 3، 4 و 7 اتفاق می‌افتند. مثلاً: 🚨 لایه 3: حملات IP Spoofing، ICMP Flood 🚨 لایه 4: حملات SYN Flood، UDP Flood 🚨 لایه 7: حملات DDoS (HTTP Flood)، SQL Injection، Cross-Site Scripting (XSS) ✅ راهکارهای امنیتی: 🔹 استفاده از فایروال‌های لایه 7 (WAF) برای جلوگیری از حملات وب 🔹 CAPTCHA و Rate Limiting برای کاهش حملات DDoS 🔹 استفاده از TLS و VPN برای رمزگذاری داده‌ها 📌نتیجه گیری مدل OSI یک راهنمای عالی برای درک عملکرد شبکه‌ها و حل مشکلات آنهاست. با شناخت این لایه‌ها، می‌توانیم در طراحی شبکه، امنیت و بهینه‌سازی ارتباطات، حرفه‌ای‌تر عمل کنیم. Group: @azad_program Channel: @kiau_program

آرامش

✅ آرشیو منابع پایتون ✅ در این کانال فقط به آموزش ها، مطالب و اخبار مربوط به زبان برنامه نویسی " پایتون " پرداخته خواهد شد کتاب، ویدئو، سورس کد، آموزش های کوتاه، اخبار و غیره https://t.me/PythonForever

Merge و Rebase هر دو یه هدف دارن ادغام تغییرات از یک برنچ به برنچ دیگر اما این کارو به روش‌های کاملا متفاوتی انجام می‌دهند Merge – ترکیب تغییرات با حفظ تاریخچه وقتی از Merge استفاده می‌کنیم تغییرات یک برنچ را بدون تغییر در تاریخچه، به برنچ اصلی اضافه می‌کنیم گیت یک Merge Commit جدید ایجاد می‌کند که نشان می‌دهد این دو برنچ ترکیب شدند بعد از Merge گیت یک کامیت جدید ایجاد میکنه که ترکیب دو برنچ رو نشون میده تاریخچه کامیت‌ها کاملا حفظ میشه برای کار تیمی مناسبه چون تغییری در کامیت‌های قبلی ایجاد نمیکنه ممکن است تاریخچه شلوغ بشه مخصوصا اگر برنچ‌های زیادی رو مرج کنیم Rebase – مرتب کردن تاریخچه تغییرات ریبیس به جای ادغام مستقیم تغییرات کامیت‌های برنچ فعلی رو روی جدیدترین نسخه برنچی که میخوایم بازنویسی میکنه این کار باعث میشه که تاریخچه تغییرات تمیز و خطی بمونه در اینجا گیت تمام کامیت‌های feature-branch رو می‌گیره و اونارو روی جدیدترین نسخه main بازنویسی میکنه تاریخچه تغییرات مرتب‌تر و خطی‌تر میشه برای پروژه‌هایی که تمیز بودن تاریخچه مهمه مفیده اگر برنچ روی پابلیک ریپازیتوری باشه و هم‌تیمی‌ها روی آن کار کنن ممکنه باعث مشکلاتی بشه Merge: تاریخچه تغییرات به صورت یک درخت باقی میمونه یعنی میشه دید که یک برنچ از کجا اومده Rebase: تاریخچه صاف و خطی میشه طوری که انگار تغییرات همیشه روی نسخه به‌روز برنچ اصلی ساخته شده‌ ————————————— کی Merge و کی Rebase؟ Merge زمانی استفاده شود که: بخوایم تاریخچه تغییرات حفظ شه با کار تیمی و همکاری روی پابلیک ریپازیتوری سروکار داریم بخوایم بفهمیم که هر تغییر از کجا اومده Rebase زمانی استفاده شود که: بخواهیم تاریخچه گیت تمیز و مرتب باشه قبل از ادغام با main تغییرات رو روی آخرین ورژن اون اعمال کنیم روی یک پرایوت ریپازیتوری (feature branch) کار میکنیم و تغییرات هنوز در پابلیک ریپازیتوری منتشر نشده Group: @azad_program Channel: @kiau_program

Merge یا Rebase مسئله این است در Git وقتی روی یک پروژه کار می‌کنیم از برنچ‌ها استفاده می‌کنیم تا تغییرات رو از هم جدا کنیم ام
Merge یا Rebase مسئله این است در Git وقتی روی یک پروژه کار می‌کنیم از برنچ‌ها استفاده می‌کنیم تا تغییرات رو از هم جدا کنیم اما در نهایت باید این تغییرات رو به برنچ اصلی (مثلا main یا develop) اضافه کنیم دو روش اصلی برای انجام این کار Merge و Rebase هستند ادامه👇

💠 لیستی از عبارت ها و مخفف های رایجی که ممکنه راجبشون شنیده باشین WWW: World Wide Web URL: Uniform Resource Locator HTML: HyperText Markup Language CSS: Cascading Style Sheets SASS: Syntactically Awesome Style Sheets AJAX: Asynchronous JavaScript And Xml NPM: Node Package Manager DOM: Document Object Model SPA: Single Page Application CSR: Client Side Rendering SSR: Server Side Rendering UI: User Interface UX: User Experience JSON: JavaScript Object Notation XML: Extensible Markup Language CSV: Comma Separated Values YAML: YAML Ain’t Markup Language SEO: Search Engine Optimization IDE: Integrated Development Environment VCS: Version Control System CMS: Content Management System PWA: Progressive Web Application MVC: Model View Controller MVVM: Model View ViewModel API: Application Programming Interface REST: Representational State Transfer DDD: Domain-Driven Design CRUD: Create, Read, Update, Delete CLI: Command Line Interface CDN: Content Delivery Network SDK: Software Development Kit OOP: Object Oriented Programming HTTP: HyperText Transfer Protocol HTTPS: HyperText Transfer Protocol Secure VPN: Virtual Private Network OWASP: Open Web Application Security DNS: Domain Name System DHCP: Dynamic Host Configuration Protocol IP: Internet Protocol LAN: Local Area Network SOAP: Simple Object Access Protocol DDoS: Distributed Denial of Service SSH: Secure Shell SSL: Secure Sockets Layer XSS: Cross-Site Scripting IPS: Intrusion Prevention System OS: Operating System VM: Virtual Machine DB: DataBase DBA: DataBase Administrator SQL: Structured Query Language CI/CD: Continuous Integration/Continuous Delivery DevOps: Development and Operations TDD: Test-Driven Development AI: Artificial Intelligence ML: Machine Learning DL: Deep Learning NLP: Natural Language Processing LLM: Large Language Model MLOps: Machine Learning Operations CPU: Central Processing Unit GPU: Graphics Processing Unit HDD: Hard Disk Drive SSD: Solid-State Drive RAM: Random Access Memory ROM: Read-Only Memory —————————————————— Group: @azad_program Channel: @kiau_program

اصول SOLID (2/2) SRP هر کلاس فقط باید یک وظیفه مشخص داشته باشه یعنی یک کلاس نباید چندین کار مختلف انجام بده ، کلاس وظیفه تولید گزارش داره و چاپ در کلاس جداگانه انجام می‌شود

class Report:
    def __init__(self, data):
        self.data = data

    def generate_report(self):
        return f"Report Data: {self.data}"

class ReportPrinter:
    @staticmethod
    def print(report: Report):
        print(report.generate_report())  
OCP کلاس‌ها باید برای توسعه باز، ولی برای تغییر بسته باشند یعنی وقتی نیاز به ویژگی جدید داریم نباید کد قبلی را تغییر دهیم بلکه باید قابلیت اضافه کردن به آن وجود داشته باشه، کلاس‌ها به جای تغییر قابلیت توسعه دارند و نیازی نیست کد اصلی رو تغییر بدیم
from abc import ABC, abstractmethod

class DiscountStrategy(ABC):
    @abstractmethod
    def apply(self, price):
        pass

class PercentageDiscount(DiscountStrategy):
    def apply(self, price):
        return price * 0.9

class FixedDiscount(DiscountStrategy):
    def apply(self, price):
        return price - 10

class DiscountCalculator:
    def __init__(self, strategy: DiscountStrategy):
        self.strategy = strategy

    def calculate(self, price):
        return self.strategy.apply(price)


discount = DiscountCalculator(PercentageDiscount())
print(discount.calculate(100))

LSP

 هر کلاس فرزند باید بدون مشکل جایگزین کلاس والد بشخ نیاز به اصلاح طراحی داریم
class Shape:
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

class Square(Shape):
    def __init__(self, side):
        self.side = side

    def area(self):
        return self.side * self.side

ISP به جای یک اینترفیس بزرگ چند اینترفیس کوچک‌تر داشته باشه، هر قابلیت در اینترفیس جداگانه تعریف شده
from abc import ABC, abstractmethod

class Printer(ABC):
    @abstractmethod
    def print(self, document):
        pass

class Scanner(ABC):
    @abstractmethod
    def scan(self, document):
        pass

class FaxMachine(ABC):
    @abstractmethod
    def fax(self, document):
        pass

class SimplePrinter(Printer):
    def print(self, document):
        print(f"Printing: {document}")

class AllInOnePrinter(Printer, Scanner, FaxMachine):
    def print(self, document):
        print(f"Printing: {document}")

    def scan(self, document):
        print(f"Scanning: {document}")

    def fax(self, document):
        print(f"Faxing: {document}")
DIP کلاس‌ها نباید به جزئیات وابسته باشند بلکه باید به اینترفیس‌ها وابسته باشند ، وابستگی از طریق اینترفیس تعریف شده
from abc import ABC, abstractmethod

class Database(ABC):
    @abstractmethod
    def connect(self):
        pass

class MySQLDatabase(Database):
    def connect(self):
        return "Connected to MySQL"

class PostgreSQLDatabase(Database):
    def connect(self):
        return "Connected to PostgreSQL"

class UserService:
    def __init__(self, db: Database):
        self.db = db  

    def get_user(self):
        return self.db.connect()


db = PostgreSQLDatabase()
user_service = UserService(db)
print(user_service.get_user()) 
Group: @azad_program Channel: @kiau_program