نیما حبیب خدا
نیما حبیب خدا
خواندن ۵ دقیقه·۶ سال پیش

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

این بار میخوام از فضای لینوکس بیام بیرون کمی .

میخوام ابزارهایی که باهاشون پروژه های خودم رو مدیریت میکنم رو به بگم و دلیل استفاده این ابزار رو هم بگم .

روی یک پروژه کار میکردم که خیلی زیاد اهمیت زمانی داشت . و خوشبختانه طبق زمان بندی تونستم پروژه رو تحویل بدم با کیفیت خوب و رضایت مدیریت . که البته پروژه هم سایت و هم اپلیکیشن هست که فاز بندی داره.

خوب من برای راه اندازی این پروژه و گرفتن نتیجه از ابزارهای مختلفی استفاده کردم . از محیط برنامه نویسی گرفته تا محیط مدیریت پروژه .

محیط برنامه نویسی IDE

من قبلا هم گفتم که طرفدار نرم افزارهای آزادم به شدت و در مورد استفاده از اتم نوشتم .

سیستم شخصی خودم فقط از اتم استفاده میکنم و فایرفاکس . اما داخل شرکت به علت مسلط نبودن به اتم مجبور بودم که از Jetbrains استفاده کنم . به همین دلیل برای محیط جاوا از IntelliJ ، برای ری اکت از WebStorm ، برای PHP از PhpStorm و برای پایتون هم از PyCharm استفاده میکنم . اما خوبی اتم اینه که نیاز نیست 4 تا IDE نصب کنم . با یک IDE چهار کار میتونم انجام بدم . اما یک سری امکانات هست که توی اتم هنوز کامل باهاشون سینک نشدم .

محیط تست API

خوب عمدتا برای اینکه API رو تست بگیرن از ابزارهای مختلف استفاده میکنن که بهترین و سریعترین نرم افزار PostMan . پست من قابلیت های مختلفی رو داره :

1- امکان ذخیره سازی API ها

2- امکان گرفتن خروجی JSON و اشتراک با افراد دیگر

3- امکان ذخیره کردن در پروفایل و دستیابی در هر سیستم

4- قابلیت Trace کردن Request ها از طریق Api Capture

5- ایجاد داکیومنت برای لیست API

6- اشتراک گذاری داکیومنت با اعضای تیم

....

قابلیت ها خیلی زیادن . اما من فقط از این 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 شماست .


اینها چیزایی که من استفاده میکنم . دوست دارم که با محیط های جدید آشنا بشم و جایگزین هایی برای ابزارهام بدونم . ممنون میشم اگر ابزاری میشناسید که میشه با کمک اون کار رو بهتر تحویل داد ، حتما بگید تا بیشتر بدونیم و استفاده کنیم .

در آخر اگر مطلبم مفید بود یک فنجون قهوه مهمونم کن . حرف زیاد داریم بزنیم .

jenkinsgitidetrello
یه برنامه نویس معمولی لینوکس کار
شاید از این پست‌ها خوشتان بیاید