Pull to refresh
65
0
Бабичев Виталий @bvitaliyg

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

Send message

Ликбез по вложенной прокрутке в Jetpack Compose

Reading time11 min
Views2.6K

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

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

Как IT-специалисту развивать софт-скиллы, и зачем это вообще нужно

Reading time8 min
Views17K

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

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

Как обычно, истина где-то посередине. Меня зовут Дмитрий Петренко, я из Московского кредитного банка, и именно на примере МКБ я хочу немного рассказать про развитие айтишных софт-скиллов. Мы занимаем второе место в списке банков с частным капиталом, у нас более 5 000 сотрудников, 700+ штатных IT-специалистов и множество IT-аутсорса. Так что компетенции в плане общения и совместного выполнения задач в нашем случае — штука важная.

Читать далее
Total votes 19: ↑15 and ↓4+20
Comments38

Как я изучал структуры данных и алгоритмы для собеседования в FAANG

Reading time12 min
Views63K
Продолжая тему устройства в FAANG, которую уже мы поднимали в нашем блоге, и специально к старту нового потока нашего курса по алгоритмам сегодня делюсь описанием пути Эско Обонга, старшего инженера-программиста Uber.

Эта история началась в 2015 году, когда стартап, к которому я присоединился как «сотрудник-основатель», закрылся через шесть месяцев после первого раунда инвестиций, и я искал новую работу. Первое моё собеседование было с  Codecademy, где на этапе телефонного разговора меня заверили: «Не волнуйтесь, мы не задаём сумасшедших вопросов об алгоритмах или что-то в этом роде». И я им поверил…


Приятного чтения!
Total votes 46: ↑40 and ↓6+49
Comments71

7 полезных советов для тех, кто использует Room

Reading time7 min
Views11K

7 полезных советов для тех, кто использует Room


Room — это уровень абстракции поверх SQLite, который упрощает организацию хранения данных. Если вы ещё мало знакомы с Room, то посмотрите эту вводную статью:


7 шагов к использованию Room. Пошаговое руководство по миграции приложения на Room

А в этой статье я хотел бы поделиться несколькими советами о том, как максимально эффективно использовать Room.

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments1

The state of soft skills

Reading time9 min
Views16K
Так сложилось, что софт-скиллы довольно сильно помогли мне в карьере. Например, спустя всего 9 месяцев работы в Rambler, куда я приходил простым frontend-разработчиком, мне предложили стать руководителем группы, потому что мой руководитель увидел во мне потенциал и достаточный уровень развития необходимых гибких навыков.

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

Поэтому я решил попробовать доказать тезис, что soft skills важнее для успехов в карьере, чем hard skills. И чтобы не быть субъективным и ссылаться только на собственный опыт, я изучил материалы по теме, провел собственный опрос, проанализировал ответы с использованием небольшого количества математики и теперь хочу поделиться результатами.
Читать дальше →
Total votes 25: ↑18 and ↓7+26
Comments28

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

Reading time12 min
Views205K

Дисклеймер:


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

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

Без new: Указатели будут удалены из C++

Reading time3 min
Views81K

Две недели назад в Джэксонвилле встречался комитет стандарта ISO C++. Сегодня я хочу представить короткую сводку и написать о революционном решении, принятом на собрании в Джэксонвилле. Для получения дополнительной информации я рекомендую к прочтению статью C++ больше не будет иметь указатели. Комитет по стандартизации языка принял решение о том, что указатели будут объявлены устаревшими в C++20 и с большой долей вероятности будут удалены из C++23.


Откровенно говоря, то, что кажется революционном, — всего лишь последний шаг длинной эволюции.


image
Читать дальше →
Total votes 85: ↑75 and ↓10+65
Comments150

File management done wrong — Часть 1: Родом из 90х

Reading time5 min
Views10K

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


Посмотрите на этот скриншот и подумайте что изменилось за последние 20 лет.


image


Основные вводные утверждения:


  1. Сегодня файловый менеджмент неразрывен на десктопе, мобильном и в вебе — приватно публично и в коллаборации. Правильно сделанный файловый менеджер должен стирать грани между платформами, делая файлы синхронизированными и готовыми к совместному использованию и шерингу.
  2. Он должен предоставлять информативное превью контента любого типа, релевантные метаданные и инструменты по управлению внешним видом контента, подходящие каждой платформе.
  3. Он должен иметь релевантные инструменты для операций с файлами, чтобы можно было делать простые вещи просто, а сложные без лишнего мозготраха.

Мейнстримные файловые менеджеры не могут этого, вообще они сосут по всем 3 пунктам. Вот почему:


  1. Дизайнерам нет дела до того что они дизайнят, они не пользуются продуктом. Они просто делают свою работу.
  2. Их боссам нет дела до дизайна. А должно быть?
  3. Обычные пользователи не замечают "мелкие" недостатки. Они просто пользуются.
Читать дальше →
Total votes 61: ↑31 and ↓30+1
Comments165

Манифест архитектурной боли

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

Все под кат!

image
Читать дальше →
Total votes 50: ↑26 and ↓24+2
Comments18

Dagger 2. Часть первая. Основы, создание графа зависимостей, Scopes

Reading time10 min
Views171K

