<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد زارع شیرکوهی</title>
        <link>https://virgool.io/feed/@yashar0071</link>
        <description>علاقه اصلی من برنامه نویسی اندروید هستش اما نزدیک به یک ساله که وارد دنیای وب و بک اند شدم و عاشق nodejs و mern stack هستم</description>
        <language>fa</language>
        <pubDate>2026-07-06 13:40:37</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/253497/avatar/ecgiF1.png?height=120&amp;width=120</url>
            <title>محمد زارع شیرکوهی</title>
            <link>https://virgool.io/@yashar0071</link>
        </image>

                    <item>
                <title>آموزش رایگان برنامه نویسی اندروید</title>
                <link>https://virgool.io/@yashar0071/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-ttv6zymg30hn</link>
                <description>آموزش رایگان برنامه نویسی اندرویدسلام به همگی، تو این مقاله میخام بهتون یه سایتی رو معرفی کنم که برنامه نویسی اندروید رو با زبان خیلی ساده و از صفر مطلق آموزش میده، و از همه مهمتر اینکه آموزش های این سایت علاوه بر حرفه‌ای بودن، کاملا رایگانم هستش.این سایت بخش‌های مختلفی داره که تصمیم دارم تک تک بخش‌‌ها رو بهتون معرفی کنم.دوره صفر مطلق اندروید :تو این دوره قصد دارم از صفر مطلق برنامه نویسی اندروید رو آموزش  بدم، اینکه میگیم صفر مطلق یعنی از ابتدایی‌ترین موارد برنامه نویسی شروع  می‌کنیم. مفاهیم اولیه رو باهم یاد میگیریم و بعدش میریم سراغ آموزش نصب  محیط توسعه یعنی همون اندروید استودیو و افرادی که هیچی از برنامه نویسی  نمیدونن هم میتونن این دوره رو ببینن و برنامه نویسی اندروید رو یاد بگیرن و  این دوره هیچ گونه پیش نیازی ندارهبعد از نصب محیط توسعه شروع  میکنیم به آموزش برنامه نویسی اندروید و یه اپلیکیشن رو باهم دیگه پیاده  سازی میکنیم و بصورت پروژه محور اون رو جلو میبریم و به سطحی میرسونیم که  بشه توی مارکت‌های معروف داخل کشور مثل کافه بازار اون رو منتشر کرد.پس  اگه میخای برنامه نویسی اندروید رو درست و اصولی یاد بگیری و اولین  اپلیکیشن خودتو بنویسی و اون رو منتشر کنی تو این دوره با من همراه باش.تو این پروژه از زبانهای برنامه نویسی کاتلین و جاوا استفاده شده که با دیدن قسمت کاتلین، در واقع شما یک دوره رایگان آموزش کاتلین رو دیدین و تا حد خوبی به کاتلین مسلط میشین و استفاده از کاتلین توی اندروید رو کاملا یاد میگیرید.برای ورود به دوره رایگان صفر مطلق اندروید اینجا کلیک کنید. این دوره ویدیویی خفن ترین دوره این سایت هستش که مخصوص افرادیه که تازه میخان وارد برنامه نویسی اندروید بشن و بهش علاقه دارنسری آموزش‌های رایگان برنامه نویسی اندروید :تو این سری آموزش‌ها در مورد موارد برنامه نویسی خود اندروید آموزش داده شده، موارد زیر بخش هایی از این آموزش هاست و همگی بصورت کاملا رایگان در اختیار شماستساخت اولین پروژه در اندرویدساخت ماشین مجازی در اندرویدآموزش XML در اندرویدآموزش LinearLayout در اندرویدآموزش RelativeLayout در اندرویدآموزش RelativeLayout در اندرویدآموزش رسپانسیو با ConstraintLayourآموزش CanstraintLayoutمینی پروژه ConstraintLayoutآموزش اصولی xmlآموزش Activity اندرویدچرخه حیات (LifeCycle) برای اکتیویتیدریافت ورودی از کاربر انتقال داده بین اکتیویتی هاآموزش خطایابی با Logcatاعتبار سنجی ورودی ها و پیام Toastاستفاده از فونت دلخواه در اندرویدموزش شخصی سازی TextViewآموزش TextViewدر اندرویدآموزش کار با Button ها در اندرویدساخت Splash در اندرویدآموزش اصولی Toast در اندرویدآموزش SnackBar در اندرویدآموزش AlertDialog در اندرویدآموزش Custom Dialogانتقال بین اکتیویتی ها با انیمیشنکار با انیمیشن ها در اندرویدساخت یک موزیک پلیر ساده برای اندرویدچرا باید از وکتور و svg استفاده بشهآموزش SeekBar در موزیک پلیرافزودن زمان به موزیک پلیرآموزش dataBindingآموزش تایپ 10 انگشتیدیکامپایل کردن سورس اپ اندرویدیامن سازی سورس کد اندرویدینحوه گرفتن خروجی APK از اندرویدآموزش گرفتن خروجی AABآموزش‌ رایگان شی گرایی :تو این سری، بصورت کامل شیء گرایی رو یاد میگیری و روش مسلط میشی، این سری آموزش ها هم کاملا رایگان هستن پس حیفه از دست بدیشی گرایی چیستتفاوت بین کلاس و شیءآموزش ساخت کلاس و شیءآموزش سطوح دسترسیآموزش encapsulationآموزش setter و Getterپاک سازی حافظه heap با گاربج کالکتورفرق حافظه Heap با Stackکانستراکتور چیستآموزش کانستراکتورآموزش استفاده از thisمتد finalize چیستکاربرد import در اندرویدآموزش متغیر و متد استاتیکاستفاده از متغیرهای استاتیکمفهوم وراثت در شی گراییآموزش overrideآموزش کامل سطوح دسترسی وراثتکاربرد super در وراثتتفاوت override و overloadاصول چندریختی ploymorphismآموزش برنامه نویسی چند ریختیآموزش کلاس و متد abstractآموزش interfaceقسمت مقالات تخصصیتو این قسمت هم یک سری مقالات متنی هستش که میتونید استفاده کنید، یک دوره آموزش رایگان کاتلین بصورت مقاله محور هستش که میتونید از اینجا بهش دسترسی داشته باشید.نتیجه گیری:اگه از برنامه نویسی اندروید خوشت میاد، دوست داری یاد بگیری و توش به سرعت رشد کنی و اپلیکیشن بنویسی ، سایت ترولرن رو که یه سایت تخصصی برای برنامه نویسان اندروید هستش، از دست نده!</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Wed, 09 Feb 2022 16:29:58 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب جاوا + Environment variables</title>
                <link>https://virgool.io/@yashar0071/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D8%AC%D8%A7%D9%88%D8%A7-environment-variables-qmlvuvoacwng</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!آموزش نصب جاوا تو این مقاله آموزش نصب جاوا رو به صورت کاملا اصولی توضیح دادیم، شما هم حتما به این روش جاوا رو نصب کنید که به مشکل نخورید.قبل از هر چیزی بیایید چک کنیم جاوا در حال حاضر روی سیستم شما نصب است  یا خیر، برای این کار کافیست وارد cmd ویندوز خود شده (منوی استارت را باز  کنید و تایپ کنید cmd) و کد زیر را وارد کنید:java -versionاگر جاوا روی سیستم شما نصب باشد پبامی شبیه به پیام زیر دریافت می‌کنید  که البته دقت داشته باشید متناسب با ورژن جاوایی که روی سیستم شما نصب است  ممکن است این پیام متفاوت باشد:java version &amp;quot1.8.0_291&amp;quotJava(TM) SE Runtime Environment (build 1.8.0_291-b10)Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)اگر پیامی به غیر از پیام بالا دریافت کردید به این معناست که جاوا بر  روی سیستم شما نصب نیست، پس باید آن را دانلود کرده و نصب کنیم. برای نصب  جاوا می‌توانید به سایت اوراکل مراجعه کنید. البته یک سری سایت‌های ایرانی هم هستن که میتونید راحت تر ازشون دانلود کنید برای مثال میتونید جاوا رو از اینجا دانلود کنید.بعد از اینکه جاوا رو دانلود کردین به سادگی با چند تا next نصب میشه و  خیلی فرآیند پیچیده‌ای نداره، اما خب اصل ماجرا از اینجا شروه میشه که باید  بریم جاوا رو به عنوان یک Environment variables جدید به سیستم معرفی کنیم  که از این به بعد سیستم بتونه کامند‌های جاوا رو بشناسه و هر جا تو cmd  زدیم java اوکی باشه و دستوراتش بدون مشکل اجرا بشه.طریقه افزودن جاوا به Environment variables :مرحله اول : وارد منوی استارت بشین و کلمه Environment variables رو  سرچ کنید و روی گزینه edit the system environment variables کلیک کنید  مطابق تصویر زیر:مرحله دوم : مطابق تصویر روی گزینه  Environment variables کلیک کنید:مرحله سوم : تو این مرحله از قسمت پایین صفحه گزینه Path رو سلکت کنید و بعد بر روی edit کلیک کنید مطابق تصویر زیر :مرحله چهارم : تو این مرحله از قسمت سمت راست روی گزینه new کلیک کنید و  یعدش باید آدرس جایی که جاوا رو اونجا نصب کردیم رو بهش بدیم، الیته دقت  کنید که باید داخل پوشه جاوا فولدر bin رو آدرس بدیم، این آدرس بصورت پیش  فرض اگر هنگام نصب جاوا تغییرش نداده باشین تو آدرس C:\Program Files\Java\jdk-11.0.1\bin  قرار داره، حالا شما اگه جای دیگه نصبش کردین آدرس همونجا رو بدین.مرحله پایانی : بعد از این کارها برای اینکه از نصب جاوا مطمئن بشیم،  میریم و دوباره همون کامند java -version رو داخل cmd میزنیم که ببینیم  اوکی شده یا خیر. البته دقت کنید اگه cmd از قبل باز بوده ببندینش و دوباره  بازش کنید که تغییراتی که دادیم توش لحاظ شده باشه، اگه نصبتون موفق باشه  مواردی شبیه به زیر رو می‌بینید:java version &amp;quot1.8.0_291&amp;quotJava(TM) SE Runtime Environment (build 1.8.0_291-b10)Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)خب تبریک میگم شما با موفقیت مراحل آموزش نصب جاوا رو پاس کردین، اگه تو هر کدوم از موارد بالا مشکل داشتین حتما تو قسمت نظرات مشکل رو بگین که حلش کنیم. موفق باشید.راستی اگه خواستین یه تاریخچه ای از جاوا بخونید مقاله تاریخچه جاوا رو هم ببینید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Tue, 08 Feb 2022 13:54:28 +0330</pubDate>
            </item>
                    <item>
                <title>تاریخچه جاوا + چرا باید از جاوا استفاده کنیم</title>
                <link>https://virgool.io/@yashar0071/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D8%AC%D8%A7%D9%88%D8%A7-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-w0sz37qwmy7d</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!تاریخچه جاوا اول به تاریخچه جاوا بپردازیم، زبان برنامه نویسی جاوا در حوالی سال 1995 میلادی ایجاد شد، این زبان توسط جیمز گاسلینگ و همکارانش بنا نهاده شد و شرکتی که این زبان را پایه‌ریزی کرد سان  مایکروسیستمز نام داشت. شاید برای‌تان جالب باشد که بدانید زبان جاوا در  ابتدا Oak که به معنی بلوط است نام گذاری شده بود.جیمز گاسلینگ و همکارانش  زبان جاوا را با این شعار که “یک بار بنویس، همه جا اجرا کن” توسعه دادند و  تا حد زیادی به این شعار نیز عمل کردند زیرا با استفاده از ابزار jvm جاوا بر روی پلتفرم های مختلفی مانند ویندوز، سیستم عامل مک و نسخه های مختلف یونیکس اجرا می شود.جیمز آرتور گاسلینگ (به انگلیسی: James Arthur Gosling) (زاده ۱۹ می ۱۹۵۵) از دانشمندان کامپیوتر و زاده کانادا است. او به عنوان پدر زبان برنامه‌نویسی جاوا شناخته می‌شود.شرکت سان مایکروسیستمز در سال ۲۰۱۰ توسط شرکت اوراکل خریداری شد و از آن زمان تاکنون توسعۀ نسخه‌های جدید این زبان بر عهدۀ شرکت اوراکل است.چرا برنامه نویسی جاوا را یاد بگیریم؟بعد از دانستن تاریخچه جاوا باید به دلایل یادگیری این زبان بپردازیم، من برخی از مزایای کلیدی یادگیری برنامه نویسی جاوا را لیست می کنم:شیء گرا – در جاوا همه چیز یک شیء است، و دقیقا به این علت جاوا را میتوان به راحتی توسعه داد.مستقل از پلتفرم – بر خلاف بسیاری از زبان‌های برنامه نویسی از جمله C و  ++C،  جاوا در بایت کد مستقل از پلتفرم کامپایل می‌شود و بر روی jvm اجرا  میشود و هرجا که این jvm وجود داشته باشد جاوا قابلیت اجرا شدن دارد.ساده – یادگیری جاوا ساده است، فقط کافیست مفاهیم اولیه oop یا همان  برنامه نویسی شیء گرا را درک کنید، بعد از آن تسلط بر جاوا برایتان بسیار  ساده خواهد بود.قابل حمل – میتواند روی هر پلتفرمی اجرا شود.چند رشته ای یا Multithreaded – با ویژگی چند رشته ای جاوا، امکان نوشتن برنامه هایی وجود  دارد که می توانند چندین کار را به طور همزمان انجام دهند. این ویژگی  طراحی به توسعه دهندگان اجازه می دهد تا برنامه های تعاملی را بسازند که می  توانند به راحتی اجرا شوند.حالا وقت آن رسیده که جاوا را روی سیستم خود نصب کنیم! برای این منظور حتما مقاله آموزش نصب جاوا را مطالعه کنید تا به اصولی ترین روش جاوا را روی سیستم خود نصب کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Tue, 08 Feb 2022 13:42:59 +0330</pubDate>
            </item>
                    <item>
                <title>حلقه While در کاتلین : آموزش کاتلین (قسمت 14)</title>
                <link>https://virgool.io/@yashar0071/%D8%AD%D9%84%D9%82%D9%87-while-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-14-ryziutsh3x8r</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!حلقه While در کاتلینتو این مقاله در مورد حلقه while در کاتلین صحبت  می‌کنیم، حلقه ها بصورت کلی برای انجام دادن یک سری کار تکراری توی برنامه  ها استفاده میشن و میتونید با استفاده از حلقه ها، یک سری دستورات رو به  تعداد مشخص توی برنامه اجرا کنید.راستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره صفر مطلق اندروید داریم که بصورت رایگان کل کاتلین رو آموزش دادیم و نحوه استفاده از اون تو اندروید رو بصورت کامل بررسی کردیم این دوره ویدیویی رو از دست ندید.حلقه While در کاتلینحلقه ها میتوانند یک بلاک از کد را (به کدهایی که درون {} قرار دارند یک  بلاک از کد گفته می‌شود) تا زمانی که به یک شرط مشخص برسد، اجرا کنند.حلقه‌ها بسیار در برنامه نویسی مفید و پرکاربرد هستند و بسیار در زمان  صرفه جویی می‌کنند زیرا ما را از نوشتن کدهای تکراری نجات می‌دهند و کد را  بسیار خواناتر می‌کنند.حلقه while بصورت زیر نوشته می‌شود و تا زمانی که شرط داخل پرانتز  برقرار باشد، حلقه از کار نمی‌افتد و کدهای داخل بلاک را اجرا می‌کند:while (condition) {// code block to be executed}در مثال زیر، تا زمانی که متغیر شمارنده (i) کمتر از 5 باشد، کد موجود در حلقه بارها و بارها اجرا خواهد شد:var i = 0while (i &lt; 5) {println(i)i++}نکته بسیار مهم : در حلقه‌های while باید به این نکته توجه کنیم که متغیر مورد استفاده در شرط  حلق را افزایش دهیم، در غیر اینصورت حلقه هرگز تمام نمیشود و دچار loop  بینهایت می‌شویم و برنامه hang می‌کند. در مثال بالا متغیر مورد استفاده در  شرط حلقه i میباشد که همانطور که می‌بینید درون شرط آن را با دستور ++i  افزایش می‌دهیم که دچار loop بینهایت نشویم.حلقه do..while در کاتلیناین حلقه مشابه حلقه while در کاتلین است ولی یک تفاوت بسیار مهم دارد، ابتدا قبل از بررسی شرط حلقه، یکبار بلاک do را اجرا می‌کند و سپس مانند while عمل میکند و تا زمانی که شرط حلقه برقرار باشد بلاک را اجرا می‌کند.پس حتی اگر شرط حلقه غلط باشد، حلقه do..while حداقل یکبار اجرا میشود زیرا بدون توجه به شرط یکبار بلاک do را اجرا میکند. حلقه do while در کاتلین بصورت زیر نوشته می‌شود:do {// code block to be executed}while (condition);به مثال زیر توجه کنید:var i = 0do {println(i)i++}while (i &lt; 5)همانطور که گفتیم حتی اگر شرط حلقه برقرار نباشد، بلاک do حداقل یکبار  اجرا می‌شود، و باز هم ذکر این نکته ضروری است که باید حتما شمارنده حلق  یعنی i را درون حلقه ++ کنیم تا دچار loop بینهایت نشویم. کد بالا هم اعداد  0 تا 4 را چاپ میکند.یادت نره که ما یه دوره رایگان برنامه نویسی اندروید از صفر مطلق تو سایت ترو لرن داریم که میتونید از اینجا ثبت نام کنید و از آموزش‌های ویدیویی و ساده این دوره استفاده کنید.امیدوارم مطالبی که در مورد حلقه While در کاتلین گفتم براتون مفید بوده باشه. از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Tue, 08 Feb 2022 13:24:44 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش Null Safety در کاتلین : آموزش کاتلین (قسمت 13)</title>
                <link>https://virgool.io/@yashar0071/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-null-safety-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-13-bvurqbq4h7t8</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!آموزش Null Safety در کاتلینتو این مقاله میخام در مورد یکی از مهمترین مزایای کاتلین صحبت  کنیم که بسیار کاربردیه، و شما رو از شر یکی از اذیت کننده ترین و زیاد  ترین خطاهای جاوا نجات میده. و اون هم خطای NullPointerException هستش که  توی جاوا بسیار مرسومه و خیلی‌ها تا حالا بهش برخورد داشتن.راستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره آموزش رایگان برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.آموزش Null Safety در کاتلیناما با استفاده از امکان Null Safety در کاتلین این  خطا برطرف شده و این یکی از مهمترین مزایای کاتلین نسبت به جاواست. دیگه  شما درگیر این خطای رو اعصاب نمیشین و تمامی خطاهای NullPointerException  دقیقا همون لحظه ای که دارید کد میزنید بهتون نمایش داده میشه و اصلا  کاتلین بهتون اجازه نمیده که متغیر نال داشته باشید.همونطور که گفتیم به این قابلیت ، Null Safety در کاتلین یا همون مراقبت در مورد متغیرهای نال برای خطای NullPointerException  گفته میشه.اما یه نکته مهم هم هست، اگه شما به متغیری نیاز داشته باشید که بتواند  null باشد، باید آن را با استفاده از قابلیت nullable اعلام کنید، و این کار را باید با اضافه کردن ؟ به آخر تعریف متغیر انجام دهید.برای مثال کدهای زیر را نگاه کنید:var neverNull: String = &amp;quotThis can&#039;t be null&amp;quot  // 1neverNull = null  // 2var nullable: String? = &amp;quotYou can keep a null here&amp;quot  // 3nullable = null  // 4var inferredNonNull = &amp;quotThe compiler assumes non-null&amp;quot  // 5inferredNonNull = null  // 6در خط 1 : یک رشته را تعریف کردیم که Null Safety است و نمیتواند مقدار null را به خود بگیرد.در خط 2 : خطا داریم، زمانی که به یک متغیر Null Safety ، یک مقدار null را نسبت دهیم یک خطای کامپایل اتفاق می‌افتد.در خط 3 : یک متغیر nullable را تعریف کردیم، یا اضافه کردن ? به آخر آن اینکار را انجام دادیم.در خط 4 : به علامت سوال دقت کنید، زمانی که یه مقدار null را به یک متغیر nullable نست دهیم مشکلی بوجود نمی‌آید.در خط 5 : اگر نوع داده را ما تعریف نکنیم، و تعریف نوع داده را به  کاتلین بسپاریم، بصورت پیش فرض داده از نوع Null Safety تعریف میشود.در خط 6 : طبق تعریف خط 5 خطا داریم، زمانی که به یک متغیر Null Safety ، یک مقدار null را نسبت دهیم یک خطای کامپایل اتفاق می‌افتد.ما یه دوره رایگان برنامه نویسی اندروید از صفر مطلق نو سایت ترو لرن داریم که میتونید از اینجا ثبت نام کنید و استفاده کنید.امیدوارم مطالبی که در مورد Null Safety در کاتلین گفتم براتون مفید بوده باشه. از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Tue, 08 Feb 2022 13:17:10 +0330</pubDate>
            </item>
                    <item>
                <title>کاربرد when در کاتلین : آموزش کاتلین (قسمت 12)</title>
                <link>https://virgool.io/@yashar0071/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-when-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-12-aprkqca2xclp</link>
                <description>قبل از هر چیز، اگه  به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک دوره آموزش برنامه  نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!کاربرد when در کاتلینسلام به همه دوستان عزیز، تو این مقاله میخام در مورد یکی از امکانات باحال کاتلین صحبت کنم یعنی کاربرد when در کاتلین، این دستور زمانی به کارمون میاد که قراره چندین شرط مختلف رو چک کنیم، بریم ببینیم چطوری میشه این کارو کرد پس با من همراه باشید با آموزش رایگان کاتلینراستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره آموزش رایگان برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.کاربرد when در کاتلینبه جای استفاده از جملات if..else فراوان، بهتر است از when استفاده  کنیم چون هم خواندن آن بسیار ساده‌تر است و هم هنگام کد نویسی، کد کمتری را  می‌نویسید، این یکی دیگر از مزایای کاتلین است،  در مثال زیر قرار است برنامه ای بنویسیم که بجای عدد روز هفته، نام آن را  برگرداند مثلا اگر عدد 1 را بزنیم، شنبه را برمی‌گرداند:val dayInWeek = 3val result = when (dayInWeek) {1 -&gt; &amp;quotشنبه&amp;quot2 -&gt; &amp;quotیکشنبه&amp;quot3 -&gt; &amp;quotدوشنبه&amp;quot4 -&gt; &amp;quotسه‌شنبه&amp;quot5 -&gt; &amp;quotچهارشنبه&amp;quot6 -&gt; &amp;quotپنج‌شنبه&amp;quot7 -&gt; &amp;quotجمعه&amp;quotelse -&gt; &amp;quotروز وارد شده صحیح نیست&amp;quot}println(result)// Outputs &amp;quotدوشنبه&amp;quot (day 3)دستور when در کاتلین بسیار شبیه به دستور switch..case در جاوا است ولی  کار با آن بسیار ساده تر است زیرا دیگر نیازی به دستور break بعد از هر  شرط نداریم و تعداد خطهای کد آن بسیار کمتر است.مثال بالا چطوری کار کرد؟ ابتدا when برای متغیر dayInWeek ارزیابی  می‌شود و مقدار آن با مقدار هر شاخه مقایسه می‌شود، هر شاخه با یک مقدار  شروع می‌شود و پس از آن یک علامت &lt;- وجود دارد و عبارتی که بعد از آن  است نتیجه‌ای است که در صورت درست بودن شرط قرار است اجرا شود.اگر مقدار dayInWeek با یکی از مقادیر برابر باشد، بلوک روبروی آن اجرا  می‌شود ، اما اگر مقدار وارد شده با هیچ کدام از مقادیر برابر نبود، بلوک  روبروی else اجرا می‌شود که به معنای عدم تطابق است.در مثال بالا مقدار عدد 3 است پس بلوک روبروی عدد 3 یعنی عبارت “دوشنبه” اجرا می‌شود.دقت کنید که نتیجه کل این دستور when را میتوانیم به صورت مستقیم درون  یک متغیر بریزیم، همانطور که میبینید کل عبارت when را مستقیماً درون عبارت  val result ریخته‌ایم، پس هر نتیجه ای که دستور when داشته باشد خروجی آن  درون متغیر result قرار خواهد گرفت و در آخر هم این متغیر را چاپ کرده‌ایم.امیدوارم مطالبی که در مورد کاربرد when در کاتلین گفتم براتون مفید بوده باشه. از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 14:58:18 +0330</pubDate>
            </item>
                    <item>
                <title>شرط ها در کاتلین : آموزش کاتلین (قسمت 11)</title>
                <link>https://virgool.io/@yashar0071/%D8%B4%D8%B1%D8%B7-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-11-c9nirs0c67b7</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!شرط ها در کاتلین سلام به همگی، تو این مقاله میخام در مورد شرط ها در کاتلین صحبت کنم، شرط ها در کاتلین بسیار شبیه ساختارهای شرطی در جاوا هستش، ولی  یه سری امکانات بیشتری داره که میتونه کار ما رو ساده تر کنه، که تو این  مقاله بصورت کامل قراره بهشون بپردازیم.راستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره آموزش رایگان برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.کوتلین از شروط منطقی که در ریاضیات وجود دارد پشتیبانی می‌کند:کمتر از:a &lt; bکمتر یا مساوی با:a &lt;= bبزرگتر از:a &gt; bبزرگتر یا مساوی با:a &gt;= bبرابر باa == bمساوی نیست با:a != bشما می‌توانید از این شروط برای تصمیم گیری های مختلف در سطح برنامه و  درون جملات شرطی استفاده کنید، و متناسب با این تصمیم گیری ساختار برنامه  را کنترل کنید و عملیات مورد نظر خود را انجام دهید.شرط ها در کاتلیناز 4 کلمه کلیدی زیر برای مدیریت شرط ها در کاتلین استفاده می‌کند:استفاده از if  : اگر شرط موجود در پرانتز درست باشد، کدهای درون بلاک if اجرا می‌شوند.استفاده از else : اگر همان شرط بالا درست نباشد، کدهای درون این بلاک اجرا خواهند شد.(شرط دورن پرانتز ندارد)استفاده از else if : اگر شرط اول نادرست باشد،و بخواهیم یک شرط جدید را تست کنیم، اگر شرط موجود در پرانتز درست باشد کدهای درون این بلاک اجرا می‌شود.استفاده از when : از این شرط زمانی استفاده میکنیم که تعداد زیادی شرط برای بررسی وجود داشته باشد.نکته مهم: در کاتلین میتوانیم نتیجه یک شرط را مستقیم درون یک متغیر بریزیم، و این یکی از مزایای کاتلین نسبت به جاوا است. در ادامه مقاله این مورد را شرح می‌دهیم پس با ما همراه باشید.شرط if در کاتلیندر جلوی دستور if  یک پرانتز وجود دارد که شرط را داخل آن نوشته ایم، اگر این شرط برقرار باشد وارد بلاک ifشده و کدهای درون آن اجرا می‌شود:if (condition) {//if condition is true , this line run in app}توجه داشته باشید که if با حروف کوچک است. حروف بزرگ (If یا IF) خطا ایجاد می کنند.در مثال زیر دو متغیر x و y را باهم مقایسه می‌کنیم تا به این پی ببریم که کدام بزرگتر از دیگری هستند:val x = 25val y = 21if (x &gt; y) {println(&amp;quotx بزرگتر است&amp;quot) //چون شرط برقرا است، این خط کد اجرا می‌شود}عدم برقراری شرط یا elseدستور else زمانی استفاده می‌شود که همه‌ی شروط if و else if برقرار نباشد، ومعنای آن این میشود: “اگر هیچ کدام از شروط برقرار نبود” آنگاه کدهای درون این بلاک اجرا می‌شود:val time = 7if (time &lt; 12) {println(&amp;quotروز خوبی داشته باشید&amp;quot)} else {println(&amp;quotبعد از ظهر خوبی داشته باشید&amp;quot)}در مثال بالا ساعت روز را چک میکنیم، در شرط if گفتیم اگر ساعت از 12 کمتر بود، بگو روز خوبی داشته باشید، ودر else گفتیم که اگر شرط بالا برقرار نبود، این بلاک اجرا شود، با توجه به اینکه متغیر time ساعت 7 را نشان می‌دهد، و 7 از 12 کمتر است، پس شرط جمله if درست بوده و برنامه به داخل بلاک if می‌رود و کدهای درون آن را اجرا می‌کند. که نتیجه‌ی آن چاپ خروجی “روز خوبی داشته باشید” است.چک کردن یک شرط جدید یا else ifاگر شرط موجود در if برقرار نباشد، برای تست کردن سایر شروط از جمله else if استفاده میکنیم به مثال زیر دقت کنید:val time = 23if (time &lt; 10) {println(&amp;quotصبح بخیر&amp;quot)} else if (time &lt; 20) {println(&amp;quotروز بخیر&amp;quot)} else {println(&amp;quotشب بخیر&amp;quot)}خب در مثال بالا گفتیم اگر ساعت از 10 کمتر بود شرط if برقرار است و برو داخل بلاک if و مقدار صبح خیر را چاپ کن، در غیر اینصورت اگر (else if) ساعت از 20 کمتر بود برو داخل بلاک else if و مقدار روز بخیر را چاپ کن، و اگر هیچ کدام از شروز بالا برقرار نبود برو کدهای بلاک else را اجرا کن و بگو شب بخیر که چون ساعت فعلی که درون متغیر time قرار دارد 23 است، مقدار شب بخیر را چاپ می‌کند، اگر مثلا الان ساعت 8 بود، طبق برنامه بالا مقدار صبح بخیر چاپ می‌شد.ریختن خروجی شرط دورن یک متغیر در کاتلیناین یکی از مزایای شرط ها در کاتلین است که می‌توانیم نتیجه حملات شرطی را بصورت مستقیم درون یک متغیر بریزیم، برای درک بهتر این موضوع، قطعه کد زیر را ببینید:val time = 19val greeting = if (time &lt; 17) {&amp;quotGood day.&amp;quot} else {&amp;quotGood evening.&amp;quot}println(greeting)نکته مهم: اگر می‌خواهید از if مانند مثال بالا استفاده کنید، if شما حتما باید جمله elseهم داشته باشد.و همانطور که می‌دانید، اگر کدهای درون بلاکif و elseیک خط کد باشند، می‌توانیم کروشه ها را حذف کنیم مانند مثال زیر :fun main() {val time = 20val greeting = if (time &lt; 17) &amp;quotGood day.&amp;quot else &amp;quotGood evening.&amp;quotprintln(greeting)}میدوارم مطالبی که در مورد شرط ها در کاتلین گفتم براتون مفید بوده باشه، از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 14:47:48 +0330</pubDate>
            </item>
                    <item>
                <title>متغیر boolean در کاتلین : آموزش کاتلین (قسمت 10)</title>
                <link>https://virgool.io/@yashar0071/%D9%85%D8%AA%D8%BA%DB%8C%D8%B1-boolean-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-10-qu0j1vuicegr</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!متغیر boolean در کاتلیندر این مقاله قصد دارم booleanها در کاتلین را بطور  کامل معرفی کنم،در اغلب اوقات در هر زبان برنامه نویسی که با آن کار  می‌کنید، به یک نوع داده ای نیاز می‌شود که فقط یکی از دومقدار درست یا  غلط، بله یا خیر، روشن یا خاموش و یا به اصطلاح نرم افزاری 0 یا 1 را  بپذیرد.بریم که در ادامه به معرفی booleanها در کاتلین بپردازیم.متغیر boolean در کاتلینبرای اینکار کاتلین نیز دقیقا همانند جاوا یک نوع داده Boolean دارد که میتواند مقادیر true یا false را داشته باشد.val isKotlinFun: Boolean = trueval isUserValid: Boolean = falseprintln(isKotlinFun)  // Outputs trueprintln(isUserValid)  // Outputs falseهمانطور که در آموزش انواع داده ها در کاتلین گفتیم،  مثال بالا را میتوانیم بدون تعیین نوع boolean هم بنویسیم زیرا کاتلین به  انداره ای هوشمند است که بفهمد متغیری که وارد کرده‌اید، از نوع Boolean  است:val isKotlinFun = trueval isUserValid= falseprintln(isKotlinFun)  // Outputs trueprintln(isUserValid)  // Outputs falseاستفاده از boolean در مقایسه ها و شروطنتیجه مقایسه دو عملوندی که با یک عملگر مقایسه ای مقایسه شده اند، در  غالب یک boolean بازمی‌گردد، مثال زیر را ببینید تا بهتر متوجه این مفهوم  شوید:val x = 10val y = 9println(x &gt; y) // Returns true, because 10 is greater than 9و یا به عبارت ساده تر:println(10 &gt; 9) // Returns true, because 10 is greater than 9و یا در مثال زیر، شرط مساوی بودن دو علموند را چک کرده ایم، که با  عملگر مقایسه ای == این کار را می‌کنیم، اگر این دو عدد برابر باشند، مقدار  true برمی‌گردد و در غیر اینصورت مقدار false در خروجی چاپ می‌شود:val x = 10;println(x == 10); // Returns true, because the value of x is equal to 10برای اینکه booleanها در کاتلین را بهتر درک کنید، لازم است سری به مقاله آموزش عملگرها در کاتلین که در سایت ترولرن منتشر شده است بزنید، و قسمت عملگرهای مقایسه ای را با دقت بیشتری مطالعه کنید زیرا نتیجه عملگرهای مقایسه ای در غالب booleanها در کاتلین برمیگردد و بسیار به هم مربوط هستند.راستی میدونستی ما تو سایت ترولرن یه دوره رایگان آموزش برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.امیدوارم مطالبی که گفتم براتون مفید بوده باشه، از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 14:16:31 +0330</pubDate>
            </item>
                    <item>
                <title>رشته ها در کاتلین : آموزش کاتلین (قسمت 9)</title>
                <link>https://virgool.io/@yashar0071/%D8%B1%D8%B4%D8%AA%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-9-rnuduzsihoya</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!رشته ها در کاتلینسلام دوستان تو این مقاله آموزشی قراره در مورد رشته ها در کاتلین حرف  بزنیم، رشته ها در کاتلین بسیار شبیه به جاوا عمل می‌کنن اما توی چندین تا  بخش عملکرد بهتری دارن و خیلی ساده‌تر کار ما رو راه می‌ندازن، ادامه این  مقاله رو بخون تا قابلیت های جدید رو ببینیرشته ها در کاتلینرشته ها در کاتلین مانند هر زبان برنامه نویسی دیگری،  برای ذخیره متن ها استفاده می‌شود. یک رشته شامل مجموعه‌ای از کاراکترها  است که با دو نماد ” احاطه می‌شوند. در مثال زیر یک رشته در کاتلین را مشاهده می‌کنید:var myText = &amp;quotHello&amp;quotبرعکس جاوا، نیازی نیست دقیقا مشخص کنید که نوع داده متغیر باید یک رشته  باشد زیرا کاتلین به اندازه کافی باهوش است و متوجه می‌شود که پیام hello  بالا درون دو عدد ” قرار دارد و قطعا یک رشته است، اما خب دقیقا مانند سایر  انواع داده ها درکاتلین که در جلسات قبل گفتیم، اگر به تعریف نوع داده اصرار دارید می‌توانید مانند مثال زیر، نوع داده رشته را مشخص کنید.var myText: String = &amp;quotHello&amp;quotنکته: اگر می‌خواهید یک رشته را بدون دادن مقدار به آن ایجاد کنید و بعدا در جای  دلخواه مقداری را به آن اختصاص دهید، باید در هنگام تعریف رشته حتما نوع  داده آن را ذکر کنید، اگه به مثال زیر دقت کنید ، این نوع پیاده سازی برای رشته ها در کاتلین کاملا غلطه:var namename = &amp;quotMohammad&amp;quotprintln(name) //خطاو حالت درست آن مانند مثال زیر می‌باشد:var name: Stringname = &amp;quotMohammad&amp;quotprintln(name)دسترسی به کاراکترهای یک رشتهبرای دسترسی به کاراکتر خاصی درون یک رشته میتوان از شماره ایندکس آن  استفاده نمود. برای مثال در کد زیر کاراکتر صفرم H و کاراکتر دوم l هستش:var txt = &amp;quotHello World&amp;quotprintln(txt[0]) // first element (H)println(txt[2]) // third element (l)دریافت طول رشتهرشته ها در کاتلین، جزء اشیاء هستند که دارای فیلد ها و متد های تعریف شده زیادی هستند که میتوانیم با استفاده از کاراکتر ( . )  به آنها دسترسی داشته باشیم (در پیج اینستاگرام کل مبحث شیء گرایی را از 0 تا 100 آموزش داده ایم) به عنوان مثال طول یک رشته را میتوتنیم از فیلد length دریافت کنیم:var txt = &amp;quotABCDEFGHIJKLMNOPQRSTUVWXYZ&amp;quotprintln(&amp;quotThe length of the txt string is: &amp;quot + txt.length)//output is : 26تبدیل تمام حروف به حرف کوچک یا حروف بزرگبا استفاده از دو متد toUpperCase و toLowerCase می‌توانیم تمامی کاراکتر های یک رشته را به حروف بزرگ و یا حروف کوچک تبدیل کنیم:var txt = &amp;quotHello World&amp;quotprintln(txt.toUpperCase())  // Outputs &amp;quotHELLO WORLD&amp;quotprintln(txt.toLowerCase())  // Outputs &amp;quothello world&amp;quotجمع دو رشته در کاتلینبا استفاده از عملگر + در بین دو رشته میتوان آن دو را باهم ادغام کرد و یک رشته جدید از مجموع دو رشته قبلی ایجاد کرد:var firstName = &amp;quotMohammad&amp;quotvar lastName = &amp;quotZare&amp;quotprintln(firstName + &amp;quot &amp;quot + lastName)توجه داشته باشید که ما یک متن خالی (” “) برای ایجاد فاصله بین firstName و lastName در چاپ اضافه کرده ایم.همچنین می توانید از تابع plus() برای به هم پیوستن دو رشته استفاده کنید:var firstName = &amp;quotMohammad &amp;quotvar lastName = &amp;quotZare&amp;quotprintln(firstName.plus(lastName))تعریف الگو یا Templates برای رشته ها در کاتلینبه جای استفاده از جمع دو رشته که در بالا اشاره کردیم؛ می‌توانیم از  الگوهای رشته ای نیز استفاده کنیم که راهی بسیار ساده برای افزودن متغیرها و  عبارات دورن یک رشته است، به این مثال دقت کنید:var firstName = &amp;quotMohammad&amp;quotvar lastName = &amp;quotZare&amp;quotprintln(&amp;quotMy name is $firstName $lastName&amp;quot)فقط کافیست از نماد $ استفاده کنیم، الگوهای رشته ای یکی از ویژگی های محبوب کاتلین نسبت به  جاوا است زیرا مقدار کد نویسی را کاهش داده و دردسرهای مربوط به جمع رشته  ها را بسیار کم می‌کند.امیدوارم مطالبی که گفتم براتون مفید بوده باشه، از دیدن پیج اینستاگرام ترولرن غافل نشید، راستی یادتون باشه که همیشه بهترین جا برای یادگیری هر زبان  برنامه نویسی، سایت خودش و خوندن داکیومنت های مرجع اون زبان هستش، بعد از  خوندن این مقاله می‌تونید برای اطلاعات بیشتر به اینجا مراجعه کنید.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 14:06:03 +0330</pubDate>
            </item>
                    <item>
                <title>عملگرها در کاتلین : آموزش کاتلین (قسمت 8)</title>
                <link>https://virgool.io/@yashar0071/%D8%B9%D9%85%D9%84%DA%AF%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-8-v60ze3zpcz1k</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!عملگرها در کاتلینعملگرها در کاتلین انواع مخلتفی دارند، که با عملگرها در جاوا کاملا مشابه هستند با مطالعه آموزش عملگرها در کاتلین بصورت کامل به این عملگرها مسلط خواهید شدراستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت ترولرن یه دوره رایگان آموزش برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.همونطور که می‌دونید عملگرها برای انجام یک سری عملیات روی متغیرها و  مقادیر استفاده می‌شوند. نکته این که باید بهش توجه داشته باشیم، مفهوم عملوند است، مقادیری که یک عملگر، روی آن‌ها عملیاتی را انجام می‌دهد را عملوند می‌نامیم. مثال زیر را در نظر بگیرید:var x = 100 + 50در مثال بالا دو عدد 100 و 50 ، عملوند(operands) هستند و علامت + در وسط آنها که وظیفه انجام یک عملیات بر روی این دو عملوند را دارد، عملگر (operator) نامیده میشود.عملگرها میتوانند در بین دو عدد قرار بگیرند، مانند مثال بالا که بین 50 و 100 عملگر + یا جمع را قرار دادیم که وظیفه جمع کردن این دو مقدار را دارد.در مثال پایین می‌بینیم که علاوه بر اینکه یک عملگر می‌تواند بین دو عدد  قرار بگیرد، می‌تواند بین یک عملوند و یک عدد هم قرار بگیرد و همچنین  می‌تواند بین دو عملوند نیز قرار بگیرد.var sum1 = 100 + 50  // 150 (100 + 50)var sum2 = sum1 + 250  // 400 (150 + 250)var sum3 = sum2 + sum2    // 800 (400 + 400)انواع عملگرها در کاتلینعملگرهای محاسبه‌ایعمگرهای انتسابیعملگرهای مقایسه‌ایعملگرهای منطقیعملگرهای محاسبه‌ای در کاتلیناین نوع عملگرها برای انجام عملیات ریاضی رایج استفاده می‌شوند و مقادیر زیر را شامل می‌شوند:جمع با علامت+تفریق با علامت-ضرب با علامت*تقسیم با علامت/باقیمانده تقسیم با علامت%افزایش 1 عددی مقدار با علامت++کاهش 1 عددی مقداربا علامت--عملگرهای انتسابی کاتلیناین نوع عملگرها برای تخصیص مقادیر به متغییرها استفاده می‌شوند. در مثال زیر برای تخصیص دادن مقدار 10 به متغیر x از عمگر = استفاده کردیم:var x = 10در عملگرهای انتسابی برای اضافه کردن یک مقدار به یک عدد میتوانیم از روش خلاصه شده‌ی x += 3 به جای    x = x + 3  استفاده کنیم.لیست تمامی عملگرهای انتسابی را در زیر ملاحظه می‌کنید:عملگر = برای انتساب (تخصیص دادن) یک مقدار به یک متغیر عملگر += برای جمع یک عدد با متغیر فعلی و ریختن نتیجه‌ی آن داخل خود آن متغیر، برای مثال x += 3  به معنای x = x + 3  می‌باشد.عملگر -= برای تفریق یک عدد با متغیر فعلی و ریختن نتیجه‌ی آن داخل خود آن متغیر، برای مثال x -= 3  به معنای x = x - 3  می‌باشد.عملگر *= برای ضرب یک عدد با متغیر فعلی و ریختن نتیجه‌ی آن داخل خود آن متغیر، برای مثال x *= 3 به معنای x = x * 3 می‌باشد.عملگر /= برای تقسیم متغیر فعلی با یک عدد و ریختن نتیجه‌ی آن داخل خود آن متغیر، برای مثال x /= 3 به معنای x = x / 3 می‌باشد.عملگر %= برای محاسبه باقیمانده تقسیم متغیر فعلی به یک عدد و ریختن نتیجه‌ی آن در داخل خود آن متغیر برای مثال x %= 3 به معنای x = x % 3 می‌باشد.عملگرهای مقایسه‌ای در کاتلیناین نوع عملگرها برای مقایسه دو مقدار استفاده میشوند و یک مقدار boolean را برمی‌گردانند، یعنی نتیجه‌ی این مقایسه یا true خواهد بود که یعنی شرط مقایسه درست است، و یا false خواهد بود که یعنی شرط مقایسه غلط می‌باشد. از این نوع عملگر ها بیشتر درون دستورات شرطی و درون شرط های حلقه ها استفاده می‌شود.لیست عملگرهای مقایسه ای در کاتلین به شرح زیر است:عملگر==که به معنای شرط مساوی بودن است، اگر دو عملوند با هم برابر باشند مقدار true در غیر اینصورت مقدار false را برمی‌گرداند.عملگر != که به معنای نامساوی بودن می‌باشد که دقیقا برعکس عملگر بالایی است.عملگر &lt; که به معنای شرط بزرگتر بودن است، اگر عملوند اول از دومی بزرگ‌تر باشد true در غیر اینصورت مقدار false  را برمی‌گرداند.عملگر &gt; که به معنای شرط کوچکتر بودن است، اگر عملوند اول از دومی کوچکتر باشد true در غیر اینصورت مقدار flase را برمی‌گرداند.عملگر &gt;= که به معنای بزرگتر مساوی بودن است.عملگر &lt;=  که به معنای کوچکتر مساوی بودن است.عملگرهای منطقی کاتلین عملگر &amp;&amp; یا and : اگر هر دو جمله قبل و بعد از آن درست باشند و مقدار true را برگردانند،این عملگر هم مقدار true  را برمی‌گرداند.عملگر || یا or : اگر یکی از جمله های قبل و بعد از این عملگر درست باشند، مقدارtrue را برمی‌گرداند.عملگر ! یا not : نتیجه را برعکس می‌کند، یعنی اگر true باشد، false را برمی‌گرداند، و اگر false  باشد،true    را برمی‌گرداند.خب امیدوارم مطالبی که گفتم مفید باشه براتون، یادتون نره حتما عضو پیج اینستاگرام ترو لرن بشین مطالب آموزنده بصورت روزانه اونجا قرار می‌گیره.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 13:56:39 +0330</pubDate>
            </item>
                    <item>
                <title>کامنت ها در کاتلین : آموزش کاتلین (قسمت 7)</title>
                <link>https://virgool.io/@yashar0071/%DA%A9%D8%A7%D9%85%D9%86%D8%AA-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-7-brtwsnvqqw8t</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!کامنت ها در کاتلینسلام به همگی ، تواین مقاله میخام در مورد کامنت ها در کاتلین صحبت کنم، قبل از هرچیز باید بدونیم اصلا کامنت گذاری به چه دردی میخوره و چرا از کامنت تو کدهامون استفاده می‌کنیم.راستی قبل از اینکه ادامه این آموزش رو بخونی، میدونستی ما تو سایت  ترولرن یه دوره رایگان آموزش برنامه نویسی کاتلین بصورت مقاله محور داریم،  این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.دلایل استفاده از کامنتاز کامنت ها میتوانیم برای توضیحات کدهای کاتلین و در نتیجه خوانایی بیشتر کدها استفاده کنیم.کاربرد دوم و مهم آن جلوگیری از اجرای قسمتی از کد در هنگام آزمایش و تست و استفاده از کدهای جایگزین برای تست میباشد.در کاتلین دقیقا مثل جاوا دو جور روش برای کامنت گذاری داریم، روش تک خطی و روش چند خطی. بریم ببینیم چطوریهکامنت تک خطیاین نوع کامنت با دو اسلش پشت سر هم نمایش داده می‌شود (//)  و هر کدی که بعد از آن نوشته شده باشد نادیده گرفته می‌شود، این نوع کامنت  معمولا برای کامنت کردن یک خط کد استفاده دارد مانند مثال زیر:println(&amp;quotHello World&amp;quot)  // This is a commentکامنت چند خطیاین نوع کامنت با  /*  شروع شده و با */ تمام می‌شود، توجه کنید که هر چند خط کد یا توضیحاتی که بین این دو علامت  قرار گرفته باشند توسط کامپایلر نادیده گرفته شده و اجرا نخواهند شد. مانند  مثال زیر:/* The code below will print the words Hello Worldto the screen, and this is a comment and dont compile with compiler */println(&amp;quotHello World&amp;quot)خب با انواع کامنت ها تو کاتلین آشنا شدیم، همونطور که  دیدین دقیقا شبیه جاوا هستش، همونطور که قبلا هم گفتم جاوا و کاتلین خیلی  شبیه همدیگه هستن و یادگیری کاتلین برای کسی که جاوا رو بلده واقعا کار  راحتی هستش و خیلی ساده میتونید از جاوا به کاتلین مهاجرت کنید.اگه مقاله نحوه نصب کاتلین رو بخونید کاملا می بینید که کاتلین هم داره روی  jvm اجرا میشه پس خیلی  کاتلین رو شلوغش نکنید و ازش یه غول نسازید! برید سراغش و یادش بگیرید و  تمام. موفق باشید.خب امیدوارم مطالبی که گفتم مفید باشه براتون، یادتون نره حتما عضو پیج اینستاگرام ترو لرن بشین مطالب آموزنده بصورت روزانه اونجا قرار می‌گیره.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 13:35:57 +0330</pubDate>
            </item>
                    <item>
                <title>نوع داده ها در کاتلین : آموزش کاتلین (قسمت 6)</title>
                <link>https://virgool.io/@yashar0071/%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-6-ibrwy6f1zyzc</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!نوع داده ها در کاتلینتو این مقاله میخام در مورد نوع داده ها در کاتلین  صحبت کنم، همونطور که احتمالا میدونید برعکس جاوا که توی تعریف نوع متغیرها  بسیار جدی عمل می‌کنه و شما نمیتونید هیچ متغیری رو بدون تعریف نوع اون،  تعریف کنید. اما کاتلین تو این قضیه اصلا سخت گیر نیست و میتونه نوع داده  رو با توجه به مقدار اون تشخیص بده و خیلی کار رو راحت تر می‌کنه، البته تو  کاتلین اگه بخایم هم میتونیم نوع داده برای یک متغیر تعریف کنیم که تو  مثال‌های پایین کامل بهش پرداختم.راستی میدونستی ما تو سایت ترولرن یه دوره رایگان آموزش برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داریم آموزش می‌دیم.نوع داده ها در کاتلیندر کاتلین نوع داده‌ها از مقدار آن تشخیص داده می‌شود و نیازی نیست نوع داده را تعیین کنیم:val myNum = 5  // Intval myDoubleNum = 5.99  // Doubleval myLetter = &#039;D&#039;  // Charval myBoolean = true  // Booleanval myText = &amp;quotHello&amp;quot  // Stringولی خب در صورت تمایل میتوانید برای متغیرهای کاتلین نوع داده تعریف کنید:val myNum: Int = 5  // Intval myDoubleNum: Double = 5.99  // Doubleval myLetter: Char = &#039;D&#039;  // Charval myBoolean: Boolean = true  // Booleanval myText: String = &amp;quotHello&amp;quot  // Stringگاهی اوقات هم هست که نیاز داریم نوع داده را مشخص کنیم، در مقالات بعدی  در مورد اینکه چه زمانی باید نوع داده‌ها را مشخص کنیم بیشتر یاد  می‌گیریم.انواع داده‌ها در کاتلین شامل گروه‌های زیر است: ارقام یا Numbers کاراکترها یا Characters  بولین‌ها یا Booleans  رشته‌ها یا Strings  آرایه‌ها یا Arrays ارقام در کاتلیناعداد و ارقام در کاتلین را میتوانیم به دو گروه تقسیم کنیم ، اعداد صحیح و اعداد اعشاریانواع معتبر اعداد صحیح عبارتند از Byte، Short، Int و Long.و برای اعداد اعشاری نیز دو نوع وجود دارد، Float و Double.نکته: اگر نوع یک متغیر  را تعیین نکنیم،برای اعداد صحیح اغلب int و برای اعداد اعشاری double در نظر گرفته می‌شود.انواع عدد صحیح در کاتلینبایت یا Byte: این نوع داده میتواند اعداد صحیح بین 128- تا 127 را در خود جای دهد.متغیر Short: این نوع داده می‌تواند اعداد صحیح بین 32768- تا 32767 را در خود جای دهد.متغیر Int: این نوع داده می‌تواند اعداد صحیح بین 2147483648- تا 2147483647 را در خود جای دهد.متغیر Long: این نوع داده می‌تواند اعداد صحیح بین 9223372036854775808- تا  9223372036854775808 را در خود جای دهد، به این نکته دقت کنید که از این  متغیر زمانی استفاده کنید که int به اندازه کافی بزرگ نباشد تا بتواند  مقدار را ذخیره کند. اعداد Long را با یک حرف L بعد از عدد آن مشخص میکنیم:val myNum: Long = 15000000000Lprintln(myNum)فرق Int و Long:در مثال زیر دقت کنید، عدد های تا مقدار 2147483647 یک Int هستند و بعد از آن دیگر در Int جا نمی‌شوند و Long هستند:val myNum1 = 2147483647  // Intval myNum2 = 2147483648L  // Longانواع عدد اعشاری در کاتلینمتغیر Float : اعداد اعشاری بین 3.4e−038 تا 3.4e+038 را در خود جای می‌دهد. شما باید در انتهای یک مقدار Float از کاراکتر F استفاده کنید:val myNum: Float = 5.75Fprintln(myNum)متغیر Double: اعداد اعشاری بین 1.7e−308 تا 1.7e+038 را در خود جای می‌دهد.متغیر Float یا Double؟دقت محاسبه‌ی این دو مقدار با هم متفاوت است، دقت Float تنها شش تا هفت  رقم اعشار است درحالی‌که متغیرهای Double دقتی در حدود 15 رقم اعشار دارند،  بنابراین استفاده از Double برای اکثر محاسبات ایمن‌تر و دقیق‌تر است.نماد علمیبرای نمایش اعداد با استفاده از نماد علمی از e یا E استفاده می‌شود که به معنای توان 10 عدد بعد از آن است، برای مثال 12E4 به معنای 12 ضرب در 10 به توان 4 است که یعنی عدد 120000 (برای راحتی کار  میتوان گفت هر عددی بعد از E بود، به همان تعداد 0 به انتهای عدد اضافه  می‌شود مثلا در مثال بالا که بعد از E عدد 4 بود، 4 صفر به انتهای عدد  اضافه کرد)مثالی برای نماد علمی:val myNum1: Float = 35E3Fval myNum2: Double = 12E4println(myNum1)println(myNum2)متغیر Booleansکه فقط می‌تواند دو مقدار true و false را داشته باشد به معنای درست یا غلط، این متغیر بیشتر برای تست شرطی استفاده می‌شود.متغیر Charactersبرای ذخیره یک کاراکتر استفاده می‌شود که باید بین دوتا سینگل کوتیشن قرار بگیرد مانند مثال زیر:val myGrade: Char = &#039;A&#039;println(myGrade)برعکس جاوا، در کاتلین نمی‌توانید از مقدار ASCII برای نمایش کاراکتر  استفاده کنید، مثلا مقدار 66 در جاوا کاراکتر B را تولید می‌کند اما در  کاتلین کد زیر باعث ایجاد خطا خواهد شد:val myLetter: Char = 66println(myLetter) // Errorمتغیر Stringsبرای دنباله‌ای از کاراکترها (متن) استفاده می‌شود. مقادیر یک رشته باید با دوعدد دابل کوتیشن احاطه شوند. مثالی از String:val myText: String = &amp;quotHello World&amp;quotprintln(myText)تبدیل نوع در کاتلینزمانی که یک نوع داده را به نوع داده‌ی دیگری تبدیل می‌کنید، تبدیل نوع  اتفاق می‌افتد. در کاتلین تبدیل نوع عددی با جاوا متفاوت است، برای مثال  تبدیل از نوع Int به نوع Long با کد زیر امکان‌پذیر است:val x: Int = 5val y: Long = x.toLong()println(y)و کد زیر در کاتلین با خطا مواجه می‌شود:val x: Int = 5 val y: Long = xprintln(y) // Error: Type mismatchبرای تبدیل یک نوع داده‌ی عددی به نوع دیگر در کاتلین باید از یکی از توابع زیر استفاده کنید:toByte()toShort()toInt()toLong()toFloat()toDouble()toChar()خب امیدوارم مطالبی که گفتم مفید باشه براتون، یادتون نره حتما عضو پیج اینستاگرام ترو لرن بشین مطالب آموزنده بصورت روزانه اونجا قرار می‌گیره.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 13:27:42 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش چاپ خروجی در کاتلین : آموزش کاتلین (قسمت 5)</title>
                <link>https://virgool.io/@yashar0071/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%86%D8%A7%D9%BE-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-5-mldmnh1vdpxc</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!آموزش چاپ خروجی در کاتلین تو این مقاله قراره آموزش چاپ خروجی در کاتلین رو بصورت کامل شرح بدم. توی کاتلین دوجور میشه خروجی گرفت و دو تا تابع برای این کار وجود داره که در ادامه مطلب بهشون می‌پردازیم.راستی ما تو سایت ترولرن یه دوره رایگان آموزش برنامه نویسی کاتلین بصورت مقاله محور داریم، این لیست آموزش‌های رایگان ما هستش حتما ببین چون کل کاتلین رو بصورت کاملا رایگان داربم آموزش می‌دیم.در مراحل اولیه یادگیری هر زبان برنامه نویسی، خروجی گرفتن خیلی مهمه  برای اینکه میتونیم باهاش تمرین کنیم، لاگ گیری کنیم و نتیجه محاسبات رو  باهاش چاپ کنیم، پس این شد که تصمیم گرفتماستفاده از تابع ()println:همونطور که تو مقاله سینتکس کاتلین گفتیم، با استفاده از تابعprintln()میتونیم یک نوشته رو تو خروجی چاپ کنیم. شما میتونید هر تعداد تابعprintln()که دوس دارین پشت سر هم استفاده کنید ولی باید به این نکته توجه داشته  باشین که هر تابع یک خط جدید رو ایجاد میکنه، یعنی میره خط بعدی و ادامه  نوشته رو اونجا چاپ می‌کنه.مثلا کد زیر رو در نظر بگیرید، این کد سه خط پشت سر هم رو چاپ می‌کنه:fun main() {println(&amp;quotHello World!&amp;quot)println(&amp;quotI am learning Kotlin from truelearn.ir.&amp;quot)println(&amp;quotIt is wonderful!&amp;quot)}شما میتونید ارقام رو هم با این تابع چاپ کنید و همچنین میتونید داخلش از عملیات ریاضی هم استفاده کنید مثل کد زیر:fun main() {println(3 + 3)}استفاده از تابع ()print:برای گرفتن خروجی در کاتلین می‌تونیم از تابعprint()هم استفاده کنیم که دقیقا مشابه تابع بالا عمل می‌کنه اما یک فرق کوچیک داره، اونم اینه که دیگه خط جدیدی رو وارد نمی‌کنه و خروجی رو ادامه خروجی‌های قبلی چاپ می‌کنه به کدهای زیر دقت کنید:fun main() {print(&amp;quotHello World! &amp;quot)print(&amp;quotI am learning Kotlin from truelearn. &amp;quot)print(&amp;quotIt is awesome!&amp;quot)}توجه کنید که ما بعد از هر جمله تو کد بالا یک خط فاصله ایجاد کردیم، یه  این خاطر که اگه این کار رو نمی‌کردیم خط هایی که چاپ شده باهم قاطی میشه  چون همونطور که گفتیم این تابع خط جدیدی رو ثبت نمی‌کنه و در ادامه قبلی‌ها  چاپ می‌کنه.خب امیدوارم مطالبی که گفتم مفید باشه براتون، یادتون نره حتما عضو پیج اینستاگرام ترو لرن بشین مطالب آموزنده بصورت روزانه اونجا قرار می‌گیره.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 07 Feb 2022 13:02:14 +0330</pubDate>
            </item>
                    <item>
                <title>سینتکس کاتلین چگونه است و چه فرقی با جاوا دارد؟ : آموزش کاتلین (قسمت 4)</title>
                <link>https://virgool.io/@yashar0071/%D8%B3%DB%8C%D9%86%D8%AA%DA%A9%D8%B3-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D8%AA-%D9%88-%DA%86%D9%87-%D9%81%D8%B1%D9%82%DB%8C-%D8%A8%D8%A7-%D8%AC%D8%A7%D9%88%D8%A7-%D8%AF%D8%A7%D8%B1%D8%AF-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-4-xxjwmpmnq4or</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!سینتکس کاتلین چگونه است و چه فرقی با جاوا دارد؟اول اینکه سینتکس یعنی چی؟ مجموعه ای از قوانین هستش  که نحوه قرارگیری و ترکیب کلمات، نشانه ها و علائم یک زبان برنامه نویسی رو  مشخص میکنه و همونطور که میدونید هر زبان برنامه نویسی سینتکس مربوط به  خودش رو داره و اگه قواعدش رو رعایت نکنیم دچار syntax error میشیم و دوم اینکه سینتکس کاتلین چطوریه و چه فرقی با جاوا داره؟سینتکس کاتلینتو این مقاله میخایم یکم تخصصی‌تر در مورد سینتکس کاتلین صحبت کنیم، تو مقاله‌های قبلی آموزش نوشتن برنامه hello world تو کاتلین رو بهتون گفتم، سوالی که پیش میاد اینه که اصلا سینتکس کاتلین چطوری کار می‌کنه و چه فرقایی با جاوا داره، مثلا برنامه زیر رو در نظر بگیرید:fun main() {println(&amp;quotHello World&amp;quot)}یه سری نکات در مورد همین یه تیکه برنامه بالا وجود داره که باید بهش توجه داشته باشیم.کلمه کلیدی fun : برای تعریف توابع توی کاتلین از این کلمه کلیدی  استفاده می‌کنیم، مثلا در مثال بالا یک تابع به نام main تعریف کردیم، دقت  داشته باشید که کاتلین هم مثل جاوا از تابع main شروع به کار میکنهتابع main: توی هر برنامه کاتلین این تابع رو حتما می‌بینیم، این تابع  شروع کننده برنامه‌های کاتلین هستش و هر کدی که درون بلاک اون وجود داشته  باشه اول از همه اجرا می‌شه.تابع println: برای چاپ یک متن توی کاتلین از این دستور استفاده می‌کنیم.عدم نیاز به ; یا همون سمی‌کالن: تو کاتلین (برعکس جاوا) نیازی نیست بعد از تموم شدن دستورات از ; استفاده کنیم.یه نکته‌ای که بد نیست بدونید اینه که تا قبل از نسخه 1.3 کاتلین نیاز  بود تابع main با پارامترهای ورودی نوشته بشه، یعنی تیکه کد بالا رو باید  بصورت زیر می‌نوشتیم:fun main(args : Array&lt;String&gt;) {println(&amp;quotHello World&amp;quot)}توجه: این مورد دیگه نیاز نیست و برنامه بدون اون هم  بدون هیچ گونه مشکلی اجرا میشه. با اینحال اگه در گذشته از این روش استفاده  می‌کردین ضرورتی ندارد که آن را تغییر دهید و میتونید بدون مشکل به کارتون  ادامه بدین و کدهاتون کار میکنه.خب دوست من امیدوارم این مطلب برات مفید بوده باشه، راستی توی پیج اینستاگرام سایت روزانه آموزش‌های ویدیویی خوبی می‌زاریم بد نیست یه نگاهی بندازی بهش.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Sun, 06 Feb 2022 19:48:45 +0330</pubDate>
            </item>
                    <item>
                <title>فرق var با val در کاتلین + نحوه تعریف متغیرها در کاتلین : آموزش کاتلین (قسمت 3)</title>
                <link>https://virgool.io/@yashar0071/%D9%81%D8%B1%D9%82-var-%D8%A8%D8%A7-val-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%86%D8%AD%D9%88%D9%87-%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-3-rhiqbgdojql3</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!فرق var با val در کاتلینسلام به همه دوستان، تو این مقاله در مورد اینکه چطوری خیلی سریع کامپایلر کاتلین رو نصب کنیم و اولین برنامه‌مون رو باهاش بنویسیم بصورت کامل حرف زدیم. حالا تواین مقاله میخایم سرفصل آموزش کاتلین رو ادامه بدیم و بریم سراغ فرق var با val .به نظر شما فرق var با val چیه؟ بریم باهم ببینیم:کاتلین یه ویژگی بسیار باحالی توی تعریف متغیرهاش داره، اونم اینه که  خودش میتونه حدس بزنه نوع داده ای که متغیر شما داره چیه (مثلا string هستش  یا int) یعنی یه جورایی از این جهت شبیه به جاوااسکریپت هستش، برعکس جاوا  که باید دقیقا بگیم که نوع داده‌ای که تعریف میکنیم از چه نوعی هستش که  خیلی از گیر و گورهای جاوا سر همین داستانه که تو کاتلین کاملا حل شدهالبته یه نکته هم هستش، تو کاتلین (یا کوتلین) میتونیم مثل جاوا نوع داده‌ها رو به صراحت اعلام کنیم، یعنی دقیقا مثل جاوافرق var با valتو کاتلین دو جور متغیر داریم، متغیر قابل تغییر که با var اونو میشناسیم و متغیر ثابت یا غیر قابل تغییر که با val میشناسیمش.به مثال‌های زیر دقت کنید تا بهتر فرق var با val رو درک کنیدvar a: String = &amp;quotinitial&amp;quot // 1
