1. Фишки и конструкции языка
1.1. Виртуальные столбцы
2. Принципы
2.1. SOLID
2.1.1. Открытости-закрытости
2.1.2. Единственной обязаности
2.1.3. Разделение интерфейсов
2.1.4. Принцип Барбары Лисков
2.1.5. Инверсия зависимости
2.2. DRY (Don't repeat yourself)
2.3. KISS (Делай проще, не усложняй)
2.4. TDD
2.5. ООП
2.5.1. Инкапсуляция
2.5.2. Наследование
2.5.3. Полиморфизм
2.6. ABAC vs RBAC
2.7. Другие
2.7.1. Ограниченные контексты
2.7.2. Декомпозиция от большего к меньшему
2.7.3. Избегать преждевременной декомпозиции
2.8. ACID
3. Паттерны
3.1. Порождающие
3.1.1. Singlenton
3.1.2. Prototype
3.1.3. Factory Method
3.1.4. Builder
3.1.5. Abstract Factory
3.2. Структурирующие
3.2.1. Facade
3.2.2. Decorator
3.2.3. Composite
3.2.4. Bridge
3.2.5. Adapter
3.3. Поведенческие
3.3.1. Strategy
3.3.2. State
3.3.3. Observer
3.3.4. Memento (Хранитель)
3.3.5. Mediator
3.3.6. Command
3.3.7. Chain of Responsibility
3.3.8. Visitor
3.3.9. Template Method
4. HightLoad
4.1. Кластеризация
4.1.1. Load Balancing
4.1.2. Шардинг БД
4.1.2.1. MySQL > 5.7 поддерживает автоматический шардинг
4.1.2.2. PostgresQL поддерживает автоматический шардинг
4.1.2.3. При добавлении нового шарда, необходимо делать перебалансировку данных на уровне приложения
4.1.2.4. Выборка усложняется, нельзя сделать выборку по нескольким таблица. Можно ввести ElasticSearch для выборок данных
4.1.2.5. Вертикальный шардинг
4.1.2.6. Горизонтальный шардинг
4.1.3. Репликация
4.1.3.1. Rsync
4.1.3.2. Особая файловая система
4.1.3.3. ОС поддерживающая события на изменения файлов
4.1.4. Партиционирование таблиц БД
4.2. Брокеры очередей
4.2.1. Apache Kafka
4.2.2. RabbitMQ
4.3. Оптимизация
4.3.1. HipHop php
4.3.2. Оптимизация БД: индексы, партиционирование, оптимизация SQL, денормализация
4.4. Проблемы
4.4.1. Блокировка сессий
5. Linux
5.1. Сигналы
5.2. Команды CLI
5.3. Bash
5.4. Ngnix
5.4.1. Самый часто вызыввемемые хосты
5.5. Apache
5.5.1. mod_php
5.6. fpm-php
5.6.1. slowlog
5.7. VMware
5.8. Управление конфигурациями
5.8.1. Puppet
5.9. swaping
6. Деплой и CI
6.1. Jenkis
6.2. Docker
6.2.1. pupet
6.2.2. Chief
6.2.3. Docker SWAMP
6.2.4. Consul
6.2.5. Kubernetes
6.3. Amazon AWS
7. Технологии
8. Frontend
8.1. Тестирование
8.1.1. Cross Browser Testing Tool. 1000+ Browsers, Mobile, Real IE.
9. Алгоритмы
9.1. Поиска
9.1.1. Бинарный поиск
9.2. Динамического программирования
9.3. Графы
9.3.1. Поиск в ширину (не взвешеные)
9.3.2. Взвешеные и не взвешенные графы
9.3.3. Алгоритм Дейкстры (взвешеные графы)
9.4. Сортировка
9.4.1. Быстрая сортировка (быстрая константа)
9.4.2. Сортировка слиянием (медленная константа)
9.4.3. Сортировка выбором
9.5. Справка по сложности (скорости) алгоритмов
10. БД
10.1. SQL
10.1.1. MySQL
10.1.1.1. Движки
10.1.1.1.1. InnoDB
10.1.1.1.2. MySAM
10.1.1.2. Блокировки
10.1.1.2.1. Явные
10.1.1.2.2. Неявные
10.1.1.2.3. READ BLOCK
10.1.1.2.4. WRITE BLOCK
10.1.1.3. Оптимизация
10.1.1.3.1. EXPLAIN SELECT
10.1.1.3.2. Порядок индексов
10.1.1.3.3. Денормализация
10.1.1.3.4. Тюнинг настроек БД
10.1.1.3.5. Профилирование
10.1.1.3.6. Анализ логов
10.1.2. Индексы
10.1.2.1. Составные
10.1.2.1.1. Нужно составлять в правильном порядке (селективность), сначала те которые дают более узкий диапозон значений, а потом уже остальные
10.1.2.2. Кластерные
10.1.2.2.1. Бинарное дерево
10.1.2.2.2. Хранит значение поля
10.1.2.2.3. Более медленный т.к новые данные вставляются не в конец а в конкретный узел в дереве O(log n)
10.1.2.3. Некластерные
10.1.2.3.1. Бинарный поиск делением на два
10.1.2.3.2. Хранится как отсортированый список
10.1.3. Конструкции языка
10.1.3.1. Group BY
10.1.3.2. SELECT INTO
10.1.4. Триггеры
10.1.5. Хранимые процедуры
10.1.6. Функции
10.1.7. Виртуальные таблицы (Интерфейсы)
10.1.8. Номализация
10.1.9. PostgreSQL
10.1.9.1. PL/pgSQL
10.1.9.2. Книга-справочник
10.1.9.3. Индексы
10.1.9.4. MMCV
10.1.9.5. Параллелизация запросов на чтение и запись
10.1.9.6. Пулл подключений
10.2. NoSQL
10.2.1. ElasticSearch
10.2.2. MongoDB
10.2.3. Выборки с помощью MapReduce и клиенстких библиотек, которые предоставляют возможность выборки с группировкой, агрегацией и фильтрацией
10.3. BigData
10.3.1. MapReduce
10.3.1.1. Hadoop
10.3.1.2. Apache Spark
10.3.2. mahout
11. ЯП
11.1. PHP
11.1.1. Позднее статическое связывание
11.1.2. Traits
11.1.2.1. Решение конфликтов имен в методах трэйтов с помощью переопределения обоасти видимости в использующем классе или конструкции instedof в use, трейты не создают иерархию классов, класс используемый трейт не является членом этого класса
11.1.3. Frameworks&Labraries
11.1.3.1. Zend2
11.1.3.2. Symphony
11.1.3.3. Laravel
11.1.3.4. Yii
11.1.4. Документирование
11.1.4.1. PHPDoc
11.1.4.2. API : swagger, spotlight для написания документации в визуальном редакторе и выгрузки его yaml
11.1.5. Дебаг
11.1.5.1. Xdebug
11.1.5.2. Monolog
11.1.5.3. Sentry
11.1.6. PSR
11.1.7. Процесс интерпритации
11.1.8. Профилирование
11.1.8.1. xdebug
11.1.8.2. xhprof
11.1.8.3. tideways
11.1.9. Zend Engine
11.1.9.1. OpCodes (operation codes)
11.1.9.2. OpCache
11.1.9.2.1. eAccelerator
11.1.9.2.2. xCache
11.1.9.2.3. Zend Optimizator
11.1.10. PCNTL forks (Для многопоточности в php)
11.1.11. HIP-HOP php (трансляция php в C++)
11.1.12. Zval
11.1.13. Code Playground | SoloLearn: Learn to code for FREE!
11.1.14. SPL
11.1.14.1. Стандартная библиотека PHP, с версии 5.0 поставляется вместе с ядром, содержит много полезных интерфейсов и их готовых реализаций, для работы с разными струтурами данных (очереди, стэки, кучи) и другие классы
11.2. Общая теория
11.2.1. Структуры данных
11.2.1.1. Массив
11.2.1.1.1. Быстрый поиск O(log n)
11.2.1.1.2. Медленное удаление и вставка O(n)
11.2.1.2. Хэш-таблицы
11.2.1.2.1. Коллизии
11.2.1.2.2. Хэш-функция
11.2.1.2.3. Мнгновенное чтение, втавка и удаление O(1). Быстрые ребята, эти хэш таблицы
11.2.1.3. Связанные списки
11.2.1.3.1. Медленный поиск O(n)
11.2.1.3.2. Быстрое удаление и чвставка O(1)
11.2.1.4. Стэк
11.2.1.5. Очередь
11.2.1.6. Коллекция
11.2.1.7. Куча
11.2.1.8. Бинарное дерево
11.2.1.8.1. Красно-черные деревья O(log n)
11.2.1.8.2. Обычное бинарное дерево, в худ. случае - O(n) (дерево не сбалансировано и перекошено), в лучшем - O(log n)
11.2.2. Виды
11.2.2.1. Компилируемые
11.2.2.2. Интерпритируемые
11.2.2.3. Иперативные
11.2.2.4. Декларативные
11.2.3. Типизация
11.2.3.1. Статическая / динамическая
11.2.3.2. Строгая / нестрогая
11.2.3.3. Явная / неявная
12. Мониторинг
12.1. tcpdump
12.2. god
12.3. Zabbix
12.4. Nagios
12.5. Логгирование Sentry
12.6. nmon (ресурсы)
13. git
13.1. commands
13.1.1. Rebase
13.1.2. Merge
13.1.3. Cherry-pick
14. Тестирование
14.1. Unit
14.2. Функциональное
14.3. Автоматизация тестирования
15. Протоколы
15.1. Авторизации
15.1.1. OAuth2
15.1.2. JWT
15.1.3. Сессии
15.1.4. ABAC
15.1.4.1. XACML
15.2. Сетевые
15.2.1. WebRTCP
15.2.2. HTTP
15.2.3. UDP
15.2.4. TCP
15.2.5. RTP
15.2.6. SIP
15.3. SSH
15.4. FTP
15.5. CGI
15.5.1. Как работает
15.6. FastCGI
15.7. REST
15.7.1. swagger
15.7.2. Иммутабельность засчет версионирования
15.7.3. Документирование
15.7.3.1. RAML
15.7.3.2. API Docs
15.7.3.3. OAS