Crazy Dev ❤️‍🔥💻
44 subscribers
113 photos
16 videos
11 files
69 links
Senior or Crazy ?! ❤️‍🔥
Download Telegram
Laravel Deployment Checklist

#laravel
#deployment
Linux Terminal Commands

#linux
#command
Laravel New Command

php artisan dev

#php
#laravel
#artisan
#development
❤1
Laravel DB::listen(...)

DB::listen() hooks into every SQL query Laravel executes and provides the SQL, bindings, and execution time. Register one listener in a service provider to log slow queries or investigate N+1 problems across the application.

https://www.linkedin.com/posts/povilas-korop-laravel-developer_laravel-tip-dblisten-hooks-into-every-share-7480195268878057472-do-U
❤1
‏Repository Pattern در پروژه‌های لاراول 🧱

یکی از چیزهایی که پروژه‌های لاراول بزرگ را قابل‌نگهداری‌تر می‌کند، جدا کردن منطق دسترسی به دیتابیس از باقی لایه‌هاست. این‌جاست که Repository Pattern خیلی کمک می‌کند.

ایده ساده است: به‌جای این‌که کنترلر مستقیم با Model و کوئری‌ها درگیر شود، با یک اینترفیس صحبت می‌کند. پشت این اینترفیس هر وقت خواستیم می‌توانیم Eloquent را عوض کنیم، کش اضافه کنیم یا منبع داده را تغییر بدهیم، بدون این‌که کنترلر بشکند. 🔧

۱) تعریف Interface برای Repository
<?php

namespace App\Repositories;

interface UserRepositoryInterface
{
public function paginate(int $perPage = 15);

public function findById(int $id);

public function create(array $data);
}


۲) پیاده‌سازی با Eloquent
<?php

namespace App\Repositories;

use App\Models\User;

class EloquentUserRepository implements UserRepositoryInterface
{
public function paginate(int $perPage = 15)
{
return User::query()->latest()->paginate($perPage);
}

public function findById(int $id)
{
return User::query()->findOrFail($id);
}

public function create(array $data)
{
return User::query()->create($data);
}
}


۳) Bind کردن در Service Container لاراول
این کار را معمولاً در AppServiceProvider انجام می‌دهیم:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\UserRepositoryInterface;
use App\Repositories\EloquentUserRepository;

class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->bind(UserRepositoryInterface::class, EloquentUserRepository::class);
}
}


حالا هرجا UserRepositoryInterface را type-hint کنیم، به‌طور خودکار EloquentUserRepository تزریق می‌شود. این همان قدرت Dependency Injection در لاراول است. ⚡️

۴) استفاده در Controller تمیزتر
<?php

namespace App\Http\Controllers;

use App\Repositories\UserRepositoryInterface;
use App\Http\Requests\StoreUserRequest;

class UserController extends Controller
{
public function __construct(
private readonly UserRepositoryInterface $users
) {}

public function index()
{
$users = $this->users->paginate(20);

return view('users.index', compact('users'));
}

public function store(StoreUserRequest $request)
{
$this->users->create($request->validated());

return redirect()->route('users.index');
}
}


حالا کنترلر فقط روی flow و پاسخ تمرکز دارد، نه روی جزئیات کوئری‌ها. این کار:

• تست‌نویسی را ساده‌تر می‌کند (می‌توان Mock از Repository ساخت) ✅
• وابستگی به Eloquent را از سطح کنترلر کم می‌کند ✅
• تغییرات دیتابیس یا اضافه‌کردن لایه cache را راحت‌تر می‌کند ✅

برای مطالعه عمیق‌تر، مستندات Service Container لاراول را ببینید:
https://laravel.com/docs/container

کم‌کم که پروژه بزرگ‌تر می‌شود، استفاده درست از Repository Pattern می‌تواند ساختار کد را منظم‌تر، testableتر و قابل‌گسترش‌تر کند. از قدم‌های کوچک شروع شود؛ مثلاً از ماژول User یا Order و بعد سایر بخش‌ها را به این الگو مهاجرت بدهید. 🚀

🔖 #Laravel #PHP #لاراول #Laravel #Repository_Pattern #Clean_Code #Service_Container #PHP #Architecture

👤 Developix

💎 Channel: @DevelopixLaravel
اگه تا الان ابزار Git رو یادنگرفتین یا آموزش خوبی براش ندیدین،

سایت GitByBit با هدف آموزش Hands-On مشکلتون رو حل میکنه.

