Golden Code – Telegram
Golden Code
737 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
متود times در لاراول بهتون این امکان رو میده که یک کار رو چندین بار به راحتی بتونید تکرار کنید بدون نیاز به نوشتن for یا foreach. یعنی شما میگید که یک کار رو مثلاً ۵ بار انجام بده، و لاراول به طور خودکار اون کار رو ۵ بار براتون انجام میده.

کاربردش؟؟
مثلا در تست نویسی(ایجاد رکورد با تعداد مدنظر در دیتابیس)

چجوری کار میکنه؟
در هر تکرار، شماره‌ی تکرار (که در اینجا number$ هستش) به closure داده میشه و میتونین ازش برای انجام کاری مثل چاپ پیام یا پردازش دیتای مدنظر استفاده کنین.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1896538556551884968?t=q22doKctgbLdIHAW0U24uA&s=35
👍6👏21
Forwarded from آموزش لاراول | LaravelHub (rwx-rwx-rwx)
📌 امروز وقتی وارد سرور ویندوزی خودم شدم، یه حس عجیبی داشتم... انگار یه چیزی درست نبود! کمی که دقت کردم، متوجه چند مورد مشکوک شدم و با خودم گفتم: "نکنه هک شدم؟!" 😨

اگه شما هم همچین حسی داشتید، این چک‌لیست امنیتی رو دنبال کنید تا بفهمید کسی به سرورتون نفوذ کرده یا نه!

۱. بررسی کاربران جدید
🔹 توی جستجوی ویندوز، عبارت User رو تایپ کنید.
🔹 به بخش Local Users and Groups برید.
🔹 نباید کاربر ناشناسی توی لیست باشه! اگه بود، فوراً حذفش کنید.

۲. چک کردن لاگ‌های ورود و خروج
🔹 دکمه‌های Win + R رو بزنید و تایپ کنید:
eventvwr.msc  

🔹 بعد برید به مسیر:
 Windows Logs > Security  

🔹 دنبال Event ID 4624 (ورود موفق) و Event ID 4625 (ورود ناموفق) بگردید.

اگه آی‌پی مشکوک دیدید، یعنی کسی غیر از شما وارد شده! 🚨
۳. بررسی اتصالات فعال به سرور
🔹 CMD رو باز کنید و این دستور رو بزنید:
netstat -an | findstr "ESTABLISHED"

🔹 اگه آی‌پی‌های ناشناس توی لیست بود، یعنی کسی هنوز به سرورتون وصله! 😱

۴. چک کردن پردازش‌های مشکوک⁧‏⁧
🔹 Task Manager رو باز کنید (Ctrl + Shift + Esc)
🔹 توی تب Processes ببینید برنامه‌ای هست که نباید باشه؟
🔹 اگه اسم عجیب‌وغریب داشت، فوراً End Task کنید!

۵. بستن دسترسی هکر
🔹 رمز عبور ادمین رو عوض کنید.
🔹 پورت 3389 (RDP) رو توی فایروال ببندید.
🔹 فقط آی‌پی‌های مطمئن رو مجاز کنید.
🔹 با آنتی‌ویروس یه اسکن کامل بزنید.

⚠️ اگه این مراحل رو انجام دادید و چیزی مشکوک پیدا کردید، یعنی سرورتون هک شده! سریعاً اقدام کنید و امنیت رو بالا ببرید.

📢 این مطلبو برای دوستات بفرست که امنیت سرورشون حفظ بشه! 🔐💻
#کدنویسی #امنیت #کشف_جرایم_رایانه_ای

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
🔥54👍2
در لاراول میتونیم از متودهایی مثل throwIfStatus برای مدیریت خودکار خطاهامون در هنگام ارسال request به API استفاده کنیم.

این متودها به ما کمک میکنن تا اگه وضعیت response یک API بصورت خطا (مثلا ۴۰۰ یا ۵۰۰) باشه، خودش بطور خودکار یک exception مناسب ایجاد کنه و ما دیگه نیازی به بررسی دستی وضعیت response نخواهیم داشت.

