Как стать автором
Обновить
15
0
Alexander Zhdanov @qwert2603

Android Developer

Отправить сообщение

Как начать создавать Flutter-приложения на Авроре: полная инструкция

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.5K

Привет Хабр, это Юра Петров, Tech Lead Friflex. Последнее время многие меня спрашивают, как быстро начать разрабатывать приложения для системы Аврора с помощью фреймворка Flutter. Решил поделиться опытом и собрал ультимативный гайд. Всё, что я буду показывать, я буду делать на чистой системе Linux Mint. И в целом я рекомендую установить Linux для работы с Авророй, параллельно вашей системе. Это избавит вас от многих проблем. Я буду описывать процесс так, как будто вы никогда не использовали Linux.

Читать далее
Всего голосов 8: ↑8 и ↓0+10
Комментарии2

Построим GPT: с нуля и шаг за шагом

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров21K

В этой статье я построил GPT архитектуру на данных из произведений Шекспира и получил достаточно впечатляющие результаты.

Читать далее
Всего голосов 35: ↑34 и ↓1+41
Комментарии18

ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров4.5K

Про байт‑код написано уже немало. Он везде, и никого этим не удивить: его генерирует компилятор, переупаковывает система сборки, «портит» обфускатор и изредка читают программисты. Естественно, для работы с байт‑кодом есть немало инструментов, которые используются в разных областях и на разных платформах. Среди них и ByteWeaver — инструмент для патчинга байт‑кода во время сборки, который может быть полезен разработчикам под Android.

Меня зовут Александр Асанов. Я Android‑разработчик в OK, Tracer, ByteWeaver. В этой статье я разберу, что такое байт‑код, как и зачем с ним работать, расскажу о ByteWeaver и покажу примеры работы с байт‑кодом.

Читать далее
Всего голосов 41: ↑39 и ↓2+44
Комментарии11

Часть 1. TMA на KMP. Пишем кликер на Kotlin/JS

Время на прочтение6 мин
Количество просмотров2.6K

В этой статье рассмотрю старт проекта как обычное веб-приложение с минимальным функционалом. Остальные функции будут завязаны на Telegram API и веб-приложение сможет запускаться из Telegram.

Читать далее
Всего голосов 5: ↑4 и ↓1+5
Комментарии0

От «эффективного менеджмента персонала» к бережливому управлению людьми. Часть 3: разбираем организационные ошибки

Время на прочтение24 мин
Количество просмотров5.8K

Управление людьми - большая и сложная тема. Потому в этой сфере можно встретить большое количество мифов, заблуждений и ошибок.

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

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

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

Разобрать ошибки в организации труда
Всего голосов 8: ↑6 и ↓2+4
Комментарии12

Погружение в мир Lint'a в Android-проекте

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2K

Статические анализаторы уже давно являются неотъемлемой частью разработки проектов не только на Android. Они позволяют выявлять ошибки, несоответствия стандартам code style, производительности или безопасности, обозначать какие-то узкие места, сокращать code review и т. д. Android Studio «из коробки» содержит огромное количество всевозможных проверок, но, как правило, этого недостаточно, всегда есть какие-то неучтённые проблемы, внутренние правила компании или команды разработки. Кратко расскажем про Lint, как начинали делать свои правила, с какими задачами сталкивались на первых этапах и как решали. Это поможет вам впервые погрузиться в тему, так как интернет весьма скуден на статьи по ней.

Читать далее
Всего голосов 17: ↑17 и ↓0+20
Комментарии0

Разрушители легенд: Как на самом деле магазины проверяют приложения на уязвимости

Время на прочтение22 мин
Количество просмотров8K

Всем привет! Снова с вами Юрий Шабалин. Уже много лет я занимаюсь безопасностью мобильных приложений и в своих исследованиях доношу важность этого направления для бизнеса.

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

Давайте посмотрим!

Читать далее
Всего голосов 17: ↑16 и ↓1+17
Комментарии15

Байт-код — это просто! Как сделать DI по-настоящему быстрым

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров14K

Привет! Меня зовут Григорий Юрков, и я уже несколько лет работаю в инфраструктурной команде Яндекс Маркета. Два года назад мы начали разрабатывать свой легковесный DI-фреймворк Scout, который предоставляет выразительный Kotlin DSL. Он не генерирует код, а делает всю работу в рантайме.

Недавний переход с compile-time-библиотеки Dagger 2 на нашу привёл к замедлению старта приложения. В этой статье мы будем подробно рассматривать то, как применение байт-кода помогло сохранить скорость на том же уровне и спасти проект по миграции на Scout.

Ускоримся!
Всего голосов 25: ↑23 и ↓2+27
Комментарии41

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

Время на прочтение53 мин
Количество просмотров161K


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


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

Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии60

Permissions в Android: как не допустить ошибок при разработке

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров15K

Всем привет! На связи Юрий Шабалин, ведущий архитектор Swordfish Security и генеральный директор Стингрей Технолоджиз. Эта статья написана в соавторстве с Android-разработчиком Веселиной Зацепиной @VeselinaZatsepinaa). В материале мы поговорим про один из ключевых механизмов в Android, а именно про разрешения. Разберем, что это такое, как с ними работать, а главное, какие ошибки могут возникнуть и как их не допустить. Будет интересно, поехали!

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии3

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

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров32K

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

На написание статьи меня подтолкнула собственная боль, пронесенная через года, размышления о роли Google и GPT в работе программиста и старый анекдот про инженера и объем резинового мяча.

Читать далее
Всего голосов 34: ↑32 и ↓2+35
Комментарии87

Подготовка к собеседованию на iOS разработчика (актуально на начало 2023 года)

Время на прочтение14 мин
Количество просмотров11K

Доброго времени суток. Я iOS-разработчик (хлопки-хлопки).

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

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

"тебе никогда никто не расскажет? в нашем деле все сам ?"

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

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии18

Как работает Activity. Часть 1

Время на прочтение12 мин
Количество просмотров23K

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

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

В первой части совсем немного расскажу про Binder, про то, как происходит запуск Activity, как стартует процесс приложения и как на вызов Activity влияют флаги и launch mode. Во второй части будет про то, как вызываются методы жизненного цикла Activity, что происходит при сворачивании приложения, и более подробно расскажу про старт первой Activity.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Как Data Scientist переехал в Германию в разгар мобилизации

Время на прочтение13 мин
Количество просмотров30K

Под катом я расскажу о своем опыте поиска работы в Германии после начала войны военной операции, а также о переезде после объявления частичной мобилизации.

Разрушим стереотипы по поводу немецкой бюрократии и педантичности.

Ну и конечно посчитаем сколько денег, времени и седых волос на это ушло.

Запрыгнуть на трактор
Всего голосов 59: ↑43 и ↓16+35
Комментарии58

История Android от L до T

Время на прочтение25 мин
Количество просмотров23K

Как для мобильных разработчиков менялся Android с 2014 года и до сегодняшнего дня? Казалось бы, можно просто открыть официальное описание каждой версии и узнать. Но интереснее не просто читать сухие чейнджлоги, а вместе вспомнить все и из отдельных фактов сделать общие выводы. 

В июне я выступил с докладом об этом на конференции Mobius, а теперь для аудитории Хабра публикую его текстовую версию. Если есть что добавить — пишите в комментариях!

Читать далее
Всего голосов 42: ↑42 и ↓0+42
Комментарии17

Flutter. Слушатель клавиатуры без платформенного кода

Время на прочтение8 мин
Количество просмотров6.7K
Всем привет! Меня зовут Дмитрий Андриянов, я Flutter-разработчик в Surf.

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


Читать дальше →
Всего голосов 6: ↑3 и ↓3+1
Комментарии8

Композитная сборка как альтернатива buildSrc в Gradle

Время на прочтение12 мин
Количество просмотров15K


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


При этом Gradle предоставляет альтернативный подход — композитные сборки, лишённые этого недостатка. В этой статье я расскажу, как использовать композитную сборку вместо buildSrc и с какими сложностями можно столкнуться при миграции.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+17
Комментарии7

Создаем свою инспекцию для IDEA

Время на прочтение5 мин
Количество просмотров4K

В статье показано, как быстро можно сделать свою полноценную инспекцию для IDEA для языка Java. В инспекции будем проверять, что переопределены методы equals, hashСode для классов, используемых в качестве ключа в HashMap. Писать будем на Kotlin.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Готовьсь, цельсь, пли! Как не обжечься при сборке Gradle-приложения, и настолько ли всё серьезно?

Время на прочтение14 мин
Количество просмотров35K

Доброго дня, читатель! Меня зовут Стручков Михаил и я Android-разработчик в команде мобильного оператора Yota. 

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

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

Читать далее
Всего голосов 12: ↑11 и ↓1+21
Комментарии9

Как создать кастомный плагин для Dart-анализатора

Время на прочтение6 мин
Количество просмотров2.1K

Привет! Меня зовут Дима, я frontend-разработчик в компании Wrike. В этой статье я расскажу про то, как написать плагин для анализа кода на Dart. Текст будет полезен тем, кому не хватает текущей функциональности дартового анализатора по статическому анализу или если вам просто захочется попробовать написать простой анализатор самостоятельно.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии2

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность