آموزش Kotlin برای Android & Java Developers: Clean Code در اندروید

Kotlin for Android & Java Developers: Clean Code on Android

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: یک توسعه‌دهنده حرفه‌ای Kotlin شوید و در برنامه‌های اندرویدی خود کدهای پاک‌تر از جاوا بنویسید، از کدهای boilerplate اجتناب کنید. نوشتن کد تمیز با Kotlin اجتناب از مراسم و کدهای boilerplate در اطراف API‌های Android از برنامه‌نویسی کاربردی برای نوشتن کد مختصر و رسا استفاده کنید. ایجاد برنامه‌های Android با Kotlin Write SQLite خوانا تراکنش ها با استفاده از توابع افزونه در Kotlin استفاده از برنامه های افزودنی اندروید Kotlin برای جلوگیری از findViewById() ایجاد چندین فعالیت، طرح بندی و منوها
  • یاد بگیرید که از Kotlin به روش صحیح برای بهبود کد برنامه Android خود استفاده کنید

  • با استفاده از مفاهیم کاربردی و شی گرا، کدهای بی خطر، مختصر و قابل خواندن را در Kotlin بنویسید

  • هنگام استفاده از APIهای Android (مانند SQLite) با استفاده از توابع برنامه افزودنی مرتبه بالاتر، کدهای غیرضروری را حل کنید

  • از Android Studio به طور موثر برای سرعت بخشیدن به گردش کار توسعه خود استفاده کنید

  • در صورت گیر افتادن، در طول مسیر به سؤالات خود پاسخ دهید


چرا این دوره را بگذرانید؟

من از اواخر سال 2015 با Kotlin درگیر بودم، قبل از اینکه در اولین نسخه پایدار آن منتشر شود. من به عنوان مدرس دوره "کوتلین برای مبتدیان"، می دانم که دانش آموزان به چه موضوعاتی علاقه دارند یا با آنها گیر می کنند.

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

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


چه چیزی این دوره را خاص می کند؟

از زمان اعلام #IO17 گوگل مبنی بر پشتیبانی رسمی از Kotlin در اندروید، دوره های جدید زیادی در این زمینه منتشر شده است -- که بسیار عالی است زیرا به گسترش زبان کمک می کند.

چیزی که این دوره را خاص می‌کند این است که در حالی که اکثر دوره‌های دیگر سبک کدنویسی خوبی را آموزش نمی‌دهند، این دوره بر تولید کد تمیز تمرکز دارد و به شما می‌آموزد که از ویژگی‌های شگفت‌انگیز کاتلین برای نوشتن کد بهتر از جاوا استفاده کنید. به این ترتیب، با استفاده از Kotlin به جای جاوا، به عنوان مثال، سود زیادی خواهید داشت. با اجتناب از کد boilerplate در اطراف بسیاری از APIهای Android.


آنچه این دوره نیست

این دوره یک مرجع اندروید نیست، فکر می‌کنم شما در حال حاضر حداقل تجربه Android را دارید. در عوض، با استفاده از ویژگی‌های زبان قدرتمند Kotlin برای جلوگیری از برگزاری مراسم غیرضروری در اطراف APIهای Android، یاد می‌گیرید که کدهای پاک‌تر برای برنامه‌های خود بنویسید. همچنین، در پایان دوره، می‌توانید از Kotlin برای هر نوع پروژه استفاده کنید - نه فقط برای برنامه‌های Android.


آنچه دانش‌آموزان درباره من می‌گویند (برگرفته از "Kotlin برای مبتدیان")

"TLDR؛ یکی از بهترین دوره های کاتلین برای مبتدیان در Udemy! من کمی وقت گذاشتم تا این بررسی را بنویسم و ​​می خواستم دوره را تمام کنم، سپس دوره های دیگر ارائه شده در اینجا در Udemy را تماشا کنم و سپس می خواهم ببینم پیتر در تدریس چقدر خوب است. اصول اولیه Kotlin را برای من به کار ببرم تا بتوانم دانش خود را در حین نوشتن برنامه های اندرویدی واقعی به کار ببرم. و خوشحالم که گزارش بدهم که بسیار به من کمک کرده است. اشتباه نیست اگر بگویم که من حتی به راحتی چراها و چه چیزهایی را درک می کردم. اگر استاد در دوره های دیگر با جزئیات توضیح نمی داد ... ممنون پیتر! شما به من خوب یاد دادید! [...]"

- حسن

"معرفی عالی برای کاتلین و برنامه نویسی برای برنامه نویسان مبتدی!"

- Per-Erik


"پیگیری آسان، مربی با سرعت عالی که برای مبتدیان دوستانه است."

- رونالدو

" فراتر از عالی!!!! "

- مایک

"شروع عالی تا کنون. منتظر یک دوره عالی. بهترین دوره آنلاینی که من گذرانده ام، تا کنون!! "

- جیمز


"این یک دوره بسیار خوب برای دریافت یک دید کلی از Kotlin بود. همه چیز به وضوح توضیح داده شد و مثال ها و تمرین ها بسیار مفید بودند. خوشحالم که پیتر در حال در نظر گرفتن دوره ای برای اندروید با استفاده از Kotlin است زیرا من هستم کنجکاو در مورد آن موضوع."

- جیمز

آنچه خواهید آموخت

  • چگونه با استفاده از Kotlin همه آنچه را که برای توسعه Android نیاز دارید تنظیم کنید (به عنوان مثال نحوه نصب Android Studio)

  • مبانی Kotlin: متغیرها، امنیت صفر، تغییرناپذیری، شرطی‌ها، حلقه‌ها، توابع، مدیریت استثنا

  • برنامه نویسی تابعی در کاتلین: توابع مرتبه بالاتر، عبارات لامبدا، ارزیابی تنبل، توالی های تنبل، کتابخانه استاندارد کاتلین

  • برنامه نویسی شی گرا در Kotlin: همه چیزهایی که از جاوا + کلاس های داده، توابع افزودنی، ارسال های هوشمند، اعلان های شی، تفاوت های جاوا در مورد وراثت می دانید

  • توسعه Android با Kotlin: ایجاد فعالیت‌ها، طرح‌بندی‌ها، منوها، شنوندگان کلیک، کار در مورد APIهای پیچیده Android غیرضروری، بهبود تراکنش‌های SQLite با توابع برنامه افزودنی، اجتناب از خالی بودن کد شما

------

کاتلین چیست؟

Kotlin یک زبان مدرن برای JVM است و تنها زبان رسمی پشتیبانی شده در اندروید در کنار جاوا است. این توسط Jetbrains، سازنده IntelliJ که اندروید استودیو بر اساس آن است، توسعه یافته است.

از زمان اعلام رسمی گوگل برای پشتیبانی رسمی از Kotlin در سال 2017، علاقه به این زبان به شدت افزایش یافته است -- و به همراه آن تعداد آموزش ها، دوره ها، کتاب ها و همچنین پیشنهادهای شغلی برای Kotlin. زمان بسیار خوبی برای شیرجه زدن به این زبان مدرن و پیشی گرفتن از دیگر توسعه دهندگان اندروید است!

Kotlin با طراحی زبان مدرن خود که بهترین شیوه‌های صنعت را در خود جای داده است، به شما امکان می‌دهد کدهای بسیار رسا، قابل فهم و ایمن بنویسید - در حالی که 100٪ با جاوا سازگار است. می توانید از کلاس ها و روش های جاوا از Kotlin و برعکس استفاده کنید.

این دوره به شما نشان می‌دهد که منظور من چه ویژگی‌های زبانی است و چگونه می‌توانید آنها را برای نوشتن کدهای کلاس جهانی اعمال کنید.


سرفصل ها و درس ها

معرفی Introduction

  • آنچه در این دوره خواهید آموخت What You'll Learn in this Course

  • آنچه در این دوره خواهید آموخت What You'll Learn in this Course

  • از این دوره نهایت استفاده را ببرید! Make the Most of this Course!

  • از این دوره نهایت استفاده را ببرید! Make the Most of this Course!

  • چه کسی از Kotlin استفاده می کند؟ Who's Using Kotlin?

  • چه کسی از Kotlin استفاده می کند؟ Who's Using Kotlin?

معرفی Introduction

