در واقع D3.js که مخفف شده (Data-Driven Documents) هست، یک کتابخانه جاوااسکریپتی برای ایجاد data visualization های تعاملی بر اساس داده ها هست. این کتابخانه به عنوان یک ابزار قدرتمند برای ایجاد نمودارها، نقشهها، چارتها و دیگر data visualization ها با استفاده از HTML، SVG و CSS شناخته میشه.
به طور کلی، D3.js یک ابزار قدرتمند برای ایجاد visualization های تعاملی بر اساس داده هست که با دانش مناسب میتونه به خوبی در پروژههای حرفه ای مورد استفاده قرار بگیره
برای یادگیری این کتابخانه خفن و کاربردی میتونید به داکیومنتش مراجعه کنید.
Document
#d3js #library #js
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡2
با تکنیکی به نام Memoization آشنا بشید ✌️
در برنامه نویسی، Memoization یک تکنیک بهینه سازیه که برنامه ها رو کارآمدتر و در نتیجه سریعتر می کنه. در اصل این کار رو با ذخیره نتایج محاسباتی در حافظه پنهان انجام میده و در درخواست های بعد به جای محاسبه مجدد، همون اطلاعات رو از حافظه نهان بازیابی میکنه.
به عبارت ساده تر، شامل ذخیره کردن خروجی یک تابع در حافظه نهان و بررسی اینکه، آیا در هر اجرا محاسبات مورد نیاز از قبل در حافظه پنهان(کش) موجوده یا نه. کش صرفاً یک ذخیرهسازی موقت داده هست که دادهها رو برای درخواستهای آینده، نگه میداره تا عملکرد پروژه سریع تر باشه.
ممورازیشن در جاوا اسکریپت بر دو مفهوم متکی هست:
🔵 Closures
🔵 Higher Order Functions
برای روشن تر شدن موضوع، مثال کلاسیک دنباله فیبوناچی رو با ممورازیشن پیاده سازی میکنیم⬇️
کاری که ابتدا انجام بدیم اینه که بررسی کنیم، آیا شی memo رو به عنوان پارامتر دریافت کردیم یا نه. اگر این کار رو نکردیم، اون رو به عنوان یک شی خالی تنظیم می کنیم:
سپس بررسی می کنیم که آیا memo حاوی مقداریه که به عنوان پارامتر در کلیدهای خود دریافت کردیم؟ اگر این چنین باشه، مقدار اون رو برمی گردونیم و اینجا جاییه که جادو اتفاق میوفته. وقتی که مقدار مد نظر رو در memo ذخیره کردیم، دیگه نیازی به بازگشت بیشتر نیست.
اما اگه مقدار رو در memo نداشته باشیم، دوباره fib رو فراخوانی میکنیم، اما ایندفعه memo رو بهعنوان پارامتر ارسال میکنیم، بنابراین توابعی که ما فراخوانی میکنیم همون مقادیر حافظهگذاریشدهای رو که در تابع “اصلی” داریم به اشتراک خواهند گذاشت. دقت کنید که نتیجه نهایی رو قبل از برگرداندن کش به حافظه پنهان اضافه می کنیم.
و تمام، با دو خط کد memoization رو پیاده سازی کرده ایم و عملکرد پروژه رو به طور قابل توجهی بهبود بخشیدیم.
🔵 تکنیک Memoization تنها در مورد تابعهای محض(pure functions) قابل اجرا هست.
درکل Memoization یک ترفند ساده اما قدرتمنده که میتونه به سرعت بخشیدن به کد ما کمک زیادی کنه، مخصوصاً وقتی با عملکردهای محاسباتی تکراری و سنگین سروکار داریم.
#memoization #js
@CodeModule
در برنامه نویسی، Memoization یک تکنیک بهینه سازیه که برنامه ها رو کارآمدتر و در نتیجه سریعتر می کنه. در اصل این کار رو با ذخیره نتایج محاسباتی در حافظه پنهان انجام میده و در درخواست های بعد به جای محاسبه مجدد، همون اطلاعات رو از حافظه نهان بازیابی میکنه.
به عبارت ساده تر، شامل ذخیره کردن خروجی یک تابع در حافظه نهان و بررسی اینکه، آیا در هر اجرا محاسبات مورد نیاز از قبل در حافظه پنهان(کش) موجوده یا نه. کش صرفاً یک ذخیرهسازی موقت داده هست که دادهها رو برای درخواستهای آینده، نگه میداره تا عملکرد پروژه سریع تر باشه.
ممورازیشن در جاوا اسکریپت بر دو مفهوم متکی هست:
برای روشن تر شدن موضوع، مثال کلاسیک دنباله فیبوناچی رو با ممورازیشن پیاده سازی میکنیم
const fib = (n, memo) => {
memo = memo || {}
if (memo[n]) {
return memo[n];
}
if (n <= 1) {
return n;
}
memo[n] = fib(n - 1, memo) + fib(n - 2, memo);
return memo[n];
}
کاری که ابتدا انجام بدیم اینه که بررسی کنیم، آیا شی memo رو به عنوان پارامتر دریافت کردیم یا نه. اگر این کار رو نکردیم، اون رو به عنوان یک شی خالی تنظیم می کنیم:
memo = memo || {}
سپس بررسی می کنیم که آیا memo حاوی مقداریه که به عنوان پارامتر در کلیدهای خود دریافت کردیم؟ اگر این چنین باشه، مقدار اون رو برمی گردونیم و اینجا جاییه که جادو اتفاق میوفته. وقتی که مقدار مد نظر رو در memo ذخیره کردیم، دیگه نیازی به بازگشت بیشتر نیست.
if (memo[n]) {
return memo[n]
}
اما اگه مقدار رو در memo نداشته باشیم، دوباره fib رو فراخوانی میکنیم، اما ایندفعه memo رو بهعنوان پارامتر ارسال میکنیم، بنابراین توابعی که ما فراخوانی میکنیم همون مقادیر حافظهگذاریشدهای رو که در تابع “اصلی” داریم به اشتراک خواهند گذاشت. دقت کنید که نتیجه نهایی رو قبل از برگرداندن کش به حافظه پنهان اضافه می کنیم.
memo[n] = fib(n - 1, memo) + fib(n - 2, memo);
return memo[n];
و تمام، با دو خط کد memoization رو پیاده سازی کرده ایم و عملکرد پروژه رو به طور قابل توجهی بهبود بخشیدیم.
درکل Memoization یک ترفند ساده اما قدرتمنده که میتونه به سرعت بخشیدن به کد ما کمک زیادی کنه، مخصوصاً وقتی با عملکردهای محاسباتی تکراری و سنگین سروکار داریم.
#memoization #js
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7⚡2
خروجی کد بالا؟ 🤔
Anonymous Quiz
48%
True
7%
False
22%
3
23%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم 💡
🔥10👌5
مقیاس پذیری در Node.js 🤟
قبل از اینکه بخوایم درمورد مقیاس پذیری در Node.js صحبت کنیم، باید اول معنی و مفهوم مقایس پذیری رو بدونیم!
مقیاس پذیری یکی از ویژگی های سیستمه که نشون میده، سیستم تا چه حد میتونه در مقیاس های بزرگتر به شکل مشابه، پایدار به فعالیتش ادامه بده.
اما مقیاس پذیری در Node.js به چه صورته؟🧐
به صورت کلی مقیاس پذیری در یک برنامه Node.js، یعنی اطمينان از اینکه این برنامه در صورت ترافیک و تعاملات بالای کاربران، برنامه رو بدون به خطر انداختن عملکرد مدیریت کنه. این فرایند برای کسب و کار هایی که رشد رو پیشبینی میکنن و هدفشون ارائه یک تجربه یکپارچه هست، بسیار مهمه.
در هنگام مقیاس پذیری برنامه های Node.js باید چند استراتژی رو در نظر بگیریم⬇️
1. مقیاس افقی : شامل افزایش تعداد نمونههای برنامه شما بر روی چند سرور مجزا هست. با افزایش تعداد سرورها، برنامه شما میتونه بار زیادی از ترافیک رو مدیریت کنه.
2. معماری میکروسرویس: برنامه شما به چندین سرویس کوچکتر تقسیم میشه که هر کدوم، مستقل از یکدیگر عمل میکنن. این امر امکان افزایش انعطافپذیری و مقیاس پذیری برنامه رو فراهم میکنه.
3. استفاده از سیستمهای کشینگ: با استفاده از این سیستمها میتونید به بهبود عملکرد و مقیاس پذیری برنامه کمک کنید. این سیستمها با ذخیرهسازی دادههای پراستفاده در حافظه، زمان پاسخ به درخواستها رو کاهش میدن.
برای پیاده سازی یک برنامه مقیاس پذیر و آشنا شدن با نکات بیشتر و حرفهایتر، میتونید 3 تا مقاله زیر رو بخونید💀
- Article
- Article
- Article
به صورت کلی برای داشتن یک برنامه Node.js مقیاس پذیر، باید به این نکات توجه کنید و استراتژیهای مناسب رو برای مقیاس پذیری برنامه اعمال کنید. این کار به شما کمک میکنه تا برنامه پایداری رو، در مقیاسهای بزرگتر حفظ کنه.
#nodejs #scalability
@CodeModule
قبل از اینکه بخوایم درمورد مقیاس پذیری در Node.js صحبت کنیم، باید اول معنی و مفهوم مقایس پذیری رو بدونیم!
مقیاس پذیری یکی از ویژگی های سیستمه که نشون میده، سیستم تا چه حد میتونه در مقیاس های بزرگتر به شکل مشابه، پایدار به فعالیتش ادامه بده.
اما مقیاس پذیری در Node.js به چه صورته؟
به صورت کلی مقیاس پذیری در یک برنامه Node.js، یعنی اطمينان از اینکه این برنامه در صورت ترافیک و تعاملات بالای کاربران، برنامه رو بدون به خطر انداختن عملکرد مدیریت کنه. این فرایند برای کسب و کار هایی که رشد رو پیشبینی میکنن و هدفشون ارائه یک تجربه یکپارچه هست، بسیار مهمه.
در هنگام مقیاس پذیری برنامه های Node.js باید چند استراتژی رو در نظر بگیریم
1. مقیاس افقی : شامل افزایش تعداد نمونههای برنامه شما بر روی چند سرور مجزا هست. با افزایش تعداد سرورها، برنامه شما میتونه بار زیادی از ترافیک رو مدیریت کنه.
2. معماری میکروسرویس: برنامه شما به چندین سرویس کوچکتر تقسیم میشه که هر کدوم، مستقل از یکدیگر عمل میکنن. این امر امکان افزایش انعطافپذیری و مقیاس پذیری برنامه رو فراهم میکنه.
3. استفاده از سیستمهای کشینگ: با استفاده از این سیستمها میتونید به بهبود عملکرد و مقیاس پذیری برنامه کمک کنید. این سیستمها با ذخیرهسازی دادههای پراستفاده در حافظه، زمان پاسخ به درخواستها رو کاهش میدن.
برای پیاده سازی یک برنامه مقیاس پذیر و آشنا شدن با نکات بیشتر و حرفهایتر، میتونید 3 تا مقاله زیر رو بخونید
- Article
- Article
- Article
به صورت کلی برای داشتن یک برنامه Node.js مقیاس پذیر، باید به این نکات توجه کنید و استراتژیهای مناسب رو برای مقیاس پذیری برنامه اعمال کنید. این کار به شما کمک میکنه تا برنامه پایداری رو، در مقیاسهای بزرگتر حفظ کنه.
#nodejs #scalability
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡3
در حقیقت Swap یک حافظه مجازیه و زمانی که سیستم عامل رم کافی نداره، میتونید از اون استفاده کنید. یک فایل swap به لینوکس اجازه میده تا فضای دیسک رو به عنوان RAM شبیه سازی کنه، و همونطور که بالاتر هم اشاره کردم، وقتی که سیستم شما شروع به اتمام رم میکنه، از فضای swap استفاده میکنه و مقداری از محتوای RAM رو روی فضای دیسک جابجا میکنه.
وقتی که شما یک برنامه رو در سیستم عامل اجرا میکنید، نیازه که این برنامه به داخل حافظه اصلی یا RAM انتقال داده بشه. سیستم عامل های جدیدتر و به روز تر، تعداد برنامه های بیشتری رو اجرا می کنن و سرویس های زیادی هم در بک گراند در حال اجرا هستن.
اما از طرف دیگر RAM محدوده و زمانی که تعداد زیادی از برنامه ها به صورت همزمان اجرا میشن، در این شرایط میزان رم که برای اجرا کردن این برنامه ها نیازه، از میزان حافظه اصلی بیشتر میشه و مشاهده خواهید کرد که سیستم شما با کمبود حافظه اصلی مواجه میشه و درنهایت crash میکنه.
#swap #linux
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡2
یک رزومه کارفرما پسند چه ویژگی هایی داره؟
1⃣ به جزئیات اهمیت بده
یک رزومه حرفه ای به هیچ وجه نباید غلط املایی و گرامری داشته باشه، پس به جزئیات نوشتاری توجه کن!
2⃣ لینک خراب یعنی رد شدن رزومه
اگه لینکی از پلتفرم های اجتماعی یا پروژه هاتون به رزومه اضافه کردید، حتما لینکش رو چک کنید اشتباهی نشده باشه.
3⃣ مقاله ننویس
کارفرماها معمولا برای بررسی هر رزومه نهایتا ۶۰ ثانیه وقت میذارن، پس از پاراگرف های کوتاه و جامع برای معرفی خودت استفاده کن.
4⃣ صادقانه و دور از مبالغه زیاد
هیچ کارفرمایی تمایل به استخدام فردی که صادق نباشه نداره. در رزومه از خودتون تعریف و تمجید کنید و سعی کنید به هر توانایی خود، رتبه و سطحی قائل شوید و کارهایی که عملاً انجام دادهاید، و تکنولوژی هایی که کار کردید رو کاملاً صادقانه بیان کنید، وگرنه تو مرحله مصاحبه ممکنه براتون دردسر بشه.
5⃣ نسخه فارسی و انگلیسی رزومت آماده باشه
خیلی از دولوپرا با فرستادن رزومه انگلیسی به شرکتهای ایرانی، عملا خودشون رو ریجکت میکنن. اکثر کارفرماهای ایرانی زمانی که میخوان رزومه رو چک کنن، اگه انگلیسی باشه ردش میکنن(متقاضی زیاده و به خودشون زحمت نمیدن یا انگلیسی بلد نیستن). واسه یه شرکت معمولی که متن آگهی دعوت به کارشو فارسی نوشته، رزومه انگلیسی نفرستید و همین روند بالعکس. دقت کنید که شرکت های بزرگ و معروف از این قاعده مستثنی هستن.
#resume
@CodeModule
یک رزومه حرفه ای به هیچ وجه نباید غلط املایی و گرامری داشته باشه، پس به جزئیات نوشتاری توجه کن!
اگه لینکی از پلتفرم های اجتماعی یا پروژه هاتون به رزومه اضافه کردید، حتما لینکش رو چک کنید اشتباهی نشده باشه.
کارفرماها معمولا برای بررسی هر رزومه نهایتا ۶۰ ثانیه وقت میذارن، پس از پاراگرف های کوتاه و جامع برای معرفی خودت استفاده کن.
هیچ کارفرمایی تمایل به استخدام فردی که صادق نباشه نداره. در رزومه از خودتون تعریف و تمجید کنید و سعی کنید به هر توانایی خود، رتبه و سطحی قائل شوید و کارهایی که عملاً انجام دادهاید، و تکنولوژی هایی که کار کردید رو کاملاً صادقانه بیان کنید، وگرنه تو مرحله مصاحبه ممکنه براتون دردسر بشه.
خیلی از دولوپرا با فرستادن رزومه انگلیسی به شرکتهای ایرانی، عملا خودشون رو ریجکت میکنن. اکثر کارفرماهای ایرانی زمانی که میخوان رزومه رو چک کنن، اگه انگلیسی باشه ردش میکنن(متقاضی زیاده و به خودشون زحمت نمیدن یا انگلیسی بلد نیستن). واسه یه شرکت معمولی که متن آگهی دعوت به کارشو فارسی نوشته، رزومه انگلیسی نفرستید و همین روند بالعکس. دقت کنید که شرکت های بزرگ و معروف از این قاعده مستثنی هستن.
#resume
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👌3⚡2😁1
سرچ الگوريتم و کاربردش در وب 🔥
سرچ الگوريتم، روشی برای یافتن کارآمد اطلاعات یک مجموعه داده هست. با استفاده از این الگوریتم، داده های ذخیره شده در ساختار های خاص رو میتونیم بازیابی کنیم، یا در یک فضای جستجو تعریف شده محاسبه کنیم.
چند نوع الگوریتم جستجو داریم؟🤨
1. جستجوی خطی (linear search) : هر رکورد رو یک به یک بررسی میکنه تا زمانی که هدف پیدا شه.
2. جستجوی دودویی (binary search) : ساختار داده رو به دو قسمت تقسیم میکنه و همین کار باعث میشه، از جستجوی خطی سریع تر بشه.
توجه : این یک طبقه بندی سطح بالا هست.
سرچ الگوریتم چه کابردی داره؟
الگوریتم های جستجو کاربرد های زیادی مثل NLP، ماشین لرنینگ و ... دارن. اما آیا در وب هم کاربرد دارن؟ صد در صد بله و چند موردشو با هم مثال میزنیم⬇️
1. مدیریت محتوا (CMS) : میتونیم با استفاده از سرچ الگوریتم برای جستجو مطالب، صفحات و فایل های موجود در سیستم استفاده کنیم.
2. پشتیبانی : میتونه برای جستجو تیکت ها، سوالات متداول و اطلاعات مرتبط استفاده بشه.
3. جستجو پیشرفته : احتملا دیدید که برخی از وبسایت ها، امکانات پیشرفتهای برای جستجو رو برای کاربران فراهم میکنن. این کار با استفاده از الگوریتم جستجو انجام میشه.
به صورت کلی سرچ الگوريتم کابرد های زیادی داره، که یکی از بزرگترین مثال هاش گوگل مپ هست.
برای پیاده سازی جستجو دودویی یا خطی با زبان های مختلف مثل (js، ts، golang) میتونید به این ریپازیتوری مراجعه کنید.
همچنین برای درک بهتر و نحوه کار کردن الگوریتم های جستجو، مقالات زیر رو پیشنهاد میکنم :
- Article
- Article
- Article
#algorithm #search_algorithm
@CodeModule
سرچ الگوريتم، روشی برای یافتن کارآمد اطلاعات یک مجموعه داده هست. با استفاده از این الگوریتم، داده های ذخیره شده در ساختار های خاص رو میتونیم بازیابی کنیم، یا در یک فضای جستجو تعریف شده محاسبه کنیم.
چند نوع الگوریتم جستجو داریم؟
1. جستجوی خطی (linear search) : هر رکورد رو یک به یک بررسی میکنه تا زمانی که هدف پیدا شه.
2. جستجوی دودویی (binary search) : ساختار داده رو به دو قسمت تقسیم میکنه و همین کار باعث میشه، از جستجوی خطی سریع تر بشه.
سرچ الگوریتم چه کابردی داره؟
الگوریتم های جستجو کاربرد های زیادی مثل NLP، ماشین لرنینگ و ... دارن. اما آیا در وب هم کاربرد دارن؟ صد در صد بله و چند موردشو با هم مثال میزنیم
1. مدیریت محتوا (CMS) : میتونیم با استفاده از سرچ الگوریتم برای جستجو مطالب، صفحات و فایل های موجود در سیستم استفاده کنیم.
2. پشتیبانی : میتونه برای جستجو تیکت ها، سوالات متداول و اطلاعات مرتبط استفاده بشه.
3. جستجو پیشرفته : احتملا دیدید که برخی از وبسایت ها، امکانات پیشرفتهای برای جستجو رو برای کاربران فراهم میکنن. این کار با استفاده از الگوریتم جستجو انجام میشه.
به صورت کلی سرچ الگوريتم کابرد های زیادی داره، که یکی از بزرگترین مثال هاش گوگل مپ هست.
برای پیاده سازی جستجو دودویی یا خطی با زبان های مختلف مثل (js، ts، golang) میتونید به این ریپازیتوری مراجعه کنید.
همچنین برای درک بهتر و نحوه کار کردن الگوریتم های جستجو، مقالات زیر رو پیشنهاد میکنم :
- Article
- Article
- Article
#algorithm #search_algorithm
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥3
توی این پست یک سایت بهتون معرفی میکنم که با استفاده از اون، میتونید سایت مد نظرتون رو از بابت Performance ،Structure ،LCP و LBT بسنجید و انالیزشون کنید
#web #performance #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👌2💔1
سینتکس دستور Once در Event listener ها به صورت یک پارامتر درون یک آبجکت پاس داده میشه و مقدار true رو به خودش میگیره :
document.body.addEventListener('click', () => {
console.log('CodeModule run only once :)) ');
}, { once: true });
به طور کلی پراپرتی once یکی از قابلیتهای مفید و کارآمد در مدیریت رویدادها در جاوا اسکریپته، که کدنویسی رو سادهتر و موثرتر میکنه
#js #trick
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👌5
ادغام و تحویل مداوم (CD/CI) چیه ؟ 🧐
قبل از اینکه راجب این مفاهیم و ارتباطشون باهم حرف بزنیم، باید اول مفهوم و معنی هرکدوم رو بدونیم.
ادغام مداوم یا continues Integration (CI) چیه؟
به صورت کلی CI شبیه بررسی نرم افزاره، یعنی پس از هر تغییر، توسعه دهندگان کد رو ادغام میکنن و یک سیستم خودکار (مثل github action) فورا اونو تستش میکنه.
این باعث میشه اشکالات شناسایی بشن و کد رو ثابت و با کیفیت نگه داره. هدف نهایی یکپارچه سازی پیوسته (CI) ساخت یک محیط توسعه هست که در اون، خطاها در سریع ترین زمان ممکن شناسایی و رسیدگی بشن.
و اما تحویل مدام یا (CD)continuous delivery چیه ؟
یک روش توسعه نرمافزاره که انتشار مکرر و قابل اعتماد رو تقویت میکنه، و بر اساس یکپارچگی پیوسته (CI) با خودکارسازی کل فرآیند انتشار نرم افزار، از ساخت و آزمایش تا استقرار، بنا شده.
رابطه CD و CI چجوریه و چه فایده ای داره؟
با خودکارسازی CD کل انتشار نرم افزار بر اساس CI ساخته میشه. این رویکرد ساده مداخله دستی رو به حداقل میرسونه و خطاها رو کاهش میده. همچنین امکان استقرار مکرر و قابل اعتماد رو فراهم می کنه. CD با ترویج بازخورد سریع و تمرکز بر قابلیت استقرار، به تیم ها اجازه میده تا با سرعتی سریع نوآوری کنن.
با پذیرش این شیوهها، شرکت ها و توسعه دهنده ها میتونن باگ یا خطاهای احتمالی رو از بین ببرن و همکاری رو تقویت کنن، تا یک جریان مداوم از توسعه تا تولید رو برقرار کنن. این به یک مزیت رقابتی قابل توجه تبدیل میشه، و به تیم ها اجازه میده تا تجربیات نرم افزاری رو سریعتر از همیشه به کاربرای خودشون ارائه بدن🔥
#ci #cd
@CodeModule
قبل از اینکه راجب این مفاهیم و ارتباطشون باهم حرف بزنیم، باید اول مفهوم و معنی هرکدوم رو بدونیم.
ادغام مداوم یا continues Integration (CI) چیه؟
به صورت کلی CI شبیه بررسی نرم افزاره، یعنی پس از هر تغییر، توسعه دهندگان کد رو ادغام میکنن و یک سیستم خودکار (مثل github action) فورا اونو تستش میکنه.
این باعث میشه اشکالات شناسایی بشن و کد رو ثابت و با کیفیت نگه داره. هدف نهایی یکپارچه سازی پیوسته (CI) ساخت یک محیط توسعه هست که در اون، خطاها در سریع ترین زمان ممکن شناسایی و رسیدگی بشن.
و اما تحویل مدام یا (CD)continuous delivery چیه ؟
یک روش توسعه نرمافزاره که انتشار مکرر و قابل اعتماد رو تقویت میکنه، و بر اساس یکپارچگی پیوسته (CI) با خودکارسازی کل فرآیند انتشار نرم افزار، از ساخت و آزمایش تا استقرار، بنا شده.
رابطه CD و CI چجوریه و چه فایده ای داره؟
با خودکارسازی CD کل انتشار نرم افزار بر اساس CI ساخته میشه. این رویکرد ساده مداخله دستی رو به حداقل میرسونه و خطاها رو کاهش میده. همچنین امکان استقرار مکرر و قابل اعتماد رو فراهم می کنه. CD با ترویج بازخورد سریع و تمرکز بر قابلیت استقرار، به تیم ها اجازه میده تا با سرعتی سریع نوآوری کنن.
با پذیرش این شیوهها، شرکت ها و توسعه دهنده ها میتونن باگ یا خطاهای احتمالی رو از بین ببرن و همکاری رو تقویت کنن، تا یک جریان مداوم از توسعه تا تولید رو برقرار کنن. این به یک مزیت رقابتی قابل توجه تبدیل میشه، و به تیم ها اجازه میده تا تجربیات نرم افزاری رو سریعتر از همیشه به کاربرای خودشون ارائه بدن
#ci #cd
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡3
Please open Telegram to view this post
VIEW IN TELEGRAM
💔11👌3
خروجی کد بالا؟ 🤔
Anonymous Quiz
13%
Null
30%
21
43%
Reference Error
15%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم 💡
🔥8👌5
در واقع Next UI یک کتابخانه UI (رابط کاربری) برای React هست که توسط تیم Next.js توسعه داده شده. این کتابخانه ابزارها و کامپوننتهایی رو فراهم میکنه که برای ساخت رابط کاربریهای وب استفاده میشه.
این کتابخانه نسبت به رقبای خودش، از سرعت و بهینهسازی SEO بهتری برخورداره، اما در عین حال مستندات و پشتیبانی کمتری نسبت به برخی از کتابخانههای دیگه داره.
استفاده از Next UI بستگی به نیازها و موارد استفاده خاص شما داره. در صورتی که به سرعت و بهینهسازی برای SEO نیاز دارید، Next UI گزینه خوبیه، اما در صورت نیاز به پشتیبانی و مستندات جامعتر، ممکنه گزینههای دیگه مناسبتر باشن
برای یادگیری این کتابخانه میتونید به داکیومنتش مراجعه کنید
Document
#ui #library #nextui
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥4
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔵 Link
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11⚡3
پروتکل (RESP) چیه؟ 🤔
سریال سازی پروتکل یا REdis Serialization Protocol یا RESP، یک پروتکل ساده و در عین حال قدرتمند برای ارتباط با کلاینت و سرور ردیس هست.
یکی از مزیت های قابل توجه این پروتکل، پشتیبانی اون از انواع داده ها هست. همچنین همیشه اولین کاراکتر پروتوکل، نوع داده اونه و هر کدوم از داده ها، کاراکتر خاص خودشونو دارن تا برای ردیس قابل فهم باشه، مثال⬇️
- + : رشته های ساده
- - : خطا ها
- : : عدد صحیح
- $ : رشته های زیاد (برای ذخیره داده های باینری)
- * : آرایه ها
اما وقتی اولین بایت نوع داده هست، پس در انتهای اون چه کاراکتری قرار میگیره؟
در انتهایی خط RESP برای جداسازی دستورات از <LF> و <CR> استفاده میشه، که به این صورت ترجمه میشن :
- ترجمه <CR> : با کاراکتر "r\" نشون داده میشه. این کارکتر بدون این که به خط بعدی بره، به ابتدای خط میره.
- ترجمه <LF> : با کاراکتر "n\" نشون داده میشه و به خط بعدی میره.
به صورت کلی RESP توسط کتابخونه های خود redis مدیریت میشه.
یک نمونه از RESP به این صورته:
حالا بیاید کد بالا رو ترجمه کنیم!
نکته : تمام کارکتر های "r\n\" به اول خط بعدی میره.
- 2
-
- فرمان SET : یک مقدار رو به صورت "key-value" تنظیم میکنه
-
- رشته
-
- رشته myvalue: مقداری که در کلید ما ست میشه.
- در نهایت کاراکتر های \r\n: به درخواست پایان میده.
تموم این دستورات و کاراکتر ها در ردیس به این صورت نمایش داده میشه :
به صورت کلی این کار توسط پکیج و کتابخونه های خود ردیس انجام میشه، ولی اینکه بدونیم در پشت صحنه چه اتفاقی میفته، باعث میشه دیدمون نسبت بهش تغییر پیدا کنه. مثلا برای اینکه بدونید درخواست SET رو چجوری میتونیم پیاده سازی کنیم، میتونید این نمونه کد هارو در زبان های مختلف ببینید⚡️
#redis
@CodeModule
سریال سازی پروتکل یا REdis Serialization Protocol یا RESP، یک پروتکل ساده و در عین حال قدرتمند برای ارتباط با کلاینت و سرور ردیس هست.
یکی از مزیت های قابل توجه این پروتکل، پشتیبانی اون از انواع داده ها هست. همچنین همیشه اولین کاراکتر پروتوکل، نوع داده اونه و هر کدوم از داده ها، کاراکتر خاص خودشونو دارن تا برای ردیس قابل فهم باشه، مثال
- + : رشته های ساده
- - : خطا ها
- : : عدد صحیح
- $ : رشته های زیاد (برای ذخیره داده های باینری)
- * : آرایه ها
اما وقتی اولین بایت نوع داده هست، پس در انتهای اون چه کاراکتری قرار میگیره؟
در انتهایی خط RESP برای جداسازی دستورات از <LF> و <CR> استفاده میشه، که به این صورت ترجمه میشن :
- ترجمه <CR> : با کاراکتر "r\" نشون داده میشه. این کارکتر بدون این که به خط بعدی بره، به ابتدای خط میره.
- ترجمه <LF> : با کاراکتر "n\" نشون داده میشه و به خط بعدی میره.
به صورت کلی RESP توسط کتابخونه های خود redis مدیریت میشه.
یک نمونه از RESP به این صورته:
*2\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n
حالا بیاید کد بالا رو ترجمه کنیم!
نکته : تمام کارکتر های "r\n\" به اول خط بعدی میره.
- 2
*
: آرایه ای رو با دو عنصر (فرمان(command) و آرگومان(argument)) نشون میده.-
$3
: طول اولین رشته زیاد رو نشون میده (فرمان)- فرمان SET : یک مقدار رو به صورت "key-value" تنظیم میکنه
-
$5
: طوله کلید رو نشون میده (key)- رشته
mykey
: کلیدیه که باید مقداری درونش تنظیم بشه.-
$7
: طوله مقدار رو نشون میده (value)- رشته myvalue: مقداری که در کلید ما ست میشه.
- در نهایت کاراکتر های \r\n: به درخواست پایان میده.
تموم این دستورات و کاراکتر ها در ردیس به این صورت نمایش داده میشه :
SET mykey myvalue
به صورت کلی این کار توسط پکیج و کتابخونه های خود ردیس انجام میشه، ولی اینکه بدونیم در پشت صحنه چه اتفاقی میفته، باعث میشه دیدمون نسبت بهش تغییر پیدا کنه. مثلا برای اینکه بدونید درخواست SET رو چجوری میتونیم پیاده سازی کنیم، میتونید این نمونه کد هارو در زبان های مختلف ببینید
#redis
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡2
راه حل عاقلانه اینه که تا جایی که میتونید به گذاشتن semicolon در پایان کد هاتون عادت کنید، تا وقتی که با یک زبان دیگه کد میزنید، دستتون عادت کرده باشه و هم از به وجود اومدن ارور های عجیب در کدهاتون، جلوگیری کنید
#js #asi
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9🔥4
ترجمه برخی از جملات کارفرماها 😔
🟢 ما اینجا یه خانوادهایم
🔴 ترجمه: یه کاری میکنیم قشنگ حس کنی بین اعضای خانوادتی. یکی کولرو خاموش میکنه، یکی سرکوفت میزنه بهت، یکی میگه چایی بیار، تازه ممکنه لباساتم بقیه بپوشن. خلاصه غریبی نکن.
🟢 واست رزومه میشه
🔴 ترجمه: جوری ازت کار بکشیم، جوری ازت کار بکشیم که هرجا بگی فلان جا کار کردم، درجا استخدام بشی :)
🟢 حقوق توافقی
🔴 ترجمه: ما یه عددی میگیم، تو باید موافقت کنی وگرنه ناراحت میشیم. تو که دوست نداری ما ناراحت بشیم عزیزم؟ :)
🟢 حقوق پایه وزارت کار
🔴 ترجمه: مهم نیست چقدر تخصص داری و چند سال سابقه کار. ما اینجا به قانون پایبندیم، هرچی وزارت کار بگه! :)
🟢 محیط پویا و جوان
🔴 ترجمه: اینجا یه مشت بچه دور هم جمع شدن که چون کم سن و سالن و توقعشون پایینه استخدامشون کردیم. محیط به قدری پویاست که ممکنه همکارای امروزتو فردا دیگه نبینی!!
🟢 کار در شرکت معتبر و مشهور
🔴 ترجمه: موقع استخدام، بزرگترین شرکت خاورمیانه و حومهایم؛ ولی موقع تسویه، یه زیر پله اجاره کردیم و محصولاتمون رو میذاریم داخل پلاستیک مشکی میدیم دست مشتری :)
🟢 دارای اتاق فکر و بازی
🔴 ترجمه: یه فوتبال دستی رنگ و رو رفته داریم که تار عنکبوت بسته چون هیچکس حق نداره ازش استفاده کنه. مهد کودک که نیومدی، اینجا رو مثل اردوگاه کار اجباری آلمان نازی ببین
🟢 باهاتون تماس میگیریم
🔴 مصاحبه رو رد شدی و هیچوقت قرار نیست تماسی باهات گرفته شه (90 درصد مواقع)
البته جسارت به هیچ شرکت و کارفرمایی نمیکنم، اما اکثریت همینه داستانشون :))
#fun
@CodeModule
البته جسارت به هیچ شرکت و کارفرمایی نمیکنم، اما اکثریت همینه داستانشون :))
#fun
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23👌4