<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمود پرنده</title>
        <link>https://virgool.io/feed/@mahmoudparandeh</link>
        <description>مدیر پروژه و بنیان گذار شرکت بهین فناوران آرکا. عاشق برنامه نویسی و مطالب جدید در حوزه فناوری اطلاعات</description>
        <language>fa</language>
        <pubDate>2026-06-07 15:34:21</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/317356/avatar/m06rus.png?height=120&amp;width=120</url>
            <title>محمود پرنده</title>
            <link>https://virgool.io/@mahmoudparandeh</link>
        </image>

                    <item>
                <title>اهمیت تست نویسی در برنامه نویسی</title>
                <link>https://virgool.io/arkatech/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D8%AA%D8%B3%D8%AA-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-iwi1ledmdh7b</link>
                <description>هر برنامه کاربردی که نوشته می‌شود، از یک سری کدها تشکیل شده است. ممکن است کدها دارای مشکلاتی باشند که به اصطلاح به آن باگ گفته می‌شود. تست نویسی باعث می‌شود باگ‌های کمتری تولید شده و تجربه کاربری هنگام استفاده با برنامه کاربردی شما افزایش یابد.اهمیت تست نویسی در برنامه نویسیانواع تست‌نویسی:Unit Test: به تست نموندن کوچکترین واحد در برنامه‌نویسی که معمولا توابع آن هستند، گفته می‌شود.Integration Test: به تست مجموعه‌ای از واحدها و توابع گفته می‌شود.Functional Test: به تست یک ویژگی یا عملکرد در برنامه گفته می‌شود.نحوه تست‌نویسی:برای یک قسمت از برنامه می‌توان چندین تست نوشت که شامل تست‌هایی با نتایج درست و نتایج نادرست هستند. در واقع در هنگام تست نوشتن تمام انتظارات خود از ‌ای متخلف برنامه را شبیه‌سازی کرده و در قالب‌هایی ارائه می‌دهیم تا مطمئن شویم، هم به ازای ورودی‌های درست در شرایط مطلوب جواب درست بگیریم و هم به ازای ورودی‌های نادرست جواب نادرست از پیش تعیین شده دریافت کنیم.اگر تست‌های به اندازه کافی کامل باشند می‌توان اطمینان حاصل کرد که به ازای هر ورودی، ‌ای مشخص و از پیش تعیین شده وجود دارد.ابزارهای تست‌نویسی در بکند:در حوزه بکند برای زبان برنامه‌نویسی php از phpUnit برای مدیریت و نوشتن انواع تست‌ها استفاده می‌شود و برای پروژه‌های مبتنی بر dotNet از xUnit و بقیه ابزارها توسعه داده شده توسط مایکروسافت برای اینکار استفاده می‌کنیم. برای تست برنامه‌های مبتنی بر جاوااسکریپت نیز می‌توان از jest استفاده کرد.زمان‌بر بودن تست‌نویسی:از طرفی تست‌ها با اینکه برای پروژه‌ها لازم و اساسی هستند ولی به دلیل افزایش نزدیک به دو برابر و بیشتر زمان تکمیل پروژه اکثر کارفرماها از آن چشم پوشی کرده و احتمال وجود باگ و خطا در سیستم را به تست نوشتن با زمان تحویل بیشتر ترجیح می‌دهند.جمع‌بندی و نتیجه‌گیری:تست‌نویسی یک فرآیند لازم برای توسعه برنامه‌های کاربردی است. به کمک تست‌نویسی می‌توان اطمینان حاصل کرد در صورت تغییر یک قسمت از برنامه، این تغییر بر روی کدام قسمت‌ها تاثیر می‌گذارد و باعث ایجاد باگ می‌شود. کارفرماها نیز باید به این نکته توجه داشته باشند که برنامه بدون باگ و با زمان توسعه بیشتر بهتر از برنامه با باگ و زمان توسعه کمتر است. در دراز مدت تاثیر باگ بر روی تجربه کاربری ملموس‌تر خواهد بود.ممنون که این پست رو مطالعه کردین، خوشحال میشیم شما هم تجربه تون با ما به اشتراک بزارین :)وبسایت |  اینستاگرام  | لینکدین  | بیهنس</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Mon, 30 Nov 2020 16:50:31 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی و بررسی IDE و Editor ها</title>
                <link>https://virgool.io/arkatech/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-ide-%D9%88-editor-%D9%87%D8%A7-srpsuu1kxivu</link>
                <description>برنامه‌نویسان برای توسعه برنامه‌ها نیاز به محیطی دارند تا بتوانند کدهای خود را در آن بنویسند. برای این کار می‌توانند از دو ابزار IDE و یا Editor استفاده کنند.معرفی و بررسی IDE و Editor هاIDE به نرم‌‌افزای گفته می‌شود که به صورت جامع و یکپارچه شامل تمام ابزارهای مورد نیاز برنامه‌نویس جهت توسعه برنامه خود است.برای مثال یک IDE شامل ابزارهای اتصال به دیتابیس، تست و دیپلوی برنامه، ترمینال و سایر ابزارهای مفید است. معمولا IDE ها برای یک زبان خاص توسعه داده شده‌اند و با یک IDE که مخصوص PHP هست نمی‌توان کد اندروید نوشت. در مقابل Editor شامل ابزارهای کمتری است و صرفا برای نوشتن کد مناسب است و می‌توان زبان‌های مختلف را در آن نوشت. در ادامه به بررسی چند IDE و Editor معروف می‌پردازیم.Atom (Editor)در جدول زیر به بررسی معایب و مزایای Atom اشاره شده است.JetBrains Family (IDE)در جدول زیر به بررسی معایب و مزایای JetBrains Family  اشاره شده است.Visual Studio (IDE)در جدول زیر به بررسی معایب و مزایای Visual Studio  اشاره شده است.Visual Studio Code (Editor)در جدول زیر به بررسی معایب و مزایای Visual Studio Code اشاره شده است.Brackets (Editor)در جدول زیر به بررسی معایب و مزایای Brackets  اشاره شده است.جمع‌بندی و نتیجه‌گیریدر این پست به بررسی IDEها و Editorهای معروف پرداختیم. هرکدام دارای مزایا و معایب مخصوص به خود هستند. در صورتی که شما یک برنامه‌نویس .Net هستید بهتر است سراغ استفاده از Visual Studio در ویندوز و مک و در لینوکس به Visual Studio Code بروید. در صورتی که نمی‌خواهید از تمام امکانات IDEها استفاده کنید بهترین گزینه برای شما Visual Studio Code است. در صورتی که نیاز به یک محیط یکپارچه برای توسعه برنامه خود دارید خانواده JetBrains بهترین انتخاب برای شما است.ممنون که این پست رو مطالعه کردین، خوشحال میشیم شما هم تجربه تون با ما به اشتراک بزارین :)   وبسایت |  اینستاگرام  | لینکدین  | بیهنس</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Sun, 22 Nov 2020 15:49:15 +0330</pubDate>
            </item>
                    <item>
                <title>داکر چیست ؟</title>
                <link>https://virgool.io/arkatech/%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA-g1mq5hpixzdy</link>
                <description>داکر یک زیرساختی است که به کمک آن می‌توایم نرم‌افزارها را به صورت مجزا و توزیع شده اجرا کنیم. به کمک داکر می‌توان اپلیکیشن‌ها را مدیریت کرد، به آن‌ها رم، پردازنده و سایر منابع اختصاص داد، هر کدام از کانتینرها به صورت ایزوله منابع اختصاصی خودشان را داشته باشند. به صورت کلی‌تر داکر به صورت یک مجازی‌ساز عمل می‌کند و بر روی آن می‌توان از image ها با سیستم‌عامل‌های مختلف استفاده کرد.چرا از داکر باید استفاده کرد؟مدیریت منابع را آسان نموده استفرآیند deploy یک سرویس یا اپلیکیشن را بهتر و آسان می‌کندامکان scale up سرویس و اپلیکیشن به راحتی امکان پذیر استکانتینرهایی که بر روی داکر استفاده می‌شوند جدا از سیستم‌عامل اصلی سیستم هستند. برای مثال شما می‌توانید بر روی سیستم‌عامل اوبونتو به کمک داکر، image سیستم‌عامل cent os را استفاده کنیداستفاده اشتراکی چندین داکر از یک منبع به راحتی امکان‌پذیر استچه زمانی از داکر استفاده نکنیم؟به صورت کلی در صورت امکان باید به سمت داکرایز کردن اپلیکیشن‌ها و سرویس‌ها حرکت کرد اما در مواقعی به خصوص برای ایرانی‌ها ممکن است مشکلاتی وجود داشته باشد. مواردی که در آن می‌توان از داکر استفاده نکرد به شرح ذیل است:اگر سیستم‌ اصلی دارای منابع محدود و کمی باشدمحدودیت استفاده برای کاربران ایرانی که از سرور ایرانی استفاده می‌کنند به دلیل تحریم‌هایک نکته مهم در استفاده از داکر این است که حتما داده‌ها را خارج از محیط داکر ذخیره کنید! در غیر این صورت در صورتی که سرویس داکر ریستارت شود، داده‌های شما از بین خواهند رفت.جمع‌بندی و نتیجه‌گیریداکر یک زیرساختی است که مزایای فراوانی را برای deploy در اختیار برنامه‌نویسان قرار می‌دهد. بنابراین توصیه می‌شود برنامه‌نویسان در اولین فرصت اقدام به یادگیری و داکرایز کردن اپلیکیشن‌های خود کنند.نظرتون رو در مورد این مطلب برامون بنویسین و اگر دوست داشتین یه سر به صفحه اینستاگراممون بزنید :)</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Sat, 14 Nov 2020 14:49:00 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی فریم‌ورک‌های برنامه نویسی سمت Back-end</title>
                <link>https://virgool.io/arkatech/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%81%D8%B1%DB%8C%D9%85%D9%88%D8%B1%DA%A9%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B3%D9%85%D8%AA-back-end-typziuqh4rpa</link>
                <description>در این سری جلسه از جلسات تک تاک، به بررسی فریم‌ورک‌های برنامه‌نویسی بکند پرداختیم. سعی کردیم از هر زیان‌برنامه‌نویسی محبوب یک فریم‌ورک رو مورد بررسی قرار بدیم. مواردی که انتخاب کردیم شامل: Laravel، Gin، ASP .Net Core، Express، Django و Spring هستند. ابتدا یک توضیح خلاصه‌ای از هر کدام براتون می‌گیم و بعد به بررسی مزایا و معایب آن‌ها می‌پردازیم.فریم‌ورک Laravelاین فریم‌ورک یکی از معروف‌ترین و قدیمی‌ترین فریم‌ورک‌های مبتنی بر PHP است. این فریم‌ورک مبتنی بر معماری MVC ساخته شده و محبوب‌ترین فریم‌ورک PHP شناخته شده است. این فریم‌ورک به دلیل قدمت بالای خود دارای انواع پکیج‌های آماده هست که کار برنامه‌نویسان برای ساخت وب اپلیکیشن‌ها را آسان نموده است.جدول مزایا و معایب فریم ورک لاراولفریم‌ورک Ginفریم‌ورک Gin یکی از فریم‌ورک‌های زبان Go Lang است. این فریم‌ورک به دلیل استفاده از زبان Go کارایی بسیار بالایی دارد. از دیگر مزایای این فریم‌ورک قابلیت نصب بر روی تمامی سیستم‌عامل‌ها می‌باشد.جدول مزایا و معایب فریم ورک GINفریم‌ورک ASP .Net Coreفریم‌ورک ASP .Net Core یکی از جدیدترین فریم‌ورک‌های شرکت مایکروسافت است که به صورت متن‌باز و کراس پلتفرم ارائه شده است. بر خلاف سری قبلی ASP .Net که فقط بر روی سیستم‌عامل ویندوز قابل اجرا بود، فریم‌ورک جدید بر روی تمامی سیستم‌عامل‌ها قابل اجرا بوده و سرعت بسیار بالایی دارد.جدول مزایا و معایب فریم ورک ASP.NET CORE فریم‌ورک Expressاین فریم‌ورک بر مبنای Node.js گسترش یافته و یکی از محبوب‌ترین و ساده‌ترین فریم‌ورک‌های مبتنی بر Node.js است. این فریم‌ورک با زبان محبوب جاوا اسکریپت قابل کدنویسی است و بیشتر برای افرادی که می‌خواهند به صورت فول استک برنامه‌نویسی کنند مناسب است.جدول مزایا و معایب فریم ورک EXPRESS JS فریم‌ورک Djangoفریم‌ورک Django یکی از فریم‌ورک‌های مبتنی بر زبان محبوب Python است و از الگوی معماری MVT پیروی می‌کند. این فریم‌ورک به دلیل استفاده از زبان Python برای کسانی که از این زبان در کارهای آکادمیک استفاده می‌کنند ممکن است جذاب باشد.جدول مزایا و معایب فریم ورک Djangoفریم‌ورک Springاین فریم‌ورک یکی از معروف‌ترین و محبوب‌ترین فریم‌ورک‌های مبتنی بر Java است. این فریم‌ورک فقط مبتنی بر وب نیست و می‌توان برنامه‌های مختلفی با آن ساخت. این فریم‌ورک به دلیل کارایی و امکانات زبان Java بیشتر در برنامه‌های کاربردی سازمانی نظیر بانک‌ها استفاده می‌شود.جدول مزایا و معایب فریم ورک Django نتیجه‌گیری و جمع‌بندیدر این پست نظر بچه‌های فنی شرکت راجع به فریم‌ورک‌های مختلف برنامه‌نویسی بکند رو با هم بررسی کردیم. اگر بازار کار ایران را در نظر بگیریم، یادگیری Laravel، ASP .Net Core و Express نسبت به بقیه موارد بازار کار بهتری دارند و یادگیری این فریم‌ورک‌ها توصیه می‌شود. در صورتی که برای اولین بار می‌خواهید برنامه‌نویسی بکند را شروع کنید و هیچ اجباری در انتخاب فریم‌ورک ندارید، انتخاب ASP .Net Core می‌تونه برای شما مناسب باشه.</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Sun, 08 Nov 2020 14:33:10 +0330</pubDate>
            </item>
                    <item>
                <title>روش های API نویسی؛ REST یا GraphQL</title>
                <link>https://virgool.io/arkatech/%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-api-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-rest-%DB%8C%D8%A7-graphql-gh1apeoxga8i</link>
                <description>امروز اولین جلسه TechTalk شرکت بود و قرار بود راجع به این که کدوم روش برای نوشتن API بهتر هست، بحث کنیم. اول می‌خوایم یه توضیح مختصر راجع به هر کدوم از این روش‌ها بهتون بدیم و بعد نتیجه بگیریم. روش REST:این روش یکی از شناخته‌شده‌ترین روش‌ها بین برنامه‌نویسان برای نوشتن API هست. در این روش که مبتنی بر پروتکل HTTP هست، از متدهایی مانند GET، POST، PUT و DELETE برای ایجاد ارتباط با سرویس بکند استفاده می‌شه.روش GraphQL:این روش به نسبت REST جدیدتر بوده و توسط شرکت فیسبوک به‌وجود آمده است. GraphQL به جای متدهای موجود در پروتکل HTTP از دو روش query و mutation برای ارتباط با سرویس بکند استفاده می‌کند. متد query معادل خواندن و مابقی عملیات (نوشتن، بروزرسانی و حذف) توسط متد mutation انجام می‌شود.مزایا و معایب RESTما برای مقایسه این دو روش پس از بحث تقریبا 1 ساعته دو جدول آماده کردیم که در جدول 1 راجع به REST توضیحاتی دادیم که می‌تونین مشاهده کنین:مزایا و معایب GraphQLنتایج جدول 2 هم شامل بحث راجع به GraphQL بود که چون یه تکنولوژی جدید توی شرکت محسوب می‌شد و تعداد افراد کمتری باهاش آشنا بودن اوایل گاردهایی گرفته می‌شد اما در مجموع بحث‌ها مفید بودند.نتیجه‌گیری و جمع‌بندیدر پایان جلسه به این نتیجه رسیدیم که هیچ تکنولوژی بر دیگری ارجحیت نداره و ماهیت پروژه هست که مشخص می‌کنه از کدوم روش استفاده کنیم. از این پس قرار شد اگر پروژه‌هامون بیشتر محتوایی باشند از GraphQL استفاده کنیم و در صورتی که عملیات POST، PUT و DELTE بیشتر بود، از روش REST استفاده کنیم.اگر تجربه‌ای یا دیدگاهی راجع به این دو روش دارین خوشحال می‌شیم با ما به اشتراک بگذارین ?</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Thu, 22 Oct 2020 10:49:05 +0330</pubDate>
            </item>
                    <item>
                <title>مدیر خوب: ریاست، رهبری یا هر دو؟</title>
                <link>https://virgool.io/arkatech/%D9%85%D8%AF%DB%8C%D8%B1-%D8%AE%D9%88%D8%A8-%D8%B1%DB%8C%D8%A7%D8%B3%D8%AA-%D8%B1%D9%87%D8%A8%D8%B1%DB%8C-%DB%8C%D8%A7-%D9%87%D8%B1-%D8%AF%D9%88-xxctm5cireab</link>
                <description>امروز می‌خوام راجع به یک مبحث مهم توی شرکت‌ها به خصوص در شرکت‌های کامپیوتری باهاتون صحبت کنم. معمولا توی شرکت‌ها افرادی در نقش کارمند و نیروی کار وجود دارند که توسط یک یا چند مدیر، مدیریت می‌شوند. نقش مدیر برای پیشرفت یک شرکت و دادن روحیه به افرادی که تحت مدیریت وی هستند، بسیار مهم است. یک نکته مهم دیگه که در مدیریت شرکت‌های کامپیوتری مهم هست، آشنایی مدیر با مباحث کامپیوتری هست که بتونه بهترین تصمیمات رو بگیره. در ادامه با انواع مدیریت آشنا می‌شیم.مدل ریاستیدر این مدل مدیران با تهیه یک سری وظایف و قوانین، نیروی کار خود را به سمت اهداف تعیین شده هدایت می‌کنند. بیشتر مواقع مدیران بدون نظرخواهی از نیروی کار خود، وظایف را شرح داده و با نظارت خود انتظار رسیدن به هدف را دارند. مدل ریاستی را شاید بشه یک مدل کلاسیک برای مدیریت در نظر گرفت.مدل رهبریدر این مدل مدیران علاوه‌براین که وظایف و قوانین را تعریف می‌کنند، با نیروی کار خود همراه شده و سعی در به انجام رساندن وظایف به نحو احسنت دارند. نیروی کار ترجیح می‌دهد مدیرانش به این صورت باشند، مشورت با نیروی کار انجام بدهند و باهم به سوی هدف حرکت کنند.تجربه من در آرکامن تقریبا 2-3 سال هست که نقش مدیر پروژه رو در شرکت آرکا برعهده دارم. مدیر پروژه یکی از سخت‌ترین نقش‌ها در شرکت‌های کامپیوتری هست. مدیر پروژه دائما با نیروی کار درگیر هست و با آن‌ها تعامل داره. یکی از کارهایی که من در شرکت انجام دادم، بحث راجع به تکنولوژی‌های مختلف و گوش دادن به صحبت‌های نیروی کار هست. همیشه دنبال تکنولوژی‌های جدید هستیم و آن‌ها رو باهم مقایسه می‌کنیم. جوی که در شرکت به‌وجود آوردم طوری هست که اعضا هم همیشه پیشنهادهای خودشون رو می‌دن و من با مقایسه کردن این پیشنهادات بهترین رو انتخاب می‌کنم. یک نکته مهمی که وجود داره این هست که مدیر باید با نیازها و اخلاق تیم آشنا باشه. بعضی وقت‌ها شده با برخی افراد تیم راجع به گیم، عقاید و روش‌های بهتر زندگی کردن صحبت کردیم و این صحبت‌ها هست که باعث ایجاد صمیمیت بین مدیر و نیروی کار شده و تلاش برای رسیدن به هدف و کیفیت کار افزایش پیدا می‌کنه.نکته دیگه که وجود داره، در بیشتر شرکت‌های کامپیوتری سعی می‌کنن برروی یک تکنولوژی خاص تمرکز کرده و با اون تکنولوژی پیش برند. این امر نکته مثبتی هست و باعث تمرکز در شرکت می‌شه، اما نیروی کار در این محیط پیشرفتی نمی‌کنه. برای همین یکی دیگر از کارهایی که در شرکت آرکا انجام میشه، بحث بر روی استفاده از تکنولوژی‌های مختلف برای انجام پروژه‌ها هستش. این اعتماد به نیروی کار وجود داره که نیروی کار از یک تکنولوژی جدید برای انجام یک پروژه استفاده کنه. این ریسک برای مدیر زیاد هست ولی در نهایت باعث پویایی شرکت و افزایش دانش نیروی کار میشه و می‌تونه یک شرایط برد – برد را ایجاد کنه.برای اینکه سطح دانش نیروی کار افزایش پیدا کنه، ما هر هفته یک جلسه برگزار می‌کنیم و افراد یک هفته مهلت دارند راجع به موضوع بحث اطلاعات جمع‌آوری کنند و اطلاعات رو به اشتراک بگذارند. این کار هم باعث افزایش دانش تیم و ایجاد صمیمیت بین افراد تیم بشه.یک مدیر خوب باید بتونه در عین همکاری با نیروی کار، برخی تصمیمات رو قاطعانه بگیره. وقتی نیروی کار احساس کنن که نظراتش مورد توجه قرار می‌گیره، تلاش می‌کنه انرژی بیشتری برای شرکت بگذاره و این کار هم برای شرکت و هم برای نیروی کار مفید واقع می‌شه. ازتون ممنون هستم که این پست رو خوندین. امیدوارم براتون مفید واقع شده باشه. خوشحال میشم تجربیاتتون رو در کامنت با من به اشتراک بگذارین ?</description>
                <category>محمود پرنده</category>
                <author>محمود پرنده</author>
                <pubDate>Sun, 18 Oct 2020 11:49:51 +0330</pubDate>
            </item>
            </channel>
</rss>