CodeVerse | دنیای برنامه نویسان
844 subscribers
52 photos
62 links
💻 ترفند برنامه نویسی PHP & JavaScript
🚀 آموزش وردپرس
💡 ترفندهای کاربردی
🤖 هوش مصنوعی و تکنولوژی
👨‍💻آموزش • ترفند • پروژه

@ideveloperweb_z |ارتباط
Download Telegram
🚀 اگر دوست داری سرویس‌های خودت را بدون وابستگی به پلتفرم‌های گران Deploy کنی، Coolify را بشناس.

با Coolify می‌توانی به‌راحتی Deploy کنی:

Laravel
PHP
Node.js
Docker
PostgreSQL
Redis

چرا محبوب شده؟

🔹 متن‌باز (Open Source)
🔹 قابلیت Self-Hosting
🔹 رابط کاربری ساده
🔹 مناسب برای VPS شخصی

💡 اگر به دنبال جایگزینی برای سرویس‌های Deploy ابری هستی، Coolify ارزش بررسی دارد.

@CodeVerse_dev
👍62
🛠 اگر دنبال یک جایگزین سبک و سریع برای Postman هستی، Hoppscotch را امتحان کن.

ویژگی‌ها:

تست REST API
پشتیبانی از GraphQL
همینطور WebSocket
فرایند Server-Sent Events (SSE)
محیط ساده و سریع

چرا توسعه‌دهنده‌ها دوستش دارند؟

سبک‌تر از بسیاری از ابزارهای مشابه
🌐 نسخه وب و نسخه دسکتاپ
🤝 مناسب برای همکاری تیمی

💡 برای تست سریع API، یکی از بهترین گزینه‌هاست.

@CodeVerse_dev
7
یه اشتباه کوچیک که چند ساعت از وقتم رو گرفت!

چند سال پیش داشتم روی یه پروژه PHP کار می‌کردم.

یه باگ عجیب داشتم که هرچی کد رو نگاه می‌کردم، مشکل پیدا نمی‌شد. حدود دو ساعت فقط داشتم فایل‌ها رو بالا و پایین می‌کردم.

آخرش فهمیدم مشکل فقط یه فاصله و یه اسم متغیر اشتباه بوده! 😅

از اون روز یه عادت برای خودم ساختم:

قبل از اینکه کد جدید بنویسم، اول لاگ‌ها رو چک می‌کنم.
بعد با Debug قدم‌به‌قدم جلو میرم.
آخر سر تازه سراغ تغییر کد میرم.

باور کنین خیلی وقت‌ها مشکل اون چیزی نیست که فکر می‌کنیم.

💬 شما آخرین باری که یه باگ الکی اذیتتون کرد، چی بود؟

📢 @CodeVerse_dev
7
زِ برنامه نویسان عالم هرکه را دیدم باگی دارد🥲
💔6😁3😢1
یه اشتباه که PageSpeed سایتت رو نابود می‌کنه!

خیلی از سایت‌های وردپرسی هنوز این اشتباه رو انجام میدن...

۱۰ تا فونت مختلف لود می‌کنن!

مثلاً:

Light
Regular
Medium
SemiBold
Bold
ExtraBold

در حالی که معمولاً فقط دو یا سه وزن فونت توی سایت استفاده میشه.

هر وزن اضافه یعنی:

📥 درخواست بیشتر
زمان لود بیشتر
📉 امتیاز پایین‌تر توی Lighthouse

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

با همین تغییر ساده، گاهی چند صد کیلوبایت از حجم صفحه کم میشه.

💡 بهینه‌سازی یعنی حذف چیزهایی که لازم نیست، نه فقط نصب افزونه‌های بیشتر.

@CodeVerse_dev
👍62👏1
🤯 چرا ()empty ممکن است تو را گول بزند؟

کد زیر را ببین:

$value = "0";

if (empty($value)) {
echo "Empty!";
}

خروجی:

Empty!

اما مگر "0" مقدار ندارد؟

دلیلش این است که ()empty در PHP مقادیر زیر را هم خالی در نظر می‌گیرد:

* ""
* 0
* "0"
* false
* null
* []

اگر فقط می‌خواهی بررسی کنی مقدار null یا رشته خالی نباشد، بهتر است از شرط‌های دقیق‌تر استفاده کنی.

💡 استفاده نادرست از ()empty یکی از دلایل رایج باگ در فرم‌ها و APIهاست.

@CodeVerse_dev
7
🚨 وقتی یک Index فراموش شد...

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

