Помните про мужика в середине?
Давайте представим, что нам нужно передать секрет от одного приложения к другому так, чтобы его никто не перехватил
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥23⚡4🍓4❤3
🍏 Эко-френдли код
Почему какое-то приложение жрет батарейку больше остальных?
Потому что там много анимаций, а в бэкграунде запускается майнер? Возможно, но есть более физическое объяснение
💡 Например, сетевые запросы напрямую влияют на расход батареи
Чтобы выполнить запрос к бэку, нужно вывести Wi-Fi-модуль из сна➡️ подать на него напряжение ➡️ сначала отправить байты в интернет с помощью излучения радиоволн ➡️ повисеть какое-то время в режиме ожидания ответных радиоволн
То же самое с Bluetooth/NFC/динамиками/датчиками — для передачи информации нужно потратить энергию
При этом теоретически важно не только количество передаваемой информации в физический мир, но и частота
Например, энергоэффективнее отправить 10 запросов в бэкенд параллельно, чем последовательно — ведь так мы быстрее позволим Wi-Fi платке вернуться в режим сна
Но в реальном мире такими микрооптимизациями занимается в лучшем случае ОС или драйвер, нам же достаточно описать, откуда и куда перекладывать джейсончики
@dolgo_polo_dev
Почему какое-то приложение жрет батарейку больше остальных?
Потому что там много анимаций, а в бэкграунде запускается майнер? Возможно, но есть более физическое объяснение
Чтобы выполнить запрос к бэку, нужно вывести Wi-Fi-модуль из сна
То же самое с Bluetooth/NFC/динамиками/датчиками — для передачи информации нужно потратить энергию
При этом теоретически важно не только количество передаваемой информации в физический мир, но и частота
Например, энергоэффективнее отправить 10 запросов в бэкенд параллельно, чем последовательно — ведь так мы быстрее позволим Wi-Fi платке вернуться в режим сна
Но в реальном мире такими микрооптимизациями занимается в лучшем случае ОС или драйвер, нам же достаточно описать, откуда и куда перекладывать джейсончики
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🍓10👍1
Купил себе мини-пк, так как прошлый домашний ноут умер. Пользуюсь полгода, делюсь впечатлениями
Задачи у него такие:
а) это эстетично
б) это практично — иногда кидаю его с собой в портфель в поездки, весит чуть больше блока питания от ноутбука
в) удобно с подъемным столом — не нужно ничего придумывать, просто положил под монитор
Со всеми этими задачами отлично справляется встроенка AMD 680M — не шумит, не греется выше нормы, не фризит
Если вы геймер, то судя по тестам из интернетов можно взять MacMini на M4 за 70-80к и комфортно играть на нем даже в киберпанк
Итого — все мои потребности закрыл на
Думаю, со временем все не_игровые пк перейдут в такой формат. Коробки размером с пылесос больше не имеют смысла, но пока они чуть дешевле
А в идеальном мире домашние компы заменят телефоны, которые с помощью внешнего монитора и type-c будут превращаться в полноценный пк. Надеюсь, лет через 5-10 мы окажемся в этой точке
Минусы и характеристики моей коробки скину в комменты👇
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍8
Пользователь нажимает на иконку
И тут начинается треш и угар — в ближайшие 300мс случится больше интересного, чем в фильмах Marvel за последние 5 лет
Пошло поехало:
фух, кончили. наконец-то можно вывести "Ваше приложение устарело, пожалуйста, обновите версию"
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
😁57❤6👍4😱4
#рекомендация
@mobile_appsec_world — один из крупнейших каналов про безопасность мобильных приложений
если вдруг не подписаны, то вот что вы пропускаете:
🔵 Как отключить SSL Pinning для дебага?
🔵 Новости про использование AI в реверс-инжиниринге
🔵 Анонсы конференций и вебинаров про мобильное ИБ
🔵 Ссылки на полезные тулзы для анализа apk
и все это ради благой цели — чтоб в вашемсыре аппе было меньше дырок
@mobile_appsec_world — один из крупнейших каналов про безопасность мобильных приложений
если вдруг не подписаны, то вот что вы пропускаете:
и все это ради благой цели — чтоб в вашем
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3❤2
Google предлагает:
Если этот проект не забросят в долгий ящик, то в ближайшие годы правила игры заметно поменяются
Как сейчас:
Как станет:
Почему эта идея имеет смысл:
сейчас у приложения и подключенных к нему библиотек полный коммунизм — всё общее (файлы, shared-preferences, медиа-контент...)
соответсвенно, библиотеки могут сливать данные пользователя без вашего ведома
Есть и обратная сторона:
В первую очередь гугл раскатывает SDK Runtime с Android 14 для рекламных библиотек, а будущее зависит от фидбэка разработчиков
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯20🔥8👍4🤔3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
👀 Зачем роверу глаза?
Вообще-то по образованию я не смузи-вайб-разработчик, а суровый хард-инженер-робототехник — могу передаточное число редуктора в уме посчитать, сделать инженерный чертеж фланца по ГОСТу, отличить дырку от отверстия
Поэтому был рад, когда пригласили на конференцию для технарей "Чинители прекрасного". Сейчас Яндекс создает роверов, умные колонки и другое железо, поэтому логично, что команда решила провести ивент для инженеров
Из плюсов:
➕ не было докладов про очередные 10 тысяч способов оптимизировать Compose
➕ были интересные доклады о том, чем занимаются инженеры в компании
Расскажу пару запоминающихся фактов
🎲 Кубик Рубика
С большой вероятностью вы видели статью про него на хабре — удалось увидеть в живую)
Точнее в живую успеваешь заметить только два состояния до/после, сам процесс сборки занимает менее 200мс
❄ Охлаждение серверов
Тут как в мобилке — можно потратить полгода на микрооптимизации, которые дадут улучшение всего в 5%, но на масштабах бигтеха даже такой результат многократно окупится
Для охлаждения серверов нужен очень сильный поток воздуха, а значит большие затраты на электроэнергию для вентиляторов
Поэтому в Яндексе проектируют свои коробки для размещения серверного оборудования
На ивенте рассказывали, как экспериментальным путем получилось сделать супер-дешевый пластиковый рассекатель воздуха (пластинка сдырками отверстиями определенной формы), который повышает эффективность охлаждения оперативной памяти
📦 Ровер-доставщик
🔵 если у доставщика мигает красный флажок, значит он находится в режиме ручного управления, помогать ему не надо)
🔵 роботы долго стоят на светофорах — это фича. дело в том, что робот не может определить, как долго еще будет гореть зеленый. поэтому просто зеленого сигнала не достаточно — ровер будет стоять, пока не увидет переключения с красного на зеленый
🔵 у робота-доставщика очень милая мордочка, на которой есть глаза. изначально эти глаза были фарами, но в последних версиях ровера используются новые камеры с ночным виденьем, а глаза остались от предыдущих моделей
🖥 Еще были доклады про
🔵 ДНК секвенатор и реверс-инжиниринг био-чипа
🔵 промышленные манипуляторы Yandex Robotics
🔵 световые мечи из звездных войн
🔵 и стенд со всеми версиями Алисы в разобранном виде
@dolgo_polo_dev
Вообще-то по образованию я не смузи-вайб-разработчик, а суровый хард-инженер-робототехник — могу передаточное число редуктора в уме посчитать, сделать инженерный чертеж фланца по ГОСТу, отличить дырку от отверстия
Поэтому был рад, когда пригласили на конференцию для технарей "Чинители прекрасного". Сейчас Яндекс создает роверов, умные колонки и другое железо, поэтому логично, что команда решила провести ивент для инженеров
Из плюсов:
Расскажу пару запоминающихся фактов
С большой вероятностью вы видели статью про него на хабре — удалось увидеть в живую)
Точнее в живую успеваешь заметить только два состояния до/после, сам процесс сборки занимает менее 200мс
Тут как в мобилке — можно потратить полгода на микрооптимизации, которые дадут улучшение всего в 5%, но на масштабах бигтеха даже такой результат многократно окупится
Для охлаждения серверов нужен очень сильный поток воздуха, а значит большие затраты на электроэнергию для вентиляторов
Поэтому в Яндексе проектируют свои коробки для размещения серверного оборудования
На ивенте рассказывали, как экспериментальным путем получилось сделать супер-дешевый пластиковый рассекатель воздуха (пластинка с
📦 Ровер-доставщик
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤1👍1😁1
Или архитектура SDK-first (отсылка на Mobile-first, который пришел на замену Desktop-first)
Постепенно все движется к тому, что большую часть кода можно будет сразу писать в виде sdk. Или хотя бы учитывать высокую вероятность выноса кода в sdk при проектировании модуля
Вижу несколько причин
Бигтех-копании нужно приложение и для продажи кофе, и для аренды электросамокатов, и для внутренних сотрудников
Плюс компаниям нравится переплетать эти стартапы между собой — продавать кефир в приложении такси
Поэтому нужно допускать, что в любую секунду функционал одного приложения понадобится в другом
И намного дешевле не писать новые приложения-эксперименты с нуля, а собирать их из одинакового набора готовых библиотек
Чем меньший процент кода написан ИИ, тем более приложение стабильно и поддерживаемо
Возможно, все придет к тому, что живые разработчики будут писать стабильные библиотеки с кучей документации и примерами, а ИИ агенты будут изучать их и собирать из этих библиотек приложения
Хороший пример — сетевой клиент OkHttp. ИИ не сможет написать его полноценный аналог, но при этом за пару минут соберет на базе него работающий клиент-серверный фича-модуль
За последние годы все ушли от монолита в сторону многомодульных приложений, научились шарить код между различными частями приложения
Следующий логичный этап — шарить код за пределами одного приложения (и одной платформы)
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20✍11🍓5
Поймал себя на мысли, что перестал пользоваться google поиском
Хотя пару лет назад это казалось невозможным
а гугл поиск зачем?
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡24👍13🤔9👎2✍1
В одном из постов предположил, что в идеальном мире офисный компьютер и телефон должны стать одним устройством
А может Android уже можно использовать как компьютер?
Чтобы использовать Android OS в качестве Desktop OS нужно решить пару проблем:
На данный момент существует два пути
К этой категории относятся полноценные адаптации AOSP под desktop-систему
Android-x86, PrimeOS, Bliss OS... — все это нативные операционные системы, их можно установить на пк/ноутбук и использовать независимо от смартфтона
(кто их использует как основную систему на ежедневной основе не могу придумать)
Тут другой подход — речь не про установку Android как системы на пк, а про специальный режим трансляции экрана телефона на внешний монитор
Работает это так:
Но такой режим пока есть не везде:
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🍓2🍾1
У Samsung OneUI прошивок есть фича — Samsung Edge Panel
Это такая шторка, которую можно вытащить свайпом у правой стороны экрана. По умолчанию там отображаются иконки часто используемых приложений
Раньше было специальное EdgePanel SDK, с помощью которого можно было написать свое приложение для этой шторки и запушить его в GalaxyStore, но оно deprecated
Но самое удивительное другое — в GalaxyStore до сих пор продаются приложения для этой шторки по 100-500 рублей
Например, в Edge Panel могут отображаться стремные селекторы громкости или мини крестики-нолики. Цена удовольствия всего 82 рубля
А ведь если вовремя залететь, можно было бы стать миллионером
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡11👍7❤3🔥3😁2
На днях вышел
Retrofit 3.0. А точнее в один день вышло 2 версии — Retrofit 3.0 и 2.12Библиотека важная, поэтому обзор
Самое интересное случилось в 2.12 — добавили стриминговую сериализацию из
Kotlin/Java-классов в Json/ProtobufЗачем это нужно было?
Это позволит чутка снизить нагрузку на процессор и оперативку, если
Retrofit.Call.enqueue() с главного потока — стриминг перенесет сериализацию с главного UI-потока в бэкграундЧтобы изменения заработали, нужно создавать конвертер с помощью функции
withStreaming()MoshiConverterFactory.create(moshi).withStreaming() // пример
В
Retrofit 3.0 просто апнули версию OkHttp (3.14.9 -> 4.12.0). И немного поправили внутреннего кода, пару строк для совместимости с 4.12.0Так что если обновите версию Retrofit, у вас транзитивно апнется OkHttp — будьте внимательны, берегите себя и своих тестировщиков
Из хороших новостей — Retrofit 3.0 формальный мажор, то есть бинарно совместим с предыдущими версиями (по словам разработчиков). Мажорное версию апнули
Пруфы:
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍10🍾6
🧹 пост хозяйке на заметку
Получить истинно рандомное число (строку) программно не так уж просто
Ведь для генерации числа нужен алгоритм, а алгоритм по определению вещь предсказуемая
Поэтому для получения максимально непредсказуемого значения нужно добавлять энтропию — хаотичное число, взятое за пределами алгоритма
Довольно известный фокус — для энтропии брать напряжение процессора в моменте, шум микрофона, значение датчика температуры...
А в мобильных приложениях аж два раза за последнее время наткнулся на получение случайного числа с помощью действий пользователя:
Плюсы:
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7❤2
Это база , но если никогда не работали с cookies, может быть интересно
В мобильной разработке про cookies вспоминаешь в 2 случаях:
Коротко:
В хранилище для cookies. За это отвечают классы
OkHttp: CookieJar, CookieHandler, CookieStore
WebView: webkit.CookieManager
cookie-хранилища сами разруливают, на какие запросы нужно отправлять куку, а на какие нет — гибко настраивать это поведение можно с помощью cookie-атрибутов (httpOnly, secure, sameSite...)
"Set-Cookie"Перед каждый сетевым запросом сетевой клиент (или WebView) идет в cookie-хралище и сообщает ему, на какой домен и путь (path) собирается сделать http-запрос
cookie-хранилище отдает список cookies, "привязанных" к этому домену
Сетевой клиент добавляет эти cookies в хэдер
"Cookies" и отправляет вместе с сетевым запросом@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤5🦄5
Часто слышал этот термин, но не вдавался в подробности
Аппаратное ускорение — это перенос определенных расчетов с основного процессора на другие компоненты
Цель — разгрузить CPU и ускорить операции за счет специализированной архитектуры других чипов
В мобилке можно встретить следующие примеры аппаратного ускорения:
По умолчанию аппаратное ускорение включено, но его можно отключить через настройки разработчика
Реальных кейсов не встречал, зачем это надо, но в интернетах пишут, что на GPU-могут флаковать snapshot-тесты — иногда помогает отключить GPU
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
c Compose все немного сложнее — на отдельную composable-функцию отключить GPU нельзя
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
✍9👍6⚡4❤3
Вы же не забываете радоваться золотым годам бесплатных нейронок?
Пока все компании пытаются отжать себе долю рынка пожирнее, мы получаем крутейший продукт забесплатно
Причем абсолютно бесплатно — даже без рекламы
Одно из преимуществ нейнронок в том, что они сразу дают конкретные названия продуктов / моделей / версий. Могут выбрать лучшее и описать плюсы-минусы вариантов
Но как долго эти подсказки будут неподкупными?
Ведь это огромный простор для рекламы:
ждем появления нативной рекламы через пару лет
а потом подписку для отключения рекламы и подписку ultima-pro для полного отключения рекламы
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🔥9🌭4👍3❤2
Dolgo.polo Dev | Денис Долгополов
кстати запомните, этот канал всегда будет бесплатный. Без рекламы. Без платных подписок.
😁21🤡17❤8✍4👍2
Утренняя рутина
Для этого часто требуется ввод одноразового кода с телефона — подтверждение фактора владения
дорого
для примерных подсчетов можно умножить 50 копеек на количество сотрудников в компании — это расходы за день
Поэтому прибегают к бесплатному TOTP (Time-based One-Time Password)
Как это работает:
Это безопасно:
Если время на телефоне и компьютере не совпадает, TOTP не сработает. Уехать на Гаити и скинуть код другу, чтобы он зачекинился с рабочего компа в офисе, не получится
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18⚡6🔥4❤1
🍏 Итоги WWDC 2025
Ничего нового для Android Studio не показали
Ничего нового для Android Studio не показали
😁43✍5❤2🔥1
Расскажите, если был удачный опыт — интересно узнать, мерите ли вы локально / в джобах на CI скорость работы приложения от тикета к тикету?
Мой опыт подсказывает, что это нереально. Потому что на перф влияет:
Поэтому увидеть реальное отклонение в десятках-сотнях миллисекунд можно только на биг дате, собранной хотя бы с нескольких тысяч пользователей
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔5
Во что упороться, если надоел обычный Android #2
Год назад выходила первая часть
Если мир стал снова абсолютно понятен, то вот еще области, куда можно прокачаться с перспективой практической пользы:
🌸 Native c++.so
Нативные библиотеки нужны далеко не только для драйверов
С помощью них можно повысить скорость работы и создать проблемы реверс-хакерам
А также станет легче изучать исходники низкоуровневых либ, таких как WebView, Sentry, Cronet... на удивление иногда пригождается
🌸 ML/AI локальные
Последний год подарил нам кучу ИИ-игрушек, которые можно запускать локально, не заплатив ни цента
Первый уровень — посмотреть API их подключения и возможности
Второй уровень — разобраться, какие параметры на что влияют и какие педали надо жать, чтобы получить желаемый бизнесом результат
🌸 CI/CD и системы сборки
Нестареющая классика — пока не изобретут волшебную кнопку "собрать все типы сборок за ноль секунд со всеми комбинациями флагов и версий библиотек из всех мульти-репозиториев, доставить во все альсторы и синхронизировать в жиру", работа будет
🌸 Ktor как бэкенд-сервер
Ktor позволяет за пару строк на коленке собрать https/gRPC сервер на Kotlin
Это порой позволяет быстро протестировать сложные клиент-серверные сценарии, не дожидаясь реализации на бэке и не мучаясь с моками в Charles/Proxyman
Ну и начинаешь чувствовать больше общности с бэкендерами✨
@dolgo_polo_dev
Год назад выходила первая часть
Если мир стал снова абсолютно понятен, то вот еще области, куда можно прокачаться с перспективой практической пользы:
Нативные библиотеки нужны далеко не только для драйверов
С помощью них можно повысить скорость работы и создать проблемы реверс-хакерам
А также станет легче изучать исходники низкоуровневых либ, таких как WebView, Sentry, Cronet... на удивление иногда пригождается
Последний год подарил нам кучу ИИ-игрушек, которые можно запускать локально, не заплатив ни цента
Первый уровень — посмотреть API их подключения и возможности
Второй уровень — разобраться, какие параметры на что влияют и какие педали надо жать, чтобы получить желаемый бизнесом результат
Нестареющая классика — пока не изобретут волшебную кнопку "собрать все типы сборок за ноль секунд со всеми комбинациями флагов и версий библиотек из всех мульти-репозиториев, доставить во все альсторы и синхронизировать в жиру", работа будет
Ktor позволяет за пару строк на коленке собрать https/gRPC сервер на Kotlin
Это порой позволяет быстро протестировать сложные клиент-серверные сценарии, не дожидаясь реализации на бэке и не мучаясь с моками в Charles/Proxyman
Ну и начинаешь чувствовать больше общности с бэкендерами
@dolgo_polo_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍7❤5