Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Golden Code avatar

Golden Code

نکات laravel, php و...
Рейтинг TGlist
0
0
ТипПублічний
Верифікація
Не верифікований
Довіреність
Не надійний
Розташування
МоваІнша
Дата створення каналуСіч 17, 2024
Додано до TGlist
Лист 03, 2024
Прикріплена група

Останні публікації в групі "Golden Code"

اگر یک 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
در لاراول ۱۲، یه متود جدیدی به نام pipe() به query builder اضافه شده. این متود به شما این امکان رو میده که تغییرات مختلفی مثل فیلتر کردن، مرتب‌سازی یا هر چیزه دیگه‌ای رو به راحتی به query تون اضافه کنین، بدون اینکه نیازی به نوشتن کد پیچیده و طولانی باشه.

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

مثلا می‌تونیم منطق یک فیلتر رو یه بار بنویسیم و در بخش‌های مختلف پروژه از همون یک منطق استفاده کنیم.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/jordankdalton/status/1905311519014789464?t=Jxnq3qqNdlyITwe2V-mUyA&s=19
در لاراول میتونیم بجای استفاده از whereIn برای جستجو در مجموعه‌ای از مقادیر، از whereKey استفاده کنیم تا کدی تمیزتر و ساده تر داشته باشیم. این روش بطور خودکار از ID مدل‌ها استفاده میکنه.

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

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

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

#Laravel
@GoldenCodeir

https://x.com/Akr4mKhan/status/1903493801030909990?t=-sVOBYg54lj1MzJpHh1hkQ&s=35
در دیتابیس مفهومه ACID چیه؟

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

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

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

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

@GoldenCodeir
در لاراول 12، ویژگی جدیدی به نام NamedScope اضافه شده که به ما این امکان رو میده که query scope ها رو بدون نیاز به پیشوند scope تعریف کنیم.

( یعنی می‌تونیم نام متودها رو به طور مستقیم و ساده‌تر بنویسیم. )
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/jordankdalton/status/1902502113659273313?t=GA_f4AoLSdNqQJ_FPXfj4A&s=19
وقتی از دستور "%LIKE "%fo برای جستجو استفاده می‌کنیم، درین شرایط دیتابیس باید تمام اطلاعات رو برامون بررسی کنه که خب باعث میشه سرعت پایین بیاد. راه بهتر برای جستجوی سریعتر استفاده از full-text هستش.

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

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

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

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

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

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

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

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

@DevTwitter |
در لاراول میتونیم از متودهایی مثل throwIfStatus برای مدیریت خودکار خطاهامون در هنگام ارسال request به API استفاده کنیم.

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

(من فقط یکی ازین متودارو گفتم، مابقیش و چگونگیه استفاده ازین دسته متود ها در تصویر ذکر)
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1898800422476788177?t=sQquSOys96KZAxj7UNeTlQ&s=1
در MySQL میتونیم با استفاده از Table Partitioning جداول بزرگمونو به بخش‌های کوچکتر تقسیم کنیم.

فایدش چیه؟؟
این کار query performance رو خیلی میتونه بهینه تر کنه برامون.


مثلا اگه جدول فروشمون خیلی بزرگ باشه و دیتاش شامل تاریخ فروش باشه، میتونیم جدولمونو بر اساس سال پارتیشن‌بندی کنیم و خب اینطوری وقتی بخوایم دیتاهای یه سال خاصی رو جستجو کنیم، فقط بخش مربوط به همون یه سال بررسی میشه که خب باعث میشه فرایند جستوجو سرعتش بهینه تر بشه.
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1890023138622116289?t=bgrX4CCiL7eaLwpI9CAdYw&s=35
یکمی هم طنز بریم😂❤️
متود emailOutputOnFailure در لاراول به ما این امکان رو میده که اگه یک Command دچار خطا شد، خروجی خطا بطور خودکار به ایمیلمون ارسال بشه.

مثلا چی؟
وقتی یک عملیات API با مشکل مواجه میشه، به جای بررسی لاگ‌ها، خیلی سریع ازین موضوع مطلع میشیم!
این متود در شناسایی و حل سریع مشکلات میتونه مفید واقع بشه.
#laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1848448292037746738?s=19
🔥 آموزش Broadcasting توی لاراول (با مثال) 🔥

رفقا، امروز می‌خوایم بریم سراغ یه قابلیت خف ن تو لاراول به اسم Broadcasting! با این قابلیت می‌تونین یه‌سری رویدادها رو زنده (real-time) برای کاربرهاتون بفرستین. یعنی مثلاً تو چت آنلاین، اعلان‌های لحظه‌ای یا هر چیز دیگه که لازمه سریع به کاربر برسه، این خیلی کارآمده. 😎

خب بریم ببینیم چجوری می‌تونیم این کار رو انجام بدیم! 👇

قبل از هرچیزی باید Broadcasting رو تو پروژه‌تون راه بندازین. توی فایل .env، بیاین و Broadcasting رو روی سرویس Pusher تنظیم کنیم. البته می‌تونین Redis یا Socket.io هم استفاده کنین، ولی اینجا با Pusher می‌ریم جلو. 💻

تو فایل .env اینا رو اضافه کنین:

BROADCAST_DRIVER=pusher

بعدش باید کتابخونه pusher رو نصب کنین:
composer require pusher/pusher-php-server

حالا میریم سراغ تنظیمات بیشتر!
بعد از تنظیمات اولیه، باید یه سری کانفیگ توی فایل config/broadcasting.php انجام بدیم. تو این فایل، Pusher رو به عنوان درایور انتخاب کنید:
'connections' => [

حالا وقتشه یه ایونت درست کنیم! با دستور زیر یه ایونت به اسم MessageSent می‌سازیم:

php artisan make:event MessageSent

این دستور یه کلاس توی پوشه app/Events می‌سازه. حالا بیاین تو این فایل کد زیر رو اضافه کنیم:
class MessageSent implements ShouldBroadcast

تو این مثال، وقتی یه پیغام ارسال می‌شه، ما این ایونت رو برای کانال chat broadcast می‌کنیم. ✉️
حالا باید توی کدی که داریم، ایونت رو بفرستیم. مثلاً توی کنترلر:

event(new MessageSent('سلام! این یه پیام لایو از طرف علیرضا هست'));

این کد باعث می‌شه که پیغام به صورت real-time بره برای کسایی که تو کانال chat عضو هستن. 💬
برای اینکه از طرف کاربرها پیام‌ها رو دریافت کنیم، باید توی سمت فرانت هم یه سری تنظیمات انجام بدیم. اگه از Vue.js یا React استفاده می‌کنین، می‌تونین از Laravel Echo استفاده کنین که کدتون رو خیلی راحت‌تر و تمیزتر می‌کنه.

اول laravel-echo و pusher-js رو نصب کنین:

npm install --save laravel-echo pusher-js

بعد توی فایل جاوااسکریپت‌تون، چیزی مثل این رو تنظیم کنین:
import Echo from "laravel-echo";

به همین راحتی! وقتی پیامی ارسال بشه، شما اون رو از طریق جاوااسکریپت توی مرورگر می‌گیرید و می‌تونید هر کاری که می‌خواید باهاش انجام بدید! 😍
خلاصه اگه یه اپلیکیشن دارین که نیاز به رویدادهای زنده داره، Broadcasting تو لاراول می‌تونه بهترین راه‌حل باشه. با استفاده از Pusher و Laravel Echo، کارتون خیلی سریع و تمیز انجام می‌شه.

سوالی داشتین تو کامنت‌ها بپرسین! 😁

🔥⚡️ کانال آموزشی LaravelHub
@LaraveHub
در لاراول، میتونیم یک متود ماکرو به نام response()->api() بسازیم که response های JSON رو ساده‌تر کنه !

این کار به ما کمک میکنه تا تمام response ها یک فرمت مشخص داشته باشن و دیتایی مثل message و status رو به راحتی اضافه کنیم.
با این متود کدمون منظم‌تر و مدیریتش هم راحت‌تر میشه، response ها ساختاره مشخصی دارن و همچنین میتونه در کاهش خطاها کمک کنه.
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/_newtonjob/status/1846642149766713372?t=lpRqAAcK8krM_ngIIS1MDQ&s=35
در لاراول وقتی scheduled tasks تعریف میکنین میتونید از دو تابع زیر برای مدیریت نتایج کمک بگیرید که خب باعث میشه در برابر وضعیت تسک هامون اقدامات مرتبط رو به خوبی بتونیم پیاده کنیم.

onSuccess():
اگه task با موفقیت انجام شه این تابع اجرا میشه و میتونید کارهایی مثل ثبت لاگ یا ارسال نوتیفیکیشن و... انجام بدید.

onFailure():
اگر هم تسک با خطا مواجه بشه این تابع اجرا میشه و میتونید عملیات هایی مثل ارسال ایمیل به ادمین یا ثبت خطا رو انجام بدید.
#laravel
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://x.com/laravelbackpack/status/1842527664109965708?t=jW6mq8pujDOiYX00Ls6UYg&s=19

Рекорди

04.04.202523:59
562Підписників
31.03.202523:59
700Індекс цитування
18.03.202500:22
650Охоплення 1 допису
27.03.202515:55
637Охоп рекл. допису
03.04.202518:15
9.06%ER
18.03.202500:22
123.11%ERR

Розвиток

Підписників
Індекс цитування
Охоплення 1 допису
Охоп рекл. допису
ER
ERR
ЛИСТ '24ГРУД '24СІЧ '25ЛЮТ '25БЕР '25КВІТ '25

Популярні публікації Golden Code

01.04.202519:44
اگر یک 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
23.03.202517:11
در دیتابیس مفهومه ACID چیه؟

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

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

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

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

@GoldenCodeir
30.03.202519:26
در لاراول ۱۲، یه متود جدیدی به نام pipe() به query builder اضافه شده. این متود به شما این امکان رو میده که تغییرات مختلفی مثل فیلتر کردن، مرتب‌سازی یا هر چیزه دیگه‌ای رو به راحتی به query تون اضافه کنین، بدون اینکه نیازی به نوشتن کد پیچیده و طولانی باشه.

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

مثلا می‌تونیم منطق یک فیلتر رو یه بار بنویسیم و در بخش‌های مختلف پروژه از همون یک منطق استفاده کنیم.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/jordankdalton/status/1905311519014789464?t=Jxnq3qqNdlyITwe2V-mUyA&s=19
26.03.202519:41
در لاراول میتونیم بجای استفاده از whereIn برای جستجو در مجموعه‌ای از مقادیر، از whereKey استفاده کنیم تا کدی تمیزتر و ساده تر داشته باشیم. این روش بطور خودکار از ID مدل‌ها استفاده میکنه.

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

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

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

#Laravel
@GoldenCodeir

https://x.com/Akr4mKhan/status/1903493801030909990?t=-sVOBYg54lj1MzJpHh1hkQ&s=35
Увійдіть, щоб розблокувати більше функціональності.