Найти тему
Я, Golang-инженер

#39. Опыт работы на Linux

Оглавление

Это статья об основах программирования на Go. На канале я рассказываю об опыте перехода в IT с нуля, структурирую информацию и делюсь мнением.

Хой, джедаи и амазонки!

В предыдущем посте рассказывал, что приобрёл ноутбук и установил на него Linux. Сегодня хочу поделиться опытом взаимодействия с новой для меня операционной системой.

1. Первое впечатление

Вполне обычная операционная система, чего-то прям необычного после Windows нет. Ниже скриншот рабочего стола моей Linux Mint Cinnamon:

Рабочий стол
Рабочий стол

Есть Менеджер программ - это что-то вроде Google Play для android или App Store для iPhone:

Менеджер программ
Менеджер программ

Нет обычного диспетчера задач, вызываемого Сtrl+Alt+Del или Ctrl+Shift+Esc. Вместо него нужно устанавливать специальное ПО, например Gnome-system-monitor. Который, к слову, уже был установлен:

Аналог диспетчера задач в Linux
Аналог диспетчера задач в Linux

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

Понравилось, что можно разделить окна на мониторе не только по горизонтали, но и по вертикали (может быть в новых ОС на Win такая функция тоже есть - не проверял):

Разделение рабочего пространства по горизонтали
Разделение рабочего пространства по горизонтали

Первым делом из программного обеспечения я начал устанавливать ПО для программирования. И начал с установки языка Go.

2. Установка Go на Linux

Решил воспользоваться функционалом Linux и установил Go через терминал.

2.1. Обновление утилиты Sudo

Sudo - это программа для администрирования Unix-подобных операционных систем. Главная её цель - дать как можно меньше прав, с необходимым функционалом для решения задачи.

Запускаем терминал и вводим команду: sudo apt update для обновления утилиты Sudo:

Работа с терминалом Linux
Работа с терминалом Linux

Далее будет необходимо ввести пароль администратора и произойдёт проверка обновлений:

Работа с терминалом в Linux
Работа с терминалом в Linux

Затем ввести в терминал команду: sudo apt upgrade. Будет выполнено обновление (если требуется):

Работа с терминалом в Linux
Работа с терминалом в Linux

2.2. Установка пакета Go

Об установке Go на Windows я рассказывал здесь. Для Linux можно сделать подобным образом (хотя несколько сложнее), но мне интереснее попробовать через терминал.

Вводим в терминал: sudo apt install golang

Работа с терминалом в Linux
Работа с терминалом в Linux

После начнётся проверка актуального пакета Go:

Работа с терминалом в Linux
Работа с терминалом в Linux

Подтвердив продолжение, скачиваются и устанавливаются файлы Go:

Работа с терминалом в Linux
Работа с терминалом в Linux

Можем проверить версию языка Go командой: go version

Работа с терминалом в Linux
Работа с терминалом в Linux

И тут начинается интересное - установлена не самая свежая существующая версия языка Go, доступная на официальном сайте. Почему так?

2.3. Версия Go из репозитория

На иллюстрации ниже показана крайняя на данный момент версия языка Go с официального сайта, и она старше той версии, что скачалась из терминала Linux Mint.

Скриншот с официального сайта Go
Скриншот с официального сайта Go

Свежая версия - 1.20.2, а установлена 1.18.1. Почему так? Начал разбираться, вот что выяснил, благодаря коллегам из учебного чата:

В репозиториях обычно размещают те версии которые считаются стабильными.

Репозиторий - место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.


Обновления версий в репозиториях в целом всегда запаздывает.
Основная масса дистрибутивов Linux устроена так: есть выпуск - например, Ubuntu 22.04, в него включён софт каких-то там версий, и эти версии в рамках этого выпуска не обновляются.

Понятно, что за софтом следят: добавляют патчи каких-то уязвимостей, фиксы каких-то багов, но если в Ubuntu 22.04 офисным пакетом LibreOffice 7.3, то до 7.5 он не обновится.

Сделано это потому, что при выпуске системы конкретная версия софта была протестирована не только сама по себе, но и в сочетании с остальным софтом на этой системе. Не исключено, что при обновлении LibreOffice до 7.5 придётся обновить ещё что-то, а из-за этого сломается что-то третье. Короче, система должна работать не хуже, чем в день выпуска, поэтому «больших» обновлений софта не делают.

Обновляет репозиторий Linux - сообщество Linux. Почитать, как к ним присоединиться можно например здесь о Mint или здесь о Debian.

В мире Linux есть шутка:

- Насколько это (кусок софта) стабильно?
- Debian stable. Окаменело.

Фрагмент страницы сайта Linux Mint Community
Фрагмент страницы сайта Linux Mint Community

В целом, заниматься на версии 1.18.1 вполне можно. Можно установить язык Go другим способом и последней версии, и это будет не намного сложнее. Но зачем? Пока не требуется.

3. IDE

Выше я делился ссылкой где рассказывал об установке LiteIDE. Её же я установил и здесь. Единственно, в менеджере программ Linux её не было, скачал с сайта:

LiteIDE на Linux
LiteIDE на Linux

Из интересного: выше я показывал пример монитора ресурсов. Так вот, если программа уходит в бесконечный цикл, ноутбук начинает усиленно шуметь, а монитор ресурсов выглядит так:

Загрузка ЦП при бесконечном цикле
Загрузка ЦП при бесконечном цикле

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

А предпринять можно следующее закрыть строку терминала в IDE:

Терминал в IDE
Терминал в IDE

Что ещё интересного: когда в терминале прописываем go run "Название файла".go, для Windows не имело значения, в каком регистре пишем. Программа запускалась.

В Linux же регистрозависимый терминал, и если файл называется Cycle.go, то так и нужно писать, а не cycle.go.

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

Чем больше узнаю, тем больше вариантов что ещё хочу узнать. Сейчас по-прежнему приоритет - основной курс от Скиллбокс на Go. Затем хочу изучить следующие задачи:

  • Работа с Git;
  • Курс алгоритмы от Скиллбокс;
  • Курс Go на Stepic хочу закончить;
  • Проработать книгу Грокаем алгоритмы и GitHub по ней (об этом я писал здесь);
  • Базовый бесплатный курс от Яндекс Практикум по Go;
  • Пет-проект с парсингом;
  • Текстовый квест на Go с псевдографикой.

Такие дела. Успехов, и держись, бро!

--//--//--

Усли захочешь купить курс от SkillBox, воспользуйся моей реферальной ссылкой. Ты получишь огромную скидку на курс и плюс в карму за помощь каналу.

Tyler van der Hoeven https://unsplash.com/photos/_ok8uVzL2gI
Tyler van der Hoeven https://unsplash.com/photos/_ok8uVzL2gI

Бро, ты уже здесь? 👉 Подпишись на канал для новичков «Войти в IT» в Telegram, будем изучать IT вместе 👨‍💻👩‍💻👨‍💻