Golden Code – Telegram
Golden Code
737 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
به گفته ی Taylor Otwell

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

📌 شماره ۱ : Cache Failover

یکی از چالش‌های رایج در پروژه‌های بزرگ، خرابی کش (مثل Redis) است. در گذشته اگه کش از کار میفتاد، ممکن بود پروژه با خطا مواجه بشه و از کار بیفته.

حالا لاراول از cache failover پشتیبانی میکنه:
اگه کش اصلی در دسترس نباشه لاراول بصورت خودکار سراغ کش پشتیبان (مثل فایل یا دیتابیس) میره و از بروز خطا جلوگیری میکنه.


📌 شماره ۲: Deferred Queue

قابلیت دوم، نوع جدیدی از صف هست با نام deferred.
این صف‌ها به شما اجازه میدن که اجرای job هارو تا زمانی خاص به تاخیر بندازید ، نه صرفا با delay زمانی، بلکه با منطق‌ های انعطاف‌ پذیرتر.

مثلا:
میتونید job ها رو در صف نگه دارید، ولی اجرای اونارو تا زمان فراهم بودن شرایط مشخصی (مثل آماده شدن یک ریسورس خارجی یا عبور از محدودیت‌ها) به تعویق بندازین.

#Laravel #PHP #Laravel_tip #لاراول

@GoldenCodeir 🔥

داکیومنته لاراول:
https://laravel.com/docs/12.x/cache#cache-failover
(منبع👇🏾)
https://x.com/taylorotwell/status/1980664560492376378?t=AW_V157KGhHWfyPOqCy1Lg&s=35
👍114
Golden Code
اصل open closed در اصول SOLID چی میگه؟ این اصل میگه که: کلاس‌ها، ماژول‌ها یا توابع باید برای توسعه باز باشند ولی برای تغییر بسته باشند. به عبارت دیگه، سیستم نرم‌افزاری باید به گونه‌ای طراحی بشه که قابلیت افزودن ویژگی‌های جدید بدون نیاز به تغییر در کدهای…
اصلLSP یکی از اصول مهم SOLID هستش که میگه:
"Objects of a subclass should be replaceable with objects of their superclass without affecting the correctness of the program."

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

چرا LSP مهمه ؟

1.تاثیر در پایداری کد

2. باعثه کاهش باگ‌های پروژه میشه

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

📌 نقض LSP و مشکلاتش

زمانیکه یک کلاس فرزند رفتار متفاوتی نسبت به کلاس والدش ارائه بده LSP نقض میشه. این خب میتونه باعث یک خطا بشه.

مثلا اگه یک کلاس فرزند ویژگی‌هایی رو به ارث ببره که براش مناسب نیست (مثل پرواز برای یک پنگوئن)، وقتی اون کلاس فرزند جایگزین کلاس والد بشه، ممکنه برنامه با خطا مواجه بشه.

✅️ راه‌حل: یه طراحیه صحیح

برای جلوگیری از نقض LSP باید کلاس‌ها به‌گونه‌ای طراحی بشن که تنها ویژگی‌های مرتبط رو ارث ببرند. مثلا، میشه رفتارهایی که به پرواز مربوط هستن رو در یک کلاس جداگانه قرار داد و رفتارهایی که به ویژگی‌های دیگر مربوط میشن رو در کلاس‌های دیگر مدیریت کرد.

این طراحی باعث میشه که هر کلاسه فرزند فقط ویژگی‌های مرتبط با خودشو داشته باشه و امکان جایگزینی کلاس‌ها بدون بروز مشکل وجود داشته باشه.

خلاصش که:

اصل LSP میگه که کلاس‌های فرزند باید رفتار کلاس والد خودشونو به‌درستی حفظ کنند. این اصل باعث میشه که کد ما قابل توسعه، پایدار و بدون خطا باقی بمونه و از بروز مشکلات هنگام جایگزینی کلاس‌ها جلوگیری بشه.

#SOLID #LSP

@GoldenCodeir 🔥
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-lsp-liskovabrsubstitution-activity-7387569961008943104-XDW2?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
👍7
ویژگیه جدید defer در لاراول v12.34.0

در لاراول نسخه 12.34.0، متود جدیدی به نام defer در کلاس HTTP Client Batch معرفی شده که میتونه تاثیر زیادی در بهبود سرعته اپلیکیشن داشته باشه.

📌 چیکار میکنه؟

با استفاده از defer میتونین درخواست‌های HTTP به api های خارجی یا سرویس های انلاین رو پس از ارسال پاسخ به کاربر ارسال کنین. یعنی این که زمان انتظار برای این درخواست‌ها روی تجربه کاربری تاثیر نمیذاره و سرعت پاسخ‌دهی به کاربر بیشتر میشه.

📌 چرا باید استفاده کنیم؟

افزایش سرعت پاسخ‌دهی به کاربر:
با استفاده از defer، درخواست های HTTP به سرویس‌های خارجی بعده ارسال پاسخ به کاربر آغاز میشن.
این یعنی زمان انتظار برای کاربر به حداقل میرسه و عملیاته زمانبر در بکگراند انجام میشه، بدون اینکه سرعت بارگذاری صفحات تحت تاثیر قرار بگیره.

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

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


نمونه کدش:

use Illuminate\Support\Facades\Http;

Http::batch(function ($batch) {
$batch->defer(Http::post('https://example.com/api/notify', [...]));
$batch->defer(Http::post('https://example.com/api/update-stock', [...]));
});

خلاصه که اگه دنبال بهبود سرعت و عملکرد اپلیکیشنید ، این ویژگی میتونه خیلی مفید باشه!
#Laravel #Laravel_tip #لاراول

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/magadum_aniket/status/1981755582836019433?t=8V5fsh9-RDxwLVoMlX4dVA&s=35
👍52🔥1
در لاراول اگه بخوایم بصورت همزمان چندین Job رو در queue با اولویت‌های مختلف ارسال کنیم، از کدوم ویژگی استفاده میشه؟
Anonymous Quiz
41%
onQueue()
11%
delay()
43%
chain()
5%
onConnection()
👍5🤷‍♂2
یه روش برای اینکه کارهای تکراریه مثل ساخت یه سری کلاس‌های خاص (مثلا DTO) رو خودکار کنید

اولش ببینیم چرا custom artisan command مفیده؟

صرفه‌جویی در زمان

کاهش خطا: از نوشتن دستی کد جلوگیری می‌کنین

وقت بیشتری برای کدنویسی بخش‌های مهم پروژه دارید.


📌 چطوری custom artisan command بسازیم؟

1. ایجاد کامند جدید:
با دستور زیر، یک کامند جدید ایجاد کنین:

php artisan make:command CreateDto

2. نوشتن منطق دستور:
در کلاس جدید،دستور مورد نظرتونو بنویسین (مثل ساخت یک DTO جدید).

یه مثال:

<?php
protected $signature = 'make:dto {name}';
protected $denoscription = 'Create a new DTO class';

public function handle() {
$name = $this->argument('name');
file_put_contents(app_path("Dtos/{$name}.php"), "<?php\n\nclass {$name} {}\n");
$this->info("DTO {$name} created successfully!");
}

3. اجرای دستور:
حالا با این دستور میتونین بسادگی کلاس‌های DTO جدید بسازید:

php artisan make:dto MyDto

خلاصش که:

با استفاده از custom artisan command، میتونین کارهای تکراریتون رو خودکار کنین و توسعه پروژتون رو هم سرعت بدید.
#Laravel #Laravel_tip #لاراول

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1982797695568707742?t=EQ-hdRBX3rRgGuPH2EyA9Q&s=19
👍7👎2
تا حالا پیش اومده بخوای یه قابلیت یا یه گزارش فقط برای درصد کمی از کاربران فعال باشه؟
لاراول یه ابزار باحال برای این کار داره: Lottery

مثال:
تست ویژگی جدیده سایتمون فقط برای ۵٪ کاربران

فرض کن میخوای یه قابلیت جدید (مثلا طراحی تازه‌ی داشبورد) رو فقط برای ۵٪ از کاربرها فعال کنی تا عملکردش رو بسنجی 👇🏾
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Lottery;

Lottery::odds(1, 20) // یعنی 5% احتمال
->winner(function () {
session(['new_dashboard' => true]);
})
->loser(function () {
session(['new_dashboard' => false]);
})
->choose();

حالا فقط ۵٪ کاربران این داشبورد جدید رو می‌بینن 🔥
بدون نیاز به feature flag سیستم یا تنظیمات پیچیده.

📌 کاربردهای دیگه ی Lottery در لاراول

مانیتورینگه سبک:
گرفتن لاگ کامل SQL در درصدی از ریکوئستها

تست A/B برای UX

اجرای وظایف سنگین فقط در بخشی از ریکوئست ها (مثلا آنالیز رفتار کاربر)

این Lottery از نسخه‌ی 9.19 به بعد اضافه شده و توی اپ‌های پر ترافیک کمک میکنه بدون کاهش سرعت، رفتار سیستم رو هوشمندانه بررسی کنی.

#Laravel #Laravel_tip‌ #لاراول

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1978788530139635982?t=Hc2oNzGolFfMitfwrxC2zA&s=35
👍113
در نسخه‌ی جدید PHP 8.5 تابع filter_var() یه قابلیت کاربردیه تازه داره:

FILTER_THROW_ON_FAILURE

تا قبل ازین اگه اعتبارسنجی دیتا (مثلا ایمیل نامعتبر) fail میشد،
تابع فقط مقدار false برمیگردوند و باید دستی بررسیش میکردی.

اما حالا بااین گزینه، بجای برگردوندنه false، یک Exception پرتاب (throw) میشه 👇🏾

try {
$email = filter_var('not-an-email', FILTER_VALIDATE_EMAIL, FILTER_FLAG_THROW_ON_FAILURE);
}
catch (ValueError $e)
{
echo "ایمیل نامعتبر است!";
}

مزایاش؟

کد تمیزتر ، خطایابی سریع‌تر ، هماهنگی بهتر با Exception Handling در پروژه‌های مدرن PHP

#php #backend

@GoldenCodeir 🔥

(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1983537236403794361?t=IIrUtS60L_j-Rl6cHxtwlg&s=19
👍10🔥1👏1
📌 این سایت هم یک ابزار کاربردیه برای کسانی که میخوان از در دسترس بودن سایت‌ها و APIهایشون مطمئن باشند.👌🏾

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

⚙️ امکانات فعلیش:

• مانیتورینگ لینک‌ها با بازه‌های زمانی قابل تنظیم

• هشدار از طریق ایمیل (از طریق پیامک و واتس اپ هم بزودی اضافه میشه)

• گزارش خطاها در داشبورد

مناسب برای:
توسعه‌دهندگان، مدیران سرور و صاحبان کسب‌وکار

(زبان فارسی هم بزودی اضافه میشه)
👇🏾
https://alixdev.ir/
👍3
Golden Code pinned «📌 این سایت هم یک ابزار کاربردیه برای کسانی که میخوان از در دسترس بودن سایت‌ها و APIهایشون مطمئن باشند.👌🏾 در سایت میتونید لینک‌های مهمتون رو ثبت کنید تا بصورت خودکار بررسی بشن. اگه لینک یا سرور شما خطا بدهد، بلافاصله از طریق ایمیل به شما اطلاع داده میشه. …»
خیلی وقتا برای نمایش عددها، قیمت‌ها یا درصدها کمی دردسر داریم ( ویرگول، اعشار، واحد پول، زبان کاربر و...)
اما جاوااسکریپت خودش یه ابزار آماده داره که همه‌ی اینارو خودش انجام میده 👇🏾

چی هستش؟

این Intl.NumberFormat یه قابلیت Native و قدرتمنده
که اعداد رو بر اساس زبان و منطقه‌ی کاربر فرمت میکنه.
نه نیاز به کتابخونه داریم نه regex بنویسیم

یه مثال:
const num = 1234567.89;

new Intl.NumberFormat('en-US').format(num);
// 1,234,567.89

new Intl.NumberFormat('fa-IR').format(num);
// ۱٬۲۳۴٬۵۶۷٫۸۹ 🇮🇷

👆🏾 همون عدد، ولی متناسب با زبان کاربر نمایش داده میشه.

برای پول و درصد :

new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD'
}).format(4999.99);
// $4,999.99 💵

new Intl.NumberFormat('fa-IR', {
style: 'percent',
maximumFractionDigits: 1
}).format(0.853);
// ‎٪۸۵٫۳ 🔢

مزایاش؟

• داخلی و سریع (بدون نصب کتابخونه)
• پشتیبانی از تمام زبان‌ها و ارزها
• کنترل اعشار، جداکننده‌ها، و سبک نمایش
• ظاهر حرفه‌ای‌تر برای کاربر 👌🏾

