#nodejs #interview
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👌2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18⚡1
طرحهای فیگما واسه توسعه و کدنویسی (پارت اول)🎨
🔵 طرح فیگما سایت املاکی (دارای تعداد صفحات بالا + رسپانسیو)
🔵 طرح فیگما سایت پوشاکی (دارای تعداد صفحات بالا + رسپانسیو)
🔵 طرح فیگما سایت آشپزی
🔵 طرح فیگما سایت شخصی
🔵 طرح فیگما سایت موسیقی (سلیقه ادمین)
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13⚡2
بافر چیه و چه کاربردی در Node.js داره؟🚀
تا الان حتما اسم بافر رو شنیدید و شاید در مرحله اول، کمی براتون گُنگ به نظر رسیده باشه. تو این پست به بررسی تخصصی بافر میپردازیم، پس با ما همراه باشید.
قبل از بررسی بافر، باید راجب بایت و بیت اطلاعاتی داشته باشیم.
بیت: ابتدایی ترین سطح داده ها که به صورت 0 و 1 نمایش داده میشن.
بایت: مجموعهی هشت بیت متوالی بایت نامیده میشود، که ظاهرشون بهطور مثال 01010101 میباشد.
اما بافرها چی هستن؟🤔
بافرها نظارت کنندههای موقت بر دادهها هستند. آنها دادهها رو نگهداری و دسترسی بهشون رو فراهم میکنن، بدون اینکه به دادهها آسیبی وارد شود ( شبیه یک نگهبان)
یکی از مزیت های قابل توجه بافرها، اینه که هرگونه اختلاف جریان داده ها رو متعادل میکنه و باعث میشه فرایند های کند مانع فرایند های سریع تر نشود.
نحوه استفاده از بافرها در Node.js🤟
در Node.js، از بافرها زمانی استفاده میکنیم که نیاز به کار با فایلهای باینری، جریانهای TCP و دسترسی سریع و مستقیم به دادههای بایتی داشته باشیم. همچنین برای کار با رشتههای باینری یا دادههای باینری هم، از بافرها در Node.js استفاده میشود.
برای درک بهتر موضوع، میتونیم به سناریو زیر اشاره کنیم⬇️
زمانی که میخوایم یک فیلم یا ویدیو رو از سرویس های آنلاین مثل یوتیوب مشاهده کنیم، حتما براتون سوال شده که چه جوری بدون اینکه کل فیلم دانلود بشه، میتونیم شروع به دیدن ویدیو کنیم. این وظیفه بافرها هست و به طور کلی به این صورته:
ابتدا داده های درحال دانلود در یک بافر ذخیره میشن و این بافر، مثل یک وسیله نگه دارنده عمل میکنه که به نوعی شبیه به یک اتاقه، و زمانی که داده ها به قدر کافی در بافر ذخیره شده باشه، ویدیو شروع به پخش میشه و در حین تماشا داده های بیشتری به بافر اضافه میشود. این فرایند امکان پخش محتوا رو بدون نیاز به انتظار برای دانلود کامل، محیا میکنه.
در نهایت میتونیم نتیجه بگیریم که بافرها در Node.js، نقش مهمی در کنترل و مدیریت دادههای باینری و بایتی دارن، و برای انجام عملیات مرتبط مانند آپلود فایل، خواندن دادهها و کلی کاربرد دیگه، قابل استفاده هستند.
#buffer #nodejs
@CodeModule
تا الان حتما اسم بافر رو شنیدید و شاید در مرحله اول، کمی براتون گُنگ به نظر رسیده باشه. تو این پست به بررسی تخصصی بافر میپردازیم، پس با ما همراه باشید.
قبل از بررسی بافر، باید راجب بایت و بیت اطلاعاتی داشته باشیم.
بیت: ابتدایی ترین سطح داده ها که به صورت 0 و 1 نمایش داده میشن.
بایت: مجموعهی هشت بیت متوالی بایت نامیده میشود، که ظاهرشون بهطور مثال 01010101 میباشد.
اما بافرها چی هستن؟
بافرها نظارت کنندههای موقت بر دادهها هستند. آنها دادهها رو نگهداری و دسترسی بهشون رو فراهم میکنن، بدون اینکه به دادهها آسیبی وارد شود ( شبیه یک نگهبان)
یکی از مزیت های قابل توجه بافرها، اینه که هرگونه اختلاف جریان داده ها رو متعادل میکنه و باعث میشه فرایند های کند مانع فرایند های سریع تر نشود.
نحوه استفاده از بافرها در Node.js
در Node.js، از بافرها زمانی استفاده میکنیم که نیاز به کار با فایلهای باینری، جریانهای TCP و دسترسی سریع و مستقیم به دادههای بایتی داشته باشیم. همچنین برای کار با رشتههای باینری یا دادههای باینری هم، از بافرها در Node.js استفاده میشود.
برای درک بهتر موضوع، میتونیم به سناریو زیر اشاره کنیم
زمانی که میخوایم یک فیلم یا ویدیو رو از سرویس های آنلاین مثل یوتیوب مشاهده کنیم، حتما براتون سوال شده که چه جوری بدون اینکه کل فیلم دانلود بشه، میتونیم شروع به دیدن ویدیو کنیم. این وظیفه بافرها هست و به طور کلی به این صورته:
ابتدا داده های درحال دانلود در یک بافر ذخیره میشن و این بافر، مثل یک وسیله نگه دارنده عمل میکنه که به نوعی شبیه به یک اتاقه، و زمانی که داده ها به قدر کافی در بافر ذخیره شده باشه، ویدیو شروع به پخش میشه و در حین تماشا داده های بیشتری به بافر اضافه میشود. این فرایند امکان پخش محتوا رو بدون نیاز به انتظار برای دانلود کامل، محیا میکنه.
در نهایت میتونیم نتیجه بگیریم که بافرها در Node.js، نقش مهمی در کنترل و مدیریت دادههای باینری و بایتی دارن، و برای انجام عملیات مرتبط مانند آپلود فایل، خواندن دادهها و کلی کاربرد دیگه، قابل استفاده هستند.
#buffer #nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡2
Good Night 🌑 ✨
اگه میخوای پرواز کنی؛ باید همه بار های سنگینی که تو رو به سمت پایین میکشن؛ رها کنی.
@CodeModule
اگه میخوای پرواز کنی؛ باید همه بار های سنگینی که تو رو به سمت پایین میکشن؛ رها کنی.
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌12❤🔥4🔥3😁1
در واقع Shadcn یک مجموعه ابزار برای ساخت رابطهای کاربری (UI) هست که پرقدرت و نسبتا نوظهوره، و با ارائه کامپوننتها و ابزارهای مدرن، دولوپرا و توسعهدهنده هارو با تجربهای بینظیر آشنا میکنه. این کتابخانه در واقع مجموعه ای از کامپوننت های reusable هست که با Radix و Tailwind ساخته شده.
این ابزار با تمرکز بر سادگی و انعطاف پذیری، کامپوننت های گستردهای برای طراحی وبسایتها و پروژه ها ارائه میده.
مزایای Shadcn نسبت به سایر رقبا از جمله Bootstrap و Materialize، سبکی، سرعت، انعطاف پذیری و ... هست. همچنین، بهبود پایداری و امنیتی و ایجاد قابلیتهای مدرن، این ابزار رو از سایرین رقباش متمایز میکنه.
در کل Shadcn UI ابزار یا کتابخانه ای هست که دولوپرا رو در ساخت رابطهای کاربری زیبا، کارآمد و یکپارچه یاری میکنه. با استفاده از Shadcn میتونیم فرآیند توسعه رو سریع تر، کیفیت و یکنواختی UI رو افزایش و تجربه کاربری بهتری ارائه بدیم.
برای یادگیری و اطلاعات بیشتر راجب این کتابخانه، میتونید به داکیومنتش مراجعه کنید
Document
#ui #shadcn
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8⚡2😁1
خروجی کد بالا؟ 🤔
Anonymous Quiz
19%
[{ "name": null }]
35%
[{ "name": "CodeModule" }]
27%
[ ]
18%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
🔥13👌3❤🔥1😁1
همه چیز راجب Container ها ⚡️
امروزه در دنیای نرم افزار، Container ها نقش مهمی پیدا کردن و داخل تکنولوژی های بزرگی مثل Docker و kubernetes که دربارشون مفصل صحبت کردیم، استفاده میشن.
🗂 اما کانتینرها دقیقا چی هستند؟
در واقع Containerization یک روش استقرار نرم افزاره که کد برنامه رو با تمام وابستگی های اون (کتابخانه ها و فایل های کانفیگ) مورد نیاز برای اجرا، در یک واحد مستقل به اسم Container بسته بندی میکنه. پس کانتینرها محل نگهداری دپندنسیها و کانفیگیوریشن فایلها هستن.
🤔 کانتینرها چجوری کار میکنن؟
1️⃣ مرحله اول : ساخت تصویر
ما به عنوان یک دولوپر کد هارو مینویسیم و تمام وابستگی های مورد نیاز رو مشخص میکنیم. با استفاده از ابزار هایی مثل Docker یک تصویر درست میکنیم که این تصویر شامل تمام چیز هایی هست که برای اجرای برنامه در هر محیطی نیازه، که از استاندارد (OCI) Open Container Initiative پیروی میکنه.
💙 این تصویر از چند لایه تشکیل میشه:
◀️ لایه پایه : معمولا شامل یک سیستم عامل مینیمال مثل لینوکس هست.
◀️ لایه های وابستگی : این لایه حاوی کتابخونه های از پیش نصب شده و اجزای مورد نیاز برنامه هست.
◀️ لایه برنامه : حاوی کد های برنامه و هر فایل پیکربندی اضافه مخصوص برنامه هست.
2️⃣ مرحله دوم : اجرای کانتینر
زمانی که یک تصویر رو با استفاده از موتور Docker اجرا میکنید، یک کانتینر در حال اجرا از اون تصویر ایجاد میشه.
موتور Docker از هسته سیستم عامل میزبان برای عملکردهای اصلی استفاده میکنه، اما فرایندها و منابع کانتینر رو ایزوله میکنه.
این امر باعث میشه یک محیط اجرای سبک و کارآمد برای اجرای برنامه فراهم میشه.
⚠️ نکات مهمی که بهتره بدونید:
🔵 هر کانتینر در یک فضای کاربری جداگانه اجرا میشه که از تداخل بین برنامهها یا وابستگیها جلوگیری میکنه.
🔵 برای مدیریت تعداد زیادی از کانتینرها، از پلتفرمهای ارکستراسیون کانتینری مثل Kubernetes استفاده میشه.
🔵 بسیاری از پلتفرمهای کانتینری مثل Docker، از رویکرد "امن به صورت پیشفرض" پشتیبانی میکنن، به این معنا که ویژگیهای امنیتی به طور پیشفرض فعال هستن و خطر پیکربندی نادرست رو کاهش میدن.
اما یکسری نقاط ضعف هم وجود داره :
🔢 برخی از منابع هسته سیستم عامل اصلی یا فریمورک های مشترک ممکن توسط چند کانتینر قابل دسترسی باشن، این میتونه آسیب پذیری احتمالی در صورت عدم مدیریت رو ایجاد کنه.
🔢 یک نقض امنیتی در سیستم عامل میزبان میتونه همه کانتینر های درحال اجرا رو به خطر بندازه.
به صورت کلی اگر به دنبال افزایش کارایی، مقیاس پذیری و امنیت در پروژه ها هستید، بهتره از داکر و کانتینرها استفاده کنید🔥
#docker #containerization #container #kubernetes
@CodeModule
امروزه در دنیای نرم افزار، Container ها نقش مهمی پیدا کردن و داخل تکنولوژی های بزرگی مثل Docker و kubernetes که دربارشون مفصل صحبت کردیم، استفاده میشن.
🗂 اما کانتینرها دقیقا چی هستند؟
در واقع Containerization یک روش استقرار نرم افزاره که کد برنامه رو با تمام وابستگی های اون (کتابخانه ها و فایل های کانفیگ) مورد نیاز برای اجرا، در یک واحد مستقل به اسم Container بسته بندی میکنه. پس کانتینرها محل نگهداری دپندنسیها و کانفیگیوریشن فایلها هستن.
ما به عنوان یک دولوپر کد هارو مینویسیم و تمام وابستگی های مورد نیاز رو مشخص میکنیم. با استفاده از ابزار هایی مثل Docker یک تصویر درست میکنیم که این تصویر شامل تمام چیز هایی هست که برای اجرای برنامه در هر محیطی نیازه، که از استاندارد (OCI) Open Container Initiative پیروی میکنه.
زمانی که یک تصویر رو با استفاده از موتور Docker اجرا میکنید، یک کانتینر در حال اجرا از اون تصویر ایجاد میشه.
موتور Docker از هسته سیستم عامل میزبان برای عملکردهای اصلی استفاده میکنه، اما فرایندها و منابع کانتینر رو ایزوله میکنه.
این امر باعث میشه یک محیط اجرای سبک و کارآمد برای اجرای برنامه فراهم میشه.
⚠️ نکات مهمی که بهتره بدونید:
اما یکسری نقاط ضعف هم وجود داره :
به صورت کلی اگر به دنبال افزایش کارایی، مقیاس پذیری و امنیت در پروژه ها هستید، بهتره از داکر و کانتینرها استفاده کنید
#docker #containerization #container #kubernetes
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👌5⚡2😁1
۵ پستی که پیشنهاد میکنم از دست ندید (پارت دوم) 💀
🔵 اهمیت مهارت سرچ در برنامه نویسی
🔵 اصول نوشتن کامیت حرفهای در گیتهاب
🔵 تبدیل ui سایت مد نظر به فایل فیگما
🔵 مفهوم TDD در برنامه نویسی
🔵 ۵ نکته جهت نوشتن کد تمیز و خوانا
🔴 پارت قبل رو یادتون نره :))
#top
@CodeModule
#top
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5⚡3👌3
تابع ()calc برای انجام عملیات ریاضی ساده و پیشرفته، روی ابعاد و ویژگیهای یک واحد طراحی وب استفاده میشه. این تابع به طراحان وب امکان میده تا مقادیر پیکسلی، درصدی و دیگر واحدهای مورد استفاده در CSS رو با بقیه ترکیب کنن و به شکل دقیقتر کنترل کنن.
این تابع بخصوص برای انجام عملیات ریاضی بر روی مقادیر نسبی (مثل em, rem, vw, %) بسیار کاربردی و مفیده. در مثال زیر عرض یک عنصر نسبت به عرض عنصر نگهدارنده اون (والدش) محاسبه شده :
.element {
margin-right: calc(10% + 5px);
}
اما برای ضرب و تقسیم اگر فاصله وجود نداشته باشه، مشکلی به وجود نمیاد و محاسبه به درستی انجام میشه.
margin-right: calc(10% -5px); /* خطا */
margin-right: calc(10% +5px); /* خطا */
margin-right: calc(10%/5px); /* صحیح */
margin-right: calc(10%*5px); /* صحیح */
با استفاده از این تابع، میتونید دقیق تر و حساب شده تر مقادیر پراپرتی هاتون رو حساب کنید. نمونه مثال بیشتر و سایر اطلاعات رو میتونید تو مقاله زیر مطالعه کنید
#css #calc
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡4👌3😁2❤🔥1
متغیر محیطی چیه و کاربردش در Node.js 🤟
متغیرهای محیطی (Environment Variables) مقادیر پویایی با نامهای مشخص هستن، که در خارج از برنامه تنظیم میشن و به طور کلی برای پیکربندی برنامه در محیطهای مختلف (مانند توسعه، تولید و تست) یا ذخیره اطلاعات حساس که نباید به صورت پابلیک در کد ذخیره بشن، استفاده میشه.
نحوه تنظیم متغیرهای محیطی⬇️
روشهای مختلفی برای تنظیم متغیرهای محیطی در Node.js وجود داره.
🔵 تنظیم از طریق ترمینال :
🔵 تنظیم در فایل
ابتدا یک فایل
و بعد میتونیم با استفاده از پکیجی مثل
دسترسی به متغیرهای محیطی در Node.js
در nodejs ما با استفاده از process.env که به صورت سراسری یا گلوبال در دسترس هست، میتونیم به متغیر های محیطی دسترسی داشته باشیم، و برای نام گذاری متغیر های محیطی باید نام متغیرها رو با حروف بزرگ و با underscore جدا کنیم. ( چون این یک قانون و استاندارده)
🔵 از متغير های محیطی برای تنظیم مقادیر مختلف مانند آدرس سرور دیتابیس، پورت برنامه، و اطلاعات حساس مثل رمز عبور دیتابیس و غیره استفاده میشه. در حالت معمولی، نباید این اطلاعات رو در کد ها ذخیره کنیم.
🔵 برای راحتی و دسترسی مطمئن تر به متغیر های محیطی، میتونیم از پکیج dotenv استفاده کنیم.
به صورت کلی با استفاده از متغیر های محیطی، میتونیم کد های nodejs خودمون رو تمیز تر و امن تر نگه داریم.
#env #environment_variables
@CodeModule
متغیرهای محیطی (Environment Variables) مقادیر پویایی با نامهای مشخص هستن، که در خارج از برنامه تنظیم میشن و به طور کلی برای پیکربندی برنامه در محیطهای مختلف (مانند توسعه، تولید و تست) یا ذخیره اطلاعات حساس که نباید به صورت پابلیک در کد ذخیره بشن، استفاده میشه.
نحوه تنظیم متغیرهای محیطی
روشهای مختلفی برای تنظیم متغیرهای محیطی در Node.js وجود داره.
export NODE_ENV=production
node app.js
.env
:ابتدا یک فایل
.env
در پروژه میسازیم و متغیرهای محیطی رو به صورت KEY=VALUE
تعریف میکنیم:NODE_ENV=production
DB_HOST=localhost
DB_PASSWORD=secret123
و بعد میتونیم با استفاده از پکیجی مثل
dotenv
این فایل رو در برنامه خودمون بارگیری کنیم:const dotenv = require('dotenv');
dotenv.config();
console.log(process.env.NODE_ENV); // Output: production
دسترسی به متغیرهای محیطی در Node.js
در nodejs ما با استفاده از process.env که به صورت سراسری یا گلوبال در دسترس هست، میتونیم به متغیر های محیطی دسترسی داشته باشیم، و برای نام گذاری متغیر های محیطی باید نام متغیرها رو با حروف بزرگ و با underscore جدا کنیم. ( چون این یک قانون و استاندارده)
const hostname = process.env.DB_HOST;
console.log(hostname); // Output: localhost
به صورت کلی با استفاده از متغیر های محیطی، میتونیم کد های nodejs خودمون رو تمیز تر و امن تر نگه داریم.
#env #environment_variables
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥4😁2
توی این پست با هم یک راهکار یاد میگیریم که توی سیستم عامل لینوکس، به جای اینکه هی یک دستور تکراری و طولانی رو بارها و بارها بنویسیم و وقتمون رو تلف کنیم، براش یک alias بنویسیم تا با کامند کوتاه و دلخواهمون اون دستور رو اجرا کنیم
داخل سیستم عامل های لینوکسی یک فایل وجود داره به اسم bashrc، که داخل این فایل ما میتونیم یسری کانفیگ برای shell بنویسیم، مثل فانکشن های کاستوم شده و یا alias ها و ... که بتونیم، اونارو داخل shell اجرا کنیم.
# syntax :
# nano <.bashrc dir>
nano ~/.bachrc
برای تعریف alias باید از خود کلمه کلیدی alias استفاده کنید و اسم شناسه دلخواهتون رو بنویسید، و برای مقدار هم کامند مورد نظر رو قرار بدید، طبق سینتکس زیر (برای مثال من کامند shutdown رو تست میکنم) :
# alias syntax :
# alias <keyword>='<command>'
alias shut='sudo shutdown -P now'
بعد از اینکه alias هاتون رو تعریف کردید، فایل رو سیو میکنید و خارج میشید. حالا اگه دستورتون رو در shell وارد کنید کامند رو پیدا نمیکنه، چون برای اینکه بتونید shell configuration government رو آپدیت کنید تا alias ها یا سایر کانفیگ ها قابل استفاده بشن، باید دستور زیر رو وارد کنید:
# syntax :
# source <.bashrc dir>
source ~/.bashrc
#linux #shell
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡5🔥4
تا حالا اسم فریمورک Gatsby به گوشتون خورده؟ 🤔
در واقع Gatsby یک فریمورک منبع باز برای توسعه وبسایتهای استاتیکه که بر پایه React و GraphQL ساخته شده. این ابزار برای ساخت سایت هایی با صفحه های استاتیک، به خاطر سرعت لود بالاش فوق العادست.
برخی از ویژگی های Gatsby⬇️
🔵 پشتیبانی از Gatsby :GraphQL از GraphQL برای مدیریت دادهها استفاده میکنه که به دولوپرا این اجازه رو میده، تا دادهها رو به طور مستقیم از منابع مختلف (مانند CMS ها، فایلهای Markdown، API ها و غیره) فراخوانی کنن.
🔵 پشتیبانی از پلاگینها: Gatsby دارای اکوسیستم وسیعی از پلاگینهاست که میتونن برای افزودن قابلیتهای مختلف مانند SEO، تصاویر بهینهسازی شده، آنالیتیکس و موارد دیگر استفاده بشن.
🔵 مستندات قوی و جامعه فعال: Gatsby دارای مستندات جامع و کامیونیتی فعاله که به دولوپرا کمک میکنه، تا به سرعت یاد بگیرند و مشکلات خودشون رو حل کنن.
🔵 پشتیبانی از Gatsby :PWA به دولوپرا این امکان رو میده تا به راحتی وبسایتهای خودشون رو به PWA تبدیل کنن، که باعث افزایش قابلیتهای آفلاین و تجربه کاربری بهتر میشه.
🔵 بهینهسازی عملکرد: Gatsby به طور پیشفرض تکنیکهای مختلف بهینهسازی عملکرد، از جمله تقسیم کد (Code Splitting)، فشردهسازی تصویر (Image Optimization) و لود تنبل (Lazy Loading) رو پیادهسازی میکنه.
به طور خلاصه، Gatsby یک فریمورک قوی و منعطف برای توسعه وبسایتهای سریع، امن، و بهینه هست که با استفاده از React و GraphQL، تجربه دولوپرا و کاربران رو بهبود میبخشه. برای اطلاعات بیشتر میتونید به داکیومنت این فریمورک مراجعه کنید.
Document🌐
#gatsby #react
@CodeModule
در واقع Gatsby یک فریمورک منبع باز برای توسعه وبسایتهای استاتیکه که بر پایه React و GraphQL ساخته شده. این ابزار برای ساخت سایت هایی با صفحه های استاتیک، به خاطر سرعت لود بالاش فوق العادست.
برخی از ویژگی های Gatsby
به طور خلاصه، Gatsby یک فریمورک قوی و منعطف برای توسعه وبسایتهای سریع، امن، و بهینه هست که با استفاده از React و GraphQL، تجربه دولوپرا و کاربران رو بهبود میبخشه. برای اطلاعات بیشتر میتونید به داکیومنت این فریمورک مراجعه کنید.
Document
#gatsby #react
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥4
خروجی کد بالا چیه؟ 🤔
Anonymous Quiz
16%
Null
34%
Undefined
20%
1
14%
Error
16%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
🔥11⚡4❤🔥2
ویدیو مد نظرتو با هوش مصنوعی ترجمه کن! 😎
توی این پست میخوام با ابزاری به اسم synclabs آشناتون کنم که به شما اجازه میده، تا هر ویدیو ای که دوست داشتید رو از هر جایی (یوتیوب، مقالات، وبلاگ ها و ...) رو به هر زبانی که میخواید ترجمه کنید.
دیگه نیاز نیست بخاطر بلد نبودن زبان های خارجه، منابعتون رو محدود کنید🏖️
🔵 Website
#ai #tools
@CodeModule
توی این پست میخوام با ابزاری به اسم synclabs آشناتون کنم که به شما اجازه میده، تا هر ویدیو ای که دوست داشتید رو از هر جایی (یوتیوب، مقالات، وبلاگ ها و ...) رو به هر زبانی که میخواید ترجمه کنید.
دیگه نیاز نیست بخاطر بلد نبودن زبان های خارجه، منابعتون رو محدود کنید
#ai #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👌3
الگو طراحی سازنده چیه؟ 🧐
الگو طراحی سازنده یا به عبارت دیگه Builder Design pattern یک الگو Creational و همچنین جزو 23 الگو مهم GoF هست.
به صورت کلی یک الگو طراحی نرم افزاره که برای ساخت اشیاء پیچیده به صورت گام به گام استفاده میشه. همین امر باعثه ترویج سازماندهی بهتر کد، بهبود خوانایی و افزایش انعطاف پذیری در ساخت شئ میشه.
بیاید یک مثال بزنیم!
فکر کنید قرار یک کلاس House بسازیم که این کلاس، یک شبیه ساز از فرایند ساخت خونه هست و قراره در بیشتر موارد ازش استفاده کنیم.
به صورت بیسیک و پایه باید خونه چهاردیوار، یک دَر، یک جفت پنجره و یک سقف داشته باشه. اما اگه یکی مثلا بخواد برای خونه خودش حیاط خلوت، بالکن یا یک طبقه جدید اضافه کنه چی؟
احتملا ساده ترین راه حل گسترش کلاس با پارامتر های زیاده، مثلا :
اما در بیشتر موارد پارامتر ها استفاده نمیشن و هر زمان از کلاس House استفاده کنیم کد رو کثیف میکنه.
اینجاست که الگو Builder به کمکمون میاد!
الگو بیلدر میگه فراخوانی متد هارو از constructor به متد build منتقل کنیم، به این صورت :
اینجوری دیگ لازم نیست از پارامتر های زیادی
استفاده کنیم. برای هر خونه متد هارو صدا میزنیم و در آخر با صدا زدن متد Build، خونه ساخته میشه
چه زمانی از این الگو استفاده کنیم؟
🔢 ساخت یک شی پیچیده با تعداد پارامتر های بالا.
🔢 هر زمان نیاز به ساخت یک شئ به صورت گام به گام داشتیم.
چه زمانی از این الگو استفاده نکنیم؟
🔵 برای اشیایی با تنها چند پارامتر و فرایند ساخت ساده، استفاده از الگو سازنده توصیه نمیشه.
🔵 اگه برای شما سرعت در اولویت قرار داره، مراحل اضافی مثل (فراخوانی متد ها) میتونه بر عملکرد تاثیر بزاره و در صورت وجود پترن یا کد بهتر، باید از اون استفاده کنیم.
🔵 اگه کلاس Builder با constructor ارتباط داشته باشه، میتونه انعطاف پذیری و نگهداری کد رو کاهش بده که برای نگهداری بهتر از loser coupling استفاد میکنیم.
به عنوان مثال در جاوا اسکریپت میشه به این شکل این الگو رو پیاده سازی کرد.
به صورت کلی استفاده از الگو سازنده بستگی به شرایط پروژه داره، و ممکنه در یک پروژه حتی چندین بار ازش استفاده بشه. برای اطلاعات و مثال های بیشتر، میتونید این مقاله رو مطالعه کنید.
#design_pattern #builder
@CodeModule
الگو طراحی سازنده یا به عبارت دیگه Builder Design pattern یک الگو Creational و همچنین جزو 23 الگو مهم GoF هست.
به صورت کلی یک الگو طراحی نرم افزاره که برای ساخت اشیاء پیچیده به صورت گام به گام استفاده میشه. همین امر باعثه ترویج سازماندهی بهتر کد، بهبود خوانایی و افزایش انعطاف پذیری در ساخت شئ میشه.
بیاید یک مثال بزنیم!
فکر کنید قرار یک کلاس House بسازیم که این کلاس، یک شبیه ساز از فرایند ساخت خونه هست و قراره در بیشتر موارد ازش استفاده کنیم.
به صورت بیسیک و پایه باید خونه چهاردیوار، یک دَر، یک جفت پنجره و یک سقف داشته باشه. اما اگه یکی مثلا بخواد برای خونه خودش حیاط خلوت، بالکن یا یک طبقه جدید اضافه کنه چی؟
احتملا ساده ترین راه حل گسترش کلاس با پارامتر های زیاده، مثلا :
new House(4،1،true، false......)
اما در بیشتر موارد پارامتر ها استفاده نمیشن و هر زمان از کلاس House استفاده کنیم کد رو کثیف میکنه.
اینجاست که الگو Builder به کمکمون میاد!
الگو بیلدر میگه فراخوانی متد هارو از constructor به متد build منتقل کنیم، به این صورت :
House builder :
BuildWalls()
BuildDoors()
And....
Build() : House
اینجوری دیگ لازم نیست از پارامتر های زیادی
استفاده کنیم. برای هر خونه متد هارو صدا میزنیم و در آخر با صدا زدن متد Build، خونه ساخته میشه
چه زمانی از این الگو استفاده کنیم؟
چه زمانی از این الگو استفاده نکنیم؟
به عنوان مثال در جاوا اسکریپت میشه به این شکل این الگو رو پیاده سازی کرد.
به صورت کلی استفاده از الگو سازنده بستگی به شرایط پروژه داره، و ممکنه در یک پروژه حتی چندین بار ازش استفاده بشه. برای اطلاعات و مثال های بیشتر، میتونید این مقاله رو مطالعه کنید.
#design_pattern #builder
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6⚡2