ستون user_id هیچ Indexی نداشت.
نتیجه:

هر جستجو باید کل جدول را بررسی می‌کرد.

بعد از اضافه کردن Index:

🚀 زمان اجرای بعضی Queryها از چند ثانیه به چند میلی‌ثانیه کاهش پیدا کرد.

💡قبل از ارتقای سخت‌افزار، همیشه Queryها و Indexهای دیتابیس را بررسی کن.

@CodeVerse_dev
6👏3
🛠 ابزار Ray چیست؟

یک ابزار Debug برای توسعه‌دهندگان PHP و Laravel است که اطلاعات برنامه را در یک پنجره جداگانه نمایش می‌دهد.

به جای:

dd($user);

می‌توانی بنویسی:

ray($user);

و بدون متوقف شدن اجرای برنامه، اطلاعات را مشاهده کنی.

مزایا:

انجام Debug سریع‌تر
مشاهده Queryها
نمایش Exceptionها
بررسی Collectionها و Modelها

💡 اگر هر روز با Laravel کار می‌کنی، Ray می‌تواند جایگزین بسیار خوبی برای ()dd باشد.

@CodeVerse_dev
7
🚀 اگر هنوز از npm install استفاده می‌کنی، این تفاوت رو باید بدونی.

خیلی از برنامه‌نویس‌ها بدون فکر این دستور رو اجرا می‌کنن:
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
چرا بعضی سایت‌ها حتی با اینترنت ضعیف هم سریع حس می‌شن؟

چون فقط سرعت دانلود مهم نیست؛ ترتیب لود شدن محتوا هم مهمه.

خیلی از سایت‌ها اول این‌ها رو لود می‌کنن:

اسلایدر
انیمیشن‌ها
فونت‌های اضافی
اسکریپت‌های چت آنلاین

در حالی که کاربر فقط می‌خواد متن و دکمه اصلی رو ببینه.

این همون مفهوم Critical Rendering Path هست.

اگر محتوای اصلی سریع نمایش داده بشه، کاربر احساس می‌کنه سایت سریع لود شده؛ حتی اگر بعضی بخش‌ها چند لحظه بعد ظاهر بشن.

به همین دلیل سایت‌های بزرگ معمولاً:

ضروری ترین CSS رو Inline می‌کنن.
تصاویر پایین صفحه رو Lazy Load می‌کنن.
اسکریپت‌های غیرضروری رو با defer یا async بارگذاری می‌کنن.
ویجت‌های سنگین رو بعد از تعامل کاربر اجرا می‌کنن.

سرعت واقعی همیشه با سرعتی که کاربر احساس می‌کنه یکی نیست.

@CodeVerse_dev
8👍1
🤖 یک ترفند برای اینکه هوش مصنوعی جواب‌های بهتری درباره کدت بده.

خیلی‌ها این‌طوری سؤال می‌پرسن:

«این کد رو بهینه کن.»

طبیعیه که جواب هم کلی باشه.

اما اگر زمینه (Context) بدی، کیفیت پاسخ چند برابر می‌شه.

مثلاً این‌طوری:

این تابع روزانه حدود ۵۰ هزار بار اجرا می‌شود، روی Node.js 22 است، خوانایی از کوتاه بودن کد مهم‌تر است و نمی‌خواهم وابستگی جدیدی اضافه شود. چه پیشنهادی داری؟

همین چند جمله باعث می‌شه AI بدونه محدودیت‌های پروژه چیه و راهکارهای کاربردی‌تری پیشنهاد بده.

هرچقدر مسئله را دقیق‌تر تعریف کنی، احتمال اینکه جواب مفید بگیری بیشتر می‌شود.

هوش مصنوعی ذهن‌خوان نیست؛ کیفیت خروجی، تا حد زیادی به کیفیت ورودی بستگی دارد.

@CodeVerse_dev
9
💳 اگر با پرداخت آنلاین در PHP کار می‌کنی، PCI DSS را بشناس!

رعایت استاندارد PCI DSS برای پروژه‌هایی که اطلاعات کارت بانکی را پردازش می‌کنند، ضروری است. این مقاله مهم‌ترین نکات امنیتی برای توسعه‌دهندگان PHP را به‌صورت عملی توضیح می‌دهد؛ از کدنویسی امن گرفته تا رمزنگاری، مدیریت دسترسی و به‌روزرسانی وابستگی‌ها.

🚀 یک منبع کاربردی برای توسعه‌دهندگان PHP و فروشگاه‌های آنلاین.