خلاصه:
وقتی Intl.NumberFormat هست، دیگه نیازی به کدنویسی اضافی برای فرمت اعداد نیست.
#JS #JavaScript #جاوااسکرپیت

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/KaraBharat/status/1984635931832328388?t=nyibER_ZCoXfs8nLIFoy7g&s=19
👍73
اگه با API Resources در Laravel کار می‌کنین، احتمالا همیشه با این حالت مواجه بودید:

return PostResource::collection(Post::all());
return new PostResource($post);

تکراریه یکم؟

راه حل جدید در Laravel 12.29

حالا میتونین مستقیما در مدل مشخص کنید که از چه Resource و Resource Collection ای استفاده بشه:
use Illuminate\Database\Eloquent\Model;
use App\Http\Resources\PostResource;
use App\Http\Resources\PostCollection;
use Illuminate\Database\Eloquent\Attributes\UseResource;
use Illuminate\Database\Eloquent\Attributes\UseResourceCollection;

#[UseResource(PostResource::class)]
#[UseResourceCollection(PostCollection::class)]
class Post extends Model {}

استفاده ی ازش هم اسونه

بعده این کار، برای نمایش یک رکورد یا مجموعه کافیست:
return Post::first()->toResource(); // یک رکورد
return Post::all()->toResource(); // مجموعه

متود toResource() بطور خودکار Resource یا Resource Collection مرتبط با مدل را برمیگردونه.

مزایاش؟

•کد تمیزتر و کوتاه‌تر
•مدل خودش مسئول انتخاب Resource مناسب میشه
•مناسب برای پروژه‌های بزرگ با چندین API Resource

📌 این ویژگی فقط از Laravel 12.29 به بعد فعال هست.

#Laravel #laravel_tip #لاراول

@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1986489784408182821?t=Ju0iw4KZdb1e0wg-OzajSQ&s=19
👍10🔥3
در Laravel نسخه 12.16 به بعد یک rule جدید به نام in_array_keys معرفی شده :

$request->validate([
'data' => 'required|array|in_array_keys:name,email',
]);

یعنی آرایه‌ی data باید حداقل یکی از کلیدهای name یا email رو داشته باشه، بدون نیاز به کد اضافی.

مزایای استفاده ازین rule :

کد تمیز و کوتاه

حذف بررسی‌های دستی کلیدها

هماهنگ با دیگر قوانین اعتبارسنجی


📌 این rule فقط وجود کلیدها رو بررسی میکنه. برای بررسی نوع یا مقدار دیتا، از قوانین دیگه ای مثل string یا email استفاده کنین.

ی مثال دیگه:
$request->validate([
'user' => 'required|array|in_array_keys:name,email,password',
]);


درین مثال، اگه هیچکدوم از کلیدهای name، email یا password وجود نداشته باشن، Laravel به صورت خودکار خطا برمیگردونه و نیازی به نوشتن کد دستی نیست.
اما اگه فقط یکی از کلیدها موجود باشه، بدرستی انجام میشه بدونه خطا.

#Laravel #Laravel_tip #لاراول

@GoldenCodeir 🔥
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1988233512273543234?t=2ABEYuKulqMioiYyYh6Umg&s=19
👍102
گاهی یک رشته داریم که عناصرش با "," یا ";" جدا شدن. با استفاده از split() و یک Regex ساده میتونیم هر دو رو همزمان جدا کنیم.

مثال:

let text = "apple,banana;orange,grape;melon";
let parts = text.split(/[,;]/);

console.log(parts);
// ["apple", "banana", "orange", "grape", "melon"]


الگوی بالا میگه هرجا ", " یا ";" دیدی جداسازی انجام بده برامون

#Javanoscript #جاوا_اسکریپت
#جاوااسکریپت

@GoldenCodeir 🔥
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/Shefali__J/status/1988564436559249609?t=3KBELet8DL6rU_-xqTFCDA&s=35
👍6🔥4
وقتی از get() استفاده میکنیم، کل رکوردهای جدول یکباره از دیتابیس خوانده میشن و داخل حافظه لود میشن.
این برای جدول های کوچیک مشکلی نداره؛ اما اگه با هزاران یا میلیون‌ها رکورد سروکار داشته باشیم مصرف حافظه شدیدا بالا میره و ممکنه اسکریپت از کار بیفته.

