همه چیز راجب thread-pool ها🔥
thread-pool ها مجموعه ای از رشته های کارگر (worker thread) هستن. اونها توسط یک زمانبندی مرکزی مديريت و وظایف (task) رو به pool ارسال میکنن و زمانبندی، اون هارو بین رشته های موجود برای اجرا توزیع میکنه. این مکانیزم امکان برنامه ریزی کارآمد و استفاده از منابع رو فراهم میکنه.
مزایای استفاده از thread-pool⬇️
کاهش overhead : ساخت و از بین بردن رشته ها میتونه پرهزینه باشه. thread-pool با استفاده مجدد از رشته ها، باعث میشه overhead کاهش پیدا کنه.
بهبود عملکرد : thread-pool ها میتونن با توزیع وظایف بین چندین رشته، عملکرد برنامه رو بهبود ببخشند.
سادگی استفاده : thread-pool با استفاده از concurrency، برنامه ها رو ساده تر میکنه.
برای درک بهتر به مثال زیر توجه کنید⬇️
اگه بخوایم از thread-pool استفاده نکنیم، هربار که این تابع رو فراخوانی میکنیم یک رشته جدید ساخته میشه، که منجر به overhead بالا و عملکرد ضعیف میشه. اما با استفاده از thread-pool رشته ها میتونن مجددا استفاده بشن و وظایف بین اونها، توزیع میشه. این امر منجر به overhead پایینتر و عملکرد بهتر میشه.
برای اینکه پست زیادی طولانی نشه، سایر مثال و نکات، و همچنین نحوه استفاده از thread-pool در پروژه واقعی رو در تلگراف قرار دادیم :))
#nodejs #thread #thread_pool
@CodeModule
thread-pool ها مجموعه ای از رشته های کارگر (worker thread) هستن. اونها توسط یک زمانبندی مرکزی مديريت و وظایف (task) رو به pool ارسال میکنن و زمانبندی، اون هارو بین رشته های موجود برای اجرا توزیع میکنه. این مکانیزم امکان برنامه ریزی کارآمد و استفاده از منابع رو فراهم میکنه.
مزایای استفاده از thread-pool
کاهش overhead : ساخت و از بین بردن رشته ها میتونه پرهزینه باشه. thread-pool با استفاده مجدد از رشته ها، باعث میشه overhead کاهش پیدا کنه.
بهبود عملکرد : thread-pool ها میتونن با توزیع وظایف بین چندین رشته، عملکرد برنامه رو بهبود ببخشند.
سادگی استفاده : thread-pool با استفاده از concurrency، برنامه ها رو ساده تر میکنه.
برای درک بهتر به مثال زیر توجه کنید
const crypto = require('crypto')
const start = Date.now()
crypto.pbkdf2('a','b',10000,512,'sha512',()=>{
console.log('1:',Date.now() - start);
})
crypto.pbkdf2('a','b',10000,512,'sha512',()=>{
console.log('2:',Date.now()- start);
})
crypto.pbkdf2('a','b',10000,512,'sha512',()=>{
console.log('3:',Date.now()- start);
})
crypto.pbkdf2('a','b',10000,512,'sha512',()=>{
console.log('4:',Date.now()- start);
})
crypto.pbkdf2('a','b',10000,512,'sha512',()=>{
console.log('5:',Date.now()- start);
})
تابع PBKDF2 اکثرا برای رمزنگاری رشته ها استفاده میشه.
اگه بخوایم از thread-pool استفاده نکنیم، هربار که این تابع رو فراخوانی میکنیم یک رشته جدید ساخته میشه، که منجر به overhead بالا و عملکرد ضعیف میشه. اما با استفاده از thread-pool رشته ها میتونن مجددا استفاده بشن و وظایف بین اونها، توزیع میشه. این امر منجر به overhead پایینتر و عملکرد بهتر میشه.
برای اینکه پست زیادی طولانی نشه، سایر مثال و نکات، و همچنین نحوه استفاده از thread-pool در پروژه واقعی رو در تلگراف قرار دادیم :))
#nodejs #thread #thread_pool
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡7🔥5😁3
خروجی کد بالا؟ 🤔
Anonymous Quiz
15%
xyz
22%
Null
41%
Undefined
22%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
⚡8🔥5😁3
با غول دنیای ابری آشنا بشید 🔥
AWS که مخفف Amazon Web Services هست، یک پلتفرم ابری توسعه یافته شرکت آمازونه. AWS با مدل قیمتی "pay-as-you-go" به شما این امکان رو میده که فقط به اندازه منابعی که استفاده میکنید هزینه پرداخت کنید، و اساساً AWS یک زیرساخت مجازی رو فراهم میکنه که نیاز های سرور فیزیکی و مديريت پیچیده IT رو از بین میبره.
برخی از کاربردهای AWS⬇️
🔵 امنیت: AWS اقدامات امنیتی قویای برای محافظت از داده ها و برنامه ها خود، ارائه میده.
🔵 نوآوری و انعطافپذیری: AWS دارای مجموعه خدماتیه که دائماً در حال تکامل هستن و این امکان رو میده، که راهحلهای نوآورانه رو کشف کنید و با نیازهای در حال تغییر، سازگار بشید.
🔵 خدمات گسترده: از توان محاسباتی و ذخیره سازی گرفته، تا ماشین لرنینگ و دیتابیس، AWS برای نیازهای محاسبات ابری شما یک فروشگاه ایده آل هست.
🔵 هزینه های بهینه: همونطور که گفتم با استفاده از مدل قیمتی "pay-as-you-go"، میتونید هزینه های خودتون رو به صورت کامل کنترل کنید.
علاوه بر تمام این مزایا، AWS در مقایسه با رقبای خودش همچون Azure، خدمات بیشتر و با کیفیت تری ارائه میده و به همین دلیل، سهم بیشتری از بازار جهانی رو به خودش اختصاص داده.
به صورت کلی AWS یک پلتفرم قدرتمند، ایده آل و همه کاره برای ساخت، استقرار و مدیریت برنامه ها در فضای ابری هست. برای اطلاعات بیشتر میتونید به سایتش مراجعه کنید.
#aws
@CodeModule
AWS که مخفف Amazon Web Services هست، یک پلتفرم ابری توسعه یافته شرکت آمازونه. AWS با مدل قیمتی "pay-as-you-go" به شما این امکان رو میده که فقط به اندازه منابعی که استفاده میکنید هزینه پرداخت کنید، و اساساً AWS یک زیرساخت مجازی رو فراهم میکنه که نیاز های سرور فیزیکی و مديريت پیچیده IT رو از بین میبره.
برخی از کاربردهای AWS
علاوه بر تمام این مزایا، AWS در مقایسه با رقبای خودش همچون Azure، خدمات بیشتر و با کیفیت تری ارائه میده و به همین دلیل، سهم بیشتری از بازار جهانی رو به خودش اختصاص داده.
به صورت کلی AWS یک پلتفرم قدرتمند، ایده آل و همه کاره برای ساخت، استقرار و مدیریت برنامه ها در فضای ابری هست. برای اطلاعات بیشتر میتونید به سایتش مراجعه کنید.
#aws
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥5😁4
با Prisma بیشتر آشنا بشید 👩💻
در دنیای توسعه نرمافزار، انتخاب ابزارها و تکنولوژیهای مناسب میتونه تفاوت بزرگی در کیفیت و سرعت پروژههامون ایجاد کنه، و یکی از این ابزارهای نوین که به سرعت در حال محبوب شدنه، Prisma هست. Prisma به عنوان یک ابزار اوپن سورس، به دولوپر ها کمک میکنه تا به طور موثر با دیتابیس ها تعامل داشته باشن، و اپلیکیشن های کاربردی و مقیاس پذیر بسازن.
برای مثال Prisma به دولوپر ها این امکان رو میده، تا مدلهای دادهای رو با استفاده از یک زبان اختصاصی به نام Prisma Schema تعریف کنن، این مدلها به طور خودکار به جداول دیتابیس تبدیل میشن.
برخی از ویژگی های Prisma⬇️
🔵 رابط کاربری ساده و قدرتمند: Prisma یک واسط کاربری مدرن و قابل فهم برای کار با دیتابیس فراهم میکنه، که میتونه پیچیدگیهای مدیریت دادهها رو کاهش بده.
🔵 پشتیبانی از انواع پایگاههای داده: Prisma از پایگاههای داده مختلفی مانندPostgreSQL ، MySQL، SQLite و SQL Server پشتیبانی میکنه، که این امر انعطافپذیری زیادی به دولوپر ها میده.
🔵 تولید خودکار کد: با استفاده از Prisma میشه کدهای مربوط به عملیات پایگاه داده رو به صورت خودکار تولید کرد، که این امر باعث کاهش خطاهای انسانی و افزایش سرعت توسعه میشه.
🔵 یکپارچگی با GraphQL: این ORM قدرتمند به خوبی با GraphQL یکپارچه میشه، که این ویژگی به دولوپر ها کمک میکنه تا به راحتی APIهای پیچیده رو مدیریت و پیادهسازی کنن.
به صورت کلی Prisma به عنوان یک ابزار مدیریت دیتابیس، نیازهای مدرن دولوپر ها رو به خوبی میتونه جواب بده. استفاده از Prisma میتونه باعث افزایش بهرهوری، کاهش خطاها و تسریع فرآیند توسعه نرمافزار بشه. در صورت تمایل برای کسب اطلاعات بیشتر، به داکیومنتش سر بزنید.
#prisma
@CodeModule
در دنیای توسعه نرمافزار، انتخاب ابزارها و تکنولوژیهای مناسب میتونه تفاوت بزرگی در کیفیت و سرعت پروژههامون ایجاد کنه، و یکی از این ابزارهای نوین که به سرعت در حال محبوب شدنه، Prisma هست. Prisma به عنوان یک ابزار اوپن سورس، به دولوپر ها کمک میکنه تا به طور موثر با دیتابیس ها تعامل داشته باشن، و اپلیکیشن های کاربردی و مقیاس پذیر بسازن.
برای مثال Prisma به دولوپر ها این امکان رو میده، تا مدلهای دادهای رو با استفاده از یک زبان اختصاصی به نام Prisma Schema تعریف کنن، این مدلها به طور خودکار به جداول دیتابیس تبدیل میشن.
برخی از ویژگی های Prisma
به صورت کلی Prisma به عنوان یک ابزار مدیریت دیتابیس، نیازهای مدرن دولوپر ها رو به خوبی میتونه جواب بده. استفاده از Prisma میتونه باعث افزایش بهرهوری، کاهش خطاها و تسریع فرآیند توسعه نرمافزار بشه. در صورت تمایل برای کسب اطلاعات بیشتر، به داکیومنتش سر بزنید.
#prisma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥4😁3
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔵 Link
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤🔥3⚡3😁3💔2
با الگوی راکتور در Node.js آشنا بشید🤟
Node.js در حوزه معماری ایونت محور، به دلیل توانایی بالای خود در مدیریت تعداد زیادی از اتصالات همزمان متمایزه، که این مهارت از فلسفه طراحی زیربناییش سرچشمه میگیره و به شدت بر الگوی راکتور متکی هست.
الگوی راکتور دقیقا چیه؟🤔
Reactor Pattern ایده ای برای انجام عملیاتهای I/O در Node.js هست. این الگو یک کنترل کننده (در مورد Node.js، یک کالبک فانکشن) ارائه میده، که با هر عملیات I/O مرتبطه، و هنگامی که یک درخواست I/O ساخته میشه، به یک Demultiplexer ارسال میشه.
از الگوی راکتور چه زمانی استفاده میشه؟
در blocking سنتی I/O، زمانی که برنامه یک درخواست I/O (مثله خوندن یک فایل یا برقراری تماس) میده، اجرای برنامه تا زمانی که عملیات کامل بشه متوقف میشه، که این بسیار ناکارآمده، اما Node.js برای مدیریت کارآمده حجم بالایی از اتصالات همزمان از الگوی راکتور استفاده میکنه، که اساساً مربوط به مدیریت ناهمزمان عملیات I/O (ورودی/خروجی) هست.
Reactor Pattern چجوری کار میکنه؟
1️⃣ Event Demultiplexer: این قلب الگو هست که مسئول نظارت بر چندین منبع I/O (سوکت های شبکه، سیستم فایل ها و... ) هست، و هنگامی که به یک درخواست I/O جدید میرسه، Demultiplexer اون رو به عنوان یک ایونت ثبت میکنه و به یک صف رویداد اضافه میکنه.
2️⃣ صف رویداد(Event Queue): این ساختار داده، تمام ایونت های I/O معلق رو به ترتیبی که دریافت کردن، نگه داره میکنه و هر ایونت دارای داده های مرتبط، و یک کالبک فانکشن (handler) هست که باید پس از اتمام عملیات I/O اجرا بشه.
3️⃣ ایونت لوپ (Event Loop) : این یک حلقه بی نهایت هست، که به طور مداوم صف ایونت رو نظارت میکنه و از طریق صف، تکرار میشه و ایونت بعدی رو بازیابی میکنه و کالبک فانکشن مرتبط با ایونت رو فراخوانی میکنه.
اما جریان ایونت ها به چه صورته؟🤔
1. Application Triggers I/O: زمانی برنامه Node.js شما یک عملیات I/O رو شروع کنه، مثل خوندن یک فایل یا درخواست HTTP.
2. Demultiplexer شارژ میشه: Demultiplexer درخواست I/O رو قطع میکنه و یک ایونت میسازه و همچنین این ایونت رو در صف ایونت ذخیره می کنه.
3. ایونت لوپ در عمل: ایونت لوپ به طور مداوم صف ایونت رو بررسی میکنه، و هنگامی که عملیات I/O یک ایونت کامل میشه (به عنوان مثال، داده از یک تماس شبکه دریافت میشه) و ایونت مربوطه از صف بازیابی میشه.
4. عملکرد کالبک فانکشن : ایونت لوپ عملکرد کالبک فانکشن مرتبط با ایونت بازیابی شده رو فعال میکنه. این تابع فراخوانی داده های دریافتی رو پردازش میکنه یا عملیات تکمیل شده رو مدیریت میکنه.
5. برگشتن به برنامه: هنگامی که تابع callback کار خودش رو تموم میکنه، برنامه میتونه بدون بلاک شدن توسط عملیات I/O به اجرای خودش ادامه بده.
به صورت کلی الگوی Reactor، پایه و اساس مدل برنامه نویسی ناهمزمان(asynchronous) در Node.js هست. و امکان مدیریت کارآمد عملیات I/O رو فراهم میکنه، که منجر به ساخت برنامه های کاربردی بسیار مقیاس پذیر و پاسخگو میشه. با درک این الگو، میتونیم از قدرت واقعی Node.js برای ساخت برنامه های real-time و ایونت محور استفاده کنیم.
ممکنه در نگاه اول فهمیدن این موضوع سخت باشه، برای همین این مقالات رو پیشنهاد میکنم بخونید :))
🔵 Article
🔵 Article
🔵 Article
#nodejs #reactor
@CodeModule
Node.js در حوزه معماری ایونت محور، به دلیل توانایی بالای خود در مدیریت تعداد زیادی از اتصالات همزمان متمایزه، که این مهارت از فلسفه طراحی زیربناییش سرچشمه میگیره و به شدت بر الگوی راکتور متکی هست.
الگوی راکتور دقیقا چیه؟
Reactor Pattern ایده ای برای انجام عملیاتهای I/O در Node.js هست. این الگو یک کنترل کننده (در مورد Node.js، یک کالبک فانکشن) ارائه میده، که با هر عملیات I/O مرتبطه، و هنگامی که یک درخواست I/O ساخته میشه، به یک Demultiplexer ارسال میشه.
از الگوی راکتور چه زمانی استفاده میشه؟
در blocking سنتی I/O، زمانی که برنامه یک درخواست I/O (مثله خوندن یک فایل یا برقراری تماس) میده، اجرای برنامه تا زمانی که عملیات کامل بشه متوقف میشه، که این بسیار ناکارآمده، اما Node.js برای مدیریت کارآمده حجم بالایی از اتصالات همزمان از الگوی راکتور استفاده میکنه، که اساساً مربوط به مدیریت ناهمزمان عملیات I/O (ورودی/خروجی) هست.
Reactor Pattern چجوری کار میکنه؟
اما جریان ایونت ها به چه صورته؟
1. Application Triggers I/O: زمانی برنامه Node.js شما یک عملیات I/O رو شروع کنه، مثل خوندن یک فایل یا درخواست HTTP.
2. Demultiplexer شارژ میشه: Demultiplexer درخواست I/O رو قطع میکنه و یک ایونت میسازه و همچنین این ایونت رو در صف ایونت ذخیره می کنه.
3. ایونت لوپ در عمل: ایونت لوپ به طور مداوم صف ایونت رو بررسی میکنه، و هنگامی که عملیات I/O یک ایونت کامل میشه (به عنوان مثال، داده از یک تماس شبکه دریافت میشه) و ایونت مربوطه از صف بازیابی میشه.
4. عملکرد کالبک فانکشن : ایونت لوپ عملکرد کالبک فانکشن مرتبط با ایونت بازیابی شده رو فعال میکنه. این تابع فراخوانی داده های دریافتی رو پردازش میکنه یا عملیات تکمیل شده رو مدیریت میکنه.
5. برگشتن به برنامه: هنگامی که تابع callback کار خودش رو تموم میکنه، برنامه میتونه بدون بلاک شدن توسط عملیات I/O به اجرای خودش ادامه بده.
به صورت کلی الگوی Reactor، پایه و اساس مدل برنامه نویسی ناهمزمان(asynchronous) در Node.js هست. و امکان مدیریت کارآمد عملیات I/O رو فراهم میکنه، که منجر به ساخت برنامه های کاربردی بسیار مقیاس پذیر و پاسخگو میشه. با درک این الگو، میتونیم از قدرت واقعی Node.js برای ساخت برنامه های real-time و ایونت محور استفاده کنیم.
ممکنه در نگاه اول فهمیدن این موضوع سخت باشه، برای همین این مقالات رو پیشنهاد میکنم بخونید :))
#nodejs #reactor
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5⚡4😁3
پیاده سازی قابلیت drag&drop در سه سوت
react-dnd یکی از کتابخانههای محبوب برای پیادهسازی قابلیت درگ و دراپ (drag and drop) در پروژه های ریکتی هست. این کتابخانه توسط Dan Abramov توسعه داده شده و بر اساس استانداردهای HTML5 و API درگ و دراپ طراحی شده است.
ویژگیهای کلیدی react-dnd⬇️
🔵 انعطاف پذیری بالا: react-dnd به شما این امکان رو میده تا انواع مختلفی از تعاملات درگ و دراپ رو پیادهسازی کنید، از جابجایی آیتمهای لیست گرفته تا قابلیتهای پیچیدهتر مانند ساختارهای درختی و جابجایی بین لیستهای مختلف.
🔵 یکپارچگی با React: این کتابخانه به طور کامل با رویکرد کامپوننتبندی React سازگار هست و مدیریت وضعیت درگ و دراپ رو بسیار ساده میکنه.
🔵 ساختار ماژولار: این کتابخانه بر اساس ساختار ماژولار طراحی شده، که به شما اجازه میده تا از کامپوننتها و هوکهای قابل استفاده مجدد بهره ببرید. این موضوع پیادهسازی و نگهداری کد رو سادهتر میکنه.
🔵 مستندات کامل و جامع: react-dnd دارای مستندات کامل و جامع هست که شامل مثالهای کاربردی و توضیحات دقیق برای هر قسمت از کتابخانه میباشد. این مستندات به دولوپرا کمک میکنه تا به سرعت با کتابخانه آشنا بشن و از اون استفاده کنن.
کتابخانه react-dnd دارای ویژگیهای متعددی هست که اون رو به ابزاری قدرتمند، برای پیادهسازی قابلیتهای درگ و دراپ در پروژه های React تبدیل میکنه. برای اطلاعات بیشتر میتونید به داکیومنتش مراجعه کنید.
Document🌐
#dnd #react
@CodeModule
react-dnd یکی از کتابخانههای محبوب برای پیادهسازی قابلیت درگ و دراپ (drag and drop) در پروژه های ریکتی هست. این کتابخانه توسط Dan Abramov توسعه داده شده و بر اساس استانداردهای HTML5 و API درگ و دراپ طراحی شده است.
ویژگیهای کلیدی react-dnd
کتابخانه react-dnd دارای ویژگیهای متعددی هست که اون رو به ابزاری قدرتمند، برای پیادهسازی قابلیتهای درگ و دراپ در پروژه های React تبدیل میکنه. برای اطلاعات بیشتر میتونید به داکیومنتش مراجعه کنید.
Document
#dnd #react
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥7😁5
فرانت دولوپر ها وقتی میخوان یک پروژه ای رو با html css js خام کد بزنن و شروع کنن، باید یکسری سلسله مراتب تکراری رو انجام بدن که باعث میشه وقت زیادی ازشون گرفته بشه.
برای حل این مشکل، من یدونه بش اسکریپت نوشتم که میاد همه این کارارو در عرض ۱ ثانیه انجام میده و لازم نیست دیگه دست به سیاه و سفید بزنید.
## syntax :
bash <script dir> <project dir>
## example:
bash ~/vanilla.sh /Desktop
و تمام، پروژه شما آمادست و فقط لازمه که برید و دست به کد بشید. اگر از این پارت bash script های کاربردی حمایت بشه، پارت های خفن تری مثل نصب و کانفیگ کتابخانه ها و فریم ورک هایی مثل tailwind, react , vue , angular, svelte, qwik , next.js , ... هم براتون میزارم.
#linux #script #bash
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14🔥4❤🔥3
با رقیب جدید فیگما آشنا بشید! 💀
Creatie یک ابزار طراحی مبتنی بر هوش مصنوعیه که به طراحان کمک میکنه، تا طرحهای خودشون رو به سرعت و با کیفیت بالا ایجاد کنن. این ابزار با ارائه پیشنهادهای طراحی هوشمند و تولید خودکار محتوا، فرایند طراحی رو بهبود میبخشه. ویژگیهای مهم اون شامل همکاری تیمی، مدیریت پروژه، و یکپارچهسازی با سایر ابزارهاست.
این ابزار در مقایسه با Figma که یک ابزار معروف و محبوب در زمینه طراحی و نمونهسازیه، یه سری تفاوت داره که در ویدیو یوتیوبی که لینکش رو براتون قرار دادم، جناب عرفان عطارزاده کامل این ابزار رو شرح، و باهاش کار کرده.
Link📹
یکی از نکات جالب این ابزار اینه که، قابلیت Dev Mode رو بر خلاف فیگما به صورت رایگان ارائه میده 👩💻
#figma #Creatie
@CodeModule
Creatie یک ابزار طراحی مبتنی بر هوش مصنوعیه که به طراحان کمک میکنه، تا طرحهای خودشون رو به سرعت و با کیفیت بالا ایجاد کنن. این ابزار با ارائه پیشنهادهای طراحی هوشمند و تولید خودکار محتوا، فرایند طراحی رو بهبود میبخشه. ویژگیهای مهم اون شامل همکاری تیمی، مدیریت پروژه، و یکپارچهسازی با سایر ابزارهاست.
این ابزار در مقایسه با Figma که یک ابزار معروف و محبوب در زمینه طراحی و نمونهسازیه، یه سری تفاوت داره که در ویدیو یوتیوبی که لینکش رو براتون قرار دادم، جناب عرفان عطارزاده کامل این ابزار رو شرح، و باهاش کار کرده.
Link
#figma #Creatie
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10🔥4👌3
Lua چیه و کاربردش در Node.js 🤟
Lua یک زبان برنامه نویسی قدرتمند، کارآمد، سبک و قابل جاسازی هست و به گونه ای طراحی شده که ساده، سریع و آسان با نرم افزارهای دیگه ادغام بشه. این زبان در صنعت بازی سازی محبوبه و برای نوشتن منطق بازی و توسعه موتورهای بازی استفاده میشه، همچنین در توسعه وب برای نوشتن برنامه ها و اسکریپت های سمت سرور کاربرد داره.
اما Lua چه کاربردی در Node.js داره؟🤔
Lua به صورت دیفالت از Node.js پشتیبانی نمیکنه، اما پکیج هایی وجود داره که میشه باهاشون این مشکل رو حل کرد. یکی از کاربرد های Lua نوشتن اسکریپت برای مدیریت دیتابیس هایی مثل Redis هست، که نحوه استفاده از lua برای مدیریت Redis در Node.js به این صورته:
این اسکریپت یک key و value میگیره، و بعدش در Redis ذخیرش میکنه.
در Node.js چجوری از Lua استفاده کنیم؟
در Node.js ما با استفاده از پکیج Redis، میتونیم این اسکریپت رو اجرا و ازش استفاده کنیم، که به این صورت هست:
این فقط یک تکه کده و برای دیدن تموم کدها، به این ریپازیتوری مراجعه کنید.
به صورت کلی من شخصا از lua خیلی خوشم اومده، و هرجایی بتونم ازش استفاده میکنم. برای اطلاعات بیشتر پیشنهاد میکنم مقالات زیر رو مطالعه کنید⬇️
- Article
- Article
- Article
#nodejs #lua
@CodeModule
Lua یک زبان برنامه نویسی قدرتمند، کارآمد، سبک و قابل جاسازی هست و به گونه ای طراحی شده که ساده، سریع و آسان با نرم افزارهای دیگه ادغام بشه. این زبان در صنعت بازی سازی محبوبه و برای نوشتن منطق بازی و توسعه موتورهای بازی استفاده میشه، همچنین در توسعه وب برای نوشتن برنامه ها و اسکریپت های سمت سرور کاربرد داره.
اما Lua چه کاربردی در Node.js داره؟
Lua به صورت دیفالت از Node.js پشتیبانی نمیکنه، اما پکیج هایی وجود داره که میشه باهاشون این مشکل رو حل کرد. یکی از کاربرد های Lua نوشتن اسکریپت برای مدیریت دیتابیس هایی مثل Redis هست، که نحوه استفاده از lua برای مدیریت Redis در Node.js به این صورته:
local key = tostring(KEYS[1]);
local value = tostring(ARGV[1]);
redis.call("SET", key, value);
return { key, value };
این اسکریپت یک key و value میگیره، و بعدش در Redis ذخیرش میکنه.
در Node.js چجوری از Lua استفاده کنیم؟
در Node.js ما با استفاده از پکیج Redis، میتونیم این اسکریپت رو اجرا و ازش استفاده کنیم، که به این صورت هست:
const client = redis.createClient();
client.connect();
client.on("ready", () => console.log("Redis is ready"));
const lua = {
script: fs.readFileSync("./example_redis_script.lua", "utf8"),
};
(async()=>{
const reply = await client.eval(lua.script, {
arguments: ["value11"],
keys: ["key11"],
});
console.log("Reply:", reply);
})()
به صورت کلی من شخصا از lua خیلی خوشم اومده، و هرجایی بتونم ازش استفاده میکنم. برای اطلاعات بیشتر پیشنهاد میکنم مقالات زیر رو مطالعه کنید
- Article
- Article
- Article
#nodejs #lua
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡5🔥4
وظیفهی اصلی Webkit، تجزیه و تحلیل کدهای HTML و XHTML و ... و تولید و نمایش ظاهر صفحه هست. در واقع، مرورگر واسطهای بین کاربر و موتور رندر هست و وظایف دیگه ای مثل برقراری ارتباط با اینترنت، مدیریت امنیت، تجربهی کاربری و آپدیت هارو بر عهده داره. همچنین Webkit از سیستمعاملهای mac os، windows، linux و سیستمعاملهای شبه یونیکسی پشتیبانی میکنه.
موتورهای رندر به طور مداوم در حال توسعه و اضافه شدن امکانات جدید هستن. بعضی از امکانات جدید اختصاصی هستن و در استانداردهای وب وجود ندارن. برای تشخیص این ویژگیها از قوانین استاندارد و جلوگیری از مشکل در عملکرد مرورگرهای دیگه، از پیشوندهایی در اسم اونها استفاده میشه.
امروزه، مرورگر Edge هم از موتور webkit استفاده میکنه و مرورگر اوپرا هم محتوای صفحات وب رو با استفاده از webkit نمایش میده. وقتی که یک ویژگی اختصاصی به صورت استاندارد در میاد، پیشوند اون حذف میشه.
.CodeModule {
width: 500px;
height: 500px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-smooth: always;
}
و در نتیجه Webkit یک موتور رندر قدرتمند، و سریعه که در طیف وسیعی از برنامهها از جمله مرورگرهای وب، برنامههای کاربردی وب و ابزارهای توسعه وب استفاده میشه. Webkit به طور مداوم در حال توسعه و آپدیته و جدیدترین استانداردهای وب رو ساپورت میکنه
#webkit #browser #css
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥5
مونوریپو (Monorepo) چیه و چه کاربردی داره؟ 🤔
مونوریپو یک روش مدیریت کدهای منبع هست که در اون چندین پروژه یا ماژول به جای نگهداری در مخازن جداگونه، در یک مخزن واحد نگهداری میشن. در این روش همهی کدها، پیکربندیها و وابستگیهای مربوط به پروژههای مختلف در یک مخزن نسخهبندی واحد قرار میگیرن.
فرض کنید کار شما به سمتی کشیده شده که دارای وب اپلیکیشن جداگونه، IOS app و android app مخصوص به خود و موارد دیگه هستید، در این حالت monorepo بودن پروژه بهتون بسیار کمک میکنه.
برخی از مزایای مونوریپو⬇️
🔵 مدیریت سادهتر وابستگیها
🔵 بهبود همکاری تیمی
🔵 قابلیت بازبینی و تست یکپارچه
🔵 کاهش دوبارهکاری
همچنین برای مدیریت مونوریپو، ابزارهای متعددی وجود داره که میتونن به بهبود کارایی و کاهش پیچیدگی کمک کنن⬇️
Lerna: ابزاری برای مدیریت وابستگیها و انتشار پکیجها در مونوریپوهای مبتنی بر جاوااسکریپت.
Bazel: ابزاری برای ساخت و تست پروژهها که توسط گوگل توسعه داده شده و برای مدیریت مونوریپو مناسبه.
Nx: یک مجموعه ابزار جامع برای مدیریت و توسعه مونوریپوها، به خصوص در اکوسیستم جاوااسکریپت و تایپاسکریپت.
مونوریپو روشی هست که شرکتهای بزرگی مثل گوگل و فیسبوک از اون استفاده میکنن، تا بتونن پروژههای بزرگ و پیچیده خودشون رو به صورت یکپارچه مدیریت کنن.
برای کسب اطلاعات بیشتر، میتونید به داکیومنتش مراجعه کنید.
#monorepo
@CodeModule
مونوریپو یک روش مدیریت کدهای منبع هست که در اون چندین پروژه یا ماژول به جای نگهداری در مخازن جداگونه، در یک مخزن واحد نگهداری میشن. در این روش همهی کدها، پیکربندیها و وابستگیهای مربوط به پروژههای مختلف در یک مخزن نسخهبندی واحد قرار میگیرن.
فرض کنید کار شما به سمتی کشیده شده که دارای وب اپلیکیشن جداگونه، IOS app و android app مخصوص به خود و موارد دیگه هستید، در این حالت monorepo بودن پروژه بهتون بسیار کمک میکنه.
برخی از مزایای مونوریپو
همچنین برای مدیریت مونوریپو، ابزارهای متعددی وجود داره که میتونن به بهبود کارایی و کاهش پیچیدگی کمک کنن
Lerna: ابزاری برای مدیریت وابستگیها و انتشار پکیجها در مونوریپوهای مبتنی بر جاوااسکریپت.
Bazel: ابزاری برای ساخت و تست پروژهها که توسط گوگل توسعه داده شده و برای مدیریت مونوریپو مناسبه.
Nx: یک مجموعه ابزار جامع برای مدیریت و توسعه مونوریپوها، به خصوص در اکوسیستم جاوااسکریپت و تایپاسکریپت.
برای کسب اطلاعات بیشتر، میتونید به داکیومنتش مراجعه کنید.
#monorepo
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7⚡4
ماژول cluster در Node.js چیه؟ 🤟
در واقع cluster یک ماژول داخلی هست که به ساخت child process (کارگرها) اجازه میده، تا به طور همزمان روی یک سرور واحد اجرا بشن و همچنین هر کارگر یک ایونت لوپ، حافظه و نمونه V8 خودش رو داره، و کارگر ها از طریق برقراری ارتباط با process communication (IPC) و فرایند اصلی Node.js، ارتباط برقرار میکنن.
چرا از cluster استفاده کنیم؟🤔
🔵 به طور پیش فرض Node.js از یک رشته استفاده می کنه، بدون اینکه از چندین هسته CPU به طور موثر استفاده کنه.
🔵 cluster بارهای کاری رو بین کارگران توزیع میکنه، و عملکرد سیستم های چند هسته ای رو افزایش میده.
🔵 با رسیدگی به درخواست های همزمان بیشتر، مقیاس پذیری رو بهبود میبخشه.
🔵 تحمل خطا رو افزایش میده و سایر کارگران میتونن درخواست ها رو در صورت خرابی یکی از کارگران رسیدگی کنن.
محدودیت های cluster یا خوشه بندی شامل چه چیزایی میشه؟
🔴 به دلیل مدیریت IPC، منابع مشترک و race conditions باعثه افزایش پیچیدگی میشه.
- با اضافه شدن هر فرآیند کارگر اضافی، باعث میشه از حافظه بیشتری استفاده کنه.
🔴 چون هر کارگر فضای حافظه خاص خود رو داره، مدیریت حالت پیچیده تر میشه.
🔴 ممکن است برای اپلیکیشن های I/O-Bound (ریکویست های شبکه، کوئری های دیتابیس ) مفید نباشه.
چه زمان از cluster استفاده کنیم؟
- برای اپلیکیشن های متصل به CPU با حجم درخواست بالا ایده آل هست.
- برای کارهایی که شامل محاسبات پیچیده، پردازش تصویر/فیلم و تجزیه و تحلیل داده های خاص میشه مفیده.
به طور خلاصه، ماژول کلاستر یک ابزار قدرتمند برای استفاده از چندین هسته CPU در برنامه های Node.js، به ویژه برای کارهای فشرده CPU هست. با این حال، مهمه که محدودیت ها و مناسب بودنش رو برای نیازهای خاص برنامه خودمون در نظر بگیریم. برای اطلاعات بیشتر پیشنهاد میکنم مقالات زیر رو مطالعه کنید⬇️
- Article
- Article
- Article
#nodejs #cluster
@CodeModule
در واقع cluster یک ماژول داخلی هست که به ساخت child process (کارگرها) اجازه میده، تا به طور همزمان روی یک سرور واحد اجرا بشن و همچنین هر کارگر یک ایونت لوپ، حافظه و نمونه V8 خودش رو داره، و کارگر ها از طریق برقراری ارتباط با process communication (IPC) و فرایند اصلی Node.js، ارتباط برقرار میکنن.
چرا از cluster استفاده کنیم؟
محدودیت های cluster یا خوشه بندی شامل چه چیزایی میشه؟
- با اضافه شدن هر فرآیند کارگر اضافی، باعث میشه از حافظه بیشتری استفاده کنه.
چه زمان از cluster استفاده کنیم؟
- برای اپلیکیشن های متصل به CPU با حجم درخواست بالا ایده آل هست.
- برای کارهایی که شامل محاسبات پیچیده، پردازش تصویر/فیلم و تجزیه و تحلیل داده های خاص میشه مفیده.
به طور خلاصه، ماژول کلاستر یک ابزار قدرتمند برای استفاده از چندین هسته CPU در برنامه های Node.js، به ویژه برای کارهای فشرده CPU هست. با این حال، مهمه که محدودیت ها و مناسب بودنش رو برای نیازهای خاص برنامه خودمون در نظر بگیریم. برای اطلاعات بیشتر پیشنهاد میکنم مقالات زیر رو مطالعه کنید
- Article
- Article
- Article
#nodejs #cluster
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡4🔥2