Что происходит, когда вы добавляете строку в Postgres?
(продолжение предыдущего поста)
Postgres должен гарантировать сохранность данных, обеспечивая при этом высокую производительность записи и возможность восстановления после сбоев. Ключ к решению этой задачи — журнал упреждающей записи (Write‑Ahead Log, WAL).
(1) Postgres получает запрос и определяет, на какую страницу данных его разместить. Эта страница может уже находиться в памяти (в буферном пуле), либо её придётся загрузить с диска, либо даже создать новую.
(2) Новая запись помещается только в эту страницу в памяти. Страница помечается как «грязная» (*dirty*), что означает: её нужно будет в будущем записать на диск — но не немедленно.
(3) Новая запись добавляется в буфер памяти для WAL. Она содержит всю информацию, необходимую для восстановления операции вставки.
(4) WAL записывается на диск (с помощью
Когда клиент получает подтверждение об успехе, данные гарантированно записаны в последовательный WAL (что обеспечивает высокую производительность записи), но не обязательно — в файл данных таблицы (где шаблоны операций ввода‑вывода менее предсказуемы). Последнее происходит позже — посредством контрольных точек, фоновых заданий или принудительной записи из‑за вытеснения страниц памяти. Если сбой сервера произойдёт до того, как данные будут записаны на диск, журнал будет воспроизведён для восстановления подтверждённых данных.
WAL — это основа всего процесса! Он обеспечивает высокопроизводительный ввод‑вывод и возможность восстановления после сбоев.
#sql #database #postgresql
(продолжение предыдущего поста)
Postgres должен гарантировать сохранность данных, обеспечивая при этом высокую производительность записи и возможность восстановления после сбоев. Ключ к решению этой задачи — журнал упреждающей записи (Write‑Ahead Log, WAL).
(1) Postgres получает запрос и определяет, на какую страницу данных его разместить. Эта страница может уже находиться в памяти (в буферном пуле), либо её придётся загрузить с диска, либо даже создать новую.
(2) Новая запись помещается только в эту страницу в памяти. Страница помечается как «грязная» (*dirty*), что означает: её нужно будет в будущем записать на диск — но не немедленно.
(3) Новая запись добавляется в буфер памяти для WAL. Она содержит всю информацию, необходимую для восстановления операции вставки.
(4) WAL записывается на диск (с помощью
fsync или аналогичного механизма), чтобы гарантировать сохранение данных в надёжном хранилище. После успешного выполнения этого шага Postgres возвращает клиенту подтверждение об успешном выполнении.Когда клиент получает подтверждение об успехе, данные гарантированно записаны в последовательный WAL (что обеспечивает высокую производительность записи), но не обязательно — в файл данных таблицы (где шаблоны операций ввода‑вывода менее предсказуемы). Последнее происходит позже — посредством контрольных точек, фоновых заданий или принудительной записи из‑за вытеснения страниц памяти. Если сбой сервера произойдёт до того, как данные будут записаны на диск, журнал будет воспроизведён для восстановления подтверждённых данных.
WAL — это основа всего процесса! Он обеспечивает высокопроизводительный ввод‑вывод и возможность восстановления после сбоев.
#sql #database #postgresql
Telegram
METANIT.COM
Что происходит, когда вы добавляете строку в Postgres?
(продолжение в следующем посте)
(продолжение в следующем посте)
👍10❤4👏1
3 основных типа машинного обучения
(продолжение предыдущего поста)
1. Supervised Learning (обучение с учителем)
- Суть: обучение модели на размеченных данных (data with labelled data).
- Подразделяется на два типа задач:
- Classification (классификация): прогнозирование дискретных значений (например, «да/нет», категории). Визуализировано с помощью кругов с точками разных цветов.
- Regression (регрессия): прогнозирование непрерывных значений (например, стоимость дома, температура). Показано графиком с линией тренда.
- Примеры алгоритмов:
- Логистическая регрессия (Logistic Regression);
- Деревья решений (Decision Trees);
- Случайный лес (Random Forest);
- XGBoost;
- K-ближайших соседей (K-Nearest Neighbors);
- Метод опорных векторов (Support Vector Machines) и др.
2. Unsupervised Learning (обучение без учителя)
- Суть: обучение модели на неразмеченных данных (data with unlabelled data), поиск скрытых закономерностей.
- Основная задача: Clustering (кластеризация) — группировка данных по сходству. Визуализировано разделением точек на кластеры.
- Примеры алгоритмов кластеризации:
- K-Means Clustering;
- DBSCAN;
- Иерархическая кластеризация (Hierarchical Clustering).
- Другие методы обучения без учителя:
- Метод главных компонент (PCA);
- Анализ ассоциативных правил (Association).
3. Reinforcement Learning (обучение с подкреплением)
- Суть: модель совершает действия в среде (environment), получает обратную связь (feedback) и обновляет своё состояние (state) на основе вознаграждений или штрафов.
- Визуализация: представлена в виде цикла между средой (Environment), действием (action), обратной связью (feedback) и агентом модели (Model Agent).
- Примеры алгоритмов:
- Q-Learning;
- R-Learning;
- TD-Learning.
(продолжение предыдущего поста)
1. Supervised Learning (обучение с учителем)
- Суть: обучение модели на размеченных данных (data with labelled data).
- Подразделяется на два типа задач:
- Classification (классификация): прогнозирование дискретных значений (например, «да/нет», категории). Визуализировано с помощью кругов с точками разных цветов.
- Regression (регрессия): прогнозирование непрерывных значений (например, стоимость дома, температура). Показано графиком с линией тренда.
- Примеры алгоритмов:
- Логистическая регрессия (Logistic Regression);
- Деревья решений (Decision Trees);
- Случайный лес (Random Forest);
- XGBoost;
- K-ближайших соседей (K-Nearest Neighbors);
- Метод опорных векторов (Support Vector Machines) и др.
2. Unsupervised Learning (обучение без учителя)
- Суть: обучение модели на неразмеченных данных (data with unlabelled data), поиск скрытых закономерностей.
- Основная задача: Clustering (кластеризация) — группировка данных по сходству. Визуализировано разделением точек на кластеры.
- Примеры алгоритмов кластеризации:
- K-Means Clustering;
- DBSCAN;
- Иерархическая кластеризация (Hierarchical Clustering).
- Другие методы обучения без учителя:
- Метод главных компонент (PCA);
- Анализ ассоциативных правил (Association).
3. Reinforcement Learning (обучение с подкреплением)
- Суть: модель совершает действия в среде (environment), получает обратную связь (feedback) и обновляет своё состояние (state) на основе вознаграждений или штрафов.
- Визуализация: представлена в виде цикла между средой (Environment), действием (action), обратной связью (feedback) и агентом модели (Model Agent).
- Примеры алгоритмов:
- Q-Learning;
- R-Learning;
- TD-Learning.
Telegram
METANIT.COM
3 основных типа машинного обучения
(продолжение в следующем посте)
(продолжение в следующем посте)
👍3❤2👏1
Завтра состоится главное событие года в мире .NET - релиз .NET 10 (с C# 14 и F#10 и сопутствующими технологиями типа ASP NET Core, MAUI .NET и т.д). Главное отличие .NET 10 состоит в том, что это LTS-выпуск с продленной поддержкой
Вместе с этим начнется главная ежегодная конференция для разработчиков на платформе .NET - DotNetConf 2025, где расскажут о последних нововведениях на платформе.
Кроме того, ожидается выход новой версии среды разработки - Visual Studio 2026
Прямая трансляция конференции как обычно будет доступна на "замедленном" youtube
https://www.youtube.com/watch?v=YDhJ953D6-U
Программа конференции доступна на офсайте - https://www.dotnetconf.net/agenda
Вместе с этим начнется главная ежегодная конференция для разработчиков на платформе .NET - DotNetConf 2025, где расскажут о последних нововведениях на платформе.
Кроме того, ожидается выход новой версии среды разработки - Visual Studio 2026
Прямая трансляция конференции как обычно будет доступна на "замедленном" youtube
https://www.youtube.com/watch?v=YDhJ953D6-U
Программа конференции доступна на офсайте - https://www.dotnetconf.net/agenda
YouTube
.NET Conf 2025 - Day 1
.NET Conf has been a virtual event since the beginning, and this year we're celebrating our 15th online conference. We always strive to create a world class, engaging, virtual experience for all our attendees no matter where they are. Over the years we've…
🔥16😁3❤2👍2🤣1
Тем временем в ноябрьском рейтинге языков программирования TIOBE C# сильно прибавил и может стать языком года. Как отмечают в TIOBE:
"
."
https://www.tiobe.com/tiobe-index/
"
до недавнего времени никто не мог превзойти темпы роста Python. Но сейчас, похоже, рост Python остановился. Вместо Python самым быстрорастущим языком программирования стал C#. Если C# сможет сохранить этот темп, он может даже стать языком программирования TIOBE 2025 года. Как C# добился этого? Java и C# уже давно борются за одни и те же позиции. Сейчас, похоже, C# устранил все причины не использовать C# вместо Java: теперь он кроссплатформенный, с открытым исходным кодом и содержит все новые языковые функции, необходимые разработчику. Хотя в финансовом мире Java по-прежнему доминирует, во всех других областях доли Java и C# равны. Кроме того, Microsoft набирает обороты, а C# по-прежнему остаётся их самым поддерживаемым языком программирования. Интересное замечание: C# никогда не поднимался выше Java в индексе TIOBE. Сейчас разница между двумя конкурентами составляет менее 1%
."
https://www.tiobe.com/tiobe-index/
🔥32👍8❤5🤡5🗿1
Как отладить медленное API?
(продолжение предыдущего поста)
API работает медленно. Пользователи жалуются. А вы не знаете, с чего начать поиск проблемы. Далее рассмотрим системный подход, который поможет выяснить, что тормозит ваше API.
Начните с сети:
* Высокая задержка? Разместите CDN перед статическими ресурсами.
* Большие объёмы данных? Сжимайте ответы для отправки клиенту.
Это быстрые решения, которые не требуют правки кода.
Затем проверьте код бэкенда: именно здесь чаще всего скрываются проблемы с производительностью.
* Операции, нагружающие процессор, должны выполняться в фоновом режиме.
* Сложную бизнес‑логику нужно упростить.
* Блокирующие синхронные вызовы следует заменить на асинхронные.
Профилируйте код, найдите «горячие» участки и исправьте их.
Проверьте базу данных:
* Отсутствие индексов — классическая причина замедления.
* Следите за запросами типа N+1: когда вы обращаетесь к базе данных сотни раз, хотя можно было бы выполнить один пакетный запрос.
Не забывайте про внешние API: вызовы Stripe, запросы к Google Maps — всё это вне вашего контроля.
* Выполняйте параллельные вызовы, где это возможно.
* Устанавливайте жёсткие таймауты и повторные попытки: так один медленный сторонний сервис не «повалит» весь ваш ответ.
Наконец, проверьте инфраструктуру:
* Серверы, работающие на пределе, нуждаются в автомасштабировании.
* Нужно настроить лимиты пула соединений.
Иногда проблема вовсе не в коде: вы пытаетесь обработать 10 000 запросов с ресурсами, рассчитанными на 100.
Главное — действовать методично. Не бросайтесь решать проблемы наугад. Сначала измерьте, выявите реальное узкое место, а затем устраните его.
(продолжение предыдущего поста)
API работает медленно. Пользователи жалуются. А вы не знаете, с чего начать поиск проблемы. Далее рассмотрим системный подход, который поможет выяснить, что тормозит ваше API.
Начните с сети:
* Высокая задержка? Разместите CDN перед статическими ресурсами.
* Большие объёмы данных? Сжимайте ответы для отправки клиенту.
Это быстрые решения, которые не требуют правки кода.
Затем проверьте код бэкенда: именно здесь чаще всего скрываются проблемы с производительностью.
* Операции, нагружающие процессор, должны выполняться в фоновом режиме.
* Сложную бизнес‑логику нужно упростить.
* Блокирующие синхронные вызовы следует заменить на асинхронные.
Профилируйте код, найдите «горячие» участки и исправьте их.
Проверьте базу данных:
* Отсутствие индексов — классическая причина замедления.
* Следите за запросами типа N+1: когда вы обращаетесь к базе данных сотни раз, хотя можно было бы выполнить один пакетный запрос.
Не забывайте про внешние API: вызовы Stripe, запросы к Google Maps — всё это вне вашего контроля.
* Выполняйте параллельные вызовы, где это возможно.
* Устанавливайте жёсткие таймауты и повторные попытки: так один медленный сторонний сервис не «повалит» весь ваш ответ.
Наконец, проверьте инфраструктуру:
* Серверы, работающие на пределе, нуждаются в автомасштабировании.
* Нужно настроить лимиты пула соединений.
Иногда проблема вовсе не в коде: вы пытаетесь обработать 10 000 запросов с ресурсами, рассчитанными на 100.
Главное — действовать методично. Не бросайтесь решать проблемы наугад. Сначала измерьте, выявите реальное узкое место, а затем устраните его.
Telegram
METANIT.COM
Как отладить медленное API. Схема
(продолжение в следующем посте)
(продолжение в следующем посте)
❤8🔥3👍2
Министерство Великобритании завершило обновление своего парка ПК до Windows 10 после прекращения поддержки ОС
Министерство окружающей среды, продовольствия и сельского хозяйства Великобритании (Defra) потратило £312 млн на модернизацию своей IT-инфраструктуры, включая обновление с Windows 7 до Windows 10 на десятках тысяч ноутбуков. Microsoft прекратила официальную поддержку Windows 10 в середине октября этого года.
https://habr.com/ru/news/965366/
Министерство окружающей среды, продовольствия и сельского хозяйства Великобритании (Defra) потратило £312 млн на модернизацию своей IT-инфраструктуры, включая обновление с Windows 7 до Windows 10 на десятках тысяч ноутбуков. Microsoft прекратила официальную поддержку Windows 10 в середине октября этого года.
https://habr.com/ru/news/965366/
Хабр
Министерство Великобритании завершило обновление своего парка ПК до Windows 10 после прекращения поддержки ОС
Министерство окружающей среды, продовольствия и сельского хозяйства Великобритании (Defra) потратило £312 млн на модернизацию своей IT-инфраструктуры, включая обновление с Windows 7 до Windows 10 на...
🤣40👍6😢2💯2
Microsoft выпустил новую версию своей платформы .NET - .NET 10 вместе с новой версией языка C# - C# 14, а также F# 10 и обновления для платформ на базе .NET - ASP NET Core 10, Entity Framework Core 10, .NET MAUI и т.д.
Новая версия, как обычно, включает различные улучшения, оптимизации, некоторые нововведения и т.д. Отмечу только некоторые из них.
Прежде всего это возможность запускать отдельный *.cs-файл с кодом C# как обычный скрипт без файлов решения/проекта (файлы sln / csproj), как это происходит в Python, например.
Кроме того, в C# добавлены такие фичи как
- Extension Members (члены расширений),
- Null-Conditional Assignment (присвоение, если выражение не null -
- ключевое слово field
- для параметров лямбда-выражение теперь можно использовать модификаторы
- частичные конструкторы и события
- возможность переопределения составных операторов присваивания
Стоит отметить, что .NET 10 - это LTS-выпуск с продленным сроком выпуска обновлений: окончание поддержки - 14 ноября 2028 года
Загрузить пакеты для различных платформ и ОС можно с офсайта со страницы https://dotnet.microsoft.com/en-us/download/dotnet/10.0
Новая версия, как обычно, включает различные улучшения, оптимизации, некоторые нововведения и т.д. Отмечу только некоторые из них.
Прежде всего это возможность запускать отдельный *.cs-файл с кодом C# как обычный скрипт без файлов решения/проекта (файлы sln / csproj), как это происходит в Python, например.
Кроме того, в C# добавлены такие фичи как
- Extension Members (члены расширений),
- Null-Conditional Assignment (присвоение, если выражение не null -
a?.b = M())- ключевое слово field
- для параметров лямбда-выражение теперь можно использовать модификаторы
- частичные конструкторы и события
- возможность переопределения составных операторов присваивания
Стоит отметить, что .NET 10 - это LTS-выпуск с продленным сроком выпуска обновлений: окончание поддержки - 14 ноября 2028 года
Загрузить пакеты для различных платформ и ОС можно с офсайта со страницы https://dotnet.microsoft.com/en-us/download/dotnet/10.0
Microsoft
Download .NET 10.0 (Linux, macOS, and Windows) | .NET
.NET 10.0 downloads for Linux, macOS, and Windows. .NET is a free, cross-platform, open-source developer platform for building many different types of applications.
❤32😍12👍5🤮4🥰2👏2
Также вышла новая версия среды разработки 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