<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mahdi!</title>
        <link>https://virgool.io/feed/@mahdi_s24</link>
        <description>یه برنامه نویس، که حسابی دوست داره بخونه و چیزای مختلف و جدید یاد بگیره!</description>
        <language>fa</language>
        <pubDate>2026-06-08 01:59:42</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/27227/avatar/0CJsop.jpg?height=120&amp;width=120</url>
            <title>Mahdi!</title>
            <link>https://virgool.io/@mahdi_s24</link>
        </image>

                    <item>
                <title>SemVer</title>
                <link>https://virgool.io/@mahdi_s24/semver-hhsrfdd7b9ey</link>
                <description>نسخه بندی معنایینسخه بندی معنایی یا Semantic Versioning ، یکی از روش های معروف و پرکاربرد نسخه بندی نرم افزاره!تو این روش به راحتی مشخص میکنیم نسخه ای که از یه نرم افزار، وبسایت، کتابخونه یا پکیج (یا بصورت کلی، هر محصولی که تو حوزه تکنولوژی تولید و توسعه داده میشه) ارائه میشه، دقیقا چه نوع تغییراتی توش به وجود اومده تا کاربر بتونه با نگاه اول تشخیص بده که نسخه جدید این نرم افزار یا وب سایت، تغییراتش تو چه قسمتاییش به وجود اومده!همنطوری که تو عکس بالا میبینید، این روش نسخه بندی عموما از 3 قسمت کلی تشکیل شده : X . Y . Zیه سری چیز میز دیگه هم داره که بهش اضافه میکنن که بعدا میگم بهتون! ?قسمت اولش، همون X، تغییرات عمده و بزرگ (Major) بهش میگن و یه اسم دیگش هم هس: Breaking این قسمت، هر موقع عددش عوض میشه، یعنی با نسخه کاملا جدید از محصول روبرو هستیم که تغییراتش پایه ای و خیلی عمده هس!یا یکم به زبون علمی تر، به احتمال قوی، API هاش با نسخه قبلی سازگاری ندارن! ?توی نرم افزار ها و وب سایت ها شاید اونقدرا برامون تأثیر گذار نباشه، ولی وقتی داریم از یه کتابخونه یا پکیج خاصی استفاده میکنیم، این قضیه برامون حیاتی تره!چرا؟! چون اگر اون پکیج یا کتابخونه رو به این نسخه جدید آپدیت کنیم، امکان داره یه سری API ها و یا توابعی که توی نسخه قبلی بودن، تو نسخه جدید نباشن و این وسط کارمون خراب شه و مجبور شیم دوباره ازنو بازنویسی و توسعه داشته باشیم! (که این یعنی دردسر ?)این قسمت دیر به دیر افزایش پیدا میکنه تقریبا! چون بالاخره شامل تغییراتیه که خیلی کلی و پایه ایه!قسمت دومش، همون Y، تغییرات جزئی و کوچیک (Minor) بهش میگن و یه اسم دیگش هم هس: Featureاین قسمت، هر موقع عددش عوض میشه، یعنی یه سری قابلیت جدید به محصول اضافه شده! تغییرات به احتمال قوی، کلی و پایه ای نیستن و API ها با نسخه قبلی سازگاری دارن!پس در نتیجه میتونیم با خیال راحت، اگه دلمون خواست محصولی که ازش استفاده میکنیم رو، به این نسخه آپدیت کنیم تا ویژگی های جدید رو داشته باشیم و بتونیم اگه خواستیم ازشون استفاده کنیم! ?قسمت سومش ، همون Z، مربوط به رفع عیب ها و باگ ها، توی نسخه فعلی از محصول هس (Patch) و یه اسم دیگش هم هس: Fixاین قسمت، هر موقع عددش عوض میشه، قابلیت جدیدی به محصول اضافه نمیشه! بلکه همین قابلیت هایی که توی همین نسخه از محصول هس رو بهبود میدن و یا خطاهایی که پیدا کردن یا بهشون گزارش داده شده رو رفع میکنن و طبیعتا API ها با نسخه قبلی سازگاری دارن!پس میتونیم با خیال خیلی راحت، اگه دلمون خواست که نه، بهتره حتما محصولی که ازش استفاده میکنیم رو به این نسخه آپدیت کنیم، تا جلوگیری کنیم از به وجود اومدن اشکالاتی که شاید تو آینده قراره از طرف خطاهای خود محصول، برامون دردسر درست کنن! ?توی عکس بالایی هم میتونید یه مثال از این نوع نسخه بندی رو ببینید!یادتونه گفتم بعضی اوقات میان یه سری چیز میز هم به این اعداد اضافه میکنن؟! ?این مورد ها کاملا اختیاری هستن و برای دادن اطلاعات بیشتر ازشون استفاده میشه!مثلا تو این عکس یکیشو نشون داده!بهش میگن برچسب پیش انتشار! ?(البته فک نکنم بهش اینو بگن! خودم تحت الفظی ترجمه کردمش! ?)که بالافاصله بعد از قسمت اصلی نسخه بندی میاد و قبلش یه خط فاصله میزاریم که مشخصش کنیم!عموما از سه تا اسم برا مشخص کردنش استفاده میشه: rc - beta - alfaاغلب وقتی از این تگ ها استفاده میکنن که بخوان نسخه ای ارائه بدن که قراره X رو تغییر بده. یعنی شامل تغییرات Major باشه! قبل از انتشار این نسخه ها و توی زمانی که دارن تست های نهایی رو انجام میدن، این تگ ها رو به نسخه بندی اضافه میکنن. مثلا: 2.0.0-alfa.2تگ alfa برای موقعی که داره تست های ابتدایی انجام میشه، استفاده میشه!تگ beta برای موقع انجام تست هاییه که تمرکزش رو میزاره روی ویژگی های اصلی و مختلف تا باگ های احتمالی رو قبل از انتشار شناسایی کنه!تگ rc هم بهش گفته میشه کاندید انتشار. از پس خیلی تست ها بر اومده و آماده معرفی به عنوان نسخه نهائیه!یکی دیگه از اون چیز میزای اضافه، ابرداده (یا Metadata) هستش!اینم دوباره برای دادن توضیحات بیشتر ازش استفاده میشه و کاملا اختیاره! و همین طور وقتی داریم از یه نسخه مشخص از محصولی استفاده میکنیم که توی نسخه بندیش ابرداده ذکر شده، نیازی نیست برای استفاده از اون نسخه، حتما ابرداده اونو هم مشخص کنیم!یه نکته ریزی هم هس! اونم این که وقتی یه پروژه رو ای رو شروع میکنیم به توسعه دادن، اولین نسخه ای که بعد از توسعه اولین نیازمندی پروژه، باید بهش اختصاص داده بشه، 0.1.0 هستش!تا اینکه محصولمون آماده بشه برای انتشار رسمی و نسخه ی 1.0.0 رو بهش اختصاص بدیم!اگه تا الان از این روش نسخه بندی برای پروژه هاتون استفاده میکردین، که دمتون گرم! ?ولی اگرم نه، که به نظرم خوبه یبار امتحانش کنید تو پروژتون! ?✌خوبه واقعا! من که خودم باهاش حال کردم و خودمو موظف کردم حتما رعایتش کنم! کنترل و بررسی و نظارت رو توی روند جلو رفتن پروژه برام آسون تر و لذت بخش تر کرده!و اینم بدونیم که اینکار، هرچقدرم درست و دقیق و به موقع انجام بشه، بدون مستندسازی درست و اصولی پروژه (Documentation) اونقدرا به درد نمیخوره ها! ?باید بگیم که فلان باگ رفع شد! بگیم که این ویژگی جدید اضافه شد و اینجوری میشه ازش استفاده کرد! اگر هم که دیگه داریم یه نسخه کاملا جدید منتشر کنیم، دیگه حسابی دستمون بند میشه و باس کلی چیز بنویسیم براش!همین چیزا که گفتمو توی این سایته میتونید کامل ترشو بخونید. البته زبونش خارجکیه و زحمت ترجمش با خودتون دیگه!اینم یه سایته جالبه که برگه تقلبه نسخه بندی معناییه! (از سایت Devhints)توی این سایت هم میتونید نسخه های مختلفی که برای یه کتابخونه و یا پکیج منتشر شده رو ببینید! مثال خوبیه برای اینکه روند کار این نوع نسخه بندی رو بهتر درک کرد! (از سایت NPM)اینم پکیج رسمی ای که باهاش میتونید این رشته های نسخه بندی معنایی رو تجزیه (یا Parse) کنید و یا معتبر بودنشون رو بررسی کنید!ممنون از وقتی که گذاشتید و خوندید! ?امیدوارم تونسته باشم اطلاعات خوبی رو در اختیارتون گذاشته باشم و لذت برده باشید! ?✌خوش ? باشید و سلامت ? و هر روز موفق تر از قبل ?فعلا تا بعد ?</description>
                <category>Mahdi!</category>
                <author>Mahdi!</author>
                <pubDate>Mon, 01 Apr 2019 18:11:09 +0430</pubDate>
            </item>
                    <item>
                <title>Set Your Visions For Next Year!</title>
                <link>https://virgool.io/@mahdi_s24/set-your-visions-for-next-year-jtqqommlzrjp</link>
                <description>یا به زبون خودمون: &quot;چشم اندازهاتو مشخص کن&quot;بنویس برای سال آینده میخوای چیکارا کنی!بنویس برای سال آینده میخوای چیا به دست بیاری!بنویس برای سال آینده، آخرای سال، میخوای به کجا رسیده باشی!کلا خلاصه بگم، یه برنامه برا خودت بنویس!!یه برنامه ی سالانه کلی!که چک لیست های 6ماه، 3ماه یا فصلی، ماهانه، هفتگی و روزانه داره!یعنی تو این بازه های مشخص شده، میای خودتو میسنجی که چقد به هدفایی که اول سال مشخص کردی، نزدیک شدی. یا کجاها اشتباهی کردی که باعث شده از مسیرت دور بشی!قرار نیس همه چی تو این لیست، مسائل مالی باشه!درسته که شرایط این روزا یکم بدجور سخت شده!ولی یه آدم سالم و شاد و موفق بعدهای مختلف زندگیشو بهش اهمیت میده تا حسابی بتونه همه جوره زندگیشو درست بسازه!پس تو برنامت کار و پول درآوردن که قطعا هس!کنارش کتاب خوندن بزار!موسیقی بی کلام گوش دادن بزار!فیلم خوب دیدن بزار!ورزش کردنو قطعا بزار (خداییش خیلی تأثیر داره)!معاشرت کردن با خانواده و دوستای خوبتو بزار (همینطور قطعا توجه به عشق زندگیت)!یادگرفتن چیزای جدید تو زمینه شغلیتو بزار (خودتو از طریق خودآموزی ارتقا بده)!و تهشهمیشه سعی کن که هی برا خودت چالش های شیرین و جذاب و دوست داشتنی بسازی که به زندگیت طعم خوب و خوشی اضافه کنن!!قبول دارم که ما نخوایم هم این دنیا کلی چالش میریزه جلو پامون ناخواسته!ولی اینکه ما بعضی اوقات (شده حتی سالی یبار) برا خودمون مسئله های باحال و باب میلمون طرح کنیم و ذهنمون رو درگیر اونا کنیم و حلشون کنیم، حس خیلی خوبی بهمون میده که آره، داریم یه چیزایی رو تو این دنیا کاملا کنترل میکینم و از پسشون برمیام و این باورو میسازه برامون و کم کم میتونیم با قدرت ذهنی ای که بدست آوردیم از پس اون چالش های ناخواسته و شاید سخت دنیا هم به طور کامل بر بیایم و طولی نمیکشه که میتونیم زندگیمونو اونجوری که آرزوشو داشتیم و تصور میکردیم بسازیم!نمیگم که این روش حتما جواب میده ها!میگم روش جالبیه!! باحاله!من خودم تستش کردم و کلی چیز ازش یاد گرفتم!خب البته خیلی چوبا هم از این روش خوردم!ولی راستش، بعضی اوقات (نه همیشه) اشتباه کردن بهتر از هیچکاری نکردنه!دیگه سرتونو درد نیارم!خلاصه خلاصه خلاصه حرفم که:&quot;قدر زندگیتونو بدونید&quot; یا &quot;Cherish Your Life&quot;(به نقل از Jigsaw در فیلم Saw)این اولین نوشتم بود تو ویرگول!امیدوارم به قول معروف، دست به قلمم خوب بوده باشه و منظورمو رسونده باشم :)ممنون از وقتی که گذاشتید و خوندید نوشتمو!راستی، سال نوتون هم پیشاپیش مبارک!امیدوارم تو این چند ساعت باقی مونده حسابی خوش بگذرونید!و سال جدید هم پر از خبرای خوب و خوش باشه براتون!و همیشه سلامت و خوش باشید و هر روز موفق تر از دیروز :)))In This World,Live Or Die?Make Your Choice!#your #visions #goals #decisions #new_year#Cherish_Your_Life</description>
                <category>Mahdi!</category>
                <author>Mahdi!</author>
                <pubDate>Wed, 20 Mar 2019 20:20:20 +0330</pubDate>
            </item>
            </channel>
</rss>