METANIT.COM – Telegram
METANIT.COM
5.78K subscribers
1.64K photos
79 videos
9 files
982 links
Канал о программировании и разработке сайта metanit.com
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Из мира извращений: графический редактор в консоли на PHP
😁31🤔11👍6🔥5💩1
Очередной баг в очередном обновлении для Windows 11 может сильно снизить производительность ПК

Компания Microsoft выпустила обновление KB5067036 для Windows 11 с новым меню «Пуск», которое будет внедряться постепенно. Оно также добавляет новые цветные значки батареи на панель задач, новую ленту рекомендуемых лент в проводнике и многое другое. Но обновление выходит за рамки некоторых улучшений дизайна.

Однако как обычно не обошлось без багов. Если запустить «Диспетчера задач», и закрыть его, то на деле сам процесс taskmanager.exe останется в оперативной памяти и не выгрузится. Так можно повторять снова и снова – программа будет висеть в ОЗУ и создавать все новые копии себя при каждом повторном запуске. Рано или поздно это приведет к тому, что свободная оперативная память на компьютере полностью закончится.

https://www.windowslatest.com/2025/10/30/windows-11-kb5067036-issue-task-manager-wont-close-and-duplicates-may-hurt-performance/
💊24🤣22🤯2😢21🖕1
6 основных типов ключей в базах данных:

1. Primary key (первичный ключ) — уникальный идентификатор для каждой записи в таблице; не может быть пустым и должен быть уникальным во всей таблице.

2. Foreign key (внешний ключ) — поле в таблице, которое соответствует первичному ключу другой таблицы; создаёт связь между таблицами.

3. Composite key (составной ключ) — комбинация двух или более столбцов, используемых как первичный ключ; применяется, если один столбец не может однозначно идентифицировать запись.

4. Alternate key (альтернативный ключ) — уникальный идентификатор записи, который не является первичным ключом; используется как вторичный способ поиска данных.

5. Candidate key (потенциальный ключ) — уникальный идентификатор записи, который потенциально может быть использован как первичный ключ.

6. Surrogate key (суррогатный ключ) — уникальный идентификатор, присвоенный записи в таблице, обычно создаваемый самой базой данных, а не пользователем.

#sql #database
7👍3🔥2🤔1
В России начали ограничивать регистрацию в Telegram и WhatsApp
В России началась блокировка передачи звонков и СМС новым пользователям со стороны подрядчиков Telegram и WhatsApp, говорят источники. В отдельных случаях сообщения продолжают поступать

https://www.rbc.ru/technology_and_media/31/10/2025/6903cec99a794758a0046cd9
🤬22🤡13😁4👍2😡2
Шпаргалка по IP-адресам
(описание в следующем посте)
10👏2🥰1
Шпаргалка по IP-адресам
(описание к предыдущему посту)

1. Частные диапазоны IPv4-адресов:
- 10.0.0.0 – 10.255.255.255 (10.0.0.0/8) — для крупных частных сетей;
- 172.16.0.0 – 172.31.255.255 (172.16.0.0/12) — для корпоративных сетей;
- 192.168.0.0 – 192.168.255.255 (192.168.0.0/16) — для домашних/офисных локальных сетей (LAN).

2. Префиксы CIDR, маски подсетей и количеством доступных хостов:
- /8 (255.0.0.0) — 16M хостов (для крупных внутренних сетей);
- /16 (255.255.0.0) — 65K хостов (для больших LAN);
- /24 (255.255.255.0) — 254 хоста (для малых подсетей/домашних LAN);
- /30 (255.255.255.252) — 2 хоста (для point-to-point соединений);
- /32 (255.255.255.255) — 1 хост (для одиночного устройства).
CIDR определяет сети по длине префикса, а не по фиксированным классам.

3. Специальные IPv4-адреса, их значениями и описание:
- Unspecified (0.0.0.0) — неопределённый адрес по умолчанию;
- Broadcast (255.255.255.255) — широковещательный адрес для всей локальной сети;
- Loopback (127.0.0.0/8) — для локального тестирования;
- APIPA (169.254.0.0/16) — автоназначение IP при сбое DHCP;
- CGNAT (100.64.0.0/10) — пространство NAT, используемое провайдерами;
- Multicast (224.0.0.0 — 239.255.255.255) — для многоадресной рассылки;
- Docs/Test (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24) — зарезервированные примеры.

4. Распространенные провайдеры публичных DNS-серверов:
- Cloudflare (1.1.1.1, 1.0.0.1 и IPv6-аналоги) — быстрый, ориентированный на конфиденциальность;
- Google (8.8.4.4, 8.8.8.8 и IPv6-аналоги) — глобальный anycast;
- Quad9 (9.9.9.9, 149.112.112.112 и IPv6-аналоги) — фильтрованный для безопасности;
- OpenDNS (208.67.222.222, 208.67.220.220 и IPv6-аналоги) — сервис Cisco;
- AdGuard (94.140.14.14, 94.140.15.15 и IPv6-аналоги) — блокировка рекламы и вредоносного ПО.

5. IPv6-адресов, диапазоны и описание:
- Unspecified (::) — неопределённый адрес;
- Loopback (::1) — локальное тестирование;
- Link-local (fe80::/10) — для локального использования на интерфейсе;
- ULA (Unique Local Address) (fc00::/7 или fd00::/8) — частные IPv6-сети;
- Docs/Test (2001:db8::/32) — зарезервированные примеры.
16👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Ролик по геометрии с наглядной визуализацией различных формул
👍25🔥16👏6🥴4🤯2
10 ключевых структур данных, которые мы используем каждый день

- список (*list*): хранение лент новостей в Twitter;
- стек (*stack*): поддержка функций «отменить/вернуть» в текстовом редакторе;
- очередь (*queue*): управление заданиями для принтера или отправка действий пользователя в игре;
- хэш‑таблица (*hash table*): системы кэширования;
- массив (*array*): математические операции;
- куча (*heap*): планирование задач;
- дерево (*tree*): хранение HTML‑документа или принятие решений в ИИ;
- суффиксное дерево (*suffix tree*): поиск строки в документе;
- граф (*graph*): отслеживание дружеских связей или поиск пути;
- R‑дерево (*R‑tree*): поиск ближайшего соседа;
- буфер вершин (*vertex buffer*): передача данных в GPU для рендеринга.
🔥24👍6🤔2👀2🤡1
Краткий совет по Linux

Работаете с CSV‑файлами в терминале? Вы можете сделать их удобочитаемыми, аккуратно выровняв колонки с помощью команды column:

$ cat inventory.csv | column -t -s,


Флаг -s, указывает использовать запятые в качестве разделителей, а флаг -t форматирует вывод в виде аккуратной таблицы.

Идеально для быстрой проверки данных без открытия табличного редактора.

#linux
👍146🥰1
Согласно результатам исследования "Сбераналитики" и "Работы.ру", доля вакансий в IT в 2025 году выросла на 7,5% за год, а средняя оплата труда IT-специалистов выросла на 15% - до 146,5 тыс. рублей.

"По итогам 9 месяцев средняя оплата труда IT-специалистов составила 146,5 тыс. рублей, что на 15% выше, чем в прошлом году. Заработная плата в IT превышает средний уровень дохода (96,1 тыс. рублей) в 1,5 раза и растет быстрее на 2,2%", - говорится в итогах исследования.

Также медианная заработная плата IT-специалистов составила 83 тыс. рублей, что на 15,9% выше, чем в прошлом году. Медианная зарплата в IT выше аналогичного показателя по всем отраслям на 21%. Самые высокие средние заработные платы IT-специалисты получают в Москве (222,8 тыс. рублей), Чукотском автономном округе (207,7 тыс. рублей), Московской области (179,3 тыс. рублей), Санкт-Петербурге (177,3 тыс. рублей) Ямало-Ненецком автономном округе (147,2 тыс. рублей).

Высокие зарплаты у IT-специалистов в крупных городах России (Москва, Санкт-Петербург), обусловлены высоким спросом на квалифицированных специалистов - крупнейшие IT-компании расположены здесь. В северных и дальневосточных регионах оплата труда IT-специалистов связана с общим высоким уровнем заработных плат, размер которых определяется суровыми климатическими условиями и географической отдаленностью от центральных районов страны.

Аналитики выяснили, что самая высокая заработная плата - у разработчиков - 178,3 тыс. рублей.

По данным сервиса Работа.ру, доля вакансий в IT с января по сентябрь 2025 года выросла на 7,5% по сравнению с аналогичным периодом 2024 года. При этом доля резюме в отрасли снизилась на 5,9%. Зарплатные предложения в сфере IT в вакансиях, опубликованных по всей России, выросли на 16,7%, а прирост зарплатных ожиданий соискателей составил 8,5%.

Наивысшие зарплатные предложения зафиксированы в вакансиях Краснодарского края - 585 тыс. рублей, Самарской области - 575 тыс. рублей, Республике Дагестан - 560 тыс. рублей, Москве - 550 тыс. рублей, а также Калужской области - 510 тыс. рублей.

https://tass.ru/ekonomika/25515469
11🤔3👏1
Шпаргалка по подсетям IPv4
👍9🔥42
В руководство по языку Java добавлена глава по аннотациям: их объявлению и применению, созданию своих аннотаций и использованию встроенных
https://metanit.com/java/tutorial/15.1.php
#java
🔥12👍6👏2
Сэм Альтман: «меня пугает сценарий, когда AGI можно будет запустить на ноутбуке»

В подкасте Брэда Герстнера глава OpenAI Сэм Альтман и босс Microsoft Сатья Наделла рассказали о совместных планах развития ИИ. По их словам, уже сейчас наблюдается мощный спрос на ИИ — крупных клиентов больше, чем вычислительные возможности компаний. Основное ограничение — недостаток железа и, особенно, электроэнергии. Это удобно для модели предоставления доступа к ИИ через облако: самые сильные модели живут в дата-центрах, доступ к ним регулируется и тарифицируется. И именно под эту модель сейчас делаются многомиллиардные инвестиции.

На этом фоне Альтман называет "пугающим" другой сценарий: если технологии оптимизации и локального запуска ИИ будут стремительно развиваться, то когда-нибудь настанет момент, когда пользователь сможет "запускать AGI на ноутбуке". Тогда вложения в дата-центры окажутся избыточными — для бизнеса это будет значить угрозу планируемой модели монетизации.

https://habr.com/ru/news/962534/
😈17🤔5😁3💯3👏1😨1
Внешние ключи vs ограничения. Многие путают эти понятия

Внешний ключ (foreign key): столбец, который устанавливает связь между двумя таблицами. Обычно реализуется как столбец в одной таблице (post), хранящий значения первичного ключа из другой таблицы (user) для обеспечения связи между ними.

Ограничение внешнего ключа (foreign key constraint): механизм, заставляющий СУБД обеспечивать целостность внешних ключей. Он гарантирует, что значения в столбце внешнего ключа (post→user_id) ссылаются на существующую запись в другой таблице (user→id)

Ограничения — полезное удобство (они поддерживают компонент «C» в ACID), но имеют свою цену: операции вставки, обновления и удаления в таблицах с ограничениями требуют дополнительных вычислительных ресурсов и операций ввода‑вывода для их соблюдения

Их удаление может привести к повышению производительности, но потребует переноса поддержки связей на уровень приложения. Приложения должны гарантировать, что их транзакции всегда оставляют эти связи в корректном состоянии
#sql
❤‍🔥12🤔1
Два типа пользователей Linux
😎39👍8🤔4🤡3👏1
Один энтузиаст начал проект по портированию Linux на WASM
https://github.com/joelseverin/linux-wasm

Этот порт ядра Linux на WebAssembly уже работает и запускает базовые программы из командной оболочки в веб-браузере. Однако есть проблемы со стабильностью и некоторыми браузерами
demo - https://joelseverin.github.io/linux-wasm/
12🤯12👍5🤝3😨2
4 основных типа машинного обучения (Machine Learning)
(описание в следующем посте)
3👍2👏1
4 основных типа машинного обучения (Machine Learning)
(описание к предыдущему посту)

### 1. Supervised Learning (Обучение с учителем)
- Описание: модель обучается на размеченных данных, где известны и входные, и выходные значения.
- Рабочий процесс:
1. Сбор размеченных данных (Collect labeled data).
2. Предварительная обработка датасета (Preprocess dataset).
3. Разделение на наборы данных (Split into sets).
4. Выбор алгоритма (Choose algorithm).
5. Настройка гиперпараметров (Tune hyperparameters).
6. Валидация модели (Validate model).
7. Обучение на данных (Train on data).
8. Оценка производительности (Evaluate performance).
9. Создание прогнозов (Make predictions).
10. Мониторинг точности (Monitor accuracy).

### 2. Unsupervised Learning (Обучение без учителя)
- Описание: модель находит скрытые закономерности в данных без размеченных результатов.
- Рабочий процесс:
1. Сбор сырых данных (Gather raw data).
2. Очистка датасета (Clean dataset).
3. Выбор признаков (Choose features).
4. Выбор алгоритма (Select algorithm).
5. Визуализация результатов (Visualize output).
6. Обнаружение закономерностей (Discover patterns).
7. Подбор модели (Fit the model).
8. Анализ кластеров (Analyze clusters).
9. Интерпретация результатов (Interpret results).
10. Уточнение входных данных (Refine inputs).

### 3. Reinforcement Learning (Обучение с подкреплением)
- Описание: агент учится, взаимодействуя с окружением, чтобы максимизировать вознаграждения.
- Рабочий процесс:
1. Определение окружения (Define environment).
2. Инициализация агента (Initialize agent).
3. Выбор действий (Choose actions).
4. Выполнение действий (Take action).
5. Улучшение стратегии (Improve strategy).
6. Обновление политики (Update policy).
7. Наблюдение за вознаграждением (Observe reward).
8. Повтор эпизодов (Repeat episodes).
9. Оценка поведения (Evaluate behavior).
10. Оптимизация вознаграждений (Optimize rewards).

### 4. Semi-Supervised Learning (Полууправляемое обучение)
- Описание: сочетает небольшое количество размеченных данных с большим набором неразмеченных данных.
- Рабочий процесс:
1. Сбор смешанных данных (Gather mixed data).
2. Предварительная обработка входных данных (Preprocess input).
3. Разметка небольшого набора (Label small set).
4. Обучение начальной модели (Train initial model).
5. Переобучение модели (Retrain model).
6. Добавление псевдометок (Add pseudo-labels).
7. Прогнозирование неразмеченных данных (Predict unlabeled).
8. Проверка точности (Validate accuracy).
9. Тонкая настройка модели (Fine-tune model).
10. Финальные прогнозы (Final predictions).
6👍4🤓2👏1
Микросервисы — ключевые шаблоны проектирования
(описание в следующем посте)
👍4🔥3👏1
Микросервисы — ключевые шаблоны проектирования
(описание к предыдующему посту)

Всегда начинайте с монолита. По мере роста вашего приложения и появления узких мест в отдельных компонентах (или когда им требуется независимое масштабирование) постепенно выделяйте их в микросервисы.

Netflix стал первопроходцем в применении архитектуры микросервисов, разбив своё монолитное приложение на сотни небольших сервисов.

Это позволило компании быстро масштабироваться и добиться высокой доступности.

Если вы переходите на архитектуру микросервисов, обратите внимание на следующие шаблоны:

[1.] Шаблон API‑шлюз (API Gateway)
◾️ единая точка входа для клиентов;
◾️ обработка маршрутизации;
◾️ аутентификация;
◾️ решение прочих сквозных задач.

[2.] Шаблон Прерыватель цепи (Circuit Breaker)
◾️ предотвращает каскадные сбои за счёт изоляции неисправных сервисов.

[3.] Шаблон Агрегатор (Aggregator)
◾️ объединяет данные из нескольких сервисов в единый ответ.

[4.] Шаблон Цепочка (цепочка ответственности) (Chained (Chain of Responsibility))
◾️ упорядочивает обработку запросов через последовательность сервисов.

[5.] База данных для каждого сервиса (Database per Service)
◾️ каждый сервис имеет собственную приватную базу данных для слабой связности.

[6.] Шаблон Saga
◾️ управляет распределёнными транзакциями между сервисами с помощью серии локальных транзакций.

[7.] Шаблон Сайдкар (Sidecar)
◾️ расширяет функциональность сервиса за счёт отдельного компонента, развёрнутого рядом.

[8.] Бэкенды для фронтендов (BFF / Backends for Frontends)
◾️ создаёт специализированные бэкенд‑сервисы для конкретных фронтендов.

[9.] CQRS (Command Query Responsibility Segregation - разделение ответственности за команды и запросы)
◾️ разделяет операции чтения и записи для улучшения масштабируемости и производительности.

[10.] Шаблон Event Sourcing
◾️ фиксирует все изменения состояния приложения в виде последовательности событий.

[11.] Асинхронный обмен сообщениями
◾️ обеспечивает слабую связность между сервисами с помощью очередей сообщений или брокеров.

[12.] Шаблон Strangler Fig
◾️ поэтапно переносит монолитное приложение на микросервисы.

[13.] Внешняя конфигурация
◾️ хранит настройки конфигурации вне кода приложения.

[14.] Централизованное логирование и мониторинг
◾️ агрегирует журналы и метрики из всех микросервисов для наблюдаемости.

[15.] Шаблон Обнаружение сервисов (Service Discovery)
◾️ позволяет сервисам динамически находить друг друга.

[16.] Шаблон Anti-Corruption Layer
◾️ создаёт слой изоляции, чтобы защитить ваше приложение от негативного влияния изменений во внешних системах.

[17.] Шаблоны декомпозиции
◾️ стратегии разбиения монолитного приложения на микросервисы:

1. Декомпозиция по бизнес‑возможностям → привязка сервисов к отдельным бизнес‑функциям (например, обработка заказов, управление запасами).
2. Декомпозиция по поддоменам → дальнейшее разделение возможностей на более мелкие и сфокусированные сервисы (например, управление клиентами в рамках заказов).

«Золотая середина» между монолитной и микросервисной архитектурами — модульный монолит.
6🔥3👍2
Традиционный обзор по рынку труда по статистике hh

В октябре ситуация на рынке труда в сфере ИТ в целом продолжила ухудшаться

Средние ожидаемые зарплаты остались примерно на одном уровне (100 000 р), зато немного повысились предлагаемые зарплаты - на 2396 (до 92396). С начала года прирост предлагаемых зарплат составил 8,7%, что уже немного выше официальной инфляции, но ниже среднего (10,4%)
(К слову, даже в сельском хозяйстве предлагаемые зп выше - 121 667)

Однако hh-индекс - показатель соотношения количества активных резюме к количеству активных вакансий снова ухудшился - рост до 17,8 (крайне высокий уровень конкуренции соискателей за рабочие места)
А год к году снижение вакансий составило 41%, а по сранению с сентябрем - уменьшение на 5%

https://stats.hh.ru/?countrySalaryDynamicChartProfArea=information_technology&hhIndexProfArea=information_technology
😢9🤯8🤬3😭2😁1