home.social

#состояние_гонки — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #состояние_гонки, aggregated by home.social.

  1. [Перевод] Решение проблемы двойного букинга: паттерны проектирования систем

    Давно прошло то время, когда люди стояли в длинных очередях для покупки билетов на концерты, авиарейсы, фильмы, матчи и другие события. Технологические компании наподобие Ticketmaster, BookMyShow, Airbnb, Delta Airlines и так далее сделали бронирование делом одного клика, позволившим покупать билеты из дома. Эта простота стала возможной благодаря технологическим платформам и сервисам, которые прячут от пользователей всю сложность и решают неординарные инженерные задачи. Одна из таких задач — предотвращение бронирования одного места несколькими пользователями. Представьте, в каком положении окажутся два пользователя, купивших одно и то же место на мероприятие и осознавших это только перед его началом. Из-за этого организатор теряет доверие покупателей, а пользователи дважды задумаются, прежде чем покупать билеты на следующее мероприятие. Поэтому важно создать надёжное решение классической задачи — двойного букинга . Из этой статьи вы узнаете, как эту задачу решают разные технологические компании. У каждой компании свои особенности, поэтому единого универсального решения нет. Мы рассмотрим различные архитектурные паттерны и разберёмся в их плюсах и минусах. Статья поможет вам обрести глубокое понимание и наработать знания в системном мышлении.

    habr.com/ru/articles/957954/

    #состояние_гонки #двойной_букинг #букинг #покупка_билетов_онлайн

  2. [Перевод] Как замедлить программу и почему это может быть полезно?

    Основная часть исследований производительности языков программирования задаётся разными вариациями единственного вопроса: как нам ускорить некую конкретную программу? Реже мы исследуем, как она может использовать меньше памяти. Это означает, что подавляющая масса исследований сосредоточена исключительно на снижении объёма ресурсов, необходимых для выполнения какой-то вычислительной задачи. Тогда почему нас может интересовать, как замедлять программы?

    habr.com/ru/articles/942564/

    #профилировщик #оптимизация_кода #состояние_гонки #оптимизации #профилирование_производительности

  3. Это база(!)

    Я не верю, конечно, ни в какую демократию (кроме оригинальной афинской 2½ тысячи лет назад, где кворум состоял из трёх с половиной образованных богатых неглупых людей, а остальные были безголосыми рабами и женщинами). Как я уже где-то говорил, существуют исторические свидетельства того, к чему привели первые проявления этой самой демократии: пару тысяч лет назад люди проголосовали распять одного там назаретянина. Поэтому когда в качестве аргумента за ту, или иную парадигму, — я вижу какие-то индексы, голосования и прочую статистически значимую оценку vox populi, меня это раздражает. «Миллионы мух не могут ошибаться» — так себе аргумент. Поэтому мнение «коммьюнити разработчиков» — практически всегда облыжное, поверхностное, и, в целом, неверное. У каждого в руках свой молоток, а про многообразие саморезов люди en masse если и слышали, то краем уха и в качестве анекдота. Если экстраполировать мнение большинства и принять его за аксиому, то в мире будут существовать только банковские приложения и круды с базами данных в качестве узкого места и дополнительными серверами вместо корректного горизонтального масштабирования. Тем не менее, многие даже в своей работе используют инструменты, которым никакая база не требуется, а обеспечение роста гарантируется размазыванием нагрузки по кластеру, а не приклеенными (sticky) сессиями. И я говорю не про десктоп. При чем тут СУБД?

    habr.com/ru/articles/921598/

    #акторная_модель #clickhouse #стейт_менеджер #состояние_гонки

  4. [Перевод] Параллельное программирование на Go

    На практике, создаваемое нами ПО выполняется на множестве процессоров. К сожалению, многие наши допущения, справедливые для одного процессора, в случае нескольких процессоров становятся ложными. Например, каким будет состояние памяти, если два процессора изменяют один блок памяти? В общем случае на этот вопрос ответить сложно. Может случиться так, что внесённое одним процессом изменение перепишет внесённое другим. Справедливо может быть и обратное: может «победить» изменение другого процессора. Или оба процесса могут попытаться внести изменение одновременно, в результате чего возникнет неопределённое состояние, не соответствующее ни одному ожидаемому. Мы называем такие операции доступа «гонками данных» — ситуацией, в которой два или более процессоров в программе одновременно получают доступ к одной области памяти, и хотя бы одна из этих операций доступа выполняет запись без должной синхронизации. Всё становится сложнее, если вам нужно, чтобы несколько процессоров изменяли одну и ту же память намеренно. Например, предположим, что у нас есть переменная, отслеживающая количество проданных товаров. В программе инкремент этой одной переменной могут выполнять несколько процессоров.

    habr.com/ru/companies/ruvds/ar

    #горутины #мьютексы #атомарные_операции #взаимные_блокировки #deadlock #гонки_данных #состояние_гонки #ruvds_перевод

  5. [Перевод] Обход 2FA на HackerOne из-за состояния гонки

    Эта статья о том, как я обнаружил уязвимость состояния гонки, которая позволила мне отключить 2FA любой учетной записи HackerOne. Я не знаю, как долго там присутствовала эта уязвимость, пока я ее не заметил и не сообщил их команде. Вот ограниченное раскрытие информации. Важно сначала изучить то, как работает 2FA на Hackerone. Если вы включили 2FA в своей учетной записи Hackerone, процесс аутентификации выглядит следующим образом: Email + Password => ✅ => 2FA code => ✅ => Logged In. Я не смог найти ни одной уязвимости, чтобы пропустить один из приведенных выше шагов для обхода аутентификации. Как отключить 2FA?

    habr.com/ru/articles/888004/

    #hackerone #bugbounty #кибербезопасность #2fa #состояние_гонки

  6. О механизмах безопасности OpenSSH: разбираем уязвимости 2024 года

    Прошлый год интересно проходил для SSH. Весной — бэкдор в xz-utils (CVE-2024-3094), в результате эксплуатации которого были скомпрометированы системы с systemd. В июле — критически опасная уязвимость «состояния гонки» для систем на базе glibc, получившая название regreSSHion. Спустя еще неделю была опубликована схожая проблема, получившая идентификатор CVE- 2024- 6409. А в августе — еще одна, уже специфичная для FreeBSD, CVE-2024-7589. Как заявляют исследователи, успешная эксплуатация «состояний гонки» позволяет получить RCE (удаленное выполнение кода) на подверженных системах. Более того, regreSSHion — главный баг, ставящий под угрозу безопасность множества SSH-серверов с glibc. Интересно, что эксплуатация уязвимости не требует особой конфигурации сервера (проблема актуальна и для конфигурации по умолчанию). При этом публичного PoC нет до сих пор. Мы решили разобраться в вопросе: так ли страшны эти «состояния гонки», так ли критически опасны? И какие механизмы в sshd призваны не допустить эксплуатации этой уязвимости или хотя бы уменьшить ущерб в случае успешной атаки?

    habr.com/ru/companies/pt/artic

    #openssh #fsop #glibc #rce #seccomp #regression #состояние_гонки #freebsd #github #malloc

  7. Ловушки volatile, DCL и синхронизации в Java

    А что если окажется, что простые знания на самом деле более нюансированные, а старые знакомые, такие как Double-checked locking, являются неоднозначными? Именно на такие мысли наталкивает изучение кода реальных проектов. Результаты этого исследования мы и рассмотрим в этой статье.

    habr.com/ru/companies/pvs-stud

    #volatile #java #dcl #doublechecked_lock #doublechecked_locking #race_condition #dbeaver #parallel_programming #параллельное_программирование #состояние_гонки

  8. Ловушки volatile, DCL и синхронизации в Java

    А что если окажется, что простые знания на самом деле более нюансированные, а старые знакомые, такие как Double-checked locking, являются неоднозначными? Именно на такие мысли наталкивает изучение кода реальных проектов. Результаты этого исследования мы и рассмотрим в этой статье.

    habr.com/ru/companies/pvs-stud

    #volatile #java #dcl #doublechecked_lock #doublechecked_locking #race_condition #dbeaver #parallel_programming #параллельное_программирование #состояние_гонки

  9. Ловушки volatile, DCL и синхронизации в Java

    А что если окажется, что простые знания на самом деле более нюансированные, а старые знакомые, такие как Double-checked locking, являются неоднозначными? Именно на такие мысли наталкивает изучение кода реальных проектов. Результаты этого исследования мы и рассмотрим в этой статье.

    habr.com/ru/companies/pvs-stud

    #volatile #java #dcl #doublechecked_lock #doublechecked_locking #race_condition #dbeaver #parallel_programming #параллельное_программирование #состояние_гонки