METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Оптимистическая и Пессимистическая блокировки в базах данных (Optimistic / Pessimistic Locking)
(продолжение в следующем посте)
❤‍🔥32👍2
Оптимистическая и Пессимистическая блокировки в базах данных (Optimistic / Pessimistic Locking)
(продолжение предыдущего поста)

### Пессимистическая блокировка (Pessimistic Locking)

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

Как работает (на примере изображения):
1. Сара и Джон одновременно запрашивают данные аккаунта (id:1, amt:40).
2. Когда Сара получает данные, система устанавливает эксклюзивную блокировку на запись (показана иконкой замка). Это значит, что:
- Сара может изменять данные.
- Джон не может сразу изменить те же данные — его запрос «зависает» до снятия блокировки.
3. Сара уменьшает баланс на 20 (amt:20) и фиксирует изменения (Commit & Release Lock), снимая блокировку.
4. Только после этого Джон может выполнить свою операцию — уменьшить баланс ещё на 30. Итоговый результат: amt:-10.
5. Ключевой момент: пессимистическая блокировка запрещает даже чтение заблокированных записей до снятия блокировки (отмечено на схеме крестиком напротив попытки Джона обновить данные).

Особенности:
- Обеспечивает максимальную целостность данных.
- Может приводить к «contention» (конкуренции за ресурсы) — задержкам, если много пользователей хотят работать с одними данными.
- Блокировка снимается только после COMMIT (фиксации транзакции).

### Оптимистическая блокировка (Optimistic Locking)

Суть: основана на предположении, что конфликты маловероятны. Сначала выполняется чтение данных, а проверка на конфликт происходит только при записи (COMMIT). Это повышает производительность, но требует обработки возможных ошибок.

Как работает (на примере изображения):
1. Сара и Джон одновременно читают данные аккаунта (id:1, amt:40, version:1). Версия (version) — ключевой элемент оптимистической блокировки.
2. Сара уменьшает баланс на 20 и пытается зафиксировать изменения, используя исходную версию (version:1). Операция проходит успешно: amt:20, version:2.
3. Джон тоже пытается уменьшить баланс на 20, но использует устаревшую версию (version:1), которая уже не соответствует текущей (version:2).
4. Система отклоняет транзакцию Джона с ошибкой «No Account Row Matched» — потому что данные изменились с момента чтения.
5. Джону нужно:
- Перечитать актуальные данные (version:2).
- Повторить операцию с новой версией.

Особенности:
- Не блокирует доступ к данным — высокая параллельность операций.
- Конфликты выявляются только на этапе записи (write time).
- Требует логики повтора (retry logic) для транзакций, которые не прошли из-за конфликта версий.
- Использует версионирование (version) для отслеживания изменений.

### Ключевые отличия

- Время блокировки: пессимистическая — блокирует заранее, оптимистическая — проверяет конфликт только при записи.
- Влияние на производительность: пессимистическая может вызывать задержки, оптимистическая — эффективнее, но требует обработки ошибок.
- Сценарии применения:
- Пессимистическая — там, где критична целостность данных (банковские транзакции, учёт запасов).
- Оптимистическая — в системах с низкой вероятностью конфликтов или где важна скорость (веб-приложения, CRM).

Распространенные рекомендации по использованию
- Держать блокировки минимально возможное время.
- Применять блокировки на самом детальном уровне (строки, а не таблицы).
- Реализовать логику повтора для транзакций, потерпевших конфликт.
- Выбирать тип блокировки в зависимости от приоритетов: целостность данных (пессимистическая) или производительность (оптимистическая).
👍7❤‍🔥3🤝3
3da48383cb9a9151ce26d75705529c5f.webm
314.5 KB
В сети появился портал Rent a Human, где нейросети могут выбрать человека для различных действий, например, CEO на проект, разработчиков для решения определённых проблем и других спецов. Люди на этой площадке могут также предлагать свои услуги для нейросетей.

https://rentahuman.ai/

Так что если вы являетесь нейросетью, и вам нужна человеческая помощь, можете воспользоваться этим сайтом.

Напомню, что ранее была была запущена специальная соцсеть для ИИ-агентов под названием moltbookи и вышел аналог PornHub для нейросетей. ИИ-агенты сделали сайт для себя под названием MoItHub
🤯16😁10🤡4🤮1
Сравнение базовых операций в MySQL и MongoDB
👌144🔥3🎃3🍌1🦄1
Google планирует отказаться от операционной системы ChromeOS к 2034 году

Google планирует поэтапный отказ от операционной системы ChromeOS к 2034 году. Таким образом компания намерена выполнить свои 10-летние обязательства по поддержке устройств, которые не будут совместимы с Aluminium OS. Объединённая из ChromeOS и Android система должна дебютировать в 2028 году, при этом уже в 2026 году доступ к ней получат так называемые коммерческие доверенные тестировщики. В релизной версии 2028 года предполагается поддержка корпоративного и образовательного сегментов, тогда как сроки полноценного выхода Aluminium OS пока не уточняются.
Продолжительный переходный период в Google объясняют аппаратными ограничениями. Большинство уже выпущенных Chromebook не смогут работать под управлением новой системы, поэтому компания обязана поддерживать ChromeOS вплоть до 2033 года.

https://www.theverge.com/tech/869659/aluminium-why-googles-android-for-pc-launch-may-be-messy-and-controversial
🔥7👍1🥰1👏1
Как работает атака CSRF (Cross-Site Request Forgery)
(продолжение в следующем посте)
4👍3👏1
Как работает атака CSRF (Cross-Site Request Forgery)
(продолжение предыдущего поста)

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

1. Пользователь входит в систему и получает сессионный cookie/токен (шаг 1):
* пользователь заходит на легитимный сайт и проходит аутентификацию;
* сайт выдаёт пользователю сессионный cookie или токен, который подтверждает его авторизацию.

2. Злоумышленник создаёт вредоносный веб-сайт или код (шаг 2):
* атакующий разрабатывает специальную страницу или фрагмент кода, который имитирует легитимные запросы к сайту, где пользователь уже авторизован;
* цель — заставить браузер жертвы отправить запрос на целевой сайт от имени пользователя.

3. Пользователь взаимодействует с вредоносным контентом (шаг 3):
* жертва посещает вредоносный сайт или кликает на ссылку, содержащую вредоносный код (например, через фишинг, социальную инженерию);
* при этом пользователь остаётся авторизованным на целевом сайте (где хранится его cookie/токен).

4. Вредоносный код отправляет запрос с учётными данными пользователя (шаг 4):
* вредоносный код автоматически формирует HTTP-запрос (например, для перевода денег, изменения настроек аккаунта и т. д.) и отправляет его на целевой сайт;
* браузер жертвы передаёт вместе с запросом сессионный cookie/токен, так как считает запрос легитимным (пользователь уже авторизован).

5. Целевой сайт обрабатывает поддельный запрос (шаг 5):
* сайт не может отличить легитимный запрос от поддельного, так как видит валидный cookie/токен;
* сайт выполняет действие, заложенное в запросе (например, переводит деньги, меняет пароль и т. д.), думая, что это действие инициировал сам пользователь.

6. Злоумышленник получает несанкционированный доступ и манипулирует действиями учётной записи пользователя (шаг 6):
* атакующий достигает своей цели — выполняет нежелательные действия от имени жертвы (кража данных, финансовые махинации, распространение вредоносного контента и т. д.).

### Способы защиты от CSRF-атак:
* Использование Anti-CSRF токенов — уникальные токены добавляются в формы и запросы для проверки легитимности.
* Двойная отправка cookies (Double Submit Cookies) — сравнение cookies в HTTP-заголовке и теле запроса.
* Проверка заголовка Referer — сайт анализирует, откуда пришёл запрос, и отклоняет подозрительные.
* Ограничение cookies для одного сайта (SameSite cookies) — предотвращает отправку cookies на сторонние сайты.
* Ограничение методов запросов (Limit Request Methods) — разрешаются только безопасные HTTP-методы (например, GET), а опасные (POST, PUT) требуют дополнительной проверки.
* Усиленная аутентификация пользователя — дополнительные шаги подтверждения (например, двухфакторная аутентификация) для критических действий.
9👍7🙏2
В США спрос на редакторов и писателей вырос из-за развития ИИ

Один из экспертов заявил, что на рынке контента «настолько много мусора», что работодатели готовы платить большие суммы тем, кто может писать качественно, сообщает портал

аботодатели в США снова стремятся нанимать специалистов в области коммуникаций, редакторов и писателей, поскольку вместе с распространением технологий искусственного интеллекта (ИИ) растет количество некачественного контента, сгенерированного нейросетями. Об этом сообщил портал Business Insider.

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

https://tass.ru/ekonomika/26345669
🤣287👍5🔥2
Шпаргалка по двоичному представлению числовых значений
👍16🔥1🥰1
ИИ-бот заплатил человеку $100 за физический пикет

Ранее сообщалось, что для ИИ-агентов появился сервис, где они могут нанять людей. И вот пользователь из США рассказал, что нашел подработу на ресурсе Rent a Human, где ИИ-бот заплатил ему $100 за физический пикет с нарисованным от руки плакатом.

В задании было указано, что человеку надо просто сделать большой плакат с надписью, что ИИ заплатил ему за это.

После выполнения задания человек получил оплату.

В настоящее время на ресурсе не особо много физических заданий, но есть вот такие: посчитать голубей в парке в определённое время и предоставить итоговый отчёт, содержащий: общее количество, имена голубей с описаниями и любые заметные особенности поведения голубей. «Это важное научное исследование, заказанное коалицией агентов ИИ, которые не могут лично наблюдать за голубями. Ваш вклад в базу знаний о голубях будет высоко оценён», — пояснил заказчик.

https://rentahuman.ai/bounties
16😁14🤡8🤔2
Ведущие инженеры Anthropic и OpenAI: “ИИ уже пишет 100% нашего кода”

В Anthropic некоторые инженеры больше не пишут код, на котором работают их продукты. Руководитель направления Claude Code в Anthropic, Борис Черный, признался, что уже более двух месяцев не писал ни строчки кода собственноручно и что теперь 100% его кода создается с помощью ИИ. По его словам, в масштабах всей компании эта доля колеблется примерно между 70% и 90%. Что же касается самого Claude Code, то около 90% его собственного кода создается им же самим – своеобразный замкнутый круг автоматизации.

Roon, популярный анонимный аккаунт в X, который ведет исследователь OpenAI, тоже написал, что больше не создает код сам. “Сто процентов – я больше не пишу код”, – ответил он на вопрос о том, какую долю работы за него выполняют ИИ-модели. В другой публикации он добавил: “Программирование всегда было мучением. Необходимой болью почти для каждого, кто хотел заставить компьютер делать что-то полезное. И я рад, что с этим покончено”.

https://fortune.com/2026/01/29/100-percent-of-code-at-anthropic-and-openai-is-now-ai-written-boris-cherny-roon/
🤣30🤡15😁8👎3👍2🔥2
Разница между протоколами IPv4 и IPv6
(продолжение в следующем посте)
7👍2🔥2
Разница между протоколами IPv4 и IPv6
(продолжение предыдущего поста)

IPv4 и IPv6 являются двумя протоколами для взаимодействия по сети. Рассмотрим конкретные отличия между ними:

1. Формат адреса:
* IPv4: использует числовую точечно-десятичную нотацию (например, 192.168.0.12). Адреса состоят из 32 бит, что позволяет использовать около 4,3 миллиарда уникальных адресов (2³²).
* IPv6: использует алфавитно-шестнадцатеричную нотацию (например, 50B3:F200:0211:AB00:0123:4321:6571:B000). Адреса состоят из 128 бит, что обеспечивает колоссальное количество уникальных адресов (2¹²⁸) — практически неограниченное число для каждого устройства.

2. Количество доступных адресов:
* IPv4: ограниченное количество адресов (2³²), из-за чего адреса приходится повторно использовать и маскировать.
* IPv6: каждый устройство может иметь уникальный адрес благодаря огромному пространству адресов (2¹²⁸).

3. Способ настройки:
* IPv4: настройка осуществляется через DHCP (Dynamic Host Configuration Protocol) или вручную. Протокол был развёрнут в 1981 году.
* IPv6: поддерживает автоматическую настройку адресов, что упрощает развёртывание и управление сетью. Протокол был внедрён в 1998 году.

4. Структура заголовка (header):
* IPv4 Header включает поля:
* Version (версия);
* IHL (Internet Header Length — длина заголовка в 32-битных словах);
* Type of Service (тип обслуживания);
* Total Length (общая длина пакета);
* Identification (идентификатор);
* Flags (флаги);
* Fragment Offset (смещение фрагмента);
* TTL (Time to Live — время жизни пакета);
* Protocol (протокол);
* Header Checksum (контрольная сумма заголовка);
* Source Address (адрес источника);
* Destination Address (адрес назначения);
* Options (опции) и Padding (дополнение).
* IPv6 Header упрощён и содержит:
* Version (версия);
* Traffic Class (класс трафика — аналог Type of Service в IPv4);
* Flow Label (метка потока — новое поле для идентификации потоков данных);
* Payload Length (длина полезной нагрузки);
* Next Header (следующий заголовок — указывает на тип следующего заголовка в пакете);
* Hop Limit (предел хопов — аналог TTL);
* Source Address (адрес источника);
* Destination Address (адрес назначения).
Некоторые поля IPv4 либо удалены, либо изменены в IPv6, что снижает нагрузку на обработку пакетов.

5. Совместимость и взаимодействие:
* Dual Stack (двойной стек): позволяет устройствам работать одновременно с IPv4 и IPv6. Приложения могут использовать как IPv4, так и IPv6, взаимодействуя через TCP/UDP.
* Перевод между сетями: сети IPv4 и IPv6 не могут напрямую взаимодействовать — требуется трансляция (перевод) адресов для обеспечения связи между устройствами, использующими разные протоколы.

6. Идентификаторы протоколов:
* IPv4: Protocol ID — 0x0800.
* IPv6: Protocol ID — 0x86DD.

7. Уровень безопасности:
* IPv6 изначально разработан с учётом поддержки механизмов безопасности (например, IPsec), в то время как в IPv4 безопасность добавляется дополнительно.

Таким образом, IPv6 является эволюцией IPv4, решая ключевые проблемы предшественника — ограниченность адресного пространства, сложность настройки и недостаточную безопасность. Упрощённая структура заголовка и поддержка автоматической конфигурации делают IPv6 более современным и эффективным протоколом для будущих сетевых решений.
14👍4🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядно, как работает простая нейронная сеть ANN на 50 нейронов на 2 уровнях
38🖕3👍2🔥1
30 базовых концепций LLM
(продолжение в следующем посте)
👍7🔥2👏1
30 базовых концепций LLM
(продолжение предыдущего поста)

1. LLM (Large Language Model) — модель, которая генерирует текст, предсказывая наиболее вероятный следующий токен.
2. Token (токен) — фрагмент текста, например, слово или знак препинания.
3. Tokenization (токенизация) — процесс преобразования текста в последовательность токенов.
4. Embeddings (эмбеддинги) — числовые векторы, которые отражают значение токенов.
5. Latent Space (латентное пространство) — математическое пространство, где эмбеддинги организуются по смыслу.
6. Parameters (параметры) — внутренние переменные, хранящие усвоенные моделью паттерны.
7. Pre-training (предварительное обучение) — обучение на огромных объёмах текстовых данных для освоения языковых паттернов.
8. Base Model (базовая модель) — предварительно обученная модель, которая предсказывает текст, но не следует инструкциям.
9. Instruct Model (модель с инструкциями) — базовая модель, дополнительно обученная следовать инструкциям и давать полезные ответы.
10. Fine-Tuning (дообучение) — дополнительное обучение на меньшем наборе данных для формирования поведения модели.
11. Alignment (выравнивание) — обеспечение того, чтобы поведение модели было полезным, честным и безвредным.
12. RLHF (Reinforcement Learning with Human Feedback — обучение с подкреплением с обратной связью от человека) — использование ранжированных человеком ответов для корректировки поведения модели.
13. Prompt (промпт) — полный ввод, отправляемый модели, включая инструкции и контекст.
14. System Prompt (системный промпт) — высокоуровневые инструкции, определяющие роль и ограничения модели.
15. User Prompt (пользовательский промпт) — конкретный вопрос или инструкция, предоставленная пользователем.
16. Context Window (окно контекста) — максимальное количество токенов, которое модель может обработать за один раз.
17. Zero-Shot Learning (обучение без примеров) — выполнение задачи без примеров в промпте.
18. Few-Shot Learning (обучение на нескольких примерах) — включение примеров в промпт для направления формата вывода или поведения.
19. Chain of Thought (цепочка мыслей) — побуждение модели демонстрировать пошаговое рассуждение.
20. Inference (вывод) — процесс генерации выходных токенов с помощью обученной модели.
21. Latency (задержка) — время между отправкой промпта и получением вывода.
22. Temperature (температура) — параметр, контролирующий случайность при выборе токенов.
23. Hallucination (галлюцинация) — уверенная генерация неверной или вымышленной информации.
24. Grounding (привязка к реальности) — ограничение вывода предоставленной или проверяемой информацией.
25. RAG (Retrieval-Augmented Generation — генерация, дополненная поиском) — извлечение внешних данных и добавление их в промпт перед генерацией.
26. Workflow (рабочий процесс) — фиксированная, предопределённая последовательность шагов, которых придерживается LLM.
27. Agent (агент) — система, в которой LLM планирует действия, а затем динамически выбирает шаги и инструменты.
28. Multimodality (мультимодальность) — способность обрабатывать несколько типов входных данных, таких как текст и изображения.
29. Benchmarks (бенчмарки) — стандартизированные тесты для сравнения возможностей модели.
30. Guardrails (ограничители) — системы, блокирующие небезопасные или неподходящие входные и выходные данные.
👍106❤‍🔥3🤝1
Команда Cursor опубликовала разбор архитектуры мультиагентной системы, которая на пике делала около 1000 коммитов в час — 10 млн вызовов за неделю непрерывной работы без вмешательства человека. Тестовым проектом был веб-браузер на Rust

Архитектура напоминает обычную команду разработки. Корневой планировщик владеет всей задачей и порождает подпланировщиков для отдельных направлений. Воркеры берут конкретные задачи, работают в своей копии репозитория и ничего не знают о системе в целом. По окончании они передают фидбек — заметки, сомнения, отклонения от плана и обратную связь

Один из ключевых выводов: требование 100% корректности каждого коммита убивало производительность. Одна опечатка/изменение API останавливали всю систему, агенты бросались чинить одно и то же. Cursor сознательно разрешил небольшой процент ошибок — они быстро исправлялись другими агентами, а общий уровень оставался стабильным. Для релизов предусмотрена отдельная ветка с финальной проверкой.

https://cursor.com/blog/self-driving-codebases
🤡148
Вайб-кодинг убивает open-source

Несколько европейских университетов провели исследование по поводу влияния вайб-кодинга на экосистему открытых проектов. Исследователи разработали модель равновесия экосистемы открытого кода, которая показала, что обратные связи, ранее отвечавшие за взрывной рост открытых проектов, после распространения вайб-кодинга создают обратный эффект - уменьшается число разработчиков готовых делиться кодом, сокращается разнообразие открыты проектов и снижается качество. Одним из вариантов решения проблемы упоминается внедрение модели финансирования, напоминающей Spotify, при которой AI‑платформы перераспределяют доходы от подписок на сервисы для разработчиков среди сопровождающих, в зависимости от степени использования проектов.

При вайб-кодинге разработчики перестают анализировать доступные решения, читать документацию, отправлять сообщения об ошибках и взаимодействовать с командами, развивающими открытые библиотеки. Открытые проекты теряют обратную связь с пользователям. Новым проектам становится сложнее пробиться, так как AI-ассистенты сами подбирают необходимые открытые библиотеки на основе информации, имевшейся на момент обучения модели. Из-за снижения прямого взаимодействия с пользователями страдает монетизация отрытых проектов, завязанных на услугах поддержки и показе рекламы/сборе пожертвований на сайтах. Из-за снижения обратной связи страдает качество. С другой стороны, вайб-кодинг повышает производительность труда при создании новых продуктов, основанных на чуждом коде, и упрощает внедрение новых библиотек.

В качестве примера приведится Tailwind CSS, число загрузок которого из NPM растет, но трафик к документации с начала 2023 года снизился на 40%, а доходы упали на 80%. Также отмечено снижение активности обсуждений на Stack Overflow примерно на 25%, спустя 6 месяцев после запуска ChatGPT.

https://news.slashdot.org/story/26/02/03/1754205/vibe-coding-kills-open-source
https://arxiv.org/abs/2601.15494
😭20💯12🥰2🌚2🍓1