FOSS News №54 – дайджест материалов о свободном и открытом ПО за 25-31 января 2021 года

Всем привет!

Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Технология WebRTC получила статус стандарта; о том, как пандемия ускоряет внедрение Open Source в корпорации; Open Source проект создания малых спутников упрощает разработку подобных проектов; Open Source Security Foundation: рефлексия и будущее; в Ubuntu 21.04 решено включить Wayland по умолчанию; доступен монолитный дистрибутив Ubuntu Core 20; руководство по настройке домашнего почтового сервера и ухода с «бесплатной» почты и многое другое.

Оглавление

  1. Главное
    1. Технология WebRTC получила статус стандарта
    2. О том, как пандемия ускоряет внедрение Open Source в корпорации
    3. Open Source проект создания малых спутников упрощает разработку подобных проектов
    4. Open Source Security Foundation: рефлексия и будущее
    5. В Ubuntu 21.04 решено включить Wayland по умолчанию
    6. Доступен монолитный дистрибутив Ubuntu Core 20
    7. Руководство по настройке домашнего почтового сервера и ухода с «бесплатной» почты
  2. Короткой строкой
    1. Новости
      1. Мероприятия
      2. Открытие кода и данных
      3. Внутренние дела организаций
      4. Юридические вопросы
      5. Ядро и дистрибутивы
      6. Специальное
      7. Мобильные
      8. Безопасность
      9. DevOps
      10. Web
      11. Для разработчиков
      12. Пользовательское
    2. Статьи
      1. Внутренние дела организаций
      2. DIY
      3. Ядро и дистрибутивы
      4. Системное
      5. Специальное
      6. Обучение
      7. Базы данных
      8. Мультимедиа
      9. Мобильные
      10. Безопасность
      11. DevOps
      12. AI & Data Science
      13. Web
      14. Для разработчиков
      15. История
      16. Менеджмент
      17. Пользовательское
      18. Разное
    3. Релизы
      1. Ядро и дистрибутивы
      2. Системное
      3. Специальное
      4. Мультимедиа
      5. DevOps
      6. Web
      7. Для разработчиков
      8. Пользовательское
  3. Что ещё посмотреть
  4. Заключение

Главное

Технология WebRTC получила статус стандарта

Категория: Новости/Web

OpenNET пишет: «Консорциум W3C объявил о придании API, связанного с технологией WebRTC, статуса рекомендованного стандарта. Одновременно комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, опубликовал 11 RFC (8825-8835, 8854) с описанием архитектуры, элементов протокола, видов транспорта и механизмов коррекции ошибок, применяемых в WebRTC. Данные RFC получили статус «Предложенного стандарта». Технология WebRTC развивается компанией Google с 2009 года, как воплощение идеи по созданию коммуникационной платформы для браузеров, альтернативной Adobe Flash и настольным приложениям. В 2011 году компания Google открыла под лицензией BSD свои наработки, связанные с WebRTC, а также технологии обработки звука и видео, полученные при поглощении компании GIPS, специализирующейся на разработке систем цифровой обработки сигналов. Одновременно был предоставлен безвозмездный доступ к патентам, охватывающим WebRTC. Совместно с Mozilla, Microsoft, Cisco и Ericsson был начат процесс стандартизации WebRTC в W3C и IETF».

Подробности [→ 1, 2 (en)]

О том, как пандемия ускоряет внедрение Open Source в корпорации

Категория: Статьи/Разное

VentureBeat пишет о том, что в 2020 году предприятия всё чаще переходят на Open Source ПО, для покрытия потребностей своих подразделений перешедших на удалёнку и удовлетворить новые рыночные требования к качеству и скорости. «COVID-19 бросил вызов не только экономике, но и существующим структурам предприятий в отношении того, как, когда и в каком объеме люди используют информационные технологии», считает издание.

Open Source помогает по трём направлением:

  1. Скорость: ускорение технологий с помощью удаленной распределенной рабочей силы.
  2. Объём: инновации с повторным использованием кода и существующими инструментами.
  3. Новизна: активизация ИТ-команд и долгосрочный рост

Подробности [→ (en)]

Open Source проект создания малых спутников упрощает разработку подобных проектов

Категория: Новости/Специальное

Hackaday пишет: «Работать в космосе сложно, особенно если вы не делали этого раньше. Растущее число CubeSat запускается небольшими неопытными командами каждый год, и некоторые из них терпят неудачу из-за наличия какой-либо небольшой, но критической проблемы с оборудованием или программным обеспечением. Исследователи из Robotic Exploration Lab (REx) в Университете Карнеги-Мелон извлекли некоторые из этих уроков на собственном горьком опыте и создали PyCubed, аппаратную и программную среду с открытым исходным кодом для будущих CubeSat».

Подробности [→ (en)]

Open Source Security Foundation: рефлексия и будущее

Категория: Статьи/Внутренние дела организаций

Open Source Software Foundation (OpenSSF) был официально запущен 3 августа 2020 года. В статье от Linux Foundation рассмотрено, почему был создан OpenSSF, чего она достигла за первые шесть месяцев и какие у него планы на будущее.

Вот например некоторые результаты работы фонда:

  1. Три учебных курса по безопасности.
  2. Бенчмарки и оценки безопасности Open Source проектов (в том числе в сотрудничестве с OWASP).

Подробности [→ (en)]

В Ubuntu 21.04 решено включить Wayland по умолчанию

Категория: Новости/Ядро и дистрибутивы

OpenNET пишет: «Разработчики Ubuntu приняли решение перейти на использование в Ubuntu 21.04 пользовательского окружения GNOME, по умолчанию работающего на базе протокола Wayland. При использовании проприетарных драйверов NVIDIA по умолчанию продолжит предлагаться сеанс на основе X-сервера. Для остальных конфигураций сеанс на основе X-сервера будет переведён в разряд опций. Отмечается, что последнее время устранены многие ограничения сеанса GNOME на базе Wayland, которые были отнесены к числу проблем, блокирующих переход на Wayland».

Подробности [→]

Доступен монолитный дистрибутив Ubuntu Core 20

Категория: Релизы/Ядро и дистрибутивы

OpenNET пишет: «Компания Canonical опубликовала релиз Ubuntu Core 20, компактного варианта дистрибутива Ubuntu, адаптированного для применения на устройствах интернета вещей (IoT), в контейнерах, потребительском и промышленном оборудовании. Ubuntu Core поставляется в форме неделимого монолитного образа базовой системы, в котором не применяется разбивка на отдельные deb-пакеты. Образы Ubuntu Core 20, состав которых синхронизирован с пакетной базой Ubuntu 20.04, подготовлены для систем x86_64, ARMv7 и ARMv8. Время сопровождения выпуска составляет 10 лет».

Подробности [→]

Руководство по настройке домашнего почтового сервера и ухода с «бесплатной» почты

Категория: Статьи/DIY

