<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های عماد ملک پور</title>
        <link>https://virgool.io/feed/@prodemmi</link>
        <description>علاقه مند به یادگیری مباحث تکنولوژی و نرم افزار</description>
        <language>fa</language>
        <pubDate>2026-06-28 08:45:18</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/386570/avatar/lLKNtS.jpg?height=120&amp;width=120</url>
            <title>عماد ملک پور</title>
            <link>https://virgool.io/@prodemmi</link>
        </image>

                    <item>
                <title>با این برنامه کامیت های خود را به صورت مرسوم بنویسید</title>
                <link>https://virgool.io/@prodemmi/%D8%A8%D8%A7-%D8%A7%DB%8C%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%DA%A9%D8%A7%D9%85%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D9%85%D8%B1%D8%B3%D9%88%D9%85-%D8%A8%D9%86%D9%88%DB%8C%D8%B3%DB%8C%D8%AF-hrqcbummxhem</link>
                <description>گیت‌ یکی از مهم‌ترین ابزارهای مدیریت و کنترل نسخه برای توسعه دهندگان است. با استفاده از گیت‌، می‌توانید به راحتی با همکاران و تیم خود هماهنگی کنید و تغییراتی که در کد خود ایجاد می‌کنید را به صورت دقیق و سریع با دیگران به اشتراک بگذارید.یکی از مهم‌ترین قابلیت‌های گیت‌، ایجاد کامیت‌ها (commit) است که به شما اجازه می‌دهد تغییراتی که در کد خود ایجاد کرده‌اید را به‌صورت دقیق و به‌صورت دائمی در تاریخچه کد خود ثبت کنید. با این حال، کامیت‌های درست و بهینه می‌توانند در مدیریت و کنترل نسخه کد بسیار موثر واقع شوند.برای بهبود کامیت‌های خود، می‌توانید از الگوهای جدید استفاده کنید. الگوهای جدید، برای توصیف تغییراتی که در کد خود ایجاد کرده‌اید، استفاده می‌شوند و به شما اجازه می‌دهند تغییرات خود را به صورت دقیق‌تر و مفهومی‌تری توصیف کنید.برای استفاده از الگوهای جدید، شما می‌توانید از ابزار Better Commits استفاده کنید. Better Commits یک ابزار رایگان و متن‌باز است که به شما اجازه می‌دهد الگوهای جدید را به راحتی به کامیت‌های خود اضافه کنید و تغییرات خود را به صورت دقیق و مفهومی توصیف کنید.با استفاده از Better Commits، می‌توانید الگوهای مختلفی را برای توصیف تغییرات خود استفاده کنید، از جمله:feat: برای توصیف ویژگی‌های جدیدfix: برای توصیف رفع خطاهاdocs: برای توصیف تغییرات مستنداتstyle: برای توصیف تغییرات ظاهری و استایلیtest: برای توصیف تغییرات مربوط به تست و نوشتن تست جدیدchore: برای توصیف تغییراتی که به‌صورت کلی و اجمالی هستندبا استفاده از این الگوها، شما می‌توانید تغییرات خود را به صورت دقیق‌تر و مفهومی‌تری توصیف کنید و این امر به شما کمک می‌کند که تاریخچه کد خود را به‌صورت دقیق‌تر و منظمتر نگه دارید، همچنین به همکاران و تیم خود کمک می‌کنید تا به راحتی بتوانند تغییرات شما را درک و مدیریت کنند.بنابراین، استفاده از الگوهای جدید و ابزار Better Commits می‌تواند به شما کمک کند تا کامیت‌های بهتری ایجاد کنید و تاریخچه کد خود را به بهترین شکل ممکن نگه دارید. برای استفاده از Better Commits مراحل زیر را انجام دهید:نصب برنامه:npm install -g better-commitsبرای استفاده از برنامه نام برنامه را در ترمینال بنویسید:better-commits1 - نوع کامیت (type)را انتخاب کنید.2 - بعد از آن باید محدوده کامیت (scope) را انتخاب کنید.محدوده محل انجام تغییرات را نشان می دهد. 3 - سپس یک توضیح ساده و یک توضیح با جزییات بیشتر وارد کنید.4 - در قسمت پاورقی (footer) می توانید تغییرات بزرگ و یا کد هایی که دیگر استفاده نمی شوند را ذکر کنید.</description>
                <category>عماد ملک پور</category>
                <author>عماد ملک پور</author>
                <pubDate>Thu, 15 Jun 2023 22:57:22 +0330</pubDate>
            </item>
                    <item>
                <title>ایجاد API Reponse راحت تر در لاراول</title>
                <link>https://virgool.io/@prodemmi/%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-apiful-tlpdbfcskwns</link>
                <description>دریافت  یک API Response با چارچوب و قاعده مشخص می تواند برای تیم فرانت اند مفید باشد.پکیج Apiful می تواند راه گریزی برای پیاده سازی API Response های شخصی سازی شده باشد.برای شروع کار اول پکیج را نصب کنید:composer require prodemmi/laravel-apifulبرای ارسال پاسخ، متود های متفاوتی وجود دارند که به شرح زیر است:Success Responsespublic function index(Request $request){     // Or      return apiful()-&gt;success();     // With message and data     return apiful($data)-&gt;withMessage(&quot;This is message&quot;)-&gt;success();      // Or     return apiful()-&gt;withData($data)-&gt;withMessage(&quot;This is message&quot;)-&gt;success(); }پاسخ:{       &quot;status&quot;: &quot;success&quot;,       &quot;status_code&quot;: 200,       &quot;message&quot;: &quot;This is message&quot;,       &quot;data&quot;: [...],       &quot;meta&quot;: []}Error Responsespublic function index(Request $request){    try {       return apiful()-&gt;success();     }catch (\Exception $e){       return apiful()-&gt;exception($e);      //    Or      return apiful($e);     }}پاسخ:{       &quot;status&quot;: &quot;error&quot;,       &quot;status_code&quot;: 500,       &quot;meta&quot;: [],       &quot;message&quot;: &quot;This is exception message&quot;,       &quot;errors&quot;: {        &quot;trace&quot;: [... ],        &quot;file&quot;: &quot;ApiController.php&quot;,        &quot;line&quot;: 21  }}با تغییر فایل کانفیگ apiful.php می توان ارسال Trace و File و Line را غیر فعال کرد:&#x27;errors&#x27;     =&gt; [         &#x27;trace&#x27; =&gt; false,         &#x27;file&#x27;     =&gt; false,         &#x27;line&#x27;    =&gt; false]دیگر متود های ارسال ارور:apiful()-&gt;badRequest();apiful()-&gt;unauthorized();apiful()-&gt;forbidden();apiful()-&gt;internal();apiful()-&gt;notAcceptable();ایجاد Response شخصی سازی شدهبا استفاده از دکوریتور ها میتوانید این کار را انجام دهید ابتدا یک دکوریتور بسازید:php artisan make:decorator UserDecoratorفایل دکوریتور در مسیر app/Http/Decorators/UserDecorator را باز کنید و داخل متود toArray مدل Response که میخواهید را بنویسید:&lt;?phpnamespace App\Http\Decorators;use Prodemmi\Apiful\ApifulDecorator;class َUserDecorator implements ApifulDecorator{    public function toArray(array $response) : array    {        return [          &#x27;success&#x27;     =&gt; true,          &#x27;message&#x27;   =&gt; data_get($response, &#x27;message&#x27;, &#x27;&#x27;),          &#x27;users&#x27;         =&gt; data_get($response, &#x27;data&#x27;, [])        ];    }}بعد از آن باید دکوریتور خود را به فایل کانفیگ اضافه کنید:&#x27;decorators&#x27; =&gt; [    ...    &#x27;users&#x27;     =&gt; \Prodemmi\Apiful\Decorators\UserDecorator::class //  New decoration]حالا از دکوریتور در هر کجا می توانید استفاده کنید:return apiful()-&gt;withDecorator(&#x27;users&#x27;)-&gt;withData($users);  // Or  return apiful()-&gt;withDecorator(UserDecorator::class)-&gt;withData($users);برای دیدن اطلاعات بیشتر به صفحه اصلی پکیج بروید.</description>
                <category>عماد ملک پور</category>
                <author>عماد ملک پور</author>
                <pubDate>Mon, 20 Mar 2023 14:41:47 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی pubspec.yaml در فلاتر</title>
                <link>https://virgool.io/flutter-community/flutter-deep-dive-pubspec-r6mwk1rpzzau</link>
                <description>هر فریمورک برای ذخیره تنظیمات خاص مربوط به خود و یا پکیج مربوطه از فایل های کانفیگ استفاده می کند. برخی از فایل های پیکربندی فایل های متنی ساده هستند اما برخی دیگر ممکن است در فرمت خاصی برای برنامه ذخیره شوند.در فلاتر برای ذخیره اطلاعات و پیکربندی پروژه از yaml استفاده می شود که تحت عنوان pubspec.yaml هست.یک فایل pubspec ساده میتواند به این صورت باشد:name: my_app
version: 1.0.3
description: &gt;-
  This is a new app created by me... .
homepage: https://example.com/my_app
documentation: https://example.com/my_app/docs
environment:
  sdk: &#039;&gt;=2.10.0 &lt;3.0.0&#039;
dependencies:
  bloc: ^2.0.4
   share: ^0.6.5+4
dev_dependencies:
  test: &#039;&gt;=1.15.0 &lt;2.0.0&#039;فایل pubspec می تواند فیلم های زیر را داشته باشد:name(Required)هر پکیج به یک اسم نیاز دارد. که در صورت انتشار و اشتراک گذاری به این نام شناخته می شود.تمام حروف آن باید کوچک باشد و برای جدا سازی کلمات باید از خط تیره (_) استفاده شود.مثل:just_like_thisversion(Required)هر پکیج یا برنامه دارای یک نسخه است که برای انتشار آن در pub.dev به شماره نسخه نیاز دارد.شماره نسخه سه عدد است که با نقطه از هم جدا شده اند.مانند:0.2.43 همچنین می تواند پسوند های ساخت:+1, +2, +hotfix.oopsieیا پیش انتشار:-dev.4, -alpha.12, -beta.7, -rc.5داشته باشد.برای اطلاع بیشتر از چگونگی نوشتن ورژن ، دیدن این سایت خالی از لطف نیست.description(Required)توضیحات برای پکیج های شخصی شما اختیاری است، اما اگر قصد انتشار پکیج خود را دارید باید توضیحی بنویسید که حتما به زبان انگلیسی باشد.homepage(Optional)repository(Optional)issue_tracker(Optional)documentation(Optional)این فیلد ها به ترتیب برای قرار دادن ، سایت اصلی پکیج ، مخزن git ، بخش مربوط به issue و مستندات هست که به استفاده کننده ، معرفی می شود.dependencies(Optional)اگر برنامه شما نیاز به یک پکیج دیگر داشته باشد این فیلد کمک می کند آن را به برنامه اضافه کنید.به عنوان مثال:dependencies:
  qr_flutter: ^3.1.0برای یادگیری چگونگی نوشتن ورژن پکیج مورد نیاز به اینجا سر بزنید.نکته:اگر به هر دلیلی نمی خواستید ورژن پکیج را بنویسید می توانید از کلمه کلیدی any به جای آن استفاده کنید.هر پکیج می تواند زیر مجموعه های دیگری بپذیرد:dependencies:
  angular:
    git:  &#039;git@github.com:angular/angular.dart&#039;
    path: path/to/angular 
     ref: tag | commit hash | branchبرای مثال در اینجا این پکیج به جای میزبان pub.dev ، از آدرس گیت گذاشته شده clone می شود و یا اگر آن را به صورت local داشته باشیم ، از محل path فراخوانده می شود.فیلد ref هم تگ ، commit hash ، یا برنچ مورد استفاده را مشخص می کند.از جهت دیگر بعضی از پکیج ها فقط در زمان دولوپ به کار می آیند یعنی هنگامی که داریم کدنویسی می کنیم کاربرد دارند و بودن و نبودن آن در خروجی release برنامه تاثیری ندارد که آن ها را در فیلد:dev_dependenciesمی‌ آوریم.environmentیک پکیج یا برنامه می تواند مشخص کند که کدام نسخه از دارت SDK را پشتیبانی می کند.به عنوان مثال ، محدودیت زیر می گوید که این پکیج با هر نسخه دارت 2.10.0 یا بالاتر کار می کند.environment:  sdk: &#x27;&gt;=2.10.0 &lt;3.0.0&#x27;همچنین میتوان نسخه فلاتر را مشخص کرد:environment:  sdk: &#x27;&gt;=1.19.0 &lt;3.0.0&#x27;  flutter: &quot;&gt;=1.12.0 &lt;2.0.0&quot;باید در نظر داشته باشد که pubspec فقط این فیلد ها را مورد نظر دارد و به فواصل بسیار حساس هست.</description>
                <category>عماد ملک پور</category>
                <author>عماد ملک پور</author>
                <pubDate>Fri, 04 Dec 2020 15:53:06 +0330</pubDate>
            </item>
            </channel>
</rss>