<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Amir Tahan</title>
        <link>https://virgool.io/feed/@AmirTahan</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 02:57:01</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1897088/avatar/ssrWYe.jpg?height=120&amp;width=120</url>
            <title>Amir Tahan</title>
            <link>https://virgool.io/@AmirTahan</link>
        </image>

                    <item>
                <title>کتاب خانه هایی برای مپ کردن دیتا در ASP.Net.</title>
                <link>https://virgool.io/@AmirTahan/%DA%A9%D8%AA%D8%A7%D8%A8-%D8%AE%D8%A7%D9%86%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AA%D9%88%D9%85%D9%BE%DB%8C%D9%86%DA%AF-aspnet-ra0avaxzy0uh</link>
                <description>مپینگ در ASP.NETبرای مپ کردن دیتا راه های زیادی هستش که پر سرعت ترین این راه ها در زمان اجرای برنامه مپ کردن دستی داده ها میباشد.اما برای کد زنی چطور؟شما فکر کن 20 تا پراپرتی رو بخوایی مپ کنی! پیر میشی خدایی :).بعد شما میایی کلاسو تغییر میدی و یک متغیر توش اضافه میکنی باید دوباره بری کله برنامتو بگردیو این یکدونه متغیر رو توی تمام مپینگ های دستیت آپدیت کنی.و اما چاره کار کجاست؟Automaper and mapsterاستفاده از کتابخانه های اتومپینگی همچون Automapper و Mapster.من خودم به شخصه از AutoMapper زیاد استفاده نکردم، بدلیل کانفیگ های طولانی و مسخره ای که داره.اما Mapster بهشته.سرعت کتابخانه Mapster نیز بالاتر از AutoMapper هستش، چرا؟بعداً بهت میگم.اما Mapster کلا باید یک کتابخونه نصب کنی و از استفاده کنی، تمام.لینک گیت هاب مپستر.</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Sun, 25 Feb 2024 22:40:29 +0330</pubDate>
            </item>
                    <item>
                <title>فرق بین Immutable و Mutable</title>
                <link>https://virgool.io/amirtahanProgrammer/%D9%81%D8%B1%D9%82-%D8%A8%DB%8C%D9%86-immutable-%D9%88-mutable-yyn2hccmxezv</link>
                <description>من به شخصه همیشه سره این دو بزرگوار مشکل داشتم، پس تصمیم گرفتم که این بلاگ رو آماده کنم :).Immutable Vs Mutableتغییر ناپذیر و تغییر پذیر:این دو کلمه انگلیسی هستند که Immutable به معنای تغییر ناپذیر میباشد و Mutable به معنای تغییر پذیر. خب واضح است که در گوگل ترنسلیت که بزنین معنیاشو میتونین در بیارین. اما توی برنامه نویسی چه استفاده هایی میشه؟در برنامه نویسی ما با این دو کلمه زیاد کار داریم، چرا که باید متغیر هایی تعریف کنیم که یا تغییر پذیر باشند و یا تغییر ناپذیر.یعنی چی؟1. تغییر ناپذیر:ببینید شما ممکنه توی ران تایم برنامه و درحالی که برنامه در حال اجراست نمیخواهید که مقدار یکی از متغیرهای شما تغییر کند، ممکنه این مقدار یک کلید امنیتی باشه، یک عدد خاص باشه و یا هرچیزه دیگه، در هر صورت شما نمیخوایین که این متغیر در طول اجرای برنامه تغییر کنه; پس شما در این حالت میایین و اونو تغییر ناپذیر و یا Immutable قرار میدید.که خب در سی شارپ (#C) شما میتوانید با کلمه کلیدی Const یک متغیری تعریف کنید که تغییر ناپذیر باشد.و یا میتوانید از Record استفاده کنید که نوعی کلاس هستش که در 9 #C معرفی شد استفاده کنید.که به راحتی میتونید یک کلاس رکورد معرفی کنید و متغیرهایتان را در آن معرفی کنید و وقتی اون متغیر را در بدو ایجاد شئ مقدار بدین دیگه قابل مقدار دهی در طول برنامه نیست مگر این که آن را از حالت immutable درارید.در سی شارپ روش های دیگری برای تعریف کردن متغیرها‌ی تغییر ناپذیر وجود دارد:استفاده از کلمه readonlyto;&quot;&gt; publicreadonlyListto; و یا استفاده تنها از get پراپرتی که در این شرایط باید یک مقدار اولیه به صورت دستی بهش بدین. publicstringFrom{get;} به این نوع تعریف متغیر فقط خواندنی هم میگن که شما در مرحله تعریف متفیر فقط میتوانید به آن مقدار دهید.2. تغییر پذیر:در برنامه نویسی تقریبا میشه گفت تمامی متغیرهایی که به صورت ساده تعریف میکنید تغییر پذیر و با mutable میباشند.یعنی شما میتونی توی خط اول، یک مقداری بهش بدی مثلا 2 و در خط های بعدی به راحتی عدد درون این متغیر را عوض کنید.دقیقا بر خلاف immutable عمل میکند.منابع: What is the difference between a mutable and immutable string in C#?How do I declare an immutable variable (value) in C#? [duplicate]How to create an immutable type in C#.What are the benefits to marking a field as &amp;amp;amp;amp;#x60;readonly&amp;amp;amp;amp;#x60; in C#?</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Thu, 01 Feb 2024 16:22:01 +0330</pubDate>
            </item>
                    <item>
                <title>حافظه هیپ (Heap) و استک (Stack) در برنامه نویسی.</title>
                <link>https://virgool.io/amirtahanProgrammer/stackandheap-gswyi5bsyc8e</link>
                <description>انواع حافظهHeap and stackدونوع حافظه داریم حافظه استک (Stack) که در درس ساختمان داده در رشته کامپیوتر به آن پشته میگویند. و حافظه هیپ (Heap).در برنامه نویسی ما همیشه با حافظه استک سروکار داریم حتی اگر متغیر ما رفرنس تایپ باشد.پشته یا استک چیست؟ Stackحافظه استک در برنامه نویسی برای نگه داری مقدار متغیرها (متغیرهای ولیو تایپ) میباشد و در زمانی که شما یک متد را فراخوانی میکنید، آن متد درون این حافظه ذخیره میشود و سپس متغیر های درون متد.این حافظه شبیه به استوانه ای عمل میکنه که آخر آن بسته میباشد. بدین منظور من این مثالو زدم تا بتوانم شفاف کنم که شما وقتی وسیله  ای را در استوانه ای که آخره آن بسته است بزارید، آن وسیله در آخره استوانه جای میگیرد و دیگر وسایل بر روین آن قرار میگرد.بنابراین موقع برداشتن وسایل اولین وسیله ای که برمیداری آخرین وسیله ای است که درون استوانه گذاشته اید.پشته هم به همین شکل است.اولین شئ که برمیدارید آخرین شئ است که گذاشته ایدحالا چه موقع استفاده میشه؟شما وقتی متدی را صدا میزنید آن متد در انتهای استوانه قرار میگرد و متغیرهای آن بر روی آن سوار میشد و اگر متد دیگری را صدا بزنید درون آن متد، دوباره درون پشته ذخیره میشود و بر روی تمام متغیرهای متد قبلی جای میگیرد.و تا زمانی که کارتان با متد تمام نشود، آن متد از حافظه استک خارج نمیشود.در حافظه استک همانطور که گفتم دیتاها و مقادیر ذخیره میشود، مقادیر متغیرهایی که ولیو تایپ باشن، مثله int, float و کلاً متغیرهای عددی و شما میتوانید مقادیر این متغیر هارا به راحتی در جای دیگه ریخته و تغییر دهید در صورتی که مقدار اصلی تغییر نکند.اما بعضی از نوع های متغیر مثله لیست‌ها و کلاس ها ولیو تایپ نیستن و رفرنس تایپن که در ادامه به اینها خواهیم پرداخت.شما در برنامه نویسی نیازی به مدیریت استک ندارید و فقط کافیه که مدیریت کنید که یک متد را چه زمانی کال کنید و چه زمانی آن را خاطمه دهید، همچنین باید مراقبه توابع بازگشتی باشین چون این نوع توابع درصورت تکرار زیاد میتوانند باعث پر شدنه حافظه استک شود و به خطای استک اوورفلو (Stack overflow) دچار شوید.حافظه رفرنس تایپ و یا Heap:این نوع حافظه مربوط به متغیرهایی میشوند که ولیو تایپ نیتسن بلکه رفرنس تایپن.سرعت پایین تری دارن و در صورت مدیریت نکردن آنها باعث کند شدن سیستم میشوند.رفنرنس تایپ ها عبارت اند از متغیرهای آرایه ای، کلاس ها و اشیا.همچنین متغیر های رشته‌ای نیز جزوه رفرنس تایپ ها به حساب می آیند.در Ram بخشی وجود دارد به نام حافظه داینامیک که هیپ و متغیرهای رفرنس تایپی در آنجا ذخیره میشوند.این حافظه بدین شکل کار میکند که مقدار متغیر را ممکن است در یک بلوک و یا بلوک های جدا از هم ذخیره کند و در نهایت رفنرس و یا آدرس آن را در حافظه استک ذخیره کند.و در زمانی که به متغیر رفرنس تایپی کار داشته باشیم در اصل داریم آدرس آن را صدا میزنیم و مقدار متغیر را از آدرس های مختلف جمع میکنیم و یا از آدرس آن را دریافت میکنیم.این حافظه در صورت سنگین شدن ممکن است باعث متوقف شدن برنامه شما شود چرا که دیگر فضایی برای ذخیره سازی متغیرهای دیگر نیستش.همچنین هرچه متغیری که در این حافظه ذخیره میکنید سنگین تر باشد عمل خواندن آن کند تر میشود و حافظه بیشتری را اشغال میکند.این حافظه مثله حافظه استک نیست که بعد از تموم شدن متغیر آن را از حافظه پاک کند، خیر. بلکه متغیرها بعد از اتمام کار هم در این حافظه باقی میمانند و فقط آدرسشون از حافظه استک پاک میشود.حالا در اینجا بحثی بوجود می آید به نام garbage collection که کارش این میباشد، متغیرهای بلا استفاده را از حافظه استک پاک میکند.این کار باعث آزاد سازی فضای هیپ شده و در نتیجه باعث افزایش سرعت سایت شما میشود.حافظه هیپ و استک</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Thu, 25 Jan 2024 01:43:49 +0330</pubDate>
            </item>
                    <item>
                <title>میخوام برنامه نویس شم ولی نمیدونم از کجا شروع کنم!</title>
                <link>https://virgool.io/amirtahanProgrammer/%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D9%85-%D9%88%D9%84%DB%8C-%D9%86%D9%85%DB%8C%D8%AF%D9%88%D9%86%D9%85-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%D9%85-jfd3trepfexw</link>
                <description>کدوم راه رو باید برم؟این که نمیدونین از کجا شروع کنید یک چیزه طبیعی هستش. اما پیدا نکردن راه یک چیزه غیرطبیعی.این که یک‌سری چیزها برامون سوال باشه خیلی طبیعیه و این که همیشه در شروع یک راهی سردرگم باشیم هم طبیعی‌تر.شما برای شروع هر کاری یکسری نیازهایی داری که باید آنهارا دریابین و یک سری سوالاتو جواب بدین.سوالاتی مثل:چرا میخواهم برنامه نویس شوم؟آیا به این کار علاقه‌مند هستم؟حالا که تصمیم دارم برنامه‌نویس شوم زمینه مورد علاقم کدومه؟منظورم از سوال اول این هستش که شما باید دقیقاً مشخص کنید که چرا میخوایین برنامه‌نویس شوید، آیا میخواهید در این زمینه تا آخر کار کنید؟ آیا میخواهید فقط برای خودتان برنامه درست کنید و تمام؟ آیا میخواهید اینستاگرام پارتنرتان را هک کنید؟🙄 و...شما اول باید هدف دقیقتون را بدانید تا بتوانید در انتخاب راه بهتر تصمیم بگیرید و اونو پیش ببرید.سوال دوم که میتونم بگم یکی از مهم‌ترین سوال‌هاست که خب در بعضی جاها در مصاحبه‌های کاری هم از شما میپرسند.ببینید دوستان برنامه نویسی شغلی هستش که اگه واقعا به اون علاقه نداشته باشید نیمتونین توش موفق بشین. چرا؟ به دلیل چالش های زیادی که داره و اینم بگم این کار عمق نداره. یعنی چی؟یعنی هیچ شخصی نمیتونه بگه من ته برنامه نویسی رو درآوردم و دیگه فوله فولم، نه! چون تا هرجا که عمیق شید چیزهایی میبینید که براتون جدیدن و یهو میمونید.سوال سوم که میتونم بگم با جواب دادنش به نتیجه خوبی میرسید.این سوال به این منظور میباشد، دنیای برنامه‌نویسی زمینه‌های زیادی داره. برخی از این زمینه‌ها عبارت‌اند ازبازی‌سازی، وب، نرم افزار(اندروید، IOS، ویندوز و...)، هک، هوش مصنوعی و...که شما باید دقیقاً مشخص کنید که به کدام یک علاقه‌مند هستید و در همان زمینه شروع به یادگیری و پیشرفت کنید.همچنین هرکدوم از زمینه ها، زبان‌های برنامه‌نویسی خودشو داره. برای مثال برای نرم‌افزار ویندوزی میتوانید به سمت #C بروید که خب زبان پرقدرتی هم هستش.c#در آخر که شما علاقتونو پیدا کردید و زمینتونو انتخاب کردید نوبت میرسه به زبان برنامه نویسی، که اینجا باز خیلیا میوفتن توی ندونم کاری و سوالای زیاد.ببینید دوستان تمامی زبان های از نظر سرعت و خیلی چیزهای دیگه شبیه به هم هستن، اما از نظر سینتکس، کارای و... باهم یکی نیستن. من خودم به شخصه در زمینه وب میتونستم برم PHP, NodeJs و زبان‌ها و فریم‌وورک های دیگر. اما مثلا از سینتکس PHP خوشم نمیومد و با خیلی چیزهای دیگه مشکل داشتم.پس تصمیم گرفتم برم سمت #C چرا؟ چون هم از سینتکسش خوشم میومد و هم یک چیزایی از قبل بلد بودم.در نتیجه: شما هدفتونو مشخص کنید، علاقتونو مشخص کنید و راهتونو بدونید و در نهایت زبان مورد نظرتان را انتخاب کنید.اینم بگم شما توی این راه تنها نیستین دوستان و خیلی از افراد همین شرایطو دارن، من پیشنهاد میکنم به شما دوستان که برای اول راه حتماً حتماً و حتماً توی لینکدین با یک برنامه نویس مچ بشین و سوالاتتون را ازش بپرسید تا راهنماییتون کنه و یا شمارو به یک شخص دیگه وصل کند.linkedin</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Sun, 21 Jan 2024 18:27:49 +0330</pubDate>
            </item>
                    <item>
                <title>دورکاری و کار در خانه برای یک شخص چگونه است؟</title>
                <link>https://virgool.io/amirtahanProgrammer/%D8%AF%D9%88%D8%B1%DA%A9%D8%A7%D8%B1%DB%8C-%D9%88-%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%AE%D8%A7%D9%86%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%B4%D8%AE%D8%B5-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D8%AA-yqmr6ndc4vlq</link>
                <description>نمونه بارز دورکاری😁😉 آیا دورکاری خیلی خوبه؟ چه خوبی هایی داره و چه بدی هایی؟ اینجا به این موضوع میپردازم.من به عنوان کسی که هشت ماه به بالا داره دورکاری میکنه، دارم این وبلاگ رو مینویسم بلکه دوستان بتونن ازش استفاده کنن و خوبی ها و بدی هاشو بدونن.خب قطعا همه ما از رفتن به شرکت و در ترافیک و شلوغی ماندن خسته شدیم و همه به فکره این هستیم که دورکار شویم و کار را از خانه انجام دهیم، خب چی بهتر از این؟ صبح ساعت 7:59 پامیشی 8 سره کاری، پیش خانوادتی، پست چیزی بیاره برات تو خونه‌ای و از همه مهم تر نگران راه برگشتت و ترافیک شبت نیستی.اما نکاتی هست که همه چیزو باهم یکسان میکنه.کار در خانهبیایین اول از خوبی‌ها بگیم و کمی اوله ماجرارو خوشبینانه پیش ببریم.همونطور که در بالاتر گفتم شما دیگه توی ترافیک و شلوغی نخواهی بود، صبح تا آخره وقت تایم کاریت میتونی بخوابی، بعد از ظهر خیلی راحت میتونی کارو تعطیل کنیو به کارای دیگت برسی و...اما نکات: شما دیگه توی اجتماع نیستین مخصوصاً اگر مجرد باشید. شما دیگه از خونه بیرون نمیرید و در نتیجه خونه نشین میشین و این رویه انقدر ادامه پیدا میکنه تا درنهایت تمام کارهای بیرون خونرو لغو کرده و در آغوش اتاقت بمانی.اینا خیلی خوبه اما به یک شرط، به شرط این که درونگرا باشی و زیاد نخوایی با بیرون در ارتباط باشی.من که خودمو یک شخص برونگرا میدونم و دوست دارم با مردم هم کلام شم و صحبت کنم برام خیلی سخته تو خونه کار کردن. شما فکر کن یک برونگا صبح تا شب فقط دیوارهای اتاقشو ببینه :/.کم کم عصبی میشو افسرده و حتی روابط اجتماعیتم ضعیف میشه.مگه این که خیلی سریع جمو جور کنیو بری باشگاهی، کلاسی و یا چیزهای دیگه که خب من مطمئن در نهایت تنبلیت میشه میره.محیط کارت با خونت یکیه پس هی به سرت میزنه کار کنیو تسکاتو تموم کنی. شایدم شبا بشینی پای کار🙄.من تجربه خوبی دارم از دورکاری ولی خب بعضی اوقات فشارهایی مثله دور بودن از جامعه و تو خانه ماندن انقدر زیاد میشه که اگه یک ساعت نرم بیرون عصبی میشمو دیگه نمیتونم کار کنم.اما یک خوبی بزرگ داره در نهایت، اونم اینه که شما چون همکارات نیستن و دوستات نیستن و نمیتونی با کسی صحبت کنی پس خیلی دقیق تمرکزت روی کارته و تسکاتو پیش میبری و اونارو انجام میدی.این بود تمام چیزایی که احساس کردم باید بگم ولی به هرحال من یک پست هم در همین مورد توی لینکدینم گذاشتم که میتونید از اینجا ببینید و نظراتی که دیگران دادن رو هم ببینید.موفق باشید. ❤️</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Sat, 20 Jan 2024 10:18:34 +0330</pubDate>
            </item>
                    <item>
                <title>آیا هرکسی میتواند برنامه نویس شود؟</title>
                <link>https://virgool.io/amirtahanProgrammer/%D8%A2%DB%8C%D8%A7-%D9%87%D8%B1%DA%A9%D8%B3%DB%8C-%D9%85%DB%8C%D8%AA%D9%88%D8%A7%D9%86%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D9%88%D8%AF-e1uiqc6h73ye</link>
                <description>عکس از پیج DotNetKarآیا واقعا همه میتوانند برنامه نویس شوند؟با توجه به تجربه کاری که من دارم از برنامه نویسی کار کردن توی چند شرکت، باید بگم که جواب به این سوال هم بله هستش و هم خیر؟حالا چرا؟ چون شما اگه برنامه نویس نیستی میتونی برنامه نویس بشی به شرط این که ذهنیتت رو تغییر بدی به ذهنیت یک برنامه نویس، ذهنیتی که قدرته تفکر بالای داشته باشه و بتواند مسائل را به راحتی حل کند و یا برای آن راه حلی پیدا کندو آن راه حل را به کد برنامه نویسی تغییر دهد.ببینید دوستان امروزه پیج ها و اشخاص زیادی در حال آموزش دادن هستن اما مسئله ای وجود داره، آیا همه اینها به خوبی آموزش میدهند و یا خودشان به خوبی مسئله را درک کرده‌اند یا خیر؟شما اگر مسئله‌را درک نکنید هیچ وقت نمیتوانید آن را حل کنید و همیشه در سرتان یک علامت سوال بزرگی هستش که خدایا این چیه؟ اصلا چرا باید این بشه؟ چطوری این بشه؟پس برای برنامه نویس شدن شما باید ذهنیتت رو تغییر بدی که حالا وقتی وارد این محیط بشی با خیلی چیزای دیگه آشنا میشی و میتونی به راحتی کارهاتو پیش ببری.حالا اگه قدرت حل مسئلتو افزایش ندی و برنامه نویس بشی چی؟ آیا به درآمد نمیرسیم؟ آیا جایی کار برایمان پیدا نمیشود؟این سوالو میتونم اینگونه جواب بدم که اگر بدون این که ذهنیتتون رو برنامه نویسی کنید و درک درستی از مسائل نداشته باشید میتونید برنامه نویس بشید و حتی میتونید جایی استخدام شید و درآمد کسب کنید اما آیا واقعا کدی که میزنین منطقش درسته؟ به درستی پیاده شده؟ به درستی عمل میکنه؟ به درستی قابل درکه؟ما در برنامه نویسی اصطلاحی داریم به نام تمیز کد زدن یا کد تمیز که عموما به افرادی میگیم که از نام گذاری های درست و منطق درستی استفاده کرده باشند. حالا شما فکر کن بدون منطق باشی هرچقدر هم نام گذاری‌های درستی کرده باشی بازم یک جای کدت لنگ میزنه و کد تمیزی از خودت به جا نمیزاری.اینم بگم حفظ کردن سینتکس‌ها و چگونی کار کردن زبان‌ها هم امروزه کاری نداره با ورود هوش مصنوعی ایناها ساده شده و رسماً هوش مصنوعی میتونه کد بزنه اما تا وقتی منطق درستی بهش یاد ندی نمیتونه کدی که میخوایی رو بهت بده.پس دوستان برنامه نویس باشید، نه کد زنعکس از اینستاگرام DotNetKar</description>
                <category>Amir Tahan</category>
                <author>Amir Tahan</author>
                <pubDate>Fri, 19 Jan 2024 18:03:14 +0330</pubDate>
            </item>
            </channel>
</rss>