خروجی کد بالا؟ ☺️
Anonymous Quiz
49%
Mehdi
21%
Mahan
11%
Null
18%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
❤🔥4
با Node-Schedule آشنا بشید 💀
Node-Schedule یک پکیج برنامه ریزی قدرتمند و انعطاف پذیر مثل cron برای Node.js هست که به دولوپر ها این امکان رو میده، تا وظایف برنامه ریزی شده رو به راحتی تنظیم و مدیریت کنن. این یک API ساده و در عین حال قوی ارائه میکنه که هم از زمانبندی به سبک cron و هم از اجرای یکبار کار پشتیبانی میکنه، و اون رو به گزینهای برای مدیریت وظایف برنامهریزیشده در برنامههای Node.js تبدیل میکنه.
از این پکیج چه استفاده ای میشه؟🤔
Node-Schedule به گونه ای طراحی شده که زمان بندی کار رو ساده کنه. این به دولوپر ها اجازه میده تا کارها رو بر اساس نحو آشنای cron، که زمان اجرای وظایف مشخص میکنه، برنامه ریزی کنن. به عنوان مثال، میتونید یک کار رو برای اجرا هر روز در یک زمان خاص، هر ساعت یا حتی الگوهای پیچیده تر مثل هر سه شنبه دوم ماه برنامه ریزی کنید. این کتابخانه همچنین از گزینههای زمانبندی سادهتر مثل تنظیم یک کار برای اجرا در یک تاریخ و زمان خاص پشتیبانی میکنه.
یکی از ویژگی های برجسته Node-Schedule توانایی اون در انجام وظایف تکراری و تکالیف با سهولت یکسان هست. همچنین میتونه تفاوتهای منطقه زمانی رو مدیریت کنه و اطمینان حاصل کنه که وظایف شما بدون توجه به مکان سرور در زمانهای صحیح اجرا میشه. علاوه بر این، Node-Schedule به شما این امکان رو میده که کارها رو به صورت پویا لغو یا زمان بندی مجدد کنید و به شما کنترل کامل بر زمان بندی وظایف برنامه خود رو میده.
Node-Schedule یک ابزار ضروری برای دولوپرهایی هست، که نیاز به مدیریت و اجرای وظایف برنامه ریزی شده در برنامه های خودشون رو دارن. Node-Schedule با API منعطف، پشتیبانی شبیه به cron و توانایی انجام وظایف تکراری و یکباره، فرآیند زمانبندی کار رو ساده میکنه. برای کسب اطلاعات بیشتر به ریپازیتوری این پکیج مراجعه کنید.
#node_schedule
@CodeModule
Node-Schedule یک پکیج برنامه ریزی قدرتمند و انعطاف پذیر مثل cron برای Node.js هست که به دولوپر ها این امکان رو میده، تا وظایف برنامه ریزی شده رو به راحتی تنظیم و مدیریت کنن. این یک API ساده و در عین حال قوی ارائه میکنه که هم از زمانبندی به سبک cron و هم از اجرای یکبار کار پشتیبانی میکنه، و اون رو به گزینهای برای مدیریت وظایف برنامهریزیشده در برنامههای Node.js تبدیل میکنه.
از این پکیج چه استفاده ای میشه؟
Node-Schedule به گونه ای طراحی شده که زمان بندی کار رو ساده کنه. این به دولوپر ها اجازه میده تا کارها رو بر اساس نحو آشنای cron، که زمان اجرای وظایف مشخص میکنه، برنامه ریزی کنن. به عنوان مثال، میتونید یک کار رو برای اجرا هر روز در یک زمان خاص، هر ساعت یا حتی الگوهای پیچیده تر مثل هر سه شنبه دوم ماه برنامه ریزی کنید. این کتابخانه همچنین از گزینههای زمانبندی سادهتر مثل تنظیم یک کار برای اجرا در یک تاریخ و زمان خاص پشتیبانی میکنه.
یکی از ویژگی های برجسته Node-Schedule توانایی اون در انجام وظایف تکراری و تکالیف با سهولت یکسان هست. همچنین میتونه تفاوتهای منطقه زمانی رو مدیریت کنه و اطمینان حاصل کنه که وظایف شما بدون توجه به مکان سرور در زمانهای صحیح اجرا میشه. علاوه بر این، Node-Schedule به شما این امکان رو میده که کارها رو به صورت پویا لغو یا زمان بندی مجدد کنید و به شما کنترل کامل بر زمان بندی وظایف برنامه خود رو میده.
Node-Schedule یک ابزار ضروری برای دولوپرهایی هست، که نیاز به مدیریت و اجرای وظایف برنامه ریزی شده در برنامه های خودشون رو دارن. Node-Schedule با API منعطف، پشتیبانی شبیه به cron و توانایی انجام وظایف تکراری و یکباره، فرآیند زمانبندی کار رو ساده میکنه. برای کسب اطلاعات بیشتر به ریپازیتوری این پکیج مراجعه کنید.
#node_schedule
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡12🔥2
همه چیز از متد hasOwn جاوااسکریپت ✌️
کارایی hasOwn تقریباً مشابه hasOwnProperty هست و این متد به صورت استاتیک، از آبجکت گلوبال Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی داخل یک آبجکت خاص وجود داره یا خیر. خروجی این متد یک مقدار بولین (true یا false) هست.
مستندات MDN میگه hasOwn قراره جایگزین hasOwnProperty بشه. اما چرا؟ چرا hasOwn رو به hasOwnProperty ترجیح بدیم؟
دلایل مختلفی برای معرفی این متد وجود داره. ابتدای باید محدودیتهای hasOwnProperty رو بشناسیم. اول اینکه این متد خیلی راحت میتونه Override بشه:
همچنین وقتی که یک آبجکت رو به صورت زیر میسازیم:
اینجا معمولاً هدفمون اینه که یک آبجکت بدون پروتوتایپ میخوایم. یعنی بدون والد. پس توی چنین آبجکتی هیچ یک از پراپرتیهای والد وجود نداره. از جمله hasOwnProperty. پس با صدا زدن این متد از این آبجکت خطا میگیریم:
Override کردن یا حذف کردن چنین متدی ممکنه برای یک کتابخونه خارجی دردسر ساز بشه. برای حل چنین مشکلی نویسنده اون کتابخونه مجبور بود به چنین راه حلهایی رو بیاره:
پس دولوپرای جاوااسکریپت به این فکر افتادن که یک متد اختصاصی برای حل چنین مشکلاتی معرفی کنن. اسم این متد رو گذاشتن hasOwn. اگه از این متد برای آبجکتهای بالا استفاده کنیم دیگه خطا نمیگیریم:
همونطور که گفتیم اگه یک پراپرتی توی یک آبجکت وجود داشته باشه، خروجی این متد true هست. حتی اگه مقدار پراپرتی null یا undefined باشه:
از این متد نمیتونیم برای مقادیر null و undefined استفاده کنیم:
همچنین با hasOwn میتونیم بررسی کنیم که آیا یک آرایه یک ایندکس خاص داره یا نه:
همچنین باید بدونیم که متد hasOwn یک متد کاملاً جدید هست و فقط مرورگرهای جدید از اون پشتیبانی میکنن.
#hasown #javascript
@CodeModule
کارایی hasOwn تقریباً مشابه hasOwnProperty هست و این متد به صورت استاتیک، از آبجکت گلوبال Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی داخل یک آبجکت خاص وجود داره یا خیر. خروجی این متد یک مقدار بولین (true یا false) هست.
const person = { name: 'Emily' };
Object.hasOwn(person, 'name'); // true
person.hasOwnProperty('name'); // true
مستندات MDN میگه hasOwn قراره جایگزین hasOwnProperty بشه. اما چرا؟ چرا hasOwn رو به hasOwnProperty ترجیح بدیم؟
دلایل مختلفی برای معرفی این متد وجود داره. ابتدای باید محدودیتهای hasOwnProperty رو بشناسیم. اول اینکه این متد خیلی راحت میتونه Override بشه:
const person = {
name: 'Mario',
hasOwnProperty() {
return true;
},
}
alert(person.hasOwnProperty('age')); // true
همچنین وقتی که یک آبجکت رو به صورت زیر میسازیم:
const person = Object.create(null);
اینجا معمولاً هدفمون اینه که یک آبجکت بدون پروتوتایپ میخوایم. یعنی بدون والد. پس توی چنین آبجکتی هیچ یک از پراپرتیهای والد وجود نداره. از جمله hasOwnProperty. پس با صدا زدن این متد از این آبجکت خطا میگیریم:
const person = Object.create(null);
person.hasOwnProperty('name'); // TypeError: person.hasOwnProperty is not a function
Override کردن یا حذف کردن چنین متدی ممکنه برای یک کتابخونه خارجی دردسر ساز بشه. برای حل چنین مشکلی نویسنده اون کتابخونه مجبور بود به چنین راه حلهایی رو بیاره:
const person = {
hasOwnProperty() {
return true;
},
}
const exists = Object.prototype.hasOwnProperty.call(person, 'age'); alert(exists); // false
پس دولوپرای جاوااسکریپت به این فکر افتادن که یک متد اختصاصی برای حل چنین مشکلاتی معرفی کنن. اسم این متد رو گذاشتن hasOwn. اگه از این متد برای آبجکتهای بالا استفاده کنیم دیگه خطا نمیگیریم:
const person1 = Object.create(null);
alert(Object.hasOwn(person1, 'name')); // false
const person2 = {
hasOwnProperty: () => true,
}
alert(Object.hasOwn(person2, 'name')); // false
همونطور که گفتیم اگه یک پراپرتی توی یک آبجکت وجود داشته باشه، خروجی این متد true هست. حتی اگه مقدار پراپرتی null یا undefined باشه:
const person = {};
Object.hasOwn(person, 'name'); // false
person.age = 4;
Object.hasOwn(person, 'age'); // true
person.prop = null;
Object.hasOwn(person, 'prop'); // true
person.prop = undefined;
Object.hasOwn(person, 'prop'); // true
از این متد نمیتونیم برای مقادیر null و undefined استفاده کنیم:
// TypeError: can't convert undefined to object
Object.hasOwn(undefined, 'prop');
// TypeError: can't convert null to object
Object.hasOwn(null, 'prop');
همچنین با hasOwn میتونیم بررسی کنیم که آیا یک آرایه یک ایندکس خاص داره یا نه:
const numbers = ['one', 'two'];
Object.hasOwn(numbers, 1); // true
Object.hasOwn(numbers, 2); // false
همچنین باید بدونیم که متد hasOwn یک متد کاملاً جدید هست و فقط مرورگرهای جدید از اون پشتیبانی میکنن.
#hasown #javascript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👌5
با Nanoid بیشتر آشنا بشید 🦦
Nanoid یک تولیدکننده رشته منحصر به فرد کوچک، امن و سازگار با URL برای Node.js هست. این برای تولید شناسه هایی طراحی شده که از نظر رمزنگاری ایمن، در عین حال فشرده و سریع هستن.
از این پکیج چه استفاده ای میشه؟😀
استفاده از نانووئید فوق العاده آسون هست. به طور پیشفرض، رشتهای 21 کاراکتری تولید میکنه که برای بیشتر موارد استفاده کافی هست و 128 بیت رو ارائه میکنه. این تضمین میکنه که شناسه ها نه تنها منحصر به فرد هستن، بلکه در برابر برخوردها و الگوهای قابل پیش بینی نیز مقاوم هستن. پکیج بسیار قابل تنظیم هست و میتونید طول و الفبای شناسه تولید شده رو تنظیم کنید و اون رو با نیازهای مختلف سازگار کنید.
Nanoid در بین دولوپر ها برای تولید شناسه های منحصر به فرد در برنامه های Node.js، به یک انتخاب محبوب تبدیل شده. حجم کم، امنیت بالا و سهولت استفاده اون رو به جایگزینی عالی برای سایر کتابخانه های تولید شناسه تبدیل کرده. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#nanoid
@CodeModule
Nanoid یک تولیدکننده رشته منحصر به فرد کوچک، امن و سازگار با URL برای Node.js هست. این برای تولید شناسه هایی طراحی شده که از نظر رمزنگاری ایمن، در عین حال فشرده و سریع هستن.
از این پکیج چه استفاده ای میشه؟
استفاده از نانووئید فوق العاده آسون هست. به طور پیشفرض، رشتهای 21 کاراکتری تولید میکنه که برای بیشتر موارد استفاده کافی هست و 128 بیت رو ارائه میکنه. این تضمین میکنه که شناسه ها نه تنها منحصر به فرد هستن، بلکه در برابر برخوردها و الگوهای قابل پیش بینی نیز مقاوم هستن. پکیج بسیار قابل تنظیم هست و میتونید طول و الفبای شناسه تولید شده رو تنظیم کنید و اون رو با نیازهای مختلف سازگار کنید.
Nanoid در بین دولوپر ها برای تولید شناسه های منحصر به فرد در برنامه های Node.js، به یک انتخاب محبوب تبدیل شده. حجم کم، امنیت بالا و سهولت استفاده اون رو به جایگزینی عالی برای سایر کتابخانه های تولید شناسه تبدیل کرده. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#nanoid
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌13⚡3
اسکرول بار کاستوم خودت رو به پروژه اضافه کن 🔥
در این پست یک سایت بهتون معرفی میکنم که با استفاده از اون و فقط چند کلیک ساده، میتونید اسکرول بار کاستوم خودتون رو بسازید و سپس کد css تولید شده رو کپی و استفاده کنید.
🔗 Website
#scrollbar
@CodeModule
در این پست یک سایت بهتون معرفی میکنم که با استفاده از اون و فقط چند کلیک ساده، میتونید اسکرول بار کاستوم خودتون رو بسازید و سپس کد css تولید شده رو کپی و استفاده کنید.
#scrollbar
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
scrollbar.app
Simple CSS scrollbar editor.
⚡13🔥6
با BullMQ بیشتر آشنا بشید! 👽
BullMQ یک queueing system قدرتمند برای Node.js هست که برای رسیدگی به گردشهای کاری پیچیده پردازش کار با سهولت و کارایی طراحی شده. BullMQ با تکیه بر موفقیت نسخه قبلی خود، مجموعه ای از ویژگی ها و پیشرفت ها رو معرفی میکنه که اون رو به یکی از قابل اعتمادترین و مقیاس پذیرترین کتابخانه های صف(queue) موجود برای برنامه های Node.js تبدیل میکنه.
از این پکیج چه استفاده ای میشه؟🤔
BullMQ برای مدیریت و پردازش کارها، وظایف یا پیام هایی که باید به صورت ناهمزمان یا در زمان بعدی مدیریت بشن استفاده میشه. این به ویژه در برنامه هایی مفیده که در اون ها نیاز به پردازش حجم زیادی از داده ها، رسیدگی به وظایف بک گراند یا مدیریت گردش های کاری پیچیده شامل چندین مرحله یا خدمات دارین. با BullMQ، میتونید به راحتی صفهای جدید ایجاد کنید، وظایف رو اولویتبندی و کارها رو زمانبندی کنید.
برخی مواردی که از BullMQ استفاده میشه:
1⃣ پردازش ایمیل: در queue و ارسال ایمیل ها به صورت انبوه، اطمینان حاصل میشه که ایمیل ها به طور قابل اعتماد و بدون تحت فشار قرار دادن سرور شما ارسال میشه.
2⃣ پردازش داده: مدیریت مجموعه داده های بزرگ با تقسیم اونها به کارهای کوچکتر که میتونه همزمان پردازش بشه.
3⃣ زمانبندی وظایف: برنامه ریزی کارهایی که باید در زمان ها یا فواصل زمانی خاص اجرا بشن، مثل اجرای گزارش های روزانه یا پاک کردن داده های قدیمی.
به طور کلی BullMQ یک ابزار قدرتمند برای دولوپر هایی هست که به دنبال پیاده سازی صف های کارآمد و مقیاس پذیر در برنامه های خود هستن. مجموعه ویژگی های قوی و سهولت استفاده و مبتنی بر Redis، اون رو به گزینه ای مناسب برای انجام وظایف پس زمینه، مدیریت گردش های کاری پیچیده تبدیل میکنه. برای اطلاعات بیشتر به داکیومنت این ابزار مراجعه کنید.
#bullmq
@CodeModule
BullMQ یک queueing system قدرتمند برای Node.js هست که برای رسیدگی به گردشهای کاری پیچیده پردازش کار با سهولت و کارایی طراحی شده. BullMQ با تکیه بر موفقیت نسخه قبلی خود، مجموعه ای از ویژگی ها و پیشرفت ها رو معرفی میکنه که اون رو به یکی از قابل اعتمادترین و مقیاس پذیرترین کتابخانه های صف(queue) موجود برای برنامه های Node.js تبدیل میکنه.
از این پکیج چه استفاده ای میشه؟
BullMQ برای مدیریت و پردازش کارها، وظایف یا پیام هایی که باید به صورت ناهمزمان یا در زمان بعدی مدیریت بشن استفاده میشه. این به ویژه در برنامه هایی مفیده که در اون ها نیاز به پردازش حجم زیادی از داده ها، رسیدگی به وظایف بک گراند یا مدیریت گردش های کاری پیچیده شامل چندین مرحله یا خدمات دارین. با BullMQ، میتونید به راحتی صفهای جدید ایجاد کنید، وظایف رو اولویتبندی و کارها رو زمانبندی کنید.
برخی مواردی که از BullMQ استفاده میشه:
به طور کلی BullMQ یک ابزار قدرتمند برای دولوپر هایی هست که به دنبال پیاده سازی صف های کارآمد و مقیاس پذیر در برنامه های خود هستن. مجموعه ویژگی های قوی و سهولت استفاده و مبتنی بر Redis، اون رو به گزینه ای مناسب برای انجام وظایف پس زمینه، مدیریت گردش های کاری پیچیده تبدیل میکنه. برای اطلاعات بیشتر به داکیومنت این ابزار مراجعه کنید.
#bullmq
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👌2
چقدر از Meteor JS اطلاعات دارید؟ 😎
Meteor JS یک فریمورک جاوا اسکریپتی اوپن سورسه که به دولوپرا این امکان رو میده، تا برنامههای وب و موبایل رو بهطور سریع و آسون ایجاد کنن.
این فریمورک با استفاده از تکنولوژیهای مدرن و معماریهای پیشرفته، فرآیند توسعه رو سادهتر میکنه و به شما این امکان رو میده که با استفاده از یک زبان (جاوا اسکریپت) در هر دو سمت کلاینت و سرور کار کنید.
‼️ چرا باید از Meteor JS استفاده کنیم؟
استفاده از Meteor JS به دلیل سهولت داخل توسعه و قابلیتهای پیشرفتش، انتخاب مناسبی برای پروژههای مختلفه. این فریمورک بهویژه برای پروژههایی که نیاز به تعاملات real-time دارن، خیلی کارآمده.
👌 همچنین Meteor یک اکوسیستم غنی از پکیج ها و ابزارها رو ارائه میده که میتونه به سرعت روند توسعه رو تسریع کنه.
مزایای استفاده از Meteor JS⬇️
1️⃣ توسعه سریع: Meteor JS به شما اجازه میده تا با استفاده از قابلیتهاش، برنامههای خودتون رو سریعتر بسازید. این فریمورک با ساختار واضح و داکیومنت های کامل، یادگیری و پیادهسازی رو آسون میکنه.
2️⃣ تعامل real-time : Meteor بهطور پیشفرض از WebSockets برای برقراری ارتباط بین کلاینت و سرور استفاده میکنه. این ویژگی باعث میشه که دادهها بهصورت آنی بین کاربرا اپدیت شن.
3️⃣ یکپارچگی کلاینت و سرور: با استفاده از جاوا اسکریپت در هر دو سمت، دولوپرا میتونن به راحتی کدهای مشترک بنویسن و از پیچیدگیهای مرتبط با زبانهای مختلف جلوگیری کنن.
4️⃣ اکوسیستم غنی: Meteor دارای مجموعهای از پکیج ها و ماژولهاست که به شما این امکان رو میدن تا قابلیتهای جدیدی رو به برنامه هاتون اضافه کنید، بدون اینکه نیاز به نوشتن کدهای اضافی داشته باشید.
5️⃣ دیپلوی ساده : دیپلوی ساده پروژه ها با استفاده از CLI و یا ریپازیتوری git که میتونه نسبت به رقباش این رو یک مزایا برای خودش نگه داره.
در نهایت Meteor JS یک فریمورک قدرتمند و منعطفه که به دولوپرا اجازه میده تا برنامههای وب و موبایل رو بهطور سریع و مؤثر ایجاد کنن. اگر به دنبال یک راه حل کارآمد برای توسعه اپلیکیشنهاتون هستید، Meteor JS رو نادیده نگیرید.
برای اطلاعات بیشتر و یادگیری این فریمورک، میتونید به داکیومنتش مراجعه کنید.
Document🌕
#meteor #framework
@CodeModule
Meteor JS یک فریمورک جاوا اسکریپتی اوپن سورسه که به دولوپرا این امکان رو میده، تا برنامههای وب و موبایل رو بهطور سریع و آسون ایجاد کنن.
این فریمورک با استفاده از تکنولوژیهای مدرن و معماریهای پیشرفته، فرآیند توسعه رو سادهتر میکنه و به شما این امکان رو میده که با استفاده از یک زبان (جاوا اسکریپت) در هر دو سمت کلاینت و سرور کار کنید.
استفاده از Meteor JS به دلیل سهولت داخل توسعه و قابلیتهای پیشرفتش، انتخاب مناسبی برای پروژههای مختلفه. این فریمورک بهویژه برای پروژههایی که نیاز به تعاملات real-time دارن، خیلی کارآمده.
مزایای استفاده از Meteor JS
در نهایت Meteor JS یک فریمورک قدرتمند و منعطفه که به دولوپرا اجازه میده تا برنامههای وب و موبایل رو بهطور سریع و مؤثر ایجاد کنن. اگر به دنبال یک راه حل کارآمد برای توسعه اپلیکیشنهاتون هستید، Meteor JS رو نادیده نگیرید.
برای اطلاعات بیشتر و یادگیری این فریمورک، میتونید به داکیومنتش مراجعه کنید.
Document
#meteor #framework
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥3👌3
با پترن Proxy آشنا بشید! 🪻
الگوی پروکسی یک الگوی طراحی نرم افزار هست. یک پروکسی در کلی ترین شکل خود، کلاسی هست که به عنوان رابطی برای چیز دیگری عمل میکنه. پروکسی میتونه با هر چیزی ارتباط برقرار کنه، به عنوان مثال: یک اتصال شبکه، یک شی بزرگ در حافظه، یک فایل یا منابع دیگری که کپی کردن اون گرون هست یا غیرممکن. درواقع الگوی پروکسی یک راه غیرمستقیم برای دسترسی به یک شی فراهم میکنه و کنترل اضافی، انعطافپذیری و بهبود عملکرد رو برای کد شما ارائه میده.
پترن پروکسی یک رویکرد همه کاره برای تعامل با شی رو ارائه میده. این یک لایه از کنترل رو فراهم و فرآیندها رو ساده میکنه. حتی میتونه با افزودن قابلیت هایی مثل ذخیره سازی، عملکرد رو بهبود ببخشه. این امر اون رو به ابزاری ارزشمند برای ساختن سیستم های نرم افزاری انعطاف پذیر و امن تبدیل میکنه.
چه زمانی از الگوی طراحی پروکسی استفاده کنیم؟
مثلا فکر کنید در حال ساختن یک نرم افزار پیچیده هستید که به یک موتور رندر سه بعدی قدرتمند نیاز داره. با این حال، این موتور منابع فشرده هست و ممکنه برای همه عملکردها مورد نیاز نباشه. حالا اینجا پروکسی چه کمکی میتونه کنه؟ یک پروکسی برای موتور رندر اجرا میکنیم. در ابتدا، پروکسی یک مکان نگه می داره یا خالی میمونه. زمانی که رندر سه بعدی واقعاً مورد نیاز هست، پروکسی موتور واقعی رو ایجاد میکنه و اطمینان حاصل میکنه که منابع فقط در صورت لزوم تخصیص داده میشن. این رویکرد به طور قابل توجهی زمان راه اندازی برنامه و استفاده از حافظه رو با به تأخیر انداختن ساخت اشیاء با منابع فشرده بهبود می بخشه.
یک زمان دیگه ای که میتونیم از این پترن استفاده کنیم، موقعی هست که شما در حال توسعه یک سیستم مدیریت مالی با اطلاعات حساس حساب هستید. برخی از نقشهای کاربر فقط باید دسترسی به مشاهده داشته باشن، در حالی که برخی دیگر ممکن هست به مجوز تراکنش نیاز داشته باشن. اینجا یک پروکسی برای دسترسی به حساب میسازیم. پروکسی به عنوان دروازهبان عمل میکنه، درخواستهای دسترسی رو رهگیری میکنه و مجوزهای کاربر رو قبل از اعطای تعامل با شی حساب واقعی تأیید میکنه. این اقدامات امنیتی رو اعمال میکنه و تغییرات غیرمجاز رو محدود میکنه و از داده های مالی حساس محافظت میکنه.
حالا سوالی که پیش میاد اینه. چه زمانی استفاده نکنیم؟؟
به این سناریو دقت کنید: شما در حال توسعه یک برنامه پردازش داده هستید که وظایف ساده دستکاری داده ها رو انجام میده. کنترل دسترسی یا بارگذاری تنبل مورد نیاز نیست.
و اگر برنامه شما از ویژگی هایی مثل بارگذاری تنبل(lazy loading) یا کنترل دسترسی استفاده نمیکنه، پروکسی ها ممکن هست انتزاعات غیر ضروری رو معرفی کنن. این لایه اضافی می تونه رفتار شی واقعی رو پنهان کنه و دیباگ کردن رو چالش برانگیزتر کنه. در این شرایط، یک رویکرد ساده تر بدون پروکسی ممکنه قابل نگهداری تر باشه.
به صورت کلی همه دیزاین پترن ها بنظر من برای شرایط خاصی میتونن کمک کننده باشن(البته اگر حواسمون بهشون باشه). این پترن هم میتونه در شرایط خاصی کمک کننده و بهترین راه حل باشه. برای کسب اطلاعات بیشتر، شما میتونید مقالات زیر رو مطالعه کنید.
- Article
- Article
- Article
#design_pattern #proxy
@CodeModule
الگوی پروکسی یک الگوی طراحی نرم افزار هست. یک پروکسی در کلی ترین شکل خود، کلاسی هست که به عنوان رابطی برای چیز دیگری عمل میکنه. پروکسی میتونه با هر چیزی ارتباط برقرار کنه، به عنوان مثال: یک اتصال شبکه، یک شی بزرگ در حافظه، یک فایل یا منابع دیگری که کپی کردن اون گرون هست یا غیرممکن. درواقع الگوی پروکسی یک راه غیرمستقیم برای دسترسی به یک شی فراهم میکنه و کنترل اضافی، انعطافپذیری و بهبود عملکرد رو برای کد شما ارائه میده.
پترن پروکسی یک رویکرد همه کاره برای تعامل با شی رو ارائه میده. این یک لایه از کنترل رو فراهم و فرآیندها رو ساده میکنه. حتی میتونه با افزودن قابلیت هایی مثل ذخیره سازی، عملکرد رو بهبود ببخشه. این امر اون رو به ابزاری ارزشمند برای ساختن سیستم های نرم افزاری انعطاف پذیر و امن تبدیل میکنه.
چه زمانی از الگوی طراحی پروکسی استفاده کنیم؟
مثلا فکر کنید در حال ساختن یک نرم افزار پیچیده هستید که به یک موتور رندر سه بعدی قدرتمند نیاز داره. با این حال، این موتور منابع فشرده هست و ممکنه برای همه عملکردها مورد نیاز نباشه. حالا اینجا پروکسی چه کمکی میتونه کنه؟ یک پروکسی برای موتور رندر اجرا میکنیم. در ابتدا، پروکسی یک مکان نگه می داره یا خالی میمونه. زمانی که رندر سه بعدی واقعاً مورد نیاز هست، پروکسی موتور واقعی رو ایجاد میکنه و اطمینان حاصل میکنه که منابع فقط در صورت لزوم تخصیص داده میشن. این رویکرد به طور قابل توجهی زمان راه اندازی برنامه و استفاده از حافظه رو با به تأخیر انداختن ساخت اشیاء با منابع فشرده بهبود می بخشه.
یک زمان دیگه ای که میتونیم از این پترن استفاده کنیم، موقعی هست که شما در حال توسعه یک سیستم مدیریت مالی با اطلاعات حساس حساب هستید. برخی از نقشهای کاربر فقط باید دسترسی به مشاهده داشته باشن، در حالی که برخی دیگر ممکن هست به مجوز تراکنش نیاز داشته باشن. اینجا یک پروکسی برای دسترسی به حساب میسازیم. پروکسی به عنوان دروازهبان عمل میکنه، درخواستهای دسترسی رو رهگیری میکنه و مجوزهای کاربر رو قبل از اعطای تعامل با شی حساب واقعی تأیید میکنه. این اقدامات امنیتی رو اعمال میکنه و تغییرات غیرمجاز رو محدود میکنه و از داده های مالی حساس محافظت میکنه.
حالا سوالی که پیش میاد اینه. چه زمانی استفاده نکنیم؟؟
به این سناریو دقت کنید: شما در حال توسعه یک برنامه پردازش داده هستید که وظایف ساده دستکاری داده ها رو انجام میده. کنترل دسترسی یا بارگذاری تنبل مورد نیاز نیست.
و اگر برنامه شما از ویژگی هایی مثل بارگذاری تنبل(lazy loading) یا کنترل دسترسی استفاده نمیکنه، پروکسی ها ممکن هست انتزاعات غیر ضروری رو معرفی کنن. این لایه اضافی می تونه رفتار شی واقعی رو پنهان کنه و دیباگ کردن رو چالش برانگیزتر کنه. در این شرایط، یک رویکرد ساده تر بدون پروکسی ممکنه قابل نگهداری تر باشه.
به صورت کلی همه دیزاین پترن ها بنظر من برای شرایط خاصی میتونن کمک کننده باشن(البته اگر حواسمون بهشون باشه). این پترن هم میتونه در شرایط خاصی کمک کننده و بهترین راه حل باشه. برای کسب اطلاعات بیشتر، شما میتونید مقالات زیر رو مطالعه کنید.
- Article
- Article
- Article
#design_pattern #proxy
@CodeModule
⚡11🔥2
اگه در توسعه پروژتون نیاز به بک اند و دیتابیس داشتید، اما به هر دلیلی دسترسی به بک اند کار نداشتید و از فایربیس امثالهم خسته شدید، میتونید از ابزاری به نام Json-Server استفاده کنید و Api های مورد نیاز پروژتون رو توسعه بدید.
خب JSON Server چیه؟ 🔬
کلمه JSON مخفف عبارت JavaScript Object Notation هست و یک ابزار Node.js سبک و با کاربری آسونه که یک API RESTFUL و با استفاده از یک فایل JSON به عنوان data source شبیهسازی میکنه. توسعه دهنده های فرانتاند با کمک JSON Server میتونن APIهای ساختگی و بدون نیاز به نوشتن کدهای پیچیده سمت سرور یا زمانی که API پشتیبان هنوز آماده نیست ایجاد کنن.
این API ساختگی درخواستها رو به endpoint ای که تنظیم میکنید ارسال میکنه، به درخواستهای HTTP پاسخ میده و به این ترتیب کار و برای توسعه سریع برای توسعهدهندگان ایدهآل میکنه. JSON Server همچنین توسعهدهندگان و قادر میسازخ تا عملیات CRUD و انجام بدن و دادهها رو در فایلهای JSON ذخیره کنند.
ویژگیهای JSON Server 🔍
❗️راهاندازی آسان و سریع
❗️پشتیبانی از CRUD
❗️قدرتمند و ساده
❗️شبیه سازی داده ها
عملکرد Json server مثل یه بکاند واقعی هست. از این به بعد به جای استفاده از دیتابیس هایی مثل firebase که تحریم و مشکلاتی داره... میتونید از جیسون سرور برای توسعه نمونه کار هاتون استفاده کنید.
بهتون پیشنهاد میکنم نحوه نصب و استفاده رو تو داکیومنتش مطالعه کنید 💠
Document 🌐
#jsonServer #database
@CodeModule
خب JSON Server چیه؟ 🔬
کلمه JSON مخفف عبارت JavaScript Object Notation هست و یک ابزار Node.js سبک و با کاربری آسونه که یک API RESTFUL و با استفاده از یک فایل JSON به عنوان data source شبیهسازی میکنه. توسعه دهنده های فرانتاند با کمک JSON Server میتونن APIهای ساختگی و بدون نیاز به نوشتن کدهای پیچیده سمت سرور یا زمانی که API پشتیبان هنوز آماده نیست ایجاد کنن.
این API ساختگی درخواستها رو به endpoint ای که تنظیم میکنید ارسال میکنه، به درخواستهای HTTP پاسخ میده و به این ترتیب کار و برای توسعه سریع برای توسعهدهندگان ایدهآل میکنه. JSON Server همچنین توسعهدهندگان و قادر میسازخ تا عملیات CRUD و انجام بدن و دادهها رو در فایلهای JSON ذخیره کنند.
ویژگیهای JSON Server 🔍
❗️راهاندازی آسان و سریع
❗️پشتیبانی از CRUD
❗️قدرتمند و ساده
❗️شبیه سازی داده ها
عملکرد Json server مثل یه بکاند واقعی هست. از این به بعد به جای استفاده از دیتابیس هایی مثل firebase که تحریم و مشکلاتی داره... میتونید از جیسون سرور برای توسعه نمونه کار هاتون استفاده کنید.
بهتون پیشنهاد میکنم نحوه نصب و استفاده رو تو داکیومنتش مطالعه کنید 💠
Document 🌐
#jsonServer #database
@CodeModule
🔥18👌4
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
🔥12⚡2👌2
سوالات مصاحبه ای React.js 💠
در سایت زیر میتونید مجموعه ای از سوالات کاربردی و مصاحبه ای کتابخانه React.js رو به همراه جواب مشاهده کنید. با استفاده از این سایت، به راحتی میتونید خودتون رو به چالش بکشید یا اطلاعاتتون رو افزایش بدید.
🔗 https://react.sayjeyhi.com/
#react
@CodeModule
در سایت زیر میتونید مجموعه ای از سوالات کاربردی و مصاحبه ای کتابخانه React.js رو به همراه جواب مشاهده کنید. با استفاده از این سایت، به راحتی میتونید خودتون رو به چالش بکشید یا اطلاعاتتون رو افزایش بدید.
🔗 https://react.sayjeyhi.com/
#react
@CodeModule
⚡11🔥4👌4
WSL چیه ؟ ازش استفاده کنیم یا نه ؟ 🪴
🔵 در واقع Windows Subsystem for Linux (WSL) یک فیچر ویندوزه که به شما این امکان رو میده که توزیعهای مختلف لینوکس رو مستقیماً در ویندوز اجرا کنید.
شما با استفاده از WSL، میتونید از ابزارها و محیطهای لینوکسی بدون نیاز به نصب یک ماشین مجازی یا راهاندازی یک سیستمعامل جداگونه استفاده کنید.
مزایای استفاده از WSL چیه⬇️
✅ دسترسی ساده به ابزارهای لینوکس: شما میتونید به راحتی از ابزارها و بستههای لینوکس بدون نیاز به نصب یک ماشین مجازی یا دو سیستمعامل جداگونه استفاده کنید.
✅ ادغام با ویندوز: WSL به شما این امکان رو میده که از فایلها و برنامههای ویندوز و لینوکس به طور همزمان استفاده کنید. و همچنین میتونید به راحتی بین دو محیط جا به جا شید.
✅ سبک و سریع: WSL نسبت به ماشینهای مجازی سبکتره و زمان راهاندازی کمتری از شما میگیره.
✅ راحتی در توسعه نرمافزار: برای توسعهدهندگان وب و نرمافزار، WSL میتونه یک محیط مناسب برای تست و توسعه باشه.
معایب استفاده از WSL چیه⬇️
✅ محدودیتهای عملکردی: WSL ممکنه در بعضی موارد از نظر عملکرد نسبت به یک سیستم لینوکسی واقعی محدود باشه، به ویژه تو زمینههایی مثل پردازش گرافیکی.
✅ عدم پشتیبانی کامل از برخی برنامهها: برخی از برنامهها یا ابزارهای خاص ممکنه به درستی تو WSL کار نکنه یا نیاز به تنظیمات خاصی داشته باشه.
✅ مشکلات شبکه: در بعضی موارد هم ممکنه مشکلاتی در اتصال شبکه یا دسترسی به منابع شبکه وجود داشته باشه.
✅ مدیریت منابع: اگر منابع سیستمتون محدود باشه، اجرای WSL ممکنه تأثیر منفی روی عملکرد کلی سیستمتون داشته باشه.
اگر شما نیاز به استفاده از ابزارهای لینوکس دارید و نمیخواید یک ماشین مجازی راهاندازی کنید، WSL گزینه مناسبیه. اما اگر نیاز به پرفورمنس بسیار بالا یا استفاده از برنامههای خاص لینوکسی دارید، ممکنه بهتر باشه یک سیستم لینوکسی مستقل راهاندازی کنید.
#wsl #linux
@CodeModule
شما با استفاده از WSL، میتونید از ابزارها و محیطهای لینوکسی بدون نیاز به نصب یک ماشین مجازی یا راهاندازی یک سیستمعامل جداگونه استفاده کنید.
مزایای استفاده از WSL چیه
معایب استفاده از WSL چیه
اگر شما نیاز به استفاده از ابزارهای لینوکس دارید و نمیخواید یک ماشین مجازی راهاندازی کنید، WSL گزینه مناسبیه. اما اگر نیاز به پرفورمنس بسیار بالا یا استفاده از برنامههای خاص لینوکسی دارید، ممکنه بهتر باشه یک سیستم لینوکسی مستقل راهاندازی کنید.
#wsl #linux
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11👌2🔥1
ماژول 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
🔥9👌4
یک مرجع عالی برای تایپ اسکریپت 🥶
سایت Total TypeScript یک منبع آموزشی جامع برای یادگیری TypeScript هست که توسط Matt Pocock ایجاد شده. این سایت دورههای مختلف و محتوای آموزشی زیادی در مورد TypeScript ارائه میده، از جمله مباحث مقدماتی تا پیشرفته، بهترین شیوههای استفاده، نکات کلیدی برای بهینهسازی کدهای TypeScript و ...
از همه مهم تر یه قسمت جدید به سایت اضافه شده که یک کتابه ۱۶ چپتری هست، و از ابتدایی ترین مباحث تایپ اسکریپت شروع به آموزش میکنه. بهتون پیشنهاد میکنم حتما یک سر بزنید.
🔗 Link
#typescript
@CodeModule
سایت Total TypeScript یک منبع آموزشی جامع برای یادگیری TypeScript هست که توسط Matt Pocock ایجاد شده. این سایت دورههای مختلف و محتوای آموزشی زیادی در مورد TypeScript ارائه میده، از جمله مباحث مقدماتی تا پیشرفته، بهترین شیوههای استفاده، نکات کلیدی برای بهینهسازی کدهای TypeScript و ...
از همه مهم تر یه قسمت جدید به سایت اضافه شده که یک کتابه ۱۶ چپتری هست، و از ابتدایی ترین مباحث تایپ اسکریپت شروع به آموزش میکنه. بهتون پیشنهاد میکنم حتما یک سر بزنید.
🔗 Link
#typescript
@CodeModule
Total TypeScript
Professional TypeScript Training by Matt Pocock
Learn how to use TypeScript to level-up your applications as a web developer through exercise driven self-paced workshops and tutorials hosted by TypeScript wizard Matt Pocock.
⚡14❤🔥4
الگوریتم BFS چیست؟ 🪼
Breadth-First Search (BFS) یک الگوریتم پیمایش محبوب هست که برای کاوش گره ها (نود ها) در یک حرکت گسترده استفاده میشه، به این معنی که قبل از رفتن به گرهها در سطح بعدی، همه گرهها رو در عمق فعلی کاوش میکنه. BFS از یک گره منبع شروع میشه، همه همسایگان خودش رو بازدید میکنه و سپس به سطح بعدی گره های بازدید نشده منتقل میشه و در آخر اطمینان حاصل میکنه که هر گره فقط یک بار بازدید میشه. این با استفاده از یک ساختار داده صف عمل میکنه، که تضمین میکنه که گره ها به ترتیب کشف شده کاوش میشن.
از BFS کجاها استفاده میشه؟
BFS به طور گسترده در برنامه های کاربردی مختلف استفاده میشه، به ویژه در سناریوهایی که کوتاه ترین مسیر یا پیمایش مرتبه سطح مورد نیاز هست. برخی از برنامه های کاربردی رایج عبارتند از:
1. کوتاهترین مسیر در نمودارهای بدون وزن: BFS در پیدا کردن کوتاهترین مسیر بین دو گره در یک گراف بسیار کارآمده.
2. پلتفرم های شبکه های اجتماعی: برای کشف ارتباطات در درجات مختلف، مثل یافتن کوتاه ترین زنجیره دوستان، استفاده میشه.
3. اسکرپ وب: BFS به اسکرپ بین صفحات وب به صورت لول به لول کمک میکنه، قبل از رفتن به سطوح عمیق تر، پیوندهای جدید رو از صفحه فعلی کشف میکنه.
BFS یک الگوریتم اساسی با کاربردهای متنوع هست، به ویژه در مسائلی که کوتاهترین مسیر یا پیمایش مرتبه سطح مورد نیاز هست. توانایی اون در کاوش سیستماتیک گره ها level by level، جستجوی جامع و کارآمد رو در نمودارها یا درختان بدون وزن تضمین میکنه. برای اطلاعات بیشتر به مقالات لینک شده مراجعه کنید 💣
- Article
- Article
- Article
#bfs
@CodeModule
Breadth-First Search (BFS) یک الگوریتم پیمایش محبوب هست که برای کاوش گره ها (نود ها) در یک حرکت گسترده استفاده میشه، به این معنی که قبل از رفتن به گرهها در سطح بعدی، همه گرهها رو در عمق فعلی کاوش میکنه. BFS از یک گره منبع شروع میشه، همه همسایگان خودش رو بازدید میکنه و سپس به سطح بعدی گره های بازدید نشده منتقل میشه و در آخر اطمینان حاصل میکنه که هر گره فقط یک بار بازدید میشه. این با استفاده از یک ساختار داده صف عمل میکنه، که تضمین میکنه که گره ها به ترتیب کشف شده کاوش میشن.
از BFS کجاها استفاده میشه؟
BFS به طور گسترده در برنامه های کاربردی مختلف استفاده میشه، به ویژه در سناریوهایی که کوتاه ترین مسیر یا پیمایش مرتبه سطح مورد نیاز هست. برخی از برنامه های کاربردی رایج عبارتند از:
1. کوتاهترین مسیر در نمودارهای بدون وزن: BFS در پیدا کردن کوتاهترین مسیر بین دو گره در یک گراف بسیار کارآمده.
2. پلتفرم های شبکه های اجتماعی: برای کشف ارتباطات در درجات مختلف، مثل یافتن کوتاه ترین زنجیره دوستان، استفاده میشه.
3. اسکرپ وب: BFS به اسکرپ بین صفحات وب به صورت لول به لول کمک میکنه، قبل از رفتن به سطوح عمیق تر، پیوندهای جدید رو از صفحه فعلی کشف میکنه.
BFS یک الگوریتم اساسی با کاربردهای متنوع هست، به ویژه در مسائلی که کوتاهترین مسیر یا پیمایش مرتبه سطح مورد نیاز هست. توانایی اون در کاوش سیستماتیک گره ها level by level، جستجوی جامع و کارآمد رو در نمودارها یا درختان بدون وزن تضمین میکنه. برای اطلاعات بیشتر به مقالات لینک شده مراجعه کنید 💣
- Article
- Article
- Article
#bfs
@CodeModule
Wikipedia
Breadth-first search
algorithm for searching the nodes of a graph in order by their hop count from a starting node
⚡10❤🔥2