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
🚀 فرصت همکاری برای دولوپر PHP / Laravel

ما به دنبال یک دولوپر میدلول یا سنیور هستیم که هفته‌ای حداقل ۳۰ ساعت زمان برای همکاری داشته باشه.

🔹 مهارت‌ها و توانایی‌های مورد نیاز:

تسلط به Laravel و PHP
تجربه در توسعه وب‌سرویس‌ها با رعایت استانداردها و Best Practices
توانایی مستندسازی وب‌سرویس‌ها
توانایی تست‌نویسی برای وب‌سرویس‌ها
آشنایی و توانایی توسعه پنل ادمین با Filament
مهارت کافی در MySQL و Redis
آشنایی نسبی با Docker

فردی مسئولیت‌پذیر با روحیه کار تیمی

📩 اگر زمان و توانایی لازم رو دارید، لطفاً هزینه ساعتی به همراه رزومه خودتون رو به دایرکت همین کانال ارسال کنید.


🏢 نحوه همکاری به صورت دورکار است

⚠️ فقط پیام‌های ارسال شده به دایرکت همین کانال بررسی میشن.



با سپاس از همراهی شما ❤️
قابلیت جدید تلگرام برای کانال ها

دایرکت به ادمین کانال ها
🤣8👍2🔥2
۱️⃣ محافظ نامرئی جلوی SQL Injection
اشتباه مرسوم: استفاده مستقیم از کوئری خام.
راه‌حل: همیشه از بایندینگ استفاده کن. اینطوری هم امن‌تره، هم سریع‌تر.

//  Bad
DB::select("SELECT * FROM users WHERE email = '$email'");

// Secure
User::whereRaw("MATCH (bio) AGAINST (? IN BOOLEAN MODE)", [$searchTerm])
->where('is_public', true)
->get();php



۲️⃣ لیست سیاه برای توکن‌های Sanctum
توکن‌های دزدیده‌شده تا زمان انقضا معتبر می‌مونن.
با یه میان‌افزار ساده می‌تونی سریعاً توکن‌های مشکوک رو باطل کنی.
اگه Redis هم بذاری وسط، سرعت چک کردن میشه لحظه‌ای.


public function handle($request, $next) {
if ($this->isCompromised($request)) {
$request->user()->currentAccessToken()->delete();
}
return $next($request);
}


۳️⃣ دانلود استریم‌شده با cursor()
هیچوقت کل دیتابیس رو یه‌جا نیار بالا!
با cursor() و streamDownload می‌تونی میلیون‌ها ردیف رو با مصرف رم خیلی کم استریم کنی.

return response()->streamDownload(function () {
foreach (User::where('active', true)->cursor() as $user) {
echo json_encode($user) . "\n";
}
}, 'users.jsonl');


۴️⃣ لیمیت هوشمند با اثرانگشت کاربر
محدود کردن فقط بر اساس آی‌پی ساده‌ست و قابل دور زدن.
ترکیب آی‌پی + یوزر ایجنت رو هش کن، اون بشه کلید محدودیت. اینطوری حملات brute-force عملاً می‌ریزه.

RateLimiter::for('api', function (Request $request) {
$fingerprint = sha1($request->userAgent() . $request->ip());
return Limit::perMinute(100)->by($fingerprint);
});


۵️⃣ گرم کردن روت‌ها با Octane
لاراول به صورت پیش‌فرض روت‌ها رو در لحظه بوت می‌کنه.
با route:cache و Octane می‌تونی استارت سرور رو تا چند برابر سریع‌تر کنی.

php artisan route:cache
php artisan octane:start --workers=8


۶️⃣ محافظت از بلید جلوی XSS
وقتی HTML کاربر ذخیره میشه، {!! !!} خیلی خطرناکه.
راه‌حل: Purifier برای تمیز کردن کد + CSP nonce برای اسکریپت‌ها.


{!! Purifier::clean($html, ['HTML.Allowed' => 'a[href]']) !!}

<noscript nonce="{{ csp_nonce() }}">
var data = @json($safeData);
</noscript>


۷️⃣ شاردینگ دیتابیس برای مقیاس بی‌نهایت
وقتی ترافیک سنگین میشه، دیتابیس نفسش می‌گیره.
لاراول اجازه میده برای هر یوزر یا تننت یه کانکشن جدا تعریف کنی، بدون بازنویسی کل اپ.

User::on('user_shard')->find(15000);


۸️⃣ چرخش کلید رمزنگاری بدون داون‌تایم
عوض کردن APP_KEY قدیما یعنی همه لاگ‌اوت بشن.
با نگه داشتن کلید قبلی و تعریف کلید جدید، می‌تونی بدون مشکل کلید رو بچرخونی.

# .env
APP_KEY=new_key
PREVIOUS_APP_KEY=old_key

public function boot() {
Encrypter::rotate($this->app['config']['app.key'], 'new_key');
}


📎منبع

@panicdev

#laravel #tips
🔥10
#تامل

تاریخ نمونه‌ای را به یاد ندارد که فاتحی از فتوحاتش سیر شده باشد.
— STEFAN ZWEIG


فرض کن همه‌ی اهداف زندگی‌ات تحقق یافته باشند؛ همه‌ی تغییرات در نهادها و عقایدی که انتظارش را می‌کشی همین حالا کاملاً محقق شوند؛ آیا این برایت شادی و خوشبختی بزرگی خواهد بود؟
👍12👌7🕊4
#tips

هر موقع که فیچیر لازم و یا آماده بود مایگریشن ران میشه
🔥19👎2
ابزار NATS یک سیستم پیام‌رسان (messaging system) ساده، سبک و فوق‌العاده سریع است که برای ارتباط سرویس‌ها در معماری‌های مدرن مثل Microservices و Cloud-Native طراحی شده.
فلسفه‌ی NATS اینه که حداقل پیچیدگی رو بیاره، در عین حال مقیاس‌پذیر و قابل اعتماد باشه.

🔹 مزیت‌های NATS نسبت به Kafka

⚡️ سرعت و سبک بودن
این NATS خیلی سبک‌تر از Kafka هست و برای سناریوهایی که نیاز به latency پایین و سرعت بالا دارن، انتخاب بهتری محسوب میشه.

🛠 سادگی در راه‌اندازی
کافکا معماری پیچیده‌تری داره (Zookeeper، Brokerها و ...)، درحالی‌که NATS خیلی راحت‌تر بالا میاد و نیاز به سرویس‌های جانبی نداره.

☁️ طراحی Cloud-Native
همچنین NATS از اول برای محیط‌های cloud-native و containerized مثل Kubernetes ساخته شده و خیلی خوب باهاشون جور درمیاد.

📦 انعطاف در الگوهای ارتباطی
و NATS هم از Pub/Sub پشتیبانی می‌کنه، هم Request/Reply، هم Queue Groups. این یعنی می‌تونه بسته به نیاز شما مثل یک MQ ساده یا حتی یک سیستم event-driven پیچیده عمل کنه.

🔄 استفاده در سناریوهای کوتاه‌عمر
کافکا بیشتر برای پردازش داده‌های سنگین و ذخیره طولانی‌مدت مناسب هست، اما NATS عالیه برای ارتباطات لحظه‌ای (real-time communication) بین سرویس‌ها.


https://nats.io
صفحه اکسپشن جدید لاراول رو دیدید؟ 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36❤‍🔥2
سوال مصاحبه :

If you need to delete millions of records from a table in production database, what would you do ?

جوابش بنظرتون چیست ؟
در سیستم های توزیع شده
چطور میتونیم ایدی یکتا یا یونیک جنریت کنیم ؟

How we can generate unique ID in distributed systems ?
👌3
Forwarded from Armin's Notes 🪴
Missed me? 👀 im back :p
🔥13🎉4❤‍🔥3😁1
Forwarded from Armin's Notes 🪴
کس دیگه‌ای هم هست یادش باشه یه اموجی اسب دریایی داشتیم؟
👍20🌚2😐2👎1🐳1
👍10👌4