با Cheerio هر سایتی که میخوای scrap کن! 🐙
اگه با Node.js کار میکنید و به ابزاری برای دستکاری و تجزیه HTML نیاز دارید، پکیج Cheerio راه حل شماست. Cheerio یک API قدرتمند، سریع و انعطاف پذیر مشابه jQuery برای دستکاری HTML سمت سرور ارائه میده. با Cheerio میتونید به راحتی ساختارهای DOM رو پیمایش و دستکاری کنین، و کارهای مختلفی رو بدون محیط کامل مرورگر انجام بدید.
Cheerio چه کاربردی داره؟🤔
1⃣ Web Scraping: از این پکیج به طور گسترده برای web scraping استفاده میشه. با واکشی محتوای HTML از یک صفحه وب، میتونید از Cheerio برای استخراج و دستکاری داده ها استفاده کنید. این برای کارهایی مانند بازیابی قیمت محصولات از یک سایت e-commerce، استخراج مقالات خبری یا جمع آوری اطلاعات برای اهداف تحقیقاتی عالیه.
2⃣ استخراج داده: چه با فایل های HTML استایتک کار کنید و چه با محتوای تولید شده به صورت داینامیک، Cheerio به شما اجازه میده تا داده های لازم رو به طور موثر تجزیه و استخراج کنید. این به ویژه برای مدیریت رسپانس های HTML از سرویس های وب یا API هایی که داده های HTML رو برمیگردونن، مفیده.
3⃣ تست و اتوماسیون: Cheerio میتونه در محیط های تستی برای تایید ساختار و محتوای اسناد HTML استفاده بشه. این به صورت یکپارچه با فریمورک های تست مانند Mocha و Chai ادغام میشه و شما رو قادر میسازه تا تستهای قدرتمندی برای برنامههای وب خود بنویسید.
Cheerio یک ابزار ارزشمند برای دولوپر های Node.js هست. API jQuery مانند اون یادگیری و استفاده ازش رو آسون میکنه، در حالی که ماهیت سبکش تضمین میکنه که برنامه های شما سریع و کارآمد باقی بمونه. برای کسب اطلاعات بیشتر به داکیومنت اصلی اون مراجعه کنید.
#nodejs #cheerio
@CodeModule
اگه با Node.js کار میکنید و به ابزاری برای دستکاری و تجزیه HTML نیاز دارید، پکیج Cheerio راه حل شماست. Cheerio یک API قدرتمند، سریع و انعطاف پذیر مشابه jQuery برای دستکاری HTML سمت سرور ارائه میده. با Cheerio میتونید به راحتی ساختارهای DOM رو پیمایش و دستکاری کنین، و کارهای مختلفی رو بدون محیط کامل مرورگر انجام بدید.
Cheerio چه کاربردی داره؟
Cheerio یک ابزار ارزشمند برای دولوپر های Node.js هست. API jQuery مانند اون یادگیری و استفاده ازش رو آسون میکنه، در حالی که ماهیت سبکش تضمین میکنه که برنامه های شما سریع و کارآمد باقی بمونه. برای کسب اطلاعات بیشتر به داکیومنت اصلی اون مراجعه کنید.
#nodejs #cheerio
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥4
Node.js چطور با انواع عملیات فایل ها برخورد میکنه؟ 🤟
یکی از جنبه های ضروری بسیاری از برنامه ها مدیریت فایل هست، مثل خوندن و نوشتن فایل ها و ... اما قبل از دونستن نحوه کار مدیریت فایل ها، باید بدونیم خود فایل چیه. به طور خلاصه، فایل یک محفظه داده ای هست که روی یک هارد دیسک ذخیره شده و توسط سیستم عامل (OS) قابل دسترسی و مدیریت هست.
فرآیند کلی مدیریت فایل به چه شکله؟🤔
بیشتر زبان های برنامه نویسی برای مدیریت عملیات فایل به سیستم عامل (OS) متکی هستن. این تعامل برای خوندن و نوشتن فایل ها بدون مدیریت مستقیم پیچیدگی های سخت افزاری ضروری هست.
1⃣ Function Call: ما به عنوان دولوپر یک فانکشن رو برای باز کردن، خوندن، نوشتن یا دستکاری یک فایل مینویسیم. این فانکشن معمولاً بخشی از کتابخانه استاندارد اون زبانه.( در Node.js به عنوان رانتایم این کار رو با ماژول fs هندل میکنه)
2⃣ Library Abstraction: تابع استاندارد کتابخانه پیچیدگی تعامل با سیستم عامل رو خلاصه میکنه. این درخواست رو به گونه ای بسته بندی میکنه که سیستم عامل بتونه اون رو درک کنه. (Node.js از کتابخونه Libuv برای اینکار استفاده میکنه)
3⃣ System Call: فانکشن کتابخانه یک تماس سیستمی برقرار میکنه. فراخوانی سیستم مکانیزمی هست که به برنامه در سطح کاربر اجازه میده تا خدمات رو از سیستم عامل درخواست کنن. فراخوانی های رایج سیستمی برای عملیات فایل شامل «open»، «read»، «write» و «close» هست.
4⃣ OS Handling: سیستم عامل تماس سیستم رو دریافت میکنه، عملیات درخواستی رو انجام میده (مثلاً مکان یابی فایل روی دیسک، خواندن داده ها، نوشتن داده ها)، و نتیجه رو برمیگردونه.
5⃣ Data Retrieval: سیستم عامل داده های فایل یا وضعیت عملیات رو از طریق کتابخانه استاندارد به برنامه برمیگردونه.
این فرآیند تضمین میکنه که برنامه ها میتوننن عملیات فایل رو بدون نیاز به مدیریت جزئیات سطح پایین تعامل با سیستم فایل و سخت افزار انجام بدن. برای کسب اطلاعات بیشتر مقالات زیر رو مطالعه کنید.
- Article
- Article
- Article
#nodejs
@CodeModule
یکی از جنبه های ضروری بسیاری از برنامه ها مدیریت فایل هست، مثل خوندن و نوشتن فایل ها و ... اما قبل از دونستن نحوه کار مدیریت فایل ها، باید بدونیم خود فایل چیه. به طور خلاصه، فایل یک محفظه داده ای هست که روی یک هارد دیسک ذخیره شده و توسط سیستم عامل (OS) قابل دسترسی و مدیریت هست.
فرآیند کلی مدیریت فایل به چه شکله؟
بیشتر زبان های برنامه نویسی برای مدیریت عملیات فایل به سیستم عامل (OS) متکی هستن. این تعامل برای خوندن و نوشتن فایل ها بدون مدیریت مستقیم پیچیدگی های سخت افزاری ضروری هست.
این فرآیند تضمین میکنه که برنامه ها میتوننن عملیات فایل رو بدون نیاز به مدیریت جزئیات سطح پایین تعامل با سیستم فایل و سخت افزار انجام بدن. برای کسب اطلاعات بیشتر مقالات زیر رو مطالعه کنید.
- Article
- Article
- Article
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥5
با این ماژول هر چیزی که میخوای فشرده کن! 🦦
در Node.js برای عملیات فشرده سازی و رفع فشرده سازی یک ماژول قدرتمند وجود داره به اسم zilib. این ماژول هر دو روش همزمان و ناهمزمان رو برای انجام این عملیات ارائه میده و به دولوپر ها این امکان رو میده تا رویکردی رو انتخاب کنن، که به بهترین وجه با نیازهاشون مطابقت داره.
این ماژول در چه مواقعی کاربرد داره؟🤔
1⃣ سرور های وب: سرور های وب میتونن از ماژول
2⃣ فشرده سازی فایل ها: ماژول
3⃣ Data Streams: مدیریت streams داده های بزرگ مانند فایل های لاگ، اغلب به فشرده سازی نیاز داره تا ذخیره سازی و انتقال کارآمدتر بشه. ماژول «zlib» از فشردهسازی مبتنی بر جریان پشتیبانی کنه و اون رو برای برنامههای پردازش داده ایدهآل میکنه.
به صورت کلی ماژول
#nodejs
@CodeModule
در Node.js برای عملیات فشرده سازی و رفع فشرده سازی یک ماژول قدرتمند وجود داره به اسم zilib. این ماژول هر دو روش همزمان و ناهمزمان رو برای انجام این عملیات ارائه میده و به دولوپر ها این امکان رو میده تا رویکردی رو انتخاب کنن، که به بهترین وجه با نیازهاشون مطابقت داره.
این ماژول در چه مواقعی کاربرد داره؟
zlib
برای فشرده سازی ریسپانس های HTTP قبل از ارسال اون ها به کلاینت ها استفاده کنن. این باعث کاهش حجم داده های منتقل شده از طریق شبکه میشه که منجر به بارگذاری سریع تر و کاهش استفاده از پهنای باند میشه. به عنوان مثال، فشرده سازی JSON، HTML یا سایر فایل های ثابت قبل از انتقال، میتونه به طور قابل توجهی عملکرد برنامه رو افزایش بده.zlib
میتونه فایل ها رو برای ذخیره سازی فشرده کنه و استفاده از فضای دیسک رو کاهش بده. همچنین میتونه فایلها رو در صورت نیاز به خوندن یا پردازش از حالت فشرده خارج کنه. این به ویژه برای راه حل های پشتیبان، سیستم های بایگانی یا هر سناریویی که فایل های بزرگ باید به طور موثر ذخیره بشن مفید هست.به صورت کلی ماژول
zlib
در Node.js یک ابزار قدرتمند برای مدیریت فشرده سازی و رفع فشرده سازی داده ها هست. با استفاده از ماژول zlib
، دولوپر ها میتونن برنامه هایی بسازن که هم سریعتر و هم از نظر منابع کارآمدتر باشن. برای کسب اطلاعات بیشتر به داکیومنت خود ماژول مراجعه کنید.#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11⚡4
با پکیج Cloudinary آشنا بشید 🪐
Cloudinary یک راه حل جامع برای مدیریت media ها هست، که به طور گسترده در کامیونیتی دولوپر های Node.js مورد استفاده قرار میگیره. این پکیج مجموعه ای قدرتمند از ابزارها رو برای آپلود، مدیریت و ارائه فایل ها مانند تصاویر و ویدئوها رو فراهم میکنه.
اما این پکیج کجا کاربرد داره؟😄
1⃣ Upload Media: از چندین منبع برای آپلود رسانه پشتیبانی میکنه، از جمله مسیرهای لوکال فایل، URL های دیتابیس، URI های base64.
2⃣ Transform and Optimize: یکی از ویژگی های برجسته Cloudinary، توانایی اون در انجام دگرگونی ها در حین on-the-fly هست. دولوپر ها میتونن مستقیماً از طریق API Cloudinary، اندازه، برش، فشردهسازی و اعمال جلوههای مختلف روی تصاویر و ویدیوها اعمال کنن و از تحویل بهینه رسانه بدون افت کیفیت اطمینان حاصل کنن.
3⃣ Delivery and CDN: با CDN ها ادغام میشه تا فایل های media رو سریع و کارآمد به کاربران نهایی تحویل بده. این ادغام کاهش زمان بارگذاری و تجربه کلی بهتر کاربر رو تضمین میکنه.
Cloudinary یک ابزار ارزشمند برای دولوپر های Node.js، که به دنبال ساده سازی و بهبود گردش کار مدیریت media خود هستن، هست. API قوی اون، همراه با ویژگیهای قدرتمندی مانند تبدیلهای لحظهای و ادغام CDN، اون رو به بهترین انتخاب برای مدیریت تصاویر و ویدیوها در برنامههای وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت Cloudinary مراجعه کنید.
#cloudinary #nodejs
@CodeModule
Cloudinary یک راه حل جامع برای مدیریت media ها هست، که به طور گسترده در کامیونیتی دولوپر های Node.js مورد استفاده قرار میگیره. این پکیج مجموعه ای قدرتمند از ابزارها رو برای آپلود، مدیریت و ارائه فایل ها مانند تصاویر و ویدئوها رو فراهم میکنه.
اما این پکیج کجا کاربرد داره؟
Cloudinary یک ابزار ارزشمند برای دولوپر های Node.js، که به دنبال ساده سازی و بهبود گردش کار مدیریت media خود هستن، هست. API قوی اون، همراه با ویژگیهای قدرتمندی مانند تبدیلهای لحظهای و ادغام CDN، اون رو به بهترین انتخاب برای مدیریت تصاویر و ویدیوها در برنامههای وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت Cloudinary مراجعه کنید.
#cloudinary #nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3
با ماژول sqlite آشنا بشید! 💫
ماژول 'sqlite' یک ماژول internal (داخلی) هست که اخیراً در Node.js معرفی شده، و قابلیت یکپارچه سازی Node.js با دیتابیس SQLite رو فراهم میکنه. این ماژول جدید، ادغام SQLite رو ساده میکنه و به دولوپر ها این امکان رو میده تا دیتابیس های سبک وزن رو بدون تکیه بر کتابخانه های خارجی یا وابستگی ها، مدیریت کنن.
اما دقیقا این ماژول چه کاربردی داره؟🤔
1⃣ ساخت و اتصال به دیتابیس: این ماژول امکان ایجاد و اتصال آسان به دیتابیس SQLite رو فراهم میکنه. دولوپر ها به سرعت میتونن یک دیتابیس جدید راه اندازی کنن یا با حداقل پیکربندی، به دیتابیس موجود متصل بشن.
2⃣ اجرای کوئری های SQL: از اجرای دستورات مختلف SQL مثل ساخت جداول، درج رکوردها، بروزرسانی داده ها و اجرای کوئریهای پیچیده پشتیبانی میکنه.
3⃣ فتچ کردن دیتا: این ماژول متد هایی برای بازیابی داده ها از دیتابیس ارائه میده. همچنین کالبک هایی مبتنی بر promise-based رو برای انعطاف پذیری در انجام عملیات ناهمزمان ارائه میده.
به صورت کلی ماژول 'sqlite' به عنوان یک ماژول internal در Node.js، قابلیت های مختلفی برای مدیریت دیتابیس SQLite ارائه میده. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
ماژول 'sqlite' یک ماژول internal (داخلی) هست که اخیراً در Node.js معرفی شده، و قابلیت یکپارچه سازی Node.js با دیتابیس SQLite رو فراهم میکنه. این ماژول جدید، ادغام SQLite رو ساده میکنه و به دولوپر ها این امکان رو میده تا دیتابیس های سبک وزن رو بدون تکیه بر کتابخانه های خارجی یا وابستگی ها، مدیریت کنن.
اما دقیقا این ماژول چه کاربردی داره؟
به صورت کلی ماژول 'sqlite' به عنوان یک ماژول internal در Node.js، قابلیت های مختلفی برای مدیریت دیتابیس SQLite ارائه میده. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥4😁1
با فریمورک Hapi بیشتر آشنا بشید 💀
Hapi یک فریمورک قدرتمند و انعطاف پذیر Node.js هست، که برای ساخت برنامه ها و سرویس های وب قوی و مقیاس پذیر طراحی شده. Hapi به دلیل تاکید بر توسعه مبتنی بر configuration-driven، محبوبیت خودش رو افزایش داد. معماری Hapi حول یک طرح ماژولار ساخته شده که به دولوپر ها اجازه میده تا با ترکیب اجزای کوچکتر و قابل استفاده مجدد، برنامه های پیچیده بسازن.
برخی از کاربرد های Hapi⬇️
🔢 توسعه API: یک جعبه ابزار جامع برای ساخت API های RESTful ارائه میده. سیستم routing اون بسیار قابل تنظیمه و به دولوپر ها این امکان رو میده تا مسیرهایی رو با کنترل دقیق بر رسیدگی به درخواست ها تعریف کنن.
🔢 رویکرد مبتنی بر پیکربندی: رویکرد پیکربندی محور Hapi، مقدار کد مورد نیاز رو کاهش میده و مدیریت پروژه های بزرگ رو آسون تر میکنه. این رویکرد همچنین خوانایی و قابلیت نگهداری کد ها رو افزایش میده.
🔢 سیستم پلاگین: یکی از ویژگی های برجسته Hapi، معماری قدرتمند پلاگین اون هست. این ماژولار بودن استفاده مجدد از کد رو ترویج می کنه و ادغام فیچر های جدید رو ساده میکنه.
به طور کلی Hapi یک انتخاب عالی برای دولوپر هایی هست که به دنبال ساخت برنامه ها و سرویس های وب مقیاس پذیر و قابل نگهداری، با Node.js هستن. برای کسب اطلاعات بیشتر به داکیومنت خود فریمورک مراجعه کنید.
#hapi #nodejs
@CodeModule
Hapi یک فریمورک قدرتمند و انعطاف پذیر Node.js هست، که برای ساخت برنامه ها و سرویس های وب قوی و مقیاس پذیر طراحی شده. Hapi به دلیل تاکید بر توسعه مبتنی بر configuration-driven، محبوبیت خودش رو افزایش داد. معماری Hapi حول یک طرح ماژولار ساخته شده که به دولوپر ها اجازه میده تا با ترکیب اجزای کوچکتر و قابل استفاده مجدد، برنامه های پیچیده بسازن.
برخی از کاربرد های Hapi
به طور کلی Hapi یک انتخاب عالی برای دولوپر هایی هست که به دنبال ساخت برنامه ها و سرویس های وب مقیاس پذیر و قابل نگهداری، با Node.js هستن. برای کسب اطلاعات بیشتر به داکیومنت خود فریمورک مراجعه کنید.
#hapi #nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡3
با ماژول async_hooks آشنا بشید! 🪐
ماژول async_hooks در Node.js، ابزار قدرتمندیه که برای کمک به دولوپر ها در ردیابی عملیات ناهمزمان در طول lifecycle یک برنامه طراحی شده. Asynchronous operations ها در Node.js بسیار مهم هستن، و عملیات و I/O کارآمد، ریکوست ها و موارد دیگه رو ممکن میسازن. با این حال، مدیریت و ردیابی این عملیات میتونه چالش برانگیز باشه. ماژول «async_hooks» چارچوبی رو برای ردیابی منابع ناهمزمان فراهم میکنه و بینشهایی رو درباره lifecycle و تعاملات اون ها ارائه میده.
از این ماژول چه زمانی استفاده میشه؟🤔
ماژول «async_hooks» به دولوپر ها اجازه میده تا هوکهای سفارشی بسازن که در طول lifecycle عملیات ناهمزمان فراخوانی میشن. این شامل زمانی هست که اون ها ساخته، اجرا و نابود میشن. با استفاده از این هوک ها، دولوپر ها میتونن درک عمیق تری از نحوه تعامل عملیات ناهمزمان در برنامه های خود به دست بیارن، که میتونه برای دیباگ، نظارت بر عملکرد و context propagation بسیار ارزشمند باشه.
این ماژول چه ویژگی هایی داره؟
1⃣ ردیابی منابع ناهمزمان: دولوپر ها میتونن زمان ساخت، نابودی منابع ناهمگام (مانند تایمرها، پرامیس ها و عملیات I/O) وضعیت فعلی اون ها رو نظارت کنن.
2⃣ مدیریت زمینه: با «async_hooks»، میتونید اطلاعات propagate context رو در سراسر boundaries ناهمزمان منتشر کنین.
3⃣ دیباگ: با اتصال هوک ها به ایونت های ناهمزمان مختلف، میتونید اطلاعات دقیقی در مورد رفتار برنامه خود جمعآوری کنید که برای شناسایی باگ ها، میتونه مفید باشه.
به صورت کلی ماژول async_hooks، به دولوپر ها توانایی ردیابی و مدیریت عملیات ناهمزمان رو با دقت بیشتری ارائه میده. برای کسب اطلاعات بیشتر به داکیومنت اصلی ماژول مراجعه کنید.
#nodejs
@CodeModule
ماژول async_hooks در Node.js، ابزار قدرتمندیه که برای کمک به دولوپر ها در ردیابی عملیات ناهمزمان در طول lifecycle یک برنامه طراحی شده. Asynchronous operations ها در Node.js بسیار مهم هستن، و عملیات و I/O کارآمد، ریکوست ها و موارد دیگه رو ممکن میسازن. با این حال، مدیریت و ردیابی این عملیات میتونه چالش برانگیز باشه. ماژول «async_hooks» چارچوبی رو برای ردیابی منابع ناهمزمان فراهم میکنه و بینشهایی رو درباره lifecycle و تعاملات اون ها ارائه میده.
از این ماژول چه زمانی استفاده میشه؟
ماژول «async_hooks» به دولوپر ها اجازه میده تا هوکهای سفارشی بسازن که در طول lifecycle عملیات ناهمزمان فراخوانی میشن. این شامل زمانی هست که اون ها ساخته، اجرا و نابود میشن. با استفاده از این هوک ها، دولوپر ها میتونن درک عمیق تری از نحوه تعامل عملیات ناهمزمان در برنامه های خود به دست بیارن، که میتونه برای دیباگ، نظارت بر عملکرد و context propagation بسیار ارزشمند باشه.
این ماژول چه ویژگی هایی داره؟
به صورت کلی ماژول async_hooks، به دولوپر ها توانایی ردیابی و مدیریت عملیات ناهمزمان رو با دقت بیشتری ارائه میده. برای کسب اطلاعات بیشتر به داکیومنت اصلی ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3
با فریمورک LoopBack.js آشنا بشید! 🦦
LoopBack.js یک فریمورک بسیار قدرتمند Node.js هست، که برای ساخت API و اتصال اون ها به منابع داده بک اند طراحی شده. LoopBack.js به دولوپر ها این امکان رو میده تا APIهای REST رو با حداقل کدنویسی، بسازن.
LoopBack.js در چه مواردی استفاده میشه؟🤔
1⃣ تعریف مدل و دسترسی به داده: LoopBack به دولوپر ها اجازه میده تا مدل هایی رو بر اساس اسکیما ها تعریف کنن و به طور خودکار API های REST رو برای عملیات CRUD تولید کنن. از انواع منابع داده، از جمله دیتابیس ها مانند MySQL، PostgreSQL، MongoDB پشتیبانی میکنه.
2⃣ ادغام با GraphQL: این مورد برای دولوپر هایی که به کوئری انعطاف پذیرتر و کارآمدتر نیاز دارن، کاربردیه. LoopBack از ادغام با GraphQL پشتیبانی میکنه و جایگزین قدرتمندی برای REST هست.
3⃣ احراز هویت و مجوز: پشتیبانی داخلی برای احراز هویت کاربر و کنترل دسترسی مبتنی بر نقش (RBAC)، تضمین میکنه که API های شما ایمن هستن و از داده های کاربر محافظت میشه.
LoopBack.js یک انتخاب قانع کننده برای دولوپر هایی هست که به دنبال ساخت API های قدرتمند، مقیاس پذیر و انعطاف پذیر هستن. مجموعه جامع ویژگی های اون، همراه با یک کامیونیتی فعال و داکیومنت گسترده، اون رو به ابزاری عالی برای توسعه برنامه های کاربردی وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت LoopBack مراجعه کنید.
#nodejs #loopback
@CodeModule
LoopBack.js یک فریمورک بسیار قدرتمند Node.js هست، که برای ساخت API و اتصال اون ها به منابع داده بک اند طراحی شده. LoopBack.js به دولوپر ها این امکان رو میده تا APIهای REST رو با حداقل کدنویسی، بسازن.
LoopBack.js در چه مواردی استفاده میشه؟
LoopBack.js یک انتخاب قانع کننده برای دولوپر هایی هست که به دنبال ساخت API های قدرتمند، مقیاس پذیر و انعطاف پذیر هستن. مجموعه جامع ویژگی های اون، همراه با یک کامیونیتی فعال و داکیومنت گسترده، اون رو به ابزاری عالی برای توسعه برنامه های کاربردی وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت LoopBack مراجعه کنید.
#nodejs #loopback
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥6❤🔥3
با ماژول 💀
ماژول «string_decoder» در Node.js روشی کارآمد برای رمزگشایی اشیاء بافر به استرینگ ها، و در عین حال با حفظ یکپارچگی UTF-8 و UTF-16 رو ارائه میکنه.
از این ماژول چه زمانی باید استفاده کنیم؟
کلاس اصلی «StringDecoder» هست. این کلاس برای رمزگشایی بافرها به رشته ها با تمرکز بر مدیریت صحیح رمزگذاری کاراکترهای چند بایتی طراحی شده. اما این کلاس چه کاربردی داره؟ به عنوان مثال:
1⃣ وارد کردن ماژول: ابتدا برای استفاده باید ماژول «string_decoder» رو ایمپورت کنید. به این صورت:
2⃣ ایجاد یک نمونه StringDecoder: میتونید با تعیین رمزگذاری مورد نظر، نمونهای از «StringDecoder» بسازین (به عنوان مثال، «utf8»، «utf16le»، «base64»).
3⃣ بافرها: از متد "write" برای رمزگشایی بافر ها و از متد "end" برای مدیریت بایت های باقی مانده استفاده کنید.
متد «end» تضمین میکنه بایتهای باقی مونده در بافر به درستی رمزگشایی میشن.
به صورت کلی ماژول «string_decoder» در Node.js یک ابزار کاربردی برای دولوپر هایی هست، که با دادههای باینری که باید به رشتهها تبدیل بشن. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
string_decoder
آشنا بشید! ماژول «string_decoder» در Node.js روشی کارآمد برای رمزگشایی اشیاء بافر به استرینگ ها، و در عین حال با حفظ یکپارچگی UTF-8 و UTF-16 رو ارائه میکنه.
از این ماژول چه زمانی باید استفاده کنیم؟
کلاس اصلی «StringDecoder» هست. این کلاس برای رمزگشایی بافرها به رشته ها با تمرکز بر مدیریت صحیح رمزگذاری کاراکترهای چند بایتی طراحی شده. اما این کلاس چه کاربردی داره؟ به عنوان مثال:
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');
const buffer = Buffer.from([0xE2, 0x82, 0xAC]);
const decodedString = decoder.write(buffer);
console.log(decodedString);// output-> €
متد «end» تضمین میکنه بایتهای باقی مونده در بافر به درستی رمزگشایی میشن.
const restingBytes = decoder.end();
console.log(remainingBytes);
به صورت کلی ماژول «string_decoder» در Node.js یک ابزار کاربردی برای دولوپر هایی هست، که با دادههای باینری که باید به رشتهها تبدیل بشن. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡3
با ماژول 'util' بیشتر آشنا بشید! 🦦
ماژول «util» در Node.js مجموعه ای از فانکشن های مختلف رو به عنوان ابزارهای مفیدی برای دیباگ، inspecting objects و کار با انواع data types جاوا اسکریپت ارائه میده. اگرچه به اندازه برخی از ماژولهای اصلی دیگه مثل «fs» یا «http» شناخته شده نیست، اما «util» برای کارهای خاصی ضروری هست.
این ماژول چه کاربردی داره؟
1⃣ یکی از توابع اولیه ارائه شده «util.format()» هست که راهی رو برای قالب بندی استرینگ ها مشابه «printf» در C ارائه میده. این فانکشن به شما اجازه میده تا متغیرها رو با استفاده از %s برای رشتهها، «%d» برای اعداد و «%j» برای JSON، لاگ بگیرید.
2⃣ یکی دیگه از تابع های رایج این ماژول، "util.inspect()" هست که برای دیباگ کردن بسیار ارزشمنده، و این امکان رو به شما میده تا آبجکت ها، آرایه ها، و دیگر ساختارهای داده رو بررسی کنید و نمای دقیق و قابل تنظیمی از خصوصیات و محتویات اون ها، ارائه میده.
3⃣ فانکشن 'util.promisify()' یکی دیگه از ویژگی های قدرتمند هست که امکان تبدیل توابع مبتنی بر callback-based رو به Promise-based، فراهم میکنه.
به صورت کلی ماژول «util» در Node.js کمی کم کاربرد به نظر میرسه، اما ممکنه در برخی قسمت های پروژه فانکشن هاش به کارمون بیاد. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
ماژول «util» در Node.js مجموعه ای از فانکشن های مختلف رو به عنوان ابزارهای مفیدی برای دیباگ، inspecting objects و کار با انواع data types جاوا اسکریپت ارائه میده. اگرچه به اندازه برخی از ماژولهای اصلی دیگه مثل «fs» یا «http» شناخته شده نیست، اما «util» برای کارهای خاصی ضروری هست.
این ماژول چه کاربردی داره؟
به صورت کلی ماژول «util» در Node.js کمی کم کاربرد به نظر میرسه، اما ممکنه در برخی قسمت های پروژه فانکشن هاش به کارمون بیاد. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥2
با هونو بیشتر آشنا بشید! 🦦
Hono یک فریمورک مینیمالیست برای Node.js هست که بر عملکرد و سادگی تأکید داره. از فریمورک هایی مانند Express و Koa الهام گرفته شده اما به گونه ای طراحی شده که حتی سبک تر و سریع تر باشه. هدف Hono ارائه یک روش کارآمد برای ایجاد برنامه های کاربردی وب و API، بدون هزینه اضافی و غیر ضروری هست.
هونو چه کاربردی داره؟
Hono برای دولوپر هایی ایده آل هست که به دنبال یک فریمورک ساده و با کارایی بالا، برای ساخت برنامه های سمت سرور هستن. این یک API مختصر ارائه میده که شروع رو آسون میکنه و در عین حال انعطاف پذیری مورد نیاز برای برنامه های پیچیده تر رو فراهم میکنه. Hono در سناریوهایی که سرعت و مینیمالیسم بسیار مهم هستن، مثل میکروسرویس ها و API gateways میدرخشه.
اما Hono چه ویژگی هایی داره؟
- API مینیمالیست : Hono یک API مینیمالیست ارائه میده که دولوپر رو قادر میسازه، تا به سرعت route ها رو ایجاد و ریکویست/ریسپانس ها رو رسیدگی و ارسال کنه.
- پشتیبانی از میدلور ها: Hono از میدلور ها پشتیبانی میکنه و به دولوپر ها این امکان رو میده تا عملکرد فریمورک رو به راحتی گسترش بدن.
- پشتیبانی از تایپ اسکریپت: Hono پشتیبانی کامل از تایپ اسکریپت رو ارائه میده که type safety و تجربه بهتر توسعه دهنده رو ممکن میسازه.
Hono یک فریمورک وب قدرتمند و در عین حال مینیمالیسته، که انتخابی مناسب برای دولوپرایی هست که به دنبال سرعت و سادگی هستن. برای کسب اطلاعات بیشتر به داکیومنت این فریمورک مراجعه کنید.
#nodejs #hono
@CodeModule
Hono یک فریمورک مینیمالیست برای Node.js هست که بر عملکرد و سادگی تأکید داره. از فریمورک هایی مانند Express و Koa الهام گرفته شده اما به گونه ای طراحی شده که حتی سبک تر و سریع تر باشه. هدف Hono ارائه یک روش کارآمد برای ایجاد برنامه های کاربردی وب و API، بدون هزینه اضافی و غیر ضروری هست.
هونو چه کاربردی داره؟
Hono برای دولوپر هایی ایده آل هست که به دنبال یک فریمورک ساده و با کارایی بالا، برای ساخت برنامه های سمت سرور هستن. این یک API مختصر ارائه میده که شروع رو آسون میکنه و در عین حال انعطاف پذیری مورد نیاز برای برنامه های پیچیده تر رو فراهم میکنه. Hono در سناریوهایی که سرعت و مینیمالیسم بسیار مهم هستن، مثل میکروسرویس ها و API gateways میدرخشه.
اما Hono چه ویژگی هایی داره؟
- API مینیمالیست : Hono یک API مینیمالیست ارائه میده که دولوپر رو قادر میسازه، تا به سرعت route ها رو ایجاد و ریکویست/ریسپانس ها رو رسیدگی و ارسال کنه.
- پشتیبانی از میدلور ها: Hono از میدلور ها پشتیبانی میکنه و به دولوپر ها این امکان رو میده تا عملکرد فریمورک رو به راحتی گسترش بدن.
- پشتیبانی از تایپ اسکریپت: Hono پشتیبانی کامل از تایپ اسکریپت رو ارائه میده که type safety و تجربه بهتر توسعه دهنده رو ممکن میسازه.
Hono یک فریمورک وب قدرتمند و در عین حال مینیمالیسته، که انتخابی مناسب برای دولوپرایی هست که به دنبال سرعت و سادگی هستن. برای کسب اطلاعات بیشتر به داکیومنت این فریمورک مراجعه کنید.
#nodejs #hono
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥4
با ماژول crypto بیشتر آشنا بشید! 💀
ماژول crypto یک فریمورک داخلیه که انواع عملکردهای رمزنگاری ضروری رو برای ایمن سازی داده ها، از جمله هش، رمزگذاری، و رمزگشایی، و همچنین مدیریت signatures و certificates ارائه میده.
دقیق تر این ماژول چه کاربردی داره؟
ماژول «کریپتو» عمدتاً برای پیادهسازی ویژگیهای امنیتی در برنامههای Node.js استفاده میشه. برای مثال:
1⃣ Hashing: هش کردن فانکشن، یک طرفه هست و داده ها رو به رشته ای با اندازه ثابت از کاراکترها تبدیل میکنه که معمولاً برای ذخیره رمزهای عبور ایمن استفاده میشه. ماژول «crypto» متد هایی مثل «createHash» برای تولید هش با استفاده از الگوریتمهای مختلف ارائه میکنه.
2⃣ رمزگذاری و رمزگشایی: برای ایمن نگه داشتن داده های حساس، ماژول crypto به شما امکان میده داده ها رو رمزگذاری کنید و بعداً با استفاده از همان کلید یا کلید دیگری رمزگشایی کنید. این برای انتقال ایمن داده ها در سراسر شبکه مفیده.
3⃣ امضای دیجیتال: این ماژول همچنین از ایجاد و تأیید signatures پشتیبانی میکنه و از صحت داده ها، اطمینان میده. این به ویژه در سناریوهایی که نیاز به ارتباط امن یا توزیع نرم افزار دارن مفیده.
4⃣ تولید کلید: تولید ایمن کلیدهای رمزنگاری یک جنبه حیاتی رمزنگاری هست و ماژول crypto، عملکردهایی رو برای ایجاد کلیدهای تصادفی برای رمزگذاری، و سایر فرآیندهای رمزنگاری ارائه میده.
به صورت کلی ماژول «crypto» در Node.js یک ابزار قدرتمند برای دولوپرا هست، تا بتونن ویژگی های امنیتی رو در برنامه های خودشون پیاده سازی کنن. برای کسب اطلاعات بیشتر به داکیومنت ماژول مراجعه کنید.
#nodejs #crypto
@CodeModule
ماژول crypto یک فریمورک داخلیه که انواع عملکردهای رمزنگاری ضروری رو برای ایمن سازی داده ها، از جمله هش، رمزگذاری، و رمزگشایی، و همچنین مدیریت signatures و certificates ارائه میده.
دقیق تر این ماژول چه کاربردی داره؟
ماژول «کریپتو» عمدتاً برای پیادهسازی ویژگیهای امنیتی در برنامههای Node.js استفاده میشه. برای مثال:
به صورت کلی ماژول «crypto» در Node.js یک ابزار قدرتمند برای دولوپرا هست، تا بتونن ویژگی های امنیتی رو در برنامه های خودشون پیاده سازی کنن. برای کسب اطلاعات بیشتر به داکیومنت ماژول مراجعه کنید.
#nodejs #crypto
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👌3
با ماژول DNS آشنا بشید!🦫
در حوزه برنامه نویسی شبکه، domain name resolution یک وظیفه اساسی هست. ماژول DNS (سیستم نام دامنه) در Node.js یک راه قوی و ساده برای تعامل با DNS ارائه میده و به دولوپر ها این امکان رو میده، تا عملیات مختلف مربوط به نام دامنه و آدرس های IP رو انجام بدن.
از این ماژول چه استفاده ای میشه؟
1️⃣ حل نام دامنه: میتونید از متد هایی مثل «dns.lookup()» و «dns.resolve()» برای تبدیل نام دامنه به آدرس IP و بالعکس استفاده کنین. این به ویژه برای برنامههایی که نیاز به اتصال به سرورها یا سرویسهای شناسایی شده با نام دامنه دارن، مفیده.
2️⃣ پرسش سوابق DNS: این ماژول به شما امکان میده انواع مختلف رکوردهای DNS مثل رکوردهای A، رکوردهای AAAA، رکوردهای MX و غیره رو بازیابی کنید. به عنوان مثال،
3️⃣ معکوس جستجوهای DNS: با
4️⃣ رسیدگی به خطاهای DNS : این ماژول دارای مکانیزم هایی برای رسیدگی به خطاهای DNS نیز هست. به عنوان مثال، هنگامی که یک query DNS با شکست مواجه میشه، ماژول اطلاعات خطای مفصلی رو ارائه میده که میتونه برای تشخیص و رسیدگی موثر به مسائل استفاده بشه.
به صورت کلی ماژول DNS در Node.js، یک ابزار ضروری برای دولوپر هایی هست که با برنامه های شبکه ای کار میکنن و به وضوح به نام دامنه و قابلیت های جستجوی DNS نیاز دارن. برای کسب اطلاعات بیشتر به داکیومنت ماژول مراجعه کنید.
#nodejs
@CodeModule
در حوزه برنامه نویسی شبکه، domain name resolution یک وظیفه اساسی هست. ماژول DNS (سیستم نام دامنه) در Node.js یک راه قوی و ساده برای تعامل با DNS ارائه میده و به دولوپر ها این امکان رو میده، تا عملیات مختلف مربوط به نام دامنه و آدرس های IP رو انجام بدن.
از این ماژول چه استفاده ای میشه؟
dns.resolveMx()
سرورهای تبادل رو برای یک دامنه بازیابی میکنن، در حالی که dns.resolveSrv()
اطلاعاتی در مورد سوابق سرویس ارائه میده.dns.reverse()
، میتونید جستجوهای معکوس DNS رو برای یافتن نام دامنه مرتبط با یک آدرس IP معین انجام بدید. این برای برنامه هایی که نیاز به تأیید یا ثبت منبع درخواست های دریافتی دارن، مفیده.به صورت کلی ماژول DNS در Node.js، یک ابزار ضروری برای دولوپر هایی هست که با برنامه های شبکه ای کار میکنن و به وضوح به نام دامنه و قابلیت های جستجوی DNS نیاز دارن. برای کسب اطلاعات بیشتر به داکیومنت ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥2
ارتباط امن با ماژول TLS 🪼
Transport Layer Security (TLS) پروتکلی هست که حریم خصوصی و یکپارچگی داده ها رو بین دو برنامه در حال ارتباط فراهم میکنه. در Node.js، ماژول "tls" یک ماژول داخلی هست که به دولوپر ها اجازه میده تا ارتباطات شبکه ایمن رو از طریق TCP (Transmission Control Protocol) با استفاده از TLS و SSL پیاده سازی کنن.
از این ماژول چه استفاده ای میشه؟
ماژول "tls" در درجه اول برای ایجاد سرورها و کلاینت های ایمن استفاده میشه که از طریق کانال های رمزگذاری شده ارتباط برقرار میکنن. این تضمین میکنه که هرگونه داده رد و بدل شده در برابر دستکاری محافظت میشه.
1⃣ ایجاد سرور TLS: متد «tls.createServer()» به شما امکان میده یک سرور امن ایجاد کنید که به اتصالات ورودی گوش میده. شما باید یک آبجکت حاوی certificates ها و کلیدهای مورد نیاز برای رمزگذاری ارائه کنید.
2⃣ ایجاد یک کلاینت سرور: به طور مشابه، متد «tls.connect()» به شما امکان میده کلاینت ایجاد کنید که به طور ایمن به یک سرور TLS متصل بشه و میتونید، گزینه هایی مانند نام، هاست و پورت رو مشخص کنیم.
3⃣ ویژگی های اضافی: ماژول
به صورت کلی ماژول
#nodejs #tls
@CodeModule
Transport Layer Security (TLS) پروتکلی هست که حریم خصوصی و یکپارچگی داده ها رو بین دو برنامه در حال ارتباط فراهم میکنه. در Node.js، ماژول "tls" یک ماژول داخلی هست که به دولوپر ها اجازه میده تا ارتباطات شبکه ایمن رو از طریق TCP (Transmission Control Protocol) با استفاده از TLS و SSL پیاده سازی کنن.
از این ماژول چه استفاده ای میشه؟
ماژول "tls" در درجه اول برای ایجاد سرورها و کلاینت های ایمن استفاده میشه که از طریق کانال های رمزگذاری شده ارتباط برقرار میکنن. این تضمین میکنه که هرگونه داده رد و بدل شده در برابر دستکاری محافظت میشه.
tls
همچنین از ویژگی های مختلفی مانند احراز هویت، و مدیریت چندین اتصال امن به طور همزمان پشتیبانی میکنه.به صورت کلی ماژول
tls
در Node.js ابزار قدرتمندی برای پیاده سازی ارتباطات ایمن در انواع اپلیکیشن ها هست. با استفاده از TLS، میتونیم اطمینان حاصل کنیم که داده های منتقل شده بین سرور و مشتریان شما محرمانه باقی میمونه و در برابر تهدیدات امنیتی رایج تا حد امکان محافظت میشه. برای کسب اطلاعات بیشتر به داکیومنت ماژول مراجعه کنید.#nodejs #tls
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡2
با ماژول Readline ورودی هارو مدیریت کن! 😐
ماژول «readline» در Node.js یک ابزار قدرتمند و همه کاره هست که فرایند خوندن ورودی، مثل ورودی استاندارد فرآیند ها («process.stdin») رو مدیریت میکنه. این ماژول یک رابط برای خوندن دادهها در یک خط و زمان فراهم میکنه و اون رو برای ساخت برنامههای کامندلاین، درخواستهای تعاملی و سایر برنامههای ورودی محور بسیار مفید میکنه.
چطور از این ماژول استفاده کنیم؟🤔
یکی از رایج ترین استفاده ها از ماژول readline، اینه که پرامت های کاربر رو مدیریت کنه و این کار رو میشه با استفاده از متد "question" انجام داد.
در این مثال، برنامه از کاربر اسمش رو میپرسه و سپس به او سلام میکنه. متد «rl.close()» برای بستن رابط پس از تکمیل فراخوانی میشه.
یا مثلا ما یک فایل داریم و میخوایم خط به خط اون رو بررسی کنیم.
میتونیم با استفاده از متد "createInterface" این کار رو انجام بدیم:
ما در مثال بالا خط به خط فایل داده شده رو بررسی میکنیم که آیا، «keyword» داده شده در فایل هست یا خیر.
به صورت کلی با استفاده از ماژول «readline»، دولوپر ها میتونن به راحتی ورودی کاربر رو مدیریت کنن، دادهها رو validate کنن، و تجربیات تعاملی رو مستقیماً از کامند لاین ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
ماژول «readline» در Node.js یک ابزار قدرتمند و همه کاره هست که فرایند خوندن ورودی، مثل ورودی استاندارد فرآیند ها («process.stdin») رو مدیریت میکنه. این ماژول یک رابط برای خوندن دادهها در یک خط و زمان فراهم میکنه و اون رو برای ساخت برنامههای کامندلاین، درخواستهای تعاملی و سایر برنامههای ورودی محور بسیار مفید میکنه.
چطور از این ماژول استفاده کنیم؟
یکی از رایج ترین استفاده ها از ماژول readline، اینه که پرامت های کاربر رو مدیریت کنه و این کار رو میشه با استفاده از متد "question" انجام داد.
rl.question('What is your name? ', (answer) => {
console.log(`Hello, ${answer}!`);
rl.close();
});
در این مثال، برنامه از کاربر اسمش رو میپرسه و سپس به او سلام میکنه. متد «rl.close()» برای بستن رابط پس از تکمیل فراخوانی میشه.
یا مثلا ما یک فایل داریم و میخوایم خط به خط اون رو بررسی کنیم.
میتونیم با استفاده از متد "createInterface" این کار رو انجام بدیم:
let f = false;
const stream = fs.createReadStream(filePath, { encoding: 'utf8' });
const rl = createInterface({ input: stream });
rl.on('line', (line) => {
if (f) {
return;
}
if (line.includes(keyword)) {
f = true;
rl.close();
stream.destroy();
resolve(true);
}
});
ما در مثال بالا خط به خط فایل داده شده رو بررسی میکنیم که آیا، «keyword» داده شده در فایل هست یا خیر.
به صورت کلی با استفاده از ماژول «readline»، دولوپر ها میتونن به راحتی ورودی کاربر رو مدیریت کنن، دادهها رو validate کنن، و تجربیات تعاملی رو مستقیماً از کامند لاین ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥2
علتش چیه؟ 😠
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
خروجی:
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
function insertionSort(arr) {
for (let i = 1; i < arr.length; i = i + 1) {
let cE = arr[i];
let j = i;
while (j > 0 && arr[j - 1] > cE) {
arr[j] = arr[j - 1];
j = j - 1;
}
arr[j] = cE;
}
return arr;
}
console.time();
const uArray = [20, 10, 4, 51, 0, 0xd3, 0x42, 0.4, 0.00002, 0x2];
const sArray = insertionSort(uArray);
console.log("Sorted array:", sArray);
console.timeEnd();
در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
Sorted array: [ 0, 0.00002, 0.4, 2, 4, 10, 20, 51, 66, 211 ]
default: 10.793ms
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
return String(arr);
خروجی:
Sorted array: 0,0.00002,0.4,2,4,10,20,51,66,211
default: 8.899ms
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤🔥2
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
ماژول 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
میدونستی با 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...
⚡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 به جای
اینجاست که 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
⚡13👌3