چارچوب تست منبع باز از اکوسیستم جاوا اسکریپت

تست های واحد در جاوا اسکریپت با Jest


مقاله پایه تست نرم افزار. مفاهیم پایه و آزمون های واحد به عنوان یک کل چارچوب Jest.


انجام پروژه در فریلنس پروژه

Jest یک چارچوب تست منبع باز از اکوسیستم جاوا اسکریپت است. Jest در حال حاضر محبوب‌ترین فریمورک تست امروزی است که توسط شرکت‌های بزرگی مانند فیس‌بوک، Airbnb، توییتر و اسپاتیفای استفاده می‌شود، همچنین دارای پلاگین‌های متعددی است که به راحتی با تمام فریم‌ورک‌های مدرن چه در قسمت جلویی و چه در سمت باطن (React، Angular، Vue) یکپارچه می‌شوند. ، گره).


برخی از ویژگی‌های آن پیکربندی آسان، استفاده از عکس‌های فوری کد، و شامل گزارش‌های پوشش است.

تست های واحد


آزمون‌های واحد، آزمایش‌هایی هستند که بر روی کوچک‌ترین واحدهای منفرد نرم‌افزار رایانه‌ای انجام می‌شوند. هدف اصلی آن بررسی عملکرد صحیح این قطعات کوچک در محیط های ایزوله است.


تست های واحد شامل موارد زیر است:


    کارکرد.

    کلاس ها.

    مواد و روش ها.

    در میان قطعات کوچک دیگر.

سفارش طراحی سایت با بهترین طراحان

مفاهیم کلیدی برای آزمایش با Jest


مفاهیم زیر به ما کمک می کند تا اصطلاحات و کلمات رزرو شده را که معمولاً در تمام چارچوب های آزمایشی جاوا اسکریپت استفاده می شود، با تمرکز بر عملکردهایی که Jest برای استفاده از آن استفاده می کند، درک کنیم.


    توضیح دهید: تابعی که به ما کمک می کند بلوک هایی ایجاد کنیم که چندین تست مرتبط را گروه بندی می کنند.

    تست: تابعی که در آن کاسوئیستری آزمایش خواهد شد. با توجه به اینکه تابع تست حاوی نام مستعار به نام آن است که از همان عملکرد استفاده می کند.

    Expect: تابعی که امکان اعتبارسنجی مسابقات را در طول آزمایش فراهم می کند. این منطبق‌ها همان مواردی هستند که Jest با برگرداندن نتایج بر اساس معیارها تأیید می‌کند. تابع انتظار زمانی استفاده می شود که یک مقدار نیاز به اعتبارسنجی داشته باشد. انتظار داشته باشید که در ارتباط با عملکردهای دیگر برای رسیدگی به موارد متعدد کار کند.


در زیر ترتیب سلسله مراتب استفاده آمده است:


describe('set of math test', () => {

test('it is pair', () => {
expect(6 % 2).toEqual(0);
});
test('it is not pair', () => {
expect(7 % 2).not.toEqual(0);
});
});


نکته: در فایل‌های تست، Jest هر یک از این روش‌ها و اشیاء را در محیط جهانی قرار می‌دهد، برای استفاده از آنها نیازی به نیاز یا وارد کردن نیست.

پیکربندی محیط ما

انجام پروژه متلب با بهترین برنامه نویسان

قبل از شروع، لازم است Nodejs را در محیط کاری خود نصب کنیم. پس از نصب، دستورات زیر را اجرا کنید:


> mkdir unit-test-with-jest
> cd unit-test-with-jest/
> npm init -y
> npm i jest --save-dev

یک اسکریپت NPM نیز برای اجرای تست های واحد و یک اسکریپت برای تولید گزارش پوشش پیکربندی خواهد شد. package.json را باز کنید و اسکریپت زیر را پیکربندی کنید:


{
"name": "unit-test-with-jest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest",
"coverage": "jest --collect-coverage"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"jest": "^29.0.3"
}
}

فایل math.js


اولین گام این است که یک فایل جاوا اسکریپت به نام math.jst ایجاد کنید که شامل عملیات اساسی حساب مانند جمع، تفریق، ضرب و تقسیم باشد. هر یک از این ویژگی ها در عملکرد متفاوتی قرار می گیرند و برای آزمایش بیشتر صادر می شوند.


function sum(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
function mul(a, b) {
return a * b;
}
function div(a, b) {
return a / b;
}
module.exports = {
sum,
sub,
mul,
div
}


فایل math.test.js


مرحله بعدی ایجاد یک فایل جاوا اسکریپت به نام math.test.jst است که شامل تست های واحد هر عملیات وارد شده از math.jsfile است. با تاکید بر اینکه فایل در داخل پوشه ای به نام __tests__ ایجاد خواهد شد.


const { sum, sub, mul, div } = require('../math.js');describe('set of arithmetic operations', () => {

test('sum of numbers', () => {
expect(sum(1, 1)).toBe(2);
});
test('subtraction of numbers', () => {
expect(sub(1, 1)).toBe(0);
});
test('multiply of numbers', () => {
expect(mul(1, 1)).toBe(1);
});
test('divide of numbers', () => {
expect(div(1, 1)).toBe(1);
});
});

توجه: به عنوان یک ملاحظه، Jest به طور پیش‌فرض به دنبال پوشه‌ای به نام __tests__ برای جستجوی تست‌ها می‌گردد و تمام فایل‌هایی را که حاوی نام هستند با انتهای .test.js یا .spec.js پوشش می‌دهد، همچنین به‌طور پیش‌فرض، همه چیز داخل node_modules را نادیده می‌گیرد.

تست ها را اجرا کنید


برای اجرای تست های دقیق، توسط کنسول دستور npm run test را نشان دهید. با این کار، جست بررسی ها را انجام می دهد و نتایج را نشان می دهد.

گزارش پوشش


گزارش های پوشش به شما این امکان را می دهد تا تخمین بزنید که چند درصد کد تست شده است. این گزارش ها معیارهای کلی را برای تجزیه و تحلیل بیشتر ارائه می دهند. برای اجرای گزارش پوشش، دستور npm run covergare را از طریق کنسول نشان دهید. با این Jest معیارها را هم توسط کنسول و هم گزارش‌های HTML تولید شده در فهرست فعلی ارائه می‌کند.

منابع جاوا اسکریپت شوخی


    Home web Jest: وب سایت اصلی، راهنما، وبلاگ و مستندات.

    کتابچه راهنمای کاربر Jest: مراحل اولیه، نصب و نمونه‌ها.

    Jest CLI: خط فرمان Jest، گزینه‌ها و موارد دیگر.

    Jest documentation API: استفاده از API، متدها و kickstarters.

    GitHub Jest: مخزن رسمی منبع باز.


پایان یافتن


در این مقاله به مفاهیم اساسی فریم می پردازیم

ework، به یاد داشته باشید که چندین تابع و دستورات CLI وجود دارد که به ما کمک می کند تا همه موارد ممکن را پوشش دهیم. خواندن مستندات برای ادامه گسترش دانش این ابزار توصیه می شود.

طراحی لوگو با بهترین طراحان لوگو

از اینکه تا اینجای کار آمدید متشکریم، اگر این را مفید یافتید، به اشتراک بگذارید. برای دریافت مطالب بیشتر عضو شوید

خطاهای ناخوانا و ناخواسته JS و ردیابی آن ها

اتوماسیون پیوند منبع-نقشه جاوا اسکریپت: نظارت بر مرورگر NewRelic


در حالی که همه ما در تلاش برای ارائه واضح ترین تجربه کاربری هستیم، پیگیری ناهنجاری های سیستم به همان اندازه مهم است. و وقتی در مورد رفتار غیرعادی یک وب سایت صحبت می کنیم، درک کاربران و مسائلی که ممکن است با آن ها مواجه شوند بسیار مهم است.

پروژه انجام پروژه در فریلنس پروژه

در محیط تولید اکوسیستم وب، دارایی ها برای ایجاد بسته های JS ترکیب، مبهم و کوچک می شوند. این منجر به خطاهای ناخوانا و ناخواسته JS بدون ردیابی پشته می شود، و رسیدن به علت اصلی مشکل را برای کسی غیرممکن می کند.


چگونه خطاها را ردیابی می کنیم؟


تیم "Creditas" از New Relic برای نظارت بر عملکرد و ردیابی خطا استفاده می کند. New Relic یکی از بهترین برنامه ها در این فضا است، تعداد کمی از برنامه های محبوب دیگر مانند نگهبان، اشکالات و غیره هستند. اطلاعات بیشتر در مورد نظارت بر مرورگر با استفاده از New Relic


از آنجایی که کد کوچک شده است، در زیر یک اسکرین شات از نحوه نشان دادن خطای جدید به طور پیش فرض نشان داده شده است:


این ابزارها به طور پیش‌فرض کد شما را حذف نمی‌کنند و خطای بالا را نشان نمی‌دهند که کاملاً غیرقابل خواندن است

سفارش ساخت سایت در فریلنس پروژه

سپس {“Jadoo” : “Sourcemap” } به فرار می آید.

هنگامی که برای تولید می‌سازید، همراه با کوچک‌سازی و ترکیب فایل‌های جاوا اسکریپت، می‌توانید یک نقشه منبع ایجاد کنید که اطلاعات فایل‌های اصلی شما را در خود نگه می‌دارد. اساساً این راهی برای نگاشت یک فایل کوچک شده به حالت ساخته نشده است.

اطلاعات بیشتر در مورد نقشه های منبع


پیوند خودکار نقشه منبع با New Relic


New Relic و سایر ابزارهای اصلی، API ها / اسکریپت ها / بسته های باقی مانده را برای آپلود نقشه های منبع با فایل های JS فراهم می کنند.

ما از بسته @newrelic/publish-sourcemap برای انتشار نقشه منبع در New Relic استفاده کرده ایم.


طراحی لوگو با بهترین طراحان لوگو

//sample snippet to push a source map file corresponding to a javascript linkconst publishSourcemap = require(‘@newrelic/publish-sourcemap’).publishSourcemap;publishSourcemap({    sourcemapPath : jsMapFileAbsolutePath, // js map path on machine
javascriptUrl : jsUrl, // js url reachable by new relic
applicationId: APP_ID, // new relic app id
apiKey: NEW_RELIC_USER_API_KEY, // new relic user key
},(err)=>{console.log('error in pushing::',err)});

آیا می توانید آن را از localhost و تست انجام دهید؟


به طور کلی پاسخ منفی است. لوکال هاست شما از NewRelic قابل دسترسی نخواهد بود و از این رو نمی تواند JS را که نقشه منبع را برای آن آپلود می کنید پیدا کند. اگر فقط می‌خواهید کد را آزمایش کنید، می‌توانید از چند لینک prod/uat برنامه خود در قطعه بالا و تست استفاده کنید.


در چه مرحله ای از استقرار این کار را آغاز می کنید؟


تنها گزینه ای که در اینجا داریم این است که این مرحله استقرار پست را انجام دهیم تا JS توسط سرورهای New Relic قابل دسترسی باشد. ما یک Node API نوشته‌ایم که استقرار پست را به‌عنوان مرحله بعدی برای مرحله ساخت اجرا می‌کند. این API به صورت بازگشتی بر روی بیلد تکرار می شود، همه نقشه های منبع را پیدا کرده و آنها را به New Relic فشار می دهد.

انجام پروژه متلب با بهترین متخصصان


آیا واقعاً می خواهید نقشه منبع را در تولید فعال کنید؟


به طور کلی، شما نمی خواهید نقشه منبع را در تولید فعال کنید تا از افشای/در دسترس بودن JS در کنسول جلوگیری کنید.

نقشه‌های منبع به‌طور پیش‌فرض به موازات فایل‌های js. در همان سطح مسیر با پسوند .js.map تولید می‌شوند تا ابزارهای توسعه‌دهنده آن‌ها را به‌طور پیش‌فرض انتخاب کنند و کد را در کنسول در معرض دید همه قرار دهند.


راه حل: نقشه منبع در دسترس New Relic قرار گرفت و هنوز ناشناس است


در فرآیند ساخت، همه نقشه‌های منبع را از مکان پیش‌فرضشان به یک مکان ناشناس و قابل شناسایی با کد منتقل می‌کنیم. سپس توسط API مرحله post deployment برای خواندن js به jsmap و فشار دادن همان به New Relic استفاده می‌شود.


نتیجه: نمونه عکس فوری خطا در New Relic این فرآیند را ارسال کنید


و در نهایت :


معجزه است! معجزه است :-)

اگر این را مفید یافتید، پیام بذارید

