Зачем вам этот курс?

Во время получения традиционного образования в компьютерных науках вы скорее всего будете посещать несколько курсов по продвинутым темам: от операционных систем и языков программирования до машинного обучения. Но во многих учебных заведениях не преподают ключевой навык – грамотность в компьютерной экосистеме. Ее студенты должны освоить самостоятельно.

На протяжении многих лет авторы курса помогали вести несколько курсов в Массачусетском технологическом институте (MIT). Снова и снова они видели, что многим студентам не хватало знаний о доступных им инструментах. Компьютеры созданы для автоматизации ручной работы, но студенты все еще часто выполняют повторяющиеся задачи вручную или не могут в полной мере воспользоваться мощными средствами, такими как контроль версий и текстовые редакторы. В лучшем случае это приводит к неэффективности и трате времени впустую, в худшем – к потере данных или невозможности выполнения определенных задач.

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

Пропущенный семестр курсов по компьютерным наукам

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

Курс проходил в течение «периода самостоятельной активности» в MIT в январе 2020 года. Этот семестр длится всего месяц и состоит из более коротких уроков, которые проводят сами студенты. Хотя занятия доступны только студентам MIT, авторы открыли свободный доступ ко всем материалам, включая видеозаписи.

Чему вы научитесь на курсе?

Командная строка

Как автоматизировать простые и повторяющиеся задачи с помощью псевдонимов (alias, своего рода сокращателя команд), скриптов и систем сборки? Больше никакого копирования из текстового документа. Больше никакого «запустить эти 15 команд друг за другом». Больше не будет «вы забыли запустить эту штуку» или «вы забыли передать этот аргумент».

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

Контроль версий

Как правильно использовать контроль версий и избежать тем самым катастрофы, как сотрудничать с другими разработчиками, как быстро находить и изолировать ошибки в коде? Никаких больше rm -rf; git clone. Никаких конфликтов слияния (ну, или по крайней мере, меньше таких конфликтов). Никаких больше огромных блоков закомментированного кода. Теперь не нужно беспокоиться, как найти изменение, сломавшее код. Больше не будет «о нет, мы удалили рабочий код?!». Вы научитесь вносить свой вклад в проекты других людей с помощью пул-реквестов!

В приведенном ниже примере для определения коммита, который сломал модульное тестирование (unit test), используется git bisect, а исправления вносятся с помощью git revert.

Редактирование текста

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

Ниже показана одна из лучших функций макросов в Vim. С помощью макроса мы быстро конвертируем таблицу html в формат csv.

Удаленная машина

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

В примере ниже используем tmux для поддержания активности сеансов на удаленных серверах и mosh для поддержки сетевого роуминга и разъединения.

Поиск файлов

Как быстро найти файлы? Больше не придется перебирать все файлы в проекте, пока не найдете тот, который содержит необходимый код.

В приведенном примере мы быстро ищем файлы с помощью fd и фрагменты кода с помощью rg. Мы также быстро cd и vim последние/часто используемые файлы или папки с помощью fasd.

Работа с данными

Как быстро и легко настраивать, просматривать, пересылать, отображать данные и файлы прямиком из командной строки?

Виртуальная машина

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

Безопасность

Как пользоваться интернетом, не открывая миру сразу все свои секреты? Больше не нужно придумывать пароли, которые должны соответствуют безумным стандартам. Больше никаких незащищенных открытых сетей Wi-Fi. Больше никаких незашифрованных сообщений.

Заключение

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

Happy hacking,
Anish, Jose, and Jon


Редактировать страницу.

Лицензия CC BY-NC-SA.