diff --git a/Knowledges/Библиотека/Книги/Computer Science для программиста-самоучки.md b/Knowledges/Библиотека/Книги/Computer Science для программиста-самоучки.md new file mode 100644 index 0000000..8ac4742 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Computer Science для программиста-самоучки.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Computer Science для программиста-самоучки +Автор: + - Кори Альтхофф +Количество страниц: 240 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/computer-science-dlya-programmista-samouchki.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - алгоритмы + - структуры_данных + - computer_science + - собеседования + - для_новичков +Категории: + - Программирование + - Алгоритмы +Источник: +Ссылка: +--- + +# Computer Science для программиста-самоучки + +![[covers/computer-science-dlya-programmista-samouchki.jpg]] + +## 📖 О книге + +Практическое руководство по структурам данных и алгоритмам для тех, кто учится программировать самостоятельно. Книга закрывает пробел в фундаментальных CS-знаниях без формального образования и помогает подготовиться к техническим интервью. Написана для абсолютных новичков — не требует предварительного знакомства с computer science. + +## 🧠 Ключевые идеи + +- **CS без диплома**: фундаментальные знания в области структур данных и алгоритмов доступны самоучкам — личный опыт автора (разработчик в eBay) подтверждает это +- **Техническое интервью как цель**: книга ориентирована на практические задачи, которые задают на собеседованиях в IT-компании +- **Структуры данных — основа карьеры**: массивы, стеки, очереди, хеш-таблицы, деревья, графы — без этого не устроиться в серьёзную компанию +- **Алгоритмическое мышление**: сортировка, поиск, рекурсия — инструменты, которые отличают джуна от профессионала +- **Доступность как принцип**: материал изложен без лишней академичности, с фокусом на понимание, а не зубрёжку + +## 💬 Важные цитаты + +- «Чтобы стать профи в программировании, не обязательно иметь диплом в области computer science» +- «Наиболее важные темы CS, в которых должен разбираться каждый программист-самоучка, — это структуры данных и алгоритмы» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Грокаем алгоритмы]] +- [[Прикладные структуры данных и алгоритмы]] +- [[Алгоритмы. Руководство по разработке]] diff --git a/Knowledges/Библиотека/Книги/Java SE 9. Базовый курс.md b/Knowledges/Библиотека/Книги/Java SE 9. Базовый курс.md new file mode 100644 index 0000000..facaa06 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Java SE 9. Базовый курс.md @@ -0,0 +1,54 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Java SE 9. Базовый курс +Автор: + - Кей С. Хорстманн +Количество страниц: 576 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/java-se-9-bazovyj-kurs.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - java + - java_9 + - модули + - программирование + - справочник +Категории: + - Программирование + - Java +Источник: +Ссылка: +--- + +# Java SE 9. Базовый курс + +![[covers/java-se-9-bazovyj-kurs.jpg]] + +## 📖 О книге + +Компактный справочник по Java SE 9 от автора «Библиотеки профессионала». Книга не для новичков — она рассчитана на разработчиков, уже знакомых с Java, которые хотят быстро освоить нововведения платформы. Главный фокус — новая модульная система (Project Jigsaw). Материал подаётся небольшими порциями для быстрого усвоения. + +## 🧠 Ключевые идеи + +- **Модульная система Java 9 (Project Jigsaw)**: разделение JDK и приложений на модули — главное нововведение версии, меняющее подход к организации больших проектов +- **Лямбды и Stream API углублённо**: новые методы в стандартных интерфейсах, улучшения в Optional и коллекциях, добавленные в Java 9 +- **Новый HTTP-клиент**: замена устаревшего HttpURLConnection на современный асинхронный API +- **Улучшения в коллекциях**: фабричные методы `List.of()`, `Set.of()`, `Map.of()` для создания неизменяемых коллекций +- **JShell — REPL для Java**: интерактивная оболочка для быстрого прототипирования и изучения API без написания полных классов + +## 💬 Важные цитаты + +- «Это полный, хотя и краткий справочник по версии Java SE 9, служащий незаменимым учебным пособием для быстрого и легкого изучения этого языка и его библиотек» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Java. Библиотека профессионала. Том 1. Основы]] +- [[Java. Библиотека профессионала. Том 2. Расширенные средства программирования]] diff --git a/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 1. Основы.md b/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 1. Основы.md new file mode 100644 index 0000000..3b1a8ac --- /dev/null +++ b/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 1. Основы.md @@ -0,0 +1,53 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Java. Библиотека профессионала. Том 1. Основы" +Автор: + - Кей С. Хорстманн +Количество страниц: 864 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/java-biblioteka-professionala-tom-1.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - java + - ооп + - программирование + - справочник +Категории: + - Программирование + - Java +Источник: +Ссылка: +--- + +# Java. Библиотека профессионала. Том 1. Основы + +![[covers/java-biblioteka-professionala-tom-1.jpg]] + +## 📖 О книге + +11-е издание исчерпывающего справочника по основам Java от Кея Хорстманна. Охватывает ООП, обобщённое программирование, коллекции, обработку исключений, лямбда-выражения, потоки (Stream API) и параллелизм. Предназначено для профессиональных разработчиков — не вводный курс, а глубокое погружение с примерами реального кода. Обновлено для Java 11. + +## 🧠 Ключевые идеи + +- **ООП в деталях**: объекты, классы, наследование, интерфейсы и внутренние классы разобраны с акцентом на правильное проектирование, а не просто синтаксис +- **Лямбды и Stream API**: функциональный стиль в Java — как писать выразительный и лаконичный код без избыточных циклов +- **Обобщённое программирование**: generics, wildcards, ограничения типов — понимание этого критично для работы с любым Java-фреймворком +- **Коллекции**: List, Set, Map, Queue — когда и какую структуру выбрать, как работает внутренняя реализация +- **Параллелизм**: потоки (Thread), синхронизация, executor-сервисы и CompletableFuture — основа для написания многопоточных приложений + +## 💬 Важные цитаты + + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Java. Библиотека профессионала. Том 2. Расширенные средства программирования]] +- [[Чистый код]] +- [[Паттерны объектно-ориентированного проектирования]] diff --git a/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 2. Расширенные средства программирования.md b/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 2. Расширенные средства программирования.md new file mode 100644 index 0000000..d7a09a0 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Java. Библиотека профессионала. Том 2. Расширенные средства программирования.md @@ -0,0 +1,55 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Java. Библиотека профессионала. Том 2. Расширенные средства программирования" +Автор: + - Кей С. Хорстманн +Количество страниц: 864 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/java-biblioteka-professionala-tom-2.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - java + - многопоточность + - сети + - jdbc + - программирование + - справочник +Категории: + - Программирование + - Java +Источник: +Ссылка: +--- + +# Java. Библиотека профессионала. Том 2. Расширенные средства программирования + +![[covers/java-biblioteka-professionala-tom-2.jpg]] + +## 📖 О книге + +11-е издание второго тома от Кея Хорстманна — продолжение «Основ» с акцентом на продвинутые возможности Java. Охватывает потоки ввода-вывода, XML, работу в сети, JDBC, API даты и времени, интернационализацию, обработку аннотаций и написание сценариев. Обновлено для Java 11, предназначено для разработчиков корпоративных приложений. + +## 🧠 Ключевые идеи + +- **Ввод/вывод и NIO**: потоки данных, файловая система, асинхронный ввод-вывод — фундамент для любого серверного кода +- **Работа с сетью**: сокеты, HTTP-клиент, взаимодействие с веб-сервисами — необходимо для разработки распределённых систем +- **JDBC и базы данных**: подключение, транзакции, prepared statements — стандарт для работы с реляционными БД в Java +- **Аннотации и рефлексия**: как работают фреймворки вроде Spring изнутри — понимание механизмов, которые используются каждый день +- **Интернационализация и дата/время**: java.time API — современный подход к работе с датами без legacy-ловушек Date/Calendar + +## 💬 Важные цитаты + + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Java. Библиотека профессионала. Том 1. Основы]] +- [[Чистая архитектура]] +- [[Шаблоны корпоративных приложений]] diff --git a/Knowledges/Библиотека/Книги/Java. Эффективное программирование.md b/Knowledges/Библиотека/Книги/Java. Эффективное программирование.md new file mode 100644 index 0000000..c7945b1 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Java. Эффективное программирование.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Java. Эффективное программирование +Автор: + - Джошуа Блох +Количество страниц: 466 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/java-effektivnoe-programmirovanie.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - java + - лучшие_практики + - программирование + - ооп + - паттерны +Категории: + - Программирование + - Java +Источник: +Ссылка: +--- + +# Java. Эффективное программирование + +![[covers/java-effektivnoe-programmirovanie.jpg]] + +## 📖 О книге + +Классика Java-разработки от Джошуа Блоха — бывшего ведущего инженера Sun Microsystems и Google. Третье издание содержит 90 правил эффективного программирования на Java: каждое правило — короткое эссе с описанием проблемы, примерами кода и обоснованием решения. Охватывает создание объектов, обобщённое программирование, лямбды, потоки, параллелизм, сериализацию. Обновлено для Java 9. + +## 🧠 Ключевые идеи + +- **90 правил вместо заучивания**: книга не просто формулирует «делай так» — она объясняет, почему именно так, обучая думать о коде, а не воспроизводить шаблоны +- **Статические фабричные методы вместо конструкторов**: предпочтительный способ создания объектов — гибче, читабельнее, позволяет кешировать экземпляры и возвращать подтипы +- **Generics и wildcards**: правильное использование обобщённого программирования устраняет ClassCastException на этапе компиляции и делает API выразительнее +- **Лямбды и потоки**: функциональный стиль в Java требует дисциплины — не все задачи решаются потоками лучше, чем циклами; важно понимать, когда применять каждый подход +- **Параллелизм и потокобезопасность**: минимизация разделяемого изменяемого состояния, использование `synchronized`, `volatile` и высокоуровневых примитивов — основа надёжного многопоточного кода + +## 💬 Важные цитаты + +- «Книга заставляет вас не просто заучить правила — она заставляет думать» +- «Каждое правило представлено в виде короткого законченного эссе, содержащего описание проблемы, примеры кода и случаи из практики» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Java. Библиотека профессионала. Том 1. Основы]] +- [[Java. Библиотека профессионала. Том 2. Расширенные средства программирования]] +- [[Чистый код]] +- [[Паттерны объектно-ориентированного проектирования]] diff --git a/Knowledges/Библиотека/Книги/JavaScript с нуля до профи.md b/Knowledges/Библиотека/Книги/JavaScript с нуля до профи.md new file mode 100644 index 0000000..0e590b9 --- /dev/null +++ b/Knowledges/Библиотека/Книги/JavaScript с нуля до профи.md @@ -0,0 +1,59 @@ +--- +Тип: Книга +Статус: Запланировано +Название: JavaScript с нуля до профи +Автор: + - Лоренс Ларс Свекис + - Майке ван Путтен + - Роб Персиваль +Количество страниц: 480 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/javascript-s-nulya-do-profi.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - javascript + - для_начинающих + - dom + - веб_разработка +Категории: + - Программирование + - JavaScript +Источник: +Ссылка: +--- + +# JavaScript с нуля до профи + +![[covers/javascript-s-nulya-do-profi.jpg]] + +## 📖 О книге + +Лоренс Ларс Свекис, Майке ван Путтен и Роб Персиваль — опытные преподаватели и практикующие разработчики — создали комплексный учебник для тех, кто начинает путь в JavaScript с нуля. Книга сочетает теорию с упражнениями и проектами: от динамических веб-сайтов до простых браузерных игр. Охватывает основы языка, работу с DOM, обработку событий, асинхронный JavaScript, HTML5 Canvas и введение в современные фреймворки. Издательство «Питер», 2023, ISBN 978-5-4461-2269-1. + +## 🧠 Ключевые идеи + +- **Последовательное погружение от основ**: переменные, типы, операторы, циклы, функции и классы — каждая тема подкреплена упражнениями с нарастающей сложностью +- **DOM и динамические интерфейсы**: практическое управление объектной моделью документа — создание, изменение и удаление элементов, реакция на действия пользователя +- **Асинхронный JavaScript**: промисы, async/await и параллелизм — понимание event loop и неблокирующего выполнения кода как основы современной веб-разработки +- **Проектный подход**: каждый раздел завершается мини-проектом — от калькулятора до браузерной игры на Canvas — что позволяет сразу применять знания +- **Мост к экосистеме**: книга даёт фундамент для последующего изучения React, Vue, Node.js и других библиотек и фреймворков + +## 💬 Важные цитаты + +- «JavaScript — единственный язык, который можно начать использовать немедленно, просто открыв браузер» +- «Понимание DOM — это понимание того, как браузер видит вашу страницу» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Тестирование JavaScript]] +- [[Рефакторинг кода на JavaScript]] +- [[Изучаем паттерны проектирования JavaScript]] +- [[Профессиональный TypeScript]] diff --git a/Knowledges/Библиотека/Книги/JavaScript. Полное руководство.md b/Knowledges/Библиотека/Книги/JavaScript. Полное руководство.md new file mode 100644 index 0000000..73cd6b2 --- /dev/null +++ b/Knowledges/Библиотека/Книги/JavaScript. Полное руководство.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: JavaScript. Полное руководство +Автор: + - Дэвид Флэнаган +Количество страниц: 720 +Прогресс: 0 +Формат: Бумажная +Обложка: Библиотека/Книги/covers/javascript-polnoe-rukovodstvo.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - javascript + - веб_разработка + - программирование + - справочник + - nodejs +Категории: + - Программирование + - JavaScript +Источник: +Ссылка: +--- + +# JavaScript. Полное руководство + +![[covers/javascript-polnoe-rukovodstvo.jpg]] + +## 📖 О книге + +Седьмое издание культового справочника по JavaScript от Дэвида Флэнагана — «библия» JS-разработчика с 1996 года, полностью обновлённая под ES2020. Книга охватывает весь язык: типы, объекты, функции, классы, модули, итераторы, генераторы, Promise и async/await, а также работу с браузерным API, Node.js и инструментами. Издательство «Диалектика», 2021, перевод Ю. Артеменко. + +## 🧠 Ключевые идеи + +- **Типы, значения и переменные**: глубокое понимание системы типов JS — основа для понимания всего остального; примитивы и объекты ведут себя принципиально по-разному +- **Функции и замыкания**: функции — объекты первого класса; замыкания, каррирование и функции высшего порядка — фундамент функционального стиля в JS +- **Классы и прототипное наследование**: ES6-классы — синтаксический сахар над прототипами; понимание цепочки прототипов критично для работы с фреймворками +- **Асинхронность**: эволюция от коллбэков к Promise и async/await — современный способ работы с асинхронными операциями без «ада коллбэков» +- **Node.js и браузерный API**: единый язык для фронтенда и бэкенда — работа с файловой системой, потоками, HTTP-сервером и DOM-деревом из одной книги + +## 💬 Важные цитаты + +- «С момента своего первого издания в 1996 году JavaScript: The Definitive Guide стал библией для JavaScript-программистов» +- «JavaScript — язык веба: самый используемый язык программирования в истории» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Тестирование JavaScript]] +- [[Рефакторинг кода на JavaScript]] +- [[Профессиональный TypeScript]] diff --git a/Knowledges/Библиотека/Книги/Site Reliability Engineering. Надежность и безотказность как в Google.md b/Knowledges/Библиотека/Книги/Site Reliability Engineering. Надежность и безотказность как в Google.md new file mode 100644 index 0000000..68d7732 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Site Reliability Engineering. Надежность и безотказность как в Google.md @@ -0,0 +1,59 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Site Reliability Engineering. Надежность и безотказность как в Google" +Автор: + - Бетси Бейер + - Крис Джоунс + - Дженнифер Петофф + - Ричард Нил Мёрфи +Количество страниц: 560 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/sre-google.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - sre + - devops + - надёжность + - google + - системное_администрирование + - распределённые_системы +Категории: + - Программирование + - DevOps +Источник: +Ссылка: +--- + +# Site Reliability Engineering. Надежность и безотказность как в Google + +![[covers/sre-google.jpg]] + +## 📖 О книге + +Бетси Бейер, Крис Джоунс, Дженнифер Петофф и Ричард Нил Мёрфи — инженеры и менеджеры Google SRE — собрали в одной книге принципы и практики, которые позволяют Google запускать крупнейшие производственные системы в мире с высокой надёжностью. Книга описывает дисциплину Site Reliability Engineering: как Google применяет программные инструменты для решения задач, которые традиционно решают системные администраторы. Издательство «Питер», 2018, ISBN 978-5-4461-0976-0. + +## 🧠 Ключевые идеи + +- **SRE как дисциплина**: SRE — это то, что получается, когда инженер-программист занимается операционной деятельностью; Software Engineering + Operations = надёжные системы без ручного труда +- **Error budget**: бюджет ошибок как инструмент баланса между скоростью разработки и надёжностью — команда разработки тратит бюджет, SRE его защищает +- **SLI/SLO/SLA**: индикаторы, цели и соглашения об уровне сервиса — формальный язык для договорённостей о надёжности между командами и пользователями +- **Устранение toil**: автоматизация рутинных операций как системный подход — если задачу можно автоматизировать, её нужно автоматизировать; toil не должен превышать 50% времени SRE +- **Культура постмортемов**: бесклассовые анализы инцидентов без поиска виноватых — фокус на системных причинах, а не на ошибках людей + +## 💬 Важные цитаты + +- «Hope is not a strategy» — надежда не является стратегией +- «SRE is what happens when you ask a software engineer to design an operations team» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Site Reliability Workbook. Практическое применение]] +- [[Безопасные и надёжные системы]] diff --git a/Knowledges/Библиотека/Книги/Software. Ошибки и компромиссы при разработке ПО.md b/Knowledges/Библиотека/Книги/Software. Ошибки и компромиссы при разработке ПО.md new file mode 100644 index 0000000..a011a27 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Software. Ошибки и компромиссы при разработке ПО.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Software. Ошибки и компромиссы при разработке ПО +Автор: + - Томаш Лелек + - Джон Скит +Количество страниц: 464 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/software-oshibki-i-kompromissy.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - архитектура + - компромиссы + - проектирование + - распределённые_системы +Категории: + - Программирование + - Проектирование систем +Источник: +Ссылка: +--- + +# Software. Ошибки и компромиссы при разработке ПО + +![[covers/software-oshibki-i-kompromissy.jpg]] + +## 📖 О книге + +Томаш Лелек и Джон Скит делятся опытом десятков лет разработки ПО, разбирая реальные ошибки и компромиссы, с которыми сталкиваются разработчики. Книга не о правильных решениях в вакууме — она о том, как вполне разумный выбор оказывается сомнительным в контексте конкретных условий: производительности, безопасности, затрат на сопровождение и распределённости. Издательство «Питер», 2023, перевод Е. Матвеева. + +## 🧠 Ключевые идеи + +- **Компромиссы неизбежны**: каждое решение в дизайне ПО — это выбор между конкурирующими требованиями; цель разработчика не найти «правильный» ответ, а осознанно выбрать нужный компромисс +- **Производительность vs. читаемость**: оптимизация критического пути оправдана, только когда профилирование подтверждает проблему — преждевременная оптимизация создаёт ненужную сложность +- **Простота API vs. гибкость**: чем проще API, тем он понятнее, но тем сложнее изменить его без нарушения обратной совместимости — управление версиями требует дисциплины с первого дня +- **Атомарность и целостность в распределённых системах**: транзакционные гарантии, привычные в монолите, недостижимы в микросервисах без явных компромиссов — eventual consistency, saga pattern, идемпотентность +- **Сторонние библиотеки**: каждая зависимость — это чужой код с чужими решениями; выбор библиотеки влияет на безопасность, производительность и стоимость миграции + +## 💬 Важные цитаты + +- «Создание программных продуктов всегда связано с компромиссами» +- «Вполне разумное дизайнерское решение на практике оказывается сомнительным» +- «Книга задумана как описание проблем, встречающихся в реальных системах» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистая архитектура]] +- [[Шаблоны корпоративных приложений]] +- [[System Design. Пережить интервью]] diff --git a/Knowledges/Библиотека/Книги/System Design. Машинное обучение.md b/Knowledges/Библиотека/Книги/System Design. Машинное обучение.md new file mode 100644 index 0000000..9423b15 --- /dev/null +++ b/Knowledges/Библиотека/Книги/System Design. Машинное обучение.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: System Design. Машинное обучение +Автор: + - Алекс Сюй + - Али Аминиан +Количество страниц: 320 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/system-design-ml.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - system_design + - машинное_обучение + - собеседования + - ml_system_design + - карьера +Категории: + - Программирование + - Машинное обучение +Источник: +Ссылка: +--- + +# System Design. Машинное обучение + +![[covers/system-design-ml.jpg]] + +## 📖 О книге + +Практическое руководство Алекса Сюя и Али Аминиана по самой сложной категории технических интервью — проектированию систем машинного обучения. Книга предлагает структурированный 7-шаговый подход к любой задаче ML System Design, разбирает 10 реальных кейсов из собеседований с подробными решениями и 211 диаграммами. Издательство «Питер», 2024, ISBN 978-5-4461-2130-4. + +## 🧠 Ключевые идеи + +- **7-шаговый фреймворк**: структурированный алгоритм разбора любого вопроса по ML System Design — от уточнения требований до оценки компромиссов — превращает хаотичный ответ в убедительное решение +- **Что на самом деле проверяют интервьюеры**: не знание конкретных алгоритмов, а способность формулировать проблему, принимать архитектурные решения и объяснять компромиссы на уровне бизнеса +- **ML-пайплайн от задачи до деплоя**: сбор данных, feature engineering, выбор модели, обучение, оценка, деплой и мониторинг — интервью проверяет понимание всего цикла, а не отдельных этапов +- **10 реальных кейсов**: рекомендательные системы, ранжирование, обнаружение аномалий, NLP-задачи — разобраны по шагам, с объяснением выбора каждого решения +- **Наблюдаемость ML-систем**: мониторинг data drift, model drift и production-метрик — неотъемлемая часть дизайна, которую часто упускают на собеседованиях + +## 💬 Важные цитаты + +- «Собеседования по проектированию системы машинного обучения — самые сложные из всех вопросов технического собеседования» +- «211 диаграмм, которые наглядно объясняют, как работают различные системы» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[System Design. Пережить интервью]] +- [[Карьера программиста]] diff --git a/Knowledges/Библиотека/Книги/System Design. Пережить интервью.md b/Knowledges/Библиотека/Книги/System Design. Пережить интервью.md new file mode 100644 index 0000000..75e77c1 --- /dev/null +++ b/Knowledges/Библиотека/Книги/System Design. Пережить интервью.md @@ -0,0 +1,54 @@ +--- +Тип: Книга +Статус: Запланировано +Название: System Design. Пережить интервью +Автор: + - Чжиюн Тань +Количество страниц: 544 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/system-design-perezhit-intervyu.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - system_design + - собеседования + - архитектура + - высоконагруженные_системы +Категории: + - Программирование + - Системный дизайн +Источник: +Ссылка: +--- + +# System Design. Пережить интервью + +![[covers/system-design-perezhit-intervyu.jpg]] + +## 📖 О книге + +Практическое руководство по подготовке к интервью по системному дизайну от Чжиюн Тань. Книга делится опытом успешных собеседований и предлагает методологию анализа задач: как собирать требования, выявлять узкие места, масштабировать решения. Включает реальные вопросы от Amazon, Apple, ByteDance, PayPal, Uber — около трети книги посвящено алгоритму прохождения интервью. + +## 🧠 Ключевые идеи + +- **Алгоритм прохождения интервью**: структурированный подход — уточнение требований, оценка нагрузки, высокоуровневый дизайн, детализация компонентов — превращает хаотичный ответ в убедительное решение +- **Сбор требований как навык**: не стесняться задавать вопросы интервьюеру — он играет роль бизнес-заказчика, и уточнение требований само по себе демонстрирует зрелость инженера +- **Деградация при отказах**: высоконагруженные системы должны изначально проектироваться с учётом сбоев каждого компонента — graceful degradation, а не полный отказ +- **Наблюдаемость системы**: логирование, мониторинг и алертинг — не опциональные детали, а обязательная часть дизайна; сложная архитектура без observability неуправляема +- **Простые и запоминаемые методы**: цель — не продемонстрировать максимальную сложность, а ясно объяснить решение эксперту + +## 💬 Важные цитаты + +- «System Design — одно из самых сложных интервью в инженерной воронке найма» +- «Не стесняйтесь спрашивать о дополнительных требованиях пользователей — интервьюер, как правило, выступает в роли бизнес-заказчика» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистая архитектура]] +- [[Шаблоны корпоративных приложений]] diff --git a/Knowledges/Библиотека/Книги/covers/algoritmy-na-java.jpg b/Knowledges/Библиотека/Книги/covers/algoritmy-na-java.jpg new file mode 100644 index 0000000..213508d Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/algoritmy-na-java.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/algoritmy-teoriya-i-prakticheskoe-primenenie-stivens.jpg b/Knowledges/Библиотека/Книги/covers/algoritmy-teoriya-i-prakticheskoe-primenenie-stivens.jpg new file mode 100644 index 0000000..8c34284 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/algoritmy-teoriya-i-prakticheskoe-primenenie-stivens.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/bibliya-linux.jpg b/Knowledges/Библиотека/Книги/covers/bibliya-linux.jpg new file mode 100644 index 0000000..d4614e3 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/bibliya-linux.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/chelovecheskiy-faktor.jpg b/Knowledges/Библиотека/Книги/covers/chelovecheskiy-faktor.jpg new file mode 100644 index 0000000..c626d82 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/chelovecheskiy-faktor.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/computer-science-dlya-programmista-samouchki.jpg b/Knowledges/Библиотека/Книги/covers/computer-science-dlya-programmista-samouchki.jpg new file mode 100644 index 0000000..572f511 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/computer-science-dlya-programmista-samouchki.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/evolyucionnaya-arhitektura.jpg b/Knowledges/Библиотека/Книги/covers/evolyucionnaya-arhitektura.jpg new file mode 100644 index 0000000..2f518bd Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/evolyucionnaya-arhitektura.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/grokaem-continuous-delivery.jpg b/Knowledges/Библиотека/Книги/covers/grokaem-continuous-delivery.jpg new file mode 100644 index 0000000..321bbec Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/grokaem-continuous-delivery.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/idiomy-bash.jpg b/Knowledges/Библиотека/Книги/covers/idiomy-bash.jpg new file mode 100644 index 0000000..eb2f4a5 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/idiomy-bash.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/iskusstvo-chistogo-koda.jpg b/Knowledges/Библиотека/Книги/covers/iskusstvo-chistogo-koda.jpg new file mode 100644 index 0000000..f8ffbbd Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/iskusstvo-chistogo-koda.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/izuchaem-patterny-javascript.jpg b/Knowledges/Библиотека/Книги/covers/izuchaem-patterny-javascript.jpg new file mode 100644 index 0000000..f27ff49 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/izuchaem-patterny-javascript.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-1.jpg b/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-1.jpg new file mode 100644 index 0000000..8830ebf Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-1.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-2.jpg b/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-2.jpg new file mode 100644 index 0000000..20322ea Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/java-biblioteka-professionala-tom-2.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/java-effektivnoe-programmirovanie.jpg b/Knowledges/Библиотека/Книги/covers/java-effektivnoe-programmirovanie.jpg new file mode 100644 index 0000000..d52f5cd Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/java-effektivnoe-programmirovanie.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/java-se-9-bazovyj-kurs.jpg b/Knowledges/Библиотека/Книги/covers/java-se-9-bazovyj-kurs.jpg new file mode 100644 index 0000000..614e944 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/java-se-9-bazovyj-kurs.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/javascript-polnoe-rukovodstvo.jpg b/Knowledges/Библиотека/Книги/covers/javascript-polnoe-rukovodstvo.jpg new file mode 100644 index 0000000..39e6f62 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/javascript-polnoe-rukovodstvo.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/javascript-s-nulya-do-profi.jpg b/Knowledges/Библиотека/Книги/covers/javascript-s-nulya-do-profi.jpg new file mode 100644 index 0000000..13792e9 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/javascript-s-nulya-do-profi.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/karera-programmista.jpg b/Knowledges/Библиотека/Книги/covers/karera-programmista.jpg new file mode 100644 index 0000000..85e95ea Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/karera-programmista.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/kod-kotoryy-umeschaetsya.jpg b/Knowledges/Библиотека/Книги/covers/kod-kotoryy-umeschaetsya.jpg new file mode 100644 index 0000000..1d17ab2 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/kod-kotoryy-umeschaetsya.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/kodery-za-rabotoy.jpg b/Knowledges/Библиотека/Книги/covers/kodery-za-rabotoy.jpg new file mode 100644 index 0000000..ce21f7b Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/kodery-za-rabotoy.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/komandnaya-stroka-linux-shotts.jpg b/Knowledges/Библиотека/Книги/covers/komandnaya-stroka-linux-shotts.jpg new file mode 100644 index 0000000..00b1c82 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/komandnaya-stroka-linux-shotts.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/ne-zastavlyajte-menya-dumat.jpg b/Knowledges/Библиотека/Книги/covers/ne-zastavlyajte-menya-dumat.jpg new file mode 100644 index 0000000..952c2fd Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/ne-zastavlyajte-menya-dumat.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/oop-cplusplus-lafore.jpg b/Knowledges/Библиотека/Книги/covers/oop-cplusplus-lafore.jpg new file mode 100644 index 0000000..8986291 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/oop-cplusplus-lafore.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/predmetno-orientirovannoe-proektirovanie.jpg b/Knowledges/Библиотека/Книги/covers/predmetno-orientirovannoe-proektirovanie.jpg new file mode 100644 index 0000000..4dc4c53 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/predmetno-orientirovannoe-proektirovanie.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/prikladnye-struktury-dannyh-i-algoritmy.jpg b/Knowledges/Библиотека/Книги/covers/prikladnye-struktury-dannyh-i-algoritmy.jpg new file mode 100644 index 0000000..4e2a26e Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/prikladnye-struktury-dannyh-i-algoritmy.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/prodvinutye-algoritmy.jpg b/Knowledges/Библиотека/Книги/covers/prodvinutye-algoritmy.jpg new file mode 100644 index 0000000..e239fb5 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/prodvinutye-algoritmy.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/pyat-strok-koda.jpg b/Knowledges/Библиотека/Книги/covers/pyat-strok-koda.jpg new file mode 100644 index 0000000..62b06a1 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/pyat-strok-koda.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/sam-sebe-testirovschik.jpg b/Knowledges/Библиотека/Книги/covers/sam-sebe-testirovschik.jpg new file mode 100644 index 0000000..3d1182c Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/sam-sebe-testirovschik.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/software-oshibki-i-kompromissy.jpg b/Knowledges/Библиотека/Книги/covers/software-oshibki-i-kompromissy.jpg new file mode 100644 index 0000000..528e33d Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/software-oshibki-i-kompromissy.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/sovremennaya-programmnaya-inzheneriya.jpg b/Knowledges/Библиотека/Книги/covers/sovremennaya-programmnaya-inzheneriya.jpg new file mode 100644 index 0000000..14bacfa Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/sovremennaya-programmnaya-inzheneriya.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/sre-google.jpg b/Knowledges/Библиотека/Книги/covers/sre-google.jpg new file mode 100644 index 0000000..282bac8 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/sre-google.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/system-design-ml.jpg b/Knowledges/Библиотека/Книги/covers/system-design-ml.jpg new file mode 100644 index 0000000..dda1f5c Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/system-design-ml.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/system-design-perezhit-intervyu.jpg b/Knowledges/Библиотека/Книги/covers/system-design-perezhit-intervyu.jpg new file mode 100644 index 0000000..f27c754 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/system-design-perezhit-intervyu.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/teormin-cs-seti-kriptografiya.jpg b/Knowledges/Библиотека/Книги/covers/teormin-cs-seti-kriptografiya.jpg new file mode 100644 index 0000000..be360e9 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/teormin-cs-seti-kriptografiya.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/teormin-cs-vse-chto-nuzhno.jpg b/Knowledges/Библиотека/Книги/covers/teormin-cs-vse-chto-nuzhno.jpg new file mode 100644 index 0000000..57e5cfb Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/teormin-cs-vse-chto-nuzhno.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/testirovanie-veb-api.jpg b/Knowledges/Библиотека/Книги/covers/testirovanie-veb-api.jpg new file mode 100644 index 0000000..8482ca6 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/testirovanie-veb-api.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/um-programmista.jpg b/Knowledges/Библиотека/Книги/covers/um-programmista.jpg new file mode 100644 index 0000000..54c7585 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/um-programmista.jpg differ diff --git a/Knowledges/Библиотека/Книги/covers/vnutrennee-ustroystvo-linux.jpg b/Knowledges/Библиотека/Книги/covers/vnutrennee-ustroystvo-linux.jpg new file mode 100644 index 0000000..66c4167 Binary files /dev/null and b/Knowledges/Библиотека/Книги/covers/vnutrennee-ustroystvo-linux.jpg differ diff --git a/Knowledges/Библиотека/Книги/Алгоритмы на Java.md b/Knowledges/Библиотека/Книги/Алгоритмы на Java.md new file mode 100644 index 0000000..f6f042b --- /dev/null +++ b/Knowledges/Библиотека/Книги/Алгоритмы на Java.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Алгоритмы на Java +Автор: + - Роберт Седжвик + - Кевин Уэйн +Количество страниц: 848 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/algoritmy-na-java.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - алгоритмы + - структуры_данных + - java + - сортировка + - графы +Категории: + - Программирование + - Алгоритмы +Источник: +Ссылка: +--- + +# Алгоритмы на Java + +![[covers/algoritmy-na-java.jpg]] + +## 📖 О книге + +Фундаментальный справочник Роберта Седжвика и Кевина Уэйна из Принстонского университета — 4-е издание классики алгоритмов с реализацией на Java. Охватывает структуры данных, алгоритмы сортировки, поиска, обработку графов и строк. Отличается чётким текстом, детальными иллюстрациями, тщательно выверенным кодом и упражнениями для всех уровней. Поддерживается сайтом algs4.cs.princeton.edu. «Диалектика», 2019. + +## 🧠 Ключевые идеи + +- **50 алгоритмов, которые должен знать каждый программист**: от базовых структур данных (стек, очередь, приоритетная очередь) до алгоритмов на графах — всё с реализацией на Java и анализом сложности +- **Сортировка во всех вариантах**: сравнительная сортировка (mergesort, quicksort, heapsort), поразрядная сортировка — понимание компромиссов между алгоритмами критично для выбора правильного в конкретном контексте +- **Алгоритмы поиска**: бинарные деревья поиска, красно-чёрные деревья, хеш-таблицы — основа любого высокопроизводительного приложения +- **Алгоритмы на графах**: обход в глубину/ширину, кратчайшие пути (Dijkstra, Bellman-Ford), минимальное остовное дерево — фундамент для сетевых задач, маршрутизации, рекомендательных систем +- **Строковые алгоритмы**: KMP, регулярные выражения, сжатие данных — специализированный раздел, редко охватываемый другими книгами по алгоритмам + +## 💬 Важные цитаты + +- «Книга содержит необходимый объём знаний для программиста в области алгоритмов, накопленных за последние несколько десятилетий» +- «50 алгоритмов, которые должен знать каждый программист» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Грокаем алгоритмы]] +- [[Алгоритмы. Руководство по разработке]] +- [[Прикладные структуры данных и алгоритмы]] +- [[Java. Библиотека профессионала. Том 1. Основы]] diff --git a/Knowledges/Библиотека/Книги/Алгоритмы. Теория и практическое применение.md b/Knowledges/Библиотека/Книги/Алгоритмы. Теория и практическое применение.md new file mode 100644 index 0000000..5346ec9 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Алгоритмы. Теория и практическое применение.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Алгоритмы. Теория и практическое применение" +Автор: + - Род Стивенс +Количество страниц: 544 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/algoritmy-teoriya-i-prakticheskoe-primenenie-stivens.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - алгоритмы + - структуры_данных + - computer_science + - теория + - криптография +Категории: + - Программирование + - Алгоритмы +Источник: +Ссылка: +--- + +# Алгоритмы. Теория и практическое применение + +![[covers/algoritmy-teoriya-i-prakticheskoe-primenenie-stivens.jpg]] + +## 📖 О книге + +Второе издание бестселлера Рода Стивенса — фундаментальное руководство по классическим алгоритмам и структурам данных. Книга охватывает численные алгоритмы, работу с массивами, деревьями, кучами и сетями, а также методы решения задач: полный перебор, «разделяй и властвуй», жадные алгоритмы и эвристики. Включает главы по криптографии и теории вычислительной сложности. + +## 🧠 Ключевые идеи + +- **Алгоритмы как рецепты**: изучение алгоритмов — это накопление готовых методик, которые можно применять к новым задачам, не изобретая колесо +- **Теория + практика вместе**: каждый алгоритм разбирается с точки зрения корректности, сложности и реального применения — редкое сочетание в одной книге +- **Стратегии решения задач**: полный перебор, «разделяй и властвуй», жадные алгоритмы, восхождение на вершину — это универсальные парадигмы, а не отдельные приёмы +- **Структуры данных определяют алгоритм**: выбор между деревом, кучей или хеш-таблицей напрямую влияет на сложность решения +- **Криптография и сети**: прикладные главы показывают, как алгоритмы работают в реальных системах безопасности и маршрутизации + +## 💬 Важные цитаты + +- «Алгоритмы — это рецепты, которые делают возможным эффективное программирование. Их изучение позволяет усвоить общие подходы к решению задач» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Алгоритмы. Руководство по разработке]] +- [[Грокаем алгоритмы]] +- [[Прикладные структуры данных и алгоритмы]] +- [[Computer Science для программиста-самоучки]] diff --git a/Knowledges/Библиотека/Книги/Библия Linux.md b/Knowledges/Библиотека/Книги/Библия Linux.md new file mode 100644 index 0000000..2551005 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Библия Linux.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Библия Linux +Автор: + - Кристофер Негус +Количество страниц: 928 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/bibliya-linux.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - linux + - операционные_системы + - системное_администрирование + - командная_строка + - безопасность +Категории: + - Программирование + - Операционные системы +Источник: +Ссылка: +--- + +# Библия Linux + +![[covers/bibliya-linux.jpg]] + +## 📖 О книге + +Кристофер Негус — главный специалист по документации Red Hat, автор более десяти изданий «Библии Linux» — написал исчерпывающее руководство для пользователей любого уровня. 10-е издание делает акцент на инструментах командной строки и последних версиях Red Hat Enterprise Linux, Fedora и Ubuntu. Книга проводит читателя от выбора рабочего стола через администрирование системы и серверов к безопасности и облачным вычислениям, включая материалы для подготовки к сертификационным экзаменам Linux. Издательство «Питер», 2022, ISBN 978-5-4461-1797-0. + +## 🧠 Ключевые идеи + +- **От пользователя к администратору**: структурированный путь — рабочий стол → командная строка → скрипты → администрирование системы → серверы → безопасность — покрывает все уровни владения Linux +- **Командная строка как основной инструмент**: акцент на bash, управлении файлами, процессами и пользователями через терминал — не GUI, а реальные инструменты профессионала +- **Администрирование серверов**: настройка сетевых сервисов (веб, файловые серверы, DNS, DHCP), контейнеры и виртуализация на практических примерах +- **Безопасность Linux**: управление правами, файрволы, SELinux, аудит — системный подход к защите Linux-окружений +- **Облачные вычисления**: работа с облачной инфраструктурой и современными инструментами развёртывания как финальная ступень профессионального роста + +## 💬 Важные цитаты + +- «Linux — это не просто операционная система, это экосистема, которую можно освоить постепенно» +- «Понимание командной строки — единственный способ по-настоящему контролировать Linux-систему» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Командная строка Linux. Полное руководство]] +- [[Внутреннее устройство Linux]] +- [[Командная строка Linux]] +- [[Современные операционные системы]] diff --git a/Knowledges/Библиотека/Книги/Внутреннее устройство Linux.md b/Knowledges/Библиотека/Книги/Внутреннее устройство Linux.md new file mode 100644 index 0000000..5b13181 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Внутреннее устройство Linux.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Внутреннее устройство Linux +Автор: + - Брайан Уорд +Количество страниц: 480 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/vnutrennee-ustroystvo-linux.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - linux + - операционные_системы + - системное_администрирование + - ядро + - виртуализация +Категории: + - Программирование + - Операционные системы +Источник: +Ссылка: +--- + +# Внутреннее устройство Linux + +![[covers/vnutrennee-ustroystvo-linux.jpg]] + +## 📖 О книге + +Брайан Уорд — разработчик и системный администратор, работающий с Linux с 1993 года — в третьем издании бестселлера Amazon раскрывает внутренние механизмы операционной системы Linux: от загрузки и управления процессами до сетей, виртуализации и контейнеров. Книга охватывает два главных семейства дистрибутивов (Debian/Ubuntu и RHEL/Fedora) и ориентирована на тех, кто хочет не просто пользоваться Linux, а понимать, как он устроен изнутри. Издательство «Питер», 2022, 3-е изд., ISBN 978-5-4461-3946-0. + +## 🧠 Ключевые идеи + +- **Ядро Linux и процессы**: как ядро управляет процессами, памятью и системными вызовами — фундамент понимания поведения любой Linux-системы +- **Загрузка и инициализация**: детальный разбор boot-процесса, роли GRUB, init и systemd — что происходит от включения питания до приглашения командной строки +- **Управление оборудованием**: как Linux взаимодействует с устройствами через драйверы, udev и sysfs — механизм, скрытый за абстракцией «всё есть файл» +- **Сети и администрирование**: принципы настройки сетей, маршрутизации и диагностики — от сетевых интерфейсов до файрволов +- **Виртуализация и контейнеры**: VM, гипервизоры, Docker, Podman, LXC и Kubernetes — современный взгляд на изоляцию процессов и окружений + +## 💬 Важные цитаты + +- «Суперпользователь не тот, кто знает все команды, а тот, кто понимает, что происходит за ними» +- «Linux — это не просто операционная система, это философия прозрачности» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Командная строка Linux]] +- [[Современные операционные системы]] +- [[Компьютерные сети. Принципы, технологии, протоколы]] diff --git a/Knowledges/Библиотека/Книги/Грокаем Continuous Delivery.md b/Knowledges/Библиотека/Книги/Грокаем Continuous Delivery.md new file mode 100644 index 0000000..fa0a11b --- /dev/null +++ b/Knowledges/Библиотека/Книги/Грокаем Continuous Delivery.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Грокаем Continuous Delivery +Автор: + - Кристи Уилсон +Количество страниц: 400 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/grokaem-continuous-delivery.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - devops + - ci_cd + - continuous_delivery + - автоматизация + - тестирование +Категории: + - Программирование + - DevOps +Источник: +Ссылка: +--- + +# Грокаем Continuous Delivery + +![[covers/grokaem-continuous-delivery.jpg]] + +## 📖 О книге + +Практическое руководство Кристи Уилсон по построению и работе с пайплайном непрерывной доставки. Каждая глава разбирает отдельный реальный сценарий: автоматическое масштабирование, тестирование легаси-приложений, управление конфигурацией. Книга сопровождается иллюстрациями, чёткими объяснениями и упражнениями. Издательство «Питер», 2024, серия «Библиотека программиста», ISBN 978-5-4461-2372-8. + +## 🧠 Ключевые идеи + +- **CD-пайплайн как основа надёжных поставок**: автоматизация контроля версий, тестирования и деплоя минимизирует ручное вмешательство и снижает риск человеческой ошибки при каждом релизе +- **Каждый сценарий — отдельная глава**: книга строится не как теория, а как набор конкретных ситуаций — от настройки первого пайплайна до работы с унаследованными системами +- **Тестирование как неотъемлемая часть CD**: автоматические тесты на каждом этапе пайплайна — юнит, интеграционные, smoke — обязательное условие непрерывной доставки, а не опция +- **Инфраструктура как код**: управление окружениями через код (IaC) делает деплой воспроизводимым и устраняет проблему «работает у меня, не работает на проде» +- **Постепенное внедрение**: CD не требует всё или ничего — книга показывает, как добавлять практики итеративно, в том числе в легаси-проектах без CI/CD + +## 💬 Важные цитаты + +- «Пайплайн Continuous Delivery автоматизирует процессы контроля версий, тестирования и развертывания при минимальном вмешательстве разработчика» +- «Освойте инструменты и методы непрерывной доставки — и вы сможете быстро и последовательно добавлять функции и выпускать обновления» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Тестирование JavaScript]] +- [[Принципы юнит-тестирования]] +- [[Тестирование веб-API]] diff --git a/Knowledges/Библиотека/Книги/Идиомы bash.md b/Knowledges/Библиотека/Книги/Идиомы bash.md new file mode 100644 index 0000000..307c6dd --- /dev/null +++ b/Knowledges/Библиотека/Книги/Идиомы bash.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Идиомы bash +Автор: + - Карл Олбинг + - Джей Пи Фоссен +Количество страниц: 208 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/idiomy-bash.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - bash + - shell + - linux + - автоматизация + - командная_строка +Категории: + - Программирование + - Операционные системы +Источник: +Ссылка: +--- + +# Идиомы bash + +![[covers/idiomy-bash.jpg]] + +## 📖 О книге + +Карл Олбинг и Джей Пи Фоссен — опытные практики Unix/Linux — собрали коллекцию идиом bash: устойчивых конструкций и приёмов, которые отличают экспертные сценарии от любительских. Книга учит расшифровывать чужой код и писать собственный максимально читаемым и понятным образом — включая антипаттерны, которых следует избегать. Подходит для любой ОС: Linux, Unix, macOS, Windows. Серия «Бестселлеры O'Reilly», издательство «Питер», 2023, ISBN 978-5-4461-2307-0. + +## 🧠 Ключевые идеи + +- **Идиомы вместо синтаксиса**: bash полон конструкций, которые работают, но выглядят загадочно — идиоматический подход объясняет, почему код написан именно так и как это делать правильно +- **Читаемость как цель**: написать работающий скрипт легко, написать понятный — сложно; книга показывает конкретные техники, делающие bash-код прозрачным и сопровождаемым +- **Антипаттерны bash**: конструкции, которые следует избегать — распространённые ошибки, неочевидные ловушки и устаревшие практики с объяснением почему +- **Расшифровка чужого кода**: практические приёмы для понимания старых и плохо написанных скриптов — навык, незаменимый при работе с legacy-системами +- **Экспертный уровень**: от базового понимания переменных и условий к продвинутым конструкциям — подстановка процессов, массивы, регулярные выражения в bash + +## 💬 Важные цитаты + +- «Идиома — это не просто синтаксис, это паттерн мышления, принятый в сообществе» +- «Лучший bash-скрипт тот, который можно прочитать через год и сразу понять» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Командная строка Linux. Полное руководство]] +- [[Командная строка Linux]] +- [[Внутреннее устройство Linux]] +- [[Библия Linux]] diff --git a/Knowledges/Библиотека/Книги/Изучаем паттерны проектирования JavaScript.md b/Knowledges/Библиотека/Книги/Изучаем паттерны проектирования JavaScript.md new file mode 100644 index 0000000..b5874e4 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Изучаем паттерны проектирования JavaScript.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Изучаем паттерны проектирования JavaScript +Автор: + - Эдди Османи +Количество страниц: 272 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/izuchaem-patterny-javascript.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - javascript + - паттерны + - архитектура + - react +Категории: + - Программирование + - Проектирование систем +Источник: +Ссылка: +--- + +# Изучаем паттерны проектирования JavaScript + +![[covers/izuchaem-patterny-javascript.jpg]] + +## 📖 О книге + +Эдди Османи — ведущий инженер Google, разработчик Chrome — во втором издании охватывает более двадцати ключевых паттернов для создания поддерживаемых и масштабируемых JavaScript-приложений. Книга включает порождающие, структурные и поведенческие паттерны, архитектурные подходы MVC/MVP/MVVM, паттерны для React (Hooks, HOC, Render Props), а также современные техники производительности: динамический импорт, code splitting, серверный рендеринг и Islands Architecture. Издательство «БХВ» / «АЛИСТ», 2024. + +## 🧠 Ключевые идеи + +- **20+ паттернов проектирования для JavaScript**: порождающие (Factory, Singleton, Builder), структурные (Decorator, Facade, Proxy) и поведенческие (Observer, Mediator, Command) — все с примерами на современном JS +- **Паттерны для React**: Hooks, Higher-Order Components, Render Props, Compound Components — специфические архитектурные решения для React-экосистемы +- **Модули и инкапсуляция**: модульный подход как основа масштабируемого кода — ES-модули, паттерн Module, IIFE и управление зависимостями +- **Архитектурные подходы MVC/MVP/MVVM**: классические паттерны применительно к фронтенд-разработке, сравнение и сценарии применения каждого +- **Современные паттерны производительности**: динамический импорт, code splitting, SSR, гидрация и Islands Architecture для быстрых веб-приложений + +## 💬 Важные цитаты + +- «Паттерны проектирования — это не готовые решения, это словарь для общения между разработчиками» +- «Хороший паттерн — тот, что решает реальную проблему, а не усложняет простое» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Паттерны объектно-ориентированного проектирования]] +- [[Шаблоны корпоративных приложений]] +- [[Тестирование JavaScript]] +- [[Чистая архитектура]] diff --git a/Knowledges/Библиотека/Книги/Искусство чистого кода.md b/Knowledges/Библиотека/Книги/Искусство чистого кода.md new file mode 100644 index 0000000..6823012 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Искусство чистого кода.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Искусство чистого кода +Автор: + - Кристиан Майер +Количество страниц: 240 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/iskusstvo-chistogo-koda.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - чистый_код + - продуктивность + - профессиональный_рост + - лучшие_практики +Категории: + - Программирование + - Профессиональный рост +Источник: +Ссылка: +--- + +# Искусство чистого кода + +![[covers/iskusstvo-chistogo-koda.jpg]] + +## 📖 О книге + +Кристиан Майер — доктор компьютерных наук, основатель blog.finxter.com — формулирует девять фундаментальных принципов написания понятного и поддерживаемого кода. Главная идея книги: сложность — главный враг продуктивности, а простота достигается через сокращение, фокус и осознанное управление вниманием. Издательство «Питер», 2023, серия «Библиотека программиста», ISBN 978-5-4461-2391-9. + +## 🧠 Ключевые идеи + +- **Сложность — враг продуктивности**: каждая лишняя зависимость, абстракция и строка кода — это долг; упрощение системы важнее добавления новых возможностей +- **Принцип 80/20 в разработке**: 20% усилий дают 80% результата; важно научиться находить и концентрироваться на действительно значимых задачах, отсекая второстепенное +- **MVP и быстрая обратная связь**: минимально жизнеспособный продукт позволяет проверить гипотезы с минимальными затратами и скорректировать направление до дорогостоящих ошибок +- **Философия Unix — делать одно и делать хорошо**: маленькие, сфокусированные функции и модули лучше монолитных конструкций; каждый компонент должен иметь единственную ответственность +- **Состояние потока и фокус**: глубокое погружение в задачу многократно увеличивает продуктивность; управление вниманием — такой же профессиональный навык, как владение языком программирования + +## 💬 Важные цитаты + +- «Сокращайте, упрощайте и перенаправляйте освободившуюся энергию на самые важные задачи» +- «Преждевременная оптимизация — корень всех зол» +- «В дизайне лучше меньше, да лучше» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистый код]] +- [[Чистая архитектура]] +- [[Совершенный код]] +- [[Идеальный программист]] diff --git a/Knowledges/Библиотека/Книги/Карьера программиста.md b/Knowledges/Библиотека/Книги/Карьера программиста.md new file mode 100644 index 0000000..8de8634 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Карьера программиста.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Карьера программиста +Автор: + - Гэйл Лакман Макдауэлл +Количество страниц: 688 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/karera-programmista.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - собеседования + - алгоритмы + - структуры_данных + - карьера + - программирование +Категории: + - Программирование + - Карьера +Источник: +Ссылка: +--- + +# Карьера программиста + +![[covers/karera-programmista.jpg]] + +## 📖 О книге + +Мировой бестселлер Гэйл Лакман Макдауэлл — квинтэссенция сотен реальных технических интервью в Google, Microsoft, Apple, Amazon и других ведущих IT-компаниях. 6-е издание содержит 189 отборных задач с подробными решениями: алгоритмы, структуры данных, системный дизайн, поведенческие вопросы и типичные ошибки кандидатов. Основана на личном опыте автора как интервьюера и кандидата. Издательство «Питер», 2016. + +## 🧠 Ключевые идеи + +- **Структурированный подход к решению задач**: алгоритм разбора задачи — уточнить условие, придумать примеры, найти паттерн, написать код, проверить — важнее, чем знать готовые решения наизусть +- **Анализ сложности обязателен**: любое решение нужно сопровождать оценкой времени и памяти (Big O); интервьюер ожидает, что кандидат сам назовёт сложность без подсказки +- **Типичные ошибки кандидатов**: молчание при решении, прыжок к коду без обдумывания, игнорирование граничных случаев, отсутствие тестирования своего кода — всё это «красные флаги» +- **Поведенческие вопросы — не мелочь**: STAR-метод (Situation, Task, Action, Result) и подготовленные истории о реальных ситуациях из практики так же важны, как технические задачи +- **Подготовка как проект**: систематическое изучение тем (массивы, деревья, графы, динамическое программирование), решение задач с таймером и имитация условий реального интервью + +## 💬 Важные цитаты + +- «Из тысяч возможных задач и вопросов в книгу были отобраны 189 наиболее интересных и значимых» +- «Эта книга — квинтэссенция сотен интервью со множеством кандидатов и тысяч вопросов в ведущих мировых корпорациях» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[System Design. Пережить интервью]] +- [[Грокаем алгоритмы]] +- [[Алгоритмы. Руководство по разработке]] diff --git a/Knowledges/Библиотека/Книги/Код, который умещается в голове.md b/Knowledges/Библиотека/Книги/Код, который умещается в голове.md new file mode 100644 index 0000000..38fb5d9 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Код, который умещается в голове.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Код, который умещается в голове: эвристики для разработчиков" +Автор: + - Марк Симан +Количество страниц: 400 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/kod-kotoryy-umeschaetsya.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - чистый_код + - архитектура + - эвристики + - профессиональный_рост +Категории: + - Программирование + - Профессиональный рост +Источник: +Ссылка: +--- + +# Код, который умещается в голове + +![[covers/kod-kotoryy-umeschaetsya.jpg]] + +## 📖 О книге + +Марк Симан — бывший экономист, ставший разработчиком, автор отмеченной премией Jolt книги по dependency injection — предлагает практические эвристики для написания кода, который можно удерживать в голове. Книга отвечает на вопросы: как создавать чеклисты, организовывать командную работу, применять инкапсуляцию и декомпозицию, проектировать API и писать юнит-тесты. Примеры на C#, понятны для любого ООП-языка. Рекомендована Робертом Мартином. Издательство «Питер», 2023, ISBN 978-5-4461-2293-6. + +## 🧠 Ключевые идеи + +- **Когнитивная нагрузка как метрика**: код хорош ровно настолько, насколько он умещается в рабочую память разработчика — все эвристики книги направлены на снижение когнитивной нагрузки +- **Чеклисты как инструмент**: систематические контрольные списки для code review, деплоя и проектирования — снижают зависимость от памяти и предотвращают повторяющиеся ошибки +- **Декомпозиция и инкапсуляция**: разбиение кода на части, которые можно понять независимо — конкретные техники, а не абстрактные принципы +- **Устойчивый темп разработки**: методы и процессы для работы с кодом без перегрева — управление сложностью на уровне команды, не только отдельного разработчика +- **API и тестируемость**: проектирование интерфейсов, которые сложно использовать неправильно, и тесты как документация о намерениях кода + +## 💬 Важные цитаты + +- «Код пишется один раз, а читается много — пишите для читателя, не для компилятора» +- «Сложность неизбежна; задача разработчика — управлять ею, а не игнорировать» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистый код]] +- [[Чистая архитектура]] +- [[Совершенный код]] +- [[Искусство чистого кода]] +- [[Пять строк кода]] diff --git a/Knowledges/Библиотека/Книги/Кодеры за работой. Размышления о ремесле программиста.md b/Knowledges/Библиотека/Книги/Кодеры за работой. Размышления о ремесле программиста.md new file mode 100644 index 0000000..8e4133b --- /dev/null +++ b/Knowledges/Библиотека/Книги/Кодеры за работой. Размышления о ремесле программиста.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Кодеры за работой. Размышления о ремесле программиста +Автор: + - Питер Сейбел +Количество страниц: 544 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/kodery-za-rabotoy.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - интервью + - профессиональный_рост + - карьера + - история_программирования +Категории: + - Программирование + - Профессиональный рост +Источник: +Ссылка: +--- + +# Кодеры за работой. Размышления о ремесле программиста + +![[covers/kodery-za-rabotoy.jpg]] + +## 📖 О книге + +Сборник из 15 интервью Питера Сейбела с легендами программирования: Кен Томпсон, Дональд Кнут, Питер Норвиг, Гай Стил, Джошуа Блох, Брендан Айк, Джо Армстронг и другие. Книга раскрывает мышление выдающихся профессионалов: как они учились, как проектируют системы, как ищут ошибки, что думают о будущем профессии. Издательство «Символ-Плюс», 2011. + +## 🧠 Ключевые идеи + +- **Нет единственно правильного пути**: все 15 героев пришли к мастерству по-разному — разные языки, методологии, культуры разработки; общее одно — глубокая профессиональная увлечённость +- **Чтение чужого кода — недооценённый навык**: большинство великих программистов подчёркивают, что умение читать и понимать чужой код так же важно, как умение его писать +- **Отладка как искусство**: каждый эксперт описывает свои методы поиска ошибок — от бумажного анализа до глубокого знания системы на уровне «чувства кода» +- **Простота против сложности**: сквозная тема всех интервью — лучший код тот, которого меньше; сложность — главный враг надёжности +- **Инструменты формируют мышление**: выбор языка и среды влияет на то, как программист думает о задаче; знание нескольких парадигм расширяет горизонт решений + +## 💬 Важные цитаты + +- «Нет какого-то общего подхода к программированию — есть только профессиональная увлечённость и целеустремлённость» +- «Самая важная и интересная часть работы программиста происходит у него в голове и никому не видна» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Идеальный программист]] +- [[Мифический человеко-месяц]] +- [[Человеческий фактор. Успешные проекты и команды]] +- [[Совершенный код]] diff --git a/Knowledges/Библиотека/Книги/Командная строка Linux. Полное руководство.md b/Knowledges/Библиотека/Книги/Командная строка Linux. Полное руководство.md new file mode 100644 index 0000000..9c4ed59 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Командная строка Linux. Полное руководство.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Командная строка Linux. Полное руководство +Автор: + - Уильям Шоттс +Количество страниц: 544 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/komandnaya-stroka-linux-shotts.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - linux + - командная_строка + - bash + - shell + - автоматизация +Категории: + - Программирование + - Операционные системы +Источник: +Ссылка: +--- + +# Командная строка Linux. Полное руководство + +![[covers/komandnaya-stroka-linux-shotts.jpg]] + +## 📖 О книге + +Уильям Шоттс — разработчик и технический писатель — создал международный бестселлер для всех, кто хочет освоить командную строку Linux от первых шагов до написания полноценных bash-программ. Книга делится на четыре части: работа с оболочкой, настройка окружения, типичные задачи и базовые инструменты, написание сценариев. Второе международное издание дополнено возможностями bash 4.x и современными практиками программирования. Издательство «Питер», 2020, ISBN 978-5-4461-1430-6. + +## 🧠 Ключевые идеи + +- **Философия командной строки**: Unix-инструменты проектируются для совместной работы через конвейеры — понимание этой философии меняет подход к решению задач и автоматизации +- **Навигация и управление файлами**: базовые команды (ls, cd, cp, mv, rm, ln) и файловая система Linux — фундамент, без которого невозможна эффективная работа в терминале +- **Стандартный ввод/вывод и перенаправление**: операторы `>`, `>>`, `|`, `<` и `tee` — ключ к комбинированию команд и созданию мощных однострочников +- **Текстовые инструменты**: grep, sed, awk, cut, sort, uniq, patch — арсенал для обработки и трансформации текстовых данных без написания кода +- **Сценарии bash**: переменные, условия, циклы, функции и обработка ошибок — систематический подход к автоматизации системных задач и написанию надёжных скриптов + +## 💬 Важные цитаты + +- «Графический интерфейс позволяет делать то, что предусмотрел разработчик. Командная строка позволяет делать то, что нужно вам» +- «Умение работать в командной строке — это суперсила любого пользователя Linux» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Командная строка Linux]] +- [[Внутреннее устройство Linux]] +- [[Современные операционные системы]] diff --git a/Knowledges/Библиотека/Книги/Компьютерные сети.md b/Knowledges/Библиотека/Книги/Компьютерные сети.md new file mode 100644 index 0000000..ec4dce0 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Компьютерные сети.md @@ -0,0 +1,52 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Компьютерные сети +Автор: + - Эндрю Таненбаум + - Дэвид Уэзеролл +Количество страниц: 992 +Прогресс: 0 +Формат: Бумажная +Обложка: Библиотека/Книги/covers/kompyuternye-seti-tanenbaum.jpg +Начата: 2026 +Закончена: +Оценка: +Сложность: +Теги: + - сети + - computer_science + - архитектура +Категории: + - IT +Источник: +Ссылка: +--- + +# Компьютерные сети + +![[covers/kompyuternye-seti-tanenbaum.jpg]] + +## 📖 О книге +Фундаментальный труд по архитектуре и принципам работы компьютерных сетей. Книга охватывает все уровни модели TCP/IP, начиная с физического и заканчивая прикладным. В шестом издании обновлены материалы по IPv6, 5G, безопасности и современным протоколам прикладного уровня. + +## 🧠 Ключевые идеи +1. **Иерархическая организация:** Сетевая архитектура строится на основе уровней, где каждый уровень предоставляет сервис вышестоящему, скрывая детали реализации. +2. **Маршрутизация и коммутация:** Принципы передачи пакетов в сложных сетях, включая алгоритмы поиска кратчайшего пути и борьбу с петлями. +3. **Управление перегрузками:** Как протоколы (особенно TCP) адаптируются к пропускной способности сети, чтобы избежать коллапса. +4. **Безопасность «по умолчанию»:** Необходимость встраивания механизмов защиты (шифрование, аутентификация) на всех этапах проектирования сети. +5. **Эволюция протоколов:** Переход от старых стандартов к новым (IPv4 -> IPv6) и влияние мобильных технологий на архитектуру интернета. + +## 💬 Важные цитаты +- «Никогда не недооценивайте пропускную способность грузовика, набитого магнитными лентами и мчащегося по шоссе». +- «Хорошая вещь в стандартах — это то, что их так много на выбор». +- «Теория — это когда вы всё знаете, но ничего не работает. Практика — это когда всё работает, но никто не знает почему. Мы же объединяем теорию и практику...» + +## 💡 Как применить в моих проектах +- Использовать понимание работы TCP/IP для оптимизации сетевых запросов в высоконагруженных приложениях. +- Применять принципы эшелонированной защиты при проектировании инфраструктуры. +- Учитывать задержки и ограничения пропускной способности при разработке распределенных систем. + +## 🔗 Связанные заметки +- [[Компьютерные сети. Нисходящий подход]] +- [[Компьютерные сети. Принципы, технологии, протоколы]] diff --git a/Knowledges/Библиотека/Книги/Не заставляйте меня думать.md b/Knowledges/Библиотека/Книги/Не заставляйте меня думать.md new file mode 100644 index 0000000..cf74732 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Не заставляйте меня думать.md @@ -0,0 +1,55 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Не заставляйте меня думать +Автор: + - Стив Круг +Количество страниц: 256 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/ne-zastavlyajte-menya-dumat.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - юзабилити + - ux + - веб_дизайн + - ui + - продуктовый_дизайн +Категории: + - Дизайн + - UX/UI +Источник: +Ссылка: +--- + +# Не заставляйте меня думать + +![[covers/ne-zastavlyajte-menya-dumat.jpg]] + +## 📖 О книге + +Классический труд по юзабилити веб-сайтов и мобильных приложений от Стива Круга. Третье издание (Don't Make Me Think, Revisited) расширено главами о мобильных интерфейсах. Автор объясняет, как сделать продукт понятным для всех без необходимости читать инструкции — с примерами, иллюстрациями и практическими советами по тестированию. + +## 🧠 Ключевые идеи + +- **Первый закон юзабилити**: пользователь не должен тратить ни секунды на размышление — можно ли кликнуть на объект, что произойдёт после клика, куда он попал +- **Сканирование вместо чтения**: люди не читают страницы — они сканируют их в поисках слов, которые соответствуют их задаче; дизайн должен это учитывать +- **Навигация — скелет сайта**: хорошая навигация отвечает на три вопроса: где я? Где я был? Куда я могу пойти? +- **Меньше думать — больше делать**: если выбор требует мыслительных усилий, пользователь уйдёт; задача дизайнера — устранить любую неочевидность +- **Тестируй одного пользователя, а не ноль**: дешёвое usability-тестирование с малым количеством участников даёт больше insights, чем идеальное исследование, которое никогда не случится + +## 💬 Важные цитаты + +- «Первый закон юзабилити: не заставляйте меня думать» +- «Лучше протестировать одного пользователя, чем не тестировать вообще» +- «Если что-то короткое — у него больше шансов быть использованным» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Дизайн для разработчиков]] diff --git a/Knowledges/Библиотека/Книги/Объектно-ориентированное программирование в С++.md b/Knowledges/Библиотека/Книги/Объектно-ориентированное программирование в С++.md new file mode 100644 index 0000000..394cc70 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Объектно-ориентированное программирование в С++.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Объектно-ориентированное программирование в С++ +Автор: + - Роберт Лафоре +Количество страниц: 928 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/oop-cplusplus-lafore.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - cpp + - ооп + - программирование + - учебник + - классика_cs +Категории: + - Программирование + - C++ +Источник: +Ссылка: +--- + +# Объектно-ориентированное программирование в С++ + +![[covers/oop-cplusplus-lafore.jpg]] + +## 📖 О книге + +Роберт Лафоре создал один из самых популярных учебников по C++ и ООП — классику серии «Классика Computer Science». Книга проводит читателя от начальных основ программирования к полноценному пониманию объектно-ориентированных концепций через хорошо продуманные примеры, которые «обрастают» новыми возможностями с каждой главой. Содержит более 100 упражнений. Издательство «Питер», 4-е изд., ISBN 978-5-4461-0927-2. + +## 🧠 Ключевые идеи + +- **Последовательное введение в ООП**: классы, объекты, инкапсуляция, наследование и полиморфизм — каждая концепция вводится поверх предыдущей через единую нарастающую цепочку примеров +- **C++ как язык ООП**: специфика C++ в реализации объектно-ориентированных концепций — конструкторы, деструкторы, перегрузка операторов, шаблоны и исключения +- **Практика через полномасштабные приложения**: каждый раздел завершается реальным проектом — не игрушечными примерами, а небольшими, но полноценными программами +- **Обучение через упражнения**: более 100 задач с нарастающей сложностью для самопроверки — книга подходит как для самостоятельного изучения, так и для учебных заведений +- **Классика, выдержавшая время**: четыре издания за тридцать лет — фундаментальные концепции изложены настолько ясно, что книга остаётся актуальной несмотря на эволюцию языка + +## 💬 Важные цитаты + +- «Тысячи читателей освоили объектно-ориентированное программирование в C++ благодаря этой книге» +- «Примеры не перегружены ничем лишним — только то, что нужно для понимания концепции» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Паттерны объектно-ориентированного проектирования]] +- [[Чистый код]] +- [[Совершенный код]] diff --git a/Knowledges/Библиотека/Книги/Предметно-ориентированное проектирование (DDD).md b/Knowledges/Библиотека/Книги/Предметно-ориентированное проектирование (DDD).md new file mode 100644 index 0000000..00261d8 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Предметно-ориентированное проектирование (DDD).md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Предметно-ориентированное проектирование (DDD)" +Автор: + - Эрик Эванс +Количество страниц: 448 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/predmetno-orientirovannoe-proektirovanie.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - ddd + - архитектура + - проектирование + - domain_driven_design + - ооп +Категории: + - Программирование + - Проектирование систем +Источник: +Ссылка: +--- + +# Предметно-ориентированное проектирование (DDD) + +![[covers/predmetno-orientirovannoe-proektirovanie.jpg]] + +## 📖 О книге + +Фундаментальная книга Эрика Эванса, заложившая основы Domain-Driven Design. Рассматривает стратегические и тактические паттерны создания сложных программных систем через глубокое понимание предметной области. Ключевые концепции — единый язык (Ubiquitous Language), ограниченный контекст (Bounded Context), агрегаты, сущности и объекты-значения. Издательство «Вильямс», 2020, перевод В. Л. Бродового. + +## 🧠 Ключевые идеи + +- **Единый язык (Ubiquitous Language)**: общий словарь между разработчиками и экспертами предметной области — основа DDD; код должен отражать этот язык напрямую, без «перевода» +- **Ограниченный контекст (Bounded Context)**: каждая модель применима только в чётко очерченном контексте; попытка создать универсальную модель «на все случаи» ведёт к хаосу +- **Тактические паттерны**: Entity (сущности с идентичностью), Value Object (объекты без идентичности), Aggregate (кластер объектов с корнем), Repository, Factory — строительные блоки модели предметной области +- **Стратегические паттерны**: Bounded Context, Context Map, Anti-Corruption Layer — инструменты управления сложностью на уровне всей системы и интеграции нескольких моделей +- **Рефакторинг к более глубокому пониманию**: модель должна эволюционировать по мере роста знаний о предметной области; прорывные рефакторинги — норма, а не исключение + +## 💬 Важные цитаты + +- «Единый язык — это не просто глоссарий. Это живой язык, который использует вся команда — в разговорах, документах и коде» +- «Сложность скрывается в сердце программного обеспечения» +- «Программисты должны стремиться не просто к созданию рабочей системы, а к настоящему пониманию того, что они создают» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистая архитектура]] +- [[Шаблоны корпоративных приложений]] +- [[Фундаментальный подход к программной архитектуре]] +- [[Паттерны объектно-ориентированного проектирования]] diff --git a/Knowledges/Библиотека/Книги/Прикладные структуры данных и алгоритмы.md b/Knowledges/Библиотека/Книги/Прикладные структуры данных и алгоритмы.md new file mode 100644 index 0000000..7f320f0 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Прикладные структуры данных и алгоритмы.md @@ -0,0 +1,53 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Прикладные структуры данных и алгоритмы +Автор: + - Джей Венгроу +Количество страниц: 512 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/prikladnye-struktury-dannyh-i-algoritmy.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - алгоритмы + - структуры_данных + - big_o + - оптимизация +Категории: + - Программирование + - Алгоритмы +Источник: +Ссылка: +--- + +# Прикладные структуры данных и алгоритмы + +![[covers/prikladnye-struktury-dannyh-i-algoritmy.jpg]] + +## 📖 О книге + +Практическое руководство по структурам данных и алгоритмам с примерами на Python, JavaScript и Ruby. Учит применять нотацию «О большое» и выбирать оптимальные структуры данных — хеш-таблицы, деревья, графы — для повышения производительности кода. Содержит прикладные примеры и упражнения для освоения методов оптимизации приложений. + +## 🧠 Ключевые идеи + +- **O(N) как инструмент выбора**: нотация «О большое» — не теория, а практический критерий для сравнения алгоритмов в реальных задачах +- **Правильная структура данных меняет всё**: хеш-таблицы дают O(1) поиск там, где массив потребует O(N); выбор структуры важнее оптимизации кода +- **Деревья и графы для реальных задач**: иерархические и сетевые данные требуют специализированных структур — списки здесь неэффективны +- **Рекурсия и динамическое программирование**: разбивка задач на подзадачи — ключ к элегантным и быстрым решениям +- **Практика важнее теории**: каждая концепция закреплена упражнениями на реальных языках, а не на псевдокоде + +## 💬 Важные цитаты + +- «Структуры данных и алгоритмы — это не абстрактные концепции, а турбина, способная превратить ваш софт в болид Формулы-1» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Грокаем алгоритмы]] +- [[Алгоритмы. Руководство по разработке]] diff --git a/Knowledges/Библиотека/Книги/Продвинутые алгоритмы и структуры данных.md b/Knowledges/Библиотека/Книги/Продвинутые алгоритмы и структуры данных.md new file mode 100644 index 0000000..94d0ecf --- /dev/null +++ b/Knowledges/Библиотека/Книги/Продвинутые алгоритмы и структуры данных.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Продвинутые алгоритмы и структуры данных +Автор: + - Марчелло Ла Рокка +Количество страниц: 848 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/prodvinutye-algoritmy.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - алгоритмы + - структуры_данных + - графы + - machine_learning + - computer_science +Категории: + - Программирование + - Алгоритмы +Источник: +Ссылка: +--- + +# Продвинутые алгоритмы и структуры данных + +![[covers/prodvinutye-algoritmy.jpg]] + +## 📖 О книге + +Марчелло Ла Рокка — исследователь и старший инженер с опытом в Twitter, Microsoft и Apple, специализирующийся на графах, алгоритмах оптимизации и машинном обучении — предлагает сбалансированное сочетание классических, продвинутых и современных алгоритмов. Книга состоит из трёх частей: улучшение базовых структур данных, многомерные запросы, планарные графы и оптимизация. Охватывает алгоритмы анализа данных, MapReduce и решение логистических задач с помощью графов. Серия «Библиотека программиста», издательство «Питер», 2024, ISBN 978-5-4461-1946-2. + +## 🧠 Ключевые идеи + +- **Улучшение базовых структур данных**: деревья, кучи, хеш-таблицы и другие структуры в их продвинутых вариантах — как выбрать правильную структуру для конкретной задачи +- **Многомерные запросы**: k-d деревья и другие пространственные структуры для эффективного поиска в многомерных данных — фундамент геолокации и рекомендательных систем +- **Графовые алгоритмы и оптимизация**: планарные графы, алгоритмы кратчайших путей, задачи коммивояжёра и логистические задачи — применение теории графов к реальным проблемам +- **Распределённые алгоритмы**: MapReduce как модель для обработки больших данных — кластеризация и агрегация в распределённых системах +- **Связь с машинным обучением**: алгоритмы, лежащие в основе ML-методов — от кластеризации до оптимизации, которые обычно остаются «за кадром» в курсах по data science + +## 💬 Важные цитаты + +- «Знание продвинутых алгоритмов отличает разработчика, который решает задачу, от того, кто решает её эффективно» +- «Структуры данных — это не просто детали реализации, это архитектурные решения» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Алгоритмы. Руководство по разработке]] +- [[Грокаем алгоритмы]] +- [[Теоретический минимум по Computer Science. Все что нужно программисту и разработчику]] diff --git a/Knowledges/Библиотека/Книги/Пять строк кода.md b/Knowledges/Библиотека/Книги/Пять строк кода.md new file mode 100644 index 0000000..be1febb --- /dev/null +++ b/Knowledges/Библиотека/Книги/Пять строк кода.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Пять строк кода +Автор: + - Кристиан Клаусен +Количество страниц: 368 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/pyat-strok-koda.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - рефакторинг + - чистый_код + - typescript + - лучшие_практики +Категории: + - Программирование + - Рефакторинг +Источник: +Ссылка: +--- + +# Пять строк кода + +![[covers/pyat-strok-koda.jpg]] + +## 📖 О книге + +Кристиан Клаусен — разработчик и инженер — предлагает радикально простое правило рефакторинга: любой метод должен содержать не более пяти строк кода. Книга учит определять, когда и как проводить рефакторинг, как распознать признаки кода, который пора удалить, и как применять паттерны для создания элегантного, поддерживаемого кода. Все примеры написаны на TypeScript. Роберт Мартин рекомендует. Издательство «Питер», 2023, ISBN 978-5-4461-1959-2. + +## 🧠 Ключевые идеи + +- **Правило пяти строк**: любой метод должен содержать не более пяти строк кода — это правило принуждает к декомпозиции, улучшает читаемость и снижает когнитивную нагрузку +- **Рефакторинг как непрерывная практика**: автор объясняет когда, как и что рефакторить — рефакторинг не разовая акция, а постоянная инженерная дисциплина +- **Распознавание плохого кода**: конкретные признаки и запахи кода, которые говорят о необходимости переработки или удаления — практические индикаторы для ежедневной работы +- **Паттерны рефакторинга**: набор проверенных приёмов (извлечение методов, замена условий полиморфизмом и др.) для формирования элегантного и поддерживаемого кода +- **TypeScript как универсальный язык примеров**: синтаксис TypeScript позволяет применить идеи книги к любому объектно-ориентированному языку высокого уровня + +## 💬 Важные цитаты + +- «Правило пяти строк — это не ограничение, а инструмент мышления» +- «Хороший код — это код, который легко изменить» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистый код]] +- [[Рефакторинг кода на JavaScript]] +- [[Искусство чистого кода]] +- [[Совершенный код]] diff --git a/Knowledges/Библиотека/Книги/Сам себе тестировщик. Пошаговое руководство по тестированию ПО.md b/Knowledges/Библиотека/Книги/Сам себе тестировщик. Пошаговое руководство по тестированию ПО.md new file mode 100644 index 0000000..49794a4 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Сам себе тестировщик. Пошаговое руководство по тестированию ПО.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Сам себе тестировщик. Пошаговое руководство по тестированию ПО +Автор: + - Чхави Радж Досадж +Количество страниц: 240 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/sam-sebe-testirovschik.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - тестирование + - qa + - тест_кейсы + - программирование + - профессиональный_рост +Категории: + - Программирование + - Тестирование +Источник: +Ссылка: +--- + +# Сам себе тестировщик. Пошаговое руководство по тестированию ПО + +![[covers/sam-sebe-testirovschik.jpg]] + +## 📖 О книге + +Чхави Радж Досадж — консультант по тестированию с более чем 20-летним опытом, работавший с American Express, Deutsche Bank и Резервным банком Австралии — предлагает практическое руководство по всем этапам тестирования ПО. Книга состоит из двух частей: теоретические основы и пошаговый разбор реального тестового проекта. Включает шаблоны документов, стратегии планирования и управления тестированием. Издательство «Питер», 2024, ISBN 978-5-4461-2226-4. + +## 🧠 Ключевые идеи + +- **Полный жизненный цикл тестирования**: книга охватывает все этапы — от планирования и разработки тест-кейсов до выполнения тестов, составления отчётов и закрытия тестовой активности +- **Практика на реальном проекте**: вторая часть книги разбирает полноценный тестовый проект шаг за шагом, позволяя применить теорию на конкретном примере +- **Разнообразие видов тестирования**: регрессионное, UAT, нефункциональное тестирование — каждый вид разобран с примерами и шаблонами документов +- **Документирование как основа**: готовые шаблоны тест-планов, статусных отчётов, финальных отчётов и планов релизов — практический инструментарий для ежедневной работы QA +- **Точка входа и справочник**: книга одновременно служит введением для новичков и настольным справочником для практикующих тестировщиков + +## 💬 Важные цитаты + +- «Тестирование — это не поиск ошибок, это управление рисками качества» +- «Понимание того, что тестировать, почему и когда — важнее умения запускать тесты» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Тестирование JavaScript]] +- [[Принципы юнит-тестирования]] +- [[Тестирование веб-API]] +- [[Грокаем Continuous Delivery]] diff --git a/Knowledges/Библиотека/Книги/Современная программная инженерия.md b/Knowledges/Библиотека/Книги/Современная программная инженерия.md new file mode 100644 index 0000000..84cb1bc --- /dev/null +++ b/Knowledges/Библиотека/Книги/Современная программная инженерия.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Современная программная инженерия +Автор: + - Дэвид Фарли +Количество страниц: 288 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/sovremennaya-programmnaya-inzheneriya.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - программирование + - agile + - continuous_delivery + - tdd + - профессиональный_рост +Категории: + - Программирование + - Профессиональный рост +Источник: +Ссылка: +--- + +# Современная программная инженерия + +![[covers/sovremennaya-programmnaya-inzheneriya.jpg]] + +## 📖 О книге + +Дэвид Фарли — пионер Continuous Delivery и лидер мнений в области разработки ПО — формулирует принципы современной программной инженерии. Книга строится вокруг двух ключевых концепций: непрерывного обучения и управления сложностью. Техники эмпирические, итеративные, основаны на быстрой обратной связи. Издательство «Питер», 2023, ISBN 978-5-4461-2335-3. + +## 🧠 Ключевые идеи + +- **Непрерывное обучение — основа профессии**: разработка ПО — это дисциплина с постоянно меняющимися требованиями; способность быстро учиться и адаптироваться важнее знания конкретного стека +- **Управление сложностью — главный навык**: сложность — главный враг программных систем; читаемый, модульный, слабосвязанный код — это не эстетика, а профессиональная обязанность +- **TDD как инструмент дизайна**: разработка через тестирование — не про тесты, а про обратную связь и дизайн; тесты, написанные первыми, формируют лучший API и меньшую связанность +- **Непрерывная доставка как стандарт**: CD — это не DevOps-практика, а инженерная дисциплина, обеспечивающая постоянную готовность кода к выпуску и минимизирующая риски +- **Итеративность и маленькие шаги**: работа малыми инкрементами с частой обратной связью снижает риск, ускоряет обучение и позволяет быстрее менять направление + +## 💬 Важные цитаты + +- «Ключевые концепции, лежащие в основе эффективной разработки ПО, — это непрерывное обучение и управление сложностью» +- «Делать код читаемым — это профессиональная обязанность и один из важнейших принципов управления сложностью» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Грокаем Continuous Delivery]] +- [[Эволюционная архитектура. Поддержка непрерывных изменений]] +- [[Принципы юнит-тестирования]] +- [[Чистый код]] diff --git a/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Все что нужно программисту и разработчику.md b/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Все что нужно программисту и разработчику.md new file mode 100644 index 0000000..45e8c7f --- /dev/null +++ b/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Все что нужно программисту и разработчику.md @@ -0,0 +1,56 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Теоретический минимум по Computer Science. Все что нужно программисту и разработчику" +Автор: + - Владстон Феррейра Фило +Количество страниц: 224 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/teormin-cs-vse-chto-nuzhno.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - computer_science + - алгоритмы + - математика + - основы_программирования + - теория +Категории: + - Программирование + - Computer Science +Источник: +Ссылка: +--- + +# Теоретический минимум по Computer Science. Все что нужно программисту и разработчику + +![[covers/teormin-cs-vse-chto-nuzhno.jpg]] + +## 📖 О книге + +Владстон Феррейра Фило — бразильский инженер-программист — создал предельно компактное введение в теоретические основы CS, которые нужны каждому разработчику в повседневной работе. Книга читается за 1–2 недели и охватывает вычислительное мышление, алгоритмы, структуры данных, комбинаторику, вероятности и основы параллелизма без академической перегруженности. Богато иллюстрирована. Издательство «Питер», 2019, ISBN 978-5-4461-0587-8. + +## 🧠 Ключевые идеи + +- **Вычислительное мышление**: системный подход к декомпозиции и решению любых сложных задач — навык, применимый далеко за пределами программирования +- **Алгоритмы и сложность**: сортировка, поиск, анализ O-нотации — фундамент, который позволяет оценивать и сравнивать решения профессионально +- **Комбинаторика и вероятности**: математический минимум, необходимый для понимания хеширования, случайных алгоритмов и анализа данных +- **Параллелизм и кэширование**: базовые концепции производительности объяснены через бытовые метафоры — готовка на кухне, укладка рюкзака +- **Компактность как принцип**: всё только самое важное — книга даёт фундамент для освоения любой технологии, не перегружая деталями конкретных языков + +## 💬 Важные цитаты + +- «Упреждающая выборка и кэширование помогут сложить рюкзак, а параллелизм — приготовить обед» +- «Вычислительное мышление — это навык решения проблем, а не знание языков программирования» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Теоретический минимум по Computer Science. Сети, криптография и data science]] +- [[Грокаем алгоритмы]] +- [[Алгоритмы. Руководство по разработке]] diff --git a/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Сети, криптография и data science.md b/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Сети, криптография и data science.md new file mode 100644 index 0000000..3c805b5 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Теоретический минимум по Computer Science. Сети, криптография и data science.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: "Теоретический минимум по Computer Science. Сети, криптография и data science" +Автор: + - Владстон Феррейра Фило + - Мото Пиктет +Количество страниц: 284 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/teormin-cs-seti-kriptografiya.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - computer_science + - сети + - криптография + - data_science + - машинное_обучение +Категории: + - Программирование + - Computer Science +Источник: +Ссылка: +--- + +# Теоретический минимум по Computer Science. Сети, криптография и data science + +![[covers/teormin-cs-seti-kriptografiya.jpg]] + +## 📖 О книге + +Владстон Феррейра Фило и Мото Пиктет продолжают серию «Теоретический минимум» — на этот раз охватывая три области, без которых невозможна современная разработка: сетевые технологии, криптографию и data science. Книга объясняет концепции через вопросы и реальные примеры, не требуя математического бэкграунда. Богато иллюстрирована. Издательство «Питер», 2022, ISBN 978-5-4461-2945-4. + +## 🧠 Ключевые идеи + +- **Сетевые технологии**: почему компьютерам нужны и MAC-, и IP-адреса, как работает DNS, TCP/IP и что происходит, когда вы открываете страницу в браузере +- **Основы криптографии**: симметричное и асимметричное шифрование, как обменяться секретным ключом по открытому каналу, цифровые подписи и сертификаты +- **Data Science и статистика**: почему средние значения могут вводить в заблуждение, основы вероятностей и статистического мышления для разработчиков +- **Машинное обучение**: ключевые идеи без математических формул — как обучаются модели и что стоит за популярными алгоритмами +- **Вопросы как инструмент**: каждая концепция вводится через реальный вопрос («Что делает кого-то истинным владельцем доменного имени?»), что формирует интуицию, а не просто знание + +## 💬 Важные цитаты + +- «Понимание того, как работает интернет, меняет отношение к каждой строке кода» +- «Криптография — это не магия, это математика, которую можно понять за один вечер» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Теоретический минимум по Computer Science. Все что нужно программисту и разработчику]] +- [[Компьютерные сети. Принципы, технологии, протоколы]] +- [[Грокаем алгоритмы]] diff --git a/Knowledges/Библиотека/Книги/Тестирование веб-API.md b/Knowledges/Библиотека/Книги/Тестирование веб-API.md new file mode 100644 index 0000000..2f505d6 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Тестирование веб-API.md @@ -0,0 +1,55 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Тестирование веб-API +Автор: + - Марк Винтерингем +Количество страниц: 304 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/testirovanie-veb-api.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - тестирование + - api + - веб_разработка + - автоматизация + - qa +Категории: + - Программирование + - Тестирование +Источник: +Ссылка: +--- + +# Тестирование веб-API + +![[covers/testirovanie-veb-api.jpg]] + +## 📖 О книге + +Практическое руководство Марка Винтерингема по тестированию веб-API от начального проектирования тест-сьюта до документирования и автоматизации. Книга охватывает исследовательское тестирование, тестирование контрактов, тестирование дизайна API и тестирование в production-среде. Издательство «Питер», 2024, серия «Библиотека программиста», перевод А. Гаврилова. + +## 🧠 Ключевые идеи + +- **Качество и риски как основа стратегии**: тестирование начинается с анализа рисков — что может пойти не так, для кого, и насколько критично; это определяет весь дальнейший подход +- **Тестирование дизайна API**: проверять API нужно ещё на этапе проектирования контракта, до написания кода — ошибки в дизайне дороже всего исправлять постфактум +- **Исследовательское тестирование**: структурированное исследование API вручную позволяет выявить уязвимости и неожиданное поведение, которое автоматизация пропускает +- **Автоматизация с умом**: инструменты автоматизации экономят время, но не заменяют понимание; автотесты должны проверять именно то, что критично для бизнеса +- **Тестирование контрактов**: consumer-driven contract testing гарантирует, что изменения в API не сломают зависимые сервисы — особенно важно в микросервисной архитектуре + +## 💬 Важные цитаты + +- «Тестирование API охватывает все этапы: от начального проектирования до методов документирования и предоставления высококачественных API» +- «Практические примеры написаны на Java — что позволяет сосредоточиться на принципах, а не на особенностях конкретного языка» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Тестирование JavaScript]] +- [[Принципы юнит-тестирования]] diff --git a/Knowledges/Библиотека/Книги/Ум программиста. Как понять и осмыслить любой код.md b/Knowledges/Библиотека/Книги/Ум программиста. Как понять и осмыслить любой код.md new file mode 100644 index 0000000..9832730 --- /dev/null +++ b/Knowledges/Библиотека/Книги/Ум программиста. Как понять и осмыслить любой код.md @@ -0,0 +1,57 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Ум программиста. Как понять и осмыслить любой код +Автор: + - Фелин Херманс +Количество страниц: 272 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/um-programmista.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - когнитивистика + - чтение_кода + - программирование + - продуктивность + - обучение +Категории: + - Программирование + - Профессиональный рост +Источник: +Ссылка: +--- + +# Ум программиста. Как понять и осмыслить любой код + +![[covers/um-programmista.jpg]] + +## 📖 О книге + +Книга Фелин Херманс — доцента Лейденского университета — применяет когнитивную науку к повседневной работе программиста. Автор объясняет, как мозг читает и понимает код, почему возникает замешательство при работе с чужим кодом и как снизить когнитивную нагрузку. Охватывает темы именования переменных, изучения новых языков программирования, парного программирования и поддержания кода в читаемом состоянии. + +## 🧠 Ключевые идеи + +- **Три типа памяти при чтении кода**: долговременная (хранилище знаний), кратковременная (временный буфер ~7 элементов) и рабочая (обработка информации) — понимание их работы помогает писать более понятный код +- **Три источника замешательства**: нехватка фундаментальных знаний, нехватка нужной информации в моменте и недостаток вычислительных ресурсов мозга — каждый требует разного решения +- **60% времени уходит на понимание кода**: большинство рабочего времени программист читает, а не пишет — это меняет приоритеты при проектировании читаемости +- **11 ролей переменных**: классификация (счётчик, флаг, бродяга, контейнер и др.) помогает давать более точные имена и лучше понимать чужой код +- **Когнитивная нагрузка и стиль кода**: camelCase эффективнее snake_case при поиске на 51,5%; интервальное повторение лучше всего закрепляет синтаксис новых языков + +## 💬 Важные цитаты + +- «Замешательство — неотъемлемая часть программирования» +- «60% времени программистов тратится на понимание кода, а не на его написание» +- «Программы должны писаться для того, чтобы их читали люди» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Чистый код]] +- [[Совершенный код]] +- [[Рефакторинг кода на JavaScript]] diff --git a/Knowledges/Библиотека/Книги/Человеческий фактор. Успешные проекты и команды.md b/Knowledges/Библиотека/Книги/Человеческий фактор. Успешные проекты и команды.md new file mode 100644 index 0000000..f9d459b --- /dev/null +++ b/Knowledges/Библиотека/Книги/Человеческий фактор. Успешные проекты и команды.md @@ -0,0 +1,58 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Человеческий фактор. Успешные проекты и команды +Автор: + - Том Демарко + - Тимоти Листер +Количество страниц: 288 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/chelovecheskiy-faktor.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - управление_командой + - менеджмент + - разработка_по + - продуктивность + - командная_работа +Категории: + - Программирование + - Менеджмент +Источник: +Ссылка: +--- + +# Человеческий фактор. Успешные проекты и команды + +![[covers/chelovecheskiy-faktor.jpg]] + +## 📖 О книге + +Культовая книга Тома Демарко и Тимоти Листера о том, что главные проблемы разработки ПО имеют человеческую, а не техническую природу. Впервые опубликована в 1987 году, с тех пор стала обязательным чтением для менеджеров и тимлидов. Третье издание дополнено шестью новыми главами о дисфункциях руководства, современных рабочих процессах и природе эффективных совещаний. + +## 🧠 Ключевые идеи + +- **Главные проблемы — человеческие, не технические**: провалы проектов редко объясняются недостатком технологий — чаще причины в мотивации, коммуникации, культуре и условиях работы команды +- **Кристаллизация команды**: настоящие высокоэффективные команды формируются через общую историю и социальные связи, а не по организационной схеме; нельзя «назначить» сплочённую команду +- **Матричное подчинение разрушает продуктивность**: одновременное участие сотрудников в нескольких командах уничтожает командную идентичность и прерывает состояние потока, критичного для интеллектуального труда +- **Рабочая среда имеет значение**: шум, open space и постоянные прерывания — главные враги концентрации; инвестиции в комфортное рабочее пространство окупаются многократно +- **Нереалистичные сроки — антипаттерн**: давление дедлайнами не ускоряет работу, а накапливает технический долг и демотивирует команду; лучшие менеджеры защищают команду от внешнего давления + +## 💬 Важные цитаты + +- «Самый страшный грех руководителя — впустую тратить чужое время» +- «Сложнейшие проблемы разработки ПО имеют человеческую, а не техническую природу» +- «Одновременное вовлечение сотрудников в разные команды — верный способ остановить рост продуктивных команд» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Мифический человеко-месяц]] +- [[Идеальный программист]] +- [[Как пасти котов]] diff --git a/Knowledges/Библиотека/Книги/Эволюционная архитектура. Поддержка непрерывных изменений.md b/Knowledges/Библиотека/Книги/Эволюционная архитектура. Поддержка непрерывных изменений.md new file mode 100644 index 0000000..d77c41a --- /dev/null +++ b/Knowledges/Библиотека/Книги/Эволюционная архитектура. Поддержка непрерывных изменений.md @@ -0,0 +1,59 @@ +--- +Тип: Книга +Статус: Запланировано +Название: Эволюционная архитектура. Поддержка непрерывных изменений +Автор: + - Нил Форд + - Ребекка Парсонс + - Патрик Куа +Количество страниц: 272 +Прогресс: 0 +Формат: Электронная +Обложка: Библиотека/Книги/covers/evolyucionnaya-arhitektura.jpg +Начата: +Закончена: +Оценка: +Сложность: +Теги: + - архитектура + - эволюционная_архитектура + - fitness_function + - проектирование + - микросервисы +Категории: + - Программирование + - Проектирование систем +Источник: +Ссылка: +--- + +# Эволюционная архитектура. Поддержка непрерывных изменений + +![[covers/evolyucionnaya-arhitektura.jpg]] + +## 📖 О книге + +Нил Форд, Ребекка Парсонс и Патрик Куа предлагают подход к созданию архитектур, способных эволюционировать под влиянием непрерывных изменений. Центральная концепция — fitness functions (функции пригодности): автоматизированные проверки, защищающие ключевые характеристики системы на каждом этапе деплоя. Книга разбирает технические и организационные факторы, влияющие на эволюционируемость. Издательство «Питер», 2019, серия «Бестселлеры O'Reilly». + +## 🧠 Ключевые идеи + +- **Fitness Functions — защита архитектурных инвариантов**: автоматизированные функции пригодности встраиваются в CI/CD-пайплайн и проверяют, что важнейшие свойства системы (производительность, связность, безопасность) не деградируют при изменениях +- **Incremental change — эволюция малыми шагами**: архитектура должна позволять вносить изменения постепенно и независимо; монолитные деплои делают эволюцию слишком рискованной +- **Закон Конвея работает в обе стороны**: структура команд влияет на архитектуру — и наоборот; сознательное выравнивание организационных границ с архитектурными контекстами ускоряет эволюцию +- **Жертвенная архитектура (Sacrificial Architecture)**: иногда правильнее построить систему, зная, что её придётся выбросить — это позволяет быстро проверить гипотезы без груза «вечного» дизайна +- **Архитектурные антипаттерны**: «Resume-Driven Development» (выбор технологий ради CV), последний хороший архитектор, «Большое колесо грязи» — типичные ловушки, разобранные на реальных примерах + +## 💬 Важные цитаты + +- «Время цикла — критическая метрика эволюционной архитектуры: более быстрое время цикла подразумевает более быструю способность к эволюции» +- «Архитекторы задают инварианты в ключевых точках интеграции в виде фитнес-функций, которые запускаются в рамках пайплайна развёртывания» + +## 💡 Как применить в моих проектах + + +## 🔗 Связанные заметки + +- [[Фундаментальный подход к программной архитектуре]] +- [[Чистая архитектура]] +- [[Грокаем Continuous Delivery]] +- [[System Design. Пережить интервью]]