Для тех, кто очень внимательно относится к приватности своих данных, может быть интересно руководство от alexmdv на Хабре. Автор считает, что «Нет гарантий, что почта не обрабатывается и что нет случаев злоупотребления. Так что если вы неугомонный параноик, то вам давно пора отказаться от «бесплатной» почты». Варианты с развёртыванием почты на облачном сервере alexmdv тоже отбрасывает не на 100% безопасные и пишет «В голове остается один вариант ‒ делать почтовый сервер прямо дома. Идея на первый взгляд смешная, но если разобраться, то можно получить довольно интересный результат с некоторыми дополнительными бонусами для всей домашней сети».

Подробности [→]

Короткой строкой

Новости

Мероприятия

Анонс интенсива «Docker для разработчиков» [→]

Открытие кода и данных

  1. Microsoft выпустила официальную Rust библиотеку для Windows API [→]
  2. Google открыл код Tilt Brush, программы для рисования с использованием 3D-шлемов [→ 1, 2 (en)]
  3. Google выпускает два новых инструмента для работы с БД для разработчиков (одна из них Open Source) [→ (en)]

Внутренние дела организаций

  1. Linux Foundation Public Health присоединяется к борьбе с пандемией COVID-19 [→ (en)]
  2. Apache Software Foundation подробно анализирует состояние безопасности в 2020 году [→ (en)]
  3. Посторонние получили контроль над доменом Perl.com [→]
  4. Rocky Linux получает материнскую компанию с финансированием серии A в размере 4 млн долларов [→ 1 (en), 2 (en)]
  5. Проект FreeBSD переводит архитектуру i386 на вторичный уровень поддержки [→]
  6. Представлен LibreOffice New Generation для привлечения молодёжи в проект [→]
  7. Google Play заблокировал распространение Matrix-клиента Element [→ 1, 2 (en)]
  8. Mozilla свернула разработку проектов Voice Fill и Firefox Voice [→]
  9. Еженедельник OSM 548 [→]

Юридические вопросы

Открытый исходный код больше не открыт: AWS обвиняется в «непоследовательном» поведении со стороны Elastic [→ (en)]

Ядро и дистрибутивы

  1. Анонс — Статистика по дистрибутивам [→]
  2. CloudLinux расширяет услуги поддержки расширенного жизненного цикла для дистрибутивов Linux [→ (en)]
  3. Линус Торвальдс, главный разработчик Linux, представил патч, помечающий код Intel Itanium как неподдерживаемый [→ (en)]

Специальное

Apache ECharts окончил Apache Incubator и стал проектом Apache высшего уровня [→ (en)]

Мобильные

Британский производитель показал грядущий смартфон с QWERTY-клавиатурой на Ubuntu Touch [→]

Безопасность

  1. Уязвимость во Flatpak, позволяющая обойти режим изоляции [→]
  2. Выявлена и исправлена критическая уязвимость в реализации NFS [→]
  3. Уязвимости в VLC и GStreamer, способные привести к выполнению кода при обработке контента [→ 1, 2]
  4. Ботнет DreamBus нацелен на корпоративные приложения, работающие на серверах Linux [→ 1 (en), 2 (en)]
  5. Выявлена и исправлена критическая уязвимость в sudo
  6. Критическая уязвимость в sudo, позволяющая получить привилегии root [→ 1, 2, 3 (en), 4 (en), 5 (en)]
  7. Вредоносная программа для Linux использует программное обеспечение с открытым исходным кодом, чтобы скрыть свои вредоносные процессы [→ (en)]
  8. Новый вариант атаки NAT slipstreaming, позволяющей отправить запросы на внутренний IP [→]
  9. Критическая уязвимость в криптографической библиотеке Libgcrypt 1.9.0 [→ 1, 2 (en)]

DevOps

  1. Доступен оператор Scylla для Kubernetes [→ (en)]
  2. Стартап по потоковой передаче данных Vectorized привлекает $ 15,5 млн, чтобы посоревноваться с Apache Kafka [→ (en)]
  3. Использование Kubernetes станет мейнстримом: прогнозы платформ на 2021 от Platform9 [→ (en)]

Web

  1. Fedora заранее отключает использование частных API Google Sync в Chromium [→ (en)]
  2. Mozilla выступила с инициативой Open Web Docs для продолжения развития MDN [→]
  3. Google Chrome получает небольшое, но важное обновление для облегчения домашней работы [→ (en)]
  4. В Chrome появилась новая потрясающая функция управления статьями [→ (en)]
  5. Скоро вы сможете создавать веб-сайты с помощью в WordPress с помощью drag&drop [→ (en)]
  6. В Chromium прекратит работать синхронизация [→]
  7. Google добавляет в Chrome интерактивные функции, и вы можете попробовать их прямо сейчас [→ (en)]

Для разработчиков

В пакетном менеджере PIP прекращена поддержка Python 2 [→]

Пользовательское

  1. На этой неделе в KDE: бета-версия Plasma 5.21! [→]
  2. Разработчики Plasma приглашают всех желающих принять участие в обсуждении бета-выпуска Plasma 5.21 [→]

Статьи

Внутренние дела организаций

Интервью с Шуа Кханом, специалистом по обслуживанию ядра и сотрудником Linux [→ (en)]

DIY

О создании программируемого светового дисплея на Raspberry Pi [→ (en)]

Ядро и дистрибутивы

  1. GeckoLinux делает OpenSuse лучше [→ (en)]
  2. Практическое руководство по Kali Linux: варианты установки [→ (en)]
  3. Почему Red Hat «убила» CentOS – говорит член правления CentOS [→ (en)]
  4. Конец CentOS Linux наступил, потому что «Red Hat просто отказалась инвестировать в нее» [→ (en)]

Системное

  1. Новый подход к просмотру логов [→]
  2. Предвидение ваших потребностей в памяти [→ (en)]

Специальное

  1. Изучение двоичных файлов с помощью инструмента Radare2 [→ (en)]
  2. Зачем может понадобиться ещё один язык программирования [→]
  3. Начало работы с SystemTap в Oracle Linux [→ (en)]
  4. Смена порта SSH [→]
  5. Настраиваем Restic с systemd на Linux [→]

Обучение

Как научить открытому исходному коду за пределами бизнеса [→ (en)]

Базы данных

  1. EventNative – простой инструмент для записи потока событий в ClickHouse [→]
  2. Ошибка 2006: MySQL server has gone away [→]

Мультимедиа

Использование скриптов GIMP для ускорения обработки изображений [→ (en)]

Мобильные

Объяснение всех пасхалок для Android [→ (en)]

Безопасность

  1. Ошибка GPG недоступен открытый ключ [→]
  2. ZeroTier, WireGuard и «LAN» от RuVDS. Сравнение возможностей и области применения [→]
  3. IKEv2 туннель между MikroTik и StrongSwan: EAP ms-chapv2 и доступ к сайтам [→]
  4. Как проект машинного обучения с открытым исходным кодом помогает тестировщикам искать недостатки в безопасности [→ (en)]
  5. Самые большие угрозы, с которыми сегодня сталкиваются сайты WordPress [→ (en)]

DevOps

  1. Модернизация разработки приложений с помощью бессерверных приложений и Quarkus [→ (en)]
  2. Как настроить мультинодовый кластер Airflow с помощью Celery и RabbitMQ [→]
  3. Сборка логов в kubernetes. Установка EFK стека с LDAP интеграцией. (Bitnami, opendistro) [→]
  4. Настройка мультинодового кластера Airflow с HDP Ambari и Celery для конвейеров данных [→]
  5. Автоматизация настройки и доставки виртуальных машин в облаке [→ (en)]
  6. SAP Data Intelligence в Red Hat OpenShift [→ (en)]
  7. Longhorn 1.1 предлагает поддержку ReadWriteMany в разных контейнерах [→ (en)]
  8. Автоматизация публикации приложения в Google Play при помощи Jenkins [→]
  9. Одна Kafka хорошо, а несколько — лучше [→]
  10. Платформа конвейера данных с открытым исходным кодом Airbyte [→ (en)]
  11. Создание современных процессов CI/CD для бессерверных приложений с Red Hat OpenShift Pipelines и Argo CD. Часть 2 [→]
  12. Аварии как опыт #2. Как развалить Elasticsearch при переносе внутри Kubernetes [→]
  13. Ответы на пять ключевых вопросов о резервном копировании Kubernetes [→ (en)]
  14. Изучаем ELK. Часть II — Установка Kibana и Logstash [→]
  15. Kubernetes намного больше, чем контейнеры: вот куда он пойдет дальше [→ (en)]
  16. Как перейти с Hadoop On-Premise на Google Cloud [→ (en)]

AI & Data Science

  1. Руководство по AI Fairness 360: набор инструментов для обнаружения и смягчения предвзятости в моделях машинного обучения [→ (en)]
  2. Поиск по синонимам — контролируем процесс или доверяемся нейросетям [→]
  3. Руководство по AI Explainability 360: инструментарий от IBM [→ (en)]
  4. Машинное обучение стало проще с Python [→ (en)]
  5. Практическое руководство Python по LAMA — платформе автоматического создания модели машинного обучения [→ (en)]

Web

  1. Movim: децентрализованная социальная платформа на основе сети XMPP [→ (en)]
  2. Взгляните на грядущий редизайн Firefox [→ (en)]
  3. Почему Signal — не идеальный мессенджер. Нам нужна децентрализация [→]

Для разработчиков

  1. Бинарники BPF: BTF, CO-RE и будущее средств оценки производительности BPF [→]
  2. Действия GitHub делают рабочие процессы CI ближе к разработчику [→ (en)]
  3. Как подружить ltree и Laravel [→]
  4. Паттерн порталов в Angular: для чего нужен root-компонент в Taiga UI [→]
  5. О переводе SCADA-системы на Linux [→]
  6. О причинах использования языка программирования D для написания скриптов [→ (en)]
  7. Синхронизация окружения для Laravel и Symfony [→]
  8. Сокеты в ОС Linux [→]
  9. Пишем Telegram Bota для оповещения о коммите в git репозитарий на базе Gitea и разворачиваем его в Google Cloud Platform [→]
  10. Начните программировать в Racket с написания игры «угадай число» [→ (en)]
  11. Заметки о Unix: системный вызов write(), на самом деле, не такой уж и атомарный [→]
  12. Callisto. Зачем мы придумали замену Selenium Grid [→]
  13. Конфигурация Java систем — как убрать боль [→]
  14. Настройка Xdebug3 для Laravel-приложения в Docker [→]

История

Линус Торвальдс – человек, создавший Linux [→]

Менеджмент

4 открытых метода перехода к надёжным технологиям [→ (en)]

Пользовательское

  1. Основы Bash-скриптинга для непрограммистов [→]
  2. Почему нужно отказаться ifconfig в пользу ip [→ (en)]
  3. Как «приручить» консоль, или 5 шагов к жизни с командной строкой [→]
  4. Об использовании Raspberry Pi для повышения производительности [→ (en)]
  5. Как запустить shell сценарий в Linux [→ (en)]
  6. Самый актуальный гайд по установке Linux на SSD-накопители в 2021 году [→]
  7. Что такое Shell [→]
  8. Лучшие эмуляторы терминала в Linux для 2021 года [→ (en)]
  9. Инструменты и советы, которые помогут сосредоточиться [→ (en)]
  10. Основы Bash-скриптинга для непрограммистов. Часть 2 [→]
  11. 3 пожелания к Open Source в 2021 году [→ (en)]
  12. Новый подход к просмотру логов [→]

Разное

  1. Как открытый исходный код помогает решить проблему загрязнения пластиком [→ (en)]
  2. 7 причин, по которым открытый код был важен для бизнеса в 2020 году [→ (en)]

Релизы

Ядро и дистрибутивы

  1. Выпуск дистрибутива для создания сетевых хранилищ XigmaNAS 12.2.0.4 [→]
  2. Релиз дистрибутива Tails 4.15 [→]
  3. Выпуск серверного дистрибутива Zentyal 7.0 [→]
  4. Выпуск Chrome OS 88 [→]
  5. Релиз дистрибутива Nitrux 1.3.7 с рабочим столом NX Desktop [→]
  6. Доступны дистрибутивы Clonezilla Live 2.7.1 и GParted Live 1.2.0 [→]
  7. Выпуск дистрибутива для создания межсетевых экранов OPNsense 21.1 [→]

Системное

  1. Выпуск GNU Binutils 2.36 [→]
  2. Выпуск редактора разделов GParted 1.2 [→]
  3. Доступен Wayland 1.19 [→]
  4. Выпуск пакетного менеджера DNF 4.6 [→]
  5. Релиз GParted 1.2.0. Поддержка exFAT. Что нового [→]

Специальное

  1. Выпуск облачной платформы Apache CloudStack 4.15 [→]
  2. Релиз VirtualBox 6.1.18. Поддержка ядра Linux 5.10 LTS [→]
  3. Выпуск Wine 6.1 [→]
  4. Релиз EiskaltDC++ 2.4.1 [→]
  5. Выпуск Python-библиотеки для научных вычислений NumPy 1.20.0 [→]

Мультимедиа

Inkscape 1.0.2. Новые настройки, исправление ошибок [→]

DevOps

Red Hat OpenShift Container Storage 4.6 предлагает новые возможности обеспечения устойчивости данных [→ (en)]

Web

Релиз Firefox 85 [→ 1, 2, 3, 4 (en)]

Для разработчиков

  1. Релиз ruleguard v0.3.0 [→]
  2. Dotenv-linter обновился до v3.0.0 [→]
  3. Выпуск GNU Autoconf 2.71 [→]
  4. Вышел GitLab 13.8 c новым Pipeline Editor, CI Lint & Validator, Visualization, Deploy Boards [→]
  5. Что нового в dotenv-linter v3.0.0? [→]
  6. Datanymizer. Анонимизация данных на лету на основе шаблонов [→]

