Linux

В этой статье я немного пройдусь по приложениям на моем ноутбука на базе Linux. На написание материала меня вдохновил этот пост, только в моем случае речь пойдет не о Mac, а о Linux.

Я решил не перечислять все приложения на компьютере, а ограничиться лишь теми, которые важны при разработке.

Базовая комплектация

В данный момент компьютер работает на базе LinuxMint 18.3, однако я всерьез подумываю перейти на Ubuntu 18.04 сразу после их релиза. Никаких особых нареканий по части Mint у меня нет, но хотелось бы попробовать заменить Unity на Gnome 3 и посмотреть, что это за штука.

Инструментарий

  • Boostnote — основное средство создания заметок. Использую его по большей части для хранения сниппетов кода и тематического материала по разработке. Распространяется свободно, кроссплатформенность присутствует, отлично работает в оффлайне. Мне хотелось упростить синхронизацию между несколькими устройствами — раз заметки хранятся в формате CSON, то синхронизацию я делаю через приватный Git- репозиторий.
  • Simplenote — это мой «черновой блокнот» для коротких записей и мыслей. В основном, пользуюсь им с мобильного.
  • Cerebro — кроссплатформенный установщик с открытым кодом, похож на Spotlight и Alfred для Mac. Поддержка так себе, многое еще нужно поработать, но работает на удивление хорошо. Плагинов меньше, чем в Alfred, но нужные мне опции я могу написать сам.

Интернет

  • Google Chrome — Браузер по умолчанию.
  • Firefox — Второй по значимости браузер.
  • Min — Это минималистический браузер. В Linux отсутствуют аналоги Fenetre для Mac. Пользуюсь им, когда нужно почитать документацию, посмотреть какой-то урок или видео в параллельном режиме или Картинка-в-картинке.
  • Dropbox — для обмена файлами.
  • Mailspring — мой почтовый клиент.
  • Corebird — десктопный Twitter клиент.
  • Ramme — десктопный Instagram клиент.
  • Caprine — десктопный клиент мессенджера Facebook.
  • WhatsappDesktop — десктопный WhatsApp клиент, есть встроенные уведомления и интеграция в системный трей.
  • Slack — для чата и общения в сообществах.
  • Wireshark — для анализа сети. Удобно при разработке — видно все взаимодействия между разными приложениями.

Графика и мультимедиа

  • Pinta — еще одна бесплатная программа с открытым кодом, подходит для рисования и редактирования изображений. Мне нравится именно этот графический редактор. Несмотря на то, что самым популярным редактором изображений на Linux считается Gimp, мне кажется, что Pinta намного проще и в чем-то даже похож на Photoshop.
  • XnConvert — мощная и бесплатная кроссплатформенная пакетная обработка изображений. Сочетает в себе порядка 80 действий.
  • Draw.io — мое самое любимое приложение для создания всевозможных диаграмм — от блок-схем до циклограмм и даже каркасных представлений. 100%бесплатно, можно интегрировать с Google Drive.
  • Shutter — для создания скриншотов с добавлением комментариев, стрелок, боксов и т.д. Из полезного — эффект размытия в частях изображения.
  • ffmulticonverter — конвертирует изображения и видео в различные форматы.
  • Peek — позволяет записывать видео с экрана и сохранять в GIFформате. Крайне полезно для создания демо-гифок, например, для добавления их в readme файлы проекта.
  • pick — селектор цвета
  • Trimage — инструмент для сжатия изображения.

Видео и звук

  • VLC — мой любимый медиаплеер. В версии 3 добавлена поддержка Chromecast, что делает приложение еще полезней.
  • Kdenlive — редактирование видео.
  • Kazam — запись скринкастов
  • Spotify — для прослушивания любимой музыки.

Системные утилиты

  • Bleachbit — утилита для очистки системы.
  • Stacer — оптимизатор системы и мониторинг для Linux.
  • Caffeine — чтобы компьютер не засыпал.
  • Pullover — показывает Pushover-уведомления на рабочем столе
  • CopyQ — для управления буфером обмена.

Редакторы

  • Jetbrains (PHPstorm, WebStorm) — мой выбор для IDE.
  • Visualstudiocode — Все в одном текстовом редакторе
  • vim (редактирование файлов в режиме командной строки).

Настройка терминала

  • Tilix — мой любимый эмулятор терминала.
  • Zshshell — отличная альтернатива Bash
  • zplug — для управления zsh плагинами.
  • zsh-completions — дополнительные определения для завершения Zsh.

Утилиты командной строки

  • tldr — это альтернатива man, но только с самым необходимым. Отличный способ быстро найти любой синтаксис команд. yadm — менеджер Dotfiles.
  • fasd — повышает быстродействие командной строки. В нем реализован быстрый доступ к файлам и директориям командной оболочки POSIX. Создатели приложения явно вдохновлялись autojumpz и v. Fasd ведет журнал просмотра файлов и открытых директорий, так что их можно быстро найти в командной строке.
  • fzf — FuzzyFinder для командной строки
  • thesilversearcher — поисковик кода. Похож на ack, только быстрее.
  • lf — диспетчер файлов командной строки.
  • pandoc — конвертирует разные типы файлов из командной строки.
  • pwgen — генератор пароля
  • lnav — расширенное средство просмотра лог-файлов для малых ИС.
  • trash-cli — удаляет файлы, записывая исходный путь, дату удаления и разрешения.
  • opn-cli — открывает всякое разное: сайты, файлы, исполняемые модули. Кроссплатформенность присутствует.
  • ascicinema — записывает и расшаривает терминальные сеансы.
  • hostess — идемпотентная утилита для управления /etc/hostsфайлами.
  • get-port-cli — показывает доступный порт.
  • public-ip-cli — выделяет внешний IP-адрес.
  • internal-ip-cli — выделяет внутренний IP-адрес
  • speedtest-cli — интерфейс командной строки для тестирования скорости интернет-соединения на speedtest.net
  • fkill-cli — нереально круто убивает лишние процессы. Кроссплатформенная.
  • doctoc — генерирует содержание для файлов разметки внутри локального Git-репозитория. Ссылки совместимы с анкорами github и других сайтов.

Среда разработки

В разработке я активно пользуюсь Docker, хотя на хосте и установлены другие популярные среды выполнения кода: go, php, node (с nvm) иruby (с rvm).

  • Docker
  • Docker-compose — определяет и запускает многоконтейнерные приложения сDocker.
  • Minikube — локально запускает Kubernetes.
  • Telepresence — локальная разработка на фоне удаленного кластера Kubernetes или OpenShift.
  • ctop — top-интерфейс для метрик контейнеров.
  • Vagrant — упрощение процесса разработки. Сейчас я не особо пользуюсь Vagrant, только для работы над инфраструктурой проектов (например, проверка вращения нового кластера или тестирование плейбука на Ansible).
  • Dnsdock — управление dns в Docker-контейнерах.

Инструменты разработки

  • Pet — простой сниппет командной строки. Там я храню часто используемые команды.
  • caniuse-cmd — инструмент командной строки Caniuse
  • hub — это инструмент командной строки, который разворачивает git с большим количеством опций и команд, что сильно упрощает работу с GitHub.
  • conventional-changelog — генерирует changelog из метаданных git.
  • release-it — запуск git-репозиториев и npm пакетов из командной строки.
  • git-open — печатайте git open для открытия страницы GitHub или другого сайта с репозиториями.
  • git-semver — git-плагин для Semantic Versioning.
  • tig — текстовый git-интерфейс.
  • jq — облегченная и удобная командная строка для JSON-процессора.
  • python-gitlab — GitLab клиент/
  • overcommit — инструмент для управления и конфигурирования хуков в Git.
  • tmux и tmuxp — терминальные мультиплексоры.
  • gitbook-cli — интерфейс командной строки GitBook.
  • pageres-cli — делает скриншоты веб-страниц.
  • httpie — современный http клиент командной строки; отличная альтернатива curl с интуитивным интерфейсом, поддержкой JSON, выделением синтаксиса, wget-подобным скачиванием, расширениями и т.д.
  • yeoman — кодогенерация проектов из набора шаблонов.
  • generator-editorconfig — генерирует .editorconfig файлы.
  • license — создает лицензии из командной строки.
  • gi — создает полезные .gitignore файлы для вашего проекта
  • travis.rb — Travis CI клиент (библиотека Ruby и CLI)
  • http-server — простой http-сервер командной строки с нулевой конфигурацией. Очень мощный инструмент для работы, а еще его легко можно взломать и использовать для тестирования, локальных разработок и обучения.
  • codeclimate-cli — интерфейс командной строки для аналитической платформы Code Climate. Позволяет запускать компоненты Code Climate на локальном компьютере внутри docker-контейнеров.
  • mycli — терминал-клиент для MySQL с автодополнением и подсветкой синтаксиса.
  • json-server — поддельная копия REST API с нулевым кодированием за 30 секунд.
  • localtunnel — открывает публичный доступ к вашим localhost — для легкого тестирования и обмена файлами! Больше не нужно связываться с DNS или развертыванием — ваши изменения смогут протестировать и без них!
  • mailhog — SMTP-тестирование на основе Web и API.
  • artilery — мощный, современный и простой в использовании набор инструментов для тестирования нагрузки. Используйте для передачи масштабируемых приложений, которые остаются работоспособными и отказоустойчивыми при высоких нагрузках.
  • Postman — упрощает API-разработку.
  • Devdocs-Desktop — объединяет документацию по API в быстром, структурированном и адаптированном к поиску интерфейсе. DevDocs.io — это неофициальное десктопное приложение.

Оптимизация разработки

  • doctl — инструмент командной строки для сервисов Digital Ocean.
  • gcloud-sdk — официальный sdk для взаимодействия с инфраструктурой Google Cloud.
  • aws-cli — с этим пакетом вы получите унифицированный интерфейс командной строки для Amazon Web Services.
  • ansible — автоматизирует инфраструктуру.
  • terraform — пишите, планируйте и создавайте инфраструктуру в виде кода.
  • kubectl — интерфейс командной строки для запуска команд в отношении кластеров Kubernetes.
  • kubectx — быстрое переключение между кластерами и пространствами имен в kubectl.
  • kubeval — проверяет конфиг-файлы Kubernetes , поддерживает многие версии Kubernetes.
  • helm — диспетчер пакетов Kubernetes.
  • heroku-cli — интерфейс командной строки Heroku для легкого создания и управления приложениями Heroku напрямую с терминала. Важная составляющая для размещения на Heroku.
  • forge.sh — определяет и развертывает многоконтейнерные приложения на Kubernetes из источника.
  • Firebase tools — инструменты для командной строки Firebase.
  • dpl — читается как ди-пи-эль. Это инструмент для непрерывного развертывания.

Заключение

Именно этими программами я пользуюсь на своем компьютере для разработки. Надеюсь, данный список окажется вам полезным.

Linux может стать крайне мощной средой для разработки. Поэтому очень жаль, что многие Mac-приложения (тот же Alfred или Fenetre) не имеют полноценных Linux-альтернатив. Их мне действительно не хватает! Не могу похвастаться опытом работы на Mac, но я прямо-таки чувствую функциональную мощь данных приложений!

Перевод статьи Bruno PazMy Linux Development Environment of 2018