Pull to refresh
1
@sasha_kuzread⁠-⁠only

User

Send message

Koin: как сделать свой DI за 10 минут

Reading time19 min
Views5.8K

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.

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

Дополнительная (но от того не менее важная) цель статьи — показать, что базовый механизм, на котором построен Koin, не такой уж и страшный :)

Тестовый текст
Total votes 16: ↑16 and ↓0+23
Comments7

Создание Convention Plugin-ов на базе Kotlin-классов

Level of difficultyMedium
Reading time9 min
Views974

Всем привет! На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.

Читать далее
Total votes 3: ↑3 and ↓0+7
Comments0

Основы Jetpack Compose: как обеспечить стабильность вашего кода

Level of difficultyMedium
Reading time13 min
Views8.8K

Привет, меня зовут Вера, я Android‑разработчик в Яндекс Диске. Мы в Диске сейчас активно работаем над переездом на Compose с использованием дизайн‑системы. Про стабильность в Compose есть немало статей, однако ошибки продолжают cовершаться, поэтому решила поделиться своим опытом в формате ликбез‑статьи.

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

Читать далее
Total votes 26: ↑26 and ↓0+28
Comments8

Интересные приёмы, взятые из исходников Android

Level of difficultyEasy
Reading time8 min
Views13K
Интересные приёмы, взятые из исходников Android

В процессе чтения исходников Android SDK я замечал интересные механики и приёмы написания кода, какие-то из них до сих пор используются при создании новых библиотек, другие, напротив, заменены более логичными и понятными конструкциями. В этой статье я постараюсь перечислить всё, что смог заметить сам при изучении исходников Android'а. Сразу отмечу: эта статья не претендует на полноту материала и возможно вы нашли даже больше интересных моментов при чтении кода, ладно, погнали, короче!
Читать дальше
Total votes 31: ↑28 and ↓3+43
Comments3

Как работает интернет

Level of difficultyEasy
Reading time30 min
Views96K

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

Здесь вы узнаете о 4 уровнях модели TCP/IP. О том, что такое MAC-адрес и IP-адрес, и зачем нам 2 типа цифровых адресов. Как работает DNS. Зачем нужны коммутаторы и роутеры. Как работает NAT. Как устанавливается защищённое соединение. Что такое инфраструктура открытых ключей, и зачем нужны TLS-сертификаты. Чем отличаются три версии протокола HTTP. Как происходит HTTP-аутентификация. И в конце будет несколько слов о VPN.

Читать далее
Total votes 106: ↑99 and ↓7+112
Comments61

Как Google победила фрагментацию и возвращает контроль над Android

Level of difficultyEasy
Reading time14 min
Views42K

Разбор эволюции Android и как Google внедряла функции в ОС, чтобы организовать прямую доставку обновлений независимо от вендоров устройств, а также продолжает забирать полный контроль над устройствами

Подробности
Total votes 77: ↑71 and ↓6+80
Comments54

Собеседование по System Design: как запроектировать и не потеряться

Level of difficultyMedium
Reading time8 min
Views15K

Привет! Меня зовут Дмитрий. Я архитектор решений в крупной российской компании, более 15 лет проектирую, пишу код и руковожу командами. Сотрудничаю с Практикумом как ревьюер курса по Java и как автор курса «Архитектура программного обеспечения» в Яндекс Практикуме.

Предположим, вы решили развлечься дизайном систем (System design), пусть даже и не добровольно, на собеседовании. Если компания поленилась поделиться рабочим контекстом, то задача может быть в формате «запроектируй Твиттер». Более кандидатоориентированная компания N может попросить «спроектируй поиск на сервисе N».

Хотя статей типа «как запилить Твиттер» довольно много, не все помогут сориентироваться на реальном собеседовании. В этой статье предлагаю покопать вглубь и составить чек-лист, некий алгоритм. Он будет чуть шире, чем принято «для Твиттера», хотя универсальным его сделать не получится. Мне эта схема помогала и помогает, хотя у каждого свои фишки и предпочтения. 

Читать далее
Total votes 17: ↑15 and ↓2+16
Comments21

Android изнутри: сравнение Dalvik и ART

Reading time6 min
Views38K
Привет, Хабр! Около полугода назад я публиковал подробный «гайд» по JVM. Пост, в целом, зашел, а в комментариях спросили, не планируется ли “чего-то по андроиду”. Наконец, у меня дошли руки.



В этом посте поговорим о среде выполнения в Android. В частности, я постараюсь кратко, но емко изложить, чем отличается ART и Dalvik, и как со временем улучшились средства разработки в Android. Тема явно не новая, но, надеюсь, придется кстати тем, кто только начинает вникать. Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 14: ↑12 and ↓2+14
Comments14

Kotlin под капотом — смотрим декомпилированный байткод

Reading time10 min
Views21K


Просмотр декомпилированного в Java байткода Kotlin едва ли не лучший способ понять как он все-таки работает и как некоторые конструкции языка влияют на перфоманс. Многие само собой уже давно это сделали, так что особенно актуальной данная статья будет для новичков и тех, кто уже давно осилил Java и решил использовать Kotlin недавно.

Я специально упущу довольно избитые и известные моменты так как, наверное, нет смысла в сотый раз писать о генерации геттеров/сеттеров для var и подобных вещах. Итак начнем.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments15

Retain внутри, а снаружи ViewModel

Reading time5 min
Views11K
image

В какой-то момент я заметил периодические разговоры о том, как же на самом деле работает ViewModel из гугловых архитектурных компонентов. Осознав, что и сам не понимаю до конца полез в интернеты и с удивлением обнаружил, что есть невероятное количество одинаковых статей о том как готовить ViewModel, дружить ее с LiveData, присунуть ей зависимости через Dagger, совокуплять с RxJava и других тайтлов различной степени полезности, однако нет почти ничего о том, что вообще происходит внутри.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments8

По ту сторону фидбека: как проходят Android-собеседования и чего мы ждём от кандидатов

Level of difficultyEasy
Reading time7 min
Views9.5K

Подбор кандидатов в компанию — вопрос важный и тонкий. Вы ищете команду мечты. Мы хотим найти человека, с которым сможем плечом к плечу разрабатывать сложные фичи, бороться с багами и непринуждённо общаться за чашкой кофе. Эти стремления, как «струи Арагвы и Куры», ведут в одно место встречи — техническое интервью.

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

Меня зовут Александр Гирев, я Android-разработчик в Альфа-Банке, участвую в технических собеседованиях и знаю, что происходит по ту сторону «Зума» во время интервью :)

Читать далее
Total votes 29: ↑27 and ↓2+26
Comments8

8 типичных нетипичных советов Android-разработчику перед интервью

Level of difficultyEasy
Reading time6 min
Views6.9K

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

У меня богатый опыт собеседований, только в Альфе я успел провести больше 200. Я выделил несколько советов, которых стоит придерживаться кандидатам. Какие-то из советов могут показаться капитанскими :)

Читать далее
Total votes 25: ↑23 and ↓2+21
Comments8

Нужно ли вам красивое резюме? Оцениваем результаты эксперимента с помощью статистики

Level of difficultyEasy
Reading time5 min
Views7.8K

Недавно YouTube подкинул мне видео об оценке эффективности резюме. Автор ролика создал пять вариантов, чтобы изучить влияние четырёх факторов: имени соискателя, названия компании, перерыва в работе и оформления. Каждое резюме было отправлено на 100 релевантных вакансий.

Меня зовут Ольга Матушевич, я наставница на курсе «Аналитик данных» в Яндекс Практикуме. В этом тексте я расскажу, какие результаты показал эксперимент из YouTube, и попробую выяснить, являются ли они статзначимыми.

Читать далее
Total votes 10: ↑7 and ↓3+8
Comments8

Эффективное и комплексное устранение утечек памяти в Android

Level of difficultyMedium
Reading time7 min
Views7.2K

Цель этой статьи — изучить эффективные и комплексные решения по нахождению и устранению утечек памяти в контексте Android-разработки. Стоит понимать, что утечка памяти чаще всего возникает из-за незнания технологии или собственного кода на подкапотном уровне, поэтому основной целью является научиться правильно писать код, учитывая специфику работы Java Memory Model, Garbage Collector и File descriptor.

Читать дальше
Total votes 6: ↑4 and ↓2+3
Comments5

Почему умение дебажить — один из самых важных навыков для разработчика

Level of difficultyMedium
Reading time7 min
Views8K

Привет! Меня зовут Абакар, и я работаю главным техлидом в Альфа-Банке. Меня часто посещает вопрос: «А какой навык всё-таки самый полезный для разработчика?». Понятное дело, что ответ на этот вопрос обязан быть комплексным, и скилл-сет разраба не должен ограничиваться одним навыком. Но умение дебажить — действительно хороший показатель уровня разработчика. Давай разберем на нескольких примерах, почему я так считаю.

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

Вредные советы, как приходить с вопросами к техлиду

Level of difficultyEasy
Reading time6 min
Views5K

Привет! Меня зовут Абакар, я работаю главным техническим лидером в Альфа-Банке. Ко мне довольно часто приходят разработчики с вопросами, и я решил собрать свой топ-4 вредных советов о том, как не надо приходить с вопросами.

Важный дисклеймер: это вредные советы, и так делать не нужно!

Читать далее
Total votes 23: ↑21 and ↓2+21
Comments11

Low performer в Android 2024

Level of difficultyEasy
Reading time8 min
Views3.1K

Внимание! Текст наполнен иронией, самоиронией, сарказмом и токсичностью, а также обидой и вот этим вот всем. Поэтому чувствительным людям, беременным женщинам и детям стоит воздержаться от дальнейшего чтения. Все сказанное дальше, является субъективным мнением автора. Это основано на личном опыте и не может быть принято за истину. Истина всегда конкретна!

Если большие массивы буков вызывают у вас пот в ладошках, неконтролируемый тремор, панические атаки и еще 17 неустановленных современной медициной заболеваний и их симптомов, то есть версия 6+ с картиночками и меньшим количеством текста. Смотреть тут без регистрации и SMS...

Теперь когда покончили с прелюдиями.

Читать далее
Total votes 10: ↑8 and ↓2+10
Comments7

Kotlin под капотом: inline функции

Level of difficultyMedium
Reading time8 min
Views18K

Многие разработчики не понимают в чем профит от использования inline функций и в каких случаях их нужно использовать. Для чего нужен crossinline и как работает reified. Разбираемся как это работает на уровне байткода, в котором хорошо видно всю суть inline функций kotlin.

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

Вопросы и ответы для собеседования по Kotlin. Часть 1

Level of difficultyMedium
Reading time14 min
Views89K
Читать далее
Total votes 2: ↑2 and ↓0+2
Comments13
1

Information

Rating
Does not participate
Registered
Activity

Specialization

Mobile Application Developer
Middle
Kotlin
Kotlin Multiplatform
Android SDK
Android development