println(a)
val b: Int = 1 // 2
val c = 3 // 3شماره 1: یک متغیر قابل تغییر تعریف کردیم که دقیقا نوع اون رو به صراحت اعلام کردیم که یک رشته هستش.شماره2: یک متغیر تغییر ناپذیر(val) از نوع int تعریف کردیم به نام b و  مقدار اولیه 1 رو بهش دادیم، این مقدار 1 دیگه توی طول برنامه قابلیت  تغییر به مقدار دیگه‌ای رو نداره حواستون باشه!شماره3: یک متغیر تغییر ناپذیر دیگه تعریف کردیم منتها دیگه نوع داده  رو بهش نگفتیم و خود کامپایلر کاتلین با توجه به مقداری که بهش دادیم (یعنی  عدد 3) متوجه میشه که این مقدار یک مقدار int هستش، پس اتوماتیک خودش  متغیر c رو int در نظر می‌گیره.توی کاتلین متغیرها باید مقداردهی اولیه بشن، به مثال زیر دقت کنید:var e: Int
println(e)اجرای کد بالا با خطا همراه خواهد بود، خطاش هم اینه : Variable ‘e’  must be initialized نکته‌ای که وجود داره اینه که شما میتونید متغیر e رو  هر جای برنامه که دلتون خواست مقدار دهی کنید اما باید حتما قبل از اولین  استفاده مقدار دهی شده باشه.خب امیدوارم این آموزش براتون مفید بوده باشه، یادتون نره حتما پیج اینستاگرام ترولرن رو دنبال کنید روزانه آموزش‌های ویدیویی مفیدی از برنامه نویسی اندروید اونجا قرار می‌دیم.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Sun, 06 Feb 2022 13:58:14 +0330</pubDate>
            </item>
                    <item>
                <title>شروع سریع برنامه نویسی با کاتلین : آموزش کاتلین (قسمت 2)</title>
                <link>https://virgool.io/@yashar0071/%D8%B4%D8%B1%D9%88%D8%B9-%D8%B3%D8%B1%DB%8C%D8%B9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-2-ubrw4j4so4ng</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!شروع سریع برنامه نویسی با کاتلینسلام به همگی، محمد زارع هستم و توی این قسمت از سری مقالات آموزش کاتلین میخایم خیلی ساده و سریع بریم اولین برنامه کاتلین خودمون رو بنویسیم، طبق سنت برنامه نویسان پیشین، اولین برنامه‌ای که مینویسیم، Hello world هستش.تو این مقاله میخام یه کار باحال بکنم و بدون استفاده از هیچ گونه IDE  یا محیط توسعه، خود کامپایلر کاتلین رو دانلود کنم، و توی یه فایل ساده  نودپد یه برنامه کاتلین بنویسم پس با من همراه باشید تا بریم ببینیم این  چالش باحال تهش چی میشه.اول از همه باید کامپایلر کاتلین رو دانلود کنید که از اینجا میتونید این کار رو انجام بدید.نکته مهم: این روش استفاده از کاتلین روش مرسومی نیست و ما برنامه نویسای اندروید از IDE اندروید استودیو برای  نوشتن کدهای کاتلین استفاده می‌کنیم، اما خب برای یادگیری بیشتر میخام این  روش هم بهتون آموزش بدم.فایل کامپایلر کاتلین رو از حالت فشرده خارج کنید، بعد طبق آموزشی که برای نصب جاوا بهتون دادم، یک environment variables جدید تو system path اضافه کنید و  آدرس پوشه bin از داخل فایل‌های فشرده شده کامپایلر کاتلین رو بهش بدید.خب حالا  Notepad یا هر ادیتور دیگه‌ که دوس دارید (هیچ فرقی نداره) رو  باز کنید و کدهای زیر رو داخلش بنویسید بر روی گزینه save as کلیک کنید و  اون رو به نام hello.kt ذخیره کنید، دقت کنید که پسوند فایل حتما .kt باشه.فقط دقت کنید که این فایل رو کجا ذخیره می‌کنید چون قراره با cmd به آدرس اون بریم و اجراش کنیم.fun main() {
 println(&amp;quotHello, World!&amp;quot)
 }خب حالا cmd رو باز کنید و به آدرسی که این فایل ذخیره شده برید (با دستور cd) بعد باید فرمان زیر رو بزنیم که کامپایلر کاتلین برنامه رو اجرا کنه:kotlinc hello.kt -include-runtime -d hello.jarو بعد از اون باید با فرمان زیر برنامه رو اجرا کنیم:java -jar hello.jarخب میبینید که به همین راحتی اولین برنامه کاتلین خودمون رو نوشتیم و  اجرا کردیم، فقط یادتون باشه که بعد از هر تغییر توی کد ها، اول یکبار  کامپایل کنید و بعد اجرا کنید. تو این سری مقالات آموزش کاتلین نکات جالبی  رو بهتون میگم پس مارو فراموش نکن!تعامل قوی کاتلین و جاواخب به یه نکته دقت کردین؟ برنامه کاتلین توسط دستور جاوا اجرا شد.  کاتلین هم دقیقا مثل جاوا روی jvm اجرا میشه، پس بخاطر همینه که این دو  زبان تعامل خوبی با هم دارن اصلا میتونیم توی یک پروژه اندرویدی هم از  کلاس‌های جاوایی و هم kotlin بصورت همزمان استفاده کنیم و هیچ مشکلی هم پیش  نمیاد.در آخر تصویر cmd من رو ببینید که چطور مراحل رو رفتم و hello world رو برام چاپ کرده:خب این هم یکی دیگه از مطالب سری مقالات آموزش کاتلین، تا آموزش بعدی بدرود.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Sun, 06 Feb 2022 13:47:36 +0330</pubDate>
            </item>
                    <item>
                <title>مزایای کاتلین چیست و چرا باید برای برنامه نویسی اندروید از کاتلین استفاده کنیم؟</title>
                <link>https://virgool.io/@yashar0071/%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%D8%A7%D8%B2-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-qtd8fv8vwjvy</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!مزایای کاتلیندر مقالات قبلی در مورد جاوا صحبت کردیم. در این مقاله به بررسی کاتلین می‌پردازیم، چرا باید برای برنامه نویسی اندروید از کاتلین استفاده کنیم؟ اصلا مزایای کاتلین چیست؟همانطور که می‌دانید، گوگل در سال 2017 پشتیبانی رسمی خود را از کاتلین به عنوان زبان رسمی برنامه نویسی اندروید اعلام کرد. شاید برایتان سوال باشد که چرا این زبان برای برنامه نویسی اندروید انتخاب شده و چه مزیت‌هایی دارد. در ادامه مقاله مزایای کاتلین را مورد بررسی قرار می‌دهیم.مزایای کاتلینکد کمتر،خوانایی بیشتر: زمان کمتری را برای نوشتن کدهای خود صرف  می‌کنید و همچنین برای فهم کدهای دیگران زمان کمتری نیاز خواهید داشت.زبان و محیط کاملا بالغ: کاتلین از سال 2011 که زمان ایجاد آن است تا  الان نه تنها به عنوان یک زبان برنامه نویسی بلکه به عنوان یک اکوسیستم  کامل با ابزارهای بسیار قوی توسعه یافته است. اکنون نیز بطور یکپارچه در  اندروید استودیو قرار گرفته و توسط بسیاری از شرکت‌ها برای توسعه  برنامه‌های اندروید مورد استفاده قرار می‌گیرد.پشتیبانی از کاتلین در Android Jetpack و سایر کتابخانه ها: با استفاده از Android KTX، ویژگی‌های زبان کاتلین  مانند coroutines و lambdas و extension functions و… به کتابخانه‌های  موجود اندروید اضافه شده و قابلیت استفاده دارند.تعامل عالی با جاوا: شما می‌توانید از کاتلین به همراه زبان برنامه  نویسی جاوا در برنامه‌های اندرویدی خود بدون نیاز به انتقال همه کدهای خود  به کاتلین، استفاده کنید.زبانی چند پلتفرمه: از کاتلین علاوه بر توسعه اندروید می‌توانید برای بک‌اند، ios و برنامه‌های تحت وب نیز استفاده کنید. با استفاده از kmm برای ios نیز کد  بزنید و از مزایایی اشتراک کدهای مشترک در بین پلتفرم‌ها لذت ببرید.امنیت کد: کدنویسی کمتر و خوانایی بهتر در نهایت منجر به خطاهای کمتری  می‌شود. کامپایلر کاتلین این معدود خطاهای باقیمانده را شناسایی می‌کند و  کد را ایمن می‌کند.یادگیری آسان: یادگیری کاتلین به خصوص برای توسعه دهندگان جاوا بسیار آسان است.جامعه توسعه دهندگان بزرگ: کاتلین از حمایت و مشارکت‌های بسیاری از طرف  جامعه برنامه نویسان بخصوص برنامه نویسان اندروید برخوردار است. زبق گفته  گوگل بیش از 60 درصد از 1000 برنامه برتر در پلی استور از کاتلین استفاده می‌کنند.با توجه به مزایای کاتلین و توصیه های گوگل و همچنین توجه به اینکه اکثر  لایبرری‌های به روز و عالی فقط برای کاتلین ارائه می‌شود، من به عنوان یک  برنامه نویس اندروید به این نتیجه رسیدم که برای توسعه اپلیکیشن‌های  اندروید، به جای جاوا از کاتلین استفاده کنم.دوست برنامه نویسی من، برای خوندن مقالات تخصصی اندروید، میتونی به سایت ترولرن هم مراجعه کنی</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Sat, 05 Feb 2022 19:37:05 +0330</pubDate>
            </item>
                    <item>
                <title>مقایسه Nginx و Apache</title>
                <link>https://virgool.io/@yashar0071/%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-nginx-%D9%88-apache-ulonsvfm5mrs</link>
                <description>قبل از هر چیز، اگه به برنامه نویسی اندروید علاقه مندی، من تو سایتم یک  دوره آموزش برنامه نویسی اندروید از سطح کاملا مبتدی تا پیشرفته گذاشتم که کاملا رایگان میتونی ازش استفاده کنی، پس به دوره صفر مطلق اندروید یه سر بزن!وب سرور ها بخش جدایی ناپذیر تمامی سرورها برای ارائهء مطالب مبتنی بر وب بر روی اینترنت هستند.وب  سرورهای متعددی در بازار ارائه شده اند ولی از مهم ترین آنها می توان به  Apache و Nginx اشاره کرد. انتخاب بین این دو وب سرور گاها باعث سردرگمی  برخی کاربران می شودبه همین دلیل در ایم مقاله به مقایسه Nginx و Apache  پرداخته ایم.باید در نظر  داشت این دو وب سرور نمی توانند جایگزینی برای یکدیگر به حساب بیایند زیرا  هر کدام از آنها خصوصیات و کاربردهای خاص خود را دارند. در نتیجه برای  انتخاب بین این دو وب سرور باید نیازهای خود را بررسی کنیم. در این مقاله  به تفاوت های بین این دو وب سرور نیز خواهیم پرداخت.مقایسه Nginx و Apache با توجه به معیارهای زیر می پردازیم:معماری مدیریت ارتباطاتمحتوای پویا و ایستاتنظیمات توزیع شده و مرکزیترجمه مبتنی بر فایل و مبتنی بر URLماژول هاسازگاریآپاچیآپاچی  برای اولین بار در سال ۱۹۹۵ توسط Robert McCool طراحی شد. بعد از آن و تا  به امروز این نرم افزار توسط “بنیاد نرم افزار آپاچی” مدیریت شده و توسعه  داده می شود.به دلیل قدرت  زیاد و همخوانی آن با بسیاری از پلتفرم ها Apache انتخاب اول بسیاری از  مدیران سرور است. همچنین آپاچی را می توان از طریق بارگذاری ماژول پویای آن  به راحتی گسترش داد. آپاچی امکان پردازش بسیاری از زبان های تفسیر شده را  دارد و برای اینکار نیازی به نرم افزارهای ثانویه نیست.برای کسب اطلاعات در  حوزه وب سرور آپاچی چیست به شما پیشنهاد می شود مقاله ما را مطالعه نمایید.NginxNginx  توسط Igor Sysoev به عنوان راه حلی برای مشکل c10K طراحی و ارائه شد. مشکل  C10K به مشکلی اشاره می کند که در آن تعداد کانکشن های هم زمان به سرور به  ۱۰۰۰۰ می رسد و وب سرور در ارائه ی خدمات به مشکل برخورد می کند. در چنین  مواردی حتی آپاچی که وب سرور قدرتمندی بود توان پاسخگویی به این حجم ترافیک  را نداشت.Nginx به عنوان  راه حل این مشکل برای سرویس دهی به تعداد بسیار بالایی از درخواست های  همزمان حتی با منابع محدود معرفی شد. بعد از رونمایی اولیه این وب سرور هر  روز به شهرت بیشتری رسید. مدیران سرورهایی که سایت های تحت مدیریت آنها با  تعداد بازدید های بسیار بالایی رو به رو بودند شروع به مهاجرت به Nginx  کردند.Nginx با استفاده از  ویژگی های پیشرفتهء آن حتی زیر بار بسیار زیاد نیز به خوبی فعالیت میکرد.  به دو ویژگی مهم Nginx در ادامه اشاره شده است.پراکسی معکوستعادل بارپیشنهاد می شود، برای دریافت اطلاعات بیشتر درباره Nginx چیست و نحوه نصب و راه اندازی آن به مقاله نوشته شده مراجعه نمایید.در ادامه به تعدادی از تفاوت های Nginx و Apache اشاره خواهیم کرد:مقایسه Nginx و Apache از نظر معماری مدیریت ارتباطاتApacheآپاچی ماژول های چند-فرآیندی متفاوتی را ارائه می دهد. مدیر سرور می تواند این ماژول ها را به راحتی از طریق MPM تغییر دهد.  MPM_Prefork  :  این ماژول هر یک از پردازش ها را با یک رشته ی پردازش جداگانه ایجاد می  کند. هر یک از رشته ها تنها یک درخواست را پاسخ می دهد. ایجاد هر یک از  پردازش ها نیاز به مقداری حافظه ی اصلی دارد، در نتیجه تعداد پردازش های  ممکن محدود است و بالا رفتن تعداد پردازش ها باعث کندی سرور می شود. این  ماژول تا زمانی که تعداد درخواست ها بیشتر از تعداد پردازش های ممکن نشده  باشد سریعتر عمل میکند. این ماژول بهترین انتخاب برای کار با PHP با  استفاده از mod-php است.  MPM_worker:   این ماژول پردازش ها را با چندین رشته ایجاد میکند. زمانی که چندین رشته  وجود داشته باشد امکان ایجاد چندین کانکشن نیز وجود خواهد داشت. این ماژول  بهینه تر از mpm_prefork عمل می کند. در این ماژول نیازی به ایجاد یک رشته ی  جدید برای هر درخواست نیست و درخواست های جدید توسط رشته های موجود دریافت  می شود در نتیجه نیازی به صبر کردن برای آزاد شدن پردازش ها نخواهد بود.  MPM_Event:   این ماژول از خیلی ابعاد شبیه به mpm_worker عمل میکند. در این ماژول چه  درخواستی وجود داشته باشد یا خیر اتصال باز می ماند. این ماژول وظیفه ی  رسیدگی به باز ماندن اتصالات را نیز بر عهده دارد. ماژول رشته هایی را به  باز نگهداشتن اتصالات تخصیص می دهد و باقی درخواست ها را به رشته های دیگر  منتقل می کند. این کار باعث می شود پردازش ها برای باز نگه داشتن اتصالات  هزینه نشوند.NginxNginx  با هدف ارائه ی سرویس به درخواست هایی با تعداد بسیار بالا و با مصرف  منابع پایین طراحی شده است. به دلیل ناتوانی آپاچی در ارائه ی سرویس در  زمانی که تعداد درخواست ها بالا می باشد Nginx ارائه شد و بازدهی خوبی  داشت. در سرورهایی که تعداد درخواست های بالایی دریافت می کنند عموما Nginx  بهتر از آپاچی یا وب سرورهای دیگر عمل می کند.  Nginx  در ارائه ی داده های غیر پویا بسیار سریع بوده و بازدهی آن تقریبا دو  برابر سریع تر از آپاچی است. نحوه ی کار Nginx به طور کلی با آپاچی تفاوت  می کند. در Nginx یک پردازش مرکزی یا Master process وجود دارد. عموما  پیشنهاد می شود برای هر هسته ی CPU یک Master process تعریف شود. این پراسس  مرکزی چندین پردازش کاری ایجاد می کند. هر پردازش کاری تنها یک رشته ایجاد  می کند. تفاوت اصلی Nginx و آپاچی در نوع پردازش و ایجاد رشته ها است که  توضیح داده شد.  در Nginx یک  رشته می تواند به چندین اتصال پاسخ دهد، در صورتی که در آپاچی هر رشته تنها  به یک اتصال پاسخ می دهد. از آنجایی که یک رشته ی ایجاد شده می تواند به  تعداد زیادی درخواست پاسخ دهد، نیازی به ایجاد رشته های جدید نیست و در  نتیجه از حافظه ی کمی استفاده می شود.مقایسه Nginx و Apache از نظر محتوای پویا و ایستامحتوای ایستا:در  این زمینه Nginx با ۲.۵ برابر سرعت بیشتر در پردازش محتوای ایستا با ۱۰۰۰  اتصال همزمان نسبت به آپاچی پیشتاز است. در یک آزمایش دیگر با ۵۱۲ اتصال  همزمان Nginx دو برابر سریع تر از آپاچی عمل کرده و ۴ درصد حافظه ی کمتری  مصرف می کند. پس در صورتی که سرویس شما مقدار زیادی اطلاعات ایستا ارائه می  دهد بهینه است از Nginx به عنوان وب سرور خود استفاده کنید.  در  آزمایشی که برای آزمایش کارایی Nginx و آپاچی در ارائه ی سرویس به CMS ها  (در اینجا از وردپرس استفاده شده است) انجام شد، هر دو وب سرورها تقریبا  بازدهی یکسانی دارند.محتوای پویا:با  نظر به اینکه اکثر وبسایت های فعالی و سرویس های آنلاین از محتوای پویا  برای ارائه ی سرویس به کاربران استفاده می کنند، سرعت ارائه ی اطلاعات پویا  توسط وب سرور از اهمیت ویژه ای برخوردار است.  در  آزمایش های انجام شده بر روی دو وب سرور nginx و آپاچی هر دو با سرعت  یکسانی اطلاعات پویا را ارائه می کنند. همچنین مقدار مصرف حافظه و قدرت  پردازش نیز در هر دو وب سرور یکسان است. در استفاده از CMS ها نیز (وردپرس،  جوملا، دروپال و…) هر دو وب سرور توانایی یکسانی در ارائه ی سرویس دارند.برای کسب اطلاعات بیشتر درباره سیستم مدیریت محتوای دروپال می توانید اینجا کلیک کنید. در هنگام ارائه ی محتوای پویا، آپاچی به شکل مستقیم با PHP کار میکند ولی Nginx با استفاده از PHP-fpm این کار را انجام می دهد.  با توجه به این معیارها و آزمایشات صورت گرفته، تفاوت زیادی از نظر انتخاب بین این دو وب سرور برای ارائه ی محتوای پویا وجود ندارد.مقایسه Nginx و Apache از نظر سیستم عاملآپاچی:آپاچی  از سیستم عامل های مبتنی بر لینوکس و همچنین Unix به خوبی پشتیبانی می  کند. همچنین مشکلی با پشتیبانی از وب سرورهای مبتنی بر ویندوز سرور ندارد.:NginxNginx  به خوبی از سیستم عامل های مبتنی بر لینوکس و Unix پشتیبانی می کند ولی بر  روی سرورهای مبتنی بر ویندوز به شکل محدود اجرا می شود. با اینحال امکان  ارائه ی محتوای پویا و ایستا را بر روی ویندوز نیز دارد. در نظر داشته  باشید در حال حاضر اکثر وب سرورها مبتنی بر لینوکس هستند.</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Mon, 14 Sep 2020 13:15:59 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی تفاوت‌های SQL و NoSQL – همراه با مثال</title>
                <link>https://virgool.io/@yashar0071/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AA%D9%81%D8%A7%D9%88%D8%AA%D9%87%D8%A7%DB%8C-sql-%D9%88-nosql-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-%D9%85%D8%AB%D8%A7%D9%84-o7ix55ypvqwq</link>
                <description>بیشتر ما در حال حاضر با بانک‌های اطلاعاتی SQL آشنایی داریم، حال تفاوتی در نام آن‌ها نیست، خواه MySql باشد یا اوراکل و یا هر مورد دیگری. در کنار SQL، در سال‌های اخیر بانک‌های اطلاعاتی NoSql توانستند جایگاه خود را در میان توسعه‌دهندگان محکم کنند و مشکلات زیادی را حل نمایند.تفاوت‌های اصلی این دو مورد در چگونگی ساخت آن‌ها، نوع اطلاعاتی که ذخیره می‌کنند و چگونگی ذخیره کردن آن‌هاست. بانک‌های اطلاعاتی SQL، رابطه‌ای و ساختارمند هستند، درست مانند دفترچه تلفن همراه، اما بانک‌های اطلاعاتی که رابطه‌ای نیستند و NoSqlاند، مبتنی بر سند رفتار می‌کنند و توزیع شده هستند. درست مانند پوشه‌ها که در هرکدام اطلاعات کلی یک شخص قرار می‌گیرد.در این مقاله قصد داریم به صورت کامل در رابطه با اینکه هرکدام این بانک‌های اطلاعاتی به چه صورتی هستند صحبت کنیم و بعد از آن تفاوت‌های کلیدی‌شان را بررسی خواهیم کرد.SQL: بانک اطلاعاتی رابطه‌ایاولین موضوعی که تفاوت کلیدی دو حالت را بیان می‌کند، شیوه‌ای است که این بانک‌های اطلاعات، داده‌ها را ساختاردهی و ساختمان بندی می‌کنند. بانک‌های اطلاعاتی SQL بسیار در این رابطه سختگیرانه عمل می‌کنند و همه چیز را بسیار مرتب قرار می‌دهند، درست مانند دفترچه‌های تلفن. این مدل در سال ۱۹۷۰ توسط IBM طراحی شد. بانک‌های اطلاعاتی رابطه‌ای می‌توانند شامل چندین جدول مختلف باشند، موجودیت‌ها در ردیف‌ها قرار می‌گیرد و برای نمایش داده‌های مربوط به هر آیتم ما از ستون‌ها استفاده می‌کنیم، مانند ستون نام، ستون شماره تلفن و… . در علم بانک‌های اطلاعاتی به رابطه میان جدول و نوع فیلدها عمدتا schema گفته می‌شود. در یک بانک اطلاعاتی رابطه‌ای قبل از اینکه هرگونه داده‌ای وارد شود، ابتدا باید به صورت کامل و درست schema را تعریف کنیم.برای اینکه یک بانک اطلاعاتی رابطه‌ای به درستی کار کند، داده‌هایی که شما وارد می‌کنید، لازم است که به صورت بسیار صحیح و ساختارمندی قرار بگیرند. وقتی یک شمای کلی یا schema درست را طراحی کنید، در بانک اطلاعاتی‌تان کمترین میزان افزونگی و یا ناهمخوانی داده‌ها را خواهید داشت. این موضوع برای تجارت‌هایی با میزان ریسک‌پذیری بالا، بسیار حیاتی و لازم است. وقتی شمای کلی را به صورتی ضعیف طراحی کنید، بعدها به صورت کامل دچار سرگیجه و سردرد خواهید شد. وقتی شما در این مدل بخواهید که یک آیتم جدید را به شمای بانک اطلاعاتی‌تان وارد نمایید نیاز دارید که تمام بانک اطلاعاتی را ویرایش کنید و همه موارد را با همدیگر همگام سازی کنید.SQL: زبان ساختارمند پرسش‌هاSQL زبان برنامه‌نویسی است که معماران بانک‌های اطلاعاتی برای ساخت بانک‌های اطلاعاتی رابطه‌ای از آن استفاده می‌کنند. در یک بانک اطلاعاتی مانند MySQL با استفاده از این حالت می‌توانید کوئری‌هایی را اجرا کنید، داده‌هایی را برگشت دهید، ویرایش کنید، حذف نمایید و یا رکورد جدیدی را اضافه کنید. این زبان بسیار سبک است و از دسته زبان‌های اعلامی است، با استفاده از این زبان، توسعه‌دهنده می‌تواند بسیاری از کارهای سختی که انجام می‌دهد را به سادگی در این حالت انجام دهد.یکی دیگر از دلایلی که بانک‌های اطلاعاتی SQL تا به این اندازه محبوب است، این است که در اکثر برنامه‌ها و پکیج‌های توسعه مانند LAMP و یا پشته‌های مبتنی بر Ruby وجود دارند. این نوع از بانک‌ها به خوبی درک شده‌اند و پشتیبانی بسیاری از آن می‌شود. به همین دلیل استفاده و اجرای آن کار ساده‌تر به نسبت حالت بعدی‌مان است.NoSQL: بانک‌ اطلاعاتی غیر رابطه‌ای و توزیع شدهاگر داده‌های شما به صورت واضح تعیین نشده‌اند و یا اینکه ساختاردهی درستی ندارند، پس ساختن یک schema برای‌تان بسیار مشکل است. بجای اینکار می‌توانید از بانک‌های اطلاعاتی غیر رابطه‌ای استفاده کنید، این مدل از بانک اطلاعاتی بسیار منعطف‌تر نسبت به همتاهای خود است. ایده بانک‌های اطلاعاتی غیر رابطه‌ای مانند فایل‌ها و پوشه‌ها است که در آن تمام اطلاعات مرتبط به هم (فایل‌ها) در یک جا (پوشه‌ها) قرار می‌گیرند. اگر یک وبلاگ وردپرسی از بانک‌ اطلاعاتی NoSQL استفاده کند، هر کدام از فایل‌ها یک پست وبلاگی را در خود نگه می‌دارند، لینک‌های شبکه‌های اجتماعی، تلفن‌ها، متن‌ها و تمام موارد دیگر.تلاش برای ذخیره، پردازش و آنالیز داده‌هایی که ساختارمند نیستند، به شما می‌گویند که بهتر است به دنبال یک جایگزین برای SQL باشید، در حقیقت بانک‌های اطلاعاتی NoSQL سطح دسترسی و کار بسیار منعطف‌تری را با داده به شما می‌دهد.چگونگی کارکرد بانک‌های اطلاعاتی NoSQL در مقابل مدل رابطه‌ای این است که در بانک‌های اطلاعاتی NoSQL بجای اینکه داده‌ها در جدول‌ها ذخیره شود، در سندها ذخیره می‌شود. از این طریق می‌شود داده‌هایی ساختاردهی نشده را مانند (تصاویر، مقالات، ویدیوها و موارد مختلف دیگر) در یک سند ذخیره کرد و به سادگی آن‌ها را پیدا نمود، در این حالت، دیگر برای ذخیره موارد مختلف از جداول استفاده نمی‌شود. این موضوع درک‌پذیری بالاتری دارد، اما بخاطر داشته باشید که استفاده از این حالت نیازمند پردازش بیشتر و حافظه بیشتر نسبت به SQL است.بانک‌های اطلاعاتی NoSQL همچنین مزیت‌ دیگری را نیز ارائه می‌دهند و آن آسان بودن دسترسی است. بانک‌های اطلاعاتی SQL بیشتر به عنوان گزینه مناسبی برای اپلیکیشن‌هایی است که با زبان‌های برنامه‌نویسی شئ‌گرا مانند جاوا، پایتون، پی‌اچ‌پی و… نوشته می‌شود. اما NoSQL برای توسعه‌دهندگانی مناسب است که از طریق APIها به داده‌ها دسترسی پیدا می‌کنند و بدون اینکه نیاز به یادگیری SQL یا ساختار و معماری بانک اطلاعاتی آشنایی داشته باشند، می‌توانند با آن کار کنند.در رابطه با بانک‌های اطلاعاتی NoSQL ما انواع متفاوتی را داریم که در اینجا قصد داریم در رابطه با ۴ نوع مرسوم از آن‌ها صحبت کنیم:مدل Key-Value : در این مدل اطلاعات در یک راه بدون شِما یا (شما کم) ذخیره می‌شوند و داده‌ها شامل کلیدها و مقادیر Index هستند. Cassandra، Azure، LevelDB و Riak نمونه‌هایی از این حالت هستند.ذخیره ستونی : به این مدل ذخیره Wide-Column نیز گفته می‌شود، در این حالت بجای ردیف‌ها، جداول و ستون‌های مربوط به داده ذخیره می‌شوند. با استفاده از این مدل شما بیشترین میزان از مقیاس پذیری و کارایی را در اختیار دارید. نمونه‌هایی از این حالت Hbase، BigTable و HyperTable است.بانک‌اطلاعاتی سندی : مدل Key-Value را در نظر بگیرید و حال پیچیدگی بیشتری را به آن اضافه کنید، هر کدام از سندهای موجود در این بانک اطلاعاتی داده‌های مربوط به خود و کلید منحصر به فرد خود را دارد، که از آن برای بازیابی داده استفاده می شود. این مورد گزینه بسیار عالی برای ذخیره‌سازی، بازیابی و داده‌های مبتنی بر سند است، اما باید گفت که این مورد نیز به صورت منحصر به فردی ساختارمند است. نمونه‌هایی از این حالت ​MongoDB و CouchDB است.بانک‌اطلاعاتی گراف : آیا داده‌هایی دارید که با گراف‌ها ارتباط دارد؟ این متد یکی از بهترین راه‌حل‌ها برای شما خواهد بود. نمونه‌هایی از آن Polyglot و Neo۴J است.برخی از تفاوت‌های کلی SQL و NoSQLبانک‌های اطلاعاتی SQL به صورت اصلی با عنوان بانک اطلاعاتی رابطه‌ای یا RDBMS شناخته می‌شود؛ بانک‌های اطلاعاتی NoSQL به عنوان بانک اطلاعاتی غیر رابطه‌ای و توزیع شده شناخته می‌شود.بانک‌های اطلاعاتی SQL داده‌ها را در جداول و ستون ها ذخیره می‌کند، این درحالیست که ذخیره‌سازی در بانک‌های اطلاعاتی NoSQL مبتنی بر سندات، key-valueها، گراف‌ها و wide-column است.بانک‌های اطلاعاتی SQL، شِمای کلی را از بانک پیشنهاد می‌دهند،‌ اما NoSQL برای این مورد منعطف است و می‌تواند بدون دردسر تغییر کند.بانک‌های اطلاعاتی SQL تمرکز و تاکید بسیاری روی موضوع ACID که مخفف (Atomicity, Consistency, Isolation and Durability) است تمرکز دارد، درحالیکه NoSQL روند CAP را اجرا می‌کند که مخفف (Consistency, Availability and Partition tolerance) است.برای محیط‌هایی با تراکنش بسیار زیاد، بانک‌های اطلاعاتی SQL توانایی بهتری را از خودشان نشان داده‌اند، این مورد برای اپلیکیشن‌هایی با حجم داده بالا بسیار مناسب هستند.مقیاس‌پذیری در بانک‌های اطلاعاتی مدل رابطه‌ای بسیار سخت است و تقریبا نیاز دارد که کلیت بانک اطلاعاتی را تغییر دهید، این در حالی‌ست که تغییر دادن و توسعه یک بانک اطلاعاتی در سیستم بانک‌های اطلاعاتی NoSQL بسیار ساده‌تر و روند آسان‌تری دارد.در زمینه پشتیبانی کردن، بانک‌های اطلاعاتی مدل رابطه‌ای معمولا از پشتیبانی خوبی برخوردار هستند و حتی برخی از شرکت‌ها به صورت رسمی و منحصرا سرویس‌های پشتیبانی را برای یک شرکت بزرگ در نظر می‌گیرد. اما تنها برخی از بانک های اطلاعاتی NoSQL به این صورت عمل می‌کنند، بیشتر آن‌ها پشتیبانی رسمی ندارند و تنها راه حل برای یافتن پاسخ‌ها استفاده از انجمن‌ها و مواردی مانند این است.دلایلی برای استفاده از بانک‌اطلاعاتی SQLوقتی موضوع به تکنولوژی‌های بانک اطلاعاتی مربوط می‌شود، نمی‌شود گفت که تنها یک راه‌حل کلی وجود دارد و تمام. درست به همین دلیل است که بسیاری از شرکت‌ها همزمان از هر دو سیستم بانک اطلاعاتی استفاده می‌کنند. با وجود آنکه ممکن است سرعت و مقیاس‌پذیری بالای NoSQL شما را شگفت زده کند اما موارد دیگری نیز وجود دارد که در آن نیاز دارید که از یک سیستم بانک اطلاعاتی SQL استفاده کنید. دو مورد برای اینکه از بانک‌ اطلاعاتی SQL استفاده کنید در زیر ذکر شده است:شما باید از سازگاری ACID مطمئن شوید. وجود سازگاری ACID در بانک‌های اطلاعاتی در کاهش آنومالی و ناسازگاری داده کمک بسیاری می‌کند، با این کار همه چیز مطابق با میل شما انجام می‌شود. ممکن است این قابلیت در برخی از بانک‌های اطلاعاتی NoSQL وجود نداشته باشد و یا اینکه چندان به آن اهمیت داده نشده باشد. البته این موضوع نیز به دلیل بالا بودن کارایی و مقیاس‌پذیری آنهاست.داده‌های شما ساختارمند است و تغییر نمی‌کند. اگر از رشد نکردن و تغییر نکردن مداوم بانک اطلاعاتی‌تان مطمئن هستید، پس بدانید که SQL انتخاب بسیار مناسبی برای شما خواهد بود.دلایلی برای استفاده از بانک‌های اطلاعاتی NoSQLوقتی قصد دارید تا اپلیکیشن‌هایی با سرعت بالا ایجاد کنید و بتوانید با داده‌های بزرگ و مسئله‌ای مانند BigData کار کنید، بانک اطلاعاتی NoSQL می‌تواند انتخاب بسیار خوبی برای شما باشد. انجام این کار با بانک‌های اطلاعاتی سنتی کاری سخت و دشوار است، به همین دلیل برای انجام چنین کارهایی بانک اطلاعاتی مانند MongoDB، CouchDB و… انتخاب بسیار خوبی هستند.ذخیره‌سازی داده‌هایی با حجم بسیار و ساختاردهی نشده. در بانک‌های اطلاعاتی NoSQL شما هیچگونه محدودیتی روی نوع داده‌هایی که در کنار هم قرار می‌دهید ندارد. همچنین به شما اجازه می‌دهد آنگونه که می‌خواهید داده‌ها را تغییر دهید. با استفاده از روش مبتنی بر سند، شما می‌توانید داده‌های مختلفی را بدون اینکه نوع آن‌ها مسئله مهمی برای ذخیره سازی باشد، در یک مکان قرار دهید.ذخیره‌سازی و انجام محاسبات ابری. ذخیره‌سازی مبتنی بر ابر یکی از راه‌حل‌های بسیار مناسب همراه با میزان هزینه خوب است، اما برای بالاتر رفتن میزان مقیاس‌پذیری نیاز است که داده‌ها را در سرورهای مختلف منتشر کنید.توسعه سریع. وقتی قصد دارید یک پروژه جدید را راه اندازی کنید، در حالتی که از بانک‌های اطلاعاتی رابطه‌ای استفاده کنید، باید ابتدای کار ساختار برنامه را مشخص کنید و شمای کلی برای آن طراحی نمایید که این کارها در ابتدا بسیار زمان‌بر است. اما در حالت بانک اطلاعاتی NoSQL دیگر این مشکلات را نخواهید داشت.بررسی چند ویژگی کلی از چندین بانک اطلاعاتی رابطه‌ای SQL۱.MySQL Community EditionMysql یکی از محبوبترین سیستم‌های مدیریت بانک‌های اطلاعاتی متن باز است. عمدتا از این سیستم همراه با آپاچی و پی‌اچ‌پی استفاده می‌شود. اما می تواند با Ngnix و یا حتی نودجی‌اس نیز به خوبی کار کند. در زیر می‌توانید چند فایده کلی از این سیستم را مشاهده کنید:قابلیت تکثیرپذیری: با استفاده از قابلیت تکثیرپذیری می‌توانند بانک اطلاعاتی MySQL را روی چندین نود مختلف قرار دهید، این کار بارگذاری را بهینه‌تر می‌کند مقیاس‌پذیری و در دسترس بودن را افزایش می‌دهد.وجود انجمن قدرتمند: به دلیل متن باز بودن این سیستم بانک اطلاعاتی، پشتیبانی بسیار خوبی از طرف انجمن‌های مختلف از آن صورت می‌گیرد، این مسئله بسیار مورد قابل توجه و مهمی است.پلتفرم‌ها و زبان‌های مختلف: مای‌اس‌کیو‌ال روی تقریبا تمام پلتفرم‌های محبوب و حتی موارد دیگر قابل دسترس است، لینوکس، ویندوز، مک، BSD و سولاریس. همچنین قابلیت ارتباط برقرار کردن با زبان‌های مختلف برنامه‌نویسی مانند جاوااسکریپت، روبی، سی‌++، پی‌اچ‌پی و… را دارد.۲. MS-SQL Server Express Editionسیستم مدیریت بانک اطلاعاتی مایکروسافت یک سیستم کاربرپسند با میزان مقیاس‌پذیری و قابلیت اعتماد بالا است، همچنین از طرف مایکروسافت به خوبی پشتیبانی می‌شود. چند مورد از ویژگی‌های این سیستم عبارت است از:محیط توسعه یکپارچه: برای افرادی که با استفاده از ویژوال‌استدیو برنامه‌نویسی می‌کنند، استفاده کردن از سیستم بانک اطلاعاتی SQL بسیار کابردی و مفید خواهد بود.پشتیبان‌گیری ابری: وجود سیستم‌های ابری در مایکروسافت این قابلیت را به سیستم می‌دهد که بتوان پشتیبان‌های ابری از بانک‌های اطلاعاتی را تهیه کرد.۳. Oracle Express Editionاین مورد نسخه‌ای محدود شده نسبت به نسخه اینترپرایز اوراکل است. این سیستم برای توسعه و پیاده‌سازی اپلیکیشن‌ها رایگان است. در زیر می‌توانید چند ویژگی کلی از این سیستم را مشاهده کنید:ارتقا آسان: به سادگی می‌توان به نسخه جدید یا نسخه اینترپرایز ارتقا یافت.پشتیبانی از پلتفرم‌های مختلف: این مورد از پلتفرم‌هایی مانند ویندوز و لینوکس پشتیبانی می‌کند.مقیاس‌پذیری: اگرچه روند مقیاس‌پذیری این سیستم به اندازه MySQL بهینه نیست، اما قابل اعتماد است و امنیت بالایی دارد.بررسی چند ویژگی کلی از چندین بانک اطلاعاتی NoSQL۱. MongoDBمحبوب‌ترین سیستم بانک اطلاعاتی در میان سیستم‌های بانک اطلاعاتی NoSQL مونگو‌دی‌بی‌ است. این مورد توسط DoubleClick توسعه داده شده و با استفاده از ++C نوشته شده است. بسیار مهم است که بدانیم از این سیستم در چندین شرکت بزرگ هم اکنون استفاده می‌شود.در زیر می توانید چند فایده کلی از این مورد را مشاهده کنید:سرعت: برای پرس‌جوهای ساده، کارایی بسیار خوبی دارد و از آنجایی که مبتنی بر سند است، عملیات Join دیگر سرعت ما را کاهش نمی‌دهد.مدیریت کردن: از این سیستم هم توسعه‌دهندگان و هم مدیران سیستم استفاده می‌کنند. همچنین قابلیت به اشتراک گذاری خوبی را می‌دهد.شِما پویا‌: این ویژگی اجازه می‌دهد تا بتوانید بدون تغییر دادن در شما کلی برنامه، داده‌ها بیشتری را قرار دهید.۲. CouchDBاین مورد نیز مبتنی بر سند است و داده‌ها را در قالب مستندات JSON  ذخیره می‌کند. در زیر می توانید چند فایده کلی از این مورد را مشاهده کنید:HTTP query: در این سیستم می‌توانید به سندهای بانک اطلاعاتی‌تان از طریق مرورگر دسترسی داشته باشید.قابلیت تکثیر آسان: پیاده‌سازی حالت تکثیر در این نوع از پایگاه داده بسیار آسان است.۳. Redisاین مورد نیز یکی دیگر از سیستم‌های پایگاه داده NoSQL است، اما بیشتر استفاده از آن بدلیل سرعت بسیار بالای آن است. این سیستم با استفاده از زبان ANSI C طراحی و ساخته شده است. در زیر می توانید چند فایده کلی از این مورد را مشاهده کنید:ساختارهای داده‌ای: Redis از ساختارهای داده‌ای کارآمد برای توسعه و گسترش استفاده کرده، حالتی که آن را data structure server می‌نامند. کلیدهای ذخیره شده در این سیستم می‌توانند هش‌ها، لیست‌ها، رشته‌ها و مواردی مانند این باشند.سرعت: این مورد به عنوان سریع‌ترین سیستم بانک اطلاعاتی NoSQL شناخته می‌شود. همچنین بسیار می‌تواند برای بهروری حافظه بهینه باشد.منابع:thegeekstuffupwork</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Fri, 11 Sep 2020 12:28:49 +0430</pubDate>
            </item>
                    <item>
                <title>Express.js چیست و چرا انقدر مهمه ؟‌</title>
                <link>https://virgool.io/@yashar0071/expressjs-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A7%D9%86%D9%82%D8%AF%D8%B1-%D9%85%D9%87%D9%85%D9%87-vq1hhlchp5x1</link>
                <description>خب express.js همانطور که در سایت خودش نوشته یک فریمورک سریع ، بی درد سر و سبک وزن یا مینیمال برای نود جی اس است .Fast, unopinionated, minimalist web framework for Node.jsبه زبان جاوا اسکریپت نوشته شده است و تنها بعنوان یک لایه ی نازک ویژگی های هسته ی وب عمل میکند . بر خلاف فریمورک های بزرگ و پردردسر مثل Ruby on Rails  اکسپرس هیچگونه تمپیلت انجین یا ORM جانبی ندارد . اکسپرس توسط کامپوننت های دیگر ساخته نشده است .کار اکسپرس این است که یک ابزاری برای دستان برنامه نویسان وب بسازد که ساخت سایت با Node.js را راحت بکند .نصب راحت و محیط کدنویسی خالی با جاوا اسکریپت ، اکسپرس را بهترین گزینه برای توسعه ی سریع و راحت ، میکند .express.js بهترین گزینه برای استارتاپ هایی است که میخواهند سریعا یک محصول تولید کنند و زیاد درگیر مسائل پیچیده کدنویسی نشوند .بیایید دقیقا express.js را بررسی کنیم و ببینیم که چطور کار میکنه ، خب اول مقاله باید این نکته را بدونید که پیش نیاز  express.js فهمیدن Node.js است .محیط Node.js بخشی اساسی برای ساخت و استقرار express.js است . تقریبا میشه گفت Node.js یک مفسر کراس - پلتفرم برای جاوا اسکریپت است  که قادر به اجرای جاوا اسکریپت بصورت نامحدود برای مرورگرهاست .در واقع Node.js به جاوا اسکریپت کمک میکند تا بتواند در سمت سرور هم نقش بازی کند و بعنوان یک زبان برنامه نویسی سمت سرور بجای زبان های PHP, Python, Java و ... اانتخاب شود .توسط پکیج منیجر نود یا همان npm میتوان express.js را نصب کرد و Node.js از پیش نصب شده را شخصی سازی کرد .برنامه نویسان Node.js هزاران کتابخانه ی اوپن سورس به این شکل نوشته اند که میتوانید استفاده کنید .این وب سرور ساده را بررسی کنید :server.js &#x60;&#x60;&#x60; var express = require(&#x27;express&#x27;); var app = express();   app.get(&#x27;/&#x27;, function(req, res){            res.send(&#x27;&lt;h1&gt;Hello World!&lt;/h1&gt;&#x27;); });   app.listen(8000); &#x60;&#x60;&#x60;توسط چند خط ساده شما میتوانید یک سرور درست کنید و به مرورگر بگید در ادرس  localhost:8000 بهش دسترسی داشته باش !با آمدن جاوا اسکریپت به سمت سرور ، توسعه دهندگان وب از دو راه سودبری میکنند :تک زبانه شدن کل وب سایت ( بک اند و فرانت اند ) با جاوا اسکریپت در زمان توسعه وب بسیار صرفه جویی میکند .براساس نظرسنجی سایت استک اور فلو در سال 2017  جاوا اسکریپت بیشترین کاربرد را در بین زبان های برنامه نویسی وب دارد و همچنین جاوا اسکریپت در حال رشد سریع است همانطور که فریمورک های سمت فرانت اند مثل vue.js , Angular.js و React.js رشد سریع و خوبی داشتند . وقتی شما با جاوا اسکریپت کدنویسی میکنید در حقیقت روی یک زبان اساسی کدنویسی میکنید که اکثر برنامه نویس ها آنرا میفهمند . جاوا اسکریپت محبوب ترین تکنولوژی توسعه ی وب است پس همیشه جامعه ی اطراف آن شلوغ است و مخاطبان زیادی دارد . یکی شدن زبان برنامه نویسی فرانت اند و بک اند سایت شما اول اینکه باعث خلاقیت تیم شما و بعد باعث صرفه جویی در وقت و هزینه ها خواهد شد .مزیت بعدی یک زبان non-blocking event-driven هست فکر کنید یک ترافیک فله ای روی سرور اتفاق بیوفتد ، جاوا اسکریپت به خوبی میتواند با استفاده از یک ترد واحد event loop ، ترافیک همزمان را کنترل کند . اساسا جاوااسکریپت برای سایت های شلوغ و پرترافیک بهتر است . وقتی یک درخواستی برای دسترسی به یک منبعی به هر دلیلی از بین میرود جاوااسکریپت منتظرش نمی ماند و به کارهای دیگر خود میرسد . جاوا اسکریپت زمانی که نتیجه ی درخواست آمد به آن میبپردازد . همه ی این کارها روی پردازش یک نخ یا ترد انجام میگیرد و به همین دلیل باعث میشود node.js هم منابع سروری کمتری نیاز داشته باشد .خب express.js چطور در همه ی این موارد کاربرد دارد ؟‌ express.js تمام ابزارهای مورد نیاز برای کار با یک سرور مبتنی بر HTTP را در اختیار توسعه دهنده های وب قرار میدهد . قابلیت های اکسپرس به توسعه دهنده های وب آزادی میدهد ، express.js تنها یک ماژول برای Node.js نیست و شما میتوانید هر کامپوننت مورد نیاز را به آن اضافه کنید . به جای اینکه در یک قالب و سبکی ثابت بمانید express.js با موارد زیر میتواند تعامل داشته باشد و همکاری کند :‌Handlebar.jsJadeejsو خیلی موارد دیگر ...به راحتی شما میتوانید با یک کامپوننت template کار کنید و سپس express خود را به یک سرور API تبدیل کنید . خروجی چیزی نخواهد بود جز JSONبا ذخیره سازی داده ها توسط express نیز از آزادی بهره مند خواهید شد . شما میتوانید از یک ماژول Node به نام Mongoose استفاده کنید و میتوانید express خود را به MongoDB وصل کنید !ضمنا شما میتوانید به Redis, SQL, Postgres  هم وصل شوید .خب شما اینجا آزادی دارید که کدام دیتابیس را برای کارهای خود انتخاب کنید چیزی که مناسب هست را انتخاب کنید برخلاف فریمورکی مثل Django که با پایگاه داده ی غیر رابطه ای مثل MongoDB کار نمیکند ، برای این مورد راه حل وجود دارد ولی پشتیبانی رسمی مهم است .توسعه دهندگان میتوانند express را دقیقا بر اساس نیاز خودشان شخصی سازی بکنند . میتوانند کامپوننت های اضافی را حذف یا کامپوننت های مورد نیاز جدیدی را اضافه کنند .شما تقریبا میتوانید هر چیزی را تولید کنید از یک سرور محتوای ثابت گرفته تا  RESTful APIs  برای فریمورک های Model-View-Controller (MVC)جمع بندی و خلاصه ی نوشته های بالا :‌خب پس فهمیدیم که Express.js یک فریمورک برای اپلیکیشن های تحت وب است که API ساده ای برای ساخت وب سایت ها ، وب اپلیکیشن ها و بک اند ها است .با ExpressJS دیگر نیاز نیست نگران پروتکل های سطح پایین ، پردازش ها و ... باشید .این فریمورک بسیار انعطاف پذیر است و ماژول های فراوانی برایش روی npm وجود دارد که مستقیما میتوانید انها را در  Express  وارد کنید .Express توسط  TJ Holowaychuk توسعه داده شده است و توسط Node.js نگهداری و پشتیبانی میشود .چرا Express ؟‌بر خلاف رقبایش مثل Rails و Django که روش های خاصی دارند و مستبد هستند Express هیچ روشی را بعنوان بهترین روش پیشنهاد نمیکند . Express بسیار انعطاف پذیر و ماژولار است .PugPug که قبلا با اسم Jade شناخته میشد یک زبان دقیق برای نوشتن قالب های HTML است .تولید HTMLپشتیبانی از کد dynamicپشتیبانی مجدد از قابلیت استفاده (DRY)این یکی از محبوب ترین زبان قالب است که با Express استفاده می شود.MongoDB و MongooseMongoDB یک پایگاه داده ، اوپن سورس ، مقیاس پذیر و document database هست که برای توسعه راحت ساخته شده است .همچنین برای ذخیره سازی اطلاعات استفاده میشودMongoose یک API برای کلاینت node.js است که دسترسی پایگاه داده توسط Express را راحت تر میکند .</description>
                <category>محمد زارع شیرکوهی</category>
                <author>محمد زارع شیرکوهی</author>
                <pubDate>Thu, 10 Sep 2020 23:05:09 +0430</pubDate>
            </item>
            </channel>
</rss>