<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ساناز محمودی</title>
        <link>https://virgool.io/feed/@Mahmoudisanaz</link>
        <description>Computer Enthusiast</description>
        <language>fa</language>
        <pubDate>2026-07-07 09:29:50</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/377228/avatar/AraUrY.png?height=120&amp;width=120</url>
            <title>ساناز محمودی</title>
            <link>https://virgool.io/@Mahmoudisanaz</link>
        </image>

                    <item>
                <title>Text Editor vs. Code Editor</title>
                <link>https://virgool.io/@Mahmoudisanaz/text-editor-vs-code-editor-hokbrvlerc8l</link>
                <description>سلام.خیلی وقته چیزی ننوشتم که خب دغدغه و کار واقعاً زیاده و به قول همکارم، حتی اگه وقت خالیم داشته باشی نمیشه که تمرکز کنی بخوای پستی، مقاله ای چیزی بنویسی.ولی دیگه یه موردی بود که میبینم عموم آدما اشتباه میکنن و چیزیم نیست که توضیحش زمان‌بر باشه.به نظرم یکی از مشکلاتی که داریم اینکه اصطلاحات و کلمات مناسبی برای توضیح یه سری چیزا استفاده نمیکنیم.مثالش تو فرق فریموررک و لایبراری خیلی دیده میشد که قبلا تو یه پستی تو لینکدین توضیح دادم و به نظرم خیلی بده که کسی تو این فیلد بخواد اینارو جای هم به کار ببره.موردی که اخیراً هم زیاد میبینم که اشتباه استفاده میکنن و خیلی به نظرم رو مخه فرق IDE, Code Editor, Text Editor عه. حالا باز عموم وقتا فرق بین IDE و اون دوتای باقی مانده رو میدونن، ولی نمیدونن خود همون دو تا هم باهم فرق دارن و جالب اینجاست که وقتی مثلاً سرچ میکنیم vs code نوشته که این یک کد ادیتوره و مثلاً سرچ میکنیم emacs نوشته که این یک تکست ادیتوره و برامون سوال نمیشه که خب چرا تمایز براشون قائل میشن.حالا من قراره تو این پست، از مقاله هایی که خونده بودم یه توضیح مختصری راجع به این سه تا بدم.خب سیمپل ترین چیز text editorها هستن، که قراره توش یه سری تکست نوشته بشه مثل NotePad. حالا این یه سریا از همین نوت پد استفاده میکنن برای کد و بیشتر خودشونو عذاب میدن ولی به هر جهت استفاده میکنن یا مثلاً تکست ادیتورای خفن تری هست مثل emacs و خب شما میتونید یه سری پلاگین و اینا براش کانفیگ کنید که بتونید راحت تر کد بزنید یا به واسطه اون پلاگین ها از یه سری امکانات استفاده کنید. (من یادمه که محیط گرافیکی هم برای نصب مثلاً ندارن و خودتون باید تو کانفیگشون اضافه کنید یه جورایی مثل کانفیگ ویندو منیجر i3). خلاصه که در کل لخت لختن بدون هیچ فیچری و یا پلاگینی.حالا بریم سراغ code editorها. در واقع کد ادیتورها همون تکست ادیتورهایی هستن که یه سری feature built-in دارن یعنی لازم نیست شما برای هر قابلیتی که میخواین یه پلاگینی و چیزی کانفیگ کنین.یه بستری فراهم شده یه سری قابلیت هارو حتی بعضاً بای دیفالت داره. مثال میزنم مثلا تو vs code  شما، indent پیش فرض دارید و یا میتونید به راحتی تغییرش بدید ولی این قضیه تو تکست ادیتورها صادق نیست و مثلا تو بعضی تکست ادیتورها باید براشون کانفیگ کنید.و غول مرحله آخر IDE.  اولاً که خلاصه Integrated Development Environment عه و دیگه مشخصاً میشه فهمید که یه IDE هم کدادیتور هم تکست ادیتوره هم کامپایلره هم دیباگره در واقع یه بستری ای که همه چیز داره.مورد دوم IDE ها عموماً مختص یک یا دو زبان هستن ولی مثلا کد ادیتورها یه طیف گسترده ای از زبان ها رو پوشش میدن.مورد سوم اینکه حجمشون بالاست به دلیل اینکه همه چیز توشون هست و عموماً هم کندتر نسبت به کد ادیتورها هستن.یه نکته ریز: حالا شما با نصب کلی پلاگین تو کدادیتورها میتونید اونو به سمت IDE ببرید ولی خب به صورت پیش فرض ندارن دیگه و اگر نصب نکنید خروجی و عملیات خروجی رو باید خارج از اون محیط انجام بدید.سعی کردم خیلی ساده و با مثال هایی که تجربه شخصیم بوده هم توضیح بدم، که بهتر فرق این سه تا رو متوجه شید و کمکی کرده باشم.البته فک کنم فقط رو مخ منه ولی به هر حال (چی میگن) ″دونستنش خالی از لطف نیست″.تا مقاله بعدی بدرود.</description>
                <category>ساناز محمودی</category>
                <author>ساناز محمودی</author>
                <pubDate>Mon, 19 Jul 2021 00:44:43 +0430</pubDate>
            </item>
                    <item>
                <title>mutable vs immutable</title>
                <link>https://virgool.io/@Mahmoudisanaz/mutable-vs-immutable-n68ivxdpwlhx</link>
                <description> خب این بار قراره راجع به آبجکت‌ها حرف بزنیم تو سوالی که طرح کرده بودم دو نکته بود یکی mutable بودن آبجکت‌ها و یکی ام const تعریف کردن متغییرها.-&gt; اول بریم سراغ const که خب راحت تره. سوالی که ممکنه براتون پیش بیاد اینکه مگه میشه یک مقدار ثابت رو تغییر داد و اگه میشه دیگه چرا اسمشو میذاریم const ؟من نمی‌دونم چه جوری اینو ترجمه کنم که تمیز دربیاد :))))، برای همین خود جملشو میگم:in JavaScript, const does NOT define constant value, it defines a constant reference to value.برای همین شما می‌تونید پراپرتری‌های داخل یک آبجکت رو تغییر بدید ولی نمی‌تونید re-assign کنید. با توجه به گزینه‌ ها، فک کنم اکثریت اینو میدونستید.-&gt; حالا بریم سراغ بخش اصلی mutable vs immutable بودن داده ها.اول دو تا فریز میگم که همیشه تو ذهنتون باشه :&lt;- immutable primitive values &lt;- mutable object referencesحالا بریم یک توضیحی بدم راجع به اون دو کلمه :immutable data داده های هستند که بعد از اینکه ساخته می‌شوند، قابل تغییر نیستند (تحت یک سری متد یا اپراتور) که خب پرامیتیوها به این صورت هستند. ( امیدوارم بدونید پرامیتیوها چیا هستند، اگر نمیدونید MDN خوب توضیح داده =)) )با مثال میگم بیشتر متوجه شید:ik i can use str += &quot;script&quot; :)خب اینجا شاید با توجه به چیزی که گفتم، بگید که مقدار str که تغییر کرده پ چی شد ؟مقدار str &quot;جاوا&quot; میمونه و وقتی تحت اپراتور جمع کانکت میشه، انگاری یک str جدید تو یک بلاک جدید در حافظه ساخته میشه که مقدارش &quot;جاوااسکریپت&quot;ه و اون بلاک قبلی حافظه به garbage collection میره.حالا تو مثال بعدی بهتر متوجه میشید.mutable data داده هایی هستند که بعد از ساخته شدن هم قابل تغییر هستند (تحت یک سری متد یا اپراتور) که خب آبجکت ها و آرایه ها و ... به این صورت هستند.مثالشم با همون سوال که تو لینکدین بود، میرم جلو و بعد مقایسه میکنم با immutable ها : تو این مثال، همونطور که می‌بینید من پراپرتی آبجکت دومی رو تغییر دادم، پرارپرتی آبجکت اولی هم تغییر کرد. چرا ؟ چون زمانی که آبجکت اولی رو به آبجکت دومی assign میکنیم با رفرنسش assign میشه و بلاک جدید برای آبجکت دومی در حافظه ساخته نمیشه.  به عبارتی آبجکت اولی و دومی هر دو رفرنس یکسان تو حافظه دارند و هر تغییری رو هر کدوم اعمال کنیم، رو دیگری هم اعمال می‌شود. So (obj1 == obj2 -&gt; true), BUT (str1 == str2 -&gt; false)نکته : اما اگر دو تا آبجکت داشه باشیم با مقادیر و پراپرتی های یکسان از نظر equality و strict equality یکی نیستند چون رفرنس های متفاوتی در حافظه دارند.اینم لینک پستم در لینکدین.پ.ن : من هر آنچه که میفهمم رو به زبون خودمونی مینویسم برای همین ممکنه استفاده برخی اصطلاحات، نادرست باشه خوشحال میشم بهم بگید و امیدوارم تا حدودی خوب تونسته باشم توضیح بدم. </description>
                <category>ساناز محمودی</category>
                <author>ساناز محمودی</author>
                <pubDate>Wed, 16 Dec 2020 16:20:28 +0330</pubDate>
            </item>
                    <item>
                <title>Associative arrays supported in js or not ?</title>
                <link>https://virgool.io/@Mahmoudisanaz/associative-arrays-supported-in-js-or-not-xwu4tm63aj8j</link>
                <description>خب سلام.این اولین پست من توی ویرگوله و باید از همین اولش بگم من قدرت بیان چندان خوبی ندارم ولی وقتی نتایج رو دیدم ترجیح دادم بیام یه توضیح کوچکی بدم و برم. خب سوال این بود که آیا آرایه با named index داریم یا نه و خیلیاتون اومدید گفتید که ساپورت نمیشه که تقریبا هم درسته. حالا چرا تقریبا ؟ همونطور که هینت داده بودم، حتما خروجی کنسول‌و میخواستم و خب مرسی که نرفتید تو کنسول چک کنید :)خب بریم یه توضیح بدیم اول راجع Associative array or hash در واقع آرایه هایی هستند که میتونیم با یک string key به المنت های آرایه دسترسی داشته باشیم که تو بعضی زبان ها ساپورت میشه اما تو جاوااسکریپت نه. خب چیزی تو جاوااسکریپت تعریف شده، اینکه :Array with numbered index and Object with named index و همینم فرق بین آبجکت و آرایه تعریف میکنه که کی و چه وقت از کدوم استفاده کنیم. تا اینجای کار اگه خروجی و تو کنسول نمیخواستم گزینه اول درست بود.بریم خروجی رو ببینیم تو کنسول :درسته که دسترسی به المنتای یک آرایه از طریق numbered index میباشد، همونطور که تو مثال بالا دیدیم ولی چون آرایه ها نوعی از آبجکت هستند و در واقع ارث بری میکنند پس اگر آرایه ای با named index استفاده کنیم، خود جاوااسکریپت این رو به یک استاندارد آبجکت redefine میکنه (&quot;دوباره تعریف کردن&quot;) و به عنوان property میشناسه و میتونیم به مقدارش دسترسی داشته باشیم ولی تاثیری رو طول آرایه نداره و نمیتونیم با numbered index بهش دسترسی داشته باشیم.همونطور که میبنید انگاری پراپرتی 0 مقدارش 1 عه و پراپرتی 1 مقدارش 2 عه و پراپرتی name مقدارش sanaz عه. ولی دسترسی به المنتای یک آرایه فقط از طریق numbered index عه و پراپرتی های از جنس عددی (numeric properties) رو به عنوان المنتای تو آرایه میشناسه و نشون میده و میتونید متد های آرایه رو، روشون استفاده کنید.خب نمیدونم چه قد خوب توضیح دادم ولی امیدوارم مفید واقع شه. اگه نشد، برید حتما You Don&#x27;t Know Js رو بخونید &quot;cuz WE All Don&#x27;t Know Js&quot;We all don&#039;t know.</description>
                <category>ساناز محمودی</category>
                <author>ساناز محمودی</author>
                <pubDate>Wed, 18 Nov 2020 01:48:59 +0330</pubDate>
            </item>
            </channel>
</rss>