TW: нудный гик-стафф про бытовую технику.
Кофемашина в какой-то момент не включила индикатор переполненности контейнера для жмыха. Это странно, поэтому я стал разбираться. Вообще, техника редко глючит непонятным образом и ведет себя хаотично. Всегда есть какая-то причина. При отладке программы это тоже надо всегда помнить.
Как машина узнаёт, что контейнер полон? Никак. У контейнера есть герконовый датчик, показывающий факт его установки в корпус. Когда ты его вытаскиваешь, машина думает, что ты его очистил. А дальше программа просто знает, что одинарный кофе наполняет контейнер на X, двойной на 2X, а вместимость nX.
Что произошло: я открыл контейнер посмотреть, заполнен ли он целиком. А потом закрыл обратно, не очистив. В оценке уровня жмыха появилась аддитивная погрешность.
Если позволить человеку ввести систему в неправильное состояние, он рано или поздно это сделает. Кстати, по той же причине мне нравится DDD как архитектура для энтерпрайз разработки: если всё правильно спроектировать, то программист слоя приложения, который является "пользователем" домена, не сможет сломать состояние сущностей и агрегатов.
В общем, в машине не хватило защиты от дурака. Как бы я решал эту задачу? Сходу приходит в голову какой-нибудь оптический датчик в верхней части контейнера. В худшем случае он запачкается и сработает ложно-положительно, что вызовет необходимость для пользователя лишний раз почистить контейнер.
Но ТРИЗ намекает нам на другой подход. Можно попробовать полностью исключить появление жмыха. Так устроены, например, капсульные машины. У нас такая была, но перешли на зерновую, потому что вкусный качественный кофе в зёрнах на порядки дешевле, чем в капсулах, а пьем мы его много. Особенно кофе с молоком, для которого в капсулах просто концентрат, а не настоящее молоко.
Если исключить жмых нельзя, то нужно сделать его удаление неотъемлемой частью процесса обслуживания машины. Думаю, я бы попробовал объединить конструктивно контейнер для зёрен и для жмыха, и рассчитать объёмы так, чтобы второго хватило на один цикл траты первого. Тогда даже датчики не нужны: кончились зёрна, и ты неизбежно достаешь контейнер и очищаешь.
Сфоткал для вас чашечку ароматного капучино.
#life
🛒Представили Play Service TrustedTime API
Для тех приложений, которым важно получать настоящее время, а не то, что установлено на устройстве пользователем, всегда приходилось решать вопрос, откуда его взять. Теперь же появилось стандартизированное API.
// Создаем клиента для работы с Trusted Time API
val initializeTrustedTimeClientTask: Task =
TrustedTime.createClient(activity)
val trustedTimeClient: TrustedTimeClient =
initializeTrustedTimeClientTask.await()
val curTime: Long? = trustedTimeClient.computeCurrentUnixEpochMillis()
// Используем системное время, если нет возможности получить из TrustedTime API
// Может не подойти в вашем случае
?: System.currentTimeMillis()
Поддерживается Android 5.0 и выше (SDK 21+)
#google#gms#android
🏝Play Integrity API: Защита вашего приложения от злоумышленников
Play Integrity API — это сервис Google Play для верификации подлинности и целостности вашего приложения. Простыми словами, это инструмент безопасности, который позволяет убедиться, что взаимодействие пользователя с вашим приложением происходит честно и легитимно
Суть работы API - на запрос из приложения вернуть вердикт о различных типах рисков:
👉 Несанкционированный доступ — проверяет, был ли установлено или оплачено через Google Play.
👉 Модификация кода — убеждается, что код приложения не был изменен. Поддельные устройства — проверяет, работает ли приложение на подлинном, сертифицированном Android-устройстве.
👉 Кроме того, API обнаруживает непатченные устройства — проверяет, установлены ли на девайсе свежие обновления безопасности.
👉 Опасные приложения — выявляет программы, которые могут контролировать экран или перехватывать данные.
👉 Автоматизированные атаки — определяет, не генерирует ли устройство аномально много запросов. И повторные попытки — проверяет, не пытается ли это же устройство совершить злоупотребление еще раз.
С помощью Play Integrity API вы можете предотвращать мошенничество — блокировать несанкционированные платежи и финансовые операции. Можно защищать от взлома — обнаруживать модифицированные версии приложения, распространяемые пиратами. API помогает бороться с читингом — предотвращать использование взломанных версий в играх. И, наконец, защищать пользователей — выявлять опасные приложения на устройстве, которые могут украсть данные.
По данным Google, приложения, использующие Play Integrity API, видят на 80% ниже несанкционированное использование по сравнению с другими приложениями. Крупные компании вроде Uber, TikTok, Stripe, Paytm уже интегрировали его себе.
⚠️ Play Integrity API работает не только на сертифицированных Google устройствах на базе Android, а значит там точно должны быть Google Play Services.
‼️ВАЖНО Никакая защита не может дать абсолютной гарантии безопасности, но это не значит что не нужно интегрировать решения, а то что надо следить за безопасностью вашего продукта, вовремя обновлять его защиту и предотвращать небезопасное использование, позвляющее украсть данные и имущество пользователя
#GooglePlay#Безопасность#GMS
🛒Приложения с Google Play Services смогут проверять была ли установка их продукта на устройстве, даже если происходил его сброс 🤯 Фича называется Device Recall
Приложения смогут сохранить и получить данные, связанные с конкретным устройством. Информация сохраняется на серверах Google, что позволит получить данные после переустановки и даже сброса устройства до заводских настроек.
#googleplay#gms#android#безопасность#googleio
B2B ASEAN принял участие в Форуме Меконга 2025 🇨🇳🇰🇭🇱🇦🇲🇲🇻🇳🇹🇭
30–31 июля в Пномпене (отель Shangri-La) состоялся Форум Меконга 2025 на тему «Устойчивое развитие субрегиона через новые экономические модели».
Участие B2BASEAN:
- Активное участие в дискуссиях о перспективах экономического сотрудничества
- Вклад в обсуждение ключевых направлений:
🌿 Зелёная экономика
👥 Социальная экономика
🎭 Креативные индустрии- Установление деловых контактов с представителями стран Большого Меконга
Итоги:
Форум стал важной площадкой для выработки стратегий устойчивого развития региона и укрепления партнёрских связей.
@b2basean
#Меконг2025#GMS#УстойчивоеРазвитие
🚢GMS: эскалация на Ближнем Востоке дестабилизирует рынки и тормозит рециклинг.
Глобальный покупатель флота на утилизацию - GMS - отмечает резкий рост волатильности на фоне конфликта на Ближнем Востоке.
Нефть за выходные подскочила более чем на 10% — с ~$63 до ~$71,9 за баррель.
Индекс Baltic Exchange прибавил 1,1%, при этом сегменты Capesize, Panamax и Supramax выросли на 0,2%, 1,4% и 3% соответственно — динамика пока сдержаннее, чем у нефтяных фьючерсов.
Валюты стран-основных переработчиков лома и цены на судовой листовой прокат снизились, пусть и умеренно. Активность на рынке утилизации отошла на второй план: продавцы и покупатели выжидают на фоне неопределённости и дефицита тоннажа, усугублённого геополитикой.
По оценке GMS,масштаб регионального шока сопоставим с периодом COVID по степени прямого и глобального воздействия.
Для отрасли это означает повышенную паузу в S&P-рециклинге, рост цен на бункер и риск дальнейшей турбулентности при затяжной эскалации.
📌GMS (Gulf Maritime Services LLC) — международный покупатель флота, основанный в 1992 году, специализируется на купле-продаже судов на утилизацию. Компания является частной и принадлежит основателям.
#ShipRecycling#GMS#OilPrices#DryBulk#Geopolitics