آموزش ویدیویی جاوا اسکریپت، Node.js ، React ، jQuery ، Vue و ...
1.61K subscribers
155 photos
71 videos
121 files
1.85K links
Download Telegram


🔵 نکته برنامه نویسی

یک تکنیک جالب در برنامه‌نویسی "Rubber Duck Debugging" هست 🦆

ایده‌اش ساده است: وقتی کدتان درست کار نمی‌کند، یک عروسک (یا هر شیء بی‌جان، مثلا یک فنجان قهوه!) را مقابل خود می‌گذارید و خط‌به‌خط برایش توضیح می‌دهید که کد چه می‌کند.
وقتی مجبور می‌شوید با صدای بلند توضیح دهید، معمولا خودتان متوجه اشتباهات منطقی یا خطاهای کوچک می‌شوید، حتی قبل از اینکه به “اردک” برسید!

این روش به طرز عجیبی جواب می‌دهد، چون ذهن شما از حالت «درگیر کد» به حالت «توضیح به یک موجود بی‌اطلاع» تغییر می‌کند.




ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

می‌دونیم مدل‌ها با تابع هزینه اشتباهاتشون رو می‌سنجن، بریم سراغ اینکه چطور اون اشتباهات رو درست می‌کنن! 🔧

نزول گرادیان (Gradient Descent)

تصور کن چشم‌هات بسته است و در بالای یک تپه ایستادی. هدف تو اینه که به پایین‌ترین نقطه در دره برسی. چطور این کار رو می‌کنی؟

یک راه اینه که شیب زمین رو زیر پات حس کنی و هر بار در جهت شیب‌دارترین سراشیبی، یک قدم کوچک برداری. اگر این کار رو تکرار کنی، بالاخره به پایین‌ترین نقطه می‌رسی. 🚶‍♂️

این دقیقاً کاری است که الگوریتم نزول گرادیان (Gradient Descent) انجام می‌ده.

به زبان ساده‌تر:

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

تپه: تابع هزینه (هر چه بالاتر، خطا بیشتر).

تو: پارامترهای مدل (مثل وزن‌ها و بایاس‌ها).

جهت شیب‌دارترین سراشیبی: گرادیان، که به مدل می‌گه در کدوم جهت باید پارامترهاش رو تغییر بده تا خطا سریع‌تر کم بشه.

قدم‌های کوچک: نرخ یادگیری (Learning Rate)، که تعیین می‌کنه هر بار چقدر تغییر در پارامترها ایجاد بشه. (قدم‌های بزرگ سریع‌ترن اما ممکنه از دره رد بشن؛ قدم‌های کوچک کندن اما امن‌تر.)

این فرآیند بارها و بارها تکرار می‌شه تا مدل به جایی برسه که خطاش حداقل باشه.

نزول گرادیان قلب الگوریتم‌های آموزش بسیاری از مدل‌های قدرتمند، از جمله شبکه‌های عصبی است و به مدل‌ها اجازه می‌ده که از داده‌ها یاد بگیرن.

خلاصه که، نزول گرادیان به مدل می‌گه که 'با قدم‌های کوچک و با دقت، به سمت کمترین خطا حرکت کن!' 📉

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

منظم‌سازی یا Regularization دوستت برای جلوگیری از Overfitting هست.

🔹 ایده‌اش اینه که جلوی بزرگ شدن بیش‌ازحد وزن‌ها در مدل رو می‌گیره.

روش L1 (Lasso): باعث میشه بعضی وزن‌ها دقیقاً صفر بشن → به انتخاب ویژگی کمک می‌کنه.

روش L2 (Ridge): وزن‌ها رو کوچک می‌کنه ولی صفر نمی‌کنه → پایداری مدل بیشتر میشه.

روش Elastic Net: ترکیبی از هر دو.

🔹 در شبکه‌های عصبی هم Regularization می‌تونه با روش‌هایی مثل Dropout یا Weight Decay اعمال بشه.

به زبان ساده: Regularization مثل اینه که به مدل بگی “خیلی پیچیده نشو، ساده‌تر هم می‌تونی جواب درست بدی.”

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

نکته: Feature Engineering اغلب مهم‌تر از انتخاب مدل است.

🔹 حتی اگر بهترین الگوریتم رو انتخاب کنی، بدون ویژگی‌های خوب مدل ضعیف عمل می‌کنه.
🔹 گاهی یک ویژگی ساخته‌شده‌ی درست (مثلاً نسبت دو متغیر، یا یک تبدیل لگاریتمی) می‌تونه دقت مدل رو از ۶۰٪ به ۹۰٪ برسونه.

🔹 روش‌های رایج:

ترکیب ویژگی‌ها (feature interaction)

تبدیل غیرخطی (log, sqrt, polynomial features)

استخراج ویژگی از متن (TF-IDF, embeddings)

استخراج ویژگی از تصویر (SIFT, CNN features)

به زبان ساده: مدل خوب بدون ویژگی‌های خوب مثل یک ماشین مسابقه‌ای بدون بنزینه.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

در Clustering، ارزیابی کیفیت خوشه‌ها بدون برچسب با Metrics خاص انجام می‌شه.

🔹 از اونجایی که داده‌ها برچسب ندارن، نمی‌تونیم Accuracy محاسبه کنیم، باید از معیارهای غیرنظارتی استفاده کنیم:

معیار Silhouette Score: چقدر نمونه‌ها به خوشه خودشون نزدیک و از خوشه‌های دیگه دور هستن (بین −۱ تا ۱).

معیار Davies-Bouldin Index: میانگین نسبت پراکندگی درون خوشه به فاصله بین خوشه‌ها (کمتر بهتره).

معیار Calinski-Harabasz Index: نسبت بین پراکندگی بین خوشه‌ها و درون خوشه‌ها (بیشتر بهتره).

به زبان ساده: این Metrics مثل یه “معیار زیبایی” برای خوشه‌هاست؛ خوشه‌های مرتب‌تر و جدا از هم، امتیاز بالاتری می‌گیرن.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Installation

🟢 کیفیت : متوسط

🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد.

🟣 Eclipse

🟢 زبان آموزش: انگلیسی

🟣 دوره آموزش Eclipse


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 آموزش گیت (Git) - conflict

🟢 کیفیت : متوسط

🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد.

🟣 آموزش گیت (Git)

🟢 زبان آموزش: فارسی


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

روش Hyperparameter Optimization پیشرفته می‌تونه خیلی بهتر از Grid Search یا Random Search عمل کنه.

🔹 روش‌های کلاسیک مثل Grid Search همه ترکیب‌ها رو امتحان می‌کنن (خیلی کند)، یا مثل Random Search فقط چند ترکیب تصادفی رو تست می‌کنن (سریع‌تر اما نه بهینه).

🔹 روش‌های پیشرفته‌تر:

روشBayesian Optimization: حدس می‌زنه کدوم ناحیه از فضای هایپرپارامترها ارزش امتحان کردن داره.

روش Tree-structured Parzen Estimator (TPE): نسخه محبوب Bayesian در ابزارهایی مثل Optuna.

روش Hyperband : به جای امتحان کردن کامل، سریعاً ترکیب‌های ضعیف رو حذف می‌کنه.

فریم ورک های Optuna / Ray Tune / Scikit-Optimize: فریم‌ورک‌های آماده برای اجرای بهینه‌سازی هوشمند.

به زبان ساده: این روش‌ها به جای امتحان کورکورانه، مثل یک “کاوشگر باهوش” دنبال بهترین تنظیمات می‌گردن.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته برنامه نویسی

یک تکنیک جالب "Rubber Duck Debugging" است. 🦆

در این روش، وقتی در کد به مشکلی می‌خوری، بدون این‌که فوراً از کسی کمک بخواهی، مشکل و منطق کدت را مرحله‌به‌مرحله برای یک شیء بی‌جان (مثلاً یک اردک پلاستیکی روی میزت) توضیح می‌دهی.

چرا جواب می‌دهد؟
وقتی مجبور می‌شوی مرحله به مرحله برای "یک شنونده" توضیح دهی، ذهنت شفاف‌تر فکر می‌کند و خیلی وقت‌ها خودت وسط توضیح، ایراد را پیدا می‌کنی.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکات برنامه‌نویسی



🧩 Dependency Injection (DI)

(تزریق وابستگی‌ها)



🔹 ایده اصلی

جدا کردن کلاس‌ها و ماژول‌ها از وابستگی‌هایشان و وارد کردن آن‌ها از بیرون به جای ساخت مستقیم داخل کلاس.

📌 یعنی:

⬅️ به جای اینکه کلاس A خودش کلاس B را بسازد، B از بیرون به A داده می‌شود.



🔹 چرا مهمه؟

⬅️ افزایش قابلیت تست (Unit Test راحت‌تر)
⬅️ کاهش Coupling بین کلاس‌ها
⬅️ افزایش انعطاف‌پذیری و نگهداری کد



مثال ساده (Python)

# بدون Dependency Injection
class EmailService:
def send_email(self, msg):
print(f"ارسال ایمیل: {msg}")

class UserController:
def __init__(self):
self.email_service = EmailService() # وابستگی مستقیم

def notify_user(self, msg):
self.email_service.send_email(msg)

# با Dependency Injection
class UserControllerDI:
def __init__(self, email_service):
self.email_service = email_service # وابستگی از بیرون وارد میشه

def notify_user(self, msg):
self.email_service.send_email(msg)


# استفاده
email_service = EmailService()
controller = UserControllerDI(email_service)
controller.notify_user("سلام! DI فعال شد ")


📖 کاربردهای واقعی

➡️ Frameworkهای مدرن مثل Spring (Java)، Angular (TypeScript)
⬅️ سیستم‌هایی که نیاز به Unit Test و Mock کردن وابستگی‌ها دارن
⬅️ پروژه‌های بزرگ با چندین ماژول وابسته به هم



🛠️ مزایا

⬅️ تست‌پذیری بالا
⬅️ انعطاف‌پذیری بیشتر
کاهش Coupling و وابستگی‌های داخلی



🎯 تشبیه ساده

Dependency Injection مثل دادن ابزار به کارگر به جای خرید ابزار خودش 🛠️:

⬅️ کارگر خودش مجبور نیست ابزار بسازه
⬅️ شما می‌تونید ابزار مختلفی بهش بدید و کارش همیشه انجام میشه




ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

حالا بریم سراغ یه قدم مهم دیگه در آماده‌سازی داده‌ها: تبدیل کلمات به اعداد! 🔢

مدیریت داده‌های دسته‌ای (Categorical Data) 📊

تصور کن یه جدول داده داری که توی اون یک ستون برای "نوع میوه" وجود داره. 🍎🍊🍌 مقادیر توی این ستون کلمات هستن: "سیب"، "پرتقال"، "موز".

همون‌طور که می‌دونی، مدل‌های یادگیری ماشین فقط با اعداد کار می‌کنن، نه با کلمات. 🤖 پس ما باید این داده‌های "دسته‌ای" یا "متنی" رو به یک فرمت عددی تبدیل کنیم.

دو روش اصلی و پرکاربرد برای این کار وجود داره:

۱. برچسب‌گذاری عددی (Label Encoding) 🏷

ساده‌ترین راه اینه که به هر دسته یک عدد اختصاص بدیم.

سیب = ۱

پرتقال = ۲

موز = ۳

مشکل این روش: مدل ممکنه فکر کنه که "موز" (۳) از "سیب" (۱) "بزرگ‌تر" یا "مهم‌تر" است، که اینطور نیست. این روش فقط زمانی مناسبه که بین دسته‌ها یک ترتیب طبیعی وجود داشته باشه (مثلاً "کوچک"، "متوسط"، "بزرگ").

۲. رمزگذاری یک-داغ (One-Hot Encoding) 🔥

این روش مطمئن‌تر و رایج‌تره. برای هر دسته، یک ستون جدید درست می‌کنی و اون رو با مقادیر ۰ و ۱ پر می‌کنی. اگر اون سطر به اون دسته تعلق داشته باشه، مقدار ۱ می‌گیره و در غیر این صورت ۰.
نوع میوه سیب پرتقال موز
سیب ۱ ۰ ۰
پرتقال ۰ ۱ ۰
موز ۰ ۰ ۱

در این حالت، مدل هیچ نوع ترتیبی بین دسته‌ها متصور نمی‌شه، چون هر دسته یک ستون مستقل داره.

خلاصه که، تبدیل داده‌های متنی به اعداد، مثل اینه که به مدل‌ت یاد بدی چطور الفبا رو به زبانی که می‌فهمه ترجمه کنه! ✍️

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Explore Menus

🟢 کیفیت : متوسط

🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد.

🟣 Eclipse

🟢 زبان آموزش: انگلیسی

🟣 دوره آموزش Eclipse


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

از Time Series Forecasting برای پیش‌بینی داده‌های زمانی استفاده می‌شه.

🔹 ویژگی اصلی داده‌های زمانی: ترتیب و وابستگی بین مشاهدات اهمیت داره.
🔹 مثال‌ها: پیش‌بینی فروش، دما، ترافیک، قیمت سهام.

🔹 روش‌ها:

روش ARIMA / SARIMA: مدل‌های کلاسیک برای داده‌های ایستا (stationary).

روش Exponential Smoothing: پیش‌بینی با وزن دادن بیشتر به داده‌های اخیر.

روش LSTM / GRU: شبکه‌های عصبی برای داده‌های غیرخطی و بلندمدت.

روش Prophet (فیسبوک): ابزار ساده برای داده‌های روزانه و فصلی با روندهای مختلف.

نکته مهم: قبل از آموزش، بررسی Trend، Seasonality و Noise داده‌ها خیلی مهمه.

به زبان ساده: Time Series Forecasting یعنی “با نگاه به گذشته، آینده رو پیش‌بینی کنیم 📈.”

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

نکته: LSTM (Long Short-Term Memory) شبکه‌ای عصبی برای سری‌های زمانی غیرخطی و طولانیه.

🔹 ویژگی‌ها:

می‌تونه وابستگی بلندمدت بین مشاهدات رو یاد بگیره

مناسب برای داده‌های غیرخطی و پیچیده (مثل قیمت سهام یا متن)

از مشکل Vanishing Gradient در RNNهای ساده جلوگیری می‌کنه

🔹 مزایا:

پیش‌بینی دقیق‌تر سری‌های زمانی طولانی

توانایی یادگیری الگوهای پیچیده و دوره‌ای

کاربرد در Forecasting، NLP و تشخیص ناهنجاری

به زبان ساده: LSTM مثل یک “حافظه بلندمدت” برای مدل هست که اتفاقات گذشته‌ی مهم رو فراموش نمی‌کنه 🧠

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی



🚦 Rate Limiting
(محدودسازی نرخ درخواست‌ها)


Rate limiting یعنی محدود کردن تعداد درخواست‌هایی که یک کاربر یا سرویس می‌تونه توی یک بازه زمانی مشخص ارسال کنه.



📌 چرا مهمه؟

* محافظت از سرور → جلوگیری از overload یا سقوط سرور.
* جلوگیری از سوءاستفاده → مثل brute force یا spam.
* مدیریت منابع → تضمین اینکه همه کاربران عادلانه سرویس بگیرن.
* امنیت → کاهش احتمال حملات DDoS.



مثال ساده

فرض کن می‌خوای یک API فقط اجازه بده هر کاربر ۵ بار در دقیقه درخواست بفرسته:

import time

requests = {}

def rate_limited(user_id):
now = time.time()
window = 60 # 60 ثانیه
limit = 5 # حداکثر 5 درخواست

if user_id not in requests:
requests[user_id] = []

# حذف درخواست‌های قدیمی‌تر از یک دقیقه
requests[user_id] = [t for t in requests[user_id] if now - t < window]

if len(requests[user_id]) >= limit:
return " Too many requests, please wait!"

requests[user_id].append(now)
return " Request allowed"

print(rate_limited("user1"))
اینجا هر کاربر فقط ۵ بار توی یک دقیقه می‌تونه درخواست بده.



الگوریتم‌های رایج Rate Limiting

* Fixed Window → یک بازه زمانی مشخص (مثلاً ۵ دقیقه).
* Sliding Window → بازه متحرک دقیق‌تر (درجه انعطاف بیشتر).
* Token Bucket → کاربر تعداد محدودی "توکن" داره، با هر درخواست یکی مصرف میشه.
* Leaky Bucket → درخواست‌ها مثل آب از سطل با سرعت ثابت خارج میشن.



