Forwarded from Code Module | کد ماژول (genix)
Do not use fs sync methods in Javascript⚡️
زمانی که ماژول fs رو در Node.js فراخوانی میکنیم، یک فهرست طولانی از متد های Syntc بهمون میده مثل: .readFileSync, fs.rmSync, fs.writeFileSync و... خیلی از متد های دیگه شبیه این متد ها هستن. مثلا من میخام یک فایل رو بخونیم:
اگه ما این فایل رو اجرا کنیم واقعا متوجه این کند بودن نمیشیم (جوری که فکر میکنیم دسترسی به فایل ها و خوندن سریع هست)، در حالی که اینگونه نیست! دسترسی به فایل سیستم کند هست و این هم باید در نظر بگیریم که کد های js در بین چندین لایه کد قرار داره (کد های خود js و c++ و...) هرجور بخوایم حساب کنیم در بهترین شرایط باز هم دسترسی به فایل ها کند هست! به عنوان مثال من امروز نیاز داشتم که 10 هزار فایل که حجم هر فایل 10 بایت هست رو ایجاد کنم. پیاده سازی اولیه من با استفاده از fs و متد های Sync بود. وقتی تست رو ران کردم این خروجی بهم داد( به صورت تقریبی هست):
چیزی حدود 4 دقیقه طول میکشه و خب خوب نیست. درواقع وقتی ما از متد های Sync استفاده میکنیم ایونت لوپ Nodejs رو متوقف میکنیم و بهش میگیم:"صبر کن کار من تموم شه" که همین باعث میشه چیزی حدود 4 دقیقه کمتر یا بیشتر طول بکشه. اما اگر همین کار رو بدون استفاده از متد ها Sync و از fs.promises استفاده کنیم نتیجه خیلی چشمگیر و بهتر از قبلی هست. که با چنین خروجی احتمالی روبرو میشیم:
چیزی حدود 7 ثانیه که متغیر هست 👀
این یکی از محکم ترین دلایلی هست که "نباید از متد های Sync استفاده کنیم". شما میتونید برای اطلاعات بیشتر مقاله زیر و کد ها رو بخونید (با متد های sync و بدون آنها)
- Article
#nodejs
@CodeModule
زمانی که ماژول fs رو در Node.js فراخوانی میکنیم، یک فهرست طولانی از متد های Syntc بهمون میده مثل: .readFileSync, fs.rmSync, fs.writeFileSync و... خیلی از متد های دیگه شبیه این متد ها هستن. مثلا من میخام یک فایل رو بخونیم:
const file = fs.readFileSync("codemodule.txt")اگه ما این فایل رو اجرا کنیم واقعا متوجه این کند بودن نمیشیم (جوری که فکر میکنیم دسترسی به فایل ها و خوندن سریع هست)، در حالی که اینگونه نیست! دسترسی به فایل سیستم کند هست و این هم باید در نظر بگیریم که کد های js در بین چندین لایه کد قرار داره (کد های خود js و c++ و...) هرجور بخوایم حساب کنیم در بهترین شرایط باز هم دسترسی به فایل ها کند هست! به عنوان مثال من امروز نیاز داشتم که 10 هزار فایل که حجم هر فایل 10 بایت هست رو ایجاد کنم. پیاده سازی اولیه من با استفاده از fs و متد های Sync بود. وقتی تست رو ران کردم این خروجی بهم داد( به صورت تقریبی هست):
Logging with frequent rotations took 223981~~ ms
چیزی حدود 4 دقیقه طول میکشه و خب خوب نیست. درواقع وقتی ما از متد های Sync استفاده میکنیم ایونت لوپ Nodejs رو متوقف میکنیم و بهش میگیم:"صبر کن کار من تموم شه" که همین باعث میشه چیزی حدود 4 دقیقه کمتر یا بیشتر طول بکشه. اما اگر همین کار رو بدون استفاده از متد ها Sync و از fs.promises استفاده کنیم نتیجه خیلی چشمگیر و بهتر از قبلی هست. که با چنین خروجی احتمالی روبرو میشیم:
Logging with frequent rotations took 7555.057167 ms
چیزی حدود 7 ثانیه که متغیر هست 👀
این یکی از محکم ترین دلایلی هست که "نباید از متد های Sync استفاده کنیم". شما میتونید برای اطلاعات بیشتر مقاله زیر و کد ها رو بخونید (با متد های sync و بدون آنها)
- Article
#nodejs
@CodeModule
Forwarded from Code Module | کد ماژول (genix)
ماژول perf_hooks چیکار میکنه؟ ⚡️
ماژول
ماژول «perf_hooks» در درجه اول بر روی اندازهگیریهای عملکرد با وضوح بالا تمرکز داره. مثلا با استفاده از روش «performance.now()»، دولوپر ها میتونن فواصل زمانی دقیق تا میکروثانیه رو اندازهگیری کنن که برای ردیابی مدت زمان انجام عملیات خاص مفید هست.
- مثال:
به صورت کلی ماژول
#nodejs
@CodeModule
ماژول
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
Forwarded from Ninja Learn | نینجا لرن
🌿 استفاده از پکیج dotenv در Node.js 🌿
امروز میخوایم در مورد پکیج dotenv توی Node.js صحبت کنیم. شاید برات سوال شده باشه که چطوری میشه اطلاعات حساس مثل API keyها، پسوردها و تنظیمات مهم رو بهصورت امن توی پروژه نگه داشت. اینجاست که dotenv میاد وسط و کار رو خیلی راحت میکنه! 😎
❓حالا dotenv چیه؟ 🤔
خب dotenv یه پکیجه که بهت اجازه میده اطلاعات حساس رو توی یه فایل به اسم .env ذخیره کنی. بهجای اینکه این اطلاعات رو مستقیم توی کدت بنویسی (که خیلی خطرناکه 😱)، میتونی توی فایل .env نگهشون داری و وقتی اپلیکیشن اجرا میشه، dotenv این مقادیر رو لود میکنه ومتغیرهای محیطی اضافه میکنه.
❓چرا باید از dotenv استفاده کنیم؟ 🔐
1⃣ امنیت بیشتر:
اطلاعات حساس رو مستقیم توی کدت نمینویسی
2⃣ سادگی در مدیریت تنظیماتات:
برای هر محیطی (مثل توسعه، تولید و تست) میتونی فایلهای .env جداگانه داشته باشی
3⃣ خوانایی بهتر کد:
وقتی اطلاعات حساس بیرون از کد اصلی باشه، کد تمیزتر و قابل نگهداریتر میشه.
❓ چطوری نصبش کنیم؟ 🛠️
نصب و استفاده از dotenv خیلی سادهست. اول با دستور زیر نصبش کن:
نحوه استفاده از dotenv 🚀
بعد از نصب، یه فایل .env توی پروژهات بساز و اطلاعات حساسی مثل API key، پسورد دیتابیس و بقیه تنظیمات رو توش ذخیره کن. مثلا:
حالا توی app.js (یا هر فایل اصلی پروژهات) باید dotenv رو لود کنی:
با این کار، dotenv تمام اطلاعات توی فایل .env رو لود میکنه و میتونی با استفاده از process.env بهشون دسترسی داشته باشی:
نکته مهم 🛑
هیچوقت فایل .env رو توی مخزن گیت (git) قرار نده! چون ممکنه اطلاعات حساسی مثل API keyهات لو بره. برای جلوگیری از این کار، فایل .env رو به .gitignore اضافه کن:
✅ جمعبندی:
پکیج dotenv خیلی به دردبخوره چون هم بهت کمک میکنه اطلاعات حساس رو به صورت امن مدیریت کنی و هم کدت تمیزتر و سازمانیافتهتر بشه. پس حتماً توی پروژههات ازش استفاده کن تا هم امنیت بالا بره هم تنظیمات محیطیت راحتتر مدیریت بشه. 😁
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم در مورد پکیج dotenv توی Node.js صحبت کنیم. شاید برات سوال شده باشه که چطوری میشه اطلاعات حساس مثل API keyها، پسوردها و تنظیمات مهم رو بهصورت امن توی پروژه نگه داشت. اینجاست که dotenv میاد وسط و کار رو خیلی راحت میکنه! 😎
❓حالا dotenv چیه؟ 🤔
خب dotenv یه پکیجه که بهت اجازه میده اطلاعات حساس رو توی یه فایل به اسم .env ذخیره کنی. بهجای اینکه این اطلاعات رو مستقیم توی کدت بنویسی (که خیلی خطرناکه 😱)، میتونی توی فایل .env نگهشون داری و وقتی اپلیکیشن اجرا میشه، dotenv این مقادیر رو لود میکنه ومتغیرهای محیطی اضافه میکنه.
❓چرا باید از dotenv استفاده کنیم؟ 🔐
1⃣ امنیت بیشتر:
اطلاعات حساس رو مستقیم توی کدت نمینویسی
2⃣ سادگی در مدیریت تنظیماتات:
برای هر محیطی (مثل توسعه، تولید و تست) میتونی فایلهای .env جداگانه داشته باشی
3⃣ خوانایی بهتر کد:
وقتی اطلاعات حساس بیرون از کد اصلی باشه، کد تمیزتر و قابل نگهداریتر میشه.
❓ چطوری نصبش کنیم؟ 🛠️
نصب و استفاده از dotenv خیلی سادهست. اول با دستور زیر نصبش کن:
npm install dotenv
نحوه استفاده از dotenv 🚀
بعد از نصب، یه فایل .env توی پروژهات بساز و اطلاعات حساسی مثل API key، پسورد دیتابیس و بقیه تنظیمات رو توش ذخیره کن. مثلا:
DB_HOST=localhost
DB_USER=root
DB_PASS=supersecret
حالا توی app.js (یا هر فایل اصلی پروژهات) باید dotenv رو لود کنی:
require('dotenv').config();با این کار، dotenv تمام اطلاعات توی فایل .env رو لود میکنه و میتونی با استفاده از process.env بهشون دسترسی داشته باشی:
const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPass = process.env.DB_PASS;
console.log(`Database: ${dbHost}, User: ${dbUser}`);
نکته مهم 🛑
هیچوقت فایل .env رو توی مخزن گیت (git) قرار نده! چون ممکنه اطلاعات حساسی مثل API keyهات لو بره. برای جلوگیری از این کار، فایل .env رو به .gitignore اضافه کن:
.env
✅ جمعبندی:
پکیج dotenv خیلی به دردبخوره چون هم بهت کمک میکنه اطلاعات حساس رو به صورت امن مدیریت کنی و هم کدت تمیزتر و سازمانیافتهتر بشه. پس حتماً توی پروژههات ازش استفاده کن تا هم امنیت بالا بره هم تنظیمات محیطیت راحتتر مدیریت بشه. 😁
#nodejs #js #dotenv
Forwarded from LearnPOV | لرن پی او وی
👾 ساخت ربات تلگرام با JavaScript 🤖
برای ساخت ربات تلگرام با جاوا اسکریپت، میتونیم از کتابخانه
مزایای استفاده از این کتابخانه ✅
➊ سادگی و سرعت در توسعه: با چند خط کد میتونید ربات تلگرام خودتونو بسازید.
➋ پشتیبانی از API تلگرام: به تمامی امکانات API تلگرام دسترسی دارید.
➌ منابع زیاد و مستندات خوب: یادگیری و توسعه با این کتابخانه به دلیل پشتیبانی مستندات کامل خیلی سادس.
نحوه نصب کتابخانه 🔰
اول از همه باید Node.js رو سیستمون نصب باشه !
ساخت یک ربات ساده تلگرام 🚀
توی این مثال میخوایم یه ربات بسازیم که به دستور
1️⃣ گرفتن توکن API از BotFather
2️⃣ نوشتن کد ربات
3️⃣ اجرای ربات
حالا ربات شما فعاله و اگر در تلگرام دستور
🌐 داکیومنت رسمی node-telegram-bot-api
امیدوارم از این مطلب لذت برده باشید، با ریاکشنای خودتون بهمون انرژی بدید ❤️🔥
برای ساخت ربات تلگرام با جاوا اسکریپت، میتونیم از کتابخانه
node-telegram-bot-api استفاده کنیم که یکی از محبوبترین راهها برای ساخت ربات تلگرام با Node.js هستش و به شما این اجازه رو میده تا به راحتی رباتهای تعاملی ایجاد کنید 💥مزایای استفاده از این کتابخانه ✅
➊ سادگی و سرعت در توسعه: با چند خط کد میتونید ربات تلگرام خودتونو بسازید.
➋ پشتیبانی از API تلگرام: به تمامی امکانات API تلگرام دسترسی دارید.
➌ منابع زیاد و مستندات خوب: یادگیری و توسعه با این کتابخانه به دلیل پشتیبانی مستندات کامل خیلی سادس.
نحوه نصب کتابخانه 🔰
اول از همه باید Node.js رو سیستمون نصب باشه !
حالا با استفاده از npm کتابخانه node-telegram-bot-api رو با استفاده از دستور زیر نصب کنید 🔻npm install node-telegram-bot-api
ساخت یک ربات ساده تلگرام 🚀
توی این مثال میخوایم یه ربات بسازیم که به دستور
/start جواب میده و به کاربر خوشامد میگه.1️⃣ گرفتن توکن API از BotFather
اول باید از BotFather در تلگرام توکن API خود را دریافت کنید. ( آموزش )
2️⃣ نوشتن کد ربات
بعد از دریافت توکن، میتونید کد ربات رو با جاوا اسکریپت بنویسید.
برای این کار یک فایل با نام bot.js ایجاد میکنیم و کد زیر رو داخلش قرار میدیم 🔻const TelegramBot = require('node-telegram-bot-api');
// ایجاد شیء ربات با توکن
const bot = new TelegramBot('YOUR_BOT_TOKEN', { polling: true });
// پاسخ به دستور /start
bot.onText(/\/start/, (msg) => {
bot.sendMessage(msg.chat.id, 'Hey, cooly coder 😎');
});3️⃣ اجرای ربات
برای اجرای ربات کافیه با Node.js فایلی که ساختیم رو اجرا کنیم 🔻
node bot.js
حالا ربات شما فعاله و اگر در تلگرام دستور
/start زو ارسال کنید برای ربات، پیام خوشامدگویی رو دریافت میکنید.این ربات یک مثال خیلی ساده بود و خودتون میتونید با افزودن ویژگیهای بیشتر مثل پاسخ به پیامها یا ارسال data به API، رباتهای خفن تری بسازید 💥
🌐 داکیومنت رسمی node-telegram-bot-api
#️⃣ #bot #nodejs #libarary
🚀 @coolycode
Forwarded from Woland's Linux Journal (Woland)
This media is not supported in your browser
VIEW IN TELEGRAM
میدونستین در کمتر از ۱۵۰ خط کد جاوااسکریپت، بدون هیچ وابستگی و بستهای از npm میتونین اینجور بازیهایی رو بسازین؟
در واقع این نشون میده که فقط با نودجیاس و بدون نیاز به blessed یا terminal kit میشه هر نوع برنامه ترمینالی ساخت.
چون اگر بتونیم input و state و output رو کنترل کنیم هر کاری میشه انجام داد.
این یه نمونه خیلی سادهس که امروز نوشتم و توی اون شما باید از زامبیها فرار کنید و الماس رو بگیرین.
گدرت جاوااسکریپت 💪😁
اگه خواستین بگین تا کدش و توضیحاتشو براتون بذارم.
#آموزش #جاوااسکریپت #بازی
#game #javascript #nodejs
در واقع این نشون میده که فقط با نودجیاس و بدون نیاز به blessed یا terminal kit میشه هر نوع برنامه ترمینالی ساخت.
چون اگر بتونیم input و state و output رو کنترل کنیم هر کاری میشه انجام داد.
این یه نمونه خیلی سادهس که امروز نوشتم و توی اون شما باید از زامبیها فرار کنید و الماس رو بگیرین.
اگه خواستین بگین تا کدش و توضیحاتشو براتون بذارم.
#آموزش #جاوااسکریپت #بازی
#game #javascript #nodejs
Forwarded from LearnPOV | لرن پی او وی
●● ماژول fs در Node.js چیست ؟ ●●
ماژول fs (فایل سیستم) در Node.js برای کار با فایلها و دایرکتوریها استفاده میشود. این ماژول امکان خواندن، نوشتن، حذف و مدیریت فایلها رو برای شما فراهم میکند.
متدهای مهم file system 🚀
ماژول fs (فایل سیستم) در Node.js برای کار با فایلها و دایرکتوریها استفاده میشود. این ماژول امکان خواندن، نوشتن، حذف و مدیریت فایلها رو برای شما فراهم میکند.
متدهای مهم file system 🚀
➊ fs.readFile(path, callback)🌐 مشاهده کامل متد های fs
محتوای فایل رو میخونه و در صورت موفقیت آمیز بودن، اون رو به کالبک برمیگردونه.
➋ fs.writeFile(path, data, callback)
محتوای پارامتر data رو داخل فایل مینویسه و فایل رو بازنویسی میکنه.
➌ fs.existsSync(path)
به صورت همزمان بررسی میکنه که آیا فایل یا دایرکتوری وجود دارد یا خیر.
➍ fs.unlink(path, callback)
برای حذف فایل ها بهکار میره و میتونید باهاش هر فایلی رو پاک بکنید.
➎ fs.rename(oldPath, newPath, callback)
نام یا مکان یک فایل رو تغییر میده.
➏ fs.mkdir(path, callback)
یک فولدر ( دایرکتوری ) جدید ایجاد میکنه.
#️⃣ #WhatsThat | #nodejs #fs
🚀 @coolycode
Forwarded from LearnPOV | لرن پی او وی
●● نودجیاس ( Node.js ) چیست ؟ ●●
نودجیاس یک محیط اجرایی سرور-محور برای اجرای کدهای جاوااسکریپتیه که به توسعهدهندگان این امکان رو میده تا به جای مرورگر، از جاوااسکریپت در سمت سرور استفاده کنند.
ویژگیهای کلیدی Node.js ✅
📊 مقیاسپذیری بالا
🚀 سرعت بالا
🔺 تکپردازشی، ولی بسیار کارا
📦 مدیریت packageها با NPM
⭕ غیر بلاک کننده ( Non-blocking )
🌐 وبسایت رسمی Node.js
⬇️ صفحه دانلود Node.js
امیدوارم حسابی لذت برده باشید، توی پست های بعدی متد های بیشتری از Node.js رو با هم دیگه بررسی میکنیم ⚡
نودجیاس یک محیط اجرایی سرور-محور برای اجرای کدهای جاوااسکریپتیه که به توسعهدهندگان این امکان رو میده تا به جای مرورگر، از جاوااسکریپت در سمت سرور استفاده کنند.
ویژگیهای کلیدی Node.js ✅
📊 مقیاسپذیری بالا
معماری Node.js به گونهای طراحی شده که برای برنامههایی که نیاز به مدیریت تعداد زیادی از ارتباطات همزمان (مثل APIها و اپلیکیشنهای بلادرنگ) دارند، بسیار مناسبه. به همین دلیل Node.js برای ساخت برنامههایی مثل چتهای بلادرنگ، وبسرویسهای API و برنامههای اشتراکگذاری فایل بسیار محبوب است.
🚀 سرعت بالا
به دلیل استفاده Node.js از موتور V8 گوگل کروم که کد جاوااسکریپت رو به سرعت به کد ماشین تبدیل میکنه، از سرعت بالایی برخورداره. همچنین، با استفاده از معماری غیرهمزمان، درخواستها به صورت کارآمد و بدون نیاز به انتظار مدیریت میشوند.
🔺 تکپردازشی، ولی بسیار کارا
نودجیاس تنها از یک رشته (thread) برای اجرای کد استفاده میکند، اما به دلیل None-Blocking بودن اون، عملیات سنگین رو به روشی بهینه مدیریت میکنه و این باعث میشه که مصرف منابع کم باشه و سرورها به سرعت به درخواستها پاسخ دهند.
📦 مدیریت packageها با NPM
نودجیاس با یک سیستم package manager به نام NPM (Node Package Manager) همراه است که بزرگترین مخزن بستههای نرمافزاری متنباز است. با NPM، توسعهدهندگان میتوانند به راحتی کتابخانههای مختلف را نصب و در پروژههای خود استفاده کنند.
⭕ غیر بلاک کننده ( Non-blocking )
نودجیاس از یک مدل ورودی/خروجی (I/O) غیربلاککننده و رویداد-محور استفاده میکند. این بدان معناست که عملیات ورودی/خروجی (مثل خواندن و نوشتن فایلها یا درخواستهای شبکه) بدون مسدود کردن فرآیند اصلی انجام میشود. این ویژگی باعث میشود Node.js بتواند هزاران درخواست را همزمان مدیریت کند بدون اینکه نیاز به منتظر ماندن برای یک عملیات I/O باشد.
🌐 وبسایت رسمی Node.js
⬇️ صفحه دانلود Node.js
#️⃣ #WhatsThat #nodejs #backend
🚀 @coolycode
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
●● معرفی فریم ورک Express.js ●●
یک فریمورک سبک، سریع و محبوب برای ساخت بکند اپلیکشن اپلیکیشنهای وب و توسعه Apiها با استفاده از Node.js است.
ویژگی های کلیدی ✅
توی این ویدیو یه پروژه ساده با اکسپرس ایجاد کردیم 🚀
یک فریمورک سبک، سریع و محبوب برای ساخت بکند اپلیکشن اپلیکیشنهای وب و توسعه Apiها با استفاده از Node.js است.
ویژگی های کلیدی ✅
➊ سادگی : یادگیری و استفاده از Express.js بسیار آسان است.
➋ سرعت : به دلیل ساختار سبک و بهینه، اپلیکیشنهای ساخته شده با Express.js بسیار سریع هستند.
➌ انعطافپذیری : این فریم ورک به شما آزادی زیادی برای ساخت اپلیکیشنهای دلخواه میدهد.
➍ جامعه بزرگ : یک جامعه بزرگ از توسعهدهندگان وجود داره که از Express.js استفاده میکنند.
توی این ویدیو یه پروژه ساده با اکسپرس ایجاد کردیم 🚀
#framework #nodejs #backend
Channel | Group | YouTube
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
This media is not supported in your browser
VIEW IN TELEGRAM
●●سرو کردن فایلهای HTML در Express.js ●●
توی این ویدیو بهتون یاد دادم که چجوری میتونید خیلی ساده فایل های HTMLای سرو بکنید توی اکسپرس و بفرستید سمت کلاینت.
🌐 مشاهده کامل ویدیو در یوتوب
اگه به این سبک پستا علاقه داری به چنلمون یه سر بزن 🚀
〰️〰️〰️〰️〰️〰️〰️〰️〰️
توی این ویدیو بهتون یاد دادم که چجوری میتونید خیلی ساده فایل های HTMLای سرو بکنید توی اکسپرس و بفرستید سمت کلاینت.
پ.ن : اگر نیاز داشته باشید که یه وبسایت استتیک بسازید با اکسپرس میتونید از این روش استفاده کنید 🚀
🌐 مشاهده کامل ویدیو در یوتوب
#️⃣ #nodejs #youtube #backend
〰️〰️〰️〰️〰️〰️〰️〰️〰️
Channel | Group | YouTube
Forwarded from FullstacksJS — Academy
قسمت چهارم ماب ریویو: معماری نرم افزار و DDD
تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
مشاهده ویدئو
اگر علاقه دارید میتونید کدهاتون رو برای من بفرستید تا توی این جلسهها با همدیگه ریویوشون کنیم.
مباحث
00:00 ماب ریویو چیه؟
01:06 درباره پروژه؟
02:32 پارادایم Reactive Programming
03:55 معماری های Hexagonal
05:39 تعریف و انواع وابستگی توی معماری
06:55 مفهوم Dependency Inversion
13:41 مفهوم Dependency Injection
17:35 استفاده این مفاهیم توی معماری
20:08 لایه Domain توی معماری Clean
21:10 مزیت نام گذاری روی معماریها و پترنها
21:57 Domain Driven Design چیه؟
34:24 معرفی منابع برای DDD
37:53 پرکیتس ها و اهمیت Communication
42:39 مسئولیت لایه Application
44:43 آنتی پرتن Anemic domain
46:48 مفهوم Ubiquitous language و Bounded Context
53:16 مفاهیم Strategic design و Tactical Design
54:29 فرق بین Value Object و Entity
1:00:42 مفهوم Domain Event
1:02:00 مفهوم Aggregate root
1:05:34 استفاده از این مفاهیم تو NestJS
1:06:53 مفهوم persistence ignorance
1:09:06 بی اهمیت بودن ابزارها و اهمیت نیاز بیزینس
1:12:03 چرا مقایسه ابزارها درست نیست
1:14:29 کجا باید از DDD استفاده کنیم؟
1:15:41 چرا کسب تجربه توی DDD سخته؟
1:16:34 پترن CQRS
1:19:26 چرا نباید همه جا از پترنها و معماریها استفاده کنیم؟
✦ ماب ریویو چیه؟
✦ سورس کد
✦ اضافه کردن به تقویم
#mobreview #nestjs #cqrs #designpatterns #ddd #cleanarchitecture #hexagonarchitecture #mongodb #typescript #nodejs
تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
مشاهده ویدئو
اگر علاقه دارید میتونید کدهاتون رو برای من بفرستید تا توی این جلسهها با همدیگه ریویوشون کنیم.
مباحث
00:00 ماب ریویو چیه؟
01:06 درباره پروژه؟
02:32 پارادایم Reactive Programming
03:55 معماری های Hexagonal
05:39 تعریف و انواع وابستگی توی معماری
06:55 مفهوم Dependency Inversion
13:41 مفهوم Dependency Injection
17:35 استفاده این مفاهیم توی معماری
20:08 لایه Domain توی معماری Clean
21:10 مزیت نام گذاری روی معماریها و پترنها
21:57 Domain Driven Design چیه؟
34:24 معرفی منابع برای DDD
37:53 پرکیتس ها و اهمیت Communication
42:39 مسئولیت لایه Application
44:43 آنتی پرتن Anemic domain
46:48 مفهوم Ubiquitous language و Bounded Context
53:16 مفاهیم Strategic design و Tactical Design
54:29 فرق بین Value Object و Entity
1:00:42 مفهوم Domain Event
1:02:00 مفهوم Aggregate root
1:05:34 استفاده از این مفاهیم تو NestJS
1:06:53 مفهوم persistence ignorance
1:09:06 بی اهمیت بودن ابزارها و اهمیت نیاز بیزینس
1:12:03 چرا مقایسه ابزارها درست نیست
1:14:29 کجا باید از DDD استفاده کنیم؟
1:15:41 چرا کسب تجربه توی DDD سخته؟
1:16:34 پترن CQRS
1:19:26 چرا نباید همه جا از پترنها و معماریها استفاده کنیم؟
✦ ماب ریویو چیه؟
✦ سورس کد
✦ اضافه کردن به تقویم
#mobreview #nestjs #cqrs #designpatterns #ddd #cleanarchitecture #hexagonarchitecture #mongodb #typescript #nodejs
YouTube
Mob Review 4: معماری نرم افزار و DDD
توی این جلسه یک پروژه تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش…
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش…
Forwarded from ASafaeirad
Forwarded from ASafaeirad
Node.JS Typescript support (kinda) is now enabled by default.
https://github.com/nodejs/node/pull/56350
#nodejs #news
https://github.com/nodejs/node/pull/56350
#nodejs #news
GitHub
module: unflag --experimental-strip-types by marco-ippolito · Pull Request #56350 · nodejs/node
It's time to enable it by default to catch some more bugs, currently there are no open issues.
I think it's a semver minor change.
Fixes: nodejs/typescript#17
@nodejs/tsc for visibi...
I think it's a semver minor change.
Fixes: nodejs/typescript#17
@nodejs/tsc for visibi...
Forwarded from Code Module | کد ماژول (genix)
میدونستی با Node.js میتونی انیمیشن های جذابی توی ترمینال بسازی؟ 🚀
یکی از کارهایی که میتونید به عنوان سرگرمی انجام بدید، ساخت انیمیشن های ترمینال هست. مقاله vladimirvovk یک راهنمای جامع در مورد چگونگی انجام این کار هست. این مقاله نحوه ساخت digital rain که شبیه به Matrix هست رو نشون میده که با استفاده از process.stdout، اون رو میسازه(البته به صورت کوچیک شده). همچنین یک مقدمه کوتاهی از ANSIS هم داره که کار رو برای ساخت رنگ ها ساده میکنه و میتونید از اون توی انیمیشن هاتون استفاده کنید.
برای اطلاعات بیشتر به این مقاله مراجعه کنید.
#nodejs
@CodeModule
یکی از کارهایی که میتونید به عنوان سرگرمی انجام بدید، ساخت انیمیشن های ترمینال هست. مقاله vladimirvovk یک راهنمای جامع در مورد چگونگی انجام این کار هست. این مقاله نحوه ساخت digital rain که شبیه به Matrix هست رو نشون میده که با استفاده از process.stdout، اون رو میسازه(البته به صورت کوچیک شده). همچنین یک مقدمه کوتاهی از ANSIS هم داره که کار رو برای ساخت رنگ ها ساده میکنه و میتونید از اون توی انیمیشن هاتون استفاده کنید.
برای اطلاعات بیشتر به این مقاله مراجعه کنید.
#nodejs
@CodeModule
DEV Community
Terminal Animations with Node.js
Node.js has the process object with stdout property which is a stream connected to stdout. Using the...
Forwarded from Node Unique
🔤 @Code_Unique
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Code Module | کد ماژول (genix)
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 به جای
اینجاست که Trust Proxy به درد میخوره 👇🏻
- وقتی فعال بشه، Express مقدار واقعی IP کاربر رو از X-Forwarded-For میخونه.
- req.protocol رو بر اساس X-Forwarded-Proto تنظیم میکنه.
- req.hostname رو درست مقداردهی میکنه
۳. چجوری Trust Proxy رو توی Express فعال کنیم؟
خیلی ساده!
با این تنظیم:
- req.ip مقدار واقعی آیپی کاربر رو میده.
- req.protocol مقدار واقعی http یا https رو نشون میده.
۴. Trust Proxy چه مقدارهایی میگیره؟
مقدار
Trust Proxy یه تنظیم مهمه که وقتی برنامتون یه پراکسی مثل Nginx یا Cloudflare باشه، کمک میکنه Express اطلاعات واقعی کاربر رو تشخیص بده. اما باید دقت کنی که به هر پراکسیای اعتماد نکنید! برای امنیت بیشتر، فقط به آیپیهایی که واقعاً Proxyهای خودتون هستن اجازه بدید.
برای جزئیات بیشتر میتونید به مستندات رسمی Express در مورد TrustProxy مراجعه کنید، که این جنبه ها رو با عمق بیشتری توضیح میده.
#nodejs #express
@CodeModule
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