Panic Dev – Telegram
Panic Dev
1.11K subscribers
123 photos
29 videos
2 files
132 links
Panic Dev; your Panic's solution 🔥

🍿 Telegram
🔰 t.me/PanicDev

🍿 Laravel Community
🔰 t.me/LaravelGroups

😇 Contact Me
🔰 t.me/MentionHex

Thanks for sharing us 💛
Download Telegram
🐛
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
🎯 وقتی شرطی نوشتن قشنگ‌تر می‌شه!

🤔 میدونی Conditionable چیه؟

یه Trait جدیده که به کلاس Fluent اضافه شده و بهت اجازه می‌ده توی زنجیره‌ی متدها (method chaining) شرط بذاری، بدون اینکه if/else وسط کدت بیاد و ظاهرشو به هم بزنه.

🔁 قبل از Conditionable:

$data = Fluent::make([
'name' => 'Michael Nabil',
'developer' => true,
'posts' => 25,
]);

if (auth()->isAdmin()) {
$data = $data->set('role', 'admin');
} else {
$data = $data->forget('posts');
}


بعد از Conditionable:

$data = Fluent::make([...])
->when(auth()->isAdmin(), fn ($d) => $d->set('role', 'admin'))
->unless(auth()->isAdmin(), fn ($d) => $d->forget('posts'));


زیبا نیست؟ 😍

📦 مثال واقعی توی API Resource:


return Fluent::make([
'id' => $user->id,
'name' => $user->name,
])
->when($request->user()->can('view-statistics'), fn ($d) =>
$d->set('post_count', $user->posts()->count())
->set('comment_count', $user->comments()->count()))
->when($user->isVerified(), fn ($d) =>
$d->set('verified', true)
->set('verification_date', $user->verified_at->toDateString()))
->unless($request->includesPersonalData(), fn ($d) =>
$d->forget('email'))
->toArray();


همه چیز شرطیه، ولی هنوز قشنگ و قابل‌خونده! 🔥


🧠 نتیجه‌گیری:
با when() و unless()، می‌تونی شرط‌ها رو تو دل همون زنجیره بنویسی و خوندن کدت رو فوق‌العاده راحت کنی.
لاراول بازم یه قدم دیگه برای تجربه بهتر توسعه‌دهنده برداشته. 👨‍💻💚



منبع : مقاله

@panicdev
👍22👎3👌2🔥1
بله دوستان 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
اگه دوس دارید با مفهوم اسکوپ و کوئری رجیستری توی لاراول عمیقا آشنا بشید و بتونید مثل یه Pro Player ازشون استفاده کنید این مقاله زیبا و کامل رو از دست 👀

https://laravel-news.com/query-scopes
🔥9
🚀 متد Dispatch در Laravel یعنی چی؟ پشت صحنه‌اش چیه؟

وقتی توی لاراول می‌نویسی:

MyJob::dispatch($data);


داری یه job رو می‌فرستی به صف (queue)، ولی پشت پرده کلی داستان اتفاق می‌افته که فهمیدنش می‌تونه کمکت کنه حرفه‌ای‌تر کار کنی 👇

🔹 اولین مرحله:
لاراول با dispatch()، Bus::dispatch() یا helper با نام dispatch() شروع می‌کنه. این‌ها همه از کامپوننت Bus استفاده می‌کنن تا job رو آماده‌ی ارسال کنن.

🔹 چطوری آماده می‌کنه؟

بسته به نوع job، یکی از این ۳ شیء ساخته می‌شه:

متد PendingDispatch —> برای job معمولی

متد PendingChain —> برای job‌های زنجیره‌ای

متد PendingBatch —> برای batch‌ها

🔐 جاب یکتا (Unique):
اگه job از ShouldBeUnique استفاده کنه، لاراول بررسی می‌کنه که توی صف، همین job با همون شناسه (ID) وجود داره یا نه.
اگه باشه و هنوز پردازش نشده، job جدید ارسال نمی‌شه.

فقط برای job معمولی فعاله، نه chain یا batch.

🔄 وقتی از chain یا batch استفاده می‌کنی:

Bus::chain([...]);
Bus::batch([...]);


توی chain همه jobها به اولین job چسبید‌ان.
توی batch اطلاعاتشون توی دیتابیس ذخیره می‌شه.