لاراول قابلیت خوبی در اختیارمون گذاشته:

lazy() — استریم‌کردن داده‌ها به‌صورت مرحله‌ای

با lazy() رکوردهامون بصورت streaming لود میشن.
یعنی فقط بخش کوچکی وارد حافظه می‌شه، پردازش می‌شه و بعد آزاد می‌گرده. این روش فوق‌العاده بهینه و کم‌مصرف هست.

📌 مثال:
User::lazy()->each(function ($user) {
// پردازش هر کاربر
});

مزیت‌ هاش؟

جلوگیری از مصرف سنگین RAM

مناسب برای پردازش جداول بزرگ

امن‌تر برای queue job ها و اسکریپتهای طولانی


اگه با دیتاست‌های بزرگ سروکار دارین lazy() یکی از ترفندهاییه که بهتره بشناسید.

#Laravel #LaravelTip #لاراول

@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1987135536189055477?t=qISIPBP7OR7Yxe41XToi-Q&s=35
👍73👎1
یکی از قابلیت‌های کمتر استفاده‌شده‌ ی مرورگرها، Web Speech API است که به شما این امکان رو میده متن رو با صدای طبیعی برای کاربر پخش کنید.

با متود زیر میتونید خیلی ساده به اپلیکیشن وبتون صدا اضافه کنید:

const msg = new SpeechSynthesisUtterance("سلام! این متن در مرورگر خوانده میشه.");
speechSynthesis.speak(msg);

📌 چطوری کار میکنه؟

این SpeechSynthesisUtterance یک شیء (Object) هستش که متن، سرعت، زبان و ... نگه میداره.

متود speechSynthesis.speak() همین شی را به موتور گفتار مرورگر میده و متن رو برای کاربر میخواند.

الان صفحه که لود بشه اون متنی ک نوشتید ،بصورت فایل صوتی پخش میشه .

📌 موارد استفادش:

ساخت نوتیفیکیشن‌ های صوتی در وب

دستیار های صوتی ساده

افزایش Accessibility

خواندن متن یا آموزش زبان برای کاربر

#Javanoscript #جاوااسکریپت #جاوا_اسکریپت

@GoldenCodeir 🔥
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/denicmarko/status/1989665993871036438?t=nr9Tyq5fblSYnQGZiR58mQ&s=19
👍5🔥21🥱1
در آپدیت جدید Laravel 12.39 یک ویژگی کاربردی به دستور route:list اضافه شده:

فلگ جدید --middleware

ازین به بعد میتونین روت‌ها رو بر اساس یک middleware مشخص فیلتر کنید.
یعنی برای دیباگ، بررسی امنیت یا پیدا کردن روت‌های اشتباه، دیگه نیازی به گشتن بین صدها روت نیست.

📌 مثال:
php artisan route:list --middleware=auth

نمایش فقط اون روت‌هایی که middleware آن‌ها auth است.

php artisan route:list --middleware=api

نمایش روت‌های مربوطه.

چرا مهمه؟

پیدا کردن سریع روت‌های مرتبط با یک middleware

دیباگ راحتتر

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


قابلیتی ساده اما بسیار مفید برای پروژه‌های بزرگ لاراولی

#Laravel #LaravelTip #لاراول

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/MrPunyapal/status/1991187285551788343?t=PtzZDme8H4Mu2P-GeP21DQ&s=35
👍154
سلام به همتون،

در حال حاضر امکان همکاری حضوری یا دورکار رو دارم. اگه مجموعه یا تیمی نیاز به همکاری داشت خوشحال میشم در ارتباط باشیم.❤️

راه ارتباطی و ارسال رزومه:
@Alixx242
11
Golden Code pinned «سلام به همتون، در حال حاضر امکان همکاری حضوری یا دورکار رو دارم. اگه مجموعه یا تیمی نیاز به همکاری داشت خوشحال میشم در ارتباط باشیم.❤️ راه ارتباطی و ارسال رزومه: @Alixx242»
نمایش داده‌ها به شکل جدول با console.table()

وقتی میخوای آرایه‌ها یا آبجکت‌های متعدد رو دیباگ کنی، console.log() همیشه خوانا نیست.
اما با console.table() میتونی داده‌ها رو مرتب، جدولی و بسیار خوانا ببینی. (در عکس قابل مشاهدست)

