EXE (Windows Executable)
Структура:
• DOS Header: Первые 64 байта, служат для обратной совместимости с DOS. Содержит метку "MZ".
• PE Header: Заголовок Portable Executable, содержащий информацию о типе файла, секциях, размерах, точках входа и т. д.
• Секции:
• Import Table: Содержит список используемых внешних функций и библиотек.
Использование:
• EXE файлы запускаются через двойной щелчок или через командную строку Windows.
• Поддерживает графические интерфейсы и консольные приложения.
ELF (Executable and Linkable Format)
Структура:
• ELF Header: Содержит информацию о типе файла (исполняемый, объектный и т. д.), архитектуре, размере заголовка и других метаданных.
• Program Header Table: Описывает сегменты, которые будут загружены в память.
• Section Header Table: Описывает секции файла (например, .text, .data, .bss и другие).
• Секции:
Использование:
• ELF файлы запускаются через терминал в UNIX-подобных системах или через графические оболочки.
• Поддерживает динамическую линковку, позволяя использовать библиотеки во время выполнения.
Ключевые различия:
• EXE предназначен для Windows, ELF — для Linux и других UNIX-подобных систем.
• ELF более модульный и гибкий, поддерживает динамическую линковку и различные типы секций.
• ELF включает больше информации о типах данных и секциях, что упрощает работу компиляторов и отладчиков.
Структура:
• DOS Header: Первые 64 байта, служат для обратной совместимости с DOS. Содержит метку "MZ".
• PE Header: Заголовок Portable Executable, содержащий информацию о типе файла, секциях, размерах, точках входа и т. д.
• Секции:
.text: Код программы..data: Глобальные и статические переменные..rsrc: Ресурсы, такие как изображения и строки.• Import Table: Содержит список используемых внешних функций и библиотек.
Использование:
• EXE файлы запускаются через двойной щелчок или через командную строку Windows.
• Поддерживает графические интерфейсы и консольные приложения.
ELF (Executable and Linkable Format)
Структура:
• ELF Header: Содержит информацию о типе файла (исполняемый, объектный и т. д.), архитектуре, размере заголовка и других метаданных.
• Program Header Table: Описывает сегменты, которые будут загружены в память.
• Section Header Table: Описывает секции файла (например, .text, .data, .bss и другие).
• Секции:
.text: Код программы..data: Инициализированные данные..bss: Неинициализированные данные..dynamic: Динамическая информация для линковщиков.Использование:
• ELF файлы запускаются через терминал в UNIX-подобных системах или через графические оболочки.
• Поддерживает динамическую линковку, позволяя использовать библиотеки во время выполнения.
Ключевые различия:
• EXE предназначен для Windows, ELF — для Linux и других UNIX-подобных систем.
• ELF более модульный и гибкий, поддерживает динамическую линковку и различные типы секций.
• ELF включает больше информации о типах данных и секциях, что упрощает работу компиляторов и отладчиков.
Wi-Fi обычно работает на двух основных частотах: 2.4 ГГц и 5 ГГц.
• 2.4 ГГц
Преимущества: Лучшее покрытие и большая дальность действия.
Недостатки: Более загруженная частота, подвержена помехам от других устройств (например, микроволновок, беспроводных телефонов).
• 5 ГГц
Преимущества: Более высокая скорость передачи данных и меньшее количество помех.
Недостатки: Меньшее покрытие и более слабое проникновение через стены.
Соответственно, если нужна скорость, лучше выбрать 5 ГГц, а для большого покрытия — 2.4 ГГц.
• 2.4 ГГц
Преимущества: Лучшее покрытие и большая дальность действия.
Недостатки: Более загруженная частота, подвержена помехам от других устройств (например, микроволновок, беспроводных телефонов).
• 5 ГГц
Преимущества: Более высокая скорость передачи данных и меньшее количество помех.
Недостатки: Меньшее покрытие и более слабое проникновение через стены.
Соответственно, если нужна скорость, лучше выбрать 5 ГГц, а для большого покрытия — 2.4 ГГц.
Топологии сетей на реальных примерах
1. Звездообразная топология - все узлы сети подключены к одному центральному узлу. Примером может быть домашняя локальная сеть, где все устройства подключены к маршрутизатору.
2. Кольцевая топология - узлы сети соединены в кольцо, где данные передаются последовательно через каждое устройство. Примером может быть локальная сеть на базе технологии Token Ring.
3. Шина - это тип топологии, где все узлы сети подключены к одной основной кабельной линии. Примером может быть Ethernet сеть, где все компьютеры подключены к одному коммутатору через один кабель.
4. Древовидная топология - узлы сети организованы в иерархию, где некоторые узлы являются подчиненными другим. Примером может быть корпоративная сеть, где филиалы компании подключены к центральному офису.
5. Сеть с полной (полукольцевой) связностью - это тип топологии, где каждый узел сети имеет прямое подключение ко всем остальным узлам. Примером может быть машинный парк, где все компьютеры между собой связаны.
Сеть смешанной топологии - это тип топологии, который комбинирует два или более различных типа топологий. Примером может быть сеть компании, где отделы связаны по принципу шины или звезды, а филиалы - по принципу древовидной топологии.
1. Звездообразная топология - все узлы сети подключены к одному центральному узлу. Примером может быть домашняя локальная сеть, где все устройства подключены к маршрутизатору.
2. Кольцевая топология - узлы сети соединены в кольцо, где данные передаются последовательно через каждое устройство. Примером может быть локальная сеть на базе технологии Token Ring.
3. Шина - это тип топологии, где все узлы сети подключены к одной основной кабельной линии. Примером может быть Ethernet сеть, где все компьютеры подключены к одному коммутатору через один кабель.
4. Древовидная топология - узлы сети организованы в иерархию, где некоторые узлы являются подчиненными другим. Примером может быть корпоративная сеть, где филиалы компании подключены к центральному офису.
5. Сеть с полной (полукольцевой) связностью - это тип топологии, где каждый узел сети имеет прямое подключение ко всем остальным узлам. Примером может быть машинный парк, где все компьютеры между собой связаны.
Сеть смешанной топологии - это тип топологии, который комбинирует два или более различных типа топологий. Примером может быть сеть компании, где отделы связаны по принципу шины или звезды, а филиалы - по принципу древовидной топологии.
Задача о максимальном потоке в сети
Основная цель таких задач — определить максимальный поток, который можно транспортировать из источника (источник) в сток (пункт назначения) через сеть, состоящую из узлов и рёбер, имеющих ограниченные пропускные способности.
Основные понятия:
• Граф: Сеть представляется в виде направленного графа, где узлы — это точки, а рёбра — это связи между ними с заданными пропускными способностями.
• Поток: Это количество "ресурса" (например, воды, информации), передаваемого от источника к стоку через сеть.
• Пропускная способность: Максимальное количество потока, которое может проходить через ребро.
Основные алгоритмы:
• Алгоритм Форда-Фалкерсона: Базовый алгоритм, который использует метод увеличивающих путей. На каждой итерации ищется путь от источника к стоку, по которому можно увеличить поток.
• Алгоритм Эдмондса-Карпа: Это улучшенная версия алгоритма Форда-Фалкерсона, использующая поиск в ширину (BFS) для нахождения увеличивающих путей, что обеспечивает полиномиальную временную сложность.
• Алгоритм Линка: Использует метод "потока по потоку" и подходит для больших и сложных сетей.
Применение:
• Логистика: Оптимизация транспортировки товаров.
• Телекоммуникации: Управление пропускной способностью сетей.
• Электросети: Оптимизация распределения электроэнергии.
Основная цель таких задач — определить максимальный поток, который можно транспортировать из источника (источник) в сток (пункт назначения) через сеть, состоящую из узлов и рёбер, имеющих ограниченные пропускные способности.
Основные понятия:
• Граф: Сеть представляется в виде направленного графа, где узлы — это точки, а рёбра — это связи между ними с заданными пропускными способностями.
• Поток: Это количество "ресурса" (например, воды, информации), передаваемого от источника к стоку через сеть.
• Пропускная способность: Максимальное количество потока, которое может проходить через ребро.
Основные алгоритмы:
• Алгоритм Форда-Фалкерсона: Базовый алгоритм, который использует метод увеличивающих путей. На каждой итерации ищется путь от источника к стоку, по которому можно увеличить поток.
• Алгоритм Эдмондса-Карпа: Это улучшенная версия алгоритма Форда-Фалкерсона, использующая поиск в ширину (BFS) для нахождения увеличивающих путей, что обеспечивает полиномиальную временную сложность.
• Алгоритм Линка: Использует метод "потока по потоку" и подходит для больших и сложных сетей.
Применение:
• Логистика: Оптимизация транспортировки товаров.
• Телекоммуникации: Управление пропускной способностью сетей.
• Электросети: Оптимизация распределения электроэнергии.
Пример задачи:
Предположим, у вас есть сеть с 4 узлами: A (источник), B, C и D (сток). Рёбра между узлами имеют следующие пропускные способности:
A → B: 3
A → C: 2
B → D: 2
C → D: 3
Необходимо определить максимальный поток из A в D.
Решение может быть найдено с использованием одного из алгоритмов, например, алгоритма Эдмондса-Карпа.
Делегирование домена
Делегированием домена — передача корневым сервером зоны права размещения домена на определенном
Для примера, корневые сервера делегируют зону
Само делегирование означает, что на корневом сервере для домена присутствуют записи
Делегирование предполагает наличие только записей IN NS и никаких других. Поэтому домену второго уровня нельзя прописать, к примеру, запись
Делегированием домена — передача корневым сервером зоны права размещения домена на определенном
NS-сервере. Для примера, корневые сервера делегируют зону
.COM на серверы, которые будут за нее отвечать, а серверы зоны .COM делегируют домен MYDOMAIN.COM на NS-сервера хостинг-провайдера или на какие-либо другие. Само делегирование означает, что на корневом сервере для домена присутствуют записи
IN NS, указывающие на NS-сервер, на котором размещена информация по домену. Делегирование предполагает наличие только записей IN NS и никаких других. Поэтому домену второго уровня нельзя прописать, к примеру, запись
CNAME.Наиболее распространенные типы баз данных:
1. Реляционные базы данных: это самый распространенный тип баз данных, основанный на модели реляционной алгебры. Данные организованы в виде таблиц с рядами и столбцами, а связи между таблицами задаются с использованием ключевых полей.
2. Иерархические базы данных: данные в таких базах организованы в виде древовидной структуры, где каждая запись имеет только одного родителя и может иметь несколько дочерних элементов.
3. Сетевые базы данных: данные в них организованы в виде графа, где каждая запись может иметь несколько родителей и дочерних элементов.
4. Объектно-ориентированные базы данных: позволяют хранить объекты и их свойства, а также взаимосвязи и наследование между объектами.
5. XML базы данных: хранят данные в формате XML, что упрощает работу с структурированными данными.
6. NoSQL базы данных: этот тип баз данных не использует классическую модель таблиц и SQL для работы с данными. Вместо этого, данные хранятся в гибких и масштабируемых структурах. Некоторые подтипы NoSQL баз данных включают документоориентированные, столбцовые, графовые и ключ-значение базы данных.
7. Распределенные базы данных: данные в таких базах разделены на несколько физических узлов или серверов, что позволяет распределить нагрузку и обеспечить высокую доступность.
8. Ин-мемори базы данных: данные хранятся и обрабатываются в оперативной памяти компьютера, что позволяет получить высокую скорость доступа и обработки данных.
1. Реляционные базы данных: это самый распространенный тип баз данных, основанный на модели реляционной алгебры. Данные организованы в виде таблиц с рядами и столбцами, а связи между таблицами задаются с использованием ключевых полей.
2. Иерархические базы данных: данные в таких базах организованы в виде древовидной структуры, где каждая запись имеет только одного родителя и может иметь несколько дочерних элементов.
3. Сетевые базы данных: данные в них организованы в виде графа, где каждая запись может иметь несколько родителей и дочерних элементов.
4. Объектно-ориентированные базы данных: позволяют хранить объекты и их свойства, а также взаимосвязи и наследование между объектами.
5. XML базы данных: хранят данные в формате XML, что упрощает работу с структурированными данными.
6. NoSQL базы данных: этот тип баз данных не использует классическую модель таблиц и SQL для работы с данными. Вместо этого, данные хранятся в гибких и масштабируемых структурах. Некоторые подтипы NoSQL баз данных включают документоориентированные, столбцовые, графовые и ключ-значение базы данных.
7. Распределенные базы данных: данные в таких базах разделены на несколько физических узлов или серверов, что позволяет распределить нагрузку и обеспечить высокую доступность.
8. Ин-мемори базы данных: данные хранятся и обрабатываются в оперативной памяти компьютера, что позволяет получить высокую скорость доступа и обработки данных.
Принципы работы кеша:
Принцип локальности: Если данные были запрошены один раз, есть высокая вероятность, что они будут запрошены снова в ближайшем будущем. Поэтому кеш сохраняет эти данные для быстрого доступа.
Иерархическая структура: Кеш организуется в иерархической структуре с несколькими уровнями. Более высокий уровень находится ближе к процессору и обладает более быстрым доступом, но меньшей емкостью.
Замена данных: Когда кеш заполняется, требуется освободить место для новых данных. Алгоритмы замены определяют, какие данные вытеснить для освобождения места.
Когерентность: Кеш-память может быть использована несколькими компонентами одновременно. Протоколы когерентности гарантируют согласованность данных, синхронизируя их между кешами.
Принцип локальности: Если данные были запрошены один раз, есть высокая вероятность, что они будут запрошены снова в ближайшем будущем. Поэтому кеш сохраняет эти данные для быстрого доступа.
Иерархическая структура: Кеш организуется в иерархической структуре с несколькими уровнями. Более высокий уровень находится ближе к процессору и обладает более быстрым доступом, но меньшей емкостью.
Замена данных: Когда кеш заполняется, требуется освободить место для новых данных. Алгоритмы замены определяют, какие данные вытеснить для освобождения места.
Когерентность: Кеш-память может быть использована несколькими компонентами одновременно. Протоколы когерентности гарантируют согласованность данных, синхронизируя их между кешами.
Существует несколько типов SSL-сертификатов, которые различаются по уровню проверки, количеству защищаемых доменов и назначению. Подробная классификация:
1. По уровню проверки (Validation Level)
• DV (Domain Validation)
- Проверка: только право владения доменом (через e-mail, DNS-запись или файл на сервере).
- Срок выпуска: несколько минут.
- Назначение: для блогов, личных сайтов, тестовых проектов.
- Пример:
- В адресной строке: только замок (без названия организации).
Плюсы: быстро, дешево.
Минусы: минимальная доверенность (проверяется только домен).
• OV (Organization Validation)
- Проверка: владелец домена и организация (через официальные документы).
- Срок выпуска: 1–3 дня.
- Назначение: корпоративные сайты, интернет-магазины.
- В адресной строке: замок + информация о компании в сертификате.
Плюсы: повышенное доверие.
Минусы: дольше оформление, дороже.
• EV (Extended Validation)
- Проверка: самая строгая — юридический статус, адрес, контактные данные.
- Срок выпуска: 3–7 дней.
- Назначение: банки, крупные компании, госорганы.
- В адресной строке: раньше показывало название компании рядом с замком (в современных браузерах убрали, но в сертификате данные остаются).
Плюсы: максимальное доверие.
Минусы: дорогой и долго оформляется.
2. По количеству защищаемых доменов
• Single Domain SSL
- Защищает только один домен, например:
→
(иногда вместе с
• Wildcard SSL
- Защищает домен и все его поддомены.
→
(включая
Плюсы: удобно и экономно при множестве поддоменов.
Минусы: не защищает другие домены.
• Multi-Domain (SAN / UCC SSL)
- Защищает несколько разных доменов в одном сертификате.
→
Плюсы: удобно для компаний с несколькими сайтами.
Минусы: дороже, сложнее управлять.
3. По назначению
• Code Signing SSL — для подписания программного кода (а не сайтов).
• Email (S/MIME) — для шифрования и подписи электронной почты.
• Client Authentication — для идентификации пользователей при входе в систему.
• Document Signing — для электронной подписи документов.
1. По уровню проверки (Validation Level)
• DV (Domain Validation)
- Проверка: только право владения доменом (через e-mail, DNS-запись или файл на сервере).
- Срок выпуска: несколько минут.
- Назначение: для блогов, личных сайтов, тестовых проектов.
- Пример:
https://myblog.com- В адресной строке: только замок (без названия организации).
Плюсы: быстро, дешево.
Минусы: минимальная доверенность (проверяется только домен).
• OV (Organization Validation)
- Проверка: владелец домена и организация (через официальные документы).
- Срок выпуска: 1–3 дня.
- Назначение: корпоративные сайты, интернет-магазины.
- В адресной строке: замок + информация о компании в сертификате.
Плюсы: повышенное доверие.
Минусы: дольше оформление, дороже.
• EV (Extended Validation)
- Проверка: самая строгая — юридический статус, адрес, контактные данные.
- Срок выпуска: 3–7 дней.
- Назначение: банки, крупные компании, госорганы.
- В адресной строке: раньше показывало название компании рядом с замком (в современных браузерах убрали, но в сертификате данные остаются).
Плюсы: максимальное доверие.
Минусы: дорогой и долго оформляется.
2. По количеству защищаемых доменов
• Single Domain SSL
- Защищает только один домен, например:
→
example.com(иногда вместе с
www.example.com)• Wildcard SSL
- Защищает домен и все его поддомены.
→
*.example.com(включая
mail.example.com, shop.example.com, и т.д.)Плюсы: удобно и экономно при множестве поддоменов.
Минусы: не защищает другие домены.
• Multi-Domain (SAN / UCC SSL)
- Защищает несколько разных доменов в одном сертификате.
→
example.com, example.net, myshop.orgПлюсы: удобно для компаний с несколькими сайтами.
Минусы: дороже, сложнее управлять.
3. По назначению
• Code Signing SSL — для подписания программного кода (а не сайтов).
• Email (S/MIME) — для шифрования и подписи электронной почты.
• Client Authentication — для идентификации пользователей при входе в систему.
• Document Signing — для электронной подписи документов.
Сравнение файловых систем
Файловая система - это метод организации и хранения данных на запоминающем устройстве. Существует множество различных файловых систем, каждая со своими преимуществами и недостатками.
Основные типы файловых систем:
• FAT (File Allocation Table) - простая и распространенная файловая система, используемая в ранних версиях Windows и на съемных носителях.
• NTFS (New Technology File System) - более современная файловая система, используемая в современных версиях Windows. Поддерживает большие файлы и тома, а также расширенные атрибуты и безопасность.
• ext4 - файловая система, используемая в Linux. Известна своей надежностью, производительностью и поддержкой больших файлов.
• XFS - еще одна файловая система, используемая в Linux. Оптимизирована для больших файлов и высокой производительности.
• ZFS - файловая система с открытым исходным кодом, известная своей надежностью, поддержкой больших объемов данных и расширенными функциями управления данными.
Выбор файловой системы:
- Для съемных носителей (например, USB-накопителей) подойдет FAT.
- Для настольных компьютеров и ноутбуков с Windows рекомендуется использовать NTFS.
- Для серверов и рабочих станций Linux с большими объемами данных подойдут ext4 или XFS.
- Для приложений, требующих высокой надежности и расширенных функций управления данными, рекомендуется использовать ZFS.
Файловая система - это метод организации и хранения данных на запоминающем устройстве. Существует множество различных файловых систем, каждая со своими преимуществами и недостатками.
Основные типы файловых систем:
• FAT (File Allocation Table) - простая и распространенная файловая система, используемая в ранних версиях Windows и на съемных носителях.
• NTFS (New Technology File System) - более современная файловая система, используемая в современных версиях Windows. Поддерживает большие файлы и тома, а также расширенные атрибуты и безопасность.
• ext4 - файловая система, используемая в Linux. Известна своей надежностью, производительностью и поддержкой больших файлов.
• XFS - еще одна файловая система, используемая в Linux. Оптимизирована для больших файлов и высокой производительности.
• ZFS - файловая система с открытым исходным кодом, известная своей надежностью, поддержкой больших объемов данных и расширенными функциями управления данными.
Выбор файловой системы:
- Для съемных носителей (например, USB-накопителей) подойдет FAT.
- Для настольных компьютеров и ноутбуков с Windows рекомендуется использовать NTFS.
- Для серверов и рабочих станций Linux с большими объемами данных подойдут ext4 или XFS.
- Для приложений, требующих высокой надежности и расширенных функций управления данными, рекомендуется использовать ZFS.
DevSecOps — интеграция практик безопасности в процесс разработки программного обеспечения и операционных процессов, который часто используется в рамках подхода DevOps. Термин состоит из трех частей:
Dev — разработка (Development)
Sec — безопасность (Security)
Ops — операционные процессы (Operations)
Основные принципы DevSecOps:
• Интеграция безопасности с самого начала: Вместо того чтобы "добавлять" безопасность в конце процесса разработки, её рассматривают как неотъемлемую часть всего жизненного цикла разработки.
• Автоматизация процессов безопасности: Использование инструментов для автоматического тестирования и проверки кода на наличие уязвимостей.
• Обратная связь в реальном времени: Разработчики получают уведомления о потенциальных проблемах безопасности во время написания и тестирования кода, что позволяет быстро их устранять.
• Совместная работа команд: DevSecOps способствует тесному взаимодействию между командами разработчиков, специалистов по безопасности и операционными командами для обеспечения качественного и безопасного ПО.
• Постоянная защита и мониторинг: Мониторинг безопасности осуществляется на всех этапах разработки и эксплуатации.
Dev — разработка (Development)
Sec — безопасность (Security)
Ops — операционные процессы (Operations)
Идея DevSecOps заключается в том, чтобы обеспечивать безопасность на всех этапах разработки и эксплуатации ПО, а не только в конце, когда продукт уже готов. Это подход, который встраивает процессы безопасности в непрерывную интеграцию (CI), непрерывное развертывание (CD) и управление инфраструктурой.
Основные принципы DevSecOps:
• Интеграция безопасности с самого начала: Вместо того чтобы "добавлять" безопасность в конце процесса разработки, её рассматривают как неотъемлемую часть всего жизненного цикла разработки.
• Автоматизация процессов безопасности: Использование инструментов для автоматического тестирования и проверки кода на наличие уязвимостей.
• Обратная связь в реальном времени: Разработчики получают уведомления о потенциальных проблемах безопасности во время написания и тестирования кода, что позволяет быстро их устранять.
• Совместная работа команд: DevSecOps способствует тесному взаимодействию между командами разработчиков, специалистов по безопасности и операционными командами для обеспечения качественного и безопасного ПО.
• Постоянная защита и мониторинг: Мониторинг безопасности осуществляется на всех этапах разработки и эксплуатации.
x86
• Происхождение: Разработана Intel в конце 1970-х годов.
• Особенности:
- CISC (Complex Instruction Set Computing) архитектура, что означает наличие большого набора сложных инструкций.
- Широко используется в настольных компьютерах, ноутбуках и серверах.
- Обеспечивает высокую производительность и совместимость с большим количеством программного обеспечения.
• Производители: Intel, AMD.
ARM
• Происхождение: Разработана компанией ARM Holdings в 1980-х годах.
• Особенности:
- RISC (Reduced Instruction Set Computing) архитектура, что предполагает упрощенный набор инструкций для повышения эффективности.
- Энергоэффективность, что делает её популярной в мобильных устройствах, таких как смартфоны и планшеты.
- Лицензируется другим компаниям, что позволяет широкое разнообразие реализаций.
• Производители: Qualcomm, Apple, Samsung и другие.
RISC-V
• Происхождение: Разработана в Калифорнийском университете в Беркли в 2010-х годах.
• Особенности:
- Открытая и свободная RISC архитектура, что позволяет любому использовать и модифицировать её без лицензионных отчислений.
- Высокая гибкость и возможность настройки под конкретные задачи.
- Быстро набирает популярность в научных и промышленных кругах благодаря своей открытости.
• Производители: SiFive, Western Digital и другие.
• Происхождение: Разработана Intel в конце 1970-х годов.
• Особенности:
- CISC (Complex Instruction Set Computing) архитектура, что означает наличие большого набора сложных инструкций.
- Широко используется в настольных компьютерах, ноутбуках и серверах.
- Обеспечивает высокую производительность и совместимость с большим количеством программного обеспечения.
• Производители: Intel, AMD.
ARM
• Происхождение: Разработана компанией ARM Holdings в 1980-х годах.
• Особенности:
- RISC (Reduced Instruction Set Computing) архитектура, что предполагает упрощенный набор инструкций для повышения эффективности.
- Энергоэффективность, что делает её популярной в мобильных устройствах, таких как смартфоны и планшеты.
- Лицензируется другим компаниям, что позволяет широкое разнообразие реализаций.
• Производители: Qualcomm, Apple, Samsung и другие.
RISC-V
• Происхождение: Разработана в Калифорнийском университете в Беркли в 2010-х годах.
• Особенности:
- Открытая и свободная RISC архитектура, что позволяет любому использовать и модифицировать её без лицензионных отчислений.
- Высокая гибкость и возможность настройки под конкретные задачи.
- Быстро набирает популярность в научных и промышленных кругах благодаря своей открытости.
• Производители: SiFive, Western Digital и другие.
Помимо x86, ARM и RISC-V, существуют и другие архитектуры процессоров, каждая из которых имеет свои особенности и области применения:
MIPS
• Происхождение: Разработана в 1980-х годах в Стэнфордском университете.
• Особенности:
- RISC-архитектура.
- Используется в встраиваемых системах и сетевом оборудовании.
• Применение: Роутеры, игровые консоли.
PowerPC
• Происхождение: Разработана совместно IBM, Apple и Motorola в 1990-х годах.
• Особенности:
- RISC-архитектура.
- Использовалась в компьютерах Apple до перехода на Intel.
• Применение: Серверы, встраиваемые системы.
SPARC
• Происхождение: Разработана Sun Microsystems в 1980-х годах.
• Особенности:
- RISC-архитектура.
- Используется в серверах и высокопроизводительных вычислениях.
• Применение: Серверы, рабочие станции.
Itanium
• Происхождение: Разработана Intel и Hewlett-Packard.
• Особенности:
- Архитектура IA-64.
- Предназначена для серверов и рабочих станций.
• Применение: Высокопроизводительные серверы (хотя сейчас менее популярна).
Z/Architecture
• Происхождение: Разработана IBM.
• Особенности:
- Используется в мейнфреймах.
- Поддерживает высокую надежность и масштабируемость.
• Применение: Банковские системы, крупные корпоративные сети.
MIPS
• Происхождение: Разработана в 1980-х годах в Стэнфордском университете.
• Особенности:
- RISC-архитектура.
- Используется в встраиваемых системах и сетевом оборудовании.
• Применение: Роутеры, игровые консоли.
PowerPC
• Происхождение: Разработана совместно IBM, Apple и Motorola в 1990-х годах.
• Особенности:
- RISC-архитектура.
- Использовалась в компьютерах Apple до перехода на Intel.
• Применение: Серверы, встраиваемые системы.
SPARC
• Происхождение: Разработана Sun Microsystems в 1980-х годах.
• Особенности:
- RISC-архитектура.
- Используется в серверах и высокопроизводительных вычислениях.
• Применение: Серверы, рабочие станции.
Itanium
• Происхождение: Разработана Intel и Hewlett-Packard.
• Особенности:
- Архитектура IA-64.
- Предназначена для серверов и рабочих станций.
• Применение: Высокопроизводительные серверы (хотя сейчас менее популярна).
Z/Architecture
• Происхождение: Разработана IBM.
• Особенности:
- Используется в мейнфреймах.
- Поддерживает высокую надежность и масштабируемость.
• Применение: Банковские системы, крупные корпоративные сети.
Если вы работаете с Qt на C++, вы наверняка видели файлы с расширением
Что такое .ui файл?
.ui — файл интерфейса пользователя, создаваемый в Qt Designer.
Он описывает все виджеты (кнопки, поля ввода, метки, окна), их свойства и макеты в формате XML.
Пример содержимого .ui файла:
Зачем нужен uic?
uic (User Interface Compiler) — это утилита, которая компилирует
Пример команды:
После этого вы получаете класс
Как использовать с C++
Подключаем сгенерированный заголовочный файл:
Всё! Теперь у вас есть полностью рабочий GUI на C++.
.uiЧто такое .ui файл?
.ui — файл интерфейса пользователя, создаваемый в Qt Designer.
Он описывает все виджеты (кнопки, поля ввода, метки, окна), их свойства и макеты в формате XML.
Пример содержимого .ui файла:
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Нажми меня</string>
</property>
</widget>
</widget>
</ui>
Зачем нужен uic?
uic (User Interface Compiler) — это утилита, которая компилирует
.ui файл в C++ заголовочный файл, обычно с именем ui_<имя_формы>.h.Пример команды:
uic mainwindow.ui -o ui_mainwindow.hПосле этого вы получаете класс
Ui::MainWindow, который содержит все виджеты и методы для их инициализации.Как использовать с C++
Подключаем сгенерированный заголовочный файл:
#include "ui_mainwindow.h"
#include <QMainWindow>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
ui.setupUi(this); // Настраивает интерфейс
}
private:
Ui::MainWindow ui;
};
Всё! Теперь у вас есть полностью рабочий GUI на C++.
Автоматическая компиляция
В больших проектах запускать uic вручную неудобно. Обычно это делается автоматически:
• CMake:
• qmake:
Таким образом, при сборке проекта uic сгенерирует все нужные заголовочные файлы без вашего вмешательства.
.ui файловВ больших проектах запускать uic вручную неудобно. Обычно это делается автоматически:
• CMake:
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON) # Автоматически компилирует .ui файлы
find_package(Qt5 COMPONENTS Widgets REQUIRED)
add_executable(MyApp main.cpp)
target_link_libraries(MyApp Qt5::Widgets)• qmake:
.pro файл автоматически обрабатывает все .ui файлы.Таким образом, при сборке проекта uic сгенерирует все нужные заголовочные файлы без вашего вмешательства.
Популярные системы сборки — коротко и по существу
C / C++
• Make — дед всех сборщиков. Просто, но больно на больших проектах.
• CMake — стандарт для C++, генерирует подо всё, от Visual Studio до Ninja. Настроил один раз — и забыл.
• Ninja — летает. Минимализм и скорость, но без генератора не обойтись.
• Meson — современный и понятный. Пишешь конфиг, а остальное делает сам.
Java / Kotlin
• Maven — строгий, надёжный, как бухгалтер. XML, но зато стабильно.
• Gradle — гибкий и умный. Kotlin DSL, кэш, плагины — идеально для Android.
• Ant — старичок. Всё вручную, без зависимостей. Только если проект с археологических времён.
JavaScript / TypeScript
• npm scripts — минимализм. Для мелких задач — норм, для монстров — нет.
• Webpack — тяжёлый, но делает всё. Настроить — целое приключение.
• Vite — быстрый, лёгкий, без боли. Для фронтенда XXI века.
• Rollup — идеален для библиотек, чистая сборка без мусора.
• esbuild / Parcel — “включил и поехал”. Молниеносные и почти без настроек.
Python
• setuptools — классика. Работает, но старомодно.
• Poetry — современный подход: зависимости, сборка, публикация — всё в одном.
Rust
• Cargo — лучший пример, как должна выглядеть система сборки. Просто, быстро, всё встроено.
Go
• go build — минимализм в чистом виде. Один файл — одна команда — готово.
Кросс-языковые
• Bazel — для монореп и гигантов вроде Google. Кэш, параллель, масштаб.
• Buck / Pants / Please — те же идеи, другие акценты. Подходят, если у тебя тысяча микросервисов.
C / C++
• Make — дед всех сборщиков. Просто, но больно на больших проектах.
• CMake — стандарт для C++, генерирует подо всё, от Visual Studio до Ninja. Настроил один раз — и забыл.
• Ninja — летает. Минимализм и скорость, но без генератора не обойтись.
• Meson — современный и понятный. Пишешь конфиг, а остальное делает сам.
Java / Kotlin
• Maven — строгий, надёжный, как бухгалтер. XML, но зато стабильно.
• Gradle — гибкий и умный. Kotlin DSL, кэш, плагины — идеально для Android.
• Ant — старичок. Всё вручную, без зависимостей. Только если проект с археологических времён.
JavaScript / TypeScript
• npm scripts — минимализм. Для мелких задач — норм, для монстров — нет.
• Webpack — тяжёлый, но делает всё. Настроить — целое приключение.
• Vite — быстрый, лёгкий, без боли. Для фронтенда XXI века.
• Rollup — идеален для библиотек, чистая сборка без мусора.
• esbuild / Parcel — “включил и поехал”. Молниеносные и почти без настроек.
Python
• setuptools — классика. Работает, но старомодно.
• Poetry — современный подход: зависимости, сборка, публикация — всё в одном.
Rust
• Cargo — лучший пример, как должна выглядеть система сборки. Просто, быстро, всё встроено.
Go
• go build — минимализм в чистом виде. Один файл — одна команда — готово.
Кросс-языковые
• Bazel — для монореп и гигантов вроде Google. Кэш, параллель, масштаб.
• Buck / Pants / Please — те же идеи, другие акценты. Подходят, если у тебя тысяча микросервисов.
Кодеки — это устройства или программы, которые сжимают и распаковывают мультимедийные данные, такие как аудио и видео. Название «кодек» происходит от слов coder-decoder — «кодер-декодер».
Вот как они работают:
1. Сжатие (кодирование)
Когда вы записываете видео или аудио, исходные данные занимают очень много места. Например, одна минута видео в высоком разрешении без сжатия может занимать гигабайты.
Кодек уменьшает размер файла двумя основными способами:
a) Потеря информации (lossy)
• Примеры: MP3 (аудио), H.264 (видео), AAC (аудио)
• Убираются «неважные» детали, которые человеческое ухо или глаз практически не замечает.
• Преимущество: файлы маленькие
• Недостаток: при многократной перезаписи качество теряется
b) Без потерь (lossless)
• Примеры: FLAC (аудио), PNG (изображения), FFV1 (видео)
• Сжимается файл без потери качества, полностью можно восстановить оригинал
• Преимущество: качество 100%
• Недостаток: сжатие не такое сильное, как у lossy
2. Хранение
После сжатия данные сохраняются в файле или потоке, например
Файл содержит кодированные данные и иногда дополнительную информацию (метаданные, субтитры, обложки и т.д.).
3. Воспроизведение (декодирование)
Когда вы воспроизводите файл, кодек раскодирует его обратно в форму, которую может обработать динамик или экран:
• Кодек читает сжатые данные
• Преобразует их в поток аудио/видео
• Отправляет на устройство вывода
Если кодек не установлен, файл не откроется, потому что система не знает, как интерпретировать данные.
4. Примеры популярных кодеков
Видео: H.264, H.265 (HEVC), VP9, AV1
Аудио: MP3, AAC, Opus, FLAC
Вот как они работают:
1. Сжатие (кодирование)
Когда вы записываете видео или аудио, исходные данные занимают очень много места. Например, одна минута видео в высоком разрешении без сжатия может занимать гигабайты.
Кодек уменьшает размер файла двумя основными способами:
a) Потеря информации (lossy)
• Примеры: MP3 (аудио), H.264 (видео), AAC (аудио)
• Убираются «неважные» детали, которые человеческое ухо или глаз практически не замечает.
• Преимущество: файлы маленькие
• Недостаток: при многократной перезаписи качество теряется
b) Без потерь (lossless)
• Примеры: FLAC (аудио), PNG (изображения), FFV1 (видео)
• Сжимается файл без потери качества, полностью можно восстановить оригинал
• Преимущество: качество 100%
• Недостаток: сжатие не такое сильное, как у lossy
2. Хранение
После сжатия данные сохраняются в файле или потоке, например
.mp3, .mp4, .mkv.Файл содержит кодированные данные и иногда дополнительную информацию (метаданные, субтитры, обложки и т.д.).
3. Воспроизведение (декодирование)
Когда вы воспроизводите файл, кодек раскодирует его обратно в форму, которую может обработать динамик или экран:
• Кодек читает сжатые данные
• Преобразует их в поток аудио/видео
• Отправляет на устройство вывода
Если кодек не установлен, файл не откроется, потому что система не знает, как интерпретировать данные.
4. Примеры популярных кодеков
Видео: H.264, H.265 (HEVC), VP9, AV1
Аудио: MP3, AAC, Opus, FLAC
Сигналы прерывания в зависимости от источника возникновения делятся на два основных типа:
1. Внутренние (или программные, синхронные) прерывания — возникают внутри процессора в результате выполнения инструкций программы.
Примеры:
• Деление на ноль;
• Ошибка страницы (page fault);
• Выполнение специальной инструкции программного прерывания (например, INT в x86);
• Переполнение арифметической операции.
2. Внешние (или аппаратные, асинхронные) прерывания — возникают вне процессора, от внешних устройств или по внешним сигналам.
Примеры:
• Сигнал от таймера;
• Сигнал от клавиатуры, мыши, сетевого адаптера и других периферийных устройств;
• Аппаратный сброс.
Иногда внешние прерывания дополнительно подразделяют на:
• Маскируемые — могут быть временно запрещены программно (например, с помощью флага разрешения прерываний).
• Немаскируемые (NMI — Non-Maskable Interrupts) — всегда обрабатываются, даже если остальные прерывания запрещены (обычно для сигналов аварийных состояний).
1. Внутренние (или программные, синхронные) прерывания — возникают внутри процессора в результате выполнения инструкций программы.
Примеры:
• Деление на ноль;
• Ошибка страницы (page fault);
• Выполнение специальной инструкции программного прерывания (например, INT в x86);
• Переполнение арифметической операции.
2. Внешние (или аппаратные, асинхронные) прерывания — возникают вне процессора, от внешних устройств или по внешним сигналам.
Примеры:
• Сигнал от таймера;
• Сигнал от клавиатуры, мыши, сетевого адаптера и других периферийных устройств;
• Аппаратный сброс.
Иногда внешние прерывания дополнительно подразделяют на:
• Маскируемые — могут быть временно запрещены программно (например, с помощью флага разрешения прерываний).
• Немаскируемые (NMI — Non-Maskable Interrupts) — всегда обрабатываются, даже если остальные прерывания запрещены (обычно для сигналов аварийных состояний).
Web scraping
Скрапинг — стандартная процедура для сбора необходимой информации. Для этих целей применяется специализированное программное обеспечение.
С помощью веб-скрейпинга информация собирается в автоматическом режиме по заданным параметрам, структурируется и записывается в файл для дальнейшего анализа.
Такой метод подходит для сбора статистики, стоимости различных офферов, получения данных о товарах в каталогах.
Скрапинг — стандартная процедура для сбора необходимой информации. Для этих целей применяется специализированное программное обеспечение.
С помощью веб-скрейпинга информация собирается в автоматическом режиме по заданным параметрам, структурируется и записывается в файл для дальнейшего анализа.
Такой метод подходит для сбора статистики, стоимости различных офферов, получения данных о товарах в каталогах.
Законно ли это? Если боитесь собирать данные с сайтов, то лучше не стоит, но все, что находится в открытом доступе, можно собирать.
⁉️Машинное обучение кажется чем-то сложным и недосягаемым? Всё проще, чем вы думаете!
Первый шаг — разобраться, как устроен ML-процесс и научиться работать в Jupyter Notebook — инструменте, с которого начинают все специалисты в Data Science.
На открытом уроке вы шаг за шагом поймёте, как строится путь от данных до модели. Научитесь запускать эксперименты в Jupyter Notebook и Google Colab, работать с виртуальными окружениями и не бояться “сломать” систему. Всё — в формате простых и наглядных примеров.
После урока вы сможете уверенно начать свой первый ML-проект и поймёте, какие инструменты нужны, чтобы перейти от теории к практике.
➡️ 13 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь и сделайте первый шаг в машинное обучение без страха и путаницы: https://otus.pw/KGVQ/
Первый шаг — разобраться, как устроен ML-процесс и научиться работать в Jupyter Notebook — инструменте, с которого начинают все специалисты в Data Science.
На открытом уроке вы шаг за шагом поймёте, как строится путь от данных до модели. Научитесь запускать эксперименты в Jupyter Notebook и Google Colab, работать с виртуальными окружениями и не бояться “сломать” систему. Всё — в формате простых и наглядных примеров.
После урока вы сможете уверенно начать свой первый ML-проект и поймёте, какие инструменты нужны, чтобы перейти от теории к практике.
➡️ 13 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь и сделайте первый шаг в машинное обучение без страха и путаницы: https://otus.pw/KGVQ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Видеокарта (или GPU — Graphics Processing Unit) устройство, которое обрабатывает графические данные для отображения изображений на экране. Она ускоряет задачи, связанные с графикой, такими как игры, видеоредактирование, 3D-моделирование и машинное обучение. Основная задача — преобразовывать данные в визуальные пиксели, которые монитор может показать.
Основные компоненты видеокарты
Видеокарта состоит из нескольких ключевых частей, работающих вместе:
• GPU (графический процессор): Основной "мозг". Это множество ядер (сотни или тысячи), оптимизированных для параллельных вычислений. В отличие от CPU (центрального процессора), GPU лучше справляется с повторяющимися задачами, как обработка пикселей.
• Видеопамять (VRAM): Специальная память (например, GDDR6 или HBM) для хранения текстур, моделей и промежуточных данных. Она быстрая и работает независимо от оперативной памяти компьютера.
• Шина данных (PCIe): Связь с материнской платой и CPU. Через неё передаются команды и данные.
• Контроллеры и интерфейсы: Включают HDMI/DisplayPort для вывода на экран, кулеры для охлаждения и питание (через разъёмы на карте).
Как работает видеокарта: пошаговый процесс
Работа видеокарты можно описать как конвейер обработки данных. Вот упрощённая схема:
1. Получение данных: CPU отправляет задачу (например, рендеринг сцены в игре) через PCIe. Данные включают 3D-модели, текстуры и инструкции.
2. Обработка на GPU:
• Вершинный шейдер: Преобразует координаты объектов (вершин) в 3D-пространстве, применяя трансформации (вращение, масштабирование).
• Растеризация: Преобразует 3D-данные в 2D-изображение, разбивая на пиксели.
• Пиксельный (фрагментный) шейдер: Вычисляет цвет каждого пикселя, учитывая освещение, текстуры и эффекты (тени, отражения). Здесь используется параллельная обработка на множестве ядер.
• Дополнительные этапы: Могут включать постобработку (антиалиасинг, bloom) и вычисления для AI (например, в RTX-картах NVIDIA с DLSS).
3. Хранение и вывод: Результаты хранятся в VRAM, затем передаются на монитор через интерфейсы. Видеокарта может обрабатывать несколько кадров в секунду (FPS), обеспечивая плавность.
Примеры и аналогии
• Аналогия: Представьте GPU как конвейер на фабрике. CPU — менеджер, который даёт задания, а GPU — рабочие, которые быстро собирают детали (пиксели) параллельно.
• Производительность: Современные карты вроде NVIDIA RTX 40-series или AMD RX 7000-series могут обрабатывать миллиарды операций в секунду. Для сравнения, в играх видеокарта может рендерить 4K-изображение при 60 FPS, используя тысячи ядер.
Основные компоненты видеокарты
Видеокарта состоит из нескольких ключевых частей, работающих вместе:
• GPU (графический процессор): Основной "мозг". Это множество ядер (сотни или тысячи), оптимизированных для параллельных вычислений. В отличие от CPU (центрального процессора), GPU лучше справляется с повторяющимися задачами, как обработка пикселей.
• Видеопамять (VRAM): Специальная память (например, GDDR6 или HBM) для хранения текстур, моделей и промежуточных данных. Она быстрая и работает независимо от оперативной памяти компьютера.
• Шина данных (PCIe): Связь с материнской платой и CPU. Через неё передаются команды и данные.
• Контроллеры и интерфейсы: Включают HDMI/DisplayPort для вывода на экран, кулеры для охлаждения и питание (через разъёмы на карте).
Как работает видеокарта: пошаговый процесс
Работа видеокарты можно описать как конвейер обработки данных. Вот упрощённая схема:
1. Получение данных: CPU отправляет задачу (например, рендеринг сцены в игре) через PCIe. Данные включают 3D-модели, текстуры и инструкции.
2. Обработка на GPU:
• Вершинный шейдер: Преобразует координаты объектов (вершин) в 3D-пространстве, применяя трансформации (вращение, масштабирование).
• Растеризация: Преобразует 3D-данные в 2D-изображение, разбивая на пиксели.
• Пиксельный (фрагментный) шейдер: Вычисляет цвет каждого пикселя, учитывая освещение, текстуры и эффекты (тени, отражения). Здесь используется параллельная обработка на множестве ядер.
• Дополнительные этапы: Могут включать постобработку (антиалиасинг, bloom) и вычисления для AI (например, в RTX-картах NVIDIA с DLSS).
3. Хранение и вывод: Результаты хранятся в VRAM, затем передаются на монитор через интерфейсы. Видеокарта может обрабатывать несколько кадров в секунду (FPS), обеспечивая плавность.
Примеры и аналогии
• Аналогия: Представьте GPU как конвейер на фабрике. CPU — менеджер, который даёт задания, а GPU — рабочие, которые быстро собирают детали (пиксели) параллельно.
• Производительность: Современные карты вроде NVIDIA RTX 40-series или AMD RX 7000-series могут обрабатывать миллиарды операций в секунду. Для сравнения, в играх видеокарта может рендерить 4K-изображение при 60 FPS, используя тысячи ядер.