52

Анонс бесплатного курса "Командная строка для разработчиков"

По нашему опыту, современному backend-разработчику неплохо бы понимать Linux на каком-то уровне. Свои мысли насчёт того, зачем разработчику Linux, мы недавно оформили в виде статьи, вызвавшей особо бурные обсуждения.

Кто-то считает, что без линукса действительно никуда. Кто-то считает, что разработчику и в винде комфортно. Кому-то наши примеры показались выдуманными. Кто-то нашёл примеры очень жизненными.

На наш вкус, линукс полезен, но существует непростая проблема высокого порога входа. Есть либо огромные книги вроде Advanced Bash-Scripting Guide, либо фрагментарные статьи совершенно разного уровня качества, либо различные курсы. Курсов много разных, но у нас своё видение. Как в классическом комиксе про стандарты:

Анонс бесплатного курса "Командная строка для разработчиков" IT, Linux, Обучение, Ubuntu, Курсы, Онлайн-курсы, Python, Программирование, Разработка, Длиннопост

Сообщество любит отправлять новичков читать мануалы, что мега-полезно, но довольно непросто. Кстати, на курсе мы разберём, как читать man-ы.

Наша мотивация по созданию курса

Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, мы решили сделать свой бесплатный курс "Командная строка для разработчиков", посвящённый терминалу Linux, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.

Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.

Подробнее о курсе

Курс сильно завязан на практику, поэтому обязателен компьютер с линуксом в каком-то виде. Мы предлагаем три варианта:

  1. Ubuntu в качестве гостевой операционной системы. Для этого в системе виртуализации (virtualbox, VMWare или любой другой) поставить Ubuntu.

  2. Ubuntu в качестве основной операционной системы. Годится любой Linux-дистрибутив или даже macOS.

  3. Ubuntu в WSL2, он же Windows Subsystem for Linux.

Начало курса неспешное и подходит совсем для начинающих. При этом мы обращаем внимание на важные детали, на которые часто никто не обращает внимание. Например, когда выбирать короткие, а когда выбирать длинные флаги команды? Есть ли разница между ls -al, ls -la и ls --all?

Примерная структура курса

Модуль 1. Пользуемся Ubuntu. Осваиваем терминал

  1. Введение в курс.

  2. Перемещаемся по файловой системе.

  3. Работаем с файловой системой.

  4. Редактор текста, работаем с файлами. Создаём и запускаем скрипты.

  5. Процессы, знакомимся с PID, ps | grep и конвейером.

  6. Используем ctrl-r и работаем с историей команд. Алиасы.

  7. Настраиваем терминал.

Модуль 2. Программируем в Ubuntu. Основы Bash

  1. Bash для разработчика, несколько занятий. Полезные однострочники на примере изменения формата файлов, сортировки в разных вариациях.

  2. Всё про поиск - конкретных файлов, поиск внутри файлов .

  3. Виртуальная файловая система proc. Используем proc, PID, PPID, дескрипторы стандартных потоков, файловые дескрипторы, аргументы командной строки, подменяем PATH. Переменные окружения (как они работают, область и время действия), в том числе PATH и HOME. Спецсимволы < > >> 2> 2>> &>.

  4. Работаем с учётными записями в Ubuntu. Разграничиваем права доступа.

  5. Применяем sudo и root. Немного про безопасность, проблемы копирования из терминала, про пакеты, которые ставятся курлом.

Добро пожаловать на курс "Командная строка для разработчиков"! Введение и первое занятие уже доступно.

Интереса ради, мы спросили ChatGPT, нужен ли линукс для питонистов.

ChatGPT о важности Linux для python-разработчика

Python-разработчикам может быть полезно использовать операционную систему Linux в своей работе по ряду причин.

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

Во-вторых, многие инструменты и библиотеки для Python, такие как NumPy, SciPy и Pandas, часто предназначены для работы в Linux-подобных операционных системах. Разработчики, которые используют эти инструменты, будут иметь преимущество, если они работают на Linux.

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

Наконец, Linux является бесплатной и открытой операционной системой, которая имеет широкое сообщество разработчиков и пользователей. Это означает, что Python-разработчики могут получить доступ к большому количеству бесплатных инструментов, библиотек и ресурсов, которые могут помочь им в их работе.

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

Как считаете, правы ли нейросети?

Больше постов читайте по тегу «Курсы». А если сами хотите изучить новую профессию, посмотрите актуальные курсы от проверенных школ с реальными отзывами на сайте Пикабу Курсы.

GNU/Linux

1.2K пост15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
1
DELETED
Автор поста оценил этот комментарий

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

Обычному юзверю - возможно.

Но программист, который не умеет читать весьма подробные и понятные man'ы - это хреновый программист, потому что в большинстве языков документация к самому языку, фреймворкам и библиотекам даже на одну десятую не так хороша, как маны.

А самообучение и умение по конкретной потребности выуживать конкретную практику её решения - ключевой навык программиста на любом языке.

Дальше даже не читал, уж простите - бредь.

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Полностью согласен, что без ман'ов никуда. Но я очень много вижу, как начинающие разработчики пытаются посмотреть в man, сдаются и идут на stackoverflow. Поэтому я учу, как не бояться манов. Объясняю базовые штуки. Разбираю на примере. Учу искать в man. Подталкиваю им пользоваться, чтобы преодолеть начальное неудобство


А на выходе оффлайн-курса ребята в первую очередь лезут в man, а только потом гуглить, если в мане быстро не нашлось

раскрыть ветку (6)
DELETED
Автор поста оценил этот комментарий

начинающие разработчики пытаются посмотреть в man, сдаются и идут на stackoverflow

Скажу грубо: НАХУЙ ТАКИХ РАЗРАБОТЧИКОВ.

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

раскрыть ветку (5)
2
Автор поста оценил этот комментарий

Вероятно, вы считаете, что правильный способ научиться плавать – это закинуть человека на центр озера. Можно ещё пираний добавить, как вариант


Цель нормального обучения – последовательно давать учебный материал с нарастанием сложности, чтобы как можно быстрее довести обучающегося до самостоятельного решения задач. Начинаем с простого и идём к более и более сложным задачам

раскрыть ветку (4)
2
DELETED
Автор поста оценил этот комментарий

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

Врачами, например, называют только закончивших обучение. А "начинающими врачами" - закончившими недавно, но закончившими, полностью обучеными и готовыми к лечению людей, просто не имеющими достаточно практики, а не "ну я прошёл курс и ещё учусь, не решил ни одной задачи выше базовой по учебнику и не читаю справочники".

Так что тот уровень про который вы говорите это "обучающиеся программированию", но никак не "начинающие программисты".

Потому позиционирование "Консоль для программистов" для меня звучит как "Учимся ходить на четвереньках для сорокалетних" - несоответствие заявляемого уровня осваиваемой компетенции озвучиваемым навыкам.

Нормальный программист _знает_ что такое консоль и знает как ей научиться, что powershell, что sh, что bash, что zsh - это инструменты которые осваиваются при базовом понимании того что ты хочешь делать буквально за пару часов на достаточном для решения конкретных задач уровне буквально по встроенному ману или же в случае powershell по get-help.


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

раскрыть ветку (3)
2
Автор поста оценил этот комментарий

Если человек спец по powershell, то это ему никак не поможет в линуксе. Многие даже базовые принципы совсем другие


А вообще можно программировать без линукса и терминала, почему нет. Но я считаю умение работать в терминале базовым и хочу поделиться своим опытом по этой части. Особенно с прицелом на эффективную работу и понимание, где и что искать

раскрыть ветку (2)
3
DELETED
Автор поста оценил этот комментарий

Если человек спец по powershell, то

У него не будет проблемы после получения совета "читай man'ы" с прочтением их и пониманием.


У него будет проблема с непониманием принципов работы и особенностей таргетной системы.

А то, что отличается структура ФС и вызовы утилит (кстати, совсем не всех, тонна всего кросплотформена, а powershell сильно ближе к линуксовым терминалам, чем cmd - вот с неё и вправду более-менее разница чувствуется в базе) - так вот это он уже разберётся по аналогии и без курсов. Иначе: смотрите тейк моего первого комментария "это хреновый программист.

Но я считаю умение работать в терминале базовым

И правильно делаете - база и есть. А вот умение ориентироваться в среде ОС на которой работаете, так то и между дистрибутивами будет отличаться, работа с арчем, с debian-based и генту совсем неодинакова и требует понимания работы таргетной системы, но это совсем никак не связано собственно с принципами работы консоли.


хочу поделиться своим опытом по этой части

Похвальное начинание и я его поддерживаю - консоль и вправду знают незаслуженно плохо и её боятся даже многие сисадмины! Просто тем, кому такой курс нужен, ИМХО, рано зваться программистами, как раз по причине "это базовые навыки", в точности как Вы и сами пишите.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо, что поддерживаете)

Сейчас в образовании весьма грустным бардак. Система высшего образования не очень хорошая, в нише курсов очень много инфоцыган, книжек слишком много и непонятно, куда коней запрягать. При этом, действительно, в индустрию пришла тонна джунов. И даже среди не-джунов очень много специалистов уровня "я умею CRUD для сайта сделать", и таким тоже есть работа


У меня очень давно было желание нести добро в массы путём знакомства людей с linux. Оно вылилось в начале в оффлайн-курс, теперь вот я пытаюсь перенести его в онлайн. Чтобы я всегда мог начинающего тыкнуть "вот, пройти вот это, потом поговорим". Это, кстати, ещё и позволяет легко проверить усидчивость человека - случайный ли он залётчик в ИТ или действительно готов копать


Тот факт, что я объясняю ман-ы, ни в коей мере не говорит о том, что курс простой. Приходите проходить полную версию после релиза, думаю, вам понравится. Или зовите посмотреть на неё джунов вокруг)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку