METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Добавил новую статью про Команды диагностики сетевых проблем в Linux на различных уровнях сетевой модели OSI
https://metanit.com/os/linux/7.4.php
#linux
23❤‍🔥7🔥6
Мейнтейнеры Godot жалуются, что репозиторий проекта заваливают сгенерированными пул-реквестами

Мейнтейнеры игрового движка Godot жалуются, что репозиторий проекта начали массово заваливать пул-реквестами с полностью сгенерированным кодом. У команды уходить много времени на проверку кода, что сильно деморализует.

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

Решением может стать автоматическая проверка кода, но тогда проблема замкнётся: придётся использовать нейросети для обнаружения нейросетей. Команда не хочет прибегать к этому и поддерживать сторонние AI-проекты. Единственное приемлемое для Godot решение: нанять разработчиков, которые будут проверять пул-реквесты.

https://bsky.app/profile/akien.bsky.social/post/3meyerixvhs2p
😭26🤷‍♂9🤯8🤡4😁3👍2🔥1
Использовать почтовые клиенты для @mail.ru — теперь только за деньги

В этом месяце, в феврале 2026 года, началась постепенная раскатка на пользователей почтового сервиса @mail.ru новых условий использования электронной почты: отныне подключать почтовые клиенты (Outlook, ThaBat, Thunderbird, и др.) к свою ящику можно только имея платную подписку "Mail Space", которая стоит около 400 рублей в месяц.

"Платность" доступа к электронной почте через почтовые клиенты появилась ещё не у всех пользователей, а где-то у половины. Но, надо полагать, скоро охват будет стопроцентным.

https://habr.com/ru/news/1001172/
🤣24👎15🤷‍♂3👀2
4 базовые концепции объектно-ориентированного программирования (ООП)
(продолжение в следующей теме)
5👍2🤝2
4 базовые концепции объектно-ориентированного программирования (ООП)
(продолжение предыдущего поста)

Четыре концепции - абстракция, инкапсуляция, наследование и полиморфизм формируют основу ООП и позволяют создавать гибкие, модульные и повторно используемые программы.

1. Абстракция (Abstraction)

Суть: абстракция — это процесс сокрытия деталей реализации и предоставления пользователю только функциональности. То есть мы фокусируемся на «что делается», а не на «как это делается».

На изображении:
- Приведён пример с классом Car (абстрактный класс), который содержит абстрактный метод stop().
- Конкретные реализации (Honda, Tesla, Ford) наследуют Car и предоставляют свою реализацию метода stop().
- Визуально показано, как общий интерфейс (Car) связан с конкретными реализациями (марки автомобилей).

Пример кода:
public abstract class Car {
public abstract void stop();
}

public class Honda extends Car {
@Override
public void stop() {
System.out.println("Honda::Stop");
System.out.println("Mechanism to stop the car using break");
}
}


2. Инкапсуляция (Encapsulation)

Суть: инкапсуляция — это объединение кода и данных в единый блок (класс), при этом каждый объект контролирует своё состояние. Это позволяет скрыть внутреннюю реализацию и предоставить доступ только через методы.

На изображении:
- Показана структура класса: переменные (Variables) и методы (Methods) объединены в класс (Class).
- Пример с классом Car, где переменная name объявлена private, а доступ к ней осуществляется через методы getName() (getter) и setName(String name) (setter).

Пример кода:
public class Car {
// private variable
private String name;

// getter method for name
public String getName() {
return name;
}

// setter method for name
public void setName(String name) {
this.name = name;
}
}


3. Наследование (Inheritance)

Суть: наследование позволяет одному классу (производному, дочернему) наследовать свойства и методы другого класса (базового, родительского). Отражает отношение «IS-A» («является»).

На изображении:
- Схема с классом Vehicle (базовый класс) и производными классами: Bike, Car, Bus, Truck.
- Пример кода показывает, как класс Car наследует поле brand от Vehicle и добавляет своё поле doors.
- Метод describe() переопределяется в классе Car для предоставления специфической реализации.

Пример кода:
class Vehicle {
protected String brand;

// Constructor
public Vehicle(String brand) {
this.brand = brand;
}

// Method to be overridden
public String describe() {
return "This is a vehicle of brand: " + brand;
}
}

class Car extends Vehicle {
private int doors;

// Constructor
public Car(String brand, int doors) {
super(brand);
this.doors = doors;
}

// Override the describe method
@Override
public String describe() {
return "This is a car of brand: " + brand + " with " + doors + " doors.";
}
}


4. Полиморфизм (Polymorphism)

Суть: полиморфизм — это способность объектов выполнять одни и те же действия разными способами. Объекты разных классов могут использоваться взаимозаменяемо, если они наследуют общий интерфейс.

На изображении:
- Разделяется на два типа: полиморфизм на этапе компиляции (Compile Time Polymorphism) и полиморфизм на этапе выполнения (Run Time Polymorphism).
- Compile Time Polymorphism включает перегрузку операторов (Operator Overloading) и перегрузку функций (Function Overloading).
- Run Time Polymorphism реализуется через виртуальные функции (Virtual Function) и переопределение методов.
- Пример: класс Vehicle с методом start(), который переопределяется в классе Car. Объект Car может быть присвоен ссылке типа Vehicle, и при вызове start() будет выполняться реализация из Car.
9💋3🔥2🙏2👏1
Пример кода:
class Vehicle {
public void start() {
System.out.println("The vehicle starts.");
}
}

class Car extends Vehicle {
@Override
public void start() {
System.out.println("The car starts with a key.");
}
}

// Использование
Vehicle myVehicle = new Car();
myVehicle.start(); // Вызывается реализация из Car
💋7👍6🙏3🐳2🏆2🤝1
Создатель Claude Code от Anthropic предсказал, что должность инженера-программиста начнет «исчезать» в 2026 году

Борис Черни, разработчик популярного ИИ-агента Claude Code от компании Anthropic, предупредил, что профессия инженера-программиста скоро уйдёт в прошлое. По его словам, ИИ полностью автоматизирует написание кода, что радикально изменит рынок труда.

В интервью подкасту Y Combinator Lightcone Черни предсказал «безумные» изменения уже в 2026 году.

«Мы увидим, как профессия „инженер‑программист“ исчезнет. Возможно, останутся только „создатели“, возможно, „менеджеры продукта“, а может быть, мы сохраним эту профессию как нечто отжившее из прошлого».

Черни объяснил, что инженеры перейдут к новым задачам, они будут писать спецификации и общаться с пользователями. По его словам, команды станут универсальными, и код будут писать все, от продакт-менеджеров и дизайнеров до руководителей отделов и финансовых специалистов.

https://www.youtube.com/watch?v=PQU9o_5rHC4
🤡86🖕15😁11🤣5🤔3👍21
ИИ не повлиял на производительность компаний, несмотря на сотни миллиардов инвестиций

По данным опросов (NBER Working Paper №34836), почти 90% руководителей не зафиксировали сколько-нибудь ощутимого влияния ИИ ни на занятость персонала, ни на эффективность бизнес-процессов за последние три года. Рядовые сотрудники в среднем уделяют нейросетям лишь полтора часа в неделю, а каждый четвёртый не обращается к ИИ-инструментам вовсе — и это на фоне сотен миллиардов долларов, влитых в отрасль.

Ситуацию нередко сравнивают с «парадоксом Солоу». После технологического прорыва 1960-х — эпохи транзисторов, микросхем и первых ЭВМ — экономисты ожидали резкого ускорения производительности труда. Вместо этого в 1970–80-е годы она фактически замедлилась, невзирая на массовое распространение информационных технологий. Реальный эффект дал о себе знать лишь в середине 1990-х — примерно спустя два десятилетия после старта революции.

https://www.nber.org/papers/w34836
19👍8❤‍🔥22👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Приложение для терминала с онлайн-показом прогноза погоды в режиме ASCII-анимации

Разработчик под ником Veirt выпустил открытое мультиплатформенное приложение под названием weathr. Это терминальный просмотрщик текущей погоды в режиме ASCII-анимации. Исходный код проекта написан на Rust и опубликован на GitHub

Решение включает в себя данные о погоде в реальном времени от Open-Meteo с анимированными дождями, снегом, грозами, летающими самолётами, сменой дня и ночи, а также автоматическим определением местоположения.

https://github.com/Veirt/weathr
👍217🔥5🤔1😱1🤩1🤮1👾1
Что быстрее исчезнет?
Anonymous Poll
81%
Компания Anthropic
19%
Профессия программиста
😁60👏11🔥7💯4🤔2👌2👨‍💻2👎1
VK переходит на язык Go

За последние два года к команде VK присоединились 400 разработчиков, специализирующихся на языке Go, при этом 300 из них наняли в 2025 году — это втрое больше показателя 2024 года. Расширение экспертизы в Go стало частью долгосрочной технологической стратегии компании.

Язык активно используется при создании инфраструктурных и облачных решений, а также в серверной части ключевых сервисов, включая «ВКонтакте» и «VK Видео». В компании отметили, что системный подход к найму и внутреннему обучению позволяет формировать команды для разработки высоконагруженных сервисов и развития технологической платформы.

Технический директор бизнес‑группы «Социальные платформы и медиаконтент» VK Сергей Ляджин отметил, что развитие Go‑направления — одно из ключевых при построении инфраструктурных команд. По его словам, язык оптимально подходит для продуктов компании благодаря способности эффективно работать с высокой нагрузкой, распределённой архитектурой и строгими требованиями к стабильности. Использование единого технологического стека, добавил он, ускоряет разработку сложных решений и упрощает масштабирование сервисов.

https://vk.com/press/go-devs-2026
🤡26🔥7🤮5👎3😁32👏1👾1
METANIT.COM pinned «Что быстрее исчезнет?»
Аспекты производительности базы данных
(продолжение в следующем посте)
🔥42👍2👾1
Аспекты производительности базы данных
(продолжение предыдущего поста)

Производительность базы данных зависит от комплекса факторов: метрик, типа рабочей нагрузки, ключевых параметров системы и применяемых стратегий оптимизации. Грамотный выбор и настройка этих аспектов позволяют добиться высокой скорости обработки запросов, эффективного использования ресурсов и надёжности работы системы. Рассмотрим детально эти аспекты.

1. Ключевые метрики (Key Metrics), влияющие на производительность:
* Query Execution Time (время выполнения запроса) — чем дольше выполняется запрос, тем ниже производительность.
* Throughput (пропускная способность) — количество операций (запросов), которые база данных может обработать за единицу времени.
* Latency (задержка) — время ожидания между отправкой запроса и получением ответа.
* Resource Utilization (использование ресурсов) — эффективность использования CPU, памяти, дискового пространства и других ресурсов.

2. Тип рабочей нагрузки (Workload Type) и его влияние:
* Write-Heavy (интенсивная запись) — приводит к увеличению задержки (latency), конкуренции за блокировки (lock contention) и нагрузке на обслуживание индексов.
* Read-Heavy (интенсивное чтение) — вызывает высокую задержку для сложных запросов и промахи кэша (cache misses).
* Delete-Heavy (интенсивное удаление) — может привести к фрагментации данных и снижению производительности.
* Competing Workload (конкурирующая нагрузка) — одновременное выполнение разных типов запросов (чтение, запись, удаление) может вызвать конкуренцию за ресурсы и увеличить задержку.

3. Ключевые факторы (Key Factors), определяющие производительность:
* Item Size (размер элемента) — большие элементы данных замедляют обработку.
* Item Type (тип элемента) — разные типы данных (текст, бинарные данные и т. д.) требуют разных ресурсов для обработки.
* Dataset Size (размер набора данных) — чем больше объём данных, тем сложнее их обрабатывать.
* Concurrency (параллелизм) — количество одновременных запросов влияет на конкуренцию за ресурсы.
* Consistency Expectations (ожидания согласованности) — требования к уровню согласованности данных (например, ACID) могут замедлить обработку.
* Geographic Distribution (географическое распределение) — распределение данных по разным регионам может увеличить задержку из-за сетевых ограничений.
* HA Expectations (ожидания высокой доступности) — меры для обеспечения высокой доступности (например, репликация) могут добавить нагрузку на систему.
* Workload Variability (вариативность рабочей нагрузки) — колебания в интенсивности запросов усложняют оптимизацию.

4. Стратегии повышения производительности базы данных (Database Performance Strategies):

* Database Indexing (индексирование базы данных):
* создание индексов для ускорения поиска данных (например, по email);
* связь указателей (pointer) с идентификаторами (Cust_ID) для быстрого доступа к записям.

* Sharding and Partitioning (шардинг и партиционирование):
* разделение монолитной базы данных на отдельные шарды (части) для распределения нагрузки;
* улучшение масштабируемости и снижение задержки за счёт параллельной обработки запросов на разных шардах.

* Denormalization (денормализация):
* снижение количества соединений (joins) за счёт дублирования данных (например, хранение информации о продуктах и сегментах вместе с заказами клиентов);
* ускорение чтения за счёт увеличения объёма данных (например, таблица Customer_Orders содержит поля product_name, segment_name, customer_name, order_id, order_amount).

* Database Replication (репликация базы данных):
* использование ведущего узла (Leader Node) для записи и следующих узлов (Follower Nodes) для чтения;
* репликация данных через поток (Replication Stream) для обеспечения доступности и балансировки нагрузки;
* разделение запросов на Read-Write (на ведущем узле) и Read-Only (на следующих узлах) для оптимизации производительности.
3👍2🔥2👾1
* Database Locking Techniques (техники блокировки базы данных):
* управление блокировками для предотвращения конфликтов при одновременном доступе к данным (например, операции с банковским счётом);
* использование версий строк (versioning) для отслеживания изменений (например, version: 1 и version: 2);
* обработка сценариев, когда несколько пользователей пытаются изменить одни и те же данные (например, Sarah и John пытаются уменьшить баланс счёта).
3🔥3👍2👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Вкратце, как работает нейронная сеть
👍15🤓11😱5👎4🤔2😐1🖕1👨‍💻1👾1