<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های کاوه محمدی</title>
        <link>https://virgool.io/feed/@kaaveh</link>
        <description>A Philosophus, Android engineer, and beyond</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:42:43</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/33560/avatar/rkDZiB.png?height=120&amp;width=120</url>
            <title>کاوه محمدی</title>
            <link>https://virgool.io/@kaaveh</link>
        </image>

                    <item>
                <title>کامپوز و best practiceهایی ک همیشه باید یادت بمونه! - پارت یک</title>
                <link>https://virgool.io/@kaaveh/compose-best-practices-k8dpykkxyrfb</link>
                <description>توی این مقاله، به استناد داکیومنت گوگل، یکسری نکاتی رو لیست میکنم ک توی دنیای کامپوز باید حواسمون بهشون باشه تا پرفورمنس به فنا نره. اگه مجبوری محاسباتی رو توی ویو انجام بدی، حتما ببرش توی rememberSavable بزار با یه مثال پیش بریم:@Composable
fun ContactList(
    contacts: List&lt;Contact&gt;,
    comparator: Comparator&lt;Contact&gt;,
    modifier: Modifier = Modifier
) {
    LazyColumn(modifier) {
        // DON’T DO THIS
        items(contacts.sortedWith(comparator)) { contact -&gt;
            // ...
        }
    }
}توی این سناریو، میخام لیست کانکت‌هارو بصورت سورت شده نشون بدم. هروقت ب هر دلیلیContactListنیاز داره ک recompose بشه، دوبارهcontactsسورت میشه هرچند ک خود این لیست تغییری نکرده باشه. راه حل معمول این مشکل بصورت زیر حل میشه:@Composable
fun ContactList(
    contacts: List&lt;Contact&gt;,
    comparator: Comparator&lt;Contact&gt;,
    modifier: Modifier = Modifier
) {
    val sortedContacts = remember(contacts, sortComparator) {
        contacts.sortedWith(sortComparator)
    }

    LazyColumn(modifier) {
        items(sortedContacts) {
          // ...
        }
    }
}استفاده ازrememberاجازه میده ک حین recompositionهای پشت سر هم، الکی متد sort اجرا نشه. درواقع بrememberگفتیم ک فقط زمانی دوباره sort رو اجرا کن کcontactsیا sortComparatorآپدیت بشن. اما بازم یه داستان داریم: Configuration change !بالاخره کاربر گوشی رو ممکنه rotate کنه، دارک مود رو فعال کنه، گوشیش رو fold کنه و ... اینجوری مقدارrememberمیپره. برای حل این مشکل، قشنگتره ک ازrememberSavableاستفاده کنیم.تا جایی ک میتونی از key توی lazy layoutها استفاده کنوقتی میخایم توی کامپوز یه لیستی از آیتم هارو نشون بدیم از LazyColumnاستفاده می کنیم. خیلی راحت یه LazyColumnمی ندازیم و با itemsلیست رو لود می‌کنیم:@Composable
fun NotesList(notes: List&lt;Note&gt;) {
    LazyColumn {
        items(
            items = notes
        ) { note -&gt;
            NoteRow(note)
        }
    }
}این راهکاریه ک وقتی گوگل میکنی، ب چشم میخوره. اما توی یکسری حالت ها، recompositionهای اضافه رخ میده:۱. لیست آیتم ها orderشون تغییر میکنه۲. آیتمی به لیست اضافه میشه یا ازش حذف میشهبه ازای دو حالت بالا، کل آیتم های لیست recompose میشن، هرچند همون آیتم قبلی باشن.راه حل: برای این شرایط، دی اس الitemsیه composable قبول میکنه با عنوان key. در واقع این کلید به کامپوز میگه ک چطور هوشمندانه تر recomposition رو مدیریت کنه:@Composable
fun NotesList(notes: List&lt;Note&gt;) {
    LazyColumn {
        items(
            items = notes,
             key = { note -&gt;
                // Return a stable, unique key for the note
                note.id
            }
        ) { note -&gt;
            NoteRow(note)
        }
    }
}درواقع میگیم ک: هی کامپوز! هروقت آیدی آیتم تغییر کرد، اونو recompose کن.اما هنوز یه داستان دیگه وجود داره. اگه آیتم رو آپدیت کنیم چی؟ مثلا متن نوت رو ادیت بزنیم. ازونجایی ک آیدی آیتم آپدیت نشده، آیتم مربوطه recompose نمیشه.ایده‌ای ک برای حل این مشکل بذهنم میرسه این هس ک مثلا از timestamp به عنوان آیدی استفاده کنیم. هروقت هم ک هر آیتم آپدیت میشه، آیدیشم آپدیت می‌کنیم و اینجوری ریکامپوزیشن تریگر میشه براش.وقتیکه state با نرخ خیلی زیادی آپدیت میشهتوی بعضی سناریوها ممکنه state با نرخ خیلی زیادی آپدیت شه و recompositionهای اضافه‌ای رو ایجاد کنه. مثلا توی نمایش دادن یه لیست میخایم بدونیم کدوم آیتم اولین آیتم visible توی لیست هس ک اگه اولین آیتم visible نیس، باتن رفتن ب بالا رو visible کنیم:val listState = rememberLazyListState()

LazyColumn(state = listState) {
    // ...
}

val showButton = listState.firstVisibleItemIndex &gt; 0

AnimatedVisibility(visible = showButton) {
    ScrollToTopButton()
}وقتی کاربر کوچیکترین dragایی میکنه،listStateمداوم آپدیت میشه. این قضیه باعت میشه کل لیست مداوم recompose بشه. راه حل: استفاده از derived stateکار drivedStateOf اینکه ب کامپوز بگه به ازای هر تغییر یه state نیاز نیس recomposition بکنی. اصلاح کد بالا میشه:val listState = rememberLazyListState()

LazyColumn(state = listState) {
  // ...
  }

val showButton by remember {
    derivedStateOf {
        listState.firstVisibleItemIndex &gt; 0
    }
}

AnimatedVisibility(visible = showButton) {
    ScrollToTopButton()
}درواقع اینجا مقدار showButtonزمانی تغییر میکنه ک اون شرط ذکر شده آپدیت شه، نه لزوما به ازای هر آپدیت listStateبه تعویق انداختن readکردن stateهاتا جایی ک میشه، read کردن stateها رو توی درخت یه اسکرین کامپوزی باید ببریم ب leafها.  بزا با یه مثال بگم:@Composable
fun SnackDetail() {
    // ...

    Box(Modifier.fillMaxSize()) { // Recomposition Scope Start
        val scroll = rememberScrollState(0)
        // ...
        Title(snack, scroll.value)
        // ...
    } // Recomposition Scope End
}

@Composable
private fun Title(snack: Snack, scroll: Int) {
    // ...
    val offset = with(LocalDensity.current) { scroll.toDp() }

    Column(
        modifier = Modifier
            .offset(y = offset)
    ) {
        // ...
    }
}این مثالیه از پروژه JetSnack. توی SnackDetailب scroll.valueدقت کن. هر بار ک کاربر اسکرول میکنه،کلBoxپرنت‌اش recompose میشه چون نزدیکترین composableاییه ک میبینه (نزدیکترین ریکامپوزیشتن اسکوپ). در صورتی ک مقدارscroll.valueفقط برای ساختنTitleمورد نیازه. راه حل: کافیهscroll.valueرو با یه لامدا پاس بدیم پایین:@Composable
fun SnackDetail() {
    // ...

    Box(Modifier.fillMaxSize()) { // Recomposition Scope Start
        val scroll = rememberScrollState(0)
        // ...
        Title(snack) { scroll.value }
        // ...
    } // Recomposition Scope End
}

@Composable
private fun Title(snack: Snack, scrollProvider: () -&gt; Int) {
    // ...
    val offset = with(LocalDensity.current) { scrollProvider().toDp() }
    Column(
        modifier = Modifier
            .offset(y = offset)
    ) {
    // ...
    }
}الان هر بار ک مقدارscroll.valueعوض میشه، تنهاTitleهست ک recompose میشه.نکته جانبی: تکه کد بالارو بازم میشه یکم بهینه کرد. Modifier.offset(x: Dp, y: Dp)یه نسخه لامدایی هم داره ک بهت تضمین میده، خوندن state رو ببره توی layout phase. ینی این شکلی میشه@Composable
private fun Title(snack: Snack, scrollProvider: () -&gt; Int) {
    // ...
    Column(
        modifier = Modifier
            .offset { IntOffset(x = 0, y = scrollProvider()) }
    ) {
      // ...
    }
}اینجوری وقتی مقدار state اسکرول تغییر میکنه، composition phase کامل بای‌پس میشه و مستقیم میپره ب layout phase.برای این موضوع، یه مثال رایج دیگه هم وجود داره: فرض کن یهBoxداری و میخای رنگ بکگراندش رو بصورت انیمیشن بین دو رنگ جابجا کنی. یه پیاده سازی‌اش اینجوریه:// Here, assume animateColorBetween() is a function that swaps between
// two colors
val color by animateColorBetween(Color.Cyan, Color.Magenta)

Box(Modifier.fillMaxSize().background(color))توی این کد یه مشکلی وجود داره و اونم اینکه چون توی هر فریم state رنگ تغییر میکنه، اونBoxتوی هر فریم recompose میشه. در صورتیکهdrawBehindاگه از استفاده کنیم، خوندن state رنگ، فقط توی draw phase خونده میشه و composition و layout phases کامل بای‌پس میشه:val color by animateColorBetween(Color.Cyan, Color.Magenta)
Box(
   Modifier
      .fillMaxSize()
      .drawBehind {
         drawRect(color)
      }
)الان دیگه هروقت رنگ تغییر کنه، کامپوز مستقیم میره سراغ draw phase.اجتناب از backwards writesکامپوز همیشه فرض میکنه هیچوقت بعد از اینکه مقدار یه state رو خوندی، بالافاصله توی composable مقدارش رو آپدیت نمیکنی. اگه اینکار رو بکنی، ینی backwards writes انجام دادی. بزا مثال زیر رو ببینیم:@Composable
fun BadComposable() {
    var count by remember { mutableStateOf(0) }

    // Causes recomposition on click
    Button( = { count++ }, modifier = Modifier.wrapContentSize()) {
        Text(&amp;quotRecompose&amp;quot)
    }

    Text(&amp;quot$count&amp;quot)
    count++ // Backwards write, writing to state after it has been read
} چرا وقتی مقدار count رو افزایش میدی، بالافاصله recomposition رو تریگر میکنی and so on. میوفتی توی یه لوپ بینهایت و مقدار count همینطور بالا میره. آپدیت شدن مقدار یه state همیشه باید از طریق یه event مث  انجام بشه.</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Mon, 05 Sep 2022 15:49:20 +0430</pubDate>
            </item>
                    <item>
                <title>اهمیت ساینس برای آدمی</title>
                <link>https://virgool.io/@kaaveh/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D8%B3%D8%A7%DB%8C%D9%86%D8%B3-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A2%D8%AF%D9%85%DB%8C-ajqzdw54fpof</link>
                <description>-هزاران فیلسوف در طول قرن‌ها درمورد اتم و ساختارش اظهار نظر کردن، اما چن دهه اخیر تو آزمایشگاه از حقیقت سر در آوردیم.-داروین با نظریه‌اش دنیای مُثُل افلاطون و باقی چارچوب‌های خلقت یهویی انسان رو به چالش کشید.-محاسبات کوپرنیک و تلسکوپ گالیله، انسان رو از مرکز هستی پرت کرد به یه ناکجاآباد.-علوم شناختی، انسان کاملا منطقی رو بعد هزاران سال تبدیل کرد به یک موجودِ احساسیِ بایاس‌دارِ خطاپذیر.-مکانیک کوانتوم، قطعیت و سالیدیتی رو از بنیان هستی گرفت و پایه استدلالی برخی فلاسفه رو با مشکل روبرو کرد.اینها صرفا چنتا شاخه از علم بودن ک من یکم ازشون خوندم و میدونستم.تنها راهنمای حقیقی آدمی، مشعل علم هست.</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Mon, 14 Dec 2020 07:10:03 +0330</pubDate>
            </item>
                    <item>
                <title>آیا XML توی Android development قراره منسوخ بشه؟</title>
                <link>https://virgool.io/@kaaveh/%D8%A2%DB%8C%D8%A7-xml-%D8%AA%D9%88%DB%8C-android-development-%D9%82%D8%B1%D8%A7%D8%B1%D9%87-%D9%85%D9%86%D8%B3%D9%88%D8%AE-%D8%A8%D8%B4%D9%87-sd32fwq5edl2</link>
                <description>دیروز نسخه بتا 4.2 اندروید استودیو منتشر شد. چرا این عدد مهمه؟ چون اگه اسم Jetpack Compose رو شنیده باشی، میدونی که برا کار باهاش باید اندروید استودیو 4.2 که فقط توی چنل Canary بود رو نصب میکردی.اینکه 4.2 اومده توی چنل بتا ینی خیلی بیشتر تست شده و دیگه وقت استیبل شدنشه. اوایل سال بود که شنیدیم قراره نسخه استیبل Compose هم سال بعد ینی ۲۰۲۱ بیاد [که یکی دو ماه دیگه سال نو هست].خب، اصن داستان Compose چیه؟بعد اینهمه دولوپ برا اندروید با XML، کامپوز اومده تا جاشو بگیره و UI رو با همون کاتلین کد بزنی. اونایی که با فلاتر آشنا هستن یا Anko کار کردن، میدونن داستان چه شکلیه.خلاصه اینکه یه زمانی تو آینده خالی بزارین چون دیگه باید کامپوز رو جدی تر یاد بگیرین.</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Wed, 02 Dec 2020 12:50:51 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش آزاد و رایگان برنامه‌نویسی اندروید - مقدماتی ۲۰۲۰</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A2%D8%B2%D8%A7%D8%AF-%D9%88-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%DB%B2%DB%B0%DB%B2%DB%B0-osr1tziohrl4</link>
                <description>سلام سلامبالاخره ساختن ویدئوهای آموزشی مقدماتی اندروید رو استارت زدم. :)این دوره رو بصورت آزاد و رایگان دارم تولید، ضبط و پخش میکنم. توی این دوره، حتی فرض کردم مخاطبم ممکنه تابحال برنامه‌نویسی نکرده باشه، بنابراین این دوره بدون پیشنیازه. اینروزا توی تایم آزادم سعی میکنم ویدئوهارو دونه دونه ضبط و منتشرشون کنم.ویدئوهای این دوره رو روی کانال یوتیوب و آپاراتم میذارم. اگه خواستی این دوره رو دنبال کنی، سری به پلی‌لیست &quot;آموزش اندروید مقدماتی (۲۰۲۰)&quot; بزن.Enjoy! :)</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Mon, 13 Jul 2020 18:11:04 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش آزاد و رایگان برنامه‌نویسی اندروید</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A2%D8%B2%D8%A7%D8%AF-%D9%88-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-til9mlfgftoe</link>
                <description>تصمیم گرفتم دانش اندرویدی مو بصورت آزاد و رایگان shareاش کنم :) فعلا تصمیم دارم روی Jetpack تمرکز کنم.برای دنبال کردن آموزش‌ها میتونی کانال آپارات و یا کانال یوتیوب رو سابسکرایب بکنی. https://www.aparat.com/v/iv9a3 </description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Tue, 30 Jun 2020 21:13:48 +0430</pubDate>
            </item>
                    <item>
                <title>هضم جامعه‌ستیز بودنم(معرفی خیلی خلاصه کتاب روان‌شناسی توده‌ها)</title>
                <link>https://virgool.io/ketabaz/%D9%87%D8%B6%D9%85-%D8%AC%D8%A7%D9%85%D8%B9%D9%87%D8%B3%D8%AA%DB%8C%D8%B2-%D8%A8%D9%88%D8%AF%D9%86%D9%85%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%AE%DB%8C%D9%84%DB%8C-%D8%AE%D9%84%D8%A7%D8%B5%D9%87-%DA%A9%D8%AA%D8%A7%D8%A8-%D8%B1%D9%88%D8%A7%D9%86%D8%B4%D9%86%D8%A7%D8%B3%DB%8C-%D8%AA%D9%88%D8%AF%D9%87%D9%87%D8%A7-pvf7v91akjfl</link>
                <description>اگه همیشه برات سوال بوده چرا رفتار، احساسات و عقاید عمومی که توی یه جامعه رایجن اکثرا پوچ، سطحی و خیلی اوقات خالی از فکر و منطق هستن، خوندن کتاب روانشناسی توده‌ها اثر گوستاو لوبون رو پیشنهاد می‌کنم.کتاب روان‌شناسی توده‌هامدت زیادی این سوالات تو ذهنم بود و حتی حس گناه داشتم چون فکر می‌کردم دچار غرور و تکبر شدم اما وقتی با این کتاب آشنا شدم، بهم نشون داد واقعا ماهیت اجتماع اینطوریه. این کتاب سهم بزرگی توی هضم یکسری تعجب‌هام که توی اجتماع و فرهنگ میبینم داشت. احتمالا یه  پست از خلاصه یا هایلایت‌هام از کتاب بنویسم اما تا اون موقع پیشنهاد میکنم به پادکست مدرسه زندگی فارسی بزنی.توی این اپیزود یه توضیحی راج ب اینکه اصن گوستاو لوبون کیه میده و توی این اپیزود خلاصه کتاب رو شرح میده.گوستاو لوبون</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Sat, 09 May 2020 22:35:50 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه مث خرس بخابیم(مهندسی کیفیت خواب شبانه)</title>
                <link>https://virgool.io/@kaaveh/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%D8%AB-%D8%AE%D8%B1%D8%B3-%D8%A8%D8%AE%D8%A7%D8%A8%DB%8C%D9%85%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%DB%8C%D9%81%DB%8C%D8%AA-%D8%AE%D9%88%D8%A7%D8%A8-%D8%B4%D8%A8%D8%A7%D9%86%D9%87-h2wlzmxypjru</link>
                <description>تو بین بچهای هم‌خوابگاهی(کارشناسی و ارشد) به این معروفم که تقریبا توی هر شرایطی میتونم بخابم. توی چندسال اخیر چنبار بخاطر تغییر شرایط کاری مجبور شدم ساعت و الگو خوابم رو تغییر بدم و توی این سعی و خطاها چنتا نکته تجربی یادگرفتم که گفتم shareاش کنم.۱.  اولین و مهمترین نکته، داشتن روتین برای خوابه؛ &quot;قدرت عادت&quot;!وقتی یه ساعت خاصی میخابی و یه ساعت خاصی بیدار میشی، دوتا مزیت خودشونو نشون میدن:اول، وقتی کم کم نزدیک به ساعت خواب میشی، بدن خودش احساس خواب‌آلودگی میکنه و دیگه از غلت زدن تو رختخواب خبری نیس.دوم، وقتی به ساعت بیداری نزدیک میشی، خوابت خیلی خوب سبک میشه و با آلارم یا حتی بدون آلارم بدون دردسر بیدار میشی (از اون زجر بیدار شدن و خواب‌آلود بودن متنفرم!).اتفاقا چن روز پیش که اپ Google Fit رو نصب کرده بودم، تو بخش مانیتورینگ خواب، یه همچین نکته‌ای رو دیدم:۲. موقع خواب باید ذهن آرومی داشت.همهمون کلی مشکل تو زندگی داریم که زمان فکر کردن بشون تو طول روزه نه موقع خواب! سعی کن از یکی دو ساعت قبل خواب این دغدغه هارو از ذهنت بیرون کنی (این خیلی وابسته هست به تمرین و قدرت کنترلت روی سکوت ذهنت. کارایی مث مدیتیشن میتونه قدرتتو زیاد کنه). البته فقط این چیزای منفی قبل خواب تو ذهن لوپ نمیزنن، گاهی هیجان اتفاقی ک قراره فردا بیوفته نمیزاره بخابی.بچهای نیرو کار هم پیشنهاد میکنم موقع خواب کنترل تنفس کنن و چنتا تنفس عمیق کنن، خودش باعث افزایش آرامش ذهن میشه. اخیرا شبایی که ذهنم خیلی شلوغ پلوغه، با این تکنیک ذهنمو آروم می‌کردم.۳. از دو ساعت قبل خواب، کار با هرگونه صفحه LCD و LED ممنوع!در وهله اول، این نمایشگرها بخاطر داستان بلولایت (Blue light) باعث میشه بدن گول بخوره و تایم خواب رو بندازه عقب. بلولایت تو نور خورشید خیلی زیاده و باعث میشه طول روز سرحال تر باشی. نمایشگرها هم منبع دیگه تولید این نور هستن. البته نصب نرم‌افزار یا app بلولایت فیلتر، تا حدی میشه اثرش رو تو شب کمتر کرد. الان خیلی از سیستم‌عامل ها اینو تو خودشون دارن با عنوان Night mode.در وهله دوم، ممکنه معمولا سری هم به اینستا و تلگرام بزنی که خودش باعث افزایش هیجان و پریدن خواب از سرت میتونه بشه. از مطالب خنده‌دار بگیر تا خوندن یا دیدن فیلمی که ذهنتو به خودش مشغول کنه.۴. حساسیت رو بزار کنار!یه نُرمی برای درجه نور و صدا هست که موقع خواب باید کم باشه. البته شنیده بودم که خوابیدن مداوم تو محیط روشن خوب نیس که نمیدونم این قضیه از نظر علمی چقد معتبره. اما اینکه یه کورسو نور یا یه صدای خاص باعث شه نتونی بخابی، عملا دست توئه. هیچکدوم از ما توی سکوت مطلق نمیخابیم و یه سری صدا و نور بالاخره تو محیط هست. قبلنا فکر می‌کردم آدم با آدم فرق داره که این همه سطح حساسیت متفاوت وجود داره. اما وقتی خودمو در طول زمان دیدم، فهمیدم All up to you. قبل رفتن به دانشگاه و خوابیدن تو خوابگاه، اگه تو اتاق بغلی یه کتاب ورق میخورد اعصابم رو خورد میکرد اما شده تو خوابگاه بالا سرم ده نفر گیم زدن و حتی یه لحظه هم بیدار نشدم و تخت خوابیدم!وقتی تمرین کنی و این قدرت رو به دست بیاری که غر زدن ذهنتو خاموش کنی، اونوقت میتونی توی هر شرایطی بخابی. باید شرایط رو به عنوان بخشی از ویژگی محیط قبول کنی تا ذهنت روش قفل نکنه. الان خیلیا هستن که صدای ماشین تو خیابون، تیک تاک ساعت، وز وز کولر و ... براشون مهم نیس و ازونطرف خیلیا از کورخوابی دارن میمیرن ولی با این صداها اصلا نمیتونن بخابن. اینو از من به یادگار داشته باش که &quot;این ذهن توئه تصمیم میگیره چیو بشنوه و چیو ببینه!&quot;</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Thu, 07 May 2020 23:23:29 +0430</pubDate>
            </item>
                    <item>
                <title>نوروساینس vs فلسفه</title>
                <link>https://virgool.io/@kaaveh/%D9%86%D9%88%D8%B1%D9%88%D8%B3%D8%A7%DB%8C%D9%86%D8%B3-vs-%D9%81%D9%84%D8%B3%D9%81%D9%87-f1fa8u9nqpht</link>
                <description>حدس میزنم با پیشرفت‌هایی که توی حوزه نوروساینس رسیدیم، دیگه به اواخر عمر فلسفه داریم نزدیک میشیم. منظورم اینه از چندهزارسال پیش تاکنون، برای جواب دادن سوالاتی که جوابی براشون نداریم، هر فیلسوف میاد یکسری فرضیات درنظر می‌گیره و یک چارچوب تولید می‌کنه. سعی میکنه دنیا رو توی این چارچوب مدل کنه و به سوالاتی جواب بده که هنوز جوابی براش نداریم. اما نکته اینجاس که اولا صددرصد مشخص نیس این فرضیات درست باشن، دوما تا الان بشر کلی چارچوب توسعه داده و شاخه‌های فکری متنوعی ایجاد کرده.یه مثال، مقایسه طب سنتی (اسلامی/چینی/...) با پزشکی مدرنه. علم پزشکی بحدی پیشرفت کرده که دیگه به چارچوب‌های علوم گذشته نیازی نیست و علم پزشکی در سراسر دنیا فقط یه چارچوب داره و اونم چارچوب علمیه.درنتیجه با درنظر گرفتن اینکه همه اعمال، رفتار و تفکراتمون از کارکرد مغز ناشی میشه، اینطوری با روش علمی که از صحت مبانیش تا حد خیلی زیادی مطمئنیم، میتونیم ماهیت مسائل فلسفی رو دقیقتر بررسی کرد. همینطور چون فرضیات و متدولوژی علم، یک پکیج بیشتر نیستن، انشعابی هم درکار نیست و به یه چارچوب یونیک جهانی میرسیم.درآخر، بنظرم خوندن کتاب مغز: داستان شما از دیوید ایگلمن برای درک بهتر این موضوع خوب باشه.</description>
                <category>کاوه محمدی</category>
                <author>کاوه محمدی</author>
                <pubDate>Thu, 26 Mar 2020 22:18:10 +0430</pubDate>
            </item>
            </channel>
</rss>