Computer Science
7.68K subscribers
2 photos
17 links
По всем вопросам: @altmainf

Уважаемый менеджер: @altaiface
Download Telegram
Bluetooth

Практика:
Bluetooth позволяет подключать беспроводные устройства, такие как наушники, клавиатуры и мыши. Это удобно и избавляет от проводов.

Технические детали:


• Bluetooth 4.0: Скорость до 25 Мбит/с и дальность до 60 метров.
• Bluetooth 5.0: Скорость до 50 Мбит/с и дальность до 240 метров, что улучшает связь с устройствами.

Совет: Для наилучшего качества звука выбирайте устройства с поддержкой кодеков aptX или AAC.
Несколько других интерфейсов, которые могут быть интересны:

1. FireWire (IEEE 1394)
Практика: Использовался для подключения видеокамер и внешних жестких дисков, особенно в профессиональной сфере.
Технические детали: Поддерживает скорость до 800 Мбит/с (FireWire 800) и может подключать до 63 устройств в цепочке.

2. M.2
Практика: Используется для подключения SSD и других устройств к материнской плате. Обеспечивает высокую скорость передачи данных.
Технические детали: Поддерживает интерфейсы SATA и PCIe, что позволяет достигать скорости до 32 Гбит/с (PCIe 4.0).

3. U.2
Практика: Используется для подключения корпоративных NVMe SSD. Позволяет подключать устройства через кабель, поддерживающий как данные, так и питание.
Технические детали: Позволяет подключать до 4 устройств на одном контроллере, обеспечивая высокую скорость передачи данных.

4. RS-232
Практика: Использовался для подключения модемов и других устройств. В настоящее время в основном применяется в промышленности и для управления оборудованием.
Технические детали: Поддерживает скорость до 115200 бит/с, но ограничен расстоянием до 15 метров.
Сериализация — важный процесс, который позволяет преобразовывать объекты или структуры данных в формат, подходящий для хранения или передачи.

Несколько популярных форматов сериализации, которые могут быть полезны в разных ситуациях:

1. JSON (JavaScript Object Notation)
• Легкий и понятный текстовый формат.
• Идеален для веб-приложений, где нужно обмениваться данными между клиентом и сервером.
Пример:
{"name": "Иван", "age": 30, "isStudent": false, "courses": ["математика", "физика"]}

• Плюсы: Простота и читаемость.

2. XML (eXtensible Markup Language)
• Формат, который структурирует данные с помощью тегов.
• Подходит для более сложных структур данных и когда нужно использовать атрибуты.
Пример:
<person><name>Иван</name><age>30</age><isStudent>false</isStudent><courses><course>математика</course><course>физика</course></courses></person>

• Плюсы: Гибкость и возможность валидации.
3. Protocol Buffers (protobuf)
• Бинарный формат от Google, который очень эффективен.
• Когда использовать: Когда важна производительность и компактность данных.
Пример:
message Person { string name = 1; int32 age = 2; bool isStudent = 3; repeated string courses = 4; }

• Плюсы: Быстрая сериализация и десериализация.

4. YAML (YAML Ain't Markup Language)
• Читаемый формат, который часто используется в конфигурациях.
• Когда использовать: Когда нужно, чтобы данные были понятны человеку.
Пример:
name: Иван
age: 30
isStudent: false
courses: [математика, физика]

• Плюсы: Легкость в чтении и редактировании.
В информационной безопасности ценятся не только те, кто умеет пользоваться инструментами, но и специалисты, которые понимают, как устроены программы изнутри.

Реверс-инжиниринг позволяет анализировать вредоносное ПО, исследовать механизмы защиты и разбирать сложные инциденты на уровне машинного кода.

Курс «Профессия Реверс-инженер» от Codeby Academy позволит перейти от работы с инструментами к глубокому пониманию машинного кода, архитектуры программ и процессов, происходящих внутри приложений.

Что в программе:
⏺️Ассемблер x86/x64 — с нуля до уверенного чтения
⏺️ Форматы PE, ELF, APK: Windows, Linux, Android
⏺️Анализ вредоносного ПО: статика и динамика
⏺️Противодействие защите: антиотладка, обфускация, протекторы
⏺️Портфолио на GitHub и подготовка к техническим собеседованиям

Для старта достаточно понимать основы программирования на любом современном языке.

Формат: онлайн в удобное темпе ➡️10 месяцев
Доступна поэтапная оплата — от 8 150 ₽/мес.

Курс стартует 16 ноября

↗️️Посмотреть программу и записаться
Please open Telegram to view this post
VIEW IN TELEGRAM
5. Avro
• Формат, созданный для работы с большими данными.
• Когда использовать: В средах, таких как Hadoop, где важна схема данных.
Пример:
{"type": "record", "name": "Person", "fields": [{"name": "name", "type": "string"}, {"name": "age", "type": "int"}, {"name": "isStudent", "type": "boolean"}, {"name": "courses", "type": {"type": "array", "items": "string"}}]}

• Плюсы: Поддержка схем и управление изменениями.

6. MessagePack
• Компактный бинарный формат, похожий на JSON.
• Когда использовать: Когда нужно экономить место и время при передаче данных.
• Плюсы: Эффективность и скорость.
Типы SSD

1. SATA SSD
• Подключается через интерфейс SATA (Serial ATA).
• Наиболее распространенный и доступный тип SSD.
• Скорость чтения/записи: до 550 МБ/с.

2. NVMe SSD
• Подключается через интерфейс NVMe (Non-Volatile Memory Express).
• Более быстрый, чем SATA SSD, благодаря прямому подключению к шине PCIe.
• Скорость чтения/записи: до 3500 МБ/с.

3. PCIe SSD
• Подключается через слот PCIe (Peripheral Component Interconnect Express).
• Самый быстрый тип SSD, обеспечивающий сверхвысокую скорость чтения/записи.
• Скорость чтения/записи: до 15 000 МБ/с.

4. M.2 SSD
• Форм-фактор, который может использовать интерфейсы SATA или NVMe.
• Компактный и удобный для использования в ноутбуках и других устройствах с ограниченным пространством.
• Скорость чтения/записи: зависит от используемого интерфейса.

5. U.2 SSD
• Форм-фактор, предназначенный для использования в серверах и рабочих станциях.
• Подключается через интерфейс PCIe.
• Скорость чтения/записи: до 3500 МБ/с.

6. Optane SSD
• Использует технологию Intel Optane, которая обеспечивает еще более высокую скорость и меньшее время отклика, чем традиционные SSD.
• Скорость чтения/записи: до 2500 МБ/с.

7. SCM SSD
• Использует энергонезависимую память (SCM), такую как фазовая память с изменением сопротивления (PCRAM) или магниторезистивная память с произвольным доступом (MRAM).
• Обеспечивает чрезвычайно высокую скорость и низкое время отклика.
• Скорость чтения/записи: до 10 000 МБ/с.

8. Гибридный SSD (SSHD)
• Комбинация традиционного жесткого диска (HDD) и флэш-памяти.
• Хранит часто используемые данные на флэш-памяти для более быстрого доступа, а остальные данные на HDD.
• Скорость чтения/записи: зависит от соотношения флэш-памяти и HDD.
NOR- и NAND- flash-память - это два основных типа не-волатильной флеш-памяти. Название этих видов флеш-памяти произошло от логических операций NOR и NAND, которые используются внутри соответствующих видов памяти.

NOR flash-память: Этот тип флеш-памяти позволяет произвольное чтение и запись данных. Это означает, что возможно обращение к любой ячейке памяти без чтения или перезаписи всего блока. Из-за этого свойства, NOR-память часто используется для хранения кода, который должен быть быстро доступен и который меняется не так часто, как например, операционная система на эмбеддед устройствах. Однако данная память обладает меньшей скоростью записи и большей стоимостью по сравнению с NAND.

NAND flash-память: NAND flash-память, в отличие от NOR, позволяет осуществлять чтение и запись только блоками, что ее делает более подходящей для хранения больших объемов данных, которые обычно изменяются вместе, например, изображения или музыка. NAND flash намного эффективнее по отношению к скорости записи и стоимости на бит, она обеспечивает большую плотность хранения информации (то есть может хранить больше данных на одном квадратном сантиметре силикона), но временные характеристики доступа к памяти несколько хуже по сравнению с NOR flash.

В обоих типах флеш-памяти, ячейки памяти могут быть изменимы ограниченное число раз, после чего они могут больше не работать корректно. Это известно как ограничение на количество циклов записи / перезаписи.
Основные различия между IPv4 и IPv6:

1. Адресная разрядность:
• IPv4 использует 32-битные адреса и поддерживает около 4,3 миллиарда уникальных адресов.
• IPv6 использует 128-битные адреса и обеспечивает гораздо большее количество уникальных адресов, практически неограниченное количество.

2. Формат адреса:
• IPv4 адреса записываются в десятичной системе, разделенные точками, например, 192.168.1.1.
• IPv6 адреса записываются в шестнадцатеричной системе, разделенные двоеточиями, например, 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

3. Поддержка и распространение:
• IPv4 широко используется в настоящее время, но из-за ограниченного количества адресов возникает проблема исчерпания адресов.
• IPv6 разработан для решения проблемы исчерпания адресов IPv4 и постепенно внедряется в сети.

4. Безопасность и другие функции:
• IPv6 включает в себя встроенные функции безопасности, такие как IPsec, что делает его более безопасным и защищенным по сравнению с IPv4.
• IPv6 также поддерживает более эффективную маршрутизацию и улучшенную поддержку качества обслуживания (QoS).
Принцип работы сетей 5G основан на использовании передовых технологий и стандартов, которые обеспечивают высокую скорость передачи данных, низкую задержку и возможность подключения большого количества устройств.

Ключевые аспекты:

Использование широкого спектра частот: 5G использует как низкие, так и высокие частоты, включая миллиметровые волны, которые позволяют передавать большие объемы данных на высоких скоростях.

Малые ячейки: Для увеличения плотности сети и улучшения покрытия в густонаселенных районах используются малые ячейки.

Массивная MIMO (Multiple Input Multiple Output): Технология, позволяющая одновременно использовать большое количество передающих и приемных антенн для увеличения пропускной способности и эффективности сети.

Расслоение сети (Network Slicing): Виртуализация сети, позволяющая создавать множество виртуальных сетей с различными характеристиками на одной физической инфраструктуре.

Улучшенная модуляция: Использование более сложных схем модуляции для увеличения количества данных, передаваемых за один такт.

Edge Computing: Обработка данных ближе к пользователю, что снижает задержку и улучшает производительность приложений в реальном времени.
Существует множество программ для 3D моделирования, каждая из которых предназначена для определенных нужд и пользователей.

Несколько популярных инструментов:

Blender: Бесплатная и мощная программа для 3D моделирования и анимации. Подходит как для новичков, так и для профессионалов. Часто используется для создания анимации и визуализаций.

AutodeskMaya: Одна из самых популярных программ в киноиндустрии для создания 3D анимаций и моделей. Применяется в крупных студиях для создания высококачественных визуальных эффектов.

SketchUp: Простая в использовании программа, идеально подходящая для архитекторов и дизайнеров интерьеров. Используется для создания моделей зданий и помещений.

ZBrush: Специализируется на скульптурном моделировании. Это лучший выбор для создания высокодетализированных объектов, таких как персонажи для видеоигр.

Пример: В Blender можно создать все — от простых моделей до сложных анимаций, а в Maya обычно работают над спецэффектами для голливудских блокбастеров.
Архитектура фон Неймана и Гарвардская архитектура — два основных подхода к организации памяти и обработки данных в ЭВМ.

Архитектура фон Неймана: В этой архитектуре используются одна и та же шина для передачи данных и инструкций. Это упрощает конструкцию, но может привести к узкому месту, когда процессор ожидает данные или инструкции.

Гарвардская архитектура: В этой архитектуре используются отдельные шины для данных и инструкций, что позволяет одновременно получать данные и выполнять инструкции, увеличивая производительность.
Операционные системы для микроконтроллеров - это специализированные программные платформы, предназначенные для управления и контроля микроконтроллерами. Они обеспечивают интерфейс между аппаратным обеспечением микроконтроллера и прикладными программами, что делает разработку встраиваемых систем более удобной и эффективной.

Несколько популярных ОС для микроконтроллеров:

FreeRTOS (Real-Time Operating System): FreeRTOS - это бесплатная и популярная операционная система реального времени для микроконтроллеров. Она обладает малым объемом памяти и поддерживает множество архитектур и микроконтроллеров.

MicroC/OS-II и MicroC/OS-III: MicroC/OS - это коммерческая операционная система реального времени с открытым исходным кодом, предназначенная для микроконтроллеров. Она предоставляет разработчикам множество функций и возможностей для создания встраиваемых систем.

CMSIS-RTOS: CMSIS (Cortex Microcontroller Software Interface Standard) - это стандарт от ARM, который включает в себя интерфейсы и библиотеки для разработки программного обеспечения для микроконтроллеров Cortex-M. Он также включает в себя небольшую операционную систему CMSIS-RTOS, которая может быть использована для создания встраиваемых систем.

NuttX: NuttX - это маленькая и открытая операционная система реального времени, поддерживающая различные микроконтроллеры и платформы. Она предоставляет множество функций, такие как многозадачность, семафоры и очереди.

ChibiOS/RT: ChibiOS/RT - это маленькая и бесплатная операционная система реального времени для микроконтроллеров. Она предоставляет набор API для многозадачности, ввода/вывода и других функций.
Wi-Fi обычно работает на двух основных частотах: 2.4 ГГц и 5 ГГц.

• 2.4 ГГц
Преимущества: Лучшее покрытие и большая дальность действия.
Недостатки: Более загруженная частота, подвержена помехам от других устройств (например, микроволновок, беспроводных телефонов).

• 5 ГГц
Преимущества: Более высокая скорость передачи данных и меньшее количество помех.
Недостатки: Меньшее покрытие и более слабое проникновение через стены.

Соответственно, если нужна скорость, лучше выбрать 5 ГГц, а для большого покрытия — 2.4 ГГц.
Компилятор состоит из нескольких основных компонентов:

Лексический анализатор (сканер) - процесс разбиения входного кода на лексемы, такие как ключевые слова, операторы и идентификаторы.

Синтаксический анализатор (парсер) - процесс анализа и построения структуры предложений входного кода, используя грамматику языка программирования.

Семантический анализатор - процесс проверки правильности использования переменных, типов данных и других элементов языка программирования в соответствии с правилами языка.

Оптимизатор - процесс оптимизации кода для улучшения его производительности и эффективности.

Генератор кода - фаза, в которой компилятор создает машинный код или байт-код, который может быть выполнен на целевой платформе.

Анализатор ошибок - компонент, который выдает сообщения об ошибках и предупреждениях во время компиляции.

Кроме того, компилятор может также включать вспомогательные инструменты, такие как отладчик, профилировщик и другие, для обеспечения удобства разработки программного обеспечения.
Принципы работы кеша:

Принциплокальности: Если данные были запрошены один раз, есть высокая вероятность, что они будут запрошены снова в ближайшем будущем. Поэтому кеш сохраняет эти данные для быстрого доступа.

Иерархическаяструктура: Кеш организуется в иерархической структуре с несколькими уровнями. Более высокий уровень находится ближе к процессору и обладает более быстрым доступом, но меньшей емкостью.

Заменаданных: Когда кеш заполняется, требуется освободить место для новых данных. Алгоритмы замены определяют, какие данные вытеснить для освобождения места.

Когерентность: Кеш-память может быть использована несколькими компонентами одновременно. Протоколы когерентности гарантируют согласованность данных, синхронизируя их между кешами.
«Битый сектор» или «бэд сектор»

Сталкиваясь с понятиями «битый сектор» или начинающие пользователи обычно понимают, что речь идет о какой-то серьезной проблеме, но не понимают как эту проблему решать.

Допустим, что жесткий диск вашего компьютера подвергся низкоуровневому форматированию на заводе-изготовителе. В результате этого процесса на магнитном носителе были созданы дорожки и сектора, которые в процессе работы компьютера используются для хранения данных. Сектора – это физически размеченные области на поверхности магнитного носителя, предназначенные для хранения данных.

Если такой сектор будет поврежден механически, то вся информация, которая в нем хранилась, будет безвозвратно утеряна.

Такие поврежденные механически сектора и называются битыми секторами. В них уже невозможно хранить данные и те данные, которые были в них записаны ранее, с большей долей вероятности восстановить не получится.
Компилятор vs интерпретатор: чем Python отличается от C++

Компилятор — это переводчик, который берёт весь текст книги и переводит его сразу. Интерпретатор — переводчик-синхронный, переводит построчно, «на лету».

Пример:

• C++ сначала компилируется в машинный код → файл запускается очень быстро.
• Python интерпретируется построчно → запуск удобный, но медленнее.

Почему это важно:

• Игры на Unreal Engine пишут на C++ ради скорости.
• Скрипты автоматизации чаще пишут на Python, потому что править и тестировать его проще.
Кодирование информации -  процесс преобразования данных из одной формы в другую для передачи, хранения или обработки. Существует множество алгоритмов кодирования, каждый из которых предназначен для определенных целей и обладает своими преимуществами и недостатками. Несколько основных алгоритмов кодирования:

Базовые алгоритмы кодирования:
• ASCII (American Standard Code for Information Interchange): используется для кодирования символов на основе 7- или 8-битных двоичных чисел.
• Unicode: обеспечивает универсальное представление текста в различных языках и символьных системах.

Алгоритмы сжатия:
• Lempel-Ziv-Welch (LZW): используется для сжатия данных без потерь, особенно эффективен при кодировании текстов.
• Deflate: комбинирует алгоритмы сжатия Хаффмана и LZ77 (Lempel-Ziv 1977).

Кодирование с использованием математических методов:
• Алгоритмы Хаффмана: строит оптимальный префиксный код для каждого символа, исходя из его вероятности встречи.
• Арифметическое кодирование: преобразует последовательность символов в одно дробное число в интервале [0,1] с учетом их вероятностей.

Криптографические алгоритмы кодирования:
• AES (Advanced Encryption Standard): симметричный алгоритм шифрования, широко применяемый для защиты данных.
• RSA (Rivest-Shamir-Adleman): асимметричный алгоритм шифрования, используемый для обмена ключами и цифровой подписи.

Алгоритмы кодирования для изображений и звука:
• JPEG (Joint Photographic Experts Group): используется для сжатия цифровых изображений.
• MP3 (MPEG Audio Layer III): алгоритм сжатия аудио.

Алгоритмы кодирования для видео:
• H.264 (Advanced Video Coding): стандарт для сжатия видео с высокой эффективностью.
Согласно Таненбауму, вычислительную систему
можно представить в виде ряда уровней абстракции. Каждому уровню соответствует свой язык, программы на котором путём компиляции или интерпретации переводятся на язык нижележащего уровня.

Большинство современных систем включает шесть уровней:
- уровень языка прикладных программистов;
- уровень ассемблера;
- уровень операционной системы;
- уровень архитектуры команд;
- микроархитектурный уровень;
- цифровой логический уровень.

Над этой иерархией языков находится прикладной программист и воплощаемый им алгоритм; под цифровым логическим уровнем - физическая элементная база.

Современная шестиуровневая структура сформировалась далеко не сразу и не является пределом развития. Примитивные счётные устройства (абак, суанпан, русские счёты) рассчитаны на взаимодействие человека напрямую с элементной базой. Развитие вычислительной техники и программной инженерии ведёт к постепенному наращиванию уровней абстракции.
Теория информации — раздел математики и информатики, который занимается количественной оценкой информации, её передачей и кодированием. Этот раздел был основан в середине 20-го века Клодом Шенноном, чьи работы стали основой для многих современных технологий, включая телекоммуникации, сжатие данных, криптографию и многое другое.

Здесь и далее будет приведено несколько ключевых понятий и аспектов теории информации:

1. Информация и энтропия

Информация — то, что уменьшает неопределенность. В контексте теории информации информация измеряется в битах.

Энтропия (H) — мера неопределенности или неопределенности системы. В информационном контексте энтропия определяет, сколько информации нужно для того, чтобы описать выбор одного из возможных исходов. Чем больше возможных исходов, тем выше энтропия.

Энтропия для дискретного случайного события 𝑋 с вероятностями 𝑝₁, 𝑝₂, ..., 𝑝𝑛 вычисляется по формуле:
H(X) = −Σ [𝑛, ᵢ₌₁] (pᵢ log₂(pᵢ))

где 𝑝𝑖 — вероятность 𝑖-го исхода, а сумма берется по всем возможным исходам.

Энтропия измеряется в битах, если логарифм вычисляется по основанию 2. Это связано с тем, что каждый бит представляет собой двоичный выбор между двумя возможными состояниями.