<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد صبائیان</title>
        <link>https://virgool.io/feed/@msabaeian</link>
        <description>برنامه نویس، دنبال یادگیری بیشتر، بیشتر و بازم بیشتر! بیشترین راه ارتباطی که چک میکنم mohammad.sabaeian@gmail.com هست :)</description>
        <language>fa</language>
        <pubDate>2026-06-10 16:07:30</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1119/avatar/teP1bO.png?height=120&amp;width=120</url>
            <title>محمد صبائیان</title>
            <link>https://virgool.io/@msabaeian</link>
        </image>

                    <item>
                <title>از کجا برنامه نویسی رو شروع کنیم؟</title>
                <link>https://virgool.io/@msabaeian/%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%DB%8C%D9%85-dmgdyutivmbr</link>
                <description>از کجا برنامه نویسی رو شروع کنم؟این چند وقته که داشتم توی اینستاگرام و کانال های تلگرام میگشتم با یه یه پدیده جالب روبرو شدم، فروشندگان موفقیت به برنامه نویسی هم اومدن، هرجایی یسری آدما هست که ازین نوع حرفهای «چطور تو کمتر از یک ماه برنامه نویس بشیم» یا «دوره فوق تخصصی شروع برنامه نویسی مناسب بازار کار» یا «چطور با برنامه نویسی پولدار بشیم» و ... میزنن و تقریبا انتهای حرف همشون هم میرسه به اینکه پکیج های من (همون شخص) رو بخرید و توی مدت زمان کوتاهی شما از بزرگان برنامه نویسی هستید، اگر میخواین یه راهی برای دور ریختن پول و اتلاف وقتتون داشته باشید به دیدن پست هاشون ادامه بدید و این صفحه رو ببندید ولی اگر خسته شدید ازین چرندیات بیاین با هم این مسیرو بررسی کنیم :)برای شروع اشاره میکنم به یه حرفی که معمولا بین مردم جا افتاده اس و معلوم نیست از کجا اومده:  « برای برنامه نویسی باید ذهن خیلی خفنی داشت و ریاضیات قوی لازمه! » سوال اینه که ایا این واقعا درسته؟ جواب: خیر، یه ذهن با ضریب هوشی بالا و یا ریاضیات قوی در بعضی از بخش های برنامه نویسی بدرد میخوره و ممکنه شمارو جلو بندازه اما این همه ی ماجرا نیست، مثلا اگر طراح وب بشید تقریبا 95% سایت هایی که میبینید اصلا نیازی به ریاضی ندارن، اون 5% هم نمونه های خیلی خاص هستن که احتمالا خواستن شکل های غیر مرسوم ایجاد کنن، لطفا این حرف رو لطفا از ذهنتون پاک کنید، برنامه نویسی مثل همه ی رشته ها و کار های دیگه زیر رشته های زیادی داره، توی خیلی از اینا ریاضی بیشتر از جمع، تفریق، ضرب و تقسیم نیست و البته توی تعداد زیادیشون هم ریاضی خوبی لازمه، یادتون نره که ریاضی قابل یادگیریه ولی اینطور نیست که شما اگر ریاضیتون خوب نیست دست بکشید و احساس کنید جایی ندارید تو این شغل باحال.بیاین به یسری سوالات رایج دیگه هم جواب بدیم و ببینیم واقعیت چیه:ایا برای برنامه نویس شدن سیستم خیلی خفن و چند تا مانیتور و اینا لازمه؟خیر، بسته به کاری که میخواین انجام بدین (چه نوع برنامه نویسی شدن) که در ادامه مقاله توضیح میدم باید سیستم داشته باشید، خیلی از کارها به سیستم های آن چنانی و خفن نیاز ندارن. برنامه نویس ها همه آدم های منزوی و درون گرایی هستن؟یکی از سوالای بامزه :) برنامه نویس ها مثل همه آدمای جهان هستن، یعنی آدمن و ویژگی های شخصیتی دارن؛ بعضی درونگرا، بعضی برونگرا، بعضی حواس پرت و بعضی ها هم حواس جمع، اینا رفتار ها و ویژگی های شخصی هستن که در افراد مختلف متفاوتن.آیا حتما باید کار کردن با ویندوز (یا هر سیستم عامل دیگه ای) رو بصورت حرفه ای بلد باشم؟نه، حرفه ای لازم نیست، در حد کار کردن ساده هم بلد باشید کافیه (روشن خاموش کردن، ریستارت، نصب برنامه، درست کردن پوشه، تکون دادن موس و صد البته نوشتن با کیبورد)به من گفتن اگر کار کردن با لینوکس بلد نباشم نباید شروع کنم، این درسته؟این ازون سوالا بود ها، گنو/لینوکس سیستم عامل خوبیه و خیلی جاها به کار میاد، بعضی جاها هم بکار نمیاد، بین بعضی همکارای ما تعصب خاصی روی این سیستم عامل هست (و خیلی هم شوخی میکنن با هم)، سخت نگیرید، اگر دوست داشتید میتونید یادش بگیریدآیا میشه برنامه نویسی رو توی یک ماه تموم کنم و شروع کنم پول درآوردن؟ بستگی داره چه پولی مد نظرتون باشه، میشه ولی قطعا شما یک ماهه وارد شدید و پروژه های بزرگ که هزینه های بهتری میدن رو نمیتونید بگیرید، نه تجربه کافی دارید و نه مهارت لازم رو، همینطور کسی شمارو نمیشناسه، این یه سوال ذهن منحرف کنه، بهتر بگم یه سوال بازاریابیه، به این حرفا که به شما میگن گوش ندید، شروع کنید و تلاش مستمر داشته باشید، بعد از مدتی کارهای کوچیک کوچیک براتون میاد، شرکت های کوچیک استخدام میشید و به مرور به شرکت ها و پروژه های بزرگ هم میرسین، اینکه چقدر طول میکشه تا به پول درآوردن برسید کاملا به خودتون بستگی دارهبرنامه نویسی رو از کجا شروع کنم پس؟ بریم ادامه متن رو بخونیمیه زبان مناسب برای خودتون انتخاب کنیدهمونطور که گفتم مثل همه کارهای دیگه اینجا هم شاخه های تخصصی و مختلفی داره، به عنوان مثال خلبانی رو در نظر بگیرید، اگر شما بخاین از یه شخص خلبان اطلاعات بیشتری به دست بیارید میپرسید خلبان چه هواپیمایی هستید؟ جنگی؟ مسافربری؟ باربری؟ یا اصلا اگر هر کدوم هستید چه مدل از هواپیما هاشون رو بلدید؟ برنامه نویسی هم همینه، کلی هم زبان مختلف وجود داره، بعضی هاشون خیلی محبوبن بعضی هاشون کمتر طرفدار دارن، بعضی اصلا در دسترس همه نیستن (درون شرکتی)، بنظرم چون شروع کارتون هست طبیعتا سخته که خودتون انتخاب کنید چه زبانی کار کنید، اگر من بگم برید Python یا JavaScript یا هر زبان دیگه شما قطعا نمیدونید اینا چی هستن و کجاها بدرد میخورن، بهتره برای شروع ببینید چه کاری (حوزه ای) دوست دارید انجام بدید، مثلا دوست دارید برنامه برای گوشی های اندروید بنویسید؟ یا سایت درست کنید؟ یا برنامه های دسکتاپ (ویندوز، لینوکس و غیره) هر کدوم از اینا رو میشه با زبان های مختلفی انجام داد، حتی از بعضی زبان ها میتونید توی جاهای مختلف استفاده کنید. پیدا کردن این حوزه و زبان کار سختی نیست، اگر سوالی داشتید تو انتخاب تو بخش کامنت ها بپرسید، اگر دانش کافی داشتم حتما راهنمایی میکنمکدوم بخش بهتره؟وقتی از افراد این سوال بپرسید به جوابای مختلفی میرسید، از نظر طراحی وب بهتره، نظر یسریا روی موبایله، یا هر بخش دیگه ای، علت هم اینه که هر شخص با توجه به تجربه خودش به این سوال شما جواب میده، شما ممکنه یه برنامه نویس موبایل پیدا کنید که از درآمدش راضیه و به شما بگه حتما موبایل، یا برنامه نویس وب ناموفقی پیدا کنید و بگه که اصلا سمت وب نیاید! حرف ها خیلی متناقضه، البته آمار های کلی ای هم هست که کمک میکنه ولی نهایتا بهترین کسی که میتونه انتخاب کنه خود شما هستید، من فقط برای شروع دو تا توصیه میکنم بهتونیه چیزی شروع کنید که سریعتر از بقیه بتونید جواب بگیریدعلاقه داشته باشید بهششاید شما سرچ کنید و لیست درآمد های مختلف رو ببینید و توی اون لیست چشمتون بخوره به ++C و بگید به به، عجب درآمدی! درست هم هست ولی باید توجه داشته باشید یادگیری این زبان و نتیجه رسیدن یکم چالشی تره، اصولا میگیم Learning curve دشوار تری داره، این به این معنی نیست که شما نمیتونید یاد بگیرید و حرفه ای بشید، نه اصلا، فقط منظور اینه برای رسیدن به نتایج دلخواه و برنامه های واقعی و در نهایت درآمد یذره کارتون بیشتر طول میکشه و راستشو بخواین برای تازه کار ها دیدن نتیجه کار خیلی مهمه، نتیجه و دستاورد باعث میشه شما لذت ببرید و علاقه و پشتکارتون هم بیشتر بشه، اینم بگم خیلی سخت نگیرید برای شروع، توی زندگی خیلی اوقات اتفاق میوفته که زبانتون رو عوض کنید، یادگیری رو شروع کنید و با توجه به شرایط خودتون یه بخش رو انتخاب کنید.نظر شخصی من اینه که علاقه یکی از مهم ترین دلایل توی یادگیری هست، شاید وقتی بررسی کردید دیدید درآمد برنامه نویسی موبایل الان بهتر از وب هست (این یک مثاله صرفا) ولی شما از وب بیشتر خوشتون میاد، یعنی اگر یک برنامه موبایل درست کردید به اندازه ای که وبسایت درست کنید لذت نمیبرید، پیشنهاد من اینه کاری رو که دوست دارید انتخاب کنید، وقتی مفاهیم کلی برنامه نویسی رو یادگرفتید و ذهنتون اون شکل کلی رو گرفت عوض کردن سخت نیست، من یکلی دوست برنامه نویس دارم که از چند سال پیش تا الان بارها کارشون عوض شده، برای یادگیری لذت بیشتر بردن یکی از مهم ترین مسائله، از من گفتن بود.منابع آموزشی خوب پیدا کنیداز کسایی که به شما میگن من فلانی هستم، یکی از موفق ترین برنامه نویسان، کتاب دارم، سالهاست اینکارو میکنم و اگر دوست دارید موفق بشید فقط کافیه منو دنبال کنید و فقط از آموزش های من استفاده کنید دوری کنید، این افراد میخوان با فروختن موفقیت به شما خودشون موفق بشن، هر شب با شما لایو میزارن، پکیج های آموزشی خودشونو فقط قبول دارن و خیلی اوقات هم بقیه زبان ها رو مسخره میکنن و روی زبانی که خودشون تدریس میکنن تعصب خاصی دارن، یه مدت کار میکنن روی اینستا/سایت/یوتیوب و غیره و در نهایت یه دوره چند میلیونی میزارن و به درآمد مطلوبی برای خودشون میرسن، ببینین من منظورم افرادی نیست که واقعا برنامه نویسن و وقت آزاد گیر میارن و دوره میزارن، منظورم برنامه نویسانیه که کارشون آموزش برنامه نویسی هست قطعا کسی که برنامه نویس باشه و کار داشته باشه خیلی وقت نمیکنه هر روز پست بزاره و مطلب بزاره و لایو برگزار کنه، خیلی از برنامه نویس ها دوست دارن دوره بزارن آموزش بدن ولی در نهایت این یک کار تفریحی در وقت آزادشونه و کار اصلیشون نیست، پس گول نخورید لطفا.چطور منابع آموزشی خوب پیدا کنیم؟پیدا کردن آموزش ویدئویی، متنی یا مقاله کار سختی نیست، آموزش های پولی یا رایگان هم انگلیسی هست و هم فارسی، پیشنهاد اصلی من انگلیسیه ولی اگر زبانتون در اون حد خوب نیست با فارسی شروع کنید و حتما به فکر تقویت زبان انگلیسی هم باشید، خیلی به کارتون میاد. یادتون باشه هرکس یه سبک آموزشی داره، بعضی ها از آموزش دیدن لذت میبرن و بعضی ها از مقاله خوندن، پس روش مخصوص خودتون و چیزی که ازش لذت میبرید رو انتخاب کنید و البته به یه منبع وابسته نباشید، از منابع مختلف استفاده کنید و سعی کنید از هر آموزشی یک نکته بردارید. یکی از بهترین راه های یاد گرفتن برنامه نویسی هم انجام پروژه های کوچیک و تستی برای خودتون هست، معمولا پروژه ای که خیلیا تمرینی باهاش شروع میکنن ساختن یه Todo (وظافت) یا درست کردن یه ماشین حسابه (بسته به نوع و کارایی زبان شکلشون فرق داره یا ممکنه توی بعضی زبان ها اصلا کار درستی نباشه) ولی کلی تست پروژه های بامزه میتونین برای خودتون تعریف کنید، مهم اون تجربه و چالش هاییه که باهاشون مواجه میشید و یاد میگیرید.حواستون به خرج کردنتون باشهمنظورم از خرج کردن هم مالی هست و هم اینترنت، لازم نیست هر دوره ای دیدید بخرید یا اگر رایگان بود سریع دانلود کنید، داشتن آموزش و دوره های متفاوت باعث سردرگمی میشه و در نهایت هیچکدوم دیده/استفاده نمیشه، این موضوع در بعضی افراد هم ممکنه پیش نیاد ولی پیشنهاد میکنم یه دوره انتخاب کنید و کامل ببینید و بعد سراغ بعدی برید، یا نهایتا دو دوره همزمان ببینید، بهرحال هرطور خودتون راحت ترید ولی مراقب باشید که یوقت یه پوشه کامل آموزش داشته باشید اما چیزی بلد نباشید.چقدر طول میکشه تا به پول برسم؟ اصلا تو این شغل پول هست؟خیلی سوال کلی ای هست، بسته به زبانی که انتخاب کردید و تلاش خودتون این زمان تعین میشه، ممکنه کسی رو بشناسید که 2 ساله کار میکنه ولی هنوز درآمد نرسیده، ممکنه کسی باشه که 6 ماهه کار میکنه و درآمد داره، ولی یه بازه معقول معمولا بین 6 ماه تا یکسال اگر در مسیر درست، در وقت درست، و بصورت مستمر ادامه بدید قطعا به درآمد هم میرسید، این زمانی که گفتم برای درآمد های بالا نیست، یه درآمد معقول و درآوردن خرج زندگی منظورمه. به موقیت جغرافیایی هم بستگی داره، اگر تهران یا شهرای بزرگ ایران باشید موقعیت های کاری مختلفی چه برای کار اصلی چه برای کارآموزی هست، شهر های دیگه هم ظرفیت های خاص خودشونو دارن، شهر صرفا میتونه سرعت بده اما همه ماجرا نیست، شما به اینترنت و یک سیستم نیاز دارید.در مورد سوال دوم باید بگم بله، برنامه نویسی شغل خوبی برای زندگیه و مثل همه شغل های دیگه درآمد های مختلفی داره، از ماهی 800ت تا ماهی 50 میلیون رو من به چشم دیدم (و مطمئنا بالاترش هم هست)، عجله نکنید، ادامه بدید و میرسید.شروع کنید و خسته نشیدبرنامه نویسی یه مهارته و مثل هر مهارت دیگه ای نیاز به تلاش مستمر و تمرین و وقت گذاشتن داره، اگر شما روزی نیم ساعت برای یادگیری وقت بزارید در طول سال بیشتر از 180 ساعت میشه، اگر شما 180 ساعت درباره چیزی خونده باشید و تمرین کرده باشید قطعا یه فرقی بین شما و شخصی که کاری نکرده هست، هرچقدر این زمان رو بیشتر کنید نتیجه بیشتری میگیرید، یه مسیر درست انتخاب کنید و حتی اگر به جایی هم رسیدین بازم به یادگیری ادامه بدید، همیشه برای یادگیری و دانش بیشتر و در نتیجه موفقیت بیشتر و خوب طبیعتا پول بیشتر مطالب هست.پیشنهاد من برای انتخاب زبان و حوزه چیه؟راستش توی این زمینه و در جواب این سوال من معمولا پیشنهادم طراحی وب با HTML و CSS ، چرا؟ بنظرم زودتر میشه به نتیجه های اولیه ای رسید و یسری چیزای کلی هم یادمیگیرید، از باقی دوستام هم که میپرسم خیلی هاشون پایتون رو پیشنهاد میکنن، پیشنهادم اینه طبق همون حرفی که زدم با علاقه انتخاب کنید، یکم که راه افتادید میتونید عوض کنید.دوره های خوب پیشنهادی:دوره رایگان سایت وی لرندوره پایتون جادیدوره درک برنامه نویسی با جادیدوره طراحی الگوریتم (پایتون)زبان انگلیسیتون رو «لطفا» تقویت کنیداینو یبار گفتم ولی چون بنظرم تاکید بیشتر لازم داره یاداوری میکنم، روی زبان کار کنید، خیلی به کارتون میاد و شمارو جلو میندازه، انگلیسی زبان بین المللی هست و شما میتونید کلی آموزش و راهنما و مقاله های مختلف پیدا کنید، تقریبا همه زبان های جهان هم Document (راهنمای) خودشون رو به انگلیسی ارائه میدن.صحبت نهاییاین مطلب مجموعه ای از تجربه های شخص منه، هیچ قانون و تاکیدی بر درستی حرف های من نیست، اگر مطلب رو دوست داشتید ممنون میشم لایک کنید و اون رو با دیگران هم به اشتراک بزارید. اگر سوال داشتید من درخدمتم چه در بخش کامنت ها و چه از طریق راه های دیگهموفق باشید :)</description>
                <category>محمد صبائیان</category>
                <author>محمد صبائیان</author>
                <pubDate>Wed, 05 Aug 2020 16:06:33 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه localhost خودمون رو به اشتراک بزاریم؟</title>
                <link>https://virgool.io/@msabaeian/%DA%86%DA%AF%D9%88%D9%86%D9%87-localhost-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%B1%D9%88-%D8%A8%D9%87-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%D8%A8%D8%B2%D8%A7%D8%B1%DB%8C%D9%85-ohewnbp1asmm</link>
                <description>فرقی نمیکنه فرانت کار با React, Vue و Angular و .. باشید یا سمت بک و Node,Pyhton و .. در تیم های برنامه نویسی همیشه این اتفاق میوفته که موقع توسعه روی localhost کار میکنیم و بقیه تیم لازمه به سرور لوکال ما request بزنن و داده هارو بررسی و کارایی کد مارو تست کنن، مخصوصا  در پروژه هایی که server-side و clinet-side رو افراد مختلفی میزنن و لازمه در لحظه request و response ها با هم چک بشن که اگر ایرادی هست رفع بشه و بعدش روی سرور production بفرستن بالا، یکی از راه های که معمول اینه که ایپی (ip) همو پیدا میکنیم و با دست کاری فایروال و این داستانا به همدیگه وصل میشیم، هرچند هممون میدونیم اینکار اشتباهه و مشکلات امنیتی برامون به وجود میاد و تازه اگر به یک شبکه اینترنت هم وصل نباشیم و ریموت باشیم کار سخت تر میشه و لازم میشه port forwarding هم انجام بدیم، برای رفع این دسته از مشکلات یسری ابزار ها وجود داره که یکی از بهترین هاشون ngrok هست و در این مقاله سعی دارم خیلی ساده باهاش کار کنیم.برای شروع از طریق این لینک نسخه مربوط به سیستم عامل خودتون رو دانلود و نصب کنید، خوشبختانه ngrok از همه سیستم عامل ها و معماری و توزیع هاشون پشتیبانی میکنه و از این نظر مشکلی نداریم.برای ویندوز شما به CLI اون دسترسی دارید و میتونید هرکجا که خواستید یک cmd &#40;یا powershell&#41; باز کنید و از ngrok استفاده کنید، برای لینوکس شما حتما باید در پوشه ای که فایل ngrok هست باشید، برای حل این مشکل میتونید آدرس اون رو به alias های خودتون اضافه کنید، برای این کار ترمینال رو باز کنید (ctrl+alt+t) و:vim .bash_aliasesو در اتهای فایل این خط رو اضافه کنید (لازمه بگم در vim قبلش i رو بزنید؟)alias ngrok=&#039;{$HOME}/Tools/ngrok-stable-linux-amd64/ngrok&#039;این آدرس محل قرار گرفتن فایل هست که شما باید آدرس فایل خودتون رو جایگزین کنید(از متغیر HOME هم در ابتدای دستور استفاده کردم که اگر در آینده سیستم رو عوض کردم یا اسم کاربریم تغیر کرد این دستور همچنان کار کنه)ذخیره کنید (:wq) و ترمینال رو ببندین و دوباره باز کنید که تغیرات اعمال بشه (البته میتونید از source .bashrc هم استفاده کنید که نیازی به باز و بسته کردن دوباره نباشه)فرض من بر اینه که شما vim رو نصب دارید، اگر ندارید میتونید با هر ابزاری که خودتون راحت تر هستید این کار رو انجام بدید و در عمل قطعا فرقی نمیکنهبعد از نصب یک پروژه ران کنید، مثلا من یک پروژه node رو روی پورت 5000 خودم start کردم، کد های فایل من به این صورت هست:و با دستور node index.js این فایل رو اجرا میکنم و حالا در localhost:5000/ من میتونیم این نتیجه رو ببینیم:حالا برای اینکه این آدرس رو در دسترس هرکسی که لازمه قرار بدیم کافیه بنویسیم:ngrok http 5000که خروجی زیر بهمون نشون داده میشه:و اون url بخش forwarding رو میدیم به هرکسی که خواستیم تا به لوکال هاست و پورت 5000 ما وصل بشه، به همین راحتی :)توجه داشته باشید شما میتونید هر نوع پروژه ای که روی پورتی از لوکال هاست شما بالا قرار داره رو به اشتراک بزارید، از پروژه های Front گرفته تا Back و یا حتی دیتابیس و ...، فقط کافیه دستور لازم رو بنویسید و لینکش رو به بقیه بدین، از این ابزار برای تست ها و نمایش های اولیه به کارفرما هم میتونید استفاده کنید.نکته اخر ایتوه ngrok یک پکیج از ابزار های متنوع و باحال هست و متاسفانه همه امکاناتش رایگان نیست ، مثلا شما در حالت رایگان نمیتونید چند پورت رو به اشتراک بزارید (یعنی فقط یک پروژه رو میشه فرستاد به بقیه) ولی بنظر من امکانات رایگانش هم کار مارو راه میندازه.امیدوارم این مقاله کاربردی باشه و وقتتون رو هدر نداده باشم، موفق باشید.راه های ارتباط با من: تلگرام | توییتر | اینستاگرام</description>
                <category>محمد صبائیان</category>
                <author>محمد صبائیان</author>
                <pubDate>Thu, 29 Aug 2019 12:18:02 +0430</pubDate>
            </item>
                    <item>
                <title>راهنمای مهاجرت کاری/تحصیلی و هزینه زندگی در تهران</title>
                <link>https://virgool.io/@msabaeian/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%DA%A9%D8%A7%D8%B1%DB%8C%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%D8%A8%D9%87-%D8%AA%D9%87%D8%B1%D8%A7%D9%86-o12v8u5kytmw</link>
                <description>به عنوان یه شهرستانی که از خوزستان (دزفول) به تهران برای کار و درس اومده گفتم خوب میشه که یکم درباره زندگی در تهران، هزینه های تهران، چالشای مهاجرت و این جور مسائل بنویسم و امیدوارم این مقاله کمک خوبی باشه برای بقیه، خوب بیاین کم کم شروع کنیم.با این شروع میکنم، چرا برای کار یا درس به تهران مهاجرت کنیم؟اگر بخایم با حقیقت و بدون تعصب به موضوع نگاه کنیم بیشتر امکانات رفاهی و اداری و ... ایران توی تهران خلاصه میشه، درسته یسری شهر ها شبیه مشهد، اصفهان، شیراز و ... به دلیل جاذبه های توریستی و مذهبی و امکانات و رشد بالایی داشتن (نسبت به استان خودم) ولی خوب به پای اینجا نمیرسن، فرهنگ مردم چند سال اینجا جلوتره (بنظر من) و ارزش کار کردن رو بیشتر میدونن، توی دزفول برنامه نویسی رو یه شغلی میدونستن که یه خمره رنگ رزی داریم و من دستمو میکنم و یسری چیزا میپاشم به صفحه و برنامه آماده شد! برای 100ت دستمزد باید چونه میزدم، اهواز یکم وضعیت بهتر بود، و همینطور مقدار کار ها پایینه و اکثرا در ازای دستمزد کم کار خوب میخواستن(البته همه جا اینجور آدما پیدا میشه) و اگر دختر بودین که به دادن پول اعتقادی نداشتن!بنظرم این تصمیم خودتونه که تهران کار کنید یا نه، به کسی ربطی نداره ولی باید این موضوعو بپذیرین که تهران و شهر های بزرگ (اصفهان،مشهد،تبریز و ...) شهر فرصت هان، چه از نظر کاری و چه درسی توی ایران حرف های اول رو میزنن، هرچند من برای تحصیل خیلی نیومدم و هدفم چیزای دیگه بود ولی بنظر من حتی دانشگاه های اطراف شهر از بهترین دانشگاه های شهرستان (ها) میتونن بهتر عمل کنن و شمارو در مسیر درست تری قرار بدن، بخاطر شرایط خاص زندگی شما پخته تر بار میاید و برای زندگی واقعی آماده (تر) می شید.اکثر دوستام که که چند وقت اخیر بعد از کنکور از من پرسیدن با رتبه شون دولتی شهر خودمون بمونن یا بیان آزاد، جواب من قطعا تهران هست، نوع دانشگاه هم غیر چند مورد خاص و معروف که همه میشناسیم مهم نیست و شرط مهم محیطی هست که شما اینجا قرار میگیرید، حتی اگر قراره بعدا اینجا زندگی نکنید بازم مدرکتون مهر تهران میخوره (هرچند من موافق این کلاس گذاشتن نیستم ولی چیزی هست که در جامعه ما رواج داره) و سود هایی براتون داره، همونطور که من از درس خوندن بیزار بودم ولی دیپلمم مهر سمپاد خورده و بالاخره سود هایی برام داشته. در مورد بچه هایی هم که آزاد میخواستن برن همین حالت بود، اگر منطقی به موضوع نگاه کنید نرخ شهریه دانشگاه آزاد مصوبی هست و شهریه پرداختی شما در شهرستان و تهران تفاوت نداره ولی مطمئنا سطح تدریس و امکانات خیلی متفاوته.در نهایت یکی از دوستام یه حرف جالبی زد که مهاجرت مردم تهران اکثرا برای خارج هست و مهاجرت مردم شهرستان با اومدن به تهران باید شروع شه، اگر فرصتشو چه از نظر درسی و چه از نظر کاری دارین از دست ندید، یه مدت سختی کشیدن از نظر مالی و دوری خانواده و اینا به بقیش می ارزه، از ما گفتن بود :)نکته: این مقاله در تابستان 98 نوشته شده و طبیعتا هزینه ها و قیمت های نوشته شده هم مال اون زمان هست.شروع مهاجرتاولین چالش مهاجرت قضیه محل زندگی هست،اگر دانشجو باشین معمولا دانشگاه ها خوابگاه ارائه میدن و اگر ندن گاها با خوابگاه های خودگردان قرارداد دارن و شمارو معرفی میکنن به اونجا، اگر خوابگاه ارائه نمیدن و یا برای کار میخواین بیاین هم خیلی نگران نباشید، تهران انواع خوابگاه ها و پانسیون هست برای زندگی، از یک شب تا هر چند وقت شما خواستین، قیمت ها متفاوته و بستگی به امکانات اونجا داره، امکانات پایه از یه تخت، دشک، سرویس بهداشتی و حمام شروع میشه و تا خشکشویی، باشگاه، گیت ورودی، اتاق مهمان، وای فای، کمد اختصاصی و ... میرسه. قیمت پایه و پایین اطراف میدون انقلاب و خیابون ولیعصر هست، اخرین باری که قیمت گرفتم (1 ماه پیش) یک پانسیون با امکانات اولیه و کولر (بله! شاید باورتون نشه ولی بعضیاشون سیستم سرمایشی ندارن) و محیط خوب و آسانسور (باز هم بله، بعضیاشون 4 5 طبقه بدون اسانسور هستن!) اتاق 4 تخته هر تخت 420ت ماهانه بود، قیمت خوبیه، برای زندگی مجردی و کاری مناسبه و اگر یکم بودجه تون بیشتره میتونین بیاین بالاتر طرفای خیابون فاطمی و اگر باز هم بیشتره خوب بیاین بالا، شما اتاق 4 تخته ماهی 1 میلیون هم میتونین پیدا کنید که پانسیون های لوکس هستن. توجه داشته باشین اکثر این پانسیون ها ایام دانشگاه و کلاس هاشون (از اوایل مهر تا اذر، بهمن تا اسفند، اردیبهشت تا تیر) پر هستن، چون دانشجو ها بیشترشون رو میگیرن (برای دانشگاه هایی که خوابگاه ارائه نمیدن) پس اگر برای کار میخواین بیاین حتما زودتر اقدام کنین چون پیدا کردن کار هم زمان بره و باید محل خوابتون تامین باشه تا با خیال راحت دنبال کار بگردین، همینطور دو دسته بندی کلی داریم برای پانسیون ها که یکسری کلا دانشجو نمیگیرن و یکسری کارمند (اسمش کارمنده، منظورش اینه افرادی که صرفا تهران کار میکنن)، مثلا شعبه 5 پانسیون دکتر فاطمی دانشجو با حداقل مدرک لیسانس میگیره، پس با آگاهی کامل از تخت های خالی و شرایط خاص اون پانسیون اقدام کنین.یه نکته مهم دیگه ساعت ورود و خروج خوابگاه هست، اگر کارتون شبکاری هست (مثلا روابط عمومی/پشتیبانی یک شرکت خاص که شیفت عصر یا شیفت شب خواهید داشت) حتما دقت کنید نهایت ساعت ورود و ساعت خروج چند هست، بعضی پانسیون ها 10 شب در بسته میشه و 6 صب باز میشه که ممکنه براتون دردسر بشه.دو سایت خوب برای پیدا کردن خوابگاه مناسب: https://khabinja.com/  https://www.khabgahyar.com/ و همینطور اگر مشکلی نداشتین میتونین یک همخونه پیدا کنین، پیدا کردن همخونه کار سختی نیست و باید بگردین، معمولا دختر ها با دختر ها و پسر ها با پسر ها همخونه میشن ولی پیش میاد که دختر و پسر با هم خونه میگیرن (چیزی که در شهرستان بعیده)، برای اینکار حتما دیوار و شیپور رو چک کنید و یا خودتون آگهی بزنین نیاز به همخونه دارید، سایت همخونه هم مرجع جامع تریه برای اینکار https://hamkhoone.com/ سیستم هم خونه ای معمولا شخص اصلی پول پیش (رهن) خونه رو میده و نفر دیگه یا بقیه افراد اجاره رو، یا این پول بین همه تقسیم میشه، دسته بندی های مختلفی داره گاهی جمعی دانشجو هستن که خونه میخوان گاهی هم کارمندن.اگر وضع مالیتون نسبتا خوبه میتونید خودتون خونه اجاره کنید، من از همه مناطق اطلاعی ندارم ولی به عنوان مثال نظام اباد سبلان شمالی (شرق) که منطقه خوب و امنی هست هزینه بین 15-20 پیش و اجاره 1-1.5 ماهیانه هستن، همینطور تهران آپارتمان های 40 تا 60 متری زیادی هست که قیمت مناسبی دارن و فقط کافیه کمی بگردین مساله بعدی خوراک هست،دزفول بندری دو نون و پر از مواد 4ت هست ولی تهران فلافل تک نون 4ت شروع میشه (و بازم یادتونه که گفتم بسته به محل زندگی تغیر میکنه و توی بعضی مناطق به 15ت هم میرسه) پس برای هزینه های روزانه خوراک هم امادگی لازم رو پیدا کنید، اگر اشپزی بلد باشید هزینه تون خیلی میاد پایین ولی برای انتخاب پانسیون دقت کنید که اشپزخونه داشته باشه و گاهی اشپزخونه دارن ولی لوازم پخت و پز و باید لوازم اشپزی رو با خودتون ببرید، پس اگر آشپزی هم زیاد بلد نیستین شروع کنین که بدردتون میخوره، از نظر پیدا کردن رستوران، فست فودی، کافه و سوپرمارکت هیچ نگرانی نداشته باشید، توی هر خیابونی حداقل یک سوپر مارکت یا دکه پیدا میشه، البته مثل همیشه بسته به منطقه موادشون تغیر میکنه (چقدر از کلمه بسته به منطقه استفاده کردم تا حالا!) ، شمال تهران اکثرا مواد خارجی هستن و طبیعتا گرون و هرچی میاین پایین تر با مواد وطنی بیشتری مواجه میشین، مثلا یکی از سوپرمارکت های لویزان کلا کیک ایرانی نداشت و فقط چنتا بیسکوییت ایرانی اونم بیرون از مغازه گذاشته بود و مشتریشون خودمون بودیم :)برای خرید ساده تر میتونین از اسنپ فود و ریحون و بقیه سیستم های سفارش غذا استفاده کنین که همیشه تخفیف های خوبی دارن و اسنپ فود معمولا هر روز فود پارتی تخفیف دار داره، یکسری سایت ها هم مثل موپون و چتربازان هست که کد تخفیف هایی (گاهی خیلی خوب) ارائه میدن که هزینه های خوراکتون رو بازم کم تر میکنه http://chatrbaazan.ir/  http://www.mopon.ir/ اگر یه رنج خوب بخام بهتون بدم روزانه حداقل 20-30ت هزینه خوراکتون میشه(بیرون) و اگر خودتون اشپزی کنین بین 5 تا 10ت، بسته به میزان غذایی که میخورید و کیفیتی که میخاین برای این مورد هم هزینه کنار بزارین. اگر گروهی هستین و با هم خوابگاهیاتون برای تقسیم هزینه ها میسازید اپلیکیشن Splitwise بهترین راهکار سیستم دونگی هست، تستش کنید: https://www.splitwise.com/ اگر که دانشجو باشین (مثل من) ایام کلاس ها غذای سلف رو دارید و دیگه این پایین ترین سطح هزینه هست و نگرانی خاصی برای هزینه غذا ندارید، ممکنه هزینه وعده های روزانه تون در ماه به 150ت هم نرسه.سومین موضوع رفت و آمد هست، هزینه رفت و آمد مناسبه ولی مسیر ها طولانیه، شهرستان نهایت مسیری ک روزانه طی میکردم 20-30 دقیقه بود (رفت و برگشت) و هزینه هم چند روزی یکبار بنزین میزدم (موتور خودم) ولی برای تهران معمولا باید از یک ساعت قبل حرکت کنین و ساعات شلوغی و اینها رو هم در نظر بگیرید، همه جای تاکسی، اتوبوس، خط ویژه (BRT) و یه ایستگاه مترو میتونید پیدا کنید ولی هرکدوم هزینه ای دارن و گاهی برای رسیدن به محل مورد نظر باید چند خط عوض کنید.همیشه بررسی کنید ببینید برای مسیر رفت و برگشتتون راه بهتری هست یا نه، مثلا دانشگاه من امام حسین بود و خوابگاهم لویزان، اگر با مترو میخواستم روزانه برم باید 2 خط عوض میکردم و حدود 1 ساعت طول میکشید ولی اگر با BRT میومدم حدود 30دقیقه طول میکشید که به صرفه تر بود، کلا خودتونو برای مدت زمان هایی که در وسایل عمومی قراره تلف کنید اماده کنید، بهتره برای این زمان ها کتاب یا کیندل همراه خودتون داشته باشید و یجوری زمان رو «بهتر» بگذرونین. هزینه BRT و مترو در حال حاضر 1200تومن هست و اگر دانشجوی تهران باشید میتونید 50% تخفیف بگیرید، خانواده ی شهدا و جانبازان ، بهزیستی و ... هم تخفیفاتی دارن که میتونید از این لینک ببینید و درخواست کارت مخصوص بدین. صدور کارت مخصوص حدود 2-3 هفته طول میکشه.اسنپ و تپ سی هم دو تا سیستم تاکسی محبوب هستن که همیشه تخفیفاتی ارائه میدن، اگر چند سیمکارت دارین میتونین تا مدتی توی جفتشون سفرهای رایگان با معرفی کردن شماره های خودتون به همدیگه داشته باشین و البته حتما اینکار خستتون میکنه.برای مسیریابی بهتر چند اپلیکیشن لازمه که نصب داشته باشید که مسیر یابیتون بهتر و ساده تر میشه https://play.google.com/store/apps/details?id=co.fardad.android.metro  https://cafebazaar.ir/app/com.neda.buseta (نسخه آیفون ندارد) https://neshan.org/  https://balad.ir/ در نهایت بنظرم اگر برای مهاجرت شک دارید خودتون رو تست کنید و یه مدت کوتاه چند ماهه بیان و شرایط زندگی رو بسنجین، اگر خوشتون نیومد بر میگردید و خوب قطعا یه تجربه خوب نصیبتون شده.اصل موضوع که درباره اش صحبت نکردم پیدا کردن کار هست و با شرایطی که شما مد نظرتونه، نوشته های بعدی درباره شرایط کاری و سایت های خوب و شیوه های مصاحبه می نویسم و امیدوارم این نوشته کاربرد داشته باشه و مشکلات و دغدغه های معمول رو حل کنه.راه های ارتباط با من: ایمیل | اینستاگرامموفق باشید</description>
                <category>محمد صبائیان</category>
                <author>محمد صبائیان</author>
                <pubDate>Thu, 01 Aug 2019 17:08:27 +0430</pubDate>
            </item>
                    <item>
                <title>بیاین بهتر React Native بنویسیم (2) - مسیر دهی کوتاه تر برای فراخوانی (همون Import خودمون)</title>
                <link>https://virgool.io/iran-react-community/babel-resolver-react-native-nwj5ne2qr9gw</link>
                <description>یکی از اصول های اصلی برنامه نویسی درست (تر) و ساختار خود React بالا اوردن بزرگترین ویو (View) ها با کوچکترین اجزا هست، همون قضیه ای که باعث میشه ما تا کوچترین جزء (حتی Text) رو Component بندی کنیم، طبیعیه که هرچی این مسیر رو بیشتر بریم و پوشه بندی و کامپوننت ها و ابزار ها و متغیر ها و ........ فایلهاشون زیاد میشن و قضیه آدرس دهی هم سخت تر میشه، فکر کنین یه همچین ساختار پوشه بندی داریم:- Project Root
- - - src
- - - - - -  components
- - - - - - - - -  UserCard.js
- - - - - - - - -  PaymentStatus.js
- - - - - -   screens
- - - - - - - - -   Home.js
- - - - - -  vars
- - - - - - - -  Theme
- - - - - - - - - - -  Colors.js ( redColor, greenColor, purpleColor )این یه پروژه بندی تستی و با تعداد پایین فایل هست، حالا فرض کنیم میخوایم در کامپوننت Home متغیر رنگ قرمز مخصوص این اپلیکیشن رو از Colors.js فراخونی کنیم، پس:import { redColor } from &#039;./../vars/Theme/Colors.jsاین کد کاملا درسته و کار میکنه، ولی قضیه اینه اگر یموقع نظرمون عوض شد و خواستیم فایل Colors رو جابجا کنیم (به هر دلیلی) باید توی همه صفحات، کامپوننت ها و ... که این رنگ (ها) Import شدن آدرس دهی رو بروز کنیم و با دردسر عظیمی مواجه میشیم، اصلا اگر این قضیه بگیم غیر ممکنه (یا بیخیالش بشیم ) ما فقط همین کد رو نداریم که، هر فایل ما کلی فایل دیگه رو ایمپورت میکنه و این ایمپورت ها کد هارو زشت تر و ناخوانا تر (بنظر من) میکنه، پس بهتره بیایم و سعی کنیم آدرس دهی هامون رو تا جای ممکن کوتاه کنیم.یه راه که شاید الان به ذهنتون بیاد اینه که یک هوک (HOC) به اسم withColors بنویسیم و رنگ هارو پاس بدیم به کامپوننت هامون، این روش هم هست ولی باز هم از تعداد Import های ما انچنان کم نمیکنه، پس بهتره یه کار جامع تر انجام بدیم.اگر با نظر من موافقین پس بیاین شروع کنیم:npm install --save-dev babel-plugin-module-resolver بعد از نصب ما لازمه یسری تنظیمات babel انجام بدیم، اگر از نسخه های جدید ری اکت نیتیو استفاده کنین فایل babel.config.js و اگر از نسخه 0.57 به پایین استفاده میکنین فایل  .babelrc.js رو ایجاد کنین (اگر نیستش) و این کد رو قرار بدید {
  &quot;plugins&quot;: [
    [&quot;module-resolver&quot;, {
      &quot;root&quot;: [&quot;./src&quot;],
      &quot;alias&quot;: {
        &quot;screens&quot;: &quot;./screens&quot;,
        &quot;components&quot;: &quot;./components&quot;
      }
    }]
  ]
}اون بخش root پوشه مادر قرارگیری فایلهامون رو مشخص میکنه، اگر ساختار رو یادتون باشه پروژه ما فایلهاش تو پوشه Src بودن، و alias ها هم پوشه های زیر مجموعه هستن، حالا ما میتونیم برای ایمپورت کردن کامپوننت UserCard هرکجا که خواستیم این دستور رو بنویسیم:import UserCard from &#039;components/UserCard&#039;خیلی زیبا و راحت و قطعا خوانا، ازینجا به بعد بسته با ساختار پروژه خودتون این کانفیگ هارو انجام بدین و لذتشو ببریناصل آموزش تا بالاس و از اینجا به بعد برای بچه هایی هست مثل من که از ادیتور Vscode استفاده میکنن، حتما متوجه میشین که بعد از کارای بالا ما دیگه نمیتونم از Go to definition (همون ctrl+left click) استفاده کنیم، و همینطور از نعمت hint و  autocompletion هم محروم میشیم، چون پیشفرض vscode نمیاد و فایل babel مارو بخونه و متوجه این قضایا بشه، پس باید این مشکلات رو حل کنیم که از برنامه نویسی بیشتر از قبل لذت ببریمبرای شروع باید فایلی به اسم jsconfig.js در روت اصلی پروژه تون ایجاد کنین با این محتوا{
 &quot;compilerOptions&quot;: {
 &quot;baseUrl&quot;: &quot;./&quot;,
 &quot;paths&quot;: {
  &quot;components/*&quot;: [
   &quot;src/components/*&quot;
   ],
   &quot;vars/*&quot;:[
      &quot;src/vars/*&quot;
     ],
  },
  &quot;exclude&quot;: [
      &quot;node_modules&quot;
      ]
  }
}این go to definition رو برای دو دستور components و vars فعال میکنه، اینطور وقتی روی ایمپورتمون کلیک کنیم مارو هدایت میکنه به فایل مرجع :)و برای فعال کردن autocompletion که آدرس دهی هامون هم راحت تر بشه افزونه زیر رو نصب کنید https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense بعد از نصب باید در مسیر .vscode فایلی رو ایجاد کنیم به اسم  settings.json که محتویاتش اینا باشه:{
    &quot;path-intellisense.showHiddenFiles&quot;: true,
    &quot;path-intellisense.autoSlashAfterDirectory&quot;: false,
    &quot;path-intellisense.absolutePathToWorkspace&quot;: true,
    &quot;path-intellisense.mappings&quot;: {
    &quot;components&quot;: &quot;${workspaceRoot}/src/components&quot;,
    &quot;vars&quot;: &quot;${workspaceRoot}/src/vars&quot;,
    }
}به این صورت دو کد components و vars برای vscode به عنوان آدرس پوشه میشن و هروقت برای import اونها رو بنویسین مارو کمک میکنه که ادامه آدرس رو بنویسیم، اون 3 خط اول هم کاملا واضحه چه تنظیماتی هست نیاز به توضیح ندارنخوب این قسمت از آموزش هم تموم شد، قسمت قبلی حدود 9 ماه پیش نوشته شد، سعی میکنم ازین به بعد بیشتر بنویسم تجربه هام با شما به اشتراک بزارم (البته من کوچیک شمام)اگر دوست داشتین میتونین منو در اینستاگرام و تلگرام پیدا کنین تا با همدیگه کانکت بشیم، خوشحال میشم  :)</description>
                <category>محمد صبائیان</category>
                <author>محمد صبائیان</author>
                <pubDate>Wed, 03 Jul 2019 17:00:22 +0430</pubDate>
            </item>
                    <item>
                <title>بیاین بهتر React Native بنویسیم (قسمت اول)</title>
                <link>https://virgool.io/iran-react-community/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%88-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C-react-native-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%A7%D8%B2%D9%87-%DA%A9%D8%A7%D8%B1%D8%A7%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-hdfrup9hkxhd</link>
                <description>همین تصویری که برای پست گذاشتم حداقل 30 میلیون می ارزه! میگین نه برین قیمت کنین ببینیم!سلامیه چند وقتی بود میخواستم یسری پست درباره React Native بنویسم و یسری از کدها، دستورات و کامپوننت ها (ک خودم حس میکنم کد هام بهینه تر و باحال تر میکنه برام) رو به اشتراک بزارم، قضیه ای که هست اینه که تو این پست ها قرار نیست شاهکار کنیم و سطح پست ها مبتدی-متوسط حساب میشه، در اصل برای اون دسته از بچه هایی که تازه React Native رو شروع کردن و دارن اندکی اشتباه میزنن، کد منظورمه!پس اگر سطح کدنویسی خودتون رو بالا میدونید خوندن این پست و مطلب توصیه نمیشه، نگین این چیا بود که نوشتی ;)استفاده از فونت اختصاصینه نه اشتباه نکنید! من قرار نیست بیام بگم چطور قراره فونت اختصاصی خودمونو به برنامه اضافه کنیم! من فقط میخام بگم بعد از اضافه کردن چطور اونو در Text هامون به شکل درست (ترش) اضافه کنیماول باید فونت اختصاصی خودتون رو اضافه کنید که برای اینکار میتونید این پست یا ترجمه اون و یا این یکی رو بخونیدفرض کنید من دارم از فونت IranSans استفاده میکنم (من عاشق این فونتم و اکثر برنامه هامم با همین می نویسم، البته اگر UI دست خودم باشه ک نیست! ) در جریان باشید که اسم فایل های ttf فونت هایی که من دارم استفاده میکنم IRANSansMobile(NoEn)_Bold.ttf و IRANSansMobile(NoEn).ttf هستپس می نویسیم :import React from &#039;react&#039;
import { Text , StyleSheet } from &#039;react-native&#039;
...
return ( 
            &lt;Text style={styles.text}&gt;یک متن فونت دار&lt;/Text&gt;
           )

...
const styles =  StyleSheet.create({
    text:{
        fontFamily: &#039;IRANSansMobile(NoEn)_Bold // بولد
        fontFamily:&#039;IRANSansMobile(NoEn)&#039;, // معمولی
    }
});کد ساده اس! اینطور نیست؟( اگر متوجه این کد نمیشین خیلی زوده خوندن این مقاله برید بیشتر کار کنین و زود برگردین!)من دیگه از تعریف class و نوشتن render() و اینا پرهیز میکنم که کدهای اصلی بیشتر تو چشم باشن خب پس اینجا دردسری نداشتیم و همون اسم فایل های ttf رو استفاده میکنیم اما این فقط روی اندروید کار میکنه و اگر جایی از فونت Bold استفاده کنیم در ios دچار مشکل میشیم، پس برای حالت بولد ios میایم و کد رو به این صورت میکنیمimport React from &#039;react&#039;
import { Text , StyleSheet , Platform } from &#039;react-native&#039;

...

return &lt;Text style={styles.text}&gt;یک متن فونت دار&lt;/Text&gt; 

...

const styles =  StyleSheet.create({
    text:{
      ...Platform.select({
        android : {
            fontFamily: &#039;IRANSansMobile(NoEn)_Bold&#039;
          },
          ios:{
           fontFamily:&#039;IRANSansMobile(NoEn)&#039;,
           fontWeight:&#039;bold&#039;
           }
      })
     }
 });خب اینم حل شد و حالا کد ما در ios هم براحتی کار میکنه اما تا اینجا خیلی موضوع خاصی که نگفتم! اینارو با چارتا آزمون و خطا میتونستید در بیارید، موضوع اینه که به احتمال زیاد میاین و در اکثر جاهای اپ کد رو برای فونت اینطور می نویسین!یعنی به احتمال زیاد برای هر سری که میخاین یه Text رو بهش فونت بدین می نویسینfontFamily: &#039;IRANSansMobile(NoEn)_Bold&#039;خب این کار به ذات خودش غلط نیست ولی اگر پروژه که دارین می نویسین کمی بزرگ بشه بعدا اگر خواستین فونت برنامه رو عوض کنین دردسرش جدیه! دونه دونه فایل های js خودتون رو باید سرچ کنید و مثلا فونت رو به Vazir تغیر بدین! عذابه بچه ها! عذاااابمن 3 تا راهکار بهتون پیشنهاد میدم، البته اصلش مورد آخره ولی دو راهکار اول رو میگم که مرحله مرحله بریم جلو! مقاله خودمه میخام کشش بدمنگهداری نام فونت در متغیر متوجه منظورم شدین؟ نه؟ توضیح میدم، خیلی ساده اس، میایم ی فایل js در پروژه درست میکنیم و اسمشو میزاریم مثلا Data.js و اسم فونت رو ذخیره میکنیمexport const FontName = &#039;IRANSansMobile(NoEn)&#039; 
export const BoldFontName = &#039;IRANSansMobile(NoEn)_Bold&#039; حله؟ ما 2 تا متغیر نوشتیم که اسم فونت هارو داشته باشیم، اون export هم برای اینکه بتونیم در بقیه فایل های js اینارو import کنیم. حالا مثال بالا رو اینطور می نویسیمimport React from &#039;react&#039;
import { Text , StyleSheet , Platform } from &#039;react-native&#039;
import { FontName , BoldFontName  } from &#039;./Data.js&#039;

...

return &lt;Text style={styles.text}&gt;یک متن فونت دار&lt;/Text&gt;

...

const styles =  StyleSheet.create({
   text:{
     ...Platform.select({
         android : {
           fontFamily: BoldFontName
          },
          ios:{
            fontFamily:FontName,
            fontWeight:&#039;bold&#039;
          }
     })
   }
 });پس حالا ما هروقت خواستیم از فونت معمولی استفاده کنیم FontName و هروقت خواستیم Bold باشه به شیوه بالا :)کدمون بهتر شد ولی بازم خوشم نیومد؟ چرا؟! چون برای بولد کردن هر سری باید بیایم و این دستورات رو برای Text بنویسیم، بنظرتون کد هامون الکی زیاد نمیشن؟ من بهش میگم تکرار نویسی، ما برنامه نویسیم (خیر سرمون) و باید تا جای ممکن کدهامون خواناتر، تمیز تر و کوتاه تر باشن! البته بنظر من...پس برای رفع مشکل تکرار نویسی میریم سراغ دستور العمل شماره دواستایل در متغیر! نه فقط اسمششاید کمی گنگ بنظر بیاد این اسمی که نوشتم، ولی اسم بهتری به ذهنم نمیخوره در حال حاضر، بیاین اون فایل Data.js رو به شکل زیر تغیر بدیم تا توضیح بدمimport React from &#039;react&#039;
import {  Platform } from &#039;react-native&#039;

export const Font = {
 fontFamily:&#039;IRANSansMobile(NoEn)&#039;
}

export const BoldFont = Platform.select({
 android : {
 fontFamily: &#039;IRANSansMobile(NoEn)_Bold&#039;
    },
 ios:{
 fontFamily:&#039;IRANSansMobile(NoEn)&#039;,
 fontWeight:&#039;bold&#039;
    }
});خب پس الان ما اون دستورات استایل دهی رو در متغیر ریختیم، حالا مثال رو هم بروزرسانی میکنمimport React from &#039;react&#039;
import { Text , StyleSheet , Platform } from &#039;react-native&#039;
import { BoldFont  } from &#039;./Data.js&#039;
 
 ...

return &lt;Text style={styles.text}&gt;یک متن فونت دار&lt;/Text&gt; )
...

const styles =  StyleSheet.create({
       text:{
       ...BoldFont
       
});به به، کم کم داره خوشم میاد ازش :) حالا ما خیلی ساده هرکجا بخایم فونت بولد باشه میایم و BoldFont رو import میکنیم و بدین سان استفاده میکنیم، فونت معمولی هم همین حالته ها! کافیه Font رو ایمپورت کرده و کیفشو ببرین :)اما بازم هنوز حس میکنم یچیز اضافه اس این وسط! دارم به این فکر میکنم ما که میدونیم قراره همه اپمون با همین فونت قراره نوشته بشه، پس چرا نیایم و یدونه Component برای Text خودمون ننویسیم؟ اینطور لازم نیست هی فونت رو Import کنیم و این داستانا!میرسیم مرحله سه!کامپوننت MyTextی فایل درست کنین به اسم MyText.js با این محتویاتimport React, { Component } from &#039;react&#039;;
import { Text , StyleSheet } from &#039;react-native&#039;;
import { Font , FontBold} from &#039;./Data&#039;;

class MyText extends Component {
 render() {
 return (
 &lt;Text style={[styles.text,this.props.bold ? {...FontBold} : null,this.props.style]}&gt;
 {this.props.children}
 &lt;/Text&gt;
        );
    }
}

const styles = StyleSheet.create({
 text: {
 ...IranSans,
  },
});

export default MyText;اوکیه؟ با اینکه میدونم گرفتین چی شد ولی یه توضیح کوچیک میدم، اون بالا برای استایل Text اینطوری نوشتم&lt;Text style={[styles.text,this.props.bold ? {...BoldFont} : null,this.props.style]}&gt;چرا؟ ساده اس، یدونه prop گذاشتم که اگر کاربر خواست فونت بولد باشه بنویسه bold و اینجا چک کردم اگر کاربر اون bold رو نوشت فونت بولد رو استفاه کن، اگرم کاربر style وارد کرد روی Text اعمال بشه(textAlign ، margin،pading و یا هرچیز اختصاصی دیگری...)اون children هم میاد محتویاتی(child ها) که بین کامپوننت نوشته میشه رو میزاره برامون اون وسط!حالا برای استفاده توی همون مثال اینطور می نویسمimport React from &#039;react&#039;
import MyText from &#039;./MyText&#039;
...
return &lt;MyText bold&gt;یک متن فونت دار&lt;/MyText&gt;خودمونیم ولی کیف نکردین؟ اگر خواستین میتونین بازم باحالترش کنین و از static property ها استفاده کرده و فیض ببرید که کدتون بدین شکل بشه&lt;MyText.Bold&gt;یک متن فونت دار&lt;/MyText.Bold&gt;
&lt;MyText.Normal&gt;یک متن فونت دار&lt;/MyText.Normal&gt;و یا اینکه از stateless component استفاده کنین که کدهای MyText.js کوتاه تر بشه که نوشتنش کمی سرچ کردن شمارو میطلبه و مقاله برای نوشتنشون توی همین ویرگول هست و دوباره گویی میشه :)خب خسته نباشید، امیدوارم این مقاله بدردتون بخوره و الکی وقتتونو نگرفته باشم ;) بدرودآپدیت: اسم اول این مقاله &quot;تجربه و تکنیک های React Native برای تازه کاران (قسمت اول)&quot; ولی دیدم مناسب نیست و بهتره اسمش عوض بشه، برای همین آدرسش کمی فرق داره</description>
                <category>محمد صبائیان</category>
                <author>محمد صبائیان</author>
                <pubDate>Mon, 01 Oct 2018 19:30:12 +0330</pubDate>
            </item>
            </channel>
</rss>