en
Feedback
METANIT.COM

METANIT.COM

Open in Telegram

Канал о программировании и разработке сайта metanit.com

Show more
6 083
Subscribers
No data24 hours
-77 days
-5530 days
Posts Archive
Также Microsoft выпустил первые превью-сборки новой среды Visual STudio 2026 для инсайдеров - среды, которая должна прийти на смену текущей Visual Studio 2022 https://visualstudio.microsoft.com/insiders/ Новые фичи: ### Производительность Расширенные элементы управления редактором Исключения файлов при поиске ### GitHub Copilot Добавление своей модели в чат Адаптивная вставка Действия Copilot в контекстном меню Рендеринг диаграммы Mermaid URL-контекст Copilot Улучшенные ответы Copilot ### Отладка и диагностика Profiler Copilot Agent Шаблон проекта BenchmarkDotNet Диагностика CMake стала ещё лучше Оптимизация массивов нулевой длины с Copilot Новый интерфейс запуска Profiler Встроенные значения после возврата Поиск в текстовом визуализаторе ### Инструментарий Git Встроенные комментарии к pull-запросам Улучшенный искусственный интеллект для проверки кода Контекст Git в чате Copilot ### IDE Покрытие кода Новый внешний вид и функциональность Современный интерфейс настроек ### Облако Устаревание облачных сервисов (расширенная поддержка) Обновление инструментов Service Fabric ### .NET .NET 10 и C# 14 Улучшения Hot Reload Улучшения редактора Razor ### C++ Поддержка Toolset Windows Устаревание и удаление функций C++ Обновления C++ STL Улучшение Class View Обновления шаблонов проектов Подсветка синтаксиса для атрибутов C++ Улучшения clang-tidy

Вышел первый RC для .NET 10 вместе с C# 14 и обновлениями для .NET MAUI, Entity Framework Core, ASP NET Core и т.д., релиз которого ожидается в ноябре 2025. Этот релиз-кандидат главным образом ориентирован на улучшение качества. Из обновлений следуюет отметить следующие (по категориям): 🌐ASP.NET Core и Blazor Поддержка постоянного состояния компонентов для улучшенной навигации Новые метрики идентификации ASP.NET Core Улучшения валидации для Minimal API и Blazor Улучшения генерации схемы OpenAPI 📱 .NET MAUI Диагностика и отслеживание метрик События HybridWebView Свойство RefreshView IsRefreshEnabled .NET для Android: экспериментальная поддержка среды выполнения CoreCLR 🖥 Windows Forms Темный режим теперь полностью интегрирован Уточнение по ControlStyles ApplyThemingImplicitlyUsage Несколько дополнительных улучшений в рендеринге, асинхронности и управлении состоянием 🎁 Entity Framework Core Векторный поиск в SQL Server Поддержка типов JSON в SQL Server Полнотекстовый и гибридный поиск в Cosmos Сложные типы Заполнение для параметризованных коллекций Подробнее: https://devblogs.microsoft.com/dotnet/dotnet-10-rc-1/

Функциональные индексы (продолжение предыдущего поста) Что такое функциональный индекс? * Обычный индекс говорит: «Я помогу тебе быстрее найти эту колонку». * Функциональный индекс говорит: «Я помогу тебе быстрее найти результат этой функции». Пример: -- Обычный фильтр (медленно) WHERE EXTRACT(YEAR FROM order_date) = 2023; -- С функциональным индексом CREATE INDEX idx_order_year ON orders ((EXTRACT(YEAR FROM order_date))); Теперь функция YEAR() не вычисляется для каждой строки. Система просто ищет значение, как в словаре. Почему это важно? Вы постоянно используете такие запросы: * LOWER(email) → поиск без учёта регистра * SUBSTRING(code, 1, 4) → частичное совпадение * price * quantity → вычисляемые столбцы * EXTRACT(MONTH FROM signup_date) → фильтрация по месяцу Угадайте что? Все они работают медленно без функционального индекса. Когда следует использовать? * Вы применяете фильтры к вычисляемым значениям * Выполняете операции с датами, строками или вычислениями в столбцах * Ваше приложение ориентировано на чтение данных * Вы хотите, чтобы запросы выполнялись менее чем за 100 мс Важно запомнить: 1. Функциональные индексы хранят результат функции 2. Они избегают повторного вычисления при каждом запросе 3. Делают медленные фильтры молниеносными 4. Но... они занимают место на диске и работают только с детерминированными функциями Сохраняйте спокойствие и изучайте SQL!

Функциональные индексы (описание в следующем посте)
Функциональные индексы (описание в следующем посте)

На SQL теперь тоже пишут игры. Проект DOOMQL развивает вариант игры DOOM на SQL и способный выполняться внутри СУБД CedarDB, частично совместимой с PostgreSQL. Игра поддерживает многопользовательский режим и выполняет отрисовку при помощи ASCII-графики. Все компоненты игры (в том числе рендеринг, синхронизация состояния игроков в многопользовательской игре, игровой цикл) написаны на SQL. Игровая логика реализована при помощи таблиц, представлений и хранимых процедур Игровой цикл для обработки и обновления игрового состояния запускается с помощью 20-строчного shell-скрипта, который 30 раз в секунду выполняет SQL-код для расчёта траектории выстрелов, анализа столкновений, обработки ввода и возрождения игроков 3D-рендер на SQL поддерживает трассировку лучей, проекцию спрайтов на 3D-сцену, обработку перекрытия объектов и HUD-интерфейс. Вся логика рендеринга реализована при помощи представлений. Синхронизация состояния игроков осуществляется при помощи таблиц и представлений https://github.com/cedardb/DOOMQL

Мы ищем людей, которые хотят работать турагентом из дома 💰Оплата от 150.000 рублей в месяц Образование, место жительства, тр
Мы ищем людей, которые хотят работать турагентом из дома 💰Оплата от 150.000 рублей в месяц Образование, место жительства, трудовой стаж — не важны! Подходит, как для подработки / декретного отпуска, так и для полной занятости. Если заинтересовались, то для старта нужно: — зарегистрироваться на сайте — пройти трехдневный курс На что можно рассчитывать: ✅ удаленная работа ✅ зп от 150.000 рублей (потолка нет) ✅ стабильная подработка, если не хотите уходить с основной работы Количество бесплатных мест ограничено. Успейте пройти тест и оставить заявку. ⚡ Набор заканчивается в понедельник! Зарегистрироваться #реклама интревел.рф О рекламодателе

«Лаборатория Касперского» выпустила обзорную статью на тему безопасности мессенджеров, в которой сравнила различные мессендже
«Лаборатория Касперского» выпустила обзорную статью на тему безопасности мессенджеров, в которой сравнила различные мессенджеры, в частности, по разрешениям, и пояснила, что мобильное приложение Max даже несколько «отстаёт» по своим «аппетитам» от других мессенджеров. «В последнее время (особенно в контексте запуска мессенджера Max) обсуждение разрешений, требуемых современным мессенджерам, идёт особенно горячо. Давайте сравним разрешения, запрашиваемые тремя самыми актуальными для российских пользователей мессенджерами под Android: Telegram, WhatsApp и Max», — рассказали в «Лаборатории Касперского». Эксперты компании выяснили, что запрашиваемые разрешения в целом примерно одинаковы для популярных приложений-мессенджеров, а Max тут даже не особо выделяется. https://www.kaspersky.ru/blog/messengers-threats-and-countermeasures/40451/

Как работает Big O * Big O показывает, насколько медленнее становится код при увеличении входных данных. * Для конкретного ал
Как работает Big O * Big O показывает, насколько медленнее становится код при увеличении входных данных. * Для конкретного алгоритма существуют три случая: наилучший, средний и наихудший. * Кроме того, существуют оценки Big O для эффективности использования времени, памяти и хранилища. * Big O помогает понять, какие структуры данных или алгоритмы демонстрируют лучшую производительность. * Big O показывает скорость роста, а не фактическую скорость выполнения. Поэтому важно тестировать входные данные на практике. Сложность Big-O * O(1) — Доступ к значению в хеш-таблице по ключу. * O(n!) — Добавление вложенного цикла для каждого ввода. * O(2^n) — Наивное рекурсивное вычисление последовательности Фибоначчи. * O(log n) — Алгоритмы «разделяй и властвуй». * O(n) — Проход по списку. * O(n log n) — Итерации, использующие «разделяй и властвуй». * O(n^2) — Вложенный цикл на одном и том же вводе.

#### Аутентификация и авторизация (OAuth, JWT, сессии) (продолжение предыдущего поста) ##### Что такое аутентификация? Аутентификация — это процесс проверки подлинности пользователя или системы. Она гарантирует, что человек или приложение, пытающиеся получить доступ к системе, действительно являются теми, за кого себя выдают. → Пример: Вход в систему с использованием имени пользователя и пароля. ##### Что такое авторизация? Авторизация определяет, какие действия аутентифицированному пользователю разрешено выполнять в системе. Она устанавливает разрешения и уровни доступа. → Пример: Обычный пользователь может просматривать контент, в то время как администратор может добавлять или удалять контент. ##### OAuth (Open Authorization) → Стандартный протокол для аутентификации и авторизации на основе токенов. → Позволяет пользователям входить в систему через сторонних провайдеров, таких как Google, Facebook или GitHub. → Пример: Кнопка «Войти через Google» на веб-сайтах. ##### JWT (JSON Web Token) → Компактный и безопасный формат токенов, используемый для аутентификации. → Содержит закодированную информацию о пользователе и подписывается для обеспечения целостности. → Часто используется в аутентификации без сохранения состояния, когда сервер не хранит данные о сессии. → Пример: После входа в систему сервер выдаёт JWT, который клиент отправляет с каждым запросом. ##### Сессии → Метод, при котором сервер временно хранит данные аутентификации пользователя. → Идентификатор сессии сохраняется в браузере клиента (cookie) и сопоставляется с данными на стороне сервера. → Пример: Традиционные веб-приложения, где пользователь остаётся авторизованным до истечения сессии или до выхода из системы. ##### Ключевые различияOAuth: Передаёт аутентификацию внешним провайдерам. → JWT: Аутентификация без сохранения состояния, токены хранятся на клиенте. → Сессии: Аутентификация с сохранением состояния, данные хранятся на сервере.

#### Аутентификация и авторизация (OAuth, JWT, сессии) (описание в следующем посте)
#### Аутентификация и авторизация (OAuth, JWT, сессии) (описание в следующем посте)

Простая CRM в Битрикс24 Битрикс24 не грузит менеджеров лишними действиями. Всё автоматизировано: задачи ставятся сами, отчёты
Простая CRM в Битрикс24 Битрикс24 не грузит менеджеров лишними действиями. Всё автоматизировано: задачи ставятся сами, отчёты собираются в один клик, продажи растут. CRM, которая экономит нервы и деньги. ✅ Начните бесплатно Зарегистрироваться #реклама 16+ bitrix24.ru О рекламодателе

Шпаргалка по интервью по API (продолжение предыдущего поста) Основы API *Что такое API?* API — это программное обеспечение, которое действует как посредник между приложениями, помогая им взаимодействовать друг с другом с помощью HTTP-запросов. *Типы API* * Открытые API * Закрытые API * Партнерские API * Композитные API Тестирование API *Что такое тестирование API?* Тестирование API — это стратегия тестирования программного обеспечения, которая гарантирует, что API стабильны, функциональны, надежны и безопасны. *Преимущества тестирования API* * Удобство * Лучше, чем тестирование GUI * Независимость от языка * Гибкость в выборе языка программирования REST vs SOAP *REST* * Использует XML или JSON * Поддерживает HTTP * Быстрее, чем SOAP * Поддерживает кэширование *SOAP* * Использует только XML * Поддерживает HTTP и HTTPS * Более безопасен, чем REST * Не поддерживает кэширование API Testing vs Unit Testing *Тестирование API* * Использует тестирование «черного ящика» * Проверяет функциональность *Юнит-тестирование* * Использует тестирование «белого ящика» * Проверяет отдельные блоки кода CRUD Эта аббревиатура представляет четыре основные операции, распространенные в реляционных базах данных: создание, чтение, обновление и удаление. Архитектура REST API Схема показывает взаимодействие между клиентом и сервером через REST API, включая запросы и ответы. Дополнительные вопросы об API *Что такое аутентификация API?* Аутентификация API — это процесс проверки прав доступа пользователя к данным и ресурсам, которые он запрашивает. *Что такое Runscope?* Runscope — это веб-приложение, используемое для мониторинга, отладки и тестирования производительности веб-сервисов API. *Что такое документация API?* Документация API — это технический контент, который подробно описывает API. Она включает все, что нужно знать об API, от эффективной интеграции до обновлений жизненного цикла API, проектирования и покрытия тестирования.

Шпаргалка по интервью по API (описание в следующем посте)
Шпаргалка по интервью по API (описание в следующем посте)

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

Проблема N+1 запросов (продолжение к предущему посту) Проблема N+1 запросов - это ситуация, когда один запрос возвращает набор результатов, и для каждого из них требуется дополнительный запрос. Количество запросов, необходимых для загрузки страницы, зависит от размера набора результатов, что приводит к низкой производительности при большом значении N. Пример (псевдокод):
// 1 запрос
users = db.query('SELECT * FROM users');

// ...что приводит к N дополнительным запросам
for (const user of users) {
  posts = db.query(`
      SELECT * FROM posts 
      WHERE user_id = user->id`);
  user.posts = posts;
}
// Теперь можно вернуть результат запрашивающей стороне
Вместо этого можно переписать код как один запрос с JOIN, чтобы получить все данные за одно обращение к БД:
results = await db.query(
  `SELECT u.*, p.* 
    FROM users u 
    LEFT JOIN posts p 
    ON u->id = p->user_id`);
Для некоторых запросов влияние N+1 может быть минимальным. Если N — небольшое число, всё может казаться «быстрым», если БД хорошо настроена и находится рядом с серверами приложений. Но при N=100 начинают проявляться замедления, и БД загружается сильнее, чем необходимо. Устранение таких проблем улучшает пользовательский опыт и снижает нагрузку на БД.

Проблема N+1 запросов (продолжение в следующем посте)
Проблема N+1 запросов (продолжение в следующем посте)

В результате фишинга атакующим удалось перехватить учётные данные сопровождающего 18 популярных NPM-пакетов, в сумме загружен
В результате фишинга атакующим удалось перехватить учётные данные сопровождающего 18 популярных NPM-пакетов, в сумме загруженных более 2 миллиардов раз в неделю. Для скомпрометированных пакетов атакующие успели выпустить новые версии, содержащие вредоносный код. Это самая крупная атака на репозиторий NPM, которая затрагивает не только напрямую атакованные проекты, но сотни тысяч пакетов, зависимых от них. Среди прочего, вредоносные обновления были выпущены для пакетов debug, chalk, ansi-styles, color-convert, wrap-ansi, supports-color и ansi-regex, имеющих более 200 млн загрузок за последнюю неделю. Отдельно выделяются пакеты chalk и debug, у которых имеется 129286 и 55289 зависимостей. Пакеты были скомпрометированы из-за утечки параметров учётной записи Джоша Джунона (Josh Junon), который является сопровождающим debug-js, chalk и множества библиотек для консольных приложений. https://www.opennet.ru/opennews/art.shtml?num=63845

9 основных паттернов для создания отказоустойчивых приложений (продолжение предыдущего поста) ### 1. Предохранитель (Circuit Breaker) * Работает как электрический предохранитель. * Когда сервис сталкивается с повторяющимися сбоями, предохранитель срабатывает и прекращает отправку запросов к этому сервису на определённый период. * Это позволяет проблемному сервису восстановиться, не подвергаясь дополнительной нагрузке. Основные состояния предохранителя: * Закрыто: запросы пропускаются. * Открыто: запросы немедленно отклоняются с ошибкой. Эффективен для защиты от каскадных сбоев и изоляции проблемных сервисов. ### 2. Повтор запроса (Retry) * При сбое запроса система автоматически повторяет его определённое количество раз перед отказом. * Помогает преодолеть временные ошибки, такие как сетевые сбои или временная недоступность. * Повышает доступность системы и маскирует временные ошибки. * Важно учитывать штормы повторных запросов (когда чрезмерные повторы перегружают систему) и использовать экспоненциальное отступление (увеличение времени между повторами). ### 3. Таймаут (Timeout) * Устанавливает максимальное время ожидания для запроса. * Если ответ не получен в течение заданного периода, запрос считается неудачным. ### 4. Переборка (Bulkhead) * Паттерн переборка изолирует различные части приложения в отдельные пулы или отсеки. * Такая изоляция ограничивает влияние сбоев или перегрузки в одном отсеке, предотвращая их распространение на всю систему. ### 5. Ограничение скорости (Rate Limiting) * Контролирует частоту входящих запросов для защиты системы от перегрузки. * Защищает от атак типа «отказ в обслуживании», обеспечивает справедливое использование и помогает поддерживать стабильность системы. ### 6. Запасной вариант (Fallback) * Предоставляет альтернативный (часто менее оптимальный) ответ или действие при сбое основного. * Повышает доступность системы и улучшает пользовательский опыт, обеспечивая определённый уровень сервиса даже при недоступности основной функции. ### 7. Хеджирование (Hedging) * Отправляет дублирующие запросы к нескольким идентичным сервисам и использует самый быстрый ответ. * Снижает влияние медленных ответов и сбоев, улучшая отзывчивость системы. ### 8. Сброс нагрузки (Load Shedding) * Отбрасывает некритичные запросы при перегрузке системы для защиты её основной функциональности. * Помогает поддерживать стабильность и доступность системы при пиковых нагрузках. ### 9. Обратное давление (Backpressure) * Имеет некоторое сходство с другими паттернами отказоустойчивости. Основной механизм обратного давления — это петля обратной связи между отправителем (производителем данных) и получателем (потребителем данных). Потребитель сигнализирует о своей пропускной способности производителю, позволяя тому динамически регулировать скорость вывода данных. Существует несколько стратегий обратного давления: * Реактивный запрос — потребитель явно запрашивает данные у производителя, получая их в своём темпе. * Ограничение скорости — производитель ограничивает скорость вывода данных на основе обратной связи от потребителя. * Буферизация — используется буфер для временного хранения данных, когда потребитель работает медленно.

9 основных паттернов для создания отказоустойчивых приложений (продолжение в следующем посте)
9 основных паттернов для создания отказоустойчивых приложений (продолжение в следующем посте)

Шпаргалки по математике для студентов #math
+4
Шпаргалки по математике для студентов #math