<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های نیما حبیب خدا</title>
        <link>https://virgool.io/feed/@nima.2004hkh</link>
        <description>یه برنامه نویس معمولی لینوکس کار</description>
        <language>fa</language>
        <pubDate>2026-04-14 10:54:21</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/17959/avatar/MycYNA.png?height=120&amp;width=120</url>
            <title>نیما حبیب خدا</title>
            <link>https://virgool.io/@nima.2004hkh</link>
        </image>

                    <item>
                <title>نقشه راه من در سال 1399</title>
                <link>https://virgool.io/@nima.2004hkh/%D9%86%D9%82%D8%B4%D9%87-%D8%B1%D8%A7%D9%87-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-2020-xz69viqpvomf</link>
                <description>خوبببب . سال تحویل شد. نمیخوام بحث رو سیاسی کنم یا اینکه با اتفاقات بدی که در سال گذشته گرینبانگیر همه ما بود، افسرده کنمتون. بازگو کردن بدیهیات، احمقانه است. آرزو هم نمیکنم که امسال سال فلان و فیلانی باشه. همه آرزو کردن همینو. تعارف کافیه. بریم سر اصل مطلب.اصل مطلب مفید بودنه. مفید بودن یعنی اینکه برای اطرافیانت (دو نفر هم کافیه) بتونی آورده داشته باشی و چیزی به داشته هاشون اضافه کنی. این همون نقشی هست که نرم افزار آزاد و متن باز میخواد ارائه بده. از طرفی هم، همانطور که برخی از دوستان میدونن، من به شدت طرفدار نرم افزار آزاد هستم و تمام فلسفه های زندگی و رفتار اجتماعی رو بر اساس این الگو قرار دادم (از اینکه به این شکل هستم لذت میبرم). شاید شما نخواید که اینطور باشید، این دیدگاه شما محترم و با ارزش هست. با دیدگاهی که من دارم، هر حرکتی در زمینه حرفه و کار،‌میتونه برای همه سودآور باشه. مثلا یک کدی را نوشتم که با روزها تحقیق، به نتیجه رسیده، پس میتونم این کد رو برای عموم قرار بدم تا بهبود پیدا کنه و من هم بیشتر یاد بگیرم. یا کاری که امروز میخوام انجام بدم.نقشه راهنقشه راه یا همون Road Map چیه؟ هر شخصی با دیدگاه و سلایق و توانایی هاش، میتونه یک نقشه راه برای رسیدن به یک هدف خاص رو داشته باشه. عمده ما، هدفمون از برنامه نویسی، حرفه ای شدن و قوی شدنه. گاهی اوقات با یک بی نظمی و از این شاخه به اون شاخه پریدن، جلوی یادگیری خودمون رو میگیریم. اما اگر یک نقشه راه داشته باشیم،‌میتونیم ذهنمون رو تنظیم کنیم برای یک مسیر منظم. من هم تصمیم گرفتم که نقشه راه یک سال آینده خودم رو طراحی کنم و با شما به اشتراک بزارم تا به من هم کمک کنین که بیشتر یاد بگیرم. کاش این نقشه راه یک فرهنگ بشه تا بتونیم از هم بیشتر یاد بگیریم و تبادل اطلاعات کنیم. من تمام نقشه راهم رو در یک Board داخل Trello قرار دادم که دوست دارم با هم روی اون بحث کنیم و حتی منابع خوبی هم به هم معرفی کنیم. یادگیری یکی از مهمترین کارهایی هست که میتونه در این روزها، هم مفید باشه و هم مفرح.  https://trello.com/b/7qx6I22F/2020-roadmap خوشحال میشم که نقشه راه خودتون رو طراحی کنین و به اشتراک بزارید. </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 21 Mar 2020 03:06:32 +0430</pubDate>
            </item>
                    <item>
                <title>راه های کاریابی در استانبول</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%B1%D8%A7%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%DB%8C%D8%A7%D8%A8%DB%8C-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%A8%D9%88%D9%84-j5bpak0hbwou</link>
                <description>این مطلب رو به درخواست دوستی که در مقاله (از طهران تا استانبول) اشاره کردند مینویسم. کاریابی در استانبول راه های خودش رو داره و شاید اوایل کمی سخت باشه. البته در ایران هم به همین شکل هست. اما چون ما افراد خارجی هستیم، باید برای کارفرما منطقی باشه استخدام ما. ما فرض رو بر این میگیریم که رزومه مناسب خود رو ساختید. مرحله هایی که برای پیدا کردن کار مناسب باید انجام بدید:‌1- زبان ترکی را باید خوب بلد باشید و بدون ایراد بتونین صحبت کنین. (حداقل مفاهیم رو متوجه بشید و بتونید منظور خودتون رو خوب برسونید)2- دانش زبان انگلیسی و بعد از آن، زبان های دیگه، امتیاز خیلی بالایی میتونه داشته باشه3- هیچ موقع در سطح برنامه نویس، به عنوان جونیور و ... اقدام نکنین. شما هر آگهی که دیدید مطابق با توانایی شما هست رو باید ارسال کنین. اینکه جونیور یا سنیور هستید، کار کسی هست که مصاحبه میکنه. نه شما. 4- اگر در ترکیه باشید، راحتتر کار پیدا میکنین . من حدود 10 موقعیت شغلی را به علت نبودن در ترکیه، از دست دادم.موارد بالا فقط یک سری نکته بودند. اما این که از چه کانال هایی باید اقدام کنیم، در زیر اشاره میکنم. سایت های زیادی هستند که میتونین از طریق آن ها اقدام کنین. اما عمدتا بین المللی هستند. مثل indeed. دوستی به من گفتن که ترک ها در indeed آگهی زیاد میزارن.  اما من با خودشون که صحبت کردم، گفتن که ما ندیدیم تا حالا. این میتونه به دلیل این باشه که بومی ها نیازی به این سایت ها ندارن. ترکیه به علت وجود شرکت های بین المللی اروپایی و آمریکایی، پل ارتباطی قوی با دنیای غرب هست، همین دلیل هم باعث میشه که شرکت ها، در سایت های معمول خود هم آگهی قرار بدن. شاید یک شرکت به دنبال نیرو داخلی و یا خارجی باشه. پس هم در سایت داخلی ترکیه و هم در سایت های بین المللی، آگهی قرار میده. Indeedدر این سایت میتونین تمام مشاغل مرتبط با یک شهر را مناسب با مهارت خودتون پیدا کنین. من تا الان پاسخی از شرکت ها دریافت نکردم. Monsterاین سایت در تمام نقاط اعتبار خوبی دارد. مانستر همچنین امکاناتی را برای اعتبارسنجی رزومه شما قرار میدهد. نکات منفی و مثبت رزومه شما را بازگو میکند که این مورد خیلی میتونه در هر نقطه از کره زمین به شما کمک کنه. linkedinاین مورد که همه آشنا هستیم. در قسمت jobs برید و یک alert  برای خودتون تنظیم کنین. مثلا تمام مشاغل react developer  را در ترکیه هر روز به شما معرفی کند. اون هایی که easyapply دارند رو در اولویت بزارید و بعد از اون به مشاغی که این گزینه را ندارند رزومه بفرستید. به گزینه هایی که تیک خورده شده دقت کنین. اگر شما زیر 50 درصد اون اعتبار رو داشته باشید، بات های شرکت ها، شما رو در اولویت قرار نمیدهند و شانسی برای دیده شدن ندارید. این برمیگرده به سیستم ATS شرکت های متفاوتkariyer.netاین سایت مهمترین بخش برای کاریابی هست و به زبان ترکی هست. متاسفانه نسخه انگلیسی نداره ( یا من ندیدم) . میتونیم jobinja  رو معادل این سایت بدونیم در یک سطح نسبتا ساده تر. شاید ورود اولیه به سایت کمی دشوار باشه. در بالا سمت راست بر روی Üye ol کلیک کنین و ثبت نام خود را آغاز کنین . نام و نام خانوداگی ایمیل و رمز خود را وارد کنین. بعد از اتمام مراحل ثبت نام به Üye Girişi برید و وارد سایت بشید. حالا باید پروفایلتون رو درست کنین. بعد از ورود، به profil برید و روی کاردی که در وسط هست کلیک کنین :   Güncel Özgeçmiş  البته چون من رزومه دارم،‌این کاردو میبینم. شاید شما رزومه نداشته باشید چیزی برای ثبت رزومه جدید ببینید. بعد از اون وارد صفحه میشید که باید تمام اطلاعات مانند سوابق کاری، مهارت ها، اطلاعات فردی و ... رو وارد کنین.در هر سیستم کاریابی که هستید، حتما یک cover letter داشته باشید و مناسب با آگهی، تغییر بدید. دلیل داشن این کاور لتر این هست که کارفرما ها عمدتا اول کاور رو مطالعه میکنند. نکته دوم اینکه حتما در رزومه ها یک summary  داشته باشید اما سعی کنین که چیزهایی که مینویسید، واقعی و از روی بارو خودتون باشه. بزرگنمایی بخشی از رزومه ساختن هست، اما در حدی باشه که قابل قبول باشه برای خواننده. خوب حالا باید کار مورد نظر رو پیدا کنیم . بالا سمت چپ روی  İş Ara کلیک کنین. (جستجو شغل)سمت چپ یک سری فیلتر وجود داره که به ترتیب هر کدام رو میگم :‌1- کشور ، شهر ، محله 2- تاریخ آگهی  3- جستجو های ذخیره شده 4- بخش شرکت (شرکت آیتی باشه یا تجاری یا اقتصادی یا ...) 5- دسته بندی آگهی 6- موقعیتی که به دنبالش هستید 7- سطح موقعیت 8- بخش مورد نظر 9-متود کاری 10- میزان تحصیلات 11- سال تجریه 12- غیر فعال کردن نوتیف ها 13- امکانات شرکت 14- زبان آگهیهر کدوم رو به دلخواه تکمیل میکنین و ادامه میدید. بعد از مطالعه کردن آگهی ، اگر مواردی که خواستید رو داشت، روی دکمه BAŞVUR کلیک میکنین. در این مرحله اگر نقصی در رزومه باشه به شما اخطار میده و تا تصحیح نکردن نقص، ادامه مقدور نیست. برای اینکه وضعیت مشاغلی که ارسال کردید رو بتونین مشاهده کنین، به منو Profil برید و روی Başvurular کلیک کنین تا بتونین وضعیت رو مشاهده کنین. اینکه چه حقوقی توافق کنین به شما بستگی داره. اما در استانبول هزینه ها زیاد هستند. اگر یک نفر هستید، درامد زیر 4000 لیر میتونه برای شما سخت باشه و اگر زوج هستید، 5000 لیر کمتر، کمی زندگی رو دشوار میکنه. اگر قصد شما از مهاجرت، زندگی آرام و راحت هست، به حقوق دریافتی خود بیشتر توجه کنینحساب بانکیشما برای داشتن حساب بانکی در ترکیه باید kimlik داشته باشید. اینطور که من دیدم و صحبت کردم، هر بانکی به خارجی ها حساب نمیده. بانک Ziraat Banka یکی از بانک های معتبری هست که به ایرانی ها هم حساب بانکی میده. شما میتونین در زمان افتتاح حساب ، امکان خرید دلاری هم فعال کنین. تا جایی که من از بانک پرسیدم، هیچ محدودیتی در نگهداری مبلغ وجود ندارد. برخی افراد میگن برای داشتن حساب باید مقدار زیادی پول، بلوکه بشه به مدت یک ماه تا سه ماه. اما از افرادی که حساب باز کردند وقتی پرسیدم، گفتن که برای ما اینطور نبود. من هنوز kimlik رو اقدام نکردم. حتما در این مورد کاملتر خواهم نوشت. سوال های دوستان: برای داشتن مجوز کار باید چه کار کنیم؟ تا جایی که میدونم، باید اول kimlik توریستی رو دریافت کنیم که یک سال اقامت توریستی برای شما صادر میشه. بعد از اومدن کیملیک، شما باید چند ماه صبر کنین و بعد از این مدت، میتونین از طرف شرکتی که در اون مشغول به کار هستید و قابلیت این رو دارند که برای شما ویزای کاری بگیرند، اقدام کنین. این که یک شرکت ما رو بخواد مهمترین بخشه و باید از سایت kariyer اون شکرت رو پیدا کنین. نحوه حقوق ها به ما ایرانی ها به چه شکلی هست؟این که ما به درد اون شرکت بخوریم و مهم باشیم خیلی تاثیر میزاره. اما از 5 هزار تا 8 هزار بستگی به توانایی شما میتونه متغیر باشه. اگر شما یک نخبه باشید و در کار خودتون تک باشید، قطعا بیشتر از این ها میتونید درامد داشته باشید. اما موضوع اینه که فردی با این قابلیت ها چرا باید ترکیه باشه؟ میتونه خیلی کشورهای دیگه بره. چرا من ترکیه را انتخاب کردم؟من کشورهایی مثل سوئد و هلند را امتحان کردم و تا مراحل خوبی هم برای مصاحبه پیش رفتم. اما در مراحل آخر رد شدم. دلیل اصلی رد شدن من این بود که تجربه کافی نداشتم و خودم رو برای غربی زندگی کردن آماده نمیدیدم. باید کمی آماده تر میشدم. ترکیه میتونست سکوی مناسبی برای پرتاب باشه. همه جای دنیا برای ما هست. فقط باید بتونیم راه قانونی و درست رو انتخاب کنیم. برای هرکس این راه میتونه متفاوت باشه. وضعیت تاهل، خدمت، دانشگاه، تجربه کاری و ... تاثیرگذار خواهد بود. برای یادگیری زبون ترکی از کجا شروع کنیم؟؟ کلاس بریم؟ کدوم موسسه زبان بهتره؟؟به نظر من یک معلم خصوصی میتونه خیلی خوب باشه. من خودم با معلم شروع کردم و کتاب istanbul A1 و میتونین از هر کتاب فروشی تهیه کنین. اما تمام این کلاس ها فقط برای اینه که بدونید چی بگید و گاهی اوقات متوجه حرف ها بشید. فکر نکنید با این کلاس ها میتونین خیلی از نیازها رو رفع کنین. فقط در حد خرید کردن جزیی و صحبت های روزانه. مهمترین کلاس، بودن در جامعه است.موسسه خوبی رو نمیتونم بگم. چون معلم من از دوستانی بودن که ترک استانبول هستند. من ترکی بلد نیستم ولی انگلیسی میتونم مصاحبه کنم. این مشکل ایجاد میکنه؟نه. اما میتونه شانس شما برای کاریابی رو پایین بیاره. چون عمدتا انگلیسی قوی ندارن و نمیتونن ارتباط بر قرار کنن. یا اینکه CTO مشکلی نداره اما افراد تیم نمیتونن. بهتره که ترکی رو در حد رفع نیاز بلد باشید.میانگین پرداختیشون در شرایط متوسط کاری/تخصصی چند هزار لیر در ماهه؟میانگین از 4 هزار تا 8 هزار بسته به مهارت شما. در چند سوال بالاتر در این مورد در مورد هزینه های اجاره آپارتمان یا اطاق هم توضیح بدهزمانی که شما وارد استانبول شدید و به قصد مهاجرت اومدید، ابتدا باید یک مسافرخانه یا یک هتل بگیرید. (بستگی به بودجه شما داره. از روزی 60 لیر شروع میشه). باید از همان روز اول به فکر خونه باشید. به سایت sahibinden برید و در بخش estates (انگلیسی کنید اگر به ترکی مسلط نیستید) شهر استانبول را انتخاب کنید. اگر دنبال خانه گران قیمت و لاکچری هستید، به محله های beşiktaş, bebek, Nişantaşi میتونید برید.اگر در غرب به دنبال خانه هستید و قصد دارید به مرکز نزدیک باشید، sisli, kagithane, Eminönü گزینه های بدی نیستند. مخوصا شیشلی که هم مرکز هست و هم نسبتا ایرانی ها زیاد هستند. اما اگر قصد دارید  در غرب بگیرید و ارزان باشد و نوساز، میتونید به Halkali، Küçükçekmece برید. در دو گزینه آخر، رفت و آمد به مرکز خیلی سخته و اینکه شاید شما نیاز داشته باشید که به آسیا برید و شاید دو ساعت (حتی بیشتر) توی راه باشید که به مقصد برسید. پس اگر بتونید سمت شیشلی باشید که خیلی بهتره. هم دسترسی به غرب دارید هم شرق و هم در مرکز استانبول هستید. وقتی شما منزل مورد علاقه رو پیدا کردید، باید برای قرار داد آماده باشید. فرض کنید که منزل شما 2000 لیر اجاره داشته باشد و در یک مجتمع 20 طبقه باشید. عمدتا بر روی این منازل Aidat (آیدات) قرار میدن. فرض کنیم که 150 لیر هم آیدات خواهید داشت. اما در قرار داد اولیه و پرداخت اولیه، از شما گرفته نمیشه. برای خارجی ها و حتی بعضی ترک ها، کفیل لازم دارید تا بتونین منزل اجاره کنین.  افرادی که استخدام نیستند، خارجی هستند و یا کیملیک ندارند، بنا به خواست صاحب خانه، باید کفیل داشته باشند. کفیل یک فردی هست که کارمند است و امضا میکند که این شخص اگر خانه را گذاشت و رفت، یا آسیب رساند و فرار کرد و یا... ( خیلی موارد دیگر) من تضمین میدم که همه را متقبل میشم. بعضی موارد نیاز به کفیل نداره و این یک شانسه به نظرم. شما باید به صورت مرسوم، یک ماه اجاره، به اندازه اجاره هم پول پیش و حق املاکی بدید. یعنی برای منزل 2000 لیری باید هزینه 6000 لیر در ابتدا برای عقد قرار داد پرداخت کنین که 2000 آن به شما بازمیگردد بعد از اتمام زمان قرارداد. اما بعضی صاحب خانه ها برای پول پیش، شاید یک ماه، شاید هم یک سال و شاید هم 6 ماه اجاره را بخواهند. این هم باز قابل صحبت هست. بعد از اینکه کارهای عقد قرارداد تمام شد،‌شما باید قبض های آب و برق و گاز را به نام خودتان کنید. برای این کار باید کیملیک داشته باشید که در ماه های اول امکان پذیر نیست. چون کیملیک سه ماه زمان میبرد. پس شما میتونین به دوستی که کیملیک دارد بگید و اگر ایشون قبول کردن ( یا صاحبخانه حتی) به ادارات برید و قبوض را به نام ایشان کنین. خوب بعد از انجام همه مراحل، شما تا یک سال در خانه خود هستید بدون مشکل. اگر قبوض رو به نام خودتون نکنین، باید جریمه استفاده قاچاق را پرداخت کنین که زیاد هست. همچنین میتونید اطاق اجاره کنین و منزل مبله داشته باشید.اطاق میتواند از یک سوییت یک نفره تا واحد چند نفره متغیر باشه. شما اگر یک سوییت اجاره کنید برای یک ماه در مرکز شهر ، باید هزینه ای حدود 2000 لیر پرداخت کنین اما همان اطاق برای یک سال، ماهی 700 لیر خواهد بود. دلیل این تغییرات هم کاملا بیزینسی هست. باز اگر سوالی بود بگید تا در ادامه همین مقاله بنویسم. تشکر. </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Wed, 19 Feb 2020 15:57:30 +0330</pubDate>
            </item>
                    <item>
                <title>از طهران تا استانبول (به عنوان یک برنامه نویس)</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%A7%D8%B2-%D8%B7%D9%87%D8%B1%D8%A7%D9%86-%D8%AA%D8%A7-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%A8%D9%88%D9%84-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-qqpxixjdsb9v</link>
                <description>از دید بعضی ها حماقت و از دید بعضی ها یک حرکت درست. مهم این نیست که کی چی میگه. دلمون باید شاد باشه. بعد از سال ها تلاش برای مهاجرت بالاخره تونستیم از طریق شرایط کاری،‌ مهاجرت کنیم. اما در مسیر مهاجرت اتفاقاتی برای ما افتاد که بهتر دیدم این تجربه را با همه به اشتراک بزارم. شاید کسی خواست همین مسیر رو بره. پس از اولین روزی که شروع کردم، میگم و میرم جلو. با یک مقاله طولانی رو به رو هستیم. پس با حوصله وقت بزارید و غلط های املایی و نگارشی رو فاکتور بگیریم. روز اول که تصمیم گرفتیم مهاجرت کنیم، شرایط سختی رو جلو پامون دیدیم. همه چیز جور دیگه بود. هدف ما این بود که اول به استانبول بریم تا بتونیم خیلی آرومتر مسیر رو طی کنیم. مسیر آشنا شدن با محیط و فرهنگ متفاوت و کمی اروپایی تر، امکانات و تکنولوژی هایی که کپی برداری هستن از روی غرب، شرایط و امکانات زندگی که برای کشورهای اروپایی میتونه سختر هم باشه و ... . این رو فراموش نکنیم که در ایران ما امکانات زیادی داریم مثل &quot;آب&quot; که قدر اون رو نمیدونیم و خیلی راحت با شستن ماشین دم در منزل، اون رو هدر میدیم. برای این هدف باید به دنبال کار خوب میگشتم که بتونه نیاز های اولیه زندگی ما رو تامین کنه. به همین دلیل رزومم رو ساختم که میتونین با مقاله زیر روند رو بررسی کنین.  https://virgool.io/@nima.2004hkh/%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D9%85%D8%A7%D9%87-%D9%87%D8%A7-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%A8-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-mecbirhltuxf مصاحبه های زیاد انجام دادم با سوئد و هلند و ... اما به دلیل خام بودن در مصاحبه ها، رد شدم. خوب شرکتی که قصد گرفتن ویزای کاری داره، خیلی ریز اقدام میکنه. خیلی فرق داره که اونجا باشیم و مصاحبه بدیم تا اینکه با اسکایپ باشیم و یا حتی خیلی تفاوت داره که نوع کار ریموت باشه یا نه. حساسیت ها خیلی تغییر میکنن. دیدیم که باید بریم و با مصاحبه نمیشه. توی همین فکر ها بودم که یکی از دوستان گفت به برنامه نویس های کشور مقصد پیام بده تا راهنماییت کنن. این پیشنهاد باعث شد که با شخصی آشنا بشم که من رو به دوستی معرفی کرد و شروع همکاری ما بود. قرار شد که تا زمانی که میریم ترکیه، ریموت کار کنم.بعد از استارت ریموت، اولین مبلغ برای یکی از دوستانم در تریکه واریز شد و بعد از اون قرار بعدی در استانبول بود و کارهای رفتن.شروع کارهای مهاجرت: پاسپورت:مسلما اولین اقدام، پاسپورته و این بر میگرده به نوع رفتن شما. اینکه شما آقا باشید یا خانم خیلی تاثیر میزاره توی روند دریافت پاسپورت. برای خانم های پیچیدگی جز اجازه گرفتن نداره (متاسفانه). اما برای آقایون. چند حالت پیش روی شما میتونه باشه که مطرح میکنم: قبل 18 سال: خوب این حالت که نیاز به اجازه پدر داره و هیچ مشکل دیگری نداره و خیلی راحتهدانشجو : در این حالت با دریافت گواهی اشتغال به تحصیل و با قرار دادن مبلغ 15 میلیون تومان در بانک قوامین به عنوان وجه نقد، میتونین مجوز خروج رو از نظام وظیفه دریافت کنین. یعد از دریافت مجوز با گرفتن کد سخا به سایت نظام وظیفه میرید و مراحل خروج و دلیل خروج و زمان رفت و برگشت رو مشخص میکنید. اگر در زمان معین شده برنگردید، مبلغ شما برداشت میشه. به تازگی ارشد و یا لیسانس گرفتید و وضعیت تحصیلی نا مشخص دارید:  خوب شما در هر کدوم از حالات، یک سال معافیت دارید. با یک سال معافیتی که دارید میتونین به پلیس نظام وظیفه برید و با بردن رسید اتمام دوره تحصیلی، مجوز خروج رو بگیرید و مراحل فوق رو طی کنین. بعد از گرفتن پاسپورت ، باید به فکر کارهای رفتن باشیداگر متاهل هستید، ریسک رفتن بالایی دارید. باید یا مبلغ خوبی رو همراه خودتون داشته باشید و یا اینکه چند ماه، شما برید و بعد از گرفتن منزل، همسر شما بیان. هزینه های احتمالی: شما برای مهاجرت یک سری هزینه ها دارید که باید پیشبینی کنین و همراه خودتون ببرید. اول از همه، شما میتونین 5500 یورو از کشور خارج کنین (البته کسی چک نکرد ما رو. نمیدونم به چه شکل متوجه میشن).هزینه های زیر برای کشور ترکیه و شهر استانبول هستند.هزینه منزل :‌ هزینه منزل در ترکیه از 1400 لیر در ماه شروع میشه و تا 2200 لیر هم میتونه ادامه داشته باشه. این هزینه بستگی به محل اقامت داره. در قسمت اروپایی ترکیه، منزل هایی با قیمت 1400 و 1600 هستند، اما این منازل، از مرکز کمی دور هستند و شما به جای اون، باید هزینه رفت و آمد رو به مرکز بدید. پس بهتره که شما سعی کنین در مرکز ( مثلا شیشلی ) و یا اطراف آن، به دنبال خونه باشید. چون رفاه بیشتری دارید و اینکه ایرانی های بیشتری هم میبینین. هزینه منزل در ترکیه در زمان ورود خیلی بالاست و این طبیعیه. فرض کنیم که خونه ای با هزینه 1500 لیر پیدا کردید. شما باید مبلغ یک ماه اجاره، پول پیش(پول پیش عمدتا یک یا دو ماه اجاره هست. اما بعضی مالکین، به خارجی خانه اجاره نمیدن و یا پول یک سال یا شش ماه رو دریافت میکنن) و کمیسیون املاک که یک پول اجاره هست رو پرداخت کنین. پس در حالت عادی باید 4500 لیر برای قرار داد پرداخت کنین. بر روی خونه های شارژ ماهیانه یا همان aidat قرار دادن که شامل نظافت ،شوتینگ زباله و ... میشه. آب و برق عمدتا جداست. برخی منازل گاز و اینترنت هم روی aidat قرار میدن. آب و برق بسته به متراژ و میزان استفاده متغیره. برای یک خونه 80 متری با مصرف نرمال ، برق حدود 40 لیر و آب هم 30 یا 40 لیر ترکی میشه.هزینه اسکان در هتل : تا زمان پیدا کردن منزل باید در هتل باشید و هزینه حدودی 70 تا 100 لیر برای هر شب را در یک هتل خیلی معمولی باید کنار بزارید. جایی که فقط بخوابید. بدون امکانات خاص.هزینه خورد و خوراک: خورد و خوراک در ترکیه در یک کبابی معمولی با کیفیت خوب، از نفری 10 لیر تا 30 لیر (با نوشیدنی) متغیره. ممکنه شما استیک سفارش بدید با سس قارچ، خوب همه جای دنیا گرونه.هزینه حمل و نقل : هزینه حمل و نقل با تاکسی خیلی بالاست. مخصوصا از فرودگاه جدید استانبول به مرکز. حدود 120 لیر باید پرداخت کنین. اما رفت و آمد با اتوبوس و مترو هزینه ای به اندازه 2.5 تا 3 لیر داره که خیلی به صرفه هست. البته این رو مد نظر داشته باشید که در مترو با تغییر هر خط، باید هزینه مجدد پرداخت کنین. به همین دلیل هست که میگم بهتره در مرکز باشید. هزینه کشتی هم با مترو یکی هست و تفاوتی نداره. هزینه رفت : بلیط رفت بستگی به سیستمی و یا چارتر بودن داره. چارتر ها ارزونتر هستند اما امکان کنسل شدن ندارن. سیستمی گرونتره ولی میتونین کنسل کنین. چارتری از 800 هزار تومان (امروز که مینویسم اینه) تا 2 میلیون تومان پروازهای ایران هستن. سیستمی هم امروز 1200000 تومان تا 4 میلیون تومان پرواز های ایرانی. هزینه اقامت : هزینه اقامت توریستی برای هرکس حدود 600 لیر میشه که تا یک سال اعتبار داره. اگر شما ویزای کار بگیرید، اقامت شما به اقامت کاری تغییر میکنه و قوانین خودش رو داره. کارفرما هر سال مبلغی رو برای اقامت شما قرار میده که بیمه هم شامل این مورد میشه. تجهیز منزل:‌ شما میتونین منزل مبله بگیرید که هزینه ای نداره. اما برای خیلی ها دلنشین نیست این کار. ما بهتر دیدیم که وسایل خودمون رو داشته باشیم . برای این مورد، بهترین حالت اینه که وسایل برقی از یک برند باشن و وسایل چوبی هم از یک برند باشن. اینجوری تخفیف خیلی خوبی میگیرید. ما از arcelik و modalife استفاده کردیم . این دو برند هم کیفیت بالایی دارن و هم اینکه جز برندهای خیلی خوب محسوب میشن و چون تولید داخل هستند، ارزانتر از برند های دیگر هستند. شما برای وسایل خانه، مبلغ 20 هزار لیر نیاز دارید. این مبلغ حداقل است و جزییات، شاید نزدیک به 2000 لیر باشن. مثل ظروف و ...هزینه های احتمالی: هزینه درمان، هزینه یک حرکت اشتباه و ...پس انداز: شاید کاری که شما پیدا کردید،‌اونی نباشه که میخواستید و شما در ماه اول، دستمزدی دریافت نکردید. نباید که اون ماه ها، به سختی زندگی کنید. بهتره که در حد اجاره خانه و نیاز های اولیه زندگی، به قدر کافی همراه خودتون داشته باشید. به نظر من در حد 20 هزار لیر برای 4 ماه کافیه. خرید مواد ضروری هر ماه :این هزینه های برای فوریه در سال 2020 است. عادی ترین حالت رو سعی کردم در نظر بگیرم. خیلی مهمه که از چه فروشگاهی خرید کنین. میگروس کمی گرونتر از بقیه است.نیم کیلو گوشت چرخ شده گوساله : 22 لیر10 عدد تخم مرغ :‌10 لیرشکر : 2لیرنان بسته بندی : از 2 لیر تا 5 لیر من دیدم. 50 عدد نان لواش 5 لیر.برنج : از کیلویی 7 لیر تا 20 لیربطری آب کوچک : 1.5 لیرکوکا: 3 لیرپنیر: 5 لیرکره : 5 لیریک کیلو سینه مرغ : 17 لیرماست: 3 لیرمیوه : از کیلویی 2 لیر تا 20 لیر دیدم. بستگی به میوه داره. 20 لیر توت فرنگی، گوجه 4 لیر، سیب زمینی 3.75 لیر، پیاز 3 لیر و ...32 عدد دستمال سرویس بهداشتی: 30 لیر22 عدد دستمال آشپزخانه : 23 لیر25 عدد قرص ماشین ضرف شویی : 30 لیرمایع ماشین لباس شویی:‌12 لیرمایع شوینده دست و رو: 4 لیرنمک : 3لیرشکر: 2 لیریک صبحانه یک نفره معمولی: 15 لیرنکته های کاربردی :زمانی که شما وسایل خانه خریداری میکنین، بدون پرداخت هزینه، به منزل آورده میشن و نصب و امتحان میشن. پس شما مشکلی برای هزینه حمل و نقل و گارانتی ندارید. فرض کنید یک سرویس خواب خریداری کردید، شرکتی که از اون ها خرید کردید، خرید شما را تحویل میدن و شروع به نصب آن میکنن. تخت شما در بسته های کوچکتر بسته بندی شده و مثل پازل سرهم میشه. خوردن مشروبات الکلی در خیابان ها ممنوع است و شما اگر مشروب الکلی خریداری کنین، به شما داخل یک مشما مشکی تحویل میدن. به محل مناسب (هتل و یا خانه) برید و میل کنید. این مورد شاید ممیزی باشه، اما باید بدونید، تعارف نداریم که، اگر ندونید و انجام بدید، روی پاسپورت شما نمره منفی ثبت میشه و در دفعات بالاتر، منجر به یک سری مشکلات خواهد شد و دادگاه. سعی کنید که تفریحاتی رو انتخاب کنید که از محل آن ها مطمئن هستید. بعضی محله ها گذرگاه خوبی نیستن،‌مخصوصا با خانواده. دلیل آن هم وجود کلاب ها در اون خیابان هست. عمدتا در ساعات 22 به بعد، افراد در این خیابان ها حالت عادی شاید نداشته باشند و باعث درگیری میشوند. وسیله های نقلیه عمومی به صرفه هستند. ابتدا یک istanbul card تهیه کنین. برای تهیه istanbul card  باید به دستگاه های صدور و شارژ کارت برید و کارت خود را با هزینه 6 لیر خریداری کنین. شما اگر 20 لیر برای خرید کارت بدید،‌کارت شما 14 لیر شارژ خواهد داشت. هزینه مترو و کشتی و اتوبوس 3 لیر است که هرچند نفر میتونن با یک istanbul card عبور کنن. منظور من اینه که اگر شما سه نفر هستید ،‌نیاز نیست که سه کار تهیه کنید، با یک کارت میتونین سه بار حساب کنین. زمانی که خط مترو را تغییر دادید و به خط دیگر رفتید، مجدد باید هزینه ورود به خط جدید را پرداخت کنین. مثل ایران نیست که 4 روز داخل مترو بگردید و 1000 تومن بدید. این نکته میتونه برای ما بد باشه. آب استانبول آشامیدنی نیست و بهتره که از آب های معدنی بزرگ استفاده بشه و یا اینکه آب رو بجوشانید.برای پیدا کردن شغل مناسب به سایت kariyer.net برید. مثل جاب اینجا ی خودمونه. امیدوارم این مقاله تونسته باشه سوالای همه رو جواب بده و گره رو باز کنه. </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Wed, 19 Feb 2020 02:15:56 +0330</pubDate>
            </item>
                    <item>
                <title>بعد از ماه ها بازگشت (در باب برنامه نویسی)</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D9%85%D8%A7%D9%87-%D9%87%D8%A7-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%A8-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-mecbirhltuxf</link>
                <description>ماه ها بود که چیزی ننوشته بودم و ماه ها بود که از ماجرا دور افتاده بودم. اما امروز را برای نوشتن مناسب دیدم. در این ماه ها که گذشت، اتفاقات عجیب و دلنشینی افتاد. خبرهای خوب و بد زیادی شنیدیم و پستی و بلندی های زیبایی را تجربه کردیم. از جهتی که من یکی از چندین برگزارکننده دورهمی های جامعه ری اکت ایران هستم، قصد دارم در مورد یک سری نا هنجاری ها و یا تصمیم های اشتباه و یا تجربیات بدی که اطرافم دیدم صحبت کنم. خیلی از دوستان من در این مدت مهاجرت کردن و باعث افتخار ما و ایران هستن. در پی مهاجرت این عزیزان، من هم سعی بر تغییر رفتار و کیفیت زندگی خودم داشتم. در این راستا تجربیات زیادی کسب کردم.  با افراد خبره و کاربلد صحبت کردم و از ایشان مشاوره گرفتم. ضعف هایی که داشتم را پیدا کردم و سعی کردم که بهترین شکل  آن ها رو تغییر بدم. بزرگترین ضعف من، انتقادپذیر نبودن.انتقاد پذیری:یکی از خصلت های بدی که میتونه هر شخصی رو از مسیر حرفه ای زندگی دور کنه۷ اینه که نتونه انتقاد بشنوه. وقتی کسی میگه که : نیما این قسمت از کدت رو بد نوشتی و خوانا نیست، نباید جبهه بگیری. من از اون شخص تقاضا کردم من رو راهنمایی کنه، پس نباید از انتقادی که میشنوم، ناراحت بشم. بلکه باید تمام نکات رو رعایت کنم. وقتی که این قسمت از کار درست پیش بره و بتونم بپذیرم که اشتباه کردم، وقت حل مشکل میرسه. یعنی مرحله افزایش قدرت.افزایش قدرت:در این مرحله من سعی کردم تمام ضعف هایی که با مشورت از بقیه پیدا میکنم رو به شکل یک todo در Trello بنویسم و یکی یکی، تسک هایی که معرفی کردم رو Done کنم. این کار باعث میشه من روند پیشرفتم رو بهتر و ملموستر ببینم. این قسمت رابطه مستقیم با افزایش اعتماد به نفس من داشت.افزایش اعتماد به نفس: اعتماد به نفس فاکتورهای زیادی داره. یکی از این فاکتور ها، داشتن دانش، خرد و علمه. همیشه در این مبحث، یاد اثر دانینگ کروگر میافتم. این اثر واقعا من رو در مسیری که پیش گرفتم، خیلی کمک کرد. وقتی به یک باور درست از خودم برسم و مهارت های خودم رو افزایش بدم، میتونم با خیال راحت بگم که skill ای من، ثبات خوبی دارند. پس وقت ایجاد یک رزومه قوی هست. ایجاد رزومه:  در این قسمت، تمام رزومه سازها رو در سطل باطله فرضی ذهنم ریختم و LibreOffice رو باز کردم. رزومه خودم رو نوشتم و شروع به ویرایش تمام قسمت ها کردم . ول از همه باید رزومه یک صفحه ای ایجاد کنم که:1- آدرس لینکداین من داخلش باشه2- تصویر من وجود نداشته باشه3- در مورد سن، وضعیت تاهل و ... چیزی داخلش نباشه4- یک توضیح کوتاه به عنوان Summary داشته باشه (تایتل خیلی مهمه)5- مهارت های من بدون در نظر گرفتن سطح تسلط، در کنار هم قرار بگیرن (به قول دوستی که به من مشاوره دادن، کسی که مصاحبه میکنه خودش متوجه سطح تسلط میشه)6- تجربیات من باید همراه با راهکارها و آورده ای که برای اون شرکت داشتم در یک خط بیان بشه. (هر مورد در یک خط)7- باید تایتل Education  داشته باشم. 8- آدرس Github هم داخل رزومه همراه با شماره تماس و ایمیل قرار داده بشهو....این موارد حاصل صحبت با 5  6 نفر از دوستان خیلی خوبم بود که هر نکته به من درس جدید داد. که نتیجه این صحبت ها، یک پروژه ری اکت شد که به کمک اون میتونین رزومه با این کیفیت طراحی کنین : https://github.com/nimahkh/resume_generator بعد ایجاد رزومه باید تست میکردم که رزومه من چقدر قدرت داره؟ و سعی کنم با اضافه کردن مهارت هایی که از قلم افتادن، به هدف نزدیکتر بشم. برای این کار میتونیم از سایت هایی که با الگوریتم ATS، صحت رزومه رو میسنجن، کار کنیم. (این هم یک نکته ای بود که یاد گرفتم) https://resumeworded.com/upload-resume.php با سایت بالا میتونین چک کنید که چقدر رزومه قوی دارید. من الان کجام؟بعد از همه این کارها، در اثر دانینگ کروگر، به حد اعتماد به نفس قابل قبول همراه با دانش رو به افزایش میرسیم که به ما کمک میکنه تا با خیال راحتتر کار کنیم و با یکدیگر بحث کنیم. چه چیزی مهمتره؟برای این که بخوایم لممون رو افزایش بدیم، من یک todo یک ساله داشتم که تونستم ماه پیش تمام کنم. این todo شامل گزینه های زیر بود:Redux, Redux Middlewares, Express, TDD, Unit test, BDD, GraphQL (Apollo), Context API, HOC best practice, Mongoose, KOA, Docker, Travis, Circle CI, Jenkins, React Custom Hooks, React MQTT Integration, webpack, rollup, Istanbul.js coverage این موارد به اتمام رسیدن . اما مواردی هنوز هستند که در in progress و یا هنوز در todo قرار دارن.مثل: Svelte, RUST, WebAssembly ,Reason ML, Ava.js,  Web3, AMP ...که لیست بزرگی را در بر میگیره. این پیشرفت ها قطعا حاصل کمک دوستان و همکاران من بوده. مهم اینه که چقدر خودم رو باور داشته باشم. در این مقاله میخواستم یک راه و مسیری رو برای دوستانی که قصد پیشرفت بیشتر دارند، روشن کنم. نه اینکه من پیشرفت کرده باشم یا این مسیر برای همه مناسب باشه، اما مسیری بود که من رو تغییر داد. شاید یک نفر دیگر هم تغییر کند. سپاس. بدرود. </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Tue, 31 Dec 2019 10:11:08 +0330</pubDate>
            </item>
                    <item>
                <title>جاوا اسکریپت رو بلدی ، اما توجه نمیکنی</title>
                <link>https://virgool.io/JavaScript8/%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%B1%D9%88-%D8%A8%D9%84%D8%AF%DB%8C-%D8%A7%D9%85%D8%A7-%D8%AA%D9%88%D8%AC%D9%87-%D9%86%D9%85%DB%8C%DA%A9%D9%86%DB%8C-qrcumnq4n7xf</link>
                <description>موضوع آخرین ارائه من در دورهمی جامعه ری اکت ایران در اصفهان (28 شهریور 1398) با اسم: you know js , but you don&#x27;t care  یا &quot;جاوا اسکریپت رو بلدی، اما توجه نمیکنی&quot; انجام شد . اول بگم قضیه چی بود. ?من قرار بود که در مورد Reason React صحبت کنم . اما در ماهی که گذشت، چندین مصاحبه داشتم و در طی این مصاحبه ها دیدم که باید بیشتر روی مبانی جاوا اسکریپت و یا javascript fundamentals تمرکز کنم . ?واقعا اکثر اتفاقاتی که در ری اکت میوفته و ما درک نمیکنیم ، به خاطر ندونستن fundamental ها ست . نه فقط در جاوا اسکریپت ، بلکه توی همه زبان ها ، مبانی اهمیت داره . از جایی که دیدم این ارائه شاید برای برخی دوستان مهم باشه و در دورهمی اصفهان نبودند یا نتونستن باشن ، تصمیم گرفتم تا ارائه را برای عموم قرار بدم تا شاید کمکی باشه .  http://javascript_fundamentals_presentation.surge.sh/ چند مورد رو داخل ارائه با هم در همین پست بحث میکنیم .Currying داخل جاوا اسکریپت مبحث Currying شاید خیلی دیده نشده و یا در موردش نوشته نشده . اما در ری اکت خیلی دیدیم . برای مثال به این کد دقت کنین :const MyComponent= withStyles(styles)(ExampleComponent)export default connect(mapState)(MyComponent);به این تیکه کد در ری اکت میگن ، HOC یا high order component  . این مثال را در قالب یک مثال کوچکتر در جاوا اسکریپت نگاه کنیم . sum(5)(2)(5)جواب این کد باید 12 باشه . برای این کار به این کد نگاه کنیم :var sum =
function (a){
return function(b){
	return function(c){
		return a+b+c;
		}
	}
}کش یا Momoizeاین تابع در ری اکت نسخه 16.8 معرفی شد و با هوک ها استفاده شد . اما ابتدا به یک مثال ساده نگاه کنیم :const add = () =&gt; {
const cache = {};
	return num =&gt; {
		if (num in cache) {
			 return `From cache! ${cache[num]}`;
			} else {
				 const result = num + 10;
	  			 cache[num] = result;
       			 return `Calculated! ${result}`;
       		}
		    };
		};
const addFunction = add();
console.log(addFunction(10));
console.log(addFunction(10));
console.log(addFunction(5 * 2));خروجی بالا مقدار :‌ Calculated! 20 From cache! 20 From cache! 20  خواهد بود . در اولین دفعه اجرا ، کش خالی است و در دو اجرای دیگه ، کش پر هست . از طرفی 10 و 5*2 یکسان هستن .در ری اکت هم از Memo  استفاده شده که با memo  و یا useMemo  میتونین دسترسی داشته باشید  https://reactjs.org/docs/react-api.html#reactmemo مثال های این چنین ، در ارائه وجود داره که میتونین مطالعه کنین باز هم اگر سوال یا پیشنهادی بود ، در حد سوادم در خدمت هستم.با من در تماس باشید . ?@git : nimahkh@linkedin : nimahkh@medium : nima.2004hkh@virgool : nima.2004hkh@dev.to : nimahkh@gmail : nima.2004hkh@protonmail.com : nimahkh</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Fri, 20 Sep 2019 19:51:20 +0430</pubDate>
            </item>
                    <item>
                <title>از یک شرکت ، تا دوشهر (در باب جامعه ری اکت ایران)</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%A7%D8%B2-%DB%8C%DA%A9-%D8%B4%D8%B1%DA%A9%D8%AA-%D8%AA%D8%A7-%D8%AF%D9%88%D8%B4%D9%87%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%A8-%D8%AC%D8%A7%D9%85%D8%B9%D9%87-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-jf5ext5jukku</link>
                <description>داشتم با علی ثامنی (دوست خوبم و از برگزار کنندگان دورهمی های جامعه ری اکت ایران) صحیت میکردم بعد از دورهمی اصفهان (مورخ 1398/05/31) و یک جمله خیلی خوب گفت . &quot;نیما ، ما از یک شرکت کوچیک شروع کردیم ، الان دو شهر بزرگ ، دورهمی داریم&quot;همه خستگی من با همین یک جمله از بین رفت . چون به اهدافمون که نشر علم به صورت ازاد و رایگان ، در تمام ایران بود ، داریم میرسیم . از نظر ما (جامعه ری اکت ایران) ، نشر علم همراه با دریافت مبلغ ، صحیح نیست . با خودم همیشه فکر میکنم که اگر ابن سینا ، علمش رو به صورت close source و بسته ، در اختیار همه قرار میداد چی میشد؟ شاید علم پزشکی تا صد سال دیگه هم به این نقطه نمیرسید . منظورم از close source  ، انتشار علم با رمز و راز هست . که مصداق این کار ، انتشار یک سورس در git به صورت encode  شده هست . یا انتشار یک علم آزاد به صورت تجاری . چرا که وقتی یک علم رایگان در اختیار همه قرار داره ، و ما اون رو ایرانیزه میکنیم و به خاطر این مورد داریم پول میگیریم ، به شعور مخاطب توهین کردیم . خیلی راحت با یک جستجو میشه به همه نتایج رسید . (فقط جستجو در گوگل:   react js tutorial). در اصفهانروز پنج شنبه مورخ 31 مرداد 1398 ، به اصفهان رفتیم و مهمان شرکت ایریسا بودیم . یک شرکت بسیار فنی با کادر مجرب و حرفه ای که واقعا در کنار این عزیزان بودن ، افتخاره . قبل از رفتن به اصفهان از خانم مجد (که از برگزار کنندگان در اصفهان هستند)،  رامیار و سعید شیخی تقاضا کردیم که در صورت امکان ، ارائه ای در زمینه کاری خودشون داشته باشن که با موافقات عزیزان همراه بود .خانم مجد یک تجربه عالی در زمینه realtime authentication به وسیله jwt  و redux-saga  داشتن و نحوه مدیریت کردن side effect ها در ریداکس رو داخل socket.io  مطرح کردن رامیار در ارتباط با دنیای react native  و اتفاقات و تجربیات خودش و پکیج Elegant React native  صحبت کرد . سعید شیخی هم در مورد نحوه فولدربندی و ایجاد یک ساختار صحیح در Enterprise Mode  صحبت کرد و یکی از پروژه های خودش رو به صورت کامل و ریز ، به نمایش کشید و واقعا لذت بخش بود . همزمان در تهرانهمزمان با رویداد اصفهان ، در ساعت 5 روز 31 مرداد 1398 ، در فضای کاری اشتراکی زاویه دورهمی تهران شروع شد . مسلما دورهمی با شکوه و با کیفیتی از دید علمی بود . چرا که با ارائه خانم روحبخش (از برگزارکنندگان دورهمی و طراح لوگو جدید جامعه ری اکت ایران) ، عظیم عاطفی و ادی (از برگزار کنندگان دورهمی) توقع کمتر از این هم نمیره . خانم روحبخش در مورد JSS  و تجربه خودشون در استفاده از این ابزار صحبت کردن . ادی دوباره با یک تکنولوژی تازه به اسم renderer ها در ری اکت همه رو سورپرایز و هیجان زده کرد عظیم عاطفی دوست داشتنی هم به همه ثابت کرد که Next.js یک فریم ورک قدرتمند و کارامده و با تجربیات شخصی مثل عظیم میشه باهاش راحت و بدون دردسر کار کرد و نتیجه گرفت.دورهمی اصفهان از ساعت 15 الی 19 و دورهمی تهران از ساعت 17 الی 19 برگزار شد . چیزی که خیلی باعث رضایت همه تیم برگزاری بود ، رضایت و شادی دوستان شرکت کننده در دورهمی بود . و یک نکته و حرف آخرهمونطور که همیشه در دورهمی ها میگیم ، جامعه ری اکت ایران ، اولین جامعه ری اکت در ایران است که فعالیت خودش رو به صورت رایگان و non-profit از فروردین سال 98 به صورت جدی شروع کرده و در همین مسیر هم خواهد ماند . شاید ما هزینه هایی داشته باشیم ، اما برای این هزینه ها ،یا از اسپانسرها کمک میگیریم یا از برگزارکنندگان و در نهایت هم هر کس که مایل بود donate کنه ، ما استقبال میکنیم . اما به هیچ عنوان ، شرکت و همراهی دورهمی ها ، مستلزم به پرداخت هزینه نمیباشد . جامعه نه مدیر و نه مالک دارد ، البته میشه به این شکل گفت : مالکین جامعه ، تمام افراد شرکت کننده در گروه تلگرام و دورهمی ها و تمام افرادی که مشتاق به یادگیری و یاد دادن به صورت ازاد هستند . ما فقط برگزار کننده هستیم ، نه حرفه ای بودن ما ملاک بر این انتخاب هست ، نه هیچ چیز به جز عشق به جامعه و اهداف اون . تیم برگزاری دورهمی ، هر شخص و اشخاصی میتونه باشه و هرکس که مایل بود ، میتونه داخل تیم قرار بگیره و به عنوان یک کار تیمی ، به هم یاری برسونیم تا دورهمی ها به بهترین شکل رخ بدن . دورهمی ها در هر شهری میتونن برگزار بشن ، اگر دوستان در شهر مورد نظر ، مایل به برگزاری باشند . تنها هدف ما ، نشر علم به صورت آزاد و بدون دریافت ریالی هزینه است  . شما میتونید داخل پروژه های جامعه ری اکت ایران هم سهیم باشید . به لینک گیتهاب جامعه ری اکت ایران برید و پروژه های خودتون رو در جامعه قرار بدید و یا در پروژه های فعلی ، شرکت کنین . ارادت ، پاینده باشید </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 24 Aug 2019 08:52:09 +0430</pubDate>
            </item>
                    <item>
                <title>React  و عملگرهای Bitwise</title>
                <link>https://virgool.io/iran-react-community/react-%D9%88-%D8%B9%D9%85%D9%84%DA%AF%D8%B1%D9%87%D8%A7%DB%8C-bitwise-adajwwq2ps1k</link>
                <description>بعد از انتشار نسخه 16.8 و معرفی Context API  ، خیلی اتفاقات جدید در ری اکت رخ داد . البته ناگفته نمونه که Context API پیشتر در ری اکت وجود داشت اما همه گیر نبود و به این شکل الان ، کار نمیشد . کاری به معایب و مزایا ندارماینکه ریداکس بهتره یا کانتکست هم در این مقاله نمیگنجهخوب وقتی که Context API ‌معرفی میشه ، مسائل مربوط به به روز رسانی درخت و داده ها هم مطرح میشه ، چرا که Context اگر در هر حالتی به روز رسانی رو انجام بده ، تمام چرخه ری اکت مجددا تکرار رندر میشه و این اتفاق اصلا بهینه نیست . به همین دلیل برای اینکه دقیقتر و درستر بتونه این کارو انجام بده ، از Bitwise Operators استفاده کرد . داخل Context دو عملگر مقایسه ای در ری اکت ایجاد شده به اسم changedBits  و observedBits changedBitsدر واقع changedBits زمانی اتفاق میفته که ما قصد تغییر یک مقدار در آبجکتی داخل Provider  رو داریم که از طریق Consumer امکان پذیر هست ، به صورتی که این تغییر ، قبل از رخداد ، باید بررسی بشه که آیا با آبجت قبل از خودش یکسان هست یا نه . اگر یکسان باشه ، تغییرات رخ نمیده ، چون منجر به به روز رسانی کامپوننت میشه ، اما اگر تغییرات یکسان نباشن ، به روز رسانی اتفاق نمیفته و کامپوننت مجدد رندر نمیشه . unstable_observedBitsobservedBits  نماینده صحت مشاهده بیت هایی هستند که Consumer  به وسیله value اونها رو دیده .در واقع Consumer  به کمک Value  متوجه میشه که چه بیت هایی داخل Provider ارسال شدن و با بیت های خودش مقایسه میکنه . observedBits  میتونه متوجه بشه که بیت ها دیده شدن یا نه . برای اینکه بخوایم با این امکان کار کنیم باید از نسخه unstable ‌کمک بگیریم و یک props  به Consumer  پاس بدیم . const Foo = () =&gt; (
  &lt;Consumer unstable_observedBits={store.observedBits.foo}&gt; /*pass an object as observer */
    {({foo, update}) =&gt; (
      &lt;div&gt;
        &lt;button
          ={() =&gt;
            update((state) =&gt; ({...state, foo: state.foo + 1}))  /*if value changed , component will re render */
          }
        &gt;
          click
        &lt;/button&gt;
        &lt;p&gt;Foo is {foo}&lt;/p&gt;
      &lt;/div&gt;
    )}
  &lt;/Consumer&gt;
);در مثال بالا ما یک آبجکت داخل observer پاس دادیم و قصد داریم که به عنوان observer صحت داده ای که در حال تغییر هست رو بررسی کنه و در نهایت به ما بگه که اگر داده تغییر کرد ، کامپوننت را با داده جدید به ما نمایش بده . Bitwise operatorsاتفاق هایی که در بالا دیدیم ، به کمک مقایسه کننده های بیتی انجام میشه . اما Bitwise Operator  چی هست؟ برای این موضوع ابتدا به لینک زیر برید  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators عملگرهای بیتی ، برای مقایسه صحت دو مقدار ، اول اون مقدار رو به یک داده 32 بیت تبدیل میکنن و در واقع اون رو مقایسه میکنن . مثال :‌عدد 5 برابر :‌ 00000000000000000000000000000101اگر ما بخوایم XOR  رو در این داده مقایسه کنیم باید تمام 0 ها به یک و یک ها به 0 تغییر کنند که میشه :11111111111111111111111111111010  که برابر با  -6 خواهد بود. چرا منفی؟ چون اولین عدد برابر با 1 هست . اگر اولین عدد برابر 0 بود به شکل  01111111111111111111111111111010 نتیجه 6 مثبت بود . خوب حالا به این نتیجه رسیدیم که ~5=-6ری اکت هم برای مقایسه در side effect  ها، در کانتکست از همین روش استفاده میکنه که داخل این فایل میتونین یک مثال رو ببینین :export type HookEffectTag = number;  export const NoEffect = /*             */ 0b00000000;  export const UnmountSnapshot = /*      */ 0b00000010;  export const UnmountMutation = /*      */ 0b00000100;  export const MountMutation = /*        */ 0b00001000;  export const UnmountLayout = /*        */ 0b00010000;  export const MountLayout = /*          */ 0b00100000;  export const MountPassive = /*         */ 0b01000000;  export const UnmountPassive = /*       */ 0b10000000; https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactTypeOfMode.js?source=post_page-----e9506a4578aa---------------------- در کل استفاده از bitwise  ها در جاوا اسکریپت برای بالا بردن دقت مقایسه استفاده میشه . امیدوارم که این مقاله مفید باشه . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Tue, 20 Aug 2019 14:45:38 +0430</pubDate>
            </item>
                    <item>
                <title>چی گذشت؟ از Laravel تا React و جامعه ری اکت ایران</title>
                <link>https://virgool.io/programmers-revolution/%DA%86%DB%8C-%DA%AF%D8%B0%D8%B4%D8%AA-%D8%A7%D8%B2-laravel-%D8%AA%D8%A7-react-%D9%88-%D8%AC%D8%A7%D9%85%D8%B9%D9%87-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-jvacmyb0o9gl</link>
                <description>خوب این روزا همه دوست دارن از خودشون بنویسن . کار جالبی نیست به نظرم. اما من کارای جالب دوست ندارم انجام بدم . میخوام داستان کسی رو بگم که یک هدف توی سر داشت و خواست اون هدف رو بزرگتر و قوی تر کنه و ببینیم چی توی سرش میگذره .WhoAmI?یک برنامه نویس فول استک ، عاشق لینوکس که با یک برنامه نویس عاشق لینوکس ازدواج کرده.چند سال پیش قبل از اینکه به تهران مهاجرت کنم ، فقط با کدیگنایتر کد میزدم که یک فریم ورک خوب در زمان خودش بود . مشکلات زیادی هم داشت . همین مشکلات بود که باعث شد سعی کنم برای خودم فریم ورک بنویسم (اینم از همون کاراست که همه دوست دارن بکنن). بعد از اون یک شرکت زدیم و شروع کردم به کارای قبلی . یعنی تدریس توی آموزشگاه و بعد تدریس توی دفتر کار و بعدش انجام کارهای استارت آپ . دقیقا جایی که اشتباه کردم همین بود . باید اول استارت آپ رو بررسی میکردیم و BMC  طراحی میکردیم و بعدش دنبال این باشیم که با این مدل میشه موفق شد یا نه؟ بعد از جذب سرمایه گذار هم شاید شرکت میزدیم . این اشتباه باعث شد که شرکت رو ببندم و کلی ضرر کنم . از طرفی توی شهری مثل کرمان ، هیچ اینده ای برای شغل آی تی نمیشه متصور شد . با شرکت فست کلیک آشنا شدم و دورادور یکی از پروژه هاشون رو انجام میدادم . بعد از بستن شرکت باهاشون صحبت کردم و گفتن بیا تهران . کار اوکیه . با 200 هزار تومن مهاجرت کردم و رفتم تهران . همه چیز عالی بود . زندگی وقتی سخت میشه که سخت بگیریم (کاش خوابم میبرد خودم با لالایی هام) . بعد از مدتی که توی فست کلیک بودم ، شرکت رو تغییر دادم و رفتم به جایی به اسم (اسمشو نبر. چون از مدیر عاملش به شدت بدم میاد) اونجا با حسن گیلک آشنا شدم و همکار . حسن جدا از اینکه لاراول میزد ، React رو هم شروع کرده بود . من با لاراول توی کرمان اشنا شده بودم و یک پروژه نصفه نیمه هم زدم . اما جدی نبودم باهاش . تا اینکه حسن همه چیز رو برام روشن کرد . دیگه قسمت نبود کنارش بمونم و بعد از تقریبا یک سال ، جدا شدیم و من رفتم هام...ن . توی شرکت هام...ن ، همه چیز با ما بود . یعنی پروژه تعریف میشد (با ما بود) ، تحلیل میشد (با ما بود)، طراحی میشد (با ما بود) ، دیپلوی میشد(با ما بود) ، کد نویسی میشد (با ما بود) و کلا با ما بود . وقتی میگم ما ، یعنی چهار برنامه نویس بودیم با چهار پروژه متفاوت که هممون باید این کارها رو خودمون انجام میدادیم . از اونجایی که شرکت های ایرانی خیلی روی نظم و قانون کار میکنن ،‌ گفتن یک هفته وقت دارید که ری اکت رو یاد بگیرید . (من و یکی دیگه از دوستان) و از جایی که برنامه نویس هم اعتراض نمیکنه ، گفتیم چشم . شروع کردم داکیومنت رو خوندم و مثال همیشگی todo  رو اجرا کردم و رفتم توی آموزش های روتر و ... روزی 8 ساعت وقت گذاشتم و بعد از یک هفته ، وقت داشتم که پروژه رو با بکند (لاراول) و فرانت (ری اکت) توی دو هفته بیارم بالا . بدون باگ . خوب انجام شد . از طرفی نه UI داشتم و نه هیچ پلنی . با دیدگاه خودم کد زدم و تموم شد . اینکه پروژه چی شد و به کجا رسید مهم نیست (چون پروژه دو هفته ای اساسا مهم نیست). توی تلگرام با گروه های محمد نیکو آشنا شدم و چون عادت به پاسخ دادن سوالات داشتم (مدیر جوملا فروم بودم) به عادتم ادامه دادم و هرکس سوال میپرسید جواب میدادم . کم کم شدم مدیر گروه لاراول و ری اکت وب آموز . در همین زمان بود که یک پیام توی پی وی برام اومد با این متن که :  &quot;دعوت میکنیم به گروه جامعه ری اکت ایران بیاین و &quot; از این حرفا . نمیدونم عامر بود یا محمد یا علی سامنی . اما رفتم و به عادتم ادامه دادم . کم کم به خاطر اهداف جامعه ، علاقم بیشتر شد که وقتم رو بیشتر بگذرونم . اما خوب از طرفی هم تازه ازدواج کرده بودم و کمی سخت بود که بتونم زمانم رو جوری مدیریت کنم که هم به کارای شرکت برسم ، هم خونه ، هم گروه . اما بالاخره با مناعت طبعی که همسرم دارن و درکی که از شغل من دارن (خودشون هم از برنامه نویسان قابل لاراول هستن) کمک کردن تا بهتر زمان رو مدیریت کنیم . کم کم دورهمی ها شروع شدن و اهداف اصلی جامعه ری اکت ، به واقعیت تبدیل شد . نشر علم چیزی که جامعه ری اکت ایران به این دلیل شکل گرفت . نه اهداف مالی ، بلکه اهداف معنوی . هیچ شخصیتی ، سود مادی و مالی ، از این دورهمی ها و جامعه ری اکت ایران نمیبره و اگر هم کسی سودی ببره ، اون روز من جامعه رو ترک میکنم . چون اعتقاد دارم که رسالت ما(تمام اعضای جامعه)، نشر علمه . محل کسب درامد ، شرکتی که براش کار میکنیمه . خوب زندگی هنوز جریان داره . موقعیت هایی میان و میرن که شاید باید محکم نگه دارمشون و نذارم که برن . اما شرایطی هست برای هرکس ، که نمیتونه مطمئن باشه که این موقعیت ، همون نقطه عطف زندگی هست یا نه . شرایطی مثل کار در اصفهان ، که باعث شد هم دورهمی در اونجا شکل بگیره ، هم دوستان خوبی پیدا کنم و هم دیدم به کارم بازتر بشه . بدون شک ، اتفاقات بهتر و کارای هیجان انگیزتری برای یک برنامه نویس رخ میده . اگر بخوایم!!!</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Wed, 24 Jul 2019 10:11:50 +0430</pubDate>
            </item>
                    <item>
                <title>ایجاد چندین boilerplate جذاب در ری اکت</title>
                <link>https://virgool.io/iran-react-community/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DA%86%D9%86%D8%AF%DB%8C%D9%86-boilerplate-%D8%AC%D8%B0%D8%A7%D8%A8-%D8%AF%D8%B1-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-b0144crbcgpz</link>
                <description>داستان از اونجایی شروع شد که در جامعه ری اکت ایران (irc) پویایی و جنب و جوش بچه ها بیشتر شد و توی چنین جامعه ای ، باید همیشه به دنبال راهکار بود . کم کم سوال ها تغییر کرده بود و به سمت ایجاد راه کار ، حرکت میکرد . به عنوان عضو کوچکی از جامعه ، این پویایی ها باعث شد تا از تجربه همه استفاده کنم و یک راه کار بهتر رو ارائه بدم . البته راهکاری که امروز در موردش صحبت میکنیم ، به شکل های دیگه هم دیده شدن . اما با نسخه ای جذاب تر خواستم ارائه بدم . تصور کنید که داخل ترمینال خودتون با یک دستور ساده ، میتونید هر مدل بویلرپلیت ssr در ری اکت داشته باشید و شروع کنید با اون بویلرپلیت کد نویسی کردن . قطعا میزان پیشرفته بودن بویلرپلیت ها بالا نیستند ، اما به مرور زمان با استفاده از contributor  هایی که به پروژه اضافه میشن ، شاهد تقویت بیشتر آن ها خواهیم بود . اسم پروژه React Easy Boilerplate است که به زودی بیشتر با اون آشنا میشیم . دوست خوبم ، محمد امین در اتمام این پروژه بسیار به من کمک کرد و در ویندوز و لینوکس و مک ، به خوبی کار میکنه . کافیه که دستورات زیر رو بزنید و با چند دستور ساده طبق تصاویر ، بویلرپلیت خودتون رو ایجاد کنین .  https://github.com/nimahkh/react-easy-boilerplates $ npm i -g react-easy-boilerplateخوب نصب با موفقیت تمام شد . حالا به مسیری که دوست دارید برید و دستور زیر رو امتحان کنین$ react-easy-boilerplateطبق تصاویر زیر به سوالات پاسخ بدید . لازم به ذکر است که بویلرپلیت ها در حال اضافه شدن هستن و به دنبال بهترین تنظیمات برای هرکدام هستیم  . به همین دلیل در شروع این پروژه ، دو حالت آماده شده اند و به زودی تکمیل میشوند . لطفا با نظرهای خود ، به بهبود پروژه کمک کنید !</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Tue, 23 Jul 2019 00:06:50 +0430</pubDate>
            </item>
                    <item>
                <title>چهارمین دورهمی جامعه ری اکت ایران (دیدگاه شخصی)</title>
                <link>https://virgool.io/iran-react-community/%DA%86%D9%87%D8%A7%D8%B1%D9%85%DB%8C%D9%86-%D8%AF%D9%88%D8%B1%D9%87%D9%85%DB%8C-%D8%AC%D8%A7%D9%85%D8%B9%D9%87-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D8%AF%DB%8C%D8%AF%DA%AF%D8%A7%D9%87-%D8%B4%D8%AE%D8%B5%DB%8C-xdh6gdgtuh5o</link>
                <description>جای خیلی ها خالی بود . در روز 27 تیر ماه سال 1398 ، چهارمین دورهمی جامعه ری اکت ایران را برگزار کردیم . چیزی که واقعا متفاوت بود ، جمع زیادی از افراد متخصص بود که نسبت به قبل  تعدادشون بیشتر شده بود و باعث خوشحالی ما شدند . چرا که در کنار هم بودن افراد متخصص و حرفه ای و افراد مبتدی ، باعث ایجاد یک جامعه حرفه ای میشه . سعی همه ما اینه که همه به سطح حرفه ای گرایی برسیم . در ابتدای دورهمی ، سعی کردم کمی با دوستان بیشتر آشنا بشیم و باب دوستی رو باز کنیم . به هر حال ما یک جامعه صمیمی هستیم که در چهارچوب احترام ، به شکلی دوستانه با هم تبادل اطلاعات میکنیم تا نشر علم صورت بگیرد و سطح یکدیگر رو ارتقاع بدیم . هیچکس در این قاعده مستثنا نیست .دوستانی از شرکت های بزرگ و به نام ایران تشریف اوردن (که شاید مشتاق نباشن من نام ببرم) که دیدار با این عزیزان ، باعث افتخار و خرسندی من بود . کمی بعدتر ، به علت ناهماهنگی هایی که اتفاق افتاد ، جمع زیادی از دوستان با تاخیر اندکی به سالن آمدند و شور و هیجان مضاعفی رو به دورهمی القا کردند . البته ما شرمنده عزیزان هم هستیم . دوست خیلی خوب من ، علی ثامنی و محمدرضا عزیز واقعا برای این دورهمی ها زحمت زیادی میکشن و در این گرمای طاقت فرسا ، به تنهایی خیلی از کارها را انجام دادن و من واقعا سپاسگزارشون هستم . قصوراتی هم اگر هست ، به علت دست تنها بودن عزیزان است . انشالله بشه که جبران کنیم . بعد از یک استراحت کوتاه ، محمد ابراهیمی اول ، ارائه بسیار پر محتوای خود را در مورد context api و redux اغاز کرد . با استناد به یکی از مقاله های بنده حقیر که لینک را در زیر قرار میدم ، تفاوت ها و نقاط قوت و ضعف این دو استیت منیجمنت رو مطرح کردن و با کمک تجربیات بسیار زیادی که دارن ، جمع بندی کاملی در مورد استفاده هر کدام گفتند .  hodhttps://virgool.io/iran-react-community/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-context-api-%DB%8C%D8%A7-redux-%D8%A8%D9%87-%D8%AF%D9%88%D8%B1-%D8%A7%D8%B2-%D8%AA%D8%B9%D8%B5%D8%A8-vzdsnofrhipl متاسفانه زمان استراحت نداشتیم و در ارائه بعدی دوست و استاد عزیزم ، رضا بابایی (که همه به اسم رامیار میشناسیمش) با یک انرژی غیر قابل وصف ، در مورد پروژه elegant react native  که یکی از پروژه های خودش در باب تجره کد نویسی react native  هست صحبت کرد . این پروژه که در حال حاضر یکی از پروژه های پر استفاده جامعه ری اکت ایران است ، حاصل یک سال زحمت رامیار برای جمع آوری تجربیات گران بها است . در پایان صحبت هایی کردم و یک سری موارد رو به سمع و نظر دوستان رسوندم . در آینده نه چندان دور ، دورهمی به صورت همزمان ، در اصفهان و تهران اتفاق خواهد افتاد که به لطف دوستان اصفهانی و کمک های این عزیزان ، با لیبل &quot;جامعه ری اکت ایران&quot; در خدمتشان خواهیم بود . تقاضا کردیم از اعضای محترم خانم در جامعه ، که به صورت داوطلبانه ، در دور همی ها ارائه داشته باشند تا همه از تجربیات عزیزان استفاده کنیم . اگر شخصی به اشتباه ، تمسخر و یاد توهینی به ارايه دهنده کند متاسفانه عذرشون رو خواهیم خواست و در جامعه جایگاهی نخواهند داشت . چرا که اولین اصل جامعه ، احترام  و حقوق مساوی بین تمام اعضای جامعه است . در آخر از دوستان تقاضا کردیم که نظرات و انتقدات خود را به ادرس ایمیل iran.react.community@gmail.com  ارسال کنند . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sun, 21 Jul 2019 09:54:01 +0430</pubDate>
            </item>
                    <item>
                <title>ایجاد یک سایت چند قالبی (دارک و لایت) در ری اکت</title>
                <link>https://virgool.io/iran-react-community/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%B3%D8%A7%DB%8C%D8%AA-%DA%86%D9%86%D8%AF-%D9%82%D8%A7%D9%84%D8%A8%DB%8C-%D8%AF%D8%A7%D8%B1%DA%A9-%D9%88-%D9%84%D8%A7%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-dm27uijinl8w</link>
                <description>بعد از مدت ها برگشتم . این بار با یک ویدئو . دوست داشتم که تجربه ایجاد یک سایت با دو قالب دارک و لایت و نحوه پیاده سازی اون رو در ری اکت با هم کار کنیم . خوب قبل از اینکه ویدئو رو ببیند کمی صحبت کنیم طبق علاقه شخصی خودم و دلایل منطقی (یا حتی غیر منطقی و تعصبی) از context api  استفاده کردم. در کنار اون ، متریال رو نصب کردم (material-ui نسخه 4.2) که با پروایدری که داره بتونیم قالب رو کامل تغییر بدیم . خوب توی این راه به مشکلاتی خوردم ، چون هنوز داکیومنت جدید متریال رو کامل نخوندم و به همین دلیل در تابع createMuiTheme  به مشکلاتی خوردم و برطرف کردم . ممنون میشم نظرتون رو بدونم کد فایل ها  رو بعد از فیلم قرار دادم .  https://www.aparat.com/v/eEPAX state.jsimport React, {createContext, useContext, useReducer} from &#039;react&#039;;

export const StateContext = createContext();

export const StateProvider = ({reducer, initialState, children}) =&gt;(
    &lt;StateContext.Provider value={useReducer(reducer, initialState)}&gt;
        {children}
    &lt;/StateContext.Provider&gt;
);

export const useStateValue = () =&gt; useContext(StateContext);MaterialUIProvider.jsimport {createMuiTheme} from &#039;@material-ui/core/styles&#039;;
import purple from &#039;@material-ui/core/colors/purple&#039;;
import green from &#039;@material-ui/core/colors/green&#039;;

const primary = green[500];
const accent = purple[&#039;A200&#039;];

const light = {
    primary: {
        main: primary
    },
    secondary: {
        main: accent
    },
}

const dark = {
    primary: {
        main: accent
    },
    secondary: {
        main: primary
    },
}

export const lightTheme = createMuiTheme({
    palette: light,
});

export const darkTheme = createMuiTheme({
    palette: dark,
});Login.jsimport React, {useEffect} from &#039;react&#039;;
import Avatar from &#039;@material-ui/core/Avatar&#039;;
import Button from &#039;@material-ui/core/Button&#039;;
import CssBaseline from &#039;@material-ui/core/CssBaseline&#039;;
import TextField from &#039;@material-ui/core/TextField&#039;;
import FormControlLabel from &#039;@material-ui/core/FormControlLabel&#039;;
import Checkbox from &#039;@material-ui/core/Checkbox&#039;;
import Link from &#039;@material-ui/core/Link&#039;;
import Grid from &#039;@material-ui/core/Grid&#039;;
import Box from &#039;@material-ui/core/Box&#039;;
import LockOutlinedIcon from &#039;@material-ui/icons/LockOutlined&#039;;
import Typography from &#039;@material-ui/core/Typography&#039;;
import {makeStyles} from &#039;@material-ui/core/styles&#039;;
import Container from &#039;@material-ui/core/Container&#039;;
import LightButton from &quot;@material-ui/icons/Highlight&quot;
import DarkButton from &quot;@material-ui/icons/HighlightOutlined&quot;
import {useStateValue} from &quot;./state&quot;;
import IconButton from &quot;@material-ui/core/IconButton/IconButton&quot;;

function MadeWithLove() {
    return (
        &lt;Typography variant=&quot;body2&quot; color=&quot;textSecondary&quot; align=&quot;center&quot;&gt;
            {&#039;Built with love by the &#039;}
            &lt;Link color=&quot;inherit&quot; href=&quot;https://material-ui.com/&quot;&gt;
                Material-UI
            &lt;/Link&gt;
            {&#039; team.&#039;}
        &lt;/Typography&gt;
    );
}

const useStyles = makeStyles(theme =&gt; ({
    &#039;@global&#039;: {
        body: {
            backgroundColor: theme.palette.common.white,
        },
    },
    paper: {
        marginTop: theme.spacing(8),
        display: &#039;flex&#039;,
        flexDirection: &#039;column&#039;,
        alignItems: &#039;center&#039;,
    },
    avatar: {
        margin: theme.spacing(1),
        backgroundColor: theme.palette.secondary.main,
    },
    form: {
        width: &#039;100%&#039;, // Fix IE 11 issue.
        marginTop: theme.spacing(1),
    },
    submit: {
        margin: theme.spacing(3, 0, 2),
    },
}));

export default function SignIn() {
    const classes = useStyles();
    const [{theme}, dispatch] = useStateValue();

    return (
        &lt;Container component=&quot;main&quot; maxWidth=&quot;xs&quot;&gt;
            &lt;CssBaseline/&gt;

            &lt;div className={classes.paper}&gt;
                {theme === &quot;light&quot; &amp;&amp;
                &lt;IconButton
                    ={() =&gt; {
                        dispatch({
                            type: &quot;changeTheme&quot;,
                            theme: &quot;dark&quot;
                        })
                    }}&gt;
                    &lt;LightButton/&gt;
                &lt;/IconButton&gt;
                }

                {theme === &quot;dark&quot; &amp;&amp;
                &lt;IconButton
                    ={() =&gt; {
                        dispatch({
                            type: &quot;changeTheme&quot;,
                            theme: &quot;light&quot;
                        })
                    }}&gt;
                    &lt;DarkButton/&gt;
                &lt;/IconButton&gt;
                }
                &lt;Avatar className={classes.avatar}&gt;
                    &lt;LockOutlinedIcon/&gt;
                &lt;/Avatar&gt;
                &lt;Typography component=&quot;h1&quot; variant=&quot;h5&quot;&gt;
                    Sign in
                &lt;/Typography&gt;
                &lt;form className={classes.form} noValidate&gt;
                    &lt;TextField
                        variant=&quot;outlined&quot;
                        margin=&quot;normal&quot;
                        required
                        fullWidth
                        id=&quot;email&quot;
                        label=&quot;Email Address&quot;
                        name=&quot;email&quot;
                        autoComplete=&quot;email&quot;
                        autoFocus
                    /&gt;
                    &lt;TextField
                        variant=&quot;outlined&quot;
                        margin=&quot;normal&quot;
                        required
                        fullWidth
                        name=&quot;password&quot;
                        label=&quot;Password&quot;
                        type=&quot;password&quot;
                        id=&quot;password&quot;
                        autoComplete=&quot;current-password&quot;
                    /&gt;
                    &lt;FormControlLabel
                        control={&lt;Checkbox value=&quot;remember&quot; color=&quot;primary&quot;/&gt;}
                        label=&quot;Remember me&quot;
                    /&gt;
                    &lt;Button
                        type=&quot;submit&quot;
                        fullWidth
                        variant=&quot;contained&quot;
                        color=&quot;primary&quot;
                        className={classes.submit}
                    &gt;
                        Sign In
                    &lt;/Button&gt;
                    &lt;Grid container&gt;
                        &lt;Grid item xs&gt;
                            &lt;Link href=&quot;#&quot; variant=&quot;body2&quot;&gt;
                                Forgot password?
                            &lt;/Link&gt;
                        &lt;/Grid&gt;
                        &lt;Grid item&gt;
                            &lt;Link href=&quot;#&quot; variant=&quot;body2&quot;&gt;
                                {&quot;Don&#039;t have an account? Sign Up&quot;}
                            &lt;/Link&gt;
                        &lt;/Grid&gt;
                    &lt;/Grid&gt;
                &lt;/form&gt;
            &lt;/div&gt;
            &lt;Box mt={5}&gt;
                &lt;MadeWithLove/&gt;
            &lt;/Box&gt;
        &lt;/Container&gt;
    );
}App.jsimport React from &#039;react&#039;;
import Login from &quot;./Login&quot;;
import {StateContext, StateProvider} from &quot;./state&quot;;
import {darkTheme, lightTheme} from &quot;./MaterialUIProvider&quot;;
import {ThemeProvider} from &#039;@material-ui/styles&#039;;

export default function SignIn() {

    const initialState = {
        theme: &#039;light&#039;
    }

    const reducer = (state, action) =&gt; {
        switch (action.type) {
            case &#039;changeTheme&#039;:
                return {
                    ...state,
                    theme: action.theme
                };

            default:
                return state;
        }
    };

    return (
        &lt;StateProvider initialState={initialState} reducer={reducer}&gt;
            &lt;StateContext.Consumer&gt;
                {value=&gt; {
                    const theme=value[0].theme

                    return (
                        &lt;ThemeProvider theme={theme === &#039;light&#039; ? lightTheme : darkTheme}&gt;
                            &lt;Login/&gt;
                        &lt;/ThemeProvider&gt;
                    )
                }
                }
            &lt;/StateContext.Consumer&gt;
        &lt;/StateProvider&gt;
    );
}</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Wed, 17 Jul 2019 23:51:14 +0430</pubDate>
            </item>
                    <item>
                <title>نود جی اس رو از کجا شروع کنیم؟</title>
                <link>https://virgool.io/iran-nodejs-community/%D9%86%D9%88%D8%AF-%D8%AC%DB%8C-%D8%A7%D8%B3-%D8%B1%D9%88-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%DB%8C%D9%85-rq4tup3muhb8</link>
                <description>خیلی مطلب جسورانه ای خواهد بود . چرا که من در حدی نیستم که بخوام پاسخ سوال به این سختی و پیچیده گی رو بدم . اما به دلیل مناعت طبع دوستان که لطف داشتند و از من خواستند مطلبی در این باب بنویسم ، پس  سعی کردم مطابق با تجربه خودم و دیدگاه هایی که وجود داره ، مطلبی بنویسم . اول از همه باید بدونیم داریم چی یاد میگیریم . من چون اعتقاد دارم که  برنامه نویس باید زبان انگلیسی نسبتا خوبی داشته باشد و قصد یاد دادن چیزی هم ندارم ، پس از وب سایت نود جی اس ، یک سری مطالب رو بیان میکنم که فکر میکنم مهم هستند Node.js® is a JavaScript runtime built on Chrome&#x27;s V8 JavaScript engine.Node.js is an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser.(wikipedia)طبق گفته های بالا ، نود جی اس یک زبان نیست و همونطور که دیدیم ، یک موتور هست که با جاوا اسکریپت اجرا میشه .جاوا اسکریپتخوب ، اول از همه باید با جاوا اسکریپت آشنا بشیم و تسلط نسبی داشته باشیم روی نحوه کار کردن با جاوا اسکریپت . برای این کار باید یک دید کلی داشته باشیم . باید یک شناسنامه کامل از اکما اسکریپت ها و تفاوت نسخه هایی که موجود هست را بدونیم .  https://en.wikipedia.org/wiki/ECMAScript لینک هایی معرفی میکنم تا بتونیم جاوا اسکریپت رو کامل و خوب یاد بگیریم . به این منظور ، به ترتیب لینک ها رو جلو میریم . البته اعتبار لینک ها تضمین شده هستند .  https://javascript.info/  https://developer.mozilla.org/en-US/docs/Web/JavaScript  https://medium.com/@madasamy/15-javascript-concepts-that-every-nodejs-programmer-must-to-know-6894f5157cb7 نود جی اسدر این مرحله باید حتما بدونیم که نود جی اس داره با چه ساختاری کار میکنه؟ مثل اینکه blocking ‌و non-blocking و تفاوت های async  و sync ‌و ... رو بدونیم . بهتره که داکیومنت جامعی از نود جی اس بخونیم .باندلر هامشکل بعدی که دیده شده و خیلی ها با اون مشکل دارن ، نداشتن مهارت کافی بر روی bundler های جاوا اسکریپت هست . بهتر اینه که بعد از کسب مهارت کافی در جاوا اسکریپت ، دلیل و نحوه استفاده از باندلر ها رو بدونید . JavaScript bundlers are similar to loaders but they are mostly concerned with making code ready for production.همانطور که در بالا نوشتم ، باندلر ها ،‌دغدغه ایجاد یک نسخه production با پرفورمنس خوب را دارند . در لینک زیر میتونید لیست بهترین باندلر ها که در اولین ردیف آن ، webpack  قرار دارد رو ، ببینید .  https://www.slant.co/topics/3900/~best-frontend-javascript-module-bundlers قرار نیست به همه این باندلر ها تسلط داشته باشید . اما باید بتونید به راحتی کانفیگ کنید و اصطلاحات رو درک کنید . فریم ورک ها در مرحله بعدی باید بدونیم که چه هدفی داریم؟ قصد نوشتن کد های سمت وب داریم یا اینکه میخوایم یک نرم افزار بنویسیم که روی دسکتاپ کار کنه یا یک موبایل اپلیکیشن و حتی کارهای روبوتیک و یا  نرم افزارهایی برای arduino  یا میکرو کامپیوتر ها مثل  raspberry pi؟خوب برای هر کدوم ، فریم ورک ها و بویلرپلیت های خاص خودشو داریم . فریم ورک های وب :Express.js https://expressjs.com/ Koa.js https://koajs.com/ Sails.js https://sailsjs.com/ AdonisJs https://adonisjs.com MeteorJs https://www.meteor.com/ NestJs https://nestjs.com مواردی که ذکر شد ، محبوب ترین ها هستند و دلیل بر برتری ندارند و مواردی که نوشته نشدند بسیار زیادندفریم ورک های cross platformElectron js https://electronjs.org/ NW.js https://nwjs.io/ Meteor.js https://www.meteor.com/ ذخیره سازی cache ذخیره سازی در cache برای بالا بردن پرفورمنس اپلیکیشن ها یک امر لازم و مهم است . express-redis-cache https://www.npmjs.com/package/express-redis-cache node-cache https://www.npmjs.com/package/node-cache cache-manager https://www.npmjs.com/package/cache-manager مدیریت پایگاه دادهMongoose ODM (Mongo DB) https://mongoosejs.com/ Sequelize docs.sequelizejs.com TypeORM https://typeorm.io/ Mysql https://github.com/mysqljs/mysql  https://virgool.io/JavaScript8/%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-mysql-%D8%AF%D8%B1-nodejs-c2qq531hzxir سوکت ها و فریم ورک های آنسوکت یک پروتوکل برای ارتباط real time بین اپلیکیشن ها است (وب ، موبایل ، دسکتاپ و ...). این پروتوکل ، فریم ورک های مختلف زیادی دارد که معروفترین آنه socket.io  هست . البته معروف بودن دلیل بر بهتر بودن نیست . باید بدونید که پروژه شما به چه چیز هایی نیاز دارد . socket.io https://github.com/socketio/socket.io ws https://github.com/websockets/ws Feathers https://github.com/feathersjs/feathers Express-ws https://github.com/HenningM/express-ws انتشار برنامه های وب (Deploying)در این مرحله ، باید نحوه انتشار برنامه ها بر روی وب سایت رو بدونیم . این مورد را Deploy  کردن میگن. برای این کار بهترین روش شناخته شده ، استفاده از PM2 هست PM2 http://pm2.keymetrics.io/ کمی هم داکر خوبهاین مورد لازمه برنامه نویس نیست ، اما خوبه برنامه نویس بدونه داکر چیه و چرا ازش استفاده میکنیم . چون قصد آموزش ندارم و فقط میخوام ریفرنس بدم ، لینک داکر و توضیحاتش رو قرار میدم . Docker is a set of coupled software-as-a-service and platform-as-a-service products that use operating-system-level virtualization to develop and deliver software in packages called containers https://www.docker.com/ میتوانید بعد از این مطلب ، لینک زیر رو بخونین https://virgool.io/liara-ir/%D9%86%D9%88%D8%B4%D8%AA%D9%86-dockerfile-%D8%A8%D8%B1%D8%A7%DB%8C-nodejs-jyxg06dz3ak5</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 22 Jun 2019 15:10:48 +0430</pubDate>
            </item>
                    <item>
                <title>بازگشت php - ورژن 8</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA-php-%D9%88%D8%B1%DA%98%D9%86-8-zdwwwnxmel89</link>
                <description>خیلی منتظر یک خبر خوب برای php بودم . در واقع این زبان بود که من رو به دنیای برنامه نویسی آورد . از زمان جوملا 1.5 ، مامبو و ... تا الان که لاراول و فالکون و فریم ورک های قوی روی کار اومدن ، مشغول به کد زدن هستم . البته الان خیلی کم کد میزنم با پی اچ پی . اما نامردیه که رفیقتو فراموش کنی . این مدت ، با وجود  nodejs  و Rust  و golang  و دنیای عجیبی داخل هر کدوم در حال پیدایشه ، ایراد های زیادی گرفته شد به php . یکی از این ایراد ها async  نبودن php  بود . خوب این مورد که حل شد . با پکیج هایی مثل :‌swoolReact php Spatie AsyncAmp - Amp is a non-blocking concurrency framework for PHP...این مشکل حل شد .حالا مشکل دومی که گرفته میشه و درست هم هست ، استفاده خیلی زیاد از ریسورس ها مخصوصا cpu  بود و به دنبال اون i/o . پی اچ پی در مقابل رقیب هایی که داره ، رم رو خیلی مصرف میکنه و این مورد واقعا آزار دهندست . پیدایش jitاینجاست که دنیای php به نسخه 8 میره و یک جهش بزرگ اتفاق میفته . جهشی به اسم jit (just in time)در واقع jit یا &quot;در همان زمان&quot; ، از JVM  که ماشین مجازی جاوا هست گرفته شد . اگر با جاوا کار کرده باشید ، تفاوت زبان های کامپایلری و interpreter  رو میدونید . وقتی که شما با جاوا یا RUST  یک خروجی با کامپایلر میگرید ، در واقع از خاصیت jit  استفاده میکنید . تفاوت چیه؟ زبان های کامپایلری ، در لحظه قابل پردازش هستند و زبان های interpreter اول باید به زبان ماشین تبدیل بشن و در واقع run time هستند ، یعنی در زمان اجرا قابل پردازش هستند . حالا php قابلیتی اضافه کرده به اسم jit  که میتونید با این قابلیت ، هر دو حالت را داشته باشید . یعنی هم در لحظه پردازش کنین و هم در زمان اجرا (just in tim &amp; run time). این واقعا عالیه . از همه جهات . اولین مورد این که با دنیای دلالی و بازار نابود کننده سی ام اس ها خداحافظی میکنیم و وقت سلام به دنیای واقعی برنامه نویسی هست . دوم اینکه سرعت و مصرف ریسورس های php  به شدت تغییر میکنه . سرعت میره بالا و مصرف ریسورس ها میاد پایین و با داشتن قابلیت های async ، دوباره به زمین رقابت بر میگرده . البته هنوز راه زیاد داره که با مولتی ترد ها (پایتون و ...) رقابت کنه و مهمترین ضعف پی اچ پی هم اینه که همیشه یک پله از بقیه عقبتره . این هم نا گفته نمونه که زمان بازگشت php به این میدان ، با تخمینی که زدن ، حدود سال 2021 خواهد بود و تا اون موقع ، پروژه Deno  دنیای عجیب تری رو درست میکنه و باز php  عقب میفته . اما همین که برای موندن در این زمینه داره تلاش میکنه ، واقعا عالیه و باعث شادی. نا گفته نماند که توقع ما هم از php که یک C-Interface  بوده ، خیلی بالا رفته . الان رسالتش تغییر کرده و داره به خوبی برای موندن تلاش میکنه . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Mon, 03 Jun 2019 22:39:39 +0430</pubDate>
            </item>
                    <item>
                <title>رابطه ارباب و برده از نگاهی دیگر (کارمند و کارفرما)</title>
                <link>https://virgool.io/programmers-revolution/%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-%D8%A7%D8%B1%D8%A8%D8%A7%D8%A8-%D9%88-%D8%A8%D8%B1%D8%AF%D9%87-%D8%A7%D8%B2-%D9%86%DA%AF%D8%A7%D9%87%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1-%DA%A9%D8%A7%D8%B1%D9%85%D9%86%D8%AF-%D9%88-%DA%A9%D8%A7%D8%B1%D9%81%D8%B1%D9%85%D8%A7-dzlyq9h7swsg</link>
                <description>چیزی که امروز میخوام در موردش صحبت کنم ، یک نقد و یک نگرش جدید به روابط کارمندی و کارفرمایی هست . نگرشی که امروز مینویسم، دیدگاهی هست که به اشتباه در ایران جا افتاده و باید به کمک هم اصلاح کنیم . اول یک سری تعاریف داشته باشیم ( برنامه نویس خوب اول متغیر ها رو معرفی میکنه در بالاترین قسمت پروژه تا راحتتر استفاده کنه ) برده : برده ، بر پایهٔ فروتنی، مهربانی، دلسوزی و رقت قلب است . یعنی کسی که با مهربانی و خوش قلبی ، سعی بر این دارد که کارها به خوبی پیش بره . نه اینکه شلاق به سر ، مجبور به انجام کاری باشه ارباب :کسی که با خودخواهی ، قدرت ، غرور و تکبر ، برده را مجبور به انجام کاری کنه کارفرما : صاحب کسب و کار ، پروژه ، شرکت و در کل مالک یک ایده که باید به اتمام برسد . حال ایده میتواند خراب شدن یک شیر در حامام باشد و برای آن از کارمند ( کسی که شیر را تعویض کند ) استفاده کند یا ایده ایجاد یک فروشگاه اینترنتی دارد و با تیم برنامه نویسی میتواند آن را پیاده کند کارمند :کارمند ، کارگر ، مستخدم و... همه برای اینجام یک ایده از سوی کارفرما انتخاب میشوند . کارمند گاه قدرت نظارتی و تصمیم گیری دارد وگاه قدرت مالی و گاه هیچکدام . چیزی که از تعاریف بالا دیدیم ( همه تعاریف ذهنیت من از کلمه ها بود . نه منبعی داره و نه دلیل محکمه پسند . دلایل همه اخلاقی هستند ) ، هر کدوم از سمت ها ، با رعایت یک سری اصول و اخلاق ، میتونن یک پروژه رو با هم انجام بدن . اما سوال اینه : کی برده هست و کی ارباب؟این سوال چه زمانی مطرح میشه؟زمانی که یک سری انسان مغرور و بی دانش کم معرفت ، به خودشون اجازه میدن با زندگی مردم بازی کنن  .زمانی که پول ، دلیل همه بی عدالتی ها و بی قانونی ها در شرکت میشه و بی دلیل اجازه اخراج یک شخص رو صادر میکنن . زمانی که استعداد ها و مهارت ها نادیده گرفته میشه و روابط فامیلی  جاش رو به ضوابط اخلاقی میده زمانی که فراموش میکنیم ، روزی ما هم کارمند بودیم و حتی اگر شغلمون داشتن پدر پولدار بود ، باز هم برای گرفتن و چپاول کردن جیب پدر ، کارمندی کردیم ( کارمندی در حیطه چپاول کردن )حالا واقعا برده کیه؟ با تعاریفی که در بالا کردم ، برده همون کارمنده ، برده کسی هست که با زحمت کشیدن و وجدان ، کاری رو به سرانجام میرسونه و کارفرما همیشه مدیون اون شخص میمونه . چون از قدیم میگن : &quot;کار را که کرد؟ آن کس که تمام کرد&quot; . درسته که مسائل مالی هم دخیل هستن ، اما این نشون دهنده بی معرفتی و بی شخصیتی ما هست که کار یک کارمند رو بی ارج کنیم و ندید بگیریم وظایفی رو که خودمون بهش دادیم و بعد بگیم  : این که کار سختی نبود . کار سختی نبود؟ چون شما آدم نالایقی هستید و نمیتونید کار سخت و آسون رو از هم تشخیص بدید . شما  در غرور و جهل خود به شکلی فرو رفتید، که انگار پشه در پشه بند . در جوامع مختلف ، تعریف برده اینه :  کسی که برای انجام کاری دستمزد میگیرد و از نظر دیدگاه و جایگاه اجتماعی ، از سطح پایینی برخوردار است . شنیدن ظلم و ناحق شدن کارهایش ، یکی از خصوصیات او است  .  حالا من میخوام با مقایسه دو تعریف ، به این برسم که برده کسی نیست جز کارفرما .کسی که فکر میکنه با داشتن پول و ثروت و غرور ، میتونه به کسی زور بگه ، در واقع داره خودش رو همیشه محتاج یک عده انسان خوش فکر و توانا میکنه . انسان ها و نیرو هایی که اگر نباشند ، پروژه و شرکت و کار ، خوابیده . اگر شخصی که لوله حمام خانه من رو تعمیر میکنه ، نباشه ، حمامی برای استحمام ندارم . اگر برنامه نویس خوب ، بد ، عالی ، درجه یک ، وجود نداشته باشه ، پروژه من بالا نمیاد و اگر تیم مارکتینگ نباشن ، کار ما دیده نمیشه . پس ارباب ، برنامه نویسان و کارمند ها هستن و برده ، کارفرما . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 01 Jun 2019 12:16:32 +0430</pubDate>
            </item>
                    <item>
                <title>احترام به خانم ها در محل کار ، نشانه شعور و شخصیت</title>
                <link>https://virgool.io/@nima.2004hkh/%D8%A7%D8%AD%D8%AA%D8%B1%D8%A7%D9%85-%D8%A8%D8%A7-%D8%AE%D8%A7%D9%86%D9%85-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%85%D8%AD%D9%84-%DA%A9%D8%A7%D8%B1-%D9%86%D8%B4%D8%A7%D9%86%D9%87-%D8%B4%D8%B9%D9%88%D8%B1-%D9%88-%D8%B4%D8%AE%D8%B5%DB%8C%D8%AA-h6qglnmu2nvp</link>
                <description>چیزی که در روز های اخیر به سمت من اومد ، شکایت از شرایط بد خانم ها در محل کار بود . البته در زمینه برنامه نویسی من صحبت میکنم و در شرکت های آی تی به مراتب این مشکلات رو دیدم . درست نبود که من در این مورد بخوام صحبتی داشته باشم ، اما به علت اهمیت این موضوع و احترامی که به خانم هایی که در زندگی من هستند و اینکه همسر بنده هم به عنوان یک برنامه نویس عضوی از این جامعه هستند ، بهتر دیدم که دردودل های دوستان رو بازگو کنم و کمی روی خودمون بیشتر فکر کنیم . چند روز پیش در تلگرام ، خانومی سوالی رو مطرح کردند در مورد ری اکت و بعد از پاسخ دادن ، در مورد شرایط بد محیط های مصاحبه بهم گفتند که البته پیش از این هم شنیده بودم . داستان اول شخص اولماجرا از این قرار بود که ، شخص مصاحبه کننده با یک لحن بی شرمانه و صمیمیت بی جا ، با ایشون صحبت میکردن و در مورد مسائل بسیار خصوصی ایشون سوال میپرسیدند . سوالات بسیار خصوصی که شاید حتی دوستان صمیمی هم لازم نباشه این اطلاعات رو داشته باشند ، و در آخر در جاب اینجا گفتند که ایشون کم لطفی کردند و قبول نکردند اما ما موافق بودیم . داستان دوم شخص دومبعد از قبول شدن در مصاحبه و رفتن به شرکت ، دیدن که فقط خودشون هستن و خانمی دیگر و باقی افراد مرد هستند. متاسفانه بعد از چند روز کار کردن بدون مزاحمت ، افراد معلوم الحالی شروع به پیشنهادات و مزاحمت کردن تا جایی که به علت رفتار تند خانم ، ایشون اخراج شدن . البته لازم به ذکر هست که آقایون از دوستان مدیر بودن و کار خانم هم از نظر کیفیت و انجام وظایف و برنامه نویسی ، جای ایراد نداشت . داستان سوم شخص سوم در شرکتی که برنامه نویس خانم داشتن ، ایشون مطلب رو بد متوجه شدن و کد رو اشتباه نوشتن . البته باید در نظر بگیریم که مطلب به صورت نوشتاری نبود و فقط در یک جلسه معمولی بیان شد .  بعد از پیاده سازی در دو ساعت ، برای اینکه بدونن کار درسته یا باید تغییر کنه ، مدیر پروژه گفتن : صد بار گفتم مرد استخدام کنین که بفهمه البته این جمله کمال کم شعوری مدیر پروژه رو میرسونه که فکر میکنن برتری ذهنی نسبت به جنس مخالف دارن . از این قبیل داستان های زیاده . و از این قبیل بی احترامیا بسیار زیادتر که خیلی ها قابل گفتن نیست . مشکل از اونجایی شروع میشه که احساس برتری پیش میاد . احساس برتری :بین کشورها جنگ میاره بین دولت ها اعتراض میاره بین جوامع فروپاشی میارهبین اعضای خانواده دور میارهو به نظ رمن بین جنسیت های مختلف در یک جامعه ، نزاع و عصبانیتاینکه بخوایم ثابت کنیم خانم هایی که در طول تاریخ افتخار آفرینی کردند ، بسیار تکراریه و اینکه بخوایم بگیم چقدر مرد در طول تاریخ فاجعه افرینی کردن و به علت بی لیاقتی خودشون ، خسارت های زیادی ایجاد کردند هم تکراریه و حتی قابل مشاهده . برنامه نویسی یک کار فکری هست و باید این رو باور داشته باشیم که برای فکر کردن نیاز به یک محیط امن و با ارامش داریم . این مورد برای هر جنسی ثابته .  اگر نتونیم در مقابل همکارای خودمون ، کنترل داشته باشیم ، پس باید انتظار این هم داشته باشیم که همکاران خانواده ما هم ، با افراد خانواده ، همین برخورد رو داشته باشن . چون ما بودیم که این طرز نگرش رو گسترش دادیم و نتیجه این نگرش میسه مزاحمت در مترو ، اتوبوس ، خیابان و ... برنامه نویسی اصلا یک موضوع جنسیتی نیست . یک موضوع کاملا استعدادی هست و در یک شخص زیاد و شخص دیگه هم کم . اما چیزی که علم هم ثابت کرد و تجربه به چشم دیده ، موفقیت بیشمار زنان در زمینه علمی هست . راهکار برای خانم  ها : خانم ها در محیط کار ، با این افراد جدی تر برخورد کنند و تا زمانی که کسی را نمیشناند اصلا وارد بحث شوخی و خنده با اون شخص نشن . گاهی اوقات همه جنبه شوخی ندارن در محیطی کار کنید که حتما دوربین مداربسته داشته باشه در محیطی کا رکنید که تا حد امکان ، ویلایی نباشه و اطراف اون شرکت هم دفاتر و شرکت های دیگه باشن در محیطی کار کنین که تا جای امکان خانم های همکار دیگر هم باشن حتما در صورت امکان با خانمی که در اون شرکت کار میکنن ، در مورد محیط سالم شرکت ، مشورت کنین راهکار برای آقایون :‌اگر میخواید محترم شمرده بشیم ، اول محترمانه برخورد کنیماگر میخوایم افراد خانواده ما با ارامش کار کنند ، این ارامش رو به همه یاد بدیم و مبلغ بی ارامشی و مزاحمت نباشیمبین قدرت تفکر خودمون با خانم ها فرق نذاریمامیدواریم که دیگه شاهد این اتفاقات نباشیم</description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 25 May 2019 12:24:53 +0430</pubDate>
            </item>
                    <item>
                <title>حقوق نا عادلانه یک برنامه نویس</title>
                <link>https://virgool.io/programmers-revolution/%D8%AD%D9%82%D9%88%D9%82-%D9%86%D8%A7-%D8%B9%D8%A7%D8%AF%D9%84%D8%A7%D9%86%D9%87-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-vg0195dymwni</link>
                <description>چند روز پیش ، مشغول کار بودم که یکی از همکارانم  برای من لینکی رو ارسال کردن که در مورد &quot;استخدام برنامه‌نویس React/React-Native&quot; بود و اتفاقات جالبی در این تبلیغ دیده شد . اول از همه من با مسئولیت خودم ، این آگهی که به صورت عمومی منتشر شده است را قرار میدم و از تمام دوستان حرفه ای میخوام که اگر جایی انتقاد من اشتباه بود ، حتما گوشزد کنن و من رو قانع کنند . به علت اینکه شاید آگهی برداشته شود من تصویر آگهی رو قرار میدم  -  در نسخه اولیه اسم شرکت هم قرار داده بودم ، اما گفتم شاید از دید اخلاقی صحیح نباشه . ما که مثل اونا بی اخلاق نیستیم یک شرکت تبلیغاتی به اسم X ، در یک اقدام عجیب ، نیازمند به یک برنامه نویس react و  react native  ، با حقوق 1 میلیون تا 2.5 میلیون تومان ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟شاید در ابتدا چیز عجیبی نباشه ( که به نظرم یک میلیون واقعا عجیبه ) اما میخوام یک سناریو ایجاد کنم از آگهی که ایجاد شد . در قسمت شرح موقعیت شغلی ، مهارت هایی ذکر شده که متعلق به یک فرد junior  نیست . حداقل یک فرد با یک دانش نسبتا خوب ، میتونه قابلیت های ذکر شده رو داشته باشه . ما با ذهنیت این که از دید شرکت ، یک جونیور مد نظر دارند صحبت میکنیم . اینکه من بخوام با قیاس برنامه نویس در آمریکا یا در هلند ، میزان حقوقی رو مشخص کنم و بگم باید x دلار باشه و ما چشم پوشی میکنیم و میگیم x-y  دلار ، درست نیست . چون ما به ریال درامد داریم و به ریال هزینه میکنیم . ( بماند که خیلی وسایل به دلار میان و گرون . اما نیازهای اولیه یک زندگی مثل گوشت و ... با ریال سنجیده میشن . ) در دو فرض مختلف ، زندگی برنامه نویسی که به این شرکت خواهد رفت رو مقایسه میکنیم . محل کار این شرکت : تهران، خیابان آفریقا ... سناریو اول - حقوق 1 میلیون تومان فردی مجرد ( پسر یا دختر فرق نمیکنه ) که راضی میشه با این حقوق کار کنه ، حتما یک نیازی زیادی به مبلغ داره . از طرفی فردی متخصص و دارای مهارت است . از محل خونه که فاصله زیادی هم با شرکت خواهد داشت حرکت میکنه . روزانه در خوشبینانه ترین حالت با مترو و BRT (بدون هزینه تاکسی) به سمت شرکت حرکت کنه و مقداری پیاده روی هم داشته باشه ، ساعت 6 باید از خواب بلند بشه که 8:30 به محل شرکت برسه . خوب این برای همه ما صادقه . اما با هزینه هایی که وجود داره ، مترو 800 تومان و BRT هر مسیر رفت 1000تومان ، که در مجموع با مسیر برگشت معادل 3600 تومان در روز برای رفت و برگشت لازم داره . این هزینه در 30 که تعداد روز های ماه است اگر ضرب بشه میشه معادل : 108  هزار تومان برای رفت و برگشت . با هزینه گوشت ، مرغ ، برنج که اگر از هر کدام یک کیلو خریداری بشه (یک کیلو گوشت گوساله اگر فقط هفته ای سه بار بخوره ، کم میاد . پس سه کیلو برای ی ماه لازم داره . روزهای دیگر هم گوشت مرغ یا املت.برنج هم یک کیلو اگر داشته باشه ، معادل 10 وعده شام میشه .) از قرار گوشت گوساله کیلویی 75 هزار تومان ، مرغ کیلویی 11 تومان ( دولتی ) و برنج 28 هزار تومان (ایرانی) باید 284 هزار تومان هزینه کند . قیمت نان ، شیر ، مایع لباس شویی ، شامپو و کالاهای بهداشت و ... بماند . به هر حال هر فرد در زندگی ماهیانه نیاز به خرید حداقل یک دست لباس و کفش در ماه دارد . اگر از بهارستان کفش تهیه شود ، از 120 هزار تومان تا 300 هزار تومان هزینه کفش ، تی شرت ساده از 80هزار تومان تا 170 هزار تومان ( جنس معمولی که نه آب بره و نه رنگ بده )‌ ، شلوار هم از 100 هزار تومان تا 300 هزار تومان در میدان فردوسی ، با در نظر گرفتن میانگین هزینه های پوشاک ، 485 هزار تومان نیاز فرد برای خرید پوشاک است . با یک حساب معمولی و عادلانه ، این شخص حدود 877 هزار تومان نیاز های معمولی و اولیه زندگی رو میتونه خریداری کنه . هزینه ای مثل اینترنت ( خوب برنامه نویسه دیگه ) یک شب کافه رفتن ، شام با دوستان ، پس انداز برای آینده و .... که جز هزینه های رده دوم میشه ، محاسبه نشد . هزینه درمان و اتفاقاتی که ممکن هست به صورت ناگوار بیافتد هم دیده نشد . هزینه دو روز اسنپ گرفتن به علت خستگی و کم خوابی که در تهران همه شاهد اون هستیم هم دیده نشد هزینه احتمالی دانشگاه که حساب نشود بهتر است . این فرد با این حقوق درس نخونه بهتره . هزینه آرایشگاه و سلامت پوست و مو هم به همین شکلهزینه احتمالی دارو هایی که باید هر ماه خریداری شوند هم همینطورهزینه میوه و سبزیجات هم فرض میکنیم اصلا نداریم با فرض سیگاری بودن شخص ، میگیم ترک کنه ، چون اونم نمیتونه خریداری کنه دلستر و نوشابه هم برای سلامتی خوب نیست ، میگیم نخوره هزینه خوابگاه و اجاره خونه هم اصلا بیخیال . با این که نمیشه زندگی کرد کلا سناریو دوم - حقوق 2.5 میلیون تومان با در نظر گرفتن سناریو اول ، برای همون فرد، در این سناریو ، اینده ای دیده نمیشه که بخوایم صحبت کنیم . چرا که هزینه های از سقف 2.5 میلیون تومان هم بالاتر زد . مدیر عزیز و محترم واقعا یک سوال دارم ، اگر روزی کارمند بودی ، حاضر بودی با این حقوق بری سر کار؟ اگر بگی اولش با همین شروع کردم ، معلوم  بی منطقی ، چون شما با بنزین لیتری 100 تومان ، ماهی 1 میلیون میگرفتی . پس خواهشا توجیه نکنین . پسر شما حاظر هست بدون گرفتن کمک نقدی از شما ، با این مبلغ بره سر کار؟ پس انصاف چی شد؟ جنبه های غلط آگهی های مشابه اول از همه در این آگهی دو stack کاملا متفاوت اسم برده شد . ری اکت و ری اکت نیتیو . توصیه میکنم در مورد این تفکر غلط ، مقاله دوست خوبم رو مطالعه کنین  https://virgool.io/iran-react-community/%D8%AF%D8%B1%D9%88%D8%BA%DB%8C-%D8%A8%D9%87-%D9%86%D8%A7%D9%85-%D8%B4%D8%A8%D8%A7%D9%87%D8%AA-react-%D9%88-react-native-ecv0abjf8ftk دوم ، شخصی با این مهارت ها ، در سال 98 ، نباید مبلغی کمتر از 4.5 میلیون تومان دریافت کند . اینکه قیمت هر چیزی رو به بالا رفتن است ، تقصیر برنامه نویس و مدیر شرکت نیست ، اما اینکه شما با حقوق  سال پیش، میخواین برنامه نویس استخدام کنین ، این کوتاهی و تقصیر شماست . سوم ، حداقل سابقه کار کمتر از سه سال : این مورد برای مهارت هایی که گفته شده واقعا خنده داره ، یک شخص با تسلط به ری اکت و ری اکت نیتیو ، کمتر از سه سال (یعنی از یک سال تا دو سال و 12 ماه) ا تسلط به هیچ چیزی نداره ، یا بالای 5 سال باید کار کرده باشه که به همه مسلط باشه . چهارم ، نداشتن مدیر فنی ( مدیر فنی یا مشاور با تجربه ) که مشورت بده و بگه این آگهی یک شکل از توهین به برنامه نویس تلقی میشه و ....راه حل چیست؟ شرکت هایی هستن که دقیقا برعکس شرکت فوق ، به برنامه نویس و نیروی فنی بها میدن . شاید چند ماه بیکار بودن بهتر از یک سال خفت کشیدن و هرجور حرف شنیدن در ازای چندرغاز پولی باشه که هزینه رفت و آمد شما هم نمیشه ، اما با جستجو کردن و بی توجهی به امثال این آگهی ، میتونین موقعیتی که درخور و مناسب شما باشه پیدا کنین . شاید بهتر بود ما هم یک صنف داشتیم ، که هر شرکتی با هر سلیقه ای ، آگهی نده و نتونه این درخواست های بی شرمانه رو ارسال کنه  . از طرفی شاید بهتر باشه که جاب اینجا برای کارجو هم امتیازی قائل بشه تا کارجو این موارد رو گزارش بده . واقعا برخی از این آگهی ها ( مثل بعضی از آگهی های خودرو که قصد تخریب و به هم زدن جو بازار رو داشتن ) لیاقت نمایش ندارند و باید بشه جلو این اتفاقات رو گرفت . امیدوارم با این مقاله ، شرکت های مشابه ناراحت بشن و بهشون بر بخوره و برای نیرو و فرد متخصص تیمشون ، ارزش قائل بشن . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Wed, 22 May 2019 10:18:55 +0430</pubDate>
            </item>
                    <item>
                <title>انتشار یک کامپوننت ری اکتی(Reactjs) در npm</title>
                <link>https://virgool.io/iran-react-community/%D8%A7%D9%86%D8%AA%D8%B4%D8%A7%D8%B1-%DB%8C%DA%A9-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA%DB%8Creactjs-%D8%AF%D8%B1-npm-tbcxij41eria</link>
                <description>امروز تصمیم گرفتم یک کامپوننت hello world  با هم در npm  منتشر کنیم . نتیجه کار رو میتونید در مخازن ان پی ام من ببینید :  https://github.com/nimahkh/react-helloworld-component https://www.npmjs.com/package/@nimahkh/reacthelloworldcomponentنحوه نصب : npm i @nimahkh/reacthelloworldcomponentو در آخر داخل کامپوننت خود به شکل زیر میتونید از این پکیج استفاده کنین :mport React, from &#039;react&#039;;
import ReactDOM from &#039;react-dom&#039;;
import Hello from &#039;@nimahkh/reacthelloworldcomponent/lib&#039;;
import * as serviceWorker from &#039;./serviceWorker&#039;;

const classes={
  fontSize:12,
  color:&#039;red&#039;,
  width:&#039;100%&#039;,
  margin:&#039;0 auto&#039;,
  padding:10
}

const App = () =&gt; {
  return &lt;HelloWorld classes={classes} greetings={&quot;Hello IRC&quot;} /&gt;;
};

ReactDOM.render(&lt;App /&gt;, document.getElementById(&#039;root&#039;));
serviceWorker.unregister();
خوب برای نوشتن این پکیج باید اول از همه یک سری پیش نیاز رو بدونیم . مثل اینکه چجوری میشه یک پروژه با ری اکت نوشت که نیازی به CRA نداشته باشه . برای این کار من یک package.json  اماده کردم که میتونید مشاهده کنین .اما قبل از اون اول دستور npm i رو بزنید و package.json رو برای خودتون داخل یک مسیر خالی بسازید . بعد از اینکه این مسیر رو ایجاد کردید ، باید یک سری پکیج نصب کنیم . کد زیر رو وارد کنین :npm i --dev @babel/core @babel/plugin-proposal-object-rest-spread @babel/preset-env @babel/preset-react babel-eslint babel-loader webpack webpack-cli webpack-dev-server eslint eslint-config-airbnb eslint-config-prettier eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-prettier eslint-plugin-react html-webpack-plugin react-testing-librarynpm i react react-domدر نهایت package.json  به شکل زیر باید داشته باشیم  : {
  &quot;name&quot;: &quot;@nimahkh/reacthelloworldcomponent&quot;,
  &quot;version&quot;: &quot;1.1.24&quot;,
  &quot;description&quot;: &quot;IRC hello world component&quot;,
  &quot;main&quot;: &quot;index.js&quot;,
  &quot;jest&quot;: {
    &quot;setupFiles&quot;: [
      &quot;&lt;rootDir&gt;/scripts/throw-on-prop-type-error.js&quot;
    ]
  },
  &quot;files&quot;: [
    &quot;lib&quot;
  ],
  &quot;scripts&quot;: {
    &quot;start&quot;: &quot;webpack-dev-server --mode development&quot;,
    &quot;test&quot;: &quot;jest ./test&quot;,
    &quot;build&quot;: &quot;yarn autoclean &amp;&amp; cross-env NODE_ENV=production babel src -d lib --copy-files&quot;
  },
  &quot;author&quot;: &quot;IRC (iran react community)&quot;,
  &quot;license&quot;: &quot;MIT&quot;,
  &quot;devDependencies&quot;: {
    &quot;@babel/cli&quot;: &quot;^7.4.4&quot;,
    &quot;@babel/core&quot;: &quot;^7.4.4&quot;,
    &quot;@babel/plugin-proposal-object-rest-spread&quot;: &quot;^7.4.4&quot;,
    &quot;@babel/preset-env&quot;: &quot;^7.4.4&quot;,
    &quot;@babel/preset-react&quot;: &quot;^7.0.0&quot;,
    &quot;babel-eslint&quot;: &quot;^10.0.1&quot;,
    &quot;babel-loader&quot;: &quot;^8.0.6&quot;,
    &quot;cross-env&quot;: &quot;^5.2.0&quot;,
    &quot;eslint&quot;: &quot;^5.16.0&quot;,
    &quot;eslint-config-airbnb&quot;: &quot;^17.1.0&quot;,
    &quot;eslint-config-prettier&quot;: &quot;^4.3.0&quot;,
    &quot;eslint-plugin-import&quot;: &quot;^2.17.2&quot;,
    &quot;eslint-plugin-jsx-a11y&quot;: &quot;^6.2.1&quot;,
    &quot;eslint-plugin-prettier&quot;: &quot;^3.1.0&quot;,
    &quot;eslint-plugin-react&quot;: &quot;^7.13.0&quot;,
    &quot;html-webpack-plugin&quot;: &quot;^3.2.0&quot;,
    &quot;jest&quot;: &quot;^24.8.0&quot;,
    &quot;jest-dom&quot;: &quot;^3.2.2&quot;,
    &quot;react&quot;: &quot;^16.8.6&quot;,
    &quot;react-dom&quot;: &quot;^16.8.6&quot;,
    &quot;react-test-renderer&quot;: &quot;^16.8.6&quot;,
    &quot;react-testing-library&quot;: &quot;^7.0.0&quot;,
    &quot;webpack&quot;: &quot;^4.31.0&quot;,
    &quot;webpack-cli&quot;: &quot;^3.3.2&quot;,
    &quot;webpack-dev-server&quot;: &quot;^3.4.1&quot;
  },
  &quot;dependencies&quot;: {
    &quot;prop-types&quot;: &quot;^15.7.2&quot;
  },
  &quot;peerDependencies&quot;: {
    &quot;react&quot;: &quot;&gt;=16.8.0&quot;,
    &quot;react-dom&quot;: &quot;&gt;=16.8.0&quot;
  }
}
بعد از انجام دو دستور بالا ، یک سری فایل کانفیگ باید بسازیم برای babel  و eslint , webpack . خوب فال های زیر رو با محتوای زیر بسازید : .babelrc{
  &quot;presets&quot;: [&quot;@babel/env&quot;, &quot;@babel/react&quot;],
  &quot;plugins&quot;: [&quot;@babel/plugin-proposal-object-rest-spread&quot;]
}webpack.config.jsconst path = require(&#039;path&#039;);
const HtmlWebpackPlugin = require(&#039;html-webpack-plugin&#039;);

const htmlWebpackPlugin = new HtmlWebpackPlugin({
  template: path.join(__dirname, &#039;output/src/index.html&#039;),
  filename: &#039;./index.html&#039;,
});

module.exports = {
  entry: path.join(__dirname, &#039;output/src/index.js&#039;),
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: &#039;babel-loader&#039;,
        exclude: /node_modules/,
      },
      {
        use: &#039;file-loader&#039;,
        test: /\.(woff(2)?|ttf)(\?v=\d+\.\d+\.\d+)?$/,
      },
      {
        test: /\.(gif|png|jpe?g|svg)$/i,
        use: [
          &#039;file-loader&#039;,
          {
            loader: &#039;image-webpack-loader&#039;,
            options: {
              disable: true,
            },
          },
        ],
      },
      {
        test: /\.css$/,
        use: [&#039;style-loader&#039;, &#039;css-loader&#039;],
      },
    ],
  },
  plugins: [htmlWebpackPlugin],
  resolve: {
    extensions: [&#039;.js&#039;, &#039;.jsx&#039;],
  },
  devServer: {
    port: 3000,
  },
  devtool: &#039;source-map&#039;,
};خوب بعد از کارهای بالا یک پوشه میسازیم به اسم src و یک index.js  و کامپوننت رو مینویسیم : import React from &quot;react&quot;
import PropTypes from &#039;prop-types&#039;;

const Hello=(props)=&gt;{
    const {greetings , classes}=props;
    return (
        &lt;div style={classes}&gt;
            {greetings!==undefined ? greetings:&quot;Hello world&quot;}
        &lt;/div&gt;
    )
}

Hello.propTypes={
    classes:PropTypes.object.isRequired,
    greetings:PropTypes.string
}

export default Helloمرحله بعدی اینه که بتونیم داخل محیط develop ، برنامه رو تست کنیم . فرض میکنیم دقیقا یک کمپوننت طراحی شده که باید داخل یک محیط ری اکتی وارد بشه و کار بشه . این محیط رو شبیه سازی میکنم . یک پوشه میسازیم به اسم output  و یک پوشه به اسم src و داخل این فایل هم یک index.js با محتوای زیر import React from &#039;react&#039;;
import ReactDOM from &#039;react-dom&#039;;
import HelloWorld from &#039;../../src&#039;;

const classes={
  fontSize:12,
  color:&#039;red&#039;,
  width:&#039;100%&#039;,
  margin:&#039;0 auto&#039;,
  padding:10
}

const App = () =&gt; {
  return &lt;HelloWorld classes={classes} greetings={&quot;Hello IRC&quot;} /&gt;;
};

ReactDOM.render(&lt;App /&gt;, document.getElementById(&#039;root&#039;));خوب کنار همین فایل هم یک index.html میسازیم دقیقا با محتوای index.html  ری اکت  : &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;ie=edge&quot;&gt;
  &lt;title&gt;Iran React Community (IRC)&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;noscript&gt;
      You need to enable JavaScript to run this app.
  &lt;/noscript&gt;
  &lt;div id=&quot;root&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;بعد از انجام این کار باید package.json  رو تغییر بدیم  : ...
&quot;scripts&quot;: {
  &quot;start&quot;: &quot;webpack-dev-server --mode development&quot;,
  &quot;test&quot;: &quot;jest ./test&quot;,
  &quot;build&quot;: &quot;yarn clean &amp;&amp; cross-env NODE_ENV=production babel src -d lib --copy-files&quot;
},
...
خوب حالا دستور npm run start رو بزنین و روی پورت 3000 میبینید که یک hello world کوچیک قرمز بالا سمت چپ دیده میشه . یادتون باشه همیشه باید تست نویسی انجام بشه .یک فولدر به اسم test  بسازید و داخل اون فایلی به اسم helloworld.test.js با محتوای زیر قرار بدید import React from &quot;react&quot;
import HelloWorld from &#039;../src/index&#039;;
import {render} from &#039;react-testing-library&#039;;
import &#039;jest-dom/extend-expect&#039;

describe(&#039;Helloworld Component&#039;, () =&gt; {
  test(&quot;check props&quot;,()=&gt;{
    const classes={};
    const {container} = render(
        &lt;HelloWorld classes={classes}/&gt;,
    );
    expect(container).toHaveTextContent(&quot;Hello world&quot;)
  })

  test(&quot;change props&quot;,()=&gt;{
    const classes={};
    const greetings=&quot;Hello IRC&quot;;
    const {container} = render(
        &lt;HelloWorld classes={classes} greetings={greetings}/&gt;,
    );
    expect(container).toHaveTextContent(greetings)
  })
});خوب الان که npm run test رو بزنید ، تست ها با موفقیت اجرا میشن . مرحله بالا بردن پروژه روی npm وارد سایت npm  بسید و یک حساب باز کنین . بعد از اینکه حساب شما ایجاد شد ، به ترمینال برید و بنویسیدnpm loginمشخصاتی که از شما سوال میشه پاسخ بدید . بعد از اون میتونید پروژه رو به شکل public منتشر کنین . npm publish --access publicخوب کار تمومه . هر تغییری که میدین روی پروژه ، با نسخه بندی های  npm version minor  یا npm version major  یا pm version patch میتونین تنظیم کنین و مجدد دستور publish  رو بزنین تا منتشر بشه .نسخه ها به این شکل هستند major.minor.patch مثلا نسخه  1.0.0 به معنی اینکه major  برابر 1 و باقی برابر 0هستند . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sun, 19 May 2019 12:18:51 +0430</pubDate>
            </item>
                    <item>
                <title>دومین رویداد جامعه ری‌اکت ایران در دانشگاه شهید بهشتی (26-2-98)</title>
                <link>https://virgool.io/iran-react-community/%D8%AF%D9%88%D9%85%DB%8C%D9%86-%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF-%D8%AC%D8%A7%D9%85%D8%B9%D9%87-%D8%B1%DB%8C%D8%A7%DA%A9%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D8%AF%D8%B1-%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87-%D8%B4%D9%87%DB%8C%D8%AF-%D8%A8%D9%87%D8%B4%D8%AA%DB%8C-26-2-98-efckeeogwplq</link>
                <description>من از زمانی که برنامه نویس شدم تا الان ، علاقه زیادی به جامعه های برنامه نویسی سالم داشتم . جوامعی که بتونم داخل اون جامعه ، دانش خودم رو ارتقا بدم . واقعا این موضوع ، پر اهمیت ترین چیز برای من بود و هست و خواهد بود . یکی از سلامترین و خوش مشربترین جوامعی که دیدم در زمینه برنامه نویسی ، جامعه ری اکت ایران بود .آشنایی با اساتید خبره که تعدادشون اونقدر بالاست که نمیشه همه رو نام برد و در یادداشت نمیگنجه . در تاریخ 26 اردیبهشت 1398 ،‌در دانشگاه شهید بهشتی و به کمک انجمن علمی دانشکده کامپیوتر دانشگاه شهید بهشتی ، فضای آمفی تئاتر به ما داده شد تا در این فضا دور هم جمع بشیم و در مورد مسائل مختلفی پیرامون ری اکت بحث کنیمورود به دورهمی های جامعه ری اکت ایران ، رایگان و بدون منفعت مادی است در ساعت اولیه دورهمی در مورد ری اکت نیتیو و چالش های اون صحبت شد . اینکه برای دوستانی که اولین بار با این stack آشنا میشن ، چه چالش هایی وجود دارد و باید چه اتفاقاتی بیافتد تا قابلیت یک شروع خوب رو داشته باشن . در ادامه این بحث ، اساتید راهکارهایی و معرفی کردند و پس از آن ، در مورد چالش ارتقاع ری اکت نیتیو با نسخه پایینتر به نسخه بالاتر یک سری راهکار منطقی و کم خطر معرفی کردند که بسیار عالی بود . دوستانی در جریان پروژه های خود به مشکلات متعددی خورده بودند و با استفاده از اساتید ، مشکلات خود را پیدا کردند و راهکارهای جالبی دریافت کردن . در ادامه دوست و استاد عزیزم ، آقای محمد ابراهیمی اول ، در مورد چالش های نسخه های پروداکشن و دولوپمنت در ری اکت صحبت کردند که جای تقدیر و تشکر داره . به مسائل ریز و حرفه ای اشاره کردند که شاید فقط تجربه بتونه این موارد رو بیان کنه . چرا که شخصی بدون تجربه ، نمیتونه با این مهارت ، این چالش ها را توضیح بدهپس از کمی تاخیر و بدقولی بنده حقیر ، ارائه ای در مورد تست نویسی و مزایای تست نویسی در ری اکت داشتم  و در آخر با یک مثال ، کدی نوشتیم، تا تست نویسی و اهمیت اون رو بیشتر درک کنیم . این ارائه را میتونید از گیت من دریافت کنین .  https://github.com/nimahkh/mypresent_reactTest حرف آخردر کل هدف ما از این دورهمی ها ، نشر علم به صورت رایگان و بدون هیچ گونه چشم داشتی است و یک خانواده با ارزش ایجاد کردیم ، که تک تک اعضای این خانواده ، چه دور و چه نزدیک ، برای ما محترم هستند و برای انتقال اندک علمی که داریم ( حداقل از جانب خودم ) تمام تلاشمان را میکنیم تا یک جامعه برنامه نویسی ، با اخلاق حرفه ای و اتفاقات خوب رو شاهد باشیم . دوستی از اصفهان به این رویداد آمدند و باعث شادی کل تیم شدند . چرا که هدف و رسالت انجمن همینه که بتونیم در اختیار تمام ایران باشیم . چالش بزرگ و همیشگی ما ، داشتن یک مکان نسبتا ثابت هست که بتونیم روی مکان برگزاری برای تمام تیم برنامه ریزی کنیم . این ماه به لطف دانشگاه شهید بهشتی ، این موضوع تا حد زیادی مرتفع شد . اما جامعه به علت تعلقی که به همه ایران دارد ، از این چالش دست نمیکشد و همیشه به دنبال مکان برگزاری هست . شاید روزی دانشگاه امکان ارائه سالن را در روز خاص ، به ما نداشته باشد و شرمنده خانواده جامعه ری اکت بشیم . پس دوستانی که در این مسیر میتوانند ایده و همفکری بدند ، با استقبال ما رو به رو میشن . با سپاس از تمام دوستانی که حامی جامعه هستند . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 18 May 2019 11:49:00 +0430</pubDate>
            </item>
                    <item>
                <title>ری اکت رو از کجا شروع کنم؟</title>
                <link>https://virgool.io/iran-react-community/%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D8%B1%D9%88-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%D9%85-systssasvwko</link>
                <description>این موضوع چند روزه که میبینم سوال خیلی از دوستان شده . بزارید سوال رو جور دیگه مطرح کنم زبان برنامه نویسی سی پلاس پلاس رو از کجا شروع کنم؟پلتفورم نود جی اس رو از کجا شروع کنم؟زبان برنامه نویسی جاوا اسکریپت رو از کجا شروع کنم؟الفبا زبان فارسی رو از کجا شروع کنم؟فریمورک لاراول یا جنگو رو از کجا شروع کنم؟اینا همه شبیه هم بودن . نه؟بعضیا تفاوت باهم دارن . چه تفاوتی؟ بعضی از سوالا نیاز به پیش نیاز دارند . مثلا : برای کار با فیم ورک لاراول باید php , mysql  رو بلد باشید .اما قدم بعدی چیه؟باید ببینیم هدفمون چیه؟ گاهی اوقت من فقط میخوام یک موضوع رو سطحی بدونم که در موردش بتونم صحبت کنم ، بعضی از مواقع میخوام یک پروژه ساده انجام بدم یا نه ، یک پروژه کاملا حرفه ای . این سه مورد با هم متفاوتن . هیچ وقت برای یادگیری یک زبان ، پلتفورم و ... به دنبال آموزش های دسته دوم نرید حالا میخوایم ببینیم که باید با چه روشی یک مهارت رو کامل کسب کنیم . ما فرض میکنیم میخوایم یک پروژه با ری اکت بزنیم که حرفه ای و معرکه باشه . قدم اولوقتی که شما یک دستگاه میخرید ، اول از همه باید دفترچه راهنمای اون رو بخونید . بعضی مواقع این دفترچه راهنما به زبان فارسی هم وجود داره . اما دقیقا همون متن به فارسی ترجمه شده . نه اینکه بریم توی یک کتاب راهنمای دیگه که متعلق به اون دستگاه نیست و چیزی رو بخونیم که شاید برای مدل های پایینتر بوده و نریم سربخت دفترچه اصلی . هیچ وقت برای یادگیری یک زبان ، پلتفورم و ... به دنبال آموزش های دسته دوم نرید .مورد دوم این که باید اول پیش نیاز های استفاده از اون دستگاه (کتابخانه یا هرچی) رو بلد باشیم. پس باید اول بدونیم ری اکت با چی نوشته شده و چه زبانی رو قبلش باید یاد بگیریم تا بتونیم با همون زبان باهاش صحبت کنیم . برای این کار به صفحه موزیلا میریم و با لینک زیر جاوا اسکریپت رو شروع میکنیم  https://developer.mozilla.org/en-US/docs/Learn/JavaScript قدوم دوم الان باید کاری که بالاتر کردیم رو برای ری اکت انجام بدیم .در مورد ری اکت هم باید اول به لینک زیر بریم  https://facebook.github.io/create-react-app/docs/getting-started همه زبان ها و پلتفروم ها و ... یک صفحه getting start  دارن . اول از همه باید با اون متد ها بریم جلو . سمت چپ یک منو هست که باید طبق اون منو بریم جلو .قدم سوم خوب ما الان اولین قدم ها رو رفتیم جلو  و با مفاهیم اولیه آشنا شدیم . در واقع یک پله رفتیم جلو . حالا با اصطلاحات کامپوننت و استیت آشنا شدیم (state).  خوب اما نمیدونم باید چجوری یک پروژه از صفر بنویسم . اینجاست که باید در مورد react project from scratch جستجو کنیم . به تاریخ مقاله ها و ویدئو ها حتما دقت کنین  https://www.valentinog.com/blog/babel/ قدم چهارمخوب الان یک پروژه از صفر طراحی کردیم با لینک بالا . باید حالا بتونیم یک سناریو برای خودمون بسازیم . فرض میکنیم که میخوایم یک سایت فروشگاهی با ری اکت بزنیم . برای این کار نیاز ها رو لیست میکنیم تا بدونیم به چه چیز هایی لازم داریم؟ اول یک روتر لازم داریم که بتونیم شناور باشیم داخل صفحه و لینک تغییر کنه . دوم نیاز به یک state management  داریم برای سبد خرید سوم یک ui kit لازم داریم که با اون قالب طراحی کنیم چهارم باید بدونیم گوگل ما رو چقدر درک میکنه (SSR)خوب با همین مراحل میتونیم شروع کنیم . یکی یکی میریم جلو اول :برای این کار بهترین گزینه react router dom  هست که با لینک زیر میرسیم بهش  : https://www.npmjs.com/package/react-router-dom دوم :‌برای این مورد گزینه های زیادی وجود داره و من چیزی نمیگم . اما باید در موردش تحقیق کنید و اطلاعات کسب کنین . It’s a good idea to get to know React first, before adding in additional  libraries. You can build quite complex applications using only React. (reactjs.org)همیشه یک لیست از لایبرری های خوب وجود داره که یکیش لینک زیر: https://softmedialab.com/blog/top-10-best-react-libraries/ سوم:این مورد کامل بستگی داره به نیاز های پروژه . میتونین لینک زیر رو بخونین و مقایسه کنین  https://hackernoon.com/23-best-react-ui-component-libraries-and-frameworks-250a81b2ac42 در مورد ssr کردن هم باید یک سری مقاله دیگه بخونیم . اینکه ssr چیه و چرا؟ و اینکه به چه شکلی پیاده سازی کنیم  https://github.com/jaredpalmer/razzle  https://medium.freecodecamp.org/demystifying-reacts-server-side-render-de335d408fe4  https://virgool.io/iran-react-community/%D9%85%D8%AB%D8%A7%D9%84-%DA%A9%D8%A7%D9%85%D9%84%DB%8C-%D8%A7%D8%B2-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88%D8%A8%DB%8C-%D9%BE%D8%A7%DB%8C%D9%87-%D8%A8%D8%B1-react-efebuxevlbih حرف آخرحتما قبل از هر کاری اول جاوا اسکریپت رو کامل مسلط بشید و بعد از اون باید ری اکت و لایف سایکل اون رو کامل بشناسید . بعدش شروع کنین و پروژه رو استارت بزنین .  </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sun, 12 May 2019 14:47:37 +0430</pubDate>
            </item>
                    <item>
                <title>چند راه موفقیت در برنامه نویس شدن</title>
                <link>https://virgool.io/programmers-revolution/%DA%86%D9%86%D8%AF-%D8%B1%D8%A7%D9%87-%D9%85%D9%88%D9%81%D9%82%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D8%AF%D9%86-hps5rjqmgpg6</link>
                <description>سلام . شاید اولش کمی موضوع بحث ، عجیب باشه . چرا؟اینکه بخوایم یک نسخه بپیچیم و برای همه تجویز کنیم اشتباهه . دقیقا اشتباه کار همینه که ما میخوایم یک نسخه که خودمون باهاش راحتتریم رو به همه تجویز کنیم . شاید هدف من توی زندگی این باشه که مدیر فنی قوی باشم ، شاید هم میخوام مدیر یک کسب و کار خفن بشم و موفق باشم ، یا اینکه میخوام یک برنامه نویس موفق باشم. راه این سه نفر کاملا متفاوته و باید درست ارزیابی بشه .اما من امروز میخوام در مورد اینکه برنامه نویس خوبی بشیم صحبت کنم . بزارید اول کمی در مورد اینکه دید من به برنامه نویسی چجوری تغییر کرد بگم . توی یک شرکت به صورت اتفاقی با حسن گیلک اشنا شدم و یک سال همکار بودیم . روز اول که اومدم ، گفتم من خفنم . یه جورایی ادعام میشد و هیچ شناختی هم از همکارام نداشتم . واقعا همیشه فکر میکردم نیاز نیست بیشتر بدونم بیشتر بخونم و راهم درسته و گوگل باید از خداش باشه منو بخواد . تا اینکه به مسائلی داخل پروژه خوردیم و دیدم که حسن خیلی سریع همه چیز رو حل و فصل میکنه و من واقعا نمیدونستم چجوری . عمدتا یک مسیر طولانی رو پیاده میرفتم خونه و به کارهایی که میکردم فکر میکردم تا ببینم کجا اشتباه کردم که نمیتونم راه حل رو پیدا کنم ؟ تا اینکه یه تصمیم گرفتم . ادعا و غرور رو گذاشتم کنار و به حسن گفتم راهشو بهم بگو . خیلی ساده بود . &quot;مطالعه&quot;از فردا همین شد کار من . تقریبا روزی 4 ساعت مطالعه فقط در مورد چیزهایی که میخواستم یاد بگیرم میکردم . بعدش میرسید نوبت به پیاده سازی و بعدش هم به اشتراک گذاری با بقیه . قضیه به اشتراک گذاری چیه؟ خوب اگر میخوام چیزی یاد بگیرم ، باید کدمو به اشتراک بزارم تا اون کد ویرایش بشه . اوایل خیلی ناراحت میشدم . چرا کد منو ویرایش میکنین؟ بعدش از این ناراحت میشدم که چرا کسی کد منو ویرایش نمیکنه؟ به این دلیل نبود که کد من خوب بود . به این دلیل بود که هنوز فرهنگ اشتراک گذاری کد ، جا نیفتاده بود . الانم همینطوره . این خاطره و تجربه رو گفتم تا یک سری مورد رو با هم مرور کنیم . من نمیگم که برنامه نویس خوبی هستم . هیچ شکی نیست که بهترین برنامه نویس تاریخ ، یک اشتباهه . چون از اون بهتر هست . همین الانم هست .راه کارهای مثب برای برنامه نویس خوب شدن نداشتن غرور :برنامه نویس خوب بودن به این معنی نیست که فقط مهارت کد نویسی خوبی داشته باشید . شاید شما 14 سال کد بزنین اما یک برنامه نویس که 2 ساله کار میکنه ، بتونه یک چیز جالبی بهتون یاد بده که فکرشم نمیکردید . پس این غرورو رو بزارید کنار . مطمعا باشید که همین غرورو باعث میشه هم به چهره ای منفور تبدیل بشید ، هم به شکل کاملا طبیعی ، از صحنه حذف بشید . حسود نباش : این خصلت خیلی بده . مخصوصا اگر بدونین که حسودین ، و نمیتونین کنترلش کنین . اما من به این شکل کنترلش کردم  :  وقتی که یکی از من بهتر هست ، یعنی چیزی بیشتر از من داره . پس من باید ازش همون رو یاد بگیرم . اون موقع خود به خوددرمان میشه . چون برابریم مطالعه زیاد :هرچی مطالعه زیاد و هدفمند باشه ، میتونین اعتماد به نفس زیادی داشته باشید . این اعتماد به نفس غرور میاره و انگیزه مطالعه از بین میره . اما چون ما هدفمون اینه که غرورو بزاریم کنار ،پس همیشه حس میکنیم باید بیشتر یاد بگیریم و هنوز خیلیچیزا مونده که نمیدونیم . این چرخه تکرار میشه و در نهایت بووومممممممم ، یک تغییر اساسیهر چی به ذهنت میرسه ، عملی کن :خیلی وقتا شده که شما میخواین یک لایبرری بنویسید ، یا یک سایت بزنید یا یک کاری انجام بدید که فکر میکنید کسی نجام نداده ، همون لحظه وقتشه که انجامش بدید . همون لحظه بدون شک برید به سمتش . حتی اگر موفق نشید و بهتون بگن هزار تا کار انجام نشده داری . مهم نیست . برید به سمتش و انجام بدید . یادتون باشه که اکثر اطرافیای شما ، غرورو و حسادت رو دارن به شما . پس توی این یک مورد به حرف خودتون گوش بدید.وقتی که شما یک هدف رو با قدرت میرید به سمتش و شروع میکنید برای اون هدف کد نویسی کردن ، به چالش میخورید . این چالش ها به شما راه جدید یاد میدن و میتونین ازشون بپرید . چون مطالعه خوبی دارید (بالاتر دیدم که مطالعه داریم میکنیم) پس چیزهایی که یاد گرفتیم رو به خوبی پیاده سازی میکنیم . سوال بپرسید  :سعی کنید یاد بگیرید سوال بپرسید . همون ضرب المثل سوال نپرسیدن عیبه . وقتی که شما از 10 نفر یک سوال رو بپرسید ، 10 جواب مختلف یا مشابه میگیرید که به شما کمک میکنه بتونین تجربه افراد مشابه رو هم داشته باشید .زبان انگلیسی قوی :تا جایی که میشه روی زبان انگلیسی تمرکز کنین . تمام جستجو ها و داکیومنت های موجود ، بهترنیشون به انگلیسی هستن . وقتی که شما توی موضوع react lifecycle مشکل دارید و مخواین بیشتر بدونین در موردش ، به فارسی نمیشه جستجو کرد و اگر هم بشه ،‌جالب نیست . چون متاسفانه آموزش های ما خیلی سلیقه ایه . داکیومنت رو کامل بخون :‌با هر زبان و هر فریم ورک و پلتفورمی که میخواین کار کنین ، قبل از این که کد بزنین اول داکیومنت رو کاملللللللللل بخونین . واقعا این یک مشکل بزرگ برنامه نویساست . چرا خوب داکیومنت رو نمیخونین؟ این از همون غرورو میاد .  چون احساس میکنین همه چیز رو بلدید . اگر همه چیز رو بلدید به اون فریم ورک و لایبرری و پلتفورمو زبان پس نیازی نیست . اگر اییییینقدررر بلدید که بدون داکیومنت کارتون راه میفته . خیلی عجیبه .خوب اون تیم داکیومنت رو با هزار بدبختی نوشته که اول شما اون رو مطالعه کنین که به ایراد نخورید . بارهای دیدم که یک پروژه رو میخوایم ریفکتور کنیم ، اینقدر دیدگاه افتضاح و کدهای کثیفی داخلش هست که آدم گریه میکنه . مگر میشه آدم اینقدر مغرورو و لجباز؟اشتراک کد :برای اینکه بتونین نظرات بهتری و جذب کنین ، کداتون رو به اشتراک بزارید تا همه بتونن کدتون رو بهبود بدن یا روی اون نظر بدن . این کار باعث میشه که بهتر یاد بگیرید و سریعتر برید جلو افزایش قدرت تحلیل و حل مسئله:پیشنهاد من مطالعه دروس جبر . جبر واقعا میتونه بهتون کمک کنه که مسائل و الگوریتم های زیادی رو ببینید و بتونین به ساده ترین روش اونا رو حل کنین مسائل تکراری بزرگترها :ورزش کنین ، با رفیق نا باب نگردید (:-D  اینجور چیزا دیگه ) . اما واقعا برنامه نویسی که سلامت نداشته باشه (سلامت فکری و جسمی) به درد مصاحبه هم نمیخوره . یکی ممکنه ذاتا یک سلامتی رو محروم باشه . اون دست خودش نبوده . اما چیزی مثل دیسک کمر ،‌مشکلات ریه (به علت سیگار زیاد و این چیزا) ، مشکلات کبد (به علت این چیزا و اون چیزا) ، مسکلات عصبی ، بد دهنی و ... دست خودمونه . وقتی نتونیم سالم باشیم و به خودمون اهمیت نمیدیم ، پس به شرکت و پروژه شخص دیگری هم نمیتونیم اهمیت بدیم . تا نصفه شب کار کردن و چشم و سلامتی رو فدای پروژه مدیر عامل کردن ، اسمش چاپلوسیه . نه فداکاری . چون در کمال آرامش و خواب کافی ، یه اضافه حقوق میده که برای درمان هم کافی نیست . و همیشه منت سرتون میزاره .اول هب خودتون سلامتی خودتون فکر کنین . اینا نصیحت نبود . چیزایی بود که خودم بهشون بر خوردم و لازم دونستم که با جامعه ای که باهاشون زندگی میکنم اشتراک بزارم . </description>
                <category>نیما حبیب خدا</category>
                <author>نیما حبیب خدا</author>
                <pubDate>Sat, 11 May 2019 10:50:22 +0430</pubDate>
            </item>
            </channel>
</rss>