Как стать автором
Обновить
1
0
Валерий Андрикеев @andrikeev

Android разработчик

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

Автоматизируем рутину в Android разработке: плагин для создания шаблонного кода на примере создания -api -impl модулей

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

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

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

Также мы привыкли автоматизировать свою собственную работу. Инструменты CI/CD позволяют быстрее доставлять ценность клиентам, чем ручное развертывание, линты помогают уменьшить время, которое мы тратим на прохождение задачи код ревью. 

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

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

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

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

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Всего голосов 506: ↑498 и ↓8 +490
Комментарии 351

Измеряя sequences

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

Измерение sequences в сравнении с обычными коллекциями. Смотрим под капот и разбираемся, как работают sequences и за счет чего мы получаем выигрыш в производительности.

Много кода и теории...

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

Формула Байеса и где ее использовать

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

Как наглядно объяснить формулу Байеса? Как использовать формулу для предсказания? Классический пример с честностью монетки.

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 7

Зачем Clojure Flutter

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

”Если вам нравятся Руби, Свифт, Дарт, Эликсир, Эльм, С++, Питон или даже С, используйте их ради бога. Но выучите Кложур, и выучите его хорошо” — Дядя Боб (твит, а также твиты: 1, 2, 3).

Статей о Clojure написано много, цель этой — дать свое видение некоторых преимуществ языка для кросплатформенной разработки на Flutter. Ориентируюсь в первую очередь на dart-разработчиков, но статья может быть интересна всем, кто работает с Clojure и/или Flutter.

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

Стоп рефакторинг. Kotlin. Android

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

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

Я хочу рассказать про практики, которые не один раз уже выручали нас в проекте. Подборка примеров получилась не на пустом месте, все реальные примеры PullRequest-ов.
Все примеры НЕ выдуманные и тестировались на живых людях. В процессе сбора данных несколько людей пострадало.

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

Как развивается умение общаться (с самого-самого начала) и что с ним делают игры на сторителлинг

Время на прочтение 37 мин
Количество просмотров 24K
Одна из самых распространенных тем запросов, с которыми приходят к детским специалистам, это речь. Самая очевидная проблема — это когда ребенок не говорит. Вот ему год, а он молчит. Вот ему уже три, а он все равно молчит. А вот уже пять… Тут понятно, что что-то пошло не так. Есть менее очевидные проблемы, которые на самом деле тоже про речь. Например, ребенок плохо учится. Почему плохо учится? Оказывается, когда ему учительница задает вопрос, он в ответ двух слов связать не может. Или у ребенка почему-то нет друзей. И оказывается, что он просто не представляет, как со сверстниками вообще разговаривать. Ну и не разговаривает. И так далее.

Самый нужный человек здесь, как понятно, логопед (и очень важно дойти до логопеда, если есть подозрение, что развитие речи пошло как-то не так). Игротерапевты с этим тоже работают, потому что умение разговаривать и договариваться развивается вместе с развитием игры. Чтобы понять, как это происходит, начнем с самого начала.
Читать дальше →
Всего голосов 39: ↑36 и ↓3 +33
Комментарии 51

Как декларативно описать коллапсирующий тулбар

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


Хочу представить решение того, как можно описать CollapsingToolbar, с акцентом на читаемости кода. В статье не будет объясняться, что такое и как написать свой CoordinatorLayout.Behavior. Если читателю интересно в этом разобраться, есть много статей, в том числе на хабре. Если разбираться не хочется — ничего страшного: я постарался вынести написание CollapsingToolbar так, чтобы можно было абстрагироваться от CoordinatorLayout.Behavior и OnOffsetChangedListener.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 1

Как собеседует Google: чему быть, чего не миновать

Время на прочтение 6 мин
Количество просмотров 74K
В последние недели участилась волна статей на хабре о том, как проводятся собеседования.

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

Нет, я не стал рекрутером. Процесс собеседования предполагает сперва разговор с рекрутером. Это общая беседа “что-куда-зачем” (то есть описание процесса для вашего конкретного случая) и тот самый всеми любимый скрининг из опросника с несколькими вариантами ответов. Скрининг мне в своё время показался весьма базовым, подозреваю, что вы отвечали на такие вопросы уже сотню раз. Затем собеседования будут проводиться уже инженерами — вашими будущими коллегами (близкими или далёкими, это уже как получится, наша планета весьма небольшая).

Читать дальше →
Всего голосов 81: ↑69 и ↓12 +57
Комментарии 328

Управление состоянием в приложениях на Flutter

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


Общие принципы


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


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

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

Процессы в Linux в Bash'ке человека

Время на прочтение 4 мин
Количество просмотров 22K
Почему голову называют «башкой» и как это связано с командной оболочкой bash? А ведь если внимательно присмотреться, то окажется много общего. Процессы, ежесекундно происходящие в нашем мозгу до боли напоминают экран команды top — утилиты *nix, динамически отображающей потребление ресурсов системы.

Вы загружены работой и вдруг мимо вашего стола продефилировала новая сотрудница отдела разработки. Спящий высокоприоритетный системный демон резервного ДНК-копирования моментально захватил практически все ресурсы, текущий пользовательский процесс работы над проектом отброшен как niceless в «прекрасное далёко» оперативной памяти и жалобно обиженно пищит… Неимоверными усилиями вам удается перехватить управление и вернуться к работе, справедливость восстановлена. Уфф!


Читать дальше →
Всего голосов 46: ↑35 и ↓11 +24
Комментарии 21

Информация

В рейтинге
Не участвует
Откуда
Фрязино, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность