- مدرس دوره : یونس قربانی ( رزومه )
- تعداد ویدیوها : 120 ویدیو
- مدت زمان دوره : 27:27:00
- سطح دوره : متوسط
- وضعیت دوره : به اتمام رسیده
- تاریخ آخرین بروزرسانی : 1400/02/08

آموزش جامع ReactNative
یکی از آرزوهای من و شاید خیلی از برنامه نویس ها این بوده که با یادگیری یک زبان برنامه نویسی برنامه هایی بنویسیم که روی پلتفرم های مختلف اجرا بشه.
هر چند که تلاش های زیادی تو این زمینه شد ولی هیچکدوم چنگی به دل نزد تا اینکه فیسبوک در ابتدای سال ۲۰۱۳ اولین نسخه stable از یک کتابخونه جاوا اسکریپت رو بصورت اوپن سورس روی گیت هاب منتشر کرد.اسم این کتابخونه ReactJs بود که برای توسعه وب اپلیکیشن ها مورد استفاده قرار می گرفت.این کتابخونه سرعت بسیار بالا و سادگی خاصی داشت که باعث شد خیلی سریع مورد توجه قرار بگیره. اواخر مارچ ۲۰۱۵ بود که فیسبوک یک فریمورک جدید به اسم ReactNative منتشر کرد که بهت اجازه میداد فقط با استفاده از جاوا اسکریپت و کتابخونه React اپلیکیشن موبایل برای ios بسازی. فیسبوک شش ماه بعد گام اصلی و محکم رو با انتشار React Native برای Android برداشت . توسعه دهنده ها دیگه مجبور به نوشتن کدهای جداگونه برای سیستم عامل های مختلف نبودن و استارتاپ ها و صاحبان کسب کار به توسعه دهنده هایی دسترسی پیدا کردند که برای هر دو سیستم عاملAndroid و IOS اپلیکیشن طراحی میکردند.
خوب اول از همه در مورد React Native صحبت کنیم که چی هست و چه کارهای برای ما میتونه انجام بده
به صورت خیلی ساده اگر بخوام بگم
React Native به ما اجازه میده که از کتابخانه React استفاده کنیم تا بتونیم اپلیکیشن ها موبایلی برای اندروید و ios بسازیم و یک گزینه عالی برای توسعه دهندگانی هست که جاوا اسکریپت کار میکنند و میخوان اپلیکیشن موبایل هم طراحی کنند و اگر با ReactJs کار میکنید بهترین انتخابتون React Native هست چون به راحتی می تونید اپلیکیشن موبایلی هم تحویل بدید چون ساختنش براتون وقت زیادی نمیگیره و میتونید به مشتری بگید اپلیکیشن موبایلی رو هم رایگان میدیم بهتون تا کلی مشتری داشته باشید.
کامپوننتهای درونی زیادی همراه با React Native ارائه نمیشن و میشه گفت مثل ReactJs مینیمال هست و در مقایسه با flutter که به همراه کلی کامپوننتهای داخلی ارائه میشه ولی React Native قابلیت انتخاب به شما میده و به خاطر انعطاف پذیری بالا به راحتی میتونید کلی کامپوننتهای آماده اضافه کنید و درکل خیلی انعطاف پذیر هست.
یک مثال از اپلیکیشن های ساخته شده با React Native اینستاگرام هست و فکر میکنم تنها همین اپلیکیشن قدرت کامل React Native رو نشون میده
پیشنیازهای دوره :
آشنایی با جاوا اسکریپت Es6
آشنایی با ReactJs هست از جمله کامپوننتهای تابعی ، Stateها , Props و Hooks و ...
App های ساخته شده توسط ReactNative واقعا یک اپلیکیشن موبایل هستن چون شما با ReactNative نمیاید WebApp یا HTMLAPP یا ترکیبی از هر 2 بسازید بلکه شما یک App واقعی میسازید که غیر قابل تشخیص هست با Appهای که توسط Objective C و جاوا ساخته شدن
چون ReactNative دقیقا از همون بلاک های UI ایی استفاده میکنه که در IOS و اندروید استفاده میشه و ما در ReactNative با استفاده از React و جاوا اسکریپت این بلاک هارو برای ساخت کنار هم قرار میدیم .
با ReactNative خیلی سریعتر از اون چیزی که فکر میکنید میتونید App طراحی کنید برای مثال شما در ReactNative بعد هر بار اضافه یا ویرایش نیازی به کامپایل دوباره ندارید بلکه با Hot Reloading بعد هر بار ذخیره به سرعت تغیرات اعمال میشن و این واقعا عالی هست که در کسری از ثانیه تغییراتی که داری انجام میدی رو میبینی و پیش میری بجای اینکه دوباره کامپایل کنی و ببینی دوباره ادامه بدی.
اگه کمی فکر کنید میفهمید که دارید انتخاب درستی رو برای یادگیری ReactNative میگیرید چون که به سرعت در حال پیشرفت هست و اکثر برنامه نویس های موبایل دارن میان این سمت تا ReactNative رو توی رزومه شون داشته باشن و اگه فکرشو بکنید فقط با یک زبان برای همه سیستم عامل های موبایل میتونید App بسازید. این عالی نیست؟
در این دوره چندین پروژه ساخته خواهد شد از جمله اپلیکیشن کارهای روزمره ، ارتباط با سرور ، احراز هویت و ... که در طول دوره در کنار هم خواهیم ساخت
دوره کاملا دانشجو محور هست و می تونید نظرات خودتون رو برام بفرستید تا باهم کاملترین دوره React Native موجود رو بسازیم.
فهرستـــ ویدیوها
مدت زمان دوره 27:27:00با مشاهده آنلاین جلسات در سایت ، هزینه اینترنت شما به صورت نیم بها محاسبه خواهد شد.
نصب و راه اندازی محیط توسعه React Native
در این قسمت یاد میگیریم که چگونه می تونیم محیط توسعه ری اکت نیتیو رو به ساده ترین شکل ممکن راه اندازی کنیم و اولین پروژه خودمون رو بسازیم.
کاپوننتهای View ،Text و استایل دهی
در این قسمت با کامپوننتهای View و Text آشنا میشیم که چی هستند و چه مواقعی باید ازشون استفاده کنیم و همچنین در مورد استایل نویسی در React Native صحبت خواهیم که کرد درکل آیا در React native امکان نوشتن css هست یا نه و چگونه میتونیم استایل بنویسیم برای کامپوننتها.
نحوه استفاده از State
در این قسمت یاد میگیریم که چگونه از State استفاده کنیم که تنها برای یادآوری قرار داده شده تا نمایش بدیم که هیچ تفاوتی با State ها در ReactJs ندارن.
تبدیل کامپوننتهای تابعی به نوع کلاسی
در این قسمت یاد میگیریم که چگونه می تونیم کامپوننتهای تابعی نوشته شده را به کامپوننتهای نوع تابعی تبدیل کنیم که تفاوت هرکدام را ببینیم چونکه در این دوره تنها از کامپوننتهای نوع تابعی استفاده خواهد شد.
کامپوننت TextInput
در این قسمت با نحوه استفاده از کامپوننت TextInput آشنا میشیم به همراه مثال که وقتی کاربر موارد خواسته شده رو وارد کرد با استفاده از رویداد onChangeText به صورت همزمان بتونیم در کامپوننت Text به نمایش بزاریم و همچنین با پراپ هایی که زیاد مورد استفاده قرار داده میشن از جمله multiline برای نوشتن چندین خط در TextInput و placeholder و keyboardType که آیا تنها اعداد را در صفحه کلید نمایش بدیم یا حروف نیز آشنا خواهیم شد.
کامپوننت ScrollView
در این قسمت یاد میگیریم که چگونه می تونیم لیستی از داده ها را حلقه زده و به نمایش بزاریم و اگر داده ها بیشتر از میزان اندازه صفحه نمایش بود با استفاده از کامپوننت ScrollView قابلیت اسکرول کردن به کاربر میدیم که بتونه با بالا یا پائین کشیدن تمامی داده ها رو مشاهده کنه.
کامپوننت FlatList
نمایش آنلاین این بخش رایگان است
در این قسمت یاد میگیریم که چگونه می تونیم لیستی از داده ها را حلقه زده و به نمایش بزاریم توسط کامپوننت FlatList که نسبت به ScrollView مزایای بهتر و عملکرد بهتری را دارا می باشد.
کامپوننت Touchable
در این قسمت یاد میگیریم که چگونه می توانیم قابلیت اضافه کردن رویداد لمس را به المنت های رندر شده توسط کامپوننت Touchable اضافه کنیم.
ساخت اپلیکیشن مدیریت کننده اشخاص بخش اول
در این قسمت با مباحثی که تا الان آموزش داده شده شروع به ساخت اپلیکیشنی برای مدیریت اشخاص می کنیم تا مباحث آموزش داده شده را در عمل استفاده کنیم.
ساخت اپلیکیشن مدیریت کننده اشخاص بخش دوم
در این قسمت با مباحثی که تا الان آموزش داده شده شروع به ساخت اپلیکیشنی برای مدیریت اشخاص می کنیم تا مباحث آموزش داده شده را در عمل استفاده کنیم و با کامپوننتهای Alert و TouchableWithoutFeedback نیز آشنا خواهیم شد.
Flexbox
نمایش آنلاین این بخش رایگان است
در این قسمت با Flexbox آشنا خواهیم شد که به چه صورت با استفاده از Flex المنتهای رندر شده را در مکانهای مورد نظر قرار دهیم.
استفاده از آیکون ها
نمایش آنلاین این بخش رایگان است
در این قسمت به نحوه استفاده و اضافه کردن آیکون ها از فونت های متفاوت موجود که توسط Expo به راحتی در اختیار ما قرار داده شده خواهیم پرداخت.
استفاده از فونت سفارشی
در این قسمت به نحوه اضافه کردن فونت های سفارشی در پروژه خواهیم پرداخت.
استایل گلوبال
در چندین قسمت گذشته با هم آموختیم که می توانیم در هر کامپوننت استایل های مربوطه را بنویسیم یا استایل دهی کنیم. مشکلی که در آینده یا پروژه های بزرگ پیش خواهد آمد تکه تکه بودن استایل ها خواهد بود که در این قسمت به نحوه ایجاد استایلهای گلوبال می پردازیم تا تمامیه استایلهای مورد نیاز پروژه را در یک مکان داشته باشیم.
کامپوننت SectionList
کامپوننت SectionList نیز همانند کامپوننتهای FlatList و ScrollView برای به نمایش گذاشتن لیستی از داده ها مورد استفاده قرار داده میشود تنها تفاوت قابلیت نمایش بخش ها و سفارشی سازی آنها می باشد که در این جلسه خواهیم آموخت.
کامپوننت Image
در این قسمت در مورد نحوه قرار دادن تصاویر لوکال و آنلاین با استفاده از کامپوننت Image صحبت خواهیم کرد.
دیباگ اپلیکیشن توسط Chrome DevTools
مهمترین مهارتی که هر برنامه نویس باید داشته باشد مهارت خطایابی یا همون دیباگ کردن هست، که در این قسمت باهم نحوه دیباگ کردن اپلیکیشن توسط Developer Tools مرورگر معروف Google Chrome را خواهیم آموخت.
دیباگ اپلیکیشن توسط VSCode
مهمترین مهارتی که هر برنامه نویس باید داشته باشد مهارت خطایابی یا همون دیباگ کردن هست، که در این قسمت باهم نحوه دیباگ کردن اپلیکیشن توسط Visual Studio Code را خواهیم آموخت.
پابلیش اپلیکیشن در Expo
در این قسمت با نحوه پابلیش اپلیکیشن ساخته شده در Expo آشنا خواهیم شد تا بتوانیم اپلیکیشن در دست ساخت خود را به دیگر دوستان و هم تیمی ها خود جهت تست ارسال کنیم.
مجازی ساز اندروید Nox Player
در این قسمت با مجازی ساز اندروید Nox Player جهت استفاده به عنوان محیط توسعه اپلیکیشن های React Native آشنا میشویم.
Stack Navigator
در این قسمت با Stack Navigator ،که یک مدل جهت یابی درReact Navigation است، آشنا میشویم.
Navigation Props
در این قسمت با پراپ هایی که React Navigation در دسترس ما قرار میدهد آشنا میشویم که به چه صورت می توانیم صفحات را در Stack Navigator مدیریت کنیم.
پیکربندی Header Bar
در این قسمت با پیکربندی هدری که Stack Navigator در اختیار ما قرار داده آشنا خواهیم شد که به چه صورت می توانیم استایل دهی کنیم.
Header Buttons
در این قسمت با قرار دادن کامپوننتهای سفارشی در هدر، تغییر عنوان صفحه با استفاده از رویدادها و اضافه کردن دکمه به هدر بار آشنا خواهیم شد.
Nesting Navigators
یکی از سخترین موارد یادگیری Navigation در React Native بحث تو در تو نوشتن Navigatorها می باشد که در این جلسه به صورت خیلی ساده توسط ورژن جدید react-navigation آموزش داده شده.
چرخه حیات Navigation
همانطوری که باید با چرخه حیات کامپوننتها در ری اکت آشنا باشید، ما همان چرخه حیات را هم در React Native داریم و قابل استفاده هست. تنها یا یک تفاوت که صفحات رندر شده یا Mount شده در React Native دیگر قابلیت Unmount شدن را ندارند و اگر بخواهیم کارکردی پیاده سازی کنیم که برخی کدهای نوشته شده تنها زمانی که کاربر وارد این صفحه شد اجرا شوند می توانیم از componentDidMount بهر ببریم اما زمانی که کاربر قصد خارج شدن را از صفحه داشت باید از قابلیتهایی که react navigation در دسترس ما قرار داده بهره ببریم که در این قسمت باهم خواهیم آموخت.
Fullscreen Modal
در برخی شرایط نیازمنده استفاده از Modal یا صفحاتی که تنها برای یک کار کوچک مثل popup مورد استفاده قرار میگیرند داریم که میتوانیم از قابلیتی که React navigation در اختیار ما قرار داده است استفاده کنیم به نام fullscreen modal.
کامپوننت Statusbar و ماژول Platform
در این قسمت با رسپانسیو کردن UI طراحی شده به روش صحیح با استفاده از کامپوننت Statusbar وماژول Platform آشنا خواهیم شد.
Dimensions
در این قسمت در مورد ابعاد صفحه نمایش صحبت خواهیم کرد تا با استفاده از Dimensions که React Native در اختیار ما قرار داده بتونیم بسته به اندازه صفحه نمایش گوشی کاربر UI خودمون رو رسپانسیو کنیم و کنترل این رو داشته باشیم که اگر صفحه عمودی بود به چه صورت نمایش داده بشه در غیر این صورت اگر افقی بود به چه صورت
نوشتن کدهای مختص هر پلتفرم
در این قسمت خواهیم آموخت که برای هر سیستم عامل بتوانیم کدهای مختص بنویسیم تا کنترل کامل روی رسپانیو بودن UI داشته باشیم.
آماده سازی پروژه تاپلرن
در این قسمت به آماده سازی محیط کاری برای شروع پروژه تاپلرن خواهیم پرداخت
ساخت Welcome Screen
در این قسمت با نحوه ساخت واکنشگرای صفحه خوش آمدید اپلیکیشن تاپلرن آشنا خواهیم شد
کتابخانه Formik
در این قسمت با کتابخانه معروف Formik که برای ساخت فرم ها در React و React Native مورد استفاده قرار می گیرد آشنا خواهیم شد.
اعتبار سنجی فرم توسط Yup
در این قسمت با ابزاری عالی با نام Yup که برای اعتبار سنجی فرم ها در دنبای جاوااسکریپت مورد استفاده قرار میگیرد آشنا خواهیم شد.
نمایش خطا در فرم
در این قسمت با نمایش صحیح خطا در فرم ها توسط قابلیت Formik آشنا خواهیم شد.
ساخت TextInput سفارشی
در این قسمت شروع به ساخت یک کامپوننت TextInput سفارشی خواهیم کرد تا تمامیه استایلهایی که نیاز داریم را داشته باشد تا بتوانیم یکبار نوشته و در همه جا ازش بهره ببریم.
تایید تکرار کلمه عبور توسط Yup
در این قسمت با نحوه تایید تکرار کلمه عبور با استفاده از ابزار پرطرفدار Yup آشنا خواهیم شد.
کامپوننت ToplearnFormField
در این قسمت به Refactor کردن کدهای صفحات ثبت نام و ورود خواهیم پرداخت با ساخت یک کامپوننت جدید به نام ToplearnFormField
کامپوننت Toplearn Form
در این قسمت به Refactor کردن Formik با ساخت یک کامپوننت جدید به نام ToplearnForm خواهیم پرداخت.
کامپوننت Submit Button
در این قسمت به Refactor کردن دکمه سفارشی ساخته شده در فرم ها خواهیم پرداخت و همچنین با یک هک خیلی عالی برای جلوگیری از import های زیاد آشنا خواهیم شد.
کامپوننت Screen
در این قسمت با هم خواهیم آموخت چطور با ساخت یک کامپوننت به نام Screen می توانیم از نوشتن کدهای تکراری جلوگیری کنیم
ساخت Bottom Tab Navigator
در این قسمت با استفاده از Bottom Tab Navigator به ساخت صفحه اصلی خواهیم پرداخت.
پیکربندی Bottom Tabs بخش اول
در این قسمت به پیکربندی و Refactor کردن Bottom Tabs خواهیم پرداخت.
پیکربندی Bottom Tabs بخش دوم
در این قسمت به پیکربندی و Refactor کردن Bottom Tabs خواهیم پرداخت
Refactor کردن Stack Navigator و فونت ها
در این قسمت همانطور که Tab Navigator رو Refactor کردیم Stack Navigator را هم به همان صورت در یک فایل جدا قرار داده و نه تنها Stack Navigator بلکه توابع فونت ها را نیز در فایل جدا قرار خواهیم داد.
ساخت صفحه اکانت کاربری بخش اول
در این قسمت به ساخت و استایل دهی صفحه اکانت کاربری خواهیم پرداخت.
ساخت صفحه اکانت کاربری بخش دوم
در این قسمت به ساخت و استایل دهی صفحه اکانت کاربری خواهیم پرداخت.
ساخت صفحه اکانت کاربری بخش سوم
در این قسمت به ساخت و استایل دهی صفحه اکانت کاربری خواهیم پرداخت.
صفحه دوره ها
در این قسمت به ساخت ادامه صفحه دوره ها جهت نمایش دوره های تاپلرن خواهیم پرداخت.
ساخت کامپوننت Card
در این قسمت به ساخت کامپوننتی به نام Card برای نمایش دوره ها به صورت خیلی زیبا خواهیم پرداخت
استفاده از Material Top Tab بخش اول
در این قسمت با نحوه استفاده از Material Top Tab Navigator آشنا خواهیم شد
استفاده از Material Top Tab بخش دوم
در این قسمت با نحوه استفاده از Material Top Tab Navigator آشنا خواهیم شد
ساخت و استفاده از Swipable بخش اول
در این قسمت با استفاده از کامپوننت Swipable به نمایش لیست دوره های من خواهیم پرداخت.
ساخت و استفاده از Swipable بخش دوم
در این قسمت با استفاده از کامپوننت Swipable به نمایش لیست دوره های من خواهیم پرداخت
ساخت Alert تائید پاک کردن دوره
در این قسمت با استفاده از کامپوننت Alert تائیدیه پاک کردن دوره را به صورت زیبا و تمیز خواهیم ساخت
ساخت صفحه توضیحات دوره بخش اول
در این قسمت با نحوه ساخت و ارسال دوره به صفحه توضیحات آشنا خواهیم شد
ساخت صفحه توضیحات دوره بخش دوم
در این قسمت با نحوه ساخت و ارسال دوره به صفحه توضیحات آشنا خواهیم شد.
ارتباط با سرور توسط Axios
در این قسمت با نحوه ارتباط با سرور و دریافت و نمایش داده ها آشنا خواهیم شد.
ویرایش صفحه توضیحات دوره
در این قسمت به ویرایش صفحه توضیحات دوره خواهیم پرداخت و همچنین مشکل overflow توضیحات دوره را نیز بر طرف خواهیم کرد.
چک کردن دسترسی به اینترنت
در این قسمت با نحوه چک کردن دسترسی به اینترنت آشنا خواهیم شد تا بتوانیم کنترل بیشتری بر روی اپلیکیشن داشته باشیم.
استفاده از React Context بخش اول
در این قسمت با نحوه استفاده از React Context Api آشنا خواهیم شد.
استفاده از React Context بخش دوم
در این قسمت با نحوه استفاده از React Context Api آشنا خواهیم شد.
ثبت نام کاربر
در این قسمت با نحوه ثبت نام کاربران و ارسال اطلاعات جهت ثبت نام به سرور آشنا خواهیم شد.
نمایش Toast برای ثبت نام موفق
در این قسمت با نحوه نمایش Toast Message در صفحه Login برای موفقیت آمیز بودن ثبت نام آشنا خواهیم شد.
استفاده مجدد از Toast
در این قسمت به Refactor کردن Toast Message ها جهت استفاده مجدد این کامپوننت بدون تکرار خواهیم پرداخت.
مدیریت ورود کاربر
در این قسمت در مورد نحوه ورود کاربر و دریافت داده های احراز هویت آشنا خواهیم شد
Stack Actions
در این قسمت با نحوه مدیریت استک مسیرها بیشتر آشنا خواهیم شد تا کنترل بیشتری در مسیرها داشته باشیم.
خروج با 2 ضربه بر دکمه برگشت
در این قسمت با نحوه خروج 2 ضربه ایی روی دکمه برگشت آشنا خواهیم شد.
شروع کار با Redux
در این قسمت با ریداکس و نحوه عملکرد آن جهت بهبود بخشیدن به اپلیکیشن آشنا خواهیم شد.
ساخت Action
در این قسمت با نحوه ساخت یک ساختار عالی برای بهره بردن بیشتر از Action ها آشنا خواهیم شد.
استفاده از Store به جای Context بخش اول
در این قسمت با نحوه پیاده سازی و استفاده از ریداکس به جای Context آشنا خواهیم شد.
استفاده از Store به جای Context بخش دوم
در این قسمت با نحوه پیاده سازی و استفاده از ریداکس به جای Context آشنا خواهیم شد
Animated Splash Screen
در این قسمت در مورد نحوه پیکربندی و ساخت Splash Screen صحبت خواهیم کرد.
دسترسی به گالری توسط Image Picker
در این قسمت با نحوه دسترسی به گالری گوشی کاربر و انتخاب عکس آشنا خواهیم شد.
دسترسی به دوربین توسط Image Picker
در این قسمت با نحوه دسترسی به دوربین گوشی کاربر و گرفتن عکس آشنا خواهیم شد.
React Native Cli بخش اول
در این قسمت با نحوه ساخت پروژه بدون استفاده از Expo توسط React Native Cli آشنا خواهیم شد
React Native Cli بخش دوم
در این قسمت با نحوه ساخت پروژه بدون استفاده از Expo توسط React Native Cli آشنا خواهیم شد.
توضیح کامل ساختار پروژه
در این قسمت به توضیح کامل ساختار یک پروژه ری اکت نیتیو خواهیم پرداخت.
ساخت محیط توسعه پروژه یاداشتهای من
در این قسمت به ساخت محیط توسعه پروژه جدید خواهیم پرداخت.
آشنایی با ساختار Native Base و ساخت Layout
در این قسمت با ساختار Native Base آشنا خواهیم شد.
ساخت صفحه خانه و پیاده سازی Stack
در این قسمت اولین صفحه را باهم به همراه Stack Navigation خواهیم ساخت.
نحوه اضافه کردن فونت سفارشی
در این قسمت با نحوه راست چین سازی اپلیکیشن و اضافه کردن فونت سفارشی به پروژه آشنا خواهیم شد
پیاده سازی عملیات CRUD
در این قسمت با پیاده سازی CRUD در پایگاه داده Realm آشنا خواهیم شد
ساخت صفحه ویرایش یاداشت
در این قسمت با نحوه ساخت و پیاده سازی بروزرسانی یاداشتهای و حذف آنها آشنا خواهیم شد.
تغییر نام و آیکون اپلیکیشن
در این قسمت با نحوه تغییر آیکون و نام اپلیکیشن آشنا خواهیم شد.
پیاده سازی Splash Screen
در این قسمت با نحوه پیاده سازی Splash Screen در Cli آشنا خواهیم شد
چند زبانه سازی اپلیکیشن
در این قسمت با نحوه پیاده سازی یک اپلیکیشن چند زبانه آشنا خواهیم شد.
پیاده سازی پوش نوتیفیکیشن
در این قسمت به نحوه پیاده سازی پوش نوتیفیکیشن توسط فایربیس خواهیم پرداخت.
تولید APK امضا شده بخش اول
در این قسمت با نحوه تولید فایل نصبی APK امضا شده جهت انتشار در گوگل پلی و سایر پلتفرم ها آشنا خواهیم شد.
نظرات کاربران در رابطه با این دوره