حتی اگه گیت هم بلدین یه نگاه به سایتش بکنین. اینقدر این سایت رو جذاب ساخته آقای الکساندر شوتس که میتونی از نگاه کردن به لندینگ پیج سایت بسیار لذت ببری :)

بماند که چند سال طول کشیده بسازتش (پروژه بزرگی هست، بخشهای بسیار زیاد و هماهنگی خیلی زیادی با ابزارهای متنوع داره) ولی یادآور بسیار خوبیه که برای خلق یک محتوای خوب، هر چقدر هم که ابزار حرفهای در اختیار داشته باشی، "زمان" همچنان مهمترین فاکتوره. البته اینم بگم که ایشون دفعه اولشون نیست چنین سایت های آموزشی برای مطالب پیچیده میسازن.

#Git
#Github
#Learn
#AlexanderShvets

GitByBit https://gitbybit.com

@crzy_dev

Resource:
https://www.linkedin.com/posts/reza-shahmoradi-3332a21aa_aexaezaeqaepaezaevabraewahy-share-7481758349378711552-UdbI
❤2
Physics - Doppler Law

#Physics
#Doppler
Forwarded from Tech Stuff
هدر Content Security Policy

این هدر مشخص می‌کنه مرورگر اجازه داره فایل‌های جاوااسکریپت، CSS، تصویر و بقیه منابع رو از چه جاهایی بارگذاری کنه. این کار باعث میشه حتی اگه یه مهاجم موفق بشه کد مخرب رو مثلا از طریق XSS داخل صفحه inject کنه، مرورگر در خیلی از مواقع اجازه اجرای اون کد رو نده.

برای فعال کردنش کافیه هدر CSP رو توی responseهای HTTP قرار بدید و مشخص کنید هر نوع منبع از کجا مجازه لود بشه. مثال (1)، قانون اول (default-src 'self') میگه به طور پیش‌فرض همه منابع فقط از همون دامنه‌ای که خود سایت روی اون اجرا شده (same origin) بارگذاری بشن، مگر اینکه برای نوع خاصی از منابع قانون جداگانه‌ای تعریف شده باشه. قانون دوم (script-src) میگه اسکریپت‌ها فقط از همون دامنه سایت ('self') یا از https://cdn.example.com مجاز به بارگذاری هستن.

فرض کنید سایت شما از https://cdn.example.com برای فایل‌های جاوااسکریپت استفاده می‌کنه. اگر مهاجم بتونه کد (2) رو داخل صفحه تزریق کنه، مرورگر قبل از دانلود فایل، CSP رو بررسی می‌کنه. چون evil.com داخل script-src قرار نداره، درخواست رو بلاک می‌کنه و اسکریپت اجرا نمیشه(3).

@techstuff100
❤1
Forwarded from مـــیـــمـــ دالــ
دوستان یه تجربه مهم از کرون جاب laravel روی هاست اشتراکی داشتم گفتم با شما اشتراک بزارم

من یه مشکل داشتم که پیامک‌های یادآوری توی لوکال کار می‌کردن ولی روی هاست ارسال نمی‌شدن. بعد از کلی بررسی و تست مشخص شد مشکل از این بود که تابع proc_open روی هاست اشتراکی غیرفعال بود.

لاراول وقتی از schedule->command() داخل Kernel.php استفاده می‌کنه پشت‌صحنه به proc_open نیاز داره. چون این تابع روی هاست بسته بود Scheduler اجرا می‌شد ولی اون command مخصوص ارسال پیامک fail می‌شد.

راه‌حل من این بود
به‌جای php artisan schedule:run
خود دستور رو مستقیم داخل Cron Job گذاشتم

اگر روی هاست اشتراکی Laravel Scheduler کار نمی‌کنه حتما proc_open رو چک کنید
❤1
۱۰ گیگ حافظه سرور رو داکر بلعیده بود! 😤

🔥 CI/CD با SSH روی سرور. هر بار docker build. سرور کند شد. کانتینر و ایمیج ۲ گیگ هم نبودن. ۱۰ گیگ مال چی بود؟

docker system df
Build Cache: 9.8GB 😱

هر بیلد cache جدید می‌ساخت، قدیمی پاک نمی‌شد.

💡 چرا؟ داکر cache قدیمی رو نگه می‌داره. شاید یه image دیگه لازمش باشه. نتیجه: تلنبار میشه 📦

🧹 راه‌حل:
docker builder prune --filter "until=24h" --force

قدیمی‌تر از ۲۴ ساعت پاک میشه. امروزی می‌مونه.