💾 بعد از این آماده‌سازی‌ها، اگه dispatch بعد از commit تنظیم شده باشه:
لاراول صبر می‌کنه تا همه تراکنش‌های دیتابیس تموم شن (موفقیت‌آمیز).
اگه rollback شه، job هم اصلاً فرستاده نمی‌شه.

🧬 تبدیل job به payload:

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

تنظیمات مثل maxTries, timeout, retryUntil

سریالایز کردن job با serialize() (و تبدیل مدل‌ها با trait مخصوص)

رمزنگاری job اگه از ShouldBeEncrypted استفاده کرده باشه

اجرای hook‌ها مثل Queue::createPayloadUsing()

در نهایت تبدیل به JSON و ارسال به صف (database, Redis, SQS و...)

📬 برای event listener، mail, notification و broadcastها:
اگه ShouldQueue رو پیاده‌سازی کرده باشن، مستقیم میان توی queue (و نه Bus).
یعنی قابلیت‌هایی مثل unique، chain یا batch اینجا اعمال نمی‌شن.

🧠 و اما closure؟
اگه بخوای یه closure رو بفرستی به صف، Laravel با SerializableClosure سریالایزش می‌کنه، رمزنگاری‌ش می‌کنه و با job مخصوصش (CallQueuedClosure) می‌فرسته صف.

🎯 جمع‌بندی:
دستور Job dispatch فقط یه خط نیست! یه مکانیزم کامل پشتشه که با قدرت و امنیت بالا job رو آماده می‌کنه، serialize و encrypt می‌کنه، و با دقت می‌فرسته صف. یاد گرفتنش کمک می‌کنه کدت تمیزتر و قابل کنترل‌تر باشه 💪


🔗 منبع : مقاله

@panicdev
👌13👍1
تجربه کسی که راه زیادی رو رفته تا گلوگاه های یک زیرساخت و شناسایی کنه برای اینکه بتونه پاسخگوئه یک میلیون یوزر باشه .


https://medium.com/@kanishks772/scaling-to-1-million-users-the-architecture-i-wish-i-knew-sooner-39c688ded2f1
14👍2🔥1
اگه شما هم براتون سواله که مدل های Max توی Cursor چقدر هزینه برمیدارن دعوتتون میکنم به دیدن این اسکرین شات :))


من از Claude 4 Opus Thinking Max استفاده کردم و خروجی این شده!

یک prompt = مصرف ۱۰۳.۶ تا فست ریکوئست و ۵ دلار هزینه مازاد 👀
🤣6😢2👍1
دوتا پکیج زیبا ببینیم ، هم کاراییشون زیباست هم سورس کدشون

https://prismphp.com

https://laragent.ai

خودم به شخصه prism پسندیدم ، ولی خوب laragent هم تحت توسعست ، احتمالا به زودی چیزای بهتری و بیشتری ساپورت کنه .

@panicdev
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 حافظه رم Redis پر شد؟ باید چه کار کنیم؟

همون طور که میدونید Redis یه پایگاه داده‌ سریع و درون‌حافظه‌ایه که خیلی وقتا به‌عنوان کش (Cache) استفاده می‌شه.

اما سؤال مهم: وقتی حافظه Redis پر شد، چه اتفاقی می‌افته؟ 🤔

📦 ردیس چندین پالسی حذف داده (Eviction Policy) داره که می‌تونی با maxmemory-policy تنظیمشون کنی.
بیا با هم این سیاست‌ها رو مرور کنیم:

🔒 1. پالسی noeviction (بدون حذف):

هیچ داده‌ای حذف نمی‌شه.

اگه حافظه پر باشه، خطا می‌ده و کلید جدیدی نمی‌ذاره.

📌 مناسب برای مواقعی که حذف داده اصلاً مجاز نیست.

🧠 2. پالسی volatile-lru:

فقط کلیدهایی که expire دارن و کمتر استفاده شدن حذف می‌شن.

📌 خوب برای داده‌های موقتی و نه چندان مهم.

📊 3. پالسی allkeys-lru:

کلیدهایی که کمتر استفاده شدن حذف می‌شن، فرقی نداره expire دارن یا نه.

📌 ایده‌آل برای کش‌هایی که دسترسی بهشون الگوی مشخصی نداره.

