Найти в Дзене
Я, 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. Который, к слову, уже был установлен: Запускается монитор системы не сочетанием клавиш, а как обычная программа. Нужно будет выяснить, можно ли настроить его запуск горячими клавишами. Понравилось, что можно разделить окна на мониторе не только по горизонтали, но
Оглавление

Это статья об основах программирования на 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 вместе 👨‍💻👩‍💻👨‍💻