📌 مثال:

const users = [
{ name: "Ali", age: 25 },
{ name: "Sara", age: 30 }
];

console.table(users);

خروجی:
یک جدول تمیز شامل ستون های name و age.

کاربردهاش :

دیباگ سریع‌تر

مشاهده نتایج API

بررسی state در React/Vue

اگه تا حالا استفاده نکردی، حتما امتحانش کن :)

#JavaScript #js #جاوا_اسکریپت

@GoldenCodeir 🔥
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/denicmarko/status/1974822770476192190?t=msuLktjZp2a5rKegj1JdiA&s=35
👍7🔥31
Forwarded from Code Lab (Bahaedin)
🚀 چرا API کُند میشه؟

امروز می‌خوایم در مورد یه مشکل مشترک صحبت کنیم: کندی API.
چرا بعضی وقت‌ها API ما مثل لاک‌پشت رفتار می‌کنه؟ 🐢

۱. پایگاه داده (Database) – مقصر اصلی


کوئری‌های سنگین و بدون index
قفل شدن جدول‌ها (Table Locking)
ارتباطات زیاد با دیتابیس (N+1 Problem)

۲. معماری بد API


اندپوینت (Endpoint) هایی که کارهای زیادی انجام می‌دن!
عدم استفاده از Pagination برای داده‌های زیاد
پردازش‌های سنگین در خود API (مثلاً پردازش تصویر)

۳. مشکل در کش (Caching)


عدم استفاده از کش برای داده‌های تکراری
تنظیم نادرست زمان انقضای کش
کش کردن داده‌های بی‌فایده!

۴. منابع سرور (Server Resources)


منابع RAM کم
CPU overload شده
محدودیت پهنای باند (Bandwidth)

۵. شبکه (Network)


فاصلهٔ جغرافیایی بین کاربر و سرور
استفاده از هاستینگ ارزان‌قیمت و ضعیف
مشکل در CDN

۶. کدنویسی ضعیف


حلقه‌های بی‌پایان (Infinite Loops)
استفاده از الگوریتم‌های ناکارآمد (مثلاً O(n²))
مدیریت نادرست حافظه (Memory Leak)

💡 راه‌های حل مشکل:

برای دیتابیس: از indexها استفاده کن، کوئری‌هاتون رو بهینه کن.
برای معماری: از Microservices و Pagination کمک بگیر.
کش: Redis یا Memcached رو فراموش نکن!
مقیاس‌پذیری: سرور رو ارتقا بده یا از Load Balancer استفاده کن.
کد: پروفت رو با ابزارهایی مثل Py-Spy یا Blackfire آنالیز کن.

جمع‌بندی:
کندی API همیشه قابل حل‌ست، به شرطی که درست تشخیص بدی مشکل از کجاست!
یادت باشه: یه API سریع، هم کاربر رو خوشحال می‌کنه، هم موتورهای جستجو رو! 😉

پ.ن: تو اولین تجربه‌ات، چه چیزی باعث کندی API تو شده بود؟ زیر همین پست برامون بنویس! 👇
#baha #API
CODELAB | GpCodeLab
👍103
در نسخه‌های جدید لاراول، مدیریت تاریخ و زمان بسیار ساده‌تر شده.

متودهای plus() و minus()
// جمع کردن زمان
now()->plus(minutes: 5);
now()->plus(hours: 8);

// کم کردن زمان
now()->minus(days: 2);
now()->minus(weeks: 1);

مزیتش؟
خواناتر و استانداردتر از متدهای قدیمی مانند addHours() یا subDays() است.

توابع Interval
use function Illuminate\Support\minutes;

cache::put('metrics', $metrics, minutes(10));

📌 مزایا؟
● سریع و مختصر

● خواناتر نسبت به ساخت مستقیم CarbonInterval::minutes(10)

● قابل استفاده در هر جایی که DateInterval یا CarbonInterval قابل قبول باشه.

و Carbon حالا پشتیبانی کامل‌تری از جمع و تفریق واحدهای زمانی مثل دقیقه، ساعت، روز، هفته، ماه و سال دارد.
#Laravel #LaravelTip #Laravel_tip #لاراول

@GoldenCodeir 🔥
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/MrPunyapal/status/1994095099178045903?t=b8N9eTPiAKq3r-YlVph8Rg&s=35
👍10🔥31