در لاراول، میتونیم یه ستونی که دیتای JSON داره رو به راحتی به یک آرایه PHP تبدیل کنیم. این کار فقط با نوشتن یک خط کد در مدل انجام میشه و نیازی به تبدیل دستی دیتامون نداریم.
مثال؟؟
فرض کنیم یه جدول داریم که در اون یک ستون به نام settings داریم که دیتای JSON داره. برای تبدیل خودکار این دادهها به آرایه PHP، باید این خط کد رو در مدل بنویسیم:
حالا وقتی دیتارو از دیتابیس میخونیم، ستون settings به صورت خودکار به یک آرایه PHP تبدیل میشه و میتونیم ازون مانند هر آرایه دیگه ای استفاده کنیم:
@GoldenCodeir 🔥
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1915730028014546980?t=Ke92_xZaGJL7cJVBdgKZxA&s=19
مثال؟؟
فرض کنیم یه جدول داریم که در اون یک ستون به نام 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💯2❤1
Forwarded from DevTwitter | توییت برنامه نویسی
اگر از Git استفاده میکنید، احتمالاً با gitignore. آشنا هستید. ولی یه فایل دیگه هم هست به اسم exclude
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون کنن. خودش هم commit میشه و داخل repo میمونه.
exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایدهآله برای فایلهایی که فقط خودت نمیخوای track بشن، بدون اینکه توی repo دیده بشن.
پس اگر فایل لوکال خاصی داری و نمیخوای توی gitignore. بذاری، برو سراغ exclude
@DevTwitter | <Amir Mohammad Rezvaninia/>
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون کنن. خودش هم commit میشه و داخل repo میمونه.
exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایدهآله برای فایلهایی که فقط خودت نمیخوای track بشن، بدون اینکه توی repo دیده بشن.
پس اگر فایل لوکال خاصی داری و نمیخوای توی gitignore. بذاری، برو سراغ exclude
@DevTwitter | <Amir Mohammad Rezvaninia/>
👍8❤2🆒2🔥1
چجوری شت کد بنویسیم؟؟
1. هیچ قانونی نداشته باش!
بذار هرکی هرجوری دلش خواست کد بزنه.
2. کیفیت؟ این دیگه چه مزخرفیه؟
فقط سریع باش! وقتت رو حرومه بررسی و تست نکن. هرچی زودتر تحویل بدی بهتره!
3. امنیت؟ ولش کن!
هرکی اومد، همه چی رو بهش بده. رمز نمیخواد، ورود نمیخواد، اعتبارسنجی؟ چی هست اصن؟ همه چیز آزاده! چرا سخت میگیری
4. کد تکراری ؟ اشکال نداره!
یه تیکه کد نوشتی؟ صدبار کپیش کن توو جاهای مختلف. چرا زحمت بکشی تابع درست کنی؟
5. به سرعت لاکپشت وفادار باش!
نه کشی، نه بهینهسازی، نه تست عملکرد. بذار برنامت در حد اینترنت دایل آپ اجرا بشه!
6. کیفیت برای دیگران؟ نه بابا!
فقط رو سیستم خودت تست کن اونم فقط با chrome. اگه کسی با سیستم یا مرورگره دیگهای وارد شد، مشکل خودشونه! شما که خودت همه چیز رو دیدی!
7. پروژهتو توی غار بنویس!
نه فیدبک بگیر، نه دمو بده...
8. نظارت؟ حسش نیس!
صبر کن کاربر خودش زنگ بزنه و بگه: «سایتتون به فنا رفته!» بعد تازه بپرسی: چی دیدی؟ چه اروری بود؟ چی زدی؟!
و...
📌 اگه میخوای یه نرمافزار ضعیف بسازی، فقط کافیه این دستورالعملها همیشه اولویتت باشه!
ولی اگه میخوای حرفهای باشی، باید دقیقاً برعکس اینارو انجام بدی.
@GoldenCodeir
(به منبع دقت کنید👇🏾)
https://x.com/housecor/status/1916897024131072408?s=35
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
--بند های قرارداد به شرایط و ضوابط خودتون بستگی داره.مثلاً اینکه چند درصد از مبلغ طراحی سایت رو می خواید اول بگیرید، یا اینکه چه خدمات پشتیبانی می خواید ارائه بدید یا ندید. شرایط فسخ قرارداد چی هست. نمونه قرارداد رو می تونید از اینترنت دانلود کنید و بر اساس شرایط خودتون یا مجموعه تغییر بدید.من فقط ساختار قرارداد رو بهتون میگم.
-- بخش اولیه قرارداد مربوط به مشخصات طرفین هست
1- مشخصات مجری (شما)
2- مشخصات کارفرما
3- مبلغ قرارداد
4- شرایط پرداخت (پیش پرداخت و تسویه کامل)
5- نحوه پرداخت
-- بخش بعدی قرارداد شروع پروژه هست
1- مدت زمان طراحی رو مشخص می کنید
2- زمان آغاز پروژه به چه صورت محاسبه میشه
3- کارفرما چه تعهداتی برای شروع پروژه داره
-- بخش سوم فرایند اجرا و تکمیل پروژه
این به شرایط کاری شما بستگی داره که چجوری می خواید پروژه رو اجرا کنید
-- در ادامه خدمات پشتیبانی فنی رایگان (بسیار مهم در قرارداد)
خدماتی که حالا به مدت هر چقدر که مد نظرتون هست رو داخل این ماده و شامل بند های مختلف بیارید. حواستون باشه چه خدماتی ارائه می دید یه موقع به هر دلیل شونه خالی نکنید از این خدمات.حتماً دچار مشکل میشید.
-- خدماتی که شامل پشتیبانی رایگان نمی شود(بسیار بسیار مهم)
تمامی مواردی که شامل خدمات رایگان شما نمیشه رو ذکر کنید. این بخش خیلی مهمه و اگر کامل ذکر نشه بعدا با کارفرما حتما دچار مشکل میشید.(مثلاً یک مورد برای من طراحی لوگو جز خدمات رایگان نیست)
-- بخش بعدی ویدیو آموزشی (من بعد از اتمام کار یه سری موارد رو به کارفرما برای ویرایش سایت آموزش میدم.)
--ماده بعدی (تعهدات طرفین- مجری و کارفرما) بسیار بسیار مهم
تمام تعهداتی که شما باید به کارفرما باید بدید و همچنین تعهداتی که از کارفرما انتظار دارید اینجا ذکر کنید. خیلی مهم هست اگر کامل نباشه یا نقص داشته باشه، حین پروژه و در مدت اجرای پشتیبانی و اتمام کار می تونه مشکل ساز باشه)
-- ماده های پایانی قرارداد هم شامل حل اختلاف (می تونه نباشه در قرارداد) | شرایط فسخ قرارداد (مهم هست) از هر دو طرف قرارداد و همچنین فورس ماژور می باشد.
-- در آخر قرارداد باید در تاریخ مشخص به امضای طرفین برسه و تمامی صفحات قرارداد در 2 نسخه توسط مجری و کارفرما امضا بشه.
--در پایان اینکه ساختار قرارداد به این صورت باشه..ولی بند های اون به خودتون بستگی داره. سعی کنید بالانس رو در قرارداد رعایت کنید نه طوری باشه که کارفرما عملاً هیچ حق و حقوقی نداشته باشه و نه اونقد سبک که کارفرما هر درخواستی بعد از شروع کار بهتون بگه. موفق باشید
</Farshad Zarrin>
#وردپرس
@TheRaymondDev
Linkedin
#پروژه #طراحی_سایت #قرارداد #کار | Farshad Zarrin | 28 comments
اگر بصورت فریلسنری کار می کنید یا حتی یک مجموعه کوچیک در حوزه طراحی سایت هستید داشتن یک قرارداد سفت و محکم که تمامی بخش ها در اون ذکر شده الزامی هست.من اون اوایل که خودم شروع کار کردم قراردادی با کارفرما نمی بستم و صرف صحبت و اعتماد باهم کار می کردیم. بیشتر…
❤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
ویژگی 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
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
X (formerly Twitter)
javinpaul (@javinpaul) on X
10 Best System Design Topics Developers Should Learn in 2025
1. Caching
2. Sharding
3. load-balancing
4. replication
5. fault-tolerance
6. high-availability
7. Concurrency
8. scalability
9. Performance
10. Indexing
learn more on DesignGuru - https://t.co/VuZLWnBFWY
1. Caching
2. Sharding
3. load-balancing
4. replication
5. fault-tolerance
6. high-availability
7. Concurrency
8. scalability
9. Performance
10. Indexing
learn more on DesignGuru - https://t.co/VuZLWnBFWY
👍6❤2🔥1
رفقایی ک لینکدین دارید، اگه تونستین مهندس فریدون(که خیلیاتون میشناسینش) رو چند ثانیه وقت بذارین جهت حمایت به این شکل 👑❤️👇🏾
https://www.linkedin.com/posts/fererydoon-salemi_%D8%AF%D9%88%D8%B3%D8%AA%D8%A7%D9%86-%D8%B9%D8%B2%DB%8C%D8%B2-%D8%A7%DA%AF%D8%B1-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%87%D9%85%DA%A9%D8%A7%D8%B1%DB%8C-%DB%8C%D8%A7-%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%81%D9%86%DB%8C-activity-7326670073534844929-xn2F?utm_source=social_share_send&utm_medium=android_app&rcm=ACoAACtoqKYB5Pk8cjIxolPHpdjShKtRL0tcolQ&utm_campaign=copy_link
Linkedin
دوستان عزیز
اگر تجربه همکاری یا تعامل فنی با من داشتید و مهارت من در… | fereydoon salemi
اگر تجربه همکاری یا تعامل فنی با من داشتید و مهارت من در… | fereydoon salemi
دوستان عزیز
اگر تجربه همکاری یا تعامل فنی با من داشتید و مهارت من در Laravel یا Node.js رو تأیید میکنید، خوشحال میشم این دو مورد رو در پروفایلم در لینکدین endorse کنید.
ممنون از حمایتتون!
Dear connections,
If we've worked together and you can confirm…
اگر تجربه همکاری یا تعامل فنی با من داشتید و مهارت من در Laravel یا Node.js رو تأیید میکنید، خوشحال میشم این دو مورد رو در پروفایلم در لینکدین endorse کنید.
ممنون از حمایتتون!
Dear connections,
If we've worked together and you can confirm…
❤4
"چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده
✅ استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه
✅ بهینهسازی دیتابیس: تعریف Index مناسب
استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید
✅ استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه
✅ استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای
✅ ۵. استفاده از Redis یا Kafka
برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه
✅ بهینه سازی کد PHP و مصرف حافظه
استفاده از cursor() بهجای بارگذاری کل دیتا
جلوگیری از لوپهای سنگین و غیرضروری
نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "
#Laravel
@GoldenCodeir
(به منبع توجه کنید👇🏾)
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده
✅ استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه
✅ بهینهسازی دیتابیس: تعریف Index مناسب
استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید
✅ استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه
✅ استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای
✅ ۵. استفاده از Redis یا Kafka
برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه
✅ بهینه سازی کد PHP و مصرف حافظه
استفاده از cursor() بهجای بارگذاری کل دیتا
جلوگیری از لوپهای سنگین و غیرضروری
نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "
#Laravel
@GoldenCodeir
(به منبع توجه کنید👇🏾)
https://www.linkedin.com/posts/fererydoon-salemi_laravel-php-backenddevelopment-activity-7327385475915128832-DtQB?utm_source=share&utm_medium=member_android&rcm=ACoAACtoqKYB5Pk8cjIxolPHpdjShKtRL0tcolQ
Linkedin
#laravel #php #backenddevelopment #performance #scalability #queues #databaseoptimization #horizon | Fereydoon Salemi
تو مسیر که داشتم می اومدم یه پست دیدم که تا خواستم جواب بدم صفحه رفرش شد و رفت
دوستی که این سوال رو پرسیده بودی، امیدارم جوابش رو ببینی
چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور…
دوستی که این سوال رو پرسیده بودی، امیدارم جوابش رو ببینی
چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور…
👍7❤2🔥1👏1
این Elasticsearch چیه و چرا محبوبه؟
یه موتور جستجو open source، real-time و بسیار سریعه که برای جستجو در دیتاهای حجیم و پیچیده طراحی شده.
برخلاف دیتابیسهای سنتی مثل MySQL، Elasticsearch برای جستجوی متنی (Full-Text Search) بهینه شده و از الگوریتمهای بسیار پیشرفتهای مثل تحلیل ریشهی کلمات (stemming)، تطبیق تقریبی (fuzzy)، و جستجوی وزنی (scoring) استفاده میکنه.
📌 چرا Elasticsearch ؟
لاراول با Eloquent و Query Builder در کار با دیتابیس بسیار خوب عمل میکنه، ولی وقتی نیاز به جستجوی پیچیده، سریع و حرفهای دارین، مثلا:
•جستجو در مقالات، محصولات یا کاربران با قابلیت auto-complete
•رتبهبندی نتایج جستجو
•فیلترهای ترکیبی و تحلیلی (مثل قیمت، دستهبندی، برند و…)
اونجاست که Elasticsearch وارد میشه.✅️
پس اگه دنبال جستجوی حرفهای و مقیاسپذیر هستین، Elasticsearch میتونه مکمل قدرتمندی برای دیتابیستون باشه!
#Elasticsearch
@GoldenCodeir
یه موتور جستجو open source، real-time و بسیار سریعه که برای جستجو در دیتاهای حجیم و پیچیده طراحی شده.
برخلاف دیتابیسهای سنتی مثل MySQL، Elasticsearch برای جستجوی متنی (Full-Text Search) بهینه شده و از الگوریتمهای بسیار پیشرفتهای مثل تحلیل ریشهی کلمات (stemming)، تطبیق تقریبی (fuzzy)، و جستجوی وزنی (scoring) استفاده میکنه.
📌 چرا Elasticsearch ؟
لاراول با Eloquent و Query Builder در کار با دیتابیس بسیار خوب عمل میکنه، ولی وقتی نیاز به جستجوی پیچیده، سریع و حرفهای دارین، مثلا:
•جستجو در مقالات، محصولات یا کاربران با قابلیت auto-complete
•رتبهبندی نتایج جستجو
•فیلترهای ترکیبی و تحلیلی (مثل قیمت، دستهبندی، برند و…)
اونجاست که Elasticsearch وارد میشه.✅️
پس اگه دنبال جستجوی حرفهای و مقیاسپذیر هستین، Elasticsearch میتونه مکمل قدرتمندی برای دیتابیستون باشه!
#Elasticsearch
@GoldenCodeir
❤6🔥3
در لاراول وقتی از متود collect() استفاده میکنیم، آرایه معمولی رو به یک آبجکت از کلاس Collection تبدیل میکنیم.
در واقع Collection ها ابزاری هستن که امکانات زیادی برای پردازش دیتا به ما میدن و کار با دیتارو سادهتر، خواناتر و تمیزتر میکنند.
مثال:
درین مثال، آرایهای که داشتیم رو به یک Collection تبدیل کردیم و بعد با استفاده از متود filter فقط اعداد زوج رو پیدا کردیم.
مزایای استفاده از Collections :
کد شما تمیزتر و قابل فهمتر میشه.
میتونین چندین عملیات رو به راحتی پشت سر هم انجام بدین.
متودهای مفیدی مثل map، filter، pluck، groupBy، reduce و دهها مورد دیگه برای اعمال تغییر بر دیتا وجود دارن که خیلی کار رو راحت میکنند.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1923702549015822611?s=
در واقع Collection ها ابزاری هستن که امکانات زیادی برای پردازش دیتا به ما میدن و کار با دیتارو سادهتر، خواناتر و تمیزتر میکنند.
مثال:
$array = [1, 2, 3, 4, 5];
$collection = collect($array);
// حالا میتونیم از متدهای مختلفی مثل filter، map، reduce و غیره استفاده کنیم:
$even = $collection->filter(function ($value) {
return $value % 2 === 0; // فقط اعداد زوج رو برمیگردونه
});
dd($even->all()); // خروجی: [2, 4]
درین مثال، آرایهای که داشتیم رو به یک Collection تبدیل کردیم و بعد با استفاده از متود filter فقط اعداد زوج رو پیدا کردیم.
مزایای استفاده از Collections :
کد شما تمیزتر و قابل فهمتر میشه.
میتونین چندین عملیات رو به راحتی پشت سر هم انجام بدین.
متودهای مفیدی مثل map، filter، pluck، groupBy، reduce و دهها مورد دیگه برای اعمال تغییر بر دیتا وجود دارن که خیلی کار رو راحت میکنند.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1923702549015822611?s=
👍6❤2
این PSR چیه و چرا باید برات مهم باشه؟
اگه PHP کار میکنی و میخوای کدت حرفهای باشه باید با PSR (PHP Standard Recommendation) آشنا بشی.
این استانداردها توسط گروه PHP-FIG تعریف شدن تا کدنویسی بین فریمورکها و توسعهدهندهها هماهنگ باشه.
چرا PSR مهمه؟
خوندن و درک کد رو آسونتر میکنه
همکاری در تیمها رو راحتتر میکنه
تغییر، توسعه و دیباگ راحتتر انجام میشه
استفاده از کتابخونههای استاندارد رو سادهتر میکنه
📌 مهمترین PSRها که نیازه بشناسی:
* PSR-1:
اصول پایه مثل نامگذاری کلاسها و فایلها
* PSR-2 / PSR-12:
سبک نوشتن تمیز کد (Formatting)
* PSR-3:
استاندارد لاگگیری در PHP
* PSR-4:
یعنی Autoloading کلاسها با استفاده از namespace
* PSR-6 / PSR-16:
کش کردن دادهها بهصورت استاندارد
* PSR-7:
مدیریت Request/Response برای اپلیکیشنهای وب
* PSR-11:
استاندارد Container برای Dependency Injection
* PSR-14:
سیستم Event Dispatcher (رویدادها و listenerها)
مثال PSR-4:
composer.json:
خلاصه که اگه میخوای برنامهنویس PHP حرفهای باشی، یادگیری PSR اجباره و نه یک انتخاب.❤️🔥
@GoldenCodeir
اگه PHP کار میکنی و میخوای کدت حرفهای باشه باید با PSR (PHP Standard Recommendation) آشنا بشی.
این استانداردها توسط گروه PHP-FIG تعریف شدن تا کدنویسی بین فریمورکها و توسعهدهندهها هماهنگ باشه.
چرا PSR مهمه؟
خوندن و درک کد رو آسونتر میکنه
همکاری در تیمها رو راحتتر میکنه
تغییر، توسعه و دیباگ راحتتر انجام میشه
استفاده از کتابخونههای استاندارد رو سادهتر میکنه
📌 مهمترین PSRها که نیازه بشناسی:
* PSR-1:
اصول پایه مثل نامگذاری کلاسها و فایلها
* PSR-2 / PSR-12:
سبک نوشتن تمیز کد (Formatting)
* PSR-3:
استاندارد لاگگیری در PHP
* PSR-4:
یعنی Autoloading کلاسها با استفاده از namespace
* PSR-6 / PSR-16:
کش کردن دادهها بهصورت استاندارد
* PSR-7:
مدیریت Request/Response برای اپلیکیشنهای وب
* PSR-11:
استاندارد Container برای Dependency Injection
* PSR-14:
سیستم Event Dispatcher (رویدادها و listenerها)
مثال PSR-4:
namespace App\Controllers;
class UserController {
public function index() {
echo "User index page";
}
}
composer.json:
"autoload": {
"psr-4": {
"App\\": "src/"
}
}خلاصه که اگه میخوای برنامهنویس PHP حرفهای باشی، یادگیری PSR اجباره و نه یک انتخاب.❤️🔥
@GoldenCodeir
👍7🔥5❤1
معرفی Laravel Pulse – ابزار مانیتورینگ ساده و حرفهای برای پروژههای لاراول
این Laravel Pulse یک ابزار سبک، real-time و کاملاً یکپارچه با فریمورک Laravel هستش که به برنامه نویسا این کمک میکند تا عملکرد، سلامت و مشکلات داخلیه اپ رو بهصورت real time مانیتور کنند.
برخلاف ابزارهای سنگینتر مثل Telescope یا سرویس هایی مثل Sentry یا New Relic، هدف Pulse ارائه ی یک تجربه ساده و سریع برای مانیتورینگ در محیطهای production و development است.
📌ویژگیهاش چیه؟
مانیتورینگ real-time برای request ها، ارورها، query های کند و queue
داشبورد سبک مینیمال و قابل فهم
نصب سریع و راهاندازی آسون با چند کامند
قابلیت توسعهپذیری با Custom Event ها
مناسب برای محیطهای production بدون تاثیر محسوس بر performance
📌 موارد قابل مشاهده در داشبوردش چیه؟؟
تعداد request ها و وضعیت اونا
کوئریهای کند و زمان اجراشون
ارورهای گزارش شده در زمان اجرا
صفهای در حال اجرا
عملکرد کش و تعامل با دیتابیس
📌نصب و راهاندازیش چجوریه؟؟
بعده نصب، داشبورد Pulse از طریق مسیر /pulse در دسترستونه.
خلاصه که اگه دنبال مانیتورینگ مؤثر و بدون پیچیدگی هستین، Pulse یک انتخاب عالیه.
#Laravel
@GoldenCodeir
این Laravel Pulse یک ابزار سبک، real-time و کاملاً یکپارچه با فریمورک Laravel هستش که به برنامه نویسا این کمک میکند تا عملکرد، سلامت و مشکلات داخلیه اپ رو بهصورت real time مانیتور کنند.
برخلاف ابزارهای سنگینتر مثل Telescope یا سرویس هایی مثل Sentry یا New Relic، هدف Pulse ارائه ی یک تجربه ساده و سریع برای مانیتورینگ در محیطهای production و development است.
📌ویژگیهاش چیه؟
مانیتورینگ real-time برای request ها، ارورها، query های کند و queue
داشبورد سبک مینیمال و قابل فهم
نصب سریع و راهاندازی آسون با چند کامند
قابلیت توسعهپذیری با Custom Event ها
مناسب برای محیطهای production بدون تاثیر محسوس بر performance
📌 موارد قابل مشاهده در داشبوردش چیه؟؟
تعداد request ها و وضعیت اونا
کوئریهای کند و زمان اجراشون
ارورهای گزارش شده در زمان اجرا
صفهای در حال اجرا
عملکرد کش و تعامل با دیتابیس
📌نصب و راهاندازیش چجوریه؟؟
composer require laravel/pulse
php artisan pulse:install
php artisan migrate
php artisan pulse:serve
بعده نصب، داشبورد Pulse از طریق مسیر /pulse در دسترستونه.
خلاصه که اگه دنبال مانیتورینگ مؤثر و بدون پیچیدگی هستین، Pulse یک انتخاب عالیه.
#Laravel
@GoldenCodeir
❤6🔥2🏆1
Forwarded from Anophel | آنوفل
در PHP 8.1 و بالاتر، میتوان از Enum ها برای تعریف مجموعهای از ثابتها که با هم مرتبط هستند استفاده کرد. Enum (مخفف Enumeration) یک نوع داده خاص است که شامل مجموعهای از مقادیر ثابت و از پیش تعریفشده است. این مقادیر معمولاً با هم مرتبط هستند و به یک مفهوم خاص اشاره میکنند. به عنوان مثال، میتوان برای وضعیتهای مختلف یک سفارش (مانند "در انتظار"، "در حال پردازش"، "ارسال شده" و غیره) یک Enum تعریف کرد.
کی از Enum استفاده کنیم؟
تعریف مجموعهای از مقادیر ثابت و مرتبط: زمانی که مجموعهای از مقادیر ثابت وجود دارد که با هم مرتبط هستند و نیاز به مدیریت آنها دارید، میتوان از Enum استفاده کرد. مانند وضعیتهای مختلف یک سفارش، روزهای هفته، ماههای سال و غیره.
خوانایی و نگهداری بهتر کد: استفاده از Enum به کد شما خوانایی بیشتری میبخشد و همچنین از خطاهای ناشی از استفاده نادرست از مقادیر جلوگیری میکند.
جلوگیری از استفاده نادرست از مقادیر: وقتی که مقادیر ثابت را به صورت Enum تعریف میکنید، کامپایلر یا مفسر برنامه در برابر استفاده نادرست از این مقادیر به شما هشدار میدهد یا مانع از آن میشود.
کاهش استفاده از "عددهای جادویی": استفاده از Enum به جای اعداد یا رشتههای ثابت پراکنده در کد، باعث میشود که کد تمیزتر و قابل فهمتر باشد.
در اینجا یک مثال از یک Enum برای وضعیتهای یک سفارش در یک سیستم خرید آورده شده است.
ویژگیهای Enum در PHP:
1. تعریف به صورت Enum : Enum ها با استفاده از کلمه کلیدی enum تعریف میشوند.
2. مقادیر ثابت: Enum ها مجموعهای از مقادیر ثابت را تعریف میکنند که با هم مرتبط هستند.
3. پشتیبانی از انواع داده: Enum ها میتوانند انواع دادهای مختلف مثل string یا int را به عنوان مقدار خود داشته باشند.
4. قابلیت استفاده در توابع: Enum ها میتوانند به عنوان پارامتر به توابع و متدها ارسال شوند.
5. سازگاری با Match Expression: از match expression میتوان برای پردازش مقادیر Enum استفاده کرد.
6. تعریف متدها: میتوان متدهایی را در داخل Enum تعریف کرد که به مقادیر آن مرتبط هستند.
من در Anophel آنوفل بیشتر به این موضوع پرداختم لینک مقاله :
لینک مقاله
#لاراول #php
کی از Enum استفاده کنیم؟
تعریف مجموعهای از مقادیر ثابت و مرتبط: زمانی که مجموعهای از مقادیر ثابت وجود دارد که با هم مرتبط هستند و نیاز به مدیریت آنها دارید، میتوان از Enum استفاده کرد. مانند وضعیتهای مختلف یک سفارش، روزهای هفته، ماههای سال و غیره.
خوانایی و نگهداری بهتر کد: استفاده از Enum به کد شما خوانایی بیشتری میبخشد و همچنین از خطاهای ناشی از استفاده نادرست از مقادیر جلوگیری میکند.
جلوگیری از استفاده نادرست از مقادیر: وقتی که مقادیر ثابت را به صورت Enum تعریف میکنید، کامپایلر یا مفسر برنامه در برابر استفاده نادرست از این مقادیر به شما هشدار میدهد یا مانع از آن میشود.
کاهش استفاده از "عددهای جادویی": استفاده از Enum به جای اعداد یا رشتههای ثابت پراکنده در کد، باعث میشود که کد تمیزتر و قابل فهمتر باشد.
در اینجا یک مثال از یک Enum برای وضعیتهای یک سفارش در یک سیستم خرید آورده شده است.
ویژگیهای Enum در PHP:
1. تعریف به صورت Enum : Enum ها با استفاده از کلمه کلیدی enum تعریف میشوند.
2. مقادیر ثابت: Enum ها مجموعهای از مقادیر ثابت را تعریف میکنند که با هم مرتبط هستند.
3. پشتیبانی از انواع داده: Enum ها میتوانند انواع دادهای مختلف مثل string یا int را به عنوان مقدار خود داشته باشند.
4. قابلیت استفاده در توابع: Enum ها میتوانند به عنوان پارامتر به توابع و متدها ارسال شوند.
5. سازگاری با Match Expression: از match expression میتوان برای پردازش مقادیر Enum استفاده کرد.
6. تعریف متدها: میتوان متدهایی را در داخل Enum تعریف کرد که به مقادیر آن مرتبط هستند.
من در Anophel آنوفل بیشتر به این موضوع پرداختم لینک مقاله :
لینک مقاله
#لاراول #php
Anophel
Anophel | Where Developers Create Their Own Path
Anophel is an ecosystem for developers—a place for those who prefer building over consuming. If you want to create tools, think differently, and forge your own path in coding, Anophel is with you.
👍6🔥2❤1
🎯 استفاده از متغیر $loop در حلقههای foreach@ در Laravel Blade
یکی از قابلیتهای قدرتمند و کمتر شناختهشدهی blade وجوده متغیری به نام $loop در هنگام استفاده از دستور foreach@ است. این متغیر بهصورت خودکار و فقط درون حلقه در دسترس قرار میگیره و اطلاعات بسیار مفیدی درباره وضعیت فعلی تکرار حلقه فراهم میکنه.
کاربردهای عملی $loop :
زمانیکه در یک Blade از foreach@ استفاده میکنید، لاراول بطور خودکار یک شیء Loop اختصاصی تولید میکنه که مهم هاشو نوشتم براتون :
🔹 $loop->index
int — شماره اندیس فعلی (از 0 شروع میشه)
🔹 $loop->iteration
int — شماره تکرار (از 1 شروع میشه)
🔹 $loop->count
int — تعداد کل آیتمها در حلقه
🔹 $loop->first
bool — آیا این اولین تکراره؟ (true/false)
🔹 $loop->last
bool — آیا این آخرین تکراره؟ (true/false)
🔹 $loop->remaining
int — چند آیتم دیگه تا پایان حلقه باقی مونده
🔹 $loop->even
bool — آیا تکرار فعلی زوجه؟
🔹 $loop->odd
bool — آیا تکرار فعلی فرده؟
🔹 $loop->depth
int — عمق حلقه (در حلقههای تو در تو)
🔹 $loop->parent
object|null — دسترسی به حلقهی والد در صورت وجود
مثال؟؟
درین مثال از $loop->iteration برای شمارهگذاری استفاده شده.
با $loop->odd استایل متفاوت برای ردیفهای فرد و زوج اعمال شده.
اولین و آخرین محصول با نشان خاصی مشخص شدهاند.
نکات مهم:
این $ loop فقط در Blade و فقط در داخل foreach@ (یا for@) در دسترسه.
اگه حلقههای توو در توو دارید، میتونین از $loop->depth و $loop->parent استفاده کنین.
این قابلیت در Viewها به کاهش پیچیدگی کد و خوانایی بیشتر کمک میکند.
✅ نتیجهگیری
استفاده از $loop در Laravel Blade نهتنها کدنویسی را تمیزتر و خواناتر میکند، بلکه امکاناتی مثل تشخیص اولین یا آخرین آیتم، استایلگذاری زوج و فرد، و شمارنده حلقه را بدون نیاز به تعریف متغیرهای دستی فراهم میکند.
#Laravel
(بهمنبع و مثالش دقت کنید 👇🏾)
@GoldenCodeir
https://x.com/laravelbackpack/status/1929863164302393517?s=35
یکی از قابلیتهای قدرتمند و کمتر شناختهشدهی blade وجوده متغیری به نام $loop در هنگام استفاده از دستور foreach@ است. این متغیر بهصورت خودکار و فقط درون حلقه در دسترس قرار میگیره و اطلاعات بسیار مفیدی درباره وضعیت فعلی تکرار حلقه فراهم میکنه.
کاربردهای عملی $loop :
زمانیکه در یک Blade از foreach@ استفاده میکنید، لاراول بطور خودکار یک شیء Loop اختصاصی تولید میکنه که مهم هاشو نوشتم براتون :
🔹 $loop->index
int — شماره اندیس فعلی (از 0 شروع میشه)
🔹 $loop->iteration
int — شماره تکرار (از 1 شروع میشه)
🔹 $loop->count
int — تعداد کل آیتمها در حلقه
🔹 $loop->first
bool — آیا این اولین تکراره؟ (true/false)
🔹 $loop->last
bool — آیا این آخرین تکراره؟ (true/false)
🔹 $loop->remaining
int — چند آیتم دیگه تا پایان حلقه باقی مونده
🔹 $loop->even
bool — آیا تکرار فعلی زوجه؟
🔹 $loop->odd
bool — آیا تکرار فعلی فرده؟
🔹 $loop->depth
int — عمق حلقه (در حلقههای تو در تو)
🔹 $loop->parent
object|null — دسترسی به حلقهی والد در صورت وجود
مثال؟؟
<ul>
@foreach ($products as $product)
<li class="{{ $loop->odd ? 'bg-light' : 'bg-dark' }}">
{{ $loop->iteration }}. {{ $product->name }}
@if ($loop->first)
<span class="badge">New!</span>
@endif
@if ($loop->last)
<span class="badge">End</span>
@endif
</li>
@endforeach
</ul>
درین مثال از $loop->iteration برای شمارهگذاری استفاده شده.
با $loop->odd استایل متفاوت برای ردیفهای فرد و زوج اعمال شده.
اولین و آخرین محصول با نشان خاصی مشخص شدهاند.
نکات مهم:
این $ loop فقط در Blade و فقط در داخل foreach@ (یا for@) در دسترسه.
اگه حلقههای توو در توو دارید، میتونین از $loop->depth و $loop->parent استفاده کنین.
این قابلیت در Viewها به کاهش پیچیدگی کد و خوانایی بیشتر کمک میکند.
✅ نتیجهگیری
استفاده از $loop در Laravel Blade نهتنها کدنویسی را تمیزتر و خواناتر میکند، بلکه امکاناتی مثل تشخیص اولین یا آخرین آیتم، استایلگذاری زوج و فرد، و شمارنده حلقه را بدون نیاز به تعریف متغیرهای دستی فراهم میکند.
#Laravel
(بهمنبع و مثالش دقت کنید 👇🏾)
@GoldenCodeir
https://x.com/laravelbackpack/status/1929863164302393517?s=35
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
1/3. Laravel Tip
Did you know... While iterating through a foreach loop, a $loop variable will be available inside of your loop. This variable provides access to some useful bits of information.
More info in the short 🧵👇
Did you know... While iterating through a foreach loop, a $loop variable will be available inside of your loop. This variable provides access to some useful bits of information.
More info in the short 🧵👇
👍9❤3🔥3
Golden Code
خب حالا بریم سراغ C یا همون Consistency(سازگاری) در ACID: ویژگی Consistency در دیتابیس یعنی بعد از انجام هر transaction، دیتاهامون باید همیشه صحیح و درست باقی بمونن. یعنی دیتابیس نباید هیچ وقت به وضعیتی نادرست یا اشتباه برسه. 📌 اگه transaction ها قوانین…
خب بریم سراغ مفهوم Isolation (جداسازی) در ACID ✅️
وقتی یک برنامه با دیتابیس کار میکنه ممکنه چندین Transaction بطور همزمان اجرا بشن. هر transaction مجموعهای از عملیات روی دادههاس که باید بصورت یک واحد کامل انجام بشه.
مفهومه Isolation اینه که transaction ها باید بصورت جدا و مستقل از هم اجرا بشن، یعنی طوری که عملیات یک transaction تا قبل از پایان کاملش برای transaction های دیگه قابل مشاهده نباشه.
📌 اصلا چرا Isolation مهمه؟
فرض کنین دو transaction همزمان در حال تغییر اطلاعات یک حساب بانکی هستن:
بر فرض transaction اول: ۱۰۰ هزار تومان از حساب کم کنه.
و transaction دوم: ۵۰ هزار تومان به حساب اضافه کنه.
📌 اگه این transaction ها بدرستی جداسازی نشن چی میشه؟؟
ممکنه مقدار نهایی اشتباه محاسبه بشه، مثلاً چون هر transaction دیتاهای transaction دیگه رو نمیبینه یا به صورت ناقص میبینه.
در نتیجه، Isolation تضمین میکنه که transaction ها به گونهای اجرا بشن که انگار پشت سر هم انجام شدن ودر نتیجه، دیتاهامون بدرستی و بصورت سازگار باقی میمونه .
در عمل، سطحهای مختلفی از Isolation وجود داره (مثل Read Uncommitted، Read Committed، Repeatable Read، Serializable) که کنترل میکنن چقد transaction میتونن تغییرات یکدیگر رو ببینن و تداخل داشته باشن.
⚠️ سطح بالا مثل Serializableحداکثر جداسازی رو تضمین میکنه ولی ممکنه باعث کاهش کارایی بشه!
سطحهای پایینتر سرعت بیشتری دارن ولی ممکنه دیتاهامون به شکل موقت ناسازگار دیده بشن.
#ACID
@GoldenCodeir
وقتی یک برنامه با دیتابیس کار میکنه ممکنه چندین Transaction بطور همزمان اجرا بشن. هر transaction مجموعهای از عملیات روی دادههاس که باید بصورت یک واحد کامل انجام بشه.
مفهومه Isolation اینه که transaction ها باید بصورت جدا و مستقل از هم اجرا بشن، یعنی طوری که عملیات یک transaction تا قبل از پایان کاملش برای transaction های دیگه قابل مشاهده نباشه.
📌 اصلا چرا Isolation مهمه؟
فرض کنین دو transaction همزمان در حال تغییر اطلاعات یک حساب بانکی هستن:
بر فرض transaction اول: ۱۰۰ هزار تومان از حساب کم کنه.
و transaction دوم: ۵۰ هزار تومان به حساب اضافه کنه.
📌 اگه این transaction ها بدرستی جداسازی نشن چی میشه؟؟
ممکنه مقدار نهایی اشتباه محاسبه بشه، مثلاً چون هر transaction دیتاهای transaction دیگه رو نمیبینه یا به صورت ناقص میبینه.
در نتیجه، Isolation تضمین میکنه که transaction ها به گونهای اجرا بشن که انگار پشت سر هم انجام شدن ودر نتیجه، دیتاهامون بدرستی و بصورت سازگار باقی میمونه .
در عمل، سطحهای مختلفی از Isolation وجود داره (مثل Read Uncommitted، Read Committed، Repeatable Read، Serializable) که کنترل میکنن چقد transaction میتونن تغییرات یکدیگر رو ببینن و تداخل داشته باشن.
⚠️ سطح بالا مثل Serializableحداکثر جداسازی رو تضمین میکنه ولی ممکنه باعث کاهش کارایی بشه!
سطحهای پایینتر سرعت بیشتری دارن ولی ممکنه دیتاهامون به شکل موقت ناسازگار دیده بشن.
#ACID
@GoldenCodeir
👍4❤1👎1
Forwarded from Milwad Khosravi | میلاد خسروی
در اصل JIT مخفف Just-In-Time compilation هست، یعنی کامپایل همزمان با اجرا. این تکنیک باعث میشه که کدهایی که به صورت معمول تفسیر (interpret) میشن (مثل PHP یا JavaScript)، در زمان اجرا به کد ماشین تبدیل بشن، و این یعنی اجراشون خیلی سریعتر بشه.
- سرعت اجرای بهتر
- کاهش مصرف منابع در برخی سناریوها
- عملکرد نزدیکتر به زبانهای کامپایلشده (مثل C)
🧪 کار JIT در PHP چیه؟
در PHP 8 به بعد، Zend Engine دارای یک JIT Compiler شد. قبل از اون، PHP فقط تفسیر میکرد.
کار JIT باعث میشه:
بخشهایی از کد که زیاد استفاده میشن (مثلاً حلقهها یا توابع پرتکرار)، به کد ماشین واقعی تبدیل بشن.
- پردازش تصویر
- بازیسازی
- پروژههای علمی
- کدهایی که زیاد اجرا میشن مثل فریمورکها یا CMSها
#PHP #JIT #Milwad #Tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥2👍1
تفاوت get() و lazy() در لاراول ؟
اول get():
تمام رکوردها رو یکباره از دیتابیس میخونه و در حافظه لود میکنه. این روش برای حجم دیتای کم مناسبتره.
اما lazy() :
رکوردها رو بصورت مرحلهای و پشتسرهم (streaming) میخونه. این یعنی حافظه خیلی کمتری مصرف میشه، چون هر بار فقط یک رکورد در حافظه هستش. برای دیتاستهای بزرگ (مثلاً هزاران یا میلیونها ردیف) انتخاب بهتریه.
📌 در واقع، lazy() از متود cursor() استفاده میکنه که یک streaming cursor میسازه و رکوردها رو بصورت on-demand از دیتابیس میخونه.
اگه قراره دادههای زیادی از دیتابیس بخونید و پردازش کنین (مثلاً ۱۰۰هزار رکورد)، حتماً از lazy() استفاده کنید تا مصرف حافظه کنترل بشه و سرور دچار مشکل نشه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1940734778506121448?s=35
اول get():
تمام رکوردها رو یکباره از دیتابیس میخونه و در حافظه لود میکنه. این روش برای حجم دیتای کم مناسبتره.
اما lazy() :
رکوردها رو بصورت مرحلهای و پشتسرهم (streaming) میخونه. این یعنی حافظه خیلی کمتری مصرف میشه، چون هر بار فقط یک رکورد در حافظه هستش. برای دیتاستهای بزرگ (مثلاً هزاران یا میلیونها ردیف) انتخاب بهتریه.
📌 در واقع، lazy() از متود cursor() استفاده میکنه که یک streaming cursor میسازه و رکوردها رو بصورت on-demand از دیتابیس میخونه.
اگه قراره دادههای زیادی از دیتابیس بخونید و پردازش کنین (مثلاً ۱۰۰هزار رکورد)، حتماً از lazy() استفاده کنید تا مصرف حافظه کنترل بشه و سرور دچار مشکل نشه.
User::lazy()->each(function($user) {
// پردازش کاربرا
});#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1940734778506121448?s=35
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel lazy() vs get()
Did you know.... You can stream large datasets from the DB using lazy() — way more memory-efficient than get().
Did you know.... You can stream large datasets from the DB using lazy() — way more memory-efficient than get().
❤8👏1
در زمان اجرای یک درخواست HTTP در لاراول، عملیات Route Model Binding دقیقاً در چه مرحلهای انجام میشه؟
Anonymous Quiz
20%
قبل از اجرای middleware ها
40%
بعد از اجرای middleware ها و قبل از اجرای کنترلر
16%
همزمان با resolve شدن کنترلر
25%
هنگام boot شدن سرویسها در AppServiceProvider
❤5👍3🔥1
در لاراول وقتی مدلی (مثل Comment, Image, یا Like) میتونه به چند مدل مختلف تعلق داشته باشه، از روابط Polymorphic استفاده میکنیم.
برای پیادهسازی این رابطه، معمولاً به دو ستون نیاز داریم:
*_id → آیدیه مدل والد
*_type → نام کامل کلاس مدل والد
بجای ساخت این ستونها بصورت دستی، لاراول یه سری روش ارائه داده که کارو سادهتر و خواناتر میکنه.
🔹 morphs('name')
نوع ID: bigInteger → پیشفرض و متداول
🔹 uuidMorphs('name')
نوع ID: UUID → وقتی مدلها از UUID استفاده میکنن
🔹 ulidMorphs('name')
نوع ID: ULID → مناسب پروژههای مدرن
یه مثال:
📌 این خط بصورت خودکار این دو ستون رو اضافه میکنه:
commentable_id (unsigned BigInt)
commentable_type (string)
با استفاده از morphs() و نسخههای UUID/ULID اون، کدمون خواناتر، تمیزتر، و مطابق استاندارای لاراول میشه.
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/PovilasKorop/status/1943245143517127095?t=G7MLCysG1b-TCpom8s83sA&s=35
برای پیادهسازی این رابطه، معمولاً به دو ستون نیاز داریم:
*_id → آیدیه مدل والد
*_type → نام کامل کلاس مدل والد
بجای ساخت این ستونها بصورت دستی، لاراول یه سری روش ارائه داده که کارو سادهتر و خواناتر میکنه.
🔹 morphs('name')
نوع ID: bigInteger → پیشفرض و متداول
🔹 uuidMorphs('name')
نوع ID: UUID → وقتی مدلها از UUID استفاده میکنن
🔹 ulidMorphs('name')
نوع ID: ULID → مناسب پروژههای مدرن
یه مثال:
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->text('body');
// این خط بهجای دو ستون: commentable_id و commentable_type
$table->morphs('commentable');
$table->timestamps();
});📌 این خط بصورت خودکار این دو ستون رو اضافه میکنه:
commentable_id (unsigned BigInt)
commentable_type (string)
با استفاده از morphs() و نسخههای UUID/ULID اون، کدمون خواناتر، تمیزتر، و مطابق استاندارای لاراول میشه.
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/PovilasKorop/status/1943245143517127095?t=G7MLCysG1b-TCpom8s83sA&s=35
X (formerly Twitter)
Povilas Korop | Laravel Courses Creator & Youtuber (@PovilasKorop) on X
Laravel tip.
Creating polymorphic relationships? Use `morphs()`, `uuidMorphs()`, or `ulidMorphs()` to add both ID and type columns in one call!
Link to the docs: https://t.co/h4yjVnZNPn
#practicalLaravelDocs
Creating polymorphic relationships? Use `morphs()`, `uuidMorphs()`, or `ulidMorphs()` to add both ID and type columns in one call!
Link to the docs: https://t.co/h4yjVnZNPn
#practicalLaravelDocs
❤8👍2
وقتی با تعداد زیادی رکورد در دیتابیس کار میکنی، استفاده از متودهایی مثل get() که همه دادهها رو یکباره دریافت میکنن، باعث مصرف بالای حافظه میشن و ممکنه برنامه رو کند یا حتی دچار کرش کنن.
برای حل این مشکل، لاراول متود chunk() رو ارائه داده. این متود دیتاهامونو به دستههای کوچک (مثلاً ۵۰۰ تایی) تقسیم میکنه، هر دسته رو جداگانه دریافت و پردازش میکنخ. این کار باعث میشه حافظه فقط درگیره بخش کوچکی از دیتاها بشه و مصرف منابع بهینه باقی بمونه.
مثال:
یکی از کاربردهای مهم:
فرض کن میخوای یک فیلد (مثلا status) رو برای میلیونها رکورد آپدیت کنی. اگه از get() استفاده کنی، ممکنه حافظه سرور پر بشه. ولی با chunk() میتونی رکوردها رو دستهبندیشده و مرحلهبهمرحله دریافت و پردازش کنی، که بسیار بهینهتره.
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/PovilasKorop/status/1945781820986937615?s=
برای حل این مشکل، لاراول متود chunk() رو ارائه داده. این متود دیتاهامونو به دستههای کوچک (مثلاً ۵۰۰ تایی) تقسیم میکنه، هر دسته رو جداگانه دریافت و پردازش میکنخ. این کار باعث میشه حافظه فقط درگیره بخش کوچکی از دیتاها بشه و مصرف منابع بهینه باقی بمونه.
مثال:
DB::table('orders')->chunk(500, function ($orders) {
foreach ($orders as $order) {
// پردازش هر سفارش
}
});یکی از کاربردهای مهم:
فرض کن میخوای یک فیلد (مثلا status) رو برای میلیونها رکورد آپدیت کنی. اگه از get() استفاده کنی، ممکنه حافظه سرور پر بشه. ولی با chunk() میتونی رکوردها رو دستهبندیشده و مرحلهبهمرحله دریافت و پردازش کنی، که بسیار بهینهتره.
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/PovilasKorop/status/1945781820986937615?s=
X (formerly Twitter)
Povilas Korop | Laravel Courses Creator & Youtuber (@PovilasKorop) on X
Laravel tip.
Processing thousands of DB records?
Use `chunk()` to avoid memory issues!
It retrieves records in small batches and processes them one chunk at a time.
Perfect for data migrations and bulk operations.
Link to docs: https://t.co/748DspJbdq…
Processing thousands of DB records?
Use `chunk()` to avoid memory issues!
It retrieves records in small batches and processes them one chunk at a time.
Perfect for data migrations and bulk operations.
Link to docs: https://t.co/748DspJbdq…
❤8🔥2