این بار میخوام از فضای لینوکس بیام بیرون کمی .
میخوام ابزارهایی که باهاشون پروژه های خودم رو مدیریت میکنم رو به بگم و دلیل استفاده این ابزار رو هم بگم .
روی یک پروژه کار میکردم که خیلی زیاد اهمیت زمانی داشت . و خوشبختانه طبق زمان بندی تونستم پروژه رو تحویل بدم با کیفیت خوب و رضایت مدیریت . که البته پروژه هم سایت و هم اپلیکیشن هست که فاز بندی داره.
خوب من برای راه اندازی این پروژه و گرفتن نتیجه از ابزارهای مختلفی استفاده کردم . از محیط برنامه نویسی گرفته تا محیط مدیریت پروژه .
من قبلا هم گفتم که طرفدار نرم افزارهای آزادم به شدت و در مورد استفاده از اتم نوشتم .
سیستم شخصی خودم فقط از اتم استفاده میکنم و فایرفاکس . اما داخل شرکت به علت مسلط نبودن به اتم مجبور بودم که از Jetbrains استفاده کنم . به همین دلیل برای محیط جاوا از IntelliJ ، برای ری اکت از WebStorm ، برای PHP از PhpStorm و برای پایتون هم از PyCharm استفاده میکنم . اما خوبی اتم اینه که نیاز نیست 4 تا IDE نصب کنم . با یک IDE چهار کار میتونم انجام بدم . اما یک سری امکانات هست که توی اتم هنوز کامل باهاشون سینک نشدم .
خوب عمدتا برای اینکه 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
برای این کار من چند اپلیکیشن مختلف رو میگم :
Trello :
تقریبا همه میشناسن . میشه گفت بهترین اپلیکیشن Todo همین ترلوه . جدا از امکانات مدیریت کارها ، شما میتونین با Jetbrains و slack یا نرم افزارهای خیلی زیادی سینکش کنید . لیست این اپلیکیشن ها داخل سایت قرار داره .
WunderList:
من از این سایت استفاده کردم به علت UI و UX راحتی که داشت . میتونستم سریع باهاش کار کنم و اون همه امکانات ترلو رو لازم نداشتم . اصولا برای کارهای خیلی پیشرفته که نیاز به اشتراک گذاری و کار تیمی دارم از Trello استفاده میکنم . در غیر این صورت کار با Wunderlist رو ترجیح میدم .
دغدغه اکثر برنامه نویسا نداشتن یک محیط مناسب برای دیدن 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
این مورد میتونه خیلی کارتون رو جلو بندازه برای بارگذاری پروژه از محیط 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 شماست .
اینها چیزایی که من استفاده میکنم . دوست دارم که با محیط های جدید آشنا بشم و جایگزین هایی برای ابزارهام بدونم . ممنون میشم اگر ابزاری میشناسید که میشه با کمک اون کار رو بهتر تحویل داد ، حتما بگید تا بیشتر بدونیم و استفاده کنیم .
در آخر اگر مطلبم مفید بود یک فنجون قهوه مهمونم کن . حرف زیاد داریم بزنیم .