<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیر محمد داودآبادی</title>
        <link>https://virgool.io/feed/@amdf1998</link>
        <description>IT engineer and Game developer</description>
        <language>fa</language>
        <pubDate>2026-06-19 11:38:01</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/7294/avatar/MVHClP.png?height=120&amp;width=120</url>
            <title>امیر محمد داودآبادی</title>
            <link>https://virgool.io/@amdf1998</link>
        </image>

                    <item>
                <title>بدست اوردن فاصله بين دو ابجكت در یونیتی</title>
                <link>https://virgool.io/@amdf1998/%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A7%D9%88%D8%B1%D8%AF%D9%86-%D9%81%D8%A7%D8%B5%D9%84%D9%87-%D8%A8%D9%8A%D9%86-%D8%AF%D9%88-%D8%A7%D8%A8%D8%AC%D9%83%D8%AA-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-o6xmtcihj6kb</link>
                <description>#unityبراي بدست اوردن فاصله بين دو ابجكت از دستور Vector3. Distance يا Vector2. Distanceاستفاده ميشود.www.pheonixsturdio.irبطور مثال ميگوييم اگر فاصله بيشتر از ١٠ شد بنويسه و كمتر هم شد برامون بنويسهPublic Gameobject target1;Public Gameobject target2;Void Update (){If(vector3.distance(target1.transform. Position, target2.transform. Position)&gt;10){Print (&quot;distance is more of 10&quot;);}Else{Print(&quot;distance is not more of 10&quot;);}}</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Mon, 18 Nov 2019 18:05:50 +0330</pubDate>
            </item>
                    <item>
                <title>توابع OnEnable و OnDisable</title>
                <link>https://virgool.io/@amdf1998/%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-onenable-%D9%88-ondisable-imt5hq3dhwqg</link>
                <description> ⭕️ توابع OnEnable و OnDisable? این دو تابع برای یک آبجکت زمانی اجرا می شوند که فعال یا غیر فعال شود. یعنی زمانی که یک آبجکت Active/Enable می شود تابع OnEnable یک بار اجرا خواهد شد و همین موضوع برای تابع OnDisable نیز اتفاق خواهد افتاد.? بهتر است برای عدم دریافت مشکلات کمتر از سی شارپ برای استفاده از این توابع استفاده کنید، چون حالت استفاده از این توابع در جاوا اسکریپت کمی مشکل است.void OnEnable(){....}void OnDisable(){....}از این توابع در یونیتی بسیار استفاده می شود و کاربرد آنها بسیار بالاست.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Fri, 06 Jul 2018 11:26:20 +0430</pubDate>
            </item>
                    <item>
                <title>استفاده متدهای سی شارپ در جاوا و بالعکس</title>
                <link>https://virgool.io/@amdf1998/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-%D9%88-%D8%A8%D8%A7%D9%84%D8%B9%DA%A9%D8%B3-gibrmgmsfcor</link>
                <description>⭕️ استفاده از توابع و متدهای سی شارپ در جاوا و بالعکس?با دستوراتی که پیشتر در کانال برای استفاده از توابع اسکریپت های دیگر در اسکریپت جاری بیان شد، این امکان برای صدا زدن توابع نوشته به زبان جاوا در سی شارپ و یا برعکس وجود ندارد. یعنی شما نمی توانید با دستور GetComponent در سی شارپ به یک کلاس (اسکریپت) نوشته شده به زبان جاوا دسترسی داشته باشید و این باعث نمایش خطا در صفحه یونیتی می شود.?یکی از راه حل های این موضوع استفاده از دستور BroadcastMessage یا SendMessage برای آبجکتی که این اسکریپت به آن متصل است، می باشد. دستور BroadcastMessage هیچگونه مشکلی با زبان برنامه نویسی نداشته و در هر شرایطی اگر تابع داده شده را پیدا کند، اجرا خواهد کرد.?یادآوری: نحوه استفاده از تابع BroadcastMessage به منظور صدا زدن توابع موجود در یک اسکریپت دیگر که به یک آبجکت دیگر متصل شده است، به شکل زیر است./?Obj.BroadcastMessage(&quot;function_name&quot;,[parameters],[SendMessageOptions])?در صورتی که تابع مذکور پارامتر داشته باشد، از بخش parameter استفاده می شود و در صورتی که بخواهیم این تابع برای پاسخ تابع در همین جا صبر کند از پارامتر سوم استفاده می‌شود که در پست های قبل مفصل توضیح داده شده است.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Wed, 04 Jul 2018 18:00:25 +0430</pubDate>
            </item>
                    <item>
                <title>پیدا کردن نوع ابجکت در یونیتی</title>
                <link>https://virgool.io/@amdf1998/%D9%BE%DB%8C%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D9%86%D9%88%D8%B9-%D8%A7%D8%A8%D8%AC%DA%A9%D8%AA-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-wjyklbo8drmg</link>
                <description>⭕️ پیدا کردن آبجکت(ها) از روی نوع آنها? در صورتی که لازم باشد، در یونیتی آبجکت ها را از روی نوعِ شان شناسایی کنیم، از دستور FindObjectOfType از #کلاس GameObject استفاده می کنیم. این دستور نیز مانند دستورات Find و FindWithTag آرایه ای از آبجکت هایی که پیدا می کند را بر می گرداند.? مثلا اگر بخواهیم همه آبجکت های دارای GUITexture را در بازی پیدا کنیم به شکل زیر عمل خواهیم کرد. /?? #جاوا اسکریپت /?FindObjectOfType(GUITexture);? #سی_شارپ /?(GUITexture)FindObjectOfType(typeof(GUITexture));?هر دو دستور فوق در صورتی که یک آبجکت پیدا کنند، یک متغیر را که معادل همان آبجکت است را بر می گردانند اما اگر بیش از یک آبجکت با شرایط داده شده پیدا شود، دستورات فوق آرایه ای از این آبجکت ها بر می گردانند بنابراین باید توجه گردد که خروجی دستورات فوق با متغیر یا آرایه صحیح (از نوع آن آبجکت) معادل شوند.[علت لازم بودن تبدیل در سی شارپ دقیقا همین موضوع است چون مقدار خروجی این دو دستور در هر شرایطی ممکن است فرق کند و سی شارپ باید در هر لحظه خروجی مورد نظر ما را بداند بر عکس جاوا اسکریپت که در این طور مسائل به شکل پویا عمل می کند</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Mon, 11 Jun 2018 19:07:18 +0430</pubDate>
            </item>
                    <item>
                <title>زبان جدید یونیتی اسکریپت</title>
                <link>https://virgool.io/@amdf1998/%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%AF%DB%8C%D8%AF-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-lialmtrjf2d6</link>
                <description>⭕️ ارائه یونیتی اسکریپت (عنوانی برای اسکریپت نویسی در یونیتی در کنار سی شارپ)? بر خلاف نظر بسیاری از افراد که بدون اطلاع قبلی بیان می کردند، یونیتی در حال منسوخ کردن و حذف جاوا اسکریپت از زبان های مورد پشتیبانی خود است، یونیتی از زبان یونیتی اسکریپت که از نظر ساختاری دقیقا همان جاوا اسکریپت بوده اما بخش های جدید به آن اضافه خواهد شد، رونمایی می کند. جاوا اسکریپت برتری هایی نسبت به سی شارپ دارد که به هیچ عنوان نمی توان آنها را نادیده گرفت و اینکه بگوییم یونیتی به یک باره (مانند Boo Script) اقدام به حذف یک زبان می کند کاملاً اشتباه می باشد، حتی می توان گفت حالا پشتیبانی یونیتی از جاوا اسکریپت بیشتر هم می شود، چه برسد به اینکه بخواهد آن را حذف کند. باید منتظر ماند و دید یونیتی با UnityScript چه می کند و چه ویژگی های خاصی به جاوا اسکریپت برای آن اضافه خواهد کرد.?در انتها باید به این نکته دقت کرد، جاوا اسکریپت و یونیتی اسکریپت با هم متفاوت خواهند بود و یونیتی اسکریپت یک زبان کاملا مستقل خواهد بود اما بر پایه دستوری جاوا اسکریپت!</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Sun, 10 Jun 2018 19:11:07 +0430</pubDate>
            </item>
                    <item>
                <title>دستورات  بعد از یک زمان خاص</title>
                <link>https://virgool.io/GameWorld/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%DB%8C%DA%A9-%D8%B2%D9%85%D8%A7%D9%86-%D8%AE%D8%A7%D8%B5-wtz4p95dvayy</link>
                <description>⭕️ اجرای دستورات یک تابع  بعد از گذشت یک زمان خاص?  همانطور که می دانید گاهی اوقات لازم است، دستورات یک تابع را بعد از گذشت یک زمان خاص نسبت به یک عمل انجام شوند. به طور #مثال انفجار یک نارنجک را در نظر بگیرید، دستورات انفجار (که به اصطلاح Explosion نامیده می‌شوند) باید پس از چند لحظه از پرتاب شدن منفجر شود. در چنین شرایطی باید از تابع Invoke برای فراخوانی دستورات پس از زمان مورد نظر استفاده کرد. البته باید دانست این تنها روش نیست ولی یکی ساده ترین و بهترین روش هاست.? قالب کلی دستور Invoke در #یونیتی در هر دو زبان #سی_شارپ و #جاوا اسکریپت به شکل زیر است./?Invoke(method_name,delay);? در این دستور پارامتر اول «نام تابع یا متد» مورد نظر از نوع String یا «رشته ای» است و پارامتر دوم نیز زمان و از نوع عددی (int یا float) می‌باشد.? به عنوان مثال دستور زیر باعث اجرای دستورات تابع Explosion بعد از گذشت 2.5 ثانیه می‌شوند. باید دقت کرد که تابع مورد نظر (مثلاً Explosion) در کلاس (اسکریپت) جاری تعریف شده باشد./?Invoke(&quot;Explosion&quot;, 2.5f);❕ #نکته: همواره به گذاشتن حرف f بعد از اعداد اعشاری دقت نمائید (مخصوصا در زبان سی شارپ)</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Fri, 08 Jun 2018 16:21:20 +0430</pubDate>
            </item>
                    <item>
                <title>کلیدهای میانبر در یونیتی</title>
                <link>https://virgool.io/GameWorld/%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C-%D9%85%DB%8C%D8%A7%D9%86%D8%A8%D8%B1-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-d0y3m51ikksp</link>
                <description>? کلیدهای میانبر ابزارهای اصلی در یونیتیامروز میخوام کیلید های میانبر یونیتی رو بهتون معرفی کنم که کمک خیلی زیادی در بازی سازی ? ابزارهای اصلی یونیتی ابزارهایی هستند که روی آبجکت ها پنجره Scene تاثیر گذار هستند و شناسایی کلیدهای میانبر آنها می تواند به سرعت بازی سازی کمک شایانی کند.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Thu, 07 Jun 2018 20:40:52 +0430</pubDate>
            </item>
                    <item>
                <title>دستور تغییر تکسچر یک آبجکت در یونیتی</title>
                <link>https://virgool.io/@amdf1998/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AA%DA%A9%D8%B3%DA%86%D8%B1-%DB%8C%DA%A9-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-hapc4i1nqkp3</link>
                <description>⭕️ دستور تغییر #تکسچر نمایشی یک #آبجکت? همانطور که بارها تأکید شده است، به کمک #کامپوننت MeshRenderer می توان به ظاهر یک آبجکت دسترسی داشت. یکی از عوامل نمایشی توسط MeshRenderer تکسچر ها می باشند. در صورتی که به هر دلیل بخواهیم تکسچر نمایشی یک آبجکت در یک زمان خاص تغییر کند، می توانیم از دستور زیر برای اینکار استفاده نماییم  /?#جاوا اسکریپتGetComponent(MeshRenderer).material.mainTexture#سی_شارپGetComponent&lt;MeshRenderer&gt; ().material.mainTexture? نوع داده ای این دستور (mainTexture) از نوع Sprite یا Texture2D است و می توان تصویر (تکسچر) مورد نظر را به آن اطلاق کرد. مثلا اگر یک نوع تکسچر تعریف شده به عنوان پارامتر ورودی برای اسکریپت داشته باشیم،/?#جاوا اسکریپتvar Picture:Texture2D;#سی_شارپ public Texture2D Picture;? با دستور زیر می توان این تصویر را به عنوان تکسچر به آبجکتی که این کد به آن متصل می شود، داد.GetComponent&lt;MeshRenderer&gt; ().material.mainTexture = Picture;? در هر زمانی که بخواهیم می توانیم با دستورات فوق تکسچر نمایشی یک GameObject را عوض کنیم، کافی است با دستور GetComponent به #کامپوننت MeshRenderer آن دسترسی پیدا کنیم.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Thu, 07 Jun 2018 04:27:42 +0430</pubDate>
            </item>
                    <item>
                <title>بازی راز جنگل</title>
                <link>https://virgool.io/GameWorld/%D8%A8%D8%A7%D8%B2%DB%8C-%D8%B1%D8%A7%D8%B2-%D8%AC%D9%86%DA%AF%D9%84-r6whvxyx8vow</link>
                <description>بازی راز جنگل با موتور پر قدرت یونیتی ساخته شده است و این بازی از یک صفحه بازی راز جنگل که به صورت بازی های برد است و بازیکنان از دو نفر تا چهار نفر به صورت دسته جمعی میتوانند بازی کنند .این بازی به صورت افلاین و انلاین قرار است در دسترس قرار بگیرد و در کافه بازار منتشر شود این بازی با زبان سی شارپ نوشته شده است و از گراف برای خانه های بازی استفاده شده است.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Tue, 05 Jun 2018 17:01:31 +0430</pubDate>
            </item>
                    <item>
                <title>انواع روش های حرکتی در یونیتی</title>
                <link>https://virgool.io/GameWorld/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%AD%D8%B1%DA%A9%D8%AA%DB%8C-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-zdw2pjvysobw</link>
                <description>? در #یونیتی دستورات زیادی برای حرکت اجسام تعبیه شده است که کاربر با توجه به نیاز خود می تواند از آنها استفاده نماید. به برخی از ساده ترین و در عین حال کاربردی ترین دستورات در این بخش اشاره خواهد شد.? اگر بخواهیم ساده ترین روش حرکت در #یونیتی را بیان نماییم می توان به پارامتر position از #کامپوننت  transform اشاره کرد. به طور مثال دستور زیر آبجکت مورد نظر را با سرعت Speed حرکت می دهد.GO.transform.position += transform.forward*speed;?پارامتر position یک مقدار Vector3 بوده و می توان آن را جهت تعیین موقعیت دقیق یک آبجکت استفاده کرد. مثلاً طبق دستور زیر/? [#سی_شارپ]GO.transform.position= new Vector3(x,y,z);? با فرض اینکه پارامترهای xyz هر کدام مقدار مورد نظر از موقعیت جدید آبجکت باشد، دستور فوق آبجکت را در موقعیت داده شده قرار می دهد.?با استفاده از دستور Translate نیز می توان یک آبجکت را حرکت داد. این دستور یک مقدار Vector3 [بردار سه بعدی به منظور مشخص شدن طول و جهت حرکت] دریافت کرده و آبجکت را طبق آن حرکت می دهد. مثلاً دستور زیر آبجکت GO را با سرعت [یا به طول] speed و در جهت forward (روبرو) حرکت می دهد (دقیقاً مانند دستور اول)GO.transform.Translate(transform.forward*speed);⭕️ ? دستورات بیان شده برای حرکت (تغییر موقعیت) یک آبجکت تاکنون از هیچ قانون فیزیکی (مثل شتاب) برای حرکت اجسام بهره نمی برند. یعنی در واقع اگر دستورات بیان شده را در توابع Update استفاده نماییم، #آبجکت مورد نظر با یک سرعت ثابت حرکت می کند، در صورتی که بخواهیم برای حرکت آبجکت از قوانین فیزیک استفاده نماییم، می توان از #کامپوننت Rigidbody استفاده کرد. این #کامپوننت معرف همگان هست بنابراین از تکرار مطالب پرهیز خواهد شد.? با استفاده از این #کامپوننت در صورتی که بخواهیم آبجکت مورد نظر با شتاب حرکت کند (مانند پرتاپ شدن تیر یا حرکت یک خودرو) می توانیم از دو دستور velocity و AddForce این کامپوننت استفاده کرد. ? #یادآوری:? دستور velocity یک پارامتر از #کامپوننت Rigidbody می باشد که در مقابل خود یک مقدار Vector3 [شامل طول و جهت وارد شدن حرکت با شتاب] دریافت می کند. دستور حرکت یک آبجکت [با شتاب] با سرعت speed و در جهت روبرو با استفاده از پارامتر velocity می تواند مانند زیر باشد./?GO.GetComponent&lt;Rigidbody&gt; ().velocity=transform.forward*speed;? همچنین دستور دیگری نیز توسط این کامپوننت پشتیبانی می شود، AddForce است. این تابع یک نیرو در جهت داده شده در پارامتر اولش به #آبجکت مورد نظر وارد می کند و زمانی که وارد شدن نیرو ممتد باشد مانند این است که آبجکت مورد نظر در حال حرکت است (از این دستور در فیلم آموزشی حرکت توپ استفاده گردید تا توپ حالت غلطان نیز داشته باشد)GO.GetComponent&lt;Rigidbody&gt; ().AddForce(transform.forward*speed);? دستور فوق نیز یک نیرو در جهت روبرو به #آبجکت مورد  نظر به میزان speed وارد می کند. این دستور برای حرکت آبجکت هایی مثل Sphare بسیار مناسب و کاربردی است.? در تمامی دستورات بیان شده در آموزش های اخیر منظور از GO همان GameObject مورد نظر است که قصد حرکت دادن آن را داریم.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Sun, 03 Jun 2018 19:14:58 +0430</pubDate>
            </item>
                    <item>
                <title>گرفتن اسکرین شات از صفحه در یونیتی</title>
                <link>https://virgool.io/@amdf1998/%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%86-%D8%B4%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%B5%D9%81%D8%AD%D9%87-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-faa1gkobragy</link>
                <description>⭕️ گرفتن اسکرین شات از صفحه در #یونیتی[قابل استفاده در یونیتی 2017.3 به بعد]? کلاسی در یونیتی برای ذخیره اسکرین شات به نام ScreenCapture وجود دارد. این کلاس می تواند اسکرین شات از صفحه را در دو حالت انجام دهد. 1- ذخیره اسکرین شات در یک فایل png 2- برگرداندن اسکرین شات به عنوان Texture2D? برای ذخیرۀ اسکرین شات در یک فایل png می توان از دستور CaptureScreenshot از این #کلاس استفاده کرد. این دستور دو پارامتر دارد، پارامتر اول نام و مسیر ذخیرۀ فایل png است که اگر مسیر داده نشود، فایل در محل جاری (کنار فایل اجرایی بازی) ساخته خواهد شد و پارامتر دوم نیز میزان بزرگی اسکرین شات است که به طور پیش فرض برابر 1 است بدین معنی که اسکرین شات با اندازه اصلی صفحه ساخته شود. این پارامتر اختیاری است. دستور زیر یک اسکرین شات از صفحه را در فایل test.png خواهد ساخت./? ScreenCapture.CaptureScreenshot(&quot;test.png&quot;);? دستور CaptureScreenshotAsTexture نیز یک اسکرین شات از صفحه می گیرد اما آن را در یک فایل ذخیره نمی کند بلکه آن را به عنوان Texture2D بر می گرداند و شما می توانید از خروجی آن استفاده نمایید.var texture = ScreenCapture.CaptureScreenshotAsTexture();? دستور بالا در زبان #سی_شارپ  باعث ساخته شدن یک متغیر از نوع Texture2D به نام texture شده که در آن اسکرین شات از صفحه قرار گرفته است و برنامه نویس می تواند در خطوط بعدی از آن استفاده نماید.?این دستور نیز دارای پارامتر superSize سایز نیز برای تعیین اندازۀ #تکسچر است که عملکرد آن دقیقاً مشابه دستور CaptureScreenshot می باشد.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Fri, 01 Jun 2018 23:36:44 +0430</pubDate>
            </item>
                    <item>
                <title>کاربرد ? در اسکریپت</title>
                <link>https://virgool.io/GameWorld/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%AF%D8%B1-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-ntwxfyj9kj9f</link>
                <description>در کد نویسی (به هر دو زبان #سی_شارپ و #جاوا اسکریپت) حالتی از شرط ها وجود دارد که می توان با ? (علامت سوال) ایجاد کرد. به علت اینکه این نوع برنامه نویسی خیلی باعث کاهش کدها می‌شود، آن را در این پست توضیح می‌دهیم.?در برنامه نویسی گاهی اوقات مقدار دهی یک متغیر به مثبت یا منفی بودن یک شرط وابسته است، برای فهم این موضوع به دستور زیر توجه کنید.?if (a&gt;b)       c=10;else       c=5;? همانطور که مشاهده می‌کنید در عبارت شرطی بالا اگر شرط برقرار باشد (یعنی a از b بزرگتر باشد) مقدار c باید برابر 10 شود و در غیر این صورت برابر 5 . در این نحو عملیات شرطی (مقدار دهی متغیر در صورت برقراری یک شرط) می توان از دستور Notation (علامت سؤال) استفاده کرد. حالت کلی این دستور به شکل زیر است?result = condition ? true : false;▫️در دستور فوق result متغیری است که قرار است با شرایط خاص مقدار دهی شود (مثل c در مثال قبل)  ، condition شرطی است که مقدار دهی طبق آن انجام می‌شود و مقادیر true و false معادل مقادیری هستند که در صورت بر قراری یا عدم برقراری شرط در متغیر result قرار می‌گیرند.?مثال قبل با دستور ? به این شکل می‌باشد. /?c = (a&gt;b) ? 10 : 5;▪️از این دستور به هر نحوی می توان استفاده کرد و هیچ محدودیتی ندارد، به عنوان مثال دستور زیر همواره بزرگ ترین مقدار بین a b c را در متغیر d قرار می‌دهد.d = (a &gt; b) ? ((a &gt; c) ? a : c) : ((b &gt; c) ? b : c) ;</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Thu, 31 May 2018 19:10:15 +0430</pubDate>
            </item>
                    <item>
                <title>اینستا رو امن تر کنیم</title>
                <link>https://virgool.io/@amdf1998/%D8%A7%DB%8C%D9%86%D8%B3%D8%AA%D8%A7-%D8%B1%D9%88-%D8%A7%D9%85%D9%86-%D8%AA%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-ugiggtfxyewj</link>
                <description>ینستاگرام هم مثل اکثر شبکه‌های مجازی می‌تواند یک شمشیر دولبه باشد. در یک طرف روش مناسبی برای به اشتراک گذاشتن عقاید و بیان نظرات شماست، اما از سوی دیگر به راحتی می‌تواند حریم خصوصی و امنیت شما را به خطر بیندازد. خوشبختانه، با انجام چند کار می‌توانید از خودتان محافظت کنید.اصل اول امنیت سایبری می‌گوید هیچ چیزی صددرصد امن نیست. پس حتی اگر این نکات را مدنظر قرار دهید، اطلاعات شما همچنان در معرض خطر قرار دارد و ممکن است دست افرادی که نمی‌خواهید بیفتد. اما با دستکاری تنظیماتی که در ادامه می‌گوییم، تا حد زیادی می‌توانید این خطرات را کاهش دهید.نکته ۱ – احراز هویت دو مرحله‌ای را فعال کنید:یکی از ساده‌ترین چیزها برای ارتقای خطوط دفاعی شما این است که سیستم احراز هویت دو مرحله‌ای (۲FA) را فعال کنید. با انجام این کار (اگر اکانت خود را صرفاً با استفاده از ایمیل یا حساب کاربری فیسبوک ساخته باشید) اینستاگرام از شما می‌خواهد که شماره تلفن خود را به اکانت‌تان وصل کنید. با این کار یک لایه‌ی امنیتی اضافه‌تر به اکانت شما اضافه می‌شود.با سیستم احراز هویت دو مرحله‌ای، برای وارد شدن به اکانت اینستاگرام علاوه بر گذرواژه به یک رمز یکبار مصرف (OTP) هم نیاز دارید. این رمز در هنگام ورود به موبایل شما فرستاده می‌شود. با این کار هکرها نمی‌توانند به حساب کاربری شما دسترسی پیدا کنند مگر این که به موبایل‌تان دسترسی فیزیکی داشته باشند.برای فعال‌سازی ۲FA از منوی اصلی اینستاگرام به زبانه‌ی Profile بروید. از آن‌جا اگر روی اندروید هستید از گوشه‌ی سمت راست بالای صفحه و اگر روی آیفون هستید با لمس آیکن چرخ‌دنده‌ی کنار Edit Profile، بر روی دکمه‌ی منو تپ کنید. سپس گزینه‌ی Two-Factor Authentication را انتخاب و سوئیچ کنار Require Security Code را فعال نمایید. آنگاه مراحل مربوطه را دنبال کنید تا شماره‌ی شما اضافه شود و فرآیند تکمیل گرددنکته ۲ – از یک نرم‌افزار مدیریت گذرواژه استفاده کنیدگذرواژه‌ی شما در کنار یکبار رمز اصلی‌ترین عاملی است که از دسترسی غیرمجاز به اکانت‌تان جلوگیری می‌کند. متاسفانه، خیلی از کاربران از گذرواژه‌هایی استفاده می‌کنند که به خاطر سپردنشان آسان است، بنابراین به طور ناخودآگاه هک کردنشان هم آسان‌تر می‌باشد.پس بهتر است به جای تکیه کردن بر گذرواژه‌های حفظی، برای ساختن گذرواژه‌های قوی از یک نرم‌افزار مدیریت گذرواژه استفاده کنید. برخلاف گذرواژه‌های شا، این نرم‌افزارها تضمین می‌کنند که گذرواژه‌هایشان به اندازه‌ی کافی قوی است. به علاوه، می‌توانید هر چند وقت یکبار (ما توصیه می‌کنیم هر ۹۰ روز) گذرواژه‌ی خود را عوض کنید تا حدس زدن آن برای هکرها مشکل‌تر شود.فرقی نمی‌کند که کاربر iOS باشید یا اندروید، ما استفاده از نرم‌افزار LastPass را توصیه می‌کنیم. این برنامه‌ی کم‌هزینه پر از قابلیت‌های مختلف است که در هیچ برنامه‌ی دیگری یافت نمیشود.نصب LastPass: اندروید، iosنکته ۳ – سیستم GPS Tagging را خاموش کنید:اکثر دوربین‌ها بسته به محلی که در آن حضور دارید بر روی تصاویر برچسب می‌گذارند تا نشان دهند که از کجا عکس گرفته شده است. این سیستم برای یادآوری ماجراهایی که قبلاً در مکان‌های خاص داشتید بسیار خوب است. اما با اضافه شدن این اطلاعات به تصاویر شما، افراد ناخواسته هم می‌توانند از موقعیت‌تان مطلع شوند.در اندروید از طریق خود اپلیکیشن دوربین می‌توانید این قابلیت را غیرفعال کنید، اما فرآیند انجام این کار بسته به هر دستگاهی فرق می‌کند. این گزینه در حالت کلی در منوی Settings اپلیکیشن دوربین و در بخشی تحت عنوان GPS Tagging یا Tag Locations قرار دارد.در iOS کمی راحت‌تر می‌توانید آن را پیدا کنید. کافی است اپ Settings را باز کنید، به بخش Privacy &gt; Location Services بروید و Camera (یا هر اپلیکیشن دیگری که از آن به عنوان دوربین استفاده می‌کنید) را انتخاب نمایید. حالا سوئیچ Allow Location access را به حالت Never درآورید تا قابلیت مذکور غیرفعال شود.نکته ۴ – تگ شدن شما روی عکس دیگران باید منوط به دریافت تاییدیه باشدحضور شما در اینستاگرام به تصاویری که آپلود می‌کنید محدود نیست. اگر کس دیگری از شما عکس بگیرد و شما را روی آن تگ کند، این تصویر چه بخواهید، چه نخواهید بر روی صفحه‌ی شما هم به نمایش در می‌آید. خوشبختانه امکان تغییر تنظیمات به نحوی که قبل از انتشار تصویر بر روی صفحه‌ی شما نیاز به تاییدیه باشد وجود دارد.پس به بخش Options رفته و Photos of You و بعد Add Manually را انتخاب کنید. اکنون هر تصویری که شما در آن تگ شده باشید، پیش از انتشار بر روی پروفایل‌تان باید به تایید شما برسد.نکته ۵ – اکانت خود را به حالت خصوصی درآورید (اختیاری)برای دستیابی به حداکثر حریم خصوصی، اکانت شما نباید به صورت عمومی باشد. اکانت‌های عمومی در دسترس همه قرار دارند، در نتیجه هر کسی می‌تواند تصاویر و ویدیوهای شما را با ابزارهای مخصوص کپی کند. با این حال حریم خصوصی بهایی دارد. برای مثال افرادی که به دنبال تبلیغ برند خود هستند با خصوصی کردن اکانتشان به بخشی از این فرآیند لطمه وارد می‌کنند. به همین دلیل، این نکته بسته به اولویت‌های شما قابل اجراست.اگر یک کاربر معمولی هستید که فقط می‌خواهید از طریق این شبکه‌ی اجتماعی با دوستانتان در ارتباط باشید، به بخش Options بروید و گزینه‌ی Private Account را فعال کنید. زمانی که این حالت فعال شد، فقط کسانی که شما تاییدشان کرده باشید می‌توانند محتوای صفحه‌تان را ببینند. دنبال‌کنندگان فعلی صفحه‌ی شما تحت تاثیر این تغییر قرار نمی‌گیرند.نکته ۶ – از اینستاگرام هوشمندانه استفاده کنیدعلاوه بر راهکارهای فنی، انتخاب‌های شخصی دیگری هم وجود دارد که برای محافظت از اطلاعات خصوصی خود می‌توانید از آن‌ها استفاده کنید. ابتدا به خاطر داشته باشید که هر چیزی که پست می‌کنید (حتی اگر اکانت‌تان خصوصی باشد) توسط افراد دیگر قابل دستیابی است. عکس‌هایی که بعداً ممکن است باعث پشیمانی‌تان شود را پست نکنید؛ خصوصاً تصاویری که می‌توانید شما را شرمسار کند یا حاوی اطلاعات خصوصی‌تان باشد. همیشه به یاد داشته باشید که هر آنچه امکان استفاده شدن علیه شما را داشته باشد، حتماً بر علیه شما استفاده خواهد شد.در وهله‌ی بعد، بدانید که لازم نیست مدام در صفحه‌تان محتوا پست کنید. اطلاعاتی را که لازم نیست منتشر ننمایید. هر چقدر هم که به دنبال‌کنندگان‌تان اعتماد داشته باشید، تنها یک نفر کافی است تا بر روی همه‌ی زندگی شما تاثیر بگذارد.در پایان، از قابلیت بلاک کردن کاربران استفاده کنید. به سراغ لیست دنبال‌کنندگان خود بروید و هر کاربری را که نمی‌شناسید یا دوست ندارید با کمک گزینه‌ی Block که در منوی گوشه‌ی بالای صفحه قرار دارد از دسترسی به اکانت‌تان محروم سازید.با این نکات می‌توانید کمی از شدت برندگی شمشیر دولبه‌ی اینستاگرام کم کنید. هرچند این خطر به طور کامل از بین نمی‌رود، ولی تا حد زیادی کاهش پیدا می‌کند. شما چه پیشنهادات دیگری برای ارتقای حریم خصوصی در اینستاگرام می‌شناسید؟ آن‌ها را در بخش نظرات با ما در میان بگذارید.منبع سایت topdev.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Mon, 30 Apr 2018 12:17:27 +0430</pubDate>
            </item>
                    <item>
                <title>نکاتی که یه برنامه نویس میدونه</title>
                <link>https://virgool.io/@amdf1998/%D9%86%DA%A9%D8%A7%D8%AA%DB%8C-%DA%A9%D9%87-%DB%8C%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%85%DB%8C%D8%AF%D9%88%D9%86%D9%87-o3qegmho8jon</link>
                <description>برای شروع برنامه نویسی می‌بایست به نکات مهمی توجه شود که این موارد کمک شایانی به افراد مبتدی در این زمینه خواهد کرد.نکات طلایی  برنامه‌نویسیعلاقه بسیاری از افراد در حوزه فناوری اطلاعات به موضوعی به نام برنامه‌نویسی باعث پیشرفت و رشد روزافزون آنان در این حیطه می‌شود. ولی افراد بسیاری نیز وجود دارند که علاقه بسیاری به یادگیری این زبان در حوزه فناوری اطلاعات از خود نشان می‌دهند ولی نمی‌دانند چطور برای یادگیری این برنامه‌نویسی اقدام کنند و یا با رعایت چه نکاتی به آن بپردازند. ما در این مبحث برای پاسخ سؤالات بسیاری که در این زمینه برای افراد مبتدی ایجاد می‌شود چند نکته طلایی را ارائه می‌کنیم تا بتوانند با این نکات شروع برنامه‌نویسی موفقی داشته باشند. ازجمله سؤالاتی که در بسیاری از اذهان افراد مبتدی ایجاد می‌شود این است که کدام‌یک از زبان‌های برنامه‌نویسی مناسب‌تر خواهد بود و یا اینکه برای شروع برنامه‌نویسی از کدام زبان می‌بایست آغاز نمود، در رابطه با تجارت از طریق زبان برنامه‌نویسی نیز سؤالات بسیاری در ذهن این افراد ایجاد خواهد شد؛ بنابراین با توجه به‌تمامی موارد گفته‌شده سعی بر آن است که توضیحات مناسبی برای این افراد داده شود تا شروع برنامه‌نویسی موفقی را برای خود رقم بزنند. پس توصیه می‌کنیم همچنان همراه ما باشید تا با این نکات طلایی بیشتر آشنا شوید.توجه به ‌پیش‌نیازهای موردنیاز قبل از شروع برنامه‌نویسیبرای شروع برنامه‌نویسی اولین اقدام علاقه فرد موردنظر است که می‌بایست به برنامه‌نویسی از طریق زبان‌های مختلف علاقه بسیاری نشان دهد؛ اما از دیگر مواردی که می‌توان برای یادگیری برنامه‌نویسی به آن اشاره نمود این است که افراد می‌بایست به آموختن پیش‌نیازهای موردنیاز برای شروع برنامه‌نویسی اقدام کنند. درواقع می‌بایست یک برنامه‌نویس برای موفقیت در این زمینه بتواند سیستم را مورد تجزیه‌وتحلیل قرار دهد و به حل مناسب مسائل پیش‌رو بپردازد.البته فراموش نکنید که الگوریتم و طراحی ازجمله مواردی هستند که برای شروع برنامه‌نویسی باید به آن‌ها توجه نمود. از دیگر مواردی که می‌بایست به‌عنوان پیش‌نیازها به آن توجه شود این است که فرد امنیت، سرعت، دقت و غیره را برای انتخاب روش مناسب الگوریتمی مدنظر قرار دهد. توانایی طراحی بهترین الگوریتم و همچنین ساختمان داده از مواردی است که فرد می‌بایست به آن در لیست پیش‌نیازهای شروع برنامه‌نویسی توجه نموده تا بتواند در آینده برنامه‌نویس موفقی شود.آشنایی با زبان و مفاهیم اطلاعات آی تی برای شروع برنامه‌نویسیدر مطلب قبلی اشاره نمودیم که برای شروع برنامه‌نویسی یادگیری پیش‌نیازهایی همچون ساختمان داده و الگوریتم از ضروریات به شمار می‌روند؛ اما در کنار فراگیری این موارد می‌بایست با مفاهیم کلی در زمینهٔ فناوری اطلاعات و همچنین انواع زبان برنامه‌نویسی آشنا شد تا بتوان در مسیر یادگیری زبان برنامه‌نویسی گام‌های بلندی برداشت. نحوه اجرای کدها، نحوه ارسال این کدها به سمت سرور، اطلاعات کافی از پروتکل، تفاوت کامپایلر با مفسر و چندین موارد دیگر از مفاهیم آی تی یا فناوری اطلاعات شناخته می‌شوند که برای شروع یادگیری زبان برنامه‌نویسی باید به آن‌ها بسیار توجه شود.اما در کنار این مفاهیم می‌بایست زبان‌های مختلف را مورد ارزیابی قرارداد و مناسب‌ترین آن را برای شروع برنامه‌نویسی انتخاب نمود. با توجه به این‌که هدف این مطلب یادگیری افراد مبتدی است ما توصیه می‌کنیم از زبان C++ در ابتدای آموزش این زبان استفاده شود. فهم این زبان برای افراد مبتدی به‌مراتب راحتر از زبان‌های دیگر برنامه‌نویسی می‌باشد.محیط مناسب برای شروع برنامه‌نویسی موفقازجمله نکاتی که برای شروع برنامه‌نویسی می‌بایست موردتوجه قرار گیرد، انتخاب محیط مناسب برای برنامه‌نویسی می‌باشد. کد نویسی در محیط‌های آسان و همچنین ویرایشگرهای متن در آغاز یادگیری برنامه‌نویسی بسیار توصیه می‌شود. درواقع این محیط‌ها انتخاب درست و مناسبی هستند تا افراد مبتدی بتوانند با محیط برنامه‌نویسی بیشتر آشنا شوند. استفاده از محیط‌های حرفه‌ای برنامه‌نویسی به افراد تازه‌کار توصیه نمی‌شود؛ اما دلیل اینکه محیط‌های حرفه‌ای به افراد تازه‌کار توصیه نمی‌شود چیست؟در پاسخ به این موضوع باید اشاره‌کنیم که این محیط‌ها از امکانات بالایی برخوردارند که تنها برای افراد حرفه‌ای که با این زبان آشنایی دارند طراحی‌شده‌اند و اغلب از چند حرف برای نشان دادن دستورات استفاده می‌کنند. زمانی که افراد مبتدی از این محیط‌ها در ابتدای برنامه‌نویسی استفاده کنند به‌مرور زمان تنبل شده و در آینده اطلاعات کافی و مناسبی از این برنامه نخواهند داشت؛ بنابراین توصیه می‌کنیم برای آشنایی بیشتر با زبان برنامه‌نویسی و یادگیری آن از محیط‌هایی که در ابتدا عنوان نمودیم استفاده نمایید تا در آینده به برنامه‌نویس حرفه‌ای تبدیل شوید.دیگر نکات مربوط به شروع برنامه‌نویسیدر بخش‌های قبلی اشاره کردیم که برای شروع برنامه‌نویسی باید به چه نکاتی توجه شود؛ اما چند مورد دیگر نیز برای شروع یادگیری برنامه‌نویسی وجود دارد که یکی از این موارد انتخاب مسیر درست می‌باشد. با توجه به این موضوع افراد می‌بایست به انتخاب زبان مناسب از میان زبان برنامه‌نویسی دسکتاپ و همچنین زبان تحت وب اقدام کنند. انتخاب این موضوع درواقع جهت دادن به برنامه‌نویسی است و از اهمیت بالایی برخوردار است.بالا بردن صبر در ابتدای شروع برنامه‌نویسی نیز از دیگر موارد شناخته می‌شود و از اهمیت بالایی برخوردار است. تمرین روزمره برای موفقیت در برنامه‌نویسی نیز از دیگر مواردی است که برنامه‌نویسان حرفه‌ای و موفق از آن استفاده نموده‌اند. در مراحل بعد توصیه می‌کنیم در یک‌زبان برنامه‌نویسی حرفه‌ای‌تر شوید تا بتوانید در زمان استخدام در مراکز مختلف برگ برنده‌ای در دست داشته باشید. اساتید و دیگر موارد کمک‌آموزشی می‌توانند از گزینه‌های لازم در شروع یادگیری برنامه‌نویسی به شمار آیند.منبع سایت www.toplearn.com</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Sun, 29 Apr 2018 20:26:42 +0430</pubDate>
            </item>
                    <item>
                <title>What is Version Control ?</title>
                <link>https://virgool.io/@amdf1998/what-is-version-control-twnbzionbktm</link>
                <description>در این مقاله ابتدا Version Control رامعرفی می کنیم و درباره ضرورت استفاده از آن صحبت خواهیم کرد سپس انواع آن را معرفی خواهیم کرد و هرکدام را جداگانه بررسی خواهیم کرد و مزایا و معایب هر کدام را خواهیم گفت و در نهایت بین انواع Version Control یک مقایسه انجام خواهیم داد.                     Version Control Version Control یعنی نگهداشتن کپی از کدها و یا فایل های خود از هر مرحله در چرخه ی عمر خودش. سیستم Version Control به ما اجازه می دهد که همه ی نسخه ها از کد خود را با نمایش یک نسخه در یک زمان مدیریت کنیم.چرا از Version Control استفاده کنیم؟گاهی یک کد جدید می نویسیم و یا در آن تغییر ایجاد می کنیم اما بعد ها متوجه می شویم که این کار اشتباه بوده است و می خواهیم به کد قبلی برگردیم،  Version Control این کار را انجام خواهد داد.اگر می خواهید که چند نسخه از پروژه را نگهداری کنید یا می خواهید تفاوت بین دو (یا بیشتر) از نسخه کد های خود را ببینید یا می خواهید که سابقه ی یک کد خاص را ببینید Version Controlهمه ی این کارها را انجام می دهد.گاهی باید کد خود را ارسال و یا با کد های دیگر اعضای تیم برنامه نویسی ادغام کنید یا میخواهید که کد خود را به اشتراک بگذارید که تا به دیگر اعضای تیم اجازه دهید که روی آن کد کار کنند شما می توانید این کار هارا با استفاده از version control انجام دهید.اگر می خواهید یک آزمایش با یک ویژگی جدید انجام دهید ویا تحقیق و توسعه بدون دخالت در کدی که روی آن کار می کنید انجام دهید version control این انعطاف پذیری را به شما می دهد.این امکان به تیم توسعه اعتماد به نفس بالایی در انجام آزمایشات در کد می دهد زیرا در هر زمانی می توانیم به کد قبلی برگردیم.با ویژگی خودکار، Version Control در اتوماتیک کردن تست ، آنالیز کد و گسترش آن، زمانی که یک نسخه ی جدید در version control ذخیره می شود، کمک می کند. این کار باعث ذخیره ی زمان تیم توسعه دهنده می شود.دو نوع از version control توسط Visual Studio Team System پشتیبانی می شود ، Git و TFVC. حال به عنوان یک گسترش دهنده همیشه این سوال را داریم که از کدام سیستم version control باید استفاده کنیم؟ در framework توزیع شده همه ی توسعه دهندگان کپی فایل های خود را در یک مخزن localدارند و زمانی که تغییرات جدیدی را اعمال می کنند ابتدا در مخزن local ذخیره می شود. در عکس زیر مشاهده می کنید که commit ابتدا به صورت local ساخته شده است و پس از بررسی می توانید تغییرات را در سرور اعمال کنید.در اینجا هیچ مخزن مرکزی وجود ندارد که به آن وابسته باشید و همه ی سابقه ی مخزن را به صورت local داریم.توسعه دهندگان تغییرات خود را به طور مداوم اعمال می کنند و تجمیع کنندگان می توانند تغییرات را بازبینی کنند و آن ها را به مرجع کد اصلی به صورت ناهمگام اضافه کنند.تجمیع کنندگان می توانند با موفقیت با buildکردن کد از مخزن local آن را روی مخزن سرور اعمال کنند.TFVCمرکزیTeam Foundation Version Control یک سیستم version control مرکزی است. در اینجا اعضای تیم فقط یک فایل روی دستگاه دارند و سوابق روی سرور اصلی نگهداری می شود.اعضای تیم کد های خود را در TFS وارد می کنند و می توانند تغییرات را در یک change-set بررسی کنند و با استفاده از مقایسه می توانند تغییرات دقیقی که ایجاد کرده اند را شناسایی کنند.در سیستم مرکزی توسعه دهندگان تغییرات خود را مستقیما به مخزن اصلی سرور اعمال می کنند.این به معناست که یک نقص و یا تغییر ناخواسته می تواند همه ی پروژه را از بین ببرد. Commitهای از راه دور در سیستم مرکزی بسیار آهسته هستند.Git به صورت open source و crossplatformاست بنابراین همه ی platform ها، تکنولوژی ها و  frameworkها در یک solution آن را پشتیبانی می کنند. مزیت اصلی گیت این است که تقریبا تمام سیستم عامل ها از آن پشتیبانی میکنند.Git یک backup اتوماتیک از کل مخزن دارد. هرگاه کسی چیزی از مخزن اصلی بگیرد تمام سابقه ی تغییرات آن را نیز دریافت می کند و هرگاه یکی از مخازن به هر دلیلی از دست رفت یکی از این نسخه های دردسترس در هر مرحله ی کاری را می توانید جایگزین آن کنید.با توجه به دسترسی به منابع به صورت offline، توسعه دهندگان از هرجایی می توانند کار کنند و تمام سابقه ی پروژه و همچنین هر ورود به سیستم را می توانیم بدون راه اندازی اتصال VPNمشاهده کنیم. الگوریتم های شاخه بندی و ادغام در Git بسیار بهینه تر هستند.کار کردن و اعمال تغییرات در شاخه ی خود به صورت local و بازبینی تغییرات در Git بسیار آسان تر است.مکانیسم درخواست بسیار جالب است. حتی مخزن Visual Studio Online Default، مخزن Git است. بطور کلی یک تیم با TFS آشنا است بنابراین شروع کار با ابزار UI در Visual Studio آسان می شود. برای کسانی که در Git تازه کار هستند آموزش های مختصری وجود دارد و همینجا می توانند تمرین کنند.TFS Check نسبت به Git کند تر است همچنین باید مطمئن شوید که از سرور مرکزی back upگرفته شده است و ادغام مواردی که با هم در تداخل هستند مکررا پیش می آید که باید آن ها را خودتان به صورت دستی حل کنید و همچنین شاخه بندی روندی است که در TFS معمولا زمان بر است و مساله اصلی این است که TFS نیاز به Visual Studio دارد.موارد مختلفی وجود دارد که می تواند وقت شما را به عنوان یک تیم توسعه دهنده بگیرد نظیر رفع باگ ها، تحقیق و گسترش ابزار های جدید و اضافه کردن ویژگی های جدید. همانطور که تقاضای کاربران شما افزایش می یابد version control به تیم شما در تحویل پروژه در زمان معین با همکاری یکدیگر کمک می کند.منبع سایت www.barnamenevisan.</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Sun, 29 Apr 2018 17:22:37 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از گراف ها در سیشارپ و یونیتی</title>
                <link>https://virgool.io/@amdf1998/httpswwwaparatcomvn7kig-yg9pa7quohwa</link>
                <description>با سلام در این پست آموزش و توضیح چگونگی ساخت یک بازی برد به وسیله گراف ها  در سی شارپ و موتور بازی سازی یونیتی قرار داده ام که به شما کمک میکند که طرز استفاده از ارایه ها لیست و گراف ها را در سی شارپ و استفاده از آن ها در بونیتی را بخوبی یاد بگیریدبرای دانلود ویديو از لینک زیر استفاده کنید.https://www.aparat.com/v/N7kiG</description>
                <category>امیر محمد داودآبادی</category>
                <author>امیر محمد داودآبادی</author>
                <pubDate>Wed, 18 Apr 2018 21:27:47 +0430</pubDate>
            </item>
            </channel>
</rss>