🚀 دستورات 🧹
🟢 docker builder prune --force
🟢 docker builder prune --filter "until=24h" --force
🟡 docker builder prune --all --force
🔴 docker system prune --all --volumes --force

🤖 اسکریپت CI/CD
docker compose pull && docker compose up -d --force-recreate
docker builder prune --filter "until=24h" --force

⏰ کرون‌جاب شبانه
0 3 * * * docker builder prune --filter "until=24h" --force

📊 قبل: ۱۰ گیگ | بعد: زیر ۱ گیگ

🎓 درس: بعد از هر بیلد cache قدیمی رو پاک کن 🧠✨

#Docker #DevOps #CICD #LinuxTips #SysAdmin #PersianTech
PHP Full Roadmap

01. PHP Fundamentals
مبانی PHP
الفبای برنامه‌نویسی. یاد می‌گیرید چطور متغیرها (جایی برای نگه‌داری اطلاعات) بسازید، حلقه‌ها (تکرار کارها) بنویسید و توابع (دستورالعمل‌های قابل استفاده مجدد) تعریف کنید.

---

02. Object-Oriented Programming (OOP)
برنامه‌نویسی شیء‌گرا
روشی برای مرتب کردن کدها با استفاده از "کلاس" (طرح اولیه) و "شیء" (نمونه ساخته شده از آن طرح). مثل یک "قالب شیرینی‌پزی" (کلاس) که "شیرینی" (شیء) درست می‌کند. این باعث می‌شود کدهای شما تمیزتر و قابل استفاده مجدد باشند.

---
03. Version Control (Git)
کنترل نسخه (Git)
سیستمی برای ثبت و ذخیره‌سازی تاریخچه تغییرات کدهایتان. مثل یک "دکمه بازگشت به عقب" قدرتمند است. اگر کدی را خراب کنید، می‌توانید به سادگی به نسخه‌ی قبلی و سالم برگردید. همچنین به شما اجازه می‌دهد با تیم‌های دیگر روی یک پروژه کار کنید بدون اینکه کدهای همدیگر را خراب کنید. (این پله در تصویر وجود نداشت، اما برای یک توسعه‌دهنده واقعی حیاتی است!)

---

04. Composer & Autoloading
ابزار Composer و بارگذاری خودکار
ابزاری برای دانلود و استفاده از کدهای دیگران (کتابخانه‌ها)، تا مجبور نباشید همه چیز را از صفر بنویسید. به‌طور خودکار فایل‌های مورد نیاز را پیدا و وارد برنامه می‌کند، بدون اینکه نیاز باشد آنها را دستی وارد کنید.

---

05. SQL & Databases
SQL و دیتابیس‌ها (پایگاه داده)
جایی که اطلاعات وب‌سایت (مثل مشخصات کاربران یا پست‌های وبلاگ) برای همیشه ذخیره می‌شود. SQL زبان گفتگو با این مخازن اطلاعاتی است تا بتوانید اطلاعات را ذخیره، پیدا و ویرایش کنید.

---

06. HTTP & REST APIs
HTTP و REST APIها
نحوه ارتباط کد PHP با بیرون (مثل مرورگر وب یا اپلیکیشن موبایل). این بخش مثل "پستچی" است که درخواست‌ها را می‌برد و پاسخ‌ها را برمی‌گرداند.

---

07. Modern PHP
PHP مدرن
استفاده از نسخه‌های جدید PHP (مثل نسخه ۸). این ویژگی‌های به‌روز به شما کمک می‌کنند کدهای تمیز، کوتاه‌تر و قدرتمندتری بنویسید.

---

08. Design Patterns & SOLID
الگوهای طراحی و SOLID
این‌ها "دستورالعمل‌های بهترین شیوه" برای سازمان‌دهی کد هستند. رعایت آن‌ها باعث می‌شود وقتی بعداً بخواهید چیزی را تغییر دهید، کل سایت خراب نشود.

---

09. Laravel / Symfony
لاراول / سیمفونی
این‌ها "چارچوب‌ها" یا فریم‌ورک هستند. یک اسکلت و ابزار آماده به شما می‌دهند تا وب‌سایت‌های پیچیده را خیلی سریع‌تر از کدنویسی دستی بسازید.

---

10. Authentication & Security
احراز هویت و امنیت
به وب‌سایت یاد می‌دهید که کاربران کیستند (سیستم لاگین/رمز عبور)، و از وب‌سایت در برابر هکرها محافظت می‌کنید (جلوگیری از نفوذ یا سرقت اطلاعات).

---

11. Testing
تست‌نویسی
نوشتن برنامه‌های رباتیک که به طور خودکار کدهای شما را چک می‌کنند. این کار تضمین می‌کند که وقتی ویژگی جدیدی اضافه می‌کنید، بخش‌های قبلی خراب نشوند.

---

12. Caching & Performance
کش کردن (Caching) و بهینه‌سازی عملکرد
ذخیره اطلاعات پرکاربرد در یک حافظه موقت سریع‌تر. این کار باعث می‌شود سایت با سرعت نور لود شود و فشار روی سرور کم شود.

---

13. Queues & Background Jobs
صف‌ها (Queues) و کارهای پس‌زمینه
انجام کارهای سنگین (مثل فرستادن ایمیل برای ۱۰۰۰ نفر) در پشت صحنه. کاربر مجبور نیست صبر کند تا همه ایمیل‌ها ارسال شوند؛ کار در یک صف گذاشته می‌شود و بعداً پردازش می‌شود.

---

14. Docker & Linux
داکر (Docker) و لینوکس
داکر یک "جعبه مجازی" می‌سازد که باعث می‌شود کد شما دقیقاً روی کامپیوتر خودتان و روی سرور یکسان کار کند. لینوکس هم سیستم‌عاملی است که اکثر سرورها از آن استفاده می‌کنند.

---

15. Cloud & Deployment
ابر (Cloud) و استقرار (Deployment)
فرآیند انتقال کد نهایی شما از کامپیوتر شخصی به اینترنت (با استفاده از سرویس‌هایی مثل AWS یا DigitalOcean) تا کل دنیا بتوانند از سایت شما بازدید کنند.

---

16. Microservices & Event-Driven
میکروسرویس‌ها و رویدادمحوری
به جای ساختن یک اپلیکیشن غول‌پیکر، آن را به چندین اپلیکیشن کوچک و مستقل تقسیم می‌کنید که با هم ارتباط دارند. این کار مدیریت پروژه‌های بزرگ را آسان‌تر می‌کند.

---

17. High Load & Scalability
بار بالا (High Load) و مقیاس‌پذیری
آماده‌سازی سیستم برای ورود ترافیک عظیم. اگر هزاران کاربر همزمان وارد شوند، این مرحله نحوه اضافه کردن سرورهای بیشتر و تقسیم فشار را آموزش می‌دهد تا سایت از کار نیفتد.

---

18. AI Integration & MCP
یکپارچه‌سازی هوش مصنوعی (AI Integration) و MCP
پیشرفته‌ترین مرحله. شما برنامه PHP خود را به سرویس‌های هوش مصنوعی (مثل ChatGPT یا Claude) متصل می‌کنید تا قابلیت‌هایی مثل چت‌بات‌ها، تولید محتوا یا تحلیل داده‌های پیچیده را به سایت اضافه کنید.
#php
#map
❤1🔥1
هیچ وب سایت وردپرسی دیگه امن نیست، به زودی هک میشین! ☣️


به تازگی یه یک آسیب پذیری جدید در هسته ی Wordpress کشف شده که بدون احراز هویت، هکر میتونه با یه درخواست ساده به سرور دسترسی بگیره!
اسم این آسیب پذیری wp2shell هست(منو یاده React2Shell انداخت)

چیزی نزدیک به 500 میلیون وب سایت در جهان از وردپرس استفاده میکنن و این یعنی فاجعه برای سیستم هایی که آپدیت نشدن؛ اکثر فروشگاه ها و وبلاگ های ایرانی هم با وردپرس هست، حتی شرکت های بزرگ!⚠️

اگر میخواید بررسی کنید که سایت شما هم آسیب پذیر هست میتونید از این سایت استفاده کنید 👈 wp2shell.com

سریعا ورد پرس خودتون رو به آخرین نسخه آپدیت کنید که مورد نفوذ قرار نگیرین!

این هم لینک poc در گیت هاب هست 👇
https://github.com/Icex0/wp2shell-poc

پ.ن: این سایت هایی هست که از ترب جمع آوری کردم و همشون هم وردپرسی هستن!

Resource:
https://www.linkedin.com/posts/rahmansec_%D9%87%DB%8C%DA%86-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3%DB%8C-%D8%AF%DB%8C%DA%AF%D9%87-%D8%A7%D9%85%D9%86-%D9%86%DB%8C%D8%B3%D8%AA-%D8%A8%D9%87-%D8%B2%D9%88%D8%AF%DB%8C-share-7484707742310641664-WszE

#hack
#wordpress
#php
#bug
❤1