📎 Article

@CodeVerse_dev
7
قبل از خرید هاست قوی، این عدد رو ببین!

خیلی‌ها وقتی سایت کند میشه، سریع میرن سراغ ارتقای هاست.

در حالی که ممکنه مشکل اصلاً هاست نباشه.

اول این عدد رو بررسی کن:

TTFB (Time To First Byte)

این عدد نشون می‌ده سرور چقدر طول می‌کشه تا اولین پاسخ رو به مرورگر بده.

اگر TTFB پایین باشه ولی سایت هنوز کند لود بشه، احتمالاً مشکل از ایناست:

تصاویر سنگین
‌‌‌‌‌زیاد بودن JavaScript ‌
فونت‌های اضافی
همچنین Css بلاک‌کننده
اسکریپت‌های شخص ثالث

یعنی ممکنه دو برابر پول هاست بدی، ولی سرعت سایت تقریباً هیچ تغییری نکنه.

💡 همیشه اول مشکل رو پیدا کن، بعد هزینه کن.

@CodeVerse_dev
7
💻 یه چیزی که دیر فهمیدم...

اوایل فکر می‌کردم برنامه‌نویس خوب کسیه که همه چیز رو از حفظ باشه.(یه دفتر کنارم همه چیو مثله جزوه مینوشتم😅)

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

الان اگر چیزی یادم نباشه، اصلاً استرس نمی‌گیرم.

مستندات رو باز می‌کنم.
کد نمونه می‌بینم.
تست می‌کنم.
و از همون مسیر چیزهای جدید یاد می‌گیرم.

به نظرم مهارت واقعی این نیست که همه چیز رو حفظ باشی؛
مهارت واقعی اینه که بدونی چطور سریع به جواب درست برسی.

این طرز فکر باعث شد خیلی سریع‌تر از قبل پیشرفت کنم.

📢 @CodeVerse_dev
👍93👏3
🎯 پشت صحنه Event Listenerها در JavaScript چیست؟

هر بار که روی یک دکمه کلیک می‌کنید یا کلیدی را فشار می‌دهید، مرورگر با کمک Event Listener آن رویداد را مدیریت می‌کند. این مقاله به زبان ساده تویه کاور خیلی ساده هم بسازضیح می‌دهد Event Listenerها چگونه کار می‌کنند و چرا درک آن‌ها برای نوشتن کدهای بهتر و بهینه‌تر اهمیت دارد.

🚀 اگر Frontend یا JavaScript کار می‌کنی، این مقاله را از دست نده.
📎 Article

@CodeVerse_dev
8
چرا Log گرفتن بیش از حد، خودش یک مشکل Performance است؟

🚨 یکی از اشتباهاتی که در پروژه‌های Production زیاد دیده می‌شود:

ثبت Log برای همه چیز!

مثلاً:

Log::info('User data', [
'user' => $user,
'request' => $request->all(),
]);

در نگاه اول مفید است...

اما در پروژه‌های پرترافیک:

حجم فایل‌های Log به‌سرعت رشد می‌کند.

مصرف دیسک افزایش پیدا می‌کند.

جستجو در Logها سخت‌تر می‌شود.

حتی ممکن است اطلاعات حساس کاربران ذخیره شود.

راه حرفه‌ای:

فقط اطلاعاتی را Log کنید که برای عیب‌یابی لازم هستند.

از Levelهای مناسب (info، warning، error) استفاده کنید.

اطلاعات حساس مانند رمز عبور، توکن و شماره کارت را هرگز Log نکنید.

---

🎯 هدف Log، تولید اطلاعات بیشتر نیست؛ پیدا کردن سریع‌تر مشکل است.

💡 اگر همه چیز را Log کنید، هنگام وقوع خطا پیدا کردن اطلاعات مهم سخت‌تر می‌شود.

@CodeVerse_dev
👍82
۵ ترفند JavaScript که ای‌کاش زودتر می‌دانستم!

گاهی چند قابلیت ساده می‌توانند کدهای شما را تمیزتر، خواناتر و حرفه‌ای‌تر کنند. این مقاله ۵ ترفند کاربردی JavaScript را معرفی می‌کند که احتمالاً از همان روز اول دوست داشتید آن‌ها را بلد باشید.

🚀 اگر با JavaScript کار می‌کنی، این مقاله ارزش چند دقیقه وقت گذاشتن را دارد.

📎 LINK

@CodeVerse_dev
7
🔥 هنوز برای هر تغییر کوچیک git add . می‌زنی؟