(من فقط یکی ازین متودارو گفتم، مابقیش و چگونگیه استفاده ازین دسته متود ها در تصویر ذکر)
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1898800422476788177?t=sQquSOys96KZAxj7UNeTlQ&s=1
🙏2👍1
یه راه حل خیلی ساده برای بالا بردن performance برنامه‌هایی که با PHP نوشتیم:
یکی از مشکلاتی که در PHP وجود داره، مقیاس‌پذیری و سرعت پایین پردازش‌های همزمان هست. یکی از راه حل‌ها استفاده از FrankenPHP میتونه باشه.
در حالت عادی، وقتی برنامه PHP اجرا میشه، هر بار که درخواست جدیدی میاد، PHP باید اسکریپت‌ها رو از نو بارگذاری کنه. این فرآیند باعث میشه که زمان بارگذاری و پاسخ‌دهی افزایش پیدا کنه، مخصوصاً توی برنامه‌های سنگین یا با ترافیک بالا.
اما با FrankenPHP، این فرآیند تغییر می‌کنه. FrankenPHP به جای اینکه هر بار اسکریپت‌ها رو دوباره بازگذاری کنه، فقط یک بار فایل‌های PHP رو کش میکنه و از همون نسخه کش شده برای درخواست‌های بعدی استفاده می‌کنه. این یعنی توی درخواست‌های بعدی دیگه نیاز به اجرای دوباره نیست و PHP خیلی سریع‌تر جواب میده.

مزایاش چیه؟
سرعت بیشتر: با استفاده از FrankenPHP، کدهای PHP سریع‌تر اجرا می‌شن. این یعنی می‌تونید تعداد درخواست‌های بیشتری رو در یک زمان پردازش کنید و بار ترافیکی بالا رو بهتر مدیریت کنید.

برای میکروسرویس‌ها مناسبه: اگر دارید یک سیستم میکروسرویسی می‌سازید، FrankenPHP می‌تونه به شدت کمک کنه چون برای این نوع معماری ساخته شده و سرعت و مقیاس‌پذیری بالایی داره.

مقیاس‌پذیری راحت‌تر: FrankenPHP به شما این امکان رو می‌ده که به راحتی مقیاس پروژه‌هاتون رو افزایش بدید بدون اینکه از سرعت و عملکرد کم بشه.

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

اگر برنامه‌‌ای دارید که باید با سرعت بالا به درخواست‌ها پاسخ بده یا نیاز به مقیاس‌پذیری بیشتر در محیط‌های ابری داره، یه سر به FrankenPHP بزنید. با Laravel Octane هم خیلی راحت میشه از FrankenPHP در لاراول استفاده کرد.

@DevTwitter | <Iman Rajabi/>
👍6🔥1
اگه بخواید سرعت پروژه‌تون (مثل زمان اجرای یک query) رو بررسی کنید و بخش‌های کند رو پیدا کنید تا بتونید بهبودش بدید، میتونید از کلاس Benchmark در لاراول استفاده کنید. 🔥

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

(نحوه استفادش هم در تصویر شرح داده شده)
@GoldenCodeir
#Laravel
(به منبع و مثالش توجه کنین 👇🏾)
https://x.com/laravelbackpack/status/1900162434356432927?t=eC4AGkAMOS2InxZQSXWKkw&s=35
4👍3
در لاراول اگه بخوایم query ما نتایج تکراری رو حذف کنه، از کدام متود باید استفاده کنیم؟
Anonymous Quiz
49%
distinct()
4%
groupBy()
32%
unique()
15%
removeDuplicates()
👍62
وقتی از دستور "%LIKE "%fo برای جستجو استفاده می‌کنیم، درین شرایط دیتابیس باید تمام اطلاعات رو برامون بررسی کنه که خب باعث میشه سرعت پایین بیاد. راه بهتر برای جستجوی سریعتر استفاده از full-text هستش.

این روش کمک میکنه تا دیتابیس خیلی سریع‌تر و کارآمدتر فرایند جستجو رو انجام بده.
(طریقه استفادش در تصویر درج شده)
#SQL
#PHP
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1902014134561947783?t=jHjPbh6DAmevpRPeQSCDWg&s=35
🔥51👏1🤔1
در لاراول 12، ویژگی جدیدی به نام NamedScope اضافه شده که به ما این امکان رو میده که query scope ها رو بدون نیاز به پیشوند scope تعریف کنیم.

( یعنی می‌تونیم نام متودها رو به طور مستقیم و ساده‌تر بنویسیم. )
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/jordankdalton/status/1902502113659273313?t=GA_f4AoLSdNqQJ_FPXfj4A&s=19
2👍2🙏2
در دیتابیس مفهومه ACID چیه؟

شماره یک ( 🅰️ - Atomicity):

به این معناست که یک transaction (عملیات در دیتابیس) یا کامل انجام میشه یا اصلاً انجام نمیشه.
اگه در طول اجرای transaction خطایی رخ بده، تمام تغییرات انجام‌شده در دیتابیس باید لغو بشه (rollback) تا دیتابیس در وضعیت اولیه باقی بمونه.

📌 مثلا؟؟
فرض کنین شما در حال انتقال پول از حساب بانکیتون به حساب شخص دیگه ای هستین. اگه فرایند انتقال بطور کامل انجام بشه (یعنی پول از حساب شما کم شده و به حساب اون شخص اضافه بشه)، تراکنش موفقیت‌آمیزه.✅️

اما اگه وسطه عملیات مشکلی پیش بیاد (مثلاً اتصال اینترنت قطع بشه)، هیچ‌کدوم از این تغییرات نباید در دیتابیس باقی بمونه. یعنی یا همه عملیات‌ها باید انجام بشن، یا هیچکدوم نباید انجام بشن.
#Database
#ACID
#Atomicity

@GoldenCodeir
👍134🗿2
در لاراول میتونیم بجای استفاده از whereIn برای جستجو در مجموعه‌ای از مقادیر، از whereKey استفاده کنیم تا کدی تمیزتر و ساده تر داشته باشیم. این روش بطور خودکار از ID مدل‌ها استفاده میکنه.

برای جستجوی برعکسش هم از whereKeyNot بجای whereNotIn استفاده میکنیم.

📌 همچنین می‌تونیم مشخص کنیم که primary key مدل ما از چه ستونی استفاده کند.

(✅️ با توجه به عکس زیر متوجه میشید چجوری باعث ساده تر شدنه کد میشه)

#Laravel
@GoldenCodeir

https://x.com/Akr4mKhan/status/1903493801030909990?t=-sVOBYg54lj1MzJpHh1hkQ&s=35
👍54👏2🔥1
در لاراول ۱۲، یه متود جدیدی به نام pipe() به query builder اضافه شده. این متود به شما این امکان رو میده که تغییرات مختلفی مثل فیلتر کردن، مرتب‌سازی یا هر چیزه دیگه‌ای رو به راحتی به query تون اضافه کنین، بدون اینکه نیازی به نوشتن کد پیچیده و طولانی باشه.

میتونید چند عملیات مختلف رو به صورت جداگانه و مرتب روی query اعمال کنین و این کار باعث میشه کد شما تمیزتر و خواناتر بشه و نگهداریش هم راحت‌تر بشه. استفاده از pipe() خیلی کمک می‌کنه که از تکرار و شلوغی کد جلوگیری کنیم.

مثلا می‌تونیم منطق یک فیلتر رو یه بار بنویسیم و در بخش‌های مختلف پروژه از همون یک منطق استفاده کنیم.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/jordankdalton/status/1905311519014789464?t=Jxnq3qqNdlyITwe2V-mUyA&s=19
4🔥3
اگر یک query در دیتابیس کند باشه، می‌تونیم از دستور EXPLAIN استفاده کنیم تا بفهمیم مثلا چطوری یک سرچ یا فیلتر اجرا میشه.
اگه در خروجی EXPLAIN دیدید که 'access type' برابر با ALL هست، یعنی دیتابیس همه‌ی رکوردهای جدول رو داره بررسی میکنه که باعث کندی میشه. درین صورت باید از index استفاده کنیم تا سرعت query بیشتر بشه.

حالا چجوری ازش استفاده کنیم؟
EXPLAIN SELECT * FROM users WHERE age > 30;


#sql
@GoldenCodeir

