Существует много полезных инструментов, которые помогают автоматизировать рутинную работу и тем самым облегчить жизнь разработчика.
Выпускнику и преподавателю Computer Science Center, Равилю Галееву, пришла идея собрать такие инструменты и технологии в один курс и познакомить студентов с ними. За пример такого курса были взяты The Missing Semester of Your CS Education от MIT, Software Carpentry и cs50.
В этом посте мы собрали видеолекции курса «Практический минимум» и материалы к занятиям. Благодарим Равиля за подборку!
Содержание
Введение в Linux
Командная строка Linux
Система контроля версий git
Языки разметки и XML
Регулярные выражения
Взаимодействие с сетью
Протокол HTTP
Контейнеризация
Архитектура приложений
Тестирование приложений
Опасность в приложениях
Билд-системы
Кодировки, даты, локали
Дебаг
Набор в Computer Science Center 2021
Введение в Linux
Буквально пара слов о том, что такое ядро
Набор исторических фактов (от Unix к Linux)
Файловая система
Пользователи
Файлы
Процессы
Unix way
Слайды
Статьи
Wikipedia History of Unix
Книги
Brian Kernighan and Rob Pike - The Unix Programming Environment
Peter Seibel - Coders at Work: Reflections on the Craft of Programming
Steve Parker - Shell Scripting: Expert Recipes for Linux, Bash, and More
David Griffiths and Dawn Griffiths - Head First C
Видео
Александр Смаль История Unix систем
Александр Смаль Пользователи, файлы и процессы
Курсы
UNИX ПО GNU/Linux
Stepik Основы программирования для Linux
Stepik Введение в Linux
Командная строка Linux
bash как REPL
Unix way
Шебанг
make
Слайды
Статьи
Bash scripting cheatsheet
Chaining commands (Part 2: Redirections and pipes)
The first web page, viewed by the first web browser, on a teletype, retrocomputing completeness
Software carpentry make
Книги
Ian Miell Learn Bash the Hard Way
Видео
Александр Смаль Bash скрипты
Виктор Ашик 008. Командная строка Unix
Виктор Ашик 004. Командная строка Unix
Brian Will Unix terminals and shells part1 part2 part3 part4 part5
Евгений Линский Основы C++. Лекция 2
Using a TTY Model 43 as a console on Linux
Слайды/Презентации
Adrien Mahieux Bash for production systems
Bash-скрипты из реального мира
brew
sentry
git
ignite
Система контроля версий git
git
commit
branch
merge
git flow
github
Слайды
Статьи
Евгений Артюхов Ежедневная работа с Git
Vincent Driessen A successful Git branching model
Chris Beams How to Write a Git Commit Message
Atlassian Git Tutorials
ohshitgit
Книги
Scott Chacon and Ben Straub Pro Git
Видео
Learn to Git: Basic Concepts
Git & GitHub: Merge Strategies
Марат Мавлютов 002. Системы контроля версий
Марат Мавлютов 003. Системы контроля версий
Глеб GIT для Дата Саентиста
missing semester mit Lecture 6: Version Control (git)
Потренироваться
learngitbranching
visualizing-git
try.github.io
Julia Evans git exercises: navigate a repository
Языки разметки и XML
groff
LaTex
XML, JSON, YAML
Markdown, AsciiDoc
GraphViz, PlantUML
Слайды
Статьи
Дмитрий Переверза Зачем нам UML
Поташников Николай PlantUML — все, что нужно бизнес-аналитику для создания диаграмм в программной документации
Иван Пономарев Презентация как код
Иван Кочуркин Современный формат презентаций
Амет Умеров Как я диплом в LaTeX писал с GitHub, Docker и TravisCI
John Gruber Markdown
Matt Welsh Writing man Pages Using groff
Eddie Smith From boiling lead and black art: An essay on the history of mathematical typography
Книги
К. В. Воронцов LATEX в примерах
Видео
Александр Смаль LaTeX
Владислав Танков Terraforming Clouds Видео
Tony Ibbs A brief history of text markup languages Видео Слайды
Самарев Роман Языки веб-программирования. SGML, HTML, CSS | Технострим
Слайды и другие материалы
Tony Ibbs A brief history of text markup languages
Борис Демешев latex_examples
Markdown cheatsheets
Boostnote
Github
Stackoverflow
Разное
kroki.io
ditaa
draw.io
boostnote app
Cartman в SVG
detexify
graphviz
GraphvizOnline
texample
plantUML
PlantUML Web Server
mermaidJS
websequencediagrams
Asciidoctor
Database schema to a graphical entity-relationship diagram
gnuplot
Регулярные выражения
Регулярки
grep
sed
awk
Слайды
Статьи
Кроссворд из регулярных выражений
Quantifiers (The Java™ Tutorials > Essential Classes > Regular Expressions)
Регулярные выражения изнутри / Хабр
Шахматы на чистом sed / Хабр
Bash-скрипты, часть 7: sed и обработка текстов / Блог компании RUVDS.com / Хабр
Видео
Corey Schafer Regex Tutorial
Александр Смаль Регулярные выражения
Oliver Wegner sed basics
Михайло Иванкив Как я однажды верстал форму регистрации
Слайды и другие материалы
RegExr: Learn, Build, & Test RegEx
Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.
regex - Greedy vs. Reluctant vs. Possessive Quantifiers - Stack Overflow
poormansprofiler.org
Regular Expression Reference: Special Groups
Взаимодействие с сетью
Разбираемся как работает посылка пакетов
Рассматриваем простейшие утилиты работы с сетью
Знакомимся с DNS, CDN, VPN и другими словами на три буквы
Пишем сервер на сокетах
Слайды
Материалы
Julia Evans Networking!
4. HIGHLOAD. Сетевой стек | Технострим
Beej's Guide to Network Programming
Tim Urban
Протокол HTTP
HTTP
REST
Слайды
Статьи
HTTP/2
CORS
Zalando RESTful API and Event Scheme Guidelines
MDN Web Docs
Networking tool comics! - Julia Evans
SIP URI и URL. Часть 1 (URI, URL и URN) / Хабр
Давайте уже разберемся в DNS / Хабр
15 тривиальных фактов о правильной работе с протоколом HTTP / Блог компании Яндекс / Хабр
Практические советы, примеры и туннели SSH / Хабр
WebSockets — полноценный асинхронный веб / Хабр
Что же такое этот GraphQL? / Хабр
Видео
HTTP: History & Performance - Ana Balica
HTTP/3 - HTTP over QUIC is the next generation by Daniel Stenberg
A Beginner's Guide to WebSockets
HTTP/2 101
Разное
curl exercises - Julia Evans
dionmisic/ajax
dionmisic/ws
htt2 демка
graphiql-online
Контейнеризация
chroot
Docker
Docker compose
Слайды
Статьи
hexlet docker
How to Run Multiple Linux Distros Without Virtualization - Make Tech Easier
A Basic Chroot Example in Ubuntu
Docker Documentation
Docker - XennisWiki
docker Archives - Dots and Brackets
docker - What is the difference between CMD and ENTRYPOINT in a Dockerfile? - Stack Overflow
Видео
Solomon Hykes Introduction to Docker
Jake Wright Docker Compose in 12 Minutes Learn Docker in 12 Minutes
Mumshad Mannambeth Kubernetes for the Absolute Beginners
Курсы
Управление вычислениями — Stepik
Get Started,Docker Documentation
A Docker Tutorial for Beginners
Katacoda - Interactive Learning Platform for Software Engineers
Разное
Create a base image | Docker Documentation
chroot jails on OS X // galvanist
Exploring Redis with Docker
GitHub - skissane/mkjail: Shell script to create a chroot jail on Mac OS X
Архитектура приложений
ООП
Паттерны
Многослойная архитектура
Слайды
Статьи
AntiPatterns Catalog
Шаблоны проектирования с человеческим лицом
ООП в картинках
Простое объяснение принципов SOLID
Design Patterns
Design Patterns & Refactoring
Книги
head first design patterns
методология программирования
Курсы
CSC444F: Software Engineering I
Видео
Greg Wilson What We Actually Know About Software Development, and Why We Believe It’s True
John Ousterhout A Philosophy of Software Design
Jonathan Blow Preventing the Collapse of Civilization
12 Общие рекомендации по декомпозиции программы
Тестирование приложений
Тестирование
Логгирование
Слайды 1
Слайды 2
Статьи
Why Most Unit Testing is Waste
Brian Kernighan Code Testing and its Role in Teaching
The Practical Test Pyramid
Defining Test Boundaries
Катастрофические последствия программных ошибок
Мифы о безопасном ПО: уроки знаменитых катастроф | Открытые системы. СУБД | Издательство «Открытые системы»
Logging in Python – Real Python
Tracing microservices with Zipkin and Kibana - merapar - Medium
Replacing Cassandra's tracing with Zipkin
Видео
UNИX 08. Тестирование и тестовое покрытие (эфир)
UNИX 08. Тестирование
Анатолий Островский Логирование и трассировка запросов. Best Practices
Антон Бевзюк Демонстрация TDD на Java
Jakub Nabrdalik Improving your Test Driven Development in 45 minutes
Опасность в приложениях
Хеширование, контрольные суммы
Авторизация vs Аутентификация; JWT
Обмен ключами Диффи-Хеллман
RSA
TLS
Двухфакторная аутентификация
Слайды
Статьи
Введение в TLS для п̶р̶а̶к̶т̶и̶к̶о̶в̶ Патриков
Encode/Decode text & files to Base64 in Browser with Base64 Converter
Basic, Bearer, Digest Oh MY! So Many Auths!
Sunshine's Homepage - Understanding CRC
Doctrina - How RSA Works With Examples
Введение в KDF на примере решения криптографического ребуса / Хабр
Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик / Хабр
One-Time Passwords from Your Watch | | Circuit Cellar
Diagrams And Movies Of All The OAuth 2.0 Flows - Takahiko Kawasaki - Medium
OAuth 2.0 простым и понятным языком / Блог компании Mail.ru Group / Хабр
How To Safely Store A Password | codahale.com
Видео
Base64 is not encryption
Hashing Algorithms and Security
Hubert Sablonnière 100% Stateless with JWT
SHA: Secure Hashing Algorithm
Laurens Van Houtven Crypto 101
Diffie Hellman Key Exchange by khan academy (смотреть с середины)
Поздняков С.Н. НОД. Расширенный алгоритм Евклида.
Книги
С. Рыбин, С. Поздняков Дискретная математика
М. Бабенко М. Левин Введение в теорию алгоритмов и структур данных
Билд-системы
от
make
кTravisCI
dockerhub
Слайды
Статьи
Database version control — Liquibase versus Flyway - robloxro - Medium
5 Blue-Green Deployment Best Practices for a Smooth Release | BlazeMeter
Видео
Денис Чернилевский Инструменты непрерывной интеграции
Антон Кекс Что такое Работающий Продукт и как его делать
Разное
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Кодировки, даты, локали
Разбираемся, почему /dev/random
печатает краказябры
Слайды
Статьи
Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом
Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом, часть 2
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
How integers are stored in memory using two’s complement
An Implementation of Unicode Normalization - Concerning Pharo - Medium
What every programmer should know about time | Hacker News
Что нужно знать про арифметику с плавающей запятой
«Магическая константа» 0x5f3759df
Пара слов о числах с плавающей точкой в Java
5 правил работы с суммами
Видео
Андрей Акиньшин Поговорим про арифметику
Computerphile Floating Point Numbers
Tomasz Nurkiewicz Charbuster: 10 mitów o Unicode Слайды
Tomasz Nurkiewicz Krótka historia czasu Слайды
Александр Смаль Кодировки
Adrian Furtuna Practical Exploitation of rounding vulnerabilities in banking applications
How About UNICODE and UTF-8
Decimal to IEEE 754 Floating Point Representation
Дебаг
Исключения
Дебаг
Слайды
Статьи
Strace в Linux: история, устройство и использование
A Crash Course on the Depths of Win32™ Structured Exception Handling
Program and Data Representation: Tutorials
Using C to inspect Linux syscalls
Let’s Write a Debugger!
Trapflag-Tracing I: Observing the Execution of a Program from Within Itself
A zine about strace
Perl script uses Ptrace for process tracing
How debuggers work: Part 1 - Basics
Write yourself an strace in 70 lines of code
Chrome DevTools
Книги
Brian Kernighan and Rob Pike - The Practice of Programming
Видео
Harvard CS50 Introduction to GDB a tutorial
Harvard CS50 GDB
Paweł Moll How do debuggers (really) work
Кирилл Кринкин Отладка в Linux. Краткие сведения о gdb
Quick Intro to gdb
Let's write a Debugger!
Debugging and Profiling
Курсы
Кирилл Кринкин Основы программирования для Linux
Разное
strace
GDB to LLDB command map
GDB kind of doesn't work on macOS Sierra
GCC -g vs -g3 GDB Flag: What is the Difference?
ptr_inspect.c
Делитесь в комментариях своими рекомендациями материалов, которые пригодились вам.
Набор в Computer Science Center 2021
Помимо лекций и материалов студентам CS центра на курсе доступны домашние задания. Если вы хотите проходить ещё больше курсов по разным направлениям, приходите поступать.
CS центр — это вечерние курсы по математике и программированию. Занятия проходят в Санкт-Петербурге и в Новосибирске. Жители других городов могут поступить на обучение в удалённом формате.
Чтобы поступить:
— заполните анкету на сайте до 10 апреля,
— решите задания онлайн-теста до 11 апреля,
— участвуйте в онлайн-экзамене в конце апреля-начале мая,
— пройдите собеседование в мае-июне.
Для тех, кто успешно справится со вступительными испытаниями, занятия начнутся в сентябре. Будьте готовы тратить на учёбу хотя бы 15 часов в неделю в течение двух или трёх лет. Если вы увлечены компьютерными науками или программированием, хотите развиваться в этих областях, любите учиться, то осваивать курсы и работать над проектами будет интересно и полезно.
Задать вопросы про набор можно в телеграм канале или по почте info@compscicenter.ru.