Перейти к основному содержимому

Готовим рабочее окружение для разработки

· 6 мин. чтения
Alex Congritta

Нельзя так просто взять, скачать себе необходимые программы для разработки и начать работать. Очень важно выстроить своё рабочее окружение так, чтобы работать было максимально комфортно, а рутинные задачи автоматизировать настолько, насколько это возможно.

Любая поставленная задача должна решаться с минимальными затратами времени и сил. В этой статье я расскажу, как я выстроил своё рабочее окружение и что позволяет мне делать свою работу качественно и быстро

1. Готовим компьютер

Да, самое главное в жизни любого разработчика - его рабочая машина. Очень важно, чтобы она была персональной и чтобы никто не пользовался ею кроме одного человека. Всё в ней должно работать как часы, работать так - как нравится её хозяину.

Моей рабочей машиной является лэптоп Honor Magickbook x14, купленный год назад примерно за $800. Его характеристики такие: i3-10110U x4, 8/256GB. Этого вполне хватает, чтобы заниматься разработкой проектов на технологиях, на которых я специализируюсь.

Настройка системы

В комплекте с моим компьюетром шла Windows 10 Home, но я не считаю для себя Windows хорошей ОС для работы, поэтому я установил туда ОС Fedora, базирующуюся на Redhat Linux. OEM-лицензия Windows никуда от меня не делась и я всегда смогу поставить себе Windows, если захочу :)

Fedora у меня стоит как единственная ОС на компьютере. После установки этой ОС я обновил систему полностью (так нужно делать после установки любой ОС) командой dnf update в терминале. После чего, я зашёл в настройки ОС и настроил там всё под себя до мелочей. Вообще очень важно заходить в настройки всего, чем ты пользуешься и подкрутить всё так, чтобы выжать из программы максимум пользы. Также, ещё до установки ОС я зашёл в BIOS своего компьютера и отключил камеру, NFC-модуль, сканер отпечатков пальцев и Bluetooth - это для безопасности. Т.к. Fedora изначально поставляется с GNOME, я скачал себе GNOME Tweaks и там донастроил систему как мне нужно.

После настройки системы, я принялся за удаление ненужных программ. А все программы, что остались в системе - я открыл и настроил под себя.

Установка необходимого ПО

Дальше у нас идёт установка нужных программ, которые пригодятся для разработки. Мой список программ такой:

  • Консольные утилиты: curl, htop, whois, dig, traceroute, telnet, netcat, pwgen и другие;
  • Браузер Firefox. Нравится мне намного больше, чем Google Chrome за счёт того, что потребляет меньше системных ресурсов, поддерживает тёмную тему в системе и применяет её для сайтов, обладает большим набором инструментов разработчика и нативно понимает жесты тачпада;
  • Sublime Text как заменитель "блокнота". Умеет открывать текстовые файлы всех мастей, поддерживает вкладки, поддерживает открытие папок и очень гибко настраивается;
  • NodeJS, Redis, MongoDB - устанавливаю в системе глобально, последние две сую в автозапуск;
  • Microsoft VS Code - моя IDE. Раньше пользовался WebStorm, но почему-то он перестал работать в последних версиях GNOME из-за проблем с оконным менеджером;
  • MongoDB Compass - GUI для MongoDB;
  • HTTPie - есть в виде CLI, GUI - отличная быстрая утилита для тестирования REST API. Про Postman я уже давно забыл;
  • OBS - программа для записи видео с экрана;

Разумеется всё это ПО тоже нужно настроить. Настраивайте под свои привычки.

Пару слов про настройку IDE: в VS Code я отключил автоформатирование кода и все настройки, связанные с форматированием кода. Настроил только то, что касается самого функционала редактора. Почему я решил так сделать - расскажу позже;

2. Повышаем качество написания кода

Есть такие штуки: ESLint, StyleLint и Prettier. Они помогают соблюдать единый стиль всего кода в проекте и не допускать возможных ошибок. Эти штуки решают сразу три вещи:

  1. У нас нет привязки к IDE. Мы всегда без проблем можем сменить IDE, а стиль написания кода не изменится. Некоторые IDE автоматически подхватывают конфиги ESLint, StyleLint и Prettier и автоматически реформатируют или подсвечивают код в соответствии с конфигами;

  2. Помогают синхронизировать стиль кода между разными разработчиками одного проекта. Нам становится не важно, какие у них IDE и как они настроены;

  3. Линты и реформатирование кода можно засунуть в хуки Git и, таким образом, каждый раз, когда мы делаем коммит проекта, линты и реформат будут автоматически запускаться. А если линты увидят потенциальные ошибки в коде, то коммит не выполнится. Такие же проверки можно реализовать на любом этапе CI/CD;

3. Используем скаффолды

Если вы начинаете делать очередной новый проект, зачём в нём делать те же вещи, что вы уже 1000 раз делали в других проектах? Например, если это вёрстка сайта, зачем вам из разу в раз прописывать сбрасывающие стили, установку нужных библиотек, настройку роутинга и т.д. и т.п.? Было бы намного лучше, если бы были заготовки для быстрого создания проектов. Я такие себе сделал и назвал их скаффолдами. Не знаю, насколько правильно называть их скаффолдами, я взял это слово у своего знакомого Flutter-разработчика. Там скаффолдом называется созданием главной шапки и выдвижного меню приложения в несколько строк кода.

4. Готовимся к быстрой настройке Linux-серверов для разворачивания своих приложений.

Для деплоя своих проектов я арендую VPS. В качестве ОС выбираю Debian. Для работы моих проектов в среднем нужны nginx, nodejs, mongodb, yarn, pm2 и redis.

Чтобы каждый раз не тратить время на установку этих компонетов и прочих зависимостей, я подготовил BASH-скрипт. Он делает всё за меня: https://gist.github.com/congritta/9ff4b1d9e7c8160674f1da174aadfc63. Не ручаюсь за него и не оказываю поддержку, т.к. я его сделал чисто для себя.

После окончания работы скрипта я захожу в систему под созданным пользователем и генерирую SSH-ключ, а потом добавляю его в настройках аккаунта на GitHub. Эта штука позволяет серверу видеть приватные репозитории и импортировать из них обновления без ввода пароля и ключей авторизации от GitHub. Если сервером управляете не только вы, то на SSH-ключ можно задать парольную фразу, чтобы им могли воспользоваться только вы.

Когда я импортирую проект из GitHub, я прописывываю ему хук post-merge, который будет автоматически выполняться после скачивания обновлений из репозитория (команда git pull).

Если запускается первый проект на pm2, необходимо выполнить команду pm2 startup (команду из неё надо скопировать и выполнить под рутом, потому что sudo в Debian есть не всегда);

Если добавился ещё один проект на pm2, необходимо выполнить команду pm2 save, чтобы добавить проект в автозапуск системы

Ну и для подключения проектов наружу остаётся только настроить Nginx. Конфиги самые обычные, которые можно нагуглить