Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
ماژول perf_hooks چیکار میکنه؟ ⚡️

ماژول perf_hooks در Node.js یک ابزار قدرتمند برای نظارت بر عملکرد و بهینه سازی هست. این یک رابط برای اندازه‌گیری عملکرد عملیات مختلف در یک برنامه ارائه میکنه و دولوپر ها رو قادر میسازه تا Bottleneck رو شناسایی، کد رو بهینه و معیارهای کلیدی مثل تاخیرهای حلقه رویداد، زمان‌های اجرای عملکرد و موارد دیگه رو نظارت کنن.

ماژول «perf_hooks» در درجه اول بر روی اندازه‌گیری‌های عملکرد با وضوح بالا تمرکز داره. مثلا با استفاده از روش «performance.now()»، دولوپر ها میتونن فواصل زمانی دقیق تا میکروثانیه رو اندازه‌گیری کنن که برای ردیابی مدت زمان انجام عملیات خاص مفید هست.

- مثال:

     const { performance } = require('perf_hooks');
const start = performance.now();
// Execute some code here
const end = performance.now();
console.log(`Execution took ${end - start} milliseconds.`);


به صورت کلی ماژول perf_hooks ابزارهای ضروری رو برای درک و بهینه سازی عملکرد برنامه به دولوپر های Node.js، ارائه میده. با ارائه معیارهای دقیق در زمان‌بندی، تاخیرهای حلقه رویداد و استفاده از حافظه، به دولوپر ها کمک میکنه تا مشکلات عملکرد رو تشخیص داده و کارایی برنامه رو افزایش بدن. برای اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.

#nodejs
@CodeModule
🔥9👌4
میدونستی با Node.js میتونی انیمیشن های جذابی توی ترمینال بسازی؟ 🚀

یکی از کارهایی که میتونید به عنوان سرگرمی انجام بدید، ساخت انیمیشن های ترمینال هست. مقاله vladimirvovk یک راهنمای جامع در مورد چگونگی انجام این کار هست. این مقاله نحوه ساخت digital rain که شبیه به Matrix هست رو نشون میده که با استفاده از process.stdout، اون رو میسازه(البته به صورت کوچیک شده). همچنین یک مقدمه کوتاهی از ANSIS هم داره که کار رو برای ساخت رنگ ها ساده میکنه و میتونید از اون توی انیمیشن هاتون استفاده کنید.

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

#nodejs
@CodeModule
12👌5
‏Trust Proxy توی Express.js چیه و دقیقاً چه کاری میکنه؟ 🤔

‏Trust Proxy یه تنظیم توی Express هست که به اپلیکیشن میگه آیا باید به اطلاعاتی که توی هدرهای X-Forwarded-For و X-Forwarded-Proto میاد، اعتماد کنه یا نه.

حالا این یعنی چی؟ یعنی وقتی برنامه بک اند یه سرور واسطه‌ای (مثل Nginx یا Cloudflare) قرار داره، IP و پروتکل واقعی کاربر توی این هدرها قرار می‌گیره. Express به‌طور پیش‌فرض به این اطلاعات اعتماد نداره اما اگه trust proxy رو فعال کنید، Express از این هدرها برای تعیین IP و پروتکل واقعی کاربر استفاده میکنه.

‏۲. Trust Proxy به چه دردی میخوره؟

وقتی که برنامه‌ شما رو یه پراکسی معکوس (Reverse Proxy) یا یه لود بالانسر اجرا میشه، در حالت عادی Express فقط IP و اطلاعاتی که از سمت اون پراکسی دریافت کرده رو می‌بینه، نه اطلاعات اصلی کاربر. این یعنی ممکنه req.ip اشتباه باشه، req.protocol به جای https مقدار http داشته باشه و کلی مشکل دیگه.

اینجاست که Trust Proxy به درد می‌خوره 👇🏻

‏- وقتی فعال بشه، Express مقدار واقعی IP کاربر رو از X-Forwarded-For میخونه.

‏- req.protocol‏ رو بر اساس X-Forwarded-Proto تنظیم میکنه. ‌‌‏
‏- req.hostname رو درست مقداردهی میکنه‏

۳. چجوری Trust Proxy رو توی Express فعال کنیم؟

خیلی ساده!
const app = express();
app.set("trust proxy", true);


با این تنظیم:

‏- req.ip مقدار واقعی آی‌پی کاربر رو میده.
‏- req.protocol مقدار واقعی http یا https رو نشون میده.

اما... فعال کردنش به این سادگی هم نیست! چون ممکنه سرورهای پراکسی مختلفی جلوی اپلیکیشن باشن و تو نیاز داشته باشی مشخص کنی که به کدوم پراکسی‌ها اعتماد داری.


‏ ۴. Trust Proxy چه مقدارهایی میگیره؟


مقدار true همیشه بهترین گزینه نیست. Express چند مدل مقدار رو قبول میکنه:

app.set("trust proxy", false);  // پیش‌فرض، هیچ پراکسی‌ای رو قبول نمی‌کنه.
app.set("trust proxy", true); // به همه پراکسی‌ها اعتماد میکنه.
app.set("trust proxy", "loopback"); // فقط به 127.0.0.1 اعتماد میکنه.
app.set("trust proxy", "127.0.0.1"); // فقط به این IP خاص اعتماد میکنه.
app.set("trust proxy", ["192.168.1.1", "10.0.0.1"]); // لیستی از پراکسی‌های قابل‌اعتماد.
app.set("trust proxy", 2); // از آخرین دو پراکسی مقدار رو می‌خونه.


- مقدار 2 یعنی چی؟
وقتی مقدار 2 رو میدید، Express میاد ip واقعی کاربر رو از دو پراکسی آخر توی X-Forwarded-For استخراج میکنه. این کار به درد جایی میخوره که چند تا سرور بین کاربر و اپلیکیشن هستن.

- پس مقدار true بدیم یا نه؟
بهتره فقط به پراکسی‌هایی که می‌شناسی اعتماد کنید. مثلاً اگه سرور فقط Cloudflare یا Nginx قرار داره، میتونید فقط به اون آی‌پی‌ها اعتماد کنین تا از IP Spoofing جلوگیری بشه.


‏Trust Proxy یه تنظیم مهمه که وقتی برنامتون یه پراکسی مثل Nginx یا Cloudflare باشه، کمک میکنه Express اطلاعات واقعی کاربر رو تشخیص بده. اما باید دقت کنی که به هر پراکسی‌ای اعتماد نکنید! برای امنیت بیشتر، فقط به آی‌پی‌هایی که واقعاً Proxyهای خودتون هستن اجازه بدید.

برای جزئیات بیشتر میتونید به مستندات رسمی Express در مورد TrustProxy مراجعه کنید، که این جنبه ها رو با عمق بیشتری توضیح میده.

#nodejs #express
@CodeModule
13👌3