ابزارهای من : قسمت دوم مدیریت پروژه

این بار میخوام از فضای لینوکس بیام بیرون کمی . میخوام ابزارهایی که باهاشون پروژه های خودم رو مدیریت میکنم رو به بگم و دلیل استفاده این ابزار رو هم بگم . روی یک پروژه کار میکردم که خیلی زیاد اهمیت زمانی داشت . و خوشبختانه طبق زمان بندی تونستم پروژه رو تحویل بدم با کیفیت خوب و رضایت مدیریت . که البته پروژه هم سایت و هم اپلیکیشن هست که فاز بندی داره.خوب من برای راه اندازی این پروژه و گرفتن نتیجه از ابزارهای مختلفی استفاده کردم . از محیط برنامه نویسی گرفته تا محیط مدیریت پروژه . محیط برنامه نویسی IDEمن قبلا هم گفتم که طرفدار نرم افزارهای آزادم به شدت و در مورد استفاده از اتم نوشتم . سیستم شخصی خودم فقط از اتم استفاده میکنم و فایرفاکس . اما داخل شرکت به علت مسلط نبودن به اتم مجبور بودم که از Jetbrains استفاده کنم . به همین دلیل برای محیط جاوا از IntelliJ ، برای ری اکت از WebStorm ، برای PHP از PhpStorm و برای پایتون هم از PyCharm استفاده میکنم . اما خوبی اتم اینه که نیاز نیست 4 تا IDE نصب کنم . با یک IDE چهار کار میتونم انجام بدم . اما یک سری امکانات هست که توی اتم هنوز کامل باهاشون سینک نشدم . محیط تست APIخوب عمدتا برای اینکه API رو تست بگیرن از ابزارهای مختلف استفاده میکنن که بهترین و سریعترین نرم افزار PostMan . پست من قابلیت های مختلفی رو داره :1- امکان ذخیره سازی API ها 2- امکان گرفتن خروجی JSON و اشتراک با افراد دیگر3- امکان ذخیره کردن در پروفایل و دستیابی در هر سیستم4- قابلیت Trace کردن Request ها از طریق Api Capture5- ایجاد داکیومنت برای لیست API6- اشتراک گذاری داکیومنت با اعضای تیم ....قابلیت ها خیلی زیادن . اما من فقط از این 6 مورد استفاده کردم . یک نرم افزار مشابه اما غیر رایگان هم وجود داره به اسم Charles که باهاش کار کردم قبلا . اصلا هب خوبی PostMan نمیتونه به نظرم کار کنه . البته Charles بیشتر برای Trace استفاده میشه . یک لیست خوب رو میتونید اینجا پیدا کنید :https://techbeacon.com/5-top-open-source-api-testing-tools-how-chooseلیست کارهای ضروری و غیر ضروری پروژه (ToDo List)برای این کار من چند اپلیکیشن مختلف رو میگم :Trello :تقریبا همه میشناسن . میشه گفت بهترین اپلیکیشن Todo همین ترلوه . جدا از امکانات مدیریت کارها ، شما میتونین با Jetbrains و slack یا نرم افزارهای خیلی زیادی سینکش کنید . لیست این اپلیکیشن ها داخل سایت قرار داره . WunderList:من از این سایت استفاده کردم به علت UI و UX راحتی که داشت . میتونستم سریع باهاش کار کنم و اون همه امکانات ترلو رو لازم نداشتم . اصولا برای کارهای خیلی پیشرفته که نیاز به اشتراک گذاری و کار تیمی دارم از Trello استفاده میکنم . در غیر این صورت کار با Wunderlist رو ترجیح میدم . پیاده سازی UI , UX :دغدغه اکثر برنامه نویسا نداشتن یک محیط مناسب برای دیدن UI و UX که Grid و صفحه بندی خوب و درست داشته باشه . عمدتا گرافیست به صورت PNG یک خروجی میده و چهار تا رنگ هم میده و میره . اما این خوب نیست . من توصیه میکنم از Zeplin استفاده کنید برای اشتراک گذاری UI با برنامه نویس پروژه . اگر طراح حرفه ای هستید و میتونید حرفه ای تر باشید Adobe XD هم گزینه معرکه داره برای این کار به اسم Design Specs که میتونید به این سایت برید و در موردش مطالعه کنید :‌https://helpx.adobe.com/xd/help/design-specs-for-developers.htmlبرای آیکون های متریال هم این سایت رو پیشنهاد میکنم :https://Materialdesignicons.comو برای ایجاد رنگ های حقیقی Primary و Secondary سایت زیر خیلی خوبه :https://www.materialpalette.com/و اگر ری اکت کار هستید ، توصیه میکنم از یک Material UI kit استفاده کنید که بهترینش از دید من :https://material-ui.com سرور و تنظیمات Deploy :این مورد میتونه خیلی کارتون رو جلو بندازه برای بارگذاری پروژه از محیط Develop به Production . سروری که من کار میکنم Apache . اما شخصا توصیه میکنم Nginx رو استفاده کنید . چون که اگر بتونید تنظیمات خوبی انجام بدید روی Nginx میتونین قوی تر و امن تر ایجاد کنید محیط سرور رو .از سیستم های CDN مثل Cloudflare و یا ابرآروان استفاده کنید . برای جلوگیری از حملات DDOS و پایداری بهتر سرور ، گزینه های خوبی هستن . برای محیط Deploy من از جنکینز استفاده میکنم . فراموش نکنید که حتما پورت جنکینز رو از خارج سیستم با UFW ببندید . چون خطرناکه . https://jenkins.io/داکیومنت نویسی و مستندات :این مورد واقعا گزینه خاصی نداره . من از Docs ای آنلاین استفاده کردم و تلفیق Sheet ها با Docs ها امکانات خوبی رو به من داد . اصولا برای این قسمت شما باید یک زمان بندی دقیق همراه با درصد پیشرفت پروژه برای خودتون داشته باشید .بالای این زمان بندی ها ، یک جدول مستندات فنی پروژه هم تعریف کنید که بدونید هر قسمت چه عملکردی داره . اگر سیستم شما میکروسرویس باشه ، این کار میتونه خیلی بهتون کمک کنه تا در ماه های آینده ، بتونید بهتر FlashBack بزنید و بدونین چه کار کرده بودین . کنترل ورژن : خوب مسلما Git بهترین گزینه هست و Gitlab بهترین Git موجود . چون من میخوام Repository که کار میکنم عمومی نباشه . از طرفی gitlab تحریم کرده ما رو . من چند راهکار میدم :یکی استفاده از shecan.ir که واقعا روی سرور باری pull کردن خیلی بهم کمک کرد یکی هم clone گرفتن از Gitlab و نصب روی سرور خودتون . اینجوری میتونید خیلی راحت پروژه خودتون رو مدیریت کنین . یکی هم استفاده از git.parscoders.com که راهکار بالا رو پیش گرفته و برای عموم آزاد گذاشته تا همه از یک git داخل ایران بدون تحریم استفاده کنن . با هر IDE که کار میکنین میتونین git رو به IDE متصل کنین تا راحتتر کنترل کنید . مزیت دوم هم سینک شدن با جنکینز و محیط Deploy شماست . اینها چیزایی که من استفاده میکنم . دوست دارم که با محیط های جدید آشنا بشم و جایگزین هایی برای ابزارهام بدونم . ممنون میشم اگر ابزاری میشناسید که میشه با کمک اون کار رو بهتر تحویل داد ، حتما بگید تا بیشتر بدونیم و استفاده کنیم . در آخر اگر مطلبم مفید بود یک فنجون قهوه مهمونم کن . حرف زیاد داریم بزنیم .