METANIT.COM – Telegram
METANIT.COM
5.9K subscribers
1.68K photos
82 videos
9 files
1.04K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Упаковка и распаковка данных в пакетах при передаче информации по сети
👍10🔥4👏2🤯1💩1
24 наиболее важных математических формул в Data Science
🤔27😨17🔥4🤡3😭21
Архитектура ИИ-агентов
9🤮5🤔4🤡4👍1👎1🌚1🤨1
9 распространенных принципов проектирования программного обеспечения:

1. DRY (Don't Repeat Yourself — Не повторяйтесь):
Избегайте дублирования кода. Храните логику в централизованном месте, чтобы упростить поддержку кодовой базы.

2. KISS (Keep It Simple, Stupid — Будь проще, глупыш):
Стремитесь к простоте в ваших решениях. Избегайте излишнего усложнения и добавления ненужных уровней.

3. YAGNI (You Aren't Gonna Need It — Тебе это не понадобится):
Создавайте только то, что необходимо прямо сейчас. Не тратьте время на гипотетические функции, которые могут никогда не использоваться.

4. LOD (Law of Demeter — Закон Деметры):
Взаимодействуйте только с непосредственными соседями. Не создавайте длинные цепочки вызовов.

SOLID-принципы:

5. SRP (Single Responsibility Principle — Принцип единственной ответственности):
Класс должен иметь только одну ответственность. Делайте каждый компонент сфокусированным и целостным.

6. OCP (Open/Closed Principle — Принцип открытости/закрытости):
Код должен быть открытым для расширения, но закрытым для модификации. Добавляйте новые функции, не изменяя существующую логику.

7. LSP (Liskov Substitution Principle — Принцип подстановки Лисков):
Подклассы должны быть взаимозаменяемы с родительскими классами без нарушения функциональности.

8. ISP (Interface Segregation Principle — Принцип разделения интерфейсов):
Создавайте небольшие, специализированные интерфейсы вместо больших и общих.

9. DIP (Dependency Inversion Principle — Принцип инверсии зависимостей):
Высокоуровневые модули не должны зависеть от низкоуровневых. Оба должны зависеть от абстракций.
👍32🔥135🤡1
Схема, как выбрать подходящий статусный код HTTP
👍29🔥43💩2
«Гугление» убивает креативность

Специалисты из Университета Карнеги-Меллона решили узнать, способствует ли доступ к информации в интернете расширению креативных возможностей или, наоборот, ограничивает их, вызывая так называемый эффект фиксации — когда человек застревает в одном способе мышления из-за влияния уже известных примеров и идей.

В исследовании приняли участие 244 студента, которых случайным образом распределили по группам с доступом к Google и без. Участникам предлагалось за три минуты придумать как можно больше необычных способов использования таких предметов, как зонт и щит. Эти объекты были выбраны из-за различий в количестве доступных онлайн-ассоциаций: по запросу «umbrella» Google выдает больше разнообразных результатов, чем по слову «shield». Исследователи оценивали количество и качество идей, предложенных как индивидуально, так и в группах, которые моделировали типичную ситуацию мозгового штурма.

Оказалось, что на индивидуальном уровне доступ к Google действительно помогал генерировать больше идей, но только тогда, когда интернет предлагал широкий спектр вариантов, как в случае с зонтом. При этом, когда информации в интернете было меньше, доступ к нему не давал никакого преимущества. Но наиболее интересные результаты появились при анализе групп: группы без доступа к Google демонстрировали более разнообразные и оригинальные идеи, особенно по мере увеличения количества участников. Те же, кто использовал интернет, часто приходили к одинаковым или похожим выводам, что снижало творческое разнообразие в целом. Группы без интернета чаще генерировали уникальные, так называемые «синглетные» идеи, возникавшие только у одного участника — это, в свою очередь, способствовало повышению коллективной креативности.

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

https://newatlas.com/medical/internet-access-creativity-fixation-effect/
👍144😱4😁2
Специалисты Final Round подсчитали, что за первое полугодие 2025 года американские IT-компании уволили более 94 тысяч технических специалистов. Причем это произошло из-за внедрения ИИ.

Аналитики выделили три основных тренда сокращений:

- ИИ заменяет повторяющиеся задачи. В IBM внутренние инструменты, такие как AskHR, взяли на себя большинство основных функций HR, а в CrowdStrike заявили, что ИИ позволяет быстрее переходить от идеи к продукту с меньшим количеством людей;

- компании сокращают команды, чтобы финансировать рост ИИ. Salesforce, Google и др. перенаправили бюджеты с традиционных линеек продуктов на инфраструктуру ИИ, обучение моделей и найм. Microsoft публично заявляла, что меняет структуру команды, увеличивая число инженеров и сокращая менеджеров среднего звена;

- ИИ помогает людям делать больше с меньшими затратами. Например, в Microsoft такие инструменты, как Copilot, помогают генерировать код.

Авторы отчета также проанализировали, какие позиции сокращают в первую очередь. Это программисты (в основном, джуны), кадровики, сотрудники служб поддержки клиентов, копирайтеры, аналитики данных и менеджеры среднего звена.

В итоге только в Кремниевой долине число рабочих мест сократилось на 11 тысяч.

«Внедрение ИИ теперь является бизнес-стратегией, а не побочным проектом. Компании показывают, что могут расти, сокращая персонал. Они не планируют возвращать эти роли», — пишут авторы отчёта.

https://www.finalroundai.com/blog/ai-tech-layoffs-mid-2025
👎15🤔4🥴3👾2👍1
Президент РФ Владимир Путин подписал закон, который обязывает при продаже в России смартфонов, планшетов и других технически сложных товаров обеспечивать возможность установки и обновления программ с использованием единого магазина приложений Rustore, сообщает официальный портал правовой информации. Инициатива внесена депутатами от всех пяти думских фракций и группой сенаторов. Она предусматривает, что при продаже смартфонов в России должна быть обеспечена возможность устанавливать и обновлять программы через единый магазин приложений. Также закон требует обеспечивать платежи при установке и использовании программ с применением механизмов единого магазина приложений.

https://sozd.duma.gov.ru/bill/654254-8
💩48🤡23👍16🤮103🔥2😁1🕊1
Балансировка нагрузки является основополагающим принципом построения высокодоступных систем

1. Что такое балансировка нагрузки?

Балансировка нагрузки — это практика распределения вычислительных нагрузок между двумя или более компьютерами.

Это делается для повышения отказоустойчивости, улучшения доступности приложений и распределения нагрузки между несколькими машинами.

Балансировка нагрузки может осуществляться на уровне 4 OSI или уровне 7 OSI в зависимости от архитектуры приложения:
* Балансировщики на уровне 4 маршрутизируют трафик на основе IP-адресов и портов
* Балансировщики на уровне 7 предоставляют гораздо больший контроль над маршрутизацией с использованием протоколов, URL-адресов и т.д.

2. Статическая vs динамическая балансировка нагрузки

Статическая балансировка работает на основе предварительно настроенных параметров и идеально подходит для сценариев, где не ожидается резкого роста трафика.

Популярные алгоритмы статической балансировки:
* Круговая система (Round robin)
* Взвешенный круговой алгоритм (Weighted round robin)
* IP-хеши

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

Популярные алгоритмы динамической балансировки:
* Наименьшее количество соединений (Least connection)
* Взвешенное наименьшее количество соединений (weighted least connection)
* Взвешенное время отклика (weighted response time)
* Балансировка на основе ресурсов (resource-based)

Уровень 4 (Сетевая балансировка нагрузки)

Балансировщик нагрузки создается с указанием IP/DNS и порта, и связывается с группой виртуальных машин, на которых запущена определенная служба на определенном порту

Задача балансировщика — принимать запросы на определенном порту и перенаправлять их на один из доступных внутренних хостов.

Балансировщик может быть настроен на выполнение периодических проверок работоспособности для обеспечения доступности внутренних хостов и приложений.

Уровень 7 (Балансировка нагрузки на уровне приложений)

Конечный пользователь устанавливает соединение с определенным URL.

Балансировщик расшифровывает запрос, анализирует запрашиваемый сервис и направляет его на внутренний сервер, на котором запущен запрошенный сервис.

Балансировка на уровне 7 предоставляет дополнительные преимущества, такие как:
* Завершение SSL-сессий
* Кэширование
* Предварительная обработка запросов
13👍3🫡3
Балансировка нагрузки (иллюстрация к предыдущему посту)
10👍2🔥2
Команды SQL для работы с таблицами и базами данных #sql
13👍8🔥2❤‍🔥1
Windows 11 стала самой популярной настольной операционной системой в мире

Windows 11 впервые обогнала Windows 10 по глобальной доле рынка настольных ОС. Согласно StatCounter, по состоянию на июль 2025 года ей принадлежит 52% рынка, тогда как у Windows 10 — 44,59%. Это произошло менее чем за четыре месяца до завершения официальной поддержки Windows 10, назначенной на 14 октября 2025 года.

Хотя Windows 11 вышла еще в 2021 году, ее распространение шло заметно медленнее: Windows 10 достигла отметки в 400 млн установок за год, тогда как Windows 11 достигла этого уровня лишь за 2 года.

В России переход проходит еще медленнее: по данным StatCounter, Windows 11 установлена лишь на 19,53% устройств, тогда как Windows 10 — на 73,98%.

https://gs.statcounter.com/windows-version-market-share/desktop/worldwide/
🤡14😁84👍4🤮3❤‍🔥2🕊2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Сложение двух массивов на GPU

CPU
- Имеет одно ядро (в предложеннои примере на видео).
- Его глобальная память содержит 120 ячеек (с 0 по 119).
- Для использования GPU ему необходимо скопировать данные из глобальной памяти в GPU.
- После завершения работы GPU он скопирует результаты обратно.

GPU
- Имеет четыре ядра для выполнения четырёх потоков (с 0 по 3).
- Содержит регистровый файл на 28 ячеек (с 0 по 27).
- Этот регистровый файл имеет четыре банка (с 0 по 3).
- Все потоки используют один и тот же регистровый файл.
- Однако они должны выполнять операции чтения/записи, используя четыре банка.
- Каждый банк допускает 2 операции чтения (Чтение 0, Чтение 1) и 1 операцию записи за один тактовый цикл.
👍132🤔1🍓1
12 важнейших структур данных для технических собеседований
👍17🔥64😱1🍌1
12 важнейших структур данных для технических собеседований

1. Массивы
* Коллекция элементов фиксированного размера, хранящихся в непрерывной области памяти
* Обеспечивает доступ по индексу за O(1)

2. Матрица (двумерный массив)
* Многомерная структура данных для представления сеток, графов и решения задач динамического программирования

3. Связный список
* Динамическая структура данных, где элементы (узлы) связаны через указатели
* Типы: односвязный список, двусвязный список, кольцевой связный список

4. Стек
* Структура данных типа Last-In-First-Out (LIFO), где последний добавленный элемент удаляется первым
* Поддерживает операции push, pop и peek за O(1)

5. Очередь
* Структура данных типа First-In-First-Out (FIFO)
* Позволяет добавлять элементы в конец (enqueue) и удалять из начала (dequeue) за O(1)
* Используется для обработки элементов в том же порядке, в котором они были добавлены

6. Хеш-таблица
* Структура данных типа "ключ-значение", использующая хеш-функцию для быстрого поиска
* Обеспечивает среднее время O(1) для операций вставки/удаления/поиска, в худшем случае O(N) (из-за коллизий)

7. Дерево
* Иерархическая структура данных с корневым узлом и дочерними узлами
* Типы: бинарное дерево, N-арное дерево, AVL-дерево, красно-чёрное дерево

8. Бинарное дерево поиска (BST)
* Специальное дерево, где левый потомок < корень < правый потомок
* Обеспечивает O(log N) для поиска, вставки и удаления в сбалансированных BST

9. Куча (приоритетная очередь)
* Структура данных на основе бинарного дерева, где родительский элемент всегда больше (max heap) или меньше (min heap) дочерних
* Обеспечивает O(log N) для вставки/удаления и O(1) для получения минимума/максимума

10. Префиксное дерево (Trie)
* Дерево для быстрого поиска строк
* Обеспечивает O(M) для операций вставки/поиска/удаления, где M — длина строки

11. Граф
* Набор узлов (вершин), соединённых рёбрами
* Представляется с помощью списка смежности (эффективно) или матрицы смежности
* Типы: ориентированный, неориентированный, взвешенный, невзвешенный

12. Система непересекающихся множеств (Union-Find / Disjoint Set)
* Структура данных для эффективной обработки динамической связности
* Поддерживает операции Union(x, y) и Find(x) почти за O(1) (с сжатием путей)
* Применяется для обнаружения циклов и поиска компонент связности в графе
❤‍🔥16👍96🍌1
Команда ls в Linux часто является инструментом для проверки атрибутов файла, таких как разрешения, владелец и временные метки.

Но что, если вам нужна более подробная информация о файле или даже о файловой системе, в которой он находится? Вот тут-то и пригодится команда stat.

Команда stat (сокращение от «status») — это мощная утилита в Linux, которая предоставляет подробную информацию о файлах и файловых системах.

В то время как ls дает краткий обзор, stat анализирует более глубоко, предлагая исчерпывающие данные, такие как размер блока, номер инода и контекст безопасности.

Это особенно удобно для проверки временных меток файлов, таких как время последнего доступа, модификации или изменения.
#linux
12👍4🔥3🍌1
Шардинг vs разделение — в чем разница?

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

Пример: разделение таблицы логов по месяцам в рамках одного экземпляра PostgreSQL

Шардинг
* Распределение данных между несколькими серверами базы данных
* Каждый сервер (шар) содержит часть полного набора данных
* Позволяет осуществлять горизонтальное масштабирование, когда одного сервера недостаточно

Шардинг = Горизонтальное партиционирование + Распределение по серверам

Пример: распределение записей пользователей по шарам на основе ID пользователя

В большинстве систем:
* Партиционирование данных используется для оптимизации производительности внутри одного сервера
* Шардинг применяется, когда одного сервера становится недостаточно и требуется горизонтальное масштабирование
👍112🔥2
Программистам из Свердловской области (и не только) приготовиться...

В Свердловской области проблему нехватки высококвалифицированных кадров будут решать за счет мигрантов из Индии, Шри-Ланки и Северной Кореи. Об этом в разговоре с журналистом ЕАН заявил глава Уральской торгово-промышленной палаты (УТПП) Андрей Беседин.
«Насколько я слышал от своих индийских коллег, до конца года в Россию, в том числе и Свердловскую область, приедет 1 млн специалистов из Индии. В Екатеринбурге открывается новое Генконсульство этой страны, которое будет заниматься этими вопросами», - отметил глава УТПП.

https://www.rbc.ru/society/09/07/2025/686e4e9e9a79470e09f54e1f?from=newsfeed
https://eanews.ru/ekaterinburg/20250709113746/naplyv-trudovyh-migrantov-iz-ekzoticheskih-stran-ozhidaet-sverdlovchan

Отмечу, что речь идет не о мигрантах для сборки урожая или строительства, а именно о высококвалифицированных кадрах.
🤡85👎8🤯8👍5🤮3🤬2💩21😢1💔1👨‍💻1