<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ehsan rafee</title>
        <link>https://virgool.io/feed/@ehsan-rafee</link>
        <description>برنامه نویس - موزیسین - طبیعت گرد  ehsan-rafee.ir</description>
        <language>fa</language>
        <pubDate>2026-06-16 19:56:04</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/16208/avatar/Bqrtuf.jpeg?height=120&amp;width=120</url>
            <title>ehsan rafee</title>
            <link>https://virgool.io/@ehsan-rafee</link>
        </image>

                    <item>
                <title>آمار بازدید پست‌های من در سال ۹۹</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B9-oa0hk3t01pzc</link>
                <description>در طول تاریخ از اعداد استفاده کردیم تا اغلب داد و ستد کنیم و آن‌چیزی که شمردنی است را بشماریم. برای هر عدد واحد درست کردیم تا عددهای زندگی قاطی نشوند و از اعداد، شفاف‌تر استفاده کنیم؛ مثلا وقتی می‌گوییم ده هزار تومان به پول اشاره داریم و وقتی می‌گوییم ده هزار بلیط به بلیط!روز به روز که در زندگی جلو‌تر رفتیم عددها فرقی نکردند ولی این واحدها بودند که زیاد شدند. واحد کریپتو، واحد اصله درخت، واحد فاصله و …«واحد» یک توافق عمومی است برای شمردن؛ تا همانطور که گفتم شمردن‌ها قاطی نشود. مشاهده افراد دارای ثروت (اجتماعی یا مالی) به من ثابت کرده اینکه چه چیزی را بشماریم از اینکه چطور بشماریم مهم‌تر است. هرکس با واحد خاصی مسائل زندگی را می‌شمارد. اینطور به نظرم آمده که مشخص کردن واحد یعنی مشخص کردن اینکه من در زندگی برای چه چیزهایی ارزش قائلم و می‌خواهم چه چیزهایی را در زندگی بشمارم. https://cdn.virgool.io/annual-report/1399/viwjoa31hgha-guxmR.mp4 اعدادی که بدون واحد ثبت کردمبه ویدیویی که ویرگول برایم ساخته که نگاه می‌کنم میبینم که در سال ۹۹، من در مجموع ۲,۰۴۸ کلمه در ویرگول نوشتم و منتشر کردم و مخاطبین، پست‌های من را ۱۷ مرتبه پسندیدند و  ۱۶ بار هم نظر خود را روی پست‌های من به اشتراک گذاشتند. در سال ۹۹، ۱۱ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. این اعداد نشان میدهند من کاری کرده‌ام. هرکدام به واحدی وصل هستند. از خودم می‌پرسم من کدام واحد را شمارش کرده‌ام؟ کدامیک از واحدهای بالا از همه برای من مهم‌تر است؟ ادامه ویدیو را می‌بینم.آمار از اثر بیرونی می‌گویندطبق آمار پست‌های من ۲,۷۱۱ بار خوانده شدند و ۳۷۹,۱۹۷ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیتی که در ایران به اینترنت دسترسی دارند، ویرگول به من می‌گوید که توانستم  ۰/۰۰۵۱۹۸۷۵۲ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم.از طرف دیگر ویرگول به من می‌گوید که اگر قرار بود پست‌هایم را چاپ و به دست تک تک خوانندگان برسانم باید ۱۰,۱۱۷ کاغذ مصرف می‌کردم.آن عددهای کوچک ابتدای ویدیو حالا تبدیل شده‌اند به عددهای بزرگ به اینکه من جلوی مصرف این تعداد کاغذ را گرفتم یا به اینکه من  ۰/۰۰۵۱۹۸۷۵۲ ثانیه، سرانه مطالعه دیجیتال کشور را جابه جا کرده‌ام. واحد این عددها برای من ملموس‌تر است.واحد نوشتن چیست؟همه عددهای بالا و همینطور اثر بیرونی که روی خوانندگان و همینطور در مقیاس بزرگتر طبیعت و جامعه اطرافم گذاشتم اعدادی هستند که من دوستشان دارم و به آنها افتخار می‌کنم. اگر چنین ویدیویی دست شما نیز رسید به شما بابت تک تک اعداد تبریک می‌گویم.اثر هر نوشته تا حدودی معلوم است، اگر بنویسید جلوی قطع درخت را می‌گیرید، به سرانه مطالعه کشور اضافه می‌کنید و خوانندگانی جذب می‌کنید که شما را از طریق نوشته‌هایتان می‌شناسند و …به نظرم می‌رسد که نوشته‌های من و شما واحد ندارند ولی اثر بیرونی دارند.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Mon, 22 Mar 2021 13:12:36 +0430</pubDate>
            </item>
                    <item>
                <title>رهبری و ایجاد انگیزه در خود و دیگران</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%B1%D9%87%D8%A8%D8%B1%DB%8C-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%A7%D9%86%DA%AF%DB%8C%D8%B2%D9%87-%D8%AF%D8%B1-%D8%AE%D9%88%D8%AF-%D9%88-%D8%AF%DB%8C%DA%AF%D8%B1%D8%A7%D9%86-xbawxva7dacr</link>
                <description>لیدرسخن آغازینصحبت من در مورد مدیریت پروژه به صورت کلی است، اما! تجربه من در مدیریت(بهتره بگم رهبری) پروژه های نرم افزاری است پس قطعا نوشته های من در این دست پروژه ها کارآمد تر است.محصول رو خوب بشناسیدعمر محصول، خواسته های مشتری، خواسته های سرمایه گزار، خواسته های تیم مدیریت، مشتری محصول، اینها مواردی هست که باید بدونید تا بتونید تصمیم بگیرید در مورد نوع تیمی که قراره شکل بدید. در ادامه متوجه اهمیت این موضوع خواهید شد.انتخاب افراد تیمیکی از چالشی ترین بخش رهبری تیم ایجاد تیمه، پس افراد تیم رو با دقت انتخاب کنید.از چند جهت افراد رو بررسی کنید، سن، تجربه، در چه محیط کاری مشغول به کار بوده، علاقه مند به یادگیری و تحوله یا روتین و اصطلاحا کار دستوری و از پیش مشخص شده، زمان یادگیری، مدل یادگیری، مسائل فنی نهایتا 40٪ ماجرا است، زیاد نگران دانش فنی نباشید!سن: منظور من از سن تاریخ ثبت شده در شناسنامه نیست، افرادی رو دیدم که سن و تجربه ای بالا داشتن و خیلی خوب در کنار فرد تازه فارغ التحصیل شده و جوان مشغول به کار شدن، قطعا فرد باتجربه روحیه جوانی داشته و فرد جوان، جوانی با استعداد و توانا بوده، پس به سن شناسنامه ای توجه نکنید! (افراد دارای سن شناسنامه ای، سن عقلی، سن عاطفی، سن ظاهری و... هستند)تجربه: میزان تجربه افراد، میزان پختگی فنی افراد است ولی نه لزوما! با افراد صحبت کنید، توافق کنید که مدتی برای شناخت دو طرفه با یکدیگر همکاری کنید تا طرفین بهتر یکدیگر را بشناسند.در چه محیط کاری مشغول به کار بوده: برخی محیط های سازمانی محیط های بیمار و نامناسبی هستند (کم کاری، عدم نیاز به خلاقیت، کار روتین، به تعویق انداختن کارها) و این خصوصیت ها را افراد فرامیگیرند، مراقب باشید که این دست افراد را برای کارهای روتین انتخاب کنید، نه کارهایی که نیاز به خلاقیت و خودمدیریتی زیادی دارند.علاقه مند به یادگیری و تحول هست یا روتین و اصطلاحا کار دستوری و از پیش مشخص شده: برخی افراد کاری رو یاد گرفتند و دیگه دوست ندارند از حاشیه امن خودشون بیرون بیان، مثلا برای برنامه نویسی توی یه محیط استارتاپی انتخابشون نکنید، جای این افراد اونجا نیست!زمان یادگیری: برای یک محیط استارتاپی یادگیری یک اصل کلیدیه، چون ممکنه بعد از چند ماه همه چیز دگرگون بشه و همه یا بخشی از تکنولوژی ها و ابزار ها تغییر کنه، بعضی ها از کشتی جامیمونن و حتی ممکنه باعث غرق شدنش بشن، در یک محصول پخته و دارای مشتری و درآمد زیاد اشکالی پیش نمیاد اگر افراد دیر یا سخت یاد بگیرن، باید بدونید پروژه از چه جنسیه!مدل یادگیری: مدل یادگیری هر شخصی متفاوته، فردی قبل از شروع کار زمان آموزش در نظر میگیره، یک نفر دیگه کار رو شروع میکنه و در حین کار یاد میگیره، یکی از ویدیو یاد میگیره یکی دیگه با سرچ و..... لازمه بدونید که ترکیب تیم شما چی قراره باشه، این خیلی بستگی به جنس پروژه شما داره!مسائل فنی: حداقل های فنی لازمه! برای پروژه نرم افزاری مثلا oop بدونه یا design pattern بدونه، حداقل یک زبان برنامه نویسی رو مسلط باشه ولی زیاد حساسیت نشون ندید، فقط دقت کنید که علاقه مند به یادگیری باشه و زود یاد بگیره، بقیه ماجرا حله.نکته: مهم اینه که شما میانگین سنی تیم خودتون رو مشخص کنید و بسته به پروژه ای قصد دارید انجام بدید تصمیم بگیرید چطور تیمی قصد دارید تشکیل بدید، اگر در شرکت متوسط یا بزرگی کار میکنید که نیروها و تیم های زیادی داره و اسکرام کار میکنند مزیت بزرگی دارید چون این ساختار اگر درست پیاده سازی شده باشه به شما اجازه میده تیم ها رو خیلی سریع و بهینه تشکیل بدید و منحل کنید، ولی نگران نباشید اگر این شرایط رو ندارید، در غیر این صورت هم امکان پذیر هست.رهبر باشید نه مدیر!مدیرها:عادت به دستور دادن دارند.در شرایط بحرانی داد میزنند و افراد رو تحت فشار میزارن.از بدنه تیم نیستن، از بالا به تیم یا تیم ها نگاه میکنن.......رهبرها:شروع کننده و تمام کننده کار هستند.در شرایط بحرانی آستین ها رو بالا میزنه و خودش دست به کار میشه.خودش رو از بدنه تیم میدونه، هم سطح افراد اجرایی......شاید بگید گاهی در جایگاه یک رهبر یا مدیر نیازه افراد رو تحت فشار بزارید، بله درسته! ابتدا افراد تیم رو خوب بشناسید. چه کسی از زیر کار در میره.(واقعیته!) چه کسی خودمدیریتی قوی داره. چه کسی تحت فشار خوب کار میکنه و چه کسی بدون فشار. از لحاظ شخصیتی افراد رو خوب بشناسید، گاهی ما افرادی رو تحت فشار میزاریم که نباید، و گاهی افرادی رو آزاد میزاریم که نباید، یک رهبر خوب باید هوش هیجانی قوی داشته باشه، در عین حال بد نیست کمی روانشناسی هم بدونه، قطعا یک رهبر، روانشناس زبده نیست و نخواهد بود، ولی حداقل چیزهای لازم رو بدونه و به کار بگیره، به طور مثال تحلیل رفتار متقابل یک دانش بسیار کاربردیه، چرا که به شما کمک میکنه بدونید چه زمانی با چه کسی چه رفتاری، مناسبه.پل بین تیم مدیریت و تیم اجرایی باشیدبه عنوان یک رهبر نباید اجازه بدید تیم شما فشارهای تیم مدیریتی رو حس کنه، باید همه فشارها و استرس ها رو خودتون جذب کنید و اجازه ندید به تیم برسه تا تیم بتونه با آرامش فکری به کار خودش برسه، جلسات و تحمل داد و بیداد مشتری و مدیر بالا سری یکی از وظایف شما است، هرچند گاهی لازمه بعضی از افراد تیم کمی از فشار ها رو متوجه بشن(نه به طور کامل) تا به جدیت ماجرا پی ببرند و خودشون رو جمع و جور کنند، این تشخیص شما است، ولی مراقب باشید افراط نکنید!افراد رو پرورش بدیدفقط به جنبه های تخصصی توجه نکنید، افراد رو به لحاظ شخصیتی پرورش بدید، فردی که مدیریت زمان میدونه بهتر از شخصی که نمیدونه برای شما و خودش بهره وری داره، شخصی که به لحاظ شخصیتی مستعد مدیریت هست میتونه مدیر خوبی برای بخشی از پروژه یا حتی جایگزین خوبی برای شما باشه، تا شما به کارهای مهم تر برسید و به جایگاه های بالاتر برید.ایجاد انگیزهنوشتن کارها اول روز و بازنگری در آخر روز راه خوبی برای ایجاد انگیزه و حس مفید بودن خواهد بود.از آیکن تیک برای کارهای انجام شده استفاده کنید.ار آیکن x برای کارهای انجام نشده استفاده کنید.ذهن افراد با این کار در آخر روز با تنبیه و تشویق آشنا میشه.به افراد یاد بدید که از این تکنیک ها استفاده کنند تا شما درگیر micro management نشید.تیم شادشادی، خانواده و کار تیمیشاد باشید و افراد رو ترغیب کنید شاد باشند، به هر روی ما قسمت عمده زمان خودمون رو در محل کار به سر میبریم پس از زندگی لذت ببرید.افراد در محیطی که شاد و پویا نیست خوب کار نمیکنند، دچار افسردگی میشن، انگیزه خودشون رو از دست میدن و خیلی چیزای بد دیگه، پس زمان هایی رو به شادی و تفریح اختصاص بدید، با همدیگه به تفریح برید، زمان نهار بهترین وقت برای تفریح و خوش گذرونیه، بازی و مسابقه، بازی های گروهی، موسیقی معجزه میکنه، گروه موسیقی تشکیل بدید و...برای موفقیت ها جشن بگیرید!به تیم شخصیت بدید، به تیم به چشم یک خانواده نگاه کنید و به اعضای تیم هم این موضوع رو یاد بدید، این باعث میشه افراد همدلی و حمایت بیشتری نسبت به همدیگه داشته باشند. برای تیم با مشارکت اعضای تیم اسم انتخاب کنید.به محصولات و پروژه های خودتون شخصیت بدید، به کمک اعضای تیم برای محصولات اسم انتخاب کنید، اسمی که انتخاب میکنید داخلی و جالب باشه و قرار نیست این اسم محصول باشه، نام محصول و مباحث مارکتینگ یه بحث دیگه است، این اسم صرفا اسمیه که اعضا پروژه رو با اون صدا میزنن، حتی برای نسخه های  مختلف پروژه اسم های جالب انتخاب کنید.اجازه ندید مسائل تیم به بیرون درز کند، هرچیزی که هست از بدنه تیم نباید بیرون بره، باگ مال کیه، این کار بد یا خوب رو کی انجام داده، هیچ کس از بیرون تیم نباید این چیزای جزئی رو بدونه، از بیرون تیم همه یک black box میبینن.۸ ساعت کار مداوم مربوط به عصر انقلاب صنعتی بوداین روش به هیچ وجه مناسب نیست، زمان استراحت مشخص کنید، مثلا هر یک ساعت و نیم، ۱۵ دقیقه استراحت. روش Pomodoro یکی از روش های خوب است.حتی دستگاه ساعت زن رو از شرکت حذف کنید، زمان ورود خروج یا حتی محل کار کردن آزاد، task base کار کنید!سخن آخراین مباحث بسیار مفصل و قابل تامل است و قطعا یک بحث بین رشته ای وسیع است، فقط قصد داشتم مطالب چند را بازگو کنم و در سعی من بر آن است تا این مطلب را به کمال برسانم.سپاس از تامل شما، امید است مفید بوده باشد، پیشاپیش از نظرات شما سپاسگزار ام.برا ارتباط با من میتوانید از وب سایت من www.ehsan-rafee.ir استفاده کنید که همه راه های ارتباطی در وب سایت  موجود است.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Tue, 31 Mar 2020 15:44:47 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به روستای طامه</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%B1%D9%88%D8%B3%D8%AA%D8%A7%DB%8C-%D8%B7%D8%A7%D9%85%D9%87-z8r2buyfgtio</link>
                <description>روستای طامه / آبشار طامهروستای طامه روستایی در دل کوه کرکس دارای آب و هوایی سرد و کوهستانی است.موقعیت جغرافیایی E515047 N332755چندی پیش سفری زمستانی به این منطقه داشتم و از آبشار زیبای طامه دیدن کردم، مسیر برفی زیبا، طبیعت بکر، افراد خونگرم محلی، اقامتگاه های روستایی زیبا، لیدرهای محلی کار بلد، از خصوصیات بارز این منطقه است.توصیه میکنم اگر قصد سفر زمستانه به این منطقه را دارید حتما لباس و تجهیزات مناسب زمستان همراه داشته باشید.لیست برخی تجهیزات مورد نیاز: باتوم کوهنوردی، کفش ساق بلند کوهنوردی گورتکس ،گتر، شلوار و کاپشن گورتکس، شلوار و لباس پلار، دستکش،کرامپوندر نزدیکی قبرستان روستا مسیر ماشین رویی وجود دارد که به آبشار طامه ختم میشود، البته در زمستان حجم برف و یخ منطقه بسیار زیاد است و اگر ماشین آف رود ندارید به هیچ وجه وارد مسیر آبشار نشوید ،انتهای جاده آسفالت اتوموبیل خود را پارک کنید و شروع به پیاده روی کنید، گفتنی است بعد از اتمام آسفالت و شروع جاده آف رود تا پشت سد جاده وجود دارد و بعد از آن حتما نیاز است پیاده روی کنید.اخطار: در صورتی که قصد صعود زمستانه دارید و تجربه طبیعت گردی و کوهنوردی ندارید حتما از فردی متخصص در این امر کمک بگیرید.مسیر کوهنوردی نیست ولی سنگلاخ و پر برف است، در اواخر مسیر بد از سد، محوطه ای در بین کوه ها وجود دارد که دارای درخت و مناسب برای استراحت است.سد قبل از آبشار طامهمسیر آبشار طامهدقت کنید که قبل از ظهر صعود را شروع کنید و قبل از تاریکی به روستا برگردید، چون منطقه ای که آبشار در آن وجود دارد با کوه های زیاد و برفی احاطه شده و بسیار سرد است.بعد از عبور از دره و پس از سد به آبشار طامه با ارتفاع تقریبی ۲۳ متر میرسید،‌در زمستان همه جا برف و یخ و حتی نیمی از آبشار هم یخ زده است، بسیار زیبا و چشم نواز.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Mon, 30 Mar 2020 16:36:04 +0430</pubDate>
            </item>
                    <item>
                <title>استفاده از OLAP Cube</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-olap-cube-mv23f8lthony</link>
                <description>OLAP Cubeخیلی خودمونی و از تجربه شخصی خودم می نویسم.مشکل چی بود؟مشکل اول این بود که حجم دیتا بسیار زیاد بودمشکل دوم این بود که برای آماده کردن خروجی، محاسبات خیلی سنگینی باید انجام میشد که دیتای میلیونی درش دخیل بود.مشکل سوم چندین لایه محسابه که همه لایه ها از پایین به بالا از خروجی محاسبه لایه قبلی + محاسبه خود لایه به دست میومد.اولین راه چاره: redisمدتی از redis استفاده کردم، همونطور که احتمالا میدونید به طور خیلی ساده redis یک دیتابیس key/value هستش که دیتای خودش رو داخل ram نگه میداره و بسیار بسیار سرعت بالایی داره(البته تنظیمات برای ذخیره داخل دیسک هم داره ولی با ساختار خودش).کارساز بود ولی مشکلاتی هم داشت، اولین مشکل این که وقتی دیتا تغییر میکرد باید کل پروسه محاسبه رو تکرار میکردیم، که خیلی بار سنگینی روی سرور میزاشت، البته که میشد سطرهای درگیر رو دوباره محاسبه کرد ولی باز تعدادشون خیلی زیاد بود و باز هم بار سنگینی متحمل میشدیم، بماند که محاسبه سطر های درگیر توی محاسبه چقدر چالش داشت!دومین راه چاره: data werhosingپس از بررسی های بسیار، کلا به این نتیجه رسیدیم راه چاره ما نیست! کلا بیخیال، توضیح هم نمیدم در موردش، خیلی بحثش مفصله.(شاید مقاله ای دیگر :-)سومین راه چاره: OLAP Cubeاول این که این تکنیک چیه؟به شکل ساده اگر بخام توضیح بدم یک یا چند جدول هستش توی دیتابیس که هر کدومشون چند وجه داره(توضیح میدم).سنت ها و راه حل های مدرنتوی طراحی دیتابیس اصولا میایم دیتابیس رو بر اساس موجودیت های سیستم و تحلیل های انجام شده طراحی و شروع به نرمال سازی دیتابیس میکنیم، خب دست نگه دارید، توی این تکنیک خبری از نرمال سازی جدول ها نیست، اتفاقا برعکس عمدی افزونگی ایجاد میکنیم، جدول ها رو یکی میکنیم و خیلی چیزای بد دیگه.سوال اینجا است که چرا؟همه میدونیم که relation بار سنگینی داره پس تا جای ممکن حذفش میکنیم. چرا افزونگی ایجاد میکنیم؟ چون میخایم روابط رو به حداقل برسونیم و با بهینه ترین query به دیتای نهایی برسیم. البته که این همه ماجرا نیست!محاسباتی اگر وجود داره باید انجام بشه و در کنار دیتای خام قرار بگیره، این کار باعث میشه تا حد امکان performance سیستم بالا بره و حجم محاسبات کم و بار محاسبات به طور درستی تقسیم بشه، و حداقل سطر های ممکن update بشن.تا اینجا متوجه شدیم که کار به این سادگی ها نیست!چند پرسش خیلی مهم وجود داره که موقع طراحی و تحلیل باید بهشون پاسخ بدید.نقاط ورود دیتا کجا است؟کجا باید محاسبه انجام بشه؟کدوم سطرها باید دوباره محاسبه بشه؟جدول من چند وجه داره؟چه خروجی هایی از این جدول انتظار دارم بگیرم؟بعد از پاسخ دقیق به این پرسش ها میشه به تحلیل cube پرداخت و دست به طراحی زد.هدف صرفا معرفی این تکنیک بود، از آنجایی که وقتی با big data درگیر هستید و محاسبات پیچیده چند لایه ای، ذکر مثال بسیار سخته، پس به معرفی این تکنیک بسنده میکنم و بعدا مقاله رو کامل تر خواهم کرد.اگر پرسشی  هست با اشتیاق در خدمت شما هستم. پیشاپیش از کمک شما برای تکمیل این مطلب سپاسگزارم.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Mon, 07 Oct 2019 23:03:07 +0330</pubDate>
            </item>
                    <item>
                <title>زیر پروژه با استفاده از gradle</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%B2%DB%8C%D8%B1-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-gradle-mezn20pciwvc</link>
                <description>Gradleبعضی مواقع اتفاق میفته که یک پروژه در چند پروژه دیگه استفاده میشه، در این صورت بهترین راه اینه که از dependency استفاده کنید که gradle خیلی خوب و ساده ساپورت میکنه.مثال: فرض کنید دو پروژه دارید که میخاید پروژه اول داخل پروژه دوم استفاده بشه، در این صورت در فایل settings.gradle پروژه ۲ این دو خط رو اضافه کنید: rootProject.name = &#x27;&lt;project name ۲&gt;&#x27;include &#x27;&lt;project name ۱&gt;&#x27;project(&#x27;:&lt;project name ۱&gt;&#x27;).projectDir = file&#40;&#x27;&lt;project name ۱&gt;&#x27;&#41;و در فایل build.gradle این خط رو در بخش dependencies اضافه کنیدcompile project(&#x27;:&lt;project name ۱&gt;&#x27;)با انجام این کار پروژه ۱ که مسیرش رو مشخص کردید و به پروژه ۲ اضافه کردید با بیلد پروژه ۲ اتوماتیک بیلد میشه و خروجیش به خروجی پروژه ۲ اضافه میشه، در هنگام رلیز هم همین اتفاق میفته.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Thu, 23 May 2019 15:43:34 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و راه اندازی لینوکس Mint پسر بزرگ اوبونتو</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-mint-%D9%BE%D8%B3%D8%B1-%D8%A8%D8%B2%D8%B1%DA%AF-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-njuwnilmgh84</link>
                <description>در ابتدا باید بگم پسر بزرگ اوبونتو از پدرش خیلی روان تر و راحت تر شده، خیلی از ابزار ها رو هم به صورت پیشفرض تو دل خودش داره تا شما خیلی راحت و ساده بتونین ازش استفاده کنین، به نظر من بهترین گزینه دسکتاپ در حال حاضر مینت هستش.آموزش میدم که چطور نصبش کنین، چطور به سلیقه خودتون شخصی سازیش کنین و یک سری نکات دیگه، اگر پرسشی بود در خدمت شما هستم!در ابتدا باید بگم اگر دیسک شما GPT نیست و MBR هستش لازمه که به این حالت تغییرش بدید، این کار رو خیلی راحت میتونید با خود مینت در موقع نصب انجام بدید.۱- usb bootable mint بسازیداگر از ویندوز استفاده میکنید برای این کار ابزار های زیادی وجود داره، البته که میتونید از CMD استفاده کنید ولی تا وقتی ابزار ساده وجود داره چرا زحمت، Rufus یکی از بهترین ها است.rufusنصب و اجراش کنید با این صحنه مواجه میشید، فلش رو به سیستمتون وصل کنید اتوماتیک میشناسه، فایل iso لینوکس مینت رو هم از وب سایت خودشون دانلود کنید که میتونید ۳ گزینه داشته باشید برای دسکتاپتون، Cinnamon، MATE، Xfce که هر کدومشون مزایا و معایب خودشون رو دارن، پیشنهاد من Cinnamon هستش، بعد از دانلود توی قسمت Boot Section روی Select کلیک کنید و فایل مینت رو انتخاب کنید، دقت کنید که Partition Scheme رو روی GPT تنظیم کنید و Target System رو روی UEFI Only فقط کافیه روی Start کیلک کنید و منتظر بمونید تا کار تمام بشه.حال اگر شما از لینوکس دسکتاپ استفاده میکنید روی ISO که دانلود کردید کلیک راست کنید و روی گزینه Make Bootable Usb Stick کلیک کنید، در صورتی که این گزینه وجود نداره Open With&gt;Disk Image Writer کیک کنید که با تصویر زیر مواجه میشید، فقط کافیه روی Write کلیک کنید و صبر کنید.۲- شروع نصببوت سیستمتون رو تنظیم کنید که با فلش لود بشه یا از منوی بوت مین بوردتون فلشتون رو انتخاب کنید.mintبا نسخه لایو مینت مواجه میشید روی Install Linux Mint روی دسکتاپ کلیک کنید.زبان پیشفرض سیستم عاملتون رو انتخاب کنید.روی Continue کلیک کنید.توی این بخش میتونید زبان های مورد نظرتون رو برای کیبورد تنظیم کنید.روی Continue کلیک کنید.این بخش از شما میپرسه که میخاید نرم افزار های مربوط به گرافیک، وای فای، فلش و مدیا نصب بشن، ترجیحا تیک این گزینه رو بزنید و روی Continue کلیک کنید.اگر دیسک شما اطلاعاتی نداره و قصد دارید اتوماتیک تنظیم بشه و لینوکس نصب بشه گزینه Erase disk and install Linux Mint رو انتخاب و روی Install Now کلیلک کنید، در این صورت دیسک شما پاک میشه و تنظیمات مورد نظر به صورت اتوماتیک انجام میشه، در غیر این صورت گزینه Something else رو انتخاب و روی Continue کلیک کنید.با تصویری مشابه تصویر زیر روبه رو خواهید شد. مراقب باشید درایوی که برای مینت در نظر گرفتید رو تغییر بدید و بقیه درایوها که اطلاعات مهم روی اون ها دارید به حال خود رها کنید، درایو مورد نظر برای مینت رو انتخاب و روی + کلیک کنید.سایز(Size) رو بین 100 تا 500 مگابایت تنظیم کنید، نوع پارتیشن رو روی به Primary تغییر بدید، Use as روی به uefi تنظی کنید و روی ok کلیک کنید.دوباره روی + کلیک کنید در حالتی که Free Space روی انتخاب کردید، مقدار فضایی که برای Root در نظر گرفتید رو وارد کنید برای سایز پارتیشن و Mount Point رو / تنظیم کنید، بقیه مقادیر مثل قبل.دوباره روی + کلیک کنید مقدار فضای مورد نظر برای Home رو وارد کنید و همه چیز مشابه قبل.نکته: لینوکس شامل یک سری مسیرها میشه که فایل های اصلی سیستم عامل رو توی اون ها کپی میکنه و یک مسیر Home که فایل های یوزرها رو توی اون نگه میداره، میشه تمام این مسیر ها رو داخل یک پارتیشن ریخت، این حالت که من در نظر گرفتم برای این هستش که اگر شما قصد داشتید سیستم عاملتون رو به لینوکس دیگری تغییر بدید یا دوباره سیستم عامل نصب کنید فایل های Home از بین نره، اگر براتون اهمیتی نداره یک پارتیشن بسازید و به &quot;/&quot; اختصاص بدید که همون روت هستش و همه فایل ها داخل اون خواهد بود.بعد از انجام این کارها روی Install Now کلیک کنید.در صورتی که سیستم عامل دیگری داشته باشید از شما میپرسه که ممکنه سیستم عامل قبلی شما قابل دسترس نباشه بعد از نصب، اصلا نگران نباشید، هیچ اتفاقی برای سیستم عامل قبلی شما نمیفته، بهش اجازه بدید کارش رو ادامه بده.دوباره از شما میپرسه که مطمئن هستید که دیسک شما رو پارتیشن بندی بکنم، اگر مطمئن هستید همه چیز رو درست تنظیم کردید ادامه بدید.در مرحله بعد منطقه زمانی سیستمتون رو انتخاب کنید و روی Continue کلیک کنید.در مرحله بعد نام کاربری، نام سیستم و رمز عبور برای خودتون ست کنید.روی Continue کلیک کنید تا نصب شروع بشه.بعد از پایان نصب روی Restart کلیک کنید، فلش خودتون رو از سیستم جدا کنید و Enter رو بزنید تا سیستم ریستارت بشه.به مینت خوش آمدید.لینک ویدیو آموزش نصب مینت در یوتوب: لینکدر مطلب بعدی آموزش میدم که چطور به سلیقه خودتون تم و زبان و بقیه چیز ها رو توی مینت تنظیم کنید.</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Mon, 11 Feb 2019 15:05:39 +0330</pubDate>
            </item>
                    <item>
                <title>چرا Backend Developer باید هک و امنیت یاد بگیرد</title>
                <link>https://virgool.io/@ehsan-rafee/%DA%86%D8%B1%D8%A7-backend-developer-%D8%A8%D8%A7%DB%8C%D8%AF-%D9%87%DA%A9-%D9%88-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%D8%AF-vy3nqno2wft6</link>
                <description>قطعا قصد ندارم بگم که Backend Developer باید یک هکر حرفه ای باشه، نه! اصلا اینطور نیست.در دنیای امروزی شما فرصت یاد کرفتن همه چیز رو ندارید!اما باید یک هکر آماتور باشه، چرا؟وقتی داری به عنوان دولوپر سمت سرور کار میکنی با یه سری مسائل درگیری، مسیریابی، کارایی، بهینگی و البته امنیت!کافی نیست که ما بدانیم که حمله Injection یا DDOS یا... چیست، باید حداقل یک بار این اتک ها رو شبیه سازی کنیم تا با جزئیات این رخنه های امنیتی آشنا بشیم، پس بله یک دولوپر سمت سرور خوب، بجز توانایی های بساری که در تحلیل، طراحی سیستم های نرم افزاری و برنامه نویسی دارد باید یک هکر آماتو هم باشد.در پست های بعدی آموزش میدم نصب و راه اندازی لینکوس و کار با ابزار تست امنیت رو! پانوشتدور از ادب هست که عذرخواهی نکنم از اساتیدی که این مطلب رو مطالعه میکنن و پیش خودشون نوشته بنده رو بدیهی میدونن، حق با شما است، اما دو نکته، اول این که مشاهده شده افرادی که بی اطلاع بودن و دوم این که همه ما به واسطه محیط آموزشی ضعیف بدون اطلاع از خیلی موضوعات وارد شغلی شدیم، پس خالی از لطف نیست گفتن بعضی از موضوعات حتی از دید بنده و شما بدیهی!</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Sat, 09 Feb 2019 13:16:11 +0330</pubDate>
            </item>
                    <item>
                <title>راه اندازی سرور موقت بدون آی پی استاتیک</title>
                <link>https://virgool.io/@ehsan-rafee/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D9%88%D9%82%D8%AA-%D8%A8%D8%AF%D9%88%D9%86-%D8%A2%DB%8C-%D9%BE%DB%8C-%D8%A7%D8%B3%D8%AA%D8%A7%D8%AA%DB%8C%DA%A9-hvmgbkdrxzuc</link>
                <description>ngrokگاها اتفاق میفته که نیاز دارید سرویسی رو روی سیستم خودتون ران کنید و روی اینترنت به اون سرویس دسترسی داشته باشید.این سرویس هرچیزی میتونه باشه، سرور شما که فرانت اند دولوپر بهش وصل میشه، وب سرویس یا هرچیز دیگه ای.این کار رو خیلی راحت میشه با Port Forwarding انجام داد که اکثر مودم روترهای امروزی این امکان رو دارند، من مدتها از این امکان استفاده میکردم. فقط یک چالش وجود داره اون هم تغییر IP هستش که اون هم با ابزاری مثل Ip Monitor خیلی راحت حل میشه که Ip شما رو هر وقت که تغییر کنه به ایمیلتون ارسال میکنه.مشکل از جایی شروع میشه که ISPها پورت ها میبندن، اینجا است که راه دیگه ای نیازه!چندین راه وجود داره ولی ارزون ترین و راحت ترین راه تونل زدن هستش، در ادامه توضیح کامل میدم! نه نیاز به آی پی استاتیک داره نه صرف هزینه!Ngrok یکی از بهترین راه ها استاین سرویس به شما امکان میده پورتی رو روی سیستم خودتون باز کنید و با آدرسی منحصر بفرد به اون از هرجایی دسترسی داشته باشید.کافیه فایل رو از داخل سایتشون دانلود کنید و با یک دستور ساده یک یا چند پورت رو روی سیستمتون باز کنید.لینک ویدیو آموزش استفاده از NGROK</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Sat, 09 Feb 2019 13:13:09 +0330</pubDate>
            </item>
                    <item>
                <title>why we should develop server application with kotlin</title>
                <link>https://virgool.io/coderlife/why-we-should-develop-server-application-with-kotlin-keosgdrgvx2m</link>
                <description>kotlinKotlin is a statically typed programming language that runs on the Java virtual machine and also can be compiled to JavaScript source code or use the LLVM compiler infrastructure. What else do you want?Kotlin was developed by Jetbrains Company, according to its developers, inspired by Java’s and understandable features and power and the C# syntax, as well as the comments and experiences of its developers and other developers as well as inspiration. The best features of some programming languages such as scala have been developed and developed.My experience with Kotlin was such:FlexibleSimple to learning for Java and .NET developersExcellent summaryStrong supportRapidly developingGreat communityCompatible with different personal coding stylesVery strong ide(Intelij Idea IDE)</description>
                <category>ehsan rafee</category>
                <author>ehsan rafee</author>
                <pubDate>Sat, 09 Feb 2019 12:59:46 +0330</pubDate>
            </item>
            </channel>
</rss>