Ускоряем Android-приложения с помощью Baseline Profiles
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
👍1
Утечка памяти: детективная история с Xcode
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
❤1
Peristyle - простое приложение-менеджер обоев для Android, созданное с использованием библиотек Material и рекомендаций по дизайну. Фичи - сканирование каталогов, динамическое применение фильтров размытия и цвета к любым обоям, автоматическая смена обоев, простая, но красивая анимация с надлежащей оптимизацией, поддержка биометрической блокировки, Material You дизайн с Edge to Edge.
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
🔥1
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Эволюция презентационных паттернов SwiftUI•
(iOS En) Custom Keyboards SwiftUI•
(iOS En) SwiftUI - File / Folder & Architecture Setup for New Projects•
(iOS En) iOS 18 SystemFormatStyle and TimeDataSource•
(iOS En) SwiftUI Responsive UI Design - Adaptive Layout•
(And Ru) «Ленивый граф», или Как мы оптимизировали старт приложения•
(And Ru) В сетях сетевого слоя•
(And En) Видео droidcon Berlin 24•
(And En) Compose animations - Android Developers Backstage•
(And En) Navigation Compose meet Type Safety•
(And En) Flow layouts - Jetpack Compose Tips•
(And En) Full Guide to Deep Linking With Type-Safe Jetpack Compose Navigation•
(And En) Upload a File With Progress Bar Using Ktor•
(And En) Building Responsive Applications with RxKotlin•
(Crs Ru) Многомодульное приложение на Flutter•
(Crs Ru) Архитектура white-label на Flutter: тонем в абстракциях•
(Crs En) Cleaner Flutter code with Dart 3•
(Dev Ru) Junior-разработчики — обучение программированию, тестовое задание•
(Dev Ru) Аутсорсинг в IT: взгляд изнутри•
(Dev Ru) Мобильные приложения — кто и как их создаёт?•
(Dev Ru) Тестовый скрининг с карьерным ментором + Какие софт-скиллы необходимы разработчику•
(Dev En) Productivity as a Developer – Full Course#ios #android #mobile #video
Джейлбрейк с помощью ссылки: удаленное выполнение кода на iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
AnimatedImage - высокопроизводительная библиотека для анимационных изображений. AnimatedImage предварительно декодирует и кэширует все кадры анимации. Оптимизирует количество кадров отрисовки, исходя из размера рисунка и временной метки отрисовки, чтобы размер кэша не стал слишком большим. Библиотека разработана таким образом, чтобы вся обработка не зависела от MainActor. Поддерживает APNG, GIF, WebP. Умеет синхронизировать несколько изображений.
AnimatedImage на GitHub: https://github.com/noppefoxwolf/AnimatedImage
Платформа: iOS
⭐️: 55
AnimatedImage на GitHub: https://github.com/noppefoxwolf/AnimatedImage
Платформа: iOS
⭐️: 55
Пишем простенький DI для Android приложения
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
Статья: https://habr.com/ru/articles/843258/
Платформа: Android
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
Статья: https://habr.com/ru/articles/843258/
Платформа: Android
Вашей компании нужны junior разработчики
В последнее время в BigTech нужны только элитные отряды штатных разработчиков, которые могут «сразу приступить к работе» над большой инициативой (зачастую связанной с ИИ). Уже не раз говорилось о том, что ИИ полностью заменит junior разработчиков. Джуны, в конце концов, это «кодовые обезьянки», которых легко заменить большими языковыми моделями.
Однако так мы упускаем из виду то, зачем нам нужны junior сотрудники. Обучение джунов становится собственным множителем силы для масштабных инноваций. Дело не в дополнительной рабочей силе, а в психологически безопасной культуре, которая ценит преподавание и обучение, а также в инновациях, которые это открывает.
Статья: https://apptractor.ru/info/articles/vashey-kompanii-nuzhny-junior-razrabotchiki.html
Платформа: разработка
В последнее время в BigTech нужны только элитные отряды штатных разработчиков, которые могут «сразу приступить к работе» над большой инициативой (зачастую связанной с ИИ). Уже не раз говорилось о том, что ИИ полностью заменит junior разработчиков. Джуны, в конце концов, это «кодовые обезьянки», которых легко заменить большими языковыми моделями.
Однако так мы упускаем из виду то, зачем нам нужны junior сотрудники. Обучение джунов становится собственным множителем силы для масштабных инноваций. Дело не в дополнительной рабочей силе, а в психологически безопасной культуре, которая ценит преподавание и обучение, а также в инновациях, которые это открывает.
Статья: https://apptractor.ru/info/articles/vashey-kompanii-nuzhny-junior-razrabotchiki.html
Платформа: разработка
❤1
Measure - это инструмент с открытым исходным кодом для мониторинга мобильных приложений.
Что умеет:
• Автоматически фиксирует аварии и ANR
• Отслеживает такие показатели, как время запуска, количество крешей и размер приложений
• Получает скриншоты с отчетами об исключениях
• Дает полную хронологию событий в сессиях с ошибками с автоматическим отслеживанием пользовательских кликов, событий навигации, http-вызовов, использования процессора, памяти и т.д. для более глубокого контекста
• Отслеживает пользовательские события с помощью дополнительных атрибутов
Measure на GitHub: https://github.com/measure-sh/measure
Платформа: аналитика/Android
⭐️: 280
Что умеет:
• Автоматически фиксирует аварии и ANR
• Отслеживает такие показатели, как время запуска, количество крешей и размер приложений
• Получает скриншоты с отчетами об исключениях
• Дает полную хронологию событий в сессиях с ошибками с автоматическим отслеживанием пользовательских кликов, событий навигации, http-вызовов, использования процессора, памяти и т.д. для более глубокого контекста
• Отслеживает пользовательские события с помощью дополнительных атрибутов
Measure на GitHub: https://github.com/measure-sh/measure
Платформа: аналитика/Android
⭐️: 280
Шаблоны проектирования для SwiftUI
Шаблоны проектирования путают умы людей, работающих со SwiftUI. Они задаются такими вопросами, как «Какой паттерн больше подходит для SwiftUI?» или «Нужно ли вообще использовать шаблон?». Apple также предоставила некоторую информацию об использовании паттернов для SwiftUI на WWDC. Давайте рассмотрим некоторые паттерны, которые можно применить в SwiftUI.
1. MVVM (Model-View-ViewModel)
2. Координатор
3. Clean Swift (VIP)
4. MV (Model-View)
Статья: https://apptractor.ru/info/articles/shablony-proektirovaniya-dlya-swiftui.html
Платформа: iOS
Шаблоны проектирования путают умы людей, работающих со SwiftUI. Они задаются такими вопросами, как «Какой паттерн больше подходит для SwiftUI?» или «Нужно ли вообще использовать шаблон?». Apple также предоставила некоторую информацию об использовании паттернов для SwiftUI на WWDC. Давайте рассмотрим некоторые паттерны, которые можно применить в SwiftUI.
1. MVVM (Model-View-ViewModel)
2. Координатор
3. Clean Swift (VIP)
4. MV (Model-View)
Статья: https://apptractor.ru/info/articles/shablony-proektirovaniya-dlya-swiftui.html
Платформа: iOS
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Заблуждение UseCase: что нужно знать Android-разработчикам
Если вы давно работаете в мире Android-разработки, то наверняка слышали о UseCase. Их часто представляют как святой грааль «чистой архитектуры». UseCase обещают отделить бизнес-логику от слоев представления и данных, делая ваш код более модульным, многократно используемым и тестируемым. Но вот в чем загвоздка: UseCase не всегда являются решением.
На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, а это именно то, чего пытается избежать Чистая Архитектура. В этой статье мы развеем мифы, связанные с UseCase, и обсудим, в каких случаях они необходимы, а в каких — просто пустая трата времени. Если вы являетесь разработчиком Android и думаете, не приносит ли вам этот паттерн больше вреда, чем пользы, то эта статья для вас.
Статья: https://apptractor.ru/info/articles/zabluzhdenie-usecase-chto-nuzhno-znat-android-razrabotchikam.html
Платформа: Android
Если вы давно работаете в мире Android-разработки, то наверняка слышали о UseCase. Их часто представляют как святой грааль «чистой архитектуры». UseCase обещают отделить бизнес-логику от слоев представления и данных, делая ваш код более модульным, многократно используемым и тестируемым. Но вот в чем загвоздка: UseCase не всегда являются решением.
На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, а это именно то, чего пытается избежать Чистая Архитектура. В этой статье мы развеем мифы, связанные с UseCase, и обсудим, в каких случаях они необходимы, а в каких — просто пустая трата времени. Если вы являетесь разработчиком Android и думаете, не приносит ли вам этот паттерн больше вреда, чем пользы, то эта статья для вас.
Статья: https://apptractor.ru/info/articles/zabluzhdenie-usecase-chto-nuzhno-znat-android-razrabotchikam.html
Платформа: Android
Нативный Swift на Android: установка, компиляция, запуск и тестирование
Возможно, вы уже знакомы с Skip как с инструментом для переноса ваших Swift-приложений на Android. В Skip используется новый подход к транспиляции, когда мы интегрируемся с системой сборки Xcode для преобразования вашего Swift-кода в Kotlin. Это позволяет нам создавать Android-библиотеку для каждой сборки вашего пакета Swift или запускать Android-версию вашего приложения SwiftUI при каждом запуске Xcode.
И вот мы с радостью объявляем о первом технологическом превью нативного инструментария и драйвера Swift для Android! Этот набор инструментов позволяет разработчикам создавать и запускать исполняемые файлы Swift и тестовые примеры на подключенном устройстве или эмуляторе Android.
Статья: https://apptractor.ru/info/articles/nativnyy-swift-na-android-ustanovka-kompilyatsiya-zapusk-i-testirovanie.html
Платформа: кроссплатформа
Возможно, вы уже знакомы с Skip как с инструментом для переноса ваших Swift-приложений на Android. В Skip используется новый подход к транспиляции, когда мы интегрируемся с системой сборки Xcode для преобразования вашего Swift-кода в Kotlin. Это позволяет нам создавать Android-библиотеку для каждой сборки вашего пакета Swift или запускать Android-версию вашего приложения SwiftUI при каждом запуске Xcode.
И вот мы с радостью объявляем о первом технологическом превью нативного инструментария и драйвера Swift для Android! Этот набор инструментов позволяет разработчикам создавать и запускать исполняемые файлы Swift и тестовые примеры на подключенном устройстве или эмуляторе Android.
Статья: https://apptractor.ru/info/articles/nativnyy-swift-na-android-ustanovka-kompilyatsiya-zapusk-i-testirovanie.html
Платформа: кроссплатформа
🙊4🤡2🔥1
LinkNavigator - это библиотека, которая помогает вам легко перемещаться между страницами в SwiftUI. LinkNavigator предоставляет интуитивно понятный синтаксис для навигации по страницам с помощью выражений, похожих на URL-пути. Вы можете легко перейти на любую страницу с помощью обработки глубоких ссылок. При переходе на страницу можно вводить параметры.
LinkNavigator разработан для использования в однонаправленной архитектуре, такой MVI или The Composable Architecture от pointfreeco, но его можно использовать и в других архитектурах.
LinkNavigator на GitHub: https://github.com/forXifLess/LinkNavigator
Платформа: iOS
⭐️: 352
LinkNavigator разработан для использования в однонаправленной архитектуре, такой MVI или The Composable Architecture от pointfreeco, но его можно использовать и в других архитектурах.
LinkNavigator на GitHub: https://github.com/forXifLess/LinkNavigator
Платформа: iOS
⭐️: 352
Gradle Convention Plugins: как облегчить себе жизнь и уменьшить boilerplate в gradle-файлах
Я Дима Котиков, ведущий android-разработчик в Т-Банке. Работаю в команде приложения Долями. Разработкой под Android начал увлекаться в 2020 году, а потом хобби переросло в работу. Люблю разбираться в технологиях, разрабатывать под Android и KMP и латте на фундучном молоке :)
Я расскажу о том, как облегчить работу с Gradle с использованием Gradle Convention Plugins. Всю информацию я разбил на серию статей для удобства. Они будут полезны всем, кто пользуется Gradle в качестве сборщика проектов. В первой части поговорим о проблеме с build.gradle-файлами и сделаем начальную настройку для написания Gradle Convention Plugins.
Статья: https://habr.com/ru/companies/tbank/articles/843648/
Платформа: Android
Я Дима Котиков, ведущий android-разработчик в Т-Банке. Работаю в команде приложения Долями. Разработкой под Android начал увлекаться в 2020 году, а потом хобби переросло в работу. Люблю разбираться в технологиях, разрабатывать под Android и KMP и латте на фундучном молоке :)
Я расскажу о том, как облегчить работу с Gradle с использованием Gradle Convention Plugins. Всю информацию я разбил на серию статей для удобства. Они будут полезны всем, кто пользуется Gradle в качестве сборщика проектов. В первой части поговорим о проблеме с build.gradle-файлами и сделаем начальную настройку для написания Gradle Convention Plugins.
Статья: https://habr.com/ru/companies/tbank/articles/843648/
Платформа: Android
👍1
Использование трейтов для аннотирования и настройки поведения тестов
Трейты (признки, типажи, traits) позволяют настраивать или аннотировать тесты с помощью фреймворка Swift Testing, анонсированного на WWDC 2024. Они также позволяют настраивать общее поведение, например условия, оцениваемые в рантайме, для пропуска определенных тестов.
Статья: https://apptractor.ru/info/articles/ispolzovanie-treytov-dlya-annotirovaniya-i-nastroyki-povedeniya-testov.html
Платформа: iOS
Трейты (признки, типажи, traits) позволяют настраивать или аннотировать тесты с помощью фреймворка Swift Testing, анонсированного на WWDC 2024. Они также позволяют настраивать общее поведение, например условия, оцениваемые в рантайме, для пропуска определенных тестов.
Статья: https://apptractor.ru/info/articles/ispolzovanie-treytov-dlya-annotirovaniya-i-nastroyki-povedeniya-testov.html
Платформа: iOS
Accrescent - это приватный и безопасный магазин приложений для Android, созданный с учетом современных требований. Его цель - обеспечить удобную платформу для разработчиков и приятный пользовательский опыт, соблюдая при этом современные правила безопасности и конфиденциальности, а также предоставляя надежные гарантии достоверности установленных приложений. Это достигается за счет следующих возможностей:
• Привязка ключа подписи приложений
• Подпись метаданных репозиториев
• Автоматические, непривилегированные обновления (Android 12+)
• Первоклассная поддержка разделенных APK для разных архитектур, экранов и т.п.
• Отсутствие подписания APK магазином
• Осознанный контроль качества предоставляемых приложений
• Для установки приложений не требуется учетная запись
Accrescent на GitHub: https://github.com/accrescent/accrescent
Платформа: Android
⭐️: 965
• Привязка ключа подписи приложений
• Подпись метаданных репозиториев
• Автоматические, непривилегированные обновления (Android 12+)
• Первоклассная поддержка разделенных APK для разных архитектур, экранов и т.п.
• Отсутствие подписания APK магазином
• Осознанный контроль качества предоставляемых приложений
• Для установки приложений не требуется учетная запись
Accrescent на GitHub: https://github.com/accrescent/accrescent
Платформа: Android
⭐️: 965
🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Создаем мерцающий текст в Jetpack Compose
В этой статье мы создадим потрясающую анимацию мерцающего текста в Jetpack Compose, идеально подходящую для минималистичного загрузчика.
Статья: https://apptractor.ru/info/articles/sozdaem-mertsayuschiy-tekst-v-jetpack-compose.html
Платформа: Android
В этой статье мы создадим потрясающую анимацию мерцающего текста в Jetpack Compose, идеально подходящую для минималистичного загрузчика.
Статья: https://apptractor.ru/info/articles/sozdaem-mertsayuschiy-tekst-v-jetpack-compose.html
Платформа: Android
Анонс Swift 6
Мы рады объявить об общей доступности Swift 6. Это новый крупный выпуск, который расширяет Swift на большее количество платформ и областей.
Многие знают Swift как язык для разработки приложений, ведь в App Store уже миллион приложений. Но Swift подходит не только для приложений. Безопасность, скорость и доступность Swift делают его отличным выбором для многих других областей применения, включая библиотеки, интернет-сервисы, а также наиболее критичный к производительности и безопасности код.
Swift 6 стал еще более масштабным благодаря новым возможностям низкоуровневого программирования, встроенному подмножеству языка Swift, расширенной поддержке Linux и Windows, новым кроссплатформенным API, включая новую библиотеку Swift Testing, и многим другим.
Статья: https://www.swift.org/blog/announcing-swift-6/
Платформа: iOS
Мы рады объявить об общей доступности Swift 6. Это новый крупный выпуск, который расширяет Swift на большее количество платформ и областей.
Многие знают Swift как язык для разработки приложений, ведь в App Store уже миллион приложений. Но Swift подходит не только для приложений. Безопасность, скорость и доступность Swift делают его отличным выбором для многих других областей применения, включая библиотеки, интернет-сервисы, а также наиболее критичный к производительности и безопасности код.
Swift 6 стал еще более масштабным благодаря новым возможностям низкоуровневого программирования, встроенному подмножеству языка Swift, расширенной поддержке Linux и Windows, новым кроссплатформенным API, включая новую библиотеку Swift Testing, и многим другим.
Статья: https://www.swift.org/blog/announcing-swift-6/
Платформа: iOS
Swift.org
Announcing Swift 6
We’re delighted to announce the general availability of Swift 6. This is a major new release that expands Swift to more platforms and domains.
❤1
AppState - это пакет Swift, который упрощает управление состоянием приложения в потокобезопасном, безопасном для типов и удобном для SwiftUI виде. Благодаря наличию специальных типов struct для управления состоянием, AppState обеспечивает простой и скоординированный доступ к этому состоянию во всем приложении. Кроме того, в пакет встроены механизмы протоколирования для облегчения отладки и отслеживания ошибок. В пакете AppState также есть система кэша для постоянного хранения и извлечения любых данных в любой момент времени.
AppState на GitHub: https://github.com/0xLeif/AppState
Платформа: iOS
⭐️: 66
AppState на GitHub: https://github.com/0xLeif/AppState
Платформа: iOS
⭐️: 66
👍1🤡1
Создание плагинов и переиспользуемых частей в .gradle.kts-файлах и Kotlin extension-функциях
На связи Дима Котиков, и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить Boilerplate в gradle-файлах. В первой части поговорили о том, как подготовиться к созданию модулей для Gradle Convention Plugin. Двигаемся дальше!
Статья: https://habr.com/ru/companies/tbank/articles/843662/
Платформа: Android
На связи Дима Котиков, и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить Boilerplate в gradle-файлах. В первой части поговорили о том, как подготовиться к созданию модулей для Gradle Convention Plugin. Двигаемся дальше!
Статья: https://habr.com/ru/companies/tbank/articles/843662/
Платформа: Android
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS En) Let's Create Chips UI With iOS 18 APIs•
(iOS En) So, Let's create a Splash Screen | SwiftUI•
(iOS En) Discover 3 new features of Xcode 16•
(iOS En) SwiftData Previews: PreviewModifier in SwiftUI (iOS 18)•
(iOS En) Color Mixing in iOS 18•
(iOS En) Enhance App UI Animations with these 4 Modifiers•
(And Ru) Заработок на Open Source. Decompose. Будущее KMP. Аркадий Иванов•
(And Ru) Бессмертное приложение•
(And Ru) Укрощаем UDF state-based архитектуры. Реальные кейсы в больших приложениях•
(And En) Complement your media editing pipeline with Jetpack Media3•
(And En) Android 15 Launch, a special guest spotlight, and more - Google Developer News September 2024•
(And En) The ONLY Correct Way to Load Initial Data In Your Android App?•
(And En) Save User Credentials With the Google Credential Manager - Android Studio Tutorial•
(And En) Overcoming Unsecurities in WebViews•
(And En) Beyond The Success Of Kotlin•
(Crs Ru) Flutter Dev Podcast #47: CrossConf Awards•
(Dev Ru) Грейд в IT•
(Dev Ru) Как устроен Yandex Mobile Ads SDK•
(Dev Ru) Паттерны SDUI•
(Dev Ru) Почему мы продолжаем срывать сроки проектов•
(Dev Ru) Какая JVM лучшее всех? Java, JVM Architecture, GraalVM, HotSpot JVM•
(Dev En) How Optimizations made Mario 64 SLOWER•
(Dev En) Securing API Servers Course#ios #android #mobile #video