Также вышла новая версия среды разработки Visual Studio - Visual Studio 2026
Среди нововведений следует отметить главным образом большое внедрение и интеграция AI, поддержка визуализации с помощью диаграмм Mermaid сложных структур данных, рабочих процессов и взаимосвязей между разными компонентами, а также большие возможности для отладки приложений на .NET MAUI и C++, большая интеграция с Git и т.д.
Загрузить можно с оф сайта со страницы:
https://visualstudio.microsoft.com/downloads/
Полный список изменений: https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-notes
Среди нововведений следует отметить главным образом большое внедрение и интеграция AI, поддержка визуализации с помощью диаграмм Mermaid сложных структур данных, рабочих процессов и взаимосвязей между разными компонентами, а также большие возможности для отладки приложений на .NET MAUI и C++, большая интеграция с Git и т.д.
Загрузить можно с оф сайта со страницы:
https://visualstudio.microsoft.com/downloads/
Полный список изменений: https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-notes
❤28😍8🔥4🤮3👎1
Шпаргалка по важным сочетаниям клавиш для компьютера
Основные сочетания:
- CTRL+A — Выделить всё
- CTRL+C — Копировать
- CTRL+X — Вырезать
- CTRL+V — Вставить
- CTRL+Z — Отменить действие
- CTRL+B — Полужирный шрифт
- CTRL+U — Подчёркивание
- CTRL+I — Курсив
Функциональные клавиши:
- F1 — Вызов справки
- F2 — Переименовать выделенный объект
- F3 — Поиск всех файлов
- F4 — Открыть выпадающий список файлов в диалоговых окнах
- F5 — Обновить текущее окно
- F6 — Перемещение фокуса в Проводнике Windows
- F10 — Активировать опции строки меню
Сочетания с ALT:
- ALT+TAB — Переключение между открытыми приложениями
- ALT+F4 — Закрыть программу/текущее окно
- ALT+F6 — Переключение между окнами текущей программы
- ALT+ENTER — Открыть диалоговое окно «Свойства»
- ALT+SPACE — Системное меню текущего окна
- ALT+¢ — Открыть выпадающие списки в диалоговых окнах
Прочие сочетания:
- BACKSPACE — Переход в родительскую папку
- CTRL+ESC — Открыть меню «Пуск»
- CTRL+ALT+DEL — Открыть диспетчер задач / перезагрузить компьютер
- CTRL+TAB — Перемещение по вкладкам свойств
- CTRL+SHIFT+DRAG — Создать ярлык (также: правый клик + перетаскивание)
- CTRL+DRAG — Копировать файл
- ESC — Отменить последнее действие
- SHIFT — Удерживая SHIFT, вставить CD‑ROM, чтобы обойти автозапуск
- SHIFT+DRAG — Переместить файл
- SHIFT+F10 — Открыть контекстное меню (как правый клик)
- SHIFT+DELETE — Полное удаление (минуя Корзину)
- ALT+подчёркнутая буква — Открыть соответствующее меню
Управление курсором в документах:
- HOME — В начало строки / крайнее левое положение поля или экрана
- END — В конец строки / крайнее правое положение поля или экрана
- CTRL+HOME — Вверх (в начало)
- CTRL+END — Вниз (в конец)
- PAGE UP — Прокрутить документ или диалоговое окно на страницу вверх
- PAGE DOWN — Прокрутить документ или диалоговое окно на страницу вниз
- КЛАВИШИ СО СТРЕЛКАМИ — Перемещение фокуса в документах, диалоговых окнах и т. д.
- CTRL+> — К следующему слову
- CTRL+SHIFT+> — Выделить слово
Управление деревом в Проводнике Windows (цифровая клавиатура):
- * — Развернуть всё под текущим выделением
- + — Развернуть текущее выделение
- - — Свернуть текущее выделение
- ¦ — Развернуть текущее выделение или перейти к первому дочернему элементу
- ‰ — Свернуть текущее выделение или перейти к родительскому элементу
Специальные символы (ввод через ALT+код):
- ‘ — Открывающая одинарная кавычка (ALT 0145)
- ’ — Закрывающая одинарная кавычка (ALT 0146)
- “ — Открывающая двойная кавычка (ALT 0147)
- ” — Закрывающая двойная кавычка (ALT 0148)
- – — Короткое тире (ALT 0150)
- — — Длинное тире (ALT 0151)
- … — Многоточие (ALT 0133)
- • — Маркер списка (ALT 0149)
- ® — Знак регистрации (ALT 0174)
- © — Знак авторского права (ALT 0169)
- ™ — Товарный знак (ALT 0153)
- ° — Знак градуса (ALT 0176)
- ¢ — Символ цента (ALT 0162)
- ¼ — Одна четверть (ALT 0188)
- ½ — Одна вторая (ALT 0189)
- ¾ — Три четверти (ALT 0190)
Основные сочетания:
- CTRL+A — Выделить всё
- CTRL+C — Копировать
- CTRL+X — Вырезать
- CTRL+V — Вставить
- CTRL+Z — Отменить действие
- CTRL+B — Полужирный шрифт
- CTRL+U — Подчёркивание
- CTRL+I — Курсив
Функциональные клавиши:
- F1 — Вызов справки
- F2 — Переименовать выделенный объект
- F3 — Поиск всех файлов
- F4 — Открыть выпадающий список файлов в диалоговых окнах
- F5 — Обновить текущее окно
- F6 — Перемещение фокуса в Проводнике Windows
- F10 — Активировать опции строки меню
Сочетания с ALT:
- ALT+TAB — Переключение между открытыми приложениями
- ALT+F4 — Закрыть программу/текущее окно
- ALT+F6 — Переключение между окнами текущей программы
- ALT+ENTER — Открыть диалоговое окно «Свойства»
- ALT+SPACE — Системное меню текущего окна
- ALT+¢ — Открыть выпадающие списки в диалоговых окнах
Прочие сочетания:
- BACKSPACE — Переход в родительскую папку
- CTRL+ESC — Открыть меню «Пуск»
- CTRL+ALT+DEL — Открыть диспетчер задач / перезагрузить компьютер
- CTRL+TAB — Перемещение по вкладкам свойств
- CTRL+SHIFT+DRAG — Создать ярлык (также: правый клик + перетаскивание)
- CTRL+DRAG — Копировать файл
- ESC — Отменить последнее действие
- SHIFT — Удерживая SHIFT, вставить CD‑ROM, чтобы обойти автозапуск
- SHIFT+DRAG — Переместить файл
- SHIFT+F10 — Открыть контекстное меню (как правый клик)
- SHIFT+DELETE — Полное удаление (минуя Корзину)
- ALT+подчёркнутая буква — Открыть соответствующее меню
Управление курсором в документах:
- HOME — В начало строки / крайнее левое положение поля или экрана
- END — В конец строки / крайнее правое положение поля или экрана
- CTRL+HOME — Вверх (в начало)
- CTRL+END — Вниз (в конец)
- PAGE UP — Прокрутить документ или диалоговое окно на страницу вверх
- PAGE DOWN — Прокрутить документ или диалоговое окно на страницу вниз
- КЛАВИШИ СО СТРЕЛКАМИ — Перемещение фокуса в документах, диалоговых окнах и т. д.
- CTRL+> — К следующему слову
- CTRL+SHIFT+> — Выделить слово
Управление деревом в Проводнике Windows (цифровая клавиатура):
- * — Развернуть всё под текущим выделением
- + — Развернуть текущее выделение
- - — Свернуть текущее выделение
- ¦ — Развернуть текущее выделение или перейти к первому дочернему элементу
- ‰ — Свернуть текущее выделение или перейти к родительскому элементу
Специальные символы (ввод через ALT+код):
- ‘ — Открывающая одинарная кавычка (ALT 0145)
- ’ — Закрывающая одинарная кавычка (ALT 0146)
- “ — Открывающая двойная кавычка (ALT 0147)
- ” — Закрывающая двойная кавычка (ALT 0148)
- – — Короткое тире (ALT 0150)
- — — Длинное тире (ALT 0151)
- … — Многоточие (ALT 0133)
- • — Маркер списка (ALT 0149)
- ® — Знак регистрации (ALT 0174)
- © — Знак авторского права (ALT 0169)
- ™ — Товарный знак (ALT 0153)
- ° — Знак градуса (ALT 0176)
- ¢ — Символ цента (ALT 0162)
- ¼ — Одна четверть (ALT 0188)
- ½ — Одна вторая (ALT 0189)
- ¾ — Три четверти (ALT 0190)
👍22❤8🐳6🔥2🤡2❤🔥1
10 ноября 2025 года состоялся релиз кроссплатформенной среды разработки Apache NetBeans 28 с поддержкой таких языков программирования и технологий как Java SE, Java EE, PHP, C/C++, JavaScript, Rust и Groovy.
Основные изменения и дополнения в Apache NetBeans 28:
- исправления ошибок и улучшения поддержки систем сборки Gradle, Maven и Ant;
- исправления ошибок и улучшения поддержки Java:
- исправления подсветки кода;
- улучшения в поддержке импорта модулей;
- исправления автодополнения;
- исправления ошибок и улучшения поддержки PHP;
- исправления ошибок и улучшения поддержки CSS:
- добавлена поддержка свойств: margin‑block, pading‑block, scroll‑behavior, conic‑gradient, filter‑effects;
- исправления ошибок и улучшения поддержки Git:
- добавлен пункт меню для удаления локальной ветки;
- добавлен пункт меню для подключения удалённых репозиториев;
- реализовано отображение различий используемых символов новой строки при просмотре изменений;
- добавлен инструмент для кодирования и декодирования текста в Base64, URL и Hex;
- код расширения для VSCode перенесён в отдельный репозиторий;
- обеспечена полная совместимость с Gradle 9;
- устранены множество давних проблем, связанных с разрешением зависимостей проектов и обработкой файлов;
- обновлены встроенные инструменты Gradle до версии 8.11.1;
- теперь по умолчанию используется JDK 25;
- модернизирован ряд внутренних компонентов, включая обновления ASM 9.9 и улучшения системы непрерывной интеграции, расширяющие охват автоматизированного тестирования;
- команда разработчиков NetBeans также удалила встроенное расширение VS Code из основного репозитория — теперь этот проект существует независимо под названием netbeans-vscode.
https://github.com/apache/netbeans/releases/tag/28
https://netbeans.apache.org/front/main/index.html
Основные изменения и дополнения в Apache NetBeans 28:
- исправления ошибок и улучшения поддержки систем сборки Gradle, Maven и Ant;
- исправления ошибок и улучшения поддержки Java:
- исправления подсветки кода;
- улучшения в поддержке импорта модулей;
- исправления автодополнения;
- исправления ошибок и улучшения поддержки PHP;
- исправления ошибок и улучшения поддержки CSS:
- добавлена поддержка свойств: margin‑block, pading‑block, scroll‑behavior, conic‑gradient, filter‑effects;
- исправления ошибок и улучшения поддержки Git:
- добавлен пункт меню для удаления локальной ветки;
- добавлен пункт меню для подключения удалённых репозиториев;
- реализовано отображение различий используемых символов новой строки при просмотре изменений;
- добавлен инструмент для кодирования и декодирования текста в Base64, URL и Hex;
- код расширения для VSCode перенесён в отдельный репозиторий;
- обеспечена полная совместимость с Gradle 9;
- устранены множество давних проблем, связанных с разрешением зависимостей проектов и обработкой файлов;
- обновлены встроенные инструменты Gradle до версии 8.11.1;
- теперь по умолчанию используется JDK 25;
- модернизирован ряд внутренних компонентов, включая обновления ASM 9.9 и улучшения системы непрерывной интеграции, расширяющие охват автоматизированного тестирования;
- команда разработчиков NetBeans также удалила встроенное расширение VS Code из основного репозитория — теперь этот проект существует независимо под названием netbeans-vscode.
https://github.com/apache/netbeans/releases/tag/28
https://netbeans.apache.org/front/main/index.html
GitHub
Release Apache NetBeans 28 · apache/netbeans
What's Changed
Gradle
Prevents NPE if buildnoscript does not exist by @sdedic in #8716
Maven/Gradle-JUnit Integration: Support nested and toplevel non-public tests and stabiize result extraction...
Gradle
Prevents NPE if buildnoscript does not exist by @sdedic in #8716
Maven/Gradle-JUnit Integration: Support nested and toplevel non-public tests and stabiize result extraction...
👍5❤2👏1💩1
Аспекты проектирования хорошего API
(продолжение предыдующего поста)
1. Idempotency (Идемпотентность) :
* HTTP-методы и их идемпотентность:
* GET, HEAD, PUT, DELETE — идемпотентны, то есть повторные вызовы не изменяют состояние системы.
* POST, PATCH — не идемпотентны, повторные вызовы могут привести к разным результатам.
2. Versioning (Версионирование) :
* Два подхода к версионированию API:
* URL-based Versioning — версия указывается в URL (например,
* Query Parameter Versioning — версия передаётся через параметры запроса (например,
3. Noun-Based Resource Names (Имена ресурсов на основе существительных):
* Принцип построения URL на основе существительных, соответствующих ресурсам (например,
* Связь HTTP-методов с операциями CRUD:
* Create → POST
* Read → GET
* Update → PUT / PATCH
* Delete → DELETE
4. Пример API-запроса (центр изображения):
* Типичный HTTP-запрос с параметрами:
* Метод: GET
* URL:
* Заголовки:
*
*
*
5. Security (Безопасность):
* Применение JWT-токенов (JSON Web Token), который состоит из трёх частей:
* Header (заголовок) — содержит алгоритм шифрования (например, HS256).
* Payload (полезная нагрузка) — данные пользователя (например,
* Signature (подпись) — результат HMACSHA256-хэширования заголовка и полезной нагрузки с использованием секретного ключа.
6. Pagination (Пагинация):
* Механизм разбиения данных на страницы:
* limit — количество элементов на странице (например,
* offset — смещение относительно начала списка (например,
(продолжение предыдующего поста)
1. Idempotency (Идемпотентность) :
* HTTP-методы и их идемпотентность:
* GET, HEAD, PUT, DELETE — идемпотентны, то есть повторные вызовы не изменяют состояние системы.
* POST, PATCH — не идемпотентны, повторные вызовы могут привести к разным результатам.
2. Versioning (Версионирование) :
* Два подхода к версионированию API:
* URL-based Versioning — версия указывается в URL (например,
https://api.example.com/v1/users, https://api.example.com/v2/users).* Query Parameter Versioning — версия передаётся через параметры запроса (например,
https://api.example.com/users?version=1, https://api.example.com/users?version=2).3. Noun-Based Resource Names (Имена ресурсов на основе существительных):
* Принцип построения URL на основе существительных, соответствующих ресурсам (например,
/api/products).* Связь HTTP-методов с операциями CRUD:
* Create → POST
* Read → GET
* Update → PUT / PATCH
* Delete → DELETE
4. Пример API-запроса (центр изображения):
* Типичный HTTP-запрос с параметрами:
* Метод: GET
* URL:
/api/v1/orders?limit=3&offset=0* Заголовки:
*
Host: example.com*
Authorization: Bearer T4dwe!...WE (токен аутентификации)*
Accept: application/json (формат ответа)5. Security (Безопасность):
* Применение JWT-токенов (JSON Web Token), который состоит из трёх частей:
* Header (заголовок) — содержит алгоритм шифрования (например, HS256).
* Payload (полезная нагрузка) — данные пользователя (например,
sub, name, admin, iat).* Signature (подпись) — результат HMACSHA256-хэширования заголовка и полезной нагрузки с использованием секретного ключа.
6. Pagination (Пагинация):
* Механизм разбиения данных на страницы:
* limit — количество элементов на странице (например,
limit=3).* offset — смещение относительно начала списка (например,
offset=0).Telegram
METANIT.COM
Аспекты проектирования хорошего API
(продолжение в следующем посте)
(продолжение в следующем посте)
🔥5❤4👍2💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация формулы многогранника Эйлера:
V - E + F = 2
или
Vertices (вершины) - Edges (ребра) + Faces (грани) = 2
V - E + F = 2
или
Vertices (вершины) - Edges (ребра) + Faces (грани) = 2
❤🔥21🔥10❤4😱3👍1🤪1
Сервис Bloomberry опубликовал исследование о том, как ИИ влияет на рынок труда в США. Аналитики сервиса изучили более 180 млн объявлений о найме за период между январем 2023 и октябрем 2025 и выявили, какие профессии теряют спрос, а какие растут.
В целом рынок труда показал падение числа вакансий примерно на 8% за год, но распределяется оно неравномерно: ИИ усиливает одни профессии и вытесняет другие.
Сильнее просели "креативщики": компьютерные графические художники (-33% г/г), фотографы (-28%), копирайтеры (-28%), журналисты (-22%) и PR-специалисты (-21%). При этом руководителей и продюсеров креативных команд сокращения не так затронули - видимо, компании сокращают именно тех, кто выполняет рутинный продакшен, а не тех, кто управляет стратегией или клиентскими проектами.
А вот ML-инженеры стали самым быстрорастущим направлением (+40% г/г), растет спрос и на специалистов по робототехнике, исследователей, научных сотрудников и инженеров дата-центров - то есть на тех, кто создает и обслуживает инфраструктуру, питающую ИИ-сервисы.
Разработчики программного обеспечения показали стабильность: спрос на них почти не изменился (рост около 2,7%). Незначительный спад наблюдается во фронтенде - частично из-за инструментов автогенерации интерфейсов, но в целом программисты остаются одной из самых "устойчивых" групп белых воротничков. Аналитики данных и специалисты по управлению данными тоже удерживают позиции, без заметных падений или скачков.
По уровням должностей меньше всего сокращения затронули топ-менеджеров (−1,7% против среднего −8%), тогда как на среднем звене и уровне рядовых специалистов падение выше. Аналитики объясняют это тем, что ИИ повышает автономность руководителей и команд, уменьшая число "слоев" между ними.
https://bloomberry.com/blog/i-analyzed-180m-jobs-to-see-what-jobs-ai-is-actually-replacing-today/
В целом рынок труда показал падение числа вакансий примерно на 8% за год, но распределяется оно неравномерно: ИИ усиливает одни профессии и вытесняет другие.
Сильнее просели "креативщики": компьютерные графические художники (-33% г/г), фотографы (-28%), копирайтеры (-28%), журналисты (-22%) и PR-специалисты (-21%). При этом руководителей и продюсеров креативных команд сокращения не так затронули - видимо, компании сокращают именно тех, кто выполняет рутинный продакшен, а не тех, кто управляет стратегией или клиентскими проектами.
А вот ML-инженеры стали самым быстрорастущим направлением (+40% г/г), растет спрос и на специалистов по робототехнике, исследователей, научных сотрудников и инженеров дата-центров - то есть на тех, кто создает и обслуживает инфраструктуру, питающую ИИ-сервисы.
Разработчики программного обеспечения показали стабильность: спрос на них почти не изменился (рост около 2,7%). Незначительный спад наблюдается во фронтенде - частично из-за инструментов автогенерации интерфейсов, но в целом программисты остаются одной из самых "устойчивых" групп белых воротничков. Аналитики данных и специалисты по управлению данными тоже удерживают позиции, без заметных падений или скачков.
По уровням должностей меньше всего сокращения затронули топ-менеджеров (−1,7% против среднего −8%), тогда как на среднем звене и уровне рядовых специалистов падение выше. Аналитики объясняют это тем, что ИИ повышает автономность руководителей и команд, уменьшая число "слоев" между ними.
https://bloomberry.com/blog/i-analyzed-180m-jobs-to-see-what-jobs-ai-is-actually-replacing-today/
Bloomberry
I analyzed 180M jobs to see what jobs AI is actually replacing today
Last Updated: November 14, 2025What impact is AI having on the job market? Everyone has an opinion, but…
🤔11👍5❤2💯1🖕1
Google выпустил новые версии фреймворка Flutter и языка Dart - Flutter 3.38 и Dart 3.10. Основные нововведения.
#### Нововведения в Dart
- Dot Shorthands
Новая фича, позволяющая опускать типы, которые Dart может вывести автоматически, для более краткого кода. Примеры:
Преимущества: Уменьшает boilerplate-код, повышает читаемость и ускоряет разработку. Поддерживает именованные конструкторы. Активировано по умолчанию в Dart 3.10 и Flutter 3.24.
#### Нововведения в Flutter
##### Улучшения веб-разработки
- Файл конфигурации `web_dev_config.yaml`:
Новый файл в корне проекта для настройки хоста, порта, сертификатов и заголовков при запуске
Преимущества: Обеспечивает консистентность настроек в команде и упрощает управление.
- Настройки прокси:
Поддержка прокси в конфиг-файле для переадресации запросов на другие серверы.
Преимущества: Упрощает разработку веб-клиентов с динамическими эндпоинтами.
- Расширенный Hot Reload на веб:
Stateful hot reload включен по умолчанию с
Преимущества: Ускоряет итерации без перезапуска приложения.
##### Улучшения фреймворка
- OverlayPortal:
Добавлен
Преимущества: Упрощает создание глобальных UI-элементов (например, уведомлений), игнорируя ограничения родителя.
- Навигация на Android:
Predictive back transitions включены по умолчанию в
Преимущества: Соответствует нативному поведению Android для плавного UX.
- Интеграция с десктопом (Windows):
Доступ к списку подключенных дисплеев с деталями (разрешение, частота обновления, физический размер).
Преимущества: Позволяет реализовывать продвинутый менеджмент окон.
- Устойчивость фреймворка:
Обработка ошибок в lifecycle-методах виджетов (например,
Преимущества: Повышает стабильность и предсказуемость.
- Другие фиксы:
Исправление
##### Обновления Material и Cupertino
- Миграция на WidgetState:
Переход от
Преимущества: Упрощает теминг; существующий код не ломается.
- IconButton.statesController:
Новый свойство для программного контроля состояний.
Преимущества: Для кастомных интерактивных дизайнов.
- Badge.count.maxCount:
Ограничение отображаемого счетчика (например, "99+" для 100+).
Преимущества: Улучшает читаемость UI.
- InkWell.onLongPressUp:
Колбэк для действий при завершении долгого нажатия.
Преимущества: Тоньше контроль жестов.
- CupertinoSlidingSegmentedControl.isMomentary:
Свойство для временных селекций без сохранения.
Преимущества: Соответствует iOS-поведению.
- CupertinoSheet:
"Stretch"-эффект при перетаскивании полностью развернутого листа.
Преимущества: Больше нативности iOS.
- Фиксы: Улучшения в
##### Улучшения скроллинга
- Sliver-робастность:
Фиксы в
Преимущества: Более предсказуемые сложные скролл-лейауты.
- SliverGrid.list:
Новый конструктор для создания гридов из списка детей.
Преимущества: Упрощает кастомные ScrollView.
- Навигация фокуса:
Улучшения в вложенных скроллах с разными осями (вертикальный список с горизонтальными каруселями).
Преимущества: Избегает неожиданных прыжков фокуса для клавиатуры/D-pad.
#### Нововведения в Dart
- Dot Shorthands
Новая фича, позволяющая опускать типы, которые Dart может вывести автоматически, для более краткого кода. Примеры:
.start вместо MainAxisAlignment.start или .all(8.0) вместо EdgeInsets.all(8.0). Преимущества: Уменьшает boilerplate-код, повышает читаемость и ускоряет разработку. Поддерживает именованные конструкторы. Активировано по умолчанию в Dart 3.10 и Flutter 3.24.
#### Нововведения в Flutter
##### Улучшения веб-разработки
- Файл конфигурации `web_dev_config.yaml`:
Новый файл в корне проекта для настройки хоста, порта, сертификатов и заголовков при запуске
flutter run. Преимущества: Обеспечивает консистентность настроек в команде и упрощает управление.
- Настройки прокси:
Поддержка прокси в конфиг-файле для переадресации запросов на другие серверы.
Преимущества: Упрощает разработку веб-клиентов с динамическими эндпоинтами.
- Расширенный Hot Reload на веб:
Stateful hot reload включен по умолчанию с
-d web-server, поддерживает несколько браузеров одновременно. Преимущества: Ускоряет итерации без перезапуска приложения.
##### Улучшения фреймворка
- OverlayPortal:
Добавлен
overlayChildLayoutBuilder для рендеринга детей в любом Overlay вверх по дереву виджетов; Overlay.of стал надежнее. Преимущества: Упрощает создание глобальных UI-элементов (например, уведомлений), игнорируя ограничения родителя.
- Навигация на Android:
Predictive back transitions включены по умолчанию в
MaterialApp (предпросмотр домашнего экрана при свайпе назад); дефолтный переход — FadeForwardsPageTransitionsBuilder. Преимущества: Соответствует нативному поведению Android для плавного UX.
- Интеграция с десктопом (Windows):
Доступ к списку подключенных дисплеев с деталями (разрешение, частота обновления, физический размер).
Преимущества: Позволяет реализовывать продвинутый менеджмент окон.
- Устойчивость фреймворка:
Обработка ошибок в lifecycle-методах виджетов (например,
didUpdateWidget) без каскадных сбоев; ResizeImage теперь правильно реализует равенство для кэширования. Преимущества: Повышает стабильность и предсказуемость.
- Другие фиксы:
Исправление
RSuperellipse для больших радиусов углов (рендерит "pill"-форму); улучшенная детекция локали через Intl.Locale API; фикс IME на Samsung с аппаратными клавиатурами.##### Обновления Material и Cupertino
- Миграция на WidgetState:
Переход от
MaterialState к WidgetState для единообразного управления состояниями (pressed, hovered, disabled) в виджетах вроде IconButton, ElevatedButton, Checkbox. Преимущества: Упрощает теминг; существующий код не ломается.
- IconButton.statesController:
Новый свойство для программного контроля состояний.
Преимущества: Для кастомных интерактивных дизайнов.
- Badge.count.maxCount:
Ограничение отображаемого счетчика (например, "99+" для 100+).
Преимущества: Улучшает читаемость UI.
- InkWell.onLongPressUp:
Колбэк для действий при завершении долгого нажатия.
Преимущества: Тоньше контроль жестов.
- CupertinoSlidingSegmentedControl.isMomentary:
Свойство для временных селекций без сохранения.
Преимущества: Соответствует iOS-поведению.
- CupertinoSheet:
"Stretch"-эффект при перетаскивании полностью развернутого листа.
Преимущества: Больше нативности iOS.
- Фиксы: Улучшения в
DropdownMenuFormField, SegmentedButton и др.##### Улучшения скроллинга
- Sliver-робастность:
Фиксы в
SliverMainAxisGroup и SliverCrossAxisGroup для жестов, hit-testing, оверскролла и фокуса. Преимущества: Более предсказуемые сложные скролл-лейауты.
- SliverGrid.list:
Новый конструктор для создания гридов из списка детей.
Преимущества: Упрощает кастомные ScrollView.
- Навигация фокуса:
Улучшения в вложенных скроллах с разными осями (вертикальный список с горизонтальными каруселями).
Преимущества: Избегает неожиданных прыжков фокуса для клавиатуры/D-pad.
👍3👀2🥰1👏1
##### Улучшения доступности
- Дефолтная доступность на iOS:
Включена по умолчанию через
Преимущества: Упрощает отладку.
- Отладка Semantics Tree:
Преимущества: Быстрее диагностика.
- SliverSemantics:
Новый виджет для аннотаций sliver-деревьев (заголовки, роли, лейблы) в
Преимущества: Лучшая поддержка screen readers.
- Виджеты: Доступность по умолчанию в
##### Поддержка iOS и деплой
- Платформенная поддержка: Полная совместимость с iOS 18, Xcode 16, macOS 15.
- Devicectl: Новый метод деплоя через CLI Xcode 16 без запуска IDE.
Преимущества: Ускоряет тестирование на физических устройствах.
- UIScene Lifecycle: Обязательная миграция для iOS 18+; ручная или авто-миграция.
Преимущества: Будущая совместимость.
##### Поддержка Android
- 16KB Page Size: Обновление NDK до r28 для Android 15+ (требование Google Play к ноябрю 2025).
Преимущества: До 30% быстрее запуск на high-RAM устройствах.
- Фикс утечки памяти: В Activities при уничтожении (с 3.22.0).
- Зависимости: Совместимость с Java 17, KGP 2.2.0, AGP 8.7.1, Gradle 8.9; дефолтные API-уровни (compileSdk 35, targetSdk 35, minSdk 24).
##### Улучшения движка
- Performance Overlay: Рефакторинг для эффективности (статья обрывается, но подразумевает оптимизации).
Эти обновления делают Flutter более зрелым для кросс-платформенной разработки, с акцентом на веб, доступность и нативную интеграцию.
https://blog.dart.dev/announcing-dart-3-10-ea8b952b6088
https://blog.flutter.dev/whats-new-in-flutter-3-38-3f7b258f7228
- Дефолтная доступность на iOS:
Включена по умолчанию через
WidgetsFlutterBinding.instance.ensureSemantics. Преимущества: Упрощает отладку.
- Отладка Semantics Tree:
debugDumpSemanticsTree включает результаты валидации ввода текста. Преимущества: Быстрее диагностика.
- SliverSemantics:
Новый виджет для аннотаций sliver-деревьев (заголовки, роли, лейблы) в
CustomScrollView. Преимущества: Лучшая поддержка screen readers.
- Виджеты: Доступность по умолчанию в
CupertinoExpansionTile, объявления в AutoComplete, большие тач-таргеты в TimePicker.##### Поддержка iOS и деплой
- Платформенная поддержка: Полная совместимость с iOS 18, Xcode 16, macOS 15.
- Devicectl: Новый метод деплоя через CLI Xcode 16 без запуска IDE.
Преимущества: Ускоряет тестирование на физических устройствах.
- UIScene Lifecycle: Обязательная миграция для iOS 18+; ручная или авто-миграция.
Преимущества: Будущая совместимость.
##### Поддержка Android
- 16KB Page Size: Обновление NDK до r28 для Android 15+ (требование Google Play к ноябрю 2025).
Преимущества: До 30% быстрее запуск на high-RAM устройствах.
- Фикс утечки памяти: В Activities при уничтожении (с 3.22.0).
- Зависимости: Совместимость с Java 17, KGP 2.2.0, AGP 8.7.1, Gradle 8.9; дефолтные API-уровни (compileSdk 35, targetSdk 35, minSdk 24).
##### Улучшения движка
- Performance Overlay: Рефакторинг для эффективности (статья обрывается, но подразумевает оптимизации).
Эти обновления делают Flutter более зрелым для кросс-платформенной разработки, с акцентом на веб, доступность и нативную интеграцию.
https://blog.dart.dev/announcing-dart-3-10-ea8b952b6088
https://blog.flutter.dev/whats-new-in-flutter-3-38-3f7b258f7228
Medium
Announcing Dart 3.10
Today, we’re excited to announce the release of Dart 3.10!
🔥4👍2👏1
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(описание в следующем посте)
(описание в следующем посте)
❤3👍3👏1
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(продолжение предыдущего поста)
→ Масштабируемость — это способность системы справляться с возрастающей нагрузкой без ущерба для производительности и надёжности.
→ Она гарантирует, что при росте числа пользователей, объёма данных или количества запросов система продолжит работать эффективно.
→ 1. ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ (УВЕЛИЧЕНИЕ МОЩНОСТИ)
→ Увеличение ресурсов одного сервера (процессор, оперативная память, хранилище).
→ Простота внедрения — не требует изменений кода.
→ Ограничено максимальной производительностью оборудования.
→ Применяется для небольших и средних систем до перехода на распределённое масштабирование.
*Пример:* модернизация сервера базы данных с 8 ГБ ОЗУ до 64 ГБ ОЗУ.
→ 2. ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ (РАСШИРЕНИЕ)
→ Добавление новых серверов или узлов для обработки растущего трафика.
→ Обеспечивает распределение нагрузки и резервирование.
→ Широко используется в облачных и распределённых архитектурах.
→ Управляется с помощью балансировщиков нагрузки и систем обнаружения сервисов.
*Пример:* добавление новых экземпляров веб‑серверов или серверов баз данных за балансировщиком нагрузки.
→ 3. МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ
→ Реплики для чтения:
несколько копий базы данных только для чтения, повышающих производительность операций чтения.
→ Главный узел для записи:
единственный главный узел обрабатывает все операции записи для обеспечения согласованности данных.
→ Шардинг:
данные распределяются по нескольким базам данных (шард‑серверам) на основе идентификатора пользователя или региона.
→ Партиционирование:
логическое или физическое разделение больших таблиц для ускорения выполнения запросов.
→ 4. СТРАТЕГИИ КЭШИРОВАНИЯ
→ Хранение часто запрашиваемых данных в оперативной памяти для снижения нагрузки на базу данных.
→ Типы кэшей:
- кэши на уровне приложения (в оперативной памяти, например, в Node.js или Java);
- распределённые кэши (например, Redis, Memcached);
- CDN‑кэши (например, Cloudflare, Akamai) для статического контента.
→ Снижают задержки и ускоряют время отклика.
→ 5. БАЛАНСИРОВКА НАГРУЗКИ
→ Распределение входящего трафика между несколькими серверами.
→ Предотвращает перегрузку и повышает отказоустойчивость.
→ Могут использоваться алгоритмы: Round Robin, Least Connections, IP Hash.
→ Распространённые инструменты: Nginx, HAProxy, AWS ELB, Google Cloud Load Balancer.
→ 6. АСИНХРОННАЯ ОБРАБОТКА
→ Вынесение ресурсоёмких или длительных задач в фоновые процессы.
→ Реализуется с помощью систем очередей сообщений (например, Kafka, RabbitMQ, SQS).
→ Ускоряет обработку запросов и повышает общую масштабируемость.
→ 7. АВТОМАТИЧЕСКОЕ МАСШТАБИРОВАНИЕ
→ Автоматическая регулировка ресурсов в зависимости от спроса.
→ Реализуется через облачные сервисы (например, AWS Auto Scaling или Kubernetes Horizontal Pod Autoscaler).
→ Обеспечивает баланс между эффективностью затрат и производительностью.
→ 8. СЕТЬ ДОСТАВКИ КОНТЕНТА (CDN)
→ Доставка статических ресурсов (изображений, CSS, JS) с географически распределённых краевых серверов.
→ Снижает задержки и нагрузку на основной сервер.
→ Повышает глобальную масштабируемость веб‑приложений.
→ 9. ПАРТИЦИОНИРОВАНИЕ И РАСПРЕДЕЛЕНИЕ ДАННЫХ
→ Разделение больших наборов данных между узлами или регионами.
→ Снижает конфликты и повышает скорость выполнения запросов.
→ Используется в распределённых базах данных (Cassandra, MongoDB, DynamoDB).
→ 10. МАСШТАБИРОВАНИЕ НА ОСНОВЕ СОБЫТИЙ И МИКРОСЕРВИСНАЯ АРХИТЕКТУРА
→ Микросервисы масштабируются независимо в зависимости от их нагрузки.
→ Системы, управляемые событиями, автоматически масштабируются в соответствии с спросом.
→ Обеспечивают детальное распределение ресурсов и изоляцию сбоев.
→ Некоторые рекомендации
(продолжение предыдущего поста)
→ Масштабируемость — это способность системы справляться с возрастающей нагрузкой без ущерба для производительности и надёжности.
→ Она гарантирует, что при росте числа пользователей, объёма данных или количества запросов система продолжит работать эффективно.
→ 1. ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ (УВЕЛИЧЕНИЕ МОЩНОСТИ)
→ Увеличение ресурсов одного сервера (процессор, оперативная память, хранилище).
→ Простота внедрения — не требует изменений кода.
→ Ограничено максимальной производительностью оборудования.
→ Применяется для небольших и средних систем до перехода на распределённое масштабирование.
*Пример:* модернизация сервера базы данных с 8 ГБ ОЗУ до 64 ГБ ОЗУ.
→ 2. ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ (РАСШИРЕНИЕ)
→ Добавление новых серверов или узлов для обработки растущего трафика.
→ Обеспечивает распределение нагрузки и резервирование.
→ Широко используется в облачных и распределённых архитектурах.
→ Управляется с помощью балансировщиков нагрузки и систем обнаружения сервисов.
*Пример:* добавление новых экземпляров веб‑серверов или серверов баз данных за балансировщиком нагрузки.
→ 3. МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ
→ Реплики для чтения:
несколько копий базы данных только для чтения, повышающих производительность операций чтения.
→ Главный узел для записи:
единственный главный узел обрабатывает все операции записи для обеспечения согласованности данных.
→ Шардинг:
данные распределяются по нескольким базам данных (шард‑серверам) на основе идентификатора пользователя или региона.
→ Партиционирование:
логическое или физическое разделение больших таблиц для ускорения выполнения запросов.
→ 4. СТРАТЕГИИ КЭШИРОВАНИЯ
→ Хранение часто запрашиваемых данных в оперативной памяти для снижения нагрузки на базу данных.
→ Типы кэшей:
- кэши на уровне приложения (в оперативной памяти, например, в Node.js или Java);
- распределённые кэши (например, Redis, Memcached);
- CDN‑кэши (например, Cloudflare, Akamai) для статического контента.
→ Снижают задержки и ускоряют время отклика.
→ 5. БАЛАНСИРОВКА НАГРУЗКИ
→ Распределение входящего трафика между несколькими серверами.
→ Предотвращает перегрузку и повышает отказоустойчивость.
→ Могут использоваться алгоритмы: Round Robin, Least Connections, IP Hash.
→ Распространённые инструменты: Nginx, HAProxy, AWS ELB, Google Cloud Load Balancer.
→ 6. АСИНХРОННАЯ ОБРАБОТКА
→ Вынесение ресурсоёмких или длительных задач в фоновые процессы.
→ Реализуется с помощью систем очередей сообщений (например, Kafka, RabbitMQ, SQS).
→ Ускоряет обработку запросов и повышает общую масштабируемость.
→ 7. АВТОМАТИЧЕСКОЕ МАСШТАБИРОВАНИЕ
→ Автоматическая регулировка ресурсов в зависимости от спроса.
→ Реализуется через облачные сервисы (например, AWS Auto Scaling или Kubernetes Horizontal Pod Autoscaler).
→ Обеспечивает баланс между эффективностью затрат и производительностью.
→ 8. СЕТЬ ДОСТАВКИ КОНТЕНТА (CDN)
→ Доставка статических ресурсов (изображений, CSS, JS) с географически распределённых краевых серверов.
→ Снижает задержки и нагрузку на основной сервер.
→ Повышает глобальную масштабируемость веб‑приложений.
→ 9. ПАРТИЦИОНИРОВАНИЕ И РАСПРЕДЕЛЕНИЕ ДАННЫХ
→ Разделение больших наборов данных между узлами или регионами.
→ Снижает конфликты и повышает скорость выполнения запросов.
→ Используется в распределённых базах данных (Cassandra, MongoDB, DynamoDB).
→ 10. МАСШТАБИРОВАНИЕ НА ОСНОВЕ СОБЫТИЙ И МИКРОСЕРВИСНАЯ АРХИТЕКТУРА
→ Микросервисы масштабируются независимо в зависимости от их нагрузки.
→ Системы, управляемые событиями, автоматически масштабируются в соответствии с спросом.
→ Обеспечивают детальное распределение ресурсов и изоляцию сбоев.
→ Некоторые рекомендации
❤🔥6👍3❤2
→ Вертикальное масштабирование → быстро, но ограничено.
→ Горизонтальное масштабирование → распределённое и гибкое.
→ Кэширование + балансировка нагрузки → повышают эффективность.
→ Автоматическое масштабирование + асинхронная обработка → динамическое управление ресурсами.
→ Шардинг + репликация → обеспечивают масштабируемость данных.
→ Горизонтальное масштабирование → распределённое и гибкое.
→ Кэширование + балансировка нагрузки → повышают эффективность.
→ Автоматическое масштабирование + асинхронная обработка → динамическое управление ресурсами.
→ Шардинг + репликация → обеспечивают масштабируемость данных.
Telegram
METANIT.COM
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(описание в следующем посте)
(описание в следующем посте)
❤🔥4👍3🔥2
Резюме ML-специалистов втрое больше, чем вакансий
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество резюме соискателей выросло почти втрое, превысив более 5000 штук, то бизнес, в свою очередь, наращивает спрос, но осторожно и под конкретные проекты: число вакансий в годовом выражении выросло на 37% - до 920.
Основной рост обеспечивают молодые специалисты в возрасте 18–24 лет, которые приходят через образовательные треки, хакатоны, онлайн-курсы и программы переобучения. За год число таких специалистов выросло до 2600, что почти в три раза превышает показатели прошлых лет.
Однако аналитики видят в этих результатах реализацию угрозы для IT-специалистов со стороны алгоритмов, которые уже вытесняют первых с рынка
Что касается зарплатных ожиданий и рыночных предложений, то в 2024–2025 году медианное предлагаемое ML-специалистам вознаграждение (то есть показатель, равноудаленный от самого большого и самого маленького значения) выросло до 217 700 рублей против 183 300 рублей годом ранее (+18,8%). При этом медианные ожидания соискателей снизились — с 153 800 рублей до 106 100 рублей (-30,9%). Такой разрыв (более 111 000 рублей) указывает на дисбаланс, говорится в исследовании: часть специалистов занижают ожидания, чтобы повысить шансы на трудоустройство, а работодатели, напротив, демонстрируют готовность платить больше, чем рассчитывают соискатели. При этом стоит учитывать, что компании не всегда указывают уровень зарплаты в вакансии — особенно в нижнем сегменте, где условия предлагаются индивидуально или фиксируются на этапе офера.
Согласно данным вакансий работодателей, ML-специалисты должны владеть Python, SQL, PyTorch и библиотеками глубокого обучения. Среди новых требований — опыт в разработке API, работа с облачными платформами и ML-инфраструктурой (Docker, MLflow, TensorFlow Serving).
Таким образом, рынок машинного обучения в России развивается асимметрично: спрос на специалистов есть, но предложение растет быстрее.
https://www.forbes.ru/tekhnologii/549732-problema-lisnego-celoveka-rezume-ml-specialistov-vtroe-bol-se-cem-vakansij
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество резюме соискателей выросло почти втрое, превысив более 5000 штук, то бизнес, в свою очередь, наращивает спрос, но осторожно и под конкретные проекты: число вакансий в годовом выражении выросло на 37% - до 920.
Основной рост обеспечивают молодые специалисты в возрасте 18–24 лет, которые приходят через образовательные треки, хакатоны, онлайн-курсы и программы переобучения. За год число таких специалистов выросло до 2600, что почти в три раза превышает показатели прошлых лет.
Однако аналитики видят в этих результатах реализацию угрозы для IT-специалистов со стороны алгоритмов, которые уже вытесняют первых с рынка
Что касается зарплатных ожиданий и рыночных предложений, то в 2024–2025 году медианное предлагаемое ML-специалистам вознаграждение (то есть показатель, равноудаленный от самого большого и самого маленького значения) выросло до 217 700 рублей против 183 300 рублей годом ранее (+18,8%). При этом медианные ожидания соискателей снизились — с 153 800 рублей до 106 100 рублей (-30,9%). Такой разрыв (более 111 000 рублей) указывает на дисбаланс, говорится в исследовании: часть специалистов занижают ожидания, чтобы повысить шансы на трудоустройство, а работодатели, напротив, демонстрируют готовность платить больше, чем рассчитывают соискатели. При этом стоит учитывать, что компании не всегда указывают уровень зарплаты в вакансии — особенно в нижнем сегменте, где условия предлагаются индивидуально или фиксируются на этапе офера.
Согласно данным вакансий работодателей, ML-специалисты должны владеть Python, SQL, PyTorch и библиотеками глубокого обучения. Среди новых требований — опыт в разработке API, работа с облачными платформами и ML-инфраструктурой (Docker, MLflow, TensorFlow Serving).
Таким образом, рынок машинного обучения в России развивается асимметрично: спрос на специалистов есть, но предложение растет быстрее.
https://www.forbes.ru/tekhnologii/549732-problema-lisnego-celoveka-rezume-ml-specialistov-vtroe-bol-se-cem-vakansij
Forbes.ru
Проблема лишнего человека: резюме ML-специалистов втрое больше, чем вакансий
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество рез
🤔8🔥1👏1😁1🤬1😢1
В руководство по C# и .NET добавлена новая статья про Расширения типов, которые позволяют добавлять новые компоненты - методы, свойства и операторы к уже существующим типам без создания нового производного типа, перекомпиляции или иного изменения исходного типа
https://metanit.com/sharp/tutorial/3.18.php
#csharp #dotnet
https://metanit.com/sharp/tutorial/3.18.php
#csharp #dotnet
👍35❤3🔥2🥱2🖕1
Управление памятью в Linux
(продолжение предыдущего поста)
1. Введение.
→ Система управления памятью в Linux контролирует, как операционная система использует оперативную память (RAM), пространство подкачки (swap) и виртуальную память.
→ Ядро гарантирует, что каждый процесс получает необходимый объём памяти, сохраняя при этом стабильность и производительность системы.
→ В Linux используется система виртуальной памяти, которая предоставляет каждому процессу собственное изолированное адресное пространство.
2. Виртуальная память
→ Виртуальная память позволяет процессам работать так, будто у них есть доступ к большому непрерывному объёму памяти — даже если физическая оперативная память меньше.
→ Linux сопоставляет виртуальную память с физической с помощью таблиц страниц.
→ Обеспечивает:
→ Изоляцию между процессами;
→ Эффективное использование оперативной памяти;
→ Поддержку крупных приложений.
3. Страничная организация памяти (paging)
→ Память разделена на небольшие блоки фиксированного размера — страницы (обычно 4 КБ).
→ Ядро загружает страницы программы в оперативную память по мере необходимости.
→ Если оперативная память заполнена, неиспользованные страницы перемещаются в пространство подкачки.
→ Страничная организация повышает эффективность многозадачности.
4. Роль блока управления памятью (MMU, Memory Management Unit)
→ MMU — это аппаратный компонент, который преобразует виртуальные адреса в физические.
→ Сохраняет преобразования в кэше, называемом TLB (Translation Lookaside Buffer, буфер ассоциативной трансляции).
→ Быстродействие доступа к памяти зависит от эффективного использования MMU и TLB.
5. Распределение физической памяти
→ В Linux используются два основных распределителя памяти:
→ Система buddy (Buddy System) — выделяет большие непрерывные блоки памяти.
→ Распределитель slab (Slab Allocator) — выделяет память для объектов ядра (inodes, дескрипторы файлов).
→ Обеспечивает минимальную фрагментацию и более быстрое выделение памяти.
6. Пространство подкачки (swap)
→ Swap — это область на диске, используемая как буфер переполнения, когда физическая оперативная память заполнена.
→ Неактивные страницы перемещаются в swap.
→ Помогает системе работать стабильно, но работает значительно медленнее, чем оперативная память.
→ Команды:
→
→
7. Зоны памяти
→ Linux разделяет физическую память на зоны в зависимости от аппаратных ограничений:
→ ZONE_DMA — память, используемая для прямого доступа к памяти (DMA).
→ ZONE_NORMAL — обычная память, доступная ядру.
→ ZONE_HIGHMEM — верхняя память, не отображаемая напрямую ядром (в 32‑битных системах).
→ Помогает ядру распределять память в зависимости от архитектуры системы.
8. Кэширование и буферы
→ Linux использует свободную память для кэширования, чтобы повысить производительность.
→ Типы:
→ Page Cache — хранит недавно использованные файлы.
→ Buffer Cache — хранит метаданные для ускоренного доступа к диску.
→ Кэшированные данные автоматически освобождаются, когда программам требуется больше памяти.
9. OOM Killer (Out‑of‑Memory Killer, «убийца при нехватке памяти»)
→ Когда память и swap полностью использованы, Linux запускает OOM Killer.
→ Выбирает и завершает процессы, потребляющие много памяти, чтобы освободить оперативную память.
→ Предотвращает зависание системы.
10. Инструменты мониторинга памяти
→ Распространённые команды для проверки использования памяти:
→
→
→
→
→
11. Интерфейсы памяти в /proc
→ Linux предоставляет информацию о памяти через файловую систему proc:
→
→
→
(продолжение предыдущего поста)
1. Введение.
→ Система управления памятью в Linux контролирует, как операционная система использует оперативную память (RAM), пространство подкачки (swap) и виртуальную память.
→ Ядро гарантирует, что каждый процесс получает необходимый объём памяти, сохраняя при этом стабильность и производительность системы.
→ В Linux используется система виртуальной памяти, которая предоставляет каждому процессу собственное изолированное адресное пространство.
2. Виртуальная память
→ Виртуальная память позволяет процессам работать так, будто у них есть доступ к большому непрерывному объёму памяти — даже если физическая оперативная память меньше.
→ Linux сопоставляет виртуальную память с физической с помощью таблиц страниц.
→ Обеспечивает:
→ Изоляцию между процессами;
→ Эффективное использование оперативной памяти;
→ Поддержку крупных приложений.
3. Страничная организация памяти (paging)
→ Память разделена на небольшие блоки фиксированного размера — страницы (обычно 4 КБ).
→ Ядро загружает страницы программы в оперативную память по мере необходимости.
→ Если оперативная память заполнена, неиспользованные страницы перемещаются в пространство подкачки.
→ Страничная организация повышает эффективность многозадачности.
4. Роль блока управления памятью (MMU, Memory Management Unit)
→ MMU — это аппаратный компонент, который преобразует виртуальные адреса в физические.
→ Сохраняет преобразования в кэше, называемом TLB (Translation Lookaside Buffer, буфер ассоциативной трансляции).
→ Быстродействие доступа к памяти зависит от эффективного использования MMU и TLB.
5. Распределение физической памяти
→ В Linux используются два основных распределителя памяти:
→ Система buddy (Buddy System) — выделяет большие непрерывные блоки памяти.
→ Распределитель slab (Slab Allocator) — выделяет память для объектов ядра (inodes, дескрипторы файлов).
→ Обеспечивает минимальную фрагментацию и более быстрое выделение памяти.
6. Пространство подкачки (swap)
→ Swap — это область на диске, используемая как буфер переполнения, когда физическая оперативная память заполнена.
→ Неактивные страницы перемещаются в swap.
→ Помогает системе работать стабильно, но работает значительно медленнее, чем оперативная память.
→ Команды:
→
swapon -s — просмотр информации о swap; →
free -h — проверка использования swap.7. Зоны памяти
→ Linux разделяет физическую память на зоны в зависимости от аппаратных ограничений:
→ ZONE_DMA — память, используемая для прямого доступа к памяти (DMA).
→ ZONE_NORMAL — обычная память, доступная ядру.
→ ZONE_HIGHMEM — верхняя память, не отображаемая напрямую ядром (в 32‑битных системах).
→ Помогает ядру распределять память в зависимости от архитектуры системы.
8. Кэширование и буферы
→ Linux использует свободную память для кэширования, чтобы повысить производительность.
→ Типы:
→ Page Cache — хранит недавно использованные файлы.
→ Buffer Cache — хранит метаданные для ускоренного доступа к диску.
→ Кэшированные данные автоматически освобождаются, когда программам требуется больше памяти.
9. OOM Killer (Out‑of‑Memory Killer, «убийца при нехватке памяти»)
→ Когда память и swap полностью использованы, Linux запускает OOM Killer.
→ Выбирает и завершает процессы, потребляющие много памяти, чтобы освободить оперативную память.
→ Предотвращает зависание системы.
10. Инструменты мониторинга памяти
→ Распространённые команды для проверки использования памяти:
→
free -h — обзор оперативной памяти и swap; →
top — использование памяти процессами в реальном времени; →
htop — интерактивный монитор памяти; →
vmstat — статистика виртуальной памяти; →
cat /proc/meminfo — подробная информация о памяти.11. Интерфейсы памяти в /proc
→ Linux предоставляет информацию о памяти через файловую систему proc:
→
/proc/meminfo — обзор памяти; →
/proc/<pid>/maps — структура памяти процесса; →
/proc/<pid>/smaps — детальное использование по сегментам памяти.❤8👍2💯2