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
Суперапп 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
Ведомости
VK создает аналог китайского мессенджера с госуслугами и платежами WeChat
Эксперты оценивают инвестиции в 1 млрд рублей
👎24🤡9❤2👍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
- Плюсы: обеспечивает наилучшую производительность и гибкость для сложных наборов данных.
- Минусы: более сложная реализация и требует тщательного проектирования.
🔹 Пагинация на основе смещения (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
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. Представления: предварительное вычисление и сохранение результаты сложных запросов в виде отдельных таблиц, чтобы избежать дорогостоящих пересчетов, снизить нагрузку на базу данных и улучшить время отклика.
1. Индексация: cоздание индексов для часто запрашиваемых столбцов для ускорения поиска данных
2. Вертикальное масштабирование: обновление сервера базы данных, использование более мощного процессора, ОЗУ или хранилища для обработки возросшей нагрузки.
3. Кэшировнаие: хранение часто используемых данных в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика
4. Шардинг: распределение данных по нескольким серверам, разделение БД на более мелкие независимые фрагменты, что обеспечивает горизонтальное масштабирование и повышение производительности.
5. Репликация : Создание нескольких копий (реплик) базы данных на разных серверах, что позволяет распределять запросы на чтение между репликами и повышать доступность.
6. Оптимизация запросов: тонкая настройка SQL-запросов, исключение дорогостоящих операций и эффективное использование индексов для повышения скорости выполнения и снижения нагрузки на базу данных.
7. Пул подключений: сокращение накладных расходов на открытие/закрытие соединений с базой данных за счет повторного использования существующих соединений, что повышает производительность при интенсивном трафике.
8. Декомпозиция БД: разделение больших таблиц на более мелкие, более управляемые части (разделы), каждая из которых содержит подмножество столбцов из исходной таблицы.
9. Денормализация: хранение данных в избыточном, но структурированном формате, чтобы минимизировать сложные соединения данных и ускорить рабочие нагрузки с интенсивным чтением.
10. Представления: предварительное вычисление и сохранение результаты сложных запросов в виде отдельных таблиц, чтобы избежать дорогостоящих пересчетов, снизить нагрузку на базу данных и улучшить время отклика.
👍10✍3❤2👨💻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)
◾️ Эффективно индексирует столбцы с низкой кардинальностью (несколько уникальных значений).
◾️ Сохраняет битовые карты, указывающие, какие строки содержат определенное значение.
[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)
◾️ Эффективно индексирует столбцы с низкой кардинальностью (несколько уникальных значений).
◾️ Сохраняет битовые карты, указывающие, какие строки содержат определенное значение.
👍10❤2🔥1🤯1
Microsoft тестирует возможность установки Windows 11 в разделы диска с альтернативной файловой системой ReFS.
При чистой установке Windows с помощью файла ISO или прямой загрузке с помощью USB пользователь на этапе установки может выбрать в том числе тип файловой системы.
Возможность выбора типа файловой системы при разметке накопителя обнаружена в тестовой сборке с номером 27823 (Canary).
ReFS (Resilient File System) – файловая система, разрабатываемая Microsoft в качестве альтернативы NTFS. ReFS была представлена в 2012 г. и должна была стать альтернативой NTFS, переняв у нее все лучшее и отсеяв сложное. Например, в отличие от NTFS, ReFS не поддерживает короткие имена файлов, шифрование и сжатие на уровне файлов, а также жесткие ссылки и квоты. В то же время ReFS отличается более высокой надежностью, при этом в значительной степени сохраняет совместимость с возможностями NTFS
https://www.windowslatest.com/2025/03/27/windows-11-setup-will-let-you-choose-between-ntfs-and-refs-when-clean-installing/
При чистой установке Windows с помощью файла ISO или прямой загрузке с помощью USB пользователь на этапе установки может выбрать в том числе тип файловой системы.
Возможность выбора типа файловой системы при разметке накопителя обнаружена в тестовой сборке с номером 27823 (Canary).
ReFS (Resilient File System) – файловая система, разрабатываемая Microsoft в качестве альтернативы NTFS. ReFS была представлена в 2012 г. и должна была стать альтернативой NTFS, переняв у нее все лучшее и отсеяв сложное. Например, в отличие от NTFS, ReFS не поддерживает короткие имена файлов, шифрование и сжатие на уровне файлов, а также жесткие ссылки и квоты. В то же время ReFS отличается более высокой надежностью, при этом в значительной степени сохраняет совместимость с возможностями NTFS
https://www.windowslatest.com/2025/03/27/windows-11-setup-will-let-you-choose-between-ntfs-and-refs-when-clean-installing/
🤔6🙏3👏2👍1
Основные аспекты кэширования, которые следует учитывать:
Сценарии использования:
- Развертывание решения в памяти
- При работе с высоконагруженными системами
- Когда данные не обновляются часто
Техники кэширования:
- Cache aside
- Write-through
- Read-through
- Write-around
- Write-back
Алгоритмы удаления из кэша:
- Least Recently Used (LRU)
- Least Frequently Used (LFU)
- First-in First-out (FIFO)
- Random Replacement (RR)
Ключевые метрики:
- Коэффициент попадания в кэш
- Задержка
- Пропускная способность
- Коэффициент аннулирования (Invalidation Rate)
- Использование памяти
- использование ЦП
- Использование сети
Другие вопросы:
- Предварительная загрузка наиболее запрашиваемых данных при холодном пуске
- Время жизни (TTL)
Сценарии использования:
- Развертывание решения в памяти
- При работе с высоконагруженными системами
- Когда данные не обновляются часто
Техники кэширования:
- Cache aside
- Write-through
- Read-through
- Write-around
- Write-back
Алгоритмы удаления из кэша:
- Least Recently Used (LRU)
- Least Frequently Used (LFU)
- First-in First-out (FIFO)
- Random Replacement (RR)
Ключевые метрики:
- Коэффициент попадания в кэш
- Задержка
- Пропускная способность
- Коэффициент аннулирования (Invalidation Rate)
- Использование памяти
- использование ЦП
- Использование сети
Другие вопросы:
- Предварительная загрузка наиболее запрашиваемых данных при холодном пуске
- Время жизни (TTL)
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно алгоритмы балансировки нагрузки
👍7❤3🔥2
Типы ключей в базах данных
Primary key (Первичный ключ)
Уникальный идентификатор для каждой записи в таблице. Он не может быть равен NULL и должен быть уникальным для всей таблицы
Foreign key (Внешний ключ)
Поле в таблице, которое создает ссылочную связь между двумя таблицами. Оно используется для установления отношения между таблицами
Composite key (Составной ключ)
Комбинация двух или более столбцов, используемых в качестве первичного ключа, когда ни один отдельный столбец не достаточен для однозначной идентификации записи
Alternate key (Альтернативный ключ)
Уникальный идентификатор для записи, который не является первичным ключом. Его можно использовать в качестве вторичного ключа при поиске данных в таблице
Candidate key (Ключ-кандидат)
Уникальный идентификатор для записи в таблице, которая потенциально может использоваться в качестве первичного ключа
Surrogate key
Уникальный идентификатор для записи в таблице, обычно присваивается базой данных, а не самим пользователем
#database #sql
Primary key (Первичный ключ)
Уникальный идентификатор для каждой записи в таблице. Он не может быть равен NULL и должен быть уникальным для всей таблицы
Foreign key (Внешний ключ)
Поле в таблице, которое создает ссылочную связь между двумя таблицами. Оно используется для установления отношения между таблицами
Composite key (Составной ключ)
Комбинация двух или более столбцов, используемых в качестве первичного ключа, когда ни один отдельный столбец не достаточен для однозначной идентификации записи
Alternate key (Альтернативный ключ)
Уникальный идентификатор для записи, который не является первичным ключом. Его можно использовать в качестве вторичного ключа при поиске данных в таблице
Candidate key (Ключ-кандидат)
Уникальный идентификатор для записи в таблице, которая потенциально может использоваться в качестве первичного ключа
Surrogate key
Уникальный идентификатор для записи в таблице, обычно присваивается базой данных, а не самим пользователем
#database #sql
👍8🔥4🍾2
Media is too big
VIEW IN TELEGRAM
Стереотипы о программистах на различных языках согласно AI
😁30💩20🥰1👏1🤔1😢1
Схематически компиляция кода на C++ в exe-файл с помощью компилятора Microsoft Visual C++
#cpp
#cpp
👍11🍓6🔥3