<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا بخشی زادی محمودی</title>
        <link>https://virgool.io/feed/@C_c</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 15:10:29</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>علیرضا بخشی زادی محمودی</title>
            <link>https://virgool.io/@C_c</link>
        </image>

                    <item>
                <title>کتابخانه Seaborn مخصوص مصور سازی داده های آماری</title>
                <link>https://virgool.io/@C_c/%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-seaborn-%D9%85%D8%AE%D8%B5%D9%88%D8%B5-%D9%85%D8%B5%D9%88%D8%B1-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D8%A2%D9%85%D8%A7%D8%B1%DB%8C-j4i3akp8zbmu</link>
                <description>  در واقع کتابخانه مصور سازی داده ها در پایتون هست که بر پایه کتابخانه matplotlib میباشد. در واقع رابطی سطح بالا برای رسم گرافیک های آماری جذاب و اطلاع دهنده، فراهم می آورد. این کتابخانه شامل توابع مختلفی در دسته بندی های زیر میباشد: رابطه ای  طبقه بندی توزیع ها رگراسیون multiples style رنگدر این مقاله توابع مرتبط با دسته بندی &quot;توزیع ها&quot; مورد بررسی قرار میگیرد.مصور سازی توزیع های مجموعه داده هاوقتی که دارید با مجموعه ای از داده ها سر و کله میزنید، به عنوان اولین چیزی که دوست دارید بدونید اینه که متغیرها به چه صورتی توزیع شده اند. در این قسمت شما را با برخی ابزارهای Seaborn برای بررسی توزیع های تک متغیره و یا دو متغیره آشنا می نمایم.رسم توزیع های تک متغیرهمناسب ترین راه برای مشاهده توزیع های تک متغیره در Seaborn استفاده از تابع distplot میباشد. این تابع به صورت پیش فرض یک هیستوگرام همراه با KDE را برای داده مورد نظر رسم می نماید.هیستوگرام هاهیستوگرام ها احتمالاً برای شما آشنا باشند، تابع hist در کتابخانه matplotlib موجود میباشد. هیستوگرام توزیع داده ها را به صورت مجموعه ای از برد داده ها، دسته بندی میکند و اعدادی را که در هر دسته قرار میگیرد را به صورت ستونی بر روی نمودار نمایش میدهد.برای روشن تر شدن موضوع، اجازه دهید تا منحنی KDE را حذف و rug plot را اضافه نماییم که باعث پدید آمدن ستون های ریز کوچکی در محور افقی میگردد. شما میتوانید rug plot را با استفاده از تابع rugplot و یا با استفاده از تابع distplot نمایش دهید.هنگام رسم هیستوگرام، انتخاب اصلیِ شما تعداد فواصل و همچنین محل قرارگیری آنهاست. تابع distplot به صورت اتومات تعداد فواصل را تخمین میزند، اما تعداد فواصل کمتر و یا بیشتر، ممکن است تا خصیصه های بیشتری از داده ها را نمایان کند.رسم توزیع های دو متغیرهکتابخانه Seaborn همچنین برای مصور سازی توزیع های دو متغیره نیز مورد استفاده قرار میگیرد. آسوده ترین راه برای این کار استفاده از تابع joinplot میباشد که رابطه بین دو متغیر را همراه با هیستوگرام آنها به صورت تک متغیره، به نمایش در می آورد.scatterplotآشنا ترین راه برای مصور سازی توزیع های دو متغیره scatterplot میباشد که به صورت نقاطی روی محورهای x وy  نمایش داده میشوند. که این مشابه rugplot میباشد، اما در فضای 2 بعدی. شما میتوانید با استفاده از تابع plt.scatter از کتابخانه matplotlib و یا تابع joinplot به صورت پیش فرض، scatterplot را رسم نمایید.Hexbin plotsمشابه هیستوگرام دو متغیره، hexbin plot میباشد که رویدادها را در شش ضلعی ها به نمایش در می آورد. این plot مخصوص مجموعه داده های عظیم میباشد. هم میتوان از طریق تابع plt.hexbin در کتابخانه matplotlib و هم از طریق تابع joinplot به آن دسترسی داشت. انتخاب پس زمینه سفید، براش مناسب تر به نظر می آید.KDEبا استفاده از تابع kdeplot میتوان plot تراکم هسته ای دو بعدی را ترسیم نمود. با استفاده از این تابع میتوان plot های خاصی را بر روی محورهای کتابخانه matplotlib رسم نمود.اگر مایلید که تراکم دو متغیره را به صورت پیوسته تر نمایش دهید، به سادگی میتوانید با افزایش تعداد کانتورها این کار را انجام دهید.تابع joinplot از JointGrid برای مدیریت شکل استفاده میکند. اگه به انعطاف بیشتری نیاز دارید، میتواندی با استفاده مستقیم از JointGrid شکل خودتون رو رسم کنید. تابع joinplot به عنوان خروجی خود پس از plot کردن یک شیئ JointGrid بر میگرداند که شما میتوانید این شیئ را بر اساس نیازهای بصری خود دستکاری نمایید.مصور سازی رابطه های جفت در مجموعه داده هابرای رسم توزیع های دو متغیره جفت در مجموعه داده ها، میتواندی از تابع pairplot استفاده نمایید. که استفاده از این تابع باعث بوجود آمدن ماتریسی از محورها میشود که رابطه هر ستون را با فریم داده، به نمایش در می آورد. استفاده تابع با تنظیمات پیش فرض نیز توزیع های تک متغیره هر متغیر را به صورت اریب به نمایش در می آورد.شبیه JoinGrid و تابع joinplot، تابع pairplot نیز بر پایه شیئ PairGrid ساخته شده است، که میتواند به صورت مستقیم جهت انعطاف بیشتر مورد استفاده قرار گیرد.جهت مشاهده ویدیو آموزشی کتابخانه Seaborn و توابعی که در این مقاله ذکر گردید، بر روی لینک زیر کلیک نمایید. https://www.aparat.com/v/K19Lp </description>
                <category>علیرضا بخشی زادی محمودی</category>
                <author>علیرضا بخشی زادی محمودی</author>
                <pubDate>Tue, 21 May 2019 16:19:58 +0430</pubDate>
            </item>
                    <item>
                <title>کشاورزی و هوش مصنوعی</title>
                <link>https://virgool.io/@C_c/%DA%A9%D8%B4%D8%A7%D9%88%D8%B1%D8%B2%DB%8C-%D9%88-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-b4nihqa5wzkn</link>
                <description> کشاورزی هم به عنوان یک صنعت عظیم و هم یک پایگاه اقتصادی خوب محسوب میگردد. عواملی همچون تغییرات اقلیمی، ازدیاد جمعیت و دلواپسی ها در ارتباط با اندوخته غذایی، باعث گردیده تا صنعت کشاورزی روش های خلاقانه تری را برای محافظت و ارتقاء محصول، اتخاذ نماید. که نتیجه در پیدایش هوش مصنوعی به عنوان بخشی از انقلاب تکنولوژی صنعتی، را در پی دارد.در این مقاله برخی کاربردهای هوش مصنوعی بررسی میگردند تا پیشتازان حرفه کشاورزی با جلوه ای از روندهای حال حاضر و داغِ روز آشنا گردند. دسته بندی های موارد استفاده هوش مصنوعی در کشاورزیبر اساس تحقیقات انجام شده، بیشترین کاربردهای هوش مصنوعی در زمینه کشاورزی، در سه گروه اصلی زیر دسته بندی میگردند: ربات های کشاورزی – برای انجام کارهایی نظیر برداشت محصولات در مقیاس وسیع و سرعتی بیشتر از کارگران انسانی، کمپانی هایی در حال توسعه و برنامه ریزی ربات های خودکاری هستند که از عهده چنین کارهای ذکر شده ای برآیند.زیر نظر داشتن خاک و محصولات – جهت زیر نظر داشتن سلامت خاک و محصولات، کمپانی ها با استفاده از دید کامپیوتری و الگوریتم های یادگیری ماشین، داده هایی را که توسط drone ها و یا تکنولوژی های نرم افزاری، جمع آوری میگردد، پردازش میکنند و اطمینان از سلامت خاک و محصولات را حاصل میکنند.تحلیل های پیش گویانه – از مدل های یادگیری ماشین جهت ردیابی و پیش بینی تاثیرات مختلف محیطی همچون تغییرات آب و هوایی بر روی محصولات استفاده میگردد.در ادامه به بررسی هر یک از این دسته بندی ها، کمپانی هایی که آنها را توسعه میدهند و موارد استفاده و همچنین فایل های تصویری مربوط به آنها، پرداخته شده است. ربات های کشاورزیتکنولوژی Blue River – کنترل علف های هرز کنترل علف های هرز جزو اولویت های مهم برای کشاورزان محسوب میگردد و همچنین یک چالش نیز میباشد، چرا که مقاومت در برابر داروهای علف کش در علف های هرز، بیشتر و بیشتر میگردد. امروزه تخمین زده میشود که 250 گونه علف هرز در برابر علف کش ها مقاوم گشته اند. بر اساس تحقیقی که توسط WSSA صورت گرفته، تاثیر علف های هرزِ کنترل نشده محصولات سویا و ذرت، باعث ضرر 43 میلیارد دلاری به صورت سالانه به کشاورزان میگردد. کمپانی ها با اتوماسیون و استفاده از ربات ها به کشاورزان کمک میکنند تا راه های بهینه تری برای محافظت محصولات خود از علف های هرز، پیدا کنند. تکنولوژی Blue River رباتی را به اسم See &amp; Spray توسعه داده که با استفاده از دید کامپیوتری به صورت خیلی دقیق بر روی علف های هرزِ گیاه پنبه، ماده شیمیایی اسپری میکند. دقت اسپری کردن میتواند باعث جلوگیری از مقاومت علف های هرز، گردد. ویدیویی که در زیر آورده شده است، این ربات را به نمایش میگذارد.  https://www.youtube.com/embed/-YCa8RntsRE طبق گفته هایی که در وب سایت کمپانی موجود است، کمپانی ادعا دارد که دقتی که در تکنولوژی اش وجود دارد، باعث حذف 80 درصدی حجم ماده شیمیایی میگردد که به صورت نرمال بر روی محصولات اسپری میگردد. در سال 2017 کمپانی عظیم John Deere اکتساب تکنولوژی Blue River را اعلام کرده بود. ربات های Harvest CROO – برداشت محصولاتوماسیون ها نیز روز به روز بیشتر و بیشتر میشوند تا چالش های نیروی کاری را ارضاء نمایند. تخمین زده میشود که از سال های 2014 تا سال 2024 نیروی کارگری 6 درصد کاهش پیدا کند. Harvest CROO Robotics ربات هایی را توسعه داده اند که به کشاورزان جهت برداشت بسته بندی محصول توت فرنگی، کمک میکند. کمبود کارگر باعث از دست رفتن میلیون ها دلار پول در زمین های مهم کشاورزی میگردد. Harvest CROO Robotics ادعا دارد که رباتش میتواند در روز 8 هکتار از زمین ها را برداشت محصول کند و این ربات معادل 30 نیروی کاری می باشد. در ویدیوی ای که در ادامه آورده شده، توضیحات در ارتباط با این ربات داده شده است. https://www.youtube.com/embed/zH20r4ImdMY تقریباً حدود 40 درصد هزینه های سالیانه کشاورزی شامل دستمزد و حقوق و قراردادهای نیروی کار میگردد؛ خصوصاً برای محصولاتی همچون میوه ها و سبزیجاتی که به نیروی کار بیشتری احتیاج دارند. در ماه ژوئن سال 2017 مزرعه ای در Florida پیاده سازی ربات Harvest CROO Robotics را برای برداشت محصول توت فرنگی، اعلام نمود. تا به امروز Harvest CROO Robotics مبلغی بالغ بر 2.8 میلیون دلار از طریق سرمایه گذاران و همچنین کشاورزان محصولات توت فرنگی ای که 20 درصد تولید محصولات توت فرنگی را در آمریکا دارند، کسب کرده است.زیر نظر داشتن سلامت خاک و محصولات بینایی ماشین جهت تشخیص آفت و کاستی های خاک  جنگل خواری و تنزل کیفیت خاک، تهدیدات جدی برای تامین محصولات غذایی محسوب میگردد و همچنین تاثیر منفی بر روی اقتصاد دارد. بر اساس تخمین USDA هزینه فرسایش سالیانه خاک چیزی حدود 44 میلیارد دلار است. شرکت استارت آپی آلمانی به نام PEAT با استفاده از کاربردهای یادگیری عمیقی که توسعه داده است، به نام Plantix، توانایی شناسایی نقص ها و کمبود مواد مغذی در خاک را دارد. تحلیل ها از طریق الگوریتم های نرم افزاری از طریق الگوهای شاخ و برگ گیاهان و خاک های دارای کمبود و همچنین آفت گیاهان و بیماری آنها، صورت میپذیرد.نرم افزار کاربردی تشخیص تصویر با استفاده از تصاویری که با دوربین موبایل کاربر گرفته شده است، قابلیت تشخیص این کمبودها را دارد. بعد از مرحله تشخیص، کاربرها با انواع راه کارها، راهنمایی میگردند. در ویدیو زیر به جزئیات بیشتری از این مسئله پرداخته شده است. https://www.youtube.com/embed/89tULyOLLWU این کمپانی ادعا دارد که این نرم افزار قابلیت تشخیص از طریق الگوها را با دقت 95 درصدی انجام میدهد.ردیابی ژنوم ها – یادگیری ماشن برای تشخیص کمبودهای خاک  ردیابی ژنوم ها سرویس تحلیل خاک است که مشابه برنامه Plantix عمل میکند. سرمایه گذار اصلی، Illumina، با استفاده از یادگیری ماشین راهی را برای کشاورزان فراهم آورده تا از نقاط قوت و ضعف خاک مزرعه خود، آگاهی پیدا کنند. و بیشتر تمرکز بر روی جلوگیری از محصولات معیوب و همچنین بهینه سازی پتانسیلِ تولیدِ محصولاتِ سالم میباشد.بر اساس وب سایت کمپانی، بعد از اینکه کاربرها یک نمونه از خاک خودشون رو به ردیاب ژنوم ها دادند، خلاصه ای از محتویات خاک رو دریافت کردند. سرویس های این کمپانی شامل مجموعه ای از زیر نظر داشتن باکتری ها و قارچ های بیماری زا، و همچنین بررسی های میکروبی میباشد. همینطور که در ویدیو ای هم که در ادامه آمده توضیح داده میشود، تحلیل های DNA خاک هم در این سیستم ردیابی، حائز اهمیت میباشد. http://players.brightcove.net/2097119709001/4kXWOFbfYx_default/index.html?videoId=5502727538001 تا سال 2017 میلادی این کمپانی قادر بوده است تا 8 میلیون دلار کسب کند. کمپانی تکنولوژی های SkySquirrel – drone ها و بینایی کامپیوتر برای تحلیل محصولاتتاریخچه حضور drone ها در صنعت کشاورزی، بر میگردد به سال 1980 در ژاپن. تخمین زده میشه که بازار drone ها در صنعت کشاورزی تا سال 2027  به 480 میلیون دلار خواهد رسید.کمپانی تکنولوژی های SkySquirrel یکی از کمپانی هایی است که تکنولوژی drone ها رو به تاکستان ها وارد کرده است. هدف این کمپانی کمک به کاربرها جهت ارتقاء محصولات و کاهش هزینه ها میباشد. کاربرها میتوانند مسیر drone ها را از قبل برنامه ریزی کنند و drone پس از قرار گرفتن در مسیر با استفاده از بینایی کامپیوتر، تصاویری را ثبت میکند که بعداً جهت آنالیز مورد استفاده قرار خواهند گرفت.بعد از اینکه drone  مسیرهای برنامه ریزی شده را طی کرد، کاربران میتوانند فلش مموری را از روی drone برداشته تا تصاویر را در cloud بارگذاری نمایند. سپس SkySquirrel با استفاده از الگوریتم های بخصوصی که تصاویر ثبت شده را آنالیز میکند، گزارش دارای جزئیاتی از سلامت تاکستان، به خصوص شرایط برگ های درختان را فراهم می آورد. از آنجا که برگ درختان تاک نشانگر بیماری های موجود در تاک میباشند (همچون باکتری و قارچ) در نتیجه مطالعه سلامت این برگ ها روش مناسبی جهت فهم سلامت گیاهان و میوه های آنها، محسوب میگردد. در ادامه میتوان نحوه کار این drone ها را تماشا کرد. https://www.youtube.com/embed/jeVf76cG6Ug این کمپانی ادعا دارد که تکنولوژی اش قابلیت بررسی 50 هکتار را در 24 دقیقه دارد. و همچنین تحلیل های داده هایش دارای دقت 95 درصدی میباشد. تحلیل های پیش گویانه ماهواره ها برای پیش بینی هواشناسی و پایداری محصولاتکمپانی به نام aWhere که با استفاده از الگوریتم های یادگیری ماشین و از طریق ماهواره ها، پیش بینی آب و هوایی، آنالیز پایداری محصولات، و همچنین بررسی مزارع جهت تشخیص آفت ها و بیماری ها را ممکن میسازد.برای مثال، پیش بینی آب و هوا به صورت روزانه، بر اساس نیازهای هر کاربر از مقیاس محلی تا مقیاس جهانی قابل تنظیم است. بر اساس نوشته هایی که در وب سایت کمپانی آمده، انواع مشتری های کمپانی عبارتند از کشاورزان، محققان و همچنین مشاوران محصولات.  همانطور که در ویدیو ای که در ادامه آورده شده است، کمپانی ادعا دارد که داده هایی با کیفیت بالا که نرخ بروزرسانی سریعی دارد را فراهم می آورد. https://www.youtube.com/embed/IcY3mURehec علاوه بر این، کمپانی برای کاربرانش دسترسی به بیش از یک میلیون داده کشاورزی به صورت روزانه فراهم می آورد. که این داده ها عبارتند از دما، میزان بارندگی، سرعت باد، اشعه خورشید و همچنین مقایسه تاریخچه ای از مقادیر در هر نقطه قابل زراعت بر روی زمین.ماهواره ها جهت رصد سلامتی و پایداری محصولاتشرکت استارت آپی به نام FarmShots که تمرکزش بر روی تحلیل داده هایی است که از تصاویر ماهواره ها و drone ها گرفته شده است. صراحتاً تمرکز کمپانی بر روی شناسایی بیماری ها، آفت ها و تغذیه ضعیف گیاهان مزارع میباشد.برای مثال کمپانی ادعا دارد که نرم افزارش قادر است تا به کاربر بگوید که دقیقاً چه زمانی نیاز است تا به گیاهان کود دهد و همچنین قادر است تا میزان کود دهی را تا 40 درصد کاهش دهد. این نرم افزار قابل استفاده در دستگاه های موبایل میباشد. در ویدیو ای که در ادامه آمده است نحوه گزارش گیری از داده ها با استفاده از نرم افزار FarmShots شرح داده شده است. https://www.youtube.com/embed/1I8dcomNlms نتیجه گیریتکنولوژی های بر پایه هوش مصنوعی روز به روز گسترده تر میگردند تا به ارتقاء بهره وری و برطرف کردن چالش ها در این صنعت، از جمله بازدهی محصول، سلامت خاک و مقاومت در برابر علف کشها، کمک نمایند. ربات های کشاورزی دارای بیشترین کاربرد در این بخش از هوش مصنوعی خواهند بود.شواهدی مبنی بر اکتساب چنین تکنولوژی هایی وجود دارد، برای مثال در صنعت لبنیات از هزاران ربات جهت تهیه شیر استفاده مینمایند. در این بخش تخمین زده میشود که تا سال 2023 از 1.9 میلیارد دلار به 8 میلیارد دلار صعود کند.تکنولوژی های رصد خاک و محصولات نیز تا مادامی که تغییرات اقلیمی اتفاق می افتد، یکی دیگر از کاربردهای مهم تلقی میگردد. تحقیقات نشان میدهد که تغییرات اقلیمی از سال 1980 تا 2008 باعث کاهش 3.8 درصدی ذرت و همچنین کاهش 5.5 درصدی گندم شده است.حجم داده هایی که توسط تکنولوژی هایی همچون drone ها و ماهواره به صورت روزانه جمع آوری میگردد، باعث میگردد تا حرفه کشاورزی به قابلیت های جدیدی برای پیش بینی تغییرات و شناسایی موقعیت ها، مجهز گردند. پیش بینی میگردد که کاربردهای بیناییِ ماشینِ ماهواره ها (برای آب و هوا، سلامت محصولات، پیش بینی بازدهی محصولات و غیره) بین 5 تا 10 سال آینده در صنعت کشاورزی بیشتر و بیشتر گردد.همچنین آموزش کشاورزان جهت استفاده از آخرین امکانات این تکنولوژی ها نیز امری واجب تلقی میگردد.علاوه بر تمام این مسائل، آزمون و اعتبار سنجی کاربردهای هوش مصنوعی در این زمینه بسیار حیاتی میباشد. چرا که کشاورزی تحت تاثیر فاکتورهای محیطی ای میباشد که بر خلاف دیگر صنایع به راحتی قابل مدل سازی و پیش بینی نیست. انتظار میرود که صنعت کشاورزی به اکتساب تکنولوژی های هوش مصنوعی ادامه دهد و روندِ روز را دنبال کند.</description>
                <category>علیرضا بخشی زادی محمودی</category>
                <author>علیرضا بخشی زادی محمودی</author>
                <pubDate>Thu, 25 Apr 2019 17:53:23 +0430</pubDate>
            </item>
                    <item>
                <title>تا به حال از چه گزینه های تجهیز ابزاری استفاده کرده اید؟</title>
                <link>https://virgool.io/shamsipour/%D8%AA%D8%A7-%D8%A8%D9%87-%D8%AD%D8%A7%D9%84-%D8%A7%D8%B2-%DA%86%D9%87-%DA%AF%D8%B2%DB%8C%D9%86%D9%87-%D9%87%D8%A7%DB%8C-%D8%AA%D8%AC%D9%87%DB%8C%D8%B2-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%DB%8C-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D8%B1%D8%AF%D9%87-%D8%A7%DB%8C%D8%AF-wtqf2qipdekq</link>
                <description> مقدمهیکی از مهم ترین مهارتهایی که شما به عنوان یک توسعه دهنده web باید داشته باشید، یادگیری، راه اندازی و کارکردن با محیط های متفاوت میباشد. این هفته میخواهم در ارتباط با محیط های تجهیز به ابزار، که شما باید بدونید و همچنین علت خاص بودن آنها و اینکه چرا باید شما آنها را فرا بگیرید، صحبت کنم. خب، شما واقعا چرا خودتون رو به ابزار مجهز میکنید؟ مجهز شدن به ابزار به شما این امکان رو میده تا وظایف (task) توسعه معمول، مانند به حداقل رساندن کدنویسی، تست گیری و اجرا کردن سرورهای محلی جهت مشاهده کار خود هنگام کد زنی، را به شکل خودکار در بیارید. تجهیز به ابزار، بسته به محیط شما و مکانی که در اون کار میکنید، میتونه به حالت دلخواه شما تبدیل بشه یا به عبارت دیگه، میتونید اون رو شخصی سازی (customize) کنید.افراد مختلف از نرم افزارهای تجهیز ابزار مختلف استفاده میکنند و تیم های توسعه دهنده، معمولا تنظیمات مورد ترجیح خود را خواهند داشت. شما حتی به تیم هایی بر میخورید که بسته به نوع پروژه ای که بر روی آن کار میکنند، از تنظیمات متفاوتی استفاده میکنند. با توجه به مطالب گفته شده، پلتفرم های اصلی تجهیز به ابزار که در بستر web میتوان استفاده کرد، عبارتند از Grunt, Gulp, WebPack. بله البته کتابخونه ها و نوع های متفاوت دیگری نیز وجود دارند که میتوانید نگاهی به آنها بیندازید، ولی این کتابخونه ها محبوبیت زیادی ندارند.علاوه بر این، گزینه دیگری که وجود دارد، استفاده از قابلیت script نویسی NPM میباشد، که به هنگام نصب Node.js این قابلیت برای شما پدیدار میگردد. Grunt، Gulp و WebPack بر پایه Node.js هستند، که با توجه به این مسئله برخی افراد ابزارهای خود رو توسط Node مینویسند تا پروژه خود رو مدیریت کنند. که به این ابزارها CLIs گفته میشه که Grunt، Gulp و WebPack در واقع CLI هایی هستند که در بستر Node.js ساخته شده اند.حال برخی افراد script های خودشون رو مینویسند و یا اینکه به صورت ترکیبی از برخی از این ابزارها جهت انجام وظایف مدیریتی استفاده میکنند. خب حالا بگذارید تا نگاهی به این گزینه ها بیندازیم. البته اول به پدر این ابزار ها یعنی GruntJS میپردازیم.GruntJSمجددا میگم که GruntJS یک CLI برای وظایف (task) در حال اجراست. یک وظیفه چیزی است که شما میخواهید به کد خود اعمال کنید. برای مثال، به حداقل رساندن کد و یا تست گیری آن، یک وظیفه محسوب میشه. برای اینکه کار کنه، شما یک فایل پیکربندی درست میکنید. این فایل از JSON جهت پیکر بندی اتوماسیون شما، استفاده میکنه. با استفاده از این فایل، شما میتونید مجموعه ای از وظایف را تعریف کنید و همچنین وظایفی رو بوجود بیارید که کارهایی همچون پردازش SASS، کمینه کردن HTML و اجرای یک سرور زنده به هنگام توسعه، رو انجام بده. GruntJS یکی از گزینه های تجهیز ابزار قدیمی محسوب میشود. باید بگم که نیاز دارید تا یادش بگیرید و همچنین نیاز به دانستن مقدمات اون، جهت راه انداختن دارید. احتمالا در حرفه کاری خودتون با پروژه هایی مواجه میشید که از Grunt استفاده میکنند، اما اونقدرها هم ضروری نیست که بخواهید نسبت به آن خیلی تجربه داشته باشید. حالا گزینه تجهیز ابزار بعدی اسمش Gulp.js یا Gulp هستش که یک ذره بیشتر از یک سال بعد از Grunt منتشر شد.Gulpشباهتهایی با Grunt داره و تفاوت اصلیش اینه که بجای استفاده از JSON برای پیکربندی، از JavaScript استفاده میشه. این به این معنی هستش که از Grunt منعطف تر هستش، چرا که کنترل بیشتری بر روی کاری که انجام میده، داره. فایل های پیکر بندی، میشه گفت که شبیه به پیکر بندی Grunt هستش بجز اینکه ما داریم از JavaScript بجای فایل پیکربندی JSON استفاده میکنیم. یکی دیگه از تفاوت ها اینه که، plugin های Gulp بر روی تک وظیفه (single task) های در حال اجرا تمرکز میکنه در حالی که در Grunt میتوانیم بعضی اوقات وظایف چندگانه (multiple task) رو انجام بدیم. به همین علت Gulp میتونه سریعتر باشه چرا که plugin های اون ساختاری ساده و مشابه دارند.خب، با وظیفه ای از نوع Gulp متوجه میشید که شما همیشه یک وظیفه ای دارید که منشاء وظیفه رو تعریف میکنه و همچنین مقصدش رو، بنابراین شروع و پایان آنها مشابه بوده و ما معمولا یک پیکربندی مضاعفی رو هم پاس میدیم، مثلا اینکه style های متفاوت رو میخواهیم یا نه، دقیقا مثل Grunt. یکی دیگه از تفاوتهای اصلی اینه که Gulp از مفهوم stream ها استفاده میکنه در حالی که اجرای Grunt بیشتر پیاپی (sequential) میباشد، Gulp اجرای هر وظیفه رو به صورت جداگانه قرنطینه میکنه و اونها رو در حافظه handle میکنه، که به این معناست که میتونه وظایف رو به صورت همزمان (simultaneously) اجرا کنه. اگه با JavaScript آشنا باشید، متوجه میشید که فراگیری و کارکردن با Gulp بسیار راحته.WebPackدر این چند سال اخیر خیلی مشهور شده و اون هم بیشتر بخاطر افزایش استفاده از module ها در توسعه web هستش. در حال حاضر framework های محبوب JavaScript ی مثل Angular و React و Vue.js بر اساس مفهوم تعریف ذره های کوچکی از کدهای خود مختار به نام module طراحی گشته اند.وب پک (WebPack) توسط module ها طراحی شده، بجای اینکه از وظایف (task) در آن استفاده شده باشه. یکی از خصیصه های بسیار مهم WebPack قابلیت پردازش تغییرات داخل یک module، بدون نیاز به پردازش باقی module میباشد، در حالی که اجرا کننده های وظایف همچون Gulp یا Grunt پروژه را به صورت مجموعه ای از وظایف میپندارند، در حالی که WebPack آنها رو به صورت مجموعه ای از module های کوچکی که میتونه به صورت مستقل update کنه، میبینه. که همین اون رو به عنوان کتاب خونه امروزی، فوق العاده سریع و عالی میکنه. علاوه بر این میتونه توابع پیشرفته ای همچون Tree Shaking رو صدا کنه که باعث حذف قسمت هایی از کتابخانه ها میشن که در application شما مورد استفاده قرار نمیگیرند.بنابر این تمرکز modular اون و همچنین خصایص پیشرفته اش، اون رو به یک کتابخانه محبوب تبدیل کرده، خصوصا در پروژه های امروزی. بخاطر نحوه طراحی اش و کارهایی که انجام میده، WebPack جهت پیکربندی (set up) و فهم (understand) میتونه خیلی پیچیده باشه. این کاملا واضحه که WebPack پیچیده ترین اجرا کننده های وظایف هستش و در عین حال قدرتمندترین هستش و شما نیاز خواهید داشت تا اون رو فرا بگیرید یا حد اقل نحوه شخصی سازیش (customize) رو یاد بگیرید.لینک ویدیو در آپارات: https://www.aparat.com/v/s7zbY لینک ویدیو مرجع: https://www.lynda.com/Web-Development-tutorials/What-tooling-options-have-you-used-past/580663/716722-4.html </description>
                <category>علیرضا بخشی زادی محمودی</category>
                <author>علیرضا بخشی زادی محمودی</author>
                <pubDate>Tue, 08 Jan 2019 17:30:56 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی دام (DOM) در محیط های</title>
                <link>https://virgool.io/shamsipour/%D8%AF%D8%A7%D9%85-dom-%D8%AF%D8%B1-%D9%85%D8%AD%DB%8C%D8%B7-%D9%87%D8%A7%DB%8C-%D9%85%D8%AA%D9%81%D8%A7%D9%88%D8%AA-opyvo6ltzpbh</link>
                <description>JS, jQuery, AngularJS, ReactJSدام (DOM) چیست و در محیط های مختلف چگونه مورد استفاده قرار میگیرد؟دام (DOM) یک مدل ارائه شیء میباشد (در HTML document)، شیء هایی که دارای هویتی خاص و کارایی های متفاوتی میباشند، که بر اساس نیاز، توسط DOM مورد اشاره قرار میگیرند و کارهایی که مد نظر برنامه نویس است، بر آن اشیاء اعمال میگردد.نکته مهم در ارتباط با DOM این است که دام یک data structure نیست. میدانیم که data structure ها مانند آرایه ها، فایل ها و رکورد ها...، برای سازماندهی و ذخیره اطلاعات مورد استفاده قرار میگیرند. اما در DOM همانطور که پیشتر اعلام گردید، چیزی ذخیره نمیگردد و DOM تنها مدل ارائه اشیاء میباشد. از DOM میتوان در محیط های مختلفی همچون JavaScript، jQuery، AngularJS، و React و ... بسته به نیازهای خود، استفاده کرد.برای بررسی دام در محیط های ذکر شده، در زیر به شرح خلاصه ای از این محیط ها میپردازم ما در سند HTML (ترجمه واژه HTML document) خود میتوانیم تقریبا هر کاری را که مورد نیازمان است، با JavaScript انجام دهیم. دیگر محیط های ذکر شده، زمانی کاربردی میگردند که ما بخواهیم همان کارهایی را که با JavaScript میتوان به صورت به اصطلاح، کلاسیک، انجام داد را به صورت هوشمندانه تر انجام دهیم. اگر خواهان نوشتن دستورات کمتری در سند HTML خود هستیم، میتوانیم وارد دنیای jQuery شویم.حال اگر بخواهیم پا را فراتر قرار دهیم و از Model View Controller (که یک الگوی طراحی میباشد که برنامه[application] را به 3 قسمت با هم مرتبط [interconnected] تقسیم مینماید; 3 قسمت تقسیم شده عبارتند از مدل [model] و نما [view] و کنترل کننده [controller] ) در سند HTML خود استفاده کنیم تا از مزایای زیادی از جمله استفاده مجدد از کد بهره مند گردیم و یا اینکه قادر باشیم تا افراد مختلف تیم بتوانند روی پروژه به صورت همزمان کار کنند (توسعه دهند[develop])، آنجاست که باید از AngularJS (به غیر از Angular گزینه های فراوان دیگری نیز وجود دارد، الزامی در استفاده از Angular نمیباشد) در پروژه HTML خود استفاده کنیم.پس چه موقع باید از React استفاده کرد؟ هرگاه در پروژه خود نیاز به یک محیطی داشتیم که بیشتر بر جنبه های بصری [visual components] فعالیت دارد و نیاز دارد در کمترین زمان ممکن، اجزاء (components) بصری HTML document بروزرسانی گردد، آنگاه هنگام استفاده از React میباشد. چرا که React تمرکز خود را بر اجزاء بصری [visual components] گذاشته است. مطالب ذکر گردیده در بالا، مقدمه ای بود بر کلیپی که در زیر قرار داده شده. در کلیپ زیر بهتر میتوان به نقش DOM در محیط های ذکر گردیده، پی برد.جهت آشنایی و اطلاعات بیشتر میتوانید کلیپ زیر  را مشاهده نمایید. https://www.aparat.com/v/RTmqo رفع ابهاممتن پیش رو را میتوان به عنوان پی نوشت تلقی کرد و در ادامه مطلبی که در بالا بیان گشته، برای افرادی که دچار ابهام گشته اند، می باشد.توضیحی مختصر در ارتباط با قسمت پی نوشت:بعد از انتشار نوشته بالا در تاریخ 1397/8/1 و فرستادن لینک نوشته برای استاد ابریشمی، دیروز مورخ 1397/8/20 استاد در گروه تلگرامی اعلام نمودند تا بچه های گروه، لینک نوشته را در گروه قرار دهند. من هم همچون دیگر دوستان لینک نوشته را در گروه فرستادم. بعد از مدتی نه چندان زیاد، در گروه مورد mention قرار گرفتم. با واکنش منفی 3 نفر از افراد گروه مواجه گشتم. که 1 نفر نوشته را نقد کرده بود با کلمات &quot;are you sure about this&quot; و یک نفر دیگر با کلمات &quot;چرته و پرته|:&quot; و نفر سوم هم با کلمات &quot;دادچ قرصا رو بخور و پست بگذار ویرگول lol&quot;. حتی یکی از این دوستان ارزیابی کرده بودند که 80 درصد مطالبی که در بالا آورده شده است، غلط است؛ که من خیلی مشتاق هستم تا نحوه ارزیابی نوشته و رسیدن به عدد 80 درصد را از این دوست عزیز فرا بگیرم تا در نوشته های بعدی قادر باشم تا درصد غلط بودن نوشته را محاسبه کرده و عدد حاصله را به حداقل برسانم. فارغ از نحوه بازخوردی که من از عزیزان در گروه گرفتم (منظور رعایت ادب و احترام میباشد)، بنده جویای علت ناپسند بودن نوشته گردیدم و متوجه شدم که برای دوستان ابهام به وجود آمده. لذا تصمیم گرفتم تا یکسری توضیحاتی رو در زیر قرار بدم و همچنین بخشی از قسمت های بالا(قبل لینک ویدیو) را با واژگان دیگری جایگزین کنم.موضوع ارائه اینجانب عبارت بود از &quot;بررسی DOM در محیط های JS, jQuery, AngularJS, React&quot;. با توجه به موضوع انتخاب شده که توسط استاد ابریشمی به بنده واگذار گشته بود، اینجانب تمرکز خود را بر روی DOM و نه 4 محیط ذکر شده، گزاشتم و ارائه  تهیه شده را در کلاس به نمایش در خدمت دوستان در آوردم.در مطالبی که در این نوشته قید گردیده، دوستان در قسمت React از نوشته های من استنباط کرده اند که React داره کار CSS رو انجام میده. در جواب باید بگم که دوستان عزیز، React با visual components سر و کار داره و در مدل MVC در بخش v یا همان view فعالیت میکنه. در صورتی که CSS سروکارش با styling هستش و styling که CSS انجام میده کجا و virtual DOM که React انجام میده کجا!!!!و خواهش میکنم هنگام مطالعه نوشته، به عنوان نوشته دقت بفرمایید که در مورد چه مضوعی داره مطالبی بیان میشه. بحث اینکه React, AngularJS, jQuery, JS چی هستند با بحث اینکه DOM چگونه در این محیط ها مورد استفاده قرار میگیره، کاملا مقوله های جدا از هم هستند. بنده فقط به صورت خلاصه بیان کردم که این 4 محیط چی هستند، تا بیننده کلیپ متوجه باشه که کلیپی که قراره مشاهده کنه، در ارتباط با چه موضوعی هست! وگرنه توضیح هر کدام از این محیط ها به طور مفصل، مسلما به توضیح بیشتر و دانش عمیق تری احتیاج داره. مطالب بیان گشته در این نوشته کاملا در سطح مقدماتی بوده و فقط برای آشنایی افراد با title قید گشته، میباشد.و در آخر باید قید کنم که ممنونم از 3 هم کلاسی عزیزی که من رو برای رفع ابهام موجود در این نوشته، تحریک نمودند. بنده انتقاد را با روی باز میپذیرم؛ ولی، فکر نمیکنم که بی ادبی و بی احترامی برای هیچ انسانی قابل قبول باشه!</description>
                <category>علیرضا بخشی زادی محمودی</category>
                <author>علیرضا بخشی زادی محمودی</author>
                <pubDate>Tue, 23 Oct 2018 18:56:33 +0330</pubDate>
            </item>
            </channel>
</rss>