METANIT.COM – Telegram
METANIT.COM
5.77K subscribers
1.64K photos
79 videos
9 files
980 links
Канал о программировании и разработке сайта metanit.com
Download Telegram
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.
👍32👏1
Стили установки отступов
😱20🤪20👍73
Завтра состоится главное событие года в мире .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
🔥16😁32👍2🤣1
Тем временем в ноябрьском рейтинге языков программирования TIOBE C# сильно прибавил и может стать языком года. Как отмечают в TIOBE:
"
до недавнего времени никто не мог превзойти темпы роста 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👍85🤡5🗿1
Как отладить медленное API. Схема
(продолжение в следующем посте)
4👍2🔥2
Как отладить медленное API?
(продолжение предыдущего поста)

API работает медленно. Пользователи жалуются. А вы не знаете, с чего начать поиск проблемы. Далее рассмотрим системный подход, который поможет выяснить, что тормозит ваше API.

Начните с сети:
* Высокая задержка? Разместите CDN перед статическими ресурсами.
* Большие объёмы данных? Сжимайте ответы для отправки клиенту.

Это быстрые решения, которые не требуют правки кода.

Затем проверьте код бэкенда: именно здесь чаще всего скрываются проблемы с производительностью.
* Операции, нагружающие процессор, должны выполняться в фоновом режиме.
* Сложную бизнес‑логику нужно упростить.
* Блокирующие синхронные вызовы следует заменить на асинхронные.

Профилируйте код, найдите «горячие» участки и исправьте их.

Проверьте базу данных:
* Отсутствие индексов — классическая причина замедления.
* Следите за запросами типа N+1: когда вы обращаетесь к базе данных сотни раз, хотя можно было бы выполнить один пакетный запрос.

Не забывайте про внешние API: вызовы Stripe, запросы к Google Maps — всё это вне вашего контроля.
* Выполняйте параллельные вызовы, где это возможно.
* Устанавливайте жёсткие таймауты и повторные попытки: так один медленный сторонний сервис не «повалит» весь ваш ответ.

Наконец, проверьте инфраструктуру:
* Серверы, работающие на пределе, нуждаются в автомасштабировании.
* Нужно настроить лимиты пула соединений.

Иногда проблема вовсе не в коде: вы пытаетесь обработать 10 000 запросов с ресурсами, рассчитанными на 100.

Главное — действовать методично. Не бросайтесь решать проблемы наугад. Сначала измерьте, выявите реальное узкое место, а затем устраните его.
8🔥3👍2
Министерство Великобритании завершило обновление своего парка ПК до Windows 10 после прекращения поддержки ОС

Министерство окружающей среды, продовольствия и сельского хозяйства Великобритании (Defra) потратило £312 млн на модернизацию своей IT-инфраструктуры, включая обновление с Windows 7 до Windows 10 на десятках тысяч ноутбуков. Microsoft прекратила официальную поддержку Windows 10 в середине октября этого года.

https://habr.com/ru/news/965366/
🤣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 - a?.b = M())
- ключевое слово field
- для параметров лямбда-выражение теперь можно использовать модификаторы
- частичные конструкторы и события
- возможность переопределения составных операторов присваивания

Стоит отметить, что .NET 10 - это LTS-выпуск с продленным сроком выпуска обновлений: окончание поддержки - 14 ноября 2028 года

Загрузить пакеты для различных платформ и ОС можно с офсайта со страницы https://dotnet.microsoft.com/en-us/download/dotnet/10.0
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
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)
👍228🐳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
👍52👏1💩1
Аспекты проектирования хорошего API
(продолжение в следующем посте)
6👍4🔥3
Аспекты проектирования хорошего API
(продолжение предыдующего поста)

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:
* CreatePOST
* ReadGET
* UpdatePUT / PATCH
* DeleteDELETE

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).
🔥54👍2💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация формулы многогранника Эйлера:

V - E + F = 2

или

Vertices (вершины) - Edges (ребра) + Faces (грани) = 2
❤‍🔥21🔥104😱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/
🤔11👍52💯1🖕1
Google выпустил новые версии фреймворка Flutter и языка Dart - Flutter 3.38 и Dart 3.10. Основные нововведения.

#### Нововведения в 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:
Включена по умолчанию через 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
🔥4👍2👏1
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(описание в следующем посте)
3👍3👏1