Linux что нужно знать разработчику

Linux для начинающего разработчика или как навсегда забыть о Windows

Дисклеймер

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

Пост предназначен в первую очередь для тех, кто занимается разработкой, но так же очень сильно поможет тем, кто пытался перейти на linux, но из-за каких бы то ни было непонятных вещей и трудностей плюнул и сказал: «Да ну нафиг этот линукс, еще возиться с ним буду».

В статье рассматривается установка Ubuntu 16.04 и настройка оной исключительно для работы.

Предыстория

Ранее уже были предприняты попытки перекатиться на linux, но из-за своей чрезмерной привязанности к продукту компании Microsoft, миграция в который раз откладывалась в «долгий ящик».

Так же меня всегда останавливало большое количество вопросов, на которые я не смог найти ответы, проблемы, ошибки и.т.д.
Но после того, как я заинтересовался и начал изучение Node.js, один товарищ меня все же подбил на переезд под предлогом того, что работать в linux будет удобнее. И вот, после нескольких неудачных попыток установки и некоторого времени использования Ubuntu в качестве основной ОС, я удалили драгоценную винду и навсегда забыл о ней. Ничуть об этом не жалею.

Приступаем к установке

Первое что нам надо сделать — записать загрузочную флешку или диск. Дистрибутив Ubuntu 16.04 весит всего 1.4 гб, поэтому лучше всего нам подойдет флешка. Скачиваем программу Unetbootin -> unetbootin.github.io.

Тут все довольно просто. Ставим «Образ диска», выбираем .iso файл, который мы скачали, выбираем носитель и нажимаем ОК. Запись не заставит себя долго ждать.

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

Чтобы все же завести флешку, пробуем загрузится с нее в UEFI режиме. Но позже, нас спросят, хотим ли мы продолжить установку в UEFI режиме. В случае если ваше решение перейти на linux является окончательным, то можете ответить утвердительно. Если же у вас есть необходимость загружаться в других ОС, то нажимаем «вернуться» (ума не приложу, почему именно так обозвали эту кнопку). Сама установка не должна вызывать каких-либо трудностей. Выбираем свой язык, и двигаемся дальше. Рекомендую в следующем окне поставить галочки:

В следующем окне выбираем пункт: «Другой вариант».

Далее нам нужно разметить диск. Если у вас 2 жестких диска и один из них не используется и на нем нет никаких данных, то просто выбираем его и нажимаем -> «Создать новую таблицу разделов».

У нас появится «свободное место», на него мы так же нажимаем и создаем первый раздел.

Размер root раздела может составлять и 4гб, но рекомендую поставить 40-50, чтобы имелся запас.
Тип — первичный
Местоположение — на всех разделах должно стоять «Начало этого пространства»
Использование — Ext4
Точка монтирования — » / «

Размер = размеру вашей оперативной памяти
Использование — раздел подкачки
Данный раздел играет роль резервной «оперативной» памяти, хранящейся на нашем жестком диске.

Размер = все оставшееся пространство
Тип — логический
точка монтирования — » /home «

Вот собственно и все, нажимаем продолжить, соглашаемся с тем что все файлы на разделах будут уничтожены. Далее — соглашаемся, вводим что просит. Теперь можно сходить попить кофе)

Настройка системы, оформление, подгонка под особенности железа

После установки мы конечно же перезагружаемся в нашу теперешнюю ОС, логинимся. Заходим в параметры системы -> программы и обновления, в первой вкладке выставляем галочки таким образом:

Сразу же выполним некоторые команды:

sudo означает выполнение с правами администратора

После первой же команды у вас попросят пароль, который вы придумали на этапе установки. Не пугайтесь, если вы вводите пароль, а буквы не отображаются — это такая мера безопасности. Если спросит про установку пакетов и приветливо будет мигать курсором — смело пишем Y и нажимаем Enter. Так что же мы только что сделали сей командой? Мы дали команду пакетному менеджеру «apt» обновить список доступных пакетов и установить их. Принцип работы основывается на GIT, вы включаете репозитории, обновляете их, устанавливаете обновления.Это дает нам преимущество — у нас всегда все самое свежее. Список репозиториев лежит в /etc/apt/sources.list, но нам это вряд ли понадобится.

Обновление завершено — перезагружаемся, хоть и в linux это обычно не требуется, но возможно обновилось ядро и данную операцию все же следует провести. Вообще если после update вы видите строчки подобного содержания:

значит обновление затрагивает наше ядро и перезагрузка обязательна.

«Железные» проблемы

Лично у меня сразу возникла проблема с мышкой. Использую игровую мышь с чувствительностью 3800DPI. Естественно, она металась по всему монитору от малейшего передвижения. И проблема с отображением мониторов. У меня стоят 2х 17inch с соотношением 4:3. Один монитор у подключен в мат.плату, а второй — в видеокарту от AMD. С первым все было хорошо, а вот тот что на встроенной графике — затухал сразу же после входа в систему. На ум пришло написать скрипт в автозагрузку для замедления мышки и переопределения мониторов (может кому пригодится).

Читайте также:  Шифрованный efi системный раздел windows 10

Решение проблемы с слишком шустрой мышкой

В консоли вводим xinput и видим список подключенных устройств. Находим свою мышь и переписываем ее ID. На моей мышке вводим команду xinput list-props ’11’. Перед нами опять появляется список, но уже с набором опций, нам нужна Device Accel Constant Deceleration, смотрим ее ID (в скобочках). У меня оно равно 274. Теперь, зная id мышки и id, мы пишем следующее:

В домашнем каталоге создаем файл start.sh и открываем его, где последняя цифра (2) означает во сколько раз надо замедлить мышь. Данную команду можем сразу внести в наш скрипт.ё

Почему же мы не зашли в настройки и там не убрали чувствительность? Потому что диапазон регулировки там невелик. И скорее всего, его будет недостаточно.

Решение проблемы с некорректно отображаемыми мониторами

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

Но у меня при выставленном в БИОС приоритете встроенной графики, после входа второй монитор выключался и оставался тот, что подключен к видеокарте. Что примечательно — после пробуждения из спящего режима, второй снова оживал и работал нормально. Смотрим нумерацию мониторов, здесь на главном мониторе стоит метка «Primary».

Согласно номерам, выставляем как будут располагаться мониторы. Дописываем в наш скрипт:

Теперь пришло время прописать скрипт в автозагрузку, открываем меню dash (клавиша WIN) и вводим в поиске:

«Автоматически запускаемые приложения». Нажимаем добавить, вписываем имя (не важно какое, главное чтобы вам был понятен смысл назначения этого элемента), описание оставляем пустым. Теперь в поле «команда» вводим следующее:

Этим самым мы отдаем команду на запуск скрипта. Путь у вас может быть любой другой. Сохраняем и при следующей перезагрузке проверяем работоспособность.

Если все же проблема с мониторами остается — попробуйте поколдовать с их расположением и приоритетом вывода видео в БИОС
Касательно драйверов — я не стал ставить поскольку все и без них работает хорошо, в случае с AMD установка драйверов может вызвать крах системы.

Настройка системы и установка программ

Добавление шрифтов windows

После установки браузера (чуть позже), вы заметите что шрифты на некоторых сайтах режут глаза и от них хочется плакать.

После перезагрузки браузера шрифты должны отображаться правильно. Если есть желание — вы можете выставить какой-либо из них как системный (в настройках или ubuntu tweak tool). Рекомендую зайти в ubuntu tweak и во вкладке «шрифты» выставить:

Софт из уже включенных репозиториев

Программы которые уже включены в репозиторий партнеров canonical вы можете установить следующим образом:

Пакет программ, которыми пользуюсь я:

1. skype
2. ssh (для подключения и удаленного управления машиной)
3. unity-tweak-tool (Тонкая настройка оболочки unity)
4. ubuntu-tweak-tool (Расширенные настройки системы)
5. inkscape (Редактор векторной графики)
6. gimp (Использую вместо фотошопа)
7. clementine (Аудиопроигрыватель)
8. mc (файловый менеджер для терминала)
9. vlc (видеопроигрыватель, со множеством кодеков)
10. filezilla (ftp клиент)

Установка стороннего ПО

Чтобы установить стороннее ПО нам придется добавлять репозитории в систему.

Качаем с официального сайта пакет, открываем его, в менеджере нажимаем «install».
Для просмотра видео, требуется flash, установим его.

Мне нравится работать в «скобках», очень приятная и удобная вещь:

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

После установки запускам unity tweak tool. Тему выставляем «Numix», значки так же «Numix». По душе темные темы? Запускаем ubuntu tweak tool и во вкладке «внешний вид» ставим «Применить темную тему глобально». Пока не вышли из ubuntu tweak, лучше прописать в автозагрузку skype и telegram.

Финальным штрихом установим LAMP сервер (Linux apache mysql php) и phpmyadmin:

Пробуем зайти по адресу localhost. Если все в порядке, то двигаемся дальше. Открываем конфигурационный файл apache:

Находим там теги в них прописана информация о местоположении файлов нашего сервера, после последнего пишем такую конструкцию:

AllowOverride All
Require all granted

Путь можете указать какой вам удобно. В конце конфигурационного файла прописываем:

ServerName localhost

Внимание! Ниже описанные операции придется проделывать каждый раз при добавлении нового виртуального хоста!

Для добавления новых виртуальных хостов проделываем следующее. Создаем папку в директории /home/user/public_html/test, открываем /etc/hosts и в первую строку оного добавляем имя нашего сайта:

Далее выполним в терминале:

Тем самым мы скопировали дефолтный конфигурационный файл для нашего сайта, открываем его:

и вместо example.com впишем свое название. Далее подправим DocumentRoot который указывает на местоположение файлов нашего сайта, прописываем вместо стандартного /var/www — /home/user/public_html/test.

Теперь мы можем включить наш сайт:

Вот и все. Базовая настройка завершена, можно пользоваться!

Не бойтесь искать в интернете, если вам что-то необходимо установить и настроить! Он не кусается. В данной статье я постарался изложить как можно подробнее процесс базовой настройки Ubuntu 16.04. Уверен, что после недели использования ubuntu в качестве основной ОС вы уже вряд ли вернетесь обратно.

Читайте также:  Windows запуска openvpn как сервис

Источник

Изучите необходимый минимум Linux, чтобы быть продуктивным

Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

В реальности знания и опыт — динамичны, они охватывают несколько дисциплин и сфер деятельности. Представление о том, что «можно иметь способности только к чему-то одному» — это не руководство к овладению мастерством, а попытка справиться с преждевременной оптимизацией. Узнать о том, в чём вы хорошо разбираетесь можно только когда вы попробовали себя в нескольких разных вопросах. И может оказаться, что у вас есть способности ко многим видам деятельности.

Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

Почему современные бизнес-аналитики должны знать Linux

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git. Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

Если вдаваться в подробности, разработка на Windows ведёт к двум основным проблемам:

  1. Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  2. Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Фундаментальная единица Linux: «оболочка»

Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash. В отличие от Windows-пользователей, которые в своём большинстве используют навигацию «навести-кликнуть» по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

Изучаем несколько важных концептов

В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20-30 команд и их часто используемые аргументы.

Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

Командный синтаксис

Команды соответствуют синтаксису:

Например, в ‘grep -inr’, grep — это команда (для поиска текстовой строки) и -inr это флаги/аргументы, которые меняют то, что grep выполняет по умолчанию. Единственный способ понять, что это значит, поискать что-то о них через Google или просто ввести ‘man grep’. Я рекомендую выучить команды и их самые используемые аргументы: слишком обременительно помнить, что делает каждый флаг.

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

  • Текущая директория (где я?): .
  • Родительская директория текущей директории: ..
  • Домашняя директория пользователя:
  • Корень файловой системы (или родитель всех родителей): /
  • Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

    Таким же способом, чтобы скопировать файл, расположенный в «/path/to/file.txt» в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

    Полезная информация

    У нас есть курс по операционным системам. Зарегистрированные пользователи могут пройти его бесплатно. Другие бесплатные курсы можно найти по ссылке.

    Читайте также:  Подкасты для mac os

    STDIN / STDOUT

    Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

    Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

    Конвейер (piping)

    Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

    пример: echo ‘test text’ | wc -l

    Символ «больше» принимает STDOUT от команды слева и записывает/перезаписывает в новый файл справа

    пример: ls > tmp.txt

    Два символа «больше» принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

    пример: date >> tmp.txt

    Шаблоны поиска (wildcards)

    Можете представить это как символ % в SQL. Например, можно написать WHERE first_name LIKE ‘John%’ , чтобы найти любые позиции, где данные начинаются с имени John.

    В bash можно написать John* . Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на «.json», пишете : ls *.json

    Завершение с помощью tab

    Bash часто завершает команды сам, по определённой логике, если вы начинаете вводить команду и нажимаете TAB.

    Однако, стоит попробовать что-то вроде zsh или fish для автозаполнения, потому что запоминать команды и все их параметры очень сложно. Более того, эти инструменты применят автозаполнение, основываясь на вашей истории используемых команд.

    Выход

    Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q. Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

    Что я помню из команд bash

    Это те команды, которые я использую чаще всего в Linux (начиная от самых часто используемых к самым редко используемым). Как я уже писал раньше, знание всего горстки команд поможет выполнять большой набор необходимых программируемых задач.

    • cd изменить директорию
    • ls -lha вывести директорию в виде списка (подробного)
    • vim или nano редактор командной строки
    • touch создать новый пустой файл
    • cp -R скопировать файл или директорию (и всё их содержимое)
    • mv переместить или переименовать файл
    • rm удалить файл
    • rm -rf удалить файл или папку без возможности восстановления [использовать аккуратно!]
    • pwd вывести текущую рабочую директорию
    • cat или less или tail или head -n10 вывести в STDOUT содержимое файла
    • mkdir создать пустую директорию
    • grep -inr найти строку в любом файле этой директории или дочерних директориях

    column -s, -t отобразить разделенный запятыми файл в виде столбцов

    ssh @ соединиться с удалённой машиной

    tree -LhaC 3 показать структуру директории на 3 уровнями вглубь (с размерами файлов и включая скрытые директории)

    htop (или top ) диспетчер задач

    pip install —user пакетный менеджер Python для установки пакетов в

    pushd . ; popd ; dirs; cd — push/pop/view директорию в стек + изменить обратно на последнюю директорию

    sed -i «s///g» заменить строку в файле

    find . -type f -name ‘*.txt’ -exec sed -i «s///g» <> \; заменить строку для каждого файла в этой и дочерней папках с именем типа *.txt

    tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]

    wget загрузить веб-страницу или веб-ресурс

    curl -X POST -d «» http://www.google.com отправить HTTP-запрос на веб-сервер

    find вывести список всего содержимого директории и её дочерних директорий рекурсивно

    Читайте также

    Продвинутые и не часто используемые команды

    Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

    • lsof -i :8080 вывести список дескрипторов открытых файлов ( -i — флаг для сетевых интерфейсов)
    • netstat | head -n20 вывести список открытых интернет/UNIX сокетов и связанной с ними информации
    • dstat -a транслировать текущий диск, сеть, активность CPU и другое
    • nslookup найти hostname для удалённого IP-адреса
    • strace -f -e отследить системные вызовы программы ( -e — флаг для фильтрования конкретных системных вызовов)
    • ps aux | head -n20 вывести текущие активные процессы
    • file проверить тип файла (например исполняемый, бинарный, текстовый файл с кодировкой ASCII)
    • uname -a информация о ядре ОС
    • lsb_release -a информация об ОС
    • hostname проверить hostname текущего компьютера (например, название, чтобы другие компьютеры могли иметь доступ к вашему)
    • pstree визуализировать форки процессов
    • time исполнить команду и составить статистику о том, сколько времени потребовалось на исполнение
    • CTRL + z ; bg; jobs; fg отправить процесс в текущий tty в background и обратно на передний план
    • cat file.txt | xargs -n1 | sort | uniq -c посчитать количество уникальных слов в файле
    • wc -l количество строк в файле
    • du -ha показать размер на диске для директорий и их содержимого
    • zcat вывести содержимое заархивированного текстового файла
    • scp скопировать файл с удалённого на локальный сервер или наоборот
    • man показать инструкцию, (т.е. документацию) для команды (но скорее всего легче использовать Google)

    Никогда не останавливайтесь:

    В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях

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

    Источник

    Оцените статью