Пользовательское

  1. Выпуск файлового менеджера Thunar 4.17.0, развиваемого проектом Xfce [→]
  2. Доступна для тестирование бета-версия рабочего стола KDE Plasma 5.21 [→]
  3. Доступен альфа-выпуск GNOME 40 [→]
  4. Релиз файлового менеджера Midnight Commander 4.8.26 [→]

Что ещё посмотреть

  1. Видеодайджест от Pingvinus: IT новости #35 — Список ПО на смартфоны, BleachBit, Alpine Linux… [→]

  2. Информационный бюллетень Linux Foundation за январь 2021 года: Bootcamp Sale, SolarWinds Orion, новые классы Kubernetes и WebAssembly, серия веб-семинаров LFX [→ (en)]

  3. Дайджест от Opensource.com: лидер из Open Source занял место в Белом доме, Mapbox получает альтернативу с открытым исходным кодом и многое другое [→ (en)]

  4. Дайджест от Red Hat: 8 Kubernetes-инсайтов, шпаргалка по Curl и онлайн-курс «Разработка облачных приложений с микросервисными архитектурами» [→]

  5. Open Source проект недели по версии SD Times: Smart Argument Suites [→ (en)]

Заключение

На этом всё, до следующего воскресенья!

Высказываю большое спасибо редакции и авторам OpenNET [→], много новостных материалов и сообщений о новых релизах взято у них.

Если кто интересуется составлением дайджестов и имеет время и возможность помочь – буду рад, пишите по контактам, указанным в моём профиле, или в личные сообщения.

Подписывайтесь на наш Telegram канал, группу ВКонтакте или RSS чтобы не пропустить новые выпуски FOSS News.

[←] Предыдущий выпуск

ссылка на оригинал статьи https://habr.com/ru/post/540178/

Бильярд на Unity 3D

Учебные материалы для школы программирования. Часть 10

Spoiler

Дорогой читатель! (произносить голосом Николая Дроздова)

Мы на юбилейном, десятом, проекте! Сегодня, стараясь избежать столкновения с полицией нравов, рассмотрим создание игры — бильярд. На этом занятии мы будем работать с системой материалов, освещением, и научимся использовать компоненты и скрипты без программирования.
В этой статье дано описание на примере полностью готового проета, но порядка выполнения работ это не меняет.

Порядок выполнения

Создадим новый 3D-проект, импортируем в него приложенный ассет. Ассет содержит звуки, скрипты и текстуры.

На сцену выставим плейн и зададим ему размер примерно 100х1х100. На плейн установим модель бильярдного стола.

Далее, создадим новый материал, применим ему текстуру ковра, уберём блеск, изменим тайлинг (см. скриншот) и закинем на Plane.

Настроим освещение: перейдем во вкладку Light, уберём скайбокс, и выставим заполняющий цвет потемнее.

Настроим туман, чтобы размыть края поля.

Добавим сверху стола источник света типа Spot и выставим ему мягкие тени.

Создадим новую сферу, добавим к ней Rigidbody и закинем, в поле физического материала коллайдера, материал Rubber.
Добавим скрипт Ball и настроим его.

Чтобы шар не был белым, создадим новый материал и настроим в соответствии со скриншотом.

Чтобы шар отражал мир, надо добавить на сцену новую Reflection Probe и запечь.

Удалим стандартную камеру. Следующим шагом будет добавление своей камеры на сцену. Для этого используем префаб FreeLookCameraRig. Настроим его, чтобы он следил за шаром, добавим скорости линейной и поворота.

Сразу же настроим камеру. Выставим ей очистку экрана цветом, в качестве цвета возьмём чёрный.

Далее необходимо создать 15 материалов по номерам шаров, как на скриншоте выше. Создадим новые сферы, добавим к ним Rigidbody и настроим физический материал коллайдера.
Выставим их на сцену, применим материалы и дадим им имена, соответствующие их номеру. В имени должна быть только цифра.

Для звука ударов шаров служит скрипт ImpactSound. Его необходимо добавить игроку и каждому шарику.

Теперь, необходимо добавить прицел. Создадим UI->Image, привяжем к ценру экрана и закинем в него картинку прицела.

На данном этапе, шар должен свободно кататься по полю по нажатию пробела, бить другие шары и издавать звук удара.
Далее, создадим пустой объект и закинем на него скрипт GameLogic.
Не забудьте создать AudioSource, выставить звук часов и галочки PlayOnAwake и Loop.

Скрипт следит за временем и ловит попавшие в него шары. Для того, чтобы скрипт мог это делать, необходимо выставить ему коллайдер и поставить галочку is Trigger.

Триггер большой, размером 200х1х200 метров, расположен чуть ниже уровня стола, триггер ловит шары и считает их, а в случае попадания шара игрока он перезагружает уровень. Для того, чтобы наш скрипт мог отличать игрока от других шаров, необходимо выставить игроку тег Player.

Скрипт требует двух текстовых полей для отображения времени и количества шаров.
Для начала создадим панель, закинем на неё Event Trigger и настроим на метод Shoot внутри скрипта игрока. Альфу выставим в ноль, чтобы панели не было видно.

Далее, создадим внутри ещё одну панель, привяжем её внизу экрана и создадим внутри два текста:

Настроим скрипт GameLogic, используя эти два текстовых поля. Также, закинем звук попадания в лузу.

Теперь добавим ещё один скрипт — Score.

Как видно, он тоже требует 2 текста. Можно продублировать прошлую панель, привязать её к верху экрана и настроить скрипт на неё.

По желанию, можно добавить ещё одну панель с парой кнопок для выхода из игры, закинуть скрипт RestartAndExit и настроить кнопки на него.

Таже можно добавить максимальный счёт. Создав ещё одно текстовое поле.

Закинем скрипт MaxScore на объект с GameLogic и настроим его на созданное текстовое поле.

На данном этапе игру можно считать готовой. Не забываем перезапечь освещение и отметить статью, как понравившуюся!

ссылка на оригинал статьи https://habr.com/ru/post/540186/

Автоматизируем поиск секретов в git и ansible

Знаете ли вы что хранится в вашем git репозитории? Нет ли среди сотен коммитов паролей от продуктовых серверов, попавших туда по ошибке?

А что если ansible скрипт при публикации упадет и засветит пароли в логе?

Рассказываю о том как мы попробовали автоматизировать такие проверки и что из этого получилось.

Привет, Хабр!

Меня зовут Олег, я работаю в достаточно крупном для РФ банке, в подразделении «IT для IT».

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

Исторически у нас есть 2 git хранилища (на самом деле больше, но это не так важно), в одном команды хранят свой код, в другом хранятся скрипты деплоя, конфигурации приложений итд, в общем все что относится к OPS составляющей.

Так вот, исходя из принятого процесса скрипты и конфигурации для промышленных сред хранятся в master ветке и при вливании в нее нужен апрув от OPS. 

Почему именно так? Потому что кроме всего там же в git хранятся и пароли от сред (хоть и зашифрованные) и отвечают за них OPSы. Если какой то пароль засветится в логе Jenkins или попадет в открытом виде в git — это серьезная утечка и безопасность придет (с паяльником) именно к OPS.

Пароли в git? Серьезно?

Да, к сожалению серьезно. Конечно же для таких вещей нужно использовать системы secret management, такие как HashiCorp VaultCyberArk Conjur итд.

Но процесс покупки и внедрения тут сложный и долгий, а работать нужно сейчас.

Число команд, проектов и деплоев растет постоянно и ребята уже просто не могли анализировать то количество pull request которое к ним приходило.

Значит, будем автоматизировать!

Что анализируем?

Совместно с коллегами выявили 3 основных вектора утечки пароля, которые их интересовали и встречались наиболее часто:

Пароль в открытом виде 

---     dev_ssh_username1: "admin"     dev_ssh_password1: "admin123"

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

Передача параметров в shell или command таски ansible

- name: Deploy   hosts: all   tasks:     - name: Update       shell: "update.sh --user={{ update_user }} --password={{ update_password }}"

Тут опасность заключается в том, что если playbook будет вызван с -v то мы получим в логах наши секреты в открытом виде.

$ ansible-playbook deploy.yml -i env/DEV/hosts -v TASK [Update] ****************************************************************** changed: [192.168.1.2] => {"changed": true, "cmd": "/home/dev/update.sh --user=secret_user --password=secret_password", "delta": "0:00:05.056532", "end": "2020-11-06 09:53:09.397355", "rc": 0, "start": "2020-11-06 09:53:04.340823", "stderr": "", "stderr_lines": [], "stdout": "Update SUCCESS", "stdout_lines": ["Update SUCCESS"]}

Или, если playbook упадет то в логе выведется строка с секретами (даже если не указывать -v)

$ ansible-playbook deploy.yml -i env/DEV/hosts TASK [Update] ****************************************************************** fatal: [192.168.1.2]: FAILED! => {"changed": true, "cmd": "/home/dev/update.sh --user=secret_user --password=secret_password", "delta": "0:00:00.018710", "end": "2020-11-06 10:14:30.642419", "msg": "non-zero return code", "rc": 127, "start": "2020-11-06 10:14:30.623709", "stderr": "/bin/sh: /home/dev/update.sh: Нет такого файла или каталога", "stderr_lines": ["/bin/sh: /home/dev/update.sh: Нет такого файла или каталога"], "stdout": "", "stdout_lines": []}

Чтобы этого избежать можно использовать environment, например:

- name: Deploy   hosts: all   tasks:     - name: Update       shell: "/home/dev/update.sh $AUTH_DATA"       environment:         AUTH_DATA: "--user={{ update_user }} --password={{ update_password }}"

Тогда в вывод наши credentials не попадут. Еще можно указывать атрибут no_log.

Неосторожное использование withCredentials

У нас используется Jenkins, в котором для работы с credentials используется конструкция withCredentials. С помощью нее внутри pipeline можно получить credential, сохранить его в переменные и использовать, например для подключения к какой нибудь сторонней системе. Jenkins при этом будет маскировать в логе значение этих переменных.

Однако, если мы сделаем, например так:

node {   stage('Jenkins Credentials | Decrypt Secret File') {     withCredentials([file(credentialsId: 'credentials-id', variable: 'secretFile')]) {       sh 'cat $secretFile'     }   } }

То несмотря на то, что мы не увидим в логе путь к файлу, мы увидим его содержимое. Так же, можно сохранить переменную secretFile в другую и спокойно вывести ее в лог вне конструкции withCredentials.

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

Ищем пароли

Казалось что поиск паролей в открытом виде это какая то плевая задача. У нас в арсенале есть не только SonarQube но и Checkmarx. Уж они точно должны уметь решать эти задачи.

И вроде бы вот оно — есть такое правило для SonarQube Hard-coded credentials are security-sensitive

Но при внимательном рассмотрении оказывается что правило достаточно простое, оно проверяет попадает ли название переменной под определенный паттерн. Исходник, если интересно тут.

C Checkmarx оказалась так же картина — реагирует он очень выборочно. И правила там тоже очень простые (коллеги из Application Security рассказали). Например, такой код пропускает:

import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;   @RestController public class DemoController {     @RequestMapping("/show_me_creds")     public @ResponseBody String show_me_creds() {         String thisIsMyLittleSecret = "qwerty12345";         return thisIsMyLittleSecret;     } }

Изучив что есть на рынке пришли к выводу что будем смотреть в сторону opensource утилит. Запрос в google «find secrets in git» выдает нам примерно такие варианты:

Попробовав их все мы остановились на Gitleaks, вот почему:

  • Проводит анализ на основе regexp, которые можно расширять;

  • Умеет учитывать энтропию при анализе;

  • Репорты в json;

  • Легко задавать исключения;

  • В пилоте показал лучший результат.

Как он работает — в основе лежит toml файл с описанием правил, например: 

[[rules]]   description = "generic secret regex"   regex = '''secret(.{0,20})([0-9a-zA-Z-._{}$\/\+=]{20,120})'''   tags = ["secret", "example"]

Кроме того в правиле можно указывать требуемую энтропию, например: 

[[rules]]   description = "entropy and regex example"   regex = '''secret(.{0,20})([0-9a-zA-Z-._{}$\/\+=]{20,120})'''   [[rules.Entropies]]     Min = "4.5"     Max = "4.7"

В переводе на человеческий это означает: «Если мы встречаем строку кода, которая соответствует регулярному выражению, и эта строка попадает в пределы энтропии от 4,5 до 4,7, то это пароль»

Я не буду заниматься переводом документации, все прекрасно описано тут.

Пример срабатывания:

➜  ~  gitleaks --repo=gitleaks --repo=https://github.com/gitleakstest/gronit.git --verbose --pretty INFO[2020-04-28T13:00:34-04:00] cloning... https://github.com/gitleakstest/gronit.git Enumerating objects: 135, done. Total 135 (delta 0), reused 0 (delta 0), pack-reused 135 {         "line": "const AWS_KEY = \"AKIALALEMEL33243OLIAE\"",         "offender": "AKIALALEMEL33243OLIA",         "commit": "eaeffdc65b4c73ccb67e75d96bd8743be2c85973",         "repo": "gronit.git",         "rule": "AWS Manager ID",         "commitMessage": "remove fake key",         "author": "Zachary Rice",         "email": "zricethezav@users.noreply.github.com",         "file": "main.go",         "date": "2018-02-04T19:43:28-06:00",         "tags": "key, AWS" } ... ... WARN[2020-04-28T13:00:35-04:00] 6 leaks detected. 33 commits audited in 77 milliseconds 738 microseconds

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

Если произошло ложное срабатывание — достаточно занести строку в whitelist правила, например:

[[rules]]   description = "entropy and regex example"   regex = '''secret(.{0,20})['|"]([0-9a-zA-Z-._{}$\/\+=]{20,120})['|"]'''   [[rules.Entropies]]     Min = "4.5"     Max = "4.7"   [[rules.whitelist]]     regex = '''secret.some_value_that_match_regexp_but_not_really_a_secret'''     description = "ignore that string"

В результате мы пришли к такой схеме — при создании pull request через webhook вызывается Jenkins, который скачивает репозиторий, запускает для него gitleaks и если тот находит утечки — ставит статус NEED WORK.

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

Проверяем ansible

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

- name: Deploy   hosts: all   tasks:     - name: Update       shell: "update.sh --user={{ update_user }} --password={{ update_password }}"

С ansible все просто — его легко распарсить, можно использовать OPA (рекомендую статью от Александра Токарева  по теме), можно самим быстро написать проверки в python.

Хорошо что мы этого не сделали, а вспомнили про Ansible Lint.

Это официальный линтер для Ansible, который имеет «из коробки» кучу полезных проверок, но нас интересует не это.

Нам были нужны вот эти 2 фичи:

  • Возможность писать свои правила;

  • Автоматическое сканирование и поиск playbook. Не нужно передавать конкретные файлы на проверку, можно запустить линтер в папке и он сам найдет их. 

Писать правила очень просто — правило представляет собой python код, в котором обязательно должны быть объявлены переменные id, short description, description и tags (их использует Ansible Lint для ведения списка правил) и методы match или matchtask, в которых мы пишем саму логику проверки. Более подробно предлагаю почитать в оригинальной документации.

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

К сожалению я не могу здесь привести код именно нашего таска, но он похож на этот пример (полностью тут):

class CommandsInsteadOfModulesRule(AnsibleLintRule):     id = '303'     shortdesc = 'Using command rather than module'     description = (         'Executing a command when there is an Ansible module '         'is generally a bad idea'     )     severity = 'HIGH'     tags = ['command-shell', 'resources', 'ANSIBLE0006']       _commands = ['command', 'shell']     _modules = {         'apt-get': 'apt-get', #сокращаю список, чтобы не постить простыню         'yum': 'yum',     }       def matchtask(self, file, task):         if task['action']['__ansible_module__'] not in self._commands:             return           first_cmd_arg = get_first_cmd_arg(task)         if not first_cmd_arg:             return           executable = os.path.basename(first_cmd_arg)         if executable in self._modules and \                 boolean(task['action'].get('warn', True)):             message = '{0} used in place of {1} module'             return message.format(executable, self._modules[executable])

Логика примерно такая — если task является command или shell и первый аргумент является командой из списка _modules — рекомендуем заменить команду на модуль.

Нашу проверку мы организовали похожим образом — составили список интересующих нас аргументов (password/pass/login итд) и анализируем каждый аргумент тасков command и shell на попадание в список. 

Кроме того мы учитываем атрибут no_log, при его наличии аргументы не анализируем. Если в будущем разработчик уберет no_log — новый код опять попадет на проверку и наше правило это увидит.

Итак, после проверки Gitleaks запускается Ansible Lint, который в режиме автоматического сканирования прогоняет наше правило. Другие правила мы отключили, т.к. не можем навязывать командам использование линтера (хотя и рекомендует всем).

Проверяем withCredentials

Напоминаю о проблеме, например вот такой код в Jenkinsfile выведет в лог содержимое секретного файла, что скорее всего будет утечкой (хотя и замаскирует путь к нему).

node {   stage('Jenkins Credentials | Decrypt Secret File') {     withCredentials([file(credentialsId: 'credentials-id', variable: 'secretFile')]) {       sh 'cat $secretFile'     }   } }

А вот тут нас ждал провал.

Jenkinsfile это по сути groovy, который можно разобрать на Abstract Syntax Tree и анализировать.  Мы использовали AstBuilder чтобы получить дерево, научились находить withCredentials, анализировать его параметры и находить их использование внутри withCredentials. Например, код выше мы научились анализировать и реагировать на него.

Однако в жизни все сложнее, например я могу записать secretFile в глобальную переменную и использовать где-то в другом stage, могу записать secretFile в какой то временный файл итп итд. 

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

Кстати, если у вас используется только декларативный pipeline то потенциально можно использовать Pipeline model definition plugin, в котором можно конвертнуть pipeline в удобный json и анализировать уже его. Нам это к сожалению не подошло — у нас вовсю используется скриптовый.

Что в результате?

Мы провели внутренний пилот, в который попало 1000 pull request. Порядка 3% были ложные срабатывания gitleaks, в некоторых случаях были найдены реальные секреты, опасные скрипты ansible.

В целом схема показала себя работоспособной, коллеги из OPS довольны и уже включают эти проверки на остальные репозитории.

В конце так же хочу поделится интересными проектами, которые использовать в этой работе не удалось:

ссылка на оригинал статьи https://habr.com/ru/post/540190/

Не все частицы и античастицы можно разделить на материю и антиматерию


Чем меньшие масштабы мы изучаем, тем более фундаментальные знания о природе нам открываются. Если бы мы могли понять и описать самые мелкие из существующих объектов, мы могли бы построить на этой основе понимание крупных. Однако мы не знаем, существует ли предел минимизации пространства.

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

Одно из них – симметрия материи и антиматерии. Каждое взаимодействие, в котором рождаются или уничтожаются частицы материи, уничтожает или порождает равное количество их двойников из мира антиматерии – античастицы. Учитывая, что наша Вселенная почти полностью состоит из материи, и почти не содержит антиматерии (нет никаких звёзд, галактик или стабильных космических структур, состоящих из антиматерии), эта симметрия, очевидно, была нарушена в прошлом. Однако как именно это произошло, остаётся тайной. Загадка асимметрии материи/антиматерии остаётся одним из величайших открытых вопросов физики.

Кроме того, мы обычно говорим «частицы», подразумевая составные части материи, и «античастицы», подразумевая составные части антиматерии, однако это не совсем верно. Частицы – не всегда материя, а античастицы – не всегда антиматерия. Вот, что говорит наука по поводу этой контринтуитивной ситуации.


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

Представляя себе материалы, которые можно найти на Земле, вы, наверно, будете считать, что 100% их состоит из материи. Примерно так и есть – практически вся наша планета состоит из материи. Она же состоит из протонов, нейтронов и электронов – и всё это частицы материи. Протоны и нейтроны – составные частицы, состоящие из верхних и нижних кварков, связывающихся при помощи глюонов, и формирующих ядра атомов. К этим ядрам привязаны электроны – так, что общий электрический заряд атома равен нулю, а электроны связаны с ядрами электромагнитным взаимодействием, передающимся при помощи обмена фотонами.

Однако периодически одна из частиц в атомном ядре претерпевает радиоактивный распад. Типичный пример – бета-распад. Один из нейтронов превращается в протон, испуская электрон и электронное антинейтрино. Изучив свойства различных частиц и античастиц, участвующих в этом распаде, можно многое узнать о Вселенной.


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

Нейтрон, с которого мы начали, имеет следующие свойства:

  • Он электрически нейтрален, общий его заряд равен нулю.
  • Он состоит из трёх кварков – двух нижних (с электрическими зарядами по -1/3) и одного верхнего (с электрическим зарядом 2/3).
  • В нём содержится около 939 МэВ энергии в виде массы покоя.

У частиц, на которые он распадается — протона, электрона и электронного антинейтрино – тоже есть свои уникальные свойства.

  • Электрический заряд протона +1, он состоит из одного нижнего и двух верхних кварков, и в нём содержится около 938 МэВ энергии в массе покоя.
  • Электрический заряд электрона равен -1, это фундаментально невидимая частица, и в ней хранится около 0,5 МэВ энергии в массе покоя.
  • У электронного антинейтрино нет электрического заряда, это фундаментально невидимая частица, её масса покоя неизвестна (но больше нуля), и в ней хранится не более 0,0000001 МэВ энергии.

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


Свободные нейтроны нестабильны. Период полураспада у них составляет 10,3 минуты, и распадаются они на протоны, электроны и электронные антинейтрино. Если поменять нейтрон на антинейтрон, то все частицы поменяются на соответствующие античастицы. Материю заменит антиматерия, а антиматерию – материя.

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

Один из нижних кварков в нейтроне испускает виртуальный W бозон, из-за чего превращается в верхний кварк. В данном взаимодействии количество кварков сохраняется.

Виртуальный W бозон может распасться на много различных частиц, однако этот процесс ограничивает закон сохранения энергии. Его конечные продукты распада не должны иметь больше энергии, чем разница в массе покоя между нейтроном и протоном.

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


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

Теперь давайте перевернём всё зеркально, перейдя от материи к антиматерии. Вместо распада нейтрона представим распад антинейтрона. Свойства антинейтрона очень похожи на свойства нейтрона, упомянутые ранее, но есть и важные отличия:

  • Он электрически нейтрален, его общий заряд равен нулю.
  • Он состоит из трёх антикварков – двух антинижних (с зарядами +1/3) и одного антиверхнего (с зарядом -2/3).
  • Он содержит 939 МэВ энергии в виде массы покоя.

Переходя от материи к антиматерии, мы просто заменили все частицы на их двойники из антиматерии. Массы остались теми же, состав (с учётом приставки «анти») остался тем же, а электрический заряд сменился на противоположный. И хотя нейтрон и антинейтрон электрически нейтральны, заряд у их компонентов поменялся.

И это, кстати, можно измерить! Хотя заряд нейтрален, у электрона есть т.н. магнитный момент, для которого нужны и спин, и электрический заряд. Мы смогли измерить его магнитный момент – он равен -1,91 магнетонам Бора. Магнитный момент антинейтрона равен +1,91 магнетонам Бора. Вся его заряженная начинка должна быть противоположной у материи и антиматерии.


Благодаря экспериментам и новым теоретическим изысканиям мы стали лучше разбираться во внутренней структуре нуклонов, протонов и нейтронов, включая то, как распределяется «море» из кварков и глюонов. Исследования позволяют объяснить большую часть массы барионов, а также их нетривиальные магнитные моменты.

При распаде антинижний кварк испускает W+ бозон, двойника W бозона из антиматерии, что превращает антинижний кварк в антиверхний. Бозон W+, как и прежде, виртуальный – его нельзя наблюдать, а для создания «реального» бозона не хватает массы/энергии. Однако продукты его распада видны – позитрон и электронное нейтрино. (Да, радиационные эффекты тоже могут проявиться – в редких случаях один или несколько фотонов добавляются к продуктам распада). Всё получается зеркальным отображением предыдущего варианта, каждая частица материи меняется на двойника из антиматерии, а частицы антиматерии (типа электронных антинейтрино) – наоборот.

Что касается материалов, которые можно найти на Земле, то почти все они состоят из материи — протонов, нейтронов и электронов. Малая часть этих нейтронов распадается, а значит, у нас также есть W бозоны, дополнительные протоны и электроны (и фотоны), а также немного электронных антинейтрино. Всё, что мы знаем, хорошо описывает Стандартная модель, и для описания всего хватает частиц и античастиц.


[кликабельно] Стандартная модель помогает нам определить, какие частицы существуют в реальности, и какие для каждой из них есть античастицы. И хотя Вселенная в основном состоит из материи, и имеет лишь следовые включения антиматерии, не каждую её частицу можно отнести только либо к материи, либо к антиматерии.

Мы могли бы заменить Землю «анти-Землёй», антиматериальной версией себя. Тогда мы бы просто заменили каждую частицу на соответствующую ей античастицу. Вместо протонов и нейтронов (состоящих из кварков и глюонов) у нас были бы антипротоны и антинейтроны (состоящие из антикварков, но с теми же 8 глюонами). Вместо распада нейтронов посредством W бозона был бы распад антинейтрона посредством W+ бозона. Вместо получения электрона и электронного антинейтрино (и иногда фотона), мы бы получали позитрон и электронное нейтрино (и иногда фотон).

Нормальная материя Вселенной состоит из кварков и лептонов. Из кварков состоят протоны и нейтроны (и в целом барионы), а в лептоны входят электроны и их более тяжёлые родственники, а также три обычных нейтрино. С обратной стороны существуют античастицы, из которых состоит антиматерия – антикварки и антилептоны. Хотя обычные распады идут разными путями с участием бозонов W и W+, существует небольшое количество антиматерии в виде позитронов и электронных антинейтрино. Это было бы так, даже если бы мы сумели каким-то образом «избавиться» от всей внешней Вселенной, включая Солнце, космические лучи и другие источники частиц и энергии.


Частицы и античастицы Стандартной модели, существование которых предсказывают законы физики. Кварки и лептоны – это фермионы и материя. Антикварки и антилептоны – это антифермионы и антиматерия. Однако бозоны – это не материя и не антиматерия.

Но что насчёт остальных частиц и античастиц? Говоря о материи и антиматерии, мы говорим только о фермионах – кварках и лептонах. Однако существуют ещё и бозоны:

  • 1 фотон, посредник в электромагнитном излучении.
  • 8 глюонов, посредники в сильном ядерном взаимодействии.
  • 3 слабых бозона, W+, W и Z0, посредники в слабом взаимодействии и слабых распадах, а также бозон Хиггса, отличающийся от всех остальных.

Некоторые из частиц являются античастицами сами для себя – фотон, Z0 и бозон Хиггса. W+ — античастица для W, а три пары глюонов явно являются античастицами друг для друга (с четвёртой парой всё немного сложнее).

Если столкнуть частицу с её античастицей, они аннигилируют, и могут выдать всё, на что хватит энергии, с учётом всех квантовых законов сохранения – энергии, импульса, углового момента, электрического заряда, барионного числа, лептонного числа, номера семейства лептонов, и т.д. Это верно и для частиц, являющихся античастицами для самих себя.


Равносимметричная коллекция бозонов материи и антиматерии (X и Y, и анти-X с анти-Y) с правильными свойствами GUT могла бы породить асимметрию материи и антиматерии, которую мы сегодня наблюдаем во Вселенной.

Примечательно тут то, как появляется идея противостояния «материи» и «антиматерии». Если у вас положительное барионное или лептонное число, вы материя. Если отрицательное, вы антиматерия. А если у вас нет барионного или лептонного числа – вы ни материя, ни антиматерия! Хотя частиц есть два типа – фермионы (кварки и лептоны) и бозоны (всё остальное) – в нашей Вселенной только фермионы могут быть материей или антиматерией.

Если нейтрино окажутся майорановскими фермионами, теорию придётся пересмотреть – ведь майорановские фермионы могут быть античастицами для самих себя.

Значит, составные частицы, типа пионов или других мезонов, состоящие из комбинаций кварков и антикварков, не относятся ни к материи, ни к антиматерии – они состоят и из того, и из другого. Позитроний – связанные вместе электрон и позитрон, тоже не относится ни к материи, ни к антиматерии. Если существуют лептокварки или сверхтяжёлые X или Y бозоны из теорий великого объединения, то они будут примером частиц, обладающих одновременно барионным и лептонным числом – для них будут варианты как из материи, так и из антиматерии. Если бы теория суперсимметрии была верной, у нас были бы фермионные двойники фотонов – фотино – не относящиеся ни к материи, ни к антиматерии. У нас могли бы быть даже суперсимметричные бозоны – скварки – и тогда их варианты частиц и античастиц делились бы на материю и антиматерию.


Частицы Стандартной Модели и их суперсимметричные двойники. Из них нашли чуть меньше половины, а свидетельств существования остальных пока никто не видел. Суперсимметрия должна улучшить Стандартную Модель, но пока ещё не сделала ни одного успешного предсказания.

Очень просто было бы считать, что во Вселенной есть материя, состоящая из частиц, и антиматерия, состоящая из их двойников-античастиц. Частично это так – большинство частиц Вселенной состоит из того, что мы считаем материей. Если мы заменим их все на антиматерию, получится то, что мы считаем антиматерией. Это так для всех кварков (с барионным числом +1/3), лептонов (с лептонным числом +1), антикварков (с барионным числом -1/3) и антилептонов (с лептонным числом -1).

Но всё остальное – все бозоны, не имеющие барионных и лептонных чисел, все композитные частицы, суммарные барионные и лептонные числа которых равны нулю, находятся в промежуточной области, не принадлежа ни к материи, ни к антиматерии. В таком случае нельзя один их тип отнести к частице, а другой – к античастице. Да, W+ и W могут аннигилировать, как частица/античастица, однако их нельзя разделить на материю и антиматерию, как и все остальные бозоны. Они, так сказать, не могут претендовать на такой статус. Нет смысла спрашивать, какой из них – материя, а какой – антиматерия. Друг для друга они являются частицей и античастицей, но ни у одного из них нет свойств, характерных для материи или антиматерии.

ссылка на оригинал статьи https://habr.com/ru/post/540182/

Январь. Орбитальные запуски. США и Китай

Вячеслав Ермолин — 31 января 2020 года.
Орбитальные запуски 2021 года.

Орбитальные запуски 2021 года (январь). Легенда в конце текста.
Орбитальные запуски 2021 года (январь). Легенда в конце текста.
Статистика запусков с начала года (январь).
Статистика запусков с начала года (январь).

Январь — месяц США и Китая. Китай для фона — кто-то кроме США «рвется в космос». Без аварий. Но с традиционными переносами. Зато с огромным количеством спутников — 219. SpaceX — лидер — 3 запуска и 203 спутника.

Орбитальные запуски. Январь 2021 год.
Орбитальные запуски. Январь 2021 год.

Количество орбитальных запусков — 7. Две страны. Все успешные. 219 спутников.

■ 2021-001: 8 января. США. Falcon 9 Block 5 | Türksat 5A.
Запуск геостационарного спутника связи для турецкой компании Türksat AS на геопереходную орбиту. Услуги прямого телевещания и общие телекоммуникационные услуги в Турции, Европе, на Ближнем Востоке, Азии и Африки.

Falcon 9 Block 5 | Türksat 5A
Falcon 9 Block 5 | Türksat 5A

■ 2021-002: 17 января. США. LauncherOne | Launch Demo 2.
Второй тестовый орбитальный запуск ракеты-носителя LauncherOne. Полезной нагрузкой являются 10 студенческих спутников в миссии NASA ELaNa XX по программе VCLS

LauncherOne | Launch Demo 2
LauncherOne | Launch Demo 2

■ 2021-003: 19 января. Китай. Long March 3B/E | Tiantong-1-03.
Китайский геостационарный спутник мобильной связи. Для компании China SatCom. Несет полезную нагрузку мобильной связи S-диапазона с большой разворачивающейся спутниковой антенной.

Long March 3B/E | Tiantong-1-03
Long March 3B/E | Tiantong-1-03

■ 2021-004: 20 января. США. Electron | Another One Leaves The Crust.
Немецко-китайский коммуникационный спутник GMS-T. От компании OHB Group. Космический аппарат будет использоваться для проверки определенных частот для будущего использования на других спутниках. Возможно спутник-ретранслятор или прототип.

Electron | Another One Leaves The Crust
Electron | Another One Leaves The Crust

■ 2021-005: 20 января. США. Falcon 9 Block 5 | Starlink 16.
Starlink-16 — запуск 60 спутников связи. Шестнадцатый запуск Starlink v1.0. Для будущей системы низкоорбитального коммерческого интернета Starlink от SpaceX.

Falcon 9 Block 5 | Starlink 16
Falcon 9 Block 5 | Starlink 16

■ 2021-006: 24 января. США. Falcon 9 Block 5 | Transporter 1 (Dedicated SSO Rideshare).
Первая специализированная миссия массового запуска спутников SpaceX Transporter-1 Rideshare. 140 спутников и 3 дополнительные полезные нагрузки от различных организаций и стран. Включая 10 спутников Starlink.

Falcon 9 Block 5 | Transporter 1 (Dedicated SSO Rideshare)
Falcon 9 Block 5 | Transporter 1 (Dedicated SSO Rideshare)

■ 2021-007: 29 января. Китай. Long March 4C | Yaogan-31-02.
Группа спутников ДЗЗ «Яогань-31». Пуск успешный, все три космических аппарата выведены на расчетные орбиты. Предположительно тройка КА радиоэлектронной разведки.

Long March 4C | Yaogan-31-02
Long March 4C | Yaogan-31-02

Планы орбитальных запусков на 21-й год и прогноз (мой).

Максимальный прогноз (неофициальный) на 2021 год
Максимальный прогноз (неофициальный) на 2021 год
Легенда к статистике
Легенда к статистике

ссылка на оригинал статьи https://habr.com/ru/post/540194/