(به‌منبع دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1904174361642205309?t=rdYfmiptB7CN_obg0VDafg&s=19
👍91
در لاراول، قابلیت جدید fragment@ به ما اجازه میده فقط یک بخش مشخص از یک ویو رو رندر کنیم، نه کل صفحه رو.

کاربردش:

● با AJAX کار میکنیم.

● فقط یه قسمت از صفحه باید آپدیت بشه.

● می‌خوایم سرعت لود بالا بره و مصرف کمتر شه.

مثال از کاربردش؟

زمانیکه با جاوااسکریپت قراره یک درخواست AJAX بفرستیم برای گرفتن اطلاعات کاربر.
حالا بجای اینکه کل صفحه رو دوباره بفرستیم، فقط همون بخش لازم (مثلاً user name) رو از ویو میفرستیم.
در نتیجه صفحه ی ما سریعتر و بهینه تر کار میکنه.
#Laravel
@GoldenCodeir
(استفاده ازش هم سادست، به منبع و مثالش دقت کنید 👇🏾)
https://x.com/MrPunyapal/status/1914293970848326130?s=35
2👍2🔥1
در لاراول، میتونیم یه ستونی که دیتای JSON داره رو به راحتی به یک آرایه PHP تبدیل کنیم. این کار فقط با نوشتن یک خط کد در مدل انجام میشه و نیازی به تبدیل دستی دیتامون نداریم.

مثال؟؟

فرض کنیم یه جدول داریم که در اون یک ستون به نام settings داریم که دیتای JSON داره. برای تبدیل خودکار این داده‌ها به آرایه PHP، باید این خط کد رو در مدل بنویسیم:
protected $casts = [
'settings' => 'array',
];

حالا وقتی دیتارو از دیتابیس میخونیم، ستون settings به صورت خودکار به یک آرایه PHP تبدیل میشه و میتونیم ازون مانند هر آرایه دیگه ای استفاده کنیم:
$user = User::find(1);
$settings = $user->settings;

@GoldenCodeir 🔥
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1915730028014546980?t=Ke92_xZaGJL7cJVBdgKZxA&s=19
👍7💯21
اگر از Git استفاده می‌کنید، احتمالاً با gitignore. آشنا هستید. ولی یه فایل دیگه هم هست به اسم exclude
حالا این دوتا چه فرقی دارن؟

gitignore.
این فایل توی ریشه‌ی پروژه‌ است و برای نادیده گرفتن فایل‌هایی استفاده میشه که همه‌ی اعضای تیم نباید پیگیری‌شون کنن. خودش هم commit میشه و داخل repo میمونه.

exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایده‌آله برای فایل‌هایی که فقط خودت نمی‌خوای track بشن، بدون اینکه توی repo دیده بشن.

پس اگر فایل لوکال خاصی داری و نمی‌خوای توی gitignore. بذاری، برو سراغ exclude

@DevTwitter | <Amir Mohammad Rezvaninia/>
👍82🆒2🔥1
چجوری شت کد بنویسیم؟؟

1. هیچ قانونی نداشته باش!
بذار هرکی هرجوری دلش خواست کد بزنه.

2. کیفیت؟ این دیگه چه مزخرفیه؟
فقط سریع باش! وقتت رو حرومه بررسی و تست نکن. هرچی زودتر تحویل بدی بهتره!


3. امنیت؟ ولش کن!
هرکی اومد، همه چی رو بهش بده. رمز نمیخواد، ورود نمیخواد، اعتبارسنجی؟ چی هست اصن؟ همه چیز آزاده! چرا سخت میگیری


4. کد تکراری ؟ اشکال نداره!
یه تیکه کد نوشتی؟ صدبار کپیش کن توو جاهای مختلف. چرا زحمت بکشی تابع درست کنی؟


5. به سرعت لاک‌پشت وفادار باش!
نه کشی، نه بهینه‌سازی، نه تست عملکرد. بذار برنامت در حد اینترنت دایل‌ آپ اجرا بشه!


6. کیفیت برای دیگران؟ نه بابا!
فقط رو سیستم خودت تست کن اونم فقط با chrome. اگه کسی با سیستم یا مرورگره دیگه‌ای وارد شد، مشکل خودشونه! شما که خودت همه چیز رو دیدی!

7. پروژه‌تو توی غار بنویس!
نه فیدبک بگیر، نه دمو بده...


8. نظارت؟ حسش نیس!
صبر کن کاربر خودش زنگ بزنه و بگه: «سایتتون به فنا رفته!» بعد تازه بپرسی: چی دیدی؟ چه اروری بود؟ چی زدی؟!

و...

📌 اگه می‌خوای یه نرم‌افزار ضعیف بسازی، فقط کافیه این دستورالعمل‌ها همیشه اولویتت باشه!
ولی اگه میخوای حرفه‌ای باشی، باید دقیقاً برعکس اینارو انجام بدی.

@GoldenCodeir
(به منبع دقت کنید👇🏾)
https://x.com/housecor/status/1916897024131072408?s=35
👍6😁1
Forwarded from یک برنامه نویس تنبل (The Lazy 🌱)
🔶 اگر بصورت فریلنسری کار می کنید یا حتی یک مجموعه کوچیک در حوزه طراحی سایت هستید داشتن یک قرارداد سفت و محکم که تمامی بخش ها در اون ذکر شده الزامی هست.من اون اوایل که خودم شروع کار کردم قراردادی با کارفرما نمی بستم و صرف صحبت و اعتماد باهم کار می کردیم. بیشتر مواقع اتفاقی نمی افتاد اما پروژه هایی هم بود که به خاطر قرارداد نبستن خیلی دچار مشکلات شدم. پس حتماً با کارفرمای خودتون قرارداد ببندید.

--بند های قرارداد به شرایط و ضوابط خودتون بستگی داره.مثلاً اینکه چند درصد از مبلغ طراحی سایت رو می خواید اول بگیرید، یا اینکه چه خدمات پشتیبانی می خواید ارائه بدید یا ندید. شرایط فسخ قرارداد چی هست. نمونه قرارداد رو می تونید از اینترنت دانلود کنید و بر اساس شرایط خودتون یا مجموعه تغییر بدید.من فقط ساختار قرارداد رو بهتون میگم.

-- بخش اولیه قرارداد مربوط به مشخصات طرفین هست
1- مشخصات مجری (شما)
2- مشخصات کارفرما
3- مبلغ قرارداد
4- شرایط پرداخت (پیش پرداخت و تسویه کامل)
5- نحوه پرداخت

-- بخش بعدی قرارداد شروع پروژه هست
1- مدت زمان طراحی رو مشخص می کنید
2- زمان آغاز پروژه به چه صورت محاسبه میشه
3- کارفرما چه تعهداتی برای شروع پروژه داره

-- بخش سوم فرایند اجرا و تکمیل پروژه
این به شرایط کاری شما بستگی داره که چجوری می خواید پروژه رو اجرا کنید

-- در ادامه خدمات پشتیبانی فنی رایگان (بسیار مهم در قرارداد)
خدماتی که حالا به مدت هر چقدر که مد نظرتون هست رو داخل این ماده و شامل بند های مختلف بیارید. حواستون باشه چه خدماتی ارائه می دید یه موقع به هر دلیل شونه خالی نکنید از این خدمات.حتماً دچار مشکل میشید.

-- خدماتی که شامل پشتیبانی رایگان نمی شود(بسیار بسیار مهم)
تمامی مواردی که شامل خدمات رایگان شما نمیشه رو ذکر کنید. این بخش خیلی مهمه و اگر کامل ذکر نشه بعدا با کارفرما حتما دچار مشکل میشید.(مثلاً یک مورد برای من طراحی لوگو جز خدمات رایگان نیست)

-- بخش بعدی ویدیو آموزشی (من بعد از اتمام کار یه سری موارد رو به کارفرما برای ویرایش سایت آموزش میدم.)

--ماده بعدی (تعهدات طرفین- مجری و کارفرما) بسیار بسیار مهم
تمام تعهداتی که شما باید به کارفرما باید بدید و همچنین تعهداتی که از کارفرما انتظار دارید اینجا ذکر کنید. خیلی مهم هست اگر کامل نباشه یا نقص داشته باشه، حین پروژه و در مدت اجرای پشتیبانی و اتمام کار می تونه مشکل ساز باشه)

-- ماده های پایانی قرارداد هم شامل حل اختلاف (می تونه نباشه در قرارداد) | شرایط فسخ قرارداد (مهم هست) از هر دو طرف قرارداد و همچنین فورس ماژور می باشد.

-- در آخر قرارداد باید در تاریخ مشخص به امضای طرفین برسه و تمامی صفحات قرارداد در 2 نسخه توسط مجری و کارفرما امضا بشه.

--در پایان اینکه ساختار قرارداد به این صورت باشه..ولی بند های اون به خودتون بستگی داره. سعی کنید بالانس رو در قرارداد رعایت کنید نه طوری باشه که کارفرما عملاً هیچ حق و حقوقی نداشته باشه و نه اونقد سبک که کارفرما هر درخواستی بعد از شروع کار بهتون بگه. موفق باشید

</Farshad Zarrin>

#وردپرس

@TheRaymondDev
6👍3🙏1
کدوم یکی از ویژگی‌های زیر در لاراول هنگام استفاده از "Queues" برای Background Processing، باعث کاهش قابل‌توجه زمان اجرای Jobs نمی‌شود؟
Anonymous Quiz
15%
SQS Queue Driver
30%
Redis Queue Driver
33%
Database Queue Driver
22%
Beanstalkd Queue Driver
👍8❤‍🔥1😢1
Golden Code
در دیتابیس مفهومه ACID چیه؟ شماره یک ( 🅰️ - Atomicity): به این معناست که یک transaction (عملیات در دیتابیس) یا کامل انجام میشه یا اصلاً انجام نمیشه. اگه در طول اجرای transaction خطایی رخ بده، تمام تغییرات انجام‌شده در دیتابیس باید لغو بشه (rollback) تا…
خب حالا بریم سراغ C یا همون Consistency(سازگاری) در ACID:

ویژگی Consistency در دیتابیس یعنی بعد از انجام هر transaction، دیتاهامون باید همیشه صحیح و درست باقی بمونن. یعنی دیتابیس نباید هیچ وقت به وضعیتی نادرست یا اشتباه برسه.

📌 اگه transaction ها قوانین دیتابیس رو رعایت نکنن (مثلاً مقدار موجودی کافی نباشه)، سیستم اونا رو رد میکنه و هیچ تغییری روی داده‌ها اعمال نمیشه.
پس یعنی بعد از هر تغییر در دیتابیس، سیستم باید مطمئن بشه که همه‌چیز درست و منطبق با قوانین دیتابیس هستش.

فرض کنین شما در یک فروشگاه آنلاین قصد خرید یک کالای خاص رو دارید. وقتی وارد سایت میشن و کالای مورد نظر رو به سبد خرید اضافه میکنید، سیستم باید بررسی کنه که آیا موجودی اون کالا کافیه یا نه.
اگه موجودی کالا تموم شده باشه، سیستم اجازه خرید رو به شما نمیده و از انجام تراکنش جلوگیری میکنه.

این نشون دهنده Consistency است که سیستم همیشه دیتاهای صحیح و قابل اعتماد رو حفظ میکنه.👌🏾
#ACID
#SQL
#Database

@GoldenCodeir
4👍2🔥2
📌 لیستی از اصول مهم در طراحی سیستم که نیازه بدونیم!

1. مفهوم Caching :
میتونیم از کش برای ذخیره نتایج کوئری‌های دیتابیس استفاده کنیم تا سرعت دسترسی به داده‌ها افزایش پیدا کنه و بار سرور کاهش یابد.


2. مفهوم Sharding:
تقسیم داده‌ها به بخش‌های کوچک‌تر و ذخیره اونا در سرورهای مختلف. این کار باعث میشه که سیستم بتونه بهتر و سریع‌تر به درخواست‌ها پاسخ بده.


3. مفهوم Load-balancing (توزیع بار):
وقتی تعداد request ها زیاد میشه، باید اونارو به طور مساوی بین چند سرور تقسیم کنیم تا از بار زیاد روی یک سرور جلوگیری بشه و سیستم کارایی بالاتری داشته باشه.


4. مفهوم Replication :
ایجاد کپی از داده‌ها در سرورهای مختلف تا در صورت بروز مشکل یا خرابی در یک سرور، سیستم همچنان فعال و در دسترس باشه.


5. مفهوم Fault-tolerance :
سیستم باید طوری طراحی بشه که در صورت بروز خطا یا مشکل، همچنان بتونه به کارش ادامه بده. مثلا در Laravel، میتونیم از ویژگی‌هایی نظیر retry برای انجام مجدد request ها درصورت بروز خطا استفاده کنیم.


6. مفهوم High-availability :
سیستم باید همیشه در دسترس باشه و هیچوقت از دسترس خارج نشه.

7. مفهوم Concurrency (همزمانی):
اجرای چندین کار به صورت همزمان برای افزایش سرعت پردازش.
مثلا در Laravel، می‌تونیم از Job Queues و Workers برای پردازش درخواست ها بصورت همزمان استفاده کنیم و ازین طریق عملکرد سیستم رو بهبود بدیم.


8. مفهوم Scalability :
توانایی سیستم برای گسترش و افزایش ظرفیت با افزایش تعداد کاربران.


9. مفهوم Performance :
سرعت و کارایی سیستم. در Laravel، میتونیم از تکنیک‌هایی مانند Caching و Eager Loading برای بهبود سرعت بارگذاری صفحات و کاهش زمان پاسخ‌دهی استفاده کنیم.


10. مفهوم Indexing :
ایجاد ایندکس‌ها در دیتابیس برای جستجو سریع‌تر داده‌ها. ایندکس‌ها به سرعت جستجو رو افزایش میدهند و باعث میشن که نتایج سریع‌تر منتقل بشن.

#SystemDesign
#Backend

@GoldenCodeir
(منبع 👇🏾)
https://x.com/javinpaul/status/1920364568041160939?s=19
👍62🔥1