آماده شدن Get Ready

  • معرفی Introduction

  • جاوا JDK 8 را نصب کنید Install the Java JDK 8

  • اندروید استودیو را نصب کنید Install Android Studio

  • اندروید استودیو را نصب کنید Install Android Studio

  • راه اندازی یک پروژه در Android Studio Set Up a Project in Android Studio

  • خلاصه Recap

آماده شدن Get Ready

  • معرفی Introduction

  • جاوا JDK 8 را نصب کنید Install the Java JDK 8

  • راه اندازی یک پروژه در Android Studio Set Up a Project in Android Studio

  • خلاصه Recap

مبانی کاتلین Kotlin Basics

  • معرفی Introduction

  • متغیرها و انواع داده ها Variables and Data Types

  • متغیرها و انواع داده ها Variables and Data Types

  • ایمنی پوچ در کاتلین Null Safety in Kotlin

  • ایمنی پوچ در کاتلین Null Safety in Kotlin

  • شرایط: عبارات "اگر". Conditionals: "if" Expressions

  • شرایط: عبارات "اگر". Conditionals: "if" Expressions

  • شرایط: عبارات "وقتی". Conditionals: "when" Expressions

  • مجموعه ها Collections

  • مجموعه ها Collections

  • "برای" حلقه ها "for" Loops

  • حلقه های "در حالی که". "while" Loops

  • کارکرد Functions

  • برای کدنویسی جدی Kotlin آماده شوید (IntelliJ IDEA را راه اندازی کنید) Get Ready for Serious Kotlin Coding (Set up IntelliJ IDEA)

  • برای کدنویسی جدی Kotlin آماده شوید (IntelliJ IDEA را راه اندازی کنید) Get Ready for Serious Kotlin Coding (Set up IntelliJ IDEA)

  • یک تابع main() ایجاد کنید Create a main() Function

  • یک تابع main() ایجاد کنید Create a main() Function

  • چالش: خواندن نام کاربر از کنسول Challenge: Reading the User's Name from the Console

  • چالش: استفاده از مجموعه ها و حلقه ها Challenge: Using Collections and Loops

  • چالش: استفاده از مجموعه ها و حلقه ها Challenge: Using Collections and Loops

  • Arguments نامگذاری شده و مقادیر پارامترهای پیش فرض Named Arguments & Default Parameter Values

  • استثناها Exceptions

  • چرا استثناهای بررسی شده وجود ندارد؟ Why No Checked Exceptions?

  • خلاصه Recap

مبانی کاتلین Kotlin Basics

  • معرفی Introduction

  • شرایط: عبارات "وقتی". Conditionals: "when" Expressions

  • "برای" حلقه ها "for" Loops

  • حلقه های "در حالی که". "while" Loops

  • کارکرد Functions

  • چالش: خواندن نام کاربر از کنسول Challenge: Reading the User's Name from the Console

  • Arguments نامگذاری شده و مقادیر پارامترهای پیش فرض Named Arguments & Default Parameter Values

  • استثناها Exceptions

  • چرا استثناهای بررسی شده وجود ندارد؟ Why No Checked Exceptions?

  • خلاصه Recap

برنامه نویسی تابعی Functional Programming

  • معرفی Introduction

  • برنامه نویسی تابعی چیست؟ What is Functional Programming?

  • برنامه نویسی تابعی چیست؟ What is Functional Programming?

  • برنامه نویسی تابعی II Functional Programming II

  • توابع لامبدا و مرتبه بالاتر Lambdas & Higher-Order Functions

  • توابع لامبدا و مرتبه بالاتر Lambdas & Higher-Order Functions

  • استفاده از map() و flatMap() Use map() and flatMap()

  • از take() و drop() استفاده کنید Use take() and drop()

  • استفاده از zip() Use zip()

  • چالش: برنامه نویسی تابعی برای تجزیه و تحلیل داده ها Challenge: Functional Programming for Data Analysis

  • زنجیره با هم کار می کند Chain Functions Together

  • سکانس های تنبل Lazy Sequences

  • سکانس های تنبل Lazy Sequences

  • مطالعه موردی: اجرای سکانس های تنبل Case Study: Performance of Lazy Sequences

  • کد در امتداد: دنباله تنبل بی نهایت از همه اعداد اول Code Along: Infinite Lazy Sequence of All Prime Numbers

  • کد در امتداد: دنباله تنبل بی نهایت از همه اعداد اول Code Along: Infinite Lazy Sequence of All Prime Numbers

  • از "let" Operator برای Scoping و Nullable ها استفاده کنید Use "let" Operator for Scoping and Nullables

  • از "let" Operator برای Scoping و Nullable ها استفاده کنید Use "let" Operator for Scoping and Nullables

  • از "with" برای بسیاری از تماس ها در یک شیء استفاده کنید Use "with" for Many Calls on the Same Object

  • از "with" برای بسیاری از تماس ها در یک شیء استفاده کنید Use "with" for Many Calls on the Same Object

  • استفاده از "استفاده" برای بسته شدن (مانند try-with-resources) Use "use" for Closeable (like try-with-resources)

  • توابع درون خطی Inline Functions

  • توابع درون خطی Inline Functions

  • خلاصه Recap

برنامه نویسی تابعی Functional Programming

  • معرفی Introduction

  • برنامه نویسی تابعی II Functional Programming II

  • استفاده از map() و flatMap() Use map() and flatMap()

  • از take() و drop() استفاده کنید Use take() and drop()

  • استفاده از zip() Use zip()

  • چالش: برنامه نویسی تابعی برای تجزیه و تحلیل داده ها Challenge: Functional Programming for Data Analysis

  • زنجیره با هم کار می کند Chain Functions Together

  • مطالعه موردی: اجرای سکانس های تنبل Case Study: Performance of Lazy Sequences

  • استفاده از "استفاده" برای بسته شدن (مانند try-with-resources) Use "use" for Closeable (like try-with-resources)

  • خلاصه Recap

شی گرایی در کاتلین Object-Orientation in Kotlin

  • معرفی Introduction

  • کلاس ها Classes

  • خواص با Getters & Setters Properties with Getters & Setters

  • سازندگان اولیه و ثانویه Primary and Secondary Constructors

  • مواد و روش ها Methods

  • مواد و روش ها Methods

  • توابع پسوند Extension Functions

  • توابع پسوند Extension Functions

  • کلاس های داده Data Classes

  • کلاس های داده Data Classes

  • Enums Enums

  • Enums Enums

  • وراثت Inheritance

  • کد همراه: مثال ارث Code Along: Inheritance Example

  • کد همراه: مثال ارث Code Along: Inheritance Example

  • کلاس های چکیده Abstract Classes

  • کلاس های چکیده Abstract Classes

  • رابط ها Interfaces

  • قوانین فراگیر Overriding Rules

  • قوانین فراگیر Overriding Rules

  • Casts هوشمند Smart Casts

  • قابل مشاهده ها Visibilities

  • اشیاء همراه برای اعضای "ایستا". Companion Objects for "Static" Members

  • اشیاء همراه برای اعضای "ایستا". Companion Objects for "Static" Members

  • اعلان‌های شی به‌عنوان تک‌تن Object Declarations as Singletons

  • اعلان‌های شی به‌عنوان تک‌تن Object Declarations as Singletons

  • بسته بندی و واردات Packages and Imports

  • کلاس های عمومی Generic Classes

  • کلاس های عمومی Generic Classes

  • توابع عمومی Generic Functions

  • توابع عمومی Generic Functions

  • کوواریانس Covariance

  • کوواریانس Covariance

  • کوواریانس: جاوا در مقابل کاتلین Covariance: Java vs Kotlin

  • کوواریانس: جاوا در مقابل کاتلین Covariance: Java vs Kotlin

  • کوواریانس در مقابل تضاد: "خارج" و "درون" Covariance vs Contravariance: "out" and "in"

  • کوواریانس در مقابل تضاد: "خارج" و "درون" Covariance vs Contravariance: "out" and "in"

  • خلاصه Recap

شی گرایی در کاتلین Object-Orientation in Kotlin

  • کلاس ها Classes

  • خواص با Getters & Setters Properties with Getters & Setters

  • سازندگان اولیه و ثانویه Primary and Secondary Constructors

  • وراثت Inheritance

  • رابط ها Interfaces

  • Casts هوشمند Smart Casts

  • قابل مشاهده ها Visibilities

  • بسته بندی و واردات Packages and Imports

  • خلاصه Recap

