METANIT.COM – Telegram
METANIT.COM
5.94K subscribers
1.69K photos
81 videos
9 files
1.06K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Доля межсайтового скриптинга (XSS) в кибератаках на российские компании выросла до 40% в первом квартале 2025 года, свидетельствуют статистические данные «Вебмониторэкс». Это на 10 п. п. больше, чем годом ранее. XSS позволяет злоумышленникам внедрять вредоносный код в сайты и красть данные пользователей.
XSS (Cross-Site Scripting) — кибератака, при которой злоумышленник внедряет вредоносный код (обычно JavaScript) на уязвимый сайт, веб-приложение или в API (Application Programming Interface, позволяет получать информацию с сайта в обход пользовательского интерфейса). Когда пользователь заходит на такой сайт, скрипт автоматически выполняется в его браузере, что может привести к краже данных, подмене страниц или другим атакам.
Используя уязвимости сайтов, злоумышленники могут получать доступ к пользовательским данным. Такие атаки могут привести к утечкам данных, за которые уже с конца мая бизнесу грозят крупные штрафы. Эксперты считают, что это «вечная» уязвимость и владельцам веб-сервисов нужно постоянно обновлять свои средства защиты.
XSS останется «вечной» уязвимостью. Это связано с человеческим фактором при разработке, сложности защиты от подобных атак и их эволюции за счет применения ИИ.
https://www.kommersant.ru/doc/7714238
🤯11🤔5👍3
Почти половина программ, заменивших приложения для iOS, уязвимы с точки зрения утечки данных их пользователей. Зачастую доступ к данным в этих программах легко получить без разрешения, они крайне небрежно защищены от хакеров, отмечают участники рынка.

Почти половина (46%) российских веб-приложений содержат критические уязвимости, которые могут привести к утечке данных. Это следует из материалов компании «Солар» (входит в «Ростелеком»)

Например, главными уязвимостями в финансовых веб-приложениях, которые всегда интересуют хакеров, являются недостаток контроля доступа, эта проблема встречается в 78% случаев

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

Но и скачиваемые мобильные сервисы опасны. Зачастую приложение собирает информацию, вообще не уведомляя об этом пользователя, причем передается она обычно по открытым каналам.
https://iz.ru/1885493/valerii-kodachigov/zona-otstupa-polovina-zamenitelej-mobilnyh-prilozhenij-v-rf-nebezopasna
👍3😱2🤯1😢1🤡1
Процесс создания и выполнения программы (на примере программы на Си): от исходного кода до выполнения
🔥28👍10👏2🤨1
Компоненты MAC-адреса
17👍6👏1
Дорожная карта по изучению генеративного AI
👍19🔥2🥰2😐1
На проходящей конференции Qt World Summit Страуструп, создатель языка C++, дал советы по использованию C++:

«Никогда не используйте необработанный указатель в качестве дескриптора ресурса, например. Тогда вы нарушаете все, что я сказал. Никогда не передавайте набор элементов одним необработанным указателем, например, указателем на массив. Вы не знаете, сколько там элементов. Вы не можете провести достойную проверку диапазона. Если вы передаете вектор, он знает, сколько у него элементов, он знает, какие у него типы.

«Я почти никогда больше не использую приведения типов, кстати, это общая программная штука. И если вы не используете приведения типов, есть много ошибок типов, которые вы не можете сделать.

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

"оператор new и оператор delete не должны быть в коде приложения"

Кроме того, Страуструп выступает за использования импорта модулей вместо стандартных include, так как использование #include является транзитивным (порядок имеет значение), вызывает повторную компиляцию и может привести к тонким ошибкам. Напротив, импорт не является транзитивным, и большую часть компиляции можно выполнить только один раз.

Также Страуструп высказался за наличие нескольких пустьи не совсем совместимых компиляторов C++, поскольку это увеличивает конкуренцию и простор для инноваций нежели, если бы существовал бы единый компилятор.
https://devclass.com/2025/05/09/interview-bjarne-stroustrup-on-21st-century-c-ai-risks-and-why-the-language-is-hard-to-replace/
👍1711❤‍🔥5🤔2🤡1
Microsoft снова призывает разработчиков использовать React Native для разработки настольных приложений для Windows, несмотря на свои инвестиции в другие подходы с использованием C# или C++.
Инженер-программист Кьяра Муни опубликовала пост о том, как команда Office использует React Native, заявив, что это «повысило надежность приложений и улучшило их опыт разработки».
Муни выделяет три ключевых преимущества React Native.
1)разработчики могут обмениваться навыками между веб- и настольными версиями приложения, используя JavaScript/TypeScript
2)React Native позволяет создавать кроссплатформенные приложения, использующие элементы управления, встроенные в операционную систему
3)можно встраивать компоненты React Native в существующие приложения Windows

Разработчики Windows часто замечали, что команда Office в Microsoft не принимает настольные фреймворки, которые компания создает для других. Office никогда не использовал .NET Windows Forms или WPF (Windows Presentation Foundation), например.
Сегодня то же самое, Office в основном создан с использованием C++ и React Native, а не с использованием .NET MAUI (Multi-platform app UI), например. Вообщем, почему Microsoft использует сторонние решение, а не полагается на свой собственный стек технологий, до сих пор для многих остается загадкой.

https://devblogs.microsoft.com/react-native/2025-05-09-office-modernize/
🤣40🤯7🤬7😢4👍31👎1😁1🤡1
Сравнение протоколов HTTP/2 и HTTP/3
👍9🥰1👏1🤮1
15 мая 2025 года языку Rust исполнилось 10 лет. Хотя проект Rust был основан в 2006 году, выпуск 0.1 был сформирован в 2012 году, а первая стабильная версия вышла 15 мая 2015 года.
Rust сфокусирован на безопасной работе с памятью, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Команда разработчиков Rust отпраздновала 10-летие выпуском нового релиза - Rust 1.87. Основные изменения:
- в стандартную библиотеку добавлены анонимные каналы (anonymous pipe), для создания которых применяется метод std::io::pipe()
- разрешён вызов из safe‑кода большинства встроенных в компилятор функций std::arch
- из блоков asm! с ассемблерным кодом разрешено осуществлять переходы на блоки с кодом на языке Rust, что упрощает разработку низкоуровневого кода
- разрешено точно указывать захваченные обобщённые типы и время жизни в определениях трейтов с использованием impl Trait;
https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/
🎉10🤮4👏1
В сообществе Python сообщили, что Microsoft уволила команду программистов проекта Faster CPython (коллекции макро‑тестов для языка программирования Python), включая технического руководителя Марка Шеннона и ведущих разработчиков ядра Python из команды Faster CPython.
Команда разработчиков Faster CPython узнала об увольнении в дороге на Python Language Summit на PyCon.
https://www.reddit.com/r/Python/comments/1kmwdbu/microsoft_layoffs_hit_faster_cpython_team/
Напомню, что ранее Microsoft провел сокращения ключевых и опытных разработчиков в командах, которые занимаются Android, .NET MAUI, TypeScript
😢33🤯10👍3👎3🤔2😁1
Корпорация Microsoft выпустила обновление безопасности для ОС Windows 10 под номером KB5058379, установка которого полностью выводит компьютер из строя. После его внедрения в систему она перестает запускаться – вместо этого она выводит на дисплей меню восстановления (Windows Recovery) и заставляет пользователя ввести ключ BitLocker,
KB5058379 — это обязательное обновление безопасности. Оно выпускается для всех пользователей (за некоторыми исключениями), включая предприятия и корпорации, и у тех, кто еще пользуется Windows 10, нет возможности отказаться от его установки. Можно лишь отложить инсталляцию, но, если не предпринять меры и не выключить службу обновлений, этот патч рано или поздно проникнет в систему.
Есть мнение, что таким незамысловатым способом Microsoft хочет заставить пользователей перейти на Windows 11, так как поддержка Windows 10 заканчивается в октябре 2025 г
Существует способ устранения ошибки с BitLocker Recovery, вызванной патчем KB5058379. Для этого необходимо в BIOS отключить Intel TXT / Trusted Execution и позволить KB5058379 завершить установку.
https://www.windowslatest.com/2025/05/15/windows-10-kb5058379-locks-pcs-bitlocker-recovery-triggered-on-boot-bsods/
🤡69😭6🤯5🤣4
Выполнение выражения в языках со статической и динамической типизацией
👍23❤‍🔥31👏1
В руководства по GTK для C и C# добавлены новые статьи
Для Си
Древовидное представление и TreeExpander
https://metanit.com/c/gtk/3.11.php
Выпадающий список DropDown
https://metanit.com/c/gtk/3.10.php

Для C#
Древовидное представление и TreeExpander
https://metanit.com/sharp/gtk/5.11.php
Выпадающий список DropDown
https://metanit.com/sharp/gtk/5.10.php
👍22🔥4🥰4👏1
Каждой бэкэнд-системе необходим способ обработки запросов и выполнения задач - шаблон выполнения. Это фундаментальное архитектурное решение, которое существенно влияет на производительность и масштабируемость вашего приложения.
Рассмотрим базовые шаблоны выполнения на бэкенде:

[1.] Поток на запрос (Thread-per-Request)
◾️ Каждый входящий запрос получает свой собственный поток.
◾️ Этот поток делает все для этого запроса - считывает данные, обрабатывает его, отправляет ответ.

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

[2.] Модель Реактор, управляемая событиями (Reactor Pattern)
◾️ Один поток (или небольшая группа) обрабатывает все.
◾️ Он прослушивает события (например, входящие запросы, завершенные сетевые операции), а затем запускает обратные вызовы для их обработки.

+ Идеально подходит для обработки большого количества соединений (например, веб-серверов), легковесный и позволяет избежать накладных расходов на создание множества потоков.
- Если выполнение задачи занимает слишком много времени, это может заблокировать весь цикл событий и привести к тому, что сервер перестанет отвечать.
(Для решения этой проблемы и обеспечения оперативности можно использовать такие методы, как фрагментация, рабочие потоки или отдельные процессы.)

При этом надо понимать, что есть два типа задач:

1) Задачи, связанные с вводом-выводом (I/O-Bound Tasks), которые представляют Неблокируемый ввод-вывод (Non Blocking I/O)
◾️ Эти задачи (например, сетевые запросы, файловые операции) по своей сути асинхронны и хорошо подходят для моделей, управляемых событиями.
◾️ Цикл событий делегирует их базовой системе и переходит к другим задачам.
◾️ Когда операция I /O завершается, цикл событий получает уведомление и выполняет связанный обратный вызов.
◾️ Этот механизм гарантирует, что цикл событий остается отзывчивым даже при наличии множества одновременных операций I /O .

2) Задачи, связанные с процессором (CPU-Bound Tasks)
◾️ Эти задачи требуют сложных вычислений, выполнение которых может занять значительное время.
◾️ В чисто однопоточной модели, управляемой событиями, длительная задача, связанная с ЦП, может заблокировать цикл событий, задерживая выполнение других задач и потенциально приводя к тому, что сервер перестает отвечать.

[3.] Asynchronous => Coroutines, Promises, Futures
◾️ A way of writing code that allows a task to start and then continue with other work without waiting for that task to finish, often using callbacks, promises or async/await.

[3.] Асинхронное выполнение - это такие инструменты как корутины (Coroutines), промисы (Promises), Futures
◾️ Это шаблон написания кода, который позволяет запустить задачу, а затем продолжить другую работу, не дожидаясь завершения этой задачи, часто с использованием обратных вызовов, промисов или async/await.

При этом все асинхронные системы управляются событиями, поскольку асинхронные операции генерируют события (завершение, ошибка), которые обрабатываются циклом событий.
Однако, не все системы, управляемые событиями, обязательно являются асинхронными.
Простая система, управляемая событиями, по-прежнему может использовать блокирующий ввод-вывод, где цикл событий будет ожидать завершения каждого события, прежде чем переходить к следующему.
👍103👏1