<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های khanoom tootfarangi</title>
        <link>https://virgool.io/feed/@ms.tootfarangi</link>
        <description>Backend Developer</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:19:05</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/30664/avatar/14bpb6.png?height=120&amp;width=120</url>
            <title>khanoom tootfarangi</title>
            <link>https://virgool.io/@ms.tootfarangi</link>
        </image>

                    <item>
                <title>چطور بهینه از خانه کار کنیم.</title>
                <link>https://virgool.io/@ms.tootfarangi/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%AA%D8%B1-%D8%A7%D8%B2-%D8%AE%D8%A7%D9%86%D9%87-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-tcnsgzxdixfa</link>
                <description>متاسفانه انتشار ویروس کرونا باعث شد خیلی از شرکت ها به دورکاری رو بیارن و برای اولین بار با چالش های این مدل کار کردن مواجه بشن.حدود دو سالی میشه که من در یک محیط بین المللی که در چند کشور نیرو داره ریموت کار میکنم و با وجود اینکه در بدو ورود من فرهنگ کار ریموت و زیرساخت هاش آماده بود باز هم مدت زمانی طول کشید تا توی این سیستم جا بیفتم و کارایی خودمو بالاتر ببرم.میخوام تجربیاتی که کسب کردم با شما به اشتراک بذارم تا بتونیم با قدرت بیشتری تو این روزها پیش بریم.البته نکاتی که گفته میشه ممکنه برای شرکت های خیلی کوچیک تفاوتی ایجاد نکنه ولی ممکنه یروزی شما هم مثل من تو این شرایط قرار بگیرید یا اینکه شرکتتون گسترش پیدا کنه.همچنین اگر مدیر کسب و کارها هستید بهتره به این روزها به چشم یک فرصت نگاه کنید تا بتونید فرهنگ و زیر ساخت هارو فراهم کنید و در آینده استعدادهایی که قادر به حضور فیزیکی در شرکت شما نیستند رو از دست ندهید و کسب و کارتون رو توسعه بدید.یک پلتفورم انتقال پیام انتخاب کنید.اولین چیزی که لازمه ی کار ریموت هست یک پلتفورم جهت برقراری ارتباط بین کارمندان شماست. امروزه Slack در اکثر شرکت ها برای این منظور استفاده میشه. پیشنهاد من هم همین پیام رسانه. شما در این نرم افزار میتونید یک اکانت شرکتی داشته باشید و در اون channel های متفاوت با دسترسی های عمومی و خصوصی داشته باشید. همچنین قابلیت ارسال پیام بین کاربران به صورت دایرکت مسیج هم وجود داره.تماس تصویری و صوتی هم از دیگر قابلیت های این نرم افزاره.هر تیم یک گروه اسلک مخصوص به خود را داشته باشد.این نکته برای برقراری ارتباط بین تیم ها بسیار مهمه.هر تیم یک گروه عمومی با دسترسی عمومی داشته باشد و همه ی اعضا آن تیم عضو باشند. در کنار آن اگر فردی دیگه با این تیم زیاد سروکار داره میتونه عضو بشه و در جریان کارها قرار بگیره. همچنین اعضا تیم میتونن مسایلی که درگیرش هستند و یا راجع بهش سوال دارند هم اونجا با هم در میون بذارن. حالا چرا این قضیه وقتی همه از خونه کار میکنن مهم تره؟ بذارید با یه مثال توضیح بدم.فرض کنید شما در شرکت هستید سوالی براتون پیش میاد و مراجعه میکنید به مدیر تیم. ایشون طبق اخرین اپدیتش که موقع رد شدن از پشت مانیتور اقای y داره میگه وضعیت اینطوریه که ناگهان اقای ٌd که دو تا صندلی اونورتره مکالمه شمارو میشنوه و میگه نه من دوباره با y بحث کردیم و این قضیه یطور دیگه حل شد. حالا شما ریموت شدین سناریو مشابه رو میگم.آقای x از تیم محصول یه سوال داره طبق عادت به دایرکت اقای z که احتمالا مدیر تیم هست میره. اقای z به اقای y پیام میده, اقای y به دلایلی پشت سیستم نیست. آقای مدیر شروع میکنه به تک تک اعضا پیام میده ببینه کسی از اقای y یا این مسیله خبر داره یا نه و این کار خودش زمانبره. اگر همون اول اقای x مشکلشو تو گروه تیم مربوطه بیان میکرد و اقای d که جوابو میدونست سریع پاسخ میداد خیلی تو زمان صرفه جویی میشد.نکته ی مهم در بالا بردن پرفورمنس کار ریموت دسترسی به اطلاعات بروز و معتبر در کوتاه ترین زمان ممکنه.همچنین بسیار توصیه میکنم که بحث های تصمیم گیری راجع به نحوه ی پیشبرد کار در یک سری مسایل بجای دایرکت مسیج توی این گروه ها انجام بشه چون بعدا اگر کسی بخواد در جریان قرار بگیره به راحتی لینک thread اون گفتگو در اختیارش قرار میگیره بجای اینکه همه ی توضیحات از اول داده بشه.ایمیل فراموش نشود.یه نکته ی مهم دیگه اهمیت ایمیل هاست. در سیستم ریموت اخبار مهم شرکتی, تغییرات بزرگی که قراره اعمال بشه, باگ های مهمی که چندین تیم درون اونها دخیل هستند حتما و حتما باید از طریق ایمیل در دسترس دیگران قرار بگیره چون حجم پیام ها تو اسلک میتونه باعث گم شدن یا نادیده شدن اون پیام ها بشه. اگر بحث های بیشتری پیرامون اون موضوع بود پیشنهاد میکنم یه چنل اسلک موقتا ایجاد شه و نامش در ایمیل قید بشه که اگر اطلاعات بیشتری میخواید به اینجا مراجعه کنید و بعد از بسته شدن اون موضوع میتونید چنل رو هم ارشیو کنید.تعداد زیاد چنل اسلک ممنوع!با اینکه تا اینجا اشاره کردم چنل ها خیلی مهم هستن در نظر داشته باشید که تعداد زیاد اون ها هم میتونه باعث دردسر بشه و ادما بین چنل ها گم بشن و اطلاعات مورد نیازشون رو پیدا نکنن.یک چنل صرفا برای فان.وقتی تیم شما هرروز سرکار اماده میشن و ۹ ساعت کنار همن خیلی وقت ها راجع به مسایل مختلف باهم مراوده میکنن و این باعث ایجاد صمیمیت و حس کار گروهی بین اون ها میشه. شما مسیول نگه داشتن این حس هستید تا کارمندها حس نکنن جدا و تنها افتادن.برای این کار یه چنل عمومی از همه ی بچه های شرکت ایجاد کنید تا بتونن در طول روز چیزای عمومی مثل ادرس داروخونه ای که ماسک داره تا حسی که هنگام اشپزی یا زندگی کنار خونواده دارن یا حتی meme هایی که مرتبطن رو با هم به اشتراک بذارن و اینطوری اندکی بیشتر حس میکنن که کنار همن.کارمندان عزیز صحبت کنید.یه مسیله ی مهم دیگه اینکه در کار ریموت اگر در طول روز فعالیتی در پلتفورم های پیام رسان نداشته باشید تصور میشه که وجود ندارید درحالیکه ممکنه شما بیشتر از یک روز عادی در شرکت درگیر حل مشکل باشید ولی حالا با قیافه ی تمرکز کرده پشت سیستمتون دیده نمیشید.سعی کنید بخشی از گوگل سرچ هاتون رو توی چنل تیمتون بپرسید اینطوری همه متوجه میشن شما درگیر چه مسیله ای هستید و یا اینکه شمارو با راهنمایی بیشتر یا حتی ویدیوکال راهنمایی میکنند و زودتر به جواب میرسید. همچنین اگر سوالی پرسیده میشه و جواب رو میدونید سریعا اعلام کنید و منتظر اجازه نباشید.اگر بعد از باز شدن بحث حس کردید نیاز به بحث طولانی هست یه دایرکت مشترک از همکارهای درگیر ایجاد کنید یا جلسه بذارید. نباید این چنل های عمومی رو خیلی هم شلوغ کرد ولی باید موضوعات در حال اجرا و کلیات آن را تا حد نیاز با کل تیم به اشتراک گذاشت.البته که مدیران هم باید این مسیلرو درک کنند و کسی رو بر اساس سوال هاش قضاوت نکنند. اینجا مقصود اپدیت کردن تیم هست.حرف های غیرضروری در دایرکت.سعی کنید تا حد امکان احوال پرسی روزانرو در چنل های عمومی تخصصی انجام ندید. مستقیم سراغ اصل موضوع برید و درخواست کاریتونو بیان کنید. اینطوری ممکنه بقیه کلافه بشن یا سوال اصلی شما دیده نشه.وضعیت خودتون رو تو اسلک تعیین کنید.میتونید از قسمت پروفایل status خودتون رو تو اسلک ست کنید. مثلا اگر در یک جلسه هستید یا پشت سیستمتون نیستید یا میخواهید مرخصی چند روزه بگیرید status مربوطرو انتخاب کنید تا بقیه از وضعیت شما با خبر بشن. به طور مثال برای وضعیت های گفته شده به ترتیب باید وضعیت های  meeting, away, holidays ست بشه.همچنین بهتره مدت زمان در دسترس نبودنتون رو با هم تیمی هاتون و افرادی که با شما کار میکنن از طریق ایمیل یا چنل های اسلک به اشتراک بذارید.مراقب لحن صحبتتون باشید.وقتی شما کنار هم هستید زبان بدن کمک میکنه احساسات فرد مقابل رو احساس کنید این قضیه وقتی به پیام دادن محدود میشه میتونه دردسر ساز باشه. مثلا شما درخواستتون رو بصورت معمولی بیان میکنید ولی طرف مقابلتون ناخوداگاه با لحن عصبانی اونو میخونه و ناراحت میشه حتی اگر چیزی به شما نگه. پس سعی کنید از کلمات مناسبی استفاده کنید, بیشتر از ایموجی ها استفاده کنید و اگه احساس کردید اون وسط چیزی اشتباه فهمیده شده درنگ نکنید و سریع ویدیوکال کنید.هرروز یک زمانی رو به خوندن پیام ها اختصاص بدید.همه ی موارد بالا وقتی باعث بالا رفتن بازدهی میشه که کل تیم عادت به چک کردن پیام ها داشته باشند. شما حالا از هم دورید و برای اینکه در ارتباط باشید باید روال هارو از طریق پیام ها دنبال کنید.همه ی ما میدونیم که ۹ ساعت مداوم کار کردن خیلی کم پیش میاد و قطعا زمان های خالی برای اینکار وجود داره پس متاسفم هیچ عذری پذیرفته نمیشه.جلسات خیلی مهم تر از قبل هستند.به هیچ عنوان جلسات هفتگی یا روزانرو تعطیل نکنید حتی اگر نکته ی مهمی برای گفتن ندارید دیدن هم تیمی هاتون به شما انرژی میده و حس کنار هم بودن رو حفظ میکنه. همچنین چون ممکنه کیفیت جلسات به هر دلیلی برای همه یکسان نباشه (سرعت اینترنت، فیلترشکن ها، خانواده و عوامل پرت کننده ی حواس) پیشنهاد میکنن هربار یک نفر داوطلب نوشتن خلاصه جلسه بشه و اونرو توی چنل ها شیر کنه تا بقیه بتونن سر فرصت ازش استفاده کنن.در آخر امیدوارم این تجربیات براتون مفید باشه. همینطور زودتر از این شرایط سخت عبور کنیم. خوشحال میشم نظرات و تجربه هاتون از دورکاری رو همینجا با بقیه به اشتراک بذارید.شاد و سلامت باشید :)</description>
                <category>khanoom tootfarangi</category>
                <author>khanoom tootfarangi</author>
                <pubDate>Sat, 29 Feb 2020 17:50:12 +0330</pubDate>
            </item>
                    <item>
                <title>Cryptocurrency به زبان خیلی ساده</title>
                <link>https://virgool.io/@ms.tootfarangi/cryptocurrency-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AE%DB%8C%D9%84%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87-i0pcpt3xvcit</link>
                <description>زود قضاوت نکنیم!مقاله ای که امروز مینویسم قطعا یک مدل خیلی ساده و قابل فهم برای رمز ارزهاست. میدونم که مسايل پشت پرده ی پیچیده تری داره کل این داستان رو میچرخونه ولی دوست داشتم کسایی که حوصله یا وقت خیلی عمیق شدن تو ماجرارو ندارن یه دید کلی از قضیه پیدا کنن.داستان از کجا شروع شد؟از همون اول که بشر مفهوم پول رو ابداع کرد در کنارش و در طول زمان ابزار دیگه ای ایجاد کرد تا هرکسی بدونه تو هر لحظه چقدر پول داره یا اگه این پول و خرج کرده یا سرمایه گذاری کرده حتما جایی ثبت شده.الان ما از جایی به اسم بانک برای این تراکنش ها استفاده میکنیم. یعنی که شما با کارت ملی میری بانک حساب باز میکنی و بعد ازون همه ی اطلاعات حساب شما اعم از برداشت یا گذاشتن پولتون تو حساب رو در اختیار بانک قرار میدید. بانک برای اینکه یه حساب به شما اختصاص بده از مفهوم kyc استفاده میکنه که یعنی know your client!از سال های دور یسری آدم به این فکر کردن که چرا باید یه جایی وجود داشته باشه که همه ی اطلاعات مارو داشته باشه؟ اینطوری میتونه هروقت بخواد حساب مارو بلاک کنه یا حتی از روی اطلاعاتی که در اختیارش گذاشتیم مارو پیدا کنه و بخاطر کار خلافی که داریم میکنیم دستگیرمون کنه!برای اینکه از شر این بانک بدجنس خلاص شیم نیاز به یه شبکه داریم که اطلاعات شخصیمونو در اختیارش نذاریمهمه ی اطلاعات تراکنش ها یک جا جمع نشده باشه که از روی اون دیتا بتونن کاری انجام بدنامن باشه و اگه ما پولی تو اون شبکه داریم خیالمون از بابتش راحت باشیم.چطوری این شبکرو بسازیم؟یسری پروژه های شکست خورده برای ساخت این شبکه ها وجود داشتن چون هیچ کدومشون نتونستن بدون یه سرور مرکزی یا بدون اتصال به بانک این کارو انجام بدن.خانم/آقای ساتوشی کسی بود که ازین پروژه های شکست خورده درس گرفت و تصمیم گرفت بجای اینکه دیتا رو بصورت کلاینت-سرور نگهداری کنه بصورت peer to peer نگهداری کنه. مثل شبکه ی تورنت. یعنی همه ی اطلاعات دست همه ی کاربرا باشه بجای اینکه یک جا جمع بشه و همه درخواست ها به اون سمت بره.حالا برای این کار اومد از مفهومی به اسم دفتر کل استفاده کرد. دفتر کل چیه؟ یه دفتر سه ستونه که ستون اولش کسیه که میخواد پولی رو به حساب کسی واریز کنه.ستون دوم کسیه که میخواد پول رو بگیرهستون سوم مقداری که قراره جابجا بشه.چون من اینجا توانایی کشیدن جدول براتون ندارم از کاما استفاده میکنم. مثلا فرض کنید من به همراه ۳ نفر از دوستام تصمیم میگیریم این شبکرو درست کنیم و من به عنوان سازنده ۵۰۰ تا پول دارم و میخوام به هرکسی ۱۰۰ تا بدم. نکته ای که هست اینکه همه ی ما یه نمونه ازین دفتر داریم و من به ازا هر تراکنشی که انجام میدم بلند داد میزنم که من به فلانی انقدر پول دادم و همه یادداشت میکنن. اینطوری اون مشکلی که همه ی داده ها فقط دست بانک بود حل میشه و الان همه میدونیم هرکسی چقدر پول داره و چه تراکنشی انجام داده. یه نمونه از دفتر کل میتونه اینطوری باشه.from     , to      ,  amountAna       , Sohi  , 100Ana       , Shani, 100Ana       , Joe    , 100ما نمیدونیم Ana, Joe یا هرکسی که اسمش اینجاست کیه و شاید حتی ندیدیمش فقط میدونیم چقدر پول داره و با اون پول تو شبکه چکار کرده. در واقع ما اینجا kyc نداریم.دفتر کل تا کجا ادامه پیدا کنه؟خب حالا فرض کنید ما هزار نفر تو شبکمون داریم اینکه بخوایم یه دفتر داشته باشیم میتونه یکمی دردسر ساز بشه پس قرار داد میبندیم که هر ده دقیقه دفتر کل رو ببندیم و یدونه جدیدش رو باز کنیم. به هر کدوم ازین دفتر کل های کوچولو میگیم یه Block.خب یادتونه گفتیم دوست داریم شبکمون امن باشه؟ پس بهتره بجای اینکه دفترو همینطوری که هست ببندیم قبلش رمزگذاریش کنیم. مثلا تعداد همه ی کاراکترهای توی یه بلاک رو بشماریم و بدیمش به یه تابع رمزگذاری و ازونور یه رشته تحویل بگیریم و این رشترو به عنوان شناسه ی این بلاک نگه داریم.اگه کسی تقلب نکرده باشه تو نوشتنش, همه ی آدما در نهایت باید به یه رشته ی ثابت برسن. پس اینطوری تضمین میکنیم که کسی تقلب نکرده و مثلا آنا به جو ۲۰۰ تا نداده و دقیقا ۱۰۰ تا داده.حالا بلاک یا دفتر کل دوم رو باز میکنیم و مثل قبل تراکنش هارو مینویسیم و سر ده دقیقه میبندیمش. اینبار هم رمزگذاری رو انجام میدیم با این تفاوت که عددی که از بلاک قبل داشتیم بعلاوه ی رشته ی جدید میکنیم. اینطوری هم ادرس بلاک جدید رو داریم و هم ادرس بلاک قبلیو. بهش میگیم block-chainیعنی یه عالمه بلاک که اینطوری به هم chain شدن.Miner کیه؟حتما تاحالا خیلی شنیدین که میگن طرف تو خونش چند تا کامپیوتر گذاشته و ماین میکنه و پول در میاره؟ قصه ی این ماینر ها چیه؟ یادتونه که گفتیم هر بلاک یه آدرس داره؟یه فرمول برای این ادرس داریم اونم اینطوریه کهآدرس بلاک فعلی + یه چیزی که باید به دستش بیاریم = یچیزی که مثلا با ۵ تا صفر شروع بشه.ساده تر بگم فرض کنید شما قراره بگید چه عددی با ۳ جمع بشه که حاصل حتما با ۱ شروع بشه. در این حالت اولین جواب ۷. چون ۷+۳=۱۰ و جواب با یک شروع میشه. کار این ماینر ها اینکه اون عدد (اینجا ۷) رو پیدا کنن تا بتونن بلاک فعلیو ببندن و یدونه جدید باز کنن.چطوری این کارو انجام میدن؟ خیلی ساده شروع میکنن از ۱ تا بی نهایت همه ی عددارو جایگذاری میکنن تا برسن به اون جوابی که میخوان و اولین کسی که به جواب برسه بلاک رو به اسم خودش امضا میکنه و جایزه میگیره. اینکار اوایل ساده بود ولی الان که شبکه پیچیده شده شما باید یه عالمه cpu تو خونه داشته باشید تا قدرت اینو داشته باشه یه عالمه عدد تولید و امتحان کنه.کیف پول چیه؟خب گفتیم که نمیخوایم اطلاعات شخصیمون تو شبکه باشه. پس بجای اسم خودمون که تو اون مثال من Joe, Ana,... بود یه آدرس شخصی برای هر کسی درست میکنیم که فقط خودش توسط اون میتونه به پولش دسترسی پیدا کنه و توی دفتر کلمون هم بجای اسم شخص همون ادرس رو میذاریم.این آدرس هارو برای هر تراکنشی به صورت مجزا تولید میکنیم. پس برعکس دنیای واقعی که کیف پولتون پر از پول واقعیه اینجا کیف پول شما پر از ادرس تراکنش هاییه که داشتید.میشه یه مثال ببینم؟ https://www.blockchain.com/explorer یه سر به اینجا بزنید تا دفتر کل, ادرس کیف پول ها و اسم ماینر هارو ببینید.</description>
                <category>khanoom tootfarangi</category>
                <author>khanoom tootfarangi</author>
                <pubDate>Sun, 20 Oct 2019 16:49:39 +0330</pubDate>
            </item>
                    <item>
                <title>چطور دیباگ کنیم؟!</title>
                <link>https://virgool.io/@ms.tootfarangi/%DA%86%D8%B7%D9%88%D8%B1-%D8%AF%DB%8C%D8%A8%D8%A7%DA%AF-%DA%A9%D9%86%DB%8C%D9%85-x7x2v5yhsnyk</link>
                <description>امروز یه باگ ریپورت داشتیم که ازون بدقلق هاش بود که هنوزم موفق نشدم دلیلشو پیدا کنم. برا همین تصمیم گرفتم تجربیات دیباگم رو باهاتون به اشتراک بذارم و نظراتتونو بدونم. مهم نیست شما برنامه نویس حرفه ای باشید یا جونیور. دیباگ کردن چیزیه که رو پیشونی ماها نوشته شده پس بریم که تو این پست روش های خودمو براتون بگم و از شما روش های جدیدتونو یاد بگیرم. دیباگ یعنی چی؟به فرآیندی که طی آن شما اقدام به شناسایی رفتار کد در حالت های مختلف میکنید تا در نتیجه اشکال سیستم را پیدا کرده یا به سیستم تسلط بیشتری پیدا کنید دیباگ میگوییم (نقطه سر خط)چرا دیباگ میکنیم؟ازونجایی که ممکن بود کسایی این پست رو بخونن که علاقمند به برنامه نویسین یا تازه میخوان شروع کنن, بهتره اول بگیم دیباگ کردن تو کجای قصه قهرمان ما میشه و نجاتمون میده.دیباگ کردن میتونه برای هدف های مختلفی انجام بشه و میخوام چند تا مثال براتون بزنم.یکیش اینکه شما رفتار سیستم رو میشناسید و میخواید باگ ها رو پیدا کنید.دومیش اینکه شما میخواید رفتار سیستم رو کشف کنید.سومیش هم اینکه شما میخواید یک زبان رو یاد بگیرید. به نظر من دیباگ کردن یک کد به زبان جدید و فهمیدن رفتارش کمک خیلی زیادی به سرعت یادگیری شما میکنه.البته که همه ی این سه حالت میتونه باهم انجام بشه ولی حالا برا روشن شدن قضیه چند تا مثال با جزئیات براتون میگم :قرار هست یه قسمت جدید به کد اضافه کنیم یا یه پروژه جدید استارت بزنیم (رفتار سیستم را میشناسید)فرض کنید شما تازه یه پروژرو استارت زدید یا اینکه میخواید یه ویژگی جدید به کدهای قدیمیتون اضافه کنید. شما باید یک قالب کلی از کدتون رو تو ذهنتون بیارید مثل نوشتن فیلم نامه, اجزا و نقش ها کجا باشن, وظیفه ی هرکسی چیه و کجا باید وارد عمل بشه. یک فیلم نامه ممکنه بارها و بارها بازبینی بشه پس نویسنده باید بدونه کدوم اتفاقا کجا میفته و چه پیامدهایی داره. کد شما هم همینطوره. وقتی اولین بار بعد از تموم شدن کد ازش اجرا میگیرید در اکثر مواقع با ارورها یا خروجی های نامتعارف روبرو میشید ( اگه نشدید طبق مثل هرچیزی که آسون حل میشه غلطه به کارتون شک کنید یا اینکه تبریک میگم شما ابر قهرمان امروز هستید) اینجاس که باید وارد عمل بشید و با دیباگ کردن مشکل کارتون رو پیدا کنید.ما ویژگی جدید نمیخوایم! فقط میخوایم کد فعلیمون درست کار کنه (رفتار سیستم را میشناسید)بعضی مواقع خطاهایی توسط کاربران سیستم یا خود برنامه نویسا تو روند اجرای یه دستور مشاهده میشه که اسمشو گذاشتن باگ. این باگ ها توسط خود شما یا همکارانتون تولید شده (بله حقیقت تلخه) و حالا شما باید از گسترش این ویروس خطرناک جلوگیری کنید. اینجا هم ازون مواقعیه که دیباگ کردن به دادتون میرسه و همرو خوشحال میکنه (به شرطی که حل کردن یه باگ موجب ایجاد باگ دیگه ای نشه)مهندسی معکوس! (شناسایی رفتار سیستم یا یادگیری زبان جدید)دلیل این مهندسی معکوس دو حالت بیشتر نیستشما میخواید مثل کشور دوست و همسایه ی چین یه محصولو کپی کنید.شما پول دادید یه محصولو خریدین یا از یک محصول رایگان استفاده میکنید ولی همه ی نیازهای شمارو برطرف نمیکنه و لازم دارید رفتار سیستم رو در مقیاس کوچیک شناسایی کنید و اونو بسته به نیازمندی هاتون تعمیم بدید.دیباگ کردن بدین صورت اتفاق میفته که شما با یکی از دستورهای سیستم شروع میکنید و حین اجرا شدنش چشم از مانیتور برنمیدارید تا بفهمید دقیقا چه اتفاقی داره میفته. بعد همونو با یه زبان دیگه کپی میکنید (چین) یا اینکه اون رفتارو توسعه میدید.چطور دیباگ کنیم؟خب بعد ازینکه صغری کبری هامو چیدم بهتره برم سراغ هسته ی اصلی مطلب.من بیشتر وقتمو تو بک اند گذروندم پس طبیعتا راه حل هایی که بلدم هم بیشتر محدود میشه به این حوزه. یدونه تجربه کوچیک تو فرانت اند دارم که اونم میگم.از IDE استفاده میکنید؟ تبریک میگم شما شش هیچ جلویید.IDE debuggerیک راه خیلی خوب که بهتون کمک میکنه کدتون رو دیباگ کنید استفاده از یک محیط توسعه هست(سعی کردم معادل فارسی برای IDE پیدا کنم و همین به ذهنم رسید). این محیط امکاناتیو برا شما فراهم میکنه(تب debug اون بالا) که میتونید یک قسمت از کد رو نشان گذاری (breakpoint) کنید و کدتون رو ران کنید. کلید های میانبر زیادی هستن که این وسط به کمک شما میان. میتونید باهاشون هر متغیریو که دلتون میخواد به صفحه اضافه کنید و ببینید تو هر لحظه چه مقداری دارن, میتونید انتخاب کنید نشانگر خط به خط جلو بره یا اینکه از روی توابع یا حلقه ها بپره(step over, step into, step...).تکنیک های این قسمت :تو حلقه ها و توابع فراخوانی شده اصولا کار حوصله سر بریه ولی بهتره تو بار اول یک دور کامل کل حلقه یا تابع رو برید تا مطمئن شید چیزی اون وسط نمیترکه.سعی کنید متغیرهای اساسی و اونهایی که حدس میزنید دارن به شما اسیب میزننو مانیتور کنید. اینکه از الف تا ی هرچی دارید نگاه کنید ممکنه باعث شه چشمتون خطای اصلیو نبینه.اگر بعد از تموم شدن یک پارت دیباگ به نتیجه نرسیدین سعی کنید ورودی هاتون رو عوض کنید و از مقادیر غیر قابل پیشبینی استفاده کنید. مثلا وقتی انتظار دارید مقدار یه متغیر یک عدد مثبت باشه, اعداد منفی یا کاراکترهایی یحتمل مثل (+,.) که ممکنه کاربر اشتباها وارد کرده باشه رو هم امتحان کنید.سعی کنید بهترین جا برای گذاشتن breakpoint ها رو انتخاب کنید. اینکه از خط اول کد تا خط دویست رو مانیتور کنید ممکنه حوصلتونو سر ببره. اول نقاط حساسی که حدس میزنید اشکال ازونجاس رو ببینید بعد یکم بالاتر و پایین ترشون و در نهایت اگه به هیچ جوابی نرسیدین لپ تاپو خاموش کنید برید خونتون.من از تکست ادیتور ها استفاده میکنم!بعله خود من علاقه ی عجیبی به ادیتور ها دارم و سرم درد میکنه الکی. ادیتور ها توانایی اینو دارن که مثل حالت قبل نشان گذاری بشن ولی اصولا کار سخت و زشت و حوصله سربریه و من که بیخیالش شدم. اولین باری که من از IDE اومدم روی ادیتورها سوال بزرگی که تو ذهنم بود این بود که حالا من چجوری بفهمم چی چه مقداری داره و چی کار نمیکنه. برا همین این دوتارو از هم جدا کردم چون به عنوان جونیور دولوپر بعضی وقتا ادم از شنیدن بعضی اسما پنیک میکنه و بهتره بدونه حالا باید چکار کنه.بهترین حالت برای دیباگ کردن با ادیتور استفاده از دستور print به زبانی هست که باهاش کد میزنید. البته این روش تو حالت های دیگه هم کارایی داره و در نهایت شما انتخاب میکنید چکار کنید.تکنیک های این قسمت :شما ابتدا باید ببینید خروجی اشتباه محصول دست کدوم فایله بعد تابع مورد نظر رو اونجا پیدا کنید و سعی کنید هرجا که حس میکنید مشکلی هست مقدار متغیر یا یک مقدار فرضی رو چاپ کنید.شما کد طولانی دارید که اجرای بعضی قسمتاش زیاد طول میکشه. بهتره بعد از تموم شدن چاپ مقادیری که میخواید از دستورهای exit یا die تو زبون خودتون استفاده کنید (به شرطی که مطمئنید اجرای بقیه قسمت ها رو رفتاری که میخواید دیباگ کنید تاثیری نداره)ممکنه شما خروجی های دیگه هم رو صفحه داشته باشید پس باید یطوری خروجی های دیباگتون رو ازشون جدا کنید. اگر تنبل نیستید میتونید از یه عبارت استفاده کنید مثلا &#x60;FOR DEBUG&#x60; من تنبلم و همیشه از ‍‍‍&#x60;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#x60; قبل از چاپ استفاده میکنم.چیزی که خیلی مهمه اینکه شما یطوری ترتیب برنامرو تو خروجیتون نشون بدید. مثلا اگر میخواید بدونید مقدار یک متغیر قبل و بعد از اجرای یک تابع چقدره باید بگید.‍&#x60;BEFORE FUNCTION VALUE IS&#x60;&#x60;function()‍&#x60;&#x60;AFTER FUNCTION VALUE IS&#x60;چون صرفا چاپ مقدار متغیر نشون نمیده که کجای برنامه این مقدارو داشته.یه وقتایی ممکنه یه تابع کوچیک داشته باشید و اصلا متغیر خاصی برای چاپ مد نظرتون نباشه. اینجور مواقع بهتره بعد از هر خط کد یه عبارت ساده چاپ کنید. مثلا اگر من یه تابع ۵ خطی داشته باشم بعد از هر خط اینطوری چاپ میکنم.debug 1debug 2debug 3debug 4debug 5بعد از اجرا بهم خوردن ترتیب اجرا یا چاپ نشدن بعضی مقادیر کمکتون میکنه متوجه شید کجا مشکل داره. مثلا من همین امروز ازین روش استفاده کردم و فهمیدم با یه ورودی خاص وارد قسمت پنجم نمیشم و یچیزی درست اجرا نمیشه.sequential debugفرانت اند رو چطوری دیباگ کنیم؟من به عنوان یه جونیور فرانت اند دولوپر تنها راهی که بلدم اینکه روی صفحه کلیک راست کنم. گزینه ی inspect رو بزنم و اونجا اگر چیزی مرتبط با html باشه تگ هارو چک کنم و اگر مربوط به جاوا اسکریپت به تب console بریم و اونجا دستور console.log() رو با هر متغیری که میخواید فراخوانی کنید تا ببینید کجای کار مشکل داره.باگ رو پیدا کردم, حالا چکار کنم؟فرض کنید شما یک پزشک هستید که موفق شدید عفونتی رو که در بدن بیمارتون وجود داره شناسایی کنید حالا اولویتاتون چیا میتونه باشه؟سریعا جلوی رشد عامل عفونت (باگ) رو بگیرید تا بیشتر بدن بیمارتون ضعیف تر نشه.بقیه ی قسمت های مختلف بدن رو که به عضو مشکل دار وصل هستند چک کنید و مطمئن بشید اونا قبلا توسط اون ویروس آسیب ندیدن. در دنیای کامپیوتر یک باگ ممکنه برای مدتی اطلاعات غلطی رو تولید کرده باشه و وارد دیتابیس شما کرده باشه. باید اونارو پیدا کنید و بازسازی کنید.به بیمارتون توصیه هایی بکنید و بدنشو مقاوم تر کنید تا جلوی ویروس های مشابه گرفته بشه. همونطوری که هزاران هزار باکتری و ویروس وجود داره و آدم هارو تهدید میکنه و ما هم ازشون خبر نداریم, خیلی باگ ها هم وجود داره که ما ازشون خبر نداریم ولی بهتره بعد از پیدا کردن یکیشون سیستم رو در برابر خطر مشابه ایمن کنیم. هر باگ میتونه یه واکسن باشه که شمارو یبار به دردسر بندازه و بعد تا اخر عمر از دستش راحت بشید. سعی کنید حتما تست نویسیرو شروع کنید تا سیستمتون رو قوی تر کنید. اگر حس میکنید تیم های دیگه مسبب تولید این وضعیت شدن حتما باهاشون صحبت کنید. حتی اگر یک کمپانی بزرگ هستن و لازمه شما یک ایمیل طولانی و اداری براشون بنویسید!خب الان دقیقا چکار کنم؟هیچی دیگه تموم شد کامپیوترتو ببند برو یکم ورزش کن عزیزم :)</description>
                <category>khanoom tootfarangi</category>
                <author>khanoom tootfarangi</author>
                <pubDate>Sun, 21 Jul 2019 17:02:44 +0430</pubDate>
            </item>
            </channel>
</rss>