<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محسن فلاح نژاد</title>
        <link>https://virgool.io/feed/@Web-pg</link>
        <description>برنامه نویس - عاشق یادگیری - معتقدم هر چیزی رو که بلدم باید به دیگران هم انتقال بدم</description>
        <language>fa</language>
        <pubDate>2026-07-06 18:05:34</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1494128/avatar/RQVvuY.jpg?height=120&amp;width=120</url>
            <title>محسن فلاح نژاد</title>
            <link>https://virgool.io/@Web-pg</link>
        </image>

                    <item>
                <title>مشکل اعمال نشدن استایل های Tailwindcss در Nextjs</title>
                <link>https://virgool.io/@Web-pg/%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D9%86%D8%B4%D8%AF%D9%86-%D8%A7%D8%B3%D8%AA%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-tailwindcss-%D8%AF%D8%B1-nextjs-ssiujn4ol7lj</link>
                <description>با سلام. چند روز پیش به یک مشکل در استفاده از Tailwindcss در Nextjs برخورد کردم که بعد از ساعت ها وقت گذاشتن و بررسی بالاخره فهمیدم مشکل Tailwindcss هست. اما مشکل چی بود؟داستان از این قراره که من داشتم یک کامپوننت ایجاد می کردم که یک دیتای ورودی با ساختار زیر دریافت می کرد:در این کامپوننت من از گرید بندی tailwindcss استفاده کرده بودم و برای اینکه گرید بندی داینامیک باشه در آبجکت بالا یک فیلد به اسم cols تعریف کردم که بر اساس اون col-span تگ div رو مشخص می کردم.وقتی کد رو اجرا می کردم می دیدم که کلاس css روی تگ div ست شده ولی خب style اعمال نشده بوددر عکس بالا می بینید که کلاس col-span-6 اعمال شده ولی در بخش استایل هیچ استایلی وجود نداره!!بعد از کلی جست و جو فهمیدم که کامپایر tailwidncss نمیتونه کلاس ها رو بصورت داینامیک کامپایل کنه و این مشکل بخاطر همین مورد بود.خب برای حل این مشکل روش های مختلفی رو امتحان کردم مثل styled-component و... ولی خب هر کدوم باعث پیچیدگی در کدم می شدن. در آخر به این نتیجه رسیدم که یک فایل css ایجاد کنم و باگ های tailwindcss رو در اون برطرف کنم. که این روش جواب داد و خیلی ساده بود. اینطوری می تونستم بدون استفاده از کتابخونه های دیگه گرید بندی رو بصورت داینامیک داشته باشم.اما روشم چی بود؟خب همونطور که گفتم یک فایل css ایجاد کردم و کلاس های col-span تیلویند رو بصورت زیر بازنویسی کردمنکته: کلاس ها رو از 1 تا 12 بازنویسی کردم ولی در اینجا چون عکس خیلی بزرگ میشد تا کلاس 7 اسکرین شات گرفتم.و در کد کامپوننت، کلاس دهی به div مورد نظر رو به اینصورت انجام دادم.بعد از این تغییرات کدم با موفقیت کار میکرد و مشکل گرید بندی داینامیک حل شده بود.نکته: یادتون نره بعد از اینکه فایل css شخصی خودتون رو درست کردید، در سورس تون import کنید!!البته میتونید هم از فایل global.css برای برطرف کردن باگ های تیلویند استفاده کنید.</description>
                <category>محسن فلاح نژاد</category>
                <author>محسن فلاح نژاد</author>
                <pubDate>Sat, 30 Mar 2024 09:19:58 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم تبدیل تاریخ میلادی به شمسی</title>
                <link>https://virgool.io/@Web-pg/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-%D8%A8%D9%87-%D8%B4%D9%85%D8%B3%DB%8C-pvshllcywm2q</link>
                <description>دوستان در مقاله قبلی الگوریتم تبدیل تاریخ شمسی به میلادی رو شرح دادم. اگر مقاله رو نخوندید میتونید از طریق لینک زیر وارد مقاله بشید و الگوریتم رو مطالعه کنید https://virgool.io/@mohsen.coder/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%A8%D9%87-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-bukbyq2xvid9 خب بدون مقدمه بریم سراغ الگوریتمالگوریتمبرای تبدیل تاریخ میلادی به شمسی در ابتدا ما باید تعداد کل روز های گذشته رو محاسبه کنیم. دو روش برای محاسبه وجود داره که تفاوت شون در اینه که آیا سال کبیسه هست یا نه.قرارداد: در این مقاله تاریخی که میخوایم تبدیلش کنیم به شمسی، تاریخ 2022/02/06 هست. پس هر جا از کلمه &quot;تاریخ&quot; به تنهایی استفاده کردم، منظورم همین تاریخ هست.نکته: اختلاف روز های اول فروردین با اول ژانویه (اولین ماه میلادی) 79 روز است.نکته: اختلاف روز های اول دی ماه با اول ژانویه، درصورتی که سال کبیسه نباشه 10 روز و درصورتی که سال کبیسه باشه 11 روز هست.قرارداد: هرجا از کلمه deyDayDiff استفاده کردیم، منظورمون اختلاف روز های اول دی ماه با اول ژانویه هست.فرض کنید میخوایم تاریخ رو به تاریخ شمسی تبدیل کنیم. در ابتدا نیازه که تعداد کل روز های گذشته رو بدست بیاریم. برای این کار از فرمول زیر استفاده میکنیمتعداد کل روز ها = مجموع روز های ماه ها + تعداد روز هانکته: برای محاسبه تعداد روز های ماه ها درصورتی که سال کبیسه نباشه از جدول زیر استفاده می کنیمنکته: برای محاسبه تعداد روز های ماه ها درصورتی که سال کبیسه باشه از جدول زیر استفاده می کنیمتوضیح جدول بالا: برای محاسبه تعداد روز ها ما باید ببینیم در 6 ماهه اول سال شمسی قرار داریم یا در 6 ماهه دوم سال. برای این کار نیاز به یک مبدا داریم که ما سپتامبر (شهریور) رو در نظر میگیریم و مجموع روز های ماه ها رو از سپتامبر به بعد حساب می کنیمنکته: چون سپتامبر مبدا هست، مجموع روز ها رو 0 در نظر می گیریمبه عنوان مثال در تاریخ بالا (2022/02/06)، تعداد روز ها برابر 6 ، و مجموع روز ها 31 هست (طبق جدول بالا مجموع روز های ماه اول و دوم 31 میشه)تعداد کل روز ها = 6 + 31تعداد کل روز ها = 37خب تعداد کل روز ها رو بدست آوردیم، حالا باید چک کنیم که آیا تعداد کل روز ها از 79 کمتر هست یا نه؟اگر تعداد کل روز ها از 79 کمتر باشه:در اینصورت تعداد کل روز ها رو با deyDayDiff جمع می کنیماگر باقیمانده تقسیم تعداد روز ها بر 30 برابر 0 شد:در اینصورت  ماه شمسی از فرمول زیر بدست میاد:ماه شمسی = 9 + (30 / تعداد روز ها)روز شمسی هم برابر 30 هست.اگر باقیمانده تقسیم تعداد روز ها بر 30 بزرگ تر از 0 شد:در اینصورت ماه شمسی از فرمول زیر بدست میاد:ماه شمسی = 10 + (30 / تعداد روز ها)روز شمسی = باقیمانده تقسیم (30 / تعداد روز ها)حالا برای بدست آوردن سال شمسی از فرمول زیر استفاده می کنیم:سال شمسی = 622 - سال میلادیاگر تعداد روز ها از 79 بیشتر باشه:در اینصورت از کل روز ها 79 تا کم می کنیماگر روز های باقیمانده کمتر مساوی 186 باشه یعنی در نیمه اول سال قرار داریم:اگر باقیمانده تقسیم روز ها به 31 برابر 0 شد:ماه شمسی = 31 / تعداد روز هاروز شمسی = 31اگر باقیمانده تقسیم روز ها به 31 بزرگتر از 0 شد:ماه شمسی = 1 + (31 /  تعداد روز ها)روز شمسی = باقیمانده تقسیم (31 / تعداد روز ها)سال شمسی = 621 - سال میلادیاگر روز های باقیمانده بیشتر از 186 باشه یعنی در نیمه دوم سال قرار داریم:186 روز از تعداد کل روز ها کم می کنیم.اگر باقیمانده تقسیم روز ها به 30 برابر 0 شد:ماه شمسی = 6 + (30 / تعداد روز ها)روز شمسی = 30اگر باقیمانده تقسیم روز ها به 30 بزرگتر از 0 شد:ماه شمسی =  7 + (30 / تعداد روز ها)روز شمسی = باقیمانده تقسیم (30 / تعداد روز ها)سال شمسی = 621 - سال میلادینحوه تشخیص سال کبیسهدر دو حالت سال کبیسه هست:حالت اول: باقیمانده تقسیم سال بر 4 باید برابر 0 بشه و باقیمانده تقسیم سال بر 100 باید بیشتر از 0 باشه.حالت دوم: باقیمانده تقسیم سال بر 400 باید برابر 0 بشه و باقیمانده سال تقسیم بر 100 باید برابر 0 بشه.مثال عملی:فرض کنید میخوایم تاریخ 2022/02/06 رو به تاریخ شمسی تبدیل کنیم.تعداد کل روز ها = 6 + 31تعداد کل روز ها = 37چون تعداد کل روز ها از 79 کمتر هست پس:تعداد روز ها = تعداد کل روز ها + deyDayDiffتعداد روز ها = 37 + 10 ( چون سال کبیسه نیست)تعداد روز ها = 47باقیمانده تقسیم 30 / 47 بزرگ تر از 0 هست، پس:ماه شمسی = 10 + (30 / تعداد روز ها)ماه شمسی = 10 + (30 / 47)ماه شمسی  = 11روز شمسی = باقیمانده تقسیم (30 / تعداد روز ها)روز شمسی = 17سال شمسی = 622 - سال میلادیسال شمسی = 622 - 2022سال شمسی = 1400پس تاریخ شمسی معادل 2022/02/06، 1400/11/17 شد.</description>
                <category>محسن فلاح نژاد</category>
                <author>محسن فلاح نژاد</author>
                <pubDate>Mon, 07 Feb 2022 00:09:49 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم تبدیل تاریخ شمسی به میلادی</title>
                <link>https://virgool.io/@Web-pg/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%A8%D9%87-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-bukbyq2xvid9</link>
                <description>دوستان در این مقاله قصد دارم نحوه تبدیل تاریخ شمسی به میلادی رو برای شما توضیح بدم ولی در ابتدا میخوام بگم که چی شد که من سراغ یادگیری این الگوریتم رفتم:بعد از ورود من به برنامه نویسی اندروید و یادگیری آموزش های لازم تصمیم گرفتم اولین اپلیکیشن موبایلم رو تولید کنم و مثل هر برنامه نویس دیگه ای شروع کردم به نوشتن یک اپ لیست کار های روزانه (todo list)، یکی از قابلیت هایی که میخواستم به اپم اضافه کنم، قابلیت تعیین تاریخ انجام اون کار توسط کاربر بود. در اینجا بود که من نیاز داشتم به یک کتابخونه تبدیل تاریخ شمسی به تاریخ میلادی یا timestamp. خب برای رفع نیازم اولین کاری که کردم جستجو کردن برای یک کتابخونه بود که نیازم رو برطرف کنه، خیلی جستجو کردم ولی کتابخونه مورد نظرم رو پیدا نکردم (یا کتابخونه خیلی قدیمی بود و درست کار نمیکرد یا پیچیده بود) خلاصه تصمیم گرفتم خودم یک کتابخونه کاربردی درست کنم که استفاده ازش خیلی ساده باشه و اینطوری شد که به دنبال یادگیری الگوریتم های تبدیل تاریخ شمسی به میلادی و برعکس رفتم.در این مقاله الگورتیم تبدیل تاریخ شمسی به میلادی رو توضیح میدم و در مقاله دیگه الگوریتم تبیدل تاریخ میلادی به شمسی رو توضیح میدمالگوریتمخب بریم سراغ الگوریتم.برای تبدیل سال شمسی به میلادی باید سال شمسی رو با عدد 621 جمع کنیم برای بدست آوردن ماه و روز میلادی ما ابتدا نیاز داریم تعداد روز های گذشته از اول فروردین رو بدست بیاریمبرای اینکار ابتدا باید ببینیم در 6 ماه اول سال هستیم یا در 6 ماه دوم سالاگر در 6 ماه اول سال بودیم:یک واحد از ماه شمسی کم می کنیم و حاصل رو در 31 ضرب میکنیم و با روز شمسی جمع میکنیممثلا اگر در تاریخ 23 اردیبهشت باشیم، (1 - 2) رو در 31 ضرب می کنیم و حاصل رو با 23 جمع می کنیماگر در 6 ماه دوم سال بودیم:1- 6 (شش ماه اول سال) رو در 31 ضرب می کنیم2- 7 واحد از ماه شمسی کم می کنیم و حاصل رو در 30 ضرب میکنیم3- مراحل 1 و 2 را با تعداد روز های شمسی جمع میکنیممثلا اگر در تاریخ 16 بهمن باشیم:تعداد کل روز های گذشته = تعداد روز ها + (30 * (7 - 11)) + (31 * 6)نکته: اول دی ماه با اول ماه مارس (اولین ماه سال میلادی) 11 روز اختلاف دارن، اگر سال کبیسه باشه این اختلاف 12 روز میشه! (در انتهای مقاله نحوه محاسبه سال کبیسه رو بهتون میگم)قرارداد: از این جای مقاله به بعد هرجا نوشتیم janDeyDiff منظورمون اختلاف اول دی ماه و اول ماه ژانویه هست.خب حالا که تعداد کل روز های گذشته شده رو بدست آوردیم، باید چک کنیم آیا تعداد روز های گذشته از marchDeyDiff کمتر هست یا نهاگر تعداد روز های گذشته، از janDeyDiff کمتر باشه:در این حالت ماه میلادی برابر 3 است، یعنی در سومین ماه میلادی (March) قرار داریمبرای محاسبه روز میلادی هم از فرمول زیر استفاده می کنیماگر تعداد روز های گذشته، از janDeyDiff بیشتر باشه:ابتدا از تعداد کل روز ها، janDeyDiff رو کم می کنیم تا تعداد روز های باقیمانده بدست بیادحالا اگر سال کبیسه نباشه، از اولین ماه میلادی شروع میکنیم و تعداد روز های هر ماه رو از روز های باقیمانده کم می کنیم تا زمانی که تعداد روز های باقیمانده از تعداد روز های ماه میلادی کمتر باشه.احتمالا گیج شده باشید پس نیاز به یک مثال داریم.فرض کنید تعداد کل روز های ماه 100 روز است، از این 100 روز 11 روز کم می کنیم، میشه 89 روزخب حالا نوبت به کم کردن تعداد روز های ماه های میلادی از این 89 روز هستماه اول میلادی (ژانویه) 30 روز هست، پس از 89 روز، 30 روز کم می کنیم که حاصل 59 روز میشهماه دوم میلادی (فوریه) 31 روز هست، پس از 59 روز، 31 روز کم می کنیم که حاصل 28 روز میشهماه سوم میلادی (مارس) 30 روز هست، چون 30 از 28 بزرگتر هست پس دیگه عملیات رو ادامه نمیدیمبه این ترتیب روز میلادی ما بدست میادنکته: در سال کبیسه یازدهمین ماه میلادی (نوامبر) بحای اینکه 28 روز باشه، 29 روز هست.اگر سال کبیسه باشه:برای سال کبیسه هم عملیات بالا رو انجام میدیم فقط باید حواسمون به نکته بالا باشه که وقتی به نوامبر رسیدیم تعداد روز هاش رو 29 روز درنظر بگیریمبرای بدست آوردن ماه میلادی دو حالت وجود داره:حالت اول (عملیات بالا رو کمتر یا مساوی 8 بار انجام داده باشیم):ماه میلادی = تعداد باری که عملیات بالا رو انجام دادیم + 4مثلا اگه 5 بار عملیات بالا رو انجام دادیم، 9 = 5 + 4که ماه میلادی میشه سپتامبر (نهمین ماه میلادی)حالت دوم (عملیات رو بیشتر از 8 بار انجام داده باشیم):ماه میلادی = 8 - تعداد باری که عملیات بالا رو انجام دادیممثلا اگه 11 بار عملیات بالا رو انجام داده باشیم، 3 = 8 - 11که ماه میلادی میشه مارس (سومین ماه میلادی)در این حالت به سال میلادی هم 1 واحد اضافه می کنیمتمام.خب الگوریتم ما تموم شد و تونستیم سال، ماه و روز میلادی رو بر اساس تاریخ شمسی محاسبه کنیم.نحوه تشخیص سال کبیسهدر دو حالت سال کبیسه هست:حالت اول: باقیمانده تقسیم سال بر 4 باید برابر 0 بشه و باقیمانده تقسیم سال بر 100 باید بیشتر از 0 باشه.حالت دوم: باقیمانده تقسیم سال بر 400 باید برابر 0 بشه و باقیمانده سال تقسیم بر 100 باید برابر 0 بشه.جهت مشاهده نمونه کد میتونید وارد لینک زیر بشید:https://github.com/Mohsen-code/kotlin-persian-date-time/blob/master/src/jvmMain/kotlin/mohsen/coder/JalaliToGregorian.kt</description>
                <category>محسن فلاح نژاد</category>
                <author>محسن فلاح نژاد</author>
                <pubDate>Sat, 05 Feb 2022 23:16:10 +0330</pubDate>
            </item>
            </channel>
</rss>