📖 جاهای کاربردی:

* APIها → جلوگیری از overload و abuse.
* Login System → جلوگیری از brute force.
* وب‌سایت‌ها → جلوگیری از ربات‌ها.
* شبکه‌های اجتماعی → محدودیت در ارسال پیام/پست.



⚠️ چالش‌ها:

* شناسایی کاربر (بر اساس IP یا Token؟).
* کاربران پشت NAT یا Proxy → چند نفر ممکنه یک IP مشترک داشته باشن.
* تعادل بین کارایی و امنیت → نباید خیلی سخت‌گیرانه باشه.



👉 تشبیه ساده:
Rate limiting مثل چراغ قرمز سر چهارراه 🚦
اگه همه ماشین‌ها هم‌زمان راه بیفتن → ترافیک قفل میشه.
ولی با محدودیت عبور، جریان روان و کنترل‌شده پیش میره.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #جاوا_اسکریپت

🟣 موضوع : ‏الگوهای طراحی (Design Patterns) و برنامه‌نویسی تابعی (Functional Programming) در جاوا اسکریپت - مزایای Composition: خوانایی، قابلیت استفاده مجدد و تست‌پذیری

نکته :

‏یادت باشه، هدف از Composition اینه که کدت تمیز، قابل استفاده مجدد و قابل تست باشه. مثل خونه‌ت که مرتب و منظمه! 🏠


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

کاهش ابعاد (Dimensionality Reduction) می‌تونه هم سرعت مدل رو بیشتر کنه و هم دقت رو.

🔹 وقتی تعداد ویژگی‌ها (Features) خیلی زیاد باشه، مدل‌ها دچار نفرین ابعاد (Curse of Dimensionality) می‌شن:

سرعت آموزش پایین میاد

احتمال Overfitting زیاد میشه

پیدا کردن الگوهای واقعی سخت‌تر میشه

🔹 راهکارها:

راهکار PCA (Principal Component Analysis): ترکیب خطی ویژگی‌ها برای ایجاد ویژگی‌های جدید و کم‌تعداد.

راهکار t-SNE و UMAP: بیشتر برای Visualization و نمایش داده‌های پیچیده در 2D یا 3D استفاده می‌شن.

راهکار Autoencoders: کاهش بعد غیرخطی با استفاده از شبکه‌های عصبی.

به زبان ساده: وقتی ویژگی‌ها خیلی زیادن، همه رو نگه ندار! بعضی‌هاشون رو ترکیب کن یا حذف کن تا مدل سبک‌تر و باهوش‌تر بشه.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین


تاریخچه رگرسیون خطی یه داستان باحاله که نشون می‌ده چطور یه ایده از زیست‌شناسی 🧬 به یکی از ابزارهای اصلی آمار و داده‌کاوی تبدیل شد.

ماجرا از اونجایی شروع شد که یه دانشمند انگلیسی به اسم فرانسیس گالتون داشت روی قد پدر و پسرها مطالعه می‌کرد. 🧑‍🦳➡️👦 اون متوجه شد که قد فرزندانِ پدرانِ خیلی قدبلند، معمولاً به سمت میانگین قد جامعه "بازگشت" می‌کنه. 🤔 یعنی شاید از پدرشون کوتاه‌تر باشن. گالتون این پدیده رو "رگرسیون" (به معنی بازگشت) نامید و همین واژه روی این مدل موندگار شد.

اما داستان به همین‌جا ختم نشد. قبل از گالتون، ریاضیدان‌های بزرگی مثل لژاندر و گاوس روشی به اسم "کمترین مربعات" رو ابداع کرده بودند تا مسیر سیارات رو پیش‌بینی کنن. 🔭 بعداً کارل پیرسون اومد و این دو ایده رو با هم ترکیب کرد و رگرسیون خطی رو به شکلی که امروزه می‌شناسیم، توسعه داد.

در واقع، گالتون مفهوم رو معرفی کرد و گاوس و پیرسون ابزارهای ریاضی 🧮 لازم برای عملی کردنش رو فراهم کردند. از اون موقع تا حالا، این مدل کلی پیشرفت کرده و امروزه با کامپیوترها 💻 به راحتی می‌تونیم پیچیده‌ترین مدل‌های رگرسیون رو تحلیل کنیم و ازش در زمینه‌های مختلف، از اقتصاد و پزشکی 📈🏥 گرفته تا هوش مصنوعی، استفاده کنیم.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی



Rate Limiting



🎯 تعریف

Rate Limiting یعنی محدود کردن تعداد درخواست‌هایی که یک کاربر یا سرویس می‌تونه در بازه‌ی زمانی مشخص به سیستم بفرسته.

مثلاً:

⬅️ یک کاربر فقط می‌تونه ۱۰۰ درخواست در دقیقه بفرسته.
⬅️ اگر بیشتر بشه → یا خطا می‌گیره (429 Too Many Requests) یا درخواست‌ها رد می‌شن.



چرا خوبه؟

⬅️ جلوگیری از سوءاستفاده (abuse) یا اسپم.
⬅️ محافظت در برابر حملات DDoS.
⬅️ مدیریت منصفانه منابع (fair usage).
⬅️ کنترل هزینه در سرویس‌های ابری (که هزینه بر اساس درخواست محاسبه میشه).




🐍 مثال ساده با Python (Token Bucket Algorithm)

بسیار عالی 🚦
بریم سراغ Rate Limiting



🎯 تعریف

Rate Limiting یعنی محدود کردن تعداد درخواست‌هایی که یک کاربر یا سرویس می‌تونه در بازه‌ی زمانی مشخص به سیستم بفرسته.

مثلاً:

⬅️ یک کاربر فقط می‌تونه ۱۰۰ درخواست در دقیقه بفرسته.
⬅️ اگر بیشتر بشه → یا خطا می‌گیره (429 Too Many Requests) یا درخواست‌ها رد می‌شن.



چرا خوبه؟

⬅️ جلوگیری از سوءاستفاده (abuse) یا اسپم.
⬅️ محافظت در برابر حملات DDoS.
⬅️ مدیریت منصفانه منابع (fair usage).
⬅️ کنترل هزینه در سرویس‌های ابری (که هزینه بر اساس درخواست محاسبه میشه).




🐍 مثال ساده با Python (Token Bucket Algorithm)

import time

class RateLimiter:
def __init__(self, rate, per_seconds):
self.rate = rate # حداکثر تعداد درخواست
self.per_seconds = per_seconds # در این بازه زمانی
self.allowance = rate
self.last_check = time.time()

def allow_request(self):
current = time.time()
elapsed = current - self.last_check
self.last_check = current

# پر کردن مجدد توکن‌ها با گذر زمان
self.allowance += elapsed * (self.rate / self.per_seconds)
if self.allowance > self.rate:
self.allowance = self.rate

if self.allowance < 1:
return False # رد کردن درخواست
else:
self.allowance -= 1
return True


# تست
limiter = RateLimiter(rate=5, per_seconds=10) # حداکثر ۵ درخواست در ۱۰ ثانیه

for i in range(10):
if limiter.allow_request():
print(f"Request {i} allowed")
else:
print(f"Request {i} blocked")
time.sleep(1)

💡 مزایا:

⬅️ کنترل مصرف منابع (CPU, Memory, Network).
⬅️ امنیت بیشتر در برابر حملات.
⬅️ ایجاد تجربه کاربری بهتر (سیستم پایدارتر باقی می‌مونه).
⬅️ یکی از پایه‌های اصلی در طراحی API Gateway ها.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی



CQRS (Command Query Responsibility Segregation) 📑


خواندن (Query) و نوشتن (Command) داده‌ها رو جدا می‌کنه.
اینطوری می‌تونی خوندن داده‌ها رو سریع و سبک کنی، و نوشتن داده‌ها رو دقیق و امن.
خیلی برای سیستم‌های بزرگ مقیاس (enterprise) استفاده میشه.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #React

🟣 موضوع : ‏مدیریت استایل‌ها در پروژه‌های بزرگ

نکته :

‏از یه سیستم توکن (Design Tokens) برای رنگ‌ها، فونت‌ها و فاصله‌ها استفاده کن. اینطوری کل پروژه یکدست می‌مونه. 🎨


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir