<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مجید ایمان زاده</title>
        <link>https://virgool.io/feed/@majid_imz</link>
        <description>یک توسعه دهنده سمت سرور ساده</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:48:23</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/60571/avatar/oCrh3f.png?height=120&amp;width=120</url>
            <title>مجید ایمان زاده</title>
            <link>https://virgool.io/@majid_imz</link>
        </image>

                    <item>
                <title>چطور از دیزاین پترن ها استفاده کنیم؟ (متا دیزاین پترن ها)</title>
                <link>https://virgool.io/@majid_imz/%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%B2%D8%A7%DB%8C%D9%86-%D9%BE%D8%AA%D8%B1%D9%86-%D9%87%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-%D9%85%D8%AA%D8%A7-%D8%AF%DB%8C%D8%B2%D8%A7%DB%8C%D9%86-%D9%BE%D8%AA%D8%B1%D9%86-%D9%87%D8%A7-tjncjhlrsmoe</link>
                <description>مهندسی نرم افزار خیلی قشنگ تر میشه اگر همه چی ثابت بمونه ولی متاسفانه تغییرات در توسعه نرم افزار خیلی بالاست و این رویای ثابت بودن بیزینس لاجیک شاید تا حد زیادی رویا باشه. شما همیشه باید منتظر تغییرات و اصلاحات اساسی از سمت تیم بیزینس باشید.اگر از ساختار مناسبی در ابتدای طراحی سیستم خودتون استفاده نکنید و فقط شروع کنید به کد زدن در اینده شکی نکنید توسعه اون نرم افزار دردسر بسیاری خواهد داشت و بفرض اینکه شما دیگه توی اون تیم هم نیستید ولی شکی نکنید دعای خیر تیم پشت سرتان خواهد بود.دیزاین پترن ها فقط بدرد مصاحبه میخورهیکی از مواردی که توی لینکدین دیدم و خیلی من رو بفکر فرو برد این بود که یه شخصی پستی منتشر کرده بود و بزرگوار فرموده بود که دیزاین پترن ها الکی هستن و تو مصاحبه فقط سوال پرسیده میشه و توی توسعه نرم افزار هیچ استفاده ای ازش نمیشه.استفاده از دیزاین پترن در توسعه نرم افزار نیازمند یه دانش مناسبه. یعنی صرف حفظ کردن این پترن ها به شما کمک نمیکنه و حتی امکان اشتباه توی استفاده از اون ها خیلی زیاده. یعنی ممکنه شما دیزاین پترنی رو استفاده کنید که بیشتر از اینکه به شما کمک کنه کار توسعه نرم افزار رو براتون سخت میکنه.من هیچ وقت نمیتونم ازشون استفاده کنمتا حالا بهش فکر کردید چرا؟ دلیل اول اینکه شما قبل از استفاده از دیزاین پترن باید با مفاهیم دیگه ی OOP اشنا بشید. یکی از مفاهیمی که خیلی مهمه SOLID هست. اول از همه تسلط خیلی مناسبی نسبت این الگوهای طراحی پیدا کنید. شما تا زمانی که این الگوها رو توی کد خودتون رعایت نکنید هیچ وقت نمیتونید از دیزاین پترن ها درست استفاده کنید و تشخیص درستی داشته باشید که از کدوم دیزاین پترن استفاده کنیم.متا دیزاین پترن هامورد بعدی که خیلی توی پیاده سازی و استفاده از دیزاین پترن ها تاثیر داره متا دیزاین پترن ها هستند. متا دیزاین پترن ها توی کتاب Gang of four معرفی شدن و مکمل استفاده از دیزاین پترن ها هستن.این متا دیزاین پترن ها شامل موارد زیر هستند:Separate out the things that change from those that stay the sameProgram to an interface, not an implementationPrefer composition over inheritanceDelegate, delegate, delegateمورد هم بعدی هم توی Gang of four اشاره نشده ولی خیلی کمک تون میکنه YAGNI هستYou ain’t gonna need itشما نباید دیزاین پترنی رو در ابتدای مسیر طراحی انتخاب کنید. شما باید با کمک دیزاین پرینسیپل های بالا بتونید اول کلاس های خودتون رو طراحی کنید. شکی نکنید که اگر درست مفاهیم بالا رو درک کنید به دیزاین پترن مورد نظر با توجه به نیاز و ساختار خواهید رسید. در حین اینکه طراحی خود را انجام میدید دیزاین پترن مورد نظر در ذهن شما مجسم میشود.باز هم تاکید میکنم. دیزاین پترن ها را حفظ نکنید. دیزاین پترن ها رو بخونید ولی حفظ نکنید سعی کنید تسلط بالایی به موارد فوق که ذکر کردم برسیداگر عمری بود حتما در خصوص موارد بالا مطالبی خواهم نوشت با مثال.</description>
                <category>مجید ایمان زاده</category>
                <author>مجید ایمان زاده</author>
                <pubDate>Fri, 04 Aug 2023 12:58:30 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه فروشنده بودن من در دیجی کالا</title>
                <link>https://virgool.io/@majid_imz/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%81%D8%B1%D9%88%D8%B4%D9%86%D8%AF%D9%87-%D8%A8%D9%88%D8%AF%D9%86-%D9%85%D9%86-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AC%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7-culcnq2qogmc</link>
                <description>این نوشته برای دوستانی مناسبه که از دیجیکالا متنفرن و دیگه نمیخوان خرید کنند و یا میخوان توی دیجیکالا به عنوان فروشنده کالا بفروشند.دیجیکالا یک پلتفرمی هست که امکاناتی به مردم داده میشه تا بتونن کالای خودشون رو روی دیجیکالا بفروشند. دیجیکالا در حال حاضر فقط در کالاهای دیجیتال به عنوان یک فروشنده حضور داره.پروسه ثبت نام شما چند ساعته انجام میشه و بعد از آموزش میتونید کالاتون رو اضافه کنید. (با این قسمت کاری ندارم)کمیسیونبسته به نوع کالای شما کمیسیون متفاوت است برای مثال کالای دیجیتال 1 درصد (قبلا انقدر بود) و لوازم چوبی 10 درصد.دیجیکالا هزینه پردازش محصول, لیبیل زدن و هزینه ارسال رو از شما دریافت میکنه و توی قسمت اضافه کردن محصول این موضوعات رو به شما توضیح میده. میتونید روی سایت سلر آکادمی هزینه ها رو مشاهده کنید.قیمت گذاری محصولات در دیجیکالایک تعریفی توی دیجیکالا وجود داره به اسم قیمت مرجع. که به اصطلاح قیمت عرف بازار هست. و شما از این قیمت بالاتر و پایین تر نمی توانید قیمت گذاری بکنید.مفهوم دیگه ای توی دیجیکالا وجود داره به اسم Buy Box. انتخاب شدن شما به عنوان فرونشده اول توی دیجیکالا به شرایط مختلفی بستگی داره مثل قیمت (مهم ترین), زمان ارسال(در انبار بودن کالا مزیت محسوب میشه), گارانتی,عملکرد شما و امتیازی که گرفتید.بایباکس واقعا قیمت رو رقابتی میکنه!اگر شما بتونید کالایی رو روی دیجیکالا بفروشید. باید طبق داده ای که خودتون برای کالا تعیین کردید کالا رو به انبار های دیجکالا ارسال کنید. برای مثال تحویل هفت روز کاری. شما باید تا هفت روز کالا رو تحویل دهید وگرنه جریمه واقعا سنگینی میشید که طبق قیمت کالا محاسبه میشه.تسویه حساب چند روزه انجام میشه؟تمام فروش شما در یک ماه جمع میشه و ما آینده تسویه میشه. برای مثال شما 10 آذر یک گوشی فروختید پول شما در تاریخ 1 بهمن تسویه خواهد شد :). اگر فروشنده برتری باشید و فروش خوبی داشته باشید بعد از 10 روز از اتمام ماه تسویه شما انجام میشه.پردازش محصولبرخورد خوبی با محصول شما توی انبار دیجیکالا نمیشه و احتمال زیاد کالا به یک شکل دیگه به خریدار میرسه پس بهتره بسته بندی خیلی خوبی داشته باشید وگرنه کاری نمیشه کرد (باید فرم خسارت پر کنید و ....)ناوگان دیجیکالا: معمولا دیجیکالا برای مناطق بازاری و تولیدی ناوگانی رو فعال کرده که دیگه لازم نیست خودتون کالا رو به دیجیکالا بفرستید برای مثال بازار شوش یا چهاردانگه که یک کامیون تشریف میارن و کالای شما رو تحویل میگیرن و هزینه ارسال شما ارزان تر میوفته. معطلی توی انبار رو هم دیگه ندارید.چی شد که دیگه همکاری نکردی؟کالایی که ما میفروختیم لوازم چوبی مثل جلومبلی, عسلی و ... بود. فروش کالایی توی این سبک کار واقعا سخته و لازمه که شما عکس خوب و حتی ویدئویی از محصول داشته باشید وگرنه نمیتونید بفروشید. قیمت ها روی دیجیکالا واقعا رقابتی بود و حاشیه سود برای ما پایین میومد. هزینه ارسال به دلیل حجم داشتن محصولات ما بالا بود (هم ارسال به انبار هم ارسال به مشتری). تسویه یکماهه پول واقعا ستم بود و پول شما به مدت یک ماه بلوکه میشد و بازار هم چکی کار نمیکرد.بسته بندی لوازم چوبی سخته و دوستان لطف میکردن کالا ها رو نابود میکردند و تحویل مشتری میداند. این هم تجربه مننتیجه گیریدیجیکالا به هیچ عنوان شخصی رو وادار به فروش کالا روی سایت خود نکرده همچنین هیچ شخصی رو وادار به خرید . قوانینی که دیجیکالا ایجاد کرده برای فروش محصول به نظر معقول بوده و تا حد زیادی به نفع خریدار بود. برای مثال بازگرداندن محصول بعد از هفت روز بدونه دلیل! لیکن به نظر من بوجود اومدن اینطور مشکلات توی سیستم های مارکت پلیس بنظرم من عادی هست و پیش میاد و نباید واقعا خیلی توقع داشت که هیچ مشکلی روی سیستم کاریشون وجود نداشته باشه.من تجربه خوبی از همکاری با دیجیکالا نداشتم ولی افرادی هستند که فروش خوبی توی دیجکالا دارند و توی این امر موفق هستند. حدود یکسالی از این از همکاری من میگذره و احتمال خیلی از قوانین عوض شده باشند.</description>
                <category>مجید ایمان زاده</category>
                <author>مجید ایمان زاده</author>
                <pubDate>Wed, 21 Oct 2020 21:48:09 +0330</pubDate>
            </item>
                    <item>
                <title>گیت چگونه کار میکند؟ قسمت ۲</title>
                <link>https://virgool.io/@majid_imz/%DA%AF%DB%8C%D8%AA-%DA%86%DA%AF%D9%88%D9%86%D9%87-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C%DA%A9%D9%86%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-dhhqng9c9xvu</link>
                <description>توی مقاله ی گیت چگونه کار میکند؟ نگاهی به داخل پوشه .git یک توضیح کلی در رابطه با گیت داده شد و بعضی از پوشه هایی که در گیت بودند را توضیح دادیم.توی این مقاله بیشتر با اتفاقاتی که در پوشه گیت میوفته اشنا میشیم که چطور فایل ها و تغییرات ما در گیت ذخیره میشوند.همه چیز در گیت آبجکت استانواع آبجکت:کامیت: نگهدارنده اطلاعت شخص کامیت کننده (author), پیام کامیت (message), اشاره کننده ای (pointer) به درختی از تغییرات.درخت (tree): اشاره کننده ای (pointer) به فایل ها و درخت های دیگر (برای مثال شما در یک کامیت پنج فایل و یک فولدر را کامیت کردید. اینکه بدانیم این کامیت به چه فایل هایی لینک شده توسط درخت انجام میشود)و blob: بلاب ها فایل ها و تغییرات ما هستند که در پوشه objects ذخیره میشوند .گیت دیتابیسی از اشاره ها است | Git is Database of Referenceیک سری توضیحات تیتروار در خصوص گیتگیت یک گراف است.کامیت ها همگی به parent خود اشاره میکنند (کامیت قبلی خود چی بوده)برنچ ها صرفا فایل هایی هستند که به یک کامیت مشخص اشاره میکنند.و HEAD یک اشاره گر به اخرین فعال ما میباشد.نام هر آبجکت ما با SHA1 ۴۰ کارکتری تشکیل شده که unique می باشد.گیت از دو حرف اول کارکتر ها برای سازماندهی کردن فایل ها استفاده میکند..git/objects/77/dfg52s …………بعد از توضیحات بالا همراه با مثال میخوایم با مفاهیم آشنا بشیم.کامیت در گیتبرای این که شما بخواهید تغییرات شما در گیت ثبت شده و نگهداری شود لازم هست ان ها را کامیت کنید. به چه صورت؟ با دستور زیر:git commit -m &amp;quotsome changes&amp;quotکامیت در گیتحال اگر من دستور زیر را وارد کنم:git logکامیت های من همانند عکس زیر لیست میشوند.git logمشاهده میکنید که نام کامیت ما یک هش ۴۰ رقمی میباشد.مشاهده ابجکت کامیتوقتی سری پوشه ابجکت میزنیم مشاهده میکنیم که دو کارکتر اول کامیت به عنوان نام دایرکتوری و باقی کارکتر ها به عنوان نام ابجکت در نظر گرفته شده اند.در کامیت گیت ما چه میگذرد؟ | بریم داخل آبجکت های گیت :)حال سوالی که پیش میاد این هست اطلاعات کامیت کجا ذخیره میشود؟شما با دستور زیر میتوانید محتویات یک هش را مشاهده کنید:git cat-file SHA1
مثال
git cat-file -p 5d45aef0b749536bf8b3d49895b3578563f195d1git cat-file sha1همینطور که مشاهده میکنید اطلاعاتی در خصوص کامیت به ما میده (چون کامیت اول هست parent نداره)در تصویر بالا کلمه tree به چشم میخوره که به یک هش اشاره میکنه. دوباره با دستور بالا محتویات درخت رو مشاهده میکنیمgit cat-file -p 077fef12a2ede0450eaa3e4b2380a39cc06741e1خب در تصوری بالا مشاهده میکنید که درخت ما فقط به یک blob (محتوای متنی یا تصویر و ...) اشاره میکنه.خریجی دستور بالا میتواند بسته به تعداد فایل ها و دایکرتوری های کامیت میتفاوت باشد و به blob های مختلف اشاره کند.حال میخواهیم بدانیم که در فایل blob ما چه چیزی ذخیره شده است:git cat-file -p 1450341708adc49b15ee929ddfac55d9dff9c099همینطور که میبینید majid در این فایل ذخیره شده.نکته:بعد از تغییر در هر فایل گیت تمام فایل را هش کرده و داخل یک blob ذخیره میکند و با کمک همین ویژگی شما میتوانید تغییرات گذشته یک فایل را مشاهده کنیدامیدوارم از این مقاله استفاده کافی رو برده باشید.</description>
                <category>مجید ایمان زاده</category>
                <author>مجید ایمان زاده</author>
                <pubDate>Fri, 09 Oct 2020 16:49:52 +0330</pubDate>
            </item>
                    <item>
                <title>لاک دیتابیس؟ | Database Locking</title>
                <link>https://virgool.io/@majid_imz/%D9%84%D8%A7%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-database-locking-nnativoikrjg</link>
                <description>قفل کردن دیتابیستکنیکی هست که برای کارهای همزمان (concurrent) ایجاد شده و به کابران یا thread ها اجازه نمیده که کارهای همدیگه رو بازنویسی یا تغییر بدهند. به عبارت دیگر حفاظت از داده خود برای جلوگیری از تغییر در همان لحظه.اگر اپلیکشن شما یک کاربر همزمان برای اپدیت داده در لحظه خواهد داشت خب جای نگرانی نیست. مشکل زمانی ایجاد میشود که کاربران مختلف در یک لحظه قصد دسترسی و تغییر داده مشابه را در لحظه دارند. اینجاست به عنوان یک توسعه دهنده مهمه که درباره همزمانی (concurrency) فکر کنی.قفل کردن دیتابیسیک مثال از حالت همزمانی (concurrency)فرض کنید کاربرای زیادی قصد خرید کالایی از فروشگاه اینترنتی عی رو دارند که موجودی اون 1 هست. و فروشگاه اینترنتی موردنظر توی تلویزیون, سایت های مختلف تبلیغ کرده است. و 2000 هزار نفر کاربر قصد خرید این ایتم رو دارند و شما فقط میتونید این ایتم رو به یک نفر بفروشید.برای مدیریت این وضعیت از قفل های دیتابیسی استفاده میکنید اگر چنین اتفاقی نیوفته امکانه داره یک ایتم که فقط یک موجودی داره به 1999 نفر دیگه فروخته بشه.مثال های فراوانی از این مشکلات همزمانی میشه زد.....تو این مقاله قصد داریم با دو تا از روش های database locking اشنا بشیم. optimistic and pessimistic locking.هر کدوم از این روش های لاک کردن دیتابیس مزایا و معایب خودشون رو دارند و یک اپلیکشن خوب از ترکیبی از این دو روش استفاده میکنه.روش Optimistic Lockingتعریف استراتژی عی هست که کار اون تشخیص و حل در زمان وقوع collisions (تصادف, برخورد) در اپلیکشن شماست و پیشنهاد میشه در وضعیت های چند کاربره که برخورد و مشکل بسیار نادر هست استفاده بشود. در این روش رکورد دیتابیس عملا قفل نمیشه! و با یک فیلد خاصی در دیتابیس کنترل میشه مثل (version, timestamp, etc).روش Optimistic Locking یک استراتژی متداول هست. چون اکثر اپلیکشن ها طراحی شون جوری بوده که کاربر مشخص فقط قصد اپدیت کردن دیتایی رو داره که متعلق به خودش هست و خیلی دوره که دو کاربر قصد اپدیت کردن یک رکورد اون هم به صورت همزمان رو داشته باشن.باز هم میگم ایده پشت Optimistic Locking این هست که collisions در اپلیکشن ما به ندرت اتفاق میوفته. تمام!خب من یه مثال ساده میزنم از این روش توی فریمورک RubyOnRailsلازم میدونم بگم این روش های لاک کردن کانسپت هست. دلیل نمیشه که من از روبی مثال میزنم این روش توی php, java و ... نباشه - تمام فریمورک ها این ویژگی ها رو پشتیبانی میکنن به روشی و صرفا باید بگردید دنبالش.برای این که بتونیم از این روش استفاده کنیم باید یک فیلد به اسم lock_version به جدولمون اضافه کنیم.خب حالا با استفاده تست spec این روش رو تست میکنیم:خب توی کد بالا من قبل از اینکه ابجکت t1 ذخیره بشه اون رو تغییر دادم. اتفاقی که حالا اینجا میوفته زمانی که آبجت دوم من یعنب t2 میخواد ذخیره بشه یک Exception پرتاب میشه. :) به همین خوشمزگی.خب optimistic locking یکسری مزایا داره. از این جهت که ویژگی خاصی سمت دیتابیس نمیخواد. پیاده سازیش کار آسونی هست. وشما به راحتی میتونید اررور هندلینگ رو انجام بدید.اصلی ترین عیب یا مشکل optimistic locking عمل اپدیت یک ذره کندتر میشه چون فیلد lock version قبل ش باید چک بشه.روش Pessimistic Lockingروش Pessimistic Locking عمل لاک کردن رکورد رو سمت دیتابیس انجام میده و این روش توی اکثر دیتابیس ها پیشبینی و پیاده سازی شده. اطلاعات بیشتر در رابطه با لاک کردن دیتایس رو میتونید توی لینک های زیر پیدا کنید.MySQL: https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.htmlPostgreSQL: https://www.postgresql.org/docs/current/interactive/sql-select.html#SQL-FOR-UPDATE-SHAREخب همینطور که میدونید این روش هم در فریمورک های مختلف توسط ORM مورد استفاده پیاده سازی شده. باز هم شما رو به مثالی عملی از استفاده از این روش توی فریمورک روبی ان ریلز دعوت میکنم.توی تکه کد بالا از متدی به اسم lock  استفاده شده. این متد رکورد مورد نظر رو در سطح دیتابیس لاک میکند و ریکوئست هایی که قصد دسترسی به این رکورد را دارند بلاک میشوند.نتیجه گیریاستفاده از روش Optimistic Locking برای اپلیکشن هایی که در حال حاضر فعالیت میکنند به نظر انتخاب بهتری است. دلایلی هم وجود دارد. برای هندل کردن اررور Pessimistic Locking باید روشی اتخاص کنید! پیاده سازی روش Pessimistic Locking کار اسونی هست ولی باید در نظر داشته باشید  که امکان دارد یک پردازشی در اپلیکشن شما منتظر آزاد شدن قفل دیتابیس باشد.  امکان به وجود امدن deadlock در اپلیکشن شما وجود دارد!استفاده از هر یک از این روش ها بستگی به معماری و نیاز اپلیکشن شما دارد.تمام.</description>
                <category>مجید ایمان زاده</category>
                <author>مجید ایمان زاده</author>
                <pubDate>Wed, 25 Mar 2020 09:40:20 +0430</pubDate>
            </item>
                    <item>
                <title>گیت چگونه کار میکند؟ نگاهی به داخل پوشه .git</title>
                <link>https://virgool.io/@majid_imz/how-does-git-work-internally-a9q7fwyy7bb1</link>
                <description>گیت چی هست اصلا؟گیت یک نوع از ورژن کنترل هست! ورژن کنترل های ابزار هایی هستند که به ما اجازه ی مدیریت کدهای پروژه و همکاری تیمی رو میدهند.با کمک ورژن کنترل ها هر شخصی میتونه در فضای کاری خودش کار کنه و تاریخچه تغییرات کد ها و چه کسانی رو کد ها کار کردن رو هم مشاهده کنه و بعد از تموم شدن کارش و تست کردن میتونه رو در برنج های دیگه مرج کنه و ماموریت رو به پایان برسونه :)در متن بالا گفتم تاریخچه, یعنی چی؟ یعنی که اگر شما 3 سال پیش یک تغییری روی کد داده باشید و الان اون رو لازم داشته باشد خیلی راحت میتونید به اون کد دسترسی پیدا کند.برای اینکه بیشتر با گیت آشنا بشید پیشنهاد میکنم ویدئویی گیت چیست که رو یوتیوب منتشر کردم رو مشاهده کنید. اینم لینک آپاراتحالا شاید براتون سوال باشه git چطور کار کنه؟داخل پوشه گیت چه میگذرد؟زمانی که شما وارد یک پروژه میشود که ورژن کنترل گیت بروی ان وجود دارد ناخودگاه متوجه حضور پوشه .git میشوید.من پروژه ندارم چیکار کنم؟  .git رو نمیبینم! کجاست؟خب دوستان عزیزی که پروژه گیت ندارن میتونن به دو روش یک پروژه گیت داشته باشن.با استفاده از دستور git initدو با استفاده از git clone و دریافت یک پروژه از روی گیتهاباگر نمیدونی با این دستورا چجوری کار کنی پیشنهاد میکنم این ویدئو رو حتما ببینی. تفاوت git init و git cloneحالا بعد از اینکه مراحل بالا رو طی کردیم وارد دایرکتوری .git پروژه مون میشیم و دستور زیر رو میزنیم:$ ls -1خب, بعد از زدن دستور بالا انتظار داریم با چنین صحنه ای مواجه بشیم:دایرکتوری branches: گیت خیلی وقت است که دیگه از این دایرکتوری استفاده نمیکنه.فایل config: تنظیمات مربوط به پروژه شمافایل HEAD: اشاره به branch کنونی شما. من در حال حاضر روی مستر هستم.دایرکتوری hooks: یک سری shell script که با توجه به یک رخداد گیت منفجر میشوند (فارسی سخت)مثال: قبل از ایونت commit چک بشه که ایندنت ها رعایت شده یا نه و ...دایرکتوری objects: خب مهم ترین بخش پوشه گیت. گیت تمام داده خودش و کدهای شما رو اینجا به صورت هش شده نگه میدارهسه نوع مختلف ابجکت داریم: 1. commit2. tree3. blob (content or source code)مطلب تموم شد؟ تازه شروع ماجراست.توی مقاله های بعدی بیشتر بررسی میکنیم که گیت چجوری کار میکنه و تخصصی تر دایرکتوری ها و فایل ها رو بررسی میکنم. آموزش های بیشتر در کانال تلگرام @parcode_ir</description>
                <category>مجید ایمان زاده</category>
                <author>مجید ایمان زاده</author>
                <pubDate>Sat, 14 Mar 2020 03:24:17 +0330</pubDate>
            </item>
            </channel>
</rss>