مراحل تبدیل شدن به برنامه نویس موفق و فرانت اند و بک اند

توسعه دهنده


سخت است که بگوییم این مرحله چقدر طول می کشد. کافی است بگوییم، در برنامه ریزی و تحقیق خود از میانبر استفاده نکنید. تصمیمات شما پایه و اساس همه چیزهای بعدی را تشکیل می دهد، به ویژه آنچه که در آینده خواهد آمد: تکمیل تحصیلات.

مرحله 2: تحصیل کنید

سفارش طراحی سایت با سایت دانان قهار

اکنون می خواهیم گزینه های آموزشی مختلف شما را با مزایا و معایب آنها مقایسه کنیم. همانطور که قبلاً گفتیم، می‌توانید بین یک برنامه تحصیلی یا سایر گزینه‌ها یکی را انتخاب کنید، اما برای شروع یک حرفه توسعه‌دهنده کامل بدون تحصیلات سخت خواهید بود.


تخمین زمان: این مرحله ممکن است بین 12 هفته تا 6 سال طول بکشد، به استثنای زمانی که برای درخواست و انتظار برای شروع یک برنامه صرف می کنید.

مرحله 3: تجربه دنیای واقعی را بدست آورید


کارفرمایان اغلب تمایلی به استخدام توسعه دهندگانی ندارند که خود را در نقش های قبلی ثابت نکرده اند. اما اگر به تازگی شروع به کار کرده اید، سابقه کاری شما ممکن است حاوی تجربیات مرتبط زیادی نباشد. کجا می توانید فرصت های عملی مورد نیاز خود را پیدا کنید؟

پروژه انجام پروژه با بهترین متخصصان

خوشبختانه، شما چند گزینه دارید. شما می‌توانید در راستای هدف خود یعنی استخدام شدن برای اولین نقش توسعه‌دهنده کار کنید:


    گذراندن یک برنامه کارآموزی

    پیوستن به هکاتون ها

    نوشتن کد با کیفیت برای پروژه هایی که خودتان یا به عنوان مشارکت کننده در پروژه های منبع باز تلاش می کنید


اگر در یک برنامه تحصیلی یا یک بوت کمپ هستید، اغلب به منابعی برای کشف این نوع فرصت ها دسترسی خواهید داشت. اگر به صورت انفرادی مطالعه می کنید، باید خودتان تحقیق کنید.


این منابع را بررسی کنید:

طراحی لوگو با بهترین طراحان لوگو

    توسعه یک برند حرفه ای

    ارتقا رزومه شما

    حفظ پروژه های کدنویسی در مسیر

    کمک به پروژه های منبع باز


شما قطعا باید تلاش های خود را در این تلاش های دنیای واقعی در یک نمونه کار حفظ کنید، که بعداً می توانید آن را به کارفرمایان بالقوه نشان دهید.


تخمین زمان: این مرحله ممکن است چندین ماه طول بکشد، اما شما می توانید تا آنجا که ممکن است در حین تحصیل خود، این کارها را انجام دهید.

مرحله 4: دریافت گواهینامه (اختیاری)


شما می توانید اعتبار خود را با دریافت گواهی توسعه نرم افزار تقویت کنید. ممکن است نتوانید این کار را در طول تحصیل یا بلافاصله پس از آن انجام دهید، زیرا برخی از ارائه دهندگان به تجربه قبلی توسعه نرم افزار از داوطلبان نیاز دارند. اما گواهینامه ها به عنوان راهی برای پیشرفت شغلی شما ارزش دارند که در آینده به آن توجه کنید.


توسعه دهندگان تمام پشته می توانند گواهینامه های عمومی توسعه نرم افزار زیر را بررسی کنند:


    دارای گواهینامه حرفه ای چرخه حیات نرم افزار امن

    برنامه نویس حرفه ای نرم افزار

    CIW توسعه وب حرفه ای

    GIAC Certified Web Application Defender (GWEB)


علاوه بر این، سایر گواهینامه ها بیشتر به قسمت پشتی مجموعه مهارت ها می پردازند:


    برنامه نویس حرفه ای دارای مدرک C/C++

    گواهینامه های Oracle (به عنوان مثال، SQL، MySQL، توسعه پایگاه داده)

    گواهینامه حرفه ای در برنامه نویسی پایتون 1 گواهینامه


تخمین زمان: از آنجایی که بسیاری از گواهینامه ها برای توسعه دهندگان با تجربه طراحی شده اند، ممکن است چندین سال طول بکشد تا این مرحله به پایان برسد. زمان آماده سازی آزمون نیز باید در برنامه ریزی شما لحاظ شود.

مرحله 5: برای جستجوی شغل خود آماده شوید


اینترنت جستجوی شغل را آسان می کند. اما قبل از ارسال اولین درخواست خود، مقدمات زیر را در نظر بگیرید تا خود را برای موفقیت آماده کنید.


    پورتفولیوی خود را صیقل دهید: با یک حساب رایگان GitHub، می توانید کدهای پروژه های فردی و منبع باز خود را در مخازنی که استخدام کنندگان و کارفرمایان بالقوه می توانند مشاهده کنند، نگهداری کنید. (به عنوان یک مزیت اضافی، تجربه عملی با کنترل نسخه را خواهید داشت که یک مهارت مهم برای هر توسعه دهنده ای است.)

    مصاحبه های ساختگی انجام دهید: برای مطالعه مشکلات رایج کدنویسی، سؤالات فنی و سؤالات رفتاری و تمرین نحوه پاسخگویی به آنها زمان بگذارید.

    شبکه: اتصال به توسعه دهندگان و شرکت های معتبری که ممکن است برای آنها درخواست بدهید می تواند به شما کمک کند تا در مورد فرآیند مصاحبه، ویژگی های شرکت و نکات دیگر اطلاعات کسب کنید. منابعی مانند گروه های فارغ التحصیل، لینکدین و سایر شبکه های اجتماعی ارتباط را آسان تر می کنند.


تخمین زمان: از سرمایه گذاری چند هفته تا چند ماه در این فعالیت ها پشیمان نخواهید شد.

مرحله 6: کارهای توسعه دهنده تمام پشته را جستجو کنید


وقتی احساس آمادگی کردید، یک نفس عمیق بکشید و جستجوی شغل خود را شروع کنید. می‌توانید با استفاده از وب‌سایت‌هایی مانند ZipRecruiter، Dice، Glassdoor، Indeed و غیره برای موقعیت‌های باز تحقیق و درخواست کنید. نرم‌افزار کاربردی شغل یا یک صفحه گسترده می‌تواند به شما در ردیابی همه برنامه‌های کاربردی و وضعیت‌های مختلف آنها کمک کند.


تخمین زمان: اگر چندین ماه را صرف درخواست شغل و مصاحبه می کنید، تعجب نکنید، به خصوص در شرایط جوی کنونی، که در آن انجماد استخدام غیر معمول نیست. برای مصاحبه هایی که می تواند چندین دور در چهار هفته یا بیشتر باشد، آماده باشید. همچنین سعی کنید رد را شخصاً نگیرید، که می دانیم گفتن آن آسان تر از انجام دادن آن است. بسیاری از توسعه دهندگان موفق قبل از اینکه موقعیتی را کسب کنند، جستجوهای طولانی کار را انجام داده اند. علاوه بر این، مصاحبه یک مهارت است و هر چه مدت طولانی‌تر آن را تمرین کنید، احتمال پیشرفت شما و مصاحبه بعدی شما بیشتر می‌شود.

چقدر طول می کشد تا به یک دیو فول استک تبدیل شوید

عاشق


ممکن است برای تبدیل شدن به یک توسعه دهنده فول استک، از سه ماه تا شش سال زمان نیاز داشته باشید. جدول زمانی شما تحت تأثیر موارد زیر خواهد بود:

انجام پروژه متلب با بهترین برنامه نویسان

    آنچه قبلاً می دانید (به ویژه مهارت های فنی)

    چه مشاغلی داشته اید (و ارتباط آنها با این رشته)

    چه تحصیلاتی کسب کرده اید (و ارتباط آن با توسعه وب)

    آرزوهای شغلی شما

    وضعیت بازار کار


با داشتن برخی مهارت‌های فنی، تجربه، و مدرک در علوم کامپیوتر یا رشته‌های مرتبط، ممکن است بتوانید پس از چند ماه جستجو در یک بازار قوی، به یک توسعه‌دهنده کامل تبدیل شوید. بدون آن مهارت‌ها، آن تجربه و آن مدرک، می‌توانید با راه بسیار طولانی‌تری روبرو شوید، به‌ویژه در بازاری که کمتر سالم است.


ما گفته‌ایم که نحوه کسب آموزش فنی شما بر جدول زمانی شما برای به دست آوردن یک شغل توسعه‌دهنده کامل تأثیر می‌گذارد. مانند موقعیت‌های توسعه‌دهنده بک‌اند، کارفرمایان بالقوه ممکن است نامزدهای دارای مدرک CS را برای نقش‌های فول استک ترجیح دهند، بنابراین این را در نظر داشته باشید. اما این یک قانون سخت و سریع نیست، و کدنویسی فارغ التحصیلان بوت کمپ یا زبان آموزانی که خود گام برمی دارند نیز می توانند مشاغلی را در توسعه تمام پشته راه اندازی کنند.


آماده شدن برای جستجوی شغل پس از پایان تحصیلات، به زمان بیشتری نیاز دارد، و همچنین مطمئن شوید که شرایط لازم برای پیوستن به صفوف توسعه دهندگان حرفه ای کامل را برآورده کرده اید.

شرایط لازم برای تبدیل شدن به یک توسعه دهنده فول استک


آموزش، تجربه در دنیای واقعی، و مهارت های فنی، همگی لازمه تبدیل شدن به یک توسعه دهنده فول استک هستند. ماهیت دقیق این نیازها به پیشینه و اهداف شخصی شما بستگی دارد.

تحصیلات


در این مرحله، شما باید ایده خوبی از گزینه های تحصیلی خود داشته باشید. با توجه به ترجیحات بسیاری از کارفرمایان، مدرک CS ممکن است برای دنبال کردن این رشته کاری منطقی باشد. اما همانطور که اشاره کردیم، تا زمانی که مفاهیم و مهارت‌های ضروری برای این کار را به دست آورده باشید، می‌توانید یادگیری را به روش‌های دیگری دنبال کنید.

تجربه قابل اجرا

مجری ذیصلاح لیست مجریان نظام مهندسی اراک مجری ساختمان

مانند بسیاری از نقش های مرتبط، توسعه دهندگان مشتاق فول استک ممکن است بدون تجربه عملی قبلی در این زمینه استخدام شوند. اما کسانی که به تازگی شروع به کار کرده اند می توانند از طریق فعالیت های دیگری مانند:


    کارآموزی در شرکت‌های فناوری: حل مشکلات و کمک به برنامه‌های کاربردی در دنیای واقعی در حالی که با متخصصان با تجربه شبکه می‌شوید.

    گواهینامه های حرفه ای: مهارت و تعهد خود را با قبولی در امتحانات در موضوعات مختلف توسعه نرم افزار نشان دهید.


مهارتهای فنی


حتی بیشتر از متخصصان فرانت‌اند یا بک‌اند، توسعه‌دهندگان مشتاق فول استک باید مجموعه‌ای از مهارت‌های فنی قوی داشته باشند. به این دلیل که این مهارت ها باید هر دو طرف توسعه وب را در بر گیرند. همانطور که مطالعه می کنید، چیزهای زیادی را که باید بدانید به دست خواهید آورد. اما برای تجهیز شما فقط به مربیان خود متکی نباشید. درعوض، ممکن است از ضعف یک توسعه دهنده خودآموخته استقبال کنید و خودتان به یادگیری ادامه دهید. تا آنجا که باید بدانید، ما مهارت‌های مربوطه را به دسته‌های front-end، back-end و پیشرفته تقسیم کرده‌ایم.

مهارت‌های ضروری مقدماتی


    استدلال منطقی

    نحوه کار اینترنت (به عنوان مثال، مشتریان، سرورها، شبکه ها، صفحات وب)

    اصول اولیه HTML، CSS و توسعه وب

    زبان ها و فریم ورک های برنامه نویسی فرانت اند (مانند جاوا اسکریپت، ری اکت، انگولار، جی کوئری)

    سیستم های کنترل نسخه (Git + سرویس های مخزن مانند GitHub)

    استانداردهای امنیت وب

    API ها و سرویس های RESTful

    تست و اشکال زدایی (به عنوان مثال، تست واحد، تست عملکرد، تست قابلیت استفاده، تست عملکرد، تست رگرسیون)

    طراحی گرافیک


مهارت‌های ضروری در پشتیبان


    زبان های انجام پروژه برنامه نویسی پشتیبان (مانند جاوا اسکریپت، پایتون، پی اچ پی، جاوا، سی پلاس پلاس)

    فریمورک‌های وب بک‌اند (مانند Node.js برای جاوا اسکریپت، جنگو و فلاسک برای پایتون، لاراول برای PHP)

    پایگاه داده های رابطه ای (به عنوان مثال، PostgreSQL، MySQL)

    پایگاه های داده NoSQL (به عنوان مثال، MongoDB، Cassandra، Firebase)

    رابط های برنامه نویسی برنامه (API) (به عنوان مثال، REST، API های JSON، SOAP، gRPC)

    ساختار داده ها و الگوریتم ها


    قرار دادن "پشته" در "پول پشته": همچنین باید با پشته های فناوری مختلف برای توسعه وب و مزایا و معایب آنها آشنا باشید. در حالی که در نهایت می توانید همه آنها را یاد بگیرید، بهتر است فقط با یک پشته شروع کنید و بر اجزای آن مسلط شوید.


مهارت های پیشرفته


    سایر فریم ورک های JS (مانند NextJS، Gatsby، NuxtJS)

    دانش پایگاه داده پیشرفته (به عنوان مثال، ORM ها، ACID، تراکنش ها، مشکل N+1، عادی سازی پایگاه داده، نمایه ها، تکرار داده ها، استراتژی های اشتراک گذاری، قضیه CAP)

    یکپارچه سازی مداوم و شیوه های استقرار مداوم (CI/CD).

    الگوهای معماری (به عنوان مثال، برنامه های یکپارچه، میکروسرویس ها، SOA، CQRS و منبع رویداد، بدون سرور)

    مفاهیم طراحی سیستم

    کارگزاران پیام (مانند کافکا، RabbitMQ)

    Containerization در مقابل مجازی سازی (به عنوان مثال، Docker، Kubernetes)

    GraphQL (به عنوان مثال، آپولو، رله مدرن)

    پایگاه داده های گراف (به عنوان مثال، Neo4j)

    سوکت های وب

    سرورهای وب (Apache، NGINX، Caddy، MS IIS)


مهارت ها و کیفیت های نرم


در نهایت، اگر می خواهید در محل کار برتر باشید، نباید از مهارت ها و رفتارهای نرم غافل شوید.

l کیفیت ها شما می توانید این شش ویژگی را برای تبدیل شدن به یک توسعه دهنده برجسته پرورش دهید.


    میل به ساختن و خلق کردن

    یک طرز فکر تیمی

    مهارت حل مسئله خلاق

    یکدلی

    عزم

    عشق به یادگیری


مصاحبه های شغلی به شما فرصت هایی می دهد تا این ویژگی ها را نشان دهید، اما پس از دریافت پیشنهاد، آنها را فراموش نکنید. با ادامه کار بر روی این مهارت ها، به ایجاد شهرت قوی در محل کار کمک خواهید کرد.

درآمد یک توسعه دهنده فول استک چقدر است؟


شما می توانید به عنوان یک توسعه دهنده تمام پشته، مانند بسیاری از مشاغل پردرآمد در فناوری، درآمد خوبی کسب کنید. اداره آمار کار گزارش می دهد که متوسط ​​دستمزد توسعه دهندگان وب در ایالات متحده در سال 2020 77200 دلار در سال (37.12 دلار در ساعت) بوده است. اینها ارقام متوسط ​​و البته چند ساله هستند، بنابراین حقوق یا دستمزد واقعی شما ممکن است متفاوت باشد. همچنین، به خاطر داشته باشید که حقوق شما می تواند با کسب تجربه، کسب گواهینامه ها و ارتقای شغلی افزایش یابد.


علاوه بر این، آن ارقام BLS ممکن است منعکس کننده کل غرامت برای توسعه دهندگان وب نباشد. به گفته Glassdoor، یک وب‌سایت آمریکایی که اطلاعاتی در مورد مشاغل و حقوق جمع‌آوری می‌کند، کل دستمزد یک توسعه‌دهنده وب در ایالات متحده 110,356 دلار در سال است که بر اساس میانگین حقوق 72,495 دلار است. غرامت باقیمانده می تواند از پاداش نقدی، کمیسیون و تقسیم سود باشد.


جبران خسارت مطمئناً مهم است، اما باید تقاضا برای توسعه دهندگان فول استک را نیز در نظر بگیرید. طبق پیش‌بینی‌های BLS، انتظار می‌رود مشاغل توسعه‌دهنده وب از سال 2020 تا 2030 در ایالات متحده 13 درصد افزایش یابد، که سریع‌تر از میانگین برای همه مشاغل است. همچنین می‌توانید «شغل‌های توسعه‌دهنده کامل» را در Indeed، Glassdoor، Dice، Zip Recruiter و غیره جستجو کنید تا انواع موقعیت‌های موجود را ببینید. نتایج جستجوی شما تقریباً به اندازه داده‌های دولت جامع نخواهد بود، اما در عین حال شرح شغل در دنیای واقعی را مشاهده خواهید کرد. علاوه بر این، Glassdoor با استفاده از داده‌های ناشناس از کارکنان فعلی و سابق، برآوردهای حقوق و دستمزد شرکت‌های خاص را ارائه می‌کند.

برای تبدیل شدن به یک توسعه دهنده فول استک چه کاری باید انجام دهید


اگر تازه شروع کرده اید، مسیر تبدیل شدن به یک توسعه دهنده فول استک می تواند دلهره آور به نظر برسد. اما حداقل اکنون باید بدانید که چه چیزی در انتظار شماست: مراحلی که باید انجام دهید، مدت زمانی که ممکن است طول بکشد، مهارت هایی که باید یاد بگیرید، و انتظار دارید چه چیزی کسب کنید. اگر آماده شروع هستید، مرحله 1 این نقشه راه را مرور کرده و برنامه خود را تنظیم کنید.


پس از دستیابی به آن، باید برای شروع یادگیری آماده باشید! مهم نیست که چه مسیر آموزشی را طی می کنید، می توانید بلافاصله با دوره های توسعه تعاملی Educative شروع به ایجاد مهارت های فنی خود کنید.


موفقیت شما به‌عنوان یک توسعه‌دهنده فول استک به تسلط بر مهارت‌های بخش جلویی و پشتی وب‌سایت‌ها و برنامه‌های کاربردی وب بستگی دارد. برای کمک به شما در یادگیری مهارت‌های front-end، مسیر یادگیری Become a Front-End Developer را ایجاد کرده‌ایم که نشانه‌گذاری و استایل‌سازی با HTML و CSS، تعامل با جاوا اسکریپت و راه‌اندازی یک وب‌سایت را پوشش می‌دهد. اگر می خواهید روی قسمت پشتی تمرکز کنید، مسیر یادگیری اصول برنامه نویسی وب را در نظر بگیرید. مهارت های برنامه نویسی اولیه در C++ و ملزومات back-end مانند پایگاه های داده و شبکه ها را آموزش می دهد. همچنین در صورت نیاز شما را با HTML، CSS و جاوا اسکریپت آشنا می کند.


یادگیری مبارک!

به یادگیری در مورد توسعه تمام پشته در Educative ادامه دهید


    نحوه انتخاب پشته فناوری مناسب برای توسعه وب

    شیرجه سریع به Firebase: سفر تمام پشته خود را شروع کنید

    آیا می توانم یک توسعه دهنده تمام پشته پایتون باشم؟


بحثی را شروع کنید

پایتون انجام پروژه پایتون با برنامه نویسان پایتون

چرا حرفه ای به عنوان یک توسعه دهنده فول استک مجذوب شما شده است؟ این مقاله به شما کمک کرد؟ در قسمت نظرات پایین ما را آگاه کنید!

تبدیل شدن به توسع دهنده فول استک در سال 2022 با رعایت چند نکته

چگونه در سال 2022 یک توسعه دهنده فول استک شویم


آیا به برنامه نویسی وب علاقه دارید؟ آیا شما با عبارت "جک همه معاملات" همذات پنداری می کنید؟ اگر پاسخ شما مثبت است، پس تبدیل شدن به یک توسعه دهنده فول استک ممکن است انتخاب شغلی خوبی برای شما باشد!

سفارش ساخت سایت در فریلنس پروژه

یک توسعه‌دهنده فول استک کسی است که روی هر دو قسمت جلویی و بک‌اند وب‌سایت‌ها و برنامه‌های کاربردی وب کار می‌کند. به عبارت ساده تر، این نوع از توسعه دهندگان به آنچه کاربران برنامه های وب می بینند و با آن تعامل می کنند و عملکردی که نمی بینند، مانند ارتباط بین مرورگرهای وب، سرورها و پایگاه داده ها سروکار دارند. (این تفاوت ها را بعداً با جزئیات بیشتر توضیح خواهیم داد.)


چندین دلیل خوب برای در نظر گرفتن توسعه فول استک وجود دارد:


    می توانید زندگی خوبی داشته باشید

    تقاضا برای این نقش همیشه سبز است و حتی انتظار می‌رود که حتی با توقف استخدام‌ها همچنان رو به رشد باشد

    شما می توانید با چالش های فزاینده جذاب مقابله کنید و مشکلات دنیای واقعی را حل کنید

پروژه انجام پروژه با متخصصان بزرگ

برای ورود به یک حرفه جدید، معمولاً باید با انجام برخی تحقیقات و تحلیل خود شروع کنید. توسعه تمام پشته نیز از این قاعده مستثنی نیست. برای کمک به درک این مرحله و سایر مراحل در سفر پیش رو، ما یک نقشه راه تهیه کرده ایم. با خواندن آن، خواهید دید:


    پاسخ سوالات بزرگ در مورد تبدیل شدن به یک توسعه دهنده تمام پشته را پیدا کنید

    یک رویکرد ساختاریافته برای آماده شدن برای پیوستن به صفوف توسعه دهندگان تمام پشته بیاموزید

    برای کسب اطلاعات بیشتر در مورد این شغل با منابعی روبرو شوید


    یک نقشه کوچکتر: ما قبلاً با یک راهنمای متمرکز بر جاوا اسکریپت در مسیر تمام پشته بوده ایم. اما امروز، نقشه راه حرفه ای کامل تری با دستورالعمل های گام به گام و فهرست جامع تری از مهارت های یادگیری ارائه خواهیم کرد.

طراحی لوگو با بهترین طراحان لوگو

سفر شما منحصر به فرد خواهد بود و همه چیز در این مقاله با شما طنین انداز نخواهد شد. همچنین متوجه خواهید شد که برخی از پاسخ های ما به دلیل تغییر مسیرهای شغلی فردی، کمی مبهم هستند. اما زمانی که خواندن را به پایان می رسانید، فکر می کنیم درک واضح تری از جاده ای که در آن سفر خواهید کرد خواهید داشت.


بیا بریم!


پوشش خواهیم داد:


    مراحل تبدیل شدن به یک توسعه دهنده فول استک

    مرحله 0: توسعه کامل پشته را درک کنید

    مرحله 1: یک برنامه شغلی تهیه کنید

    مرحله 2: تحصیل کنید

    مرحله 3: تجربه دنیای واقعی را بدست آورید

    مرحله 4: دریافت گواهینامه (اختیاری)

    مرحله 5: برای جستجوی شغل خود آماده شوید

    مرحله 6: کارهای توسعه دهنده تمام پشته را جستجو کنید

    چقدر طول می کشد تا یک توسعه دهنده فول استک شوید؟

    شرایط لازم برای تبدیل شدن به یک توسعه دهنده فول استک

    درآمد یک توسعه دهنده فول استک چقدر است؟

    برای تبدیل شدن به یک توسعه دهنده فول استک چه کاری باید انجام دهید


مراحل تبدیل شدن به یک توسعه دهنده فول استک


قبل از شروع، باید چیزی را تصدیق کنیم. سفر شما در این زمینه، مثلاً، شبیه سفر دوست توسعه‌دهنده‌تان نخواهد بود، همانطور که سفر آنها با پیشینیانش مطابقت نداشت. آنچه قبلاً می دانید چگونه انجام دهید و چگونه آن مهارت ها را آموخته اید، بر مراحلی که برمی دارید تأثیر می گذارد. اما استانداردهای مشترک با وجود این تنوع وجود دارد و بسیاری از توسعه دهندگان و مهندسان نرم افزار اقدامات خاصی را برای رسیدن به اهداف خود انجام داده اند. بیایید اکنون به آن اقدامات نگاهی بیندازیم.

مرحله 0: توسعه کامل پشته را درک کنید

پروژه متلب انجام پروژه متلب متلب

ما قبلاً یک تعریف سریع از توسعه فول استک ارائه کردیم، اما ارزش یک نگاه دیگر را دارد. اگر به این شغل متعهد هستید، درک تمایز بین توسعه front-end و back-end مهم است زیرا شما هر دو را انجام خواهید داد.


عملکرد وب سایت ها و برنامه های وب به کد کار در هر دو طرف بستگی دارد. توسعه دهندگان فرانت اند روی رابط های کاربری (UI) و کاری که برنامه های وب در سمت مشتری انجام می دهند کار می کنند. این بدان معنی است که همه چیزهایی که کاربران در دستگاه های کاربر نهایی می بینند و با آنها تعامل دارند. توسعه دهندگان Back-end خود را به کاری که برنامه های وب در سمت سرور انجام می دهند، می اندیشند. این معمولاً شامل نمایش پویا اطلاعاتی است که از یک پایگاه داده روی سرور به دستگاه کاربر نهایی منتقل می شود. تبدیل شدن به یک توسعه‌دهنده فرانت‌اند یا توسعه‌دهنده بک‌اند نیازمند آموزش و آموزش فراوان است. از برخی جهات، تبدیل شدن به یک توسعه دهنده فول استک به موارد بیشتری نیاز دارد.


برخی از فن‌آوری‌ها و مهارت‌های اساسی پایه‌ای را تشکیل می‌دهند که هر سه نوع توسعه‌دهنده بر آن بنا می‌کنند. اما نقش‌های جلویی و بک‌اند نیز نیاز به تخصص دارند. با ادامه خواندن، مروری بر این مهارت‌های ترکیبی و سایر الزامات برای تبدیل شدن به یک توسعه‌دهنده فول استک پیدا خواهید کرد.

مرحله 1: برنامه ریزی کنید


شما باید سفر خود را با تحقیق و برنامه ریزی آغاز کنید. برای شروع، تصمیم اساسی را در نظر بگیرید که چگونه می خواهید آموزش و آموزش لازم را دریافت کنید. یادگیری مهارت‌های تبدیل شدن به یک توسعه‌دهنده فول استک به زمان و انرژی زیادی نیاز دارد، بنابراین باید گزینه‌های خود را با دقت بررسی کنید. بسیاری از توسعه دهندگان مشتاق مدرکی را در علوم کامپیوتر یا یک رشته مرتبط دنبال می کنند، که ممکن است برخی از کارفرمایان ترجیح دهند. اما مطمئناً می توانید یک حرفه برنامه نویسی را بدون چنین مدرکی راه اندازی کنید. گزینه های دیگر این است که در یک بوت کمپ شرکت کنید، مدرک دانشگاهی بگیرید یا خودتان تحصیل کنید.

لیست مجریان نظام مهندسی اراک

    توجه داشته باشید: نداشتن مدرک CS می تواند در ابتدا شما را برای نقش های جوان تر، اغلب با عناوینی مانند جونیور یا کاردانی آماده کند.

بررسی 4 تکنیک بهینه سازی عملکرد برای برنامه های ری اکت

4 تکنیک بهینه سازی عملکرد برای برنامه های React

راه‌های زیادی برای بهینه‌سازی اپلیکیشن React وجود دارد. همه برای هر برنامه کار نمی‌کنند و هر کاری که انجام می‌دهید باعث افزایش عملکرد قابل توجهی نمی‌شود.

سفارش ساخت سایت در فریلنس پروژه

اخیراً وظیفه‌ای به من محول شده است که می‌گوید: "بهبود عملکرد برنامه". این من هستم که آن سفر را مستند می کنم.

مرحله 1 - سناریوهایی را پیدا کنید که پس از آن عملکرد شروع به کاهش می کند


من خوش شانس بودم که از سناریویی مطلع شدم که عملکرد آنقدر کاهش می یابد که تجربه کاربر کاملاً غیرقابل تحمل است. برای پیدا کردن همه این سناریوها، باید به شدت به انجام اقدامات مختلف روی برنامه ادامه داد و زمانی که عملکرد شروع به تنزل کرد، نظارت داشت. هیچ راه ساده ای برای انجام این کار وجود ندارد، تنها روش این است که افراد بیشتر و بیشتری از برنامه استفاده کنند و تجربیات خود را گزارش کنند. راه دیگر نیز می‌تواند این باشد که داده‌های ساختگی زیادی تولید کنید و سعی کنید همه آن‌ها را روی رابط کاربری بارگذاری کنید و ببینید که چگونه کار می‌کند. همچنین، انتظار نداشته باشید که همه سناریوها را به یکباره کشف کنید، هر از گاهی آنها را کشف خواهید کرد و سپس می توانید مراحل زیر را برای بهبود عملکرد هر یک از آنها انجام دهید.

مرحله 2 - اشکال زدایی کنید و سعی کنید مقصر واقعی را پیدا کنید

انجام پروژه با متخصصان پروژه

گام بعدی این است که اشکال زدایی کنید و ببینید چه چیزی واقعاً باعث تمام تاخیر یا افت عملکرد شده است. برای این کار می‌توانید از نمایه‌ساز در ابزارهای توسعه‌دهنده استفاده کنید، همچنین راهی برای برجسته کردن تمام مؤلفه‌هایی که در یک عمل خاص دوباره رندر می‌شوند وجود دارد. برای من، این دو بهترین کار را دارند زیرا به من کمک می‌کنند بفهمم چه چیزی دوباره رندر می‌شود و نمایه‌گر نیز دلیل آن را توضیح می‌دهد. نمایه‌ساز همچنین به شما می‌گوید که کدام مؤلفه‌ها چقدر زمان برای رندر گرفتن و تعداد چرخه برنامه شما برای رسیدن به حالت آماده نیاز دارد. علاوه بر این، اگر حلقه‌های تودرتو را ببینم و ببینم تکمیل آنها زمان زیادی می‌برد، از متد console.time() از جاوا اسکریپت نیز استفاده می‌کنم. در سناریوی من، به من اطلاعات دقیقی داده شد مبنی بر اینکه زمینه‌های React که استفاده کرده‌ایم باعث مشکلات اصلی می‌شوند.

طراحی لوگو حرفه ای با بهترین طراحان لوگو

برای خواندن همه چیز در مورد React Profiler اینجا را کلیک کنید.

مرحله 3 - استفاده از تکنیک های زیر برای بهبود عملکرد


من در این بخش لیستی از کارهایی که انجام دادم و به من کمک کرد عملکرد برنامه ام را بهبود بخشد را فهرست می کنم.


    متغیرهایی را از حالت حذف کرد که واقعاً نیازی به رندر مجدد مؤلفه نداشتند:

    ما دو زمینه و در همه حدود 10-15 متغیر حالت در آنجا داشتیم. مشکل این بود که هر بار که متن به دلیل setState دوباره رندر می‌شد، پیش می‌رفت و باعث می‌شد همه کودکانی که از متن استفاده می‌شد دوباره رندر شوند. همه متغیرهای حالت را که دلیلی برای ادامه دادن و رندر مجدد مؤلفه نداشتند، حذف کردم، همچنین همه متغیرهایی را که به عنوان مقادیر به ارائه‌دهنده زمینه ارسال می‌شد و می‌توانستند مشتق شوند یا در هیچ کجای برنامه استفاده نمی‌شدند، حذف کردم. این یادگیری مهم بود، ما تمایل داریم همه چیز را در چارچوب قرار دهیم، در حالی که شما فقط باید آنچه را که واقعاً نیاز دارید اضافه کنید.

    از Context در مکان های مناسب استفاده کرد:

    من دیدم که در چند مؤلفه ما متن را فراخوانی می‌کردیم، اما واقعاً از هیچ یک از ویژگی‌های متن در آنجا استفاده نمی‌کردیم. بلکه ما آن را به عنوان پشتوانه به اجزای کودک منتقل می کردیم. این باعث رندرهای زیادی شد زیرا رندر مجدد در زمینه باعث می شود مولفه A دوباره رندر شود، که باعث می شود مولفه های B، C و D همه فرزندانشان دوباره رندر شوند. متن فقط در جزء D مورد نیاز بود، بنابراین من مستقیماً متن را به مؤلفه فرزند منتقل کردم. این کار را برای هر مکانی که دیدم یک متغیر زمینه به عنوان پایه به مولفه فرزند ارسال می‌شود، انجام دادم.

    اضافه شدن چک های خالی و خالی:

    من دیده‌ام که ما یک مؤلفه فرزند را ارائه می‌کنیم که به برخی داده‌ها از والد نیاز دارد و در داخل فرزند، مؤلفه بررسی‌هایی را برای وجود داده‌ها اضافه می‌کند. هیچ مشکلی در این رویکرد وجود ندارد، اما اگر مؤلفه فرزند به‌عنوان چند useEffects یا در حال فراخوانی APIهای دیگر باشد، منطقی است که بررسی خالی/تهی بودن داده را به والدین منتقل کنید. شما اصلاً نیازی به رندر کردن مؤلفه فرزند در DOM ندارید زیرا ارزشی ندارد. با این کار تمام عملکردهایی که ممکن است برنامه برای رندر کردن کودک و فراخوانی همه هوک‌ها و APIهای داخل آن گرفته باشد ذخیره می‌کند.

انجام پروژه متلب با بهترین برنامه نویسان

    بازسازی مجدد کد:

    یک مرحله کلی که من انجام دادم، تلاش برای درک کد نوشته شده بود، به خصوص در جایی که داده ها دستکاری شده بودند، یا به یک آرایه اضافه می شدند، یا از حلقه های تودرتو استفاده کرده بودیم، و غیره. آرایه وابستگی که در آن هیچ ارزشی اضافه نمی‌کردند، و در آخر نیز بررسی‌هایی را که روی داده‌هایی که چندان منطقی نبودند حذف کردند. این مرحله می‌تواند برای برنامه‌های مختلف متفاوت باشد و باید با دقت انجام شود، زیرا نمی‌خواهید آنچه را که قبلاً کار می‌کند، خراب کنید. بنابراین در حالت ایده‌آل سعی کنید تا آنجا که می‌توانید عمیق شیرجه بزنید تا ابتدا منطق را درک کنید و سپس اگر احساس اطمینان کردید، ادامه دهید و آن را اصلاح کنید.


با روش های بالا، من توانستم حدود 25 تا 30 رندر مجدد را برای برنامه خود کاهش دهم. بارگذاری صفحه اولیه را چند ثانیه بهبود می بخشد و همچنین زمان پاسخگویی را یک یا دو ثانیه بهبود می بخشد، در سناریوهایی که عملکرد به اندازه کافی طول می کشد.

ضربه بزرگ این یک سفر است و من هنوز برای بهتر کردن آن کار می کنم :D


در نهایت، راه‌های زیادی برای بهینه‌سازی اپلیکیشن React وجود دارد. همه برای هر برنامه کار نمی‌کنند و هر کاری که انجام می‌دهید باعث افزایش عملکرد قابل توجهی نمی‌شود. گاهی اوقات مشکلات واضح هستند و حل آنها باعث می شود برنامه عملکرد بالایی داشته باشد، در سناریوهای دیگر مشکلات پیچیده هستند و اضافه کردن هر گونه بهبودی در عملکرد دشوار است. اما در مجموع، بهینه سازی کد شما یک سفر سرگرم کننده است، شما می توانید چیزهای زیادی یاد بگیرید و بیشتر اوقات، ترفندی را یاد می گیرید که احساس می کنید چرا من قبلاً این را نمی دانستم؟


اغلب وقت خود را صرف بازسازی کد خود می کنید و اغلب وقت خود را صرف ارزیابی عملکرد می کنید، زیرا اگر این کار را نکنید، ناگهان ممکن است خیلی دیر شود.


از اینکه وقت خود را برای خواندن این مطلب اختصاص دادید متشکرم، و اگر می خواهید در مورد چیزی زیر آسمان صحبت کنید یا پیشنهاداتی در مورد مقاله من دارید، در زیر نظر خود را بنویسید. همچنین می توانید از طریق تلگرام، لینکدین یا اینستاگرام با من در ارتباط باشید.

مجری ذیصلاح لیست مجریان نظام مهندسی اراک مجری

در نهایت، اگر می خواهید من به نوشتن ادامه دهم و می خواهید از من حمایت کنید، می توانید از اینجا برای من یک قهوه بخرید. از باویا حمایت کنید