Pull to refresh
83
0
Амаль Сэмелли @samally

Android & Web developer

Send message

Осознанная оптимизация Compose

Level of difficultyMedium
Reading time29 min
Views34K

Compose — относительно молодая технология написания декларативного UI. Множество разработчиков даже не предполагают, что пишут неоптимальный код в такой критически важной части, и впоследствии это приводит к неожиданной низкой производительности и проседании метрик.

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments15

Игра в безопасность Android-приложений

Level of difficultyMedium
Reading time20 min
Views5.4K

Давайте в общих чертах рассмотрим вопросы взлома и защиты Android-приложений. 

В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments9

Анализ безопасности приложений, использующих GraphQL API

Level of difficultyMedium
Reading time14 min
Views3.7K

Привет! Меня зовут Даниил Савин. Летом я участвовал в программе стажировки для безопасников от Бастион и в процессе глубоко исследовал тему безопасности приложений, использующих GraphQL. Так появилась статья, из которой вы узнаете:

• какие встроенные функции есть у GraphQL;

• как тестировать GraphQL API;

• какие инструменты использовать;

• и как обходить различные защитные механизмы.

Читать далее
Total votes 24: ↑23 and ↓1+22
Comments1

Как начать читать научные исследования по дизайну и зачем они нужны

Reading time8 min
Views8.1K

Ученые, которые проводят исследования в области маркетинга, дизайна и взаимодействия человека с диджитал продуктами, живут в очень отдельной информационной реальности. Дизайнеры и продакт-менеджеры на своих конференциях обсуждают совсем другие кейсы и проблемы по сравнению с тем, что в среднем печатается в научных журналах. Ни дизайн-культура не проникает в научные статьи (ну, например, чтобы ученые пробовали проверить модный дизайн-тренд, типа неоскевоморфизма или попросили модного дизайнера подготовить им раздаточные материалы для эксперимента), ни, наоборот, дизайнеры или продакты не защищают свое решение, используя наработки ученых по какому-то вопросу. 

При этом, предмет работы и исследования у них во многом общий. И те, и другие изучают пользователей и диджитал (и не-диджитал) продукты, которыми они пользуются.

Научные статьи читать тяжело и утомительно. Они длинные, на английском, и их полный текст не всегда легко найти. Но я попробую рассказать, как я слежу за научными статьями по моей теме, и как они могут помочь в работе.

Читать далее
Total votes 12: ↑9 and ↓3+6
Comments4

Развенчание мифа о собственной продуктивности программистов

Level of difficultyEasy
Reading time6 min
Views28K

В наше время среди разработчиков распространено убеждение, что хорошие программисты значительно лучше плохих программистов. Величина этого "значительно лучше" является предметом яростных дискуссий. Оценку в 10 раз часто называют консервативной.

В данной статье будет показано, что такие утверждения упускают важные детали и, в целом, ошибочны.

Читать далее
Total votes 40: ↑34 and ↓6+28
Comments75

Архитектура Android. Понятно и подробно

Level of difficultyMedium
Reading time15 min
Views23K

Если вы хотите сделать хорошую архитектуру, то используйте эту схему и строго соблюдайте правила, без каких-либо исключений.

Читать правила
Total votes 26: ↑23 and ↓3+20
Comments48

Библиотека Scout — быстрый и безопасный DI на Kotlin

Level of difficultyEasy
Reading time23 min
Views8.1K

Привет! Меня зовут Александр Миронычев. Я занимаюсь инфраструктурой приложения Яндекс Маркет под Android. Около двух лет назад при работе над модульностью у меня появилось желание написать собственную библиотеку для внедрения зависимостей, которая позволила бы ускорить сборку приложения и упростить процесс модуляризации. Так появился Scout. Сегодня его код мы выложили в открытый доступ.

Эта статья — рассказ о том, как пройти путь от безумной идеи до конкурентоспособного опенсорс-фреймворка. Статья будет полезна тем, кто ищет замену DI-фреймворку в своем проекте, а также тем, кто мечтает написать свою библиотеку, но никак не может начать.

Читать далее
Total votes 37: ↑36 and ↓1+35
Comments13

Спорт, как хобби для здоровья, с точки зрения инженера

Reading time14 min
Views77K
image
Картинка из гугла для привлечения внимания.

На GT все чаще обсуждаются вопросы функционального здоровья. В этой статье я хочу привести анализ различных видов активности и связанных с ними адаптаций. Для себя я выбрал основным критерием оптимизации качество жизни в долгосрочной перспективе в сочетании с максимальным удовольствием в текущий момент. Тем не менее, я постараюсь рассмотреть плюсы и минусы различных спортивных (физкультурных) концепций максимально разносторонне и развеять некоторые мифы.

Disclaimer: Так сложилось, что я придерживаюсь не самых популярных в обществе взглядов на физическую активность и образ жизни. Вполне вероятно, что некоторые на этом ресурсе уже считают меня фанатиком. И хотя я действительно являюсь пропагандистом силовых тренировок, надеюсь, статья не покажется слишком однобокой или агитационной.

Для тех, кому лень читать: наш выбор — качалочка и плавание. Бег, игры и велик — по желанию.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments238

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Level of difficultyEasy
Reading time30 min
Views368K

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →
Total votes 357: ↑350 and ↓7+343
Comments283

KMP глазами iOS-разработчика

Level of difficultyMedium
Reading time18 min
Views10K

Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

Мы в мобильной команде для шаринга кода на несколько платформ используем KMP. 

На Хабре можно встретить достаточное количество статей по этой технологии, но большинство из них рассматривает выбор кроссплатформенной технологии либо перевод проекта на KMP.

В этой статье я расскажу наш опыт взаимодействия с KMP со стороны iOS-разработки: проблемы, с которыми столкнулись, их решение, наш подход, и главное — как к этой технологии относятся iOS-разработчики.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments10

Вы НЕ сошли с ума (о режиме сна в Windows)

Reading time8 min
Views124K

Вы сталкивались с тем, что ноутбук случайно включается, хотя вы уверены, что отправляли его в сон?

Бывало, что батарея оказывалась пустой, хотя вы точно-точно помните, как убирали в сумку заряженный на 100% ноутбук?

Тогда вам сюда:

Мне сюда
Total votes 259: ↑249 and ↓10+239
Comments503

То, чего нам так не хватало: Render Effect в Android 12

Reading time6 min
Views8.9K

Иногда бывает нужно размыть задний план на экранах мобильного приложения, например в чате. Теперь это можно сделать всего парой строк кода. В Android 12 появился новый API Render Effect, который позволяет накладывать визуальные эффекты на Canvas или View. Этот API радует своей простотой и высокой скоростью отрисовки. Наибольший интерес представляет Render Effect для размытия (BlurEffect), но в этой статье мы затронем и остальные виды эффектов. Материал может быть полезен не только андроид-разработчикам, но и дизайнерам мобильных приложений.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments3

4,2 гигабайта, или как нарисовать что угодно

Reading time9 min
Views42K
В нашем мире мы можем сделать всё, что захотим. Всё что угодно.

Боб Росс, The Joy Of Painting, сезон 29, эпизод 1

Однажды, когда я наблюдал за ярким закатом в Сиэтле, внезапно включилось моё воображение. Потусторонний оттенок неба пробудил воспоминания о чём-то из научной фантастики. Дымчатый оранжево-сиреневый завораживал.

Я представил огромный инопланетный объект, висящий в горящем оранжевом небе над давно покинутым Сиэтлом, здания которого покрыты зарослями.

Тем же вечером я за несколько часов создал вот такое изображение:


Простите за низкое разрешение — к сожалению, у моего GPU всего 12 ГБ памяти.

Поскольку очевидно, что я талантливый художник, имеющий за плечами буквально десятки минут опыта, мне захотелось поделиться тем, как я создал данный шедевр.
Читать дальше →
Total votes 160: ↑160 and ↓0+160
Comments92

Глубокое погружение в Java Memory Model

Reading time53 min
Views128K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Total votes 109: ↑109 and ↓0+109
Comments60

Как работа с ресурсами вызывает микрофризы

Reading time10 min
Views5.5K

Думаю, каждый из нас периодически сталкивается с непонятными микрофризами при взаимодействии с, казалось бы, простым UI…

Просто скролишь список, и тут — бац! Лагнуло! Сегодня я бы хотел разобрать одну из множества причин такого поведения — работу с ресурсами. Мы разберёмся, в каких случаях работа с ресурсами может стать проблемой. Почему это происходит и как лучше всего от этого избавится.

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments9

Адаптация Jetpack Compose в hh.ru

Reading time24 min
Views5K

Представьте: теплый осенний вечер, на столе перед вами чашечка чего-нибудь вкусного, за окном порхают пожелтевшие листья, тонко насвистывает ветер, но на душе скребутся коварные мыши. И вам точно известно, откуда эти мыши растут: еще летом вышел стабильный Jetpack Compose, а вы таки не затащили его в ваши продакшн-приложения. 

Всем привет! Меня зовут Паша Стрельченко, я Android-разработчик в hh.ru. В этой статье поведаю историю о том, как начиналась адаптация Jetpack Compose в нашем продакшн-приложении. 

Читать далее
Total votes 18: ↑15 and ↓3+12
Comments15

Как понять, что стоматолог адекватный

Reading time13 min
Views19K

Лечите нерв без такой штуки? Утройте оценку рисков.

Ответственность за своё здоровье — тяжёлая штука. Очень приятно отдаться в заботливые руки всезнающих врачей и вообще не думать о том, что они делают.

К сожалению, хороший результат так получается не всегда. Среди стоматологов тоже есть так себе профессионалы.

Сейчас на пальцах покажу и расскажу, на что стоит обратить особенно пристальное внимание, если вы хотите минимизировать риски. Будет ликбез по ОБЖ в стоматологии.

Разберём частые процедуры, как они могут проводиться, как они должны проводиться с точки зрения оценки рисков и оптимума цена/качество — и как понять, что что-то пошло не так, не обладая медицинским образованием.

Так что, граждане, приготовьтесь, сейчас я вам вручу немного ответственности за своё здоровье.
Читать дальше →
Total votes 49: ↑43 and ↓6+37
Comments24

Прокачиваем kotlin: используем AST лямбд в рантайме

Reading time18 min
Views3.3K

История о том, как сделать свой LINQ для kotlin, и как сделать так, чтобы кода вида

data.filter { it.age > 30}.map { it.name }.toList()

мог и выполняться для данных в памяти, и превращаться в SQL запрос для базы данных.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments4

Яндекс выложил в опенсорс YDB

Reading time16 min
Views140K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



YDB решает задачи в одной из самых критичных областей — позволяет создавать интерактивные приложения, которые можно быстро масштабировать по нагрузке и по объёму данных. Мы разрабатывали её, исходя из ключевых требований к сервисам Яндекса. Во-первых, это катастрофоустойчивость, то есть возможность продолжить работу без деградации при отключении одного из дата-центров. Во-вторых, это масштабируемость на десятки тысяч серверов на чтение и на запись. В-третьих, это строгая консистентность данных.

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Total votes 335: ↑332 and ↓3+329
Comments135

20 игр, чтобы видеть детали, чувствовать нюансы и уловить смысл дизайна

Reading time7 min
Views36K


Я собрала 20 игр, чтобы поиграть в дизайнера. Точнее игры, в которые играешь и прокачиваешь какой-то навык, полезный для дизайна: цветовым кругом пользоваться, пером работать, шрифты не вырвиглазные подбирать, UI по-человечески рисовать. Во все игры можно играть в браузере и бесплатно. Впервые от «поиграйте со шрифтами» можно получить удовольствие.

Еще я веду канал в Telegram GameDEVils и блог на Substack , делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).

1. Can’t Unsee


Update: используйте прокси, к примеру croxyproxy, или просто закройте попап, чтобы попасть на сайт игры.



Игра для начинающего UI дизайнера, чтобы тренировать внимательность. Иными словами, не для тренировки конкретного навыка, а на умение «разобраться в деталях, почувствовать нюансы, и уловить смысл».
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments19
1
23 ...

Information

Rating
5,010-th
Location
Самара, Самарская обл., Россия
Date of birth
Registered
Activity