Pull to refresh
7
0

Пользователь

Send message

Переезд в Лондон с женой и собаками. История мобильного разработчика

Reading time11 min
Views99K
Всем привет!

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


Читать дальше →
Total votes 139: ↑124 and ↓15+109
Comments693

VectorDrawable — часть третья

Reading time4 min
Views5.7K
Ранее в этой серии статей мы рассмотрели реализацию VectorDrawable, изпользуя данные под тегом path в SVG. А после применили несколько простых анимаций к отдельным элементам path.

Romain Guy написал приложение, которое рисует маршруты. Он использовал SVG path, чтобы определить маршрут, а затем по этому маршруту «рисовал» линию путем регулирования параметра dash.

Так как VectorDrawable поддерживает данные SVG из тега path, можем ли мы использовать ту же технику? Конечно можем. Но, на сам деле, нам это не нужно. Мы можем достичь того же эффекта, манипулируя некоторыми атрибутами элемента в нашем VectorDrawable.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments2

Переезд инженера в Германию: «Голубая карта», налоги, дети

Reading time15 min
Views102K


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


Топ-5 стран по количеству переехавших российских инженеров в тысячах, Amazing Hiring, 2020
*около 30% инженеров не открывают своих данных для открытого поиска.


Стоит ли Германия релокейта, и что ждет тех, кто переезжает не один? В нашем сегодняшнем материале — плюсы и минусы переезда в страну пива и брецелей.
Читать дальше →
Total votes 58: ↑48 and ↓10+38
Comments229

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования

Reading time12 min
Views204K

Дисклеймер:


Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать дальше →
Total votes 201: ↑196 and ↓5+191
Comments342

Дайджест интересных материалов для мобильного разработчика #339 (30 марта — 5 апреля)

Reading time4 min
Views3.2K
В новом дайджесте рассказываем про влияние пандемии на экономику приложений и про прогнозы ее развития, про неудачный социальный мониторинг и разработку на удаленке, про дизайн и собственные истории.

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

Овладение Coordinator Layout

Reading time7 min
Views208K
На презентации Google I/O 15, компания Google представила новую версию библиотеки поддержки которая реализует несколько компонентов, сильно связанных со спецификациями Material Design, среди этих компонентов вы можете найти новые типы ViewGroup такие как AppbarLayout, CollapsingToolbarLayout и CoordinatorLayout.

При правильном комбинировании и настройке данные Viewgroup могут быть очень мощным инструментом, по этому я решил написать статью с некоторыми настройками и советами.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Программист, стая и Джон Стейнбек

Reading time6 min
Views14K
Вообще, если взглянуть беспристрастно, я – очень плохой работник. И как программист, и как менеджер, и как хоть кто. Но с работы меня не выгоняют. Даже повышают периодически, предоставляют ресурсы, возможности и телевизор.

Причины две (только моему начальнику не говорите): я умею выстраивать отношения (=плести интриги) и готовить «корейский завтрак» — быстро вникать в контекст любой задачи и находить решение. Собственно, за это меня и держат.

Но так было не всегда. Ровно наоборот – с первых трех работ я уволился сам, и именно потому, что не умел плести интриги и быстро вникать в контекст задач, как технических, так и менеджерских. А потом что-то изменилось.

Ну, изменилось и изменилось – я просто наслаждался результатом, пока не прочитал книжку про работу мозга. Тут всё встало на свои места. Дело оказалось в дефолт-системе мозга.
Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments27

Как я перешёл из системного администрирования в Android-разработку

Reading time8 min
Views73K


Несколько лет назад, я, как и другие начинающие Android-разработчики, решил найти работу в этой области. Если вы начинающий специалист, и не знаете, с чего начать изучение Android, или если вы уже обладаете определёнными знаниями в этой теме и планируете в скором времени устраиваться на работу, то этот материал для вас. По задумке, к данной статье вы будете возвращаться по мере накопления опыта: смотреть на каком этапе в данный момент находитесь и что изучать дальше.
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments42

Избавляемся от ConcurrentModificationException

Reading time4 min
Views105K
Как известно, ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта гадость, когда мы пытаемся модифицировать коллекцию во время итерирования по ней. Как обычно, это имеет исторические корни: коллекции и итераторы появились в Java 1.2, в те времена избежать явного использования итератора при обходе коллекции было никак нельзя, так что предложение менять коллекцию посредством методов итератора не выглядело совсем ужасным:

Iterator iterator = collection.iterator();

while (iterator.hasNext()) {
    Object element = iterator.next();
    if (iDontLikeThisElement(element)) {
         iterator.remove();
    }
}
Читать дальше →
Total votes 16: ↑10 and ↓6+4
Comments26

Альтернативы Google Play и App Store или как живет Китай без Google Play

Reading time3 min
Views231K

Альтернативные сторы не столь популярны в России, но являются неотъемлемой частью китайского мобильного рынка, где Google Play заблокирован. Глядя на Андроид, некоторые китайские компании запустили собственные iOS сторы. При этом устанавливать игры и приложения с таких сторов можно и на обычные iPhone (не Jailbreak). Это одна из особенностей, которую было бы неплохо распространить по всему миру, ведь монополия официальных сторов это не есть хорошо. На российском рынке альтернативный стор запустил пока только Яндекс. Но его доля очень маленькая, поэтому его пока сложно назвать конкурентом Google Play. Возможно в будующем ситуация изменится, в первую очередь за счет выхода китайских сторов на другие рынки, так например уже многие слышали про приложение – Mobogenie. Но мы решили разместить более полный список альтернативных приложений, которые существую на сегодняшний день.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments17

Архитектура EBA aka реактивность на всю катушку

Reading time14 min
Views8.6K

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



По моему мнению, все популярные ныне архитектуры — MVP, MVVM и даже MVI — уже давно на арене и не всегда заслуженно. Разве у них нет недостатков? Я вижу их немало. Мы у себя решили, что хватит это терпеть, и (пере)изобрели новую, максимально асинхронную архитектуру.

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

Фантастические плагины, vol. 1. Теория

Reading time14 min
Views8.4K

Жизнь с многомодульным проектом не так уж проста. Чтобы избежать рутины создания нового модуля мы создали собственный плагин для Android Studio. В процессе реализации мы столкнулись с отсутствием практической документации, перепробовали несколько подходов и откопали множество подводных камней. Получилось две статьи: “Теория” и “Практика”. Встречайте!


image

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

Стажировка в IT: взгляд руководителя

Reading time11 min
Views21K


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

Мы подготовили эту статью впятером. Представимся: Игнат Колесниченко из службы технологий распределённых вычислений, Миша Левин из службы машинного интеллекта Маркета, Денис Малых из службы разработки приложений, Серёжа Бережной из отдела разработки поисковых интерфейсов и Дима Черкасов из группы разработки антифрода. Каждый из нас представляет своё направление стажировки. Мы все руководители, нам нужны стажёры, и у нас есть некоторый опыт работы с ними. Давайте мы расскажем кое-что из этого опыта.

Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments5

Как съездить на стажировку в крупную IT-компанию

Reading time8 min
Views14K
Если вы давно хотели поехать на зарубежную стажировку, но совершенно не знаете, как к этому подступиться, то эта статья для вас.

Фёдор Киташов (kitashov), студент 4 курса ФРКТ МФТИ, рассказал что нужно сделать, чтобы съездить на стажировку с полным покрытием, поработать над системой распознавания речи в Cisco, увидеть 20 американских штатов, и зачем возвращаться назад.

image
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments12

Как Android запускает MainActivity

Reading time6 min
Views30K
Недавно я провел исследование о main() методе в Java и то, как он служит точкой входа для любого приложения Java. Это заставило меня задуматься, а как насчет Android-приложений? Есть ли у них основной метод? Как они загружаются? Что происходит за кулисами до выполнения onCreate()? Майкл Бэйли очень подробно рассказал о том, как работает Main Thread, так что это быстрый обзор его доклада плюс дополнительная информация из Android Open Source Project (AOSP).

В этой статье мы рассмотрим:

  1. Что происходит от нажатия на иконку приложения до запуска MainActivity
  2. Найдем основной метод приложения и узнаем, как основной поток (он же UI, он же Main Thread) получает свое назначение.
  3. Рассмотрим роль, которую играют Looper & Handler в передаче сообщений, которые в конечном итоге приводят к созданию вашей Activity.

Что происходит при запуске приложения


При запуске любого приложения, многое происходит глубоко внутри на уровне ядра, например начальная загрузка Zygote, загрузка классов в JVM, а для JVM — найти основной метод static void main(String args []) и вызывать его. В случае Android JVM находит основной метод main() в ActivityThread. Затем он вызывает main(), после чего ядро передает управление вашему приложению. Итак, мы нашли точку входа — ActivityThread, но прежде чем подробно изучить это, давайте посмотрим на дорожную карту процесса, чтобы визуализировать всю операцию.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments6

Android Tips and Tricks

Reading time13 min
Views47K
В данном материале можно будет увидеть различные инструменты и подсказки, которые здорово облегчают жизнь Android разработчикам. Большая часть собрана напрямую от знакомых разработчиков и содержит вещи, которые должен знать каждый. Дополнения и расширения приветствуются, и если вы знаете о каком-то крутом механизме, который не был упомянут в статье, не поленитесь перейти в оригинал и открыть pull request.
Читать дальше →
Total votes 49: ↑49 and ↓0+49
Comments18

Топ-10 докладов Mobius 2018 Piter

Reading time5 min
Views5.9K


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

Она составлена по оценкам зрителей, так что мы никак не влияли, но при этом сам собой возник баланс платформ: четыре доклада по Android, четыре по iOS, и два применимых для любой платформы. А темы докладов совсем разные, от нюансов ARKit и JobScheduler до реверс-инжиниринга и подхода к релизам — найти что-то для себя смогут самые разные разработчики.

Доклады в списке расположены по возрастанию рейтинга — так что чем дальше, тем интереснее!
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments0

Анимации в Android по полочкам (Часть 1. Базовые анимации)

Reading time11 min
Views94K
Всем привет!

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

Сегодня мы поговорим об инструментах для создания анимации. К сожалению, так получилось, что в Android достаточно много способов что либо анимировать, и по началу в них очень легко запутаться. Я постараюсь привести максимально общую классификацию и оставлю ссылки исключительно на документацию, т.к. туториалов можно найти предостаточно. Надеюсь эта статья поможет уложить в голове всё по полочками и, при необходимости создать анимацию, выбрать наиболее подходящий способ.
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments20

Многомодульность в Android с точки зрения архитектуры. От А до Я

Reading time20 min
Views62K
Всем привет!

Не так давно мы с вами осознали, что мобильное приложение — это не просто тонкий клиент, а это действительно большое количество самой разной логики, которое нуждается в упорядочивании. Именно поэтому мы прониклись идеями Clean architecture, прочувствовали, что такое DI, научились использовать Dagger 2, и теперь с закрытыми глазами способны разбить любую фичу на слои.

Но мир не стоит на месте, и с решением старых проблем приходят новые. И имя этой новой проблемы — мономодульность. Обычно об этой проблеме узнаешь, когда время сборки улетает в космос. Именно так и начинаются многие доклады про переход на многомодульность (раз, два).
Но почему-то все при этом как-то забывают, что мономодульность сильно бьет не только по времени сборки, но и по вашей архитектуре. Вот ответьте на вопросы. На сколько у вас AppComponent большой? Не встречаете ли вы периодически в коде, что фича А зачем-то дергает репозиторий фичи Б, хотя вроде такого быть не должно, ну или оно должно быть как-то более верхнеуровнево? Вообще у фичи есть какой-то контракт? А как вы организовываете общение между фичами? Есть какие-то правила?
Вы чувствуете, что мы решили проблему со слоями, то есть вертикально все вроде хорошо, но вот горизонтально что-то идет не так? И просто разбиением на пакеты и контролем на ревью не решить проблему.

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

В своей статье я хочу вам рассказать, как дошел до многомодульности именно с архитектурной точки зрения. Какие проблемы меня беспокоили, и как я их старался поэтапно решать. А в конце вас ждет алгоритм перехода с мономодульности на многомодульность без слез и боли.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments18
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity