<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mohadeseh Rastegar</title>
        <link>https://virgool.io/feed/@mohadesehrastegar87</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 18:21:35</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>Mohadeseh Rastegar</title>
            <link>https://virgool.io/@mohadesehrastegar87</link>
        </image>

                    <item>
                <title>آشنایی با مفاهیم CI / CD</title>
                <link>https://virgool.io/@mohadesehrastegar87/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-ci-cd-dlu2g5popt5a</link>
                <description>پایپ لاین CI/CD یکی از بهترین شیوه های پیاده سازی در تیم های devops به منظور دریافت تغییرات ایجاد شده در کد، بصورت مداوم و مطمئن است.CI/CDترکیبی از مخفف کلمات Continuous Integrationو Continuous Delivery است. روش‌های CI/CD در حال حاضر پذیرفته شده ترین گزینه برای کوتاه کردن زمان تولید و تولید نرم‌افزار است.در چشم انداز همیشگی امروز یکی از مهمترین چالش شرکت‌های نرم‌افزاری پاسخ سریع به تقاضاهای بازار و مشتری است. بدین ترتیب روش CI/CD به عنوان راه حل اصلی چنین چالشی در نظر گرفته می‌شود.پایپ لاین (Pipeline)در معنی لغوی و غیر اصطلاحانه، پایپ لاین به لوله های بلندی که معمولا در زیر زمین قرار داشته و برای جابجایی نفت و یا گاز استفاده شده و در متراژ طولانی تعبیه می شوند، گفته می شود. حال به دنیای مهندسی باز می گردیم. پایپ لاین را به توالی خطی ای از ماژول های مشخص می گویند که در جهتی مشخص در حال حرکت هستند.مثلا در دنیای CPU ها، پایپ لاین، به وسیله ای درون CPU گفته می شود که CPU را قادر می سازد دستورات را قبل از اجرا بخواند، و در صورت تایید و به محض تکمیل و بعد از تحویل آن، دستور بعدی را بخواند.                                                                                                                                              DevOpsچیستDevOpsنوعی تغییر در نحوه کار شرکت برای روند استقرار خود است. در بسیاری از سازمان‌ها، کد توسط توسعه دهندگان و استقرار توسط تیم عملیاتی اداره می‌شود. مشکل اساسی که DevOps حل می‌کند، زمان کند چرخه برای رفع اشکالات و انتشار ویژگی‌های جدید است.وظیفه DevOpsوظایف DevOps ترکیبی از عملکردهای توسعه نرم افزار (Dev) و عملیات IT یا(Ops) است که هدف آن کوتاه کردن چرخه عمر سیستم ها و تحویل مداوم (CD) و باکیفیت نرم افزار است.چرخه توسعه نرم‌افزار دارای بسیاری از قطعات متحرک است. یک مشکلی که بسیاری از شرکت‌های بزرگ دارند، حفظ یک روند استقرار ثابت است. مراحل نوشتاری گاهی اوقات رد می‌شوند. استقرارهای دستی مستعد خطا هستند و اسکریپت‌ها نیز معمولاً توسط کسی که آن‌ها را نوشته است قابل درک است.مفهوم : CIیکپارچه‌سازی مداوم و یا ادغام مداوم (CI) در برنامه‌نویسی به مجموعه‌ای از روش‌ها می‌گویند که باعث حفظ انسجام کد می‌شود و از به‌هم‌ریختگی کد جلوگیری می‌کند. این روش‌ها مبتنی بر build کردن مداوم پروژه پس از هر تغییر در کد توسط برنامه‌نویسان و اجرای تست کیس‌های برنامه است. به عنوان مثال هر زمان که یک commit توسط توسعه‌دهنده بر روی مخزن پروژه push شود همهٔ تست‌ها اجرا می‌شود تا بتوان اطمینان حاصل نمود که همهٔ قسمت‌های پیشین کد و قسمت‌های تازه نوشته‌شده با یک‌دیگر سازگاری دارد و درست کار می‌کند.در یک روش CI توسعه دهندگان قبل از کامیت کد به ریپازیتوری کنترل نسخه، آن را بر روی workstationهای خود ایجاد، اجرا و تست می‌کنند. پس از ایجاد تغییرات در ریپازیتوری، زنجیره‌ای از رویدادها به حرکت در می‌آیند. اولین قدم معمول در این زنجیره ساخت آخرین نسخه کد منبع است. در صورت موفقیت آمیز بودن ساخت، تست‌های واحد اجرا می‌شوند. اگر تست واحد موفقیت آمیز باشد، ساخت برای تست‌های سیستمی (معمولا با استفاده از تست‌های خودکار) مستقر می‌شود. از وضعیت این فرآیند به تیم اطلاع داده می‌شود و گزارشی برای ارائه جزئیات مانند تعداد ساخت، نقص و تعداد تست‌ها ارائه می‌گردد.CI به افزایش تعداد کار و خروجی تحویل تیم های مهندسی کمک می کند. معرفی CI به سناریوی فوق به توسعه دهندگان نرم افزار اجازه می دهد تا به طور مستقل روی ویژگی ها به صورت موازی کار کنندCI یک عمل با ارزش و به خوبی تثبیت شده در سازمان های مهندسی نرم افزار مدرن و با کارایی بالا است.هزینه های ارتباطی یک محیط غیر CI می تواند به یک کار همگام سازی پیچیده و درهم تبدیل شود که هزینه های بوروکراتیک غیر ضروری را به پروژه ها اضافه می کند. این امر باعث انتشار کدهای کندتر با نرخ خرابی بالاتر می شود، زیرا توسعه دهندگان را ملزم می کند نسبت به ادغام ها حساس و متفکر باشند. با افزایش اندازه تیم مهندسی و پایگاه کد، این خطرات به طور تصاعدی رشد می کنند.CI به طور کلی در کنار  کار توسعه نرم افزار استفاده می شود. یک سازمان فهرستی از وظایفی که نقشه راه محصول را تشکیل می دهند، تهیه می کند. سپس این وظایف برای تحویل در بین اعضای تیم مهندسی نرم افزار توزیع می شود. استفاده از CI این وظایف توسعه نرم افزار را قادر می سازد تا به طور مستقل و موازی در میان توسعه دهندگان اختصاص داده شده توسعه یابند. هنگامی که یکی از این وظایف کامل شد، یک توسعه دهنده آن کار جدید را به سیستم CI معرفی می کند تا با بقیه پروژه ادغام شود.مفهوم : CDهم مخفف واژگان Continuous Delivery است و هم به Continuous Deployment اشاره دارد به طوری که اصطلاح اول به فرآیندی اشاره می‌کند که از آن طریق نرم‌افزار دائماً آماده دیپلوی است اما اصطلاح دوم سازوکاری است که به صورت خودکار کدهای آماده را روی سرور/سرورهای اصلی منتشر می‌کنددر حقیقت CD توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روشی سریع و مطمئن و به طور کاملا پایدار است. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم‌افزار، زیرساخت و پلتفرم، افرودن ویژگی‌های جدید، رفع باگ و خطاها می‌شود.به وسیله محیط‌های تست مختلف، می‌توان یک Release Pipeline ایجاد کرد تا بتوان یک زیرساخت جدید را به طور اتوماتیک ایجاد کرد و نرم‌افزار را روی آن منتشر کرد. منظور از زیرساخت، سرور، سیستم عامل، سرویس دهنده وب، virtualization، شبکه و پیکربندی و تنظیمات آن‌ها است. به کمک این محیط‌های متوالی می‌توان فعالیت‌های طولانیIntegration، تست عملکرد و تست‌های پذیرش نهایی را به تدریج انجام داد. فرایند Continuous Delivery درRelease Pipeline باContinuous Integration  شروع می‌شود و با انتشار و پایان تست در هر محیط، انتشار و تست در مرحله بعدی شروع خواه شد. مجموع این کارها به صورت حلقه‌های یک زنجیر در پشت سر هم قرار می‌گیرند و فرایند Continuous Delivery را تشکیل می‌دهند.بسیاری از مواقع دو مفهوم Continuous Delivery و Continuous Deployment به اشتباه به جای هم استفاده می‌شوند اما تقاوت این دو چیست؟ Continuous Deployment به این معنی است که هر تغییر در نرم‌افزار به طور اتوماتیک (یا بر طبق یک زمان‌بندی مشخص) در محیط عملیات منتشر شود اما Continuous Delivery به این معنی است که هر تغییر در نرم‌افزار، آماده انتشار در هر محیطی باشد اما ممکن است تصمیم این باشد که منتشر نشود (معمولا به دلایل کسب‌وکاری). این محیط‌ها شامل محیط تست تیم توسعه، محیط تست تیم کنترل کیفیت و محیط عملیات و هر محیط دیگری می‌شود.اکنون به مزایت معایب آن میپردازیم:مزایای CI / CDاستفاده از تغییرات کد خطر      کمتری دارد.مراحل استقرار دستی را حذف می‌کند.سرعت حمل و نقل سریع‌ترافزایش پوشش کدمعایب CI / CDبرای راه‌اندازی خط لوله CI / CD     سرمایه‌گذاری زیادی لازم است.بسیاری از تست‌های خودکار باید      نوشته شوند.برای کار DevOps     باید یک تغییر فرهنگی در آن شرکت ایجاد شود.سیستم‌های قدیمی معمولا از CI / CD     پشتیبانی نمی‌کنند.امیدوارم این مطالب براتون مفید باشه و به دانشتون افزوده باشهگرداورنده:محدثه رستگاراستاد:دکتر مریم حاجی اسمعیلی.دکترای علوم کامپیوتر از دانشگاه کینگستون لندنDr.Maryam HajiesmaeiliPhD of computer science from Kingston university of Londonhttps://ir.linkedin.com/dr-maryam-hajiesmaeili-90930743</description>
                <category>Mohadeseh Rastegar</category>
                <author>Mohadeseh Rastegar</author>
                <pubDate>Tue, 21 Jun 2022 01:23:14 +0430</pubDate>
            </item>
                    <item>
                <title>معماری MVC چیست؟</title>
                <link>https://virgool.io/@mohadesehrastegar87/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-mvc-%DA%86%DB%8C%D8%B3%D8%AA-sw95zapkfo93</link>
                <description>در این مقاله قصد داریم معماریMVCرا برای شما عزیزان به طور کامل شرح دهیم کلمه MVC  مخفف Model View Controller است، در واقع یک نوع از انواع معماری های برنامه نویسی برای طراحی نرم افزار به زبان های مختلف برنامه نویسی می باشد. این معماری از سه بخش اصلی تشکیل شده است.همانطور که از نامش پیداست میتوان سه بخش اصلی تشکیل دهنده این معماری را تشخیص داد. به عبارت دقیق تر برنامه را به سه بخش منطقی تقسیم می کند: بخش مدل، نمای و کنترل کننده. برای رابط های کاربری گرافیکی دسکتاپ استفاده می شد اما امروزه در طراحی اپلیکیشن های موبایل و اپلیکیشن های وب استفاده می شود.الگوی MVC یک الگوی معماری است به این معنی که بر کل معماری برنامه ها حاکم است. اگرچه اغلب به عنوان الگوی طراحی شناخته می شود، اما اگر آن را فقط به عنوان یک الگوی طراحی معرفی کنیم ممکن است اشتباه کنیم، زیرا الگوهای طراحی برای حل یک مشکل فنی خاص استفاده می شود، در حالی که الگوی معماری برای حل مشکلات معماری استفاده می شود، بنابراین کل آن را تحت تأثیر قرار می دهد. معماری برنامه مادارای سه جزء اصلی است:-مدل-چشم انداز-کنترل کنندهو هر کدام وظایف خاصی دارندبخش اول نام یعنیModel برای مدل سازی و ارتباط با پایگاه داده، بخش دوم View برای نمایش رابط کاربری نرم افزار و خروجی نهایی به کاربر و در نهایت بخش سوم یعنی Controller برای دریافت درخواست های ارسالی کاربر که در نرم افزار های تحت وب از طریق پرتکل http می باشد و ارسال اطلاعات دریافت شده از پایگاه داده به رابط کاربری نرم افزار می باشد.                                                                                                    Modelبه عنوان پایین ترین سطح شناخته می شود که به این معنی است که مسئولیت نگهداری داده ها را بر عهده دارد. داده ها را به صورت منطقی مدیریت می کند. مدل در واقع به پایگاه داده متصل است، بنابراین هر کاری که با داده ها انجام دهیم مثل افزودن یا بازیابی داده ها در قسمت  مدل انجام می شود. به درخواست های کنترلر پاسخ می دهد زیرا کنترل کننده هرگز به تنهایی با پایگاه داده ارتباط ندارد. مدل به صورت رفت و برگشت با پایگاه داده صحبت می کند و سپس داده های مورد نیاز را به کنترل کننده می دهد.                                                                                                       Viewنمایش داده ها توسط  view انجام می شود. در واقع UI یا رابط کاربری را برای کاربر ایجاد می کند. بنابراین در برنامه های کاربردی وب وقتی راجب view  حرف میزنیم منظورمان همان کد های HTML/CSS است .نماها توسط داده‌هایی ایجاد می‌شوند که توسط مدل جمع‌آوری می‌شوند.                                                                                               Controllerبه عنوان عضو اصلی شناخته می‌شود زیرا کنترل‌کننده مؤلفه‌ای است که ارتباط بین نماها و مدل را امکان‌پذیر می‌کند، بنابراین به عنوان یک واسطه عمل می‌کند. کنترلر لازم نیست نگران مدیریت منطق داده باشد، فقط به مدل می گوید که چه کاری انجام دهد. پس از دریافت داده‌ها از مدل، آن را پردازش می‌کند و سپس تمام آن اطلاعات را می‌گیرد که آن را به view ارسال می‌کند و نحوه نمایش آن را برای کاربر توضیح می‌دهد.توجه: نماها و مدل ها نمی توانند مستقیم صحبت کنند.الگوی MVC به شما کمک می کند تا کدهای فرانت اند و بک اند را به اجزای جداگانه تقسیم کنید. بنابراین ، مدیریت و ایجاد تغییرات در هر دو جهت بدون تداخل با یکدیگر بسیار آسان تر است.درواقع MVC یک معماری است که برنامه شما را به اجزای کوچکتر تقسیم می کند. مدل با داده ها و منطق سیستم شما سروکار دارد. نما فقط داده ها را نمایش می دهد و کنترلر ارتباط بین مدل و نما را حفظ می کند.تاریخچهبرای اولین بارTrygve Reenskaug MVC را اختراع کرد. اولین گزارش‌ها در مورد MVC زمانی نوشته شد که او از یک دانشمند در آزمایشگاه تحقیقاتی زیراکس پالو آلتو (PARC) در سال 1978/1979 بازدید کرد. در ابتدا، MVC &quot;ویرایشگر نمایش مدل اشیاء&quot; نامیده می شد اما به سرعت آن را به &quot;کنترل کننده نمای مدل&quot; تغییر داد.هدف Tygrve حل مشکل کنترل یک مجموعه داده بزرگ و پیچیده توسط کاربران بود. روش MVC در طول سال ها تغییر کرده است. از آنجایی که الگوی MVC قبل از مرورگرهای وب اختراع شد، در ابتدا به عنوان یک الگوی معماری برای رابط های گرافیکی کاربر (GUI) استفاده شد.مزایای MVC:توسعه و اشکال‌زدایی برنامه سریع‌تر میشه برنامه‌نویس‌های بخش های مختلف می‌تونن همزمان برنامه رو توسعه بدن. برای مثال بطور همزمان یک برنامه‌نویس   frontend می‌تونه روی ویوو، و یه برنامه‌نویس backend دیگه روی منطق برنامه کار کنه.اطلاعات مدل از فرمت خاصی تبعیت نمیکنه با توجه به بدون فرمت بودن اطلاعاتی که از مدل گرفته میشه، یک ویوو می‌تونه یک صفحهHTML باشه، یا یک صفحه PDF یا یک اپ دسکتاپ و یا یک وبسایت یا اپ موبایل دیگه که از API ما استفاده می‌کنه.می‌تونیم برای یک مدل، چند تا ویوو داشته باشیم مثلا مدلUser می‌تونه چندین ویوو مختلف برای نمایش کاربرا داشته باشه. که باعث میشه کدهای تکراری حذف بشن. چون برای مدل مهم نیست که اطلاعاتش کجا و به چه صورت داره استفاده میشه.معماری MVC رابط کاربری را از منطق تجاری جدا می کندسادگی در نگهداریاجزای مختلف برنامه در MVC می توانند به طور مستقل ، مستقر و نگهداری شوند.این معماری به تست اجزای مستقل کمک می کند.معایب MVC:باعث افزایش پیچیدگی میشه اگه برنامه‌ی ما کوچیک هست نیازی به اعمال معماری‌ها و الگوها نیست.رابطه نزدیک ویوو و کنترلر چون کنترلر یک رابط بین مدل و ویوو هست، قابلیت استفاده مجدد کنترلرها خیلی کمتر هست.نتیجه گیری : درک MVC آنقدرها هم آسان نیست، واقعاً سخت است، اما یادگیری آن غیرممکن نیست و هر توسعه‌دهنده‌ای باید آن را در هنگام توسعه یک برنامه در نظر داشته باشد. فقط به خاطر داشته باشید که MVC یک معماری است که نرم افزار شما را به اجزای کوچکتر تقسیم می کند. این مدل با داده ها و منطق سیستم شما سروکار دارد. View فقط داده ها را نمایش می دهد و کنترلر ارتباط بین مدل و نما را حفظ می کند. این &quot;تقسیم&quot; خوانایی و بودن را امکان پذیر می کند و همچنین بخش تست را آسان تر می کند.معماری MVC روند توسعه نرم افزار را بسیار اصولی تر پیش خواهد برد. زیرا لایه های مختلف برنامه را از یکدیگر جدا کرده است. و در آینده برای انجام تغییرات جزئی و کلی و یا حتی اضافه کردن یک ویژگی جدید به برنامه کار بسیار آسان تر و سریع تر از حالتی است که از معماری MVC در آن برنامه استفاده نشده باشد.امیدوارم این مطالب براتون مفید باشه و به دانشتون افزوده باشهگرداورنده:محدثه رستگارمنابع: https://www.quora.com/  https://techtip.ir/ استاد:دکتر مریم حاجی اسمعیلی.دکترای علوم کامپیوتر از دانشگاه کینگستون لندن Dr.Maryam HajiesmaeiliPhD of computer science from Kingston university of Londonhttps://ir.linkedin.com/dr-maryam-hajiesmaeili-90930743</description>
                <category>Mohadeseh Rastegar</category>
                <author>Mohadeseh Rastegar</author>
                <pubDate>Mon, 18 Apr 2022 20:07:47 +0430</pubDate>
            </item>
            </channel>
</rss>