Pull to refresh
4
0
dimonkin @dimonkin

Android Lead

Send message

Проблемы с View начинаются, когда их много в Lazy-списках, они заметно снижают плавность по сравнению с чистым Compose, даже внутри remember. (так было на момент одной из альфа версий, возможно уже все получше).

Да, ExoPlayer. ViewModel в проект не затащили, используем самописную архтектуру Unidirectional Data Flow на базе RxJava -> Kotlin Flow, об этом, наверное, можно отдельную статью написать :)

Мы переписали самые важные экраны и все еще продолжаем этот процесс. Некоторые уже готовые экраны закрыты сейчас фиче-флагами. У нас есть дизайн-система для UI компонентов, поэтому некоторое время заняла адаптация ее для Compose, т.к. использовать View было не оптимально для производительности. Также, пару недель ушло у каждого чтобы "освоиться" с кодом на компоузе. Нельзя сказать, сколько ушло на одну главную, т.к. эта страница-трансформер, там много разных типов блоков, которые могут прийти с сервера и их нужно было поддержать. Плюс, решив все первоначальные проблемы и набив все "шишки", сейчас на один простой экран уйдет заметно меньше времени (некоторые новые экраны пишутся за день). Если посмотреть на тикет в Jira, то идея объединения архитектуры (и внедрения Compose) возникла в сентябре 2021, первые пробы завести Compose в ТВ - сентябрь 2022, первый релиз ТВ на компоузе, включающий в себя продуктовую доработку - август 2023. Небольшой командой платформы (< 10 разработчиков) с переключением на другие срочные задачи. Были также случаи "гонки" с другими продуктовыми фичами, которые решались индивидуально. Вьюхи сохранять можно, но только для простых ненагруженных экранов, т.к. перфоманс там начинает страдать и код с фокусами выглядит как "костыль".

Отличная статья, спасибо!
А как вам размер получившегося iOS приложения? Я делал эксперимент, в котором получилось многовато.
WakeLock-и были, и система не засыпала, а также не выключала экран. Но процессор начинала тротлить через несколько секунд.
Девайс начинал тротлить при не активности пользователя в течение нескольких секунд. Даже при включенном экране и проигрывающемся видео.
Подобный баг устранили на OnePlus3T в приложении ivi. Через несколько секунд видео начинало сильно «тормозить». Методом проб и ошибок вычислил, что если тыкать по экрану пальцем, то видео не лагало. Корень проблемы был где-то в прошивке девайса, т.к. при обновлении прошивки баг исчезал. Но у нас все еще было несколько тысяч пользователей с этим устройством и не обновленной прошивкой, и они о себе напоминали в маркете. Решение было ужасным, но рабочим: для данного девайса во время воспроизведения видео добавили нагрузку процессора раз в несколько секунд.
	public static void spinCpu(final long spinMs) {
		final long startMs = System.currentTimeMillis();
		int count = 0;
		while (System.currentTimeMillis() - startMs < spinMs) {
			count++;
		}
	}

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

Также к этому можно добавить про сочетание использования сервисов с WakeLock`ом.
Чтобы интуитивно почувствовать в чем суть, сделал следующее:
1. Представил 1 000 000 000 дверей.
2. 999 999 998 дверей было открыто
3. Интуитивно понятно, что слишком маловероятно, чтобы первый выбор был удачным.
Тоже на днях удалили приложение с 30к загрузок и 1к рейтингом 4.7 за то, что в настройках приложения была опция, разрешающая показ эротического контента. Написал им в стандартную форму, как это сделал Reddit is fun, ответил бот отказом.
А вот Reddit is fun разблокировали, наверное из-за большой англоязычной аудитории.
Все верно, термин интрон вводится автором статьи по аналогии с интроном ДНК. Цитата из статьи:
If we are to take an analogy with cellular biology (thanks to Douglas Hofstadter again), what I have called the “code” would be the cell, and the “data” would be the cell's DNA: the cell is able to create a new cell using the DNA, and this involves, among other things, replicating the DNA itself. So the DNA (the data) contains all the necessary information for the replication, but without the cell (the code), or at least some other code to make the data live, it is a useless, inert, piece of data.
Note how the data may contain (depending on how it's interpreted) bits that aren't used to write the code, but are still copied when the data is written on the output. Such bits are called introns, in analogy with the parts of the genetic code which aren't used to produce proteins.

Вольный перевод:
Если провести аналогию с клеточной биологией (спасибо Дугласу Хофштадтеру снова), то что я назвал «код» будет ячейкой, а «данными» будут клетки ДНК: клетка способна создать новую клетку с помощью ДНК, и это включает, среди прочего, репликацию непосредственно ДНК. Таким образом, ДНК (данные) содержит всю необходимую информацию для репликации, но без клетки (кода), или по крайней мере какого-либо другого кода, делающего данные «живыми», это бесполезная, инертная, часть данных.
Обратите внимание, что данные могут содержать (в зависимости от того, как они интерпретируются) биты, которые не используются для написания кода, но все равно повторяются, когда данные записываются на выходе. Такие биты называются интронами, по аналогии с частями генетического кода, которые не используются для производства белков.

Ну и если взглянуть на код из моего поста выше, в нем интрон расположен в строках с 9 по 14, а код использует индексы для чтения массива данных, не затрагивая интрон при выводе самого себя.
В общем интересная статья, всем заинтересованным в квайнах можно рекомендовать для прочтения.
Кто-нибудь еще экспериментировал?)

http://ideone.com/6THB2F

Чтобы написать квайн, нужно написать квайн. Вот отличная статья на тему квайнов:
Quines (self-replicating programs )
А также на хабре: Как писать квайны
Основной смысл: программный код условно делится на часть данных и часть кода. В процессе выполнения программы код использует данные для вывода исходного текста. При этом в части данных должен содержаться весь исходный текст.
В квайнах есть место, которое не требует дубликации — интрон. Он-то как раз и позволяет делать маневры.
Больше всего удивился, когда вы объявили на gamedev.ru, что такое поведение танков выработалось генетически :)

Кому интересно, вот мой бот (java, правда, «попахивает» :) ), аккаунт — 19 место в финале.
Coderun — онлайн IDE PHP, JS, C# (пробовал только PHP, подтормаживает)
Codepad — аналог pastebin
Cleanroom — онлайн редактор HTML+JS с проверкой JSLint
RegExr — проверить регулярные выражения (сайт на flash), есть свой каталог

Генераторы:
http://www.css3maker.com/ — повороты, анимация и т.д. CSS3
http://www.cssbuttongenerator.com/ — кнопки CSS3
http://www.noisetexturegenerator.com/ — генератор noise-текстуры
JotForm — генератор форм
есть еще русский клон askdev
У меня пароль сохраняется.
Хоть так. Это лучше, чем установка дополнительного софта :)
Из Cкайпа есть простой выход: Профиль -> Меню -> Выход.
С этого года в Англию уехать как высококвалифицированный специалист без приглашения больше нельзя. Желающие могут проверить свои возможности по калькулятору.
На «стакане» (картинка чуть ниже) видно, что желающих купить (слева) больше, чем тех, кто хочет продать (справа).
Перед размещением Яндекс оценивали в $6,5 млрд. Оценку проводили Морган Стенли, Дойче Банк и Голдман Сакс. Собственно, они и занимались размещением. Размещалось около 15% акций.
Появился некоторый ценовой коридор $20-22 за акцию, который всех устраивал.
После сбора заявок стало понятно, что цену немного можно поднять. Ну и подняли до максимально возможного уровня в $25. Подняли бы ещё, но книга заявок к определённому моменту должна быть закрыта.
А когда начались торги нашлось много тех, кто не успел подать заявку/кто не имел права подавать заявку/кто верил в светлое будущее компании/просто спекулянты.
А так как основные пакеты акций до инвесторов ещё не доехали, то продавать акции на бирже особо некому и из-за большого (уже биржевого) спроса акции открылись по $35.
1

Information

Rating
Does not participate
Registered
Activity