Русский
Русский
English
Статистика
Реклама

Блог компании google developers

Data driven подход для усиления защиты Android

01.03.2021 16:18:41 | Автор: admin


Мы делаем все, чтобы платформа Androidбыла безопасной для всех пользователей на всех устройствах. Каждый месяц выходятобновления системы безопасностис исправлениями уязвимости, найденными участниками программыVulnerability Rewards Program (VRP). Однако мы также стараемся защищать платформу от других потенциальных уязвимостей, напримериспользуя компилятори улучшая тестовую среду. Экосистема Android включает в себя устройства с самыми разными возможностями, поэтому все решения должны быть взвешенными и должны учитывать доступные данные.

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

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

  • Какие у нас есть данные и как они могут помочь в принятии решений?
  • Какие средства предотвращения атак доступны? Как их можно улучшить? В каких ситуациях их следует применять?
  • Какие проблемы могут возникнуть при использовании тех или иных средств безопасности? Какие возможные расклады следует принять во внимание?

Принципы, на которые мы опираемся при выборе средств безопасности, отражают наш общий подход к защите пользователей платформы Android.

Принятие решений по обеспечению безопасности на основе данных


Чтобы выяснить, для каких компонентов платформы будут эффективны те или иные решения, мы обращаемся к различным источникам. ПрограммаAndroid Vulnerability Rewards Program(VRP) едва ли не самый информативный из них. Наши инженеры по безопасности анализируют все уязвимости, обнаруженные участниками программы, определяя их первопричины и уровень серьезности (на основеэтих рекомендаций). Кроме того, есть внутренние и внешние отчеты об ошибках. Они помогают выявлять уязвимые компоненты, а также фрагменты кода, которые часто вызывают сбои. Зная, как выглядят такие фрагменты, и представляя себе серьезность и частоту ошибок, возникающих из-за них, мы можем принимать взвешенные решения о том, какие средства безопасности будут наиболее эффективными.


Уязвимости с высоким и критическим уровнем серьезности, исправленные в бюллетенях по безопасности Android в 2019 г.

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

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

В рамках программы Android VRP мы поощряем разработчиков, которые добавляютполные цепочки уязвимостей,позволяющие проследить весь процесс атаки от начала до конца. Как правило, злоумышленники используют сразу несколько уязвимостей, и в подобных цепочках эти связки хорошо видны, поэтому они очень информативные. Наши инженеры по безопасности анализируют как цепочки целиком, так и их отдельные звенья и пытаются обнаружить в них новые стратегии атак. Такой анализ помогает определить стратегии, помогающие предотвратить последовательное использование уязвимостей (например,случайное распределение адресного пространстваи методыControl Flow Integrity), а также понять, можно ли уменьшить масштабы атаки, если процесса получил нежелательный доступ к ресурсам.

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

Чтобы понимать текущие угрозы безопасности и прогнозировать будущие тенденции, нужно постоянно держать руку на пульсе сообщества специалистов безопасности, в частности:

  • тесно сотрудничать со сторонними специалистами по вопросам безопасности;
  • читать тематические издания и посещать конференции;
  • изучать технологии, используемые вредоносным ПО;
  • отслеживать последние разработки в сфере безопасности;
  • принимать участие в сторонних проектах, таких какKSPP, syzbot, LLVM, Rust ит.д.

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

Почему усиление защиты необходимо


Усиление защиты и предотвращение атак


Анализ данных помогает выявлять области, в которых эффективные средства предотвращения атак могут устранить целые классы уязвимостей. Например, если в некоторых компонентах платформы появляется много уязвимостей из-за ошибок целочисленного переполнения, следует использовать санитайзер неопределенного поведения (UBSan), например Integer Overflow Sanitizer. Если часто наблюдаются уязвимости, связанные с доступом к памяти, необходимо использоватьпрограммы распределения памяти с усиленной защитойAndroid 11 они включены по умолчанию) и средства предотвращения атак (например,Control Flow Integrity), устойчивые к переполнению памяти и уязвимостям Use-After-Free.

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

  • Средства устранения эксплойтов
    • Средства детерминированного устранения уязвимостей в среде выполнениявыявляют неопределенное или нежелательное поведение и прерывают выполнение программы. Это исключает повреждение данных в памяти, при этом сохраняется вероятность лишь менее серьезных сбоев. Часто такие средства можно применять точечно, и они все равно будут эффективными, так как рассчитаны на отдельные ошибки. Примеры:санитайзер для целочисленного переполненияиBoundsSanitizer.
    • Средства снижения воздействия эксплойтовпредотвращают переход от одной уязвимости к другой или получение возможности выполнения кода. В теории эти средства могут полностью устранять некоторые уязвимости. Однако чаще всего они ограничивают возможности их использования. В результате злоумышленникам приходится тратить больше времени и ресурсов на разработку эксплойта. Часто эти средства задействуют весь объем памяти, занимаемый процессом. Примеры: случайное распределение адресного пространства, Control Flow Integrity (CFI), стековый индикатор, добавление тегов к памяти.
    • Преобразование компилятора, изменяющие неопределенного поведения в определенное на этапе компиляции. В результате злоумышленники не могут воспользоваться неопределенным поведением, напримернеинициализированной областью памяти. Пример: инициализация стека.
  • Декомпозиция архитектуры
    • Отдельные блоки разделяются на мелкие компоненты с меньшими привилегиями. В результате воздействие уязвимостей в этих компонентах уменьшается, так как злоумышленник не получает прежнего доступа к системе. Этот метод удлиняет цепочки уязвимостей, а также усложняет доступ к конфиденциальным данным и дополнительным путям повышения привилегий.
  • Песочницы и изоляция
    • Здесь действует принцип, схожий с декомпозицией. Процессу выделяется минимальный набор разрешений и возможностей, необходимых для нормальной работы (часто с помощью обязательного и/или избирательного контроля доступа). Как и в случае с декомпозицией, песочница ограничивает возможности злоумышленников и делает уязвимости в этих процессах менее значимыми благодаря принципу минимальных привилегий. Примеры:разрешения в Android,разрешения в Unix,возможности Linux,SELinux иSeccomp.
  • Использование языков с безопасной обработкой памяти
    • Языки программирования C и C++, в отличие от Java, Kotlin и Rust, не обеспечивают достаточный уровень безопасности памяти. Учитывая, чтобольшинствоуязвимостей в Androidсвязаны с памятью, мы применяем двусторонний подход: улучшаем безопасность языков C/C++ и одновременно рекомендуем использовать более надежные языки программирования.

Реализация этих инструментов


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


Декомпозиция архитектуры и изоляция медиа фреймворков в историческом контексте

Объекты удаленных атак (NFC, Bluetooth, Wi-Fi и медиаконтент) традиционно сопряжены с самыми серьезными уязвимостями, поэтому усиление их безопасности должно стать приоритетной задачей. Как правило, появление этих уязвимостей вызвано самыми распространенными первопричинами, которые выявляют в рамках программы VRP, и недавно мы добавили для всех них санитайзеры.

Средства предотвращения атак удобно использовать для библиотек и процессов, которые задают границы безопасности или находятся в них (например,libbinder, а также стандартные библиотекиlibui,libcore иlibcutils), так как они не привязаны к конкретным процессам. Однако эти библиотеки отвечают за эффективную и стабильную работу систем, поэтому перед тем как применять тот или иной метод, необходима серьезная гарантия того, что он усилит безопасность.

Наконец, важно обеспечить защиту ядра, учитывая высокий уровень его привилегий. У всех кодовых баз разные характеристики и функциональность, поэтому и вероятность появления уязвимостей в них отличается. Главные критерии здесь стабильность и производительность. Следует применять только эффективные средства безопасности, которые не будут мешать пользователям работать. Поэтому прежде чем выбрать оптимальную стратегию усиления защиты, мы тщательно анализируем все доступные данные, связанные с ядром.
Подход, основанный на данных, дал ощутимые результаты. После обнаружения уязвимости Stagefright в 2015 году мы стали получать сообщения о большом количестве другихкритическихуязвимостей мультимедийной платформы Android. Ситуацию усложняло то, что многие из них были доступны удаленно. Мы провелимасштабную декомпозицию системы Android Nougat иускорили исправление уязвимостей в мультимедийных компонентах. Благодаря этим изменениям в 2020 году не было ни одного сообщения о критических уязвимостях в мультимедийных платформах, к которым можно получить доступ через Интернет.

Как принимается решение о развертывании


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

Производительность


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

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

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

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

  • Выборочно отключить средства предотвращения атак для функций, существенно влияющих на производительность. Как правило, только некоторые функции потребляют ресурсы в среде выполнения. Если не применять к ним средства предотвращения атак, можно сохранить производительность и максимально усилить влияние на безопасность.Вот примертакого подхода для одного из медиакодеков. Чтобы исключить риски, упомянутые функции следует предварительно проверить на наличие ошибок.
  • Оптимизировать использование средства предотвращения атак. Часто для этого необходимо внести изменения в компилятор. Например, наша команда перешла на использование IntegerOverflowSanitizer иBoundsSanitizer.
  • Параметры некоторых средств предотвращения атак, таких как встроенная устойчивость распределителя Scudo к уязвимостям в динамической памяти,можно настраиватьдля повышения производительности.

Для многих из этих улучшений необходимы изменения в проекте LLVM. В результате выигрывает не только платформа Android, но и другие участники сообщества LLVM.

Развертывание и поддержка


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

Влияние средств безопасности на стабильную работу системы


Важно понимать, возможно ли ложное срабатывание того или иного средства предотвращения атак. Например, если санитайзер Bounds выдает ошибку, речь точно идет о запрещенном доступе (хотя его могли и не использовать). В случае с санитайзером Integer Overflow возможны ложные срабатывания, так как целочисленное переполнение часто бывает абсолютно нормальным и безвредным процессом.

Поэтому важно учитывать влияние средств предотвращения атак на стабильность системы. Неважно, произошло ли ложное срабатывание или была реальная угроза безопасности, в любом случае пользователь испытывает неудобства. И здесь мы снова отмечаем, что необходимо четко понимать, для каких компонентов следует использовать те или иные средства безопасности. Потому что сбои в некоторых компонентах сильнее сказываются на стабильности системы. Если средство предотвращения атак вызывает сбой в медиакодеке, видео просто перестанет воспроизводиться. Однако в случае ошибки в процессеnetdпри установке обновления устройство может больше не включиться. Даже если для некоторых средств предотвращения атак ложное срабатывание не вызывает проблемы (например, как в случае с санитайзером Bounds), мы все равно проводим подробное тестирование, чтобы убедиться в стабильной работе устройства. Например, ошибки смещения на единицу могут не приводить к сбоям в обычном режиме, а санитайзер Bounds прерывает выполнение процесса и нарушает стабильную работу системы.

Также важно понимать, можно ли заранее выявить все компоненты, которые средство предотвращения атак может вывести из строя. Например, в случае с санитайзером Integer Overflow очень сложно предсказать риски, не проводя масштабного тестирования, потому что трудно определить, какие целочисленные переполнения являются намеренными (разрешенными), а какие могут вызвать уязвимости.

Поддержка


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

Мы стремимся к тому, чтобы средства предотвращения атак минимально влияли на стабильность работы и чтобы у разработчиков была вся необходимая информация. Для реализации этих целей мы улучшаем текущие алгоритмы, чтобы уменьшить число ложных срабатываний, и публикуем документацию на страницеsource.android.com. Упростив отладку в случае сбоев, можно снизить нагрузку на разработчиков при обслуживании. Например, чтобы было проще обнаружить ошибки санитайзера UBSan, мы по умолчанию добавили в систему сборки Androidподдержкуминимального времени выполнения UBSan. Изначально минимальное время выполнения былодобавленодругими разработчиками Google специально для этой цели. При сбое программы из-за санитайзера Integer Overflow в сообщение об ошибке SIGABRT добавляется следующий фрагмент:

Abort message: 'ubsan: sub-overflow' 

Увидев это сообщение, разработчики поймут, что необходимовключить режим диагностики, чтобы распечатать информацию о сбое:

frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp:2188:32: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long')

При этом в SELinux есть инструмент audit2allow, который позволяет предлагать правила, разрешающие те или иные заблокированные операции:

adb logcat -d | audit2allow -p policy #============= rmt ============== allow rmt kmem_device:chr_file { read write };

И пусть audit2allow не всегда предлагает правильные варианты, он сильно помогает разработчикам, плохо знакомым с SELinux.

Заключение


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



Благодарим наших коллег и авторов: Кевин Деус, Джоэл Галенсон, Билли Лау, Иван Лосано специалистов по вопросам безопасности и конфиденциальности данных Android. Отдельная благодарность Звиаду Кардава и Джеффа Ван Дер Ступа за помощь в подготовке статьи.
Подробнее..

Парадокс доверия облачным решениям три сценария, в которых ключи шифрования хранятся не в облаке

16.03.2021 18:09:12 | Автор: admin

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

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

Сценарий 1. Данные, которые лучше не хранить в облаке

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

В каждой сфере и в каждой компании есть данные, которые попадают в эту категорию. Например, в одной международной организации действуют очень строгие правила в отношении хранения ключей. Чтобы использовать для этого облачные платформы, ей необходимо получать специальное разрешение. Другая организация руководствуется собственным вариантом стандарта PCI DSS. Кроме того, у нее есть внутренние требования по управлению главными ключами с помощью аппаратного модуля безопасности в соответствии со стандартом FIPS 140-2 (уровень 3).

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

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

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

Сценарий 2. Требования местного законодательства и проблемы, связанные с ними

С развитием облачных технологий порядок их использования во многом зависит от требований законодательства в тех или иных странах. В этом сценарии организация хочет использовать облачную платформу из другой страны, но ее не устраивает, что у поставщика услуг будут ключи шифрования для всех данных. Если в том же облаке будут обрабатываться незашифрованные данные, поставщик услуг получит доступ и к ним. Некоторые организации также не хотят хранить ключи на криптографических устройствах (например, аппаратных модулях безопасности), управляемых поставщиком услуг (физически или с помощью ПО). Они справедливо полагают, что такой подход не соответствует принципу Hold Your Own Key (HYOK).

Проблемы могут быть связаны как с требованиями законодательства, так и с описанными выше причинами. Кроме того, регулирующие органы ЕС, России, Японии, Индии, Бразилии и других стран постоянно принимают новые акты, запрещающие хранить незашифрованные данные и/или ключи шифрования за рубежом. В качестве примеров можно привести отраслевые стандарты (например, TISAX в Европе), которые указывают или подразумевают, что у поставщика облачных услуг ни при каких обстоятельствах не может быть доступа к данным, а во многих случаях и к ключам шифрования. Однакопредварительные результаты опросауказывают на то, что возможны варианты, когда ключи шифрования находятся только у клиента (в то время как зашифрованные данные могут храниться за рубежом).

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

По мнениюТомаса Куриана, "суверенитет данных позволяет клиентам запрещать доступ к своей информации поставщикам услуг, кроме тех случаев, которые сами клиенты сочтут необходимыми. Например, платформа Google Cloud разрешает клиентамхранить и использовать ключи шифрования вне облака.Они могутпредоставлять доступ к ключам только в случае крайней необходимости, будучи уверенными, чтоиспользуемые данные защищены. В результате клиент может самостоятельно распоряжаться доступом к своим данным".

Таким образом, этот сценарий позволяет организациям использовать платформу Google Cloud и хранить ключи шифрования в выбранном ими месте под их физическим и административным контролем.

Сценарий 3. Централизованное управление ключами шифрования

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

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

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

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

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

Дальнейшие действия

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

  • Прочитайтеэту статьюоб управлении ключами шифрования в облаке.

  • Оцените риски для данных с учетом уязвимостей, нормативных требований, отношений между странами ит.д.

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

Ознакомьтесь ссервисамиотGoogle Cloud EKM (External Key Manager) и партнеров (Ionic, Fortanix, Thales ит.д.), которые позволяют перенести управление ключами из облака в локальную среду.


Напоминаем что при первой регистрации в Google Cloud: вам доступны бонусы на сумму 300 долларов США, а более 20 бесплатных продуктов доступны всегда. Подробнее поспециальной ссылке.

А так же выражаем благодарность за помощь в подготовке материала коллегам: Антон Чувакин, Иль Сон Ли,Звиад Кардава

Подробнее..

Как мы открывали первое в России сообщество Developer Student Clubs

18.08.2020 18:15:11 | Автор: admin
До нового учебного года осталось две недели под катом история Романа Седова об открытии первого в России студенческого комьюнити DSC HSE Nizhny Novgorod в рамках международной программы Developer Student Clubs от Google Developers.

Немного цифр за год: 5 мероприятий, более 200 участников, спикеры из Intel, Tinkoff, Five9 и First Line Software.



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

Год назад я решил попробовать себя в другой роли: в качестве организатора комьюнити и мероприятий, где происходит обмен знаниями и опытом. Тогда я открыл первый в России Developer Student Club на базе кампуса НИУ ВШЭ в Нижнем Новгороде. Оказалось, что организация среды для обмена актуальными знаниями вдохновляет еще больше.

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



Что за Developer Student Clubs


Программа Developer Student Clubs появилась в 2017 году. Идея довольно простая: в некоторых странах студентам после университета очень тяжело найти работу, потому что теоретические знания не всегда получается переложить на реальную разработку. Чтобы помочь студентам получить актуальные для индустрии навыки, их объединили в одно большое сообщество, дали материалы по актуальным технологиям, пригласили экспертов с выступлениями о лучших практиках для начинающих, и позволили студентам самим разрабатывать проекты и делиться знаниями.

Такая схема сработала, программа стала успешной, и новые клубы стали появляться в разных частях мира. К 2019 году программа дошла и до Европы, а сегодня такие клубы есть в более чем 750 университетах по всему миру.



Почему и как мы открыли свой клуб


Летом 2019 академический руководитель моей программы прислал мне ссылку на новость об открытии программы в Европе. Ранее я уже посещал мероприятия Google Developer Groups в нашем городе, и идея организовать что-то подобное на уровне студентов мне очень понравилась. Я оформил заявку, прошел собеседование и стал лидом одного из двух первых клубов в России. Наш был в Нижнем Новгороде, второй в Калининграде.

Наш год начался с саммита, на который съехались лидеры со всей Европы. Мы провели три дня в Париже, посещали местную штаб-квартиру Google, гуглеры и представители Google Dev сообществ рассказывали доклады и проводили воркшопы по темам, связанным с технологиями и организацией комьюнити.



Как организовали работу клуба


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

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

Для коммуникации в интернете мы завели все социальные сети для нашего клуба и стали продвигать их среди студентов. Быстро стало понятно, что паблик ВК растет лучше всех, поэтому мы решили сосредоточиться на нем. Решение оправдалось группа быстро раскрутилась среди студентов нашего кампуса и набрала более 250 подписчиков. Это большая часть всех связанных с IT студентов в кампусе Вышки в Нижнем Новгороде.



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

Еще был локальный созвон для российского DSC комьюнити. Поскольку у нас было всего два клуба, то и созвоны получались на троих я, Аня из Калининграда и Катя комьюнити-менеджер Google в России.

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

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



Немного статистики за год


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

На основе фидбека мы собрали несколько направлений, которые интересовали студентов больше всего, и стали планировать ивенты по ним.

Всего мы организовали 5 ивентов: три больших митапа по разным технологиям, воркшоп по Angular и встречу с Женей Некрасовым из Владивостока на важную тему Accessibility.



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

Доклады от более опытных студентов, я считаю, стали нашим открытием. Когда ребятам рассказывает спикер из компании, то все круто они внимательно слушают, задают вопросы по теме, что-то перенимают. Но когда выступает спикер-студент, то слушатели оживают чуть больше: вопросы могут быть не совсем по теме, но волнующие и актуальные, а ответы на них вполне могут перейти даже в небольшую дискуссию.



Планы на новый учебный год


В наступающем учебном году все будет еще интереснее теперь Developer Student Clubs открываются в 25 университетах России. Здесь можно посмотреть, есть ли клуб в вашем университете или городе. Если нет, то почему бы не открыть еще один?



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

После завершения года лида не бросают на произвол судьбы. В Google Developers есть еще три крутых комьюнити: Google Developer Groups, Google Developers Experts и Women Techmakers. На последних звонках в рамках DSC комьюнити нам подробно рассказывали о том, что это за сообщества и как начать в них участвовать.

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

Итого


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

Представляем бета-версию Jetpack Compose

04.03.2021 14:05:18 | Автор: admin

Совсем недавно, 24 февраля, мы анонсировали запуск бета-версииJetpack Compose. Этот новый набор инструментов для разработки пользовательского интерфейса позволит легко и быстро создавать оригинальные приложения для всех платформ Android. Jetpack Compose предоставляет современные и декларативные API для языка Kotlin для создания привлекательных и быстрых приложений с меньшим объемом кода. Набор совместим с существующими приложениями для Android и библиотеками Jetpack. Кроме того, его можно использовать вместе с Android Views.

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

Возможности бета-версии

При создании Compose нашей команде помогали и другие разработчики, которые оставляли свои отзывы. С момента открытия исходного кода в 2019 году мы выпустили 30 публичных версий продукта, получили более 700 внешних отчетов об ошибках и больше 200 внешних дополнений. Нам нравится наблюдать за результатами вашей работы с Сompose, и мы внимательно изучили все отзывы и предложения, чтобы усовершенствовать API и расставить приоритеты при разработке. Мы значительно доработали альфа-версию продукта, а также добавили и улучшили функционал. Вот некоторые из них:

  • Поддержка сопрограмм (новое)

  • Поддержка специальных возможностей для TalkBack. Другие технологии появятся в финальной версии (новое)

  • Новый API для простого использованияанимации(новое)

  • Совместимостьс Views

  • Компоненты Material UIс примерами кода

  • Ленивые списки аналог RecyclerView

  • РазметкаConstraint Layoutна основе DSL

  • Модификаторы

  • Тестирование

  • Темы и графика для простого добавления тёмных и светлых тем

  • Ввод и жесты

  • Редактируемый и обычный текст

  • Управление окнами

Главная задача этой бета-версии обеспечить работу всех API, необходимых в этой и следующих версиях. Мы будем улучшать их стабильность вплоть до финальной версии и уделять внимание производительности и специальным возможностям приложений.

Бета-версия Compose поддерживается в последней версииAndroid Studio Arctic Fox Canary, в которой тоже многоновых инструментов:

  • Live Literals: обновление литералов в реальном времени при предварительном просмотре, на устройстве и в эмуляторе (новое)

  • Предварительный просмотр анимации(новое)

  • Поддержка Compose в инструменте Layout Inspector(новое)

  • Интерактивный предварительный просмотр: воспроизведение сборки, выполненной с помощью Compose, в изолированной среде и взаимодействие с ней (новое)

  • Предварительный просмотр разметки: разметка сборки, выполненной с помощью Compose, прямо на устройстве даже при отсутствии полного приложения (новое)

Live Literals в Android EmulatorLive Literals в Android EmulatorLayout Inspector для Jetpack ComposeLayout Inspector для Jetpack Compose

Работа с уже созданным приложением

Jetpack Compose безупречно работает с Android Views, и вам не придется менять старые привычки. Интерфейсы из Compose можно встроить в Android Views, и наоборот. Вдокументации по совместимостирассказано обо всех возможностях использования этих наборов инструментов.

Compose работает не только с Views, но и с самымираспространенными библиотеками. Вам не придется переписывать приложение. Вот что мы интегрировали:

  • Navigation

  • ViewModel

  • LiveData/RX/Flow

  • Paging

  • Hilt

БиблиотекиMDC-Android Compose Theme AdapterиAccompanistработают с темамиMaterialиAppCompatXML. Вам не придется повторять определения тем. Accompanist также предлагает оболочки распространеннымбиблиотекам для загрузки изображений.

Легкость работы в Compose

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

Jetpack Compose полностью написан на языке Kotlin и использует все егопреимущества, предлагая мощные, простые и интуитивные API. Например,сопрограммыпозволяют создавать простые асинхронные API для описания жестов, анимации и прокрутки. Это облегчает написание кода, сочетающего асинхронные события, например жесты, передающие анимацию, с отменой и очисткой, обеспечиваемой структурированным параллелизмом.

Знакомство с Compose

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

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

Заключение

В бета-версии Jetpack Compose все нужные API и функции готовы к выходу версии 1.0. Самое время знакомиться с набором инструментов и думать о том, где реализовать его возможности. Мы рады вашимотзывамоб использовании Compose. Своими впечатлениями можно также поделиться с другими разработчиками на канале #compose вKotlin Slack.


Выражаем благодарность за помощь в подготовке статьи коллегам: Анна-Кьяра Беллини(менеджер по продуктам),Ник Бутчер(подразделение по работе с разработчиками) и Звиад Кардава (подразделение по работе с разработчиками)

Подробнее..

Перевод Библиотека Oboe для высокопроизводительного аудио в играх и приложениях

21.04.2021 10:22:09 | Автор: admin

Мы добавили в Android Game SDK библиотеку Oboe C++ для работы со звуком. Она позволяет разрабатывать высокопроизводительные аудиоприложения с низкой задержкой для максимального спектра устройств Android. Эта библиотека также отлично подойдет большинству разработчиков игр. О ней и о том как с ней работать в Android Game SDK мы и хотим рассказать в этой статье.

Один API

Библиотека Oboe использует усовершенствованный интерфейс AAudio с расширенными функциями на устройствах под управлением Android 8.1 (API уровня 27) или более поздней версии, а также обеспечивает обратную совместимость (через OpenSL ES) с Android 4.1 (API уровня 16) или более поздней версии. В дополнение к API платформы библиотека Oboe предлагает разработчикам аудиоприложений ключевые функции для комфортной работы, такие как ресемплинг, преобразование форматов и динамическая корректировка задержек. При необходимости она позволяет преобразовывать аудиоданные, например конвертировать число каналов, чтобы повышать производительность выбранных устройств. Также библиотека предлагает обходные решения для других особенностей работы конкретных устройств, что повышает эффективность кода для обработки звука. В двух словах, теперь библиотека Oboe считается рекомендуемым решением при написании кода для работы со звуком на C/C++ для платформы Android.

Интеграция Oboe

Встроить элементы кода на базе Oboe в проект можно двумя основными способами. Если вы используете плагин Android Gradle 4.1.0 или более поздней версии вместе с CMake, а также используете (или можете подключить) общую библиотеку STL, для включения библиотеки Oboe достаточно добавить ее в список зависимостей Gradle, включить объекты prefab и добавить несколько строк кода в файл CMakeLists.

Интегрировать Oboe также можно с помощью статического связывания при помощи Android Game SDK. Сначаласкачайте библиотекуи зарегистрируйте ее в системе управления версиями. Работать нужно с minSdkVersion 16 или более поздней версии, а также с NDK 18 или более поздней версии. Затем укажите версию игрового SDK для привязки, которая скомпилирована для заданной комбинации ABI, уровня API, NDK и STL, добавив путь к компилятору в следующем формате:

gamesdk/libs/[architecture]_API[apiLevel]_NDK[ndkVersion]_[stlVersion]_ReleaseExample: gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release

Затем добавьте ключ-loboe_staticв команду компоновщика. Поскольку включать общую библиотеку liboboe.so не требуется, статическое связывание позволяет сократить размер кода. Если для комбинации ABI, уровня API, NDK и STL нет предварительно скомпилированной версии SDK под ваши настройки, можно выполнить связывание с общей библиотекой. Дополнительные указания, в том числе о настройке CMake для статических библиотек, см. вдокументации для разработчиков.

Основы Oboe

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

oboe::AudioStreamBuilder builder;builder.setPerformanceMode(oboe::PerformanceMode::LowLatency)  ->setSharingMode(oboe::SharingMode::Exclusive)  ->setDataCallback(myCallback)  ->setFormat(oboe::AudioFormat::Float);

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

class MyCallback : public oboe::AudioStreamDataCallback {public:    oboe::DataCallbackResult    onAudioReady(oboe::AudioStream *audioStream, void *audioData, int32_t numFrames) {        // We requested AudioFormat::Float        auto *outputData = static_cast<float *>(audioData);        // TODO: populate audioData here        return oboe::DataCallbackResult::Continue;    }};

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

Обратная связь

Если вы столкнулись с проблемами, сообщите нам о нихчерез GitHub.

Подробнее..

Стрим Modern Web Live 2020 PWAs. Web Supercharged

18.06.2020 20:20:38 | Автор: admin
Привет, Хабр!

С Progressive Web Apps уже всем же всё понятно? Что здесь ещё можно обсуждать? Вот, мы так тоже думали, а потом увидели состояние многих существующих PWA и решили уточнить. У вас уточнить. Поэтому собираемся в пятницу 19-го в 17:00 по Москве на лайвстрим с PMом Chrome по PWA, PJ McLachlan, и Product Leadом по PWA по региону EMEA, Craig Adolph, поговорить об этом и ответить на ваши вопросы. Ваши бессменные ведущие Даниил Матвеев, консультант по мобильным технологиям, и Андрей Липатцев, менеджер по работе со стратегическими партнёрами.
Modern Web Live Россия / PWAs. Web Supercharged. Изображение обработано в squoosh.app

У нас есть пара задумок относительно того, что нам хотелось бы рассказать и обсудить с Пи-Джеем и Крегом (они ниже), однако, нам интересно понять, что волнует именно вас, что вам непонятно, и что вам, может быть, мешает запилить лучшее прогрессивное веб-приложение 21-го века. Поэтому: во-первых, пишите свои вопросы и замечания в комментариях к этому посту, и во-вторых, оставляйте их в комментариях к стриму. Разговор пойдёт в этот раз на английском, но не стесняйтесь задавать свои вопросы на любом языке Даниил с Андреем переведут даже с клингонского. Наконец, вы можете зарегистрироваться на сайте Modern Web Live 2020, чтобы получать уведомления о новых стримах и дополнительные материалы по обсуждаемым темам.

Вот наши текущие задумки того, о чём пойдёт речь:

  • В чём соль хорошего PWA?
  • Что за маяк этот Lighthouse и зачем он?
  • Что такое вообще приложение? Немного о UX и фреймворках.
  • Установка и с чем её едят (http://personeltest.ru/aways/web.dev/define-install-strategy/)
  • Как повысить возврат с вложений в PWA?
  • За что мы все так не любим пуши?
  • PWA как приложение для Android (PWAs в Play и Galaxy Store)
  • Немного о Web Vitals и Android Vitals

На всякий случай, если вы вдруг не знаете в принципе, что такое PWA, вот в помощь 2 eBookа:


А у нас пока всё. Ещё раз, задавайте свои вопросы по PWA и подключайтесь в пятницу, 19 июня, в 17:00 по Москве.

ПС. По техническим причинам анонс пришлось перезалить.
Подробнее..

Перевод Машинное обучение в разработке игр

22.04.2021 10:12:30 | Автор: admin

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

При разработке игрового процесса баланс обычно настраивается по следующей схеме:

  1. Проводятся тысячи игровых партий с участием тестировщиков.

  2. Собираются отзывы и на их основании в игру вносятся корректировки.

  3. Шаги 1и2 повторяются, пока результат не устроит и тестировщиков, и гейм-дизайнеров.

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

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

Chimera

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

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

  • Игроки могут использовать:

    • существ, которые атакуют (урон зависит от показателяатаки)или защищаются (теряя показательздоровья);

    • заклинания, которые дают особые эффекты.

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

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

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

Обучение игре в Chimera

Chimera это карточная играс неполной информациейи большим пространством состояний, поэтому мы думали, что модели будет сложно научиться в нее играть. Особенно учитывая то, что мы собирались применять относительно простую модель. На вооружение был взят подход, использовавшийся в ранних игровых агентах, таких какAlphaGo, когдасверточную нейронную сеть(CNN) обучают предсказывать вероятность выигрыша по произвольному игровому состоянию. Первую модель мы обучили на играх с произвольными ходами, а затем заставили агента играть против самого себя, собирая данные для обучения последующих его итераций. С каждым разом качество данных повышалось, как и игровые навыки агента.

Результаты игры агента против лучшего написанного вручную ИИ-алгоритма по мере обучения. Исходная нулевая версия агента делала ходы случайно.Результаты игры агента против лучшего написанного вручную ИИ-алгоритма по мере обучения. Исходная нулевая версия агента делала ходы случайно.

В качестве игрового состояния, которое подается на вход CNN, мы выбрали кодированное изображение. Такой подход оказался эффективнее всех процедурных агентов и нейронных сетей других типов (например, полносвязных). Выбранная архитектура модели достаточно компактная, чтобы ее можно было выполнять на ЦП за разумное время. Поэтому мы загрузили веса модели и запускали агент в реальном времени в клиенте игры Chimera на платформеUnity Barracuda.

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

Настройка баланса в Chimera

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

Первая,Evasion Link Gen,состояла из заклинаний и существ со способностями, которые давали дополнительную энергию связи, необходимую для развития химеры. В ней также были заклинания, позволявшие существам уклоняться от атак. В колодеDamage-Healнаходились существа с разными показателями силы и заклинаний, лечившие и наносившие незначительный урон. Мы думали, что эти колоды будут примерно равносильны, однакоEvasion Link Genпобеждала в 60 % случаев при игре противDamage-Heal.

Собрав разные показатели по биомам, существам, заклинаниям и развитию химер, мы сразу увидели две вещи:

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

  2. Существо Тирекс оказалось чересчур сильным. Его появление в игре тесно коррелировало с победами, и модель всегда старалась играть с Тирексом, невзирая на штрафы за его вызов в неподходящий или перенаселенный биом.

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

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

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

Ослабив Тирекса, мы снизили зависимость колодыEvasion Link Genот чрезмерно сильного существа. Но даже при этом соотношение побед сохранилось на уровне 60/40 вместо 50/50. При детальном рассмотрении журналов отдельных игр стало видно, что они часто велись без продуманной стратегии. Проанализировав данные снова, мы обнаружили ряд других областей, где можно было внести изменения.

Мы увеличили начальный уровень здоровья обоих игроков, а также эффективность лечащих заклинаний. Это помогло увеличить продолжительность игр и разнообразить стратегии. В частности, это позволило игроку с колодойDamage-Healдержаться достаточно долго, чтобы получить преимущество от своей стратегии лечения. Чтобы игроки с умом подходили к вызову существ и их размещению, мы увеличили штрафы за использование существ в неподходящих или перенаселенных биомах. Наконец, мы сократили разрыв между самыми сильными и слабыми существами, немного изменив атрибуты.

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

Заключение

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

Слова благодарности

Этот проект был реализован при поддержке множества людей. Мы благодарим Райана Поплина, Максвелла Ханнамана, Тейлора Стейла, Адама Принса, Михала Тодоровича, Сюэфан Чжоу, Аарона Каммарата, Эндипа Тура, Транга Ле, Эрин Хоффман-Джон и Колина Бозвела. Спасибо всем, кто участвовал в игровом тестировании, давал советы по игровому дизайну и оставлял ценные отзывы.

Подробнее..

Открылся набор в Indie Games Accelerator и Indie Games Festival от Google Play

14.06.2021 12:13:27 | Автор: admin

Indie Games Accelerator и Indie Games Festival две программы для независимых (инди) разработчиков мобильных игр, организованных командой Google Play. Программы направлены на то, чтобы помочь небольшим игровым студиям и разработчикам стать популярнее в Google Play независимо от того, на какой стадии находятся их проекты.

В этом году обе программы пройдут в онлайн-формате, заявки принимаются до 1 июля подробности под катом.

Для нас важно поддерживать не только крупные международные компании, но и небольшие инди-команды благодаря своей креативности и увлеченности играми, они создают уникальные и интересные проекты. Если вы работаете над уникальным проектом и хотите, чтобы о нем узнал мир, предлагаем вам принять участие в одной (или обоих сразу) из наших программ Indie Games Accelerator и Indie Games Festival.

Каждая из программ направлена на то, чтобы помочь небольшим игровым студиям стать популярнее в Google Play независимо от того, на какой стадии находятся их проекты: в акселератор принимаются проекты на этапе идеи или прототипа, фестиваль подойдет для игр, находящихся в активном оперировании. Заявки на обе программы принимаются до 1 июля.

Indie Games Accelerator: обучение и менторская поддержка

Эта программа разработана для начинающих инди-разработчиков, которые работают над прототипами будущих игр или делают тестовые релизы.

Проекты, которые пройдут отбор и станут участниками акселератора, смогут присоединиться к 12-недельной образовательной программе, а также получат возможность поработать над своими проектами вместе с экспертами из Google, крупных игровых студий и венчурных фондов. Rovio, Game Insight, Zynga, Play Ventures, Unity Technologies, Belka Games с полным списком менторов и условиями участия можно ознакомиться здесь.

В этом году в акселерационной программе участвуют более 70 стран, заявки на Indie Games Accelerator из России, Украины и Беларуси будут приниматься впервые!

Indie Games Festival: промо-кампании для финалистов

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

Основные критерии отбора: инновационность, увлекательность и дизайн. Среди призов: фичеринг на Google Play и промо-кампании для 3 игр-победителей стоимостью 100 000 евро.

Условия участия: в программе участвуют 29 стран Европы, включая Россию, Украину и Беларусь; максимальное количество человек в команде 50, игра должна быть выпущена на Google Play не ранее 3 марта 2020 г. Подробнее с правилами участия и критериями отбора можно ознакомиться здесь.

В прошлом году в финал конкурса прошло три проекта из России: My Diggy Dog 2 от King Bird Games, Color Spots от UX Apps и Tricky Castle от Team Tricky подать заявку можно до 1 июля.

Подробнее..

Продолжается набор наставников для программы Google Summer of Code 2021

11.02.2021 14:07:02 | Автор: admin
Логотип GSoC

Начался новый год, а вместе с ним и 17-й выпуск программы Google Summer of Code (GSoC). Уже сейчас мы принимаем заявки от организаций, разрабатывающих ПО с открытым исходным кодом, которые готовы стать наставниками для студентов. GSoC это международная программа для разработчиков старше 18 лет, позволяющая им поучаствовать в работе над открытыми проектами. В этом году каждый студент в течение 10 недель (с 7 июня по 16 августа) будет оттачивать навыки программирования под присмотром наставников-волонтеров из организаций, подавших заявку на участие в программе.Хотите узнать, как ваша организация может стать одной из них?

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

Мы всегда рады сотрудничеству с самыми разными организациями. Наша цель на 2021 год принять в свои ряды 40 новых наставников. Уже зарекомендовавшие себя организации могут приглашать в GSoC своих партнеров.

В прошлом году в программе приняло участие 1106 студентов и 2000 наставников из 198 различных организаций, разрабатывающих ПО с открытым исходным кодом. Среди них были как небольшие компании, так и крупные организации с множеством подпроектов (Python Software Foundation, Apache Software Foundation ит.д.). Кто-то на рынке уже больше 20 лет, а кто-то меньше двух.

Вы можете отправить заявку на участие уже сегодня. Прием заявок заканчивается 19 февраля в 19:00 (UTC). Мы объявим выбранных наставников для GSoC 2021 9 марта.

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

Удачи вам!
Стефани Тейлор, Google Open Source
Подробнее..

Android 11 Beta и обновления для разработчиков

17.06.2020 08:10:07 | Автор: admin

Привет, Хабр!
10 июня вышла бета-версия Android 11! В этой статье мы хотели бы коротко рассказать о главных новинках в Android 11 Beta, Google Play и инструментах для разработчиков. А также, хотели бы пригласить всех читателей на специальное онлайн мероприятие посвященное выходу Android 11 Beta, которое состоится сегодня, 17 июня в 19:00 по Московскому времени. Специальный гость мероприятия, известный каждому Android разработчику Чет Хас! Присоединяйтесь и читайте подробности под катом.


Бета-версия Android 11 уже доступна


Благодаря обратной связи, которую мы получили от сообщества разработчиков на Android 11 Developer Preview, мы смогли подготовить бета-версию Android 11, которая фокусирается на 3 ключевых вещах: люди, элементы управления и приватность.


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


  • Conversation notifications или уведомления о разговорах будут появляться в специальном разделе, с улучшенным дизайном и предложениями действий, такими как открытие беседы в виде всплывающей подсказки, создание отдельного ярлыка беседы на главном экране или установка напоминания.
  • Bubbles, они же Пузыри. Надоело переключаться между мессенджерами и другими приложениями во время переписки? Пузыри помогут держать переписку в поле зрения и останутся легко доступны во время многозадачности. Для того чтобы задействовать данный функционал, мессенджеры и другие приложение поддерживающие обмен сообщениями могут использовать новый Bubbles API.
  • Consolidated keyboard suggestions или консолидированные подсказки от клавиатуры. Теперь приложения c функционалом Autofill и редакторы метода ввода (IMEs), такие как клавиатура, смогут безопасно предлагать контекстно правильные подсказки непосредственно в полосе предложений IME, где они наиболее удобны для пользователей.
  • Голосовой доступ, он же Voice Access. Для людей, которые управляют своим телефоном с помощью голоса.Android 11 теперь понимает содержимое экрана и контекст, а также генерирует метки и точки доступа для голосовых команд.
    image

Элементы управления: последняя версия Android поможет быстро подключиться к умным устройствам и управлять ими в одном пространстве:


  • Device Controls или управление устройствами позволит быстрее и проще получать доступ к подключенным устройствам. Теперь, просто нажав и удерживая кнопку питания, пользователи смогут мгновенно получить доступ к управлению устройствами в одном месте. Разработчики смогут использовать новый API для отображения элементов управления. Подробнее здесь.
  • Media Controls или управления мультимедиа позволит быстро и удобно переключаться между устройствами вывода для аудио или видеоконтента, будь то наушники, динамики или даже телевизор. Подробнее здесь.
    image

Приватность: в Android 11 мы даем пользователям еще больший контроль над разрешениями и работаем над тем, чтобы повысить безопасность устройств благодаря более регулярным обновлениям.


  • One-time permission или единовременные разрешения позволят пользователям предоставлять приложениям доступ к микрофону, камере или местоположению устройства только один раз. Приложению нужно будет запросить разрешение заново при следующем использовании приложения. Подробнее здесь.
  • Permissions auto-reset или автоматический сброс разрешений: если пользователь, по какой-то причине, не использовал приложение в течение длительного времени, Android 11 автоматически сбросит runtime разрешения, связанные с приложением, и уведомит об этом пользователя. Приложение нужно будет запросить разрешения снова при следующем запуске. Подробнее здесь.
  • Background location или локация в фоновом режиме. В феврале этого года мы анонсировали, что разработчикам необходимо будет получить отдельное разрешение на доступ к локации в фоновом режиме, чтобы предотвратить злоупотребление таким доступом. Мы даем разработчикам больше времени для внесения изменений и не будем применять политику для существующих приложений до 2021 года. Подробнее здесь.
  • Google Play System Updates или обновления системы Google Play. Запущенные в прошлом году, обновления системы Google Play позволяют нам ускорить доставку и обновление основных компонентов ОС на устройствах. В Android 11 мы более чем удвоили количество обновляемых модулей, и эти 12 новых модулей помогут улучшить приватность, безопасность, и консистентность для пользователей и разработчиков.
    image

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


  • Самые важные (ломающие) изменения не вступят в силу до тех пор, пока вы не явно не укажете Android 11 в своем манифесте
  • Добавили новый интерфейс в настройках для разработчиков, позволяющий включать/выключать многие из этих изменений
  • добавили Platform Stability майлстоун в таймлайн, чтобы вы могли приступить к обновлению своего приложения, точно зная что платформа стабильна.

Android 11 также включает в себя ряд других улучшений для разработчиков, таких как поддержка беспроводной отладки по ADB, ADB incremental для быстрой установки больших APK и больше nullability аннотаций в API платформы (для выявления проблем во время сборки, а не во время выполнения) и многое другое.


Бета-версия Android 11 доступна уже сейчас, с финальными API SDK и NDK, которые можно попробовать в своих приложениях.


Если у вас есть устройство Pixel 2, 3, 3a или 4, вы можете зарегистрироваться здесь, чтобы получать обновления Android 11 Beta по воздуху. Также можно отдельно скачать образы для смартфонов Google Pixel и эмулятора Android. Подробно узнать обо всех изменениях вы можете на специальной странице для Android разработчиков.


Также узнать о новинках в Android 11 вы можете узнать из нашего специального мероприятия с русскоговорящими экспертами и специальным гостем Четом Хасом, которое пройдет сегодня в 19-00 по Московскому времени.


Современная Android разработка


В течение последних лет, команда Android усердно работала над улучшением опыта разработчиков мобильных приложений, чтобы сделать их более продуктивными. Это включает в себя улучшения Android Studio, отличный язык (Kotlin), Библиотеки Jetpack для упрощения общих задач и Android App Bundles для улучшения распространения приложений. Мы называем всё это современной Android разработкой и предлагаем вниманию Android разработчиков лучшее из мира Android, чтобы сделать их ещё более эффективным и продуктивным.


image

Android Studio


Новые функции в Android Studio 4.1 Beta и 4.2 Canary доступны уже сегодня. При разработке, мы ориентировались на ряд важных вопросов для разработчиков:


  • Отладка приложений стала проще с поддержкой беспроводной отладки по ADB на устройствах с Android 11. Мы также добавили инспектор баз данных и инструменты Dependency Injection(Dagger);
  • Тестирование устройств стало проще благодаря тому, что эмулятор Android теперь находится непосредственно в IDE. Разработчикам смогут видеть результаты выполнения тестов с нескольких устройств одновременно, а также мы улучшили и сам диспетчер виртуальных устройств.
  • Машинное обучение стало проще (почти). По крайней мере,теперь вы сможете импортировать свои модели для ML Kit и TensorFlow Lite прямо в Android Studio.
  • Сборка и deployment приложений стали быстрее благодаря Kotlin Symbol Processing API, кэшированию графа задач в Gradle и более быстрой установке и запуску приложений на всех устройствах с Android 11. А новый анализатор сборки может помочь вам определить, где в вашей сборке могут быть узкие места.
  • Инструменты для разработки игр стали лучше благодаря обновленному пользовательскому интерфейсу профилировщика производительности, переработанному инструменту System Trace и поддержке встроенного профилирования памяти.

image

Попробовать последнюю версию: Android Studio 4.1 Beta и Android Studio 4.2 Canary вы можете уже сейчас!


Kotlin, Jetpack и новинки


Языки и библиотеки являются одной из основных областей инвестирования для нас в современную Android разработку. Мы сосредоточены на том, чтобы сделать разработчиков более продуктивными с Kotlin и Jetpack.



С ростом популярности Kotlin, а на данный момент, более 70% из 1000 лучших приложений в Google Play используют Kotlin, и таким большим количеством разработчиков, использующих Kotlin, мы можем использовать весь его потенциал, чтобы улучшить опыт разработки под Android новыми способами.


Корутины Kotlin это особенность языка Kotlin, которая упрощает написание и понимание конкурентных вызовы в коде. Теперь мы официально рекомендуем использовать корутины Kotlin и поэтому мы встроили поддержку корутин в наиболее часто используемые библиотек Jetpack Lifecycle, WorkManager и Room.


Сам Kotlin также продолжает улучшаться с каждым выпуском благодаря потрясающей команде Jetbrains. Kotlin 1.4 обеспечивает более быстрый code completion, более мощный вывод типов, включенные по умолчанию функциональные интерфейсы, а также полезные другие улучшения, такие как смешивание именованных и позиционных аргументов.


Мы также продолжаем развивать и продвигать Jetpack набор библиотек предназначенных для быстрой и легкой реализации общих шаблонов разработки для мобильных устройств.


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


Мы также рады представить ещё одну новую библиотеку App Startup. Она призвана помочь разработчикам приложений и библиотек оптимизировать инициализацию библиотек в приложении.


У нас много обновлений для существующих библиотек, в том числе серьезное обновление для Paging 3. Теперь оно Kotlin-first с полной поддержкой Корутин!


Compose


Есть еще одна вещь, которая необходима для продуктивности это мощный набор инструментов, позволяющий легко и быстро создавать красивые пользовательские интерфейсы на Android со встроенным доступом к API платформы. Именно поэтому мы развиваем Jetpack Compose наш новый набор инструментов для разработки пользовательских интерфейсов, который позволяет оживить ваши приложения с помощью меньшего количества кода и интуитивно понятных API на Kotlin. Мы рады Jetpack Compose Developer Preview 2, наполненный новыми фичами и улучшениями, о которых нас просили разработчики:


  • Interoperability with Views
  • Animations
  • Testing
  • Constraint Layout
  • Adapter list
  • Material UI components
  • Text and editable Text
  • Theming and Graphics
  • Window management
  • Input and Gestures

Работая в тесном сотрудничестве с командой Kotlin из Jetbrains, мы добавили ряд новых возможностей в Android Studio 4.2, призванных помочь создавать приложения с помощью Compose:


  • плагин компилятора Kotlin для генерации кода
  • Compose Preview Аннотации
  • Предварительный просмотр Compose в режиме реального времени
  • Деплой отдельных composable объектов на устройство
  • Compose Code completion
  • Пример Data API для Compose

Compose еще не готов к использованию в продакшене. В данный момент, мы заканчиваем оптимизацию производительности, и будем рады услышать вашу обратную связь. Мы планируем запустить Alpha этим летом и 1.0 в следующем году.


Абсолютно новая консоль Google Play


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


  • Найти, обнаружить и понять фичи которые помогут вам процветать в Google Play
  • Легко найти новые руководства по изменениям политиках, статус релизов, и обратную связь от пользователей
  • Лучше понять результативность продвижения, с новыми отчетами о новых пользователях
  • Позволить всем членам вашей команды использовать функции Play Console с новыми опциями управления пользователями

Подробнее о новой консоли Google Play читайте в этом посте или присоединяйтесь к бета-версии прямо сейчас на play.google.com/console.



Вместо заключения


Специально для вас, в связи с выходом бета версии Android 11, сегодня, 17 июня, в 19:00 по Московскому времени, мы встречаемся с русскоязычными экспертами на специальном онлайн мероприятии, чтобы обсудить все в подробностях. Специальный гость мероприятия, известный каждому Android разработчику Чет Хас! Присоединяйтесь, будет интересно!


Расписание:
19:00 19:20 Знакомство с экспертами и гостем Chet Haase
19:20 19:30 Квиз с возможностью выиграть подарки с логотипом Android 11
19:30 20:30 Обсуждение новинок экспертами
20:30 21:00 Ответы на ваши вопросы (пишите в комментариях с #askandroid), авторы самых интересных обязательно получат подарки


Наши эксперты:



P.S.


  1. У нас есть 12 докладов, которые мы разместили на канале Android разработчиков на YouTube.
  2. Мы запускаем 11 недель Android с новым контентом для разработчиков каждую неделю! Темы, которые вы просили: UI, Jetpack, Machine Learning и многое другое. Посмотреть расписание можно здесь.
Подробнее..

Flutter клёвенький у меня только такое объяснение. Обзор лучших выпусков Flutter Dev Podcast

28.09.2020 14:11:21 | Автор: admin
Привет! На связи Flutter Dev Podcast и его создатель и ведущий Евгений Сатуров.

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

Как и зачем мы делаем подкаст, я подробно рассказал на vc.ru. В этой статье я сделал обзор самых интересных и популярных эпизодов Flutter Dev Podcast.




Во Flutter я пришел из Android: узнал о новой технологии в кулуарах конференции от Звиада Кардавы, Developer Relations из Google Russia, который потом стал первым гостем нашего подкаста. Идея создать СМИ про Flutter возникла потому, что мы одни из первых в стране начали что-то делать на этом фреймворке: ниша была свободна.

Flutter это технология кроссплатформенной разработки приложений под iOS, Android, веб и десктоп от Google.

Flutter Dev Podcast я запустил с коллегой Артёмом Зайцевым мы вместе работаем в Surf. На тот момент мы практически ничего не знали про Flutter, и, можно сказать, росли вместе с подкастом. Параллельно с подкастом развивали Flutter в Surf. Теперь у нас целый Flutter-отдел в нём работает 13 человек.Мы с ребятами ведём публичный репозиторий SurfGear на GitHub, где выкладываем всякие полезности для разработки на Flutter: набор библиотек, стандартов, инструментов.

Спасибо Google и лично Екатерине Винниченко и Звиаду Кардаве за поддержку нашего подкаста и за приглашение сделать обзор выпусков в блоге Google.

Выпуски Flutter Dev Podcast: от свежих к ранним




Целая платформа для заработка всевозможных людей


#19 Яндекс.Про

Геннадий Евстратов: Глобальная цель сделать громадного франкенштейна, в котором процент Flutter будет нарастать, нарастать, нарастать, и можно будет просто взять маленькой лопаточкой Android-код, вышвырнуть его и оставить просто Flutter-приложение.

Команда Flutter-разработчиков из Яндекса постоянные гости подкаста. В ранних выпусках они рассказывали о Яндекс.Таксометре это, кстати, тоже попало в наш обзор. Теперь Яндекс.Таксометр переродился в Яндекс.Про. iOS версия написана чисто на Flutter, а Android версия это гибрид: чисто Flutter версия ещё не догнала функциональность Android версии, поэтому выкидывать её пока нельзя.

Гости из Яндекса рассказывают, почему и в каком виде проникает Flutter в проекты компании: фреймворк уже используют для отдельных модулей в Яндекс.Лавке, Яндекс.Такси, Яндекс.Go. Говорят о том, что мешает перейти целиком на Flutter прямо сейчас, какие проблемы вскрылись при работе с Fish Redux из-за масштабирования и через что нужно будет пройти разработчику, чтобы интегрировать Flutter в нативное приложение.





Я много чем занимаюсь во Flutter-команде, но в первую очередь забочусь, чтобы внешние разработчики получали хороший опыт


#17 Flutter Day 2020

Chris Sells: Вы всегда можете написать нативный код в своём приложении или даже создать собственный плагин. Если вы напишете собственный плагин, и у нас такого нет, пожалуйста, поделитесь им с миром. Именно так растёт экосистема Flutter.

Это во многом необычный выпуск: впервые часть подкаста мы вели на английском и впервые сделали онлайн-трансляцию на Youtube.

В гости к Flutter Dev Podcast пришёл Chris Sells продакт менеджер из Google: вместе с Flutter-командой он занимается развитием Flutter. Обсудили разное: возможность одновременно дебажить на большом количестве устройств и эмуляторов, откуда появился Dash символ Flutter, какие проблемы у Flutter-команды есть в режиме удалённой работы.

Chris рассказал, как будет внедряться Null safety и что сильнее всего влияет на архитектуру приложения (и это не выбор State management). Вы узнаете, будет ли во Flutter свой Jetpack, почему из ранних версий Dart убрали Reflection API и добавят ли его обратно, сделают ли поддержку data value объектов. Eщё ведущие обсудили с Chris компиляцию Flutter-приложений на процессоры Arm в новых устройствах от Apple, что мешает выпустить альфа-версию Flutter с поддержкой сборки приложений для Windows и Linux и будет ли во Flutter динамическая загрузка кода.





Медиа это тот тип активности человечества, где все постоянно идёт не так, как ты хочешь


#16 Meduza

Борис Горячев: Я встретил сопротивление, которое я всегда встречаю у нативных разработчиков. Когда они слышат что-то про кроссплатформу, они сразу встают в позу, говорят, что это отстой полный, что всё плохо работает, всё медленно и вообще отстой. У них аргументы примерно такие:
А что если тебе надо будет показать вот это, вот это, вот это?
Но нам не надо будет это показать.
Нет, а что если надо будет?
Очень вряд ли.
Ну плохой перформанс!
Ну вроде как нет.
Нет, ну плохой, на нативе будет быстрее.

Новое приложение Meduza написано на Flutter с нуля. В 16 выпуске Flutter Dev Podcast CTO Meduza Борис Горячев рассказывает, зачем Meduza это надо. Начинаем с истоков: обсуждаем, почему в 2014 провалилась концепция mobile first, говорим про непростые отношения с нативными разработчиками, удивительный мир медиа-разработки, игры со шрифтами, тяготы работы с WebView и Backend Driven UI. А ещё Борис отвечает на претензии Артемия Лебедева.

Подробный пересказ выпуска Flutter Dev Podcast с Борисом Горячевым





Изначально я хотел сделать что-то похожее на VS Code, но лучше


#15 Flide IDE на Flutter

Андрей Лесницкий: Я начал продукт для себя, чтобы повысить свою продуктивность. Если это повышает мою продуктивность, это может повысить продуктивность и всех разработчиков в экосистеме Flutter.

Андрей Лесницкий из Минска пишет среду разработки на Flutter. Он вдохновился Android Studio и VS Code, и старается взять из них всё лучшее но хочет сделать IDE по-своему. Почему для проекта он выбрал Flutter: это челлендж или специальная задумка? Каким продукт задумывался и каким получился?

В выпуске Андрей рассказывает, как ему пришла в голову эта идея, с какими основными вызовами он столкнулся и в каком состоянии проект сегодня.





Мне очень понравилось быть водителем такси. Если бы тарифы были повыше, я бы переквалифицировался


#11 Яндекс.Такси

Геннадий Евстратов: Служба безопасности сказала: React Native только через их труп.

Команда Яндекс.Такси делает на Flutter программный комплекс для службы такси приложение Яндекс.Таксометр. В выпуске они рассказывают, почему сначала пилили проект на React Native, но потом перешли на Flutter, зачем сотрудники Яндекса таксуют по ночам и за счёт чего приложение на Flutter делается в два с половиной раза быстрее, чем на Android. А ещё про иероглифы в документации Fish redux, интеграцию Яндекс Map Kit и собственный виджет пак.





CI/CD сделает всё за вас, даже если у вас нету техники от Apple


#9 CI/CD Jenkins, Bitrise, Codemagic

Михаил Токарев: Когда мы разговаривали с Flutter Team по поводу CI/CD, они очень чётко сказали: Мы хотим видеть CI, которым могла бы пользоваться даже моя бабушка. С этой установкой мы и начали делать Codemagic.

Вместе с CTO Codemagic разбирались, зачем нужен CI/CD, в какой момент становится понятно, что без него не обойтись, и чем чреваты локальные сборки. Сравнивали Jenkins, Bitrise и Codemagic по всем параметрам, до которых смогли дотянуться: возможности, ограничения, стабильность, кастомизация, цены. Выясняли, откуда появился Codemagic и почему он позиционируется именно как CI/CD для Flutter, а не для всего подряд, в чем его отличие от остальных инструментов и какая компенсация положена пользователю, если сборка упала по вине инструмента.





Работает на всём, на чём есть экран


#7 Всё про кроссплатформу

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

Максим Биянов: Xamarin подошёл к максимальной матюрности. К состоянию, когда все основные проблемы решены и началось экстенсивное развитие. Есть фишки, которые малозаметны. Сейчас внимание уделяется нативному iOS.

Александр Фёдоров: React Native это промежуточное решение между нативным и вебом. Нативное получается быстрее, веб медленнее. Что-то посередине это React Native. Наверно, самый большой плюс что он пишется на JS. JS-разработчиков много, вход в разработку быстрый. React тоже не очень сложный.

Артём Зайцев: Ключевое отличие Flutter от того же React или Xamarin то, что он имеет собственный движок под капотом. И не использует нативные элементы, а просто рисует такие же.

Роман Яцына: Кotlin Native в целом тот же самый Kotlin, просто зарестрикченный. Сейчас очень сложно найти человека, который согласился бы писать на Java. Многие прям уходят из своих компаний, потому что там нет Kotlin.

Александр Ефременков: Давайте начнём с того, что это С++. С++ не стоит изучать, если ты не хочешь копаться с тем, как аллоцируется память, как она работает, и пытаться вникнуть в близкую работу с железом.

React Native, Xamarin, PWA, QT, C++, Kotlin Native, Flutter Кроссплатформа достаточно общее слово, за которым кроется много разных технологий.

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





Мобильные разработчики пришли во Flutter, посмотрели на async/await и ужаснулись


#6 Асинхронность

Евгений Кот: Чтобы понимать стримы, нужно понимать, как сантехника работает.

Есть async/await, Future API, Stream API, есть метод Compute, есть даже RXDart. Как из этого многообразия понять, что из этого надо использовать, а что нет. Что делать со всей этой асинхронщиной, если вы пришли из мира iOS или Android. Почему изолят как пирожок с полки, и как Flutter обрабатывает асинхронные операции если Dart однопоточен.





Все виртуальные машины действительно на одно лицо


Слушать выпуск #5 Dart VM

Вячеслав Егоров: Начать можно с того, Dart VM название оно немножко неправильное. Правильно его называть Dart Runtime, потому что он не всегда из себя представляет виртуальную машину. Люди, которые представляют себе виртуальную машину, они представляют себе, что внутри какой-то байт-код исполняется. А более правильно, наверно, это все-таки называть Dart Runtime.

Вячеслав Егоров, разработчик Dart VM, рассказывает, почему Flutter написан на Dart, какую чёрную магию применяет Hot reload, в чем особенности Garbage collector. Про компиляцию из 90-х, прогретые функции и Flutter-веб. Как соотносятся изоляты в Dart и многопоточность, во что компилируется Flutter-приложение в релизной сборке и что у Flutter с реверс-инжинирингом.

Все выпуски Flutter Dev Podcast на Soundcloud
Подробнее..

Подробнее об обновленных правилах программы для разработчиков Google Play

08.04.2021 12:19:54 | Автор: admin

31 марта мы опубликовали обновленные правила программы для разработчиков Google Play. Изменения касаются разрешения на доступ ко всем хранящимся на мобильном устройстве файлам, неприемлемого контента (включая ненормативную лексику), азартных игр, а также игр, конкурсов и турниров с реальными денежными призами. Кроме того, мы добавили новые уточнения и примеры для уже существующих правил полный список изменений можно посмотреть в Центре правил. Все новые и существующие приложения должны быть приведены в соответствие с обновленными правилами до 5 мая 2021 г.

Конфиденциальность и безопасность пользователей имеют первостепенное значение для Google Play, поэтому мы постоянно работаем над нашими политиками и правилами. Джо Дэвис, менеджер Академии Google Play, объясняет новые правила в семиминутном видео (доступны субтитры на русском языке):

  • 0:45 All Files Access Permission

  • 1:30 Новостные приложения

  • 2:12 Пояснения для Personal & Sensitive User Data

  • 2:27 Пояснения для Families Ads & Monetization policies

  • 3:48 New Package (App) Visibility policy

Полный список изменений со ссылками на примеры можно посмотреть в Центре правил. Напоминаем, что все новые и существующие приложения должны быть приведены в соответствие с обновленными правилами до 5 мая 2021 г.

Дополнительный материал:

  • Developer Policy Center все правила Google Play и дополнительные материалы в одном месте. Для тех, кто предпочитает формат видео роликов, плейлист Google Play PolicyBytes.

  • Учебная программа о политиках и правилах Google Play на сайте Play Academy.

Подробнее..

Виртуальные машины А2 крупнейшие облачные образы с графическими процессорами NVIDIA A100 теперь доступны для всех

20.04.2021 12:16:22 | Автор: admin

Недавно, в нашем Google Cloud блоге, мы анонсировали, что в сервисе Compute Engine появились виртуальные машины A2 на базе графических процессоров NVIDIA Ampere A100 с тензорными ядрами. С их помощью пользователи смогут выполнятьмашинное обучениеивысокопроизводительные вычисленияна базе архитектуры NVIDIA CUDA, увеличивая рабочие нагрузки за меньшее время и цену.

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

Высочайшая производительность

Одна ВМ A2 поддерживает до 16графических процессоров NVIDIA A100. На сегодняшний день это самый производительный экземпляр графического процессора на одном узле среди всех конкурирующих решений от крупнейших поставщиков облачных услуг. В зависимости от масштабов рабочей нагрузкивы также можете выбрать виртуальные машины A2 с меньшим числом графических процессоров (1, 2, 4 и 8).

Конфигурации ВМ A2 доступные в сервисе Compute EngineКонфигурации ВМ A2 доступные в сервисе Compute Engine

Это позволяет исследователям, специалистам по обработке данных и разработчикам значительно увеличивать производительность масштабируемых рабочих нагрузок (например, машинное обучение, логический вывод и высокопроизводительные вычисления) на архитектуре CUDA. Семейство ВМ A2 на платформе Google Cloud Platform способно удовлетворить потребности самых требовательных приложений для высокопроизводительных вычислений, например при моделировании методами вычислительной гидродинамики вAltair ultraFluidX.

Для тех, кому нужны сверхпроизводительные системы, Google Cloud предлагает кластеры из тысяч графических процессоров для распределенного машинного обучения, а также оптимизированные библиотеки NCCL для горизонтального масштабирования. Версия ВМ с 16 графическими процессорами A100, объединенными через шинуNVIDIA NVLink, это уникальное предложение Google Cloud. Если вам нужно масштабировать требовательные рабочие нагрузки по вертикали, можно начать с одного графического процессора A100 и довести их число до 16 без настройки нескольких ВМ для машинного обучения на одном узле.

Новая ВМ A2-MegaGPU: 16 графических процессоров A100 со скоростью передачи данных 9,6 ТБ/с по интерфейсу NVIDIA NVLinkНовая ВМ A2-MegaGPU: 16 графических процессоров A100 со скоростью передачи данных 9,6 ТБ/с по интерфейсу NVIDIA NVLink

Чтобы удовлетворить потребности разных приложений, доступны и менее производительные конфигурации ВМ A2 с встроенным SSD-диском на 3ТБ, который ускоряет доставку данных в графический процессор. Так, графический процессор A100 в Google Cloud более чем в 10раз увеличивает скорость предварительного обучения модели BERT-Large по сравнению с NVIDIA V100 прошлого поколения. При этом в конфигурациях с числом графических процессоров от 8 до 16 наблюдается линейный рост производительности. Кроме того, разработчики могут использовать предварительно настроенное ПО в контейнерах из хранилища NVIDIANGCдля быстрого запуска экземпляров A100 в Compute Engine.

Отзывы пользователей

Мы стали предлагать ВМ A2 с графическими процессорами A100 нашим партнерам в июле 2020 года. Сегодня мы работаем со множеством организаций и помогаем им достигать новых высот в области машинного обучения, визуализации и высокопроизводительных вычислений. Вот что они говорят о виртуальных машинах А2:

КомпаниюDessaнедавно приобрел холдинг Square. Она занимается исследованиями в сфере ИИ и стала использовать ВМ A2 одной из первых. На базе ее экспериментов и инноваций Square разрабатывает персонализированные сервисы и умные инструменты для Cash App, которые с помощью ИИ помогают неспециалистампринимать более взвешенные финансовые решения.

"Благодаря Google Cloud мы получили необходимый контроль над своими процессами, говорит Кайл де Фрейтас, старший разработчик ПО в Dessa. Мы понимали, что предлагаемые в Compute Engine ВМ A2 на базе графических процессоровNVIDIA A100с тензорными ядрами способны радикально сократить время вычислений и значительно ускорить наши эксперименты. Процессоры NVIDIA A100, используемые в Google Cloud AI Platform, позволяют нам эффективно развивать инновации и воплощать в жизнь новые идеи для наших клиентов".

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

"Экземпляры A2 с новыми графическими процессорами NVIDIA A100 на платформе Google Cloud поднимают производительность на совершенно новый уровень при настройке моделей глубокого обучения. Мы легко перешли на них с прошлого поколения графических процессоров V100. Благодаря конфигурации ВМ A2-MegaGPU мы не только ускорили обучение более чем в два раза по сравнению с V100, но и получили возможность масштабировать по вертикали рабочие нагрузки с большими нейронными сетями в Google Cloud. Эти инновации помогут нам оптимизировать модели и повышать удобство использования сервисов Hyperconnect", говорит Ким Бемсу, исследователь по машинному обучению в Hyperconnect.

DeepMind(дочерняя компания Alphabet) это команда ученых, инженеров, специалистов по машинному обучению и других экспертов, которые развивают технологии ИИ.

"DeepMind занимается искусственным интеллектом. Наши исследователи проводят различные эксперименты в этой сфере с применением аппаратных ускорителей. Благодаря Google Cloud мы получили доступ к новому поколению графических процессоров NVIDIA, а виртуальная машина A2-MegaGPU-16G позволяет проводить обучение моделей быстрее, чем когда-либо. Мы с радостью продолжаем работать с платформой Google Cloud, которая поможет нам создавать будущую инфраструктуру машинного обучения и ИИ", Корай Кавукчуоглу (Koray Kavukcuoglu), вице-президент DeepMind по исследовательской деятельности.

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

"Наша основная миссия расширение возможностей компьютеров. В связи с этим мы сталкиваемся с двумя фундаментальными проблемами. Во-первых, современные алгоритмы ИИ требуют огромных вычислительных мощностей. Во-вторых, специализированное оборудование и ПО в этой области быстро меняются. И с этим нужно что-то делать. Процессоры A100 в GCP в четыре раза производительнее наших нынешних систем, и для их использования не требуется серьезно перерабатывать программный код. По большому счету достаточно минимальных изменений. Графический процессор A100 в Google Cloud позволяет значительно увеличить количество вычислений на доллар. Соответственно, мы можем проводить больше экспериментов и использовать больше данных", говорит Дирк Груневельд, старший разработчик Allen Institute for Artificial Intelligence.

OTOY это компания, которая занимается облачными графическими вычислениями. Она развивает инновационные технологии создания и доставки контента для средств массовой информации и индустрии развлечений.

"Уже около десяти лет мы расширяем границы возможного в сфере графической визуализации и облачных вычислений и стремимся устранить ограничения для художественного творчества. Благодаря процессорам NVIDIA A100 в Google Cloud с большим объемом видеопамяти и самым высоким рейтингом OctaneBench за всю историю мы первыми достигли уровня, когда художникам при реализации своих замыслов больше не нужно задумываться о сложности прорисовки. Система визуализации OctaneRender снизила стоимость спецэффектов. Она позволяет любому разработчику с графическим процессором NVIDIA создавать великолепную картинку кинематографического качества. Виртуальные машины с процессорами NVIDIA A100 в Google Cloud предоставляют пользователям OctaneRender и RNDR доступ к современным графическим процессорам NVIDIA, прежде доступным только для крупнейших голливудских студий", говорит Джулз Урбах, основатель и генеральный директор OTOY.

Цены и доступность графических процессоров

Экземпляры NVIDIA A100 теперь доступны в следующих регионах: us-central1, asia-southeast1 и europe-west4. В течение 2021года к ним добавятся дополнительные регионы. ВМ A2 в Compute Engine доступны по запросу со скидкой за вытесняемые экземпляры и обязательство по использованию, а также полностью поддерживаются в Google Kubernetes Engine (GKE), Cloud AI Platform и других сервисах Google Cloud. A100 предлагаются по цене всего 0,87доллара США за один графический процессор в вытесняемых ВМ A2. С полным прейскурантом можно ознакомитьсяздесь.

Начало работы

Вы можете быстро развернуть работу, приступить к обучению моделей и выполнять рабочие нагрузки с логическим выводом на графических процессорах NVIDIA A100 с помощьюобразов ВМ для глубокого обученияв доступных регионах. В этих образах собрано все необходимое ПО: драйверы, библиотеки NVIDIA CUDA-X AI и популярные фреймворки для ИИ, такие как TensorFlow и PyTorch. Оптимизированныеобразы TensorFlow Enterpriseтакже включают поддержку A100 для текущих и прошлых версий TensorFlow (1.15, 2.1 и 2.3). Вам не нужно беспокоиться об обновлении ПО, совместимости и настройке производительности всё это мы берем на себя. Наэтой страницеприводятся сведения о доступных в Google Cloud графических процессорах.


Напоминаем что при первой регистрации в Google Cloud: вам доступны бонусы на сумму 300 долларов США, а более 20 бесплатных продуктов доступны всегда. Подробнее поспециальной ссылке.

А так же выражаем благодарность за помощь в подготовке материала коллегам: Бхарат Партасарати, Крис Клебан и Звиад Кардава

Подробнее..

Перевод Ускоряем разработку для Cloud Run с помощью Cloud Code

13.10.2020 10:19:44 | Автор: admin

При разработке сервисов для полностью управляемой контейнерной платформы Cloud Run, вы, скорее всего, быстро устанете постоянно переключаться между редактором кода, терминалом и Google Cloud Console. Мало того, вам ещё придется по много раз, при каждом развертывании, выполнять одни и те же команды. Cloud Code это набор инструментов, включающий все необходимое для написания, отладки и развертывания облачных приложений. Он повышает эффективность разработки в Google Cloud за счет использования плагинов для популярных сред разработки, таких как VS Code и IntelliJ. С его помощью вы сможете легко заниматься разработкой в Cloud Run. Подробнее под катом.


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


Примечание от автора. На виртуальной конференции Google Cloud Next 2020 OnAir мы анонсировали несколько новых функций и сервисов, призванных ускорить процесс доставки и разработки приложений, а также платформу Cloud для модернизации приложений (Cloud Application Modernization Platform или CAMP).

Создание новых сервисов Cloud Run


На первый взгляд контейнеризация и бессерверные сервисы могут казаться чересчур сложными. Если вы только начинаете знакомиться с Cloud Run, обратите внимание на обновленный список примеров Cloud Run в Cloud Code. Примеры доступны на языках Java, NodeJS, Python, Go и .NET. Опираясь на них, вы сможете сразу приступить к написанию собственного кода с учетом всех рекомендаций.
Все примеры включают файл Dockerfile, чтобы вам не пришлось тратить время, разбираясь в конфигурациях контейнеров. Если вы переносите в Cloud Run существующий сервис, то, возможно, вы ещё не работали с файлами Dockerfile. Ничего страшного! В сервисе Cloud Code есть поддержка объектов Google Cloud Buildpack, позволяющих контейнеризовать сервис прямо в коде. Файл Dockerfile при этом не требуется. Cloud Code содержит все необходимое для развертывания вашего сервиса в Cloud Run.



Разработка и отладка сервисов Cloud Run в локальной среде


Прежде чем развернуть сервис в Google Cloud, вы, скорее всего, захотите попробовать его на своем компьютере, чтобы посмотреть, как он работает, внести необходимые правки и отладить ошибки. При разработке сервисы Cloud Run необходимо постоянно собирать и развертывать в облаке, чтобы тестировать изменения в репрезентативной среде Cloud Run. Отладить код можно и локально, подключив отладчик, однако, поскольку это осуществляется не на уровне всего контейнера, вам придется устанавливать инструменты локально. Запустить контейнер в локальной среде можно с помощью Docker, но команда, необходимая для этого, слишком длинна и не отражает особенности производственной среды.


В Cloud Code имеется эмулятор Cloud Run, позволяющий разрабатывать и отлаживать сервисы Cloud Run локально. Согласно исследованию, проведенному DevOps Research and Assessment (DORA), у команд, показавших высокую эффективность поставки ПО, сбои при внесении изменений случались в 7 раз реже, чем у менее эффективных команд. Благодаря возможности быстро выполнять итерацию кода локально и отлаживать его в репрезентативной среде, вы можете оперативно находить ошибки на ранних этапах разработки, а не во время непрерывной интеграции или, того хуже, в продакшене.


При запуске кода в эмуляторе Cloud Run можно включить режим просмотра. Каждый раз при сохранении файлов ваш сервис будет повторно развертываться в эмуляторе для непрерывной разработки.


Первый запуск Cloud Run Emulator:

Отладка сервисов Cloud Run с помощью Cloud Code осуществляется так же, как в привычной вам среде разработки. Выполните команду "Debug on Cloud Run Emulator" в среде VS Code (или выберите конфигурацию "Cloud Run: Run Locally" и выполните команду "Debug" в среде IntelliJ) и просто установите точки останова кода. Как только точка останова будет активирована в вашем контейнере, вы сможете переключаться между командами, наводить курсор на свойства переменных и проверять журналы из контейнера.


Отладка сервиса Cloud Run с помощью Cloud Code в VS Code и IntelliJ idea:


Развертывание сервиса в Cloud Run


После того как вы протестируете в локальной среде все изменения, внесенные в код для сервиса Cloud Run, останется создать контейнер и развернуть его в Cloud Run.


Развернуть сервис из среды разработки не составит никакого труда. Мы добавили все параметры, необходимые для настройки сервиса перед развертыванием. Когда вы нажмете "Развернуть", Cloud Code выполнит все требуемые команды, чтобы создать образ контейнера, развернуть его в Cloud Run и передать URL-адрес сервису.


Развертывание сервиса в Cloud Run:

Управление сервисами Cloud Run


Благодаря Cloud Code в VS Code можно просматривать журналы версий и сервисов одним нажатием. Эта функция была перенесена из Cloud Console в среду разработки, чтобы вам не приходилось постоянно переключаться. На странице просмотра отображаются именно те журналы, которые имеют отношение к версиям и сервисам, выбранным в проводнике Cloud Run.



Кроме того, в проводнике Cloud Run можно быстро найти и просмотреть сведения обо всех управляемых сервисах Cloud Run и сервисах Cloud Run для Anthos в нужном проекте. Там же можно легко узнать, какой процент трафика перенаправляется и сколько выделено ресурсов ЦП.


Cloud Run explorer в VS Code и IntelliJ


Нажав на версию правой кнопкой мыши, можно посмотреть URL-адрес сервиса. В Cloud Console можно проверить трафик или настроить его перенаправление между сервисами.


Начало работы


Приглашаем вас поработать с Cloud Code в Cloud Run, чтобы оптимизировать процессы развертывания сервисов и ведения журналов. Дополнительные сведения можно найти в документации по Cloud Run для сред разработки Visual Studio Code и JetBrains. Если вы ещё не работали с этими средами, для начала установите Visual Studio Code или IntelliJ.


Присоединяйтесь к Google Cloud Next OnAir


Также хотелось бы напомнить нашим читателям, что прямо сейчас проходит онлайн конференция Google Cloud Next OnAir EMEA для которой мы подготовили контент как для разработчиков, так и для архитекторов решений и руководителей.


Более подробно узнать о сессиях, спикерах и получить доступ к контенту можно бесплатно зарегистрировавшись на странице Next OnAir EMEA. Вместе с уникальным контентом, который будет представлен для Next OnAir EMEA вы также получите полный доступ к более чем 250 сессиям с глобальной части Google Cloud Next 20: OnAir.

Подробнее..

Перевод Как магия машинного обученияменяет нашу жизнь

05.04.2021 16:10:13 | Автор: admin

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

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

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

Работая в сфере технологий, вы посвящаете свою жизнь учебе. Глазом не успеешь моргнуть, как самое совершенное ПО моментально заменяется чем-то более продвинутым (хотя я все никак не могу отвыкнуть от старого доброго Vim).

Одно из интереснейших направлений в ИТ машинное обучение. Большинству из нас не рассказывали о нем в вузах (а у некоторых вообще не было уроков информатики), но скоро машинное обучение станет повсеместным, и оно изменит процесс разработки ПО во всех областях. Неудивительно, что меня часто спрашивают, с чего лучше начать изучение машинного обучения.

Обычно я советую обратиться к таким ресурсам, как курс компании Google под названиемMachine Learning Crash Course, а также книгаПрикладное машинное обучение с помощью Scikit-Learn, Keras и TensorFlowи курс на сайте CourseraМашинное обучение(автор: Andrew Ng), который нацелен не только на теоретические основы, но и на практику.

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

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

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

Внедрение машинного обучения в свои проекты

Умный архив семейных видео

  • Вы создадите: архив, который сможет предоставлять видео по фразе или объекту из записи (например, "день рождения", "велосипед" или "видеоигры").

  • Вы узнаете:

    • как применять машинное обучение в сортировке и поиске сложных типов данных;

    • как использовать Video Intelligence API;

    • как проектировать приложение, в основе которого лежит машинное обучение (в этом помогут инструментыFlutter для создания клиентской части,Firebase для написания кода без использования серверов, и поиск как сервис, предоставленныйAlgolia).

Бот-модератор в Discord

  • Вы создадите: бот для чат-платформыDiscord,который помогает находить оскорбительные и нецензурные сообщения, а также спам.

  • Вы узнаете:

    • как использоватьPerspective APIдля анализа текста;

    • как применять машинное обучение в приложениях для чата;

    • как выбирать, нужно ли машинное обучение в сложных и неоднозначных ситуациях.

  • Вы создадите: блокнот Jupyter, который отслеживает подачу и траекторию теннисного мяча (может также пригодиться в гольфе и баскетболе), а также анализирует данные, чтобы дать полезные советы. Для этого перейдите вQwiklabs.

  • Вы узнаете:

    • как выполнять сложное машинное обучение с помощью небольших наборов данных;

    • как комбинировать простые математические вычисления с распознаванием поз для понимания движений человека;

    • как использовать Video Intelligence API;

    • как работать c AutoML Vision.

Умный игровой мир с технологией обработки естественного языка

илиСоздание приложений на основе языка с помощью семантического машинного обучения

  • Вы создадите:

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

  • Вы узнаете:

    • как использовать одну из самых полезных методик обработки естественного языка встраивание предложений;

    • как реализовывать семантический поиск текста;

    • как разделять текст на кластеры;

    • как добавлять простые чат-боты;

    • как выполнять эти действия в Google Таблице.

Преобразование PDF-документа в аудиокнигу

  • Вы создадите: код, который преобразует PDF-файлы в аудиокниги формата MP3.

  • Вы узнаете:

    • как извлекать текст из PDF-файлов при помощи Vision API;

    • как озвучивать текст при помощи Text-to-Speech API;

    • как использовать математические вычисления для разделения макетов документа.

Перевод и озвучивание видео с помощью машинного обучения

  • Вы создадите: код, который автоматически преобразовывает речь из видео в текст, а затем переводит и озвучивает его.

  • Вы узнаете:

    • как совмещать технологии распознавания, перевода и синтеза речи;

    • как улучшать качество перевода и преобразования речи в текст;

    • как работать с видео и аудио на языке Python.

Создание рецептов выпечки с помощью ИИ

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

  • Вы узнаете:

    • как создавать модели машинного обучения в AutoML Tables с помощью табличных данных без написания кода;

    • как определять причину решений модели с помощью функций.

Создание модели машинного обучения в браузере без написания кода

  • Вы создадите: быструю модель машинного обучения, которая распознает позы, объекты и звуки.

  • Вы узнаете:

    • что нужно, чтобы создать простую модель машинного обучения без написания кода;

    • как с помощью инструмента "Обучаемая машина" создать быструю модель, которую можно запустить в браузере.

Создание образов с помощью ИИ

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

  • Вы узнаете:

    • как использовать Product Search и Vision API;

    • как проектировать приложения на основе машинного обучения с помощью React и Firebase.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru