💡 کلاس WeakMap در PHP: قهرمان خاموش برای مدیریت حافظه
در زمان توسعه بخشهای پرفورمنسمحور یک اپلیکیشن، متوجه شدم که WeakMap میتونه یه قهرمان خاموش باشه که زمانی که بهش نیاز داری، به دادت میرسه.
🔍 کلاس WeakMap چیست؟
در ظاهر، WeakMap مثل یه store کلید-مقدار عادی به نظر میاد. اما تفاوت اصلی اینجاست که WeakMap کلیدها رو به صورت weak reference نگه میداره، یعنی وقتی شی از حافظه پاک میشه، WeakMap بهطور خودکار اون ورودی رو حذف میکنه. این ویژگی باعث میشه که نیازی به پاکسازی دستی دادهها نباشه و هیچگونه حافظهای به طور نادرست مصرف نشه.
📌 چرا این ویژگی اهمیت داره؟
فرض کنید در حال ساخت یک مدیریت مستندات یا مدیریت تصاویر هستید. هر شی (مثل یک فایل یا تصویر) ممکنه متادیتای پرهزینهای برای محاسبه داشته باشه. میخواهید این متادیتا رو در هنگام استفاده از شی کش کنید ولی نیازی به پاکسازی دستی و نگرانی از نشت حافظه ندارید.
🛠 نمونه کد:
در کدی که در تصویر مشاهده میکنید . ما از WeakMap برای کش کردن متادیتای اشیاء استفاده میکنیم
🚀 نتیجهگیری
در نتیجه WeakMap برای مواردی مثل مدیریت کش متادیتا یا پردازشهای پرهزینه بسیار مفیده، چرا که از نشت حافظه جلوگیری میکنه و با خودکار حذف کردن ورودیها از حافظه، کار رو برای برنامهنویس راحتتر میکنه.
🔗 منبع: مقاله
#PHP #MemoryManagement #WeakMap #Cashing #Development #Backend #OptimizedCode
@panicdev
در زمان توسعه بخشهای پرفورمنسمحور یک اپلیکیشن، متوجه شدم که WeakMap میتونه یه قهرمان خاموش باشه که زمانی که بهش نیاز داری، به دادت میرسه.
🔍 کلاس WeakMap چیست؟
در ظاهر، WeakMap مثل یه store کلید-مقدار عادی به نظر میاد. اما تفاوت اصلی اینجاست که WeakMap کلیدها رو به صورت weak reference نگه میداره، یعنی وقتی شی از حافظه پاک میشه، WeakMap بهطور خودکار اون ورودی رو حذف میکنه. این ویژگی باعث میشه که نیازی به پاکسازی دستی دادهها نباشه و هیچگونه حافظهای به طور نادرست مصرف نشه.
📌 چرا این ویژگی اهمیت داره؟
فرض کنید در حال ساخت یک مدیریت مستندات یا مدیریت تصاویر هستید. هر شی (مثل یک فایل یا تصویر) ممکنه متادیتای پرهزینهای برای محاسبه داشته باشه. میخواهید این متادیتا رو در هنگام استفاده از شی کش کنید ولی نیازی به پاکسازی دستی و نگرانی از نشت حافظه ندارید.
🛠 نمونه کد:
در کدی که در تصویر مشاهده میکنید . ما از WeakMap برای کش کردن متادیتای اشیاء استفاده میکنیم
🚀 نتیجهگیری
در نتیجه WeakMap برای مواردی مثل مدیریت کش متادیتا یا پردازشهای پرهزینه بسیار مفیده، چرا که از نشت حافظه جلوگیری میکنه و با خودکار حذف کردن ورودیها از حافظه، کار رو برای برنامهنویس راحتتر میکنه.
🔗 منبع: مقاله
#PHP #MemoryManagement #WeakMap #Cashing #Development #Backend #OptimizedCode
@panicdev
👍11🔥2
🚀 مدیریت Migrationها در لاراول با shouldRun()
وقتی از feature flagها یا استراتژی rollout مرحلهای استفاده میکنید، ممکنه بخواهید بعضی migrationها فقط در صورتی اجرا بشن که یک ویژگی خاص فعال باشه. قبلاً این کار نیاز به ترفندهای دستی یا مدیریت سخت migrationها داشت.
حالا لاراول با معرفی متد جدید
🧠 این migration فقط زمانی اجرا میشه که feature مربوطه فعال باشه. اگه فعال نباشه، بدون خطا رد میشه و هیچ رکوردی توی جدول migrations ثبت نمیشه.
✅ نکات مهم:
یک نکته این که shouldRun() هم در migrate و هم در rollback در نظر گرفته میشه، پس رفتار migration در هر دو مسیر هماهنگه.
دیگه نیاز نیست migrationهایی که فقط در محیط خاص یا برای tenant خاص هستن رو دستی مدیریت کنید.
ایدهآل برای اپلیکیشنهای multi-tenant، ویژگیهای قابل غیرفعال/فعالسازی و استقرار مرحلهای (progressive deployment).
#Laravel #Migration #FeatureFlags #shouldRun #SaaS #BackendTips #ProgressiveDeployment
@panicdev
وقتی از feature flagها یا استراتژی rollout مرحلهای استفاده میکنید، ممکنه بخواهید بعضی migrationها فقط در صورتی اجرا بشن که یک ویژگی خاص فعال باشه. قبلاً این کار نیاز به ترفندهای دستی یا مدیریت سخت migrationها داشت.
حالا لاراول با معرفی متد جدید
shouldRun() این مشکل رو حل کرده. این متد به هر migration اجازه میده خودش تصمیم بگیره که اجرا بشه یا نه.🧠 این migration فقط زمانی اجرا میشه که feature مربوطه فعال باشه. اگه فعال نباشه، بدون خطا رد میشه و هیچ رکوردی توی جدول migrations ثبت نمیشه.
✅ نکات مهم:
یک نکته این که shouldRun() هم در migrate و هم در rollback در نظر گرفته میشه، پس رفتار migration در هر دو مسیر هماهنگه.
دیگه نیاز نیست migrationهایی که فقط در محیط خاص یا برای tenant خاص هستن رو دستی مدیریت کنید.
ایدهآل برای اپلیکیشنهای multi-tenant، ویژگیهای قابل غیرفعال/فعالسازی و استقرار مرحلهای (progressive deployment).
#Laravel #Migration #FeatureFlags #shouldRun #SaaS #BackendTips #ProgressiveDeployment
@panicdev
👍8
🧠 ارزیابی سطح شغلی
۱. با توجه به موقعیت شغلی فعلیتون، فکر میکنید در چه سطحی قرار دارید؟
۱. با توجه به موقعیت شغلی فعلیتون، فکر میکنید در چه سطحی قرار دارید؟
Anonymous Poll
29%
🟢 جونیور (Junior)
44%
🟡 میدلول (Mid-Level)
10%
🔵 سنیور (Senior)
6%
🟣 فوق سنیور (Lead/Principal)
11%
⚪️ هنوز لولی برای سطح من تعریف نشده 🙂
Panic Dev
🧠 ارزیابی سطح شغلی
۱. با توجه به موقعیت شغلی فعلیتون، فکر میکنید در چه سطحی قرار دارید؟
۱. با توجه به موقعیت شغلی فعلیتون، فکر میکنید در چه سطحی قرار دارید؟
۲. چرا فکر میکنید در این سطح قرار دارید؟
۳. به نظرتون برای رسیدن به لول بعدی، بیشتر به کدوم مورد نیاز دارید؟
✅ افزایش سابقه کار
✅ افزایش مهارتهای فنی
✅ بهبود مهارتهای مدیریتی و رهبری تیم
✅ تجربه در پروژههای بزرگتر و چالشبرانگیزتر
✅ یادگیری مهارتهای نرم (ارتباط، مذاکره، تفکر سیستمی و...)
✅ گرفتن بازخورد حرفهای و منتورینگ
۳. به نظرتون برای رسیدن به لول بعدی، بیشتر به کدوم مورد نیاز دارید؟
✅ افزایش سابقه کار
✅ افزایش مهارتهای فنی
✅ بهبود مهارتهای مدیریتی و رهبری تیم
✅ تجربه در پروژههای بزرگتر و چالشبرانگیزتر
✅ یادگیری مهارتهای نرم (ارتباط، مذاکره، تفکر سیستمی و...)
✅ گرفتن بازخورد حرفهای و منتورینگ
Panic Dev
۲. چرا فکر میکنید در این سطح قرار دارید؟ ۳. به نظرتون برای رسیدن به لول بعدی، بیشتر به کدوم مورد نیاز دارید؟ ✅ افزایش سابقه کار ✅ افزایش مهارتهای فنی ✅ بهبود مهارتهای مدیریتی و رهبری تیم ✅ تجربه در پروژههای بزرگتر و چالشبرانگیزتر ✅ یادگیری مهارتهای…
یک مقاله ای داشتم میخوندم . نسبتا طولانی ولی ارزش خوندن داشت . من دوست داشتم ،😊
گفتم خلاصه ای رو با شما هم به اشتراک بزارم . کسی دوست داشت بره کاملشو بخونه
🧠 تفاوت اصلی بین برنامهنویس جونیور و سینیور
این مقاله گفتوگویی درونی بین «منِ جونیور» و «منِ سینیور» و تلاش میکنه به یک نکته عمیق اشاره کنه:
✅ تفاوت اصلی بین برنامهنویس سینیور و جونیور توی طرز فکر، نه تعداد سالهای تجربه.
🎯 خلاصه مهمترین تفاوتهای ذهنیت سینیورها:
۱. بهجای فقط نوشتن کد، میپرسن: «آیا اصلاً لازمه اینو بنویسم؟»
۲. فقط باگ رو رفع نمیکنن، علت اصلی (Root Cause) رو پیدا میکنن.
۳. فقط کد درست نمینویسن، کد قابلنگهداری و تمیز مینویسن.
۴. بهجای «من میتونم اینو حل کنم»، میپرسن: «چطور تیم میتونه اینو حل کنه؟»
۵. دنبال یادگیری تکنولوژی جدید نیستن، یاد گرفتنِ «روش یادگیری» رو بلدن.
۶. منتظر اجازه نمیمونن، مسئولیت میپذیرن و اقدام میکنن.
۷. سریع وارد کدنویسی نمیشن، اول تحلیل و طراحی میکنن.
۸. فقط تسک done نمیکنند ، اثرش روی کاربر و کسبوکار رو میسنجن.
۹. منتظر خراب شدن سیستم نمیمونن، از قبل مشکلات رو پیشبینی میکنن.
.
۱۰. کارهای تکراری رو دستی انجام نمیدن، اتومات میکنن و مستند مینویسن.
📌 جمعبندی:
برنامهنویس سینیور کسیه که فقط کد نمینویسه، بلکه دید استراتژیک داره، تیم رو رشد میده، و برای آینده تصمیم میگیره.
هرکدوم از این تغییرات ذهنی، شما رو یک قدم به سینیور شدن نزدیکتر میکنه.
📖 اگر علاقهمند به خوندن متن کامل این مقاله هستید، پیشنهاد میکنم حتماً بخونید:
🔗 لینک مقاله کامل
@panicdev
گفتم خلاصه ای رو با شما هم به اشتراک بزارم . کسی دوست داشت بره کاملشو بخونه
🧠 تفاوت اصلی بین برنامهنویس جونیور و سینیور
این مقاله گفتوگویی درونی بین «منِ جونیور» و «منِ سینیور» و تلاش میکنه به یک نکته عمیق اشاره کنه:
✅ تفاوت اصلی بین برنامهنویس سینیور و جونیور توی طرز فکر، نه تعداد سالهای تجربه.
🎯 خلاصه مهمترین تفاوتهای ذهنیت سینیورها:
۱. بهجای فقط نوشتن کد، میپرسن: «آیا اصلاً لازمه اینو بنویسم؟»
جونیورها بلافاصله سراغ کدنویسی میرن.
سینیورها اول تحلیل میکنن، سؤال میپرسن و دید کلی پیدا میکنن.
۲. فقط باگ رو رفع نمیکنن، علت اصلی (Root Cause) رو پیدا میکنن.
سینیورها روی پیشگیری تمرکز دارن، نه فقط درمان.
۳. فقط کد درست نمینویسن، کد قابلنگهداری و تمیز مینویسن.
به "قانون پیشاهنگ" پایبندن: «کد رو بهتر از قبل بذار.»
۴. بهجای «من میتونم اینو حل کنم»، میپرسن: «چطور تیم میتونه اینو حل کنه؟»
مستندسازی، اشتراک دانش، و طراحی قابل فهم برای همه.
۵. دنبال یادگیری تکنولوژی جدید نیستن، یاد گرفتنِ «روش یادگیری» رو بلدن.
روی اصول پایه تمرکز دارن، نه هر ترند جدید.
۶. منتظر اجازه نمیمونن، مسئولیت میپذیرن و اقدام میکنن.
طرز فکر «مالکیت کامل» دارن.
۷. سریع وارد کدنویسی نمیشن، اول تحلیل و طراحی میکنن.
طراحی قبل از ساخت، فهم قبل از کدنویسی.
۸. فقط تسک done نمیکنند ، اثرش روی کاربر و کسبوکار رو میسنجن.
هر تسک رو به عنوان فرصتی برای ایجاد ارزش میبینن.
۹. منتظر خراب شدن سیستم نمیمونن، از قبل مشکلات رو پیشبینی میکنن.
طراحی مقاوم، مانیتورینگ و تست خودکار بخش اصلی کارشونه
.
۱۰. کارهای تکراری رو دستی انجام نمیدن، اتومات میکنن و مستند مینویسن.
ابزار میسازن، اسناد تهیه میکنن، و زمان تیم رو حفظ میکنن.
📌 جمعبندی:
برنامهنویس سینیور کسیه که فقط کد نمینویسه، بلکه دید استراتژیک داره، تیم رو رشد میده، و برای آینده تصمیم میگیره.
هرکدوم از این تغییرات ذهنی، شما رو یک قدم به سینیور شدن نزدیکتر میکنه.
📖 اگر علاقهمند به خوندن متن کامل این مقاله هستید، پیشنهاد میکنم حتماً بخونید:
🔗 لینک مقاله کامل
@panicdev
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
How Senior Engineers Think Differently: 10 Mental Models You Need
The Mindset Shift from Junior to Senior Engineer
50👍19
Panic Dev
یه سرویس Open-Source و سبک برای کپچا 🔗 https://capjs.js.org
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33👍1🔥1🕊1
تمام تسکهای ورژن 4 فیلامنت done شدن ✅
انتظار میره خیلی زود (شاید طی چند روز آینده) نسخه جدید فیلامنت ریلیز و قابل استفاده بشه 🔥
🔗 https://github.com/filamentphp/filament/milestone/3
انتظار میره خیلی زود (شاید طی چند روز آینده) نسخه جدید فیلامنت ریلیز و قابل استفاده بشه 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
filamentphp/filament
A collection of beautiful full-stack components for Laravel. The perfect starting point for your next app. Using Livewire, Alpine.js and Tailwind CSS. - filamentphp/filament
🔥17👍2
میخوایم کتاب
هدیه بدیم برای ۵ نفر😊
به ۵ نفر اولی که اعلام حضور کنه
⚠️ لطفا اگر میدونید موضوعش چی هست و علاقه به مطالعه دارید اعلام کنید .
(تمام شد)
تست مامان
هدیه بدیم برای ۵ نفر
به ۵ نفر اولی که اعلام حضور کنه
(تمام شد)
Please open Telegram to view this post
VIEW IN TELEGRAM
Panic Dev
میخوایم کتاب تست مامان هدیه بدیم برای ۵ نفر 😊 به ۵ نفر اولی که اعلام حضور کنه ⚠️ لطفا اگر میدونید موضوعش چی هست و علاقه به مطالعه دارید اعلام کنید . (تمام شد)
۵ نفر رو هم من دونیت میکنم حسام 😅
(تمام شد)
(تمام شد)
🔥8😁3
ایشون آقای Deven هستن .
و این صفحه گیت هاب ایشون
همانجور که میبینید خودشون رو lead engineer و سنیور میدونند .
از صفحه گیت هاب و رزومه هم مشخصه که
استک و tools نمونده که شخم نزده باشه .
بعد ایشون یه مقاله نوشته به این صورت
Why I Regret Choosing Laravel for My Small-Scale High-Performance App
شما مقایسه رو ببینید تورو خدا .
یه سیستم SPA رو با چی و چه سطحی مقایسه میکنه .
بعد از معایب فیلامنت فرمودن
مثل آقا Deven نباشید .
و این صفحه گیت هاب ایشون
همانجور که میبینید خودشون رو lead engineer و سنیور میدونند .
از صفحه گیت هاب و رزومه هم مشخصه که
استک و tools نمونده که شخم نزده باشه .
بعد ایشون یه مقاله نوشته به این صورت
Why I Regret Choosing Laravel for My Small-Scale High-Performance App
شما مقایسه رو ببینید تورو خدا .
یه سیستم SPA رو با چی و چه سطحی مقایسه میکنه .
بعد از معایب فیلامنت فرمودن
Becomes limiting for complex UI or logic
What might be a 5-min job in React can take hours in Filament
مثل آقا Deven نباشید .
🤣8🥱5👍2👎2
🔄 ردگیری وضعیت و پیشرفت صفها در Laravel
اگه توی پروژههات با Laravel کار میکنی، احتمال زیاد با صفها (Queues) سروکار داشتی. صفها کمک میکنن کارهای سنگین رو ببری پشت صحنه تا تجربهی کاربر بهتر بشه.
اما فقط فرستادن job به صف کافی نیست — خیلی وقتها لازمه بدونی اون job دقیقاً در چه مرحلهایه یا اینکه اصلاً تموم شده یا نه.
🧠 چرا ردگیری job مهمه؟
وقتی یه job طولانی مثل وارد کردن هزاران رکورد، پردازش ویدیو یا ارسال ایمیلهای انبوه اجرا میشه، اگه کاربر هیچ اطلاعاتی از پیشرفت نداشته باشه، حس میکنه برنامه هنگ کرده یا مشکلی هست.
ردگیری پیشرفت job هم به کاربر اطمینان میده، هم به تیم توسعه برای رفع سریعتر مشکلات کمک میکنه.
📦برای این کار Laravel Job Status پکیج کاربردی هست.
با نصب این پکیج، میتونی خیلی راحت وضعیت و درصد پیشرفت هر job رو ذخیره و مانیتور کنی.
🛠 مراحل استفاده:
نصب پکیج:
داخل کلاس job، از trait مخصوص استفاده کن:
وقتی job رو dispatch میکنی، ID وضعیت رو ذخیره کن:
وضعیت رو هر موقع خواستی از دیتابیس بخون:
📌 نکته مهم:
اگه از
لینک مقاله
لینک گیتهاب
@panicdev
اگه توی پروژههات با Laravel کار میکنی، احتمال زیاد با صفها (Queues) سروکار داشتی. صفها کمک میکنن کارهای سنگین رو ببری پشت صحنه تا تجربهی کاربر بهتر بشه.
اما فقط فرستادن job به صف کافی نیست — خیلی وقتها لازمه بدونی اون job دقیقاً در چه مرحلهایه یا اینکه اصلاً تموم شده یا نه.
🧠 چرا ردگیری job مهمه؟
وقتی یه job طولانی مثل وارد کردن هزاران رکورد، پردازش ویدیو یا ارسال ایمیلهای انبوه اجرا میشه، اگه کاربر هیچ اطلاعاتی از پیشرفت نداشته باشه، حس میکنه برنامه هنگ کرده یا مشکلی هست.
ردگیری پیشرفت job هم به کاربر اطمینان میده، هم به تیم توسعه برای رفع سریعتر مشکلات کمک میکنه.
📦برای این کار Laravel Job Status پکیج کاربردی هست.
با نصب این پکیج، میتونی خیلی راحت وضعیت و درصد پیشرفت هر job رو ذخیره و مانیتور کنی.
🛠 مراحل استفاده:
نصب پکیج:
composer require imtigger/laravel-job-status
داخل کلاس job، از trait مخصوص استفاده کن:
use Imtigger\LaravelJobStatus\Trackable;
$this->prepareStatus(); // in __construct
$this->setProgressMax(10);
$this->setProgressNow($i);
$this->setOutput(['message' => 'Job completed']);
وقتی job رو dispatch میکنی، ID وضعیت رو ذخیره کن:
$job = new ExampleJob([]);
$this->dispatch($job);
$jobStatusId = $job->getJobStatusId();
وضعیت رو هر موقع خواستی از دیتابیس بخون:
$jobStatus = JobStatus::find($jobStatusId);
echo $jobStatus->progress_now . "/" . $jobStatus->progress_max;
echo $jobStatus->status; // مثل queued، executing، finished، failed
📌 نکته مهم:
اگه از
YourJob::dispatch() استفاده کنی، دیگه نمیتونی job object رو بگیری! پس دستی job رو بساز و dispatch کن.لینک مقاله
لینک گیتهاب
@panicdev
👍9❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
دوستان این ریپازیتوری آپدیت شد
از اونجایی که سوال خیلی ها بود که چطور دیتا از سمت فرانت میفرستیم به بک و ذخیره میکنیم یا عملیاتی روش انجام میدید .
سناریو چهارم این ریپازیتوری دقیقا همین کارو میکنه .
دیتای ادیتور رو به صورت ریل تایم روی وب سوکت میفرسته و لاراول بلافاصله اون رو ذخیره میکنه . برای فیلد denoscription یک یوزر
کارهایی که توی این سناریو انجام شده میتونید داخل این PR مشاهده کنید .
Add user denoscription update functionality with MessageReceived event and editor component
@panicdev
از اونجایی که سوال خیلی ها بود که چطور دیتا از سمت فرانت میفرستیم به بک و ذخیره میکنیم یا عملیاتی روش انجام میدید .
سناریو چهارم این ریپازیتوری دقیقا همین کارو میکنه .
دیتای ادیتور رو به صورت ریل تایم روی وب سوکت میفرسته و لاراول بلافاصله اون رو ذخیره میکنه . برای فیلد denoscription یک یوزر
کارهایی که توی این سناریو انجام شده میتونید داخل این PR مشاهده کنید .
Add user denoscription update functionality with MessageReceived event and editor component
@panicdev
1🔥5👍1
🚀 معرفی Laravel RagKit: دستیار هوشمند اسناد برای پروژههای لاراولی شما!
تا حالا دوست داشتید اپلیکیشن Laravel شما بتونه بهصورت هوشمند به سوالات درباره مستندات پاسخ بده؟
با Laravel RagKit آشنا بشید — ابزار قدرتمند RAG (تولید تقویتشده با بازیابی) مخصوص لاراول!
🎯 مشکلاتی که حل میکنه:
* دیگه نیازی به جستجوی دستی توی اسناد نیست
* پاسخهای دقیق و وابسته به متن
* پردازش خودکار مستندات
* تعامل به سبک چت با اسناد شما
💡 مثال ساده:
فرض کنید یه SaaS دارید با مستندات زیاد. به جای اینکه کاربرها توی مستندات سردرگم بشن:
1️⃣ مستندات رو آپلود کنید:
2️⃣ اجازه بدید کاربرها سوال بپرسن:
3️⃣ جوابهای هوشمند همراه با منبع دریافت کنید! 🎉
🔥 ویژگیهای مهم:
• پردازش Async
• پشتیبانی از چند ارائهدهنده
• گفتوگوهای چتی
• خلاصهسازی و FAQ اسناد
• یکپارچه با لاراول
⚙️ شروع سریع:
🔗 لینک پروژه:
laravel-ragkit
#Laravel #هوش_مصنوعی #RAG #PHP #مستندسازی
@panicdev
تا حالا دوست داشتید اپلیکیشن Laravel شما بتونه بهصورت هوشمند به سوالات درباره مستندات پاسخ بده؟
با Laravel RagKit آشنا بشید — ابزار قدرتمند RAG (تولید تقویتشده با بازیابی) مخصوص لاراول!
🎯 مشکلاتی که حل میکنه:
* دیگه نیازی به جستجوی دستی توی اسناد نیست
* پاسخهای دقیق و وابسته به متن
* پردازش خودکار مستندات
* تعامل به سبک چت با اسناد شما
💡 مثال ساده:
فرض کنید یه SaaS دارید با مستندات زیاد. به جای اینکه کاربرها توی مستندات سردرگم بشن:
1️⃣ مستندات رو آپلود کنید:
RagKit::uploadDocument(
$collection,
'user-guide.pdf',
[
'category' => 'documentation',
]
);
2️⃣ اجازه بدید کاربرها سوال بپرسن:
$answer = RagKit::ask(
$collection,
"چطور رمز عبورم رو ریست کنم؟",
null,
[]
);
3️⃣ جوابهای هوشمند همراه با منبع دریافت کنید! 🎉
🔥 ویژگیهای مهم:
• پردازش Async
• پشتیبانی از چند ارائهدهنده
• گفتوگوهای چتی
• خلاصهسازی و FAQ اسناد
• یکپارچه با لاراول
⚙️ شروع سریع:
composer require mohaphez/laravel-ragkit
🔗 لینک پروژه:
laravel-ragkit
#Laravel #هوش_مصنوعی #RAG #PHP #مستندسازی
@panicdev
13🔥11👌3❤🔥1👍1😁1
Panic Dev
🚀 معرفی Laravel RagKit: دستیار هوشمند اسناد برای پروژههای لاراولی شما! تا حالا دوست داشتید اپلیکیشن Laravel شما بتونه بهصورت هوشمند به سوالات درباره مستندات پاسخ بده؟ با Laravel RagKit آشنا بشید — ابزار قدرتمند RAG (تولید تقویتشده با بازیابی) مخصوص لاراول!…
فعلا از ChatBees پشتیبانی میکنه
اگر نظری داشتید یا مشکلی دید . ممنون میدم گزارش بدید .
یا از سرویس دهنده های دیگه استفاده کردید ، درایورش و به این پکیج هم اضافش کنید، خوب میشه😊
اگر نظری داشتید یا مشکلی دید . ممنون میدم گزارش بدید .
یا از سرویس دهنده های دیگه استفاده کردید ، درایورش و به این پکیج هم اضافش کنید، خوب میشه
Please open Telegram to view this post
VIEW IN TELEGRAM
www.chatbees.ai
AI Customer Support Automation - ChatBees
Use ChatBees AI Customer Support Automation to 10x the Speed of Customer Ticket Resolution & Boost Customer Satisfaction
خوب صحبت از Octane شد، گفتیم یه بررسی داشته باشیم تا در انتخاب استفاده ازش دقت لازم داشته باشید .
🚀 فرق بین Laravel یا Laravel Octane چیست ؟
باید گفت Laravel Octane یه نسخه جدا نیست، بلکه یه افزونهست که روی Laravel اجرا میشه و مخصوص PHP 8 به بالاست.
هدفش فقط یه چیزه: سرعت! ⚡️
⚙️ مقایسهی سرعت
در Laravel معمولی: حدود ۵۰۰ درخواست در ثانیه
در Laravel Octane: راحت بالای ۲۰۰۰ درخواست در ثانیه!
اونم با حداقل ۱۰ برابر عملکرد بهتر 🤯
🧠 چرا Octane اینقدر سریعتره؟
تو Laravel معمولی، هر درخواست باعث میشه PHP از اول همه چیزو لود کنه (بوت اپلیکیشن، سرویسها، کانفیگها و...).
ولی تو Octane، همه اینا فقط یه بار لود میشن و بعدش تو حافظه میمونن، یعنی هر درخواست بعدی خیلی سریعتر انجام میشه!
💡 پس Octane باهوشتره و تکرارای اضافی رو حذف میکنه.
🌐 سرورهای Octane فرق دارن
خود Laravel معمولاً روی Apache یا Nginx با PHP-FPM اجرا میشه.
ولی Octane از Swoole یا RoadRunner بهعنوان سرور استفاده میکنه و ترافیک باید به اینا هدایت بشه.
🧩فرق Stateful یا Stateless چیه؟
لاراول معمولی «Stateless»، یعنی هر درخواست جداست.
ولی Octane «نیمه-Stateful»، یعنی یه سری اطلاعات بین درخواستها تو حافظه میمونه.
📌 مثال واقعی:
تو حالت Stateless، هر بار که صفحهای باز میکنی، سرور بررسی میکنه که لاگین هستی یا نه.
تو حالت Stateful (مثل Octane)، سرور همونطور که وارد شدی، اطلاعاتت رو نگه میداره تا وقتی logout کنی!
🔧خوب Swoole یا RoadRunner؟ کدوم بهتره؟
میشه گفت Swoole سریعتره ولی باید روی PHP نصب بشه، با Xdebug و مانیتورینگها خوب کار نمیکنه.
درحالی که RoadRunner راحتتر نصب میشه و به تنظیم خاصی نیاز نداره، ولی کمی کندتر از Swoole.
🤔 بالاخره Octane رو استفاده کنیم یا نه؟
✅ بله، اگه سایتت زیر بار سنگینه یا سرعتش اذیتت میکنه
❌ نه، اگه با PHP 8 سازگار نیستی یا تیمت هنوز با مفاهیم stateful آشنا نیست
#Laravel #PHP #Octane
@panicdev
🚀 فرق بین Laravel یا Laravel Octane چیست ؟
باید گفت Laravel Octane یه نسخه جدا نیست، بلکه یه افزونهست که روی Laravel اجرا میشه و مخصوص PHP 8 به بالاست.
هدفش فقط یه چیزه: سرعت! ⚡️
⚙️ مقایسهی سرعت
در Laravel معمولی: حدود ۵۰۰ درخواست در ثانیه
در Laravel Octane: راحت بالای ۲۰۰۰ درخواست در ثانیه!
اونم با حداقل ۱۰ برابر عملکرد بهتر 🤯
🧠 چرا Octane اینقدر سریعتره؟
تو Laravel معمولی، هر درخواست باعث میشه PHP از اول همه چیزو لود کنه (بوت اپلیکیشن، سرویسها، کانفیگها و...).
ولی تو Octane، همه اینا فقط یه بار لود میشن و بعدش تو حافظه میمونن، یعنی هر درخواست بعدی خیلی سریعتر انجام میشه!
💡 پس Octane باهوشتره و تکرارای اضافی رو حذف میکنه.
🌐 سرورهای Octane فرق دارن
خود Laravel معمولاً روی Apache یا Nginx با PHP-FPM اجرا میشه.
ولی Octane از Swoole یا RoadRunner بهعنوان سرور استفاده میکنه و ترافیک باید به اینا هدایت بشه.
🧩فرق Stateful یا Stateless چیه؟
لاراول معمولی «Stateless»، یعنی هر درخواست جداست.
ولی Octane «نیمه-Stateful»، یعنی یه سری اطلاعات بین درخواستها تو حافظه میمونه.
📌 مثال واقعی:
تو حالت Stateless، هر بار که صفحهای باز میکنی، سرور بررسی میکنه که لاگین هستی یا نه.
تو حالت Stateful (مثل Octane)، سرور همونطور که وارد شدی، اطلاعاتت رو نگه میداره تا وقتی logout کنی!
🔧خوب Swoole یا RoadRunner؟ کدوم بهتره؟
میشه گفت Swoole سریعتره ولی باید روی PHP نصب بشه، با Xdebug و مانیتورینگها خوب کار نمیکنه.
درحالی که RoadRunner راحتتر نصب میشه و به تنظیم خاصی نیاز نداره، ولی کمی کندتر از Swoole.
🤔 بالاخره Octane رو استفاده کنیم یا نه؟
✅ بله، اگه سایتت زیر بار سنگینه یا سرعتش اذیتت میکنه
❌ نه، اگه با PHP 8 سازگار نیستی یا تیمت هنوز با مفاهیم stateful آشنا نیست
#Laravel #PHP #Octane
@panicdev
👍15🔥1