<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ShayanDRG</title>
        <link>https://virgool.io/feed/@Shayan_DRG</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-07-06 16:26:03</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>ShayanDRG</title>
            <link>https://virgool.io/@Shayan_DRG</link>
        </image>

                    <item>
                <title>آموزش استفاده از Axios در Vue.js</title>
                <link>https://virgool.io/@Shayan_DRG/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-axios-%D8%AF%D8%B1-vuejs-rhmymahiwako</link>
                <description>گرفتن دیتا از API و نمایش آن‌ها یکی از رایج‌ترین مواردی است که هر برنامه‌نویسی با آن روزانه سرو کار دارد و برای انجام این کار روش‌های زیادی هم وجود دارد که یکی از محبوب‌ترین و پر‌استفاده‌ترین آن‌ها، Axios است.در این مقاله سعی می‌کنم تا Axios را با استفاده از یک تمرین آموزش دهم. قرار است از API وب‌سایت Coindesk برای نمایش قیمت بیت‌کوین که هر ۱ دقیقه یکبار آپدیت می‌شود، استفاده کنیم.نصب کتابخانه Axiosابتدا Axios را از طریق یکی از پکیج منیجر‌های دلخواه‌تان (npm یا yarn) نصب کنید.دستور نصب از yarn:yarn add axiosدستور نصب از npm:npm i vue-axiosگرفتن دیتا از APIروش‌های مختلفی برای ارسال درخواست به API وجود دارد، اما بهتر است که قبل از انجام هرکاری از فرمت یا شکل داده‌هامون مطلع بشیم تا متوجه بشیم که قرار است دقیقا چه چیزهایی را به کاربر نمایش دهیم. برای انجام این کار، یک درخواست به API ارسال می‌کنیم و تمام خروجی آن‌را به‌شکل ساده‌ای در وب‌سایتمون نمایش می‌دهیم.با توجه با داکیومنت‌‌های API سایت CoinDesk، مشاهده می‌کنیم که api urlhttps://api.coindesk.com/v1/bpi/currentprice.jsonاست.پس ابتدا یک پراپرتی data ایجاد می‌کنیم تا داده‌هایمان را در آن ذخیره کنیم و سپس با استفاده از  فانکشن mounted به API درخواست گرفتن داده‌ را ارسال می‌کنیم و داده‌های گرفته شده در پراپرتی data ذخیره و در نهایت در template نمایش می‌دهیم:new Vue({
     el: &#039;#app&#039;,
     data () {
          return {
               info: null
          }
     },
     mounted () {
         axios.get(&#039;https://api.coindesk.com/v1/bpi/currentprice.json&#039;).then(response =&gt; (this.info = response))
     }
})&lt;div id=&amp;quotapp&amp;quot&gt;
     {{ info }}
&lt;/div&gt;و خروجی کارمان شبیه به زیر می‌شود:حالا ما داده‌ها را در اختیار داریم اما همانطور که مشاهده می‌کنید بسیار نامرتب و شلوغ پلوغ هستند. بنابر‌این بریم هم نحوه نمایش داده‌ها را مرتب کنیم و هم با اضافه کردن error handling، کاربر را از وقوع مشکلات احتمالی مطلع سازیم.نمایش داده‌های APIما قصد داریم تا در برنامه‌مون قیمت بیت‌کوین را در واحد پول کشورهای مختلف نمایش دهیم و اگر به داده‌های JSON‌ای که دریافت کردیم دقت کنید، مشاهده می‌کنید که مواردی که بهشون نیاز داریم در response.data.bpi قرار دارند. پس حالا اگر به‌جای کل response فقط response.data.bpi را درخواست کنیم، خروجی‌مان بدین شکل خواهد شد:axios
     .get(&#039;https://api.coindesk.com/v1/bpi/currentprice.json&#039;)
     .then(response =&gt; (this.info = response.data.bpi))حالا به شکل زیر HTML‌مون رو آپدیت می‌کنیم تا فقط اطلاعاتی که بهشون نیاز داریم رو نمایش بده. همچنین،‌ با استفاده از یک filter از درست بودن جای اعشار مطمئن میشیم:&lt;div id=&amp;quotapp&amp;quot&gt;
     &lt;h1&gt;Bitcoin Price Index&lt;/h1&gt;
     &lt;div
          v-for=&amp;quotcurrency in info&amp;quot
          class=&amp;quotcurrency&amp;quot
      &gt;
          {{ currency.description }}:
          &lt;span class=&amp;quotlighten&amp;quot&gt;
               &lt;span v-html=&amp;quotcurrency.symbol&amp;quot&gt;&lt;/span&gt;{{ currency.rate_float | currencydecimal }} 
         &lt;/span&gt;
     &lt;/div&gt;
&lt;/div&gt;filters: {
     currencydecimal (value) {
          return value.toFixed(2)
     }
},خروجی:کنترل خطاهاممکن است گاهی اوقات بنا به دلایلی مانند وجود مشکل در ارتباط اینترنت موفق به دریافت اطلاعات از API نشویم و نیاز که کاربر را از این خطا‌های احتمالی مطلع سازیم که این کار را به شکل زیر با استفاده از catch انجام می‌دهیم:axios
     .get(&#039;https://api.coindesk.com/v1/bpi/currentprice.json&#039;)
     .then(response =&gt; (this.info = response.data.bpi))
     .catch(error =&gt; console.log(error))بدین شکل می‌توانیم از مشکلات احتمالی در درخواست API مطلع شویم. اما اگر دیتا‌ها خراب باشن و یا API از کار افتاده باشد چی؟ الان کاربر چیزی از این ارورهارا نمی‌تواند ببیند. شاید بهتر باشه که یک loader بسازیم و سپس به کاربر اطلاع بدیم که قادر به دریافت داده‌ها نیستیم:new Vue({
     el: &#039;#app&#039;,
     data () {
     return {
          info: null,
          loading: true,
          errored: false
     }
},
     filters: {
          currencydecimal (value) {
          return value.toFixed(2)
     }
},
mounted () {
     axios
     .get(&#039;https://api.coindesk.com/v1/bpi/currentprice.json&#039;)
     .then(response =&gt; {
          this.info = response.data.bpi
     })
     .catch(error =&gt; {
           console.log(error)
           this.errored = true
     })
      .finally(() =&gt; this.loading = false)
     }
})&lt;div id=&amp;quotapp&amp;quot&gt;
     &lt;h1&gt;Bitcoin Price Index&lt;/h1&gt;

     &lt;section v-if=&amp;quoterrored&amp;quot&gt;
          &lt;p&gt;We&#039;re sorry, we&#039;re not able to retrieve this information at the moment, please try back later&lt;/p&gt;
     &lt;/section&gt;

     &lt;section v-else&gt;
           &lt;div v-if=&amp;quotloading&amp;quot&gt;Loading...&lt;/div&gt;

          &lt;div
               v-else
               v-for=&amp;quotcurrency in info&amp;quot
               class=&amp;quotcurrency&amp;quot
           &gt;
                {{ currency.description }}:
                &lt;span class=&amp;quotlighten&amp;quot&gt;
                     &lt;span v-html=&amp;quotcurrency.symbol&amp;quot&gt;&lt;/span&gt;{{ currency.rate_float | currencydecimal }}
               &lt;/span&gt;
          &lt;/div&gt;

     &lt;/section&gt;
&lt;/div&gt;حالا هربار با اجرای کدمان، هنگام گرفتن دیتا از API، یک لودینگ نمایش داده خواهد شد.در این مقاله سعی کردم تا کلیات لایبری Axios در Vue.js را بطور خلاصه توضیح بدم. امیدوارم که این آموزش براتون مفید بوده باشه.</description>
                <category>ShayanDRG</category>
                <author>ShayanDRG</author>
                <pubDate>Wed, 30 Mar 2022 23:34:28 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی محبوب‌ترین زبان‌های برنامه‌نویسی برای بازی‌سازی</title>
                <link>https://virgool.io/@Shayan_DRG/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%85%D8%AD%D8%A8%D9%88%D8%A8-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%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%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%B3%D8%A7%D8%B2%DB%8C-ak3vqlvmb4n6</link>
                <description>زبان‌های بسیار زیادی برای توسعه بازی وجود دارد که نداشتن دانش کافی برای انتخاب مناسب‌ترین زبان، برای هر فردی که قصد داره تازه پا به دنیای هیجان انگیز بازی‌سازی بذاره،‌ ممکن است با سرگردانی‌های زیادی همراه باشد.میانگین درآمد توسعه‌دهندگان بازی 101,000 دلار در سال است که از پر در آمدترین حرفه‌ها در دنیا محسوب می‌شود (متاسفانه در ایران چنین نیست). میزان این درآمد تا حد بسیار زیادی بسته به زبانی است که از آن برای توسعه بازی استفاده می‌کنید، چراکه برای توسعه هر بازی بسته به نوع پلتفرمی که قرار است آن بازی روی آن اجرا شود، نیازمند زبان خاصی خواهید بود.1. سی پلاس پلاس - ++Cاصلا جای تعجب نیست که همچنان ++C از محبوب‌ترین زبان‌های بازی‌سازی دنیا است. ++C به دلیل سطح انتزاع بالایش به شما امکان کنترل دقیقی بر نحوه تعامل سخت افزار با کدتان را می‌دهد. همچنین، این زبان کنترل بسیار دقیق‌تری نسبت به بسیاری از زبان‌ها بر نحوه پردازش‌های گرافیکی توسط سیستم را می‌دهد که نقش بسیار مهمی در توسعه بازی دارد.یکی دیگر از مزایای کلیدی سی پلاس پلاس، امکان اپتیمایز کردن پارت‌های خاصی از بازی است. برای مثال می‌توانید برای برخی از المنت‌های بازی، منابع بیشتری در اختیار بذارید. هرچند همین سطح از جزئیات این زبان باعث می‌شود تا بازی‌سازی با ++C نسبت به سایر زبان‌ها کمی دشوار‌تر شود.از این زبان باری ساخت بازی‌هایی محبوب همچون StarCraft، Football Pro و Counterstrike استفاده شده است.2. جاوا - Javaهرچند Java سطح انتزاع بسیاری بالایی را مانند ++C در اختیارمان قرار نمی‌دهد، با این حال بسیاری باور دارند که جاوا بهترین زبان برای بازی‌سازی است. درصد بالایی از محبوبیت این زبان، به دلیل راحتی استفاده آن برای توسعه انواع بازی هاست.همچنین، جامعه Java مملو از ابزارها و منابع رایگان و اپن سورس است. استفاده درست از این منابع باعث می‌شود تا علاوه بر اینکه هزینه ساخت بازی کاهش پیدا می‌کند، بلکه سرعت توسعه آن نیز بطور چشمگیری سریع‌تر شود، چراکه می‌توانید از کدهایی که سایر توسعه‌دهندگان در بازی‌های خود استفاده کردن، شماهم از آن‌ها به‌صورت رایگان در بازی خود استفاده کنید.از این زبان در توسعه بازی‌هایی همچون Asphalt 6، Assassin&#x27;s Creed و PES استفاده شده است.3. جاوااسکریپت - JavaScriptوقتی صحبت از توسعه بازی‌های آنلاین می‌شود، جاوااسکریپت از اولین گزینه‌های انتخابی است. استفاده از HTML و CSS در کنار JavaScript، روند توسعه بازی‌های مالتی پلتفرم را بسیار آسان‌تر می‌کند.برخی از توسعه‌دهندگان جاوااسکریپت را به عنوان یک راه حل همه جانبه می‌بینند، چراکه می‌توان از آن تقریبا در همه جا، از ایجاد انیمیشن گرفته تا تعامل با المنت‌ها، استفاده کرد. علاوه بر این، جامعه آنلاین پشت JS بسیار بزرگ است و تقریبا می‌توانید برای هر چیزی از المنت‌های از پیش ساخته شده موجود، برای توسعه بازی خودتان استفاده کنید.از این زبان در توسعه بازی‌هایی همچون Gods Will Be Watching، Angry Birds و Aquaria استفاده شده است.4. اچ تی ام ال ۵ - HTML5هرچند HTML زبان برنامه نویسی نیست و یک زبان نشانه‌گذاری است، ولی از محبوبیت بالایی در ساخت بازی برخورد دار است که یکی از دلایل آن این است که می‌توایند از HTML به‌راحتی در کنار JavaScript استفاده کنید.توسعه بازی‌های مالتی پلتفرم که روی مرورگرهای مختلف اجرا می‌شوند توسط HTML5 بسیار آسان است و همین امر موجب می‌شود تا بتوان بازی‌هایی برای جامعه وسیع‌تری از کاربران طراحی کرد.از HTML5 برای توسعه بازی‌هایی همچون World Cup Penalty 2018 و Gods Will Be Watching استفاده شده است.5. سی شارپ - #Cبا اینکه از #C به عنوان جایگزین راحت‌تر ++C یاد می‌شود، اما با این حال هنوز یک زبان فلکسیبل و قدرتمند است که در میان بازی‌ساز‌ها از محبوبیت‌ خاص و بسیاری بالایی برخورد دارد است. یکی از اصلی‌ترین دلایلی که موجب می‌شود #C برای بازی سازی مفید و مناسب باشد این است که مایکروسافت XNA را با همین هدف توسعه داد است.درواقع XNA مجموعه‌ای از ابزارهایی برای راحت‌تر و سریع‌تر کردن روند توسعه بازی توسعه است. همچنین، انعطاف پذیری بالا یکی دیگر از ویژگی‌های مثبت این زبان است. با استفاده از سی شارپ می‌توانید برای پلتفرم‌های زیادی بازی بسازید، مانند:WindowsPlayStationAndroidIOSاز سی شارپ برای توسعه بازی‌هایی همچون Super Mario Run و Pokémon Go استفاده شده است.6. پایتون - Pythonهرچند Python به میزان Java و ++C و یا سایر زبان‌هایی که در این مقاله معرفی کردیم، برای بازی‌سازی محبوب نیست، اما همین زبان به شما دسترسی‌هایی به ابزارهایی می‌دهد که روند توسعه بازی را ساده‌تر می‌کند. به همین خاطر، بسیاری از برنامه‌نویس‌های جدید برای بازی‌سازی سراغ این زبان می‌روند.بخش زیادی از محبوبیت بالای پایتون بخاطر OOP یا شیءگرایی آن است. آبجکت‌های استفاده شده در OOP دارای صفات و ویژگی‌هایی هستند که از آن‌ها می‌توان در بخش‌های زیادی از بازی استفاده کرد که ساخت بازی را سریع‌تر و راحت‌تر می‌کند.تنها کاری که لازم است انجام دهید، Copy و Paste کردن آبجکت‌های در بخش‌های مختلف کد و سپس اعمال تغییرات جزئی‌ روی آن نسبت به جنبه‌های متناسب با بازی است. همچنین، ویرایش کدها در برنامه‌نویسی شیءگرا راحت‌تر است، زیرا در صورت نیاز به اعمال هرگونه تغییری، دیگر نیاز نیست که تمام کدها رو ادیت کنید و فقط با با ایجاد تغییر در یک آبجکت (آبجکت والد)، سایر آبجکت‌ها (آبجکت‌های فرزند) نیز تغییر خواهند کرد.از این زبان برای توسعه بازی‌هایی همچون Battlefield 2، Eve Online و Disney&#x27;s Toontown Online استفاده شده است.امیدوارم این مقاله براتون مفید بوده باشه و تونسته باشه بهتون برای انتخاب بهترین زبان مناسب بازی سازی، کمک کرده باشه.</description>
                <category>ShayanDRG</category>
                <author>ShayanDRG</author>
                <pubDate>Tue, 29 Mar 2022 22:39:01 +0430</pubDate>
            </item>
            </channel>
</rss>