Что такое "знание Linux" для бэкэнд программиста?
От: Aleksey82  
Дата: 21.11.20 14:16
Оценка:
Листаю вакансии, и часто у веб-программистов в требованиях вакансий встречается "знание Linux". Что-то типа C++, node.js, linux.

Что надо знать бэкэнд программисту, который пишет на node или питоне (или с++), о линуксе? И как за короткое время получить эти навыки?

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

Ну т.е. гуглить-то я могу, но не зная что именно ищу и откуда начать, мне потребуется перелопатить много разной инфы, вероятно обрывочной или излишней. Как сократить время обучения?


Сам я писал под винду на C++/C#, немного сталкивался с ubuntu.
Re: Что такое "знание Linux" для бэкэнд программиста?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.11.20 14:33
Оценка: 10 (1) +13
Здравствуйте, Aleksey82, Вы писали:

A>Листаю вакансии, и часто у веб-программистов в требованиях вакансий встречается "знание Linux". Что-то типа C++, node.js, linux.


Обычно это означает "не падать в обморок когда лишили VS и дали командную строку и Make сверху". То есть человек себя уверенно чувствует в консоли и может обходиться вообще без UI если надо, всё собственно
— Разбираться с командной строкой как таковой. Тут исключительно практика, как мне кажется. На вскидку можно попробовать что-то подобное.
— Разобраться как редактировать файлы если есть только консоль. Тут большинство виндузятников в истерику впадают, всё то им либо бибикает либо портит
— Если говоришь о бэкенде, разберись со всякими ssh, scp, docker, aws cli и тому подобным барахлом которое зависит от направленности в которую ты двигаешься.
Отредактировано 21.11.2020 14:38 kaa.python . Предыдущая версия . Еще …
Отредактировано 21.11.2020 14:36 kaa.python . Предыдущая версия .
Re: Что такое "знание Linux" для бэкэнд программиста?
От: benvenuto  
Дата: 21.11.20 17:03
Оценка: 5 (1)
Здравствуйте, Aleksey82, Вы писали:

A>Листаю вакансии, и часто у веб-программистов в требованиях вакансий встречается "знание Linux". Что-то типа C++, node.js, linux.


A>Что надо знать бэкэнд программисту, который пишет на node или питоне (или с++), о линуксе? И как за короткое время получить эти навыки?


Вот, кстати, хороший вопрос. Я писал под Linux (в основном RedHat), FreeBSD, Solaris и Windows и не замечал концептуальной разницы. Ну да приходилось иногда использовать grep, awk, tail и даже sed. Но это раньше, сейчас появились всякие крутые тулы вроде OpenGrok и Splunk, так что нужда в грепах как-то отпала.

Бывало нужно использовать было vim, а то и vi для правки конфигов на сервере, но сейчас и это ушло.

Отладчики командной строки такие как gdb и dbx все еще нужны, но там не так уж много знать.

И стандартыне команды вроде cd, ls, ps, kill, ssh надо знать.

Я думаю если вы почитаете по командам статьи типа https://www.howtogeek.com/481766/how-to-use-the-tail-command-on-linux/, то вполне будете соответствовать. Я, кстати, все по ходу дела осваивал.
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: benvenuto  
Дата: 21.11.20 17:10
Оценка:
Здравствуйте, benvenuto, Вы писали:

Только не надо учить все это достаточно прочитать статьи и запомнить, что

grep — это команда, поиска строк файлов по паттерну (например grep ERROR)
awk, sed — операции с содержимым файла (заменить и тп)
tail — вывести конец файла, удобно для простмотра логов
gdb — отладчик GNU
dbx — отладчик Sun
vim — текстовый редактор
и т.д.
Отредактировано 21.11.2020 17:13 benvenuto . Предыдущая версия .
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: Слава  
Дата: 21.11.20 17:50
Оценка:
Здравствуйте, kaa.python, Вы писали:


KP>Обычно это означает "не падать в обморок когда лишили VS и дали командную строку и Make сверху". То есть человек себя уверенно чувствует в консоли и может обходиться вообще без UI если надо, всё собственно


А если дали autotools?
Re: Что такое "знание Linux" для бэкэнд программиста?
От: DiPaolo Россия  
Дата: 21.11.20 17:53
Оценка: 10 (3) +3
Да там нечего учить, как такового. Достаточно быстро все само придет — не ракет сайенс.

ГУЙ утилит уже достаточно много и под линуксами. Более того, многие выглядят также, как и под виндами/маками. Говорю по своему опыту: девелопил и C++ проекты под линуксом, и питон, и всякие Го для веба.

Из важного и полезного, что пришло на ум, и чем активно пользуюсь я:
— иметь базовые представления о структуре папок в системе
— установка/удаление/апдейт пакетов
— работа с гитом в командной строке (не отличается от винды)
— работа с докером в командной строке (не отличается от винды)
— уметь подключиться по ssh к удаленному серверу, что-то там поправить, залить, перезапустить какой-нить сервис и т.п.
— важно поставить Midnight Commander (аналог Total Commander, Far Manager). Он значительно облегчит жизнь
— важно помнить, что папки регистрочувствительны в линуксе
— узнать команды навигации по папкам
— команды прибивания процессов
— узнать, что такое рут (root)
— важно понимать, что из-под рута ничего не стоит запускать без веской на то причины
— запускать бинари надо так: ./meprogram
— есть документация для стандартных утилит. Вызывается по man <utility>
— почти все программы имеют команды --version и --help, которые бывают очень полезны
— научиться собирать из сорцов. Все просто: обычно это ./configure, а затем make install
— понять, как работают пайпы в командной строке. Когда, например, выводишь ffmpeg --help | grep avx (весь выхлоп из справки ффмпег направляется в утилиту grep, которая выводит только строки, где встречается avx; важно помнить, что и тут регистр важен)
— (работает в Ubuntu-like ОСях) Ctrl+Alt+T или Ctrl+Shift+T или Win+T — открыть терминал
— (работает в Ubuntu-like ОСях) Ctrl+U — стереть все до начала строки в терминал (бывает полезно, когда написал длиннющую строку и надо все стереть)

Частые команды:
apt-get install (установить программу)
grep
history (список последних команд)
whereis (где находится указанная программа)
cd
ll
kill (убить процесс)
reboot
sudo
tar
cp
mv
rm
export
top (список процессов)
ps aux (тоже список процессов)
pwd (полный путь текущей папки)
pushd
popd (две команды, чтобы запомнить текущую папку и потом вернуться к ней)

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

Еще рекомендую некоторые команды выписывать себе в отдельное место. Прям с примером использования. Так будет проще их переиспользовать в последующем.
Патриот здравого смысла
Отредактировано 21.11.2020 19:13 DiPaolo . Предыдущая версия . Еще …
Отредактировано 21.11.2020 18:06 DiPaolo . Предыдущая версия .
Re: Что такое "знание Linux" для бэкэнд программиста?
От: гусь Ад  
Дата: 21.11.20 18:45
Оценка: 5 (1) +1
Здравствуйте, Aleksey82, Вы писали:

A>Листаю вакансии, и часто у веб-программистов в требованиях вакансий встречается "знание Linux". Что-то типа C++, node.js, linux.

Откликайся везде, где знаешь треть технологий в вакансии.

A>Посоветуте какой-то курс или книгу, или статьи, с помощью которых можно это освоить в минимальные сроки. Что для вас было бы наилучшим учебником по соотношению временные затраты\навыки?

Любую популярную книгу прочитай по диагонали.

A>Ну т.е. гуглить-то я могу, но не зная что именно ищу и откуда начать, мне потребуется перелопатить много разной инфы, вероятно обрывочной или излишней. Как сократить время обучения?

Обучайся по мере появления проблем. Спрашивай вопросы у шарящих коллег.
вы кто такие, я вас не звал, идите на
Re: Что такое "знание Linux" для бэкэнд программиста?
От: vsb Казахстан  
Дата: 21.11.20 20:24
Оценка: +1
Снеси винду, поставь линукс и поработай полгода под ним без попыток вендовозства (типа установки фара под вайном). Думаю, этого хватит.
Re: Что такое "знание Linux" для бэкэнд программиста?
От: gyraboo  
Дата: 21.11.20 20:51
Оценка:
Здравствуйте, Aleksey82, Вы писали:

A>Листаю вакансии, и часто у веб-программистов в требованиях вакансий встречается "знание Linux". Что-то типа C++, node.js, linux.


A>Что надо знать бэкэнд программисту, который пишет на node или питоне (или с++), о линуксе?


Ну например, что значит sed "1 d" и чем это можно заменить?

A> И как за короткое время получить эти навыки?


Видимо только чтением статей типа "Минимум 50 команд линукса, которые нужно знать всем"
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: Aleksey82  
Дата: 21.11.20 21:00
Оценка:
DP>девелопил и C++ проекты под линуксом, и питон, и всякие Го для веба.

А что использовали для редактирования исходников, какие обычно используются тулзы? Т.е., скажем, что используется вместо виндовой студии?
Я как-то отлаживал C++ проект под андроид из-под линукса с помощью gdb... и это была боль...
Re[3]: Что такое "знание Linux" для бэкэнд программиста?
От: John1979  
Дата: 21.11.20 21:59
Оценка: +1 -2
Здравствуйте, Aleksey82, Вы писали:

A>А что использовали для редактирования исходников, какие обычно используются тулзы? Т.е., скажем, что используется вместо виндовой студии?


Нет ничего даже близко подходящего по удобству к студии, поэтому мы использовали VS и настроенный ремоут дебаггер.
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: CreatorCray  
Дата: 21.11.20 22:03
Оценка: 9 (1) +4 -2 :))) :))) :)
Здравствуйте, vsb, Вы писали:

vsb>Снеси винду, поставь линукс и поработай полгода под ним без попыток вендовозства (типа установки фара под вайном). Думаю, этого хватит.

...чтобы больше не хотеть это трогать вообще никогда
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: Что такое "знание Linux" для бэкэнд программиста?
От: a7d3  
Дата: 21.11.20 22:16
Оценка: +1
Здравствуйте, Aleksey82, Вы писали:

DP>>девелопил и C++ проекты под линуксом, и питон, и всякие Го для веба.


A>А что использовали для редактирования исходников, какие обычно используются тулзы? Т.е., скажем, что используется вместо виндовой студии?

A>Я как-то отлаживал C++ проект под андроид из-под линукса с помощью gdb... и это была боль...

Забыть как страшный сон autotools (./configure), весь вменяемый народ ушёл на cmake.

Можно работать с С++ внутри:
• Visual Studio Code (ставить из репозитория своего дистрибутива линукса, а не с сайта)
• QtCreator (можно взять с репозитория), на сайте наиболее свежее https://www.qt.io/offline-installers
• CLion https://www.jetbrains.com/clion/
• KDevelop (ставить из репозитория) или наиболее свежее https://www.kdevelop.org/download можно и в виде AppImage

Про знание линукса пишут в вакансиях подразумевая, что сотрудник должен быть способен вести разработку софта на линуксах.
В современных реалиях, без сферических коней в вакууме, человек может делать разработку софта на С++ из под линуха, если он в состоянии собирать С++проекты посредством CMake из консоли и те же самые проекты из под этих подобий-IDE.

С той оговоркой, что хоть VS Code и стоит первой в списке, но врядли подходит для того, чтобы её первой же и пробовать. Поскольку требует установки экстеншенов для поддержки С++, для поддержки CMake, удалённой отладки и т.д. и т.п.

QtCreator может быть полезен и для нативных С++ проектов без Qt, когда надо работать с плеядой различных тулчейнов и хочется использовать подобие IDE имеющее поддержку clang-tidy (статический анализатор) и набор valgrind (динамический анализ).

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

KDevelop предоставляет всё тоже самое, что и QtCreator, но имеет очень убогую поддержку работы с контейнерами, нет смысла пытаться пользоваться этой функциональностью (явно ещё не зрелая даже на уровне концепции).

У них всех есть удалённая отладка кода в виде GUI обёртки над GDB и/или LLDB. Равно как у некоторых есть сборка кода на удалённом сервере или же внутри контейнера / виртуальной машины (которые могут быть локально). Иначе говоря, можно иметь на своей машине один вариант линукса, а собираться исходники будут на удалённом сервере с другим линухом (другим тулчейном и либами) или же внутри контейнера на этой же машине, когда внутри контейнера копия серверного линукса.
Отредактировано 21.11.2020 23:16 a7d3 . Предыдущая версия . Еще …
Отредактировано 21.11.2020 22:18 a7d3 . Предыдущая версия .
Re[3]: Что такое "знание Linux" для бэкэнд программиста?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.11.20 23:26
Оценка: +3
Здравствуйте, Слава, Вы писали:

С>А если дали autotools?


Плакать. Но такой проект разве что собрать надо будет, что не сложно.
Re[3]: Что такое "знание Linux" для бэкэнд программиста?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.11.20 01:16
Оценка: 5 (1)
Здравствуйте, CreatorCray, Вы писали:

vsb>>Снеси винду, поставь линукс и поработай полгода под ним без попыток вендовозства (типа установки фара под вайном). Думаю, этого хватит.

CC>...чтобы больше не хотеть это трогать вообще никогда

Более чем нормально на деле. Достаточно поставить Zsh + Tmux и никакой Фар в принципе не нужен.
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: sergey2b ЮАР  
Дата: 22.11.20 01:30
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Снеси винду, поставь линукс и поработай полгода под ним без попыток вендовозства (типа установки фара под вайном). Думаю, этого хватит.


mc можно
CodeLite скопированна с шестой VS
Re: Что такое "знание Linux" для бэкэнд программиста?
От: sergey2b ЮАР  
Дата: 22.11.20 01:35
Оценка: 5 (1)
Здравствуйте, Aleksey82, Вы писали:

для прохождения собеседования можно пройти курсы выполняя все задания

https://stepik.org/course/73/promo

https://stepik.org/course/548/promo


и поработать в vim
Re[4]: Что такое "знание Linux" для бэкэнд программиста?
От: CreatorCray  
Дата: 22.11.20 05:11
Оценка: +1 -1
Здравствуйте, kaa.python, Вы писали:

KP>Более чем нормально на деле. Достаточно поставить Zsh + Tmux и никакой Фар в принципе не нужен.

Неа.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[4]: Что такое "знание Linux" для бэкэнд программиста?
От: aik Австралия  
Дата: 22.11.20 07:34
Оценка: +2 :)
Здравствуйте, kaa.python, Вы писали:

KP>Более чем нормально на деле. Достаточно поставить Zsh + Tmux и никакой Фар в принципе не нужен.


от фара ломка как от героина (мс это как водкой от героина отпаиваться), но по прошествии лет даже странно как настолько кривожопная прога так разошлась, видимо, на фоне винды не так заметно.
Re[2]: Что такое "знание Linux" для бэкэнд программиста?
От: aik Австралия  
Дата: 22.11.20 07:44
Оценка: +1
Здравствуйте, DiPaolo, Вы писали:

DP>Еще рекомендую некоторые команды выписывать себе в отдельное место. Прям с примером использования. Так будет проще их переиспользовать в последующем.


Я завёл себе гит репу и складываю эти команды в виде скриптов (скриптуется же решительно всё) — сразу видно как именно запускать (типа черезжопных hexdump или sed), а в комментариях оставляю таги чтоб потом найти если редко использую.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.