<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های hesam</title>
        <link>https://virgool.io/feed/@hharddy</link>
        <description>برنامه نویسِ سرباز وظیفه</description>
        <language>fa</language>
        <pubDate>2026-06-07 01:44:38</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/6987/avatar/LymbbL.png?height=120&amp;width=120</url>
            <title>hesam</title>
            <link>https://virgool.io/@hharddy</link>
        </image>

                    <item>
                <title>آشنایی با داکر</title>
                <link>https://virgool.io/@hharddy/docker-qkxhnyz7pm3m</link>
                <description>داکر (Docker) یک پلتفرم متن‌باز است که برای ساخت، توسعه، و اجرای برنامه‌ها با استفاده از محیط‌های ایزوله شده به نام “کانتینرها” (Containers) استفاده می‌شود. با استفاده از داکر، می‌توانید برنامه‌ها و تمامی وابستگی‌هایشان را در یک بستر یکپارچه توسعه و اجرا کنید بدون اینکه به بستر سیستم‌عامل میزبان وابسته باشید.در داکر، هر برنامه یا سرویس در یک کانتینر قرار می‌گیرد که شامل کدهای برنامه و تمام وابستگی‌ها و منابع لازم برای اجرای آن است. کانتینرها از فناوری‌های مانند cgroups و namespaces برای ایجاد ایزولاسیون منابع استفاده می‌کنند تا از تداخل منابع با سایر کانتینرها و سیستم‌عامل میزبان جلوگیری کنند.تاریخچهداکر (Docker) به عنوان یک پروژه متن‌باز در سال ۲۰۱۳ توسط شرکت Docker، Inc. تأسیس شد. ایده اصلی پشت داکر برگرفته از فناوری‌های قبلی مانند chroot و LXC بود، اما با تمرکز بر روی سادگی و قابلیت استفاده آسان تر توسعه یافت.داکر ابتدا به عنوان یک ابزار داخلی در شرکت dotCloud که یک سرویس پلتفرم-as-a-service (PaaS) بود، توسعه یافت. در سال ۲۰۱۳، شرکت dotCloud تصمیم گرفت تا داکر را به عنوان یک پروژه مستقل منتشر کند و توسعه آن را به صورت جامعه‌محور ادامه دهد.اولین نسخه عمومی داکر در مارس ۲۰۱۳ منتشر شد و به طور سریع توجه و تأیید بسیاری از توسعه‌دهندگان و سازمان‌ها را به خود جلب کرد. داکر توانست نیازهای روزافزون صنعت نرم‌افزار را به خوبی برآورده کند، از جمله ایجاد محیط‌های توسعه یکپارچه، استقرار سریع برنامه‌ها، و مدیریت بهتر نگهداری و راه‌اندازی برنامه‌ها در محیط‌های متنوع.ویژگی های داکر۱. استقلالیت از بستر سیستم‌عامل: با استفاده از داکر، می‌توانید برنامه‌ها را به صورت کانتینرهای ایزوله بسته بندی کنید.این به شما امکان می‌دهد که برنامه‌های خود را بدون وابستگی به بستر سیستم‌عامل میزبان در هر محیطی اجرا کنید. به عبارت دیگر، می‌توانید برنامه‌های توسعه داده شده در یک سیستم‌عامل را در سیستم‌عامل‌های دیگر نیز به راحتی اجرا کنید.۲. تسریع فرایند توسعه و استقرار: داکر به شما امکان می‌دهد برنامه‌ها و وابستگی‌هایشان را در کانتینرها بسته بندی کنید.این بسته‌بندی قابل حمل و قابلیت‌پذیر است و می‌توان آن را در سرورها و محیط‌های مختلف اجرا کرد. این روش به توسعه‌دهندگان امکان می‌دهد برنامه‌ها را به سرعت توسعه دهند، آزمایش کنند و استقرار دهند.۳. ایزوله‌سازی منابع: داکر با استفاده از فناوری‌هایی مانند cgroups و namespaces، ایزولاسیون منابع بین کانتینرها و سیستم‌عامل میزبان را فراهم می‌کند.این به شما امکان می‌دهد تا برنامه‌ها را به صورت ایزوله اجرا کرده و از تداخل منابع جلوگیری کنید. همچنین، ایزوله‌سازی منابع امنیتی را بهبود می‌بخشد و از حفظ امنیت سیستم‌ها در محیط‌های چند‌تنه می‌تواند کمک کند.جایگزین های داکرداکر به عنوان یک پلتفرم محبوب و پراستفاده در محیط‌های سرور و توسعه نرم‌افزار، رقبایی نیز دارد که برخی از مهم‌ترین آنها عبارتند از:Kubernetes (K8s) :Kubernetes یک سامانه مدیریت کانتینر متن‌باز است که امکان مدیریت و اجرای مقیاس‌پذیر کانتینرها را فراهم می‌کند. در حقیقت، Kubernetes و داکر مکمل یکدیگر هستند؛ داکر برای بسته بندی و اجرای کانتینرها و Kubernetes برای مدیریت و اجرای آنها در یک محیط مقیاس‌پذیر و قابل توسعه.Apache Mesos :Apache Mesos یک پلتفرم منبع اشتراکی و مقیاس‌پذیر است که امکان اجرای و مدیریت برنامه‌های توزیع‌شده را در یک محیط چندمیزبانه فراهم می‌کند. این پلتفرم، کانتینرها را نیز به عنوان یکی از تکنولوژی‌های قابل استفاده در محیط‌های Mesos پشتیبانی می‌کند.Docker Swarm :Docker Swarm یک سرویس مدیریت و ارتباط کانتینرهای داکر است که توسط خود شرکت Docker ارائه شده است. Swarm امکانات مانند توزیع بار، مقیاس‌پذیری افقی و مدیریت توزیع‌شده را فراهم می‌کند.OpenShift :OpenShift یک پلتفرم سرویس‌دهی بر پایه کانتینر است که توسط شرکت Red Hat ارائه می‌شود. این پلتفرم امکانات مدیریت کانتینرها، ایجاد و مدیریت برنامه‌ها در یک محیط مقیاس‌پذیر و انعطاف‌پذیر را فراهم می‌کند.منبع: داکر چیست؟ همه چیز درباره Docker</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Thu, 06 Jul 2023 16:10:10 +0330</pubDate>
            </item>
                    <item>
                <title>انتخاب لپ تاپ مناسب برای برنامه نویسی</title>
                <link>https://virgool.io/@hharddy/%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D9%84%D9%BE-%D8%AA%D8%A7%D9%BE-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-otwwvzws8m7i</link>
                <description>برنامه‌نویسان نیاز به دستگاهی قوی، سریع و کارآمد دارند تا بتوانند برنامه‌های مختلف را بهینه و بدون مشکل اجرا کنند. در این مقاله، به بررسی عوامل مهم در انتخاب لپ‌تاپ مناسب برای برنامه‌نویسی پرداخته و نکات کلیدی را برای کمک به شما در این انتخاب مهم بیان می‌کنیم.اگر قصد خرید لپ تاپ دارید اطلاعات این پست میتواند به شما کمک کند.لپ تاپ مناسب برنامه نویسی چه ویژگی هایی دارد؟در ابتدا، باید گفت که لپ تاپی که برای برنامه نویسی انتخاب می‌شود، باید توانایی پردازش قدرتمندی داشته باشد. همچنین، حافظه‌ی RAM بالایی و کارت گرافیک مناسبی نیز برای اجرای برنامه‌هایی که نیاز به پردازش گرافیکی دارند، الزامی است.علاوه بر این، صفحه‌ی نمایش لپ تاپ باید با کیفیت وضوح بالایی داشته باشد تا برنامه‌نویسان بتوانند به راحتی کد خود را بخوانند. همچنین، کیبوردی با کیفیت و حساسیت مناسب نیز برای وارد کردن کدها و دستورالعمل‌ها از اهمیت بالایی برخوردار است.سیستم عاملی که بر روی لپ تاپ نصب شده است نیز مهم است. برای برنامه‌نویسی، سیستم‌عاملی که به آن احساس تسلط دارید و به شما امکاناتی مانند نصب برنامه‌هایی که برای برنامه‌نویسی مورد نیاز هستند را می‌دهد، توصیه می‌شود.در انتخاب یک لپ تاپ برای برنامه نویسی به موارد زیر حتما توجه کنید:1: پردازنده2: مقدار RAM3: کارت گرافیک4: مانیتور5: حافظه ذخیره سازی6: کیبورد1: پردازنده لپ تاپ CPUبرای برنامه نویسی، پردازنده‌هایی با سرعت بالا و قابلیت پردازش چند رشته‌ای (Multithreading) مناسب هستند. در زمینه پردازنده‌های اینتل، مدل‌های Core i7 و Core i9 با فرکانس بالا و تعداد هسته‌های بیشتر قابلیت اجرای سریع برنامه‌های حجیم و پردازش تعداد زیادی داده را دارند. همچنین، پردازنده‌های AMD Ryzen با فرکانس بالا و تعداد هسته‌های بیشتر نیز از جمله پردازنده‌هایی هستند که برای برنامه نویسی مناسب هستند. برای استفاده از تمامی قابلیت‌های پردازنده، لازم است که سیستم عامل و نرم‌افزارهای مورد استفاده نیز قابلیت پردازش چند رشته‌ای را داشته باشند.یکی از نکات مهم در انتخاب CPU توجه سال تولید یا اصطلاحا نسل پردازنده میباشد. انتخاب یک CPU به روز تاثیر به مراتب بهتری خواهد داشد.برای مثال میتوانید یک پردازنده Core i5 نسل دوازدهم را با پردازنده Core i7 نسل ششم جایگزین کنید.2: مقدار RAM مورد نیاز برنامه نویسیمقدار RAM مناسب برای یک لپ تاپ برنامه نویسی، به شدت به نوع کاری شما و نوع برنامه‌هایی که قصد دارید برای برنامه نویسی اجرا کنید، بستگی دارد. با این حال، برای برنامه نویسی معمولی، حداقل 8 گیگابایت RAM توصیه می‌شود. اگر قصد دارید برنامه‌هایی با حجم بیشتری را اجرا کنید، به عنوان مثال برنامه‌های گرافیکی، برنامه‌های سنگین پردازشی یا برنامه‌های هوش مصنوعی، بهتر است حداقل 16 گیگابایت RAM داشته باشید.در کل، برای برنامه نویسی حرفه‌ای و استفاده از برنامه‌هایی که نیاز به حجم بالا از RAM دارند، توصیه می‌شود حداقل 16 گیگابایت RAM داشته باشید تا بتوانید به خوبی با برنامه‌های خود کار کنید. همچنین، اگر قصد دارید که برنامه‌های خود را روی ماشین‌های مجازی اجرا کنید، یا اگر نیاز به شبیه ساز اندروید در برنامه نویسی فلاتر و اندروید باید به این نکته توجه کنید که هر ماشین مجازی به مقدار مشخصی از RAM نیاز دارد، بنابراین بهتر است که حداقل 16 گیگابایت RAM داشته باشید.3: انتخاب کارت گرافیکبرای برنامه نویسی، کارت گرافیک یکی از عوامل مهمی است که باید در نظر گرفته شود. با توجه به این که برنامه نویسی یک فعالیت صرفاً سخت افزاری نیست و نیاز به گرافیک قوی ندارد، اما باز هم برخی ویژگی های کارت گرافیک برای برنامه نویسی مهم هستند. برخی از این ویژگی ها عبارتند از:۱- قابلیت پشتیبانی از مانیتورهای با وضوح بالا: برای برنامه نویسی، بهتر است از یک کارت گرافیک با پشتیبانی از وضوح بالا استفاده کنید تا بتوانید برنامه های خود را با کیفیت بالا نمایش دهید و از دقت بالایی برای انجام کارهای خود بهره ببرید.۲- حافظه گرافیک: با توجه به اینکه برنامه نویسی یک فعالیت صرفاً سخت افزاری نیست، ممکن است نیاز داشته باشید تا چندین برنامه ویرایشگر کد را باز کنید. در این صورت، یک کارت گرافیک با حافظه گرافیک بالا می تواند به شما کمک کند تا با کیفیت بالاتری کار کنید.۳- پشتیبانی از تکنولوژی های رندرینگ: اگر شما برای برنامه نویسی از نرم افزارهایی استفاده می کنید که نیاز به رندرینگ دارند، باید از یک کارت گرافیک با پشتیبانی از تکنولوژی های رندرینگ استفاده کنید تا بتوانید بهترین کیفیت را در تصاویر خود داشته باشید.اگر قصد دارید وارد حوزه هوش مصنوعی و آنالیز داده ها شوید اهمیت کارت گرافیک برای شما نسبت به سایر برنامه نویسان بیشتر است.این بخاطر این است که بسیاری از الگوریتم‌های هوش مصنوعی، محاسبات ماتریسی و محاسبات پردازش گرافیکی سنگینی را انجام می‌دهند. با داشتن یک کارت گرافیک با حافظه گرافیکی بالا و با پشتیبانی از بسته های نرم افزاری مانند TensorFlow و PyTorch، می‌توانید سرعت محاسباتی را افزایش دهید و برنامه‌های هوش مصنوعی پیچیده‌تری را با سرعت بیشتری اجرا کنید. همچنین، برای آموزش شبکه‌های عصبی بزرگ و پیچیده، به یک کارت گرافیک با حافظه گرافیکی بالا نیاز دارید که قادر به پردازش هزاران نمونه داده در هر ثانیه باشد. در نتیجه، برای برنامه نویسی هوش مصنوعی، کارت گرافیک با حافظه گرافیکی بالا و با قدرت پردازشی بالا بسیار مهم است.در صورتی که شما برای کاربردهای دیگری به کارت گرافیک قوی نیاز دارید، بهتر است که یک کارت گرافیک با حافظه گرافیکی خوب انتخاب کنید. همچنین، کارت گرافیک با پشتیبانی از استاندارد DirectX و OpenGL برای توسعه بازی ها و برنامه های سه بعدی مفید خواهد بود. در کل، برای برنامه نویسی نیازی به کارت گرافیک قوی نیست و کارت گرافیک معمولی در بسیاری از موارد کافی خواهد بود.4: مانیتور مناسب برنامه نویسیمانیتور لپ تاپ برای برنامه نویسی باید دارای ویژگی های زیر باشد:۱. اندازه صفحه نمایش: یک صفحه نمایش با اندازه بزرگ، حجم بالای کاربری برای برنامه نویسی را فراهم می کند. یک مانیتور لپ تاپ با اندازه 15 تا 17 اینچ، مناسب برای کاربران برنامه نویسی است.۲. رزولوشن: رزولوشن بالا برای مانیتور لپ تاپ، می تواند به برنامه نویسان در کار با نرم افزارهای گرافیکی و پردازش تصویر کمک کند. رزولوشن 1920×1080 یا بالاتر برای مانیتور لپ تاپ مناسب برنامه نویسی است.۳. نمایشگر IPS: نمایشگرهای IPS ارائه رنگ های دقیق با زاویه دید گسترده تر را دارا هستند. این خصوصیت در کار با نرم افزارهای گرافیکی و طراحی وب می تواند مفید باشد.۴. میزان روشنایی: مانیتور لپ تاپ برای برنامه نویسی باید دارای میزان روشنایی مناسب باشد. برای کار در شرایط نور کم، میزان روشنایی بالا می تواند مفید باشد.۵. مقاومت و محافظت در برابر خط و خش: یک مانیتور لپ تاپ با مقاومت بالا در برابر خش و ضربه، از دوام و طول عمر طولانی تری برخوردار خواهد بود. این ویژگی برای برنامه نویسی که معمولاً برای مدت طولانی با لپ تاپ کار می کنند، مهم است.5: انتخاب هارد ذخیره سازی در لپ تاپبرای برنامه نویسی، هارد دیسک SSD (Solid State Drive) بهترین گزینه است. این نوع هارد دیسک سرعت بالایی در انتقال داده دارد و به دلیل نداشتن قطعات متحرک، مصرف کمتری دارد و از لحاظ ایمنی اطلاعات، بسیار امن می‌باشد. علاوه بر این، برنامه‌های بزرگ مانند IDEs و نرم‌افزارهای شبیه‌سازی، بر روی هارد دیسک SSD با سرعت و عملکرد بهتری اجرا می‌شوند. به علاوه، با اینکه هارد دیسک SSD در مقایسه با هارد دیسک HDD گرانتر است، اما ارزش خرید بیشتری را به دلیل سرعت و کارایی بهتری برای برنامه نویسی دارد. به همین دلیل برای برنامه نویسی، هارد دیسک SSD را به عنوان گزینه‌ی اصلی توصیه می‌کنیم.6: ویژگی های کیورد لپ تاپکیبورد لپ تاپ برای برنامه نویسی باید دارای ویژگی‌های زیر باشد:۱. کیفیت ساخت بالا: کیبورد باید ساختار قوی و از مواد با کیفیت باشد که بتواند در برابر ضربه‌ها و کاربردهای مکرر مقاومت کند.۲. وضوح حروف: حروف و علائم کیبورد باید واضح و خوانا باشند تا برنامه‌نویس بتواند به راحتی تایپ کند و در عین حال خستگی چشمی کمتری داشته باشد.۳. دقت تایپ: کیبورد باید دقت بالایی در تایپ داشته باشد تا اشتباهات کمتری در وارد کردن کدها و دستورالعمل‌ها رخ دهد.۴. نور پس‌زمینه: برای برنامه نویسی در شرایط کم نور، کیبورد لپ تاپ باید دارای نور پس‌زمینه باشد تا برنامه‌نویس بتواند به راحتی تایپ کند.۵. حساسیت لمسی: حساسیت مناسب کیبورد لمسی بسیار مهم است تا برنامه نویس بتواند با دقت بالا و با حداقل اشتباه تایپ کند.۶. وجود کلیدهای ویژه: کلیدهای ویژه‌ای مانند کلیدهای فانکشن، اسکرول، صفحه بعدی و قبلی و … نیز برای برنامه نویسی بسیار حائز اهمیت هستند.</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Sun, 23 Apr 2023 22:01:32 +0330</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی کامپیوتر و زبان برنامه نویسی چیست؟</title>
                <link>https://virgool.io/fboard/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%88-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA-c1ibh2cizerw</link>
                <description>برنامه نویسی کامپیوتر و کدنویسی چیست؟ برنامه نویسان چه کسانی هستند؟ این ها سوالاتی هستند افراد ممکن است قبل آشنا شدن با دنیای کامپیوتر از خود بپرسند و جواب دقیقی برای آن نداشته باشند.در دنیای امروز همه ما به نوعی با کامپیوترها و نرم افزارهای مختلف سروکار داریم. از خریدهای آنلاین و مشاهده فیلم و موسیقی گرفته تا استفاده از دستگاه های خودپرداز. تمام این موارد به لطف پیشرفت تکنولوژی و افزایش استفاده و کاربرد کامپیوترها میسر شده است.تعریف برنامه نویسیهر کامپیوتری فارغ از اینکه چه نوع کامپیوتری میباشد مثل سیستم خانگی, لپ تاپ, سرور, بردهای کوچک و… برای اهداف مختلف و ارائه خدمات گوناگون نرم افزارهای کامپیوتری را اجرا میکنند. این نرم افزارها با استفاده زبان های برنامه نویسی و توسط کدنویسی ساخته شده اند که به این کار برنامه نویسی کامپیوتر میگویند.به بیان دیگر برنامه نویسی عملی است که به ماشین یک سری دستور العمل ها داده میشود که تعیین میکند یک برنامه چه کارهایی را باید انجام دهد. در ادامه این برنامه توسط یک کامپیوتر اجرا میشود تا عملیات مورد نظر را انجام دهد. برنامه کامپیوتری دستور العمل های نوشته شده را به زبانی قابل فهم برای کامپیوتر تبدیل میکند. البته این کار در اصل توسط کامپایلر مخصوص همان زبان انجام میشود که بحثی تخصصی در علوم کامپیوتر میباشد.برنامه های کامپیوتری انواع مختلفی دارند. این برنامه ها میتوانند مانند نرم افزارهایی باشند که روی گوشی یا کامپیوتر خود نصب میکنید و روزانه از آنها استفاده میکنید. یا وبسایتی باشند که از طریق مرورگر اینترنتی آن را مشاهده میکنید. این نوع از برنامه ها بروی یک کامپیوتر که به آن سرور گفته میشود قرار میگیرند تا همه افراد از هر نقطه در کره زمین به آن دسترسی داشته باشند.برنامه نویس چه کسی است؟تا به اینجا با نرم افزارهای کامپیوتری آشنا شدیم و متوجه شدیم که به وسیله کدنویسی ساخته میشوند. به شخصی که برنامه های کامپیوتری را تولید میکند اصطلاحا برنامه نویس میگویند. وظیفه این شخص فکر کردن درباره نحوه پیاده سازی کارهایی است که ماشین قرار است انجام دهد میباشد. در این مرحله معمولا فرد مورد نظر با مسائل مختلفی روبرو میشود که نیاز دارد تا برای آنها راه حل های مناسب و بهینه ای پیدا کند. این کار در واقع بخشی از طراحی الگوریتم برنامه میباشد. بعد از پیدا کردن راه حل ها نوبت به کدنویسی آنها یا پیاده سازی این روش ها با زبان های برنامه نویسی میباشد. به فرد برنامه نویس معمولا توسعه دهنده نرم افزار نیز گفته میشود.آشنایی با زبان های برنامه نویسیدر دنیای کامپیوترها زبان های مختلف برنامه نویسی وجود دارند که اغلب شاید برای افرادی که قصد دارند وارد این حوزه شوند گیج کننده باشد. همانطور که انسانها دارای زبان های مختلفی برای ارتباط برقرار کردن با یکدیگر هستند. در دنیای برنامه نویسی نیز زبان های مختلفی تا به حال طراحی شده اند که هرکدام با هدفی خاص پا به این مسیر گذاشته اند.در بخش برنامه نویسی وب زبان های PHP, جاوا اسکریپت, روبی, سی شارپ از محبوبیت خاصی برخوردار هستند. همچنین از زبان پایتون نیز در ساخت برنامه هایی در بستر وب استفاده میشود.برای طراحی اپلیکیشن های موبایل از زبان های جاوا و کاتلین برای برنامه نویسی اندروید استفاده میشود. از زبان سویفت نیز در ساخت برنامه های سیستم عامل iOS استفاده میکنند. فریمورک فلاتر این امکان و به توسعه دهندگان میدهد که برای اکثر پلتفرم ها و سیستم عامل برنامه های کاربردی تولید کنند. برای آشنایی بیشتر میتوانید به مقاله فلاتر چیست؟ مراجعه کنید.آشنایی با انواع برنامه نویسیدنیای برنامه نویسی تنوع بسیار زیادی دارد. هر شخص معمولا در یک زمینه خاص به ساخت نرم افزار و اپلیکیشن میپردازد. درست مانند علم پزشکی که هر شخص در یک زمینه به خصوصی تخصص دارد.افراد معمولا برحسب علاقه زمینه مورد نظر برنامه نویسی خود را انتخاب میکنند. این انتخاب میتواند البته در سال های بعدی تغییر کند و یک توسعه دهنده وارد حوزه جدیدی شود.برنامه نویس سیستماین گروه از افراد در زمینه توسعه نرم افزارهای سیستمی که وظیفه تعامل با سخت افزار را دارند را برعهده دارند. معمولا در پروژه های طراحی سیستم عامل, فریمورک های مخصوص مدیریت سخت افزار همکاری میکنند.برنامه نویس شبکهبا گسترش اینترنت و استفاده از کامپیوترهای شخصی شبکه های کامپیوتری نیز با تغییرات بسیاری روبرو شده اند. برنامه نویسان شبکه باید درک عمیقی از ساختار شبکه, پروتکل های ارتباطی, TCP/IP و… داشته باشند تا بتوانند نرم افزارهای مورد نیاز را توسعه دهند.برنامه نویس بازیاین گروه از برنامه نویسان در زمینه گرافیک کامپیوتر, انیمیشن و بهینه سازی برنامه ها باید آگاهی کامل داشته باشند. همچنین اگر برای سخت افزار به خصوصی بازی طراحی میکنند با نحوه برنامه نویسی برای آن محصول نیز باید آشنا باشند.برنامه نویس وبافرادی که در زمینه برنامه نویسی وب فعالیت میکنند با مواردی همچون معماری های گوناگون, محدودیت های امنیتی, پروتکل های بستر اینترنت و… آشنا باشند.برنامه نویس موبایلبه دلیل محدود بودن منابع گوشی های موبایل نسبت به کامپیوترها این دسته از برنامه نویسان توجه ویژه به بهینه سازی برنامه, محدودیت حافظه و واکنشگرا بودن نرم افزار باید داشته باشند.اگر به برنامه نویسی موبایل علاقه دارید میتوایند این کار و با فریمورک فلاتر شروع کنید. برنامه نویس بلاکچینبلاکچین از مباحث جدید دنیای کامپیوترها میباشد که در یک دهه اخیر به وجود آمده است و کاربرد اساسی آن در حال حاضر ایجاد ارزهای دیجیتال میباشد. به دلیل محبوبیت ارزهای دیجیتال و همچنین پتانسیل های موجود در تکنولوژی بلاکچین امروزه برنامه نویسی بلاکچین از مباحث داغ حوزه فناوری میباشد. این گروه از توسعه دهندگان مسئول ساخت و نگهداری بلاکچین های اختصاصی, ساخت نرم افزارهای بلاکچین, قرارداد های هوشمند و… میباشند.منبع: برنامه نویسی چیست</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Fri, 26 Nov 2021 23:21:52 +0330</pubDate>
            </item>
                    <item>
                <title>چرا دیگه از فرانش استفاده نمیکنم؟</title>
                <link>https://virgool.io/coderlife/%DA%86%D8%B1%D8%A7-%D8%AF%DB%8C%DA%AF%D9%87-%D8%A7%D8%B2-%D9%81%D8%B1%D8%A7%D9%86%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%86%D9%85%DB%8C%DA%A9%D9%86%D9%85-jlpyzt9pncch</link>
                <description>آپدیت 2سال 1402 هستیم همچنان هیچ پرداختی و جوابی از سمت شرکت پردیس ونداد پارس یا همون فرانش  نداشتیم!نکته جالب اینجاست تمام محتویات های ویدیویی حذف شده یا حداقل لینک اونها از بین رفته و امکان تماشا وجود نداره, پولی هم که پرداخت نمیکنند اما میتونید دوره هارو بخرید و پول بدید بهشون :Dآپدیت 1الان تقریبا یک سال هست حتی تسویه حساب نامنظم قبل را هم ندارن و جواب ایمیل یا تماسی هم نمیدهند, حتی به درخواست حذف محتویات آموزشی مدرس ها هم توجهی نمیشه.با توجه به اینکه تمام مدرسان با فرانش قرارداد کتبی دارند راه حلی بعدی پیگیری قانونی از طرف مدرسان هست.مسئله بیشتر از تسویه حساب عدم پاسخگویی و احترام گذاشتن به کاربران است.این موضوع بازهم نشون داد که برگزار کنندگان سالیانه جشنواره وب ایران چجوری جایزه میدن!! از اولین دوره آموزشی که داخل وبسایت فرانش قرار دادم سه سالی میگذره و اوایل فکر میکردم میشه به این مجموعه به دید یک استارتاپ منظم و موفق نگاه کرد اما هرچی زمان بیشتر میگذشت نظرم در رابطه با فرانش تغییر میکرد, تا اینکه تصمیم گرفتم دیگه دوره ای روی فرانش قرار ندهم و از سایت های دیگه استفاده کنم و برای دوره های تخصصی تر هم وبسایت جداگانه راه اندازی کنیم.قبل از شروع به نوشتن دلایلم برای قطع همکاری با فرانش خواستم بگم که تو این مدت زمان هایی بوده که دوره های من جزو دوره های پرفروش ماه قرار گرفته اند و به این دلیل نکته و عرض کردم که شخصی فکر نکند به دلیل آمار پایین فروش یا بازدید این مطلب و مینویسم.تسویه حسابیکی از مهم ترین دلایل من برای قطع همکاری با فرانش تصمیم حساب بسیار نامنظم این مجموعه بود.نکات منفی این بخش در وهله اول تسویه حساب فقط یکبار در ماه هست که معمولا با ده روز تاخیر هم این کار انجام می شود.اما در یک سال اخیر تا به امروز تسویه حساب ها تقریبا هر سری بنا به دلایل مختلفی هر دو ماه یکبار انجام میشود که در آخرین شاهکار مدیریتی این گروه آخرین تسویه حساب آنها مربوط به ماه فروردین 99 می باشد و تا به امروز تیر 99 هنوز یک ریال هم از طرف این مجموعه پرداخت نشده.همچنین تصویر زیر میتونید ببینید در بازه زمانی 7 ماهه سال 98 فقط 4 بار تسویه حساب انجام شده.امنیتیکی دیگه از دلایل من برای ادامه ندادن به همکاری مشکلات امنیتی وبسایت هست.در واقع به همین دلیل هم روی تسویه حساب های منظم حساس هستم.نمیدونم این قضیه الان رفع شده یا نه اما مواردی قبلا پیش اومده که با اکانت شخص خود من و درآمدی که از سایت کسب کرده بودم دوره های مختلف خریداریمیشد.زمانی هم که به پشتیبانی اطلاع دادم اصلا زیر بار این قضیه نرفتن و گفتن هیچ حسابی هم نشده خودتون خرید کردید, حتی بعدا عکس پروفایل من هم تغییر کرد ولی بازهم پشتیبانی فرانش تلاشی برای بررسی و رفع ایراد نکردند.حتی امروزه هم یک ورود دو مرحله ساده نذاشتن برای تکرار نشدن این کار.ضعف تیم اجراییمتاسفانه هروز تیم اجرایی فرانش نسبت به قبل ضعیف تر عمل میکنه و مورد عجیبی که برای بنده پیش اومده قرار دادن دوره جدیدم رو سایت با نام و اکانت شخص دیگه !!بله دوره من برای شخص دیگری قرار داده شده بود و من 1 روز بعد متوجه این موضوع شدم.تخفیف های همیشگیچیزی که تو فرانش جدیدا تمومی نداره تخفیف 30درصدی همیشگی هست و شما به عنوان مدرس نمیتونید این تخفیف و غیر فعال کنید.اگر این تخفیف در مناسبت های خاصی در سال اعمال میشد اتفاقا خیلی تاثیر خوبی هم داشت ولی شما تو این یک سال اگر همیشه وارد وبسایت بشید این نوار قرمز رنگ و قطعا بالای سایت میبینید که زده مهلت تخفیف تا 12 شب هست و دوباره فردا از اول شروع میشه.اگر فرانش قصد داره همیشه تخفیف بده به کاربر خیلی خب از سهم خودش تخفیف بده چرا سهم مدرس و تخفیف میذاره روش بعد پرداخت میکنه یا میتونه گزینه ای بذاره برای مدرسین که روی هر دوره خواستن تخفیف بذارن.عدم نظارت بر دوره هاروی دوره های فرانش میتونم بگم تقریبا هیچ نظارت خاصی وجود ندارد نه از نظر کیفیت و نه قیمت دوره ها.همین مسئله باعث میشه کاربران به دوره های بی کیفیتی برخورد کنند و سراغ بقیه دوره های وبسایت نروند, درواقع تر و خشک باهم میسوزنن و حق کسایی که زمان میذارن روی کیفیت دوره ها خورده میشه.این نوشته من قصد تخریب نیست فقط به عنوان نقد هست و تجربه سه سال استفاده از فرانش و نوشتم و امیدوارم که مشکلات زودتر حل بشه.بروزرسانیماه قبل بالاخره بعد از سه ماه معطلی خواستم درخواست تسویه حساب ثبت کنم که به دلیل عجیبی که ممکن علتش باگ سایت باشه هر مبلغی ثبت میکردم سایت پیغام میداد که مبلغ مورد نیاز بیشتر از موجودی هست.در حالی که کمترین مبلغ قابل برداشت هم میزدم باز با همین خطا مواجه میشدم.این هم از پشتیبانی بسیار عالی فرانش که در تصویر زیر میبینید.این مکالمه کوتاه 2 روز طول کشید.</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Tue, 23 Jun 2020 21:40:41 +0430</pubDate>
            </item>
                    <item>
                <title>استفاده از الگوی Redux در Flutter</title>
                <link>https://virgool.io/@hharddy/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-redux-%D8%AF%D8%B1-flutter-blfjf9ka1x4w</link>
                <description>در برنامه نویسی فلاتر یکی از مباحث مهمی که وجود دارد مدیریت State هست.برای انجام این کار هم روش ها و پکیج های مختلفی وجود داره, اما به طور کلی راه های مدیریت State فلاتر عموما شامل موارد زیر می شود:BLoCReduxInherited WidgetInherited ModelScoped Modelدر مورد پیاده سازی Bloc در Flutter به طور کامل قبلا صحبت کردیم.بنابر این در این مطلب با مقدمات پیاده سازی الگوی Redux آشنا میشیم.Redux معماری است که به همراه جریان یکطرفه اطلاعات باعث میشود که توسعه برنامه آسان تر از قبل شود.ریداکس از بخش های مهم زیر تشکیل شده است که در ادامه به بررسی هر یک میپردازیم.StoreActionReducerViewبرای درک بهتر میتونید از تصویر زیر کمک بگیرید.در Redux بخش Store وظیفه نگهداری از آبجکت State و داره که در واقع نماینده State کل اپلیکیشن می باشد.حالا تمام Event یا رویداد های اپلیکیشن بیانگر یک Action هست به تابع Reducer ارسال میشه, یا در اصطلاح dispatch میشه.درباره Event در بحث پیاده سازی Bloc بیشتر صحبت کردیم.بر اساس این که چه نوع اکشنی ارسال شده باشه بخش Reducer میاد و State موجود در Store را بروزرسانی می کند.همچنین هر زمان که State جدیدی در Store قرار بگیرد View ما دوباره ساخته می شود.با استفاده از الگوی Redux اکثر کامپوننت ها از هم جدا شده و بروزرسانی رابط کاربری برنامه آسان تر می شود.در واقع فقط بخش منطقی برنامه در Reducer قرار میگیره, این تابع اکشن و مقدار فعلی State اپلیکیشن و دریافت میکند و یک آبجکت جدیدی از State برمیگرداند.خب تا به اینجا درباره Redux صحبت شد و هیچ مشکلی وجود نداشت, اما اگر در برنامه خود نیاز به یک بخش عملیات غیر همزمان داشته باشیم, مانند دریافت اطلاعات از اینترنت. در این حالت چه کار باید کنیم؟برای حل این مشکل از کامپوننتی به نام Middleware استفاده خواهیم کرد.این کامپوننت اکشن ها را قبل از رسیدن به Reducer بررسی می کند.همچنین اکشن و مقدار فعلی State اپلیکیشن را نیز دریافت می کند و میتواند با کتابخانه ها یا API های خارجی ارتباط برقرار کند. در نهایت این Middleware هست که تصمیم میگیره اکشن مورد نظر را به Reducer اصلی متصل کند یا خیر.ریداکس Redux در Flutterبرای پیاده سازی Redux در فلاتر ما دو پکیج بسیار با ارزش داریم که میتونن کارمون و آسون تر کنند.flutter_reduxreduxبرای درک بیشتر بهتره یک مثال عملی با همدیگه کار کنیم.در این مثال پیاده سازی یک اپلیکیشن لیست انجام کار یا همون TODO List و انتخاب کردیم.کدهای زیر مربوط به فایل main می باشد.در این فایل ما بخش Store را تعریف کردیم که شامل سه عضو State, تابع Reducer و Middleware می باشد.در بخش لایه برنامه نیز از ویجت MaterialApp استفاده کردیم داخل یک StoreProvider قرار دارد. این ویجت به عنوان پارامتر store دریافت می کند که میتواند آن را در اختیار ویجت های فرزند خود قرار دهد.main.dartکلاس AppState شامل لیست آیتم های کارهای مورد نیاز برای انجام هست و همچنین یک فیلد دیگر دارد که مشخص می کند متن اضافه کردن آیتم نمایش داده شود یا خیر.AppState.dartبرای نمایش لیست آیتم ها از کلاسی از نوع ViewModel کمک میگیریم. این کلاس شامل یک View از اطلاعات مشخصی هست که نیاز داریم نمایش دهیم با توجه به اکشن هایی که کاربر ایجاد می کند.در حقیقت این کلاس از طریق Store ساخته شده است._ViewModelحالا ما میتونیم از کلاس ViewModel خودمون استفاده کنیم.توجه داشته باشید که ما ویجت های خودمون و داخل StoreConnector قرار میدیم که بهمون اجازه میده تا کلاس ViewModel و از Store ایجاد کنیم.ToDoListPageدر کدهای بالا ما مشخص کردیم که کاربر وقتی بروی دکمه Add کلیک کند یک اکشن جدید از نوع DisplayListWithNewItemAction ارسال شود.این اکشن باعث میشود که State برنامه تغییر کند و یک TextField به کاربر نمایش دهد تا آیتم جدیدی ثبت کند.کلاس اکشن به شکل زیر تعریف می شود. classDisplayListWithNewItemAction{} و این هم Reducer مربوط به این اکشن.منبع:مرجع فارسی فلاتر https://virgool.io/flutter-community/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-state-%D9%88-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%A2%D9%86-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-x6yvt3ohwoa6 </description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Sun, 20 Oct 2019 20:20:20 +0330</pubDate>
            </item>
                    <item>
                <title>مدیریت State و روش های آن در فلاتر</title>
                <link>https://virgool.io/flutter-community/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-state-%D9%88-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%A2%D9%86-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-x6yvt3ohwoa6</link>
                <description>روش های مدیریت State در فریمورک هایی چون Flutter و React Native همیشه یکی از داغ ترین بحث هاست و افراد نظرات و شیوه های مختلفی برای انجام این کار دارند.در این مطلب هدف ما بررسی روش های مدیریت State در فریمورک فلاتر هست.کتابخانه و راه های مختلفی برای انجام این کار وجود داره و بعضی وقت ها افراد فرض میکنند که هرچقدر راه طولانی تر و سخت تری را طی کنند بهتر میتونند مدیریت State و پیاده سازی کنند اما فقط باعث افزایش پیچیدگی پروژه می شود. اما گاهی اوقات هم نتایج بسیار خوبی دربر خواهد داشت.پس توصیه میکنم که همیشه متکی به یک راه و روش یا کتابخانه نباشید و پروژه و نیازمندی های خودتون و بررسی کنید و سپس بهترین گزینه و انتخاب کنید.تعریف Stateاول از همه شاید بهتر باشه برای افرادی که هنوز مدت زمان زیادی نیست که با برنامه نویسی آشنا شده اند توضیح بدیم که State به شکل ساده چی هست.به اطلاعاتی که در طول چرخه حیات یک اپلیکیشن تغییر میکنند State میگیم.رابط کاربری برنامه شما در واقع نمایشی از این State ها می باشد و وقتی مقدار یک State را تغییر می دهد ویجت ها و رابط کاربری اپلیکیشن دوباره از نو ساخته می شود.چرا نیاز به مدیریت State داریمهمزمان با اینکه پروژه شما رفته رفته بزرگ تر و پیچیده تر میشه شما با باگ هایی برخورد میکنید که مستقیما به دلیل جریان ورود اطلاعات توسط کاربر یا منابع دیگه می باشد.مدیریت صحیح روش های بروزرسانی State باعث میشه که کمتر با خطاهایی در زمان اجرای برنامه مواجه شوید و کارایی اپلیکیشن بهبود پیدا می کند.فلاتر بصورت پیش فرض یک سری پکیج داخل خودش داره که برای مدیریت State میتونیم ازشون استفاده کنیم که شامل موارد زیر هست:StatefulWidgetStatefulBuilderStreamBuilderInheritedWidgetعلاوه بر این ابزارهای مختلف دیگه مثل RxDart و Bloc هم به عنوان موارد خارجی کاربرهای زیادی برای ما دارند.اگر در یک صفحه از اپلیکیشن خودتون نیاز به تغییرات اطلاعات ندارید و صرفا حالت نمایشی دارند محتویات, میتونید تمام State ها را داخل یک ویجت قرار دهید.اما به تصویر زیر نگاه کنید, اگر نیاز دارید تا اطلاعاتی و از ویجت های فرزند به ریشه درخت ارسال کنید در این صورت نیاز به یکی از روش های مدیریت State دارید.ویجت StatefulWidget در این ویجت با استفاده از دستور SetState میتونید مقادیر خودتون و هروقت که نیاز بود تغییر بدید.در واقع اولین و ساده ترین راه برای مدیریت state همین روش می باشد.ویجت StatefulWidget نیاز به دو کلاس مختلف و مقداری کدنویسی اضافه داره که باعث گرفته شدن وقت میشه و راه های آسان تری هم برای پیاده سازی این روش وجود داره که باهم دیگه بررسی میکنیم.استفاده از StatefulBuilder میتونه جایگزین بهتری باشه در برخی مواقع.ویجت InheritedWidgetاین ویجت به تمام ویجت های فرزند خودش یک context اختصاص میده و با استفاده از آن میتونید تغییراتی که نیاز دارید و اعمال کنید.این روش هم نیاز به کدنویسی زیادی نسبت به بقیه روش ها داره که باعث میشه افراد زیادی استفاده نکنند.و از روش های دیگه مثل Bloc, Redux, ,Scoped Model استفاده کنند.ترکیب StreamBuilder + RxDart BehaviorSubjectاین روش یکی از بهترین راه ها برای مدیریت State های global می باشد که انعطاف پذیری بالایی دارد و به خوبی نیازهای شما را رفع می کند.BehaviorSubject ویژگی و قابلیت های متنوعی دارد که باعث میشود به ابزاری مناسب برای مدیریت State تبدیل شود.دارای یک مقدار ارزش فعلی ( current value) هست که به صورت همروند قابل دسترس است.قابلیت تبدیل به عملگرهای RxDart را دارد.دارای یک جریان (stream) بصورت اشتراکی و broadcast می باشد.در زیر باهم دیگه به بررسی یک مثال میپردازیم که قصد داریم از عدد صفر شروع به شماردن کنیم.در واقع مقدار current value را میخونیم و سپس یک عدد به آن اضافه میکنیم.کلاس Counter بخش منطقی برنامه و ایجاد میکند و همچنین یک state که از همه جا به آن دسترسی داریم.در واقع در این روش از الگوی Observable استفاده میکنیم و stream$ را به StreamBuilder  پاس میدیم تا هروقت مقداری جدیدی داخل آن قرار گرفت ویجت ما هم آپدیت بشه.تنها مشکلی که روش بالا دارد این هست که از یک متغیر سراسری برای اشتراک گذاری state استفاده می کند.الگوی BLoCروش BLoC تقریبا شبیه به InheritedWidget می باشد اما مرتب تر و قابل بسط دادن می باشد.برای این که بتونید راحت تر این نوع الگو را پیاده سازی کنید میتونید از پکیج flutter_bloc استفاده کنید.روش پیاده سازی تقریبا شبیه به Redux می باشد که شامل موارد زیر هست.تعریف رویداد Events/Actionsایجاد یک کلاس (bloc) که mapEventToState را پیاده سازی می کند و هر زمان که رویدادی رخ داد مقدار State را محاسبه می کند.قرار دادن BlocProvider در ریشه درخت ویجت ها تا تمام فرزندان بتوانند به مقدار آن دسترسی داشته باشند.استفاده از BlockBuilder برای بازسازی ویجت زمانی که State تغییر می کند.استفاده از dispatch برای بررسی رویدادهایی که مقدار state را تغییر می دهند.ابزارهای جانبیبه غیر از موارد بالا که بررسی کردیم ابزارها و کتابخانه های مختلف دیگری برای مدیریت State در فلاتر وجود دارند که مهم ترین آنها شامل موارد زیر هست.Scoped ModelReduxMobXFlutter Hooksمنبع: مرجع فارسی فلاتر</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Wed, 24 Jul 2019 13:43:14 +0430</pubDate>
            </item>
                    <item>
                <title>جا به جایی بین صفحات در فلاتر</title>
                <link>https://virgool.io/flutter-community/%D8%AC%D8%A7-%D8%A8%D9%87-%D8%AC%D8%A7%DB%8C%DB%8C-%D8%A8%DB%8C%D9%86-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-t15exkpe5vod</link>
                <description> در هر برنامه و اپلیکیشنی ما نیاز داریم که بتونیم بین صفحات جا به جا شویم و کاربر و به مکان های مختلف منتقل کنیم به دلیل اینکه هر برنامه از صفحات مختلف تشکیل شده که هرکدام اطلاعات متفاوتی و نمایش می دهند.در Flutter به صفحات route میگوییم که در اندروید اکتیویتی نام دارد و در برنامه نویسی iOS هم ViewControllerحالا برای اینکه بتونیم مسیر خودمون و ایجاد کنیم و بین دو صفحه جا به جا شویم باید از کلاس Navigator استفاده کنیم.این کلاس یک ساختمان داده پشته در اختیارمون قرار میده که صفحات برنامه و داخل خودش ذخیره میکنه با دستور push و برای برگشتن به صفحه قبلی هم از دستور pop استفاده خواهیم کرد.برای این که بهتر متوجه بشید اجازه بدید با یک مثال جلو بریم.در مثال زیر ما دوتا صفجه مختلف ایجاد کردیم با نام های FirstRoute و SecondRouteFirstRoute SecondRoute برای وارد شدن به یک صفجه جدید از دستور Navigator.push() استفاده می کنیم.دستور پوش یک route و به پشته اضافه می کند. در دستور بالا با کلیک کردن روی دکمه در صفحه اول وارد صفحه دوم می شویم برای اینکار از MaterialPageRoute استفاده کردیم.همین کد و برای دکمه صفحه دوم نیز میتونیم بنویسیم. اما چون مقدار صفحه اول ما در پشته ذخیره شده نیازی نیست که اینکار و کنیم و خیلی راحت مقدار صفحه اول و از پشته میخوانیم.برای مشاهده آموزش های متنی و دوره های ویدیویی Flutter میتونید از وب سایت ما, مرجع فارسی فلاتر بازدید کنید. https://flutter-learn.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%88%db%8c%d8%af%db%8c%d9%88%db%8c%db%8c-%d9%81%d9%84%d8%a7%d8%aa%d8%b1-flutter-%d8%a8%d9%87-%d8%b2%d8%a8%d8%a7%d9%86-%d9%81%d8%a7%d8%b1%d8%b3%db%8c/ </description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Wed, 20 Mar 2019 11:30:45 +0330</pubDate>
            </item>
                    <item>
                <title>چرا باید برنامه نویسی فلاتر Flutter یاد بگیریم</title>
                <link>https://virgool.io/@hharddy/%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-flutter-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-mhhzbaya3z3o</link>
                <description>گوگل سال 2017 از فریموورک متن بازی به نام فلاتر Flutter رونمایی کرد که یک ابزار چندسکویی برای تولید اپلیکیشن های Native برای سیستم عامل های اندروید و ios می باشد.بعد از گذشت حدود دو سال فلاتر کم کم راه خودش و پیدا کرده و برنامه نویسان زیادی به تولید اپلیکیشن با این فریموورک روی آورده اند, اما ایا لازم است شما هم به سراغ فلاتر بروید؟برای جواب به این سوال باید اول از همه در نظر بگیرید که چه انتظاراتی از فلاتر دارید که سیستم برنامه نویسی فعلی شما پاسخگوی آن نیست.پس بذارید یکمی درباره ویژگی های فلاتر و زبان دارت صحبت کنیم.Hot Reloadفلاتر ویژگی Hot Reload و مثل خیلی دیگه از ویژگی های React Native به ارث برده.به لطف این قابلیت دیگه نیازی ندارید که با ایجاد هر تغییری در کدنویسی برنامه و از نو کامپایل کنید و زمان از دست بدهید.همیشه وقتی داریم روی یک اپلیکیشن کار میکنیم در طول توسعه بارها اندازه متن,رنگ, تم و ... را تغییر میدیم پس خیلی خوبه اگه بتونیم تو زمان صرفه جویی کنیم و هربار منتظر کامپایل شدن کدها نشویم.زبان دارتزمانی که هنوز فلاتر و شروع نکرده بودم غر میزدم که چرا گوگل از همون کاتلین یا جاوا استفاده نکرده! تا قبل از اون حتی مثل خیلی های دیگه اسم زبان دارت و هم نشنیده بودم ولی وقتی شروع به کدنویسی با دارت کردم دیگه نمیتونستم دست بکشم از این نعمت.اگر با زبان جاوا یا سی شارپ آشنایی دارید دارت هیچ پیچیدگی براتون نداره خیلی هم جذاب میشه.دیگه نیازی نیست برای کار با سرویس های مختلف مثل اندروید از Multi Thread استفاده کنیم.کارها با زبان دارت خیلی ساده تر و در مدت کوتاه تری انجام می شود.در اینجا هم مثل جاوا اسکریپت ما از مفاهیمی مثل await استفاده می کنیم.متریال دیزاینفلاتر به طراحی متریال دیزاین فوق العاده ای می دهد و این فریموورک ویجت های بسیار زیادی و برای طراحی رابط کاربری متریال دیزاین اختصاص داده است.ویجت هایی که اگر با React Native میخواستیم از آنها استفاده کنیم باید ویجت اختصاصی خودمون و مینوشتیم یا از کتابخانه های مختلف استفاده می کردیم.پکیج های مختلفزبان دارت مخزن پکیج متنوعی داره که به راحتی میتونید از آن استفاده کنید و هرچیزی که نیاز دارید و پیدا کنید.طبیعتا این مخزن به گستردگی npm نیست.اگر قصد دارید که برنامه نویسی فلاتر و شروع کنید میتونید از دوره آموزشی من در سایت فرانش استفاده کنید. آموزش فریمورک فلاتر Flutter فصل اول</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Mon, 04 Mar 2019 11:15:27 +0330</pubDate>
            </item>
                    <item>
                <title>مقایسه فریموورک Xamarin و Flutter</title>
                <link>https://virgool.io/@hharddy/flutter-gh2qfxlkxjuu</link>
                <description> استفاده از موبایل در دهه هی گذشته دچار تغییراتی زیاده شده طبق آمار اعلام شده حدود ۲٫۲ میلیارد گوشی هوشمند در دنیا در حال استفاده می باشد, در این میان روش و ابزار های برنامه نویسی برای موبایل ها هم تغییرات زیادی کرده اند تمام گوشی های هوشمند دنیا از یکی از سه سیستم عامل ویندوز فون, اندروید و یا iOS استفاده می کنند. تا سال ها قبل برای توسعه  اپلیکیشین باید از زبان های نیتیو استفاده می شد برای مثال از زبان جاوا برای اندروید و از سویفت برای iOS به همین دلیل برنامه نویسی اپلیکیشن برای شرکت ها هزینه زیادی ایجاد می کرد چون باید دو تیم مختلف برای هر پلتفرم استخدام می کردند. با پیدایش فریموورک های چندسکویی که به افراد اجازه میداد با یک زبان برنامه نویسی برای سیستم عامل های مختلف برنامه نوشت این هزینه های اضافی از شرکت ها کم شد فرمیوورک هایی مثل فون گپ,زامارین,Flutter,React Native و…در مقاله قصد داریم که با هم دیهگه مقایسه ای بین زامارین و Flutter داشته باشیم.زامارین Xamarinزامارین در سال ۲۰۱۱ پا به عرصه گذاشت و از زبان محبوب سی شارپ برای ساخت اپلیکیشن های خود استفاده می کند. این فریموورک در سال ۲۰۱۶ توسط مایکروسافت خریداری شد. زامارین به توسعه دهندگان امکان دسترسی به API نیتیو هر سیستم عامل و می دهد.زامارین هم اکنون بصورت متن باز در اختیار همگان قرار دارد.                فلاتر Flutterدر مورد فلاتر قبلا صحبت کردیم.( فلاتر چیست) اما اگر بصورت مختصر توضیح دهیم فلاتر فریموورک توسعه یافته توسط گوگل می باشد که بصورت متن باز ارائه شده است و از زبان برنامه نویسی دارت که مخصوص خود گوگل است استفاده می کند.مقایسه Flutter و Xamarinفلاتر محصوص جدیدی هست که نسخه بتای آن در ژانویه سال ۲۰۱۸ منتشر شد و به همین دلیل توسعه دهندگانی که از زامارین استفاده می کنند بسیار بیشتر از فلاتر می باشند. طبق آمار حدود ۷٫۲ درصد کاربران Stackoverflow از زامارین استفاده می کنند و بنا به گفته مایکروسافت جامعه زامارین ۱٫۲ میلیون کاربر دارد اما Flutter از چنین آماری طبیعتا برخوردار نیست.تصویر زیر مقایسه ای کوچک بین دو فریموورک را نشان می دهد.پرتابل بودناز Flutter برای ساخت اپلیکیشن های اندروید و iOS فقط می توان استفاده کرد اما زامارین برای ویندوز هم استفاده می شود. اکوسیستم بزرگ تر زامارین یک مزیت نسبت به فلاتر می باشد. مشکل دیگر این هست که اپلیکیشن های Flutter قابلیت پرتابل بودن یا جرا شدن روی سیستم عامل ویندوز فون را ندارند. هرچند که ویندوز فون بخش بسیار کوچکی را تشکیل می دهد اما شاید در آینده این سهم افزایش پیدا کرد.همچنین Flutter از سیستم عامل های ۳۲ بیتی پشتیبانی نمیکند این به این معنی است که اگر برای گوشی های قدیمی مثل آیفون۵ قصد طراحی اپلیکیشن داشته باشید باید از زامارین استفاده کنید.زبان برنامه نویسیفریموورک زامارین از زبان محبوب C# استفاده می کند که افراد خیلی زیادی با آن آشنا هستند در آن طرف میدان فلاتر از زبان برنامه نویسی جدید دارت استفاده می کند. دارت زبان نسبتا کمتر شناخته شده ای است که گوگل چند سال قبل آنرا معرفی کرده. دارت بسیار بسیار شبیه به زبان جاوا هست و اگر با جاوا آشنایی داشته باشید دارت ۱-۲ روز بیشتر زمان شما را نمیگیرد.دسترسی نیتیو به سیستم عاملدر فلاتر کد های دارت توسط AoT  به نیتیو تبدیل می شوند اما هنوز هم به Dart VM نیاز دارند. علت این کار هم این هست که سیستم عامل iOS از JIT پشتیبانی نمی کند. فلاتر همچنین به شما اجازه می دهد که پلاگین های مخصوص به خود را بسازید.فریموورک فلاتر به تمام API ها و سرویس دسترسی دارد مثل انواع سنسور ها.در زامارین کد های C# به کد ماشین تبدیل می شود سپس در پلتفرم اندروید زامارین از JIT استفاده می کند و در iOS ازAoT .زامارین از API های دات نت برای دسترسی به سرویس ها کمک می گیرد.طراحی UIزامارین از کامپوننت های نیتیو برای رابط کاربری استفاده می کند که همین باعث می شود با بروزرسانی هر پلتفرم مدت ها طول بکشد تا زامارین کامپوننت های خود را آپدیت کند به همین دلیل زامارین بیشتر برای بخش منطقی برنامه مناسب هست و برای ساخت اپلیکیشن های با UI متوسط به بالا و سنگین به هیچ وجه مناسب نیست.اما فلاتر از ویجت های درونی خود استفاده می کند و از کامپوننت های نیتیو پشتیبانی نمی کند و این ویجت ها به المان های رابط کاربری تبدیل می شوند. فلاتر طیف وسیعی از ویجت ها و لایه ها را در اختیار شما می گذارد و از انیمیشن و افکت های مختلف پشتیبانی می کند که به شما اجازه ساخت رابط کاربری ۲ بعدی را به راحتی میدهد.فلاتر به دلیل تازه بودن هنوز بخش UI آن در حال توسعه می باشد و از پتانسیل های بالایی در آینده برخوردار هست.تجربه برنامه نویسیFlutter از قابلیت hot reload بهره میبره که بدون اجرا و کامپایل کردن برنامه میتونید تغییرات خودتون و ببینید و اگر برنامه به خطایی خورد و دوباره اجرا کردید مقدار state های تغییری پیدا نمی کند که باعث می شو برنامه نویسی خیلی سریع تر و لذت بخش تر باشد. همچنین در Flutter از زبان های نیتیو مثل کاتلین,جاوا,سویفت نیز میتونید استفاده کنید.سایز فایل برنامهدر ابتدا انتشار Flutter سایز فایل apk خروجی حدود ۴۰مگابایت بود در حالی که در آن زمان زامارین سایزی در حدود ۲۰مگابایت ایجاد میکرد. امروز با گذشت زمان سایز apk در Flutter به ۴مگابایت رسیده و زامارین ۷مگابایت.منبع: مرجع فارسی آموزش Flutter</description>
                <category>hesam</category>
                <author>hesam</author>
                <pubDate>Sun, 25 Nov 2018 21:42:21 +0330</pubDate>
            </item>
            </channel>
</rss>