این یکی از عادت‌هاییه که خیلی از برنامه‌نویس‌ها دارن، ولی توی پروژه‌های واقعی دردسرساز میشه.

فرض کن فقط یه فایل رو تغییر دادی، اما یه فایل .env یا یه فایل تست هم تغییر کرده.

با git add . همه چیز استیج میشه و ممکنه ناخواسته اطلاعات یا فایل‌های اضافی رو کامیت کنی.

به جاش این عادت رو داشته باش:

git status

اول ببین چی تغییر کرده، بعد فقط همون فایل‌هایی که واقعاً می‌خوای رو اضافه کن:

git add src/components/Header.jsx

شاید ۱۰ ثانیه بیشتر زمان ببره، ولی جلوی کلی اشتباه رو می‌گیره.

💡 برنامه‌نویس حرفه‌ای فقط کد خوب نمی‌نویسه؛ تاریخچه Git تمیز هم تحویل می‌ده.

@CodeVerse_dev
👍7
یه ویژگی HTML که هنوز کمتر از چیزی که باید استفاده میشه.
اگر لینکت این شکلیه:

<a href="/downloads/file.pdf">دانلود فایل</a> 

کاربر فقط بعد از کلیک متوجه میشه فایل PDF دانلود میشه.

اما با یک Attribute ساده می‌تونی تجربه بهتری بسازی:
<a href="/downloads/file.pdf" download>

دانلود فایل
</a>

یا برای لینک‌های خارجی:
<a href="..." target="_blank" rel="noopener">

اضافه کردن rel="noopener" باعث میشه صفحه مقصد نتونه از طریق window.opener به صفحه اصلی دسترسی پیدا کنه؛ یک نکته کوچک اما مهم برای امنیت و عملکرد.

گاهی حرفه‌ای بودن یعنی همین جزئیات کوچیک که اکثر افراد از کنارش رد میشن.

@CodeVerse_dev
6
🚀قابلیت Largest Contentful Paint (LCP) چیه و چرا باید برات مهم باشه؟

اگر سایتت سریع لود بشه ولی کاربر تا چند ثانیه محتوای اصلی صفحه رو نبینه، از نظر گوگل هنوز سایتت کند محسوب میشه!

مفهوم LCP (Largest Contentful Paint) یکی از مهم‌ترین معیارهای Core Web Vitals هست که اندازه می‌گیره بزرگ‌ترین المان قابل مشاهده صفحه (مثل تصویر هدر، بنر یا تیتر اصلی) بعد از چند ثانیه برای کاربر نمایش داده میشه.

📊 استاندارد گوگل:
🟢 کمتر از 2.5 ثانیه → عالی
🟡 بین 2.5 تا 4 ثانیه → نیاز به بهبود
🔴 بیشتر از 4 ثانیه → ضعیف

### چرا LCP بالا میره؟

تصاویر حجیم و بدون فشرده‌سازی
پاسخ‌دهی کند سرور (TTFB بالا)
فایل‌های CSS و JavaScript مسدودکننده رندر
فونت‌های وب با بارگذاری نامناسب
اسلایدرها و بنرهای سنگین


💡 نکته مهم :
در بسیاری از سایت‌های وردپرسی، مشکل اصلی LCP نه هاست است و نه سرعت PHP؛ بلکه تصویر Hero صفحه است که با حجم بالا یا Lazy Load اشتباه بارگذاری می‌شود.

🔍 قبل از هر تغییری، گزارش PageSpeed Insights را بررسی کن تا دقیقاً ببینی گوگل کدام المان را به‌عنوان LCP شناسایی کرده

@CodeVerse_dev
👍51
این کد کار می‌کند؛ اما وابستگی‌های غیرضروری ایجاد می‌کند!

نمونه رایج:

if ($status == 1) {
// Active
}

چند ماه بعد...

هیچ‌کس یادش نیست:

عدد ۱ یعنی چه؟

راه بهتر:

enum UserStatus: int
{
case Active = 1;
case Inactive = 2;
}

و استفاده:

if ($status === UserStatus::Active) {
// ...
}

مزایا:

خوانایی بیشتر

خطای کمتر

توسعه آسان‌تر

---

🎯 اعداد و رشته‌های جادویی (Magic Numbers & Strings) دشمن نگهداری پروژه هستند.

💡 اگر یک مقدار معنای خاصی دارد، آن را به‌صورت صریح در کد بیان کنید.

@CodeVerse_dev
7