Ранее я делал серию постов про битовые операторы.
Вот вам ещё один наглядный пример как это используется в Python в модуле re.
Чтобы указать флаг для компилятора нам надо указать его после передаваемой строки. Например, добавляем флаг для игнорирования переноса строки.
pattern = re.compile(r"(\w+)+")
words = pattern.search(text, re.DOTALL)
А как указать несколько флагов? Ведь явно будут ситуации когда нам потребуется больше одного. Кто читал посты по битовые операторы уже понял как.
pattern.search(text, re.DOTALL | re.VERBOSE)
А теперь смотрим исходники, что находится в этих атрибутах?
Не удивительно, степени двойки. Почему? Потому что каждое следующее значение это сдвиг единицы влево.
>>> for n in [1, 2, 4, 8, 16, 32, 64, 128, 256]:
>>>
print(bin(n))
0b1
0b10
0b100
0b1000
0b10000
0b100000
0b1000000
0b10000000
0b100000000
Чтобы было понятней, давайте напишем тоже самое но иначе, добавим ведущие нули:
000000001
000000010
000000100
000001000
000010000
000100000
001000000
010000000
100000000
Не понятно что тут происходит? Читай три поста про битовые операторы начиная с этого ➡️https://t.me/pythonotes/45
В общем, это пример применения побитовых операций в самом Python.
Теперь вы знаете Python еще немного лучше)
#tricks#regex#libs
💡HDR. В чем преимущества и как использовать на Android
Чем отличается HDR (High Dynamic Range) видео или фото от обычного или SDR (Standard Dynamic Range)? Дисплей устройства становится ярче и насыщеннее. В этом и есть задача HDR - обеспечить больше информации о цвете и яркости картинки, чтобы передать максимально близко к задумке автора контента.
SDR формат с которым мы живем довольно давно и он разрабатывался из расчет на устройства того времени, которые просто не могли передать параметры выше:
- максимальная яркость ~100 нит
- ограниченная цветовая палитра (sRGB)
- светлое не такое уж светлое, а тёмное — просто чёрная клякса
Современные дисплее смартфонов имеют пиковую яркость в несколько тысяч нит, большие возможности по показу разных цветов и скорость отображения, поэтому SDR просто не может раскрыть их возможностей. Для этого сделали HDR и он позволяет раскрыть максимум от экрана устройства.
В Android 14 начали активную поддержку HDR контента и его его совместимость с устройствами без поддержки формата, а именно добавили возможности:
✅ показывать HDR-видео в SurfaceView и MediaCodec
✅ накладывать поверх яркий, живой интерфейс — тоже в HDR
✅ узнать через API, поддерживает ли устройство HDR
✅ использовать ImageDecoder для работы с HDR-изображениями
✅ автоматически конвертировать HDR в SDR контент
Google внедрила поддержку UltraHDR - формат изображений c HDR. В нем могут снимать современные Android устройства и получать больше эмоций от ваших фото. Каждый раз наслаждаюсь этим на Pixel.
В блоге Android Developers вышла статья с подробностями как устроен цвет на цифровых устройствах и какие преимущества даёт HDR
#android#hdr
🤖Важность HDR в приложениях для передачи естественных цветов
Почитал интересную статью от Google про важность использования HDR. Самое важное - HRD не только про яркость, а именно про правильность передачи цветов в приложениях, особенно когда дело касается фото.
В Android 15 появилось API для контроля того смешивания HDR и SDR контента:
// Требуется, чтобы Windows учитывало желаемый HDR headroom.
// Обратите внимание, что эквивалентный API в SurfaceView НЕ требует
// COLOR_MODE_HDR для ограничения headroom,
// если на SurfaceView отображается HDR-контент.
window.colorMode = ActivityInfo.COLOR_MODE_HDR
// разные значения headroom могут
// использоваться в зависимости от
// желаемого headroom контента
// И особенностей UI-дизайна приложения.
window.desiredHdrHeadroom = when {
/* только SDR */ -> 0f
/* Смешанный, в основном SDR */ -> 1.5f
/* Смешанный, в основном HDR */ -> 3f
/* только HDR */ -> 5f
else -> 0f
}
#android#hdr#android15