Полезные материалы для разработчика

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

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

Выпускнику и преподавателю 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.

Источник: https://habr.com/ru/company/JetBrains-education/blog/547768/


Интересные статьи

Интересные статьи

Пришло время переосмыслить обучение рекурсии с помощью реальных кейсов вместо элегантных математических уравнений Для программистов, особенно программистов-самоучек, первое знакомств...
В новом дайджесте — работа разработчика с Apple Silicon M1, лучшие приложения Google Play и App Store, модуляризация приложений, начало App Store Small Business Program, GitHub Actions дл...
Ученые из Сколтеха создали модель нейронной сети, вычисляющую сверхтвердые материалы. Обнаружено, что помимо алмазов возможно существование и других сверхтвердых веществ. Сверхтв...
Привет, Я Рэнд Миллер, соавтор «Myst». Мы поставили перед собой задачу создать реальный мир «Myst», но болезненно ударились о реальные ограничения CD-ROM. Играми я начал заниматься ещё с начала...