<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Bug • باگ</title>
        <link>https://virgool.io/feed/@bug</link>
        <description>یه توسعه دهنده که عاشق تولید محتوا و آموزشه</description>
        <language>fa</language>
        <pubDate>2026-06-18 05:12:57</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/161280/avatar/mfpWnS.png?height=120&amp;width=120</url>
            <title>Bug • باگ</title>
            <link>https://virgool.io/@bug</link>
        </image>

                    <item>
                <title>نکاتی برای بهتر کار کردن در خانه ?</title>
                <link>https://virgool.io/@bug/%D9%86%DA%A9%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D9%87%D8%AA%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%B1-%D8%AE%D8%A7%D9%86%D9%87-malrx0xfrhs5</link>
                <description>Photo by Annie Spratt on Unsplash1-2 سال از زندگیم رو من فریلنسر بودم و به خوبی با ریز مشکلاتی که یه فردی که در خونه داره کار میکنه مواجه بودم و کلی مقاله و مطلب در موردشون خوندم اما زد و رفتم تو شرکت مشغول شدم و الان بعد 2-3 سال با توجه به موقعیت پیش اومده اکثر شرکت ها که میتونستن این امکانو برای کارمنداشون فراهم کردن که به صورت ریموت و توی خانه به ادامه کار بپردازن و حالت دیفالت کارکردن خودشون رو به ریموت تغییر دادن و ازونجایی که من چند سال تجربه داشتم و دلم هم براش تنگ شده بود خیلی خوشحال شدم. اما کار کردن این دفعه شکل متفاوتی داره و اوایل کار نبود همکارا و مشکل در تمرکز برای اولویت بندی و انجام وظیفه و پرت شدن حواس به مسایل دیگه و زمانبندی که همش دست خودم بود حالا قبلا حداقلش این بود که مقداریش توسط شرکت معین میشد حالا بدون اون باری اضافه شده بود که باعث شده بود کار کردن در خانه یه مقدار سخت باشه .ولی به سرعت تونستم خودم رو وفق بدم و حتی الان فکر میکنم performance بهتری دارم نسبت به زمانی که توی شرکت بودم و با توجه به شروع دوباره کار و این که فعلا فعلا ها کرونا قصد نداره دست از سر ما برداره و درگیرش هستیم ، کار به صورت ریموت ادامه پیدا میکنه فکر کردم خوبه که نکاتی که بهم کمک کردن رو به اشتراک بزارم.  محیط کار جدایی رو آماده کنیم. ?جای درستی برای کار کردن وجود نداره یکی از همکارای من رو مبل ، من روی میز و صندلیم کارامونو انجام میدیم ولی حتما باید محیطی جدا برای کار کردن داشته باشیم. جدا یعنی این که جایی که انتخاب کردین ، جای اختصاصیتون برای کار باشه ، برای تایم های استراحت جای جدایی باشه و جدا بودنشون تاثیراتی رو به صورت ناخودآگاه میزاره .محیط کارمون باید ایزوله هم باشه. ?علاوه بر جدا بودن محیط کارمون باید ایزوله هم باشه از چیزها و کسایی که ممکنه تمرکزتون رو بهم بزنن. این مشکل بزرگیه و ما توی اوپن افیس ها هم این مشکل رو داریم ولی وقتی تو خونه و با خانواده باشیم این مشکل شدیدتره. من تو خونه تو اتاق خودم محیط کارمو آماده کردم و توش کار میکنم ولی همه ممکنه این امکانو نداشته باشن یه میز توی ناهار خوری یا هر راه دیگه ای که به ذهنتون میرسه میتونه جای درستی باشه مگر مثلا جایی رو به روی تلویزیون تو هال خونه ?. و بهترین راه برای جلوگیری از مزاحمت صحبت و communicate با هم دیگه و گذاشتن قراره مثلا من موقع کار در اتاقو میبندم همکارم که رو میز ناهارخوری کار میکنه با همسرش قرار گذاشتن وقتایی که هدفون داره مگر واقعا در مواقع اضطراری و بهشون احترام میزاریم.➕ بهتره جایی برای دیدن کارها داشته باشیم.?بهتره لیستی از کارهای اون روز رو جایی مشخص که دسترسی سریع داریم مثلا وایت بورد ، گوشی ، دفتر ، تقویم داشته باشیم ؛ بهترینش به نظرم وایت بورده ولی توی خونه من امکانشو ندارم و کارارو روی دفتری مینویسم و بودنش و در دسترس بودنش بهم کمک میکنه.جلوی حواس پرتی رو بگیریم ?اگه سیستمی که باهاش کار میکنید با سیستمی که مثلا توش باقی کارهارو انجام میدید یکیه یکی از کارها میتونه ایجاد اکانت جدید و محدود کردنش در دسترسی به برنامه ها و بازی ها و سایت هایی که حواستون رو پرت میکنه داشته باشید. من ازونجایی که سیستم شرکتم متفاوته زیاد با اپ نرم افزارهایی که این کارو انجام میدن آشنایی ندارم متاسفانه ولی براحتی با جستجو میتونین پیداش کنیناگه گوشیتون باعث حواس پرتی میشه مثلا نوتیفیکیشن ها و ... اونهارو محدود کنید یا اگر مثلا مشکل این هست یهو دلتون میخواد برید اینستاگرام نصب اپ هایی مثل Forest باعث میشن که تمرکز بهتری داشته باشین ، من دقیقه این مشکل رو داشتم و نوتیفیکیشن هارو به جز چند اپ ضروری محدود کردم و بازی Forest هم ازونجایی که دلم برای اون درخت میسوزه بسیار کمک کرده بهم.یک ساختار بسازیم. ?وقتی که میرفتیم سر کار رو یادمون بیاد مثلا صبح سر ساعت مشخصی بلند میشدیم دوش میگرفتیم صبحانه میخوردیم اماده میشدیم و حالا با ماشین مترو یا ...  میرفتیم سرکار و توی تایم معینی میرسیدیم به سر کار و همگیمون اون روزهایی که کار میکردیم به صورت یه روتین همچین برنامه ای رو داشتیم ولی حالا وقتی تو خونه ایم کلا فرق میکنه و ساختار رو از دست دادیم درسته مثلا صبح بیدار میشیم ، دوش میگیریم ، صبحونه میخوریم میریم سر کامپیوتر و روشن میکنیم ولی اون ستاپی که داشتیم سر کار ، تایم های ست شده برای استراحت و ناهار و اخر سر هم تایم پایان کار مثلا 5 و نیم ، 6 رو از دست دادیم ممکنه تایم ناهارمون جابه جا بشه اتمام کار مساویه با بستن مثلا در لپتاپمون و ...اولین قدم برای برای بهبود عملکرد توی کارمون اینه که ساختاری که داشتیم رو دوباره حتی الامکان در همون تایم ها یه جوری بسازیم  سر تایم مشخصی بیدار شیم ، تایم های مناسبی برای استراحت و ناهار اختصاص بدیم.برای مثال خود من غیر از تایم ناهار که ازونجا که با خانواده زندگی میکنم و نقشی توی تهیه اش ندارم و بر عهده خانواده است و بنا برا مشکلاتی که پیش میاد تایمش جا به جا میشه و نتونستم هنوز ساختاری داشته باشم برای باقی امور اوکی هستم و مثلا کارهام/ تایم های استراحتمو  با کمک تکنیک pomodoro جلو میبرم که مثلا 25 دقیقه برروی کارم تمرکز میکنم و سپس 5 دقیقه استراحت میکنم و دوباره از نو و پس از 4 بار رفتن این چرخه 15 دقیقه استراحت میکنم و دوباره از نو شروع میکنم. تحرک داشته باشیم ?ما حتی اگه به باشگاه نمیرفتیم باز هم بالاخره از خونه خارج میشدیم تا ماشین پیاده میرفتیم یا توی مسیر مترو وای میستادیم یا از 4 تا پله بالا و پایین میرفتیم و برای رفتن به جلسه در شرکت از اتاقی به اتاق دیگه میرفتیم بالاخره یه تحرکی داشتیم ولی با شروع شدن کار ، تمام این ها صفر شدن . برای حفظ سلامتیمون خوبه که حداقل تحرکی داشته باشیم مثلا تایم هایی رو پیاده روی کنیم ?‍♀️ ?‍♂️ حالا که بیرون نمیشه ولی توی حیاط خونه یا حتی خود خونه میتونه فکر خوبی باشه، در تایم های استراحت میتونیم بریم به کار های خونه مثلا کشیدن جارو برقی ، طی یا گردگیری میز و ... کمک میکنن حداقل تحرک رو داشته باشیم و کاملا بدون تحرک نباشیم.امیدوارم این مقاله بتونه بهتون کمک کنه که بهتر و با performance بیشتری کار کنیم.در این روز ها حواستون به سلامتیمون باشه. موفق باشید.</description>
                <category>Bug • باگ</category>
                <author>Bug • باگ</author>
                <pubDate>Thu, 02 Apr 2020 18:29:46 +0430</pubDate>
            </item>
                    <item>
                <title>? جرقه 2 : hex هشتایی</title>
                <link>https://virgool.io/@bug/-%D8%AC%D8%B1%D9%82%D9%87-2-hex-%D9%87%D8%B4%D8%AA%D8%A7%DB%8C%DB%8C-lc4i0tpfbwqm</link>
                <description>معرفی سری پست های جرقه ?در این سری ، نکات ریز و جالب و ابزار های کوچیک و کاربردی که ممکنه بدردمون بخوره رو در قالب پست های کوچیک خواهیم داشت. این سری بیشتر در زمینه برنامه نویسی هستند ولی قرار نیست فقط در مورد زبان برنامه نویسی خاصی باشند.آشنایی با HEX هشتاییوقتی صحبت رنگ میشه تو css من درک بهتری از کد رنگا به صورت hex دارم و اکثر رنگایی هم که دارم hex هستن و هرجا نیاز به opacity داشتم باید از rgba استفاده میکردم و میرفتم سراغ  convertor ـی که برام hex رو بگیره و rgb اش رو بده در نتیجه همیشه این تبدیل برام سخت بود و امیدوارم بود روزی این قابلیت باشه که مثل کد رنگای rgb برای hex هم بتونیم opacity ست کنیم.چند ماه پیش در موردش کنجکاو شدم که ایا واقعا راه دیگه ای نیست که با hex هشتایی آشنا شدم. hex هشتایی دقیقا مثل هر کد رنگ دیگه مون هست ولی به جای 6 ، 8ـتایی هست و اون 2ـتای جدید نشانگر مقدار opacity به صورت هگزادسیمال هست. این feature پشتیبانی خوبی داره که اینجا میتونین ببینینش.کد زیر همون آبی با opacity 50%background: #0000ff80;نکته : همونطور که متوجه شدین ما گفتیم مقدار opacity  50 ـه ولی به کد رنگ آبی 80 رو اضافه کردیم دلیلش اینه که مقدار opacity ما به درصده ولی ازونجایی که تو hex ما با اعداد هگزادسیمال کار داریم باید درصد رو به مقدار هگزادسیمال تبدیل کنیم . که تبدیل راحتی هست ما 2 رقم تو مبنای 16 داریم بیشترین مقدار مبنا 16 Fـه که نمایانگر عدد 15 ـه وقتی دو رقم داریم میشه FF که برابر با 255ـه در نتیجه 100% میشه FF و به همین ترتیب میتونیم 50% رو محاسبه کنیم که میشه 80.  که تیبلشو میتونین تو این لینک ببینین. https://jsfiddle.net/48robwzL/ می ارزه ازش استفاده کنیم ؟بستگی داره اگه تبدیل کردن براتون مشکله یا مرورگری که میخواین ساپورت نمیکنه طبیعتا نه ولی برای من که میتونم تو چند ثانیه تبدیلش کنم و ساپورت مرورگرش برای من مشکلی نیست توی پروژه هام ازش استفاده میکنم.شما چطور ؟ آیا استفاده از این به جای rgba رو مناسب میدونین ؟ ممنون که خوندین شاد و سلامت باشین ✌️</description>
                <category>Bug • باگ</category>
                <author>Bug • باگ</author>
                <pubDate>Thu, 02 Apr 2020 14:34:46 +0430</pubDate>
            </item>
                    <item>
                <title>? جرقه 1: معرفی auto_prepend_file</title>
                <link>https://virgool.io/@bug/-%D8%AC%D8%B1%D9%82%D9%87-1-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-autoprependfile-xr8qv2cptjov</link>
                <description>معرفی سری پست های جرقه ?  در این سری ،  نکات ریز و جالب و  ابزار های کوچیک و کاربردی که ممکنه بدردمون بخوره رو در قالب پست های کوچیک خواهیم داشت. این سری بیشتر در زمینه برنامه نویسی هستند ولی قرار نیست فقط در مورد PHP باشند. معرفی auto_prepend_file یکی از فریم ورکایی که زیاد باهاش کار میکنم لاراوله و  تو لاراول ما فانکشنای dd و dump داریم که خیلی بهمون کمک میکنن. اگه خارج از لاراول بخوام PHP کنم مثلا روی یه پکیج کار کنم وجود این فانکشنا میتونه خیلی بهم کمک کنه و کارارو سریع تر پیش ببره و دلم براشون تنگ میشه.برای این کار راه ساده ای وجود داره اونم استفاده از  auto_prepend_file  ـه که جز directive های php.ini ـه  و ما باید بهش آدرس فایلی رو بدیم و PHP بعد ازون همیشه قبل از لود فایل  main ـمون این فایل رو لود میکنه (انگار همیشه این فایل رو require میکنیم). برای آشنایی با این directive میتونین اینجا بیشتر درموردش بخونیم.خب برای اضافه کردن کردن dd و dump فقط کافیه بدونیم این فانکشنا از طریق پکیج symfony/var-dumper در دسترسن.برای این کار کافیه مراحل زیر رو بریم :1- در یک فولدری که در نظر گرفتیم برای این فایل با کامپوزر این پکیج رو نصب کنیم.composer require symfony/var-dumperخب حالا یه فایل php جدیدی مثلا به اسم prepend.php میسازیم و کد های زیر رو توش کپی کنیم :&lt;?php
require_once __DIR__.&#039;/vendor/autoload.php&#039;;
// Define here any global function, constant or class you want 
function isAutoPrependFileLoaded  () {  
   return true; 
}خب میریم به فایل php.ini مون و این کدارو کپی میکنیم.; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
auto_prepend_file = /absolute/path/to/your/prepend.phpجای  /absolute/path/to/your/prepend.php هم آدرس فایلی که قبلا ساختیم جایگیزین میکنیم.حالا فانکشنای dd و dump و isAutoPrependFileLoaded  همیشه در دسترسمونن.* : این پست ترجمه آزادی از این پست ـه</description>
                <category>Bug • باگ</category>
                <author>Bug • باگ</author>
                <pubDate>Wed, 01 Apr 2020 23:00:47 +0430</pubDate>
            </item>
                    <item>
                <title>بلایی که کمال گرایی برسرم آورد</title>
                <link>https://virgool.io/@bug/%D8%A8%D9%84%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%DA%A9%D9%85%D8%A7%D9%84-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%B3%D8%B1%D9%85-%D8%A2%D9%88%D8%B1%D8%AF-s45fc6cdbrnc</link>
                <description>Photo by Marko Horvat on Unsplashمن آدم کمالگرایی نیستم تو اکثر اوقات ولی وقتی که به علاقه مندیم میرسه یه تولید و خلق یه چیز نو کمال گرا میشم (یه اپ جدید ، یه مقاله جدید ...) .  آدما بدترین منتقد خودشونن ، انتقاد رو میشه به شکل جاج (قضاوت) هم دید وقتی بزرگترین قاضی خودت باشی ، حتما زندانی میشی.در چند وقته گذشته من تو سرم زندانی شده بودم به همین خاطر نمیتونستم چیز جدیدی بسازم و گیر کرده بودم و این باعث شده بود دیگه نتونم پروژه هامو پیش ببرم و علیرغم علاقم رفتم مشفول به کار شدم تو  شرکتها به عنوان برنامه نویس ، وقتی کار خودت و ایده خودت نباشه نوشتن و تولیدش آسونه.فکر میکردم این که ایده هامو بزارم کنار و بدون فکر به اون مسايل ادامه بدم ممکنه ولی این برام کار نکرد  ، درسته کار میکردم پول درآوردم اما رویاها و ایده هام هنو باهام بودن و ازشون چشم پوشی میکردم چون بدون این که اعتماد بنفسشو داشته باشم نمیتونستم برم سراغشون. من نمیتونستم کارها جلو ببرم چون نقش قاضی رو داشتم جای خالقش و این چیزیه که بهش میگن کمال گرایی.کمال گرایی یعنی  همه چیز باید در حد کمال باشه و کمتر ازون پذیرفته نیست و خیلی از مردم هم میگن کمال گران ولی این گفتشون بیشتر از رو فروتنیشونه نه چیزی که باعث توقف کارشون باشه ولی واقعا برای من وقتی چیزی که میخوام شامل اشتباه باشه و perfect نباشه ارزش شروع(امتحان) کردن نداره و فکر کردن به اینا منو فلج کرده بود. وقتی اینجوری باشی دیگه وقتی خودتو تو آینه میبینی دیگه چیزی که بقیه میبینن رو نمیبینی بلکه انقد وارد جزيیات میشی و خودتو نقد میکنی و میری دنبال درست کردن چیزایی که هیچکی متوجهشون نمیشه.دیده من به کاری که دارم انجام میدم درست مثل همون دیدن خودت در آینه است و وقتی اون چیز اونقد کامل و perfect نیست اگه شروعش نکردم ارزش شروع یا اگه وسطش باشم ارزش منتشر کردنشو نداره اما نگاه کردن این مدلی به کارت باعث میشه دیگه خوشحال نباشی چون همیشه چیزایی برای تغییر و بهبود وجود دارن و در نهایت میشه یه چرخه قضاوت که انقد توش فرو میری که در اخر کاری جز رها کردنشو تموم کردنش نداری.کمالگرایی تو ذهن من معیارش کاریه که باید باشست نه کاریه که واقعا قصد انجامشو دارم، ولی  هدف واقعی من از چیزی که مینویسم یا چیزی که میسازم اینه که یه تاثیری بزارم یا یاد بدم پس اگه من تاثیرمو بزارم یا چیزی که میخوامو یاد بدم اون به اندازه ای که باید perfect ـه.من چیزی که واقعا تو ذهنم میگذره رو نمیتونم بهتون نشون بدم اما با تقریب خوبی همینی که میبینید و میخونیده و این به نظرم الان اوکیه ، چون مشکلاتی که هستو من دارم یاد میگیرم که قبولشون کنم.</description>
                <category>Bug • باگ</category>
                <author>Bug • باگ</author>
                <pubDate>Wed, 01 Apr 2020 03:12:26 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با new Function و With</title>
                <link>https://virgool.io/@bug/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-new-function-%D9%88-with-jzulyybqjsex</link>
                <description>مدتی بود که اسم لایبرری Alpine رو میشنیدم ولی بهش توجهی نمیکردم تا این که بالاخره دیروز رفتم سراغش و دیدم لایبرری جالب و باحالیه. که اینجا alpine.js میتونید ببینیدش. و در عین سادگی که مارو یاد TailwindCSS میندازه ولی دیدم تو پروژه های اصلیم نمیتونم ازش استفاده کنم مگر یه سری پروژه های کوچیک واسه همین تصمیم گرفتم حداقل چیزی ازش یاد بگیرم و واسه همین رفتم سراغ کداش تا ببینم چه خبره و چیکار میکنه.اولین چیزی که منو کنجکاو کرد که ببینم چه جوری کار میکنه این بخشه :&lt;div x-data=&amp;quot{ open: false }&amp;quot&gt;
    &lt;button @click=&amp;quotopen = true&amp;quot&gt;Open Dropdown&lt;/button&gt;

    &lt;ul
        x-show=&amp;quotopen&amp;quot
        @click.away=&amp;quotopen = false&amp;quot
    &gt;
        Dropdown Body
    &lt;/ul&gt;
&lt;/div&gt;پیش خودم فکر کردم x-data رو چه جوری میگیره و ذخیره اش میکنه اولین چیزی که یادم افتاد فانکشن eval بود . خب eval کارش اینه که شما بهش یه استرینگ میدین و اون کد رو براتون اجرا میکنه. مثلا یه همچین کدی بعد از اجراش متغیر data رو داریم که مقدارش 4هvar data = eval&#40;`2 + 2`&#41;گفتم که حتما ازین استفاده میکنه ولی این فانکشنه خطرناکیه و ترجیحا نباید استفاده برم ببینم واقعا همینه یا نه که دیدم نه و توی فایل util.js داره از فانکشنی به اسم saferEval استفاده میکنه که اینجوریه :export function saferEval&#40;expression, dataContext, additionalHelperVariables = {}&#41; {
    return (new Function([&#039;$data&#039;, ...Object.keys(additionalHelperVariables)], `var result;
with($data) { result = ${expression} }; return result`))(
        dataContext, ...Object.values(additionalHelperVariables)
    )
}خب من تا الان new Function ندیده بودم و یه سرچی زدم ببینم چیه که فهمیدم new Function میتونه یه فانکشنی رو با کد داینامیک بسازه و اینشکلیه : new Function ([arg1, arg2, ...argN], functionBody)پس این میتونه به تعداد دلخواهی پارامتر بگیره و آخرین پارامترش بادی (بدنه) فانکشن هست.خب جالب شد. یه چند تا نمونه ببینیم: 1)new Function (`alert&#40;&amp;quotWow&amp;quot&#41;`)خروجی این کد یه فانکشنه که وقتی ران شه alert میده و هیچ پارامتری نمیگیره 2) new Function (&#039;a&#039;, &#039;b&#039;, &#039;return a + b;&#039;)
اینو میشه اینجوری هم نوشت:
new Function ([&#039;a&#039;, &#039;b&#039;], &#039;return a + b;&#039;)این یکی بر خلاف قبلی پارامتر میگیره و موقع کال شدنش 2 تا پارامتر میگیره که اولی a و دومی b هستن و مجموع این 2 رو برمیگردونه در واقع با فانکشن زیر برابره function sum (a,b) {
    return a + b;
}خب با new Function آشنا شدیم و فهمیدیمش و کارمون تو این قسمت تمومه فقط قبل از این که بریم دوباره سراغ saferEval و یه چیز جدید دیگه یاد بگیریم حواسمون باشه که new Function و از همون مشکل eval که  امنیت و performance هست رنج میبره ولی به مقدار کمتری. پس ترجیحمون اینه که حد الامکان سراغش نریم و  فقط جاهایی میریم سراغش که راه ای دیگری نداریم.خب برگردیم سراغ saferEval  و اگه یه مقدار سادش کنیم و تیکه هاییش که نکته ای ندارن رو حذف کنیم  به یه همچین چیزی میرسیم:new Function([&#039;$data&#039;], `var result; with($data) { result = ${expression} }; return result`)خب این فانکشن یه پارامتر به اسم data$ میگیره و بادی اش هم اینه:var result;
with($data) {
    result = ${expression};
}
return result;خب دستور with یه دستور Deprecate شدست. و حتی تو حالت strict mode هم استفاده ازش ممنوعه در واقع و دلیلی که هنو کار میکنه هم برای ساپورت سایتای قدیمیه که ممکنه ازش استفاده کنن. ولی به هر حال ازش استفاده میشه تو این لایبرری که دلیلشو هم در ادامه میگم.جاوااسکریپت اینجوری کار میکنه که وقتی به variable یی برسه به دنبال مقدارش تو scope chain میگرده تو execution context یی که داره ولی این دستور جاوااسکریپت رو مجبور میکنه که اول توی ابجکتی که بهش میدیم دتبالش بگرده بعد به شکل همیشگیش کارشو بکنه بزارین یه نمونه بگم :var firstName = &amp;quotAli&amp;quot
console.log(firstName);
var data = {firstName : &amp;quotHossein&amp;quot};
with(data) { 
    console.log(fistName);
}کنسول لاگ اولی علی رو چاپ میکنه و دومی حسین رو.  دلیل دومی هم این که وقتی داخل with هستیم اول دنبال firstName تو data میگردیم اگه بود که اینجا هست اون مقدارو چاپ میکنیم اگه نه میریم تو اسکوپ بالا تر و علی رو چاپ میکردیم.این دستور با این که به نظر جالب میاد ولی باعث مشکلات و باگ هایی میشه در نتیجه Deprecate شده.در اخر در مورد دلیلی که ازین استفاده شده حدسی که میزنم اینه که در قسمت های دیگر که نیاز به مقداری که از x-data گرفتیم داریم میتونه کارمونو خیلی راحت کنه مثلا در مثالمون اینو داشتیم :&lt;ul        
   x-show=&amp;quotopen&amp;quot         
   @click.away=&amp;quotopen = false&amp;quot    
&gt;
         Dropdown Body    
 &lt;/ul&gt;برای x-show که بررسی میکنه که ایا المنت رو نمایش بده یا خیر میخواد با کمک with و قرار دادن مقداری که در x-data داشتیم در data$ میتونیم براحتی شرط رو بررسی کنیم یه همچین چیزی :$data = { open : true };
expression = `open`
var result;
with($data) {     
     result = ${expression};  // result = open = true
}
return result;امیدوارم چیز جدیدی یاد گرفته باشین از این مطلب و در این روز های کرونایی سلامت باشین.</description>
                <category>Bug • باگ</category>
                <author>Bug • باگ</author>
                <pubDate>Tue, 31 Mar 2020 21:35:19 +0430</pubDate>
            </item>
            </channel>
</rss>