Раздел 15 · Общие IT-компетенции

Пояс инструментов миддла: regex, bash, API и оценки

middle~30 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Пояс инструментов миддла: regex, bash, API и оценки

Джуна отличает от миддла не знание ещё одного фреймворка, а набор сквозных умений: быстро написать regex вместо ручного перебора строк, автоматизировать рутину скриптом, спроектировать API до того, как написан код, честно оценить задачу и вовремя сказать, что не успеваешь. Этот урок проходит по всему поясу инструментов. Каждая секция это дверь: краткая модель здесь, глубина по ссылке.

Regex без страха

Регулярное выражение это маленькая программа поиска по тексту, записанная в одну строку. Страх перед regex обычно означает, что человек пытается читать его целиком, а не по частям. Частей всего четыре:

  • Литералы и метасимволы. \d цифра, \w буква или цифра, \s пробельный символ, . любой символ.
  • Квантификаторы. * ноль и больше, + один и больше, ? ноль или один, {2,5} от двух до пяти.
  • Группы. (...) захватывает кусок, (?:...) группирует без захвата, | означает «или».
  • Якоря. ^ начало строки, $ конец, \b граница слова.

Главная ловушка: квантификаторы по умолчанию жадные. Паттерн <.+> на строке <a><b> съест её целиком, потому что .+ тянется до последнего >. Ленивая версия <.+?> остановится на первом.

'<a><b>'.match(/<.+>/);  // ['<a><b>']  жадно
'<a><b>'.match(/<.+?>/); // ['<a>']     лениво

Пощупай разницу на живой строке: поменяй её и посмотри, что захватит каждый из паттернов.

Lookahead и lookbehind позволяют проверить контекст, не включая его в совпадение: \d+(?= руб) найдёт число перед «руб», но само слово не захватит.

Правило безопасности: regex для поиска и валидации простых форматов, парсер для вложенных структур. HTML, JSON и код регулярками не разбирают, для этого есть урок про парсеры.

Продвинутый CLI и bash

Базовые команды из первого урока позволяют жить в терминале. Продвинутый уровень позволяет автоматизировать:

  • Окружение. env, export, переменные процесса и почему дочерний процесс не видит твой неэкспортированный VAR.
  • Задачи. Ctrl+Z, jobs, fg, bg: приостановить процесс, посмотреть список, вернуть на передний план.
  • Демоны. systemd и systemctl status: как сервисы живут после твоего logout и где их логи (journalctl).
  • Текстовые комбайны. sed для замен (sed 's/http:/https:/g'), awk для колонок (awk '{print $1, $7}' из access-лога).
  • Сессии. tmux: терминал, который переживает обрыв ssh.

Скрипт начинается с shebang и трёх строк дисциплины:

#!/usr/bin/env bash
set -euo pipefail  # падать на ошибке, на пустой переменной, в пайпе

for f in *.png; do
  magick "$f" -resize 50% "thumbs/$f"
done

Subshell и перенаправления (>, >>, 2>&1, <) превращают bash в клей между программами. Если команда непонятна, вставь её в explainshell и получи разбор по словам. Исследовательские утилиты (ripgrep, jq, fzf) ждут в уроке Инструменты исследования.

Вёрстка, которую не стыдно отдать

Фуллстек не обязан рисовать макеты, но обязан уметь превратить макет в адаптивную страницу, которая не разваливается в чужом браузере. Минимальный набор: семантический HTML, флексы и гриды для раскладки, медиазапросы и относительные единицы для адаптива, SCSS для организации стилей в большом проекте.

Кроссбраузерность сегодня это не хаки под IE, а внимательность к поддержке фич (caniuse), автопрефиксы в сборке и проверка в двух движках минимум: Chromium и Safari или Firefox. Глубокая работа с DOM и браузерным рантаймом разобрана в разделе 07, Браузер и Frontend, начиная с урока JS в браузере.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.