Oh Dear یه سرویس مانیتورینگ جامع برای وبسایتهاست که از آپتایم گرفته تا SSL، لینکهای شکسته، پرفورمنس، DNS، دامنه، و حتی کرونجابها رو زیر نظر میگیره. وقتی مشکلی پیش میاد، از طریق ایمیل، SMS، Slack، Discord، PagerDuty و دهها کانال دیگه بهت خبر میده. این سرویس به تیمهای فنی، توسعهدهندهها و مارکترها کمک میکنه که قبل از کاربر از مشکلات سایتشون باخبر بشن.
MyIP یه ابزار متنباز و جامعه که همه چیزی که دربارهی IP و شبکهات نیاز داری رو یهجا بهت میده. از نمایش IP محلی و عمومی گرفته تا تست نشت DNS، بررسی سانسور سایتها، WebRTC Detection و حتی اثرانگشت مرورگر. میتونی هم از دمو آنلاینش استفاده کنی، هم روی سرور خودت با Node.js یا Docker راهاندازیش کنی. برای کار کامل، به اکانت رایگان MaxMind برای دیتابیسهای GeoLite2 نیاز داری.
Paddle از صورتحساب مبتنی بر مصرف پشتیبانی میکنه، ولی پیادهسازی درستش خیلی پیچیدهتر از چیزیه که تبلیغاتش نشون میده. نیکلا بووه، سازندهی Phare، تجربهی مهاجرت از Stripe به Paddle رو با تمام دردسرهاش به اشتراک گذاشته. مشکل اصلی اینه که Paddle نه Meter API داره، نه grace period برای فاکتور، نه جمعآوری خودکار مصرف. راهحل؟ ترکیب زیرکانهای از zero-value subscription، one-time charge و یه سیستم دستساز برای مدیریت دورهی صدور فاکتور.
سرویس مانیتورینگ Oh Dear یه سری بهبود جدی به API خودش داده تا ایجنتهای کدنویسی مثل Claude Code و Codex بتونن راحتتر باهاش کار کنن. حالا میشه تاریخچهی اجرای چکها رو گرفت، نتایج دو روز مختلف رو با هم مقایسه کرد و لینک مستقیم به داشبورد رو توی هر پاسخ API دید. علاوه بر این، مستندات سایت بهصورت Markdown سرو میشه که حجم توکن مصرفی ایجنتها رو تا ۹۶٪ کاهش میده. این تغییرات باعث میشه ایجنتها بدون نیاز به اطلاعات هاردکد شده، بهتنهایی بتونن وضعیت سایت رو آنالیز کنن.
وقتی ایجنتهای کدنویسی هوش مصنوعی وارد پروژه میشن، بزرگترین نگرانی دیگه کیفیت کد نیست — بلکه بهمریختگی تاریخچهی گیته. گیتباتلر با ارائهی یه ورکفلوی ساختارمند، این مشکل رو حل میکنه. این ابزار به ایجنتها اجازه میده بدون خراب کردن برنچها کار کنن و بازبینی و رولبک رو برای توسعهدهنده ساده نگه میداره. مرزبندی واضح وظایف و امکان مرور امن تغییرات، ستون اصلی این رویکرده.
یه توسعهدهنده به سقف ۲۰۰۰ دقیقه رایگان GitHub Actions رسیده بود و به جای پرداخت هزینه بیشتر، Mac Mini M4 خونگیش رو به یه سرور CI تبدیل کرده. با راهاندازی ۴ تا self-hosted runner موازی زیر یه یوزر macOS اختصاصی، جابها تا ۴.۸ برابر سریعتر اجرا میشن و محدودیت دقیقهای هم وجود نداره. وابستگیها بین رانها روی دیسک میمونن و نیازی به نصب مجدد نیست که خودش یه مزیت بزرگه. این روش برای سولو دولوپرهایی که روی ریپوهای خصوصی کار میکنن ایدهآله، ولی برای تیمها توصیه نمیشه.
Route Binding یکی از قابلیتهای لاراوله که خیلی راحت ازش استفاده میکنیم، ولی کمتر پیش میاد بدونیم دقیقاً پشت صحنه چی میگذره. وقتی یه مسیر مثل /users/{user} تعریف میکنی و User $user رو در کنترلر type-hint میزنی، لاراول بهصورت خودکار مدل رو برات میآره. این اتفاق نه توی کنترلر، بلکه خیلی زودتر و در لایهی میانافزار SubstituteBindings رخ میده. این مقاله کل مسیر از URI خام تا تحویل مدل به کنترلر رو مرحلهبهمرحله توضیح میده و نشون میده explicit binding و implicit binding هر کدوم چه مسیری رو طی
Spatie در ۳۰ مارس ابزار جدیدی به اسم Scotty معرفی کرد که جایگزینی برای Laravel Envoy محسوب میشه. Scotty به جای فرمت Blade از سینتکس خالص bash استفاده میکنه و خروجی ترمینال بهمراتب بهتری داره. اگه روی سرورهای شخصی مثل DigitalOcean یا Hetzner دیپلوی میکنی، این ابزار یه ارتقای واقعی محسوب میشه. Scotty امکاناتی مثل جدول خلاصهی زمانبندی، pause/resume حین دیپلوی، دستور doctor برای بررسی پیشاز-دیپلوی، و حالت --pretend رو هم داره.
LLMها ابزارهای قدرتمندیه، اما ابزار هستن — نه جایگزین تخصص انسانی. نویسندگان این مقاله معتقدن که نحوهی استفاده از AI کیفیت خروجی رو تعیین میکنه، نه خودِ AI. توسعهدهندههایی که دانش و تجربهی واقعی دارن، از LLMها به عنوان اهرم تقویت میکنن؛ اما اونهایی که بدون پایه به AI تکیه میکنن، فقط روی قلهی کوه دانکینگ-کروگر وایمیسن. سوال اصلی اینه که ابزارها نهفقط به ما خدمت میکنن، بلکه ما رو هم شکل میدن.
traceroute یکی از ابزارهای کلاسیک شبکهست که نشون میده یه پکت اینترنتی از چه مسیری عبور میکنه تا به مقصد برسه. اما جادوی اصلیش یه ترفند سادهست: دستکاری فیلد TTL در هدر IP. نویسنده این مقاله تصمیم گرفته با حدود ۸۰ خط Rust، یه نسخهی کوچیک traceroute بنویسه تا ببینه دقیقاً چطور کار میکنه. نتیجه؟ یه پیادهسازی جذاب که مفاهیم پایهی شبکه مثل ICMP و TTL رو به شکل عملی توضیح میده.
یه مهندس ارشد آنتروپیک توضیح میده که بعد از یه حدی، مهارت فنی دیگه مهمترین عامل موفقیت نیست؛ بلکه توانایی پیدا کردن کارهای «پراثر» (high-leverage) تفاوت اصلی رو میسازه. این توانایی به دو مؤلفهی اصلی برمیگرده: Agency (ابتکار عمل و پیگیری) و Taste (شم درست برای انتخاب مسئله و رویکرد). بدون Taste احتمالاً روی چیز اشتباهی کار میکنی، و بدون Agency حتی اگه مسیر درست رو بشناسی، به جایی نمیرسی.
اگه توی Laravel Forge از SQLite استفاده میکنی و zero-downtime deployment داری، احتمالاً با یه مشکل جدی روبرویی: هر بار که دیپلوی میکنی، کل دیتابیست پاک میشه! دلیلش اینه که Forge هر ریلیز رو توی یه پوشه جداگانه میریزه و یه symlink رو جابهجا میکنه. چون فایل database.sqlite داخل پوشه ریلیز قرار داره، با هر دیپلوی از دسترس خارج میشه. راهحل اینه که فایل دیتابیس رو به داخل storage/ منتقل کنی؛ چون این پوشه از قبل بهعنوان shared path توسط Forge مدیریت میشه و بین ریلیزها پایدار میمونه.
وقتی چند پروسه تست بهصورت موازی اجرا میشن و همه میخوان از یه دیتابیس مشترک استفاده کنن، کارها خراب میشه. یه راهحل ساده با file lock میشه این تداخل رو از بین برد. یه کلاس PHP کوچیک با flock میتونه دسترسی به دیتابیس رو ترتیببندی کنه تا هر پروسه نوبتی وارد بشه. این روش مخصوصاً برای feature testهایی که واقعاً با دیتابیس کار میکنن خیلی به درد میخوره.
چند ماه پیش یه آسیبپذیری RCE بحرانی توی Livewire v3 کشف شد که به مهاجمان ناشناس اجازه میداد کد دلخواه اجرا کنن. مشکل اصلی اینه که بین انتشار پچ و دیپلوی شدنش روی سرور، یه فاصله خطرناک وجود داره. با ترکیب پکیج spatie/laravel-health و سرویس Oh Dear میشه این فاصله رو به حداقل رسوند؛ بهطوری که هر دقیقه یهبار وضعیت پکیجهای نصبشده روی سرور چک میشه و اگه آسیبپذیری شناختهشدهای پیدا شد، فوری اعلان میرسه. این روش برعکس Dependabot که فقط ریپو رو اسکن میکنه، مستقیماً سرور پروداکشن رو زیر نظر دا
وقتی کاربر یه سبد خرید با چند آیتم ارسال میکنه، اعتبارسنجی هر product_id با Rule::exists بهصورت پیشفرض باعث N+1 کوئری میشه؛ یعنی برای هر آیتم یه SELECT جداگانه اجرا میشه. لاراول یه راهحل تمیز داره: دادههای موردنیاز رو قبل از اجرای rules() در متد prepareForValidation() با یه کوئری واحد prefetch کن و بعد هر آیتم رو در حافظه چک کن. اینطوری هم N+1 حذف میشه و هم پیغام خطا دقیقاً روی همون فیلد خاص (مثلاً items.2.product_id) نشون داده میشه.
تیم اسپیشی (سازندگان Flare و Ray) یه ابزار هلپدسک جدید به اسم There There ساختن که هوش مصنوعی رو از همون اول توی هستهاش جا داده. این سیستم هر تیکت رو وکتوریزه میکنه تا جستجو بر اساس معنا باشه نه کلمات عینبهعین. هوش مصنوعی بر اساس تاریخچه تیکتها، مستندات و ابزارهای خارجی پیشنویس جواب آماده میکنه تا تیم پشتیبانی سریعتر و بهتر پاسخ بده. دادهها کاملاً روی زیرساخت اتحادیه اروپا نگه داشته میشن و پروژه در مرحله بتا هست.
هر بار که کسی میگه «PHP نمرده»، ناخواسته داره ایدهی مرگ PHP رو تو ذهن مخاطب تقویت میکنه. مغز انسان وقتی یه نفی رو پردازش میکنه، اول مفهوم اصلی رو فعال میکنه و بعد نفیش میکنه؛ یعنی کلمههای «PHP» و «dead» با هم تو ذهن ثبت میشن. راهحل اینه که به جای دفاع، روایت رو عوض کنیم و بگیم PHP داره شکوفا میشه. جامعهی PHP به جای رد کردن افسانهها، باید دستاوردها و هیجانهای این اکوسیستم رو جشن بگیره.
ایدمپوتنسی یه مفهوم کلیدی در طراحی APIهاست که تضمین میکنه اگه یه درخواست چند بار فرستاده بشه، نتیجهاش همیشه یکیه. این ویژگی بهخصوص وقتی شبکه قطع میشه یا کلاینت درخواست رو retry میکنه، از ایجاد دادههای تکراری یا عملیات ناخواسته جلوگیری میکنه. مقالهی Wendell Adriel از تئوری پشت این مفهوم شروع میکنه و تا پیادهسازی عملیش با پکیج Laravel Idempotency پیش میره.
TypeScript Transformer 3 بعد از سه سال بازنویسی کامل منتشر شد. این پکیج محبوب PHP حالا به یک فریمورک واقعی برای ایجاد پل بین PHP و TypeScript تبدیل شده. مهمترین تغییرات شامل حذف Collector ها، معرفی سیستم AST، پشتیبانی از PHPStan، و اضافه شدن حالت watch برای رصد تغییرات لحظهای فایلهاست. این نسخه توسعهپذیری را به شکل چشمگیری بهبود داده و امکانات خیلی بیشتری نسبت به نسخههای قبلی ارائه میده.
یه روش هوشمندانه برای کاهش چشمگیر زمان اجرای تستهای PHP روی GitHub Actions اینه که تستسوییت رو به چند بخش مساوی تقسیم کنی و هر بخش رو روی یه job جداگانه اجرا کنی. تیم Oh Dear با همین تکنیک، زمان اجرای تستهاشون رو از ۱۶ دقیقه به فقط ۴ دقیقه رسوندن. این کار با استفاده از matrix strategy در GitHub Actions و یه اسکریپت PHP سفارشی انجام میشه که تستها رو با گزینه --filter به صورت موازی اجرا میکنه. ابزار Pest هم با آپشن --list-tests این امکان رو میده که لیست کامل تستها رو بگیری و به قطعههای مس