یک قابلیت کمتر شناختهشده Git که موقع بحران نجاتت میده.
فرض کن وسط توسعه یه ویژگی جدید هستی.
چند فایل رو تغییر دادی.
ناگهان یه باگ فوری از سمت مشتری گزارش میشه.
نمیخوای Commit ناقص بزنی، ولی نمیخوای تغییراتت هم از بین بره.
اینجاست که git stash وارد بازی میشه.
تمام تغییرات فعلی رو موقت کنار میذاره.
بعد از رفع باگ:
همه تغییراتت دقیقاً به همون حالت قبلی برمیگرده.
خیلی از برنامهنویسها برای این شرایط یک Branch جدید میسازن یا Commit موقت میزنن، در حالی که stash دقیقاً برای همین سناریو طراحی شده.
اگر با Git زیاد کار میکنی، این دستور یکی از اون چیزهاییه که دیر یا زود به دادت میرسه.
@CodeVerse_dev
فرض کن وسط توسعه یه ویژگی جدید هستی.
چند فایل رو تغییر دادی.
ناگهان یه باگ فوری از سمت مشتری گزارش میشه.
نمیخوای Commit ناقص بزنی، ولی نمیخوای تغییراتت هم از بین بره.
اینجاست که git stash وارد بازی میشه.
git stash
تمام تغییرات فعلی رو موقت کنار میذاره.
بعد از رفع باگ:
git stash pop
همه تغییراتت دقیقاً به همون حالت قبلی برمیگرده.
خیلی از برنامهنویسها برای این شرایط یک Branch جدید میسازن یا Commit موقت میزنن، در حالی که stash دقیقاً برای همین سناریو طراحی شده.
اگر با Git زیاد کار میکنی، این دستور یکی از اون چیزهاییه که دیر یا زود به دادت میرسه.
@CodeVerse_dev
❤10
🚀 لاراول داخل مرورگر؟ آره، بدون نصب PHP!
تا چند سال پیش اگه میخواستی یه پروژه Laravel اجرا کنی، باید:
PHP نصب میکردی.
Composer نصب میکردی.
وبسرور راه میانداختی.
الان ابزاری مثل Liminal این داستان رو عوض کرده.
این پروژه با استفاده از WebAssembly، لاراول رو مستقیماً داخل مرورگر اجرا میکنه.
یعنی میتونی:
✅ کد بنویسی.
✅ خروجی رو همون لحظه ببینی.
✅ دستورهای Artisan اجرا کنی.
✅ حتی از AI داخلی برای کمک گرفتن استفاده کنی.
این ابزار هنوز جای محیط توسعه اصلی رو نمیگیره، ولی برای آموزش، تست سریع یا نمایش نمونه پروژه واقعاً جذابه.
🌐 آینده توسعه وب، هر روز بیشتر به سمت ابزارهایی میره که بدون نصب و راهاندازی، فقط با باز کردن مرورگر آماده کارن.
@CodeVerse_dev
تا چند سال پیش اگه میخواستی یه پروژه Laravel اجرا کنی، باید:
PHP نصب میکردی.
Composer نصب میکردی.
وبسرور راه میانداختی.
الان ابزاری مثل Liminal این داستان رو عوض کرده.
این پروژه با استفاده از WebAssembly، لاراول رو مستقیماً داخل مرورگر اجرا میکنه.
یعنی میتونی:
✅ کد بنویسی.
✅ خروجی رو همون لحظه ببینی.
✅ دستورهای Artisan اجرا کنی.
✅ حتی از AI داخلی برای کمک گرفتن استفاده کنی.
این ابزار هنوز جای محیط توسعه اصلی رو نمیگیره، ولی برای آموزش، تست سریع یا نمایش نمونه پروژه واقعاً جذابه.
🌐 آینده توسعه وب، هر روز بیشتر به سمت ابزارهایی میره که بدون نصب و راهاندازی، فقط با باز کردن مرورگر آماده کارن.
@CodeVerse_dev
👍6❤1
🚨 وقتی یک Queue از کار افتاد...
در یکی از پروژههای واقعی، ایمیلهای کاربران ناگهان ارسال نمیشدند.
بررسیها نشان داد:
فرایند Queue Worker متوقف شده بود، اما هیچ مانیتورینگی برای بررسی وضعیت آن وجود نداشت.
نتیجه:
📨 هزاران ایمیل در صف باقی ماندند.
راهحل حرفهای:
✅ مانیتورینگ Queue
✅ ثبت Alert هنگام توقف Worker
✅ راهاندازی مجدد خودکار سرویس
✅ استفاده از ابزارهایی مثل Laravel Horizon برای مدیریت Queue
💡 همیشه فرض کن یک سرویس ممکن است از کار بیفتد و از قبل برای آن برنامه داشته باش.
@CodeVerse_dev
در یکی از پروژههای واقعی، ایمیلهای کاربران ناگهان ارسال نمیشدند.
بررسیها نشان داد:
فرایند Queue Worker متوقف شده بود، اما هیچ مانیتورینگی برای بررسی وضعیت آن وجود نداشت.
نتیجه:
📨 هزاران ایمیل در صف باقی ماندند.
راهحل حرفهای:
✅ مانیتورینگ Queue
✅ ثبت Alert هنگام توقف Worker
✅ راهاندازی مجدد خودکار سرویس
✅ استفاده از ابزارهایی مثل Laravel Horizon برای مدیریت Queue
💡 همیشه فرض کن یک سرویس ممکن است از کار بیفتد و از قبل برای آن برنامه داشته باش.
@CodeVerse_dev
👍6❤2
آینده مرورگرها داره عوض میشه...
🤯 مرورگرها دیگه فقط مرورگر نیستن!
تا چند وقت پیش مرورگر فقط یه ابزار برای باز کردن سایت بود.
الان؟
داره تبدیل میشه به یه دستیار برنامهنویس.
گوگل توی Chrome قابلیتهایی معرفی کرده که به کمک AI میتونی:
✅ دلیل کند بودن سایت رو بپرسی.
✅ پیشنهاد بهینهسازی بگیری.
✅ گزارش Lighthouse رو با زبان ساده تحلیل کنی.
✅ حتی بعضی از باگها رو سریعتر پیدا کنی.
یعنی بهجای اینکه نیم ساعت بین تبهای مختلف DevTools بچرخی، میتونی مستقیم از AI کمک بگیری.
این فقط یه قابلیت جذاب نیست؛ نشونه اینه که ابزارهای توسعه دارن به سمت Agentهای هوشمند حرکت میکنن.
💡 برنامهنویسی آینده فقط نوشتن کد نیست، بلکه بلد بودن استفاده از ابزارهای هوشمنده.
@CodeVerse_dev
🤯 مرورگرها دیگه فقط مرورگر نیستن!
تا چند وقت پیش مرورگر فقط یه ابزار برای باز کردن سایت بود.
الان؟
داره تبدیل میشه به یه دستیار برنامهنویس.
گوگل توی Chrome قابلیتهایی معرفی کرده که به کمک AI میتونی:
✅ دلیل کند بودن سایت رو بپرسی.
✅ پیشنهاد بهینهسازی بگیری.
✅ گزارش Lighthouse رو با زبان ساده تحلیل کنی.
✅ حتی بعضی از باگها رو سریعتر پیدا کنی.
یعنی بهجای اینکه نیم ساعت بین تبهای مختلف DevTools بچرخی، میتونی مستقیم از AI کمک بگیری.
این فقط یه قابلیت جذاب نیست؛ نشونه اینه که ابزارهای توسعه دارن به سمت Agentهای هوشمند حرکت میکنن.
💡 برنامهنویسی آینده فقط نوشتن کد نیست، بلکه بلد بودن استفاده از ابزارهای هوشمنده.
@CodeVerse_dev
👍7❤1
🎨 اگه هنوز برای Blur از عکس PNG استفاده میکنی، اینو بخون...
یکی از اشتباههای رایج توی طراحی سایت اینه که برای ساخت افکتهای نور یا شیشهای، یه PNG بزرگ روی صفحه میذارن.
نتیجه؟
❌ حجم بیشتر
❌ لود کندتر
❌ امتیاز پایینتر توی Core Web Vitals
بهجاش از این قابلیتهای CSS استفاده کن:
✨ backdrop-filter
✨ filter: blur()
✨ radial-gradient
هم ظاهر مدرنتری میگیری، هم کنترل بیشتری روی افکتها داری، هم لازم نیست چندین فایل گرافیکی اضافه لود کنی.
یه طراح سایت حرفهای فقط ظاهر رو قشنگ نمیکنه؛ کاری میکنه همون ظاهر سریع هم لود بشه.
@CodeVerse_dev
یکی از اشتباههای رایج توی طراحی سایت اینه که برای ساخت افکتهای نور یا شیشهای، یه PNG بزرگ روی صفحه میذارن.
نتیجه؟
❌ حجم بیشتر
❌ لود کندتر
❌ امتیاز پایینتر توی Core Web Vitals
بهجاش از این قابلیتهای CSS استفاده کن:
✨ backdrop-filter
✨ filter: blur()
✨ radial-gradient
هم ظاهر مدرنتری میگیری، هم کنترل بیشتری روی افکتها داری، هم لازم نیست چندین فایل گرافیکی اضافه لود کنی.
یه طراح سایت حرفهای فقط ظاهر رو قشنگ نمیکنه؛ کاری میکنه همون ظاهر سریع هم لود بشه.
@CodeVerse_dev
❤9
🤯 چرا این کد خروجی false میدهد؟
خروجی:
بله... حتی NaN هم با خودش برابر نیست!
چطور بررسی کنیم؟
یا
که خروجی:
💡 این رفتار بخشی از استاندارد JavaScript است و دانستن آن میتواند جلوی باگهای عجیب را بگیرد.
@CodeVerse_dev
NaN === NaN
خروجی:
false
بله... حتی NaN هم با خودش برابر نیست!
چطور بررسی کنیم؟
Number.isNaN(value)
یا
Object.is(NaN, NaN)
که خروجی:
true
💡 این رفتار بخشی از استاندارد JavaScript است و دانستن آن میتواند جلوی باگهای عجیب را بگیرد.
@CodeVerse_dev
❤7
وردپرس همیشه کند نیست؛ افزونهها مقصرن.
وقتی سرعت یه سایت وردپرسی افت میکنه، اولین واکنش اکثر افراد اینه:
«سرور ضعیفه.»
در حالی که تو خیلی از پروژهها، مشکل جای دیگهست.
یه افزونه ممکنه فقط برای یک قابلیت کوچیک، این کارها رو انجام بده:
۱۵ فایل CSS لود کنه.
۱۰ فایل JavaScript اضافه کنه.
چندین درخواست AJAX بفرسته.
چند فونت و آیکون خارجی دانلود کنه.
در نهایت کاربر فقط یه دکمه ساده میبینه!
قبل از نصب هر افزونه از خودت بپرس:
آیا واقعاً ارزش داره برای این قابلیت، این همه فایل اضافه وارد سایت بشه؟
گاهی نوشتن فقط ۳۰ خط کد اختصاصی، از نصب یک افزونه ۳ مگابایتی خیلی منطقیتره.
برنامهنویس حرفهای کسی نیست که بیشترین افزونه رو نصب کنه؛ کسیه که وابستگی پروژه رو کمتر کنه.
💬 بزرگترین افزونهای که تا حالا حذف کردی چی بوده؟
@CodeVerse_dev
وقتی سرعت یه سایت وردپرسی افت میکنه، اولین واکنش اکثر افراد اینه:
«سرور ضعیفه.»
در حالی که تو خیلی از پروژهها، مشکل جای دیگهست.
یه افزونه ممکنه فقط برای یک قابلیت کوچیک، این کارها رو انجام بده:
۱۵ فایل CSS لود کنه.
۱۰ فایل JavaScript اضافه کنه.
چندین درخواست AJAX بفرسته.
چند فونت و آیکون خارجی دانلود کنه.
در نهایت کاربر فقط یه دکمه ساده میبینه!
قبل از نصب هر افزونه از خودت بپرس:
آیا واقعاً ارزش داره برای این قابلیت، این همه فایل اضافه وارد سایت بشه؟
گاهی نوشتن فقط ۳۰ خط کد اختصاصی، از نصب یک افزونه ۳ مگابایتی خیلی منطقیتره.
برنامهنویس حرفهای کسی نیست که بیشترین افزونه رو نصب کنه؛ کسیه که وابستگی پروژه رو کمتر کنه.
💬 بزرگترین افزونهای که تا حالا حذف کردی چی بوده؟
@CodeVerse_dev
❤4👍2
📂 چطور یک Codebase جدید را سریع و حرفهای درک کنیم؟
ورود به یک پروژه جدید همیشه چالشبرانگیز است، اما اگر بدانید از کجا شروع کنید، درک ساختار پروژه بسیار سریعتر میشود. این مقاله نکاتی کاربردی برای تحلیل و شناخت. Codebase پروژههای واقعی ارائه میدهد.
🚀 اگر روی پروژههای تیمی کار میکنی، این مقاله را از دست نده.
📎 Article
@CodeVerse_dev
ورود به یک پروژه جدید همیشه چالشبرانگیز است، اما اگر بدانید از کجا شروع کنید، درک ساختار پروژه بسیار سریعتر میشود. این مقاله نکاتی کاربردی برای تحلیل و شناخت. Codebase پروژههای واقعی ارائه میدهد.
🚀 اگر روی پروژههای تیمی کار میکنی، این مقاله را از دست نده.
📎 Article
@CodeVerse_dev
❤8
🔥 این قابلیت CSS رو کمتر کسی استفاده میکنه، ولی کد رو تمیزتر میکنه.
اگر هنوز این شکلی کد مینویسی:
وقتشه با :()is آشنا بشی.
مزیتش فقط کوتاهتر شدن کد نیست.
وقتی چند Selector ویژگیهای مشترک دارن، :()is باعث میشه:
✅ کد خواناتر باشه.
✅ نگهداری CSS راحتتر بشه.
✅ احتمال تکرار استایل کمتر بشه.
توی پروژههای بزرگ که صدها Selector داری، همین قابلیتهای کوچیک تفاوت بزرگی ایجاد میکنن.
نکته مهم اینه که از :()is برای سادهتر کردن منطق استایل استفاده کن، نه اینکه همه Selectorها رو بیدلیل داخلش بریزی.
💬 تا حالا از :()is استفاده کردی یا هنوز همه Selectorها رو جدا مینویسی؟
اگر هنوز این شکلی کد مینویسی:
.card .title { ... }
.card .description { ... }
.card .button { ... }وقتشه با :()is آشنا بشی.
.card :is(.title, .description, .button) {
color: #fff;
}مزیتش فقط کوتاهتر شدن کد نیست.
وقتی چند Selector ویژگیهای مشترک دارن، :()is باعث میشه:
✅ کد خواناتر باشه.
✅ نگهداری CSS راحتتر بشه.
✅ احتمال تکرار استایل کمتر بشه.
توی پروژههای بزرگ که صدها Selector داری، همین قابلیتهای کوچیک تفاوت بزرگی ایجاد میکنن.
نکته مهم اینه که از :()is برای سادهتر کردن منطق استایل استفاده کن، نه اینکه همه Selectorها رو بیدلیل داخلش بریزی.
💬 تا حالا از :()is استفاده کردی یا هنوز همه Selectorها رو جدا مینویسی؟
❤9
هوش مصنوعی فقط برای تولید کد نیست؛ برای مستندسازی هم فوقالعادهست.
یکی از خستهکنندهترین کارهای هر پروژه، نوشتن Documentationـه.
اغلب تا آخر پروژه عقب میافته و بعد هم یا ناقص نوشته میشه یا اصلاً نوشته نمیشه.
یه روش ساده:
بعد از نوشتن هر ماژول، از هوش مصنوعی بخواه:
این فایل رو برای توسعهدهنده جدید توضیح بده.
اجرای این کلاس رو بنویس Flow.
برای این API مستند Markdown تولید کن.
برای این تابع JSDoc بنویس.
نتیجه؟
به جای اینکه مستندسازی رو آخر پروژه انجام بدی، همزمان با توسعه پیش میره.
فقط یادت باشه خروجی AI رو بدون بررسی منتشر نکنی. مستندات هم مثل کد باید بازبینی بشن، چون ممکنه جزئیاتی رو اشتباه برداشت کرده باشه.
@CodeVerse_dev
یکی از خستهکنندهترین کارهای هر پروژه، نوشتن Documentationـه.
اغلب تا آخر پروژه عقب میافته و بعد هم یا ناقص نوشته میشه یا اصلاً نوشته نمیشه.
یه روش ساده:
بعد از نوشتن هر ماژول، از هوش مصنوعی بخواه:
این فایل رو برای توسعهدهنده جدید توضیح بده.
اجرای این کلاس رو بنویس Flow.
برای این API مستند Markdown تولید کن.
برای این تابع JSDoc بنویس.
نتیجه؟
به جای اینکه مستندسازی رو آخر پروژه انجام بدی، همزمان با توسعه پیش میره.
فقط یادت باشه خروجی AI رو بدون بررسی منتشر نکنی. مستندات هم مثل کد باید بازبینی بشن، چون ممکنه جزئیاتی رو اشتباه برداشت کرده باشه.
@CodeVerse_dev
❤12
⚡اشتباهی که RAM سرور را نابود میکند!
فرض کن فقط میخواهی تعداد کاربران را بدانی:
❌
این کد:
تمام کاربران را از دیتابیس میخواند، سپس آنها را میشمارد.
راه درست:
✅
در این حالت، عملیات شمارش مستقیماً در دیتابیس انجام میشود.
نتیجه:
🚀 سرعت بیشتر
🚀 مصرف RAM کمتر
🚀اجرای Query بهینهتر
💡 هر عملی که دیتابیس بهتر انجام میدهد، به PHP نسپار.
@CodeVerse_dev
فرض کن فقط میخواهی تعداد کاربران را بدانی:
❌
$count = User::all()->count();
این کد:
تمام کاربران را از دیتابیس میخواند، سپس آنها را میشمارد.
راه درست:
✅
$count = User::count();
در این حالت، عملیات شمارش مستقیماً در دیتابیس انجام میشود.
نتیجه:
🚀 سرعت بیشتر
🚀 مصرف RAM کمتر
🚀اجرای Query بهینهتر
💡 هر عملی که دیتابیس بهتر انجام میدهد، به PHP نسپار.
@CodeVerse_dev
👍7❤2
📰 ابزار ESLint رسماً از Flat Config بهعنوان روش استاندارد پیکربندی استفاده میکند!
اول از همه، ESLint چیست؟
یکی از محبوبترین ابزارهای جاوااسکریپت ESLint است که کدهای شما را بررسی میکند و مشکلات احتمالی را قبل از اجرا پیدا میکند.
با ESLint میتوان:
✅ خطاهای رایج را پیدا کرد.
✅ کیفیت و خوانایی کد را افزایش داد.
✅ همه اعضای تیم را به یک سبک کدنویسی پایبند کرد.
✅ بسیاری از باگها را قبل از انتشار پروژه شناسایی کرد.
---
اگر هنوز از فایل:
استفاده میکنی، وقت مهاجرت رسیده است.
نسخههای جدید ESLint از Flat Config بهعنوان روش استاندارد پیکربندی استفاده میکنند.
مزایای Flat Config:
✅ پیکربندی سادهتر
✅ عملکرد بهتر
✅ انعطافپذیری بیشتر
✅ مناسب برای پروژههای مدرن JavaScript
💡 اگر پروژه جدیدی را شروع میکنی، بهتر است از همان ابتدا از Flat Config استفاده کنی.
@CodeVerse_dev
اول از همه، ESLint چیست؟
یکی از محبوبترین ابزارهای جاوااسکریپت ESLint است که کدهای شما را بررسی میکند و مشکلات احتمالی را قبل از اجرا پیدا میکند.
با ESLint میتوان:
✅ خطاهای رایج را پیدا کرد.
✅ کیفیت و خوانایی کد را افزایش داد.
✅ همه اعضای تیم را به یک سبک کدنویسی پایبند کرد.
✅ بسیاری از باگها را قبل از انتشار پروژه شناسایی کرد.
---
اگر هنوز از فایل:
.eslintrc
استفاده میکنی، وقت مهاجرت رسیده است.
نسخههای جدید ESLint از Flat Config بهعنوان روش استاندارد پیکربندی استفاده میکنند.
مزایای Flat Config:
✅ پیکربندی سادهتر
✅ عملکرد بهتر
✅ انعطافپذیری بیشتر
✅ مناسب برای پروژههای مدرن JavaScript
💡 اگر پروژه جدیدی را شروع میکنی، بهتر است از همان ابتدا از Flat Config استفاده کنی.
@CodeVerse_dev
❤9
🚀 اگر دوست داری سرویسهای خودت را بدون وابستگی به پلتفرمهای گران Deploy کنی، Coolify را بشناس.
با Coolify میتوانی بهراحتی Deploy کنی:
✅ Laravel
✅ PHP
✅ Node.js
✅ Docker
✅ PostgreSQL
✅ Redis
چرا محبوب شده؟
🔹 متنباز (Open Source)
🔹 قابلیت Self-Hosting
🔹 رابط کاربری ساده
🔹 مناسب برای VPS شخصی
💡 اگر به دنبال جایگزینی برای سرویسهای Deploy ابری هستی، Coolify ارزش بررسی دارد.
@CodeVerse_dev
با Coolify میتوانی بهراحتی Deploy کنی:
✅ Laravel
✅ PHP
✅ Node.js
✅ Docker
✅ PostgreSQL
✅ Redis
چرا محبوب شده؟
🔹 متنباز (Open Source)
🔹 قابلیت Self-Hosting
🔹 رابط کاربری ساده
🔹 مناسب برای VPS شخصی
💡 اگر به دنبال جایگزینی برای سرویسهای Deploy ابری هستی، Coolify ارزش بررسی دارد.
@CodeVerse_dev
👍6❤2
🛠 اگر دنبال یک جایگزین سبک و سریع برای Postman هستی، Hoppscotch را امتحان کن.
ویژگیها:
✅ تست REST API
✅ پشتیبانی از GraphQL
✅ همینطور WebSocket
✅ فرایند Server-Sent Events (SSE)
✅ محیط ساده و سریع
چرا توسعهدهندهها دوستش دارند؟
⚡ سبکتر از بسیاری از ابزارهای مشابه
🌐 نسخه وب و نسخه دسکتاپ
🤝 مناسب برای همکاری تیمی
💡 برای تست سریع API، یکی از بهترین گزینههاست.
@CodeVerse_dev
ویژگیها:
✅ تست REST API
✅ پشتیبانی از GraphQL
✅ همینطور WebSocket
✅ فرایند Server-Sent Events (SSE)
✅ محیط ساده و سریع
چرا توسعهدهندهها دوستش دارند؟
⚡ سبکتر از بسیاری از ابزارهای مشابه
🌐 نسخه وب و نسخه دسکتاپ
🤝 مناسب برای همکاری تیمی
💡 برای تست سریع API، یکی از بهترین گزینههاست.
@CodeVerse_dev
❤7
یه اشتباه کوچیک که چند ساعت از وقتم رو گرفت!
چند سال پیش داشتم روی یه پروژه PHP کار میکردم.
یه باگ عجیب داشتم که هرچی کد رو نگاه میکردم، مشکل پیدا نمیشد. حدود دو ساعت فقط داشتم فایلها رو بالا و پایین میکردم.
آخرش فهمیدم مشکل فقط یه فاصله و یه اسم متغیر اشتباه بوده! 😅
از اون روز یه عادت برای خودم ساختم:
✅ قبل از اینکه کد جدید بنویسم، اول لاگها رو چک میکنم.
✅ بعد با Debug قدمبهقدم جلو میرم.
✅ آخر سر تازه سراغ تغییر کد میرم.
باور کنین خیلی وقتها مشکل اون چیزی نیست که فکر میکنیم.
💬 شما آخرین باری که یه باگ الکی اذیتتون کرد، چی بود؟
📢 @CodeVerse_dev
چند سال پیش داشتم روی یه پروژه PHP کار میکردم.
یه باگ عجیب داشتم که هرچی کد رو نگاه میکردم، مشکل پیدا نمیشد. حدود دو ساعت فقط داشتم فایلها رو بالا و پایین میکردم.
آخرش فهمیدم مشکل فقط یه فاصله و یه اسم متغیر اشتباه بوده! 😅
از اون روز یه عادت برای خودم ساختم:
✅ قبل از اینکه کد جدید بنویسم، اول لاگها رو چک میکنم.
✅ بعد با Debug قدمبهقدم جلو میرم.
✅ آخر سر تازه سراغ تغییر کد میرم.
باور کنین خیلی وقتها مشکل اون چیزی نیست که فکر میکنیم.
💬 شما آخرین باری که یه باگ الکی اذیتتون کرد، چی بود؟
📢 @CodeVerse_dev
❤7
⚡ یه اشتباه که PageSpeed سایتت رو نابود میکنه!
خیلی از سایتهای وردپرسی هنوز این اشتباه رو انجام میدن...
۱۰ تا فونت مختلف لود میکنن!
مثلاً:
❌ Light
❌ Regular
❌ Medium
❌ SemiBold
❌ Bold
❌ ExtraBold
در حالی که معمولاً فقط دو یا سه وزن فونت توی سایت استفاده میشه.
هر وزن اضافه یعنی:
📥 درخواست بیشتر
⏳ زمان لود بیشتر
📉 امتیاز پایینتر توی Lighthouse
اگه فونت فارسی استفاده میکنی، فقط وزنهایی که واقعاً داخل سایت استفاده شدن رو نگه دار.
با همین تغییر ساده، گاهی چند صد کیلوبایت از حجم صفحه کم میشه.
💡 بهینهسازی یعنی حذف چیزهایی که لازم نیست، نه فقط نصب افزونههای بیشتر.
@CodeVerse_dev
خیلی از سایتهای وردپرسی هنوز این اشتباه رو انجام میدن...
۱۰ تا فونت مختلف لود میکنن!
مثلاً:
❌ Light
❌ Regular
❌ Medium
❌ SemiBold
❌ Bold
❌ ExtraBold
در حالی که معمولاً فقط دو یا سه وزن فونت توی سایت استفاده میشه.
هر وزن اضافه یعنی:
📥 درخواست بیشتر
⏳ زمان لود بیشتر
📉 امتیاز پایینتر توی Lighthouse
اگه فونت فارسی استفاده میکنی، فقط وزنهایی که واقعاً داخل سایت استفاده شدن رو نگه دار.
با همین تغییر ساده، گاهی چند صد کیلوبایت از حجم صفحه کم میشه.
💡 بهینهسازی یعنی حذف چیزهایی که لازم نیست، نه فقط نصب افزونههای بیشتر.
@CodeVerse_dev
👍6❤2👏1
🤯 چرا
کد زیر را ببین:
خروجی:
اما مگر
دلیلش این است که ()empty در PHP مقادیر زیر را هم خالی در نظر میگیرد:
*
*
*
*
*
*
اگر فقط میخواهی بررسی کنی مقدار
💡 استفاده نادرست از ()empty یکی از دلایل رایج باگ در فرمها و APIهاست.
@CodeVerse_dev
()empty ممکن است تو را گول بزند؟کد زیر را ببین:
$value = "0";
if (empty($value)) {
echo "Empty!";
}
خروجی:
Empty!
اما مگر
"0" مقدار ندارد؟دلیلش این است که ()empty در PHP مقادیر زیر را هم خالی در نظر میگیرد:
*
""*
0*
"0"*
false*
null*
[]اگر فقط میخواهی بررسی کنی مقدار
null یا رشته خالی نباشد، بهتر است از شرطهای دقیقتر استفاده کنی.💡 استفاده نادرست از ()empty یکی از دلایل رایج باگ در فرمها و APIهاست.
@CodeVerse_dev
❤7
🚨 وقتی یک Index فراموش شد...
یک فروشگاه اینترنتی بعد از رسیدن تعداد سفارشها به چند میلیون رکورد، ناگهان کند شد.
بررسیها نشان داد مشکل از سرور نبود.
مشکل فقط این بود:
ستون
نتیجه:
❌ هر جستجو باید کل جدول را بررسی میکرد.
بعد از اضافه کردن Index:
🚀 زمان اجرای بعضی Queryها از چند ثانیه به چند میلیثانیه کاهش پیدا کرد.
💡قبل از ارتقای سختافزار، همیشه Queryها و Indexهای دیتابیس را بررسی کن.
@CodeVerse_dev
یک فروشگاه اینترنتی بعد از رسیدن تعداد سفارشها به چند میلیون رکورد، ناگهان کند شد.
بررسیها نشان داد مشکل از سرور نبود.
مشکل فقط این بود:
ستون
user_id هیچ Indexی نداشت.نتیجه:
❌ هر جستجو باید کل جدول را بررسی میکرد.
بعد از اضافه کردن Index:
🚀 زمان اجرای بعضی Queryها از چند ثانیه به چند میلیثانیه کاهش پیدا کرد.
💡قبل از ارتقای سختافزار، همیشه Queryها و Indexهای دیتابیس را بررسی کن.
@CodeVerse_dev
❤6👏3
🛠 ابزار Ray چیست؟
یک ابزار Debug برای توسعهدهندگان PHP و Laravel است که اطلاعات برنامه را در یک پنجره جداگانه نمایش میدهد.
به جای:
میتوانی بنویسی:
و بدون متوقف شدن اجرای برنامه، اطلاعات را مشاهده کنی.
مزایا:
✅ انجام Debug سریعتر
✅ مشاهده Queryها
✅ نمایش Exceptionها
✅ بررسی Collectionها و Modelها
💡 اگر هر روز با Laravel کار میکنی، Ray میتواند جایگزین بسیار خوبی برای
@CodeVerse_dev
یک ابزار Debug برای توسعهدهندگان PHP و Laravel است که اطلاعات برنامه را در یک پنجره جداگانه نمایش میدهد.
به جای:
dd($user);
میتوانی بنویسی:
ray($user);
و بدون متوقف شدن اجرای برنامه، اطلاعات را مشاهده کنی.
مزایا:
✅ انجام Debug سریعتر
✅ مشاهده Queryها
✅ نمایش Exceptionها
✅ بررسی Collectionها و Modelها
💡 اگر هر روز با Laravel کار میکنی، Ray میتواند جایگزین بسیار خوبی برای
()dd باشد.@CodeVerse_dev
❤7
🚀 اگر هنوز از npm install استفاده میکنی، این تفاوت رو باید بدونی.
خیلی از برنامهنویسها بدون فکر این دستور رو اجرا میکنن:
اما وقتی روی یک پروژه تیمی کار میکنی یا داخل CI/CD هستی، گزینه بهتری وجود داره:
تفاوتش چیه؟
اگر package-lock.json با package.json فرق داشته باشه، ممکنه فایل Lock رو تغییر بده.
نسخههای جدیدتری از بعضی پکیجها نصب بشن.
اما npm ci
✅ دقیقاً همون نسخههایی که داخل package-lock.json ثبت شدن رو نصب میکنه.
✅ سریعتره، چون برای محیطهای CI/CD بهینه شده.
✅ هیچ تغییری داخل Lock File ایجاد نمیکنه.
اگر هدفت تکرارپذیری (Reproducibility) باشه، npm ci انتخاب بهتریه.
به همین دلیله که اکثر Pipelineهای حرفهای از npm ci استفاده میکنن، نه npm install.
@CodeVerse_dev
خیلی از برنامهنویسها بدون فکر این دستور رو اجرا میکنن:
npm install
اما وقتی روی یک پروژه تیمی کار میکنی یا داخل CI/CD هستی، گزینه بهتری وجود داره:
npm ci
تفاوتش چیه؟
npm install
اگر package-lock.json با package.json فرق داشته باشه، ممکنه فایل Lock رو تغییر بده.
نسخههای جدیدتری از بعضی پکیجها نصب بشن.
اما npm ci
✅ دقیقاً همون نسخههایی که داخل package-lock.json ثبت شدن رو نصب میکنه.
✅ سریعتره، چون برای محیطهای CI/CD بهینه شده.
✅ هیچ تغییری داخل Lock File ایجاد نمیکنه.
اگر هدفت تکرارپذیری (Reproducibility) باشه، npm ci انتخاب بهتریه.
به همین دلیله که اکثر Pipelineهای حرفهای از npm ci استفاده میکنن، نه npm install.
@CodeVerse_dev
👍8