Всем привет! В последнее время появилось много средств, библиотек, которые существенно облегчают написание кода под Android. Только успевай за всем следить и все пробовать. Одним из таких средств является библиотека Dagger 2.


В сети уже много различного материала, посвященного данной библиотеке. Но когда я только начинал ознакамливаться с Dagger 2, читал статьи, смотрел доклады, я во всем этом находил один общий недостаток — мне, как человеку, не работавшему со Springом и прочими подобными фреймворками/библиотеками, было довольно сложно понять, откуда берутся зависимости, как они "провайдятся" и что вообще там происходит. На слушателей/читателей обычно сразу "вываливается" большое количество кода с новыми аннотациями. И это как-то работало. В итоге, после доклада/статьи в голове все никак не могло сложиться в единую понятную картину.


Сейчас, оглядываясь назад, я понимаю, что мне тогда очень не хватало схематичного отображения, картинок, явно показывающих "что, откуда и куда". Поэтому в своем цикле статей я постараюсь восполнить данный пробел. Надеюсь, это поможет новичкам и всем заинтересованным лучше понять Dagger 2 и решиться попробовать его у себя в проекте. Могу сразу сказать, это стоит того.


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

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

Спросите Итана №92: есть ли ограничение на максимальную температуру?

Reading time5 min
Views36K

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


Ничто не теряется, всё только преобразовывается.
— Михаэль Энде

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

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

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


Total votes 49: ↑43 and ↓6+37
Comments63

Оптимизация кода: процессор

Reading time18 min
Views114K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
Читать дальше →
Total votes 107: ↑102 and ↓5+97
Comments142

Разработка быстрых мобильных приложений на Android. Часть первая

Reading time8 min
Views39K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.
Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.



Несколько недель назад я выступил на Droidcon в Нью-Йорке с докладом об оптимизации производительности Android.

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

Мои основные правила, которым я следую при работе с оптимизацией:
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments2

Разработка быстрых мобильных приложений на Android. Часть вторая

Reading time14 min
Views32K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.

Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.

(Читать первую часть)


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments5

Обработка аннотаций в процессе компиляции

Reading time10 min
Views35K
magicМетапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения.

Аннотации, как инструмент метапрограммирования появились вместе с релизом Java 5 в далеком 2004 году. Вместе с ними появился инструментарий Annotation Processing Tool, на смену которому пришла спецификация JSR 269 или Pluggable Annotation Processing API. Что интересно, этой спецификации без малого 10 лет, но свою популярность в Android разработке она начала обретать только сейчас.

О возможностях, которые открывает эта спецификация мы поговорим чуть позже (будет мнооого кода), а сперва, не хотите ли поговорить о компиляции Java кода?
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments17

Грокаем* RxJava, часть первая: основы

Reading time7 min
Views179K
* от переводчика: я долго думал над тем, как перевести на русский язык глагол «to grok». С одной стороны, это слово переводится как «понять» или «осознать», а с другой стороны, при переводе романа Роберта Хайнлайна «Чужак в чужой стране» (в котором это слово впервые и появилось на свет), переводчики сделали из него русское «грокать». Роман я не читал, поэтому счёл, что есть у этого слова какие-то смысловые оттенки, которые русскими аналогами не передавались, а посему в своём переводе использовал ту же самую кальку с английского.

RxJava — это, сейчас, одна из самых горячих тем для обсуждения у Android-программистов. Единственная проблема состоит в том, что понять самые её основы, если вы не сталкивались ни с чем подобным, может быть довольно затруднительно. Функциональное реактивное программирование довольно сложно понять, если вы пришли из императивного мира, но, как только вы разберётесь с ним, вы поймёте, насколько же это круто!
Я постараюсь дать вам некое общее представление об RxJava. Задача этого цикла статей состоит не в том, чтобы объяснить всё вплоть до последней запятой (вряд ли я смог бы это сделать), но, скорее в том, чтобы заинтересовать вас RxJava, и тем, как она работает.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments28

Интерполяция данных: соединяем точки так, чтобы было красиво

Reading time7 min
Views160K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Руководство новичка по эксплуатации компоновщика

Reading time32 min
Views207K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →
Total votes 194: ↑193 and ↓1+192
Comments38

Внедряем материальный дизайн

Reading time7 min
Views52K
Настало время переходить на Lollipop, друзья. Как бы смешно это не звучало.

image

Буквально вчера мы в Surfingbird обновили дизайн приложения и сегодня, по свежим следам, хотелось бы поделиться впечатлениями от перехода на material design.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments33

OS Xак — мой опыт

Reading time4 min
Views131K
Тема хакинтош — довольно занимательная штука, за которой я слежу и представляю себе «что там да как». Недавно назрела необходимость покупки нового PC домой. Ничего необычного, никаких супер компьютеров, самый середняковый компьютер для дома почитать новости, почту, посмотреть фотки, качнуть фильмец (ну или зачем там еще люди используют компьютер дома?). Вот тут то и закралась у меня мысль совместить приятное с приятным – собрать PC, максимально совместимый с OS X.
Собственно, своим опытом сборки Хакинтоша я и решил поделится в данном топике, всех кому это может быть интересно прошу под кат.
Читать дальше →
Total votes 84: ↑57 and ↓27+30
Comments97

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity