METANIT.COM – Telegram
METANIT.COM
5.96K subscribers
1.69K photos
82 videos
9 files
1.08K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
(Наглядная иллюстрация к предыдущему посту)
🔥5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно как происходит рабочий процесс в Git
❤‍🔥14
Тестирование API вносит значительный вклад в обеспечение надежности, безопасности, функциональности и эффективности приложений. Рассмотрим 6 базовых типов тестирования API:

🔹 Тестирование рабочего процесса (Workflow Testing)
Проверяет, правильно ли работает последовательность вызовов API для завершения определенного процесса.
Часто такие тесты рабочего процесса связаны с какой-либо бизнес-целью, например, с совершением покупки на платформе электронной коммерции.

🔹 Тестирование производительности (Performance Testing)
Оценивает скорость, отзывчивость и стабильность API в различных условиях, чтобы убедиться, что он соответствует контрольным показателям и ожиданиям пользователей
И также оценивает такие ключевые факторы, как скорость обработки, использование памяти, нагрузка на соединение, время отклика и пропускная способность сети, чтобы выявить потенциальные узкие места
Цель состоит в том, чтобы убедиться, что система выдает ожидаемые ответы в разумные сроки, даже при различной нагрузке

🔹 Тестирование безопасности (Security Testing)
Выявляет уязвимости, которые потенциально могут привести к несанкционированному доступу или утечке данных
Включает в себя строгие проверки, чтобы гарантировать, что меры безопасности достаточно надежны, чтобы предотвратить атаки и утечки данных.
Использует тестирование на проникновение (pentest) и нечеткое тестирование для выявления уязвимостей

🔹 Тестирование на основе данных (Data-driven Testing)
Передает различные наборы и типы входных данных в API, чтобы гарантировать его корректную работу в различных сценариях.
Использует таблицы входных данных, сопоставленных с ожидаемыми выходными данными, прогон этих входных данных через систему и проверку соответствия фактических выходные данные ожидаемым результатам

🔹 Тестирование конечной точки (Endpoint Testing)
Проверяет, правильно ли отдельные конечные точки API реагируют на запросы и возвращают ли ожидаемый ответ, данные, коды состояния и сообщения об ошибках

🔹 Тестирование контракта (Contract Testing)
Проверяет, что взаимодействие между поставщиком API и потребителем соответствует предопределенному соглашению/контракту, включая ожидаемые структуры запросов, форматы ответов и типы данных.
Его основная задача — гарантировать, что поставщик API не вносит критических изменений, которые могут повлиять на потребителей, использующих API.
👍4🔥42😁1
(Иллюстрация к предыдущему посту)
🔥3
Media is too big
VIEW IN TELEGRAM
Популярность языков программирования с 1965 по 2022 гг. (Популярность в данном случае определяется как процент разработчиков, которые активно используют или изучают его. Не знаю, откуда они взяли эти данные, может от фонаря, но тем не менее.)
👍92
Шпаргалка по работе с HTML DOM в JavaScript #javanoscript
🔥10
VK готовит к запуску бета‑версию своего супераппа (многофункционального мобильного приложения, которое дает доступ к продуктам и сервисам цифровой экосистемы) на базе цифровой платформы Max с мессенджером, мини‑приложениями, конструктором чат‑ботов и платёжной системой — аналога китайского WeChat.
Суперапп Max будет доступен для iOS и Android, а также в десктопном варианте и через веб‑браузеры. Разработчики проекта планируют добавить различные государственные (например, Госуслуги) и другие сервисы для решения повседневных задач.
В нем будут доступны общение в мессенджере, звонки, голосовые сообщения и отправка файлов до 4 ГБ. Для звонков команда платформы уже установила дополнительные медиасерверы на всей территории страны и внедрила технологии машинного обучения для повышения качества передаваемой речи
На первом этапе в приложении VK Max будет несколько инструментов для создания корпоративных чат‑ботов. Разработчики из сторонних компаний смогут создавать свои мини‑приложения на базе Max Bot API, например, финансовые сервисы, каталоги товаров для магазинов, меню ресторанов и сервисы поддержки внутри супераппа Max.
По информации профильных источников, бета‑версия супераппа Max выйдет весной этого. Команда VK будет некоторое время тестировать функциональность платформы и работать с обратной связью от пользователей. Получить доступ в приложение Max на тестовом этапе смогут владельцы российских и белорусских сим‑карт.

https://www.vedomosti.ru/technology/articles/2025/03/25/1099980-vk-sozdaet-analog-kitaiskogo-messendzhera
👎24🤡92👍2🥴1🤣1
Пагинация имеет решающее значение в разработке API для эффективной обработки больших наборов данных и повышения производительности. Вот шесть популярных методов пагинации:

🔹 Пагинация на основе смещения (Offset-based Pagination):
Использует параметры смещения и ограничения для определения начальной точки и количества возвращаемых записей.
- Пример: GET /orders?offset=0&limit =3
- Плюсы: Простота реализации и понимания.
- Минусы: может стать неэффективным при больших смещениях, поскольку требует сканирования и пропуска строк.

🔹 Разбиение на страницы с помощью курсора (Cursor-based Pagination):
Этот метод использует курсор (уникальный идентификатор) для обозначения позиции в наборе данных. Обычно курсор представляет собой закодированную строку, которая указывает на определенную запись.
- Пример: GET /orders?cursor=xxx
- Плюсы: более эффективен для больших наборов данных, так как не требует сканирования пропущенных записей.
- Минусы: Немного сложнее в реализации и понимании.

🔹 Постраничная пагинация (Page-based Pagination):
Этот метод определяет номер страницы и размер каждой страницы.
- Пример: GET /items?page=2&size =3
- Плюсы: Простота внедрения и использования.
- Минусы: те же проблемы с производительностью, что и при разбиении на страницы на основе смещения для больших номеров страниц.

🔹 Пагинация на основе набора ключей (Keyset-based Pagination):
Этот метод использует ключ для фильтрации набора данных, часто первичный ключ или другой индексированный столбец.
- Пример: GET /items?after_id=102&limit =3
- Плюсы: эффективно для больших наборов данных и позволяет избежать проблем с производительностью при больших смещениях.
- Минусы: требуется уникальный и индексированный ключ, может быть сложно реализовать.

🔹 Пагинация по времени (Time-based Pagination):
Этот метод использует временную метку или дату для разбиения записей на страницы.
- Пример: GET /items?start_time=xxx&end_time=yyy
- Плюсы: полезно для наборов данных, упорядоченных по времени, гарантирует, что ни одна запись не будет пропущена при добавлении новых.
- Минусы: требуется надежная и последовательная временная метка.

🔹 Гибридная пагинация (Hybrid Pagination):
Этот метод объединяет несколько методов пагинации, чтобы максимально использовать их сильные стороны.
Пример: Сочетание курсорной и временной пагинации для эффективной прокрутки упорядоченных по времени записей.
- Пример: GET /items?cursor=abc&start_time=xxx&end_time=yyy
- Плюсы: обеспечивает наилучшую производительность и гибкость для сложных наборов данных.
- Минусы: более сложная реализация и требует тщательного проектирования.
👍9💯3🔥1
(Иллюстрация к предыдущему посту)
👍11💯2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно сопоставление регулярных выражений на конечных автоматах
🤪14👍5🤔2🤓2
10 лучших методов масштабирования баз данных:

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

2. Вертикальное масштабирование: обновление сервера базы данных, использование более мощного процессора, ОЗУ или хранилища для обработки возросшей нагрузки.

3. Кэшировнаие: хранение часто используемых данных в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика

4. Шардинг: распределение данных по нескольким серверам, разделение БД на более мелкие независимые фрагменты, что обеспечивает горизонтальное масштабирование и повышение производительности.

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

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

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

8. Декомпозиция БД: разделение больших таблиц на более мелкие, более управляемые части (разделы), каждая из которых содержит подмножество столбцов из исходной таблицы.

9. Денормализация: хранение данных в избыточном, но структурированном формате, чтобы минимизировать сложные соединения данных и ускорить рабочие нагрузки с интенсивным чтением.

10. Представления: предварительное вычисление и сохранение результаты сложных запросов в виде отдельных таблиц, чтобы избежать дорогостоящих пересчетов, снизить нагрузку на базу данных и улучшить время отклика.
👍1032👨‍💻1
(Наглядная иллюстрация к предыдущему посту)
👍9🆒32👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает Linux #linux
8❤‍🔥3👏1🤯1
Типы индексов базы данных

[1.] Кластерный индекс (clustered index)
◾️ Физически переупорядочивает строки данных на основе ключа индекса.
◾️ По одному индексу на таблицу
◾️ Значительно ускоряет запросы по диапазону (например, поиск всех заказов между датой X и Y) и запросы по индексированным столбцам
◾️ Может замедлить изменение данных (вставку, обновление, удаление) из-за переупорядочения.

[2.] Некластеризованный индекс (non-clustered index)
◾️ Создает отдельную структуру с указателями на строки данных, отсортированные по ключу индекса.
◾️ Допускается несколько индексов для одной таблицы.
◾️ Эффективно для поиска равенства (например, поиска клиента с идентификатором 123).
◾️ Может использоваться для индексов покрытия, где все требуемые столбцы включены в индекс.

[3.] Уникальный индекс
◾️ Гарантирует, что все значения в столбце или комбинации столбцов являются уникальными.
◾️ Могут быть кластеризованными или некластеризованными.
◾️ Предотвращает дублирование значений, обеспечивая целостность данных.
◾️ Часто используется для альтернативных ключей (кроме первичного ключа), которые должны быть уникальными.

[4.] Фильтрованный индекс (Filtered Index)
◾️ Индексирует только подмножество строк на основе предиката фильтра.
◾️ Улучшает производительность для запросов, которые часто фильтруют по указанному условию.
◾️ Уменьшает размер индекса по сравнению с индексацией всей таблицы.

[5.] Полнотекстовый индекс (Full-Text Index)
◾️ Обеспечивает эффективный поиск в текстовых данных (например, документах, статьях) на основе ключевых слов и фраз.
◾️ Использует специализированные алгоритмы индексации и поиска (например, инвертированные индексы).
Поддерживает такие лингвистические функции, как стемминг и тезаурус.

[6.] Композитный индекс (Composite Index)
◾️ Индекс, созданный по нескольким столбцам.
◾️ Может быть кластеризованным или некластеризованным.
◾️ Оптимизирует запросы, которые фильтруют или сортируют по нескольким столбцам.
◾️ Порядок столбцов в определении индекса имеет решающее значение для производительности.

[7.] Индекс покрытия/покрывающий индекс (Covering Index)
◾️ Включает все столбцы, необходимые для запроса, в сам индекс, избегая необходимости доступа к базовой таблице.
◾️ Может быть некластеризованным.
◾️ Значительно ускоряет запросы, которым нужны только данные из индексированных столбцов.

[8.] Индекс с включенными столбцами (Index with Included Columns)
◾️ Аналогично покрывающему индексу, но включает только неключевые столбцы.
◾️ Некластеризованные.
◾️ Может улучшить производительность запроса, если дополнительные столбцы используются часто.

[9.] XML-индекс
◾️ Индексирует XML-данные для эффективного выполнения запросов с использованием XPath или специфичных для XML функций.
◾️ Доступно в базах данных, поддерживающих типы данных XML.
◾️ Позволяет запрашивать определенные элементы или атрибуты в XML-документах.

[10.] Частичный индекс (Partial Index)
◾️ Индексирует только подмножество строк, которые соответствуют определенному условию.
◾️ Аналогично отфильтрованным индексам, но с большей гибкостью в определении условий фильтрации.
◾️ Может улучшить производительность запросов для узкоспециализированных вариантов использования.

[11.] Индекс битовой карты (Bitmap Index)
◾️ Эффективно индексирует столбцы с низкой кардинальностью (несколько уникальных значений).
◾️ Сохраняет битовые карты, указывающие, какие строки содержат определенное значение.
👍102🔥1🤯1
Что происходит после запуска контейнера Docker
👍131🔥1