کاتلین برای اندروید -- اصول Kotlin for Android -- Fundamentals

  • معرفی Introduction

  • پروژه App را ایجاد کنید Create the App Project

  • نسخه های اندروید را بشناسید Understand the Android Versions

  • یک طرح بندی CardView ایجاد کنید و عناصر رابط کاربری را اضافه کنید Create a CardView Layout and Add UI Elements

  • از "برنامه های افزودنی اندروید Kotlin" استفاده کنید Use the "Kotlin Android Extensions"

  • از "برنامه های افزودنی اندروید Kotlin" استفاده کنید Use the "Kotlin Android Extensions"

  • چالش: متن ها و منبع تصویر را به صورت برنامه ای تنظیم کنید Challenge: Set Texts and Image Source Programmatically

  • راه حل چالش Challenge Solution

کاتلین برای اندروید -- اصول Kotlin for Android -- Fundamentals

  • معرفی Introduction

  • پروژه App را ایجاد کنید Create the App Project

  • نسخه های اندروید را بشناسید Understand the Android Versions

  • یک طرح بندی CardView ایجاد کنید و عناصر رابط کاربری را اضافه کنید Create a CardView Layout and Add UI Elements

  • چالش: متن ها و منبع تصویر را به صورت برنامه ای تنظیم کنید Challenge: Set Texts and Image Source Programmatically

  • راه حل چالش Challenge Solution

Kotlin برای اندروید -- پیاده سازی RecyclerView Kotlin for Android -- Implement a RecyclerView

  • معرفی Introduction

  • RecyclerView چیست؟ What is a RecyclerView?

  • RecyclerView چیست؟ What is a RecyclerView?

  • ایجاد کلاس داده "عادت" Create the Data Class "Habit"

  • پیاده سازی "HabitsAdapter" - قسمت اول Implement the "HabitsAdapter" - Part I

  • "HabitsAdapter" - قسمت دوم را اجرا کنید Implement the "HabitsAdapter" - Part II

  • "HabitsAdapter" - قسمت دوم را اجرا کنید Implement the "HabitsAdapter" - Part II

  • "HabitsAdapter" - قسمت III را پیاده سازی کنید Implement the "HabitsAdapter" - Part III

  • "HabitsAdapter" - قسمت III را پیاده سازی کنید Implement the "HabitsAdapter" - Part III

Kotlin برای اندروید -- پیاده سازی RecyclerView Kotlin for Android -- Implement a RecyclerView

  • معرفی Introduction

  • ایجاد کلاس داده "عادت" Create the Data Class "Habit"

  • پیاده سازی "HabitsAdapter" - قسمت اول Implement the "HabitsAdapter" - Part I

Kotlin برای اندروید -- به کاربران اجازه دهید عادت ایجاد کنند Kotlin for Android -- Let Users Create Habits

  • معرفی Introduction

  • یک منو اضافه کنید Add a Menu

  • یک منو اضافه کنید Add a Menu

  • یک فعالیت دوم اضافه کنید Add a Second Activity

  • یک فعالیت دوم اضافه کنید Add a Second Activity

  • از Intent برای تغییر فعالیت ها استفاده کنید Use Intents to Switch Activities

  • از Intent برای تغییر فعالیت ها استفاده کنید Use Intents to Switch Activities

  • چالش: طرح بندی فعالیت را بسازید Challenge: Build the Activity Layout

  • راه حل چالش Challenge Solution

  • راه حل چالش Challenge Solution

  • به کاربران اجازه دهید یک تصویر را انتخاب کنند Let Users Choose an Image

  • تصویر انتخابی را برگردانید (onActivityResult) Get the Selected Image Back (onActivityResult)

  • تصویر انتخابی را برگردانید (onActivityResult) Get the Selected Image Back (onActivityResult)

  • نمایش پیام های خطا به کاربر Show Error Messages to the User

  • نمایش پیام های خطا به کاربر Show Error Messages to the User

  • Code Along: یک تابع پسوند برای "EditText" Code Along: An Extension Function for "EditText"

  • Code Along: یک تابع پسوند برای "EditText" Code Along: An Extension Function for "EditText"

Kotlin برای اندروید -- به کاربران اجازه دهید عادت ایجاد کنند Kotlin for Android -- Let Users Create Habits

  • معرفی Introduction

  • چالش: طرح بندی فعالیت را بسازید Challenge: Build the Activity Layout

  • راه حل چالش Challenge Solution

  • به کاربران اجازه دهید یک تصویر را انتخاب کنند Let Users Choose an Image

Kotlin برای اندروید -- از SQLite به روش Kotlin استفاده کنید! Kotlin for Android -- Use SQLite the Kotlin Way!

  • معرفی Introduction

  • معرفی Introduction

  • معرفی SQLite Introducing SQLite

  • قراردادها را تعریف کنید Define the Contracts

  • قراردادها را تعریف کنید Define the Contracts

  • راهنما پایگاه داده را پیاده سازی کنید Implement the Database Helper

  • راهنما پایگاه داده را پیاده سازی کنید Implement the Database Helper

  • یک عادت را در SQLite ذخیره کنید Store a Habit to SQLite

  • یک عادت را در SQLite ذخیره کنید Store a Habit to SQLite

  • اجرای تراکنش های ایمن (که از بازگشت مجدد پشتیبانی می کنند) Implementing Secure Transactions (that support Rollback)

  • اجرای تراکنش های ایمن (که از بازگشت مجدد پشتیبانی می کنند) Implementing Secure Transactions (that support Rollback)

  • کد پاک: بهبود معاملات در کاتلین Clean Code: Improving Transactions in Kotlin

  • کد پاک: بهبود بیشتر معاملات و عملکرد Clean Code: Further Improving Transactions and Performance

  • عادت را در "CreateHabitActivity" ذخیره کنید Store the Habit in "CreateHabitActivity"

  • همه عادات را از SQLite بخوانید Read All Habits from SQLite

  • چالش: بهبود SQLiteDatabase.query (...) Challenge: Improve SQLiteDatabase.query(...)

  • راه حل چالش Challenge Solution

  • چالش: بهبود Cursor.getString (...) Challenge: Improve Cursor.getString(...)

  • راه حل چالش Challenge Solution

  • راه حل چالش Challenge Solution

  • افزودن فایل ها به دستگاه مجازی (Excursus) Add Files to the Virtual Device (Excursus)

Kotlin برای اندروید -- از SQLite به روش Kotlin استفاده کنید! Kotlin for Android -- Use SQLite the Kotlin Way!

  • معرفی Introduction

  • معرفی SQLite Introducing SQLite

  • کد پاک: بهبود معاملات در کاتلین Clean Code: Improving Transactions in Kotlin

  • کد پاک: بهبود بیشتر معاملات و عملکرد Clean Code: Further Improving Transactions and Performance

  • عادت را در "CreateHabitActivity" ذخیره کنید Store the Habit in "CreateHabitActivity"

  • همه عادات را از SQLite بخوانید Read All Habits from SQLite

  • چالش: بهبود SQLiteDatabase.query (...) Challenge: Improve SQLiteDatabase.query(...)

  • راه حل چالش Challenge Solution

  • چالش: بهبود Cursor.getString (...) Challenge: Improve Cursor.getString(...)

  • راه حل چالش Challenge Solution

  • افزودن فایل ها به دستگاه مجازی (Excursus) Add Files to the Virtual Device (Excursus)

جایزه Bonus

  • امتیاز: به عنوان یک توسعه دهنده نرم افزار به پتانسیل کامل خود برسید Bonus: Reach Your Full Potential As A Software Developer

جایزه Bonus

  • امتیاز: به عنوان یک توسعه دهنده نرم افزار به پتانسیل کامل خود برسید Bonus: Reach Your Full Potential As A Software Developer

نمایش نظرات

آموزش Kotlin برای Android & Java Developers: Clean Code در اندروید
جزییات دوره
9 hours
105
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
7,389
4.4 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Peter Sommerhoff Peter Sommerhoff

توسعه دهنده و مهندس نرم افزار - با بیش از 45000 دانشجوی شاد