<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرحسین رواقی</title>
        <link>https://virgool.io/feed/@amirhravaghi</link>
        <description>دانشجوی کارشناسی نرم افزار - برنامه نویس php - توسعه دهنده وب - عضو تیم مدیریت سمی لرن - آهنگساز و پیانیست</description>
        <language>fa</language>
        <pubDate>2026-04-14 18:37:41</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/47554/avatar/v1BS2q.png?height=120&amp;width=120</url>
            <title>امیرحسین رواقی</title>
            <link>https://virgool.io/@amirhravaghi</link>
        </image>

                    <item>
                <title>۵ وبسایت که برنامه نویسان باید بشناسند</title>
                <link>https://virgool.io/@amirhravaghi/%DB%B5-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-%DA%A9%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%B4%D9%86%D8%A7%D8%B3%D9%86%D8%AF-eazxrxm3c74x</link>
                <description>در دنیای اینترنت، وبسایت های کاربردی بسیار زیادی وجود دارند که میتوانند در حوزه ها و حرفه های مختلف کمک شایانی به متخصصین کنند. در این مقاله میخواهیم به سراغ پنج وبسایت کاربردی برویم که برای برنامه نویسان بسیار کارآمد و حتی در بعضی موارد حیاتی هستند.ادامه مطالعه در بلاگ سمی لرن:https://semilearn.com/blog/post/24/</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Mon, 04 Jan 2021 16:00:03 +0330</pubDate>
            </item>
                    <item>
                <title>جاوااسکریپت یاد بگیرم؟</title>
                <link>https://virgool.io/@amirhravaghi/%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%D9%85-bthiexjhogkx</link>
                <description>دنیای برنامه نویسی پر از بالا و پایین های مختلف است. هر چند وقت یکبار، زبان های جدیدی روی بورس می آیند و زبان هایی هم افول میکنند. یکی از زبان هایی که چند سالی است به طور شگفت آوری در حال رشد بوده، زبان قدرتمند جاوااسکریپت است که با توجه به وضعیت حال حاضر این زبان و مسیر رشد آن، به نظر نمیرسد قصد افول داشته باشد.اما چرا؟ بیایید اول کمی با این زبان آشنا شویم.مطالعه کامل مقاله در:صفحه مقاله در وبلاگ سمی لرن</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Mon, 28 Dec 2020 15:07:01 +0330</pubDate>
            </item>
                    <item>
                <title>وردپرس (wordpress) چیست؟</title>
                <link>https://virgool.io/wptips/%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-wordpress-%DA%86%DB%8C%D8%B3%D8%AA-sgmmvgwy9dnt</link>
                <description>امروزه وقتی به دنبال سفارش طراحی وبسایت ها برویم، مدام با این عبارت برخورد میکنیم: وردپرس. اما وردپرس چیست و چگونه توانست جایگاه مناسبی در توسعه وبسایت ها پیدا کند؟وردپرس، در واقع محبوب ترین سیستم مدیریت محتوا یا همان CMS در دنیا می باشد. برای اینکه با CMSها آشنا شوید میتوانید مقاله دیگری از بنده را در این مورد مطالعه فرمایید:https://bit.ly/2Ld6euZ https://virgool.io/@amirhravaghi/%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%85%D8%AD%D8%AA%D9%88%D8%A7-cms-%DA%86%DB%8C%D8%B3%D8%AA-e08vzsekc2lj برخی از برنامه نویسان ناآشنا با وردپرس در دید اول تصوری مانند وبسایت wix.com را در سر دارند. نرم افزاری که با چند drag و کلیک به شما یک وبسایت زیبا تحویل میدهد. اما این تصور کاملا اشتباه است.با اینکه وردپرس به سادگی شهرت دارد اما همچنان نیاز به مهارت ها و دانش های پایه برای پیاده سازی وبسایت دارد و از طرف دیگر بخاطر منبع باز بودن آن، به راحتی قابل تغییر توسط برنامه نویسان مسلط به php می باشد.اما عملکرد وردپرس چگونه است؟برای کار با وردپرس در ابتدا باید این موضوع را مد نظر داشت که وردپرس مانند یک نرم افزار و اپلیکیشن ویندوزی به شما یک فایل نصبی و اجرایی نمیدهد تا با یک کلیک ساده آن را نصب کنید. هنگامی که شما وردپرس را دانلود کرده و از حالت فشرده خارج کنید با تعداد زیادی اسکریپت php رو به رو خواهید شد که در تصویر زیر میتوانید تعدادی از آن ها را مشاهده کنید.فایل های اصلی در دایرکتوری وردپرسهمانطور که مشاهده میکنید در این دایرکتوری هیچ فایل اجرایی برای نصب وردپرس وجود ندارد و اگر بخواهیم ساده تر به تعریف وردپرس بپردازیم میتوان آن را اینگونه بیان کرد:وردپرس وبسایت آماده ای است که قابلیت ویرایش و تغییرات بسیار بالایی داردپس در واقع فایل ها و اسکریپت هایی که در فایل فشرده دانلودی خود مشاهده میکنید، کدهای اصلی وبسایت شما خواهند بود و تنظیمات اصلی وبسایت شما برای اتصال به دیتابیس و مسائل دیگر در فایل wp-config.php انجام خواهد شد.هنگامی که شما وردپرس را در یک دایرکتوری در سرور خود و یا شبیه ساز سرور مانند xampp قرار میدهید و آن را از طریق مرورگر اجرا میکنید، صفحه ای باز میشود و وردپرس اطلاع پایه وبسایت شما مانند نام، توضیحات، یوزرنیم ادمین و پسوورد و یک ایمیل را دریافت میکند و پس از آن تمام. وبسایت اولیه شما آماده است. کافی است آدرس مورد نظر را در مرورگر وارد کرده و صفحه وبسایت خود را مشاهده کنید. برای مثال چنین صفحه ای برای شما لود میشود:پس از آن، تنها کاری که نیاز است انجام دهید، ویرایش این وبسایت تا رساندن آن به وبسایت مورد نظر خودتان است. برای اینکار شما نیاز دارید تا به پنل مدیریت وبسایتتان دسترسی پیدا کنید. آدرس پیش فرض پنل مدیریت وبسایت های وردپرسی به صورت زیر استhttps://yourdomain.exp/wp-adminو شکل پنل مدیریت وبسایت وردپرسی شما نیز به شکل زیر است:همانطور که مشاهده میکنید پنل مدیریت وردپرس بسیار کاربر پسند یا user friendly می باشد و به نظر ساده می آید.از آنجایی که در این مقاله ما قصد آموزش وردپرس را نداریم، فقط به توضیحات دو بخش اصلی در هر وبسایت وردپرسی می پردازیم که از پنل به راحتی قابل دسترس هستند:افزونه ها(plugins): افزونه ها یا همان پلاگین ها در واقع کدهای آماده ای هستند که برنامه نویسان مختلف آن ها را نوشته و برای استفاده توسعه دهندگان وبسایت آماده کرده اند. امروزه تعداد افزونه های وردپرس به شدت افزایش پیدا کرده و روز به روز نیز بیشتر میشود. برای مثال میتوان به افزونه ultimate member اشاره کرد. شما با نصب این افزونه و چند کلیک ساده میتوانید سیستم مدیریت کاربران را در وبسایتتان راه اندازی کنید (ثبت نام و عضویت، پنل کاربری و...). و به همین شکل تقریبا برای هر عملکردی امروزه افزونه های زیادی وجود دارد.پوسته ها(templates): پوسته ها یا همان قالب های وردپرس در واقع رابط های کاربری آماده و از پیش طراحی شده ای هستند که صرفا برای وبسایت های وردپرسی آماده شده اند. نصب این پوسته ها از طریق پنل به راحتی قابل انجام است. هر پوسته تنظیمات مختلفی دارد که پس از نصب در پنل مدیریت ظاهر میشوند.برخی از وبسایت های معروف وردپرسیطبق آمار W3Techs در حال حاضر 34 درصد از وبسایت های جهان بر مبنای وردپرس پیاده شده اند. از معروف ترین این وبسایت ها در داخل ایران و سطح بین الملل میتوان به موارد زیر اشاره کرد:دیجیکالا مگمیزبان فاانگری بردزبی بی سی آمریکاکلام آخردر نهایت میتوان گفت وردپرس نیز یکی از راه های طراحی وبسایت است که میتواند صرفه اقتصادی زیادی برای مشاغل داشته باشد.حتی برای طراحان وبسایت. زیرا کاهش زمان پیاده سازی یک وبسایت باعث ایجاد زمانی بیشتر برای دریافت پروژه های بیشتر می باشد.. البته باید این موضوع را در نظر گرفت که وردپرس برای پیاده سازی وبسایت های خیلی حرفه ای طراحی نشده است.دانلود وردپرس فارسیوردپرس فارسی را میتوان از وبسایت اصلی وردپرس دانلود نمود: http://wp-persian.com/download/ ممنون از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Sun, 01 Dec 2019 18:22:28 +0330</pubDate>
            </item>
                    <item>
                <title>مک آدرس (MAC Address) چیست؟</title>
                <link>https://virgool.io/semilearn/%D9%85%DA%A9-%D8%A2%D8%AF%D8%B1%D8%B3-mac-address-%DA%86%DB%8C%D8%B3%D8%AA-uldegmhphjcv</link>
                <description>آدرس مک یا MAC Address از عباراتی است که شاید زیاد به گوش شما خورده باشد. از پنل های مودم تا پشت سخت افزار های مختلف مرتبط با شبکه. اما مک آدرس چیست؟مک (MAC)، مخفف عبارت Media Access Control یا کنترل دسترسی رسانه (مدیا) می باشد. آدرس مک، در واقع کدی است، که به عنوان یک آدرس برای برای لایه MAC شناخته می شود. اما این تعریف در لحظه کمی سخت به نظر میرسد.اگر بخواهیم ساده تر به تعریف MAC Address بپردازیم، میتوانیم آن را به شکل زیر تعریف کنیم:مک آدرس، شناسه ای انحصاری برای هر نود شبکه، در تکنولوژی های شبکه ای IEEE 802 مانند Ethernet, Wi-fi و بلوتوث می باشد.مک آدرس شناسه ای سخت افزاری است و برخلاف IP غیر قابل تغییر است. این آدرس در زمان تولید هر NIC یا Network Interface Controller (کارت های شبکه) برای آن قطعه ثبت می شود و تغییر نمیکند. هر کارت شبکه یک آدرس منحصر به فرد برای خود دارد و در صورتی که سیستم شما شامل بیش از یک کارت شبکه باشد، هر NIC یک مک آدرس مختص به خود دارد.کاربرد مک آدرسمک آدرس، آدرسی است که کارت های شبکه جهت شناسایی همدیگر در شبکه از آن استفاده میکنند. هنگامی که دستگاه های مختلف شما از طریق هاب یا سوییچ و یا هر طریق دیگری به هم متصل میشوند، شبکه دستگاه های مختلف را تنها از طریق شناسه MAC Address میشناسد. برای مثال اگر از مودم برای اینترنت خود استفاده میکنید، میتوانید همین الان از طریق آدرس 192.168.1.1 به پنل مدیریت مودم خود دسترسی پیدا کنید و از بخش وای فای، دستگاه های متصل را پیدا کنید. متوجه خواهید شد که دستگاه ها با شناسه های MAC Address لیست شده اند.ساختار آدرس مکآدرس مک، شامل 6 جفت عدد هکزادسیمال می باشد. این شش جفت عدد به وسیله (-)،(:)،(.) و یا space از هم جدا شده اند. البته این مسئله همه جا صدق نمیکند و در بسیاری از موارد این 6 جفت عدد از همدیگر جدا نشده اند.00:00:0A:BB:28:FCدر مثال بالا میتوانید یک آدرس مک را ببینید.یک آدرس مک به صورت کلی از دو بخش تشکیل میشود. سه جفت عدد سمت چپ را با عنوان OUI یا Organizationally Unique Identifier می شناسند. این بخش در تمام قطعات ساخته شده توسط یک کمپانی به خصوص یکسان است و در واقع این بخش نشان دهنده کمپانی تولید کننده است. بنابراین این 3 جفت عدد در آدرس مک تمامی محصولات این شرکت به صورت یکسان وجود دارد. برای مثال، اعداد زیر نشان دهنده محصولات شرکت سیسکو می باشد00-40-96بخش دوم که شامل 3 جفت عدد بعدی می شود، شناسه منحصر به فرد آن قطعه می باشد.چگونه آدرس مک خود را پیدا کنیم؟شاید مایل باشید بدانید که آدرس مک سیستم در حال استفاده شما چیست. برای پیدا کردن آدرس مک خود کافی است مراحل زیر را انجام دهید:ویندوز1. وارد Command prompt شوید (در منوی استارت CMD را جستجو کنید)2. در خط فرمان، فرمان ipconfig/all را وارد کنید. این فرمان اطلاعات کارت های شبکه شما را نشان میدهد.3. در زیر هر کدام از کارت های شبکه میتوانید آدرس مک آن را تحت عنوان Physical Address پیدا کنید.لینوکس1. وارد Terminal شوید2. با استفاده از فرمان ifconfig -a اطلاعات کارت های شبکه را پیدا کنید. (به عنوان root فرمان را وارد کنید)3. در زیر هر کدام از کارت های شبکه میتوانید آدرس مک آن را تحت عنوان HWaddr پیدا کنید.با تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Sat, 16 Nov 2019 15:11:51 +0330</pubDate>
            </item>
                    <item>
                <title>رابط کاربری و اهمیت آن</title>
                <link>https://virgool.io/@amirhravaghi/%D8%B1%D8%A7%D8%A8%D8%B7-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-%D9%88-%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D8%A2%D9%86-nufgydfjkmq5</link>
                <description>بنده به عنوان یک برنامه نویس بک اند، خود را در سطحی نمیدانم که بخواهم در ارتباط با رابط کاربری مقاله بنویسم. اما میخواهم در این مقاله چند نصیحت ساده داشته باشم.بسیاری از ما روزانه با اپلیکیشن های مختلفی سر و کار داریم. اپلیکیشن هایی که تجربه های خوب و بدی را برای ما رقم میزنند. رابط کاربری، اولین فاکتور ایجاد یک تجربه خوب برای کاربر است.علت اصلی شکست بسیاری از پروژه ها که شاید میتوانستند موفقیت زیادی کسب کنند، ضعف در رابط کاربری آن ها بود و بسیاری از پروژه ها، رابط کاربری خود را به عنوان یکی از اصلی ترین فاکتور های موفقیت خود معرفی میکنند. اما متاسفانه بسیاری از مدیران کسب و کار ها از اهمیت رابط کاربری بی اطلاعند. قبل از اینکه بخواهیم مستقیما به اهمیت رابط کاربری بپردازیم، ابتدا باید با دو تعریف اصلی آشنا شویم.رابط کاربری یا User Interface یا به اختصار UIرابط کاربری، همانطور که از نام آن مشخص است، رابطی برای ارتباط کاربر با ارائه دهنده خدمات است. این خدمات ممکن است از هر نوعی باشند. رابط کاربری محصول نهایی ظاهری یک اپلیکیشن یا یک وبسایت است. رابط کاربری شامل کنار هم قرار گرفتن کوچک ترین اجزا در صفحه می باشد. از تک تک فاصله های موجود در صفحه تا هر نوع دکمه با هر نوع طرح و انیمیشنی.برنامه نویس رابط کاربری، باید با اصول مختلفی آشنا باشد که برخی از آن ها شامل: طراحی های ویژوال، تسلط به رنگ ها و تاثیرات آن ها، طراحی گرافیکی، تایپوگرافی و... می باشند.تجربه کاربری یا User Experience یا به اختصار UXبسیاری تفاوت رابط کاربری و تجربه کاربری را نمیدانند. در صورتی که این دو حوزه کاملا تخصص های مجزایی هستند. تجربه کاربری مربوط به ایجاد یک تجربه مثبت و مفید برای کاربر است. مهندسین تجربه کاربری باید با مطالعه بر روی کاربران و بررسی روش های مختلف ارتباطی و... طرح هایی تحت عنوان Wireframe ایجاد کنند و نمونه سازی های اولیه ای از محل قرار گیری تک تک المان های موجود در صفحه ارائه دهند.برای مثال یک مهندس تجربه کاربری برای کار با اپلیکیشن، محل دکمه ها را در جایی قرار میدهد که انگشت راحت ترین حالت را داشته باشد و در عین حال طراحی با اصول حرفه ای مطابقت داشته باشد.در نهایت پیاده سازی طرح های ارائه شده توسط متخصص UX و روح بخشیدن به آن وظیفه برنامه نویسان UI است.تصویر زیر یکی از معروف ترین تصاویر در توصیف رابط کاربری و تجربه کاربری است.اما واقعا رابط کاربری اهمیت بالایی دارد؟پاسخ این سوال کاملا واضح است. اپلیکیشن ها و خدماتی که نتوانند رابط کاربری مناسبی را ایجاد کنند، ممکن است رقابت را به خیلی از رقیبان ضعیف تر از خود ببازند.برای مثال تصویر زیر را در نظر بگیرید. تصویر سمت راست ممکن است خدمات ضعیف تری را ارائه دهد اما به واسطه رابط کاربری قدرتمندی که دارد، کاربر، آن را به رقیب قدرتمند تر خود در ارائه خدمت ترجیه میدهد.رابط کاربری قدرتمند، مسائل مختلفی را تحت نظر میگیرد. اصلی ترین موضوعی که باید در نظر داشته باشید این است که کاربر هیچ ارتباط مستقیمی با سیستم های بک اند ندارد و تنها چیزی که میبیند و میتواند با آن کار کند رابط کاربری است. پس رابط کاربری مانند دکور مغازه شما می باشد. هر گونه ضعف در آن برابر است با دور کردن کاربران از خودتان.همچنین رابط کاربری با استفاده از رنگ ها و ترکیبات آن ها و همچنین استفاده به جا از عبارات مناسب و... میتواند تاثیر روانشناسی قدرتمندی نیز بر روی کاربر بگذارد.برای مثال میتوانیم به وبسایت آل دیجیتال اشاره کنیم. رنگ بندی این وبسایت حس تیره و افسرده ای دارد و به صورت کلی، المان های سایت به صورت کلاسیک طراحی شده اند که نوعی حس قدیمی را ایجاد میکند (تجربیات و تاثیرات شخصی)اما در مقابل میتوان به وبسایت دیجی کالا اشاره کرد که از نظر رابط کاربری در سطح قدرتمندی قرار دارد. این وبسایت با استفاده از رنگ های روشن تر و بررسی تاثیرات رنگی آن ها و همچنین استفاده از طراحی مدرن توانسته فضایی به روز و مناسب برای خرید را ایجاد کند.حال اگر هر دوی این فروشگاه ها خدماتی در سطح یکسان ارائه کنند، شما ترجیه میدهید از کدام خرید کنید؟</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Fri, 11 Oct 2019 19:35:55 +0330</pubDate>
            </item>
                    <item>
                <title>معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش سوم)</title>
                <link>https://virgool.io/semilearn/%D9%85%D8%B9%D9%86%DB%8C-%D8%A8%D8%B1%D8%AE%DB%8C-%D8%A7%D8%B2-%D9%BE%D8%B1%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D8%A8%D8%AE%D8%B4-%D8%B3%D9%88%D9%85-uubne2gmcu5k</link>
                <description>در دو بخش قبلی این سری مقاله به برخی از اصطلاحات پرداختیم و با آن ها آشنا شدیم. با توجه به اینکه وب و اینترنت نقش کلیدی در توسعه های نرم افزاری دارند، در این مقاله قصد داریم به برخی مفاهیم تحت وب اشاره کنیم. دو بخش دیگر مقاله را میتوانید با استفاده از لینک های زیر مطالعه بفرمایید.معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش اول)معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش دوم)هایپرتکست (Hypertext). هایپرتکست یا ابرمتن نوعی فرمت خاص برای متن می باشد که صفحات وب را ایجاد میکنند. هایپرتکست پایه اصلی وب می باشد و توسط تیم برنرز لی معرفی شد. تمامی صفحات وب در پشت صحنه خود فقط اسناد هایپرتکست هستند.اچ تی ام ال (html). اچ تی ام ال نامی است که عمده برنامه نویسان با آن آشنا هستند. هنگامی که اسناد هایپرتکست برای ایجاد صفحات وب به وجود آمد، نیاز به ایجاد زبانی برای توسعه این اسناد و صفحات نیز احساس شد که باعث خلق html شد. html مخفف عبارت Hypertext Markup Language یا زبان نشانه گذاری ابرمتن می باشد.اچ تی تی پی (http). اچ تی تی پی لفظی است که تقریبا همه آن را دیده اند. در پشت آدرس ها و لینک ها دیده میشود. اما اچ تی تی پی چیست؟ همانطور که گفتیم هایپرتکست پایه اصلی وب می باشد و تمامی ارتباطات در وب از طریق ارسال درخواست و دریافت پاسخ می باشد. این درخواست ها و پاسخ ها همگی از نوع هایپرتکست هستند. http مخفف عبارت Hypertext transfer protocol یا پروتکل انتقال ابرمتن می باشد و در واقع پروتکلی است که ایجاد شده تا از طریق آن درخواست های هایپرتکست ارسال شوند.اچ تی تی پی اس (https). اچ تی تی پی اس، مخفف عبارت Hypertext transfer protocol secure می باشد که پروتکل امن تری نسبت به http می باشد. به تازگی مرورگرها سایت هایی که از پروتکل https استفاده نمیکنند را ناامن معرفی میکنند.آی پی (ip). آی پی نیز به خودی خود مفهوم گسترده ای دارد منتهی اگر بخواهیم ساده به آن بپردازیم میتوانیم این تعریف را برای آن داشته باشیم. هر سیستم و دستگاهی که به اینترنت و یا هر شبکه کوچک یا بزرگی متصل باشد، دارای که شماره انحصاری است که به وسیله آن در دسترس شبکه و نود های آن قرار میگیرد. آی پی تغییر پذیر است اما هنگامی که سیستمی از یک آی پی استفاده میکند، در آن شبکه هیچ سیستم دیگری نمیتواند آی پی مشابه آن داشته باشد.به پایان این بخش از مقاله رسیدیم. اگر میخواهید اطلاعات دقیق تری در مورد مفاهیم وب به دست آورید، میتوانید به آموزش های شبکه سر بزنید.با تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Tue, 06 Aug 2019 14:05:44 +0430</pubDate>
            </item>
                    <item>
                <title>معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش دوم)</title>
                <link>https://virgool.io/semilearn/%D9%85%D8%B9%D9%86%DB%8C-%D8%A8%D8%B1%D8%AE%DB%8C-%D8%A7%D8%B2-%D9%BE%D8%B1%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-bwfzdn20y6ja</link>
                <description>در بخش اول مقاله به برخی از اصطلاحات مانند بک اند، فرانت اند، فول استک، کامپایلر و... پرداختیم. حال میخواهیم به اصطلاحات دیگری بپردازیم و این مقاله را گسترش دهیم. بخش اول مقاله را میتوانید در لینک زیر پیدا کنید.معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش اول)در این بخش میخواهیم به اصطلاحات شاید کمی تخصصی تر نیز بپردازیم.یو آی (UI). اصطلاح UI مخفف عبارت User Interface یا به فارسی، رابط کاربری می باشد. همانطور که از نام آن مشخص است، UI بخشی از طراحی فرانت اند است که در بخش قبل به آن پرداختیم. رابط کاربری در واقع ظاهر یک سیستم است. به صورت کمی تخصصی تر، ظاهر یک سیستم در واقع رابطی برای کاربر است تا بتواند از طریق آن با سیستم ارتباط برقرار کند. ظاهر یک سایت یا یک اپلیکیشن مثال هایی برای رابط کاربری هستند. البته رابط کاربری در بخش های بیشتری نیز استفاده میشود. ساعت های هوشمند، تلویزیون های هوشمند، سیستم های هوشمند خودروها و... همگی نیاز به طراحی UI دارند.یو ایکس (UX). اصطلاح UX مخفف عبارت User Experience یا به فارسی، تجربه کاربری می باشد. وظیفه یک مهندس تجربه کاربری ایجاد طرحی است که بعد از پیاده سازی آن و استفاده، کاربر بتواند مناسب ترین و بهترین تجربه استفاده از آن سیستم را داشته باشد. برای مثال میتوان به تصویر زیر اشاره کرد. در تصویر زیر نشان داده شده که منوی همبرگری برای صفحه سایت در مرورگر موبایل ها و صفحه های کوچک راحتی و تجربه بهتری را برای کاربر ایجاد میکند تا منوی معمولی.منبع باز (Open-source). اصطلاح منبع باز یا اوپن سورس یکی از اصطلاحاتی است که خیلی زیاد آن را میشنویم. این اصطلاح به این معناست که سورس کد های نوشته شده برای یک سیستم مانند یک اپلیکیشن به صورت کامل برای ساخت سیستم های مبتنی بر آن ها و یا ایجاد نسخه های خاص و متفاوت در دسترس عموم قرار دارد. برای مثال میتوان به سورس کد اپلیکیشن تلگرام یا کتابخانه جی کوئری اشاره کرد که به راحتی از طریق سایت هایی مانند Github در دسترس هستند.هاست (host). مطمئنا یکی از پرکاربرد ترین اصطلاحاتی که میشنویم هاست یا میزبان است. معنی و کاربرد این مورد را عموما میدانند اما بد نیست اینجا نیز به آن اشاره شود. هاست یا میزبان سرویسی است که به شما اجازه میدهد نرم افزار و یا اپلیکیشن های تحت وب را در بستر اینترنت پیاده کنید. این وب اپلیکیشن ها و نرم افزار ها میتوانند یک سایت باشند یا یک ربات تلگرامی و یا ... . هنگامی که شما یک سرویس هاست خریداری میکنید به شما یک پنل مدیریت هاست داده میشود که با استفاده از آن به راحتی میتوانید فضای اختصاص داده شده را مدیریت کنید.دامنه (Domain). وقتی صحبت از هاست میشود، حتما نام دامنه هم دیده میشود. دامنه ها به زبان ساده آدرس هایی هستند که به یک فضای اینترنتی مانند هاست و یا یک سرور کامل اختصاص داده میشوند تا بتوان از طریق های مختلف به این فضاها دسترسی پیدا کرد و با آن ها ارتباط برقرار کرد. برای مثال برای دسترسی به سرور های گوگل و استفاده از سرویس های آن، شما از دامنه www.google.com استفاده میکنید. این دامنه مانند یک آدرس شما را به سرور یا هاست مورد نظر اتصال میدهد.اس اس ال (SSL). اس اس ال (SSL)  مخفف عبارت Secure Sockets Layer یا به فارسی، لایه سوکت های ایمن می باشد. اس اس ال نوعی تکنولوژی استاندارد برای ایمن سازی ارتباطات اینترنتی است. در صورت خرید گواهی نامه SSL شما میتوانید دامنه و سرویس هاست یا سرور خود را به پروتکل HTTPS مجهز کنید که در حال حاضر اهمیت نسبتا بالایی در مباحث امنیتی دارد.بسیار خب. این هم از برخی اصطلاحات دیگر از دنیای کامپیوتر. در بخش سوم این سری مقالات به مفاهیم جدیدتری به خصوص مفاهیم تحت وب خواهیم پرداختممنون از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Wed, 31 Jul 2019 22:55:05 +0430</pubDate>
            </item>
                    <item>
                <title>معنی برخی از پرکاربرد ترین اصطلاحات دنیای کامپیوتر (بخش اول)</title>
                <link>https://virgool.io/semilearn/%D9%85%D8%B9%D9%86%DB%8C-%D8%A8%D8%B1%D8%AE%DB%8C-%D8%A7%D8%B2-%D9%BE%D8%B1%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-izctimwdhkoi</link>
                <description>در این مقاله قصد دارم تا به چندتا از اصطلاحات پرکاربرد کامپیوتر و برنامه نویسی بپردازم. این اصطلاحات عموما خیلی پرکاربردند اما برخی از آن هارا نمیتوان از ظاهرشان فهمید. - دولوپر (developer): شاید کم تر کسی باشد در دنیای کامپیوتر که این لفظ را نشناسد. دولوپر معادل انگلیسی توسعه دهنده می باشد و بر شخص یا اشخاصی اشاره دارد که قصد توسعه یک سیستم یا مجموعه نرم افزارهایی برای پلتفرم خاصی را دارند. برای مثال: اندروید دولوپر به کسی میگویند که توسعه دهنده نرم افزارهایی تحت سیستم عامل اندروید است.- بک اند (back-end): منظور از بک اند، بخش هایی از یک نرم افزار یا سیستم است که توسط کاربران به صورت مستقیم قابل مشاهده نمی باشد. البته این تعریف عمدتا مربوط به توسعه وب و وبسایت می باشد و منظور از توسعه بک اند توسعه بخش های آنلاین و سمت سرور یک سیستم است. - فرانت اند (front-end): همانطور که از ظاهرش مشخص است این لفظ در کنار بک اند مکمل یکدیگرند. فرانت اند به بخش هایی از سیستم گفته میشود که به ارتباط مستقیم کاربر با سیستم برمیگردد. به صورت کلی به فرانت اند میتوان رابط کاربری نیز گفت اما فرانت اند شامل تعاریف کامل تری است. برای مثال ظاهر یک سایت یا اپلیکیشن را در بخش توسعه فرانت اند طراحی و پیاده میکنند. - فول استک (full-stack): شاید لفظ full stack developer را زیاد شنیده باشید. یک توسعه دهنده فول استک شخصی است که هم به مباحث فرانت اند آشنایی دارد (نه در حد خیلی تخصصی) و هم با یک یا چند زبان برنامه نویسی بک اند آشناست. به صورت کلی یک دولوپر فول استک میتواند به تنهایی یک سایت را کامل پیاده کند.  - آی دی ای (IDE): لفظ IDE مخفف عبارت integrated development environment می باشد و در فارسی به معنای محیط توسعه مجتمع می باشد. منتهی اگر بخواهیم به زبان ساده بیان کنیم به نرم افزاری که یک محیط برنامه نویسی کامل شامل مواردی مانند ویرایشگر (editor) و کامپایلر و... را برای برنامه نویس آماده میکند. برای مثال میتوان به Visual studio و Android studio اشاره کرد. - کامپایلر (compiler): تعریف کامپایلر و نحوه کار آن بحثی گسترده است اما اگر بخواهیم ساده بگوییم، کامپایلر نرم افزاری است که کد نوشته شده توسط برنامه نویس را اجرا میکند. با توجه به اینکه نگارش زبان های مختلف متفاوت است پس کامپایلر ها نیز متفاوت است. با توجه به اینکه کامپایلر تمام جزئیات را بررسی میکند اگر در برنامه ایراد نگارشی باشد ابرادات برنامه را اعلام میکند. (برخی زبان ها مانند python و php زبان های مفسری هستند و کامپایل نمیشوند) - سینتکس (syntax): هر زبان برنامه نویسی نوع نگارشی خاصی برای خود دارد. دستورات و عبارات مختلف به شکل های مختلفی پیاده میشوند. مثلا در c++ برای چاپ hello world از کد زیر استفاده میکنیم:cout&lt;&lt;&quot;hello world&quot;;در حالی که برای مثال در جاوا به این شکل پیاده میشود:System.Out.Println(&quot;hello world&quot;);نگارش خاص هر زبان را سینتکس آن زبان میگویند و ایرادات و ارور های ناشی از غلط های تایپی در طول برنامه و یا جا انداختن علامت های خاص تحت عنوان ارور های سینتکسی شناخته میشوند.پایان بخش اولبا تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Tue, 23 Jul 2019 14:00:27 +0430</pubDate>
            </item>
                    <item>
                <title>چه زبانی برای تخصص من لازم است؟ (بخش دوم)</title>
                <link>https://virgool.io/semilearn/%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%AE%D8%B5%D8%B5-%D9%85%D9%86-%D9%84%D8%A7%D8%B2%D9%85-%D8%A7%D8%B3%D8%AA-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-ypgvqutpilew</link>
                <description>در قسمت قبلی این مقاله، به مهارت های طراحی وبسایت و اپلیکیشن پرداختیم. در این بخش میخواهیم کمی به ساخت بازی های ویدیوئی نگاهی بی اندازیم. در لینک زیر میتوانید بخش اول مقاله را مطالعه بفرمایید.https://bit.ly/2YYeFPFساخت و توسعه بازی های ویدیوییموتور گرافیکی محبوب Unreal engineطراحی و توسعه بازی های ویدیویی یکی از مسائلی است که برای خیلی از مردم شاید ساده و سطحی جلوه کند اما به راحتی میتوان گفت یکی از خلاقانه ترین و پر زحمت ترین تخصص های دنیای کامپیوتر طراحی بازی های ویدیویی است.یک بازی ویدیویی (کنسولی - گوشی های هوشمند - PC) شامل تخصص های متعددی در درون خود میشود. اگر بخواهیم بعضی از این تخصص ها را نام ببریم میتوانیم به 1) نویسنده 2) گرافیست 3) طراح مراحل 4) طراح صدا 5) برنامه نویس و... اشاره کرد. پس اگر رویای ساخت بازی های بزرگ به صورت تک نفره را در سر دارید بهتر است همین الان این فکر را از سر خود بیرون کنید.اما ساخت بازی به صورت تک نفره نیز امکان پذیر است که البته شامل بازی هایی میشوند که از نظر فنی خیلی پیچیده نیستند. مانند بازی ایرانی 41148، بازی فراگیر و جذاب اما ساده. البته از این موضوع هم نباید بگذریم که برای این موضوع که بتوانیم به صورت تک نفره یک بازی را پیاده کنیم باید آگاهی مورد نیاز از بخش های مختلف مانند داستان پردازی، گرافیک، صداگذاری، برنامه نویسی و... را داشته باشیم.خب خیلی از اصل قضیه دور نشویم. میخواهیم تمرکزمان بر روی بخش های مرتبط به تخصص های کامپیوتری کار باشد نه صداسازی و طراحی مراحل و نویسندگی.در ابتدا باید بدانیم که یک بازی به چه شکل ساخته میشود. یک بازی ویدیویی پس از اتمام طراحی های پایه گرافیکی و ساخت آبجکت های مورد نیاز، وارد یک موتور بازی سازی میشود. حال سوال اینجاست که یک موتور بازی سازی چیست؟موتور های بازی سازی نرم افزار هایی هستند که یک محیط ویژوال و مناسب را جهت توسعه بازی فراهم میکنند. در این نرم افزار ها شما میتوانید بدون استفاده از کد خیلی از بخش ها را پیاده کنید. میتوانید توسط یک پنجره محیط بازی را مدام چک کنید و بازی را به راحتی اجرا کنید. در زیر سه تا از محبوب ترین موتور های ساخت بازی در سه سطح مختلف را بررسی میکنیم. موتور Unreal engine، Unity و Game maker studio.موتور Unreal. این موتور یکی از سطح بالاترین موتور های گرافیکی و بازی سازی می باشد که رایگان نیز میباشد و برای برنامه نویسی از زبان C++ پشتیبانی میکند. از معروف ترین بازی های ساخته شده با این موتور میتوان به Unreal tournament، Borderlands 2،Batman: Arkham city،Gears of war 3 و Bioshock اشاره کرد.موتور Unity. با اینکه این موتور پیشرفت های چشمگیری داشته اما همچنان در پایین آنریل انجین قرار میگیرد اما در هر صورت یکی از بهترین موتور های بازی سازی به خصوص برای توسعه بازی های اندرویدی می باشد. این موتور به شدت محبوب، بستر توسعه قوی ترین بازی های گوشی های هوشمند بوده است اما این موضوع دلیل نمیشود که این موتور توان پیاده سازی سطوح بالاتر را نداشته باشد. این موتور از زبان های C# و جاوااسکریپت پشتیبانی میکند. از محبوب ترین بازی های پیاده شده با این موتور میتوان به Dues Ex: The fall، Wasteland 2،Temple run و سری Shadow fight اشاره کرد.موتور GameMaker Studio. این موتور برای شروع بازی سازی بهترین انتخاب است. البته تمرکز این موتور تنها بر روی بازی های دو بعدی است و موتوری برای توسعه بازی های سه بعدی ندارد. گرچه کتابخانه هایی نوشته شده برای توسعه بازی های سه بعدی این موتور اما واقعا کار را پیچیده میکند. این موتور طوری طراحی شده که شما میتوانید بدون نوشتن حتی یک خط کد به راحتی یک بازی بسازید. البته این کار توصیه نمیشود چون بازی پیاده شده بدون کد گذشته از محدودیت هایش بسیار سطحی میشود. این موتور از یک زبان خود ساخته تحت عنوان (GML (Game maker language پشتیبانی میکند که زبان بسیار ساده ای می باشد و تنها چیزی که نیاز دارید داشتن منبع و آشنایی با مبانی برنامه نویسی است. از محبوب ترین بازی های پیاده سازی شده با این موتور میتوان به Hotline Miami و Undertale اشاره کرد.پس از تحقیق و بررسی فراوان و انتخاب موتور مورد نظر خود شما باید به رفرنس ها و آموزش هایی مراجعه کرده و کتابخانه های مورد نیاز برای برنامه نویسی بازی در آن موتور را بیاموزید.با تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Thu, 18 Jul 2019 17:18:38 +0430</pubDate>
            </item>
                    <item>
                <title>چه زبانی برای تخصص من لازم است؟ (بخش اول)</title>
                <link>https://virgool.io/semilearn/%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%AE%D8%B5%D8%B5-%D9%85%D9%86-%D9%84%D8%A7%D8%B2%D9%85-%D8%A7%D8%B3%D8%AA-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-hvyuyvfskmp2</link>
                <description>بسیاری از دانشجویان و علاقه مندان به دنیای کامپیوتر پس از اینکه مبانی پایه برنامه نویسی را آموختند و قصد شروع یک تخصص حرفه ای تر را دارند، با سوال جدیدی رو به رو می شوند. چه زبانی برای تخصص مورد نظر من لازم است؟ برای پاسخ به این سوال میتوان یک پرس و جوی ساده کرد و یا جستجویی در گوگل کرد تا به سادگی به جواب رسید. بنده نیز قصد دارم در این مقاله به این موضوع بپردازم.برخی از تخصص ها و زبان های مورد نیاز آن ها را میتوانید در پایین ببینید.طراحی وبسایتطراحی وبسایت یکی از پرنیاز ترین و پرکاربرد ترین مشاغل دنیا می باشد. قبل از اینکه بخواهیم به زبان های مورد نیاز بپردازیم، باید کمی در مورد این تخصص اطلاع داشته باشیم.طراحی وبسایت تلفیقی از دو تخصص کلی است، که هر کدام از این تخصص ها نیز خودشان زیر شاخه های اصلی دارند.· طراحی و پیاده سازی رابط کاربری یا فرانت اند (front-end)· توسعه سمت سرور یا بک اند (back-end)فرانت اند. طراحی و پیاده سازی رابط کاربری یا همان فرانت اند همانطور که از اسمش مشخص است مربوط به ظاهر یک سیستم و بخش هایی است که کاربر از آن طریق با سیستم ارتباط بر قرار میکند. فرانت اند بخشی است که کاملا در دید کاربر قرار میگیرد و نقش بسیار مهمی در سادگی کار با سیستم، سئو و حفظ کاربران یک سیستم دارد. فرانت اند فقط مربوط به وبسایت ها نیست و هر سیستمی که نیاز به رابط کاربری داشته باشد مانند اپلیکیشن های گوشی های هوشمند و یا کامپیوتر های شخصی را شامل میشود.فرانت اند به صورت کلی خود شامل تخصص های جامع و کاملی مانند گرافیک،طراحی UX(تجربه کاربری) و پیاده سازی UI(رابط کاربری) می باشد که هر کدام به عنوان یک شغل کامل شناخته می شوند.بک اند. همانطور که از نام آن مشخص است، این تخصص مربوط به بخش هایی است که کاربر نمیتواند به صورت مستقیم ببیند. برای مثال، شما وقتی در یک سایت عضو می شوید تنها یک فرم می بینید که باید اطلاعاتی در آن وارد کنید و وقتی فرم را پر کردید و تایید کردید عضویت شما انجام میشود. اتفاقاتی که برای اطلاعات ارسالی شما در پشت صحنه می افتد و فرآیندهایی که نهایتا منجر به ثبت نام شما میشود در بخش بک اند می باشد. به صورت کلی این بخش هم شامل تخصص های کاملی درون خود می باشد مانند پیاده سازی پایگاه داده.یک طراح سایت که میخواهد به صورت تنها کار کند و نه به صورت تیمی، نیاز دارد تا به صورت کلی با مباحث فرانت اند آشنایی داشته باشد و بتواند صفحات را در حد خوبی طراحی کند و همچنین نیاز به تسلط نسبی در بخش برنامه نویسی بک اند دارد. برای پایگاه داده، دانش پایه نیز میتواند کافی باشد. البته تمام این مسائل بستگی به پروژه نیز دارد.اما چه زبان هایی؟برای رابط کاربری، حداقل نیاز شما تخصص کامل در htmlو css و دانش پایه ای و مورد نیاز JavaScript می باشد. (مباحث تخصصی تری مانند Jquery،bootstrap یا فریم ورک هایی مانند انگولار یا ری اکت بستگی به علاقه شما به این تخصص دارد و همچنین به پروژه نیز بستگی دارد)برای بک اند، شما نیاز به تسلط به یکی از فریم ورک های سمت سرور مانند ASP.Net، لاراول، سمفونی، Node JS و... دارید که هرکدام از زبان های خاصی پشتیبانی میکنند. برای مثال .Net نیاز به C# یا Visual Basicدارد، لاراول و سمفونی نیاز به PHP و Node JS نیاز به دانش جاوااسکریپت دارد.برای پایگاه داده نیز چون گزینه های مختلفی وجود دارد نمیتوان دقیقا چیز خاصی را مطرح کرد اما حداقل نیاز شما داشتن اطلاعات کافی راجب مباحث پایگاه داده و زبان SQL است.طراحی اپلیکیشن های اندرویدی یا iOSیکی دیگر از پرکاربردترین تخصص ها طراحی اپلیکیشن برای گوشی های هوشمند است. نمیخواهم مثل طراحی سایت پرچانگی کنم برای همین مستقیم میروم سر اصل مطلب.طراحی اپلیکیشن تخصصی است که پایه یکسانی دارد اما پیاده سازی متفاوتی بسته به سیستم عامل و دیوایس های مختلف دارد. همانطور که در بالا گفتیم هر سیستمی که نیاز به ارتباط با کاربر دارد، بخشی برای توسعه رابط کاربری نیز دارد. برای همین در این تخصص نیز طراحی رابط کاربری نقش فوق العاده مهمی دارد.همچنین در اینجا نیز ما با بحثی تحت عنوان بک اند مواجه هستیم که در اپ های آنلاین دیده میشود. به صورت کلی توسعه سمت سرور در هر نوع سیستمی که اتصالات آنلاین دارد یک امر بدیهی و غیر قابل انکار است و با توجه به توسعه اینترنت در عصر حاضر پس توسعه بک اند یک تخصص خیلی کاربردی است.اما برای توسعه بخش های غیر رابط کاربری در اپ که مربوط به اتصالات آنلاین نیز نباشد نیز نوعی تخصص است در واقع طراحی یک اپ (آفلاین) یک بخش رابط کاربری، یک بخش توسعه اپ و در صورت نیاز پایگاه داده است.اما چه زبانی؟برای توسعه رابط کاربری اپ شما نیاز به دانش زبان XML و گاهی html دارید.برای توسعه خود اپلیکیشن اندرویدی شما میتوانید از جاوا، کاتلین یا سی شارپ استفاده کنید (گزینه های دیگری نیز موجود است) و برای iOS عمدتا از swift استفاده میشود. (گزینه های دیگری نیز موجود است)برای بک اند و پایگاه داده نیز مانند طراحی سایت و البته دانش کار با Web API نیاز است.در بخش دوم این مقاله به تخصص های بازی سازی و توسعه نرم افزار های کامپیوتر های شخصی خواهیم پرداخت.با تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Mon, 15 Jul 2019 23:51:07 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی را از کجا آغاز کنیم؟</title>
                <link>https://virgool.io/semilearn/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D8%A7-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%A2%D8%BA%D8%A7%D8%B2-%DA%A9%D9%86%DB%8C%D9%85-elerltotorgo</link>
                <description>در این مقاله قصد دارم تا به این پرسش مهم و کلیدی، یعنی برنامه نویسی را از کجا آغاز کنیم؟ پاسخ دهم.با توجه به افزایش روز افزون تکنولوژی های مبتنی بر کامپیوترهای شخصی، گوشی های هوشمند و اینترنت، میل مردم به خصوص جوانان علاقه مند به دنیای کامپیوتر به یادگیری برنامه نویسی افزایش چشمگیری داشته. البته نباید این موضوع را نیز نادیده گرفت که برنامه نویسی پایه در آینده ای نه چندان دور مانند الفبا برای مشاغل مختلف و حرفه ها می باشد.اما سوالی که ذهن خیلی از علاقه مندان را درگیر کرده این است که اصلا برنامه نویسی را از کجا باید شروع کرد؟در ابتدا باید این موضوع را در نظر داشت که شاید لفظ برنامه نویسی برای خیلی ها به اشتباه معنی شده باشد. برنامه نویسی علم استفاده از ابزار های تخصصی برای توسعه نرم افزار می باشد. یا به زبان ساده تر در واقع برنامه نویسی مانند یادگیری استفاده از یک ابزار مثل آچار برای یک تعمیرکار است. و این بدان معناست که دانستن برنامه نویسی به تنهایی نمیتواند کاربردی باشد و موجب درآمد زایی شود.بسیاری از ما با این تصور رشد کرده ایم که برنامه نویسی میتواند حلال تمامی مشکلات ما باشد اما اینطور نیست بلکه این خودمان هستیم که ایده ها و برنامه های ذهنی خود را توسط ابزاری مانند برنامه نویسی پیاده میکنیم.بگذریم. بپردازیم به سوال اصلی. بگذارید این سوال را به یک مثال توضیح دهم. یک دانشجوی پزشکی را در نظر بگیرید. دانشجویان پزشکی مدت زیادی را صرف تبدیل شدن به یک پزشک عمومی میکنند و بعد از آن اقدام به یادگیری یک تخصص میکنند. پس در واقع پزشکی عمومی یک نیاز برای تمام متخصصان است.دنیای کامپیوتر نیز اینگونه است. ما شغلی تحت عنوان برنامه نویس نداریم. بلکه باید تخصص خاصی مد نظرتان باشد. برای مثال، برنامه نویس وب، برنامه نویس اندروید، برنامه نویس بازی های ویدیویی. اما با این حال برنامه نویسی مقدماتی و مبانی، مانند همان پزشکی عمومی می باشد. پس شما برای شروع و راه یافتن به هریک از این تخصص ها ابتدا باید مبانی برنامه نویسی را بیاموزید.آموزش های پایه مورد نیاز برای شروعدر زیر مواردی را ذکر کرده ام که برای یادگیری پایه های اصلی برنامه نویسی به آن نیاز دارید:یادگیری الگوریتم نویسی پایهیادگیری مبانی برنامه نویسی (این مباحث بستگی به زبان خاصی ندارند و 90 درصد آن در همه زبان ها شکلی یکسان دارند)شی گرایی یا برنامه نویسی OOP (در دانشگاه در درس برنامه سازی پیشرفته تدریس میشود)انتخاب یک تخصص و یادگیری مباحث مورد نیاز برای آندر زیر تعریف کوتاهی از هر یک از موارد بالا را آورده ام.الگوریتم نویسی پایه. الگوریتم در واقع نوشتن دستورالعمل و بخش های مورد نیاز برای پیاده سازی برنامه به زبان ساده است. برای مثال: 1- شروع 2- عدد a را بگیر 3- عدد b را بگیر 4-  نتیجه a+b را چاپ کن5- پایاناین یک الگوریتم خیلی خیلی ساده است. الگوریتم باعث میشود در طول توسعه برنامه خود سردرگم نشوید و جزئیات جا نماند.مبانی برنامه نویسی. در دنیا زبان های برنامه نویسی زیادی وجود دارد که هرکدام کاربرد و ویژگی های خاص خود را دارند اما با این حال مفاهیمی تحت عنوان مبانی برنامه نویسی وجود دارد که بحث های پایه ای و یکسان در بیشتر زبان های برنامه نویسی دلالت دارد. مفاهیمی مانند حلقه ها، نوع داده ها، آرایه ها و... . پس اگر قصد شرکت در دوره ای برای مبانی برنامه نویسی دارید خیلی فرق نمیکند که با چه زبانی این مفاهیم تدریس شود.شی گرایی یا برنامه نویسی OOP. شی گرایی از مفاهیم پیشرفته تری در برنامه نویسی می باشد و یکی از مهم ترین و کلیدی ترین مفاهیم ممکن است که تعریف آن در این مقاله نمیگنجد. تنها چیزی که نیاز دارید بدانید در ابتدا این است که شی گرایی را به هیچ وجه نمیتوان نادیده گرفت و ضعف در آن به معنای یک نقطه ضعف خیلی بزرگ است. این مفهوم نیز دارای تعاریف یکسان است اما در پیاده سازی آن در زبان های مختلف کمی تفاوت وجود دارد که با چند جستجوی ساده در گوگل برطرف میشود.انتخاب تخصص. پس از آنکه مبانی را به صورت کلی آموختید میتوانید یک تخصص را انتخاب نمایید و با توجه به تخصصتان زبان های مورد نظر و آموزش های تخصصی را میگذرانید. برای مثال برای برنامه نویسی اندروید یکی از زبان های مورد نیاز میتواند زبان جاوا باشد و شما باید با XML نیز آشنایی داشته باشید و یا برای برنامه نویسی وبسایت شما باید به مفاهیم برنامه نویسی رابط کاربری و سپس برنامه نویسی سمت سرور و پایگاه داده مسلط باشید.امیدوارم این مقاله توانسته باشد کمی مسیر شما را برای آغاز برنامه نویسی روشن کند. بنده سعی میکنم این مقاله را در آینده ادامه داده و اطلاعات کامل تری را ارائه کنم.با تشکر از وقت شما</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Tue, 09 Jul 2019 21:29:59 +0430</pubDate>
            </item>
                    <item>
                <title>سیستم مدیریت محتوا (CMS) چیست ؟</title>
                <link>https://virgool.io/@amirhravaghi/%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%85%D8%AD%D8%AA%D9%88%D8%A7-cms-%DA%86%DB%8C%D8%B3%D8%AA-e08vzsekc2lj</link>
                <description>یکی از سیستم هایی که سهم زیادی در توسعه اینترنت و وبسایت ها دارند، سیستم های مدیریت محتوا هستند. شاید در نگاه اول چیز ناشناخته ای برایتان باشد، اما وقتی بیشتر با آن و نمونه های محبوبش آشنا شویم، متوجه خواهید شد که آن قدر ها هم برایتان غریبه نیست.سیستم های مدیریت محتوا را با نام CMS میشناسند. CMS مخفف عبارت Content Management System یا همان سیستم مدیریت محتوا می باشد.در تعریف کلی، این سیستم ها وظیفه دارند تا طراحی و پیاده سازی محتوا در اینترنت را برای شما ساده کنند. ایجاد محتوا در اینترنت عمدتا در قالب وبسایت ها صورت میگیرد پس عمده کاری که این سیستم ها انجام میدهند، ساده سازی طراحی وبسایت هاست.اما به صورت کلی تاریخچه سیستم های مدیریت محتوا برمیگردد به سال 1985. اولین سیستم مدیریت محتوا FileNet نام داشت. اوج فعالیت و قدرت این سیستم برمیگردد به سال 1995، یعنی 10 سال بعد از شروع کار این سیستم. فایل نت در سال 1995 بسته های نرم افزاری جهت مدیریت اسناد معرفی کرد. یک سال بعد، یعنی در سال 1996، کمپانی Vignette، شروع به توسعه CMS خود کرد و در همان سال سیستم مدیریت محتوای خود تحت عنوان StoryBuilder را معرفی کرد. پس از آن راه برای توسعه CMS ها باز شد و شرکت های مختلفی شروع به توسعه CMS های خود کردند که میتوان به inso در سال 1996 و EPiServer در سال 1997 اشاره کرد.سیستم های مدیریت محتوای منبع باز (open source)در اوایل دهه 2000 میلادی، فریم ورک ها و CMS های منبع باز، عموما بر مبنای زبان php شروع به توسعه کردند که از معروف ترین های آن ها میتوان به وردپرس،جوملا و دروپال اشاره کرد. این CMS ها با ساده کردن مدیریت محتوا و طراحی سایت برای عموم مردم، توانستند سهم زیادی از وبسایت های جهان را به دست آورند.محبوب ترین سی ام اس حال حاضر در دنیا، وردپرس می باشد. حال که به نام وردپرس رسیدیم شاید این مبحث برایتان آشناتر شده باشد. با استفاده از وردپرس، هزینه های سنگین طراحی وبسایت کاهش یافت و اینطور هزینه ها فقط صرف وبسایت های خاص با پردازش سنگین شد و وبسایت های وبلاگی، خبری، دانلودی و فروشگاه های ساده عمدتا به سیستم های مدیریت محتوا از جمله وردپرس واگذار شد.از محبوب ترین سایت های ایرانی که با وردپرس پیاده شده اند میتوان به میزبان فا، دیجی کالا مگ، سلام دانلود و... اشاره کرد.سهم هر CMS از وبسایت های جهاندر تصویر زیر میتوانید به ترتیب از چپ، نام سیستم مدیریت محتوا، سهم از بازار به درصد، تعداد وبسایت های فعال و تعداد وبسایت در هر میلیون وبسایت را مشاهده کنید.</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Sat, 25 May 2019 17:39:57 +0430</pubDate>
            </item>
                    <item>
                <title>کار با فایل های جی سون در php</title>
                <link>https://virgool.io/semilearn/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D8%AC%DB%8C-%D8%B3%D9%88%D9%86-%D8%AF%D8%B1-php-fr7ybmme3jfh</link>
                <description>در مقالات گذشته در رابطه با فایل های جی سون و اهمیت آن ها در کار با API ها و برنامه های تحت وب صحبت کردیم. حال میخواهیم بررسی کنیم که چطور با فایل های جی سون در زبان قدرتمند php کار کنیم.چرا php ؟همانطور که میدانید زبان پی اچ پی، ساختاری متناسب با توسعه وب دارد و تنها منظور ساخت این زبان نیز همین بوده است. در حال حاضر زبان قالب 83 درصد وب سایت های جهان می باشد. همچنین این زبان، زبان قالب CMS های وردپرس، جوملا و دروپال می باشد که در مقاله ای جدا به مبحث CMS ها خواهیم پرداخت.  فایل جی سون به عنوان ورودییکی از اساسی ترین و مهم ترین بخش های توسعه وب، کار با ورودی هاست. این ورودی ها میتوانند درخواست های http باشند و یا ورودی از فایل های لوکال یا محلی. دریافت این درخواست ها یا فایل های ورودی، روش های خاصی دارد که بسته به پروژه و سلیقه هر کس متفاوت است. این روش ها برای دریافت درخواست ها میتواند شامل متود های post و get باشد یا تابع file_get_contents باشد و یا... . به همین علت ما فرض میکنیم که فایل را دریافت کردیم و محتوای آن را که همان جی سون مورد نظر ما می باشد در یک متغیر تحت عنوان input ریخته ایم. برای اینکه مثال ما قابل فهم تر باشد، من از  تصویر فایل جی سونی که برای API تلگرام می باشد و در مقاله اصلی جی سون استفاده کردم مجددا استفاده می کنم.فایل جی سون برای ارسال پیام /text در یک ربات تلگرامیبسیار خب. فرض میکنیم جی سون بالا را در یک متغیر تحت عنوان $input ریخته ایم. بهترین روشی که میتوانیم استفاده کنیم این است که این جی سون را دیکد کرده و تبدیل به یک آرایه بکنیم. برای این منظور زبان php تابعی تحت عنوان json_decode دارد که این کار را برای ما ساده میکند.$input = file_get_contents&#40;&quot;php://input&quot;&#41;;
$input_array = json_decode($input,true);در قطعه کد بالا، در خط اول با استفاده از تابع file_get_contents ورودی را دریافت کردیم و در متغیر input ریختیم که همانطور که گفتم روش دریافت سلیقه ای است و البته بستگی به پروژه نیز دارد. در خط دوم متغیر جدیدی تحت عنوان input_array ایجاد کردیم و نتیجه حاصل از دیکد جی ورودی را در آن ریختیم. تابع json_decode در آرگومان اول خود ورودی را میگیرد. از این پس دسترسی به محتویات جی سون مورد نظر راحت شده است. در قطعه کد زیر، ما آیدی چت را در یک متغیر به نام chat_id میریزیم.$chat_id = $input_array[&#039;message&#039;][&#039;chat&#039;][&#039;id&#039;]ایجاد یک فایل جی سون در phpبرای ایجاد یک جی سون در php دقیقا برعکس کار با ورودی عمل میکنیم. آرایه ای از نوع کلید-مقدار می سازیم و توسط تابعی تحت عنوان json_encode آن را تبدیل به جی سون میکنیم. در قطعه کد زیر میخواهیم یک جی سون ایجاد کنیم و دو مقدار name و address را در آن وارد کنیم$array = [
    &quot;name&quot; =&gt; &quot;Alireza&quot;,
    &quot;address&quot; =&gt; &quot;No1 Street&quot;
]
$json = json_encode($array);حال در متغیر json، مقدار زیر را داریم{
    name: &quot;Alireza&quot;,
    address: &quot;No1 Street&quot;
}</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Thu, 23 May 2019 20:30:11 +0430</pubDate>
            </item>
                    <item>
                <title>فایل های XML</title>
                <link>https://virgool.io/@amirhravaghi/%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-xml-lpqioofadxo3</link>
                <description>در یکی از مطالب گذشته به معرفی فایل های JSON پرداختیم و با کاربرد آن ها آشنا شدیم. اما همانطور که گفته شد، برای ذخیره و انتقال دیتا فرمت های دیگری مانند XML نیز رایجند. در این مقاله قصد داریم تا این نوع فایل ها را معرفی کنیم. فایل XML چیست ؟ایکس ام ال مخفف عبارت eXtensible Markup Language، به معنای زبان نشانه گذاری توسعه پذیر می باشد.ایکس ام ال کاربرد های مختلفی دارد اما در اغلب موارد مشابه فایل های JSON است. ولی با این حال سینتکس و ساختار آن کاملا با جی سون متفاوت است. فایل های XML از tag ها برای ایجاد دیتا استفاده می کنند.برای مثال در نمونه زیر، ما تیتری داریم به نام Note که در آن مقادیر to (به چه کسی) ، from (از چه کسی) ، heading (تیتر) و body (بدنه) ثبت شده است.&lt;note&gt;
      &lt;to&gt;Tove&lt;/to&gt;
      &lt;from&gt;Jani&lt;/from&gt;
      &lt;heading&gt;Reminder&lt;/heading&gt;
      &lt;body&gt;Don&#039;t forget me this weekend!&lt;/body&gt;
&lt;/note&gt;  همانطور که از مثال مشخص است، کار با فایل های XML نیز به راحتی امکان پذیر است. در حال حاضر با ذخیره تگ های بالا در یک فایل .xml ، شما یک فایل ایکس ام ال دارید که میتوانید به عنوان دیتا ذخیره و یا از طریق اینترنت ارسال کنید.در بحث انتقال و ذخیره دیتا، تفاوت جی سون و ایکس ام ال در ساختار و سینتکس و همچنین حجم آن هاست. فایل های جی سون بسیار سبک تر از فایل های xml هستند و به همین علت می باشد که رشد بسیار سریعی داشته اند.اما یکی دیگر از کاربرد های مهم XML ، که در جی سون وجود ندارد و در کل ارتباطی به دیتا نیز ندارد، در طراحی رابط کاربری اپلیکیشن های اندرویدی است. اپلیکیشن های اندرویدی عموما در طراحی ظاهری خود به صورت کامل از XML بهره می برند که در تصویر زیر میتوانید نمونه ای از آن را ببینید  قصد طولانی کردن این مقاله را ندارم زیرا عمده مطالبی که برای XML به صورت مقدماتی گفته می شود و مربوط به ساختار اصلی و کاربرد های آن می شود تفاوت آن چنانی با JSON ندارد. به همین علت پیشنهاد میکنم که مطلب بنده در مورد فایل های JSON را نیز مطالعه بفرمایید.</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Wed, 22 May 2019 15:47:27 +0430</pubDate>
            </item>
                    <item>
                <title>فایل JSON و کاربرد آن</title>
                <link>https://virgool.io/JavaScript8/%D9%81%D8%A7%DB%8C%D9%84-json-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%A2%D9%86-igh7vapxwbe0</link>
                <description>برای خیلی از توسعه دهندگان و برنامه نویسان، از جمله توسعه دهندگان وب و گوشی های هوشمند، جی سون (JSON) مفهومی بسیار آشناست. اما کاربرد جی سون چیست ؟در ابتدا باید بدانیم که جی سون چیست؟ JSON مخفف JavaScript Object Notation یا نشانه شیء جاوااسکریپت می باشد. جی سون یک فرمت فایل برای ذخیره سازی و یا انتقال فایل ها می باشد.ثبت اطلاعات و دیتا در یک فایل جی سون بسیار ساده است. برای مثال فرض کنیم که میخواهیم داده ای تحت عنوان نام (name) را با مقدار Alireza و داده ای تحت عنوان آدرس (address) با مقدار No1 Street را در یک فایل جیسون ذخیره کنیم. تنها کاری که نیاز است انجام بدهیم ساخت یک فایل به نام data.json است. (نام data به نام دلخواه قابل تغییر است)در فولدر یا دایرکتوری که میخواهیم فایل را ایجاد میکنیم و با یک ویرایشگر ساده مثل notepad یا تخصصی مثل visual studio code آن را باز میکنیم. تنها کافی است اطلاعات مورد نظر را به حالت جفت کلید مقدار (key value pair) و با سینتکس مشابه ذیل در آن وارد کنیم:{
    name : &quot;Alireza&quot;,
    address : &quot;No1 Street&quot;
}فایل را ذخیره میکنیم و تمام. حال ما یک فایل جی سون داریم که دیتایی را در آن ذخیره کردیم و هرگاه که بخواهیم میتوانیم در برنامه های خود آن را بازکرده و از محتویاتش استفاده کنیم.کاربرد جی سونحال که میدانیم جی سون چیست میتوانیم به کاربرد آن بپردازیم.همانطور که در تعریف هم گفتیم جی سون برای ذخیره سازی و یا انتقال دیتا استفاده می شود.ذخیره دیتادر بالا یاد گرفتیم که چگونه دیتا را در یک فایل جی سون ذخیره کنیم. سیستم های مدیریت پایگاه داده ای (DBMS) nosql مانند MongoDB برای ذخیره دیتا در دیتابیس خود از فایل های جی سون استفاده میکنند که در بالا طرز کار آن را دیدیم.  در تصویر پایین، میتوانیم یک فایل جی سون از سیستم مدیریت پایگاه داده مونگو را ببینیم:نمونه ای از دیتای ذخیره شده در MongoDB همانطور که مشاهده میکنید این فایل کمی پیچیده تر از مثالی بود که در بالا دیدیم. نگران نباشید. طبیعتا ذخیره دیتای یک سیستم بزرگ تر مانند یک وبسایت کمی بزرگ تر و شلوغ تر است.در فایل بالا به نظر می رسد که که این فایل دیتای یک پست از یک سایت می باشد. همانطور که میبینید میتوانیم به عنوان مقدار به یک کلید که ساختار جی سون دیگر وارد کنیم. درست مانند کلید نویسنده (author) که به عنوان مقدار جی سونی دیگر در خود دارد. و یا میتوانیم به عنوان مقدار یک کلید بیشتر از یک مقدار وارد کنیم. مانند کلید tags که دو رشته مختلف را در خود دارد و یا کلید comments که میتواند چند جی سون دیگر را به عنوان کامنت های مختلف بپذیرد. برای وارد کردن چند مقدار به یک کلید از کروشه ([]) استفاده میشود.انتقال دیتا  یکی دیگر از کاربرد های جی سون که شاید مهم ترین آن نیز باشد، انتقال دیتا می باشد. برای مثال کار کردن با API ها را در نظر بگیرید. هنگامی که از طریق یک اپلیکیشن آنلاین، درخواستی به سرور ایجاد می شود، سرور با توجه به درخواست ارسال شده، دیتای درخواست شده را در قالب یک فایل جی سون برای اپلیکیشن پس می فرستد. یا به عنوان مثالی دیگر در ربات های تلگرامی، دیتای ارسال شده و دریافت شده تماما در قالب جی سون است.  در تصویر زیر فایل جی سون دریافتی تلگرام برای ارسال پیام /start در یک ربات توسط کاربر را مشاهده میکنید. به این صورت یک برنامه نویس ربات تلگرام میتواند متوجه شود پیام ارسالی در ربات چه چیز بوده است و یا یوزرنیم کاربری که پیام را ارسال کرده چه بوده است و با آن ها کار کند.البته در حوزه انتقال دیتا در اینترنت فایل ها و ساختار های دیگری مانند XML نیز کاربرد زیادی دارند که در مقاله ای دیگر به آن خواهیم پرداخت.</description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Sat, 18 May 2019 21:34:19 +0430</pubDate>
            </item>
                    <item>
                <title>بلاک چین چیست ؟</title>
                <link>https://virgool.io/semilearn/%D8%A8%D9%84%D8%A7%DA%A9-%DA%86%DB%8C%D9%86-%DA%86%DB%8C%D8%B3%D8%AA-hd9mc3mpp4lc</link>
                <description>به تازگی، تقریبا همه جا، اسم تکنولوژی جدید بلاک چین را میشنویم. از دور زدن فیلترینگ تا امنیت خاص و غیر قابل هک آن. اما اطلاعات ما نسبت به این تکنولوژی بسیار ساده و سطحی می باشد. حتی میشود گفت تنها یک اسم و کاربرد از آن شنیدیم.در این مقاله قصد داریم تا با این تکنولوژی فوق العاده، بیشتر آشنا شویم. بلاک چین چیست؟خب در ابتدا باید بدانیم اصلا بلاک چین چیست؟بلاک چین نوعی تکنولوژی توزیع داده های دیجیتال می باشد یا می توان گفت نوعی پایگاه داده که به صورت گسترده ای توزیع شده است. بیایید راحت تر بیانش کنیم :بلاک چین از دو کلمه Block(بلوک) و Chain(زنجیره) تشکیل شده است و همانطور که اسم آن پیداست، نوعی زنجیره است که بلوک هایی را به هم متصل میکند. این بلوک ها به زبان ساده، بسته های اطلاعاتی هستند که از دستگاهی ارسال و یا دریافت میشوند.هر بلوک اطلاعاتی بخشی از یک داده واحد را منتقل میکند و در نهایت، داده های گسسته و پخش شده در بلوک های مختلف دوباره به یک داده واحد تبدیل شده و به مقصد میرسید.این نوع عملکرد، باعث شده سرعت انتقال داده و امنیت اطلاعات در حال انتقال به شدت افزایش پیدا کند.  مهم ترین کاربرد این تکنولوژی تا امروز، تراکنش و خرید های ارز های دیجیتال مانند بیت کوین و یا اتریوم بوده و دلیل آن امنیت بالا و همچنین غیر قابل تغییر و یا هک بودن اطلاعات در این تکنولوژی می باشد. اما چگونه ؟ برای پاسخ به این سوال باید کمی دقیق تر وارد مبحث بلاک چین شویم.محتویات بلوک های بلاک چینبرای راحت تر شدن توضیح این مطلب، من از بیت کوین به عنوان مثال استفاده میکنم.در شبکه خرید و فروش و استخراج بیت کوین، هر بلوک شامل یک بخش header (هدر) و یک بخش برای اطلاعات است.هر بلوک دارای یک کد انحصاری می باشد. این کد انحصاری مثل اثر انگشت برای هر بلوک، کاملا انحصاری است و برای شناسایی بلوک از آن استفاده میشود. این کد انحصاری هَش (hash) نام دارد. هدر بلوک، شامل هَش بلوک قبلی، هَش خود، هَش بلوک بعدی(گاهاً) و کدی تحت نام Merkle root یا ریشه مرکل می باشد. در تصویر بالا، یک شبکه بلاک چین را مشاهده میکنید. همانطور که می بینید، هر بلوک، شامل یک هَش و هَش بلوک قبلی خود میباشد و هَش قبلی بلوک ریشه، بخاطر اینکه بلوک دیگری وجود ندارد 0000 می باشد. از هَش ها برای پیدا کردن بلوک ها و ارتباط بین بلوک ها استفاده میشود و نقش بسیار کلیدی دارد. اما این هَش ها چگونه در امنیت شبکه موثر هستند ؟هنگامی که هر تغییری در داده های موجود در هر بلوک صورت بگیرد، کد هَش بلوکی که داده آن تغییر کرده است نیز تغییر میکند. بر این اساس چون کد هَش آن برای اتصال به بلوک بعدی استفاده شده بود و در بلوک بعدی ثبت شده بود و حالا با این تغییر ، کد هَش تغییر کرده، پس زنجیره بلوکی قطع و شبکه از دسترس خارج میشود.پس برای هرگونه دستکاری یا حذف اطلاعات یک بلاک، باید اطلاعات هدر تمامی بلاک های مرتبط با آن قطع شود.اما چیزی که مطرح میشود این است که این کد هَش فقط در بلوک بعدی و قبلی ثبت شده و با تغییر آن ها میتوان تغییراتی در اطلاعات ایجاد کرد. پس چگونه امنیت این شبکه تامین میشود؟ اینجاست که کد مرکل نقش خود را نشان میدهد.کد ریشه مرکل، کدی است که از تلفیق هش های بلوک های شبکه به وجود می آید. اما چگونه ؟ این تلفیق از ساختاری پیروی میکند تحت عنوان درخت مرکل. این درخت به شکل دوتایی (باینری) عمل میکند. عملکرد این درخت را میتوانیم در تصویر زیر واضح تر ببینیم. همانطور که در تصویر بالا می بینید، هَش بلوک های موجود به صورت دو به دو با هم تلفیق شده تا در نهایت دیگر جفتی برای تلفیق وجود نداشته باشد و در آنجا به کد ریشه مرکل میرسیم. این کد در تمامی هدر های بلوک های موجود در این درخت ثبت شده است.پس علاوه بر تغییر هش های ثبت شده در بلوکهای قبلی و بعدی، می بایست تمامی هش های بلوک های ثبت شده در درخت نیز تغییر کند تا شبکه قطع نشود و همچین تغییری در شبکه های بین المللی دارای احتمالی برابر با 1 در تعداد کاربران موجود در شبکه می باشد.بدنه بلوک هاپس از قسمت هدر که شامل اطلاعات حیاتی یک بلوک می باشد، حال میخواهیم بدانیم بدنه بلوک چه عملکردی دارد.هدر یک بلوک، اطلاعات ارتباطی و حیاتی یک بلوک، برای رساندن داده ها از مبدا به مقصد را در خود جای داده و بدنه بلوک، بخشی از بلوک است که داده ها در آن جای میگیرد.این دیتا میتواند هر نوع اطلاعاتی باشد. برای بیت کوین ها این اطلاعات، تراکنش های مربوط به بیت کوین ها می باشد. حال برای مثال میتوانیم به یک بلوک بیت کوین نگاهی بیندازیم. در لینک زیر شما میتوانید یک بلوک بیت کوین را مشاهده کنید:https://goo.gl/nmYTzLدر این بلوک بیت کوین، در ستون سمت راست اطلاعات هدر قرار دارد. شامل هش خود بلوک، هش بلوک قبلی، هش بلوک بعدی و کد ریشه مرکل.در سمت چپ نیز اطلاعات بخش داده ها یا همان تراکنش های بلوک قرار دارد و اگر شما صفحه را به پایین اسکرول کنید متوجه حجم زیاد تراکنش یا همان داده های موجود در این بلوک میشوید.متوسط حجم یک بلوک 1 مگابایت می باشد اما در بلوک های بیت کوین این حجم ممکن است تا 8 مگابایت هم افزایش پیدا کند.توزیع داده حال میخواهیم به این موضوع بپردازیم که منظور از توزیع داده چیست؟ هنگامی که شما با سیستمی کار میکنید که از تکنولوژی بلاک چین بهره میبرد و از دستگاه خود درخواستی سمت سرور ارسال میکنید(برای مثال پیامی در یک پیام رسان ارسال میکنید) ، پیام شما که نوعی داده است به چند قسمت تقسیم میشود و به بلوک های مختلفی فرستاده میشود. هر کدام از این بلوک ها یک کاربر آنلاین در شبکه هستند.پس پیام شما به چند تکه تقسیم شده و از طریق بلوک ها یا همان کاربران آنلاین به سمت سرور اصلی فرستاده میشود و در نهایت بسته داده شما دوباره به حالت اول بازگشته و به سرور اصلی بازمیگردد و پیام پاسخ سرور هم به همین شکل به دستگاه شما میرسد. و این هم دلیل دیگری بر امنیت بالای شبکه های بلاک چین می باشد. در واقع پیام شما در یک بلوک نیست تا شخصی بتواند به آن از طریق دسترسی به بلوک دست پیدا کند، بلکه پیام شما در بلوک های مختلفی در حال ارسال می باشد.این تکنولوژی تا به امروز عموما برای ارز های دیجیتال استفاده میشد، اما به تازگی کمپانی های مختلفی از جمله گوگل شروع به توسعه این شبکه در سیستم های خود کرده اند.این تکنولوژی نسل جدیدی از ارتباطات شبکه ای و امن می باشد و قدم بزرگی در پیشرفت های روز تکنولوژی بین المللی محسوب میشود. </description>
                <category>امیرحسین رواقی</category>
                <author>امیرحسین رواقی</author>
                <pubDate>Sat, 18 May 2019 02:11:48 +0430</pubDate>
            </item>
            </channel>
</rss>