<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرحسین قربانی</title>
        <link>https://virgool.io/feed/@amir_gh796</link>
        <description>توسعه دهنده چند سکویی پلتفرم های تحت وب ، موبایل و دسکتاپ - گرافیست و طراح مدل های 3D</description>
        <language>fa</language>
        <pubDate>2026-06-17 05:18:19</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/89741/avatar/7HDHU1.png?height=120&amp;width=120</url>
            <title>امیرحسین قربانی</title>
            <link>https://virgool.io/@amir_gh796</link>
        </image>

                    <item>
                <title>مفهوم websocket به زبان ساده</title>
                <link>https://virgool.io/@amir_gh796/%D9%85%D9%81%D9%87%D9%88%D9%85-websocket-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-j5wpgya3f2lx</link>
                <description>توی این مقاله میخوام مثل همیشه به زبان ساده ، یک تکنولوژی رو معرفی کنم . تکنولوژی بنام websocket که این روزها مخصوصا خیلی در دنیای وب و برنامه نویسی پرکاربرد هست . پس بریم سر اصل مطلب ...وب سوکت یا websocket یا ws یا RFC6455 ، در واقع یک پروتکلی هست که ارتباط پایداری بین سرور و کلاینت ایجاد میکنه که از نوع ارتباطات سریع و بلادرنگ هست . درحالت عادی ، همیشه ارتباط بین سرور و کلاینت روی پروتکل http انجام میشه . به این صورت که ابتدا یک اتصالی یا connection بین کلاینت و سرور برقرار میشد و درخواست یا همون request از سمت کلاینت به سرور ارسال میشد و کلاینت ، حالا منتظر جوابی بود که باید از سمت سرور برمیگشت یا همون response و بعد از اون اگر کاری با سرور نبود ، اتصال قطع میشد . ولی ارتباط بین سرور و کلاینت در websocket فرق میکنه . به این صورته که ابتدا درخواستی تحت پروتکل http از کلاینت به سرور ارسال میشه . اگر سرور از websocket پشتیبانی میکرد ، پاسخی موفقیت آمیز به کلاینت ارسال میشه که معروف هست به handshake یا دست دادن که به معنی قبول کردن ارتباط دو طرفه تحت پروتکل websocket هست و نتیجه این پیام ، ارتقاع پروتکل از http به websocket هست. بعد از ارتقا ، یک سوکت بین کلاینت و سرور ایجاد شده و ارتباطات بدون وقفه انجام میشه . تنها زمانی این ارتباط قطع میشه که یکی از طرفین از این سوکت خارج بشه . ( اصطلاحا session بسته بشه )مقایسه این دو پروتکلمعمولا وقتی صحبت از مقایسه بین دو مورد میشه ، اکثر ماها از دید معایب و مزایا به قضیه نگاه میکنیم و به دنبال انتخاب بین یکی از دو مورد میگردیم.باید بگم متاسفانه این مقایسه بین این دو اگر به معنی انتخاب تنها یکدوم از این ها باشه ، اشتباهه .پروتکل http یک پروتکل نیمه دوطرفه هست ( به دلیلی که بالاتر توضیح دادم ) این درحالیه که websocket یک پروتکل کاملا دوطرفه هستش . ینی پس از قبولی ارتباط سوکتی بین کلاینت و سرور ، پیام ها در قالب request و response تبادل نمیشن . بلکه ممکنه یکسری پیام از سمت کلاینت به سرور ارسال بشه و همینطور هم برعکسش . پس هر دو طرف میتونن بدون ایجاد وقفه ای به جهت منتظر موندن برای پاسخ ، داده ارسال کنن . به همین جهت ، معمولا سرعت انتقال داده بین دوطرف در http پایین تر از websocket هست .برای همین از سوکت به عنوان ارتباط بلادرنگ هم یاد میشه .یه موضوع دیگه ای هم که هست ، بحث تعداد کلاینت هایی هست که تمایل به ارتباط با سرور رو دارن . در پروتکل http هرچقدر تعداد کاربران بیشتر باشه ، سرور بار بیشتری رو تحمل میکنه و اگر تعداد درخواست ها در واحد زمان زیاد باشه ، امکان عدم توانایی پاسخگویی سرور هم هست . دلایل مختلفی هم داره . بارزترینش همینی هست که بابت هر درخواستی که به سرور از سمت کلاینت میشه ، باید منتظر پاسخگویی موند و این خودش هم زمان بر هست . حالا شما فکر کن سرور اگر از سخت افزار نسبتا ضعیفی هم برخوردار باشه ، دیگه چه افتظاحی به بار میاد !ولی در مورد websocket به مراتب کمتر این اتفاق میافته . دلیلش هم مشخصه دیگه . websocket صبر نمیکنه که پاسخ از سرور برگرده تا کلاینت درخواست بعدی رو ارسال کنه . میشه پشت سر هم از کلاینت درخواست ارسال بشه بدون اینکه منتظر جوابی موند . ( دقیقا مثل یک اوتوبان دوطرفه ) . این خودش حتی روی تعداد کاربران هم تاثیر زیادی میزاره و باعث افت کارایی سرور نمیشه . شباهت های این دو پروتکلهر دو روی لایه TCP از لایه هفتم OSI در شبکه قرار دارن . هر دوی این پروتکل از secure بودن یا SSL بهره میبرن . یعنی همونطور که برای http ، نسخه https هم داریم که رمزنگاری شده هست ، برای websocket هم wss داریم . ( البته websocket رو به اختصار همیشه با ws نمایش میدن مثل http که خلاصه شده عبارت hyper text transfer protocol هست .) انتخاب بین این دو پروتکلباید بگم که این کاملا بستگی به نرم افزار شما و کارایی مورد انتظار شما از نرم افزار داره که از هر کدوم این پروتکل ها کی و کجا استفاده کنی . اگر نرم افزاری که در حال توسعه اون هستی ، داده هایی داره که نیاز نیست دایما و به قولی به طور زنده یا لایو ، بین کلاینت و سرور انتقال داده بشه ، حتما از http استفاده کن . مثل محتوای اصلی و بدنه یک سایت معمولی یا مدیریت محتوای یک سیستم . ولی اگر داده های نرم افزار دایم در حال تغییر هست و به طور زنده ، بدون رفرش شدن صفحه ، این انتقال انجام بشه ، باید از ws استفاده کرد . مثل شبکه های اجتماعی ، بازی های آنلاین و گروهی ، مشاهده فیلم ، نمودار نوسانات ارزی و ...نحوه استفاده از این پروتکلبرای استفاده از websocket باید هم در قسمت کلاینت و هم در قسمت سرور نرم افزار ، کتابخانه websocket رو فراخوانی کنید . درحال حاظر چون این پروتکل ، به عنوانی یک پروتکل استاندارد ( توسط IETF در سال 2011 به عنوان RFC6455 استاندارد شد ) و جهانی در بستر شبکه شناخته شده هست ، تغریبا تمامی مرورگر های مدرن و وب سرور ها از این پروتکل پشتیبانی میکنن . همچنین کتابخانه های محبوبی هم برای ارتباط رو این پروتکل در زبان های مختلف برنامه نویسی ، توسعه داده شده . در ادامه میتونید یک نمونه پروژه بسیار ساده که یک چت آنلاین روی asp.net core هست رو از گیت هاب بنده دانلود کنید .https://github.com/AmirGh796/OnlineChat_WS.git</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Sat, 06 Nov 2021 03:59:13 +0330</pubDate>
            </item>
                    <item>
                <title>شی گرایی به زبان ساده ( Part 2 )</title>
                <link>https://virgool.io/@amir_gh796/%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-part-2-dwbhxvlxbshs</link>
                <description>سلام دوستان. من امیرحسین قربانی هستم و میخوام تو این مقاله که ادامه مقاله قبلی که مفهوم شی گرایی بود ، به طور کامل و ساده این مبحثو خدمتتون اراعه بدم. دوستانی هم که مقاله قبلی رو نخوندن ، حتما قبل از مطالعه این مقاله اول قبلی رو بخونن ;)شی گراییتوی مقاله قبلی با نفهوم شی گرایی تا اینجا آشنا شدین که میدونین شی ( object ) چیه ، کلاس ( class ) چیه ، ویژگی و رفتار هر شی چیه و کاربردشون چی هستو تو دنیای برنامه نویسی به چه دردی میخورن .حالا نیاز داریم برای مفهوم کامل تر شی گرایی و کار با اون تو حوضه برنامه نویسی ، 4 اصل کلی رو بدونیم : 1- Abstraction2- Inheritance3- Polymorphism4- Encapsulation Abstractionبه معنی انتزاعی بودن هست. فرض کنین که میخوایم اطلاعات فردی چند نفر رو ذخیره کنیم. برای این کار باید کلاسی درست کنیم که شامل یک سری ویژگی مثل نام ، نام خانوادگی ، شماره تلفن و ... باشه. توی این حالت ما نیازی نداریم که برای تک تک افراد کلاس مربوط به خودشون رو تعریف کنیم و هر کدوم یه حساب مخصوص به خودشونو داشته باشن. ( مثلا کلاس علی ، کلاس رضا و ... ) تنها کافیه که ویژگی های کلی رو در یه کلاس به نام کلاس حساب ، بنویسیم و به تعداد افراد موجود از روی کلاس ، شی تعریف کنیم .این میشه معنی کلی انتزاعی بودن که خود کلاس وجود خارجی نداره ، بلکه object هایی که از روی کلاس ساخته میشن ، هر کدوم وجود خارجی پیدا میکنن .//sakhte classe paye
class Account {
       string first_name;
       string last_name;
       string phone_number;
       int age;
       string address;
}
// sakhte object hayi az classe paye
Account ali_account = new Account();
Account reza_account = new Account();
Account mohammad_account = new Account();Inheritanceبه معنی ارث بری هست.فرض کنین تو مثال قبل ما کلاسی رو ساختیم با عنوان کلاس حساب ( Account Class ) برای ذخیره یک سری ویژگی های کلی از افراد .حالا فرض کنین که افرادی که یک سری ویژگی های مجزایی رو برای بعضی افراد در نظر گرفتیم و میخوایم بر اساس اون ها ، فرمی که افراد پر میکنن برای ذخیره اطلاعات خودشون ، با بقیه فرق داشته باشه . مثلا یک سری ویژگی هایی مخصوص افراد شاغل ، یکسری ویژگی مخصوص افراد دانشجو و ... داشته باشیم . ( برای افراد شاغل مثلا صمت شغلیشون ، حقوق ماهانه و ... و برای افراد دانشجو ، رشته تحصیلی و کد دانشجوییشون ) توی این حالت ما تنها کافیه که 2 کلاس با عنوان کلاس افراد دانشجو و کلاس افراد شاغل درست کنیم و این 2 کلاس رو ارث بری کنیم از کلاس اصلی و پایمون که کلاس حساب افراد هست . تو این حالت دیگه نیازی نیست که دوباره ویژگی هایی که تو کلاس پایه داشتیم رو دوباره از اول برای 2 کلاس دیگه بنویسیم ، بلکه اون ها سر جاشون هست و بر اساس کلاس مشتق شده از کلاس پایه ، ویژگی های جدید به کلاس پایه برای اون افراد اضافه میشه . به طور کلی مثلا تو کلاس دانشجو تنها کافیه که شماره دانشجویی و رشته تحصیلی رو بنویسیم ، نه بیشتر .اینجوری تعداد کد کمتری مینویسیم و از کد های قبلی که برای کلاس پایه نوشتیم ، دوباره استفاده میکنیم .class StudentAccount : Account {
       int student_number;
       string grade_of_study;
}

class EmployeeAccount : Account {
       string job;
       int amount;
}
Polymorphismبه معنی چند شکلی هست .برمیگیردیم مثال قبل . فرض کنین تو کلاس پایمون 2 رفتار خیلی ساده داشته باشیم که متد هایی هستند که فقط مقدادیری رو بر میگردونن . متد اول نامو نام خانوادگی و متد دوم تمام ویژگی هارو برمیگردونه . این متد ها از طریق کلاس های مشتق شده ( که کلاس فرد دانشجو و کلاس فرد شاغل بود ) نیز قابل دسترسی هستند ( با این که این متد ها فقط تو کلاس پایه تعریف شدند ) .حالا فرض کنین همین متد ها در کلاس های دانشجو و شاغل نیز باشند ، ولی با این تفاوت که علاوه بر ویژگی های کلاس پایه ، ویژگی های مربوط به هر کدوم رو هم برگردونه . تو این حالت که نوع خاصی از متد پایه بازنویسی شده ( با همون نام و همون خروجی ) اصطلاحا میگن override  کردن متد و به این عملیات در برنامه نویسی شی گرایی میگن class Account {
       string first_name;
       string last_name;
       string phone_number;
       int age;
       string address;

       public virtual string returnAllFields();
}

class StudentAccount : Account {
       int student_number;
       string grade_of_study;
       
       public override string returnAllFields();
}

class EmployeeAccount : Account {
       string job;
       int amount;

       public override string returnAllFields();
}Encapsulationبه معنی کپسوله سازی هست .ما تو زندگی روزانه خودمون به چیزی میگیم کپسول که توسط یه پوسته ای محتویات داخل خود خودش رو در عین حال که دور هم نگه میداره ، از محیط بیرون هم حفظ کنه .توی برنامه نویسی شی گرا هم ما تقریبا همچین چیزی رو داریم . وقتی کلاسی رو تعریف میکنیم در حقیقت تمام فیلد ها و متد های داخلش رو داریم کپسوله سازی میکنیم . شاید سوال پیش بیاد که پس چطوری توسط کلاس های دیگه ، از متد ها و فیلد های داخل این کلاس استفاده کنیم ؟ با ساختن شی از روی کلاس مورد نظر و فقط میتونیم به اجزایی دسترسی داشته باشیم که عمومی ( public ) تعریف شده باشن . اگر خصوصی باشن اصلا نمیشه دسترسی داشت . البته دسترسی به این معنی نیست که به ساختار اون متد دسترسی داشته باشیم ، بلکه فقط میتونیم از کارایی نهایی اون استفاده کنیم . لزومی هم نیست که بدونیم چطور ساخته و پیاده سازی شده . ما خیلی وقت ها تو زندگی روزمره خودمون از لوازمی استفاده میکنیم که نمیدونیم داخل اون ها داره چه اتفاقی میوفته و چطور ساخته شده و اصلا لازم هست نیست که بدونیم . ما فقط نتیجه نهایی رو انتظار داریم . تو سیستم شی گرایی برنامه نویسی هم دقیقا همینطور هستش .کپسوله سازیخب دوستان به آخر مقاله شی گرایی به زبون ساده رسیدیم . ممنونم ازتون که وقت گذاشتین و مقاله من رو خوندین . امیدوارم که تونسته باشم توسط این مقاله کمکی به درک شی گرایی براتون کرده باشم . موفق باشید :)</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Thu, 12 Mar 2020 23:56:29 +0330</pubDate>
            </item>
                    <item>
                <title>شی گرایی به زبان ساده ( Part 1 )</title>
                <link>https://virgool.io/coderlife/%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-h4kmjdokjdnt</link>
                <description>سلام دوستان . من امیرحسین قربانی هستم و تصمیم دارم که مفهوم کلی شی گرایی در برنامه نویسی رو براتون یک بار برای همیشه تو دو مقاله وابسته به هم جا بندازم که اصلا این نوع برنامه نویسی چی هست و کاربردش چیه . خوشحال میشم تو این دو بخش از مقاله با من همراه باشید.شی گراییشی گرایی اصلا چی هست ؟تا قبل از این که زبان های سطح بالایی مثل c# , java , ... توسعه پیدا کنه ( یعنی حدودا قبل دهه 1980 ) ، برنامه نویسا با زبان های سطح پایین تری مثل اسمبلی، فورترن و C کار میکردن و برنامه هاشون رو توسعه میدادن. این زبان ها ، زبان های پروسیجری یا پروسه ای بودن و دستورات پشت سر هم نوشته و اجرا میشدن. ( برنامه نویسا نهایتا میتونستن با تعریف استراکچر و یا توابع ، دستورات برنامه نویسی رو قابل فهم تر کنن )میشه گفت حدودا بعد از دهه 1980 بود که توسعه دهنده ها کم کم به فکر این افتادن که زبان هایی رو توسعه بدن که به درک انسان و محیط اطرافمون نزدیک تر باشه تا کار یاد گیری و مهارت برنامه نویسی رو راحت تر کنن .پس از اونجا بود که ایده زبان های برنامه نویسی شی گرا شکل گرفت ! امروزه زبان های سطح بالای زیادی معرفی شده که از اصول شی گرایی پیروی میکنن و همین طور بازار کار بسیار بزرگی رو هم به خودشون اختصاص دادن . از جمله این زبان های میشه به C# , Java , Php و ... اشاره کرد .البته کسایی که برنامه نویسن و  تجربه کاری نسبتا بالایی دارن بیشتر از اصطلاح OOP برای زبان های شی گرا استفاده میکنن که مخفف کلمات Object Oriented Programing به معنی همین شی گرایی هست. تا اینجا مختصری رو خواستم بگم که فقط یه دید کلی پیدا کنین نسبت به این نوع زبان ها و حالا میخوام خود شی گرایی رو براتون به زبون ساده توضیح بدم. پس با من همراه باشید ;)تو حوضه برنامه نویسی شی گرا ، به طور کلی ما با دو موضوع خیلی سروکار داریم . یکی class ( کلاس ) و اون یکی object ( شی ) هست . اینو بدونین که هر کدوم این ها بدون اون یکی بی معنیه و کاربردی نداره .با یه مثال توضیح میدم . فرض کنین که میخوایم خودرویی رو بسازیم و ازش مثلا 1000 تا تولید کنیم. خب ، توی نگاه اول ما نیاز به یک نقشه داریم که بر اساس اون نقشه خودرو رو بسازیم . فرض کنید ما نقشرو طراحی کردیم و مشکلی هم نداره . اما آیا میشه از اون نقشه استفاده کرد ؟! میشه سوارش شد ؟! نه !! ما نقشرو طراحی کردیم که وقتی دادیمش به کارخونه مورد نظر ، کارخونه بر اساس اون نقشه خودرو هامون رو تولید کنه و ما در نهایت از محصول تولید شده ( که از روی اون نقشه هست ) استفاده خواهیم کرد .دوستان تو برنامه نویسی شی گرا هم همین روند هستش تقریبا . کلاس ها ، حکم همون نقشه رو دارن و اشیایی که از روی اون کلاس ها ساخته میشن حکم محصول تولید شده و نهایی رو دارن. یعنی ما یکبار کلاس خودمون رو تعریف میکنیم و بی نهایت بار میتونیم از همون کلاس ، object بسازیم . برگردیم به دنیای اطراف خودمون . اشیایی که ما باهاشون سروکار داریم ، هرکدوم دارای ویژگی ها و رفتار های منحصر به فرد خودشون هست.  برای مثال همون کارخونه خودرو سازیمون رو در نظر بگیرین . فرض کنین که از این کارخونه ( که مثلا ماشین هایی با برند X تولید میشه ) ،یک سری ماشین X مدل سواری و یک سری هم ماشین X مدل وانت تولید بشه . تو نگاه اول هر دو خودرو هستن ، 4 چرخ دارن ، از یک برند هستن و هر دو شون برای نقل مکان استفاده میشن . اما با این که از نظر رفتاری مشابه هستن ولی از نظر ویژگی و صفات کاملا متفاوت هستن . یکی برای جابجایی مسافر ساخته شده و اون یکی برای جابجایی بار . توی برنامه نویسی شی گرا هم میشه گفت همین روند هستش . اشیایی که ساخته میشن از ویگی ها یا صفات ( Attribute ) و هم از رفتار ها ( Behavior ) برخوردار هستن .خب دوستان . به آخر بخش اول این مقاله رسیدیم و ادامه مفهوم شی گرایی رو ترجیح میدم تو بخش دوم منتقل کنم که هم خسته نشین هم درکش آسون تر باشه براتون و هم از طولانی شدن مقاله جلوگیری کرده باشم . ممنون که تا اینجا همراه بودین ، موفق باشین .</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Sun, 08 Mar 2020 18:30:16 +0330</pubDate>
            </item>
                    <item>
                <title>نوع های داده ای یا Data Type ها به زبان ساده (Part 2)</title>
                <link>https://virgool.io/@amir_gh796/%D9%86%D9%88%D8%B9-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%DB%8C-%DB%8C%D8%A7-data-type-%D9%87%D8%A7-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-part-2-dvple3vr7qau</link>
                <description>سلام دوستان. من امیر حسین قربانی هستم و میخوام که تو این مقاله ، ادامه مقاله قبلی یعنی Data type ها رو تو بخش دوم خدمتتون اراعه بدم. دوستانی که مقاله قبلی رو نخوندن و اومدن سراغ این ، حتما اول مقاله قبل رو مطالعه کنین و اگر کامل متوجه شدین بیاین سراغ این :)Data Typesتوی مقاله قبل من مفهوم نوع های داده ای رو به صورت کامل با یه مثال کامل براتون توضیح دادم و حالا تصمیم دارم اینجا به معرفی نوع های داده ای کاربردی و در حقیقت اصلی که معمولا تو اکثر زبان های برنامه نویسی یکسان هستن رو برتون بگم . نوع داده ای int اولین و پرکاربردترین نوع داده ای که تو اکثر زبان ها یکی هست ، نوع داده ای int یا integer که فقط مخصوص ذخیره اعداد صحیح هستش . این نوع داده ای در حالت عادی میتونه بازه اعداد 2,147,483,647 تا 2,147,483,648- رو داخل خودش جا بده . لازم به ذکر هستش که تو این حالت تنها 4 بایت ( که معادل 32 بیت هست ) از حافظه ram سیستمتون رو اشغال میکنه. ولی ممکنه که شما بخواید کمتر و یا بیشتر از این بازه رو ذخیره کنین یا اصلا کارکردتون فقط با اعداد مثبت باشه و اعداد منفی تو زمینه کاریتون بی فایده باشه .  تو این حالت چه باید کرد ؟ میشه رنج ذخیره سازی رو دستکاری کرد یا نه ؟!باید بگم که خوشبختانه بله :) ما این امکان رو به ساده ترین شکل ممکن داریم که بتونیم تو نحوه ذخیره سازی داده هامون دخالت کنیم. به این شکلی که الان براتون میگم .فرض کنین که بازه اعدادی که ما باهاشون سروکار داریم این مقداری که بالا نوشتم نباشه و خیلی کمتر باشه . مثلا از بازه 1000 تا 1000- . تو این حالت میتونیم از کلمه کلیدیه short قبل از تعریف نوع داده ای int استفاده کنیم یعنی بنویسیم short int . الان بازه ای که در اختیار داریم از 32,767 تا 32,768- هستش که فقط 2 بایت از حافظه ram رو به خودش اختصاص میده ( یعنی معادل 16 بیت ) . شاید سوال براتون پیش بیاد که میشه از این بازه کمتر هم استفاده کنیم ؟ بله . میشه . در ادامه براتون توضیح میدم . پس با من همراه باشید ;)حالا شاید مقداری که میخواین ذخیره کنین خیلی بزرگتر باشه . تکلیف چیه ؟!تو این حالت به جای نوشتن کلمه کلیدی short ، از کلمه کلیدی long استفاده مکنیم . حالا بازه اعداد ما خیلی بزرگ هستش و از 9,223,372,036,854,775,807 تا 9,223,372,036,854,775,808- رو میشه ذخیره کرد ! البته از اون طرف هم خب مقدار ram بیشتری رو مصرف میکنه که حدود 8 بایت هست ( معادل 64 بیت ) . حالا ممکنه که ما اصلا نخوایم از رنج اعداد منفی استفاده کنیم . میشه مقدار فضای مصرفیه رنج منفی رو به مثبت اختصاص داد ؟ باز هم بله . میشه . اگر قبل از کلمات کلیدی نوع داده ایتون ، کلمه unsigned رو بزارین ، دیگه رنج منفی حساب نمیشه و عوضش به رنج اعداد مثبتتون اضافه میشه. مثلا اگر بنویسیم unsigned short int بازه میشه از 0 تا 65,535 یا اگر باشه unsigned long int میشه از 0 تا 18,446,744,073,709,551,615 که خیلی عدد بزرگی هستش !!
int temp = -13 ;
unsigned int age = 24 ;
unsigned short int count = 10 ;
نوع داده ای floatدومین نوع داده ای کاربردی که میخوام براتون بگم ، نوع داده ای float هست . توی این نوع داده ای شما علاوه بر این که میتونین اعداد صحیح رو ذخیره کنین ، قادر هستین که اعداد اعشاری رو هم ذخیره کنین .این نوع داده ای میتونه تا 6 رقم بعد از اعشار رو تو خودش نگه داری کنه . مقدار فضای مصرفیش هم 4 بایت ( معادل 32 بیت ) هست . حالا سوال ممکنه پیش بیاد که پس چرا بجای استفاده از int ، از float استفاده نکنیم ؟ جفتشون که 4 بایت فضا میگیرن ولی float میتونه اعشار رو هم ذخیره کنه !!باید بگم که اولا هر کدوم مناسب برای نوع خاصی طراحی شدن پس بهتره که از نوع مخصوص به خودش استفاده بشه ، دوما که برای ذخیره اعداد داخل float ، سیستم باید پردازش بیشتری رو نسبت به ذخیره در int انجام بده . چون اصلا ذخیره اعداد اعشاری سیستمش متفاوته با ذخیره اعداد صحیح ، در نتیجه نوع داده ایشون هم فرق دارن . ( تو مقالات بعدی بیشتر درباره ذخیره سازی اعداد توی ram براتون میگم ) .float average = 752.12 ;نوع داده ای doubleحالا چالشی که از نوع float روبرو داریم اینه که اگر خواستیم عدد اعشاری که ذخیره کنیم ، مقدار اعشارش بیشتر از 6 رقم بود چی ؟ راهی هست ؟ بله . اینجاست که باید از نوع داده ای double استفاده کنیم . این نوع داده ای توانایی اینو داره که تا 15 رقم پس از اعشار رو تو خودش نگهداری کنه .اگر هم که باز هم بیشتر از 15 رقم خواستیم ذخیره کنیم باید از کلمه کلیدی long قبل از double استفاده کنیم .خود double به تنهایی 8 بایت ( معادل 64 بیت ) از حافظه رو اشغال میکنه و وقتی از long هم قبلش استفاده کنیم ، میشه 16 بایت ( معادل 128 بیت ) ، چون خود long به تنهایی 8 بایت رو میگیره و وقتی با double استفاده بشه میشه 2 برابر !!double range = 237.2596635100478 ;
long double exactAverage = 237.25966351004784521898 ;
نوع داده ای charنوع داده ای بعدی که برسی میکنیم ، char یا character هستش که همینطور که از اسمش مشخصه برای ذخیره یک کاراکتر بکار میره . کاراکتر مورد نظرتونو باید حتما داخل تک کوتیشن یا &#x27; &#x27; قرار بدین . این نوع داده ای هم در حالت عادی از بازه 127 تا 128- رو میتونه داخل خودش ذخیره کنه. شاید براتون سوال پیش بیاد که مگه کاراکتر حروف رو ذخیره نمیکنه ؟! پس چرا میگین از 127 تا 128- ؟!! خب باید بگم که حروف الفبا دقیقا مثل اعداد داخل ram ذخیره نمیشن ، بلکه اول به کد اسکی تبدیل میشن و کد اسکی اون ها ذخیره میشه . خیلی خلاصه بخوام براتون بگم هر کاراکتر کد اسکی مربوط به خودشو داره و از روی کد های اسکی هستش که داخل ram ذخیره سازی میشن. حالا انشالله تو مقاله های بعدی راجبه کد های اسکی براتون مفصل توضیح میدم ;)برای همین اگر تو زبانی مثل c++ عدد 121 رو داخل متغیری از جنس char بریزین ، خروجی بهتون کاراکتر y رو نمایش میده ( البته حتی الامکان این از این روش استفاده نکنین چون زبان های سطح بالاتری مثل c# پشتیبانی نمیکنه ) .در آخر هم جا داره بگم این نوع داده ای تنها 1 بایت ( معادل 8 بیت ) از فضای ram رو اشغال میکنه .char character = &#039;A&#039; ;نوع داده ای boolامیدوارم که تا اینجای مقاله خسته نشده باشین ، چون نوع داده بعدی که بهتون معرفی میکنم ممکنه تو نگاه اول یکم عجیب بنظرتون برسه D: نوع داده بعدی ، نوع bool یا boolean هستش . این نوع داده فقط میتونه 2 مقدار رو تو خودش ذخیره کنه . یا 0 یا 1 !! منظور از 0 و 1 تو دنیای دیجیتال و کامپیوتر ها ، خاموش یا روشن هست . انجام دادن یا انجام ندادن . درست یا غلط . true یا false . ( اگر با مباحث منطق و مدار منطقی آشنا باشین دقیق متوجه میشین که چی میگم ، اگر هم آشنا نیستین هیچ جای مشکلی نیست . براتون با یه مثال کامل توضیح میدم ) .فرض کنین برنامه ای میخواین بنویسین که توش یک شرطی بر قرار هست . میخواین بگین که اگر بر فرض متغیر x مقدارش برابر 1 یا true بود ، فلان کار رو انجام بده . اگر برابر با 0 یا false بود ، کار دیگه ای رو برام انجام بده . اینجاست که باید از نوع داده bool کمک بگیریم و مقدار true یا false رو داخل متغیری درون حافظه نگهداری کنیم و اون متغیر رو مورد برسی برای شرط قرار بدیم .مقدار فضای مصرفی این نوع داده ای برابر 1 بایت ( معادل 8 بیت ) هست .bool result = true ;
bool flag = false ;
نوع داده ای stringاین نوع داده ای بر خلاف نوع char که تنها یک کاراکتر رو ذخیره میکرد ، میتونه تعداد زیادی کاراکتر و اعداد رو به صورت یک رشته درون حافظه ذخیره کنه .در واقع توی string هر نوع داده ورودی که بریزیم ، تنها به صورت یک رشته ای از عبارات نگه داری میشن و نمیشه اصلا روش عملیاتی انجام داد . مثلا اگر عدد 120 رو توی string نگه داری کنین ، هیچ عملیات ریاضی نمیشه روش انجام داد ( مگر این که از توابع تبدیل استفاده کنین که تو مقالات بعدی توضیح میدم ) .کاراکتر هایی که میخواین تو این نوع داده ذخیره کنین ، حتما باید داخل دابل کوتیشن یا &quot;&quot; قرار بگیرن . مقدار فضایی هم که این نوع داده مصرف میکنه ، معادل 8 بایت ( معادل 32 بیت ) هست .البته تو بعضی از زبان ها مثل c++ حتما باید کتاب خونه مربوط به string هارو تو برنامه فراخونی کنین تا بتونین از این نوع داده استفاده کنین.string bio = &amp;quotSalam, man amir hossein hastam. 21 sale az karaj&amp;quot ;سایر نوع های داده ایخب تا اینجا با نوع های داده ای اصلی آشنا شدین . در ادامه با چند تا نوع داده ای دیگه هم به طور مختصری آشناتون میکنم . این نوع های داده ای ممکنه تو زبان های برنامه نویسی فرق داشته باشن یا اصلا نباشن .byteنوع داده ای برای ذخیره اعداد 0 تا 255 کاربرد داره . مقدار فضای مصرفیش هم 1 بایت هست .sbyteاین نوع داده هم مثل بالایی 1 بایت فضا میگیره فقط از 127 تا 128- قابلیت نگهداری رو داره .decimalاین نوع داده ای میتونه بجای long double کاربرد داشته باشه ، چون 28 رقم بعد اعشار رو پشتیبانی میکنه و میتونه تو محاسبات مالی و یا علمی کاربرد نسبتا زیادی رو داشته باشه .16 بایت هم فضا میگیره .نوع های داده ای پویا مثل var , dynamic , let , ...کاربرد این نوع های داده ای بیشتر تو زبان های اسکریپتی و یا زبان های سطح بالایی مثل C# هست . شما داخل این نوع داده ها میتونین هر چیزی رو ذخیره کنین و نوع داده اون مقداری که شما ذخیره کردین در زمان کامپایل و یا تفسیر برنامه نوشته شده مشخص میشه . مثلا اگه بنویسین :var count = 12 ;وقتی که برنامتون رو کامپایل میکنین ، خود کامپایلر یا مفسر نوع دادتون رو تایین میکنه . ( البته این کار باعث کم شدن سرعت کامپایل یا اجرای برنامه میشه . چون برنامه باید یه پردازشی رو هم برای تایین نوع داده انجام بده ) .خب دوستان عزیز بحث ما درباره نوع های داده ای تموم شد و فکر میکنم تمام موارد لازمو بهتون گفتم .فقط به عنوان نکته آخر حتما اینو در نظر داشته باشین که وقتی زبان برنامه نویسی رو شروع کردین به یادگیری ، قبلش درباره نوع های داده ایش تو گوگل یه سرچ کنین . چون نوع های داده ای تو زبان های مختلف تفاوت اندکی با هم دارن .برای مثال ما تو c++ اگر بخوایم از 8 بایت فضا برای ذخیره عدد استفاده کنیم مینویسیم long int ، در صورتی که توی زبانی مثل c# یا java نیازی به long int نیست و تنها با نوشتن کلمه long به 8 بایت فضا میرسیم .ممنون که تا اینجا همراهم بودین و این مقالرو به اتمام رسوندین .سوالی داشتین حتما بپرسین . موفق و پیروز باشید .</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Fri, 28 Feb 2020 19:05:48 +0330</pubDate>
            </item>
                    <item>
                <title>نوع های داده ای یا Data Type ها به زبان ساده (Part 1)</title>
                <link>https://virgool.io/semilearn/%D9%86%D9%88%D8%B9-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%DB%8C-%DB%8C%D8%A7-data-type-%D9%87%D8%A7-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-part-1-agyyfcdb0ly9</link>
                <description>سلام دوستان من امیرحسین قربانی هستم و میخوام تو یه مقاله دیگه به زبون ساده مفهوم اصلی data type ها یا همون نوع های داده ای رو تو برنامه نویسی یبار برای همیشه براتون جا بندازم. پس تا آخر این مقاله همرام باشین :)Data Typesخب بزارین با یه مثال براتون شروع کنم.فرض کنین که ما یک سری مواد غذایی داریم ( از میوه جات گرفته تا انواع خوراکی و مایعات ) و میخوایم اینارو تو یخچال به شکل منظم جوری بچینیم که تو مواقع مورد نیاز دستری بهشون راحتو سریع باشه. از اونجا که ( حالا تا اونجا که من اطلاع دارم ) هیچ کسی نمیاد تمام این مواد غذاییو همینطور رو هم رو هم همرو قاطی کنه بریزه تو یخچال و هیچ کس هم از یدونه ظرف استفاده نمیکنه برای تمام این ها، مثلا ماستو قیمه و سبزیو سالادو دوغو همه چیو بریزه تو یه ظرف بعد بزاره تو یخچال.هممون میاییم برای هر نوع مواد غذایی و هر کدومشون یک ظرف بخصوصی رو تهیه میکنیم و مواد غذایی مورد نظر رو تو همون میزاریم بعد تو یخچال قرار میدیم. برای مایعات از تنگ یا بطری ، برای سالاد و خورشو اینا از کاسه های مخصوصشون و ...خب ، امیدوارم که تا اینجا منظور بندرو گرفته باشین که چی میخوام بگم. دوستان ما دقیقا تو برنامه نویسی هم از همین قاعده اما به شکل دیگه و تو یه مکان دیگه ای استفاده میکنیم. داده ها و اطلاعاتی که ما تو کامپیوتر های شخصیمون ، موبایل ها و میشه گفت امروزه بسیاری از دیوایس های هوشمندی که براشون برنامه نویسی میکنیم ، شامل اعداد صحیح ، کاراکتر ها , اعداد اعشاری ، مقادیر 0 و 1 ، رشته ها و ... میشه. تمام این داده ها داخل کامپیوتر درون قطعه ای بنام ram ذخیره میشه ( حالا ram چی هستو چجوریه تو یه مقاله دیگه کامل براتون توضیح میدم ) . پس ram اینجا مثل اون یخچالی میمونه که میخوایم توش مواد غذایی رو ذخیره کنیم و داده هامون حکم همون مواد غذاییمون رو دارن. ما نمیتونیم داده هارو همینجوری داخل ram بریزیم و نگهشون داریم . حتما باید برای نگهداری هر داده ، یک ظرف مخصوص به خودشو یا بهتره بگم نوع داده ای مخصوص خودشو استفاده کنیم. اینجاست که کاربرد data type ها برامون مشخص میشه.مثلا ما برای ذخیره داده ای از نوع اعداد صحیح باید حتما ظرف یا نوع داده ای رو استفاده کنیم که قابلیت اینو داشته باشه که عدد صحیح رو تو خودش نگه داره ( تو مثال بالا مثلا ما نمیتونیم که دوغ رو داخل بشقاب بریزیم و نگه داریم و عملا کار احمقانه ای هستش :/ ) و نوع داده ای که این قابلیت رو داشته باشه ، نوع داده ایه int یا همون integer هست که قابلیت نگه داری عدد صحیح رو برامون داره. یا مثلا برای ذخیره اعداد اعشاری از نوع داده ای float استفاده میکنیم چون float هست که امکان نگهداری عدد اعشاریو تو ram داره . بسیار خوب. حالا ما تو دنیای واقعی وقتی مواد غذاییمونو تو یخچال میزاریم ، از روی رنگو شکلو شمایل اون شی میتونیم تشخیص بدیم که مثلا این قیمه هست ، اون یکی سالاده و ... ولی تو برنامه نویسی برای این که بخوایم تشخیص بدیم که هر کدوم از داده هایی که ذخیره شدن چی هستنو کاربردشون تو برنامه چیه ، یک اسم رو بهشون نسبت میدیم که بهش میگن نام اون داده یا نام متغیر. اینجوری میتونیم بفهمیم که هر داده چی هستو کجا استفاده میشه و کاربردش چیه.به طور کلی هم ، معمولا تو زبان های برنامه نویسی مثل C++ , C#, java این شکلی داده هارو تعریف میکنن و استفاده میکنن :خب دوستان به آخر بخش اول این مقاله رسیدیم . اگر بیشتر از این توضیح میدادم مقاله زیاد میشد و هم زمان بر میشد خوندنش هم ممکن بود یکم سخت بشه درکش ، برای همین تو دو بخش تصمیم گرفتم مقالرو خدمتتون اراعه بدم. از این که صبرو حوصله کردین و بخش اول مقالرو به اتمام رسوندین تشکر میکنم ازتون و امیدوارم که تونسته باشم کمکی بهتون کرده باشم. موفق و پیروز باشید.</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Fri, 28 Feb 2020 12:17:55 +0330</pubDate>
            </item>
                    <item>
                <title>زبان های ذخیره داده SQL و NoSQL و تفاوتشون</title>
                <link>https://virgool.io/semilearn/%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-sql-%D9%88-nosql-%D9%88-%D8%AA%D9%81%D8%A7%D9%88%D8%AA%D8%B4%D9%88%D9%86-wdvkvqhnrvz9</link>
                <description>تفاوت زبان های ذخیره داده SQL و NoSQL :شاید برای شما هم این سوال پیش بیاد که تفاوت SQL و NoSQL چیه و هر کدوم چه کاربردی داره. تو این مقاله کوتاه ، کامل براتون میگم که متوجه شید داستان از چه قراره. برای درک بهتر ، بزارین اول یه تعریف کوچیکی از هر کدوم بگم :SQL DataBaseزبان های SQL :خود کلمه SQL مخفف 3 لغت Structured Query Language هست که به معنی زبان کوعری ساخت یافته هستش. یعنی شما با نوشتن یکسری دستورات که به کوعری معروف هستن ، میتونین روی داده های ذخیره شده خودتون پردازش هاییو انجام بدید. منظور از ساخت یافته یعنی این که شما فقط قادر به ذخیره داده های مشخصی هستین که نوع اون ها مشخص باشه ( مثلا اعداد صحیح ، کاراکتر های الفبا ، اعداد اعشاری ، مقادیر 0 و 1 ، .... ) . داده ها به صورت اطلاعاتی درون جدول ها ، ستون ها و سطر ها ذخیره میشن. به طوری که هر سطر ، رشته داده ای از ورودی و خروجی ، هر ستون ، یک خصوصیت یا شاخص و هر جدول ، مجموعه ای از اطلاعات با خصوصیات مشترک هست.  خیلی ساده بخوام براتون بگم ، زبان های ذخیره داده SQL ، زبان هایی سفت و سخت هستن و محدودت هایی رو برای خودشون دارن و چون پردازش های پیچیده ای رو برای ذخیره سازی داده ها انجام میدن ، در مواقعی که بخواین رو تعداد بسیار بالایی داده پردازش انجام بدین ، سرعت و پرفرمنس سیستم تا مقدار قابل توجهی کاهش پیدا میکنه و حتی بعضی مواقع نمیتونه جواب گو باشه.NoSQL DataBaseزبان های NoSQL :میشه گفت زبان های NoSQL دقیقا نقطه مقابل زبان های SQL هستش. اینجا دیگه خبری از ساخت یافته بودن داده ها نیست و شما هر نوع داده با هر شکلی رو میتونین به راحتی ذخیره کنین. همچنین خبری از نوشتن کوعری برای پردازش رو داده ها نیست و به شکل خیلی ساده تری میشه رو داده ها مدیریت داشت. کاربرد این نوع ذخیره داده معمولا رو تعداد بسیار زیادی داده هستش و معمولا برای مدیریت Big Data ها و موتور های جستجو گری مثل گوگل استفاده میشه. مدیریت بر روی ابر داده ها در NoSQL ساده هستش و معمولا به صورت xml , json , ... داده ها ذخیره میشن.از این رو چون هم نیاز به پردازش کوعری و هم ساخت یافته نبودن زبان های NoSQL هست پس نتیجه میگیریم از سرعت بسیار بالاتری نسبت به زبان های SQL برخوردار هست.نتیجه گیری:تا اینجا شاید نتیجه گرفته باشید که NoSQL خب به مراتب بهتر از SQL هست ، پس باید از SQL به NoSQL مهاجرت کرد. اما باید بگم که در اشتباه هستید. درسته که NoSQL نسبت به SQL راحت تر و پر سرعت تر هست ولی سخت گیری های SQL و ساخت یافته بودنش هم بی دلیل نیست . زبان SQL از دقت و امنیت بسیار بالایی برای کار با داده ها برخورداره و برای سیستم هایی که داده های ساخت یافته سرکار دارن بهترین گزینه هست. مانند سیستم های مدیریت سطح دسترسی ، دیتابیس های انواع سایت های فروشگاهی ، دیتابیس های نرم افزار های سازمانی ، سیستم های بانکی و تراکنشی و ...خب به پایان این مقاله میرسیم و امیدوارم که تونسته باشم اطلاعات مفیدی رو بهتون داده باشم. موفق باشید.</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Wed, 26 Feb 2020 22:57:55 +0330</pubDate>
            </item>
                    <item>
                <title>کاربرد و مفهوم HTML, CSS, JavaScript به زبان ساده</title>
                <link>https://virgool.io/semilearn/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D9%88-%D9%85%D9%81%D9%87%D9%88%D9%85-html-css-javascript-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-fe02l40s88qk</link>
                <description>سلام. امروز میخوام یبار برای همیشه به زبان ساده مفهوم HTML , CSS , JavaScript و همینطور کاربردشون رو برای شما علاقه مندان به طراحی صفحات وب عنوان کنم.تقریبا هر علاقه مند به طراح وب سایتی که تازه کار هست شاید اصلا ندونه که این مفاهیم چی هستنو کجا ها کاربرد دارن.همین اول بگم که HTML و CSS  به هیچ عنوان زبان برنامه نویسی یا حتی اسکریپت نویسی ( به جز JavaScript ) نیستند. بار ها و بار ها دیدم که افراد ( حتی بین خود برنامه نویسان ) به اشتباه مثلا میگن زبان برنامه نویسی HTML یا CSS که این واقعا فاجعست !!!!الان براتون سوال پیش اومده که اگر اینا زبان برنامه نویسی یا اسکریپت نویسی نیستن پس چین ؟!!به نکته خوبی اشاره کردین !! اینا در اصل زبان نشانه گزاری متن هستن. مثلا در HTML وقتی شما از تگ ها استفاده میکنین در اصل به مرورگر میفهمونین که فلان تغییراتو رو متنتون اعمال کنه. بزارین یه مثال براتون بزنم. فرض کنین که شما قصد تولید یک خودرو رو از روی نقشه ای که به شما دادنو دارید. اولین چیزی که از یک ماشین ساخته میشه اسکلت اون ماشینه که همون بدنه ماشین هست. ( بدون رنگ و تجهیزات داخلی و خارجی )تو طراحی وب هم دقیقا HTML معادل همین بدنه کلی ماشین هست. به عبارتی HTML یک ساختار کلی رو برای نمایش محتوای وب سایت شما تشکیل میدهد. توی مرحله بعد که دومین مرحله کلی از تولید ماشینمون هست ، نوبت به ساخت و نصب چراغ ها ، صندلی های داخل ، روکش و در کل تمامی تجهیزات ظاهری داخل و خارج و همینطور رنگ آمیزی ماشین هست.تمامی این ها در طراحی وب دقیقا معادل دستورات CSS هست. وقتی شما در صفحات وبتان از استایل دهی و CSS استفاده مکنین ، در حقیقت ظاهر وبسایتتان را زیباتر و جذابتر میکنید. ( منظور از استایل دهی هم اینه که مثلا رنگ پس زمینه سایتتون رو تغییر بدین ، یا رنگ متن سایتتونو یا مثلا یک المانی رو تغییر سایز بدین و اونو شخصی سازی کنین و ... )خب !! حالا تا این مرحله ماشین شما از لحاظ ظاهری کامل و زیبا شده. فکر کنین ماشینی با رنگ بدنه قرمز و ظاهری اسپرتو تیونینگ شده داریم . ولی این فقط ظاهر هست و ماشین ما اصلا نه استارت میخوره ، نه روشن میشه و نه حرکت میکنه !!! پس مرحله آخر نوبت به طراحی و نصب تجهیزاتی از ماشین هست که اولا باعث پویایی و اصطلاحا داینامیکی ماشین میشه ، دوما از نظر مردم و بیننده ها پنهان هست. این تجهیزات شامل : موتور ، گیرباکس ، سیستم تعلیق , سوخت رسانی و سیستم برق ماشین و ... میشه.ما در طراحی وب سایتمون هم دقیقا همین موضوع رو داریم. سایت ما از نظر ظاهری آماده هست ، ولی هیچ پویایی و عکس العمل خاصی رو در مقابل استفاده کاربر نشون نمیده. اینجا نوبت میرسه بالاخره به استفاده از JavaScript .JavaScript یک زبان برنامه نویسی اسکریپتی است که تفسیر و اجرای این زبان بر عهده مرورگر هست. یعنی توسط این زبان میتونیم به انجین مرورگر بفهمونیم که این صفحه HTML CSS ما رو چطوری نمایش بده و چه واکنش هایو از خودش در مقابل هر رویداد عملی کاربر ( مثل کلیک کردن ، تایپ کردن ، ... ) نشون بده.به طور کلی تا اینجا ما با 3 رکن اساسی و اصلی طراحی تمامی صفحات وب آشنا شدیمو فهمیدیم که اصلا HTML , CSS , JavaScript چی هستنو به چه دردی میخورن. کسی که قصد طراحی عالی و کابرپسند صفحات وب رو داره حتما باید به تمامی مفاههیم این 3 زبان کامل مسلط باشه. در آخر هم ممنون که وقت گذاشتین برای مطالعه این مقاله و امیدوارم که تونسته باشم تو این زمینه کمکی کرده باشم . اگر دوست داشتین منو دنبال کنین که بقیه مقاله هاییو که در آینده مینویسمو بخونین ; )</description>
                <category>امیرحسین قربانی</category>
                <author>امیرحسین قربانی</author>
                <pubDate>Sat, 16 Nov 2019 20:19:07 +0330</pubDate>
            </item>
            </channel>
</rss>