🎲 4. پالسی volatile-random:

یه کلید رندوم که expire داره حذف می‌شه.

📌 ساده، ولی شاید کلید مهمی رو حذف کنه.

🎲 5. پالسی allkeys-random:

هر کلیدی ممکنه رندوم حذف شه، چه expire داشته باشه چه نه.

📌 برای سیستم‌های خیلی حساس توصیه نمی‌شه.

6.پالسی volatile-ttl:

کلیدی که زودتر expire می‌شه اول حذف می‌شه.

📌 منطقی برای داده‌هایی که زمان مصرفشون مهمه.

📉 7. پالسی volatile-lfu:

کلیدهایی با expire که کم استفاده شدن حذف می‌شن.

📌 خوب برای حفظ داده‌های پرکاربرد و حذف داده‌های کم‌مصرف.

📉 8. پالسی allkeys-lfu:

هر کلیدی (با یا بدون expire) که کم استفاده شده باشه حذف می‌شه.

📌 برای کش‌هایی که رفتار مصرف داده‌هاش مدام تغییر می‌کنه عالیه.


@panicdev
🔥11👍2
استخدام برنامه‌نویس ارشد (Full-Stack (PHP

شرط بررسی رزومه:
حداقل ۵ سال سابقه کار حرفه‌ای در حوزه توسعه نرم‌افزار و برنامه‌نویسی

حقوق:
+۵۰ میلیون تومان
* طبیعتا بسته به تخصص و رزومه میتونید عدد مدنظرتون رو پیشنهاد بدید و محدودیتی وجود نداره)

مهارت‌های فنی مورد نیاز:
تسلط کامل به PHP
آشنایی عمیق با معماری نرم‌افزار (Software Architecture)
آشنایی با Redis
تجربه در طراحی و توسعه API
آشنایی با Docker
و ...

https://jobinja.ir/1370018
🔥3
Audio
خلاصه کتاب نردبان شکسته از آقای علی بندی

برای من جالب بود ،‌ گفتم به اشتراک بزارم .
نابرابری چی هست
نابرابری لازم هست ؟ اگر بله ! چقدر لازم هست
تفاوت فقر با نابرابری چی هست
اینکه نابرابری و فقر چقدر تاثیر دار روی تصمیماتتون،‌ روی تفکراتتون
🔥6
دوستان کسی تاحالا کورس سافت اسکیل از جایی شرکت کرده؟ نتیجه‌ش چی بوده؟
کلا چطوری سافت اسکیل هاتون رو بهبود میدید؟
⚠️ Update: #Iran has now been disconnected from the global internet for 36 hours; live metrics show national connectivity remains in the low few percent of ordinary levels with only a handful of users able to connect via multi-hop VPNs 📉

🔗 NetBlocks (@netblocks)
Forwarded from Armin's Notes 🪴
به زووودی 🤩
حدس میزنید چی باشه؟ :))
❤‍🔥7
داشتم تجربه کسی که داشته روی روش های توسعه نرم افزار ژاپنی ها مطالعه میکرده میخوندم
به قدری ارزشمند و پر محتوا و قابل تعمل هستش که فک کردم به اشتراک گذاریش خالی از لطف نباشه .

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


امیدوارم که روزی این روش ها در جاهای دیگه دنیا (غرب و ایران ) هم قابل پیاده سازی باشه . 🥺


———————————————————————-

می فرماید که :

سه ساله دارم روی روش‌های توسعه نرم‌افزار ژاپنی مطالعه می‌کنم و چیزی که کشف کردم، دیدم رو نسبت به کدنویسی کاملاً تغییر داد.

در حالی که برنامه‌نویس‌های غربی دائم درگیر آخرین فریم‌ورک جاوااسکریپت هستن یا سر اینکه تب بزنن یا اسپیس، بحث می‌کنن، برنامه‌نویس‌های ژاپنی بی‌سروصدا دارن یکی از قابل‌اعتمادترین و قابل‌نگهداری‌ترین نرم‌افزارهای دنیا رو می‌سازن

رمز کارشون چیه؟
اونا با کد مثل یه تویوتا کمری رفتار می‌کنن، نه یه تسلا.
Please open Telegram to view this post
VIEW IN TELEGRAM